summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2019-08-04 00:02:13 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2019-08-04 00:02:13 +0200
commit16415792972c3fbdd498dc3e0878d6e8bb0f9abe (patch)
tree3920b4ab1335ef7cfad3eb639e3e41ffe1a7defd
parent81a11c4fc9087d54e68694b89f1d8af791c2ae8e (diff)
parentce941e6f56803b389c20a52c0a5b89f5ade12b7a (diff)
Merge branch 'master' into pok_jump
-rwxr-xr-xasm/dodrio_berry_picking.s7859
-rw-r--r--asm/pokenav_unk_2.s2
-rwxr-xr-xdata/dodrio_berry_picking.s666
-rw-r--r--data/pokenav.s1658
-rw-r--r--data/text/gift_ribbon_descriptions.inc207
-rw-r--r--data/text/ribbon_descriptions.inc84
-rw-r--r--data/use_pokeblock.s113
-rw-r--r--graphics/pokenav/city_maps/lilycove_0.bin4
-rw-r--r--graphics/pokenav/city_maps/lilycove_1.bin4
-rw-r--r--graphics/pokenav/city_maps/mauville_0.bin6
-rw-r--r--graphics/pokenav/city_maps/mauville_1.bin6
-rw-r--r--graphics/pokenav/city_maps/mossdeep_0.bin4
-rw-r--r--graphics/pokenav/city_maps/mossdeep_1.bin4
-rwxr-xr-xinclude/berry_crush.h2
-rw-r--r--include/dodrio_berry_picking.h8
-rw-r--r--include/graphics.h3
-rw-r--r--include/menu.h2
-rw-r--r--include/pokenav.h2
-rw-r--r--include/strings.h50
-rw-r--r--ld_script.txt8
-rw-r--r--src/battle_anim_effects_1.c39
-rwxr-xr-xsrc/battle_anim_effects_3.c28
-rw-r--r--src/contest_link_80F57C4.c918
-rw-r--r--src/contest_painting.c2
-rw-r--r--src/data/region_map/city_map_entries.h113
-rw-r--r--src/data/region_map/city_map_tilemaps.h22
-rw-r--r--src/data/text/gift_ribbon_descriptions.h115
-rw-r--r--src/data/text/match_call_messages.h476
-rw-r--r--src/data/text/ribbon_descriptions.h48
-rw-r--r--src/dodrio_berry_picking.c5134
-rw-r--r--src/field_player_avatar.c11
-rw-r--r--src/fldeff_flash.c8
-rw-r--r--src/pokenav_match_call_data.c147
-rw-r--r--src/pokenav_unk_10.c71
-rw-r--r--src/pokenav_unk_2.c255
-rwxr-xr-xsrc/pokenav_unk_3.c11
-rwxr-xr-xsrc/pokenav_unk_4.c198
-rwxr-xr-xsrc/pokenav_unk_5.c133
-rw-r--r--src/pokenav_unk_7.c116
-rw-r--r--src/pokenav_unk_8.c78
-rw-r--r--src/pokenav_unk_9.c74
-rw-r--r--src/text.c103
-rw-r--r--src/union_room.c74
-rw-r--r--src/use_pokeblock.c269
44 files changed, 6488 insertions, 12647 deletions
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
deleted file mode 100755
index 8203696be..000000000
--- a/asm/dodrio_berry_picking.s
+++ /dev/null
@@ -1,7859 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8026988
-sub_8026988: @ 8026988
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x44
- adds r0, 0x48
- ldrb r0, [r0]
- mov r8, r0
- ldrb r6, [r1]
- cmp r6, r8
- bcs _08026A7A
- ldr r0, =gUnknown_082F449C
- mov r9, r0
-_080269A8:
- ldr r0, =gUnknown_02022C98
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x28
- ldrb r1, [r0]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 2
- ldr r2, =0x000031a0
- adds r0, r2
- adds r7, r3, r0
- movs r0, 0xB
- adds r2, r1, 0
- muls r2, r0
- adds r2, r6, r2
- adds r3, 0x24
- ldrb r1, [r3]
- subs r1, 0x1
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 3
- subs r0, r1
- adds r2, r0
- add r2, r9
- ldrb r4, [r2]
- adds r0, r7, 0
- adds r0, 0x1F
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080269FC
- adds r0, r6, 0
- movs r1, 0
- bl sub_8028BF8
- b _08026A04
- .pool
-_080269FC:
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8028BF8
-_08026A04:
- adds r0, r7, 0
- adds r0, 0x1F
- adds r5, r0, r4
- ldrb r0, [r5]
- cmp r0, 0x9
- bls _08026A30
- adds r0, r7, 0
- adds r0, 0x14
- adds r0, r4
- ldrb r1, [r0]
- adds r1, 0x3
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8028CA4
- ldrb r1, [r5]
- lsls r1, 25
- movs r0, 0xFF
- lsls r0, 24
- adds r1, r0
- b _08026A52
-_08026A30:
- adds r0, r7, 0
- adds r0, 0x14
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0x3
- bne _08026A5C
- movs r0, 0x7
- strb r0, [r5]
- adds r0, r6, 0
- movs r1, 0x6
- bl sub_8028CA4
- ldrb r1, [r5]
- lsls r1, 25
- movs r2, 0xFF
- lsls r2, 24
- adds r1, r2
-_08026A52:
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8028C7C
- b _08026A70
-_08026A5C:
- ldrb r1, [r3]
- adds r0, r6, 0
- bl sub_8028CA4
- ldrb r1, [r5]
- lsls r1, 25
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8028C7C
-_08026A70:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r8
- bcc _080269A8
-_08026A7A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8026988
-
- thumb_func_start sub_8026A88
-sub_8026A88: @ 8026A88
- push {r4-r6,lr}
- ldr r1, =gUnknown_02022C98
- ldr r0, [r1]
- adds r0, 0x24
- ldrb r5, [r0]
- movs r4, 0
- cmp r4, r5
- bcs _08026ABA
- adds r6, r1, 0
-_08026A9A:
- lsls r0, r4, 4
- subs r0, r4
- lsls r0, 2
- ldr r1, [r6]
- adds r0, r1
- ldr r1, =0x000031cc
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_80286B4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08026A9A
-_08026ABA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026A88
-
- thumb_func_start sub_8026AC8
-sub_8026AC8: @ 8026AC8
- push {r4,r5,lr}
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r5, [r0]
- movs r4, 0
- cmp r4, r5
- bcs _08026AEA
-_08026AD8:
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_80286B4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08026AD8
-_08026AEA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026AC8
-
- thumb_func_start sub_8026AF4
-sub_8026AF4: @ 8026AF4
- push {lr}
- bl sub_8026988
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x40
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _08026B10
- bl sub_8026AC8
- b _08026B14
- .pool
-_08026B10:
- bl sub_8026A88
-_08026B14:
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x40
- ldrb r0, [r0]
- bl sub_80288D4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026AF4
-
- thumb_func_start sub_8026B28
-sub_8026B28: @ 8026B28
- push {lr}
- bl sub_8026988
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x40
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _08026B44
- bl sub_8026AC8
- b _08026B48
- .pool
-_08026B44:
- bl sub_8026A88
-_08026B48:
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x40
- ldrb r0, [r0]
- bl sub_80288D4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026B28
-
- thumb_func_start sub_8026B5C
-sub_8026B5C: @ 8026B5C
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x4
- bhi _08026BB4
- lsls r0, 2
- ldr r1, =_08026B78
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08026B78:
- .4byte _08026B8C
- .4byte _08026B94
- .4byte _08026B9C
- .4byte _08026BA4
- .4byte _08026BAC
-_08026B8C:
- movs r0, 0x4
- strb r0, [r3]
- movs r0, 0x7
- b _08026BB2
-_08026B94:
- movs r0, 0x3
- strb r0, [r3]
- movs r0, 0x8
- b _08026BB2
-_08026B9C:
- movs r0, 0x2
- strb r0, [r3]
- movs r0, 0x9
- b _08026BB2
-_08026BA4:
- movs r0, 0x1
- strb r0, [r3]
- movs r0, 0xA
- b _08026BB2
-_08026BAC:
- movs r0, 0
- strb r0, [r3]
- movs r0, 0xB
-_08026BB2:
- strb r0, [r2]
-_08026BB4:
- pop {r0}
- bx r0
- thumb_func_end sub_8026B5C
-
- thumb_func_start sub_8026BB8
-sub_8026BB8: @ 8026BB8
- push {r4-r6,lr}
- ldr r1, =gUnknown_02022C98
- ldr r0, [r1]
- adds r0, 0x24
- ldrb r5, [r0]
- movs r4, 0x1
- cmp r4, r5
- bcs _08026C1E
- adds r6, r1, 0
-_08026BCA:
- ldr r0, [r6]
- movs r1, 0xAC
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08026BEC
- adds r0, r4, 0
- bl sub_8027DFC
- ldr r1, [r6]
- movs r2, 0xAC
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
-_08026BEC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08026BCA
- cmp r4, r5
- bcs _08026C1E
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- movs r2, 0xAC
- lsls r2, 1
- adds r1, r0, r2
-_08026C04:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08026C14
- movs r0, 0
- b _08026C20
- .pool
-_08026C14:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08026C04
-_08026C1E:
- movs r0, 0x1
-_08026C20:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8026BB8
-
- thumb_func_start sub_8026C28
-sub_8026C28: @ 8026C28
- push {r4,lr}
- movs r1, 0
- ldr r4, =gUnknown_02022C98
- movs r3, 0xAC
- lsls r3, 1
- movs r2, 0
-_08026C34:
- ldr r0, [r4]
- adds r0, r3
- adds r0, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _08026C34
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026C28
-
- thumb_func_start sub_8026C50
-sub_8026C50: @ 8026C50
- push {r4,lr}
- ldr r3, =gUnknown_02022C98
- ldr r1, [r3]
- adds r2, r1, 0
- adds r2, 0x40
- ldrb r0, [r2]
- cmp r0, 0x9
- bls _08026C88
- movs r4, 0x90
- lsls r4, 1
- adds r0, r1, r4
- ldr r0, [r0]
- cmp r0, 0
- bne _08026C88
- movs r0, 0xA
- strb r0, [r2]
- ldr r0, [r3]
- movs r1, 0x96
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _08026C88
- movs r0, 0x1
- b _08026C8A
- .pool
-_08026C88:
- movs r0, 0
-_08026C8A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8026C50
-
- thumb_func_start sub_8026C90
-sub_8026C90: @ 8026C90
- push {r4-r6,lr}
- ldr r4, =gUnknown_02022C98
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0x40
- ldrb r0, [r2]
- cmp r0, 0x9
- bls _08026D14
- adds r0, r1, 0
- adds r0, 0x44
- ldrb r3, [r0]
- adds r0, 0x4
- ldrb r5, [r0]
- movs r0, 0xA
- strb r0, [r2]
- ldr r4, [r4]
- mov r12, r4
- movs r0, 0x96
- lsls r0, 1
- add r0, r12
- ldr r0, [r0]
- cmp r0, 0
- beq _08026D14
- adds r4, r3, 0
- cmp r4, r5
- bcs _08026D04
- mov r0, r12
- adds r0, 0x28
- ldrb r3, [r0]
- lsls r1, r3, 4
- subs r1, r3
- lsls r1, 2
- ldr r6, =gUnknown_082F449C
- subs r0, 0x4
- ldrb r2, [r0]
- subs r2, 0x1
- add r1, r12
- movs r0, 0xB
- muls r3, r0
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 3
- subs r2, r0, r2
- ldr r0, =0x000031bf
- adds r1, r0
-_08026CEA:
- adds r0, r4, r3
- adds r0, r2
- adds r0, r6
- ldrb r0, [r0]
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _08026D14
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08026CEA
-_08026D04:
- movs r0, 0x1
- b _08026D16
- .pool
-_08026D14:
- movs r0, 0
-_08026D16:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8026C90
-
- thumb_func_start sub_8026D1C
-sub_8026D1C: @ 8026D1C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_082F7A9C
- mov r8, r0
- ldr r0, =gUnknown_02022C98
- ldr r6, [r0]
- adds r0, r6, 0
- adds r0, 0x90
- adds r0, r5
- mov r9, r0
- ldrb r7, [r0]
- adds r0, r7, 0
- movs r1, 0x7
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- add r4, r8
- adds r0, r7, 0
- movs r1, 0x7
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldrb r4, [r4]
- adds r0, r4
- lsls r0, 24
- lsls r5, 1
- adds r6, 0x86
- adds r6, r5
- ldrh r1, [r6]
- lsrs r0, 24
- cmp r1, r0
- bcc _08026D76
- adds r0, r7, 0x1
- mov r1, r9
- strb r0, [r1]
-_08026D76:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8026D1C
-
- thumb_func_start sub_8026D8C
-sub_8026D8C: @ 8026D8C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gUnknown_082F449C+0x1AC
- ldr r1, =gUnknown_02022C98
- ldr r1, [r1]
- adds r1, 0x24
- ldrb r1, [r1]
- subs r1, 0x1
- movs r2, 0xB
- muls r1, r2
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_8026D8C
-
- thumb_func_start sub_8026DB0
-sub_8026DB0: @ 8026DB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, =gUnknown_02022C98
- ldr r1, [r4]
- adds r1, 0x24
- ldrb r2, [r1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =gUnknown_082F449C+0x15E
- lsls r1, r0, 1
- adds r1, r0
- lsls r0, r2, 4
- subs r0, r2
- adds r1, r0
- adds r0, r1, r3
- ldrb r0, [r0]
- mov r12, r0
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r7, [r0]
- adds r3, 0x2
- adds r1, r3
- ldrb r1, [r1]
- mov r8, r1
- movs r3, 0
- ldr r1, =gUnknown_082F449C+0x1E3
- lsls r0, r2, 2
- adds r2, r0, r2
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08026E18
- adds r6, r1, 0
-_08026DFE:
- adds r0, r3, r2
- adds r0, r6
- ldrb r0, [r0]
- cmp r5, r0
- beq _08026E3C
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r3, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08026DFE
-_08026E18:
- ldr r0, [r4]
- adds r0, 0x90
- mov r1, r12
- adds r2, r0, r1
- adds r1, r0, r7
- ldrb r0, [r2]
- ldrb r3, [r1]
- cmp r0, r3
- bls _08026E46
- adds r1, r0, 0
- b _08026E48
- .pool
-_08026E3C:
- ldr r0, [r4]
- adds r0, 0x90
- adds r0, r7
- ldrb r0, [r0]
- b _08026E5A
-_08026E46:
- ldrb r1, [r1]
-_08026E48:
- ldr r0, [r4]
- adds r0, 0x90
- mov r2, r8
- adds r4, r0, r2
- ldrb r0, [r4]
- cmp r0, r1
- bls _08026E58
- adds r1, r0, 0
-_08026E58:
- adds r0, r1, 0
-_08026E5A:
- adds r1, r5, 0
- bl sub_8026E70
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8026DB0
-
- thumb_func_start sub_8026E70
-sub_8026E70: @ 8026E70
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_02022C98
- ldr r2, [r2]
- adds r2, 0xE8
- adds r2, r1
- ldrb r4, [r2]
- movs r1, 0x7
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bhi _08026EDE
- lsls r0, 2
- ldr r1, =_08026EA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08026EA4:
- .4byte _08026EDE
- .4byte _08026ED6
- .4byte _08026EE2
- .4byte _08026EC0
- .4byte _08026EC6
- .4byte _08026ECC
- .4byte _08026ED2
-_08026EC0:
- cmp r4, 0
- beq _08026ED6
- b _08026EDE
-_08026EC6:
- cmp r4, 0
- beq _08026EE2
- b _08026EDE
-_08026ECC:
- cmp r4, 0x2
- beq _08026ED6
- b _08026EE2
-_08026ED2:
- cmp r4, 0
- bne _08026EDA
-_08026ED6:
- movs r0, 0x1
- b _08026EE4
-_08026EDA:
- cmp r4, 0x1
- beq _08026EE2
-_08026EDE:
- movs r0, 0
- b _08026EE4
-_08026EE2:
- movs r0, 0x2
-_08026EE4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8026E70
-
- thumb_func_start sub_8026EEC
-sub_8026EEC: @ 8026EEC
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- adds r4, r0, 0
- b _08026EFE
-_08026EF6:
- ldrh r0, [r4, 0x6]
- adds r6, r0
- adds r4, 0xC
- adds r5, 0x1
-_08026EFE:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _08026EF6
- cmp r6, 0xA
- bgt _08026F12
- movs r0, 0
- b _08026F14
-_08026F12:
- movs r0, 0x1
-_08026F14:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8026EEC
-
- thumb_func_start sub_8026F1C
-sub_8026F1C: @ 8026F1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r6, =gUnknown_02022C98
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r5, [r0]
- cmp r3, 0
- bge _08026F3A
- b _0802722C
-_08026F3A:
- cmp r3, 0x2
- ble _08026F48
- cmp r3, 0x3
- beq _08026F78
- b _0802722C
- .pool
-_08026F48:
- ldr r3, =0x000031b4
- adds r0, r1, r3
- adds r0, r4
- ldrb r4, [r0]
- lsls r4, 1
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r4, r0
- adds r0, r1, 0
- adds r0, 0x4A
- adds r0, r4
- ldrh r0, [r0]
- ldr r1, =0x00004e20
- bl sub_8027A28
- ldr r1, [r6]
- adds r1, 0x4A
- adds r1, r4
- b _0802722A
- .pool
-_08026F78:
- adds r0, r1, 0
- adds r0, 0x4A
- bl sub_8026EEC
- cmp r0, 0
- beq _08026F86
- b _0802722C
-_08026F86:
- cmp r5, 0x3
- bne _08026F8C
- b _08027154
-_08026F8C:
- cmp r5, 0x3
- bgt _08026F98
- cmp r5, 0x2
- bne _08026F96
- b _080271E8
-_08026F96:
- b _0802722C
-_08026F98:
- cmp r5, 0x4
- bne _08026F9E
- b _08027090
-_08026F9E:
- cmp r5, 0x5
- beq _08026FA4
- b _0802722C
-_08026FA4:
- cmp r4, 0x9
- bls _08026FAA
- b _0802722C
-_08026FAA:
- lsls r0, r4, 2
- ldr r1, =_08026FB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08026FB8:
- .4byte _08026FE0
- .4byte _08026FF8
- .4byte _08027004
- .4byte _0802701C
- .4byte _08027028
- .4byte _08027040
- .4byte _0802704C
- .4byte _08027060
- .4byte _0802706C
- .4byte _08027084
-_08026FE0:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x68
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x74
- b _08027226
- .pool
-_08026FF8:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x74
- b _08027226
- .pool
-_08027004:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x74
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x80
- b _08027226
- .pool
-_0802701C:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x80
- b _08027226
- .pool
-_08027028:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x80
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x50
- b _08027226
- .pool
-_08027040:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x50
- b _08027226
- .pool
-_0802704C:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x50
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _08027224
- .pool
-_08027060:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- b _08027224
- .pool
-_0802706C:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x5C
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x68
- b _08027226
- .pool
-_08027084:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x68
- b _08027226
- .pool
-_08027090:
- subs r0, r4, 0x1
- cmp r0, 0x7
- bls _08027098
- b _0802722C
-_08027098:
- lsls r0, 2
- ldr r1, =_080270A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080270A8:
- .4byte _080270C8
- .4byte _080270E0
- .4byte _080270EC
- .4byte _08027104
- .4byte _08027110
- .4byte _08027124
- .4byte _08027130
- .4byte _08027148
-_080270C8:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x68
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x74
- b _08027226
- .pool
-_080270E0:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x74
- b _08027226
- .pool
-_080270EC:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x74
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x50
- b _08027226
- .pool
-_08027104:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x50
- b _08027226
- .pool
-_08027110:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x50
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _08027224
- .pool
-_08027124:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- b _08027224
- .pool
-_08027130:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x5C
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x68
- b _08027226
- .pool
-_08027148:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x68
- b _08027226
- .pool
-_08027154:
- subs r0, r4, 0x2
- cmp r0, 0x5
- bhi _0802722C
- lsls r0, 2
- ldr r1, =_08027168
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08027168:
- .4byte _08027180
- .4byte _08027198
- .4byte _080271A4
- .4byte _080271BC
- .4byte _080271C8
- .4byte _080271DC
-_08027180:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x5C
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x68
- b _08027226
- .pool
-_08027198:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x68
- b _08027226
- .pool
-_080271A4:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x68
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x50
- b _08027226
- .pool
-_080271BC:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x50
- b _08027226
- .pool
-_080271C8:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x50
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _08027224
- .pool
-_080271DC:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- b _08027224
- .pool
-_080271E8:
- cmp r4, 0x4
- beq _0802720E
- cmp r4, 0x4
- bgt _080271F6
- cmp r4, 0x3
- beq _08027200
- b _0802722C
-_080271F6:
- cmp r4, 0x5
- beq _08027214
- cmp r4, 0x6
- beq _08027222
- b _0802722C
-_08027200:
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x50
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _08027224
-_0802720E:
- ldr r1, [r6]
- adds r1, 0x50
- b _08027226
-_08027214:
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x50
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- b _08027224
-_08027222:
- ldr r1, [r6]
-_08027224:
- adds r1, 0x5C
-_08027226:
- ldrh r0, [r1]
- adds r0, 0x1
-_0802722A:
- strh r0, [r1]
-_0802722C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8026F1C
-
- thumb_func_start sub_8027234
-sub_8027234: @ 8027234
- push {r4,r5,lr}
- adds r1, r0, 0
- ldr r4, =gUnknown_02022C98
- ldr r3, [r4]
- adds r0, r3, 0
- adds r0, 0x24
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0802729E
- cmp r1, 0x1
- bne _08027280
- movs r5, 0x89
- lsls r5, 1
- adds r1, r3, r5
- ldrh r0, [r1]
- adds r2, r0, 0x1
- strh r2, [r1]
- movs r0, 0x8A
- lsls r0, 1
- adds r1, r3, r0
- lsls r0, r2, 16
- lsrs r0, 16
- ldrh r3, [r1]
- cmp r0, r3
- bls _08027268
- strh r2, [r1]
-_08027268:
- ldr r0, [r4]
- adds r2, r0, r5
- ldrh r0, [r2]
- ldr r1, =0x0000270f
- cmp r0, r1
- bls _0802729E
- strh r1, [r2]
- b _0802729E
- .pool
-_08027280:
- movs r2, 0x89
- lsls r2, 1
- adds r0, r3, r2
- movs r5, 0x8A
- lsls r5, 1
- adds r1, r3, r5
- ldrh r0, [r0]
- ldrh r3, [r1]
- cmp r0, r3
- bls _08027296
- strh r0, [r1]
-_08027296:
- ldr r0, [r4]
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
-_0802729E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8027234
-
- thumb_func_start sub_80272A4
-sub_80272A4: @ 80272A4
- push {r4,r5,lr}
- movs r3, 0
- ldr r2, =gUnknown_02022C98
- ldr r0, [r2]
- adds r0, 0x24
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080272DC
- adds r5, r2, 0
- movs r4, 0x8A
- lsls r4, 1
-_080272BA:
- ldr r2, [r5]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r1, r2, 0
- adds r1, 0x54
- adds r1, r0
- adds r0, r2, r4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r2, 0x24
- ldrb r2, [r2]
- cmp r3, r2
- bcc _080272BA
-_080272DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80272A4
-
- thumb_func_start sub_80272E8
-sub_80272E8: @ 80272E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r7, =gUnknown_02022C98
- movs r4, 0
- ldr r0, =0x000031bf
- mov r10, r0
-_080272FC:
- movs r2, 0
- lsls r6, r5, 4
- lsls r1, r5, 1
- mov r8, r1
- lsls r0, r5, 3
- mov r12, r0
- adds r1, r5, 0x1
- mov r9, r1
- subs r0, r6, r5
- lsls r3, r0, 2
-_08027310:
- ldr r0, [r7]
- adds r1, r2, r3
- add r0, r10
- adds r0, r1
- strb r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _08027310
- ldr r0, [r7]
- subs r1, r6, r5
- lsls r1, 2
- adds r0, r1
- ldr r2, =0x000031cc
- adds r0, r2
- strb r4, [r0]
- ldr r0, [r7]
- adds r0, r1
- ldr r1, =0x000031d0
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r7]
- adds r0, 0x90
- adds r0, r5
- strb r4, [r0]
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x86
- add r0, r8
- strh r4, [r0]
- add r1, r12
- ldr r2, =0x00003308
- adds r1, r2
- strb r4, [r1]
- ldr r2, [r7]
- ldr r1, =0x0000330c
- adds r0, r2, r1
- add r0, r12
- str r4, [r0]
- mov r0, r8
- adds r1, r0, r5
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x4A
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x4E
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x52
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0
- adds r0, 0x54
- adds r0, r1
- strh r4, [r0]
- mov r1, r9
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080272FC
- ldr r2, =gUnknown_02022C98
- ldr r0, [r2]
- movs r1, 0xAA
- lsls r1, 1
- adds r0, r1
- movs r2, 0
- strb r2, [r0]
- ldr r1, =gUnknown_02022C98
- ldr r0, [r1]
- movs r1, 0x89
- lsls r1, 1
- adds r3, r0, r1
- movs r1, 0
- strh r2, [r3]
- adds r0, 0x40
- strb r1, [r0]
- bl sub_8026A88
- bl sub_8026988
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80272E8
-
- thumb_func_start sub_80273F0
-sub_80273F0: @ 80273F0
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _0802740C
- cmp r0, 0x5
- beq _08027410
- b _08027412
- .pool
-_0802740C:
- movs r4, 0x1
- b _08027412
-_08027410:
- movs r4, 0x2
-_08027412:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- lsls r1, r4, 2
- ldr r5, =gUnknown_02022C98
- ldr r2, =gUnknown_082F7AA4
- adds r1, r4
- lsls r1, 1
- adds r0, r1
- adds r0, r2
- ldrb r2, [r0]
-_08027436:
- ldr r1, [r5]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r1, 0x52
- adds r1, r0
- strh r2, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x4
- bls _08027436
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80273F0
-
- thumb_func_start sub_802745C
-sub_802745C: @ 802745C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022C98
- ldr r2, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x4A
- adds r0, r1
- ldrh r3, [r0]
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r1
- ldrh r0, [r0]
- adds r2, 0x4E
- adds r2, r1
- adds r3, r0
- ldrh r2, [r2]
- adds r0, r3, r2
- ldr r1, =0x0000270f
- cmp r0, r1
- bls _0802748E
- adds r0, r1, 0
-_0802748E:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802745C
-
- thumb_func_start sub_802749C
-sub_802749C: @ 802749C
- push {r4-r6,lr}
- ldr r5, =gUnknown_02022C98
- ldr r0, [r5]
- adds r0, 0x28
- ldrb r0, [r0]
- bl sub_802745C
- ldr r1, =0x0000270f
- bl sub_8027A38
- adds r4, r0, 0
- ldr r0, [r5]
- adds r0, 0x28
- ldrb r0, [r0]
- bl sub_80276C0
- ldr r1, =0x000f4236
- bl sub_8027A38
- adds r2, r0, 0
- ldr r3, =gSaveBlock2Ptr
- ldr r0, [r3]
- movs r6, 0x83
- lsls r6, 2
- adds r1, r0, r6
- ldr r0, [r1]
- cmp r0, r2
- bcs _080274D6
- str r2, [r1]
-_080274D6:
- ldr r0, [r3]
- movs r2, 0x84
- lsls r2, 2
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, r4
- bcs _080274E6
- strh r4, [r1]
-_080274E6:
- ldr r0, [r3]
- ldr r6, =0x00000212
- adds r2, r0, r6
- ldr r0, [r5]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _080274FE
- strh r1, [r2]
-_080274FE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802749C
-
- thumb_func_start sub_8027518
-sub_8027518: @ 8027518
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gUnknown_02022C98
- ldr r0, [r1]
- adds r0, 0x9B
- ldrb r6, [r0]
- movs r3, 0x3
- adds r5, r1, 0
- adds r4, r5, 0
-_0802752C:
- ldr r0, [r4]
- adds r0, 0x98
- adds r2, r0, r3
- subs r1, r3, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r3, r1, 24
- cmp r3, 0
- bne _0802752C
- ldr r0, [r5]
- adds r0, 0x98
- strb r7, [r0]
- adds r0, r6, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8027518
-
- thumb_func_start sub_8027554
-sub_8027554: @ 8027554
- push {r4,lr}
- ldr r4, =gUnknown_02022C98
- ldr r3, [r4]
- adds r0, r3, 0
- adds r0, 0x28
- ldrb r1, [r0]
- adds r0, 0x88
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, 0
- bne _080275FC
- ldr r0, =gMain
- ldrh r2, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08027594
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 2
- adds r0, r3, r0
- ldr r1, =0x000031cc
- adds r0, r1
- movs r1, 0x2
- b _080275CA
- .pool
-_08027594:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _080275B0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 2
- adds r0, r3, r0
- ldr r1, =0x000031cc
- adds r0, r1
- movs r1, 0x3
- b _080275CA
- .pool
-_080275B0:
- movs r0, 0x10
- ands r0, r2
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _080275E8
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 2
- adds r0, r3, r0
- ldr r1, =0x000031cc
- adds r0, r1
- movs r1, 0x1
-_080275CA:
- strb r1, [r0]
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x28
- adds r0, 0xB0
- ldrb r1, [r1]
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0xD4
- bl PlaySE
- b _08027600
- .pool
-_080275E8:
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 2
- adds r0, r3, r0
- ldr r1, =0x000031cc
- adds r0, r1
- strb r2, [r0]
- b _08027600
- .pool
-_080275FC:
- subs r0, 0x1
- strb r0, [r2]
-_08027600:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8027554
-
- thumb_func_start sub_8027608
-sub_8027608: @ 8027608
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r2, [r0]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000031cc
- adds r1, r0
- movs r0, 0
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8027608
-
- thumb_func_start sub_802762C
-sub_802762C: @ 802762C
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r2, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, 0x52
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_802762C
-
- thumb_func_start sub_8027650
-sub_8027650: @ 8027650
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_8027650
-
- thumb_func_start sub_8027660
-sub_8027660: @ 8027660
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802768C
- ldr r0, =gUnknown_02022C98
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 2
- ldr r2, =0x000031a0
- adds r1, r2
- ldr r0, [r0]
- b _08027694
- .pool
-_0802768C:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r1, =gLinkPlayers + 8
-_08027694:
- adds r0, r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8027660
-
- thumb_func_start sub_80276A0
-sub_80276A0: @ 80276A0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r2, =gUnknown_02022C98
- ldr r3, [r2]
- lsrs r1, 23
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- adds r1, r2
- adds r3, 0x4A
- adds r3, r1
- ldrh r0, [r3]
- bx lr
- .pool
- thumb_func_end sub_80276A0
-
- thumb_func_start sub_80276C0
-sub_80276C0: @ 80276C0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- movs r3, 0
- ldr r0, =gUnknown_02022C98
- mov r9, r0
- ldr r2, =gUnknown_082F7B24
- mov r10, r2
- ldr r2, [r0]
- lsls r1, r4, 1
- adds r0, r1, r4
- lsls r0, 2
- str r0, [sp]
- adds r6, r2, 0
- adds r6, 0x4A
- mov r12, r1
- mov r8, r10
-_080276EE:
- lsls r1, r3, 1
- ldr r7, [sp]
- adds r0, r1, r7
- adds r0, r6, r0
- ldrh r2, [r0]
- add r1, r8
- movs r7, 0
- ldrsh r0, [r1, r7]
- muls r0, r2
- adds r5, r0
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _080276EE
- mov r0, r9
- ldr r1, [r0]
- mov r2, r12
- adds r0, r2, r4
- lsls r0, 2
- adds r1, 0x50
- adds r1, r0
- ldrh r1, [r1]
- mov r3, r10
- movs r7, 0x6
- ldrsh r0, [r3, r7]
- muls r0, r1
- cmp r5, r0
- bls _08027734
- subs r0, r5, r0
- b _08027736
- .pool
-_08027734:
- movs r0, 0
-_08027736:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80276C0
-
- thumb_func_start sub_8027748
-sub_8027748: @ 8027748
- push {r4-r6,lr}
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r6, [r0]
- movs r0, 0
- bl sub_80276C0
- adds r5, r0, 0
- movs r4, 0x1
- cmp r4, r6
- bcs _08027776
-_08027760:
- adds r0, r4, 0
- bl sub_80276C0
- cmp r0, r5
- bls _0802776C
- adds r5, r0, 0
-_0802776C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08027760
-_08027776:
- ldr r1, =0x000f4236
- adds r0, r5, 0
- bl sub_8027A38
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8027748
-
- thumb_func_start sub_802778C
-sub_802778C: @ 802778C
- push {r4,r5,lr}
- lsls r0, 24
- ldr r1, =gUnknown_02022C98
- ldr r2, [r1]
- adds r1, r2, 0
- adds r1, 0x24
- ldrb r5, [r1]
- lsrs r4, r0, 23
- adds r2, 0x4A
- adds r0, r2, r4
- ldrh r3, [r0]
- movs r1, 0
- cmp r1, r5
- bcs _080277C4
-_080277A8:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r2, r0
- ldrh r0, [r0]
- cmp r0, r3
- bls _080277BA
- adds r3, r0, 0
-_080277BA:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r5
- bcc _080277A8
-_080277C4:
- adds r0, r3, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802778C
-
- thumb_func_start sub_80277D0
-sub_80277D0: @ 80277D0
- push {r4-r7,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0x1
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r5, [r0]
- movs r4, 0
- cmp r4, r5
- bcs _080277FE
-_080277E8:
- adds r0, r4, 0
- bl sub_80276C0
- lsls r1, r4, 2
- add r1, sp
- str r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080277E8
-_080277FE:
- lsls r7, 2
- mov r12, r7
- cmp r6, 0
- beq _08027838
- subs r7, r5, 0x1
-_08027808:
- movs r6, 0
- movs r4, 0
- cmp r6, r7
- bge _08027834
- adds r5, r7, 0
-_08027812:
- lsls r0, r4, 2
- mov r2, sp
- adds r1, r2, r0
- adds r4, 0x1
- lsls r0, r4, 2
- adds r3, r2, r0
- ldr r0, [r1]
- ldr r2, [r3]
- cmp r0, r2
- bcs _0802782C
- str r2, [r1]
- str r0, [r3]
- movs r6, 0x1
-_0802782C:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- cmp r4, r5
- blt _08027812
-_08027834:
- cmp r6, 0
- bne _08027808
-_08027838:
- mov r0, sp
- add r0, r12
- ldr r0, [r0]
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80277D0
-
- thumb_func_start sub_802784C
-sub_802784C: @ 802784C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- mov r10, r0
- mov r8, r0
- mov r9, r0
- ldr r6, =gUnknown_02022C98
- ldr r0, [r6]
- adds r0, 0x24
- ldrb r5, [r0]
- bl sub_8027748
- bl sub_8027748
- cmp r0, 0
- bne _080278A0
- movs r4, 0
- cmp r9, r5
- bcs _080278A0
- adds r2, r6, 0
- ldr r1, =0x00003308
- mov r12, r1
- movs r7, 0
- movs r6, 0x4
- ldr r3, =0x0000330c
-_08027884:
- ldr r0, [r2]
- lsls r1, r4, 3
- adds r0, r1
- add r0, r12
- strb r6, [r0]
- ldr r0, [r2]
- adds r0, r3
- adds r0, r1
- str r7, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08027884
-_080278A0:
- movs r4, 0
- cmp r4, r5
- bcs _080278CA
-_080278A6:
- adds r0, r4, 0
- bl sub_80276C0
- ldr r1, =0x000f4236
- bl sub_8027A38
- ldr r1, =gUnknown_02022C98
- ldr r1, [r1]
- lsls r2, r4, 3
- ldr r3, =0x0000330c
- adds r1, r3
- adds r1, r2
- str r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080278A6
-_080278CA:
- mov r0, r10
- bl sub_80277D0
- adds r6, r0, 0
- mov r3, r8
- movs r4, 0
- cmp r4, r5
- bcs _08027916
- ldr r7, =gUnknown_02022C98
- mov r10, r7
-_080278DE:
- mov r0, r10
- ldr r2, [r0]
- lsls r1, r4, 3
- ldr r7, =0x0000330c
- adds r0, r2, r7
- adds r0, r1
- ldr r0, [r0]
- cmp r6, r0
- bne _0802790C
- adds r0, r2, r1
- ldr r1, =0x00003308
- adds r0, r1
- strb r3, [r0]
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0802790C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _080278DE
-_08027916:
- mov r10, r8
- cmp r9, r5
- bcc _080278CA
- movs r0, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802784C
-
- thumb_func_start sub_802793C
-sub_802793C: @ 802793C
- lsls r1, 24
- ldr r2, =gUnknown_02022C98
- ldr r2, [r2]
- lsrs r1, 21
- ldr r3, =0x00003308
- adds r2, r3
- adds r2, r1
- ldr r1, [r2]
- ldr r2, [r2, 0x4]
- str r1, [r0]
- str r2, [r0, 0x4]
- bx lr
- .pool
- thumb_func_end sub_802793C
-
- thumb_func_start sub_802795C
-sub_802795C: @ 802795C
- push {r4-r7,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r5, [r0]
- mov r0, sp
- movs r1, 0
- movs r2, 0x14
- bl memset
- movs r4, 0
- cmp r7, r5
- bcs _08027994
-_0802797E:
- adds r0, r4, 0
- bl sub_80276C0
- lsls r1, r4, 2
- add r1, sp
- str r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0802797E
-_08027994:
- lsls r0, r6, 2
- add r0, sp
- ldr r1, [r0]
- movs r4, 0
-_0802799C:
- cmp r4, r6
- beq _080279B0
- lsls r0, r4, 2
- add r0, sp
- ldr r0, [r0]
- cmp r1, r0
- bcs _080279B0
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_080279B0:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0802799C
- adds r0, r7, 0
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802795C
-
- thumb_func_start sub_80279C8
-sub_80279C8: @ 80279C8
- push {r4-r6,lr}
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x28
- ldrb r4, [r0]
- bl sub_802762C
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, r5, 0
- adds r0, r4, 0
- bl sub_80276C0
- adds r4, r0, 0
- bl sub_8027748
- cmp r4, r0
- beq _080279F4
- movs r0, 0x3
- b _08027A22
- .pool
-_080279F4:
- adds r0, r5, 0
- movs r1, 0x1
- bl CheckBagHasSpace
- lsls r0, 24
- cmp r0, 0
- bne _08027A06
- movs r0, 0x2
- b _08027A22
-_08027A06:
- adds r0, r6, 0
- movs r1, 0x1
- bl AddBagItem
- adds r0, r6, 0
- movs r1, 0x1
- bl CheckBagHasSpace
- lsls r0, 24
- cmp r0, 0
- beq _08027A20
- movs r0, 0
- b _08027A22
-_08027A20:
- movs r0, 0x1
-_08027A22:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80279C8
-
- thumb_func_start sub_8027A28
-sub_8027A28: @ 8027A28
- push {lr}
- adds r2, r0, 0
- adds r0, r1, 0
- cmp r2, r0
- bcs _08027A34
- adds r0, r2, 0x1
-_08027A34:
- pop {r1}
- bx r1
- thumb_func_end sub_8027A28
-
- thumb_func_start sub_8027A38
-sub_8027A38: @ 8027A38
- push {lr}
- adds r2, r0, 0
- adds r0, r1, 0
- cmp r2, r0
- bcs _08027A44
- adds r0, r2, 0
-_08027A44:
- pop {r1}
- bx r1
- thumb_func_end sub_8027A38
-
- thumb_func_start sub_8027A48
-sub_8027A48: @ 8027A48
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022C98
- ldr r1, [r1]
- adds r1, 0x34
- adds r1, r0
- ldrb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8027A48
-
- thumb_func_start sub_8027A5C
-sub_8027A5C: @ 8027A5C
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gSpecialVar_Result
-_08027A62:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _08027A94
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0x55
- bne _08027A94
- movs r0, 0x1
- strh r0, [r6]
- b _08027AA0
- .pool
-_08027A94:
- adds r5, 0x1
- cmp r5, 0x5
- ble _08027A62
- ldr r1, =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
-_08027AA0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027A5C
-
- thumb_func_start sub_8027AAC
-sub_8027AAC: @ 8027AAC
- push {r4,lr}
- ldr r4, =sub_8027ACC
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027AAC
-
- thumb_func_start sub_8027ACC
-sub_8027ACC: @ 8027ACC
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r7, r0, r1
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- beq _08027B94
- cmp r0, 0x1
- bgt _08027AF4
- cmp r0, 0
- beq _08027AFE
- b _08027BE2
- .pool
-_08027AF4:
- cmp r0, 0x2
- beq _08027BA0
- cmp r0, 0x3
- beq _08027BC8
- b _08027BE2
-_08027AFE:
- ldr r0, =gUnknown_082F7B2C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r1, =gText_BerryPickingRecords
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r4, r0, 0
- movs r6, 0
- ldr r5, =gUnknown_082F7B34
-_08027B18:
- ldr r1, [r5]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r0, 0x32
- cmp r0, r4
- ble _08027B2A
- adds r4, r0, 0
-_08027B2A:
- adds r5, 0x4
- adds r6, 0x1
- cmp r6, 0x2
- bls _08027B18
- adds r0, r4, 0x7
- cmp r0, 0
- bge _08027B3A
- adds r0, 0x7
-_08027B3A:
- asrs r4, r0, 3
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _08027B46
- adds r4, 0x1
-_08027B46:
- movs r1, 0x1E
- subs r1, r4
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- lsls r1, 24
- lsrs r1, 16
- ldr r2, =0xffff00ff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- lsls r2, r4, 24
- ldr r1, =0x00ffffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- mov r0, sp
- bl AddWindow
- strh r0, [r7, 0x2]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_8027BEC
- ldrb r0, [r7, 0x2]
- movs r1, 0x3
- b _08027BB6
- .pool
-_08027B94:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08027BE2
- b _08027BBA
-_08027BA0:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08027BE2
- ldrb r0, [r7, 0x2]
- bl rbox_fill_rectangle
- ldrb r0, [r7, 0x2]
- movs r1, 0x1
-_08027BB6:
- bl CopyWindowToVram
-_08027BBA:
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- b _08027BE2
- .pool
-_08027BC8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08027BE2
- ldrb r0, [r7, 0x2]
- bl RemoveWindow
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08027BE2:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8027ACC
-
- thumb_func_start sub_8027BEC
-sub_8027BEC: @ 8027BEC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- str r1, [sp, 0x18]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r2, 0x84
- lsls r2, 2
- adds r0, r1, r2
- ldrh r0, [r0]
- str r0, [sp, 0xC]
- subs r2, 0x4
- adds r0, r1, r2
- ldr r0, [r0]
- str r0, [sp, 0x10]
- ldr r0, =0x00000212
- adds r1, r0
- ldrh r0, [r1]
- str r0, [sp, 0x14]
- ldr r4, =0x0000021d
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0xD0
- bl LoadUserWindowBorderGfx_
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0xD
- bl DrawTextBorderOuter
- adds r0, r7, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r4, =gText_BerryPickingRecords
- ldr r0, [sp, 0x18]
- lsls r2, r0, 3
- movs r0, 0x1
- adds r1, r4, 0
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- adds r2, r4, 0
- bl AddTextPrinterParameterized
- movs r6, 0
- ldr r2, =gStringVar1
- mov r8, r2
- movs r0, 0xFF
- mov r10, r0
- mov r9, r6
- mov r2, sp
- adds r2, 0xC
- str r2, [sp, 0x1C]
-_08027C76:
- lsls r4, r6, 2
- ldr r0, [sp, 0x1C]
- ldm r0!, {r1}
- str r0, [sp, 0x1C]
- ldr r0, =gUnknown_082F7B40
- adds r0, r6, r0
- ldrb r3, [r0]
- mov r0, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- mov r1, r8
- movs r2, 0x1
- negs r2, r2
- bl GetStringWidth
- adds r5, r0, 0
- ldr r0, =gUnknown_082F7B34
- adds r4, r0
- ldr r2, [r4]
- ldr r0, =gUnknown_082F7B44
- lsls r4, r6, 1
- adds r0, r4, r0
- ldrb r0, [r0]
- str r0, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r2, [sp, 0x18]
- lsls r3, r2, 3
- subs r3, r5
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_082F7B4A
- adds r4, r0
- ldrb r0, [r4]
- str r0, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- mov r2, r8
- bl AddTextPrinterParameterized
- adds r6, 0x1
- cmp r6, 0x2
- ble _08027C76
- adds r0, r7, 0
- bl PutWindowTilemap
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027BEC
-
- thumb_func_start sub_8027D20
-sub_8027D20: @ 8027D20
- push {lr}
- bl GetLinkPlayerCount
- ldr r1, =gUnknown_02022C98
- ldr r1, [r1]
- adds r1, 0x24
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027D20
-
- thumb_func_start sub_8027D38
-sub_8027D38: @ 8027D38
- push {r4-r7,lr}
- ldr r0, =gUnknown_02022C98
- ldr r0, [r0]
- adds r0, 0x24
- ldrb r4, [r0]
- cmp r4, 0x4
- bhi _08027D66
- ldr r5, =gUnknown_082F7B90
-_08027D48:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, =gLinkPlayers + 8
- adds r0, r1
- lsls r1, r4, 2
- adds r1, r5
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _08027D48
-_08027D66:
- ldr r0, =gUnknown_02022C98
- ldr r1, [r0]
- adds r1, 0x24
- movs r2, 0x5
- strb r2, [r1]
- movs r1, 0
- mov r12, r0
-_08027D74:
- movs r4, 0
- mov r2, r12
- ldr r0, [r2]
- adds r0, 0x24
- adds r5, r1, 0x1
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08027DB2
- ldr r7, =gUnknown_02022C98
- lsls r3, r1, 1
- ldr r6, =gUnknown_082F7B50
-_08027D8A:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r3, r0
- adds r1, r2, 0
- adds r1, 0x4A
- adds r1, r0
- lsls r0, r4, 3
- adds r0, r3, r0
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r2, 0x24
- ldrb r2, [r2]
- cmp r4, r2
- bcc _08027D8A
-_08027DB2:
- lsls r0, r5, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _08027D74
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027D38
-
- thumb_func_start sub_8027DD0
-sub_8027DD0: @ 8027DD0
- push {lr}
- sub sp, 0x8
- ldr r3, =0xffffff00
- ldr r1, [sp]
- ands r1, r3
- movs r2, 0x1
- orrs r1, r2
- str r1, [sp]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [sp, 0x4]
- ands r1, r3
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl sub_800FE50
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8027DD0
-
- thumb_func_start sub_8027DFC
-sub_8027DFC: @ 8027DFC
- push {lr}
- adds r2, r0, 0
- ldr r3, =gRecvCmds
- ldrh r0, [r3]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _08027E1E
- lsls r0, r2, 4
- adds r1, r3, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _08027E28
-_08027E1E:
- movs r0, 0
- b _08027E2A
- .pool
-_08027E28:
- ldrb r0, [r1, 0x4]
-_08027E2A:
- pop {r1}
- bx r1
- thumb_func_end sub_8027DFC
-
- thumb_func_start sub_8027E30
-sub_8027E30: @ 8027E30
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x48]
- lsls r4, 24
- str r4, [sp, 0x1C]
- movs r4, 0x14
- adds r4, r0
- mov r9, r4
- mov r5, sp
- movs r4, 0x2
- strb r4, [r5]
- mov r10, sp
- mov r5, r9
- ldrb r4, [r5, 0xB]
- movs r7, 0xF
- adds r5, r7, 0
- ands r5, r4
- mov r6, r10
- ldrb r6, [r6, 0x1]
- mov r8, r6
- movs r4, 0x10
- negs r4, r4
- mov r6, r8
- ands r4, r6
- orrs r4, r5
- mov r5, r10
- strb r4, [r5, 0x1]
- mov r8, sp
- mov r6, r9
- ldrb r5, [r6, 0xC]
- lsls r5, 4
- ands r4, r7
- orrs r4, r5
- mov r5, r8
- strb r4, [r5, 0x1]
- ldrb r5, [r6, 0xD]
- movs r6, 0xF
- ands r5, r6
- mov r4, r10
- ldrb r4, [r4, 0x2]
- mov r8, r4
- movs r4, 0x10
- negs r4, r4
- mov r6, r8
- ands r4, r6
- orrs r4, r5
- mov r5, r10
- strb r4, [r5, 0x2]
- mov r8, sp
- mov r6, r9
- ldrb r5, [r6, 0xE]
- lsls r5, 4
- ands r4, r7
- orrs r4, r5
- mov r5, r8
- strb r4, [r5, 0x2]
- ldrb r5, [r6, 0xF]
- movs r6, 0xF
- ands r5, r6
- mov r4, r10
- ldrb r4, [r4, 0x3]
- mov r8, r4
- movs r4, 0x10
- negs r4, r4
- mov r6, r8
- ands r4, r6
- orrs r4, r5
- mov r5, r10
- strb r4, [r5, 0x3]
- mov r8, sp
- mov r6, r9
- ldrb r5, [r6, 0x10]
- lsls r5, 4
- ands r4, r7
- orrs r4, r5
- mov r5, r8
- strb r4, [r5, 0x3]
- ldrb r5, [r6, 0x11]
- movs r6, 0xF
- ands r5, r6
- mov r4, r10
- ldrb r4, [r4, 0x4]
- mov r8, r4
- movs r4, 0x10
- negs r4, r4
- mov r6, r8
- ands r4, r6
- orrs r4, r5
- mov r5, r10
- strb r4, [r5, 0x4]
- mov r8, sp
- mov r6, r9
- ldrb r5, [r6, 0x12]
- lsls r5, 4
- ands r4, r7
- orrs r4, r5
- mov r5, r8
- strb r4, [r5, 0x4]
- ldrb r4, [r6, 0x13]
- movs r6, 0xF
- ands r4, r6
- mov r6, r8
- ldrb r5, [r6, 0x5]
- movs r6, 0x10
- negs r6, r6
- ands r6, r5
- orrs r6, r4
- str r6, [sp, 0xC]
- mov r4, r8
- strb r6, [r4, 0x5]
- mov r5, sp
- mov r6, r9
- ldrb r4, [r6, 0x14]
- lsls r4, 4
- ldr r6, [sp, 0xC]
- ands r6, r7
- orrs r6, r4
- strb r6, [r5, 0x5]
- mov r7, sp
- movs r4, 0x3
- mov r8, r4
- ldrb r0, [r0, 0x14]
- mov r5, r8
- ands r0, r5
- ldrb r5, [r7, 0x6]
- movs r6, 0x4
- negs r6, r6
- mov r10, r6
- mov r4, r10
- ands r4, r5
- orrs r4, r0
- strb r4, [r7, 0x6]
- mov r5, r9
- ldrb r0, [r5, 0x1]
- mov r6, r8
- ands r0, r6
- lsls r0, 2
- movs r5, 0xD
- negs r5, r5
- ands r5, r4
- orrs r5, r0
- strb r5, [r7, 0x6]
- mov r0, r9
- ldrb r4, [r0, 0x2]
- ands r4, r6
- lsls r4, 4
- movs r0, 0x31
- negs r0, r0
- ands r0, r5
- orrs r0, r4
- strb r0, [r7, 0x6]
- mov r5, sp
- mov r6, r9
- ldrb r4, [r6, 0x3]
- lsls r4, 6
- movs r6, 0x3F
- ands r0, r6
- orrs r0, r4
- strb r0, [r5, 0x6]
- mov r4, r9
- ldrb r0, [r4, 0x4]
- mov r5, r8
- ands r0, r5
- ldrb r5, [r7, 0x7]
- mov r4, r10
- ands r4, r5
- orrs r4, r0
- strb r4, [r7, 0x7]
- mov r6, r9
- ldrb r0, [r6, 0x5]
- mov r5, r8
- ands r0, r5
- lsls r0, 2
- movs r5, 0xD
- negs r5, r5
- ands r5, r4
- orrs r5, r0
- strb r5, [r7, 0x7]
- ldrb r4, [r6, 0x6]
- mov r6, r8
- ands r4, r6
- lsls r4, 4
- movs r0, 0x31
- negs r0, r0
- ands r0, r5
- orrs r0, r4
- strb r0, [r7, 0x7]
- mov r5, sp
- mov r6, r9
- ldrb r4, [r6, 0x7]
- lsls r4, 6
- movs r6, 0x3F
- ands r0, r6
- orrs r0, r4
- strb r0, [r5, 0x7]
- mov r8, sp
- mov r0, r9
- ldrb r4, [r0, 0x8]
- movs r7, 0x3
- adds r0, r7, 0
- ands r0, r4
- mov r4, r8
- ldrb r5, [r4, 0x8]
- mov r4, r10
- ands r4, r5
- orrs r4, r0
- mov r5, r8
- strb r4, [r5, 0x8]
- mov r6, r9
- ldrb r5, [r6, 0x9]
- adds r0, r7, 0
- ands r0, r5
- lsls r0, 2
- movs r5, 0xD
- negs r5, r5
- ands r5, r4
- orrs r5, r0
- mov r0, r8
- strb r5, [r0, 0x8]
- ldrb r0, [r1]
- adds r4, r7, 0
- ands r4, r0
- lsls r4, 4
- movs r0, 0x31
- negs r0, r0
- ands r0, r5
- orrs r0, r4
- mov r4, r8
- strb r0, [r4, 0x8]
- mov r5, sp
- ldrb r4, [r2]
- lsls r4, 6
- movs r6, 0x3F
- ands r0, r6
- orrs r0, r4
- strb r0, [r5, 0x8]
- ldrb r4, [r3]
- adds r0, r7, 0
- ands r0, r4
- ldrb r4, [r5, 0x9]
- mov r6, r10
- ands r6, r4
- orrs r6, r0
- mov r10, r6
- strb r6, [r5, 0x9]
- ldr r0, [sp, 0x40]
- ldrb r4, [r0]
- adds r0, r7, 0
- ands r0, r4
- lsls r0, 2
- movs r4, 0xD
- negs r4, r4
- ands r6, r4
- orrs r6, r0
- str r6, [sp, 0x10]
- strb r6, [r5, 0x9]
- mov r4, sp
- ldr r5, [sp, 0x44]
- ldrb r0, [r5]
- adds r6, r7, 0
- ands r6, r0
- lsls r0, r6, 4
- subs r7, 0x34
- ldr r5, [sp, 0x10]
- ands r7, r5
- orrs r7, r0
- strb r7, [r4, 0x9]
- mov r5, sp
- ldrb r0, [r1, 0x4]
- movs r6, 0x1
- mov r12, r6
- mov r4, r12
- ands r4, r0
- lsls r4, 6
- movs r0, 0x41
- negs r0, r0
- mov r10, r0
- ands r0, r7
- orrs r0, r4
- strb r0, [r5, 0x9]
- ldrb r4, [r2, 0x4]
- lsls r4, 7
- movs r5, 0x7F
- ands r0, r5
- orrs r0, r4
- mov r4, r8
- strb r0, [r4, 0x9]
- ldrb r4, [r3, 0x4]
- mov r0, r12
- ands r0, r4
- mov r5, r8
- ldrb r4, [r5, 0xA]
- movs r7, 0x2
- negs r7, r7
- adds r5, r7, 0
- ands r5, r4
- orrs r5, r0
- mov r6, r8
- strb r5, [r6, 0xA]
- mov r9, sp
- ldr r4, [sp, 0x40]
- ldrb r0, [r4, 0x4]
- mov r4, r12
- ands r4, r0
- lsls r4, 1
- movs r6, 0x3
- negs r6, r6
- mov r8, r6
- mov r0, r8
- ands r0, r5
- orrs r0, r4
- mov r4, r9
- strb r0, [r4, 0xA]
- ldr r6, [sp, 0x44]
- ldrb r5, [r6, 0x4]
- mov r4, r12
- ands r4, r5
- lsls r4, 2
- movs r5, 0x5
- negs r5, r5
- ands r0, r5
- orrs r0, r4
- mov r4, r9
- strb r0, [r4, 0xA]
- mov r4, sp
- ldrb r1, [r1, 0x8]
- mov r0, r12
- ands r0, r1
- lsls r0, 2
- ldrb r1, [r4, 0xB]
- ands r5, r1
- orrs r5, r0
- strb r5, [r4, 0xB]
- ldrb r1, [r2, 0x8]
- mov r0, r12
- ands r0, r1
- lsls r0, 3
- movs r1, 0x9
- negs r1, r1
- ands r1, r5
- orrs r1, r0
- strb r1, [r4, 0xB]
- ldrb r2, [r3, 0x8]
- mov r0, r12
- ands r0, r2
- lsls r0, 4
- movs r2, 0x11
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0xB]
- mov r3, sp
- ldr r5, [sp, 0x40]
- ldrb r0, [r5, 0x8]
- mov r1, r12
- ands r1, r0
- lsls r1, 5
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xB]
- mov r2, sp
- ldrb r1, [r6, 0x8]
- mov r6, r12
- ands r6, r1
- lsls r1, r6, 6
- mov r3, r10
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0xB]
- ldr r4, [sp, 0x1C]
- lsrs r3, r4, 21
- ldrb r1, [r2, 0xA]
- movs r0, 0x7
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0xA]
- mov r1, sp
- ldr r5, [sp, 0x4C]
- movs r6, 0x1
- ands r5, r6
- lsls r2, r5, 1
- ldrb r0, [r1, 0xB]
- mov r3, r8
- ands r3, r0
- orrs r3, r2
- mov r8, r3
- strb r3, [r1, 0xB]
- mov r0, sp
- ldr r4, [sp, 0x50]
- ands r4, r6
- mov r5, r8
- ands r5, r7
- orrs r5, r4
- strb r5, [r0, 0xB]
- bl sub_800FE50
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8027E30
-
- thumb_func_start sub_8028164
-sub_8028164: @ 8028164
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r0, [sp, 0x1C]
- mov r12, r0
- ldr r1, [sp, 0x20]
- mov r8, r1
- ldr r0, [sp, 0x24]
- mov r9, r0
- adds r2, r7, 0
- adds r2, 0x14
- ldr r4, =gRecvCmds
- ldrh r0, [r4]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _0802819C
- adds r3, r4, 0x2
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _080281A4
-_0802819C:
- movs r0, 0
- b _080282DE
- .pool
-_080281A4:
- ldrb r0, [r3, 0x1]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0xB]
- ldrb r0, [r3, 0x1]
- lsrs r0, 4
- strb r0, [r2, 0xC]
- ldrb r0, [r3, 0x2]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0xD]
- ldrb r0, [r3, 0x2]
- lsrs r0, 4
- strb r0, [r2, 0xE]
- ldrb r0, [r3, 0x3]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0xF]
- ldrb r0, [r3, 0x3]
- lsrs r0, 4
- strb r0, [r2, 0x10]
- ldrb r0, [r3, 0x4]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0x11]
- ldrb r0, [r3, 0x4]
- lsrs r0, 4
- strb r0, [r2, 0x12]
- ldrb r0, [r3, 0x5]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0x13]
- ldrb r0, [r3, 0x5]
- lsrs r0, 4
- strb r0, [r2, 0x14]
- ldrb r0, [r3, 0x1]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r2, 0x15]
- ldrb r0, [r3, 0x6]
- lsls r0, 30
- lsrs r0, 30
- strb r0, [r7, 0x14]
- ldrb r0, [r3, 0x6]
- lsls r0, 28
- lsrs r0, 30
- strb r0, [r2, 0x1]
- ldrb r0, [r3, 0x6]
- lsls r0, 26
- lsrs r0, 30
- strb r0, [r2, 0x2]
- ldrb r0, [r3, 0x6]
- lsrs r0, 6
- strb r0, [r2, 0x3]
- ldrb r0, [r3, 0x7]
- lsls r0, 30
- lsrs r0, 30
- strb r0, [r2, 0x4]
- ldrb r0, [r3, 0x7]
- lsls r0, 28
- lsrs r0, 30
- strb r0, [r2, 0x5]
- ldrb r0, [r3, 0x7]
- lsls r0, 26
- lsrs r0, 30
- strb r0, [r2, 0x6]
- ldrb r0, [r3, 0x7]
- lsrs r0, 6
- strb r0, [r2, 0x7]
- ldrb r0, [r3, 0x8]
- lsls r0, 30
- lsrs r0, 30
- strb r0, [r2, 0x8]
- ldrb r0, [r3, 0x8]
- lsls r0, 28
- lsrs r0, 30
- strb r0, [r2, 0x9]
- ldrb r0, [r3, 0x6]
- lsls r0, 30
- lsrs r0, 30
- strb r0, [r2, 0xA]
- ldrb r0, [r3, 0x8]
- lsls r0, 26
- lsrs r0, 30
- strb r0, [r5]
- ldrb r0, [r3, 0x9]
- lsls r0, 25
- lsrs r0, 31
- strb r0, [r5, 0x4]
- ldrb r0, [r3, 0xB]
- lsls r0, 29
- lsrs r0, 31
- strb r0, [r5, 0x8]
- ldrb r0, [r3, 0x8]
- lsrs r0, 6
- strb r0, [r6]
- ldrb r0, [r3, 0x9]
- lsrs r0, 7
- strb r0, [r6, 0x4]
- ldrb r0, [r3, 0xB]
- lsls r0, 28
- lsrs r0, 31
- strb r0, [r6, 0x8]
- ldrb r0, [r3, 0x9]
- lsls r0, 30
- lsrs r0, 30
- mov r1, r12
- strb r0, [r1]
- ldrb r0, [r3, 0xA]
- lsls r0, 31
- lsrs r0, 31
- strb r0, [r1, 0x4]
- ldrb r0, [r3, 0xB]
- lsls r0, 27
- lsrs r0, 31
- strb r0, [r1, 0x8]
- ldrb r0, [r3, 0x9]
- lsls r0, 28
- lsrs r0, 30
- mov r1, r8
- strb r0, [r1]
- ldrb r0, [r3, 0xA]
- lsls r0, 30
- lsrs r0, 31
- strb r0, [r1, 0x4]
- ldrb r0, [r3, 0xB]
- lsls r0, 26
- lsrs r0, 31
- strb r0, [r1, 0x8]
- ldrb r0, [r3, 0x9]
- lsls r0, 26
- lsrs r0, 30
- mov r1, r9
- strb r0, [r1]
- ldrb r0, [r3, 0xA]
- lsls r0, 29
- lsrs r0, 31
- strb r0, [r1, 0x4]
- ldrb r0, [r3, 0xB]
- lsls r0, 25
- lsrs r0, 31
- strb r0, [r1, 0x8]
- ldrb r0, [r3, 0xA]
- lsrs r0, 3
- ldr r1, [sp, 0x28]
- strb r0, [r1]
- ldrb r0, [r3, 0xB]
- lsls r0, 30
- lsrs r0, 31
- ldr r1, [sp, 0x2C]
- str r0, [r1]
- ldrb r0, [r3, 0xB]
- lsls r0, 31
- lsrs r0, 31
- ldr r1, [sp, 0x30]
- str r0, [r1]
- movs r0, 0x1
-_080282DE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8028164
-
- thumb_func_start sub_80282EC
-sub_80282EC: @ 80282EC
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =0xffffff00
- ldr r1, [sp]
- ands r1, r3
- movs r2, 0x3
- orrs r1, r2
- str r1, [sp]
- ldr r1, [sp, 0x4]
- ands r1, r3
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl sub_800FE50
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80282EC
-
- thumb_func_start sub_8028318
-sub_8028318: @ 8028318
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldr r3, =gRecvCmds
- ldrh r0, [r3]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _0802833C
- lsls r0, r2, 4
- adds r1, r3, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _08028344
-_0802833C:
- movs r0, 0
- b _0802834A
- .pool
-_08028344:
- ldrb r0, [r1, 0x4]
- strb r0, [r4]
- movs r0, 0x1
-_0802834A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8028318
-
- thumb_func_start sub_8028350
-sub_8028350: @ 8028350
- push {lr}
- sub sp, 0x8
- ldr r2, =0xffffff00
- ldr r1, [sp]
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- str r1, [sp]
- str r0, [sp, 0x4]
- mov r0, sp
- bl sub_800FE50
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028350
-
- thumb_func_start sub_8028374
-sub_8028374: @ 8028374
- push {lr}
- adds r2, r0, 0
- ldr r3, =gRecvCmds
- ldrh r0, [r3]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _08028396
- lsls r0, r2, 4
- adds r1, r3, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _080283A0
-_08028396:
- movs r0, 0
- b _080283A2
- .pool
-_080283A0:
- ldr r0, [r1, 0x4]
-_080283A2:
- pop {r1}
- bx r1
- thumb_func_end sub_8028374
-
- thumb_func_start sub_80283A8
-sub_80283A8: @ 80283A8
- push {r4,r5,lr}
- sub sp, 0x18
- movs r5, 0xC0
- lsls r5, 6
- adds r0, r5, 0
- bl AllocZeroed
- adds r4, r0, 0
- ldr r0, =gUnknown_082FB2D8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldr r0, =gUnknown_082FB2E0
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- ldr r0, =gDodrioBerryPkmnGfx
- adds r1, r4, 0
- bl LZ77UnCompWram
- cmp r4, 0
- beq _080283E8
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl Free
-_080283E8:
- add r0, sp, 0x8
- bl LoadSpritePalette
- add r0, sp, 0x10
- bl LoadSpritePalette
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80283A8
-
- thumb_func_start sub_8028408
-sub_8028408: @ 8028408
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x30
- adds r6, r1, 0
- mov r8, r2
- adds r5, r3, 0
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r5, 24
- lsrs r5, 24
- add r1, sp, 0x18
- movs r3, 0
- strh r3, [r1]
- ldrb r2, [r0]
- mov r0, sp
- adds r0, 0x1A
- strh r2, [r0]
- ldr r0, =gUnknown_082FB1E0
- str r0, [sp, 0x1C]
- ldr r0, =gUnknown_082FB228
- str r0, [sp, 0x20]
- str r3, [sp, 0x24]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [sp, 0x28]
- ldr r0, =sub_80284A8
- str r0, [sp, 0x2C]
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- movs r0, 0x4
- bl AllocZeroed
- ldr r1, =gUnknown_02022C9C
- mov r2, r8
- lsls r4, r2, 2
- adds r4, r1
- str r0, [r4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8028F14
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x88
- movs r3, 0x3
- bl CreateSprite
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- movs r0, 0x1
- mov r1, r8
- bl sub_8028654
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028408
-
- thumb_func_start sub_80284A8
-sub_80284A8: @ 80284A8
- push {lr}
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- cmp r1, 0x1
- beq _080284BC
- cmp r1, 0x1
- ble _080284C6
- cmp r1, 0x2
- beq _080284C2
- b _080284C6
-_080284BC:
- bl sub_802853C
- b _080284C6
-_080284C2:
- bl sub_80285AC
-_080284C6:
- pop {r0}
- bx r0
- thumb_func_end sub_80284A8
-
- thumb_func_start sub_80284CC
-sub_80284CC: @ 80284CC
- push {lr}
- bl GetMultiplayerId
- ldr r1, =gUnknown_02022C9C
- lsls r0, 24
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r2, [r0, 0x34]
- strh r2, [r0, 0x36]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80284CC
-
- thumb_func_start sub_8028504
-sub_8028504: @ 8028504
- push {lr}
- bl GetMultiplayerId
- ldr r1, =gUnknown_02022C9C
- lsls r0, 24
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r2, 0
- movs r1, 0x2
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r2, [r0, 0x34]
- strh r2, [r0, 0x36]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028504
-
- thumb_func_start sub_802853C
-sub_802853C: @ 802853C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r2, r0, 16
- lsrs r0, 31
- adds r0, r2, r0
- asrs r1, r0, 1
- adds r0, r1, 0
- cmp r1, 0
- bge _08028558
- adds r0, r1, 0x3
-_08028558:
- asrs r0, 2
- lsls r0, 2
- subs r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- cmp r2, 0x2
- ble _080285A2
- cmp r0, 0x2
- bgt _0802856E
- cmp r0, 0x1
- bge _08028572
-_0802856E:
- movs r0, 0x1
- b _08028574
-_08028572:
- movs r0, 0xFF
-_08028574:
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x27
- ble _080285A2
- movs r0, 0
- strh r0, [r4, 0x2E]
- bl sub_8027650
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8028F14
- strh r0, [r4, 0x20]
-_080285A2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802853C
-
- thumb_func_start sub_80285AC
-sub_80285AC: @ 80285AC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xD
- bl __divsi3
- lsls r0, 16
- asrs r1, r0, 16
- adds r0, r1, 0
- cmp r1, 0
- bge _080285CC
- adds r0, r1, 0x3
-_080285CC:
- asrs r0, 2
- lsls r0, 2
- subs r0, r1, r0
- lsls r0, 24
- lsrs r4, r0, 24
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- movs r1, 0xD
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _080285F0
- cmp r4, 0
- beq _080285F0
- movs r0, 0xD4
- bl PlaySE
-_080285F0:
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0x67
- ble _080285FE
- movs r0, 0
- strh r0, [r5, 0x2E]
- movs r4, 0
-_080285FE:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_80286B4
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80285AC
-
- thumb_func_start sub_8028614
-sub_8028614: @ 8028614
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _08028646
- ldr r6, =gUnknown_02022C9C
-_08028622:
- lsls r0, r4, 2
- adds r0, r6
- ldr r0, [r0]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- cmp r0, 0
- beq _0802863C
- bl DestroySpriteAndFreeResources
-_0802863C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08028622
-_08028646:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028614
-
- thumb_func_start sub_8028654
-sub_8028654: @ 8028654
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, =gSprites
- ldr r2, =gUnknown_02022C9C
- lsrs r1, 22
- adds r1, r2
- ldr r1, [r1]
- ldrh r1, [r1]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r3, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2]
- bx lr
- .pool
- thumb_func_end sub_8028654
-
- thumb_func_start sub_802868C
-sub_802868C: @ 802868C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r4, 0
- cmp r4, r5
- bcs _080286AE
-_0802869C:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8028654
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0802869C
-_080286AE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802868C
-
- thumb_func_start sub_80286B4
-sub_80286B4: @ 80286B4
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_02022C9C
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ldrh r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, =gSprites
- adds r0, r2
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80286B4
-
- thumb_func_start nullsub_15
-nullsub_15: @ 80286E0
- bx lr
- thumb_func_end nullsub_15
-
- thumb_func_start sub_80286E4
-sub_80286E4: @ 80286E4
- push {r4-r7,lr}
- movs r4, 0
- ldr r0, =gSprites
- mov r12, r0
- movs r6, 0
- ldr r5, =gUnknown_02022CF4
-_080286F0:
- ldr r3, [r5]
- lsls r1, r4, 1
- adds r0, r3, 0
- adds r0, 0x2A
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- lsls r0, r4, 4
- adds r0, 0x30
- strh r0, [r1, 0x20]
- lsls r2, r4, 3
- movs r7, 0x8
- negs r7, r7
- adds r0, r7, 0
- subs r0, r2
- strh r0, [r1, 0x22]
- adds r3, 0xC
- adds r3, r4
- strb r6, [r3]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080286F0
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80286E4
-
- thumb_func_start sub_8028734
-sub_8028734: @ 8028734
- push {r4-r6,lr}
- sub sp, 0x28
- movs r4, 0xC0
- lsls r4, 1
- adds r0, r4, 0
- bl AllocZeroed
- adds r6, r0, 0
- ldr r0, =gUnknown_082FB2E8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- ldr r0, =gDodrioBerryStatusGfx
- adds r1, r6, 0
- bl LZ77UnCompWram
- cmp r6, 0
- beq _080287C4
- str r6, [sp, 0x18]
- add r5, sp, 0x18
- movs r0, 0x80
- lsls r0, 9
- orrs r0, r4
- str r0, [r5, 0x4]
- mov r1, sp
- ldr r0, =gUnknown_082FB2F0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r4, =gUnknown_02022CF4
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4]
- adds r0, r5, 0
- bl LoadSpriteSheet
- add r0, sp, 0x20
- bl LoadSpritePalette
- movs r4, 0
-_0802878A:
- lsls r1, r4, 20
- movs r0, 0xC0
- lsls r0, 14
- adds r1, r0
- asrs r1, 16
- lsls r0, r4, 3
- movs r3, 0x8
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 16
- asrs r2, 16
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- ldr r1, =gUnknown_02022CF4
- ldr r1, [r1]
- lsls r2, r4, 1
- adds r1, 0x2A
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _0802878A
-_080287C4:
- adds r0, r6, 0
- bl Free
- add sp, 0x28
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028734
-
- thumb_func_start sub_80287E4
-sub_80287E4: @ 80287E4
- push {r4,r5,lr}
- movs r4, 0
-_080287E8:
- ldr r5, =gUnknown_02022CF4
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- cmp r0, 0
- beq _08028806
- bl DestroySpriteAndFreeResources
-_08028806:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080287E8
- ldr r0, [r5]
- bl Free
- movs r0, 0
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80287E4
-
- thumb_func_start sub_8028828
-sub_8028828: @ 8028828
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r3, 0
- movs r6, 0
- ldr r0, =gUnknown_02022CF4
- mov r9, r0
-_0802883A:
- mov r7, r9
- ldr r2, [r7]
- lsls r5, r6, 1
- adds r0, r2, 0
- adds r0, 0x2A
- adds r0, r5
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r4, r0, r1
- adds r0, r2, 0
- adds r0, 0x16
- adds r0, r5
- movs r1, 0x2
- strh r1, [r0]
- adds r0, r2, 0
- adds r0, 0xC
- adds r2, r0, r6
- ldrb r1, [r2]
- cmp r1, 0
- beq _08028870
- movs r7, 0x22
- ldrsh r0, [r4, r7]
- cmp r0, 0x8
- beq _080288A6
-_08028870:
- movs r3, 0x1
- movs r7, 0x22
- ldrsh r0, [r4, r7]
- cmp r0, 0x8
- bne _08028896
- cmp r1, 0
- bne _080288A6
- strb r3, [r2]
- mov r1, r9
- ldr r0, [r1]
- adds r0, 0x16
- adds r0, r5
- ldr r1, =0x0000fff0
- strh r1, [r0]
- movs r0, 0x24
- str r3, [sp]
- bl PlaySE
- ldr r3, [sp]
-_08028896:
- mov r7, r9
- ldr r0, [r7]
- adds r0, 0x16
- adds r0, r5
- ldrh r0, [r0]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_080288A6:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x9
- bls _0802883A
- cmp r3, 0
- bne _080288C4
- movs r0, 0x1
- b _080288C6
- .pool
-_080288C4:
- movs r0, 0
-_080288C6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8028828
-
- thumb_func_start sub_80288D4
-sub_80288D4: @ 80288D4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xA
- bls _08028910
- movs r4, 0
-_080288E0:
- ldr r0, =gUnknown_02022CF4
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080288E0
- b _080289DA
- .pool
-_08028910:
- movs r4, 0
- movs r0, 0xA
- subs r0, r5
- cmp r4, r0
- bge _080289D6
- ldr r6, =gSprites
-_0802891C:
- cmp r5, 0x6
- bls _08028984
- ldr r0, =gUnknown_02022CF4
- ldr r2, [r0]
- ldr r1, =0x0000fffa
- adds r0, r1, 0
- ldrh r1, [r2, 0x3E]
- adds r0, r1
- adds r0, r5
- movs r1, 0
- strh r0, [r2, 0x3E]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bls _0802894C
- strh r1, [r2, 0x3E]
- b _0802899E
- .pool
-_0802894C:
- cmp r0, 0xA
- bls _0802896A
- lsls r1, r4, 1
- adds r0, r2, 0
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
- b _0802899E
-_0802896A:
- lsls r1, r4, 1
- adds r0, r2, 0
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
- b _0802899E
-_08028984:
- ldr r0, =gUnknown_02022CF4
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
-_0802899E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0xA
- subs r0, r5
- cmp r4, r0
- blt _0802891C
- b _080289D6
- .pool
-_080289B4:
- ldr r0, =gUnknown_02022CF4
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x2A
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080289D6:
- cmp r4, 0x9
- bls _080289B4
-_080289DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80288D4
-
- thumb_func_start sub_80289E8
-sub_80289E8: @ 80289E8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r7, =gSprites
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r6, 0x5
- negs r6, r6
- ldr r5, =gUnknown_02022CF4
-_080289FE:
- ldr r0, [r5]
- lsls r1, r3, 1
- adds r0, 0x2A
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x9
- bls _080289FE
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80289E8
-
- thumb_func_start sub_8028A34
-sub_8028A34: @ 8028A34
- push {r4,r5,lr}
- sub sp, 0x10
- movs r5, 0x90
- lsls r5, 3
- adds r0, r5, 0
- bl AllocZeroed
- adds r4, r0, 0
- ldr r0, =gUnknown_082FB314
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldr r0, =gDodrioBerrySpritesGfx
- adds r1, r4, 0
- bl LZ77UnCompWram
- cmp r4, 0
- beq _08028A6A
- str r4, [sp]
- movs r0, 0x80
- lsls r0, 10
- orrs r0, r5
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
-_08028A6A:
- add r0, sp, 0x8
- bl LoadSpritePalette
- adds r0, r4, 0
- bl Free
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028A34
-
- thumb_func_start sub_8028A88
-sub_8028A88: @ 8028A88
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x30
- mov r1, sp
- ldr r0, =gUnknown_082FB324
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- add r2, sp, 0x18
- adds r1, r2, 0
- ldr r0, =gUnknown_082FB33C
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- movs r5, 0
- mov r9, r2
-_08028AB0:
- movs r0, 0x4
- bl AllocZeroed
- ldr r1, =gUnknown_02022CB8
- lsls r4, r5, 2
- adds r4, r1
- str r0, [r4]
- lsls r0, r5, 3
- lsls r1, r5, 4
- adds r1, r0
- mov r0, sp
- movs r2, 0x8
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8028BF8
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xA
- bls _08028AB0
- movs r5, 0
- ldr r7, =gUnknown_02022CE4
- ldr r4, =gUnknown_082FB31C
- mov r8, r4
-_08028AF0:
- movs r0, 0x4
- bl AllocZeroed
- lsls r1, r5, 2
- adds r4, r1, r7
- str r0, [r4]
- adds r6, r1, 0
- cmp r5, 0x3
- bne _08028B2C
- mov r0, r8
- movs r2, 0x6
- ldrsh r1, [r0, r2]
- mov r0, r9
- movs r2, 0x31
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7, 0xC]
- b _08028B40
- .pool
-_08028B2C:
- lsls r0, r5, 1
- add r0, r8
- movs r3, 0
- ldrsh r1, [r0, r3]
- mov r0, r9
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
-_08028B40:
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r6, r7
- ldr r0, [r0]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- adds r1, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08028AF0
- movs r0, 0x1
- bl sub_8028C30
- add sp, 0x30
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028A88
-
- thumb_func_start sub_8028B80
-sub_8028B80: @ 8028B80
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gUnknown_02022CB8
-_08028B86:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- cmp r0, 0
- beq _08028BA0
- bl DestroySprite
-_08028BA0:
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xA
- bls _08028B86
- movs r5, 0
- ldr r6, =gUnknown_02022CE4
-_08028BB8:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- cmp r0, 0
- beq _08028BD2
- bl DestroySprite
-_08028BD2:
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08028BB8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028B80
-
- thumb_func_start sub_8028BF8
-sub_8028BF8: @ 8028BF8
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gSprites
- ldr r2, =gUnknown_02022CB8
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_8028BF8
-
- thumb_func_start sub_8028C30
-sub_8028C30: @ 8028C30
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r7, =gSprites
- ldr r6, =gUnknown_02022CE4
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_08028C46:
- lsls r0, r3, 2
- adds r0, r6
- ldr r0, [r0]
- ldrh r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _08028C46
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028C30
-
- thumb_func_start sub_8028C7C
-sub_8028C7C: @ 8028C7C
- lsls r0, 24
- lsls r1, 24
- ldr r3, =gSprites
- ldr r2, =gUnknown_02022CB8
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ldrh r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- lsrs r1, 21
- strh r1, [r0, 0x22]
- bx lr
- .pool
- thumb_func_end sub_8028C7C
-
- thumb_func_start sub_8028CA4
-sub_8028CA4: @ 8028CA4
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_02022CB8
- lsrs r0, 14
- adds r0, r2
- ldr r0, [r0]
- ldrh r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, =gSprites
- adds r0, r2
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028CA4
-
- thumb_func_start sub_8028CD0
-sub_8028CD0: @ 8028CD0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, 0x32
- strh r1, [r2, 0x20]
- movs r0, 0x32
- strh r0, [r2, 0x22]
- bx lr
- .pool
- thumb_func_end sub_8028CD0
-
- thumb_func_start sub_8028CF4
-sub_8028CF4: @ 8028CF4
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r0, 0x42
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- beq _08028D36
- movs r3, 0
- ldr r7, =gUnknown_082FB354
- ldr r6, =gUnknown_02022CB0
- movs r5, 0
-_08028D0A:
- lsls r0, r3, 2
- adds r2, r0, r6
- ldr r1, [r2]
- ldrh r0, [r1, 0x2]
- adds r0, 0x1
- strh r0, [r1, 0x2]
- adds r1, r3, r7
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1]
- cmp r0, r1
- bls _08028D2C
- ldrh r0, [r4, 0x20]
- subs r0, 0x1
- strh r0, [r4, 0x20]
- ldr r0, [r2]
- strh r5, [r0, 0x2]
-_08028D2C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bls _08028D0A
-_08028D36:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028CF4
-
- thumb_func_start sub_8028D44
-sub_8028D44: @ 8028D44
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- movs r4, 0x80
- lsls r4, 3
- adds r0, r4, 0
- bl AllocZeroed
- adds r6, r0, 0
- ldr r0, =gUnknown_082FB360
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- ldr r0, =gDodrioBerryPlatformGfx
- adds r1, r6, 0
- bl LZ77UnCompWram
- cmp r6, 0
- beq _08028DD2
- str r6, [sp, 0x18]
- add r0, sp, 0x18
- movs r1, 0xA0
- lsls r1, 11
- orrs r1, r4
- str r1, [r0, 0x4]
- mov r2, sp
- ldr r1, =gUnknown_082FB368
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- bl LoadSpriteSheet
- add r0, sp, 0x20
- bl LoadSpritePalette
- movs r5, 0
- ldr r7, =gUnknown_082FB356
- adds r0, r7, 0x2
- mov r9, r0
- ldr r1, =gUnknown_02022CB0
- mov r8, r1
-_08028D9E:
- movs r0, 0x4
- bl AllocZeroed
- lsls r2, r5, 2
- mov r3, r8
- adds r4, r2, r3
- str r0, [r4]
- adds r0, r2, r7
- movs r3, 0
- ldrsh r1, [r0, r3]
- add r2, r9
- movs r0, 0
- ldrsh r2, [r2, r0]
- mov r0, sp
- movs r3, 0x4
- bl CreateSprite
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _08028D9E
-_08028DD2:
- adds r0, r6, 0
- bl Free
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028D44
-
- thumb_func_start sub_8028DFC
-sub_8028DFC: @ 8028DFC
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, =gUnknown_02022CB0
- mov r12, r0
- ldr r4, =gUnknown_082FB356
- adds r7, r4, 0x2
- ldr r6, =gSprites
- movs r5, 0x1
-_08028E0C:
- lsls r2, r3, 2
- mov r1, r12
- adds r0, r2, r1
- ldr r0, [r0]
- ldrh r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r0, r1, 0
- adds r0, 0x42
- strh r5, [r0]
- adds r0, r2, r4
- ldrh r0, [r0]
- strh r0, [r1, 0x20]
- adds r2, r7
- ldrh r0, [r2]
- strh r0, [r1, 0x22]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bls _08028E0C
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028DFC
-
- thumb_func_start sub_8028E4C
-sub_8028E4C: @ 8028E4C
- push {r4,r5,lr}
- movs r2, 0
- ldr r5, =gUnknown_02022CB0
- ldr r4, =gSprites
- movs r3, 0
-_08028E56:
- lsls r0, r2, 2
- adds r0, r5
- ldr r0, [r0]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x42
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bls _08028E56
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028E4C
-
- thumb_func_start sub_8028E84
-sub_8028E84: @ 8028E84
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gUnknown_02022CB0
-_08028E8A:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- cmp r0, 0
- beq _08028EA4
- bl DestroySprite
-_08028EA4:
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _08028E8A
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028E84
-
- thumb_func_start sub_8028EC8
-sub_8028EC8: @ 8028EC8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- ldr r7, =gSprites
- ldr r6, =gUnknown_02022CB0
- movs r1, 0x1
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_08028EDE:
- lsls r0, r3, 2
- adds r0, r6
- ldr r0, [r0]
- ldrh r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bls _08028EDE
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8028EC8
-
- thumb_func_start sub_8028F14
-sub_8028F14: @ 8028F14
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0
- subs r0, r1, 0x1
- cmp r0, 0x4
- bhi _08028FC6
- lsls r0, 2
- ldr r1, =_08028F34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08028F34:
- .4byte _08028FB4
- .4byte _08028F48
- .4byte _08028F52
- .4byte _08028F66
- .4byte _08028F8E
-_08028F48:
- cmp r2, 0
- beq _08028F7E
- cmp r2, 0x1
- bne _08028FC6
- b _08028F82
-_08028F52:
- cmp r2, 0x1
- beq _08028FB8
- cmp r2, 0x1
- bgt _08028F60
- cmp r2, 0
- beq _08028FB4
- b _08028FC6
-_08028F60:
- cmp r2, 0x2
- bne _08028FC6
- b _08028FC4
-_08028F66:
- cmp r2, 0x1
- beq _08028F82
- cmp r2, 0x1
- bgt _08028F74
- cmp r2, 0
- beq _08028F7E
- b _08028FC6
-_08028F74:
- cmp r2, 0x2
- beq _08028F86
- cmp r2, 0x3
- beq _08028F8A
- b _08028FC6
-_08028F7E:
- movs r3, 0xC
- b _08028FC6
-_08028F82:
- movs r3, 0x12
- b _08028FC6
-_08028F86:
- movs r3, 0x18
- b _08028FC6
-_08028F8A:
- movs r3, 0x6
- b _08028FC6
-_08028F8E:
- cmp r2, 0x4
- bhi _08028FC6
- lsls r0, r2, 2
- ldr r1, =_08028FA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08028FA0:
- .4byte _08028FB4
- .4byte _08028FB8
- .4byte _08028FBC
- .4byte _08028FC0
- .4byte _08028FC4
-_08028FB4:
- movs r3, 0xF
- b _08028FC6
-_08028FB8:
- movs r3, 0x15
- b _08028FC6
-_08028FBC:
- movs r3, 0x1B
- b _08028FC6
-_08028FC0:
- movs r3, 0x3
- b _08028FC6
-_08028FC4:
- movs r3, 0x9
-_08028FC6:
- lsls r0, r3, 3
- pop {r1}
- bx r1
- thumb_func_end sub_8028F14
-
- thumb_func_start sub_8028FCC
-sub_8028FCC: @ 8028FCC
- push {r4,lr}
- movs r4, 0
-_08028FD0:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8028BF8
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8028C7C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xA
- bls _08028FD0
- movs r0, 0
- bl sub_80289E8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8028FCC
-
- thumb_func_start sub_8028FF8
-sub_8028FF8: @ 8028FF8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl GetWindowFrameTilesPal
- ldr r1, [r0]
- movs r2, 0x90
- lsls r2, 1
- movs r0, 0
- movs r3, 0x1
- bl LoadBgTiles
- adds r0, r4, 0
- bl GetWindowFrameTilesPal
- ldr r0, [r0, 0x4]
- movs r1, 0xA0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8028FF8
-
- thumb_func_start sub_802902C
-sub_802902C: @ 802902C
- push {lr}
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xB0
- bl LoadUserWindowBorderGfx_
- pop {r0}
- bx r0
- thumb_func_end sub_802902C
-
- thumb_func_start sub_802903C
-sub_802903C: @ 802903C
- ldr r3, =gUnknown_02022CF8
- ldr r0, [r3]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r1, =0x00003014
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r1, 0x4
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r1, 0x8
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r1, 0x4
- adds r0, r1
- strb r2, [r0]
- bx lr
- .pool
- thumb_func_end sub_802903C
-
- thumb_func_start sub_8029074
-sub_8029074: @ 8029074
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r6, 0xA
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4, 0x3]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x3
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- str r5, [sp]
- ldrb r0, [r4, 0x4]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x4
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- str r5, [sp]
- ldrb r0, [r4, 0x4]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x6
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x4]
- ldrb r0, [r4, 0x2]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x7
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- ldrb r3, [r4, 0x4]
- ldrb r0, [r4, 0x2]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4, 0x3]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x8
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x4]
- ldrb r4, [r4, 0x2]
- adds r3, r4
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x9
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8029074
-
- thumb_func_start sub_8029174
-sub_8029174: @ 8029174
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r6, 0xB
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0xA
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4, 0x3]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0xB
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- subs r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0xC
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- str r5, [sp]
- ldrb r0, [r4, 0x4]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0xD
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x2]
- str r5, [sp]
- ldrb r0, [r4, 0x4]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0xF
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x4]
- ldrb r0, [r4, 0x2]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x10
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x1]
- ldrb r3, [r4, 0x4]
- ldrb r0, [r4, 0x2]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4, 0x3]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x11
- bl FillBgTilemapBufferRect
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x1]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r4, 0x4]
- ldrb r4, [r4, 0x2]
- adds r3, r4
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x12
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8029174
-
- thumb_func_start sub_8029274
-sub_8029274: @ 8029274
- push {r4,lr}
- ldr r4, =gUnknown_02022CF8
- str r0, [r4]
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r3, =0x00003014
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, =0x00003018
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r4]
- adds r3, 0xC
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- adds r1, 0xC
- adds r0, r1
- strb r2, [r0]
- ldr r0, =sub_8029314
- movs r1, 0x3
- bl CreateTask
- ldr r1, [r4]
- ldr r2, =0x00003004
- adds r1, r2
- strb r0, [r1]
- ldr r0, =sub_8029338
- bl sub_802A72C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8029274
-
- thumb_func_start sub_80292D4
-sub_80292D4: @ 80292D4
- push {lr}
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- thumb_func_end sub_80292D4
-
- thumb_func_start sub_80292E0
-sub_80292E0: @ 80292E0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r5, =gUnknown_082FB40C
- adds r7, r5, 0x4
-_080292EC:
- lsls r1, r4, 3
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, r6
- bne _080292FE
- adds r0, r1, r7
- ldr r0, [r0]
- bl sub_802A72C
-_080292FE:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080292EC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80292E0
-
- thumb_func_start sub_8029314
-sub_8029314: @ 8029314
- push {lr}
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0802932E
- bl sub_802A75C
- bl _call_via_r0
-_0802932E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8029314
-
- thumb_func_start sub_8029338
-sub_8029338: @ 8029338
- push {lr}
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r2, =0x00003014
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _08029430
- lsls r0, 2
- ldr r1, =_08029360
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08029360:
- .4byte _08029374
- .4byte _0802937A
- .4byte _08029394
- .4byte _080293D8
- .4byte _08029404
-_08029374:
- bl sub_802A7A8
- b _08029414
-_0802937A:
- bl sub_802A8E8
- cmp r0, 0x1
- bne _0802943A
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r2, =0x00003014
- adds r1, r2
- b _0802941C
- .pool
-_08029394:
- ldr r1, =gDodrioBerryBgTilemap1
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r1, =gDodrioBerryBgTilemap2Left
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r1, =gDodrioBerryBgTilemap2Right
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _08029414
- .pool
-_080293D8:
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r2, =0x00003014
- adds r1, r2
- b _0802941C
- .pool
-_08029404:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl sub_8028FF8
- bl sub_802902C
-_08029414:
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003014
- adds r1, r0
-_0802941C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802943A
- .pool
-_08029430:
- movs r2, 0xC0
- lsls r2, 6
- adds r1, r2
- movs r0, 0x1
- str r0, [r1]
-_0802943A:
- pop {r0}
- bx r0
- thumb_func_end sub_8029338
-
- thumb_func_start sub_8029440
-sub_8029440: @ 8029440
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r2, =0x00003014
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _08029488
- cmp r0, 0x1
- bne _08029460
- b _080295EC
-_08029460:
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB4
- bhi _0802946E
- b _0802968E
-_0802946E:
- bl sub_8027650
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- cmp r6, r7
- bcc _0802947E
- b _08029666
-_0802947E:
- b _08029640
- .pool
-_08029488:
- bl sub_8027650
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gUnknown_082FB3C8
- subs r0, r7, 0x1
- lsls r0, 2
- adds r0, r1
- ldr r5, [r0]
- ldr r2, =0xffffff00
- ldr r0, [sp, 0xC]
- ands r0, r2
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 19
- orrs r0, r1
- str r0, [sp, 0xC]
- ldr r0, [sp, 0x10]
- ands r0, r2
- movs r1, 0x2
- orrs r0, r1
- ldr r1, =0xffff00ff
- ands r0, r1
- movs r1, 0xD0
- lsls r1, 4
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- movs r1, 0x98
- lsls r1, 13
- orrs r0, r1
- str r0, [sp, 0x10]
- movs r6, 0
- cmp r6, r7
- bcs _080295B8
- mov r3, sp
- adds r3, 0xC
- str r3, [sp, 0x18]
- mov r10, r4
- ldr r0, =0x00003008
- mov r9, r0
-_080294DC:
- movs r1, 0
- mov r8, r1
- adds r0, r6, 0
- bl sub_8027A48
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl sub_8027660
- adds r1, r0, 0
- movs r0, 0x1
- movs r2, 0x1
- negs r2, r2
- bl GetStringWidth
- movs r1, 0x38
- subs r1, r0
- lsrs r1, 1
- str r1, [sp, 0x14]
- ldrb r0, [r5]
- lsls r0, 8
- ldr r2, =0xffff00ff
- ldr r1, [sp, 0xC]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0xC]
- ldrb r2, [r5, 0x1]
- lsls r2, 16
- ldr r0, =0xff00ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0xC]
- add r0, sp, 0xC
- bl AddWindow
- mov r2, r10
- ldr r1, [r2]
- add r1, r9
- adds r1, r6
- strb r0, [r1]
- ldr r0, [r2]
- add r0, r9
- adds r0, r6
- ldrb r0, [r0]
- bl ClearWindowTilemap
- mov r3, r10
- ldr r0, [r3]
- add r0, r9
- adds r0, r6
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _0802955A
- movs r0, 0x2
- mov r8, r0
-_0802955A:
- adds r0, r4, 0
- bl sub_8027660
- adds r4, r0, 0
- mov r1, r10
- ldr r0, [r1]
- add r0, r9
- adds r0, r6
- ldrb r0, [r0]
- ldr r3, [sp, 0x14]
- lsls r2, r3, 24
- lsrs r2, 24
- mov r3, r8
- lsls r1, r3, 1
- add r1, r8
- ldr r3, =gUnknown_082FB380
- adds r1, r3
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- mov r2, r10
- ldr r0, [r2]
- add r0, r9
- adds r0, r6
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r3, [sp, 0x18]
- ldrh r0, [r3, 0x6]
- adds r0, 0xE
- strh r0, [r3, 0x6]
- add r0, sp, 0xC
- bl sub_8029174
- adds r5, 0x4
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r7
- bcc _080294DC
-_080295B8:
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003014
- adds r1, r0
- b _0802962A
- .pool
-_080295EC:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0802968E
- bl sub_8027650
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- cmp r6, r7
- bcs _0802961C
-_08029604:
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- adds r0, r6
- ldrb r0, [r0]
- bl PutWindowTilemap
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r7
- bcc _08029604
-_0802961C:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r2, =0x00003014
- adds r1, r2
-_0802962A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802968E
- .pool
-_08029640:
- ldr r5, =gUnknown_02022CF8
- ldr r0, [r5]
- ldr r4, =0x00003008
- adds r0, r4
- adds r0, r6
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, r4
- adds r0, r6
- ldrb r0, [r0]
- bl RemoveWindow
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r7
- bcc _08029640
-_08029666:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- movs r3, 0xC0
- lsls r3, 6
- adds r0, r3
- movs r1, 0x1
- str r1, [r0]
-_0802968E:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8029440
-
- thumb_func_start sub_80296A8
-sub_80296A8: @ 80296A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x6C
- lsls r0, 24
- movs r1, 0
- mov r8, r1
- movs r6, 0
- lsrs r7, r0, 24
- add r4, sp, 0x2C
- ldr r1, =gUnknown_082FB45C
- adds r0, r4, 0
- movs r2, 0x5
- bl memcpy
- movs r5, 0
- cmp r5, r7
- bcs _080296F8
- add r4, sp, 0x34
-_080296D2:
- mov r0, sp
- adds r0, r5
- adds r0, 0x2C
- strb r5, [r0]
- add r0, sp, 0x5C
- adds r1, r5, 0
- bl sub_802793C
- lsls r2, r5, 3
- adds r2, r4, r2
- ldr r0, [sp, 0x5C]
- ldr r1, [sp, 0x60]
- str r0, [r2]
- str r1, [r2, 0x4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _080296D2
-_080296F8:
- bl sub_8027748
- cmp r0, 0
- beq _0802972E
-_08029700:
- movs r5, 0
- cmp r5, r7
- bcs _08029728
- add r2, sp, 0x34
- add r1, sp, 0x2C
-_0802970A:
- lsls r0, r5, 3
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, r8
- bne _0802971E
- adds r0, r1, r6
- strb r5, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0802971E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _0802970A
-_08029728:
- mov r8, r6
- cmp r6, r7
- bcc _08029700
-_0802972E:
- movs r5, 0
- ldr r4, =gText_SpacePoints
- cmp r5, r7
- bcs _08029754
- add r1, sp, 0x34
- add r6, sp, 0x38
- subs r3, r7, 0x1
-_0802973C:
- lsls r2, r5, 3
- adds r0, r6, r2
- ldr r0, [r0]
- cmp r0, 0
- bne _0802974A
- adds r0, r1, r2
- strb r3, [r0]
-_0802974A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _0802973C
-_08029754:
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- movs r1, 0xD8
- subs r1, r0
- str r1, [sp, 0x64]
- movs r5, 0
- cmp r5, r7
- bcs _08029860
- mov r2, sp
- adds r2, 0x34
- str r2, [sp, 0x68]
- ldr r3, =0x00003009
- mov r10, r3
-_08029774:
- movs r0, 0
- mov r8, r0
- mov r0, sp
- adds r0, r5
- adds r0, 0x2C
- ldrb r0, [r0]
- adds r4, r0, 0
- lsls r1, r4, 3
- add r0, sp, 0x38
- adds r0, r1
- ldr r0, [r0]
- mov r9, r0
- ldr r2, =gUnknown_02022CF8
- ldr r0, [r2]
- add r0, r10
- ldrb r0, [r0]
- ldr r2, =gUnknown_082FB3DC
- ldr r3, [sp, 0x68]
- adds r1, r3, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r2, [r1]
- ldr r3, =gUnknown_082FB402
- lsls r1, r5, 1
- adds r1, r3
- ldrb r6, [r1]
- str r6, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- mov r3, r8
- str r3, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl AddTextPrinterParameterized
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080297CC
- movs r0, 0x2
- mov r8, r0
-_080297CC:
- adds r0, r4, 0
- bl sub_8027660
- adds r3, r0, 0
- ldr r1, =gUnknown_02022CF8
- ldr r0, [r1]
- add r0, r10
- ldrb r0, [r0]
- mov r2, r8
- lsls r1, r2, 1
- add r1, r8
- ldr r2, =gUnknown_082FB380
- adds r1, r2
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r1, 0x1
- movs r2, 0x1C
- adds r3, r6, 0
- bl AddTextPrinterParameterized3
- add r0, sp, 0xC
- mov r1, r9
- movs r2, 0
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0x1
- negs r2, r2
- bl GetStringWidth
- adds r3, r0, 0
- ldr r2, =gUnknown_02022CF8
- ldr r0, [r2]
- add r0, r10
- ldrb r0, [r0]
- ldr r1, [sp, 0x64]
- subs r3, r1, r3
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- movs r2, 0xFF
- str r2, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- add r2, sp, 0xC
- bl AddTextPrinterParameterized
- ldr r2, =gUnknown_02022CF8
- ldr r0, [r2]
- add r0, r10
- ldrb r0, [r0]
- ldr r1, [sp, 0x64]
- lsls r3, r1, 24
- str r6, [sp]
- movs r2, 0xFF
- str r2, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- ldr r2, =gText_SpacePoints
- lsrs r3, 24
- bl AddTextPrinterParameterized
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _08029774
-_08029860:
- add sp, 0x6C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80296A8
-
- thumb_func_start sub_802988C
-sub_802988C: @ 802988C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- bl sub_8027650
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- ldr r6, =gUnknown_02022CF8
- ldr r1, [r6]
- ldr r2, =0x00003014
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xB
- bls _080298B2
- b _08029FA8
-_080298B2:
- lsls r0, 2
- ldr r1, =_080298C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080298C8:
- .4byte _080298F8
- .4byte _08029914
- .4byte _0802996C
- .4byte _08029B6C
- .4byte _08029BB8
- .4byte _08029BFC
- .4byte _08029C60
- .4byte _08029C9C
- .4byte _08029CE0
- .4byte _08029DA0
- .4byte _08029F08
- .4byte _08029F5C
-_080298F8:
- bl sub_802784C
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x0000301c
- adds r2, r1, r0
- movs r0, 0
- strh r0, [r2]
- b _08029F8A
- .pool
-_08029914:
- ldr r6, =gUnknown_082F7BBC
- adds r0, r6, 0
- bl AddWindow
- ldr r4, =gUnknown_02022CF8
- ldr r1, [r4]
- ldr r2, =0x00003008
- mov r8, r2
- add r1, r8
- strb r0, [r1]
- movs r0, 0x8
- adds r0, r6
- mov r9, r0
- bl AddWindow
- ldr r1, [r4]
- ldr r5, =0x00003009
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r4]
- add r0, r8
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl ClearWindowTilemap
- adds r0, r6, 0
- bl sub_8029174
- mov r0, r9
- bl sub_8029174
- b _08029F88
- .pool
-_0802996C:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r5, =0x00003008
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldr r1, =0x00003009
- mov r9, r1
- add r0, r9
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, =gText_BerryPickingResults
- mov r8, r2
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- mov r1, r8
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0xE0
- subs r0, r1
- lsrs r3, r0, 1
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r6, 0xFF
- str r6, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- mov r2, r8
- bl AddTextPrinterParameterized
- ldr r0, [r4]
- add r0, r9
- ldrb r0, [r0]
- ldr r2, =gText_10P30P50P50P
- movs r1, 0x11
- str r1, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x44
- bl AddTextPrinterParameterized
- mov r9, r5
- ldr r0, [sp, 0xC]
- cmp r9, r0
- bcc _080299E2
- b _08029B2A
-_080299E2:
- movs r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r9, r0
- bne _080299F2
- movs r4, 0x2
-_080299F2:
- mov r0, r9
- bl sub_8027660
- adds r6, r0, 0
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r1, =0x00003009
- adds r0, r1
- ldrb r0, [r0]
- mov r2, r9
- lsls r5, r2, 1
- ldr r2, =gUnknown_082FB3F8
- adds r1, r5, r2
- ldrb r3, [r1]
- lsls r1, r4, 1
- adds r1, r4
- ldr r2, =gUnknown_082FB380
- adds r1, r2
- str r1, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r1, 0x1
- movs r2, 0
- bl AddTextPrinterParameterized3
- movs r7, 0
- mov r8, r5
- mov r0, r9
- adds r0, 0x1
- str r0, [sp, 0x10]
- ldr r1, =gStringVar4
- mov r10, r1
-_08029A36:
- mov r0, r9
- adds r1, r7, 0
- bl sub_80276A0
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000270f
- bl sub_8027A38
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl sub_802778C
- ldr r1, =0x0000270f
- bl sub_8027A38
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r10
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x1
- negs r2, r2
- bl GetStringWidth
- adds r5, r0, 0
- cmp r6, r4
- bne _08029AE0
- cmp r6, 0
- beq _08029AE0
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- lsls r1, r7, 1
- ldr r2, =gUnknown_082FB3F0
- adds r1, r2
- ldrb r2, [r1]
- subs r2, r5
- lsls r2, 24
- lsrs r2, 24
- ldr r1, =gUnknown_082FB3F8
- add r1, r8
- ldrb r3, [r1]
- ldr r1, =gUnknown_082FB383
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- movs r1, 0x1
- bl AddTextPrinterParameterized3
- b _08029B10
- .pool
-_08029AE0:
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- lsls r1, r7, 1
- ldr r2, =gUnknown_082FB3F0
- adds r1, r2
- ldrb r3, [r1]
- subs r3, r5
- lsls r3, 24
- lsrs r3, 24
- ldr r1, =gUnknown_082FB3F8
- add r1, r8
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- ldr r2, =gStringVar4
- bl AddTextPrinterParameterized
-_08029B10:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _08029A36
- ldr r1, [sp, 0x10]
- lsls r0, r1, 24
- lsrs r0, 24
- mov r9, r0
- ldr r2, [sp, 0xC]
- cmp r9, r2
- bcs _08029B2A
- b _080299E2
-_08029B2A:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r4]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029B6C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08029B90
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- bl PutWindowTilemap
-_08029B90:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl sub_8028C30
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029BB8:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x0000301c
- adds r2, r0, r1
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _08029BD0
- b _08029FF8
-_08029BD0:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08029BDE
- b _08029FF8
-_08029BDE:
- movs r0, 0
- strh r0, [r2]
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl sub_8028C30
- b _08029F88
- .pool
-_08029BFC:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r5, =0x00003008
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldr r1, =0x00003009
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r6, =gText_AnnouncingRankings
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- adds r1, r6, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0xE0
- subs r0, r1
- lsrs r3, r0, 1
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r6, 0
- bl AddTextPrinterParameterized
- b _08029F88
- .pool
-_08029C60:
- ldr r0, [sp, 0xC]
- bl sub_80296A8
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r4]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029C9C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08029CC0
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- bl PutWindowTilemap
-_08029CC0:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029CE0:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x0000301c
- adds r2, r0, r1
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _08029CF8
- b _08029FF8
-_08029CF8:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08029D06
- b _08029FF8
-_08029D06:
- movs r0, 0
- strh r0, [r2]
- movs r0, 0x5
- bl PlaySE
- bl sub_8027748
- ldr r1, =0x00000bb7
- cmp r0, r1
- bhi _08029D3C
- ldr r0, [r4]
- ldr r2, =0x00003014
- adds r0, r2
- movs r1, 0x7F
- strb r1, [r0]
- b _08029D4C
- .pool
-_08029D3C:
- bl StopMapMusic
- ldr r1, [r4]
- ldr r0, =0x00003014
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08029D4C:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x5
- bl FillBgTilemapBufferRect_Palette0
- ldr r5, =gUnknown_02022CF8
- ldr r0, [r5]
- ldr r4, =0x00003009
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r6, =gUnknown_082F7BCC
- adds r0, r6, 0
- bl AddWindow
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- adds r0, r6, 0
- bl sub_8029174
- b _08029FF8
- .pool
-_08029DA0:
- ldr r0, =0x0000016f
- bl PlayNewMapMusic
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r6, =0x00003008
- adds r0, r6
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldr r1, =0x00003009
- mov r10, r1
- add r0, r10
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r5, =gText_AnnouncingPrizes
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- adds r1, r5, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0xE0
- subs r0, r1
- lsrs r3, r0, 1
- ldr r0, [r4]
- adds r0, r6
- ldrb r0, [r0]
- lsls r3, 24
- lsrs r3, 24
- movs r2, 0x1
- mov r9, r2
- str r2, [sp]
- movs r1, 0xFF
- mov r8, r1
- str r1, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- bl AddTextPrinterParameterized
- bl DynamicPlaceholderTextUtil_Reset
- bl sub_802762C
- lsls r0, 16
- lsrs r0, 16
- ldr r5, =gStringVar1
- adds r1, r5, 0
- bl CopyItemName
- movs r0, 0
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r7, =gStringVar4
- ldr r1, =gText_FirstPlacePrize
- adds r0, r7, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldr r0, [r4]
- add r0, r10
- ldrb r0, [r0]
- mov r2, r9
- str r2, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r1, 0x1
- adds r2, r7, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- bl sub_80279C8
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- cmp r4, 0
- beq _08029EC8
- cmp r4, 0x3
- beq _08029EC8
- bl DynamicPlaceholderTextUtil_Reset
- bl sub_802762C
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl CopyItemName
- movs r0, 0
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- cmp r4, 0x2
- bne _08029E9C
- ldr r1, =gText_CantHoldAnyMore
- adds r0, r7, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- b _08029EA8
- .pool
-_08029E9C:
- cmp r6, 0x1
- bne _08029EA8
- ldr r1, =gText_FilledStorageSpace
- adds r0, r7, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
-_08029EA8:
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- ldr r2, =gStringVar4
- movs r1, 0x29
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
-_08029EC8:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r4]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029F08:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08029F2C
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- bl PutWindowTilemap
-_08029F2C:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, =0x0000020b
- movs r1, 0x14
- movs r2, 0xA
- bl FadeOutAndFadeInNewMapMusic
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003014
- adds r1, r0
- b _08029F8E
- .pool
-_08029F5C:
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x0000301c
- adds r2, r0, r1
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bls _08029FF8
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08029FF8
- movs r0, 0
- strh r0, [r2]
- movs r0, 0x5
- bl PlaySE
-_08029F88:
- ldr r1, [r4]
-_08029F8A:
- ldr r2, =0x00003014
- adds r1, r2
-_08029F8E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08029FF8
- .pool
-_08029FA8:
- ldr r5, =0x00003008
- adds r0, r1, r5
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r6]
- ldr r4, =0x00003009
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r6]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- movs r1, 0x1
- str r1, [r0]
-_08029FF8:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802988C
-
- thumb_func_start sub_802A010
-sub_802A010: @ 802A010
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r1, =gUnknown_02022CF8
- ldr r2, [r1]
- ldr r3, =0x00003014
- adds r0, r2, r3
- ldrb r6, [r0]
- adds r7, r1, 0
- cmp r6, 0x1
- beq _0802A0CC
- cmp r6, 0x1
- bgt _0802A040
- cmp r6, 0
- beq _0802A04E
- b _0802A2FC
- .pool
-_0802A040:
- cmp r6, 0x2
- bne _0802A046
- b _0802A194
-_0802A046:
- cmp r6, 0x3
- bne _0802A04C
- b _0802A1D0
-_0802A04C:
- b _0802A2FC
-_0802A04E:
- ldr r0, =gUnknown_082F7BD4
- mov r9, r0
- bl AddWindow
- ldr r1, [r7]
- ldr r4, =0x00003008
- adds r1, r4
- strb r0, [r1]
- movs r1, 0x8
- add r1, r9
- mov r8, r1
- mov r0, r8
- bl AddWindow
- ldr r1, [r7]
- ldr r2, =0x00003009
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r7]
- ldr r3, =0x00003009
- adds r0, r3
- ldrb r0, [r0]
- bl ClearWindowTilemap
- mov r0, r9
- bl sub_8029174
- mov r0, r8
- bl sub_8029074
- ldr r1, [r7]
- ldr r0, =0x00003014
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r7]
- ldr r1, =0x00003020
- adds r0, r1
- strb r6, [r0]
- ldr r0, [r7]
- ldr r2, =0x00003024
- adds r0, r2
- strb r6, [r0]
- b _0802A35E
- .pool
-_0802A0CC:
- ldr r3, =0x00003008
- mov r8, r3
- adds r0, r2, r3
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- ldr r1, =0x00003009
- mov r10, r1
- add r0, r10
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- ldr r2, =gText_WantToPlayAgain
- movs r1, 0x5
- str r1, [sp]
- movs r3, 0xFF
- mov r9, r3
- str r3, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r10
- ldrb r0, [r0]
- ldr r2, =gText_Yes
- str r6, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r10
- ldrb r0, [r0]
- ldr r2, =gText_No
- movs r1, 0x11
- str r1, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r10
- ldrb r0, [r0]
- ldr r2, =gText_SelectorArrow2
- str r6, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r7]
- add r0, r10
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r7]
- ldr r2, =0x00003014
- adds r1, r2
- b _0802A2EA
- .pool
-_0802A194:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0802A1B6
- ldr r0, [r7]
- ldr r3, =0x00003008
- adds r0, r3
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r7]
- ldr r1, =0x00003009
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
-_0802A1B6:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r7]
- ldr r2, =0x00003014
- adds r1, r2
- b _0802A2EA
- .pool
-_0802A1D0:
- ldr r3, =0x00003020
- adds r0, r2, r3
- ldrb r5, [r0]
- cmp r5, 0
- bne _0802A1DC
- movs r5, 0x1
-_0802A1DC:
- ldr r0, =0x00003009
- mov r8, r0
- adds r0, r2, r0
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- ldr r2, =gText_Yes
- movs r1, 0x1
- str r1, [sp]
- movs r3, 0xFF
- mov r10, r3
- str r3, [sp, 0x4]
- movs r1, 0
- mov r9, r1
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- ldr r2, =gText_No
- movs r1, 0x11
- str r1, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- ldr r2, =gText_SelectorArrow2
- subs r1, r5, 0x1
- lsls r1, 4
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r7]
- add r0, r8
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- movs r2, 0x1
- ands r2, r1
- cmp r2, 0
- beq _0802A294
- movs r0, 0x5
- bl PlaySE
- ldr r0, [r7]
- ldr r3, =0x00003020
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, 0
- bne _0802A2E4
- strb r5, [r1]
- b _0802A2E4
- .pool
-_0802A294:
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- beq _0802A2CC
- movs r0, 0x5
- bl PlaySE
- ldr r0, [r7]
- ldr r2, =0x00003020
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _0802A2C2
- cmp r0, 0x1
- bgt _0802A2BC
- cmp r0, 0
- beq _0802A2C2
- b _0802A35E
- .pool
-_0802A2BC:
- cmp r0, 0x2
- beq _0802A2C8
- b _0802A35E
-_0802A2C2:
- movs r0, 0x2
- strb r0, [r1]
- b _0802A35E
-_0802A2C8:
- strb r5, [r1]
- b _0802A35E
-_0802A2CC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802A35E
- movs r0, 0x5
- bl PlaySE
- ldr r0, [r7]
- ldr r3, =0x00003020
- adds r0, r3
- movs r1, 0x2
- strb r1, [r0]
-_0802A2E4:
- ldr r1, [r7]
- ldr r0, =0x00003014
- adds r1, r0
-_0802A2EA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802A35E
- .pool
-_0802A2FC:
- ldr r0, [r7]
- ldr r2, =0x00003020
- adds r1, r0, r2
- ldrb r1, [r1]
- ldr r3, =0x00003024
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r7]
- ldr r6, =0x00003008
- adds r0, r6
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r7]
- ldr r1, =0x00003009
- adds r0, r1
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r7]
- adds r0, r6
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r7]
- ldr r2, =0x00003009
- adds r0, r2
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r7]
- movs r3, 0xC0
- lsls r3, 6
- adds r0, r3
- movs r1, 0x1
- str r1, [r0]
-_0802A35E:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A010
-
- thumb_func_start sub_802A380
-sub_802A380: @ 802A380
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r5, =gUnknown_02022CF8
- ldr r0, [r5]
- ldr r6, =0x00003014
- adds r0, r6
- ldrb r4, [r0]
- cmp r4, 0x1
- beq _0802A3D8
- cmp r4, 0x1
- bgt _0802A3A4
- cmp r4, 0
- beq _0802A3AE
- b _0802A420
- .pool
-_0802A3A4:
- cmp r4, 0x2
- beq _0802A3EC
- cmp r4, 0x3
- beq _0802A404
- b _0802A420
-_0802A3AE:
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- ldr r2, =gText_SavingDontTurnOffPower
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized2
- b _0802A410
- .pool
-_0802A3D8:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, [r5]
- ldr r0, =0x00003014
- adds r1, r0
- b _0802A414
- .pool
-_0802A3EC:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0802A448
- ldr r0, =sub_8153688
- movs r1, 0
- bl CreateTask
- b _0802A410
- .pool
-_0802A404:
- ldr r0, =sub_8153688
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _0802A448
-_0802A410:
- ldr r1, [r5]
- adds r1, r6
-_0802A414:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802A448
- .pool
-_0802A420:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- movs r1, 0x1
- str r1, [r0]
-_0802A448:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A380
-
- thumb_func_start sub_802A454
-sub_802A454: @ 802A454
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r1, =gUnknown_02022CF8
- ldr r2, [r1]
- ldr r6, =0x00003014
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0x1
- beq _0802A4AC
- cmp r0, 0x1
- bgt _0802A47C
- cmp r0, 0
- beq _0802A482
- b _0802A520
- .pool
-_0802A47C:
- cmp r0, 0x2
- beq _0802A4F4
- b _0802A520
-_0802A482:
- ldr r4, =gUnknown_082F7BEC
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r5]
- ldr r2, =0x00003008
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r2
- ldrb r0, [r0]
- bl ClearWindowTilemap
- adds r0, r4, 0
- bl sub_8029174
- b _0802A510
- .pool
-_0802A4AC:
- ldr r4, =0x00003008
- adds r0, r2, r4
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- ldr r2, =gText_CommunicationStandby3
- movs r1, 0x5
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r5]
- ldr r0, =0x00003014
- adds r1, r0
- b _0802A514
- .pool
-_0802A4F4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0802A50A
- ldr r0, [r5]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
-_0802A50A:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_0802A510:
- ldr r1, [r5]
- adds r1, r6
-_0802A514:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802A52C
- .pool
-_0802A520:
- ldr r0, [r5]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- movs r1, 0x1
- str r1, [r0]
-_0802A52C:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802A454
-
- thumb_func_start sub_802A534
-sub_802A534: @ 802A534
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r5, =gUnknown_02022CF8
- ldr r0, [r5]
- ldr r4, =0x00003008
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r5]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- movs r1, 0x1
- str r1, [r0]
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A534
-
- thumb_func_start sub_802A588
-sub_802A588: @ 802A588
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r7, =0x00003014
- adds r2, r1, r7
- ldrb r5, [r2]
- adds r6, r0, 0
- cmp r5, 0x1
- beq _0802A610
- cmp r5, 0x1
- bgt _0802A5B0
- cmp r5, 0
- beq _0802A5BA
- b _0802A6A4
- .pool
-_0802A5B0:
- cmp r5, 0x2
- beq _0802A658
- cmp r5, 0x3
- beq _0802A684
- b _0802A6A4
-_0802A5BA:
- ldr r4, =gUnknown_082F7BE4
- adds r0, r4, 0
- bl AddWindow
- ldr r1, [r6]
- ldr r2, =0x00003008
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r2
- ldrb r0, [r0]
- bl ClearWindowTilemap
- adds r0, r4, 0
- bl sub_8029174
- ldr r1, [r6]
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- ldr r2, =0x0000301c
- adds r1, r0, r2
- movs r2, 0
- strh r5, [r1]
- ldr r1, =0x00003020
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r6]
- adds r1, 0x4
- adds r0, r1
- strb r2, [r0]
- b _0802A6EA
- .pool
-_0802A610:
- ldr r4, =0x00003008
- adds r0, r1, r4
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- ldr r2, =gText_SomeoneDroppedOut
- movs r1, 0x5
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r6]
- ldr r2, =0x00003014
- adds r1, r2
- b _0802A678
- .pool
-_0802A658:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0802A66E
- ldr r0, [r6]
- ldr r1, =0x00003008
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
-_0802A66E:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r6]
- adds r1, r7
-_0802A678:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802A6EA
- .pool
-_0802A684:
- ldr r0, =0x0000301c
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x77
- bls _0802A6EA
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _0802A6EA
- .pool
-_0802A6A4:
- ldr r0, [r6]
- ldr r1, =0x00003024
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- ldr r0, [r6]
- ldr r4, =0x00003008
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r6]
- movs r2, 0xC0
- lsls r2, 6
- adds r0, r2
- movs r1, 0x1
- str r1, [r0]
-_0802A6EA:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A588
-
- thumb_func_start unused_0
-unused_0: @ 802A6FC
- push {r4,lr}
- ldr r4, =gUnknown_02022CF8
- ldr r0, [r4]
- ldr r1, =0x00003004
- adds r0, r1
- ldrb r0, [r0]
- bl DestroyTask
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- movs r1, 0x1
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end unused_0
-
- thumb_func_start nullsub_16
-nullsub_16: @ 802A728
- bx lr
- thumb_func_end nullsub_16
-
- thumb_func_start sub_802A72C
-sub_802A72C: @ 802A72C
- push {r4,lr}
- ldr r2, =gUnknown_02022CF8
- ldr r1, [r2]
- ldr r3, =0x00003014
- adds r1, r3
- movs r3, 0
- strb r3, [r1]
- ldr r1, [r2]
- movs r4, 0xC0
- lsls r4, 6
- adds r2, r1, r4
- str r3, [r2]
- ldr r2, =0x00003028
- adds r1, r2
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A72C
-
- thumb_func_start sub_802A75C
-sub_802A75C: @ 802A75C
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r1, =0x00003028
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_802A75C
-
- thumb_func_start sub_802A770
-sub_802A770: @ 802A770
- push {lr}
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0x1
- beq _0802A78C
- movs r0, 0x1
- b _0802A78E
- .pool
-_0802A78C:
- movs r0, 0
-_0802A78E:
- pop {r1}
- bx r1
- thumb_func_end sub_802A770
-
- thumb_func_start sub_802A794
-sub_802A794: @ 802A794
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r1, =0x00003024
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_802A794
-
- thumb_func_start sub_802A7A8
-sub_802A7A8: @ 802A7A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0802A7CE:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _0802A7CE
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_082F7BA4
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- bl InitStandardTextBoxWindows
- bl sub_8197200
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r4, =gUnknown_02022CF8
- ldr r1, [r4]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0x80
- lsls r0, 6
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802A7A8
-
- thumb_func_start sub_802A8E8
-sub_802A8E8: @ 802A8E8
- push {lr}
- sub sp, 0x4
- ldr r0, =gUnknown_02022CF8
- ldr r0, [r0]
- ldr r2, =0x00003018
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x5
- bhi _0802A982
- lsls r0, 2
- ldr r1, =_0802A910
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802A910:
- .4byte _0802A928
- .4byte _0802A938
- .4byte _0802A93E
- .4byte _0802A94C
- .4byte _0802A964
- .4byte _0802A972
-_0802A928:
- ldr r0, =gDodrioBerryBgPal1
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- b _0802A98A
- .pool
-_0802A938:
- bl reset_temp_tile_data_buffers
- b _0802A98A
-_0802A93E:
- ldr r1, =gDodrioBerryBgGfx1
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- b _0802A954
- .pool
-_0802A94C:
- ldr r1, =gDodrioBerryBgGfx2
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
-_0802A954:
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _0802A98A
- .pool
-_0802A964:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802A98A
- b _0802A998
-_0802A972:
- movs r0, 0x3
- bl stdpal_get
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- b _0802A98A
-_0802A982:
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _0802A99A
-_0802A98A:
- ldr r0, =gUnknown_02022CF8
- ldr r1, [r0]
- ldr r0, =0x00003018
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0802A998:
- movs r0, 0
-_0802A99A:
- add sp, 0x4
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802A8E8
-
- .align 2, 0 @ don't pad with nop
diff --git a/asm/pokenav_unk_2.s b/asm/pokenav_unk_2.s
index 89a8bde9e..da83ccf55 100644
--- a/asm/pokenav_unk_2.s
+++ b/asm/pokenav_unk_2.s
@@ -943,7 +943,7 @@ sub_81CA0C8: @ 81CA0C8
lsls r2, r0, 3
subs r2, r0
lsls r2, 2
- ldr r1, =gUnknown_08620244
+ ldr r1, =gUnknown_08620240+4
adds r0, r2, r1
subs r1, 0x4
adds r2, r1
diff --git a/data/dodrio_berry_picking.s b/data/dodrio_berry_picking.s
deleted file mode 100755
index 7537d9f04..000000000
--- a/data/dodrio_berry_picking.s
+++ /dev/null
@@ -1,666 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_082F449C:: @ 82F449C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
- .byte 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x03, 0x08
- .byte 0x09, 0x00, 0x00, 0x01, 0x02, 0x05, 0x06, 0x03
- .byte 0x04, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
- .byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x02, 0x09
- .byte 0x00, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x02
- .byte 0x03, 0x04, 0x09, 0x00, 0x00, 0x01, 0x06, 0x07
- .byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
- .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00
- .byte 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01
- .byte 0x02, 0x03, 0x00, 0x00, 0x05, 0x06, 0x07, 0x08
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x07
- .byte 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03
- .byte 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x02
- .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
- .byte 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08
- .byte 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
- .byte 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
- .byte 0x06, 0x07, 0x08
-
-gUknnown_082F45AF::
- .byte 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
- .byte 0x04, 0x05, 0x05, 0x06, 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05
- .byte 0x06, 0x06, 0x07, 0x02, 0x02, 0x03, 0x04, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05
- .byte 0x05, 0x06, 0x07, 0x07, 0x08, 0x01, 0x01, 0x02
- .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x05, 0x06, 0x06
- .byte 0x07, 0x08, 0x08, 0x09, 0x00, 0x00, 0x01, 0x02
- .byte 0x02, 0x03, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01
- .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02
- .byte 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04
- .byte 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x03
- .byte 0x02, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x00
- .byte 0x00, 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01
- .byte 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00
- .byte 0x00, 0x01, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09
- .byte 0x09, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01
- .byte 0x09, 0x09, 0x09, 0x03, 0x03, 0x00, 0x00, 0x01
- .byte 0x01, 0x02, 0x02, 0x03, 0x09, 0x03, 0x03, 0x04
- .byte 0x04, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03
- .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00
- .byte 0x00, 0x00, 0x03, 0x05, 0x07, 0x00, 0x00, 0x02
- .byte 0x04, 0x06, 0x08, 0x00, 0x01, 0x03, 0x05, 0x06
- .byte 0x09
-
- .align 2
-gUnknown_082F7DF0_UnrefDupe:: @ 82F4698
- .incbin "graphics/link_games/dodrioberry_bg1.gbapal"
-
- .align 2
- .incbin "graphics/link_games/dodrioberry_bg2.gbapal"
-
- .align 2
-gUnknown_082F7E30_UnrefDupe:: @ 82F46B8
- .incbin "graphics/link_games/dodrioberry_pkmn.gbapal"
-
- .align 2
-gUnknown_082F7E50_UnrefDupe:: @ 82F46D8
- .incbin "graphics/link_games/dodrioberry_shiny.gbapal"
-
- .align 2
-gUnknown_082F7E70_UnrefDupe:: @ 82F46F8
- .incbin "graphics/link_games/dodrioberry_status.gbapal"
-
- .align 2
-gUnknown_082F7E90_UnrefDupe:: @ 82F4718
- .incbin "graphics/link_games/dodrioberry_berrysprites.gbapal"
-
- .align 2
-gUnknown_082F7EB0_UnrefDupe:: @ 82F4738
- .incbin "graphics/link_games/dodrioberry_berrysprites.4bpp.lz"
-
- .align 2
-gUnknown_082F8064_UnrefDupe:: @ 82F490C
- .incbin "graphics/link_games/dodrioberry_platform.gbapal"
-
- .align 2
-gUnknown_082F8084_UnrefDupe:: @ 82F492C
- .incbin "graphics/link_games/dodrioberry_bg1.4bpp.lz"
-
- .align 2
-gUnknown_082F8914_UnrefDupe:: @ 82F51BC
- .incbin "graphics/link_games/dodrioberry_bg2.4bpp.lz"
-
- .align 2
-gUnknown_082F96E0_UnrefDupe:: @ 82F5F88
- .incbin "graphics/link_games/dodrioberry_status.4bpp.lz"
-
- .align 2
-gUnknown_082F9774_UnrefDupe:: @ 82F601C
- .incbin "graphics/link_games/dodrioberry_platform.4bpp.lz"
-
- .align 2
-gUnknown_082F98BC_UnrefDupe:: @ 82F6164
- .incbin "graphics/link_games/dodrioberry_pkmn.4bpp.lz"
-
- .align 2
-gUnknown_082FAAD8_UnrefDupe:: @ 82F7380
- .incbin "graphics/link_games/dodrioberry_bg1.bin.lz"
-
- .align 2
-gUnknown_082FAD44_UnrefDupe:: @ 82F75EC
- .incbin "graphics/link_games/dodrioberry_bg2right.bin.lz"
-
- .align 2
-gUnknown_082FAF94_UnrefDupe:: @ 82F783C
- .incbin "graphics/link_games/dodrioberry_bg2left.bin.lz"
-
- .align 2
-gUnknown_082F7A88:: @ 82F7A88
- .byte 0x28, 0x18, 0x0d, 0x20, 0x13, 0x0a, 0x16, 0x0d
- .byte 0x07, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F7A94:: @ 82F7A94
- .byte 0x08, 0x05, 0x08, 0x0b, 0x0f, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082F7A9C:: @ 82F7A9C
- .byte 0x05, 0x0a, 0x14, 0x1e, 0x32, 0x46, 0x64, 0x00
-
- .align 2
-gUnknown_082F7AA4:: @ 82F7AA4
- .byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x13, 0x12, 0x11
- .byte 0x10, 0x0f, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19
- .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21
- .byte 0x22, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x00, 0x00
-
- .align 2
-gUnknown_082F7AC4:: @ 82F7AC4
- .4byte sub_8024DBC
- .4byte sub_8024E00
- .4byte sub_8024E38
- .4byte sub_8024F10
- .4byte sub_8024F38
- .4byte sub_8025198
- .4byte sub_8025324
- .4byte sub_8025470
- .4byte sub_8025644
- .4byte sub_80256AC
- .4byte sub_8025758
- .4byte sub_80250D4
-
- .align 2
-gUnknown_082F7AF4:: @ 82F7AF4
- .4byte sub_8024DBC
- .4byte sub_8024E00
- .4byte sub_8024E38
- .4byte sub_8024F10
- .4byte sub_8024FFC
- .4byte sub_8025230
- .4byte sub_8025324
- .4byte sub_8025470
- .4byte sub_8025644
- .4byte sub_80256AC
- .4byte sub_8025758
- .4byte sub_8025158
-
- .align 2
-gUnknown_082F7B24:: @ 82F7B24
- .2byte 0x000a, 0x001e, 0x0032, 0x0032
-
- .align 2
-gUnknown_082F7B2C:: @ 82F7B2C
- .byte 0x00, 0x05, 0x01, 0x14, 0x0b, 0x0f, 0x01, 0x00
-
- .align 2
-gUnknown_082F7B34:: @ 82F7B34
- .4byte gText_BerriesPicked
- .4byte gText_BestScore
- .4byte gText_BerriesInRowFivePlayers
-
- .align 2
-gUnknown_082F7B40:: @ 82F7B40
- .byte 0x04, 0x07, 0x04, 0x00
-
- .align 2
-gUnknown_082F7B44:: @ 82F7B44
- .2byte 0x0019, 0x0029, 0x0039
-
-gUnknown_082F7B4A:: @ 82F7B4A
- .2byte 0x0019, 0x0029, 0x0049
-
- .align 2
-gUnknown_082F7B50:: @ 82F7B50
- .2byte 0x270f, 0x0000, 0x005a, 0x270f, 0x270f, 0x270f, 0x0046, 0x270f
- .2byte 0x270f, 0x0000, 0x270f, 0x0000, 0x270f, 0x270f, 0x003c, 0x0000
- .2byte 0x270f, 0x270f, 0x270f, 0x0000
-
- .align 2
-gUnknown_082F7B78:: @ 82F7B78
- .string "ÀÁÂÇÈÉÊ$"
-
- .align 2
-gUnknown_082F7B80:: @ 82F7B80
- .string "ABCDEFG$"
-
- .align 2
-gUnknown_082F7B88:: @ 82F7B88
- .string "0123456$"
-
- .align 2
-gUnknown_082F7B90:: @ 82F7B90
- .4byte gUnknown_082F7B78
- .4byte gUnknown_082F7B78
- .4byte gUnknown_082F7B78
- .4byte gUnknown_082F7B80
- .4byte gUnknown_082F7B88
-
- .align 2
-gUnknown_082F7BA4:: @ 82F7BA4 struct BgTemplate
- .4byte 0x000001e0
- .4byte 0x000012c9
- .4byte 0x000012ea
- .4byte 0x000021ff
- .4byte 0x000000ff
- .4byte 0x00000000
-
- .align 2
-gUnknown_082F7BBC:: @ 82F7BBC
- window_template 0x00, 0x01, 0x01, 0x1c, 0x02, 0x0d, 0x0013
- window_template 0x00, 0x01, 0x05, 0x1c, 0x0e, 0x0d, 0x004b
-
- .align 2
-gUnknown_082F7BCC:: @ 82F7BCC
- window_template 0x00, 0x01, 0x05, 0x1c, 0x07, 0x0d, 0x004b
-
- .align 2
-gUnknown_082F7BD4:: @ 82F7BD4
- window_template 0x00, 0x01, 0x08, 0x13, 0x03, 0x0d, 0x0013
- window_template 0x00, 0x16, 0x07, 0x06, 0x04, 0x0d, 0x004c
-
- .align 2
-gUnknown_082F7BE4:: @ 82F7BE4
- window_template 0x00, 0x04, 0x06, 0x16, 0x05, 0x0d, 0x0013
-
- .align 2
-gUnknown_082F7BEC:: @ 82F7BEC
- window_template 0x00, 0x05, 0x08, 0x13, 0x03, 0x0d, 0x0013
-
- .align 2
-gUnknown_082F449C_UnrefDupe:: @ 82F7BF4
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
- .byte 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x03, 0x08
- .byte 0x09, 0x00, 0x00, 0x01, 0x02, 0x05, 0x06, 0x03
- .byte 0x04, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
- .byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x02, 0x09
- .byte 0x00, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x02
- .byte 0x03, 0x04, 0x09, 0x00, 0x00, 0x01, 0x06, 0x07
- .byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
- .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00
- .byte 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01
- .byte 0x02, 0x03, 0x00, 0x00, 0x05, 0x06, 0x07, 0x08
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x07
- .byte 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03
- .byte 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x02
- .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
- .byte 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08
- .byte 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
- .byte 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
- .byte 0x06, 0x07, 0x08, 0x04, 0x05, 0x06, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x03, 0x04, 0x05, 0x05, 0x06, 0x03
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x04, 0x05, 0x06, 0x06, 0x07, 0x02, 0x02
- .byte 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x04, 0x05, 0x05, 0x06, 0x07, 0x07, 0x08
- .byte 0x01, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x04
- .byte 0x05, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x00
- .byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x04, 0x01, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01
- .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00
- .byte 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01
- .byte 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00
- .byte 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x02
- .byte 0x01, 0x02, 0x03, 0x02, 0x03, 0x04, 0x03, 0x04
- .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09
- .byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09
- .byte 0x09, 0x09, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09
- .byte 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x00, 0x00
- .byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x03, 0x03
- .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x09
- .byte 0x03, 0x03, 0x04, 0x04, 0x00, 0x00, 0x01, 0x01
- .byte 0x02, 0x02, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x06, 0x00, 0x00, 0x00, 0x03, 0x05, 0x07
- .byte 0x00, 0x00, 0x02, 0x04, 0x06, 0x08, 0x00, 0x01
- .byte 0x03, 0x05, 0x06, 0x09
-
- .align 2
-gDodrioBerryBgPal1:: @ 82F7DF0
- .incbin "graphics/link_games/dodrioberry_bg1.gbapal"
-
- .align 2
- .incbin "graphics/link_games/dodrioberry_bg2.gbapal"
-
- .align 2
-gDodrioBerryPkmnPal:: @ 82F7E30
- .incbin "graphics/link_games/dodrioberry_pkmn.gbapal"
-
- .align 2
-gDodrioBerryShinyPal:: @ 82F7E50
- .incbin "graphics/link_games/dodrioberry_shiny.gbapal"
-
- .align 2
-gDodrioBerryStatusPal:: @ 82F7E70
- .incbin "graphics/link_games/dodrioberry_status.gbapal"
-
- .align 2
-gDodrioBerrySpritesPal:: @ 82F7E90
- .incbin "graphics/link_games/dodrioberry_berrysprites.gbapal"
-
- .align 2
-gDodrioBerrySpritesGfx:: @ 82F7EB0
- .incbin "graphics/link_games/dodrioberry_berrysprites.4bpp.lz"
-
- .align 2
-gDodrioBerryPlatformPal:: @ 82F8064
- .incbin "graphics/link_games/dodrioberry_platform.gbapal"
-
- .align 2
-gDodrioBerryBgGfx1:: @ 82F8084
- .incbin "graphics/link_games/dodrioberry_bg1.4bpp.lz"
-
- .align 2
-gDodrioBerryBgGfx2:: @ 82F8914
- .incbin "graphics/link_games/dodrioberry_bg2.4bpp.lz"
-
- .align 2
-gDodrioBerryStatusGfx:: @ 82F96E0
- .incbin "graphics/link_games/dodrioberry_status.4bpp.lz"
-
- .align 2
-gDodrioBerryPlatformGfx:: @ 82F9774
- .incbin "graphics/link_games/dodrioberry_platform.4bpp.lz"
-
- .align 2
-gDodrioBerryPkmnGfx:: @ 82F98BC
- .incbin "graphics/link_games/dodrioberry_pkmn.4bpp.lz"
-
- .align 2
-gDodrioBerryBgTilemap1:: @ 82FAAD8
- .incbin "graphics/link_games/dodrioberry_bg1.bin.lz"
-
- .align 2
-gDodrioBerryBgTilemap2Right:: @ 82FAD44
- .incbin "graphics/link_games/dodrioberry_bg2right.bin.lz"
-
- .align 2
-gDodrioBerryBgTilemap2Left:: @ 82FAF94
- .incbin "graphics/link_games/dodrioberry_bg2left.bin.lz"
-
- .align 2
-gUnknown_082FB1E0:: @ 82FB1E0
- .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00
-
- .align 2
-gUnknown_082FB1E8:: @ 82FB1E8
- .byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_082FB1F0:: @ 82FB1F0
- .byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00
-
- .align 2
-gUnknown_082FB1F8:: @ 82FB1F8
- .byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x00
-
- .align 2
-gUnknown_082FB200:: @ 82FB200
- .2byte 0x0000, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB208:: @ 82FB208
- .2byte 0x0040, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB210:: @ 82FB210
- .2byte 0x0080, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB218:: @ 82FB218
- .2byte 0x00c0, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB220:: @ 82FB220
- .2byte 0x0100, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB228:: @ 82FB228
- .4byte gUnknown_082FB200
- .4byte gUnknown_082FB208
- .4byte gUnknown_082FB210
- .4byte gUnknown_082FB218
- .4byte gUnknown_082FB220
-
- .align 2
-gUnknown_082FB23C:: @ 82FB23C
- .2byte 0x0000, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB244:: @ 82FB244
- .2byte 0x0004, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB24C:: @ 82FB24C
- .2byte 0x0008, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB254:: @ 82FB254
- .4byte gUnknown_082FB23C
- .4byte gUnknown_082FB244
- .4byte gUnknown_082FB24C
-
- .align 2
-gUnknown_082FB260:: @ 82FB260
- .2byte 0x0000, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB268:: @ 82FB268
- .2byte 0x0004, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB270:: @ 82FB270
- .2byte 0x0008, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB278:: @ 82FB278
- .2byte 0x000c, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB280:: @ 82FB280
- .2byte 0x0010, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB288:: @ 82FB288
- .2byte 0x0014, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB290:: @ 82FB290
- .2byte 0x0018, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB298:: @ 82FB298
- .2byte 0x001c, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB2A0:: @ 82FB2A0
- .2byte 0x0020, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB2A8:: @ 82FB2A8
- .4byte gUnknown_082FB260
- .4byte gUnknown_082FB268
- .4byte gUnknown_082FB270
- .4byte gUnknown_082FB278
- .4byte gUnknown_082FB280
- .4byte gUnknown_082FB288
- .4byte gUnknown_082FB290
- .4byte gUnknown_082FB298
- .4byte gUnknown_082FB2A0
-
- .align 2
-gUnknown_082FB2CC:: @ 82FB2CC
- .2byte 0x0000, 0x0014
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_082FB2D4:: @ 82FB2D4
- .4byte gUnknown_082FB2CC
-
- .align 2
-gUnknown_082FB2D8:: @ 82FB2D8
- obj_pal gDodrioBerryPkmnPal, 0x0000
-
- .align 2
-gUnknown_082FB2E0:: @ 82FB2E0
- obj_pal gDodrioBerryShinyPal, 0x0001
-
- .align 2
-gUnknown_082FB2E8:: @ 82FB2E8
- obj_pal gDodrioBerryStatusPal, 0x0002
-
- .align 2
-gUnknown_082FB2F0:: @ 82FB2F0
- spr_template 0x0001, 0x0002, gUnknown_082FB1E8, gUnknown_082FB254, NULL, gDummySpriteAffineAnimTable, nullsub_15
-
- .align 2
- .byte 0xD4, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44
- .byte 0x45, 0xFB, 0x00, 0x00
-
- .align 2
-gUnknown_082FB314:: @ 82FB314
- obj_pal gDodrioBerrySpritesPal, 0x0003
-
- .align 2
-gUnknown_082FB31C:: @ 82FB31C
- .2byte 0x0058, 0x0080, 0x00a8, 0x00d0
-
- .align 2
-gUnknown_082FB324:: @ 82FB324
- spr_template 0x0002, 0x0003, gUnknown_082FB1F0, gUnknown_082FB2A8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_082FB33C:: @ 82FB33C
- spr_template 0x0002, 0x0003, gUnknown_082FB1E8, gUnknown_082FB2A8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_082FB354:: @ 82FB354
- .byte 0x1E, 0x14
-
-gUnknown_082FB356:: @ 82FB356
- .byte 0xE6, 0x00
-
- .align 2
-gUnknown_082FB358:: @ 82FB358
- .2byte 0x0037, 0x001e, 0x004a, 0x0000
-
- .align 2
-gUnknown_082FB360:: @ 82FB360
- obj_pal gDodrioBerryPlatformPal, 0x0006
-
- .align 2
-gUnknown_082FB368:: @ 82FB368
- spr_template 0x0005, 0x0006, gUnknown_082FB1F8, gUnknown_082FB2D4, NULL, gDummySpriteAffineAnimTable, sub_8028CF4
-
- .align 2
-gUnknown_082FB380:: @ 82FB380
- .byte 0x01, 0x02, 0x03
-
-gUnknown_082FB383:: @ 82FB383
- .byte 0x01, 0x04, 0x05
- .byte 0x01, 0x08, 0x09
- .byte 0x01, 0x06, 0x07
-
- .align 2
-gUnknown_082FB38C:: @ 82FB38C
- .byte 0x0c, 0x06, 0x00, 0x00
-
- .align 2
-gUnknown_082FB390:: @ 82FB390
- .byte 0x09, 0x0a, 0x00, 0x00, 0x0f, 0x06, 0x00, 0x00
-
- .align 2
-gUnknown_082FB398:: @ 82FB398
- .byte 0x0c, 0x06, 0x00, 0x00, 0x12, 0x0a, 0x00, 0x00
- .byte 0x06, 0x0a, 0x00, 0x00
-
- .align 2
-gUnknown_082FB3A4:: @ 82FB3A4
- .byte 0x09, 0x0a, 0x00, 0x00, 0x0f, 0x06, 0x00, 0x00
- .byte 0x15, 0x0a, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00
-
- .align 2
-gUnknown_082FB3B4:: @ 82FB3B4
- .byte 0x0c, 0x06, 0x00, 0x00, 0x12, 0x0a, 0x00, 0x00
- .byte 0x17, 0x06, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00
- .byte 0x06, 0x0a, 0x00, 0x00
-
- .align 2
-gUnknown_082FB3C8:: @ 82FB3C8
- .4byte gUnknown_082FB38C
- .4byte gUnknown_082FB390
- .4byte gUnknown_082FB398
- .4byte gUnknown_082FB3A4
- .4byte gUnknown_082FB3B4
-
- .align 2
-gUnknown_082FB3DC:: @ 82FB3DC
- .4byte gText_1Colon
- .4byte gText_2Colon
- .4byte gText_3Colon
- .4byte gText_4Colon
- .4byte gText_5Colon
-
- .align 2
-gUnknown_082FB3F0:: @ 82FB3F0
- .2byte 0x005c, 0x0084, 0x00ac, 0x00d4
-
-gUnknown_082FB3F8:: @ 82FB3F8
- .2byte 0x0021, 0x0031, 0x0041, 0x0051, 0x0061
-
-gUnknown_082FB402:: @ 82FB402
- .2byte 0x0011, 0x0021, 0x0031, 0x0041, 0x0051
-
- .align 2
-gUnknown_082FB40C:: @ 82FB40C
- .4byte 0x00000000, sub_8029338
- .4byte 0x00000001, sub_8029440
- .4byte 0x00000002, sub_802988C
- .4byte 0x00000003, sub_802A010
- .4byte 0x00000004, sub_802A380
- .4byte 0x00000005, sub_802A454
- .4byte 0x00000006, sub_802A534
- .4byte 0x00000007, sub_802A588
- .4byte 0x00000008, unused_0
- .4byte 0x00000009, nullsub_16
-
- .align 2
-gUnknown_082FB45C:: @ 82FB45C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00
diff --git a/data/pokenav.s b/data/pokenav.s
deleted file mode 100644
index 2ed2cf9a0..000000000
--- a/data/pokenav.s
+++ /dev/null
@@ -1,1658 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-// pokenav_unk_2.s
-gUnknown_0861FC78:: @ 861FC78
- .incbin "graphics/pokenav/bg.gbapal"
-
-gUnknown_0861FC98:: @ 861FC98
- .incbin "graphics/pokenav/bg.4bpp.lz"
-
-gUnknown_0861FCAC:: @ 861FCAC
- .incbin "graphics/pokenav/bg.bin.lz"
-
-gUnknown_0861FD4C:: @ 861FD4C
- .incbin "graphics/pokenav/outline.gbapal"
-
-gUnknown_0861FD6C:: @ 861FD6C
- .incbin "graphics/pokenav/outline.4bpp.lz"
-
-gUnknown_0861FFF4:: @ 861FFF4
- .incbin "graphics/pokenav/outline_map.bin.lz"
-
-gUnknown_08620104:: @ 8620104
- .incbin "graphics/pokenav/blue_light.gbapal"
-
-gUnknown_08620124:: @ 8620124
- .incbin "graphics/pokenav/blue_light.4bpp.lz"
-
-gUnknown_08620194:: @ 8620194
- .byte 0xF5, 0x10, 0, 0, 0x7A, 0x21, 0, 0, 0xFF, 0x31, 0, 0
-
-gUnknown_086201A0:: @ 86201A0
- .4byte NULL
- .4byte sub_81C9C6C
- .4byte sub_81C9CA8
- .4byte sub_81C9D44
- .4byte sub_81C9DD8
- .4byte sub_81C9E58
- .4byte sub_81C9EC8
- .4byte sub_81C9EF8
- .4byte sub_81C9F28
-
-gUnknown_086201C4:: @ 86201C4
- .4byte gPokenavOptions_Gfx
- .byte 0, 0x34, 3, 0
- .4byte gUnknown_08620124
- .byte 0, 1, 1, 0
-
-gUnknown_086201D4:: @ 86201D4
- .4byte gPokenavOptions_Pal + 0x0, 4
- .4byte gPokenavOptions_Pal + 0x20, 5
- .4byte gPokenavOptions_Pal + 0x40, 6
- .4byte gPokenavOptions_Pal + 0x60, 7
- .4byte gPokenavOptions_Pal + 0x80, 8
- .4byte gUnknown_08620104, 3
- .4byte 0, 0
-
-gUnknown_0862020C:: @ 862020C
- .2byte 0, 0
-
-gUnknown_08620210:: @ 8620210
- .2byte 0x20, 1
-
-gUnknown_08620214:: @ 8620214
- .2byte 0x40, 4
-
-gUnknown_08620218:: @ 8620218
- .2byte 0x60, 2
-
-gUnknown_0862021C:: @ 862021C
- .2byte 0x80, 3
-
-gUnknown_08620220:: @ 8620220
- .2byte 0xA0, 1
-
-gUnknown_08620224:: @ 8620224
- .2byte 0xC0, 1
-
-gUnknown_08620228:: @ 8620228
- .2byte 0xE0, 4
-
-gUnknown_0862022C:: @ 862022C
- .2byte 0x100, 1
-
-gUnknown_08620230:: @ 8620230
- .2byte 0x120, 2
-
-gUnknown_08620234:: @ 8620234
- .2byte 0x140, 0
-
-gUnknown_08620238:: @ 8620238
- .2byte 0x160, 0
-
-gUnknown_0862023C:: @ 862023C
- .2byte 0x180, 3
-
-gUnknown_08620240:: @ 8620240
- .2byte 0x2A, 0x14
-
-gUnknown_08620244:: @ 8620244
- .4byte gUnknown_0862020C
- .4byte gUnknown_08620210
- .4byte gUnknown_0862021C
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .2byte 0x2A, 0x14
- .4byte gUnknown_0862020C
- .4byte gUnknown_08620210
- .4byte gUnknown_08620214
- .4byte gUnknown_0862021C
- .4byte NULL
- .4byte NULL
- .2byte 0x2A, 0x14
- .4byte gUnknown_0862020C
- .4byte gUnknown_08620210
- .4byte gUnknown_08620214
- .4byte gUnknown_08620218
- .4byte gUnknown_0862021C
- .4byte NULL
- .2byte 0x38, 0x14
- .4byte gUnknown_08620220
- .4byte gUnknown_08620224
- .4byte gUnknown_0862023C
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .2byte 0x28, 0x10
- .4byte gUnknown_08620228
- .4byte gUnknown_0862022C
- .4byte gUnknown_08620230
- .4byte gUnknown_08620234
- .4byte gUnknown_08620238
- .4byte gUnknown_0862023C
-
-gUnknown_086202CC:: @ 86202CC
- window_template 1, 3, 17, 0x18, 2, 1, 8
-
-gUnknown_086202D4:: @ 86202D4
- .4byte gUnknown_085EBCC5
- .4byte gUnknown_085EBCE8
- .4byte gUnknown_085EBD01
- .4byte gUnknown_085EBD1C
- .4byte gUnknown_085EBD34
- .4byte gUnknown_085EBD83
- .4byte gUnknown_085EBDA2
- .4byte gUnknown_085EBDBF
- .4byte gUnknown_085EBDDB
- .4byte gUnknown_085EBDEE
- .4byte gUnknown_085EBE06
- .4byte gUnknown_085EBE19
- .4byte gUnknown_085EBE2D
- .4byte gUnknown_085EBE41
-
-gUnknown_0862030C:: @ 862030C
- .byte 6, 8, 7
-
-gUnknown_0862030F:: @ 862030F
- .byte 6, 8, 7, 0, 0
-
-gUnknown_08620314:: @ 8620314
- .byte 0, 0x40, 0, 0x80, 0, 8, 0, 0
-
-gUnknown_0862031C:: @ 862031C
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
-gUnknown_0862032C:: @ 862032C
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 0x12
- obj_rot_scal_anim_end
-
-gUnknown_08620344:: @ 8620344
- .4byte gUnknown_0862031C
- .4byte gUnknown_0862032C
-
-gUnknown_0862034C:: @ 862034C
- spr_template 3, 4, gUnknown_08620314, gDummySpriteAnimTable, NULL, gUnknown_08620344, SpriteCallbackDummy
-
-gUnknown_08620364:: @ 8620364
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x800
- .2byte 0
-
-gUnknown_0862036C:: @ 862036C
- spr_template 1, 3, gUnknown_08620364, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_08620384:: @ 8620384
- .4byte 0x4000040
- .4byte 0xa2600001
- .byte 1, 0, 0, 0
-
-// pokenav_unk_3.s
-gUnknown_08620390:: @ 8620390
- .string "Becalm fighting emotions.$"
-
-gUnknown_086203AA:: @ 86203AA
- .string "Fragrant GRASS POKéMON.$"
-
-gUnknown_086203C2:: @ 86203C2
- .string "Soothing aromas make the$"
-
-gUnknown_086203DB:: @ 86203DB
- .string "body and mind healthy.$"
-
-gUnknown_086203F2:: @ 86203F2
- .string "I'm not very good at this.$"
-
-gUnknown_0862040D:: @ 862040D
- .string "Ruin-exploration partners.$"
-
-gUnknown_08620428:: @ 8620428
- .string "I am searching for undersea$"
-
-gUnknown_08620444:: @ 8620444
- .string "ruins and relics.$"
-
-gUnknown_08620456:: @ 8620456
- .string "Overwhelm with power!$"
-
-gUnknown_0862046C:: @ 862046C
- .string "Craggy ROCK POKéMON.$"
-
-gUnknown_08620481:: @ 8620481
- .string "In search of ancient lore,$"
-
-gUnknown_0862049C:: @ 862049C
- .string "I travel the world.$"
-
-gUnknown_086204B0:: @ 86204B0
- .string "I'm going to try hard!$"
-
-gUnknown_086204C7:: @ 86204C7
- .string "Good swimmer POKéMON.$"
-
-gUnknown_086204DD:: @ 86204DD
- .string "I wish I could swim without$"
-
-gUnknown_086204F9:: @ 86204F9
- .string "using an inner tube.$"
-
-gUnknown_0862050E:: @ 862050E
- .string "I don't know. I'll try hard.$"
-
-gUnknown_0862052B:: @ 862052B
- .string "WATER POKéMON are buddies.$"
-
-gUnknown_08620546:: @ 8620546
- .string "It's not like I can't swim.$"
-
-gUnknown_08620562:: @ 8620562
- .string "I just like my inner tube.$"
-
-gUnknown_0862057D:: @ 862057D
- .string "We split our duties.$"
-
-gUnknown_08620592:: @ 8620592
- .string "We like friendly POKéMON.$"
-
-gUnknown_086205AC:: @ 86205AC
- .string "We enjoy POKéMON together$"
-
-gUnknown_086205C6:: @ 86205C6
- .string "as sister and brother.$"
-
-gUnknown_086205DD:: @ 86205DD
- .string "I finish with power moves!$"
-
-gUnknown_086205F8:: @ 86205F8
- .string "A mix of different types.$"
-
-gUnknown_08620612:: @ 8620612
- .string "I aim to become the ultimate$"
-
-gUnknown_0862062F:: @ 862062F
- .string "TRAINER!$"
-
-gUnknown_08620638:: @ 8620638
- .string "Exploit the foe's weakness.$"
-
-gUnknown_08620654:: @ 8620654
- .string "Balance is crucial.$"
-
-gUnknown_08620668:: @ 8620668
- .string "My goal is to become the$"
-
-gUnknown_08620681:: @ 8620681
- .string "POKéMON CHAMPION.$"
-
-gUnknown_08620693:: @ 8620693
- .string "Upset the opponent.$"
-
-gUnknown_086206A7:: @ 86206A7
- .string "Type doesn't matter.$"
-
-gUnknown_086206BC:: @ 86206BC
- .string "I'm a top student at the$"
-
-gUnknown_086206D5:: @ 86206D5
- .string "TRAINER'S SCHOOL.$"
-
-gUnknown_086206E7:: @ 86206E7
- .string "Slow, steady suffering.$"
-
-gUnknown_086206FF:: @ 86206FF
- .string "Scary to meet at night.$"
-
-gUnknown_08620717:: @ 8620717
- .string "I see things that others$"
-
-gUnknown_08620730:: @ 8620730
- .string "can't see...$"
-
-gUnknown_0862073D:: @ 862073D
- .string "Anything to win.$"
-
-gUnknown_0862074E:: @ 862074E
- .string "Gorgeous type!$"
-
-gUnknown_0862075D:: @ 862075D
- .string "I have a pool specially for$"
-
-gUnknown_08620779:: @ 8620779
- .string "my POKéMON at home.$"
-
-gUnknown_0862078D:: @ 862078D
- .string "You'll fall under my spell!$"
-
-gUnknown_086207A9:: @ 86207A9
- .string "Mature WATER type.$"
-
-gUnknown_086207BC:: @ 86207BC
- .string "I dream of cruising around$"
-
-gUnknown_086207D7:: @ 86207D7
- .string "the world on a luxury liner.$"
-
-gUnknown_086207F4:: @ 86207F4
- .string "I'll lead you astray.$"
-
-gUnknown_0862080A:: @ 862080A
- .string "Cute, of course.$"
-
-gUnknown_0862081B:: @ 862081B
- .string "I love the SAFARI ZONE.$"
-
-gUnknown_08620833:: @ 8620833
- .string "I seem to end up there.$"
-
-gUnknown_0862084B:: @ 862084B
- .string "Strategy? Who needs it?$"
-
-gUnknown_08620863:: @ 8620863
- .string "I spent big money on it!$"
-
-gUnknown_0862087C:: @ 862087C
- .string "I, being rich, sleep in a$"
-
-gUnknown_08620896:: @ 8620896
- .string "custom POKéMON bed.$"
-
-gUnknown_086208AA:: @ 86208AA
- .string "Wrestle down with power.$"
-
-gUnknown_086208C3:: @ 86208C3
- .string "Took all night to catch.$"
-
-gUnknown_086208DC:: @ 86208DC
- .string "Big, burly, and buff$"
-
-gUnknown_086208F1:: @ 86208F1
- .string "POKéMON are the best...$"
-
-gUnknown_08620909:: @ 8620909
- .string "Ram at full speed!$"
-
-gUnknown_0862091C:: @ 862091C
- .string "Funky WATER type!$"
-
-gUnknown_0862092E:: @ 862092E
- .string "If I can't be out swimming,$"
-
-gUnknown_0862094A:: @ 862094A
- .string "I'll be pumping weights.$"
-
-gUnknown_08620963:: @ 8620963
- .string "Grand slam pummeling!$"
-
-gUnknown_08620979:: @ 8620979
- .string "FIGHTING type.$"
-
-gUnknown_08620988:: @ 8620988
- .string "Not to brag, but I can bust$"
-
-gUnknown_086209A4:: @ 86209A4
- .string "ten roof tiles!$"
-
-gUnknown_086209B4:: @ 86209B4
- .string "Witness karate power!$"
-
-gUnknown_086209CA:: @ 86209CA
- .string "My partners in training!$"
-
-gUnknown_086209E3:: @ 86209E3
- .string "Let us discuss matters of$"
-
-gUnknown_086209FD:: @ 86209FD
- .string "the world with bare fists!$"
-
-gUnknown_08620A18:: @ 8620A18
- .string "Rock to stunning sounds!$"
-
-gUnknown_08620A31:: @ 8620A31
- .string "Electric-and-sound combo!$"
-
-gUnknown_08620A4B:: @ 8620A4B
- .string "My compositions will shock$"
-
-gUnknown_08620A66:: @ 8620A66
- .string "you and stun you!$"
-
-gUnknown_08620A78:: @ 8620A78
- .string "I'll electrify you!$"
-
-gUnknown_08620A8C:: @ 8620A8C
- .string "They're ELECTRIC!$"
-
-gUnknown_08620A9E:: @ 8620A9E
- .string "I want to make people cry$"
-
-gUnknown_08620AB8:: @ 8620AB8
- .string "with songs from my heart.$"
-
-gUnknown_08620AD2:: @ 8620AD2
- .string "Burn it all down!$"
-
-gUnknown_08620AE4:: @ 8620AE4
- .string "Burn-inducing POKéMON.$"
-
-gUnknown_08620AFB:: @ 8620AFB
- .string "When you light a campfire,$"
-
-gUnknown_08620B16:: @ 8620B16
- .string "be sure there's some water.$"
-
-gUnknown_08620B32:: @ 8620B32
- .string "Hang in and be tenacious!$"
-
-gUnknown_08620B4C:: @ 8620B4C
- .string "I'll raise any POKéMON.$"
-
-gUnknown_08620B64:: @ 8620B64
- .string "POKéMON raised in the wild$"
-
-gUnknown_08620B7F:: @ 8620B7F
- .string "grow strong!$"
-
-gUnknown_08620B8C:: @ 8620B8C
- .string "Our love lets us prevail.$"
-
-gUnknown_08620BA6:: @ 8620BA6
- .string "We've had them for years.$"
-
-gUnknown_08620BC0:: @ 8620BC0
- .string "Married 50 years, we've$"
-
-gUnknown_08620BD8:: @ 8620BD8
- .string "devotedly raised POKéMON.$"
-
-gUnknown_08620BF2:: @ 8620BF2
- .string "Attack in waves!$"
-
-gUnknown_08620C03:: @ 8620C03
- .string "BUG POKéMON are cool.$"
-
-gUnknown_08620C19:: @ 8620C19
- .string "I go into the forest every$"
-
-gUnknown_08620C34:: @ 8620C34
- .string "day to catch BUG POKéMON.$"
-
-gUnknown_08620C4E:: @ 8620C4E
- .string "Daze and confuse!$"
-
-gUnknown_08620C60:: @ 8620C60
- .string "Ones with weird powers.$"
-
-gUnknown_08620C78:: @ 8620C78
- .string "I can see through exactly$"
-
-gUnknown_08620C92:: @ 8620C92
- .string "what you're thinking!$"
-
-gUnknown_08620CA8:: @ 8620CA8
- .string "Battle at full power.$"
-
-gUnknown_08620CBE:: @ 8620CBE
- .string "POKéMON of many mysteries.$"
-
-gUnknown_08620CD9:: @ 8620CD9
- .string "When we spoke, I was really$"
-
-gUnknown_08620CF5:: @ 8620CF5
- .string "using telepathy.$"
-
-gUnknown_08620D06:: @ 8620D06
- .string "Calm and collected.$"
-
-gUnknown_08620D1A:: @ 8620D1A
- .string "POKéMON of distinction.$"
-
-gUnknown_08620D32:: @ 8620D32
- .string "We enjoy a spot of tea$"
-
-gUnknown_08620D49:: @ 8620D49
- .string "every day. It's imported.$"
-
-gUnknown_08620D63:: @ 8620D63
- .string "I use my head to battle.$"
-
-gUnknown_08620D7C:: @ 8620D7C
- .string "I love any kind of POKéMON!$"
-
-gUnknown_08620D98:: @ 8620D98
- .string "My daddy gives me spending$"
-
-gUnknown_08620DB3:: @ 8620DB3
- .string "money if I ace a test.$"
-
-gUnknown_08620DCA:: @ 8620DCA
- .string "My knowledge rules!$"
-
-gUnknown_08620DDE:: @ 8620DDE
- .string "Any smart POKéMON!$"
-
-gUnknown_08620DF1:: @ 8620DF1
- .string "I want to be a POKéMON$"
-
-gUnknown_08620E08:: @ 8620E08
- .string "researcher in the future.$"
-
-gUnknown_08620E22:: @ 8620E22
- .string "We talk it over first.$"
-
-gUnknown_08620E39:: @ 8620E39
- .string "POKéMON that we both like.$"
-
-gUnknown_08620E54:: @ 8620E54
- .string "We're senior and junior$"
-
-gUnknown_08620E6C:: @ 8620E6C
- .string "students into POKéMON!$"
-
-gUnknown_08620E83:: @ 8620E83
- .string "Go for it, my dears!$"
-
-gUnknown_08620E98:: @ 8620E98
- .string "I have no likes or dislikes.$"
-
-gUnknown_08620EB5:: @ 8620EB5
- .string "While out shopping for$"
-
-gUnknown_08620ECC:: @ 8620ECC
- .string "supper, I battle too.$"
-
-gUnknown_08620EE2:: @ 8620EE2
- .string "I battle with love!$"
-
-gUnknown_08620EF6:: @ 8620EF6
- .string "A POKéMON raised with love!$"
-
-gUnknown_08620F12:: @ 8620F12
- .string "It's important to build$"
-
-gUnknown_08620F2A:: @ 8620F2A
- .string "trust with your POKéMON.$"
-
-gUnknown_08620F43:: @ 8620F43
- .string "I see through your moves!$"
-
-gUnknown_08620F5D:: @ 8620F5D
- .string "The essence of FIGHTING.$"
-
-gUnknown_08620F76:: @ 8620F76
- .string "I'm not ready to give way$"
-
-gUnknown_08620F90:: @ 8620F90
- .string "to the young yet!$"
-
-gUnknown_08620FA2:: @ 8620FA2
- .string "Attack while defending.$"
-
-gUnknown_08620FBA:: @ 8620FBA
- .string "The FIGHTING type.$"
-
-gUnknown_08620FCD:: @ 8620FCD
- .string "Being old, I have my own$"
-
-gUnknown_08620FE6:: @ 8620FE6
- .string "style of battling.$"
-
-gUnknown_08620FF9:: @ 8620FF9
- .string "I do what I can.$"
-
-gUnknown_0862100A:: @ 862100A
- .string "I use different types.$"
-
-gUnknown_08621021:: @ 8621021
- .string "I'm going to keep working$"
-
-gUnknown_0862103B:: @ 862103B
- .string "until I beat a GYM LEADER.$"
-
-gUnknown_08621056:: @ 8621056
- .string "I battle patiently.$"
-
-gUnknown_0862106A:: @ 862106A
- .string "WATER POKéMON to battle!$"
-
-gUnknown_08621083:: @ 8621083
- .string "I'm the world's only guy to$"
-
-gUnknown_0862109F:: @ 862109F
- .string "catch a huge POKéMON!$"
-
-gUnknown_086210B5:: @ 86210B5
- .string "Exploit the environment!$"
-
-gUnknown_086210CE:: @ 86210CE
- .string "All hail the WATER type!$"
-
-gUnknown_086210E7:: @ 86210E7
- .string "I won't be beaten by some$"
-
-gUnknown_08621101:: @ 8621101
- .string "beach bum SWIMMER!$"
-
-gUnknown_08621114:: @ 8621114
- .string "Speed above all!$"
-
-gUnknown_08621125:: @ 8621125
- .string "I use a speedy POKéMON.$"
-
-gUnknown_0862113D:: @ 862113D
- .string "A marathon is a challenge$"
-
-gUnknown_08621157:: @ 8621157
- .string "against your own self.$"
-
-gUnknown_0862116E:: @ 862116E
- .string "Defense is crucial.$"
-
-gUnknown_08621182:: @ 8621182
- .string "My POKéMON is solid.$"
-
-gUnknown_08621197:: @ 8621197
- .string "I started this for dieting,$"
-
-gUnknown_086211B3:: @ 86211B3
- .string "but I got right into it.$"
-
-gUnknown_086211CC:: @ 86211CC
- .string "Strike before stricken!$"
-
-gUnknown_086211E4:: @ 86211E4
- .string "A fast-running POKéMON!$"
-
-gUnknown_086211FC:: @ 86211FC
- .string "If you ran and ran, you'd$"
-
-gUnknown_08621216:: @ 8621216
- .string "become one with the wind.$"
-
-gUnknown_08621230:: @ 8621230
- .string "All-out offensive!$"
-
-gUnknown_08621243:: @ 8621243
- .string "WATER POKéMON rule!$"
-
-gUnknown_08621257:: @ 8621257
- .string "I must swim over 6 miles$"
-
-gUnknown_08621270:: @ 8621270
- .string "every day.$"
-
-gUnknown_0862127B:: @ 862127B
- .string "Push and push again!$"
-
-gUnknown_08621290:: @ 8621290
- .string "The strength of STEEL.$"
-
-gUnknown_086212A7:: @ 86212A7
- .string "If you're sweating, get$"
-
-gUnknown_086212BF:: @ 86212BF
- .string "fluids into you regularly.$"
-
-gUnknown_086212DA:: @ 86212DA
- .string "Draw the power of WATER.$"
-
-gUnknown_086212F3:: @ 86212F3
- .string "Toughened WATER POKéMON.$"
-
-gUnknown_0862130C:: @ 862130C
- .string "Training POKéMON is good,$"
-
-gUnknown_08621326:: @ 8621326
- .string "but don't neglect yourself.$"
-
-gUnknown_08621342:: @ 8621342
- .string "It's about POKéMON power!$"
-
-gUnknown_0862135C:: @ 862135C
- .string "See the power of DRAGONS!$"
-
-gUnknown_08621376:: @ 8621376
- .string "I'll become legendary as the$"
-
-gUnknown_08621393:: @ 8621393
- .string "strongest one day!$"
-
-gUnknown_086213A6:: @ 86213A6
- .string "I'll show you my technique!$"
-
-gUnknown_086213C2:: @ 86213C2
- .string "Elegantly wheeling BIRDS.$"
-
-gUnknown_086213DC:: @ 86213DC
- .string "My BIRD POKéMON, deliver my$"
-
-gUnknown_086213F8:: @ 86213F8
- .string "love to that girl!$"
-
-gUnknown_0862140B:: @ 862140B
- .string "You'll suffer from poison!$"
-
-gUnknown_08621426:: @ 8621426
- .string "Poisonous POKéMON.$"
-
-gUnknown_08621439:: @ 8621439
- .string "I undertake training so$"
-
-gUnknown_08621451:: @ 8621451
- .string "that I may become a ninja.$"
-
-gUnknown_0862146C:: @ 862146C
- .string "The first strike wins!$"
-
-gUnknown_08621483:: @ 8621483
- .string "Speedy FIGHTING type.$"
-
-gUnknown_08621499:: @ 8621499
- .string "If my POKéMON lose,$"
-
-gUnknown_086214AD:: @ 86214AD
- .string "I'll carry on the fight!$"
-
-gUnknown_086214C6:: @ 86214C6
- .string "Go, go, my POKéMON!$"
-
-gUnknown_086214DA:: @ 86214DA
- .string "I'll raise anything.$"
-
-gUnknown_086214EF:: @ 86214EF
- .string "UV rays are your skin's$"
-
-gUnknown_08621507:: @ 8621507
- .string "enemy. Get protected.$"
-
-gUnknown_0862151D:: @ 862151D
- .string "No mercy!$"
-
-gUnknown_08621527:: @ 8621527
- .string "Cute WATER POKéMON.$"
-
-gUnknown_0862153B:: @ 862153B
- .string "I have too many fans.$"
-
-gUnknown_08621551:: @ 8621551
- .string "I was interviewed on TV.$"
-
-gUnknown_0862156A:: @ 862156A
- .string "I think about this & that.$"
-
-gUnknown_08621585:: @ 8621585
- .string "I like all POKéMON.$"
-
-gUnknown_08621599:: @ 8621599
- .string "What lies beyond that$"
-
-gUnknown_086215AF:: @ 86215AF
- .string "yonder hill?$"
-
-gUnknown_086215BC:: @ 86215BC
- .string "We battle together!$"
-
-gUnknown_086215D0:: @ 86215D0
- .string "We train together!$"
-
-gUnknown_086215E3:: @ 86215E3
- .string "We like the same POKéMON,$"
-
-gUnknown_086215FD:: @ 86215FD
- .string "but different desserts.$"
-
-gUnknown_08621615:: @ 8621615
- .string "I force things with power!$"
-
-gUnknown_08621630:: @ 8621630
- .string "WATER and FIGHTING types.$"
-
-gUnknown_0862164A:: @ 862164A
- .string "Seamen are rough spirits!$"
-
-gUnknown_08621664:: @ 8621664
- .string "Any complaints?$"
-
-gUnknown_08621674:: @ 8621674
- .string "Up for a fight anytime!$"
-
-gUnknown_0862168C:: @ 862168C
- .string "WATER POKéMON are my faves!$"
-
-gUnknown_086216A8:: @ 86216A8
- .string "If you want to shout loud,$"
-
-gUnknown_086216C3:: @ 86216C3
- .string "suck in air with your belly!$"
-
-gUnknown_086216E0:: @ 86216E0
- .string "Protect POKéMON from harm.$"
-
-gUnknown_086216FB:: @ 86216FB
- .string "I love rare POKéMON.$"
-
-gUnknown_08621710:: @ 8621710
- .string "I want to collect all the$"
-
-gUnknown_0862172A:: @ 862172A
- .string "world's rare POKéMON.$"
-
-gUnknown_08621740:: @ 8621740
- .string "I count on power.$"
-
-gUnknown_08621752:: @ 8621752
- .string "POKéMON are my children.$"
-
-gUnknown_0862176B:: @ 862176B
- .string "It takes knowledge and$"
-
-gUnknown_08621782:: @ 8621782
- .string "love to raise POKéMON.$"
-
-gUnknown_08621799:: @ 8621799
- .string "Full-on attack!$"
-
-gUnknown_086217A9:: @ 86217A9
- .string "Anything. I'll raise it.$"
-
-gUnknown_086217C2:: @ 86217C2
- .string "I give them {POKEBLOCK}S for$"
-
-gUnknown_086217D9:: @ 86217D9
- .string "going after CONTEST titles.$"
-
-gUnknown_086217F5:: @ 86217F5
- .string "I raise POKéMON with care.$"
-
-gUnknown_08621810:: @ 8621810
- .string "Fun-to-raise POKéMON.$"
-
-gUnknown_08621826:: @ 8621826
- .string "Treat every POKéMON you$"
-
-gUnknown_0862183E:: @ 862183E
- .string "meet with respect.$"
-
-gUnknown_08621851:: @ 8621851
- .string "I believe in my POKéMON.$"
-
-gUnknown_0862186A:: @ 862186A
- .string "I like strong POKéMON.$"
-
-gUnknown_08621881:: @ 8621881
- .string "I'm training for rescue$"
-
-gUnknown_08621899:: @ 8621899
- .string "work with my POKéMON.$"
-
-gUnknown_086218AF:: @ 86218AF
- .string "Attack in waves!$"
-
-gUnknown_086218C0:: @ 86218C0
- .string "I use different types.$"
-
-gUnknown_086218D7:: @ 86218D7
- .string "Those who destroy nature$"
-
-gUnknown_086218F0:: @ 86218F0
- .string "must never be forgiven!$"
-
-gUnknown_08621908:: @ 8621908
- .string "I'll show you some guts!$"
-
-gUnknown_08621921:: @ 8621921
- .string "Cute POKéMON are my faves!$"
-
-gUnknown_0862193C:: @ 862193C
- .string "After a battle, I always$"
-
-gUnknown_08621955:: @ 8621955
- .string "bathe with my POKéMON.$"
-
-gUnknown_0862196C:: @ 862196C
- .string "Lightning-fast attack!$"
-
-gUnknown_08621983:: @ 8621983
- .string "BUG POKéMON are number 1!$"
-
-gUnknown_0862199D:: @ 862199D
- .string "If you want to catch BUG$"
-
-gUnknown_086219B6:: @ 86219B6
- .string "POKéMON, wake up early.$"
-
-gUnknown_086219CE:: @ 86219CE
- .string "I battle with power.$"
-
-gUnknown_086219E3:: @ 86219E3
- .string "Hard-bodied POKéMON.$"
-
-gUnknown_086219F8:: @ 86219F8
- .string "I've been planning a month$"
-
-gUnknown_08621A13:: @ 8621A13
- .string "for today's hike.$"
-
-gUnknown_08621A25:: @ 8621A25
- .string "I like it hot!$"
-
-gUnknown_08621A34:: @ 8621A34
- .string "Hot POKéMON!$"
-
-gUnknown_08621A41:: @ 8621A41
- .string "As much as I love POKéMON,$"
-
-gUnknown_08621A5C:: @ 8621A5C
- .string "I surely like hiking!$"
-
-gUnknown_08621A72:: @ 8621A72
- .string "Lovey-dovey strategy!$"
-
-gUnknown_08621A88:: @ 8621A88
- .string "Lovey-dovey POKéMON!$"
-
-gUnknown_08621A9D:: @ 8621A9D
- .string "We're lovey-dovey!$"
-
-gUnknown_08621AB0:: @ 8621AB0
- .string "Forever lovey-dovey!$"
-
-gUnknown_08621AC5:: @ 8621AC5
- .string "We let it all hang out.$"
-
-gUnknown_08621ADD:: @ 8621ADD
- .string "The 1st POKéMON I caught.$"
-
-gUnknown_08621AF7:: @ 8621AF7
- .string "POKéMON and I have grown$"
-
-gUnknown_08621B10:: @ 8621B10
- .string "stronger together.$"
-
-gUnknown_08621B23:: @ 8621B23
- .string "ROCK-type power attack.$"
-
-gUnknown_08621B3B:: @ 8621B3B
- .string "I prefer rock-hard POKéMON.$"
-
-gUnknown_08621B57:: @ 8621B57
- .string "A LEADER of a big GYM bears$"
-
-gUnknown_08621B73:: @ 8621B73
- .string "a lot of responsibility.$"
-
-gUnknown_08621B8C:: @ 8621B8C
- .string "Direct physical action!$"
-
-gUnknown_08621BA4:: @ 8621BA4
- .string "FIGHTING POKéMON rule!$"
-
-gUnknown_08621BBB:: @ 8621BBB
- .string "The world awaits me as the$"
-
-gUnknown_08621BD6:: @ 8621BD6
- .string "next big wave!$"
-
-gUnknown_08621BE5:: @ 8621BE5
- .string "I choose to electrify.$"
-
-gUnknown_08621BFC:: @ 8621BFC
- .string "Get shocked by electricity!$"
-
-gUnknown_08621C18:: @ 8621C18
- .string "One must never throw a$"
-
-gUnknown_08621C2F:: @ 8621C2F
- .string "match. Even I must not.$"
-
-gUnknown_08621C47:: @ 8621C47
- .string "Battle aggressively.$"
-
-gUnknown_08621C5C:: @ 8621C5C
- .string "Burn with passion!$"
-
-gUnknown_08621C6F:: @ 8621C6F
- .string "Completely wash away daily$"
-
-gUnknown_08621C8A:: @ 8621C8A
- .string "fatigue in hot springs!$"
-
-gUnknown_08621CA2:: @ 8621CA2
- .string "I flexibly adapt my style.$"
-
-gUnknown_08621CBD:: @ 8621CBD
- .string "Grown in a balanced manner.$"
-
-gUnknown_08621CD9:: @ 8621CD9
- .string "I walk the 30 minutes from$"
-
-gUnknown_08621CF4:: @ 8621CF4
- .string "home to here every day.$"
-
-gUnknown_08621D0C:: @ 8621D0C
- .string "I take advantage of speed.$"
-
-gUnknown_08621D27:: @ 8621D27
- .string "Graceful sky dancers.$"
-
-gUnknown_08621D3D:: @ 8621D3D
- .string "The ultimate would be to$"
-
-gUnknown_08621D56:: @ 8621D56
- .string "live as one with nature.$"
-
-gUnknown_08621D6F:: @ 8621D6F
- .string "We battle in cooperation.$"
-
-gUnknown_08621D89:: @ 8621D89
- .string "Always friendly POKéMON.$"
-
-gUnknown_08621DA2:: @ 8621DA2
- .string "Papa has trouble telling$"
-
-gUnknown_08621DBB:: @ 8621DBB
- .string "the two of us apart!$"
-
-gUnknown_08621DD0:: @ 8621DD0
- .string "I use splendid waterpower.$"
-
-gUnknown_08621DEB:: @ 8621DEB
- .string "POKéMON of elegance!$"
-
-gUnknown_08621E00:: @ 8621E00
- .string "The adulation of beautiful$"
-
-gUnknown_08621E1B:: @ 8621E1B
- .string "ladies fills me with energy!$"
-
-gUnknown_08621E38:: @ 8621E38
- .string "Offense over defense!$"
-
-gUnknown_08621E4E:: @ 8621E4E
- .string "The DARK side's beauties.$"
-
-gUnknown_08621E68:: @ 8621E68
- .string "They said I was a punk, but$"
-
-gUnknown_08621E84:: @ 8621E84
- .string "I'm one of the ELITE FOUR!$"
-
-gUnknown_08621E9F:: @ 8621E9F
- .string "Confuse and confound.$"
-
-gUnknown_08621EB5:: @ 8621EB5
- .string "There's nothing definite.$"
-
-gUnknown_08621ECF:: @ 8621ECF
- .string "I wonder how my grandma at$"
-
-gUnknown_08621EEA:: @ 8621EEA
- .string "MT. PYRE is doing?$"
-
-gUnknown_08621EFD:: @ 8621EFD
- .string "I use items for help.$"
-
-gUnknown_08621F13:: @ 8621F13
- .string "Flaming passion in icy cold!$"
-
-gUnknown_08621F30:: @ 8621F30
- .string "The ICE type can be better$"
-
-gUnknown_08621F4B:: @ 8621F4B
- .string "trained in this hot land.$"
-
-gUnknown_08621F65:: @ 8621F65
- .string "Harness strong abilities.$"
-
-gUnknown_08621F7F:: @ 8621F7F
- .string "The raw power of DRAGONS!$"
-
-gUnknown_08621F99:: @ 8621F99
- .string "I dedicate myself to the$"
-
-gUnknown_08621FB2:: @ 8621FB2
- .string "POKéMON that saved me.$"
-
-gUnknown_08621FC9:: @ 8621FC9
- .string "Dignity and respect.$"
-
-gUnknown_08621FDE:: @ 8621FDE
- .string "I prefer POKéMON of grace.$"
-
-gUnknown_08621FF9:: @ 8621FF9
- .string "I represent beauty as$"
-
-gUnknown_0862200F:: @ 862200F
- .string "well as intelligence.$"
-
-.align 2
-
-@ strategy, mon text, introduction1, introduction2
-gUnknown_08622028:: @ 8622028
- .4byte gUnknown_08620390, gUnknown_086203AA, gUnknown_086203C2, gUnknown_086203DB
- .4byte gUnknown_086203F2, gUnknown_0862040D, gUnknown_08620428, gUnknown_08620444
- .4byte gUnknown_08620456, gUnknown_0862046C, gUnknown_08620481, gUnknown_0862049C
- .4byte gUnknown_086204B0, gUnknown_086204C7, gUnknown_086204DD, gUnknown_086204F9
- .4byte gUnknown_0862050E, gUnknown_0862052B, gUnknown_08620546, gUnknown_08620562
- .4byte gUnknown_0862057D, gUnknown_08620592, gUnknown_086205AC, gUnknown_086205C6
- .4byte gUnknown_086205DD, gUnknown_086205F8, gUnknown_08620612, gUnknown_0862062F
- .4byte gUnknown_08620638, gUnknown_08620654, gUnknown_08620668, gUnknown_08620681
- .4byte gUnknown_08620693, gUnknown_086206A7, gUnknown_086206BC, gUnknown_086206D5
- .4byte gUnknown_086206E7, gUnknown_086206FF, gUnknown_08620717, gUnknown_08620730
- .4byte gUnknown_0862073D, gUnknown_0862074E, gUnknown_0862075D, gUnknown_08620779
- .4byte gUnknown_0862078D, gUnknown_086207A9, gUnknown_086207BC, gUnknown_086207D7
- .4byte gUnknown_086207F4, gUnknown_0862080A, gUnknown_0862081B, gUnknown_08620833
- .4byte gUnknown_0862084B, gUnknown_08620863, gUnknown_0862087C, gUnknown_08620896
- .4byte gUnknown_086208AA, gUnknown_086208C3, gUnknown_086208DC, gUnknown_086208F1
- .4byte gUnknown_08620909, gUnknown_0862091C, gUnknown_0862092E, gUnknown_0862094A
- .4byte gUnknown_08620963, gUnknown_08620979, gUnknown_08620988, gUnknown_086209A4
- .4byte gUnknown_086209B4, gUnknown_086209CA, gUnknown_086209E3, gUnknown_086209FD
- .4byte gUnknown_08620A18, gUnknown_08620A31, gUnknown_08620A4B, gUnknown_08620A66
- .4byte gUnknown_08620A78, gUnknown_08620A8C, gUnknown_08620A9E, gUnknown_08620AB8
- .4byte gUnknown_08620AD2, gUnknown_08620AE4, gUnknown_08620AFB, gUnknown_08620B16
- .4byte gUnknown_08620B32, gUnknown_08620B4C, gUnknown_08620B64, gUnknown_08620B7F
- .4byte gUnknown_08620B8C, gUnknown_08620BA6, gUnknown_08620BC0, gUnknown_08620BD8
- .4byte gUnknown_08620BF2, gUnknown_08620C03, gUnknown_08620C19, gUnknown_08620C34
- .4byte gUnknown_08620C4E, gUnknown_08620C60, gUnknown_08620C78, gUnknown_08620C92
- .4byte gUnknown_08620CA8, gUnknown_08620CBE, gUnknown_08620CD9, gUnknown_08620CF5
- .4byte gUnknown_08620D06, gUnknown_08620D1A, gUnknown_08620D32, gUnknown_08620D49
- .4byte gUnknown_08620D63, gUnknown_08620D7C, gUnknown_08620D98, gUnknown_08620DB3
- .4byte gUnknown_08620DCA, gUnknown_08620DDE, gUnknown_08620DF1, gUnknown_08620E08
- .4byte gUnknown_08620E22, gUnknown_08620E39, gUnknown_08620E54, gUnknown_08620E6C
- .4byte gUnknown_08620E83, gUnknown_08620E98, gUnknown_08620EB5, gUnknown_08620ECC
- .4byte gUnknown_08620EE2, gUnknown_08620EF6, gUnknown_08620F12, gUnknown_08620F2A
- .4byte gUnknown_08620F43, gUnknown_08620F5D, gUnknown_08620F76, gUnknown_08620F90
- .4byte gUnknown_08620FA2, gUnknown_08620FBA, gUnknown_08620FCD, gUnknown_08620FE6
- .4byte gUnknown_08620FF9, gUnknown_0862100A, gUnknown_08621021, gUnknown_0862103B
- .4byte gUnknown_08621056, gUnknown_0862106A, gUnknown_08621083, gUnknown_0862109F
- .4byte gUnknown_086210B5, gUnknown_086210CE, gUnknown_086210E7, gUnknown_08621101
- .4byte gUnknown_08621114, gUnknown_08621125, gUnknown_0862113D, gUnknown_08621157
- .4byte gUnknown_0862116E, gUnknown_08621182, gUnknown_08621197, gUnknown_086211B3
- .4byte gUnknown_086211CC, gUnknown_086211E4, gUnknown_086211FC, gUnknown_08621216
- .4byte gUnknown_08621230, gUnknown_08621243, gUnknown_08621257, gUnknown_08621270
- .4byte gUnknown_0862127B, gUnknown_08621290, gUnknown_086212A7, gUnknown_086212BF
- .4byte gUnknown_086212DA, gUnknown_086212F3, gUnknown_0862130C, gUnknown_08621326
- .4byte gUnknown_08621342, gUnknown_0862135C, gUnknown_08621376, gUnknown_08621393
- .4byte gUnknown_086213A6, gUnknown_086213C2, gUnknown_086213DC, gUnknown_086213F8
- .4byte gUnknown_0862140B, gUnknown_08621426, gUnknown_08621439, gUnknown_08621451
- .4byte gUnknown_0862146C, gUnknown_08621483, gUnknown_08621499, gUnknown_086214AD
- .4byte gUnknown_086214C6, gUnknown_086214DA, gUnknown_086214EF, gUnknown_08621507
- .4byte gUnknown_0862151D, gUnknown_08621527, gUnknown_0862153B, gUnknown_08621551
- .4byte gUnknown_0862156A, gUnknown_08621585, gUnknown_08621599, gUnknown_086215AF
- .4byte gUnknown_086215BC, gUnknown_086215D0, gUnknown_086215E3, gUnknown_086215FD
- .4byte gUnknown_08621615, gUnknown_08621630, gUnknown_0862164A, gUnknown_08621664
- .4byte gUnknown_08621674, gUnknown_0862168C, gUnknown_086216A8, gUnknown_086216C3
- .4byte gUnknown_086216E0, gUnknown_086216FB, gUnknown_08621710, gUnknown_0862172A
- .4byte gUnknown_08621740, gUnknown_08621752, gUnknown_0862176B, gUnknown_08621782
- .4byte gUnknown_08621799, gUnknown_086217A9, gUnknown_086217C2, gUnknown_086217D9
- .4byte gUnknown_086217F5, gUnknown_08621810, gUnknown_08621826, gUnknown_0862183E
- .4byte gUnknown_08621851, gUnknown_0862186A, gUnknown_08621881, gUnknown_08621899
- .4byte gUnknown_086218AF, gUnknown_086218C0, gUnknown_086218D7, gUnknown_086218F0
- .4byte gUnknown_08621908, gUnknown_08621921, gUnknown_0862193C, gUnknown_08621955
- .4byte gUnknown_0862196C, gUnknown_08621983, gUnknown_0862199D, gUnknown_086219B6
- .4byte gUnknown_086219CE, gUnknown_086219E3, gUnknown_086219F8, gUnknown_08621A13
- .4byte gUnknown_08621A25, gUnknown_08621A34, gUnknown_08621A41, gUnknown_08621A5C
- .4byte gUnknown_08621A72, gUnknown_08621A88, gUnknown_08621A9D, gUnknown_08621AB0
- .4byte gUnknown_08621AC5, gUnknown_08621ADD, gUnknown_08621AF7, gUnknown_08621B10
- .4byte gUnknown_08621B23, gUnknown_08621B3B, gUnknown_08621B57, gUnknown_08621B73
- .4byte gUnknown_08621B8C, gUnknown_08621BA4, gUnknown_08621BBB, gUnknown_08621BD6
- .4byte gUnknown_08621BE5, gUnknown_08621BFC, gUnknown_08621C18, gUnknown_08621C2F
- .4byte gUnknown_08621C47, gUnknown_08621C5C, gUnknown_08621C6F, gUnknown_08621C8A
- .4byte gUnknown_08621CA2, gUnknown_08621CBD, gUnknown_08621CD9, gUnknown_08621CF4
- .4byte gUnknown_08621D0C, gUnknown_08621D27, gUnknown_08621D3D, gUnknown_08621D56
- .4byte gUnknown_08621D6F, gUnknown_08621D89, gUnknown_08621DA2, gUnknown_08621DBB
- .4byte gUnknown_08621DD0, gUnknown_08621DEB, gUnknown_08621E00, gUnknown_08621E1B
- .4byte gUnknown_08621E38, gUnknown_08621E4E, gUnknown_08621E68, gUnknown_08621E84
- .4byte gUnknown_08621E9F, gUnknown_08621EB5, gUnknown_08621ECF, gUnknown_08621EEA
- .4byte gUnknown_08621EFD, gUnknown_08621F13, gUnknown_08621F30, gUnknown_08621F4B
- .4byte gUnknown_08621F65, gUnknown_08621F7F, gUnknown_08621F99, gUnknown_08621FB2
- .4byte gUnknown_08621FC9, gUnknown_08621FDE, gUnknown_08621FF9, gUnknown_0862200F
-
-gUnknown_08622508:: @ 8622508
- .byte 0, 2
-
-gUnknown_0862250A:: @ 862250A
- .byte 0, 1, 2, 0, 0, 0
-
-// pokenav_unk_4.s
-gUnknown_08622510:: @ 8622510
- .incbin "graphics/pokenav/ui_matchcall.gbapal"
-
-gUnknown_08622530:: @ 8622530
- .incbin "graphics/pokenav/ui_matchcall.4bpp.lz"
-
-gUnknown_086225D4:: @ 86225D4
- .incbin "graphics/pokenav/ui_matchcall.bin.lz"
-
-gUnknown_08622698:: @ 8622698
- .incbin "graphics/pokenav/arrow2.gbapal"
-
-gUnknown_086226B8:: @ 86226B8
- .incbin "graphics/pokenav/arrow2.4bpp.lz"
-
-gUnknown_086226E0:: @ 86226E0
- .incbin "graphics/pokenav/86226E0.gbapal"
-
-gUnknown_08622700:: @ 8622700
- .incbin "graphics/pokenav/8622700.gbapal"
-
-gUnknown_08622720:: @ 8622720
- .incbin "graphics/pokenav/pokeball_matchcall.gbapal"
-
-gUnknown_08622760:: @ 8622760
- .incbin "graphics/pokenav/pokeball_matchcall.4bpp.lz"
-
-gUnknown_0862278C:: @ 862278C
- .4byte 0x11FD
- .4byte 0x20206A
-
-gUnknown_08622794:: @ 8622794
- .4byte 0x00003077
-
-gUnknown_08622798:: @ 8622798
- .4byte NULL
- .4byte sub_81CB510
- .4byte sub_81CB588
- .4byte sub_81CB600
- .4byte sub_81CB678
- .4byte sub_81CB6F0
- .4byte sub_81CB734
- .4byte sub_81CB75C
- .4byte sub_81CB7A0
- .4byte sub_81CB824
- .4byte sub_81CB888
- .4byte sub_81CB93C
- .4byte sub_81CBAD4
- .4byte sub_81CB9C8
- .4byte sub_81CBA68
- .4byte sub_81CBB74
-
-gUnknown_086227D8:: @ 86227D8
- window_template 2, 0, 5, 11, 2, 2, 16
-
-gUnknown_086227E0:: @ 86227E0
- window_template 2, 0, 9, 11, 8, 2, 0x26
-
-gUnknown_086227E8:: @ 86227E8
- .4byte gUnknown_085EC017
- .4byte gUnknown_085EC01C
- .4byte gUnknown_085EC022
-
-gUnknown_086227F4:: @ 86227F4
- .string "·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·\p"
- .string "$"
- .align 2
-
-gUnknown_08622808:: @ 8622808
- window_template 1, 1, 12, 0x1C, 4, 1, 10
-
-gUnknown_08622810:: @ 8622810
- obj_tiles gUnknown_086226B8, 0x40, 7
-
-gUnknown_08622818:: @ 8622818
- obj_pal gUnknown_08622698, 12
- null_obj_pal
-
-gUnknown_08622828:: @ 8622828
- .2byte 0x8000
- .2byte 0x0
- .2byte 0x400
- .2byte 0x0
-
-gUnknown_08622830:: @ 8622830
- spr_template 7, 12, gUnknown_08622828, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81CC34C
-
-gUnknown_08622848:: @ 8622848
- .2byte 0x0
- .2byte 0xC000
- .2byte 0x400
- .2byte 0x0
-
-gUnknown_08622850:: @ 8622850
- spr_template 8, 13, gUnknown_08622848, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-// pokenav_unk_5.s
-gUnknown_08622868:: @ 8622868
- .incbin "graphics/pokenav/8622868.gbapal"
-
-gUnknown_08622888:: @ 8622888
- .incbin "graphics/pokenav/zoom_tiles.4bpp.lz"
-
-gUnknown_08622A7C:: @ 8622A7C
- .incbin "graphics/pokenav/city_maps/lavaridge_0.bin.lz"
-
-gUnknown_08622AC0:: @ 8622AC0
- .incbin "graphics/pokenav/city_maps/fallarbor_0.bin.lz"
-
-gUnknown_08622B08:: @ 8622B08
- .incbin "graphics/pokenav/city_maps/fortree_0.bin.lz"
-
-gUnknown_08622B58:: @ 8622B58
- .incbin "graphics/pokenav/city_maps/slateport_0.bin.lz"
-
-gUnknown_08622BB8:: @ 8622BB8
- .incbin "graphics/pokenav/city_maps/slateport_1.bin.lz"
-
-gUnknown_08622C04:: @ 8622C04
- .incbin "graphics/pokenav/city_maps/rustboro_0.bin.lz"
-
-gUnknown_08622C58:: @ 8622C58
- .incbin "graphics/pokenav/city_maps/rustboro_1.bin.lz"
-
-gUnknown_08622CAC:: @ 8622CAC
- .incbin "graphics/pokenav/city_maps/pacifidlog_0.bin.lz"
-
-gUnknown_08622CEC:: @ 8622CEC
- .incbin "graphics/pokenav/city_maps/mauville_0.bin.lz"
-
-gUnknown_08622D44:: @ 8622D44
- .incbin "graphics/pokenav/city_maps/mauville_1.bin.lz"
-
-gUnknown_08622D98:: @ 8622D98
- .incbin "graphics/pokenav/city_maps/oldale_0.bin.lz"
-
-gUnknown_08622DC8:: @ 8622DC8
- .incbin "graphics/pokenav/city_maps/lilycove_0.bin.lz"
-
-gUnknown_08622E14:: @ 8622E14
- .incbin "graphics/pokenav/city_maps/lilycove_1.bin.lz"
-
-gUnknown_08622E6C:: @ 8622E6C
- .incbin "graphics/pokenav/city_maps/littleroot_0.bin.lz"
-
-gUnknown_08622E9C:: @ 8622E9C
- .incbin "graphics/pokenav/city_maps/dewford_0.bin.lz"
-
-gUnknown_08622ED4:: @ 8622ED4
- .incbin "graphics/pokenav/city_maps/sootopolis_0.bin.lz"
-
-gUnknown_08622F14:: @ 8622F14
- .incbin "graphics/pokenav/city_maps/ever_grande_0.bin.lz"
-
-gUnknown_08622F5C:: @ 8622F5C
- .incbin "graphics/pokenav/city_maps/ever_grande_1.bin.lz"
-
-gUnknown_08622FA0:: @ 8622FA0
- .incbin "graphics/pokenav/city_maps/verdanturf_0.bin.lz"
-
-gUnknown_08622FD8:: @ 8622FD8
- .incbin "graphics/pokenav/city_maps/mossdeep_0.bin.lz"
-
-gUnknown_08623020:: @ 8623020
- .incbin "graphics/pokenav/city_maps/mossdeep_1.bin.lz"
-
-gUnknown_0862307C:: @ 862307C
- .incbin "graphics/pokenav/city_maps/petalburg_0.bin.lz"
-
-gUnknown_086230D8:: @ 86230D8
- .4byte 0x11F5
- .4byte 0x206A
- .4byte 0x3402
-
-gUnknown_086230E4:: @ 86230E4
- .4byte NULL
- .4byte sub_81CC848
- .4byte sub_81CC878
- .4byte sub_81CC8D8
- .4byte sub_81CC95C
-
-gUnknown_086230F8:: @ 86230F8
- obj_tiles gHoennMapZoomIcons_Gfx, 0x800, 6
-
-gUnknown_08623100:: @ 8623100
- obj_pal gHoennMapZoomIcons_Pal, 11
- null_obj_pal
-
-gUnknown_08623110:: @ 8623110
- .byte 1
- .byte 17
- .byte 4
- .byte 12
- .byte 13
- .byte 1
- .2byte 0x4C
-
-gUnknown_08623118:: @ 8623118
- .4byte 0, gUnknown_08622E6C
- .4byte 1, gUnknown_08622D98
- .4byte 2, gUnknown_08622E9C
- .4byte 3, gUnknown_08622A7C
- .4byte 4, gUnknown_08622AC0
- .4byte 5, gUnknown_08622FA0
- .4byte 6, gUnknown_08622CAC
- .4byte 7, gUnknown_0862307C
- .4byte 8, gUnknown_08622B58
- .4byte 0x10008, gUnknown_08622BB8
- .4byte 9, gUnknown_08622D44
- .4byte 0x10009, gUnknown_08622CEC
- .4byte 0xA, gUnknown_08622C04
- .4byte 0x1000A, gUnknown_08622C58
- .4byte 0xB, gUnknown_08622B08
- .4byte 0xC, gUnknown_08622E14
- .4byte 0x1000C, gUnknown_08622DC8
- .4byte 0xD, gUnknown_08623020
- .4byte 0x1000D, gUnknown_08622FD8
- .4byte 0xE, gUnknown_08622ED4
- .4byte 0xF, gUnknown_08622F14
- .4byte 0x1000F, gUnknown_08622F5C
-
-gUnknown_086231C8:: @ 86231C8
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x400
- .2byte 0x0
-
-gUnknown_086231D0:: @ 86231D0
- spr_template 6, 11, gUnknown_086231C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81CCEF4
-
-// pokenav_unk_6.s
-// <none>
-
-// pokenav_unk_7.s
-gUnknown_086231E8:: @ 86231E8
- .incbin "graphics/pokenav/86231E8.gbapal"
-
-gUnknown_08623208:: @ 8623208
- .incbin "graphics/pokenav/8623208.gbapal"
-
-gUnknown_08623228:: @ 8623228
- .incbin "graphics/pokenav/8623228.4bpp.lz"
-
-gUnknown_0862323C:: @ 862323C
- .incbin "graphics/pokenav/862323C.bin.lz"
-
-gUnknown_08623338:: @ 8623338
- .incbin "graphics/pokenav/8623338.gbapal"
-
-gUnknown_08623358:: @ 8623358
- .4byte 0x11F5
- .4byte 0x21DE
- .4byte 0x31EB
-
-gUnknown_08623364:: @ 8623364
- window_template 1, 13, 1, 13, 4, 15, 2
-
-gUnknown_0862336C:: @ 862336C
- window_template 1, 1, 6, 7, 2, 15, 0x36
-
-gUnknown_08623374:: @ 8623374
- window_template 1, 1, 0x1C, 5, 2, 15, 0x44
-
-gUnknown_0862337C:: @ 862337C
- window_template 1, 13, 0x1C, 3, 2, 15, 0x44
-
-// pokenav_unk_8.s
-gUnknown_08623384:: @ 8623384
- .4byte NULL
- .4byte sub_81CE37C
- .4byte sub_81CE2D0
- .4byte sub_81CE4D8
- .4byte sub_81CE5E4
- .4byte sub_81CE6BC
- .4byte sub_81CE700
-
-gUnknown_086233A0:: @ 86233A0
- .4byte 0x16, 0x17, 0x18, 0x21, 0x2F
-
-gUnknown_086233B4:: @ 86233B4
- .4byte sub_81CF134
- .4byte sub_81CF1C4
- .4byte sub_81CF1D8
- .4byte sub_81CF278
-
-gUnknown_086233C4:: @ 86233C4
- .incbin "graphics/pokenav/condition_search2.gbapal"
-
-gUnknown_086233E4:: @ 86233E4
- .incbin "graphics/pokenav/condition_search2.4bpp.lz"
-
-gUnknown_086234AC:: @ 86234AC
- .incbin "graphics/pokenav/condition_search2.bin.lz"
-
-gUnknown_08623570:: @ 8623570
- .incbin "graphics/pokenav/8623570.gbapal"
-
-gUnknown_08623590:: @ 8623590
- .4byte 0x2065
-
-gUnknown_08623594:: @ 8623594
- .4byte 0x307A
-
-gUnknown_08623598:: @ 8623598
- .4byte NULL
- .4byte sub_81CF578
- .4byte sub_81CF5F0
- .4byte sub_81CF668
- .4byte sub_81CF6E0
- .4byte sub_81CF758
- .4byte sub_81CF798
-
-gUnknown_086235B4:: @ 86235B4
- window_template 1, 1, 6, 7, 2, 1, 20
-
-gUnknown_086235BC:: @ 86235BC
- .string "{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}$"
- .align 2
-
-gUnknown_086235C8:: @ 86235C8
- .string "{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}$"
- .align 2
-
-gUnknown_086235D4:: @ 86235D4
- .string "{UNK_SPACER}$"
- .align 2
-
-// pokenav_unk_9.s
-gUnknown_086235D8:: @ 86235D8
- .4byte sub_81CFB8C
- .4byte sub_81CFC2C
- .4byte sub_81CFC40
-
-gUnknown_086235E4:: @ 86235E4
- .incbin "graphics/pokenav/ui_ribbons.gbapal"
-
-gUnknown_08623604:: @ 8623604
- .incbin "graphics/pokenav/ui_ribbons.4bpp.lz"
-
-gUnknown_086236CC:: @ 86236CC
- .incbin "graphics/pokenav/ui_ribbons.bin.lz"
-
-gUnknown_08623790:: @ 8623790
- .incbin "graphics/pokenav/8623790.gbapal"
-
-gUnknown_086237B0:: @ 86237B0
- .4byte 0x2065
-
-gUnknown_086237B4:: @ 86237B4
- .4byte 0x307A
-
-gUnknown_086237B8:: @ 86237B8
- .4byte NULL
- .4byte sub_81CFFFC
- .4byte sub_81D0074
- .4byte sub_81D00EC
- .4byte sub_81D0164
- .4byte sub_81D01DC
- .4byte sub_81D021C
-
-gUnknown_086237D4:: @ 86237D4
- window_template 1, 1, 6, 7, 2, 1, 20
-
-gUnknown_086237DC:: @ 86237DC
- .string "{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}$"
- .align 2
-
-gUnknown_086237E8:: @ 86237E8
- .string "{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}$"
- .align 2
-
-gUnknown_086237F4:: @ 86237F4
- .string "{UNK_SPACER}$"
- .align 2
-
-// pokenav_unk_10.s
-gUnknown_086237F8:: @ 86237F8
- .byte 1, 1, 0, 0
- .byte 3, 4, 1, 0
- .byte 3, 4, 5, 0
- .byte 3, 4, 9, 0
- .byte 3, 4, 13, 0
- .byte 3, 4, 17, 0
- .byte 1, 1, 21, 0
- .byte 1, 1, 22, 0
- .byte 1, 1, 23, 0
- .byte 1, 1, 24, 0
- .byte 1, 1, 25, 1
- .byte 1, 1, 26, 1
- .byte 1, 1, 27, 1
- .byte 1, 1, 28, 1
- .byte 1, 1, 29, 1
- .byte 1, 1, 30, 1
- .byte 1, 1, 31, 1
-
-@ 862383C
- .include "data/text/ribbon_descriptions.inc"
-
-@ 8623A74
- .include "data/text/gift_ribbon_descriptions.inc"
-
-gUnknown_08623FF8:: @ 8623FF8
- .incbin "graphics/pokenav/ribbons_icon1.gbapal"
-
-gUnknown_08624018:: @ 8624018
- .incbin "graphics/pokenav/ribbons_icon2.gbapal"
-
-gUnknown_08624038:: @ 8624038
- .incbin "graphics/pokenav/ribbons_icon3.gbapal"
-
-gUnknown_08624058:: @ 8624058
- .incbin "graphics/pokenav/ribbons_icon4.gbapal"
-
-gUnknown_08624078:: @ 8624078
- .incbin "graphics/pokenav/ribbons_icon5.gbapal"
-
-gUnknown_08624098:: @ 8624098
- .incbin "graphics/pokenav/8624098.gbapal"
-
-gUnknown_086240B8:: @ 86240B8
- .incbin "graphics/pokenav/ribbons_icon.4bpp.lz"
-
-gUnknown_08624280:: @ 8624280
- .incbin "graphics/pokenav/ribbons_icon_big.4bpp.lz"
-
-gUnknown_08624B98:: @ 8624B98
- .4byte 0x107D
- .4byte 0x2066
-
-gUnknown_08624BA0:: @ 8624BA0
- .4byte NULL
- .4byte sub_81D0C84
- .4byte sub_81D0D2C
- .4byte sub_81D0D8C
- .4byte sub_81D0E00
- .4byte sub_81D0C54
diff --git a/data/text/gift_ribbon_descriptions.inc b/data/text/gift_ribbon_descriptions.inc
deleted file mode 100644
index 47e004d67..000000000
--- a/data/text/gift_ribbon_descriptions.inc
+++ /dev/null
@@ -1,207 +0,0 @@
-gGiftRibbonDescriptionPart1_2003RegionalTourney:: @ 8623A74
- .string "2003 REGIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart2_Champion:: @ 8623A8A
- .string "CHAMPION RIBBON$"
-
-gGiftRibbonDescriptionPart1_2003NationalTourney:: @ 8623A9A
- .string "2003 NATIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart1_2003GlobalCup:: @ 8623AB0
- .string "2003 GLOBAL CUP$"
-
-gGiftRibbonDescriptionPart2_RunnerUp:: @ 8623AC0
- .string "Runner-up RIBBON$"
-
-gGiftRibbonDescriptionPart2_Semifinalist:: @ 8623AD1
- .string "Semifinalist RIBBON$"
-
-gGiftRibbonDescriptionPart1_2004RegionalTourney:: @ 8623AE5
- .string "2004 REGIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart1_2004NationalTourney:: @ 8623AFB
- .string "2004 NATIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart1_2004GlobalCup:: @ 8623B11
- .string "2004 GLOBAL CUP$"
-
-gGiftRibbonDescriptionPart1_2005RegionalTourney:: @ 8623B21
- .string "2005 REGIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart1_2005NationalTourney:: @ 8623B37
- .string "2005 NATIONAL TOURNEY$"
-
-gGiftRibbonDescriptionPart1_2005GlobalCup:: @ 8623B4D
- .string "2005 GLOBAL CUP$"
-
-gGiftRibbonDescriptionPart1_PokemonBattleCup:: @ 8623B5D
- .string "POKéMON BATTLE CUP$"
-
-gGiftRibbonDescriptionPart2_Participation:: @ 8623B70
- .string "Participation RIBBON$"
-
-gGiftRibbonDescriptionPart1_PokemonLeague:: @ 8623B85
- .string "POKéMON LEAGUE$"
-
-gGiftRibbonDescriptionPart1_AdvanceCup:: @ 8623B94
- .string "ADVANCE CUP$"
-
-gGiftRibbonDescriptionPart1_PokemonTournament:: @ 8623BA0
- .string "POKéMON Tournament$"
-
-gGiftRibbonDescriptionPart2_Participation2:: @ 8623BB3
- .string "Participation RIBBON$"
-
-gGiftRibbonDescriptionPart1_PokemonEvent:: @ 8623BC8
- .string "POKéMON Event$"
-
-gGiftRibbonDescriptionPart1_PokemonFestival:: @ 8623BD6
- .string "POKéMON Festival$"
-
-gGiftRibbonDescriptionPart1_DifficultyClearing:: @ 8623BE7
- .string "Difficulty-clearing$"
-
-gGiftRibbonDescriptionPart2_Commemorative:: @ 8623BFB
- .string "Commemorative RIBBON$"
-
-gGiftRibbonDescriptionPart1_ClearingAllChallenges:: @ 8623C10
- .string "RIBBON awarded for$"
-
-gGiftRibbonDescriptionPart2_ClearingAllChallenges:: @ 8623C23
- .string "clearing all challenges.$"
-
-gGiftRibbonDescriptionPart1_100StraightWin:: @ 8623C3C
- .string "100-straight Win$"
-
-gGiftRibbonDescriptionPart1_DarknessTower:: @ 8623C4D
- .string "DARKNESS TOWER Clear$"
-
-gGiftRibbonDescriptionPart1_RedTower:: @ 8623C62
- .string "RED TOWER Clear$"
-
-gGiftRibbonDescriptionPart1_BlackironTower:: @ 8623C72
- .string "BLACKIRON TOWER Clear$"
-
-gGiftRibbonDescriptionPart1_FinalTower:: @ 8623C88
- .string "FINAL TOWER Clear$"
-
-gGiftRibbonDescriptionPart1_LegendMaking:: @ 8623C9A
- .string "Legend-making$"
-
-gGiftRibbonDescriptionPart1_PokemonCenterTokyo:: @ 8623CA8
- .string "POKéMON CENTER TOKYO$"
-
-gGiftRibbonDescriptionPart1_PokemonCenterOsaka:: @ 8623CBD
- .string "POKéMON CENTER OSAKA$"
-
-gGiftRibbonDescriptionPart1_PokemonCenterNagoya:: @ 8623CD2
- .string "POKéMON CENTER NAGOYA$"
-
-gGiftRibbonDescriptionPart1_PokemonCenterNY:: @ 8623CE8
- .string "POKéMON CENTER NY$"
-
-gGiftRibbonDescriptionPart1_SummerHolidays:: @ 8623CFA
- .string "Summer Holidays RIBBON$"
-
-gGiftRibbonDescriptionPart2_EmptyString:: @ 8623D11
- .string "$"
-
-gGiftRibbonDescriptionPart1_WinterHolidays:: @ 8623D12
- .string "Winter Holidays RIBBON$"
-
-gGiftRibbonDescriptionPart1_SpringHolidays:: @ 8623D29
- .string "Spring Holidays RIBBON$"
-
-gGiftRibbonDescriptionPart1_Evergreen:: @ 8623D40
- .string "Evergreen RIBBON$"
-
-gGiftRibbonDescriptionPart1_SpecialHoliday:: @ 8623D51
- .string "Special Holiday RIBBON$"
-
-gGiftRibbonDescriptionPart1_HardWorker:: @ 8623D68
- .string "Hard Worker RIBBON$"
-
-gGiftRibbonDescriptionPart1_LotsOfFriends:: @ 8623D7B
- .string "Lots of Friends RIBBON$"
-
-gGiftRibbonDescriptionPart1_FullOfEnergy:: @ 8623D92
- .string "Full of Energy RIBBON$"
-
-gGiftRibbonDescriptionPart1_LovedPokemon:: @ 8623DA8
- .string "A commemorative RIBBON$"
-
-gGiftRibbonDescriptionPart2_LovedPokemon:: @ 8623DBF
- .string "for a loved POKéMON.$"
-
-gGiftRibbonDescriptionPart1_LoveForPokemon:: @ 8623DD4
- .string "RIBBON that shows$"
-
-gGiftRibbonDescriptionPart2_LoveForPokemon:: @ 8623DE6
- .string "love for POKéMON.$"
-
- .align 2
-gGiftRibbonDescriptionPointers:: @ 8623DF8
- .4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation
- .4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation
- .4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion
- .4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp
- .4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist
- .4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation
- .4byte gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2
- .4byte gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2
- .4byte gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2
- .4byte gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges
- .4byte gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative
- .4byte gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString
- .4byte gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon
- .4byte gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon
diff --git a/data/text/ribbon_descriptions.inc b/data/text/ribbon_descriptions.inc
deleted file mode 100644
index 6dd82c288..000000000
--- a/data/text/ribbon_descriptions.inc
+++ /dev/null
@@ -1,84 +0,0 @@
-gRibbonDescriptionPart1_Champion:: @ 862383C
- .string "CHAMPION-beating, HALL$"
-
-gRibbonDescriptionPart2_Champion:: @ 8623853
- .string "OF FAME Member RIBBON$"
-
-gRibbonDescriptionPart1_CoolContest:: @ 8623869
- .string "COOL CONTEST$"
-
-gRibbonDescriptionPart1_BeautyContest:: @ 8623876
- .string "BEAUTY CONTEST$"
-
-gRibbonDescriptionPart1_CuteContest:: @ 8623885
- .string "CUTE CONTEST$"
-
-gRibbonDescriptionPart1_SmartContest:: @ 8623892
- .string "SMART CONTEST$"
-
-gRibbonDescriptionPart1_ToughContest:: @ 86238A0
- .string "TOUGH CONTEST$"
-
-gRibbonDescriptionPart2_NormalRank:: @ 86238AE
- .string "Normal Rank winner!$"
-
-gRibbonDescriptionPart2_SuperRank:: @ 86238C2
- .string "Super Rank winner!$"
-
-gRibbonDescriptionPart2_HyperRank:: @ 86238D5
- .string "Hyper Rank winner!$"
-
-gRibbonDescriptionPart2_MasterRank:: @ 86238E8
- .string "Master Rank winner!$"
-
-gRibbonDescriptionPart1_Winning:: @ 86238FC
- .string "For clearing LV50$"
-
-gRibbonDescriptionPart2_Winning:: @ 862390E
- .string "at the BATTLE TOWER.$"
-
-gRibbonDescriptionPart1_Victory:: @ 8623923
- .string "For clearing Open Level$"
-
-gRibbonDescriptionPart2_Victory:: @ 862393B
- .string "at the BATTLE TOWER.$"
-
-gRibbonDescriptionPart1_Artist:: @ 8623950
- .string "RIBBON for being chosen$"
-
-gRibbonDescriptionPart2_Artist:: @ 8623968
- .string "as a super sketch model.$"
-
-gRibbonDescriptionPart1_Effort:: @ 8623981
- .string "RIBBON awarded for$"
-
-gRibbonDescriptionPart2_Effort:: @ 8623994
- .string "being a hard worker.$"
-
- .align 2
-gRibbonDescriptionPointers:: @ 86239AC
- .4byte gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion
- .4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank
- .4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank
- .4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank
- .4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank
- .4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank
- .4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank
- .4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank
- .4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank
- .4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank
- .4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank
- .4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank
- .4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank
- .4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank
- .4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank
- .4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank
- .4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank
- .4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank
- .4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank
- .4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank
- .4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank
- .4byte gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning
- .4byte gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory
- .4byte gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist
- .4byte gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort
diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s
deleted file mode 100644
index dc2c7bd70..000000000
--- a/data/use_pokeblock.s
+++ /dev/null
@@ -1,113 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-.align 4
-
-gUnknown_085DFA60:: @ 85DFA60
- .incbin "graphics/interface/85DFA60.bin"
-
-gUnknown_085DFA80:: @ 85DFA80
- .incbin "graphics/interface/85DFA80.4bpp"
-
-gUnknown_085DFB60:: @ 85DFB60
- .incbin "graphics/interface/85DFB60.bin"
-
-gUnknown_085DFC0C:: @ 85DFC0C
- .incbin "graphics/interface/85DFC0C.bin"
-
-gUnknown_085DFCB0:: @ 85DFCB0
- .4byte 22, 47, 33, 24, 23
-
-gUnknown_085DFCC4:: @ 85DFCC4
- .byte 0, 4, 3, 2, 1
-
-gUnknown_085DFCC9:: @ 85DFCC9
- .byte 0, 8, 1
-
-gUnknown_085DFCCC:: @ 85DFCCC
- .4byte 0x1F8
- .4byte 0x31E1
- .4byte 0x4021DF
- .4byte 0x1172
-
-gUnknown_085DFCDC:: @ 85DFCDC
- window_template 0, 0xD, 1, 0xD, 4, 0xF, 1
- window_template 0, 0, 0xE, 0xB, 2, 0xF, 0x35
- window_template 0, 1, 0x11, 0x1C, 2, 0xF, 0x4B
- null_window_template
-
-sUsePokeblockYesNoWinTemplate:: @ 85DFCFC
- window_template 0, 0x18, 0xB, 5, 4, 0xF, 0x83
-
-sContestStatNames:: @ 85DFD04
- .4byte gText_Coolness
- .4byte gText_Toughness
- .4byte gText_Smartness
- .4byte gText_Cuteness
- .4byte gText_Beauty3
-
-gSpriteSheet_ConditionUpDown:: @ 85DFD18
- obj_tiles gUsePokeblockUpDown_Gfx, 0x200, 0
-
-gSpritePalette_ConditionUpDown:: @ 85DFD20
- obj_pal gUsePokeblockUpDown_Pal, 0
-
-gUnknown_085DFD28:: @ 85DFD28
- .2byte 0x9c, 0x24
- .2byte 0x75, 0x3b
- .2byte 0x75, 0x76
- .2byte 0xc5, 0x76
- .2byte 0xc5, 0x3b
-
-gUnknown_085DFD3C:: @ 85DFD3C
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x400
- .2byte 0
-
-gUnknown_085DFD44:: @ 85DFD44
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gUnknown_085DFD4C:: @ 85DFD4C
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
-gUnknown_085DFD54:: @ 85DFD54
- .4byte gUnknown_085DFD44
- .4byte gUnknown_085DFD4C
-
-gSpriteTemplate_085DFD5C:: @ 85DFD5C
- spr_template 0, 0, gUnknown_085DFD3C, gUnknown_085DFD54, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_085DFD74:: @ 85DFD74
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x400
- .2byte 0
-
-gUnknown_085DFD7C:: @ 85DFD7C
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gUnknown_085DFD84:: @ 85DFD84
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
-gUnknown_085DFD8C:: @ 85DFD8C
- obj_image_anim_frame 64, 5
- obj_image_anim_end
-
-gUnknown_085DFD94:: @ 85DFD94
- .4byte gUnknown_085DFD7C
- .4byte gUnknown_085DFD84
- .4byte gUnknown_085DFD8C
-
-gUnknown_085DFDA0:: @ 85DFDA0
- spr_template 1, 1, gUnknown_085DFD74, gUnknown_085DFD94, NULL, gDummySpriteAffineAnimTable, sub_8168374
-
-gUnknown_085DFDB8:: @ 85DFDB8
- .4byte gUsePokeblockCondition_Pal
- .4byte 1
diff --git a/graphics/pokenav/city_maps/lilycove_0.bin b/graphics/pokenav/city_maps/lilycove_0.bin
index e8bf09eae..99895574d 100644
--- a/graphics/pokenav/city_maps/lilycove_0.bin
+++ b/graphics/pokenav/city_maps/lilycove_0.bin
@@ -1 +1,3 @@
-0000000000000000000000000000000 0 0000000000000000000 00000000000000000000 00000000000000000000000000000 \ No newline at end of file
+00000000000000000000000000000000 0 0 0 0 00 000000000
+0000 0 0 0 0 0 00 000000000
+000000 0 0 0 00 0000000000000000000000 \ No newline at end of file
diff --git a/graphics/pokenav/city_maps/lilycove_1.bin b/graphics/pokenav/city_maps/lilycove_1.bin
index 99895574d..e8bf09eae 100644
--- a/graphics/pokenav/city_maps/lilycove_1.bin
+++ b/graphics/pokenav/city_maps/lilycove_1.bin
@@ -1,3 +1 @@
-00000000000000000000000000000000 0 0 0 0 00 000000000
-0000 0 0 0 0 0 00 000000000
-000000 0 0 0 00 0000000000000000000000 \ No newline at end of file
+0000000000000000000000000000000 0 0000000000000000000 00000000000000000000 00000000000000000000000000000 \ No newline at end of file
diff --git a/graphics/pokenav/city_maps/mauville_0.bin b/graphics/pokenav/city_maps/mauville_0.bin
index 103d39e54..a0662010a 100644
--- a/graphics/pokenav/city_maps/mauville_0.bin
+++ b/graphics/pokenav/city_maps/mauville_0.bin
@@ -1,3 +1,3 @@
-000000000000000000000000000000000000000000 00 00 0 000000
-0000000000
-00000000 0 00 00000000000000000000000000 \ No newline at end of file
+000000000000000000000000000000000000
+000000 000 00 0 000000
+0000000000 0000000000000 0 00000000 00000000000000 \ No newline at end of file
diff --git a/graphics/pokenav/city_maps/mauville_1.bin b/graphics/pokenav/city_maps/mauville_1.bin
index a0662010a..103d39e54 100644
--- a/graphics/pokenav/city_maps/mauville_1.bin
+++ b/graphics/pokenav/city_maps/mauville_1.bin
@@ -1,3 +1,3 @@
-000000000000000000000000000000000000
-000000 000 00 0 000000
-0000000000 0000000000000 0 00000000 00000000000000 \ No newline at end of file
+000000000000000000000000000000000000000000 00 00 0 000000
+0000000000
+00000000 0 00 00000000000000000000000000 \ No newline at end of file
diff --git a/graphics/pokenav/city_maps/mossdeep_0.bin b/graphics/pokenav/city_maps/mossdeep_0.bin
index fd03cfe02..6c11d5624 100644
--- a/graphics/pokenav/city_maps/mossdeep_0.bin
+++ b/graphics/pokenav/city_maps/mossdeep_0.bin
@@ -1 +1,3 @@
-0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 00000000000000000 \ No newline at end of file
+00000000000000000000000000 0 00000000
+0000000000
+000000000 000000000 000 0 00000000 0000000000000000000000000 \ No newline at end of file
diff --git a/graphics/pokenav/city_maps/mossdeep_1.bin b/graphics/pokenav/city_maps/mossdeep_1.bin
index 6c11d5624..fd03cfe02 100644
--- a/graphics/pokenav/city_maps/mossdeep_1.bin
+++ b/graphics/pokenav/city_maps/mossdeep_1.bin
@@ -1,3 +1 @@
-00000000000000000000000000 0 00000000
-0000000000
-000000000 000000000 000 0 00000000 0000000000000000000000000 \ No newline at end of file
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 00000000000000000 \ No newline at end of file
diff --git a/include/berry_crush.h b/include/berry_crush.h
index 101450a33..8909ae821 100755
--- a/include/berry_crush.h
+++ b/include/berry_crush.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BERRY_CRUSH_H
#define GUARD_BERRY_CRUSH_H
+#include "main.h"
+
void sub_8020C70(MainCallback callback);
#endif // GUARD_BERRY_CRUSH_H
diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h
new file mode 100644
index 000000000..55e8fa880
--- /dev/null
+++ b/include/dodrio_berry_picking.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_DODRIO_BERRY_PICKING_H
+#define GUARD_DODRIO_BERRY_PICKING_H
+
+void sub_802493C(u16 a0, void (*callback)(void));
+void sub_8027A5C(void);
+void sub_8027AAC(void);
+
+#endif // GUARD_DODRIO_BERRY_PICKING_H
diff --git a/include/graphics.h b/include/graphics.h
index af1a0d7e7..ff62087b9 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4939,6 +4939,9 @@ extern const u32 gLinkMiscMenu_Tilemap[];
// Use Pokeblock
extern const u8 gPokenavConditionCancel_Gfx[];
extern const u16 gPokenavConditionCancel_Pal[];
+extern const u8 gUsePokeblockUpDown_Gfx[];
+extern const u16 gUsePokeblockUpDown_Pal[];
+extern const u16 gUsePokeblockCondition_Pal[];
// Berry Crush
extern const u32 gUnknown_08DE34B8[];
diff --git a/include/menu.h b/include/menu.h
index 08cad40bd..62e2558dc 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -25,7 +25,7 @@ void InitStandardTextBoxWindows(void);
void sub_8197200(void);
u16 RunTextPrintersAndIsPrinter0Active(void);
void sub_81973A4(void);
-void DrawDialogueFrame(u8, u8);
+void DrawDialogueFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
diff --git a/include/pokenav.h b/include/pokenav.h
index d254858ac..69a9f1f58 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -107,7 +107,7 @@ void sub_81C8234(void);
// pokenav_match_call_data.c
bool32 sub_81D17E8(u32 idx);
-u8 sub_81D16DC(u32 idx);
+u8 MatchCallMapSecGetByIndex(u32 idx);
bool32 sub_81D1BF8(u32 idx);
bool32 MatchCallFlagGetByIndex(u32 idx);
u32 MatchCall_GetRematchTableIdx(u32 idx);
diff --git a/include/strings.h b/include/strings.h
index bead5849d..1f62e3f50 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2708,6 +2708,28 @@ extern const u8 gText_Symbols[];
extern const u8 gText_Register2[];
extern const u8 gText_Exit2[];
+// Dodrio Berry Picking
+extern const u8 gText_BerryPickingRecords[];
+extern const u8 gText_BerriesPicked[];
+extern const u8 gText_BerriesInRowFivePlayers[];
+extern const u8 gText_BestScore[];
+extern const u8 gText_1Colon[];
+extern const u8 gText_2Colon[];
+extern const u8 gText_3Colon[];
+extern const u8 gText_4Colon[];
+extern const u8 gText_5Colon[];
+extern const u8 gText_SpacePoints[];
+extern const u8 gText_10P30P50P50P[];
+extern const u8 gText_AnnouncingPrizes[];
+extern const u8 gText_AnnouncingRankings[];
+extern const u8 gText_FirstPlacePrize[];
+extern const u8 gText_CantHoldAnyMore[];
+extern const u8 gText_FilledStorageSpace[];
+extern const u8 gText_BerryPickingResults[];
+extern const u8 gText_WantToPlayAgain[];
+extern const u8 gText_CommunicationStandby3[];
+extern const u8 gText_SomeoneDroppedOut[];
+
// Pokemon jump
extern const u8 gText_WantToPlayAgain2[];
extern const u8 gText_SomeoneDroppedOut2[];
@@ -2729,4 +2751,32 @@ extern const u8 gText_NumberOfBattles[];
extern const u8 gText_Unknown[];
extern const u8 gText_TrainerCloseBy[];
+// pokenav_unk_2
+extern const u8 gUnknown_085EBCC5[];
+extern const u8 gUnknown_085EBCE8[];
+extern const u8 gUnknown_085EBD01[];
+extern const u8 gUnknown_085EBD1C[];
+extern const u8 gUnknown_085EBD34[];
+extern const u8 gUnknown_085EBD83[];
+extern const u8 gUnknown_085EBDA2[];
+extern const u8 gUnknown_085EBDBF[];
+extern const u8 gUnknown_085EBDDB[];
+extern const u8 gUnknown_085EBDEE[];
+extern const u8 gUnknown_085EBE06[];
+extern const u8 gUnknown_085EBE19[];
+extern const u8 gUnknown_085EBE2D[];
+extern const u8 gUnknown_085EBE41[];
+
+// pokenav_unk_4
+extern const u8 gUnknown_085EC017[];
+extern const u8 gUnknown_085EC01C[];
+extern const u8 gUnknown_085EC022[];
+
+// use_pokeblock
+extern const u8 gText_Coolness[];
+extern const u8 gText_Toughness[];
+extern const u8 gText_Smartness[];
+extern const u8 gText_Cuteness[];
+extern const u8 gText_Beauty3[];
+
#endif // GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 97605865d..63afe45d2 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -75,7 +75,6 @@ SECTIONS {
asm/berry_crush.o(.text*);
src/berry_powder.o(.text*);
src/dodrio_berry_picking.o(.text*);
- asm/dodrio_berry_picking.o(.text*);
src/pokemon_jump.o(.text*);
src/rtc.o(.text*);
src/main_menu.o(.text*);
@@ -447,7 +446,6 @@ SECTIONS {
data/berry_crush.o(.rodata);
data/berry_powder.o(.rodata);
src/dodrio_berry_picking.o(.rodata);
- data/dodrio_berry_picking.o(.rodata);
src/pokemon_jump.o(.rodata);
src/rtc.o(.rodata);
src/main_menu.o(.rodata);
@@ -599,7 +597,6 @@ SECTIONS {
src/roamer.o(.rodata);
src/battle_tower.o(.rodata);
src/use_pokeblock.o(.rodata);
- data/use_pokeblock.o(.rodata);
src/battle_controller_wally.o(.rodata);
src/player_pc.o(.rodata);
src/intro.o(.rodata);
@@ -657,10 +654,13 @@ SECTIONS {
src/pokenav_main_menu.o(.rodata);
src/pokenav_match_call_ui.o(.rodata);
src/pokenav_unk_1.o(.rodata);
- data/pokenav.o(.rodata);
+ src/pokenav_unk_2.o(.rodata);
src/pokenav_unk_3.o(.rodata);
src/pokenav_unk_4.o(.rodata);
src/pokenav_unk_5.o(.rodata);
+ src/pokenav_unk_7.o(.rodata);
+ src/pokenav_unk_8.o(.rodata);
+ src/pokenav_unk_9.o(.rodata);
src/pokenav_unk_10.o(.rodata);
src/pokenav_match_call_data.o(.rodata);
src/menu_specialized.o(.rodata);
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 15b73a1e0..b3a67a509 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -5315,21 +5315,19 @@ static void sub_8102D8C(s16 a, s16 b, s16* c, s16* d, s8 e)
static void sub_8102DE4(struct Sprite* sprite)
{
- int b;
- s16 a;
- int c;
+ s16 y, yDelta;
u8 index;
+
sprite->data[0]++;
- b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
+ yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
sprite->pos1.x = sprite->data[4] >> 4;
sprite->pos1.y = sprite->data[5] >> 4;
- sprite->pos2.y = Sin(b, 15);
- a = (u16)sprite->pos1.y;
- c = (u16)sprite->pos1.x;
+ sprite->pos2.y = Sin(yDelta, 15);
- if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
+ y = sprite->pos1.y;
+ if (sprite->pos1.x < -16 || sprite->pos1.x > 256 || y < -16 || y > 128)
{
DestroySpriteAndMatrix(sprite);
}
@@ -5350,12 +5348,8 @@ static void sub_8102DE4(struct Sprite* sprite)
void sub_8102EB0(struct Sprite* sprite)
{
- int a;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- {
- a = gBattleAnimArgs[1];
- *(u16 *)&gBattleAnimArgs[1] = -a;
- }
+ gBattleAnimArgs[1] *= -1;
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
@@ -5541,8 +5535,8 @@ static void sub_8103300(struct Sprite* sprite)
static void sub_8103320(struct Sprite* sprite)
{
- s16 temp;
- s16 temp2;
+ s16 x1, x2;
+
sprite->data[1] += 4;
if (sprite->data[1] > 254)
{
@@ -5564,20 +5558,21 @@ static void sub_8103320(struct Sprite* sprite)
if (sprite->data[1] > 0x9F)
sprite->subpriority = sprite->data[2];
- temp = gSineTable[sprite->data[1]];
- sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
+ x1 = gSineTable[sprite->data[1]];
+ x2 = x1 >> 3;
+ sprite->pos2.x = (x1 >> 3) + (x2 >> 1);
}
void sub_8103390(struct Sprite* sprite)
{
- u8 bank;
+ u8 battler;
if (gBattleAnimArgs[0] == 0)
- bank = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- bank = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- sub_810310C(bank, sprite);
- if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ sub_810310C(battler, sprite);
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 0);
sprite->data[0] = 2;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index ab765b8c1..5d79a9e6b 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -2504,13 +2504,10 @@ void sub_815BE04(struct Sprite *sprite)
static void sub_815BF44(struct Sprite *sprite)
{
- int var0;
- s8 var1;
-
- var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
+ s16 delta = sprite->data[3] + sprite->data[2];
+ sprite->pos2.y -= delta >> 8;
+ sprite->data[3] += sprite->data[2];
+ sprite->data[3] &= 0xFF;
if (sprite->data[4] == 0 && sprite->pos2.y < -8)
{
gSprites[sprite->data[6]].invisible = 0;
@@ -2543,19 +2540,12 @@ static void sub_815BFF4(struct Sprite *sprite)
static void sub_815C050(struct Sprite *sprite)
{
- u16 d2;
- register u16 d3 asm("r1");
- int var0;
- s8 var1;
-
if (!sprite->invisible)
{
- d2 = sprite->data[2];
- d3 = sprite->data[3];
- var0 = d2 + d3;
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
+ s16 delta = sprite->data[3] + sprite->data[2];
+ sprite->pos2.y -= delta >> 8;
+ sprite->data[3] += sprite->data[2];
+ sprite->data[3] &= 0xFF;
if (--sprite->data[1] == -1)
{
sprite->invisible = 1;
@@ -4322,7 +4312,7 @@ static void AnimSmellingSaltExclamationStep(struct Sprite *sprite)
// Claps a hand several times.
// arg 0: which hand
-// arg 1:
+// arg 1:
void AnimHelpingHandClap(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index bae7859b5..a0a29f0ad 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -71,15 +71,10 @@ struct ContestLinkUnk14
u8 unk12;
};
-struct ContestLinkUnk4
-{
- struct ContestLinkUnk14 unk0[4];
-};
-
struct ContestLink80F57C4
{
struct ContestLinkUnk0 *unk0;
- struct ContestLinkUnk4 *unk4;
+ struct ContestLinkUnk14 (*unk4)[4];
u8 *unk8;
u8 *unkC[4];
u8 *unk1C;
@@ -205,9 +200,7 @@ void sub_80F57C4(void)
void sub_80F591C(void)
{
int i, j;
- s8 var0;
- s8 var1;
- int var2;
+ s8 var0, var1;
u16 tile1, tile2;
LZDecompressVram(gUnknown_08C19588, (void *)BG_CHAR_ADDR(0));
@@ -228,11 +221,7 @@ void sub_80F591C(void)
if (j < var0)
tile1 += 2;
- var2 = var1;
- if (var1 < 0)
- var2 = -var2;
-
- if (j < var2)
+ if (j < abs(var1))
{
tile2 = 0x60A4;
if (var1 < 0)
@@ -719,7 +708,7 @@ static void sub_80F6404(u8 taskId)
if (top > 80)
top = 80;
- gBattle_WIN0V = (top << 8) | (160 - top);;
+ gBattle_WIN0V = (top << 8) | (160 - top);
if (top == 80)
gTasks[taskId].data[0]++;
}
@@ -737,8 +726,7 @@ static void sub_80F6404(u8 taskId)
static void sub_80F66B4(u8 taskId)
{
- int i;
- u16 nationalDexNum;
+ int i, nationalDexNum;
if (gMain.newKeys & A_BUTTON)
{
@@ -859,13 +847,13 @@ static void sub_80F68F0(u8 taskId)
void sub_80F69B8(u16 species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
{
- u8 frameNum;
const u8 *iconPtr;
- u16 var0;
- u16 var1;
+ u16 var0, var1, frameNum;
- u8 *contestPlayerMonIndex = &gContestPlayerMonIndex; // fake match
- frameNum = (monIndex == *contestPlayerMonIndex) ? 1 : 0;
+ if (monIndex == gContestPlayerMonIndex)
+ frameNum = 1;
+ else
+ frameNum = 0;
iconPtr = GetMonIconPtr(species, personality, frameNum);
iconPtr += srcOffset * 0x200 + 0x80;
@@ -892,13 +880,12 @@ static void LoadAllContestMonIcons(u8 srcOffset, u8 useDmaNow)
static void sub_80F6A9C(void)
{
- int i;
- register u16 species asm("r0");
+ int i, species;
for (i = 0; i < 4; i++)
{
- species = GetIconSpecies(gContestMons[i].species, 0);
- LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[species]], i * 0x10 + 0xA0, 0x20);
+ species = gContestMons[i].species;
+ LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[GetIconSpecies(species, 0)]], i * 0x10 + 0xA0, 0x20);
}
}
@@ -1335,11 +1322,11 @@ static void sub_80F6F40(struct Sprite *sprite)
static void sub_80F6F68(struct Sprite *sprite)
{
int i;
- s16 var0;
- var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
- sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
+ s16 delta = sprite->data[7] + sprite->data[6];
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[7] += sprite->data[6];
+ sprite->data[7] &= 0xFF;
if (sprite->pos1.x < sprite->data[4])
sprite->pos1.x = sprite->data[4];
@@ -1366,11 +1353,12 @@ static void sub_80F6FDC(struct Sprite *sprite)
static void sub_80F7014(struct Sprite *sprite)
{
int i;
- s16 var0;
+ s16 delta;
- var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
- sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
+ delta = sprite->data[7] + sprite->data[6];
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[7] += sprite->data[6];
+ sprite->data[7] &= 0xFF;
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
@@ -1487,14 +1475,11 @@ static void sub_80F71C8(void)
CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_0203A034->unkC[2], 0, 0, 32, 4, palette);
}
-// fakematching?
u8 sub_80F7310(u8 monIndex, u8 arg1)
{
- u32 var0;
- u32 var1;
+ u32 var0 = gContestMonConditions[monIndex] << 16;
+ u32 var1 = var0 / 0x3F;
- var0 = gContestMonConditions[monIndex] << 16;
- var1 = var0 / 0x3F;
if (var1 & 0xFFFF)
var1 += 0x10000;
@@ -1510,8 +1495,7 @@ u8 sub_80F7310(u8 monIndex, u8 arg1)
s8 sub_80F7364(u8 arg0, u8 arg1)
{
- u32 r4;
- u32 r2;
+ u32 r4, r2;
s16 val;
s8 ret;
@@ -1607,9 +1591,10 @@ static void sub_80F75A8(struct Sprite *sprite)
}
else
{
- s16 delta = (u16)sprite->data[1] + 0x600;
+ s16 delta = sprite->data[1] + 0x600;
sprite->pos1.x -= delta >> 8;
- sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ sprite->data[1] += 0x600;
+ sprite->data[1] &= 0xFF;
if (sprite->pos1.x < 120)
sprite->pos1.x = 120;
@@ -1624,9 +1609,10 @@ static void sub_80F75A8(struct Sprite *sprite)
static void sub_80F7620(struct Sprite *sprite)
{
- s16 delta = (u16)sprite->data[1] + 0x600;
+ s16 delta = sprite->data[1] + 0x600;
sprite->pos1.x -= delta >> 8;
- sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ sprite->data[1] += + 0x600;
+ sprite->data[1] &= 0xFF;
if (sprite->pos1.x < -32)
{
sprite->callback = SpriteCallbackDummy;
@@ -1657,14 +1643,15 @@ static void sub_80F7670(u8 taskId)
void sub_80F7768(struct Sprite *sprite)
{
- register s16 var0 asm("r1");
+ s16 delta;
sprite->data[3] += sprite->data[0];
sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
- var0 = sprite->data[4] + sprite->data[2];
- sprite->pos1.x += var0 >> 8;
- var0 = var0 & 0xFF;
- sprite->data[4] = var0;
+ delta = sprite->data[4] + sprite->data[2];
+ sprite->pos1.x += delta >> 8;
+ sprite->data[4] += sprite->data[2];
+ sprite->data[4] &= 0xff;
+
sprite->pos1.y++;
if (gUnknown_0203A034->unk0->unk9)
sprite->invisible = 1;
@@ -1695,705 +1682,145 @@ static void sub_80F7824(u8 taskId)
}
}
-// static void sub_80F7880(void)
-// {
-// int i;
-// int var0;
-// int var1;
-// int var2;
-// int var3;
-// u32 var4;
-// int var5;
-// int var6;
-// s16 var7;
-// s16 var8;
-// s16 r2;
-
-// r2 = gUnknown_02039F08[0];
-// for (i = 1; i < 4; i++)
-// {
-// if (r2 < gUnknown_02039F08[i])
-// r2 = gUnknown_02039F08[i];
-// }
-
-// if (r2 < 0)
-// {
-// r2 = gUnknown_02039F08[0];
-// for (i = 1; i < 4; i++)
-// {
-// if (r2 > gUnknown_02039F08[i])
-// r2 = gUnknown_02039F08[i];
-// }
-// }
-
-// // _080F78E4
-// for (i = 0; i < 4; i++)
-// {
-// var0 = gContestMonConditions[i] * 1000;
-// var1 = r2;
-// if (r2 < 0)
-// var1 = -var1;
-
-// var2 = var0 / var1;
-// if (var2 % 10 > 4)
-// var2 += 10;
-
-// gUnknown_0203A034->unk4->unk0[i].unk0 = var2 / 10;
-// var3 = gUnknown_02039F18[i];
-// if (var3 < 0)
-// var3 = -var3;
-
-// var0 = var3 * 1000;
-// var1 = r2;
-// if (r2 < 0)
-// var1 = -var1;
-
-// var2 = var0 / var1;
-// if (var2 % 10 > 4)
-// var2 += 10;
-
-// // _080F7966
-// gUnknown_0203A034->unk4->unk0[i].unk4 = var2 / 10;
-// if (gUnknown_02039F18[i] < 0)
-// gUnknown_0203A034->unk4->unk0[i].unk10 = 1;
-
-// var4 = gUnknown_0203A034->unk4->unk0[i].unk0 * 22528 / 100;
-// if ((var4 & 0xFF) > 0x7F)
-// var4 += 0x100;
-
-// gUnknown_0203A034->unk4->unk0[i].unk8 = var4 >> 8;
-// var4 = gUnknown_0203A034->unk4->unk0[i].unk4 * 22528 / 100;
-// if ((var4 & 0xFF) > 0x7F)
-// var4 += 0x100;
-
-// gUnknown_0203A034->unk4->unk0[i].unkC = var4 >> 8;
-// gUnknown_0203A034->unk4->unk0[i].unk11 = sub_80F7310(i, 1);
-// var5 = sub_80F7364(i, 1);
-// if (var5 < 0)
-// var5 = -var5;
-
-// gUnknown_0203A034->unk4->unk0[i].unk12 = var5;
-// if (gContestFinalStandings[i])
-// {
-// var7 = gUnknown_0203A034->unk4->unk0[i].unk8;
-// var8 = gUnknown_0203A034->unk4->unk0[i].unkC;
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// var8 = -var8;
-
-// if (var7 + var8 == 88)
-// {
-// if (var8 > 0)
-// gUnknown_0203A034->unk4->unk0[i].unkC--;
-// else if (var7 > 0)
-// gUnknown_0203A034->unk4->unk0[i].unk8--;
-// }
-// }
-// }
-// }
-
-NAKED
static void sub_80F7880(void)
{
- asm_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, 0x4\n\
- ldr r0, =gUnknown_02039F08\n\
- ldrh r2, [r0]\n\
- adds r4, r0, 0\n\
- adds r3, r4, 0x2\n\
- movs r0, 0x2\n\
- mov r8, r0\n\
-_080F7898:\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- movs r5, 0\n\
- ldrsh r1, [r3, r5]\n\
- cmp r0, r1\n\
- bge _080F78A6\n\
- ldrh r2, [r3]\n\
-_080F78A6:\n\
- adds r3, 0x2\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0\n\
- bge _080F7898\n\
- lsls r0, r2, 16\n\
- str r0, [sp]\n\
- cmp r0, 0\n\
- bge _080F78E4\n\
- ldrh r2, [r4]\n\
- adds r3, r4, 0x2\n\
- movs r4, 0x2\n\
- mov r8, r4\n\
-_080F78C4:\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- movs r5, 0\n\
- ldrsh r1, [r3, r5]\n\
- cmp r0, r1\n\
- ble _080F78D2\n\
- ldrh r2, [r3]\n\
-_080F78D2:\n\
- adds r3, 0x2\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- lsls r1, r2, 16\n\
- str r1, [sp]\n\
- mov r4, r8\n\
- cmp r4, 0\n\
- bge _080F78C4\n\
-_080F78E4:\n\
- movs r5, 0\n\
- mov r8, r5\n\
- mov r10, r5\n\
-_080F78EA:\n\
- ldr r0, =gContestMonConditions\n\
- mov r1, r8\n\
- lsls r7, r1, 1\n\
- adds r0, r7, r0\n\
- movs r2, 0\n\
- ldrsh r1, [r0, r2]\n\
- lsls r0, r1, 5\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- ldr r4, [sp]\n\
- asrs r5, r4, 16\n\
- adds r1, r5, 0\n\
- cmp r5, 0\n\
- bge _080F790C\n\
- negs r1, r5\n\
-_080F790C:\n\
- bl __divsi3\n\
- adds r4, r0, 0\n\
- movs r1, 0xA\n\
- bl __modsi3\n\
- cmp r0, 0x4\n\
- ble _080F791E\n\
- adds r4, 0xA\n\
-_080F791E:\n\
- ldr r0, =gUnknown_0203A034\n\
- mov r9, r0\n\
- ldr r0, [r0]\n\
- ldr r0, [r0, 0x4]\n\
- mov r1, r10\n\
- adds r6, r1, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- str r0, [r6]\n\
- ldr r0, =gUnknown_02039F18\n\
- adds r7, r0\n\
- movs r2, 0\n\
- ldrsh r1, [r7, r2]\n\
- cmp r1, 0\n\
- bge _080F7942\n\
- negs r1, r1\n\
-_080F7942:\n\
- lsls r0, r1, 5\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r1, r5, 0\n\
- cmp r1, 0\n\
- bge _080F7954\n\
- negs r1, r1\n\
-_080F7954:\n\
- bl __divsi3\n\
- adds r4, r0, 0\n\
- movs r1, 0xA\n\
- bl __modsi3\n\
- cmp r0, 0x4\n\
- ble _080F7966\n\
- adds r4, 0xA\n\
-_080F7966:\n\
- adds r0, r4, 0\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- str r0, [r6, 0x4]\n\
- movs r4, 0\n\
- ldrsh r0, [r7, r4]\n\
- cmp r0, 0\n\
- bge _080F797C\n\
- movs r0, 0x1\n\
- strb r0, [r6, 0x10]\n\
-_080F797C:\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x4]\n\
- mov r1, r10\n\
- adds r4, r1, r0\n\
- ldr r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- subs r0, r1\n\
- lsls r0, 11\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- movs r5, 0xFF\n\
- ands r0, r5\n\
- cmp r0, 0x7F\n\
- bls _080F79A8\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r2\n\
-_080F79A8:\n\
- lsrs r0, r1, 8\n\
- str r0, [r4, 0x8]\n\
- ldr r1, [r4, 0x4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- subs r0, r1\n\
- lsls r0, 11\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- ands r0, r5\n\
- cmp r0, 0x7F\n\
- bls _080F79CC\n\
- movs r5, 0x80\n\
- lsls r5, 1\n\
- adds r1, r5\n\
-_080F79CC:\n\
- lsrs r0, r1, 8\n\
- str r0, [r4, 0xC]\n\
- mov r0, r8\n\
- lsls r4, r0, 24\n\
- lsrs r4, 24\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_80F7310\n\
- mov r2, r9\n\
- ldr r1, [r2]\n\
- ldr r1, [r1, 0x4]\n\
- add r1, r10\n\
- strb r0, [r1, 0x11]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_80F7364\n\
- mov r4, r9\n\
- ldr r1, [r4]\n\
- ldr r1, [r1, 0x4]\n\
- add r1, r10\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0\n\
- bge _080F7A02\n\
- negs r0, r0\n\
-_080F7A02:\n\
- strb r0, [r1, 0x12]\n\
- ldr r0, =gContestFinalStandings\n\
- add r0, r8\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F7A60\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x4]\n\
- mov r2, r10\n\
- adds r1, r2, r0\n\
- ldr r5, [r1, 0x8]\n\
- ldrh r3, [r1, 0x8]\n\
- ldr r4, [r1, 0xC]\n\
- ldrh r2, [r1, 0xC]\n\
- ldrb r0, [r1, 0x10]\n\
- cmp r0, 0\n\
- beq _080F7A2C\n\
- lsls r0, r2, 16\n\
- negs r0, r0\n\
- lsrs r2, r0, 16\n\
-_080F7A2C:\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- lsls r0, r2, 16\n\
- asrs r2, r0, 16\n\
- adds r0, r3, r2\n\
- cmp r0, 0x58\n\
- bne _080F7A60\n\
- cmp r2, 0\n\
- ble _080F7A58\n\
- subs r0, r4, 0x1\n\
- str r0, [r1, 0xC]\n\
- b _080F7A60\n\
- .pool\n\
-_080F7A58:\n\
- cmp r3, 0\n\
- ble _080F7A60\n\
- subs r0, r5, 0x1\n\
- str r0, [r1, 0x8]\n\
-_080F7A60:\n\
- movs r4, 0x14\n\
- add r10, r4\n\
- movs r5, 0x1\n\
- add r8, r5\n\
- mov r0, r8\n\
- cmp r0, 0x3\n\
- bgt _080F7A70\n\
- b _080F78EA\n\
-_080F7A70:\n\
- add sp, 0x4\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");
-}
-
-// static void sub_80F7A80(u8 arg0, u8 arg1)
-// {
-// int i;
-// u8 taskId;
-// u8 sp8, spC;
-
-// sp8 = 0;
-// spC = 0;
-// if (!arg0)
-// {
-// u32 var0;
-// for (i = 0; i < 4; i++)
-// {
-// int var1 = gUnknown_0203A034->unk4->unk0[i].unk11;
-// if (arg1 < var1)
-// {
-// int x = var1 + 19;
-// x -= arg1;
-// x--;
-// FillBgTilemapBufferRect_Palette0(1, 0x60B3, x, i * 3 + 5, 1, 1);
-// taskId = CreateTask(sub_80F7CA8, 10);
-// var0 = ((gUnknown_0203A034->unk4->unk0[i].unk8 << 16) / gUnknown_0203A034->unk4->unk0[i].unk11) * (arg1 + 1);
-// var0 &= 0xFFFF;
-// if (var0 > 0x7FFF)
-// var0 += 0x10000;
-
-// gTasks[taskId].data[0] = i;
-// gTasks[taskId].data[1] = var0 >> 16;
-// gUnknown_0203A034->unk0->unk14++;
-// sp8++;
-// }
-// }
-// }
-// else
-// {
-// u32 var0;
-// for (i = 0; i < 4; i++)
-// {
-// int tile;
-// s8 var1 = gUnknown_0203A034->unk4->unk0[i].unk12;
-// tile = gUnknown_0203A034->unk4->unk0[i].unk10 ? 0x60A5 : 0x60A3;
-// if (arg1 < var1)
-// {
-// int thing = ((s8)arg1 - 19);
-// int x = var1 - thing;
-// x--;
-// FillBgTilemapBufferRect_Palette0(1, tile, x, i * 3 + 6, 1, 1);
-// taskId = CreateTask(sub_80F7CA8, 10);
-// var0 = ((gUnknown_0203A034->unk4->unk0[i].unkC << 16) / gUnknown_0203A034->unk4->unk0[i].unk12) * (arg1 + 1);
-// var0 &= 0xFFFF;
-// if (var0 > 0x7FFF)
-// var0 += 0x10000;
-
-// gTasks[taskId].data[0] = i;
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// {
-// gTasks[taskId].data[2] = 1;
-// spC++;
-// }
-// else
-// {
-// sp8++;
-// }
-
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 - (var0 >> 16);
-// else
-// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 + (var0 >> 16);
-
-// gUnknown_0203A034->unk0->unk14++;
-// }
-// }
-// }
-
-// if (spC)
-// PlaySE(SE_PIN);
-
-// if (sp8)
-// PlaySE(SE_BAN);
-// }
+ int i, r4;
+ u32 r1;
+ s16 r2;
+ s8 var;
+
+ r2 = gUnknown_02039F08[0];
+ for (i = 1; i < 4; i++)
+ {
+ if (r2 < gUnknown_02039F08[i])
+ r2 = gUnknown_02039F08[i];
+ }
+
+ if (r2 < 0)
+ {
+ r2 = gUnknown_02039F08[0];
+ for (i = 1; i < 4; i++)
+ {
+ if (r2 > gUnknown_02039F08[i])
+ r2 = gUnknown_02039F08[i];
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ r4 = (gContestMonConditions[i] * 1000) / abs(r2);
+ if (r4 % 10 > 4)
+ r4 += 10;
+ (*gUnknown_0203A034->unk4)[i].unk0 = r4 / 10;
+
+ r4 = (abs(gUnknown_02039F18[i]) * 1000) / abs(r2);
+ if (r4 % 10 > 4)
+ r4 += 10;
+ (*gUnknown_0203A034->unk4)[i].unk4 = r4 / 10;
+
+ if (gUnknown_02039F18[i] < 0)
+ (*gUnknown_0203A034->unk4)[i].unk10 = 1;
+
+ r1 = ((*gUnknown_0203A034->unk4)[i].unk0 * 22528) / 100;
+ if ((r1 & 0xFF) > 0x7F)
+ r1 += 0x100;
+ (*gUnknown_0203A034->unk4)[i].unk8 = r1 >> 8;
+
+ r1 = ((*gUnknown_0203A034->unk4)[i].unk4 * 22528) / 100;
+ if ((r1 & 0xFF) > 0x7F)
+ r1 += 0x100;
+ (*gUnknown_0203A034->unk4)[i].unkC = r1 >> 8;
+
+ (*gUnknown_0203A034->unk4)[i].unk11 = sub_80F7310(i, 1);
+ var = sub_80F7364(i, 1);
+ (*gUnknown_0203A034->unk4)[i].unk12 = abs(var);
+
+ if (gContestFinalStandings[i])
+ {
+ s16 var1 = (*gUnknown_0203A034->unk4)[i].unk8;
+ s16 var2 = (*gUnknown_0203A034->unk4)[i].unkC;
+
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ var2 *= -1;
+
+ if (var1 + var2 == 88)
+ {
+ if (var2 > 0)
+ (*gUnknown_0203A034->unk4)[i].unkC--;
+ else if (var1 > 0)
+ (*gUnknown_0203A034->unk4)[i].unk8--;
+ }
+ }
+ }
+}
-NAKED
static void sub_80F7A80(u8 arg0, u8 arg1)
{
- asm_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, 0x14\n\
- lsls r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r8, r1\n\
- movs r1, 0\n\
- str r1, [sp, 0x8]\n\
- movs r3, 0\n\
- str r3, [sp, 0xC]\n\
- cmp r0, 0\n\
- bne _080F7B5C\n\
- mov r9, r3\n\
- ldr r4, =gUnknown_0203A034\n\
- mov r10, r4\n\
- movs r7, 0xA0\n\
- lsls r7, 19\n\
- movs r6, 0\n\
-_080F7AAC:\n\
- mov r1, r10\n\
- ldr r0, [r1]\n\
- ldr r0, [r0, 0x4]\n\
- adds r0, r6, r0\n\
- ldrb r2, [r0, 0x11]\n\
- cmp r8, r2\n\
- bcs _080F7B2E\n\
- adds r2, 0x13\n\
- mov r3, r8\n\
- subs r2, r3\n\
- subs r2, 0x1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsrs r3, r7, 24\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- str r0, [sp, 0x4]\n\
- ldr r1, =0x000060b3\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- ldr r0, =sub_80F7CA8\n\
- movs r1, 0xA\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- mov r0, r10\n\
- ldr r4, [r0]\n\
- ldr r1, [r4, 0x4]\n\
- adds r1, r6, r1\n\
- ldr r0, [r1, 0x8]\n\
- lsls r0, 16\n\
- ldrb r1, [r1, 0x11]\n\
- bl __udivsi3\n\
- mov r1, r8\n\
- adds r1, 0x1\n\
- adds r3, r0, 0\n\
- muls r3, r1\n\
- ldr r0, =0x0000ffff\n\
- ands r0, r3\n\
- ldr r1, =0x00007fff\n\
- cmp r0, r1\n\
- bls _080F7B0A\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r3, r1\n\
-_080F7B0A:\n\
- ldr r1, =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- mov r1, r9\n\
- strh r1, [r0, 0x8]\n\
- lsrs r1, r3, 16\n\
- strh r1, [r0, 0xA]\n\
- ldr r1, [r4]\n\
- ldrb r0, [r1, 0x14]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x14]\n\
- ldr r0, [sp, 0x8]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x8]\n\
-_080F7B2E:\n\
- movs r3, 0xC0\n\
- lsls r3, 18\n\
- adds r7, r3\n\
- adds r6, 0x14\n\
- movs r4, 0x1\n\
- add r9, r4\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- ble _080F7AAC\n\
- b _080F7C7E\n\
- .pool\n\
-_080F7B5C:\n\
- movs r1, 0\n\
- mov r9, r1\n\
- mov r10, r1\n\
- movs r3, 0xC0\n\
- lsls r3, 19\n\
- str r3, [sp, 0x10]\n\
-_080F7B68:\n\
- ldr r4, =gUnknown_0203A034\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x4]\n\
- add r0, r10\n\
- ldrb r2, [r0, 0x12]\n\
- ldrb r0, [r0, 0x10]\n\
- ldr r1, =0x000060a3\n\
- cmp r0, 0\n\
- beq _080F7B7C\n\
- adds r1, 0x2\n\
-_080F7B7C:\n\
- lsls r0, r2, 24\n\
- asrs r0, 24\n\
- cmp r8, r0\n\
- bge _080F7C64\n\
- mov r3, r8\n\
- lsls r2, r3, 24\n\
- asrs r2, 24\n\
- subs r2, 0x13\n\
- subs r2, r0, r2\n\
- subs r2, 0x1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r4, [sp, 0x10]\n\
- lsrs r3, r4, 24\n\
- movs r7, 0x1\n\
- str r7, [sp]\n\
- str r7, [sp, 0x4]\n\
- movs r0, 0x1\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- ldr r0, =sub_80F7CA8\n\
- movs r1, 0xA\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, =gUnknown_0203A034\n\
- ldr r6, [r0]\n\
- ldr r1, [r6, 0x4]\n\
- add r1, r10\n\
- ldr r0, [r1, 0xC]\n\
- lsls r0, 16\n\
- ldrb r1, [r1, 0x12]\n\
- bl __udivsi3\n\
- mov r1, r8\n\
- adds r1, 0x1\n\
- adds r3, r0, 0\n\
- muls r3, r1\n\
- ldr r0, =0x0000ffff\n\
- ands r0, r3\n\
- ldr r1, =0x00007fff\n\
- cmp r0, r1\n\
- bls _080F7BDA\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r3, r1\n\
-_080F7BDA:\n\
- ldr r1, =gTasks\n\
- lsls r2, r5, 2\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r1\n\
- mov r0, r9\n\
- strh r0, [r4, 0x8]\n\
- ldr r0, [r6, 0x4]\n\
- add r0, r10\n\
- ldrb r0, [r0, 0x10]\n\
- adds r6, r1, 0\n\
- cmp r0, 0\n\
- beq _080F7C1C\n\
- strh r7, [r4, 0xC]\n\
- ldr r0, [sp, 0xC]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0xC]\n\
- b _080F7C26\n\
- .pool\n\
-_080F7C1C:\n\
- ldr r0, [sp, 0x8]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x8]\n\
-_080F7C26:\n\
- ldr r1, =gUnknown_0203A034\n\
- ldr r0, [r1]\n\
- ldr r0, [r0, 0x4]\n\
- mov r4, r10\n\
- adds r1, r4, r0\n\
- ldrb r0, [r1, 0x10]\n\
- ldr r4, =gUnknown_0203A034\n\
- cmp r0, 0\n\
- beq _080F7C4C\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- lsrs r2, r3, 16\n\
- ldr r1, [r1, 0x8]\n\
- subs r1, r2\n\
- b _080F7C58\n\
- .pool\n\
-_080F7C4C:\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- lsrs r2, r3, 16\n\
- ldr r1, [r1, 0x8]\n\
- adds r1, r2\n\
-_080F7C58:\n\
- strh r1, [r0, 0xA]\n\
- ldr r0, [r4]\n\
- ldr r1, [r0]\n\
- ldrb r0, [r1, 0x14]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x14]\n\
-_080F7C64:\n\
- movs r0, 0x14\n\
- add r10, r0\n\
- ldr r1, [sp, 0x10]\n\
- movs r3, 0xC0\n\
- lsls r3, 18\n\
- adds r1, r3\n\
- str r1, [sp, 0x10]\n\
- movs r4, 0x1\n\
- add r9, r4\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- bgt _080F7C7E\n\
- b _080F7B68\n\
-_080F7C7E:\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0\n\
- beq _080F7C8A\n\
- movs r0, 0x16\n\
- bl PlaySE\n\
-_080F7C8A:\n\
- ldr r3, [sp, 0x8]\n\
- cmp r3, 0\n\
- beq _080F7C96\n\
- movs r0, 0x15\n\
- bl PlaySE\n\
-_080F7C96:\n\
- add sp, 0x14\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");
+ int i, taskId;
+ u32 var0;
+ u8 sp8 = 0, spC = 0;
+
+ if (!arg0)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ u8 unk = (*gUnknown_0203A034->unk4)[i].unk11;
+ if (arg1 < unk)
+ {
+ FillBgTilemapBufferRect_Palette0(1, 0x60B3, ((19 + unk) - arg1) - 1, i * 3 + 5, 1, 1);
+ taskId = CreateTask(sub_80F7CA8, 10);
+
+ var0 = (((*gUnknown_0203A034->unk4)[i].unk8 << 16) / (*gUnknown_0203A034->unk4)[i].unk11) * (arg1 + 1);
+ if ((var0 & 0xFFFF) > 0x7FFF)
+ var0 += 0x10000;
+
+ gTasks[taskId].data[0] = i;
+ gTasks[taskId].data[1] = var0 >> 16;
+ gUnknown_0203A034->unk0->unk14++;
+ sp8++;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ s8 unk = (*gUnknown_0203A034->unk4)[i].unk12;
+ u32 tile = (*gUnknown_0203A034->unk4)[i].unk10 ? 0x60A5 : 0x60A3;
+ if (arg1 < unk)
+ {
+ FillBgTilemapBufferRect_Palette0(1, tile, ((19 + unk) - arg1) - 1, i * 3 + 6, 1, 1);
+ taskId = CreateTask(sub_80F7CA8, 10);
+
+ var0 = (((*gUnknown_0203A034->unk4)[i].unkC << 16) / (*gUnknown_0203A034->unk4)[i].unk12) * (arg1 + 1);
+ if ((var0 & 0xFFFF) > 0x7FFF)
+ var0 += 0x10000;
+
+ gTasks[taskId].data[0] = i;
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ {
+ gTasks[taskId].data[2] = 1;
+ spC++;
+ }
+ else
+ {
+ sp8++;
+ }
+
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ gTasks[taskId].data[1] = -(var0 >> 16) + (*gUnknown_0203A034->unk4)[i].unk8 ;
+ else
+ gTasks[taskId].data[1] = (var0 >> 16) + (*gUnknown_0203A034->unk4)[i].unk8;
+
+ gUnknown_0203A034->unk0->unk14++;
+ }
+ }
+ }
+
+ if (spC)
+ PlaySE(SE_BOO);
+ if (sp8)
+ PlaySE(SE_PIN);
}
void sub_80F7CA8(u8 taskId)
@@ -2624,8 +2051,7 @@ void sub_80F8290(void)
void sub_80F82B4(void)
{
- u8 i;
- u8 count;
+ u8 i, count;
for (i = 0, count = 0; i < 4; i++)
{
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 820505b6e..66127cbbc 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -684,7 +684,7 @@ static void sub_8130760(u8 contestResult)
gUnknown_030061A0.var_16 = 2;
gUnknown_030061A0.var_0 = contestResult;
- gUnknown_030061A0.var_10 = 0x6010000;
+ gUnknown_030061A0.var_10 = OBJ_VRAM0;
sub_8124F2C(&gUnknown_030061A0);
sub_81261A4(&gUnknown_030061A0);
diff --git a/src/data/region_map/city_map_entries.h b/src/data/region_map/city_map_entries.h
new file mode 100644
index 000000000..7b8361a7c
--- /dev/null
+++ b/src/data/region_map/city_map_entries.h
@@ -0,0 +1,113 @@
+const struct CityMapEntry gPokenavCityMaps[] =
+{
+ {
+ .mapSecId = 0,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Littleroot_0,
+ },
+ {
+ .mapSecId = 1,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Oldale_0,
+ },
+ {
+ .mapSecId = 2,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Dewford_0,
+ },
+ {
+ .mapSecId = 3,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lavarige_0,
+ },
+ {
+ .mapSecId = 4,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fallarbor_0,
+ },
+ {
+ .mapSecId = 5,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Verdanturf_0,
+ },
+ {
+ .mapSecId = 6,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Pacifidlog_0,
+ },
+ {
+ .mapSecId = 7,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Petalburg_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Slateport_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Slateport_1,
+ },
+ {
+ .mapSecId = 9,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mauville_0,
+ },
+ {
+ .mapSecId = 9,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mauville_1,
+ },
+ {
+ .mapSecId = 10,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Rustboro_0,
+ },
+ {
+ .mapSecId = 10,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Rustboro_1,
+ },
+ {
+ .mapSecId = 11,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fortree_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lilycove_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Lilycove_1,
+ },
+ {
+ .mapSecId = 13,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mossdeep_0,
+ },
+ {
+ .mapSecId = 13,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mossdeep_1,
+ },
+ {
+ .mapSecId = 14,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Sootopolis_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 0,
+ .tilemap = gPokenavCityMap_EverGrande_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 1,
+ .tilemap = gPokenavCityMap_EverGrande_1,
+ },
+};
diff --git a/src/data/region_map/city_map_tilemaps.h b/src/data/region_map/city_map_tilemaps.h
new file mode 100644
index 000000000..8a8a931f9
--- /dev/null
+++ b/src/data/region_map/city_map_tilemaps.h
@@ -0,0 +1,22 @@
+const u32 gPokenavCityMap_Lavarige_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
+const u32 gPokenavCityMap_Fallarbor_0[] = INCBIN_U32("graphics/pokenav/city_maps/fallarbor_0.bin.lz");
+const u32 gPokenavCityMap_Fortree_0[] = INCBIN_U32("graphics/pokenav/city_maps/fortree_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_0[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_1[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_1.bin.lz");
+const u32 gPokenavCityMap_Rustboro_0[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_0.bin.lz");
+const u32 gPokenavCityMap_Rustboro_1[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_1.bin.lz");
+const u32 gPokenavCityMap_Pacifidlog_0[] = INCBIN_U32("graphics/pokenav/city_maps/pacifidlog_0.bin.lz");
+const u32 gPokenavCityMap_Mauville_1[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_1.bin.lz");
+const u32 gPokenavCityMap_Mauville_0[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_0.bin.lz");
+const u32 gPokenavCityMap_Oldale_0[] = INCBIN_U32("graphics/pokenav/city_maps/oldale_0.bin.lz");
+const u32 gPokenavCityMap_Lilycove_1[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_1.bin.lz");
+const u32 gPokenavCityMap_Lilycove_0[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_0.bin.lz");
+const u32 gPokenavCityMap_Littleroot_0[] = INCBIN_U32("graphics/pokenav/city_maps/littleroot_0.bin.lz");
+const u32 gPokenavCityMap_Dewford_0[] = INCBIN_U32("graphics/pokenav/city_maps/dewford_0.bin.lz");
+const u32 gPokenavCityMap_Sootopolis_0[] = INCBIN_U32("graphics/pokenav/city_maps/sootopolis_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_0[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_1[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_1.bin.lz");
+const u32 gPokenavCityMap_Verdanturf_0[] = INCBIN_U32("graphics/pokenav/city_maps/verdanturf_0.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_1[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_1.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_0[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_0.bin.lz");
+const u32 gPokenavCityMap_Petalburg_0[] = INCBIN_U32("graphics/pokenav/city_maps/petalburg_0.bin.lz");
diff --git a/src/data/text/gift_ribbon_descriptions.h b/src/data/text/gift_ribbon_descriptions.h
new file mode 100644
index 000000000..ea108be18
--- /dev/null
+++ b/src/data/text/gift_ribbon_descriptions.h
@@ -0,0 +1,115 @@
+const u8 gGiftRibbonDescriptionPart1_2003RegionalTourney[] = _("2003 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart2_Champion[] = _("CHAMPION RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2003NationalTourney[] = _("2003 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2003GlobalCup[] = _("2003 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart2_RunnerUp[] = _("Runner-up RIBBON");
+const u8 gGiftRibbonDescriptionPart2_Semifinalist[] = _("Semifinalist RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2004RegionalTourney[] = _("2004 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004NationalTourney[] = _("2004 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004GlobalCup[] = _("2004 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_2005RegionalTourney[] = _("2005 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005NationalTourney[] = _("2005 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005GlobalCup[] = _("2005 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonBattleCup[] = _("POKéMON BATTLE CUP");
+const u8 gGiftRibbonDescriptionPart2_Participation[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonLeague[] = _("POKéMON LEAGUE");
+const u8 gGiftRibbonDescriptionPart1_AdvanceCup[] = _("ADVANCE CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonTournament[] = _("POKéMON Tournament");
+const u8 gGiftRibbonDescriptionPart2_Participation2[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonEvent[] = _("POKéMON Event");
+const u8 gGiftRibbonDescriptionPart1_PokemonFestival[] = _("POKéMON Festival");
+const u8 gGiftRibbonDescriptionPart1_DifficultyClearing[] = _("Difficulty-clearing");
+const u8 gGiftRibbonDescriptionPart2_Commemorative[] = _("Commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart1_ClearingAllChallenges[] = _("RIBBON awarded for");
+const u8 gGiftRibbonDescriptionPart2_ClearingAllChallenges[] = _("clearing all challenges.");
+const u8 gGiftRibbonDescriptionPart1_100StraightWin[] = _("100-straight Win");
+const u8 gGiftRibbonDescriptionPart1_DarknessTower[] = _("DARKNESS TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_RedTower[] = _("RED TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_BlackironTower[] = _("BLACKIRON TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_FinalTower[] = _("FINAL TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_LegendMaking[] = _("Legend-making");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterTokyo[] = _("POKéMON CENTER TOKYO");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterOsaka[] = _("POKéMON CENTER OSAKA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNagoya[] = _("POKéMON CENTER NAGOYA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNY[] = _("POKéMON CENTER NY");
+const u8 gGiftRibbonDescriptionPart1_SummerHolidays[] = _("Summer Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart2_EmptyString[] = _("");
+const u8 gGiftRibbonDescriptionPart1_WinterHolidays[] = _("Winter Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpringHolidays[] = _("Spring Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_Evergreen[] = _("Evergreen RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpecialHoliday[] = _("Special Holiday RIBBON");
+const u8 gGiftRibbonDescriptionPart1_HardWorker[] = _("Hard Worker RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LotsOfFriends[] = _("Lots of Friends RIBBON");
+const u8 gGiftRibbonDescriptionPart1_FullOfEnergy[] = _("Full of Energy RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LovedPokemon[] = _("A commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart2_LovedPokemon[] = _("for a loved POKéMON.");
+const u8 gGiftRibbonDescriptionPart1_LoveForPokemon[] = _("RIBBON that shows");
+const u8 gGiftRibbonDescriptionPart2_LoveForPokemon[] = _("love for POKéMON.");
+
+const u8 *const gGiftRibbonDescriptionPointers[][2] =
+{
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges},
+ {gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon},
+ {gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon}
+};
diff --git a/src/data/text/match_call_messages.h b/src/data/text/match_call_messages.h
new file mode 100644
index 000000000..c3015b5a7
--- /dev/null
+++ b/src/data/text/match_call_messages.h
@@ -0,0 +1,476 @@
+#define MCFLAVOR(name) {gMatchCallFlavorText_##name##_Strategy, \
+ gMatchCallFlavorText_##name##_Pokemon, \
+ gMatchCallFlavorText_##name##_Intro1, \
+ gMatchCallFlavorText_##name##_Intro2}
+
+const u8 gMatchCallFlavorText_AromaLady_Rose_Strategy[] = _("Becalm fighting emotions.");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Pokemon[] = _("Fragrant GRASS POKéMON.");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Intro1[] = _("Soothing aromas make the");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Intro2[] = _("body and mind healthy.");
+
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Strategy[] = _("I'm not very good at this.");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Pokemon[] = _("Ruin-exploration partners.");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro1[] = _("I am searching for undersea");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro2[] = _("ruins and relics.");
+
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Strategy[] = _("Overwhelm with power!");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Pokemon[] = _("Craggy ROCK POKéMON.");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro1[] = _("In search of ancient lore,");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro2[] = _("I travel the world.");
+
+const u8 gMatchCallFlavorText_Tuber_Lola_Strategy[] = _("I'm going to try hard!");
+const u8 gMatchCallFlavorText_Tuber_Lola_Pokemon[] = _("Good swimmer POKéMON.");
+const u8 gMatchCallFlavorText_Tuber_Lola_Intro1[] = _("I wish I could swim without");
+const u8 gMatchCallFlavorText_Tuber_Lola_Intro2[] = _("using an inner tube.");
+
+const u8 gMatchCallFlavorText_Tuber_Ricky_Strategy[] = _("I don't know. I'll try hard.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Pokemon[] = _("WATER POKéMON are buddies.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Intro1[] = _("It's not like I can't swim.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Intro2[] = _("I just like my inner tube.");
+
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Strategy[] = _("We split our duties.");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Pokemon[] = _("We like friendly POKéMON.");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro1[] = _("We enjoy POKéMON together");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro2[] = _("as sister and brother.");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Strategy[] = _("I finish with power moves!");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Pokemon[] = _("A mix of different types.");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro1[] = _("I aim to become the ultimate");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro2[] = _("TRAINER!");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Strategy[] = _("Exploit the foe's weakness.");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Pokemon[] = _("Balance is crucial.");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro1[] = _("My goal is to become the");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro2[] = _("POKéMON CHAMPION.");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Strategy[] = _("Upset the opponent.");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Pokemon[] = _("Type doesn't matter.");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro1[] = _("I'm a top student at the");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro2[] = _("TRAINER'S SCHOOL.");
+
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Strategy[] = _("Slow, steady suffering.");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Pokemon[] = _("Scary to meet at night.");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro1[] = _("I see things that others");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro2[] = _("can't see...");
+
+const u8 gMatchCallFlavorText_Lady_Cindy_Strategy[] = _("Anything to win.");
+const u8 gMatchCallFlavorText_Lady_Cindy_Pokemon[] = _("Gorgeous type!");
+const u8 gMatchCallFlavorText_Lady_Cindy_Intro1[] = _("I have a pool specially for");
+const u8 gMatchCallFlavorText_Lady_Cindy_Intro2[] = _("my POKéMON at home.");
+
+const u8 gMatchCallFlavorText_Beauty_Thalia_Strategy[] = _("You'll fall under my spell!");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Pokemon[] = _("Mature WATER type.");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Intro1[] = _("I dream of cruising around");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Intro2[] = _("the world on a luxury liner.");
+
+const u8 gMatchCallFlavorText_Beauty_Jessica_Strategy[] = _("I'll lead you astray.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Pokemon[] = _("Cute, of course.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Intro1[] = _("I love the SAFARI ZONE.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Intro2[] = _("I seem to end up there.");
+
+const u8 gMatchCallFlavorText_RichBoy_Winston_Strategy[] = _("Strategy? Who needs it?");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Pokemon[] = _("I spent big money on it!");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Intro1[] = _("I, being rich, sleep in a");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Intro2[] = _("custom POKéMON bed.");
+
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Strategy[] = _("Wrestle down with power.");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Pokemon[] = _("Took all night to catch.");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro1[] = _("Big, burly, and buff");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro2[] = _("POKéMON are the best...");
+
+const u8 gMatchCallFlavorText_Swimmer_Tony_Strategy[] = _("Ram at full speed!");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Pokemon[] = _("Funky WATER type!");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Intro1[] = _("If I can't be out swimming,");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Intro2[] = _("I'll be pumping weights.");
+
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Strategy[] = _("Grand slam pummeling!");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Pokemon[] = _("FIGHTING type.");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro1[] = _("Not to brag, but I can bust");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro2[] = _("ten roof tiles!");
+
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Strategy[] = _("Witness karate power!");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Pokemon[] = _("My partners in training!");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro1[] = _("Let us discuss matters of");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro2[] = _("the world with bare fists!");
+
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Strategy[] = _("Rock to stunning sounds!");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Pokemon[] = _("Electric-and-sound combo!");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro1[] = _("My compositions will shock");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro2[] = _("you and stun you!");
+
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Strategy[] = _("I'll electrify you!");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Pokemon[] = _("They're ELECTRIC!");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro1[] = _("I want to make people cry");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro2[] = _("with songs from my heart.");
+
+const u8 gMatchCallFlavorText_Kindler_Bernie_Strategy[] = _("Burn it all down!");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Pokemon[] = _("Burn-inducing POKéMON.");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Intro1[] = _("When you light a campfire,");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Intro2[] = _("be sure there's some water.");
+
+const u8 gMatchCallFlavorText_Camper_Ethan_Strategy[] = _("Hang in and be tenacious!");
+const u8 gMatchCallFlavorText_Camper_Ethan_Pokemon[] = _("I'll raise any POKéMON.");
+const u8 gMatchCallFlavorText_Camper_Ethan_Intro1[] = _("POKéMON raised in the wild");
+const u8 gMatchCallFlavorText_Camper_Ethan_Intro2[] = _("grow strong!");
+
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Strategy[] = _("Our love lets us prevail.");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Pokemon[] = _("We've had them for years.");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro1[] = _("Married 50 years, we've");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro2[] = _("devotedly raised POKéMON.");
+
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Strategy[] = _("Attack in waves!");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Pokemon[] = _("BUG POKéMON are cool.");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro1[] = _("I go into the forest every");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro2[] = _("day to catch BUG POKéMON.");
+
+const u8 gMatchCallFlavorText_Psychic_Cameron_Strategy[] = _("Daze and confuse!");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Pokemon[] = _("Ones with weird powers.");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Intro1[] = _("I can see through exactly");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Intro2[] = _("what you're thinking!");
+
+const u8 gMatchCallFlavorText_Psychic_Jacki_Strategy[] = _("Battle at full power.");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Pokemon[] = _("POKéMON of many mysteries.");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Intro1[] = _("When we spoke, I was really");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Intro2[] = _("using telepathy.");
+
+const u8 gMatchCallFlavorText_Gentleman_Walter_Strategy[] = _("Calm and collected.");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Pokemon[] = _("POKéMON of distinction.");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Intro1[] = _("We enjoy a spot of tea");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Intro2[] = _("every day. It's imported.");
+
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Strategy[] = _("I use my head to battle.");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Pokemon[] = _("I love any kind of POKéMON!");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro1[] = _("My daddy gives me spending");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro2[] = _("money if I ace a test.");
+
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Strategy[] = _("My knowledge rules!");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Pokemon[] = _("Any smart POKéMON!");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro1[] = _("I want to be a POKéMON");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro2[] = _("researcher in the future.");
+
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Strategy[] = _("We talk it over first.");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Pokemon[] = _("POKéMON that we both like.");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro1[] = _("We're senior and junior");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro2[] = _("students into POKéMON!");
+
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Strategy[] = _("Go for it, my dears!");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Pokemon[] = _("I have no likes or dislikes.");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro1[] = _("While out shopping for");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro2[] = _("supper, I battle too.");
+
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Strategy[] = _("I battle with love!");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Pokemon[] = _("A POKéMON raised with love!");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro1[] = _("It's important to build");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro2[] = _("trust with your POKéMON.");
+
+const u8 gMatchCallFlavorText_Expert_Timothy_Strategy[] = _("I see through your moves!");
+const u8 gMatchCallFlavorText_Expert_Timothy_Pokemon[] = _("The essence of FIGHTING.");
+const u8 gMatchCallFlavorText_Expert_Timothy_Intro1[] = _("I'm not ready to give way");
+const u8 gMatchCallFlavorText_Expert_Timothy_Intro2[] = _("to the young yet!");
+
+const u8 gMatchCallFlavorText_Expert_Shelby_Strategy[] = _("Attack while defending.");
+const u8 gMatchCallFlavorText_Expert_Shelby_Pokemon[] = _("The FIGHTING type.");
+const u8 gMatchCallFlavorText_Expert_Shelby_Intro1[] = _("Being old, I have my own");
+const u8 gMatchCallFlavorText_Expert_Shelby_Intro2[] = _("style of battling.");
+
+const u8 gMatchCallFlavorText_Youngster_Calvin_Strategy[] = _("I do what I can.");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Pokemon[] = _("I use different types.");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Intro1[] = _("I'm going to keep working");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Intro2[] = _("until I beat a GYM LEADER.");
+
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Strategy[] = _("I battle patiently.");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Pokemon[] = _("WATER POKéMON to battle!");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro1[] = _("I'm the world's only guy to");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro2[] = _("catch a huge POKéMON!");
+
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Strategy[] = _("Exploit the environment!");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Pokemon[] = _("All hail the WATER type!");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro1[] = _("I won't be beaten by some");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro2[] = _("beach bum SWIMMER!");
+
+const u8 gMatchCallFlavorText_Triathlete_Maria_Strategy[] = _("Speed above all!");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Pokemon[] = _("I use a speedy POKéMON.");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Intro1[] = _("A marathon is a challenge");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Intro2[] = _("against your own self.");
+
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Strategy[] = _("Defense is crucial.");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Pokemon[] = _("My POKéMON is solid.");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro1[] = _("I started this for dieting,");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro2[] = _("but I got right into it.");
+
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Strategy[] = _("Strike before stricken!");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Pokemon[] = _("A fast-running POKéMON!");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro1[] = _("If you ran and ran, you'd");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro2[] = _("become one with the wind.");
+
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Strategy[] = _("All-out offensive!");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Pokemon[] = _("WATER POKéMON rule!");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro1[] = _("I must swim over 6 miles");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro2[] = _("every day.");
+
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Strategy[] = _("Push and push again!");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Pokemon[] = _("The strength of STEEL.");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro1[] = _("If you're sweating, get");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro2[] = _("fluids into you regularly.");
+
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Strategy[] = _("Draw the power of WATER.");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Pokemon[] = _("Toughened WATER POKéMON.");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro1[] = _("Training POKéMON is good,");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro2[] = _("but don't neglect yourself.");
+
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Strategy[] = _("It's about POKéMON power!");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Pokemon[] = _("See the power of DRAGONS!");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro1[] = _("I'll become legendary as the");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro2[] = _("strongest one day!");
+
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Strategy[] = _("I'll show you my technique!");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Pokemon[] = _("Elegantly wheeling BIRDS.");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro1[] = _("My BIRD POKéMON, deliver my");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro2[] = _("love to that girl!");
+
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Strategy[] = _("You'll suffer from poison!");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Pokemon[] = _("Poisonous POKéMON.");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro1[] = _("I undertake training so");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro2[] = _("that I may become a ninja.");
+
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Strategy[] = _("The first strike wins!");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Pokemon[] = _("Speedy FIGHTING type.");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro1[] = _("If my POKéMON lose,");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro2[] = _("I'll carry on the fight!");
+
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Strategy[] = _("Go, go, my POKéMON!");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Pokemon[] = _("I'll raise anything.");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro1[] = _("UV rays are your skin's");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro2[] = _("enemy. Get protected.");
+
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Strategy[] = _("No mercy!");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Pokemon[] = _("Cute WATER POKéMON.");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro1[] = _("I have too many fans.");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro2[] = _("I was interviewed on TV.");
+
+const u8 gMatchCallFlavorText_Picnicker_Diana_Strategy[] = _("I think about this & that.");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Pokemon[] = _("I like all POKéMON.");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Intro1[] = _("What lies beyond that");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Intro2[] = _("yonder hill?");
+
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Strategy[] = _("We battle together!");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Pokemon[] = _("We train together!");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro1[] = _("We like the same POKéMON,");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro2[] = _("but different desserts.");
+
+const u8 gMatchCallFlavorText_Sailor_Ernest_Strategy[] = _("I force things with power!");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Pokemon[] = _("WATER and FIGHTING types.");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Intro1[] = _("Seamen are rough spirits!");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Intro2[] = _("Any complaints?");
+
+const u8 gMatchCallFlavorText_Sailor_Cory_Strategy[] = _("Up for a fight anytime!");
+const u8 gMatchCallFlavorText_Sailor_Cory_Pokemon[] = _("WATER POKéMON are my faves!");
+const u8 gMatchCallFlavorText_Sailor_Cory_Intro1[] = _("If you want to shout loud,");
+const u8 gMatchCallFlavorText_Sailor_Cory_Intro2[] = _("suck in air with your belly!");
+
+const u8 gMatchCallFlavorText_Collector_Edwin_Strategy[] = _("Protect POKéMON from harm.");
+const u8 gMatchCallFlavorText_Collector_Edwin_Pokemon[] = _("I love rare POKéMON.");
+const u8 gMatchCallFlavorText_Collector_Edwin_Intro1[] = _("I want to collect all the");
+const u8 gMatchCallFlavorText_Collector_Edwin_Intro2[] = _("world's rare POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Strategy[] = _("I count on power.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Pokemon[] = _("POKéMON are my children.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro1[] = _("It takes knowledge and");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro2[] = _("love to raise POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Strategy[] = _("Full-on attack!");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Pokemon[] = _("Anything. I'll raise it.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro1[] = _("I give them {POKEBLOCK}S for");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro2[] = _("going after CONTEST titles.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Strategy[] = _("I raise POKéMON with care.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Pokemon[] = _("Fun-to-raise POKéMON.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro1[] = _("Treat every POKéMON you");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro2[] = _("meet with respect.");
+
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Strategy[] = _("I believe in my POKéMON.");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Pokemon[] = _("I like strong POKéMON.");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro1[] = _("I'm training for rescue");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro2[] = _("work with my POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Strategy[] = _("Attack in waves!");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Pokemon[] = _("I use different types.");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro1[] = _("Those who destroy nature");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro2[] = _("must never be forgiven!");
+
+const u8 gMatchCallFlavorText_Lass_Haley_Strategy[] = _("I'll show you some guts!");
+const u8 gMatchCallFlavorText_Lass_Haley_Pokemon[] = _("Cute POKéMON are my faves!");
+const u8 gMatchCallFlavorText_Lass_Haley_Intro1[] = _("After a battle, I always");
+const u8 gMatchCallFlavorText_Lass_Haley_Intro2[] = _("bathe with my POKéMON.");
+
+const u8 gMatchCallFlavorText_BugCatcher_James_Strategy[] = _("Lightning-fast attack!");
+const u8 gMatchCallFlavorText_BugCatcher_James_Pokemon[] = _("BUG POKéMON are number 1!");
+const u8 gMatchCallFlavorText_BugCatcher_James_Intro1[] = _("If you want to catch BUG");
+const u8 gMatchCallFlavorText_BugCatcher_James_Intro2[] = _("POKéMON, wake up early.");
+
+const u8 gMatchCallFlavorText_Hiker_Trent_Strategy[] = _("I battle with power.");
+const u8 gMatchCallFlavorText_Hiker_Trent_Pokemon[] = _("Hard-bodied POKéMON.");
+const u8 gMatchCallFlavorText_Hiker_Trent_Intro1[] = _("I've been planning a month");
+const u8 gMatchCallFlavorText_Hiker_Trent_Intro2[] = _("for today's hike.");
+
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Strategy[] = _("I like it hot!");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Pokemon[] = _("Hot POKéMON!");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro1[] = _("As much as I love POKéMON,");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro2[] = _("I surely like hiking!");
+
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Strategy[] = _("Lovey-dovey strategy!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Pokemon[] = _("Lovey-dovey POKéMON!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro1[] = _("We're lovey-dovey!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro2[] = _("Forever lovey-dovey!");
+
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Strategy[] = _("We let it all hang out.");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Pokemon[] = _("The 1st POKéMON I caught.");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro1[] = _("POKéMON and I have grown");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro2[] = _("stronger together.");
+
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Strategy[] = _("ROCK-type power attack.");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Pokemon[] = _("I prefer rock-hard POKéMON.");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro1[] = _("A LEADER of a big GYM bears");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro2[] = _("a lot of responsibility.");
+
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Strategy[] = _("Direct physical action!");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Pokemon[] = _("FIGHTING POKéMON rule!");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro1[] = _("The world awaits me as the");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro2[] = _("next big wave!");
+
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Strategy[] = _("I choose to electrify.");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Pokemon[] = _("Get shocked by electricity!");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro1[] = _("One must never throw a");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro2[] = _("match. Even I must not.");
+
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Strategy[] = _("Battle aggressively.");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Pokemon[] = _("Burn with passion!");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro1[] = _("Completely wash away daily");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro2[] = _("fatigue in hot springs!");
+
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Strategy[] = _("I flexibly adapt my style.");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Pokemon[] = _("Grown in a balanced manner.");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro1[] = _("I walk the 30 minutes from");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro2[] = _("home to here every day.");
+
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Strategy[] = _("I take advantage of speed.");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Pokemon[] = _("Graceful sky dancers.");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro1[] = _("The ultimate would be to");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro2[] = _("live as one with nature.");
+
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Strategy[] = _("We battle in cooperation.");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Pokemon[] = _("Always friendly POKéMON.");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro1[] = _("Papa has trouble telling");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro2[] = _("the two of us apart!");
+
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Strategy[] = _("I use splendid waterpower.");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Pokemon[] = _("POKéMON of elegance!");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro1[] = _("The adulation of beautiful");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro2[] = _("ladies fills me with energy!");
+
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Strategy[] = _("Offense over defense!");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Pokemon[] = _("The DARK side's beauties.");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro1[] = _("They said I was a punk, but");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro2[] = _("I'm one of the ELITE FOUR!");
+
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Strategy[] = _("Confuse and confound.");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Pokemon[] = _("There's nothing definite.");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro1[] = _("I wonder how my grandma at");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro2[] = _("MT. PYRE is doing?");
+
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Strategy[] = _("I use items for help.");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Pokemon[] = _("Flaming passion in icy cold!");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro1[] = _("The ICE type can be better");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro2[] = _("trained in this hot land.");
+
+const u8 gMatchCallFlavorText_EliteFour_Drake_Strategy[] = _("Harness strong abilities.");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Pokemon[] = _("The raw power of DRAGONS!");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Intro1[] = _("I dedicate myself to the");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Intro2[] = _("POKéMON that saved me.");
+
+const u8 gMatchCallFlavorText_Champion_Wallace_Strategy[] = _("Dignity and respect.");
+const u8 gMatchCallFlavorText_Champion_Wallace_Pokemon[] = _("I prefer POKéMON of grace.");
+const u8 gMatchCallFlavorText_Champion_Wallace_Intro1[] = _("I represent beauty as");
+const u8 gMatchCallFlavorText_Champion_Wallace_Intro2[] = _("well as intelligence.");
+
+const u8 *const gMatchCallMessages[][4] =
+{
+ [REMATCH_ROSE] = MCFLAVOR(AromaLady_Rose),
+ [REMATCH_ANDRES] = MCFLAVOR(RuinManiac_Andres),
+ [REMATCH_DUSTY] = MCFLAVOR(RuinManiac_Dusty),
+ [REMATCH_LOLA] = MCFLAVOR(Tuber_Lola),
+ [REMATCH_RICKY] = MCFLAVOR(Tuber_Ricky),
+ [REMATCH_LILA_AND_ROY] = MCFLAVOR(SisAndBro_LilaAndRoy),
+ [REMATCH_CRISTIN] = MCFLAVOR(Cooltrainer_Cristin),
+ [REMATCH_BROOKE] = MCFLAVOR(Cooltrainer_Brooke),
+ [REMATCH_WILTON] = MCFLAVOR(Cooltrainer_Wilton),
+ [REMATCH_VALERIE] = MCFLAVOR(HexManiac_Valerie),
+ [REMATCH_CINDY] = MCFLAVOR(Lady_Cindy),
+ [REMATCH_THALIA] = MCFLAVOR(Beauty_Thalia),
+ [REMATCH_JESSICA] = MCFLAVOR(Beauty_Jessica),
+ [REMATCH_WINSTON] = MCFLAVOR(RichBoy_Winston),
+ [REMATCH_STEVE] = MCFLAVOR(PokeManiac_Steve),
+ [REMATCH_TONY] = MCFLAVOR(Swimmer_Tony),
+ [REMATCH_NOB] = MCFLAVOR(BlackBelt_Nob),
+ [REMATCH_KOJI] = MCFLAVOR(BlackBelt_Koji),
+ [REMATCH_FERNANDO] = MCFLAVOR(Guitarist_Fernando),
+ [REMATCH_DALTON] = MCFLAVOR(Guitarist_Dalton),
+ [REMATCH_BERNIE] = MCFLAVOR(Kindler_Bernie),
+ [REMATCH_ETHAN] = MCFLAVOR(Camper_Ethan),
+ [REMATCH_JOHN_AND_JAY] = MCFLAVOR(OldCouple_JohnAndJay),
+ [REMATCH_JEFFREY] = MCFLAVOR(BugManiac_Jeffrey),
+ [REMATCH_CAMERON] = MCFLAVOR(Psychic_Cameron),
+ [REMATCH_JACKI] = MCFLAVOR(Psychic_Jacki),
+ [REMATCH_WALTER] = MCFLAVOR(Gentleman_Walter),
+ [REMATCH_KAREN] = MCFLAVOR(SchoolKid_Karen),
+ [REMATCH_JERRY] = MCFLAVOR(SchoolKid_Jerry),
+ [REMATCH_ANNA_AND_MEG] = MCFLAVOR(SrAndJr_AnnaAndMeg),
+ [REMATCH_ISABEL] = MCFLAVOR(Pokefan_Isabel),
+ [REMATCH_MIGUEL] = MCFLAVOR(Pokefan_Miguel),
+ [REMATCH_TIMOTHY] = MCFLAVOR(Expert_Timothy),
+ [REMATCH_SHELBY] = MCFLAVOR(Expert_Shelby),
+ [REMATCH_CALVIN] = MCFLAVOR(Youngster_Calvin),
+ [REMATCH_ELLIOT] = MCFLAVOR(Fisherman_Elliot),
+ [REMATCH_ISAIAH] = MCFLAVOR(Triathlete_Isaiah),
+ [REMATCH_MARIA] = MCFLAVOR(Triathlete_Maria),
+ [REMATCH_ABIGAIL] = MCFLAVOR(Triathlete_Abigail),
+ [REMATCH_DYLAN] = MCFLAVOR(Triathlete_Dylan),
+ [REMATCH_KATELYN] = MCFLAVOR(Triathlete_Katelyn),
+ [REMATCH_BENJAMIN] = MCFLAVOR(Triathlete_Benjamin),
+ [REMATCH_PABLO] = MCFLAVOR(Triathlete_Pablo),
+ [REMATCH_NICOLAS] = MCFLAVOR(DragonTamer_Nicolas),
+ [REMATCH_ROBERT] = MCFLAVOR(BirdKeeper_Robert),
+ [REMATCH_LAO] = MCFLAVOR(NinjaBoy_Lao),
+ [REMATCH_CYNDY] = MCFLAVOR(BattleGirl_Cyndy),
+ [REMATCH_MADELINE] = MCFLAVOR(ParasolLady_Madeline),
+ [REMATCH_JENNY] = MCFLAVOR(Swimmer_Jenny),
+ [REMATCH_DIANA] = MCFLAVOR(Picnicker_Diana),
+ [REMATCH_AMY_AND_LIV] = MCFLAVOR(Twins_AmyAndLiv),
+ [REMATCH_ERNEST] = MCFLAVOR(Sailor_Ernest),
+ [REMATCH_CORY] = MCFLAVOR(Sailor_Cory),
+ [REMATCH_EDWIN] = MCFLAVOR(Collector_Edwin),
+ [REMATCH_LYDIA] = MCFLAVOR(PkmnBreeder_Lydia),
+ [REMATCH_ISAAC] = MCFLAVOR(PkmnBreeder_Isaac),
+ [REMATCH_GABRIELLE] = MCFLAVOR(PkmnBreeder_Gabrielle),
+ [REMATCH_CATHERINE] = MCFLAVOR(PkmnRanger_Catherine),
+ [REMATCH_JACKSON] = MCFLAVOR(PkmnRanger_Jackson),
+ [REMATCH_HALEY] = MCFLAVOR(Lass_Haley),
+ [REMATCH_JAMES] = MCFLAVOR(BugCatcher_James),
+ [REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
+ [REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
+ [REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal),
+ [REMATCH_WALLY_3] = MCFLAVOR(PkmnTrainer_Wally),
+ [REMATCH_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
+ [REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
+ [REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
+ [REMATCH_FLANNERY] = MCFLAVOR(PassionBurn_Flannery),
+ [REMATCH_NORMAN] = MCFLAVOR(ReliableOne_Dad),
+ [REMATCH_WINONA] = MCFLAVOR(SkyTamer_Winona),
+ [REMATCH_TATE_AND_LIZA] = MCFLAVOR(MysticDuo_TateAndLiza),
+ [REMATCH_JUAN] = MCFLAVOR(DandyCharm_Juan),
+ [REMATCH_SIDNEY] = MCFLAVOR(EliteFour_Sidney),
+ [REMATCH_PHOEBE] = MCFLAVOR(EliteFour_Phoebe),
+ [REMATCH_GLACIA] = MCFLAVOR(EliteFour_Glacia),
+ [REMATCH_DRAKE] = MCFLAVOR(EliteFour_Drake),
+ [REMATCH_WALLACE] = MCFLAVOR(Champion_Wallace),
+};
diff --git a/src/data/text/ribbon_descriptions.h b/src/data/text/ribbon_descriptions.h
new file mode 100644
index 000000000..f455a7771
--- /dev/null
+++ b/src/data/text/ribbon_descriptions.h
@@ -0,0 +1,48 @@
+const u8 gRibbonDescriptionPart1_Champion[] = _("CHAMPION-beating, HALL");
+const u8 gRibbonDescriptionPart2_Champion[] = _("OF FAME Member RIBBON");
+const u8 gRibbonDescriptionPart1_CoolContest[] = _("COOL CONTEST");
+const u8 gRibbonDescriptionPart1_BeautyContest[] = _("BEAUTY CONTEST");
+const u8 gRibbonDescriptionPart1_CuteContest[] = _("CUTE CONTEST");
+const u8 gRibbonDescriptionPart1_SmartContest[] = _("SMART CONTEST");
+const u8 gRibbonDescriptionPart1_ToughContest[] = _("TOUGH CONTEST");
+const u8 gRibbonDescriptionPart2_NormalRank[] = _("Normal Rank winner!");
+const u8 gRibbonDescriptionPart2_SuperRank[] = _("Super Rank winner!");
+const u8 gRibbonDescriptionPart2_HyperRank[] = _("Hyper Rank winner!");
+const u8 gRibbonDescriptionPart2_MasterRank[] = _("Master Rank winner!");
+const u8 gRibbonDescriptionPart1_Winning[] = _("For clearing LV50");
+const u8 gRibbonDescriptionPart2_Winning[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Victory[] = _("For clearing Open Level");
+const u8 gRibbonDescriptionPart2_Victory[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Artist[] = _("RIBBON for being chosen");
+const u8 gRibbonDescriptionPart2_Artist[] = _("as a super sketch model.");
+const u8 gRibbonDescriptionPart1_Effort[] = _("RIBBON awarded for");
+const u8 gRibbonDescriptionPart2_Effort[] = _("being a hard worker.");
+
+const u8 *const gRibbonDescriptionPointers[][2] =
+{
+ {gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
+ {gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
+ {gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
+ {gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
+};
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 0eb0c12f8..714b10ef6 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -1,249 +1,456 @@
#include "global.h"
#include "alloc.h"
-#include "palette.h"
-#include "window.h"
#include "bg.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "event_data.h"
#include "gpu_regs.h"
-#include "random.h"
+#include "international_string_util.h"
+#include "item.h"
#include "link.h"
#include "link_rfu.h"
-#include "task.h"
-#include "main.h"
-#include "constants/songs.h"
-#include "sound.h"
#include "m4a.h"
+#include "main.h"
+#include "palette.h"
#include "pokemon_jump.h"
+#include "random.h"
+#include "save.h"
+#include "script.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+#include "constants/species.h"
-struct DodrioBerryPickingSubstruct_0160
+struct DodrioSubstruct_0160
{
- /*0x0000 : 0x0160*/ u8 filler_000[12];
- /*0x000C : 0x016C*/ u8 unk_00C;
- /*0x000D : 0x016D*/ u8 filler_00D[0x3000 - 0xd];
- /*0x3000 : 0x3160*/ u32 unk_3000;
- /*0x3004 : 0x3164*/ u8 filler_3004[16];
- /*0x3014 : 0x3174*/ u8 unk_3014;
- /*0x3015 : 0x3175*/ u8 filler_3015[0x318C - 0x3175];
+ /*0x0000 : 0x3000*/ u16 ALIGNED(4) tilemapBuffers[3][BG_SCREEN_SIZE];
+ /*0x3000 : 0x3160*/ bool32 finished;
+ /*0x3004 : 0x3164*/ u8 ALIGNED(4) unk3004;
+ /*0x3008 : 0x3168*/ u8 ALIGNED(4) unk3008[10];
+ /*0x3014 : 0x3174*/ u8 ALIGNED(4) state;
+ /*0x3018 : 0x3178*/ u8 ALIGNED(4) unk3018;
+ /*0x301C : 0x317C*/ u16 ALIGNED(4) unk301C;
+ /*0x3020 : 0x3180*/ u8 ALIGNED(4) unk3020;
+ /*0x3024 : 0x3184*/ u8 ALIGNED(4) unk3024;
+ /*0x3024 : 0x3184*/ void (*unk3028)(void);
}; // size = 0x302C
-struct DodrioBerryPickingStruct_2022CF4
+struct DodrioStruct_2022CF4
{
- u8 filler_00[0x40];
+ u8 filler_00[0xc];
+ u8 unkC[10];
+ s16 unk16[10];
+ u16 unk2A[10];
+ u16 unk3E;
}; // size = 0x40
-struct DodrioBerryPickingSubstruct_31A0_14
+struct DodrioSubstruct_31A0_14
{
- u8 unk_0[11];
- u8 unk_B[11];
+ u8 unk0[11];
+ u8 unkB[11];
};
-struct DodrioBerryPickingSubstruct_31A0
-{
- u8 unk_00[0x10];
- u32 unk_10;
- struct DodrioBerryPickingSubstruct_31A0_14 unk_14;
- u8 unk_2C;
- u8 filler_2D[3];
- u8 unk_30;
- u8 filler_31[3];
- u8 unk_34;
- u8 filler_35[7];
+struct DodrioSubstruct_31A0_2C
+{
+ u8 unk0;
+ u8 ALIGNED(4) unk4;
+ u8 ALIGNED(4) unk8;
+};
+
+struct DodrioSubstruct_31A0
+{
+ u8 name[0x10];
+ u32 unk10;
+ struct DodrioSubstruct_31A0_14 unk14;
+ struct DodrioSubstruct_31A0_2C unk2C;
+ u8 filler_35[4];
}; // size = 0x3C
-struct DodrioBerryPickingSubstruct_318C
+struct DodrioSubstruct_318C
{
bool8 isShiny;
};
-struct DodrioBerryPickingStruct
+struct DodrioSubstruct_3308
+{
+ u8 unk0;
+ u32 unk4;
+};
+
+struct DodrioStruct
{
/*0x0000*/ void (*savedCallback)(void);
- /*0x0004*/ u8 unk_0004;
- /*0x0005*/ u8 filler_0005[3];
- /*0x0008*/ u8 unk_0008;
- /*0x0009*/ u8 filler_0009[3];
- /*0x000C*/ u8 unk_000C;
- /*0x000D*/ u8 filler_000D[3];
- /*0x0010*/ u8 unk_0010;
- /*0x0011*/ u8 filler_0011[3];
- /*0x0014*/ u8 unk_0014;
- /*0x0015*/ u8 filler_0015[3];
- /*0x0018*/ u8 unk_0018;
- /*0x0019*/ u8 filler_0019[3];
- /*0x001C*/ u8 unk_001C;
- /*0x001D*/ u8 filler_001D[3];
- /*0x0020*/ u8 unk_0020;
- /*0x0021*/ u8 filler_0021[3];
- /*0x0024*/ u8 unk_0024;
- /*0x0025*/ u8 filler_0025[3];
- /*0x0028*/ u8 multiplayerId;
+ /*0x0004*/ u8 ALIGNED(4) unk04;
+ /*0x0008*/ u8 ALIGNED(4) unk08;
+ /*0x000C*/ u8 ALIGNED(4) unk0C;
+ /*0x0010*/ u8 ALIGNED(4) unk10;
+ /*0x0014*/ u8 ALIGNED(4) unk14;
+ /*0x0018*/ u8 ALIGNED(4) unk18;
+ /*0x001C*/ u8 ALIGNED(4) unk1C;
+ /*0x0020*/ u8 ALIGNED(4) unk20;
+ /*0x0024*/ u8 ALIGNED(4) unk24;
+ /*0x0028*/ u8 ALIGNED(4) multiplayerId;
/*0x0029*/ u8 filler_0029[7];
- /*0x0030*/ u8 unk_0030;
- /*0x0031*/ u8 filler_0031[3];
- /*0x0034*/ u8 unk_0034[5];
- /*0x0039*/ u8 filler_0039[3];
- /*0x003C*/ u8 unk_003C;
- /*0x003D*/ u8 filler_003D[3];
- /*0x0040*/ u8 unk_0040;
- /*0x0041*/ u8 filler_0041[3];
- /*0x0044*/ u8 unk_0044;
- /*0x0045*/ u8 filler_0045[3];
- /*0x0048*/ u8 unk_0048;
- // align 1
- /*0x004A*/ u16 unk_004A[5][6];
- /*0x0086*/ u16 unk_0086[5];
- /*0x0090*/ u8 unk_0090[5];
- /*0x0095*/ u8 filler_0095[3];
- /*0x0098*/ u8 unk_0098[4];
- /*0x009C*/ u8 unk_009C[12];
- /*0x00A8*/ u8 unk_00A8[5];
- /*0x00AD*/ u8 filler_00AD[3];
- /*0x00B0*/ u8 unk_00B0[5];
- /*0x00B5*/ u8 filler_00B5[3];
- /*0x00B8*/ u8 unk_00B8[5];
- /*0x00BD*/ u8 filler_00BD[7];
- /*0x00C4*/ u8 unk_00C4[11];
- /*0x00CF*/ u8 filler_00CF[1];
- /*0x00D0*/ u8 unk_00D0[11];
- /*0x00DB*/ u8 filler_00DB[1];
- /*0x00DC*/ u8 unk_00DC[11];
- /*0x00E7*/ u8 filler_0xE7[1];
- /*0x00E8*/ u8 unk_00E8[5];
- /*0x00ED*/ u8 filler_00ED[7];
- /*0x00F4*/ u8 unk_00F4[11][2];
- /*0x010A*/ u8 filler_010A[2];
- /*0x010C*/ u8 unk_010C[5];
- /*0x0111*/ u8 filler_0111[3];
- /*0x0114*/ u16 unk_0114;
- // align 2
- /*0x0118*/ u32 unk_0118;
- /*0x011C*/ u32 unk_011C;
- /*0x0120*/ u32 unk_0120;
- /*0x0124*/ u8 unk_0124;
- /*0x0125*/ u8 filler_0125[3];
- /*0x0128*/ u8 unk_0128;
- // align 2
- /*0x012C*/ u32 unk_012C;
- /*0x0130*/ u32 unk_0130[5];
- /*0x0144*/ u8 unk_0144;
- /*0x0145*/ u8 filler_0145[3];
- /*0x0148*/ u8 unk_0148[11];
- /*0x0153*/ u8 filler_0153[1];
- /*0x0154*/ u8 unk_0154;
- /*0x0155*/ u8 filler_0155[11];
- /*0x0160*/ struct DodrioBerryPickingSubstruct_0160 unk_0160;
- /*0x318C*/ struct DodrioBerryPickingSubstruct_318C unk_318C[5];
- /*0x31A0*/ struct DodrioBerryPickingSubstruct_31A0 unk_31A0[5];
- /*0x32CC*/ struct DodrioBerryPickingSubstruct_31A0 unk_32CC;
- /*0x3308*/ u8 unk_3308[0x3330 - 0x3308];
+ /*0x0030*/ u8 ALIGNED(4) unk30;
+ /*0x0034*/ u8 ALIGNED(4) unk34[5];
+ /*0x003C*/ u8 ALIGNED(4) unk3C;
+ /*0x0040*/ u8 ALIGNED(4) unk40;
+ /*0x0044*/ u8 ALIGNED(4) unk44;
+ /*0x0048*/ u8 ALIGNED(4) unk48;
+ /*0x004A*/ u16 unk4A[5][6];
+ /*0x0086*/ u16 unk86[5];
+ /*0x0090*/ u8 ALIGNED(4) unk90[5];
+ /*0x0098*/ u8 ALIGNED(4) unk98[4];
+ /*0x009C*/ u8 ALIGNED(4) unk9C[11];
+ /*0x00A8*/ u8 ALIGNED(4) unkA8[5];
+ /*0x00B0*/ u8 ALIGNED(4) unkB0[5];
+ /*0x00B8*/ u8 ALIGNED(4) unkB8[11];
+ /*0x00C4*/ u8 ALIGNED(4) unkC4[11];
+ /*0x00D0*/ u8 ALIGNED(4) unkD0[11];
+ /*0x00DC*/ u8 ALIGNED(4) unkDC[11];
+ /*0x00E8*/ u8 ALIGNED(4) unkE8[11];
+ /*0x00F4*/ u8 ALIGNED(4) unkF4[11][2];
+ /*0x010C*/ u8 ALIGNED(4) unk10C[5];
+ /*0x0112*/ u16 unk112;
+ /*0x0114*/ u16 unk114;
+ /*0x0118*/ u32 unk118;
+ /*0x011C*/ u32 unk11C;
+ /*0x0120*/ u32 unk120;
+ /*0x0124*/ u8 ALIGNED(4) unk124;
+ /*0x0128*/ u8 ALIGNED(4) unk128;
+ /*0x012C*/ u32 unk12C;
+ /*0x0130*/ u32 unk130[5];
+ /*0x0144*/ u8 ALIGNED(4) unk144;
+ /*0x0148*/ u8 ALIGNED(4) unk148[11];
+ /*0x0154*/ u8 ALIGNED(4) unk154;
+ /*0x0158*/ u8 ALIGNED(4) unk158[5];
+ /*0x0160*/ struct DodrioSubstruct_0160 unk160;
+ /*0x318C*/ struct DodrioSubstruct_318C unk318C[5];
+ /*0x31A0*/ struct DodrioSubstruct_31A0 unk31A0[5];
+ /*0x32CC*/ struct DodrioSubstruct_31A0 unk32CC;
+ /*0x3308*/ struct DodrioSubstruct_3308 unk3308[5];
}; // size = 0x3330
-EWRAM_DATA struct DodrioBerryPickingStruct * gUnknown_02022C98 = NULL;
-EWRAM_DATA u16 * gUnknown_02022C9C[5] = {NULL};
-EWRAM_DATA u16 * gUnknown_02022CB0[2] = {NULL};
-EWRAM_DATA u16 * gUnknown_02022CB8[11] = {NULL};
-EWRAM_DATA u16 * gUnknown_02022CE4[4] = {NULL};
-EWRAM_DATA struct DodrioBerryPickingStruct_2022CF4 * gUnknown_02022CF4 = NULL;
-EWRAM_DATA struct DodrioBerryPickingSubstruct_0160 * gUnknown_02022CF8 = NULL;
+EWRAM_DATA static struct DodrioStruct * gUnknown_02022C98 = NULL;
+EWRAM_DATA static u16 *gUnknown_02022C9C[5] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CB0[2] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CB8[11] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CE4[4] = {NULL};
+EWRAM_DATA static struct DodrioStruct_2022CF4 *gUnknown_02022CF4 = NULL;
+EWRAM_DATA static struct DodrioSubstruct_0160 *gUnknown_02022CF8 = NULL;
static bool32 gUnknown_03000DB0;
-void sub_8024A1C(void);
-void sub_8024A30(struct DodrioBerryPickingStruct *);
-void sub_8024BC8(u8 taskId);
-void sub_8024DBC(void);
-void sub_8024E00(void);
-void sub_8024E38(void);
-void sub_8024F10(void);
-void sub_8024F38(void);
-void sub_8024FFC(void);
-void sub_80250D4(void);
-void sub_8025158(void);
-void sub_8025198(void);
-void sub_8025230(void);
-void sub_8025324(void);
-void sub_8025470(void);
-void sub_8025644(void);
-void sub_80256AC(void);
-void sub_8025758(void);
-void sub_802589C(u8 taskId);
-void sub_8025910(u8 taskId);
-void sub_8025D04(void);
-void sub_8025D50(void);
-void sub_8025E0C(void);
-void sub_8025ED8(void);
-void sub_8025F48(void);
-void sub_8026044(void);
-void sub_80261CC(void);
-void sub_80261E4(void);
-void sub_80261F8(struct DodrioBerryPickingSubstruct_318C *, struct Pokemon *);
-void sub_802620C(TaskFunc, u8);
-void sub_802621C(TaskFunc);
-void sub_8026240(u8);
-bool32 sub_8026264(void);
-void sub_80262C0(void);
-u32 sub_8026634(u8, u8, u8);
-void sub_802671C(void);
-void sub_8026AF4(void);
-void sub_8026B28(void);
-void sub_8026B5C(u8, u8*, u8*);
-u32 sub_8026BB8(void);
-void sub_8026C28(void);
-bool32 sub_8026C50(void);
-bool32 sub_8026C90(void);
-void sub_8026D1C(u8);
-u8 sub_8026D8C(u8);
-u8 sub_8026DB0(u8, u8);
-void sub_8026F1C(u8, u8, u8);
-void sub_8027234(u8);
-void sub_80272A4(void);
-void sub_80272E8(void);
-void sub_80273F0(void);
-void sub_802749C(void);
-u8 sub_8027518(u8);
-void sub_8027554(void);
-void sub_8027608(void);
-u32 sub_8027748(void);
-void sub_8027DD0(u8);
-u32 sub_8027E30(struct DodrioBerryPickingSubstruct_31A0 *, u8 *, u8 *, u8 *, u8 *, u8 *, u8, u32, u32);
-u32 sub_8028164(u32 unused, struct DodrioBerryPickingSubstruct_31A0 *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *, u32 *, u32 *);
-void sub_80282EC(u8);
-u32 sub_8028318(u8, u8 *);
-void sub_8028350(u8);
-bool32 sub_8028374(u8);
-void sub_80283A8(void);
-void sub_8028408(struct DodrioBerryPickingSubstruct_318C *, u8, u8, u8);
-void sub_80284CC(u8);
-void sub_8028504(u8);
-void sub_8028614(u8);
-void sub_802868C(u8, u8);
-void sub_8028734(void);
-void sub_80287E4(void);
-void sub_80289E8(u8);
-void sub_80286E4(void);
-bool32 sub_8028828(void);
-void sub_8028A34(void);
-void sub_8028A88(void);
-void sub_8028B80(void);
-void sub_8028D44(void);
-void sub_8028DFC(void);
-void sub_8028E4C(void);
-void sub_8028E84(void);
-void sub_8028EC8(u8);
-void sub_8028FCC(void);
-void sub_802903C(void);
-void sub_8029274(struct DodrioBerryPickingSubstruct_0160 *);
-void sub_80292E0(u8);
-bool32 sub_802A770(void);
-u8 sub_802A794(void);
-
-extern const u8 gUnknown_082F7A88[][3];
-extern const u8 gUnknown_082F449C[];
-extern const u8 gUknnown_082F45AF[];
-extern const u8 gUnknown_082F7A94[];
-extern void (*const gUnknown_082F7AC4[])(void);
-extern void (*const gUnknown_082F7AF4[])(void);
-
-void sub_802493C(u16 a0, void (*a1)(void))
+static void sub_8024A1C(void);
+static void sub_8024A30(struct DodrioStruct *);
+static void sub_8024BC8(u8 taskId);
+static void sub_8024DBC(void);
+static void sub_8024E00(void);
+static void sub_8024E38(void);
+static void sub_8024F10(void);
+static void sub_8024F38(void);
+static void sub_8024FFC(void);
+static void sub_80250D4(void);
+static void sub_8025158(void);
+static void sub_8025198(void);
+static void sub_8025230(void);
+static void sub_8025324(void);
+static void sub_8025470(void);
+static void sub_8025644(void);
+static void sub_80256AC(void);
+static void sub_8025758(void);
+static void sub_802589C(u8 taskId);
+static void sub_8025910(u8 taskId);
+static void sub_8025D04(void);
+static void sub_8025D50(void);
+static void sub_8025E0C(void);
+static void sub_8025ED8(void);
+static void sub_8025F48(void);
+static void sub_8026044(void);
+static void sub_80261CC(void);
+static void sub_80261E4(void);
+static void sub_80261F8(struct DodrioSubstruct_318C *, struct Pokemon *);
+static void sub_802620C(TaskFunc, u8);
+static void sub_802621C(TaskFunc);
+static void sub_8026240(u8);
+static bool32 sub_8026264(void);
+static void sub_80262C0(void);
+static bool32 sub_8026634(u8, u8, u8);
+static void sub_802671C(void);
+static void sub_8026AF4(void);
+static void sub_8026B28(void);
+static void sub_8026B5C(u8, u8*, u8*);
+static bool32 sub_8026BB8(void);
+static void sub_8026C28(void);
+static bool32 sub_8026C50(void);
+static bool32 sub_8026C90(void);
+static void sub_8026D1C(u8);
+static u8 sub_8026D8C(u8);
+static u8 sub_8026DB0(u8, u8);
+static void sub_8026F1C(u8, u8, u8);
+static void sub_8027234(bool32 arg0);
+static void sub_80272A4(void);
+static void sub_80272E8(void);
+static void sub_80273F0(void);
+static void sub_802749C(void);
+static u8 sub_8027518(u8);
+static void sub_8027554(void);
+static void sub_8027608(void);
+static u32 sub_8027748(void);
+static void sub_8027DD0(u32 arg0);
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8);
+static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8);
+static void sub_80282EC(u8);
+static u32 sub_8028318(u32 arg0, u8 *arg1);
+static void sub_8028350(u32 arg0);
+static u32 sub_8028374(u32 arg0);
+static void sub_80283A8(void);
+static void sub_8028408(struct DodrioSubstruct_318C *arg0, u8 arg1, u8 id, u8 arg3);
+static void sub_80284CC(u8);
+static void sub_8028504(u8);
+static void sub_8028614(u8 count);
+static void sub_802868C(bool8 invisible, u8 count);
+static void sub_8028734(void);
+static void sub_80287E4(void);
+static void sub_80289E8(bool8 invisible);
+static void sub_80286E4(void);
+static bool32 sub_8028828(void);
+static void sub_8028A34(void);
+static void sub_8028A88(void);
+static void sub_8028B80(void);
+static void sub_8028D44(void);
+static void sub_8028DFC(void);
+static void sub_8028E4C(void);
+static void sub_8028E84(void);
+static void sub_8028EC8(bool8 invisible);
+static void sub_8028FCC(void);
+static void sub_802903C(void);
+static void sub_8029274(struct DodrioSubstruct_0160 *PTR);
+static void sub_80292E0(u8);
+static bool32 sub_802A770(void);
+static u8 sub_802A794(void);
+static void sub_8028BF8(u8 id, bool8 invisible);
+static void sub_8028C30(bool8 invisible);
+static void sub_8028CA4(u16 id, u8 frameNum);
+static void sub_8028C7C(u8 id, u8 y);
+static void sub_80286B4(u8 id, u8 frameNum);
+static u8 sub_8026E70(u8 arg0, u8 arg1);
+static void sub_80288D4(u8 arg0);
+static u32 sub_8027DFC(u32 arg0);
+static u32 IncrementWithLimit(u32 arg0, u32 arg1);
+static u32 Min(u32 arg0, u32 arg1);
+static u32 sub_80276C0(u8 arg0);
+static void sub_8027ACC(u8 taskId);
+static void sub_8029314(u8 taskId);
+static void sub_8027BEC(u8 windowId, s32 width);
+static void nullsub_15(struct Sprite *sprite);
+static void sub_80284A8(struct Sprite *sprite);
+static u32 sub_802853C(struct Sprite *sprite);
+static u32 sub_80285AC(struct Sprite *sprite);
+static s16 sub_8028F14(u8 arg0, u8 arg1);
+static void sub_8028654(bool8 invisible, u8 id);
+static void sub_8029338(void);
+static bool32 sub_802A8E8(void);
+static void sub_802A7A8(void);
+static void sub_802A72C(void (*func)(void));
+static void (*sub_802A75C(void))(void);
+static void sub_8029338(void);
+static void sub_8029440(void);
+static void sub_802988C(void);
+static void sub_802A010(void);
+static void sub_802A380(void);
+static void sub_802A454(void);
+static void sub_802A534(void);
+static void sub_802A588(void);
+static void sub_802A6FC(void);
+static void nullsub_16(void);
+
+// const rom data
+static const u8 gUnknown_082F449C[5][5][11] =
+{
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0},
+ {0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0},
+ {0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0},
+ {0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0},
+ {0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0},
+ {0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0},
+ {0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+ {2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2},
+ {4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4},
+ {6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6},
+ {8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8},
+ },
+};
+
+static const u8 gUknnown_082F45AF[5][5][3] =
+{
+ {
+ {4, 5, 6},
+ },
+ {
+ {3, 4, 5},
+ {5, 6, 3},
+ },
+ {
+ {4, 5, 6},
+ {6, 7, 2},
+ {2, 3, 4},
+ },
+ {
+ {3, 4, 5},
+ {5, 6, 7},
+ {7, 8, 1},
+ {1, 2, 3},
+ },
+ {
+ {4, 5, 6},
+ {6, 7, 8},
+ {8, 9, 0},
+ {0, 1, 2},
+ {2, 3, 4},
+ },
+};
+
+static const u8 gUnknown_082F45FA[5][5][3] =
+{
+ {
+ {1, 0, 1},
+ },
+ {
+ {1, 0, 1},
+ {0, 1, 0},
+ },
+ {
+ {2, 0, 1},
+ {0, 1, 2},
+ {1, 2, 0},
+ },
+ {
+ {3, 0, 1},
+ {0, 1, 2},
+ {1, 2, 3},
+ {2, 3, 0},
+ },
+ {
+ {4, 0, 1},
+ {0, 1, 2},
+ {1, 2, 3},
+ {2, 3, 4},
+ {3, 4, 0},
+ },
+};
+
+ALIGNED(4)
+static const u8 gUnknown_082F4648[5][11] =
+{
+ {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9},
+ {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9},
+ {9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9},
+ {9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9},
+ {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3},
+};
+
+static const u8 gUnknown_082F467F[5][5] =
+{
+ {5},
+ {4, 6},
+ {3, 5, 7},
+ {2, 4, 6, 8},
+ {1, 3, 5, 6, 9},
+};
+
+// Duplicate and unused gfx. Feel free to remove.
+static const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal",
+ "graphics/link_games/dodrioberry_bg2.gbapal",
+ "graphics/link_games/dodrioberry_pkmn.gbapal",
+ "graphics/link_games/dodrioberry_shiny.gbapal",
+ "graphics/link_games/dodrioberry_status.gbapal",
+ "graphics/link_games/dodrioberry_berrysprites.gbapal",
+ "graphics/link_games/dodrioberry_berrysprites.4bpp.lz",
+ "graphics/link_games/dodrioberry_platform.gbapal",
+ "graphics/link_games/dodrioberry_bg1.4bpp.lz",
+ "graphics/link_games/dodrioberry_bg2.4bpp.lz",
+ "graphics/link_games/dodrioberry_status.4bpp.lz",
+ "graphics/link_games/dodrioberry_platform.4bpp.lz",
+ "graphics/link_games/dodrioberry_pkmn.4bpp.lz",
+ "graphics/link_games/dodrioberry_bg1.bin.lz",
+ "graphics/link_games/dodrioberry_bg2right.bin.lz",
+ "graphics/link_games/dodrioberry_bg2left.bin.lz");
+
+
+static const u8 gUnknown_082F7A88[][3] =
+{
+ {40, 24, 13},
+ {32, 19, 10},
+ {22, 13, 7},
+};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7A94[] = {8, 5, 8, 11, 15};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7A9C[] = {5, 10, 20, 30, 50, 70, 100};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7AA4[][10] =
+{
+ {15, 16, 17, 18, 19, 19, 18, 17, 16, 15},
+ {20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
+ {30, 31, 32, 33, 34, 34, 33, 32, 31, 30},
+};
+
+static void (*const gUnknown_082F7AC4[])(void) =
+{
+ sub_8024DBC,
+ sub_8024E00,
+ sub_8024E38,
+ sub_8024F10,
+ sub_8024F38,
+ sub_8025198,
+ sub_8025324,
+ sub_8025470,
+ sub_8025644,
+ sub_80256AC,
+ sub_8025758,
+ sub_80250D4
+};
+
+static void (*const gUnknown_082F7AF4[])(void) =
+{
+ sub_8024DBC,
+ sub_8024E00,
+ sub_8024E38,
+ sub_8024F10,
+ sub_8024FFC,
+ sub_8025230,
+ sub_8025324,
+ sub_8025470,
+ sub_8025644,
+ sub_80256AC,
+ sub_8025758,
+ sub_8025158
+};
+
+// code
+void sub_802493C(u16 a0, void (*callback)(void))
{
gUnknown_03000DB0 = FALSE;
@@ -251,108 +458,108 @@ void sub_802493C(u16 a0, void (*a1)(void))
{
sub_8024A1C();
sub_8024A30(gUnknown_02022C98);
- gUnknown_02022C98->savedCallback = a1;
+ gUnknown_02022C98->savedCallback = callback;
gUnknown_02022C98->multiplayerId = GetMultiplayerId();
- gUnknown_02022C98->unk_32CC = gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId];
- sub_80261F8(&gUnknown_02022C98->unk_318C[gUnknown_02022C98->multiplayerId], &gPlayerParty[a0]);
+ gUnknown_02022C98->unk32CC = gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ sub_80261F8(&gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId], &gPlayerParty[a0]);
CreateTask(sub_8024BC8, 1);
SetMainCallback2(sub_80261CC);
sub_80273F0();
- sub_8026B5C(gUnknown_02022C98->unk_0024, &gUnknown_02022C98->unk_0044, &gUnknown_02022C98->unk_0048);
+ sub_8026B5C(gUnknown_02022C98->unk24, &gUnknown_02022C98->unk44, &gUnknown_02022C98->unk48);
StopMapMusic();
PlayNewMapMusic(MUS_RG_KINOMIKUI);
}
else
{
- SetMainCallback2(a1);
+ SetMainCallback2(callback);
return;
}
}
-void sub_8024A1C(void)
+static void sub_8024A1C(void)
{
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
}
-void sub_8024A30(struct DodrioBerryPickingStruct * data)
+static void sub_8024A30(struct DodrioStruct * data)
{
u8 i;
- data->unk_000C = 0;
- data->unk_0010 = 0;
- data->unk_0014 = 0;
- data->unk_0018 = 0;
- data->unk_001C = 0;
- data->unk_011C = 0;
- data->unk_0120 = 0;
- data->unk_0030 = 0;
- data->unk_0040 = 0;
- data->unk_003C = 0;
- data->unk_012C = 0;
+ data->unk0C = 0;
+ data->unk10 = 0;
+ data->unk14 = 0;
+ data->unk18 = 0;
+ data->unk1C = 0;
+ data->unk11C = 0;
+ data->unk120 = 0;
+ data->unk30 = 0;
+ data->unk40 = 0;
+ data->unk3C = 0;
+ data->unk12C = 0;
for (i = 0; i < 4; i++)
{
- data->unk_0098[i] = 0;
+ data->unk98[i] = 0;
}
for (i = 0; i < 5; i++)
{
- data->unk_00A8[i] = 0;
- data->unk_00B0[i] = 0;
- data->unk_004A[i][0] = 0;
- data->unk_004A[i][1] = 0;
- data->unk_004A[i][2] = 0;
- data->unk_004A[i][3] = 0;
- data->unk_004A[i][5] = 0;
- data->unk_010C[i] = 0;
- data->unk_0130[i] = 0;
+ data->unkA8[i] = 0;
+ data->unkB0[i] = 0;
+ data->unk4A[i][0] = 0;
+ data->unk4A[i][1] = 0;
+ data->unk4A[i][2] = 0;
+ data->unk4A[i][3] = 0;
+ data->unk4A[i][5] = 0;
+ data->unk10C[i] = 0;
+ data->unk130[i] = 0;
}
for (i = 0; i < 11; i++)
{
- data->unk_00D0[i] = 0;
- data->unk_00DC[i] = 0;
- data->unk_00C4[i] = 0;
- data->unk_00F4[i][0] = 0xFF;
- data->unk_00F4[i][1] = 0xFF;
+ data->unkD0[i] = 0;
+ data->unkDC[i] = 0;
+ data->unkC4[i] = 0;
+ data->unkF4[i][0] = 0xFF;
+ data->unkF4[i][1] = 0xFF;
}
- data->unk_0020 = GetMultiplayerId() == 0 ? 1 : 0;
- data->unk_0024 = GetLinkPlayerCount();
- data->unk_0034[0] = GetMultiplayerId();
- for (i = 1; i < data->unk_0024; i++)
+ data->unk20 = GetMultiplayerId() == 0 ? 1 : 0;
+ data->unk24 = GetLinkPlayerCount();
+ data->unk34[0] = GetMultiplayerId();
+ for (i = 1; i < data->unk24; i++)
{
- data->unk_0034[i] = data->unk_0034[i - 1] + 1;
- if (data->unk_0034[i] > data->unk_0024 - 1)
- data->unk_0034[i] %= data->unk_0024;
+ data->unk34[i] = data->unk34[i - 1] + 1;
+ if (data->unk34[i] > data->unk24 - 1)
+ data->unk34[i] %= data->unk24;
}
}
-void sub_8024BC8(u8 taskId)
+static void sub_8024BC8(u8 taskId)
{
u8 r4, r5;
- switch (gUnknown_02022C98->unk_000C)
+ switch (gUnknown_02022C98->unk0C)
{
case 0:
SetVBlankCallback(NULL);
sub_802620C(sub_8025910, 4);
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
break;
case 1:
if (!FuncIsActiveTask(sub_8025910))
{
- sub_8029274(&gUnknown_02022C98->unk_0160);
- gUnknown_02022C98->unk_000C++;
+ sub_8029274(&gUnknown_02022C98->unk160);
+ gUnknown_02022C98->unk0C++;
}
break;
case 2:
if (!sub_802A770())
{
sub_8010434();
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
}
break;
case 3:
@@ -363,37 +570,37 @@ void sub_8024BC8(u8 taskId)
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
}
break;
case 4:
- r5 = gUnknown_02022C98->unk_0024;
+ r5 = gUnknown_02022C98->unk24;
sub_80283A8();
for (r4 = 0; r4 < r5; r4++)
{
- sub_8028408(&gUnknown_02022C98->unk_318C[gUnknown_02022C98->unk_0034[r4]], r4, gUnknown_02022C98->unk_0034[r4], gUnknown_02022C98->unk_0024);
+ sub_8028408(&gUnknown_02022C98->unk318C[gUnknown_02022C98->unk34[r4]], r4, gUnknown_02022C98->unk34[r4], gUnknown_02022C98->unk24);
}
- sub_802868C(0, gUnknown_02022C98->unk_0024);
- gUnknown_02022C98->unk_000C++;
+ sub_802868C(FALSE, gUnknown_02022C98->unk24);
+ gUnknown_02022C98->unk0C++;
break;
case 5:
sub_8028A34();
sub_8028A88();
sub_8028D44();
sub_8028734();
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
break;
case 6:
BlendPalettes(0xFFFFFFFF, 0x10, 0x00);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
SetVBlankCallback(sub_80261E4);
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
break;
case 7:
UpdatePaletteFade();
if (!gPaletteFade.active)
{
- gUnknown_02022C98->unk_000C++;
+ gUnknown_02022C98->unk0C++;
}
break;
default:
@@ -403,36 +610,36 @@ void sub_8024BC8(u8 taskId)
}
}
-void sub_8024D4C(u8 taskId)
+static void sub_8024D4C(u8 taskId)
{
sub_8025D04();
- gUnknown_082F7AC4[gUnknown_02022C98->unk_0018]();
- if (gUnknown_03000DB0 == FALSE)
+ gUnknown_082F7AC4[gUnknown_02022C98->unk18]();
+ if (!gUnknown_03000DB0)
{
sub_8026AF4();
}
sub_8025D50();
}
-void sub_8024D84(u8 taskId)
+static void sub_8024D84(u8 taskId)
{
sub_8025E0C();
- gUnknown_082F7AF4[gUnknown_02022C98->unk_0018]();
- if (gUnknown_03000DB0 == FALSE)
+ gUnknown_082F7AF4[gUnknown_02022C98->unk18]();
+ if (!gUnknown_03000DB0)
{
sub_8026B28();
}
sub_8025ED8();
}
-void sub_8024DBC(void)
+static void sub_8024DBC(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
sub_8028504(1);
sub_80292E0(1);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
if (!sub_802A770())
@@ -441,50 +648,50 @@ void sub_8024DBC(void)
}
}
-void sub_8024E00(void)
+static void sub_8024E00(void)
{
- if (gUnknown_02022C98->unk_0010 == 0)
+ if (gUnknown_02022C98->unk10 == 0)
{
sub_80262C0();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
else
{
- gUnknown_02022C98->unk_0118 = 1;
+ gUnknown_02022C98->unk118 = 1;
sub_8026240(2);
}
}
-void sub_8024E38(void)
+static void sub_8024E38(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
sub_802EB24(7, 8, 120, 80, 0);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
sub_8010434();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 2:
if (IsLinkTaskFinished())
{
- gUnknown_02022C98->unk_0010++;
- gUnknown_02022C98->unk_0030 = 0;
+ gUnknown_02022C98->unk10++;
+ gUnknown_02022C98->unk30 = 0;
}
break;
case 3:
if (!sub_802EB84())
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 4:
- if (++gUnknown_02022C98->unk_0030 > 5)
+ if (++gUnknown_02022C98->unk30 > 5)
{
sub_8010434();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 5:
@@ -496,52 +703,52 @@ void sub_8024E38(void)
}
}
-void sub_8024F10(void)
+static void sub_8024F10(void)
{
- if (gUnknown_02022C98->unk_0010 == 0)
+ if (gUnknown_02022C98->unk10 == 0)
{
- if (gUnknown_02022C98->unk_011C != 0)
+ if (gUnknown_02022C98->unk11C != 0)
{
sub_8026240(4);
}
}
}
-void sub_8024F38(void)
+static void sub_8024F38(void)
{
- if (gUnknown_02022C98->unk_0010 == 0)
+ if (gUnknown_02022C98->unk10 == 0)
{
- if (gUnknown_02022C98->unk_0040 < 10)
+ if (gUnknown_02022C98->unk40 < 10)
{
- if (gUnknown_02022C98->unk_00A8[0] == 0)
+ if (gUnknown_02022C98->unkA8[0] == 0)
{
if (JOY_NEW(DPAD_UP))
{
- if (gUnknown_02022C98->unk_31A0[0].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_31A0[0].unk_30 = 0;
- gUnknown_02022C98->unk_31A0[0].unk_2C = sub_8027518(2);
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(2);
}
}
else if (JOY_NEW(DPAD_RIGHT))
{
- if (gUnknown_02022C98->unk_31A0[0].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_31A0[0].unk_30 = 0;
- gUnknown_02022C98->unk_31A0[0].unk_2C = sub_8027518(1);
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(1);
}
}
else if (JOY_NEW(DPAD_LEFT))
{
- if (gUnknown_02022C98->unk_31A0[0].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_31A0[0].unk_30 = 0;
- gUnknown_02022C98->unk_31A0[0].unk_2C = sub_8027518(3);
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(3);
}
}
else
{
- gUnknown_02022C98->unk_31A0[0].unk_2C = sub_8027518(0);
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(0);
}
}
}
@@ -554,34 +761,34 @@ void sub_8024F38(void)
}
}
-void sub_8024FFC(void)
+static void sub_8024FFC(void)
{
- if (gUnknown_02022C98->unk_0040 < 10)
+ if (gUnknown_02022C98->unk40 < 10)
{
if (JOY_NEW(DPAD_UP))
{
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_32CC.unk_2C = 2;
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 2;
}
}
else if (JOY_NEW(DPAD_RIGHT))
{
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_32CC.unk_2C = 1;
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 1;
}
}
else if (JOY_NEW(DPAD_LEFT))
{
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
{
- gUnknown_02022C98->unk_32CC.unk_2C = 3;
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 3;
}
}
else
{
- gUnknown_02022C98->unk_32CC.unk_2C = 0;
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 0;
}
}
else
@@ -591,7 +798,7 @@ void sub_8024FFC(void)
sub_8026044();
}
-void sub_80250D4(void)
+static void sub_80250D4(void)
{
u8 i;
@@ -604,26 +811,26 @@ void sub_80250D4(void)
}
else
{
- gUnknown_02022C98->unk_012C = 1;
- for (i = 1; i < gUnknown_02022C98->unk_0024; i++)
+ gUnknown_02022C98->unk12C = 1;
+ for (i = 1; i < gUnknown_02022C98->unk24; i++)
{
- if (gUnknown_02022C98->unk_0130[i] != 1)
+ if (gUnknown_02022C98->unk130[i] != 1)
{
- gUnknown_02022C98->unk_012C = 0;
+ gUnknown_02022C98->unk12C = 0;
break;
}
}
}
}
-void sub_8025158(void)
+static void sub_8025158(void)
{
sub_8026044();
if (sub_8026C90() == 1)
sub_8026240(5);
}
-bool32 sub_8025170(void)
+static bool32 sub_8025170(void)
{
u8 r4 = GetBlockReceivedStatus();
u8 r0 = sub_800A9D8();
@@ -638,32 +845,32 @@ bool32 sub_8025170(void)
}
}
-void sub_8025198(void)
+static void sub_8025198(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
- if (SendBlock(0, gUnknown_02022C98->unk_004A, sizeof(gUnknown_02022C98->unk_004A)))
+ if (SendBlock(0, gUnknown_02022C98->unk4A, sizeof(gUnknown_02022C98->unk4A)))
{
- gUnknown_02022C98->unk_0008 = 0;
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
}
break;
case 1:
if (IsLinkTaskFinished())
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
if (sub_8025170())
{
- gUnknown_02022C98->unk_0008 = gUnknown_02022C98->unk_0024;
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
}
- if (gUnknown_02022C98->unk_0008 >= gUnknown_02022C98->unk_0024)
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24)
{
- gUnknown_02022C98->unk_0014++;
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk14++;
+ gUnknown_02022C98->unk10++;
}
break;
default:
@@ -676,38 +883,38 @@ void sub_8025198(void)
}
}
-void sub_8025230(void)
+static void sub_8025230(void)
{
u8 i;
- switch (gUnknown_02022C98->unk_0010) {
+ switch (gUnknown_02022C98->unk10) {
case 0:
- if (SendBlock(0, gUnknown_02022C98->unk_004A[gUnknown_02022C98->unk_0014],
- sizeof(gUnknown_02022C98->unk_004A))) {
- gUnknown_02022C98->unk_0008 = 0;
- gUnknown_02022C98->unk_0010++;
+ if (SendBlock(0, gUnknown_02022C98->unk4A[gUnknown_02022C98->unk14],
+ sizeof(gUnknown_02022C98->unk4A))) {
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
}
break;
case 1:
if (IsLinkTaskFinished()) {
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
if (sub_8025170()) {
- for (i = 0; i < gUnknown_02022C98->unk_0024; i++) {
- memcpy(gUnknown_02022C98->unk_004A, gBlockRecvBuffer, sizeof(gUnknown_02022C98->unk_004A));
- gUnknown_02022C98->unk_0008 = gUnknown_02022C98->unk_0024;
+ for (i = 0; i < gUnknown_02022C98->unk24; i++) {
+ memcpy(gUnknown_02022C98->unk4A, gBlockRecvBuffer, sizeof(gUnknown_02022C98->unk4A));
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
}
}
- if (gUnknown_02022C98->unk_0008 >= gUnknown_02022C98->unk_0024) {
- gUnknown_02022C98->unk_0014++;
- gUnknown_02022C98->unk_0010++;
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ gUnknown_02022C98->unk14++;
+ gUnknown_02022C98->unk10++;
}
break;
default:
if (WaitFanfare(TRUE)) {
- gUnknown_02022C98->unk_0114 = gUnknown_02022C98->unk_004A[gUnknown_02022C98->multiplayerId][5];
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk4A[gUnknown_02022C98->multiplayerId][5];
sub_8026240(6);
FadeOutAndPlayNewMapMusic(MUS_RG_WIN_YASEI, 4);
}
@@ -715,56 +922,56 @@ void sub_8025230(void)
}
}
-void sub_8025324(void)
+static void sub_8025324(void)
{
u8 sp00 = 1;
u8 i;
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
sub_802749C();
- sub_80289E8(1);
+ sub_80289E8(TRUE);
sub_8028DFC();
- sub_8028EC8(1);
+ sub_8028EC8(TRUE);
sub_80292E0(2);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
if (!sub_802A770())
{
sub_80292E0(5);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
sp00 = sub_802A794();
if (SendBlock(0, &sp00, sizeof(sp00)))
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 3:
if (IsLinkTaskFinished())
{
- gUnknown_02022C98->unk_0010++;
- gUnknown_02022C98->unk_0008 = 0;
+ gUnknown_02022C98->unk10++;
+ gUnknown_02022C98->unk08 = 0;
}
break;
case 4:
if (sub_8025170())
{
- for (i = 0; i < gUnknown_02022C98->unk_0024; i++)
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
{
- *(gUnknown_02022C98->unk_010C + i) = *(u8 *)gBlockRecvBuffer[i];
- gUnknown_02022C98->unk_0008 = gUnknown_02022C98->unk_0024;
+ *(gUnknown_02022C98->unk10C + i) = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
}
}
- if (gUnknown_02022C98->unk_0008 >= gUnknown_02022C98->unk_0024) {
- if (++gUnknown_02022C98->unk_0014 >= 120)
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ if (++gUnknown_02022C98->unk14 >= 120)
{
sub_80292E0(6);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
}
break;
@@ -777,74 +984,74 @@ void sub_8025324(void)
}
}
-void sub_8025470(void)
+static void sub_8025470(void)
{
u8 sp0;
u8 i;
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
if (sub_8027748() >= 3000)
{
sub_80292E0(4);
}
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
if (!sub_802A770())
{
sub_80292E0(3);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
sub_8028FCC();
sub_80272E8();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 3:
if ((sp0 = sub_802A794()) != 0)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 4:
if (!sub_802A770())
{
sub_80292E0(5);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 5:
sp0 = sub_802A794();
if (SendBlock(0, &sp0, sizeof(sp0)))
{
- gUnknown_02022C98->unk_0008 = 0;
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
}
break;
case 6:
if (IsLinkTaskFinished())
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 7:
if (sub_8025170())
{
- for (i = 0; i < gUnknown_02022C98->unk_0024; i++)
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
{
- *(gUnknown_02022C98->unk_010C + i) = *(u8 *)gBlockRecvBuffer[i];
- gUnknown_02022C98->unk_0008 = gUnknown_02022C98->unk_0024;
+ *(gUnknown_02022C98->unk10C + i) = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
}
}
- if (gUnknown_02022C98->unk_0008 >= gUnknown_02022C98->unk_0024) {
- if (++gUnknown_02022C98->unk_0014 >= 120)
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ if (++gUnknown_02022C98->unk14 >= 120)
{
sub_8027608();
sub_80292E0(6);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
}
else
@@ -855,9 +1062,9 @@ void sub_8025470(void)
default:
if (!sub_802A770())
{
- for (i = 0; i < gUnknown_02022C98->unk_0024; i++)
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
{
- if (gUnknown_02022C98->unk_010C[i] == 2)
+ if (gUnknown_02022C98->unk10C[i] == 2)
{
sub_8026240(8);
return;
@@ -869,25 +1076,25 @@ void sub_8025470(void)
}
}
-void sub_8025644(void)
+static void sub_8025644(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
sub_800AC34();
sub_80292E0(7);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
if (!sub_802A770())
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
if (sub_802A794() == 5)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
default:
@@ -899,35 +1106,35 @@ void sub_8025644(void)
}
}
-void sub_80256AC(void)
+static void sub_80256AC(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
UpdatePaletteFade();
if (!gPaletteFade.active)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
sub_8028B80();
sub_80287E4();
- sub_8028614(gUnknown_02022C98->unk_0024);
+ sub_8028614(gUnknown_02022C98->unk24);
sub_8028E84();
gUnknown_03000DB0 = TRUE;
sub_80292E0(8);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
default:
if (!sub_802A770())
{
SetMainCallback2(gUnknown_02022C98->savedCallback);
- DestroyTask(gUnknown_02022C98->unk_0004);
+ DestroyTask(gUnknown_02022C98->unk04);
Free(gUnknown_02022C98);
FreeAllWindowBuffers();
}
@@ -935,20 +1142,20 @@ void sub_80256AC(void)
}
}
-void sub_8025758(void)
+static void sub_8025758(void)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
sub_80292E0(9);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 1:
UpdatePaletteFade();
if (!gPaletteFade.active)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 2:
@@ -960,66 +1167,66 @@ void sub_8025758(void)
ChangeBgY(2, 0, 0);
ChangeBgX(3, 0, 0);
ChangeBgY(3, 0, 0);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 3:
StopMapMusic();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 4:
PlayNewMapMusic(MUS_RG_KINOMIKUI);
sub_8028E4C();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 5:
BlendPalettes(0xFFFFFFFF, 16, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 6:
UpdatePaletteFade();
if (!gPaletteFade.active)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
default:
- DestroyTask(gUnknown_02022C98->unk_0004);
+ DestroyTask(gUnknown_02022C98->unk04);
sub_802621C(sub_802589C);
sub_802903C();
sub_8024A30(gUnknown_02022C98);
if (gReceivedRemoteLinkPlayers == 0)
{
- gUnknown_02022C98->unk_0024 = 1;
+ gUnknown_02022C98->unk24 = 1;
}
sub_80273F0();
- sub_8028EC8(0);
+ sub_8028EC8(FALSE);
break;
}
}
-void sub_802589C(u8 taskId)
+static void sub_802589C(u8 taskId)
{
- switch (gUnknown_02022C98->unk_0010)
+ switch (gUnknown_02022C98->unk10)
{
case 0:
if (sub_8026264() == 1)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
case 1:
sub_80286E4();
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
break;
case 2:
- if (sub_8028828() == 1)
+ if (sub_8028828() == TRUE)
{
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
default:
- if (gUnknown_02022C98->unk_0020 != 0)
+ if (gUnknown_02022C98->unk20 != 0)
{
sub_802621C(sub_8024D4C);
}
@@ -1032,7 +1239,7 @@ void sub_802589C(u8 taskId)
}
}
-void sub_8025910(u8 taskId)
+static void sub_8025910(u8 taskId)
{
s16 * data = gTasks[taskId].data;
u8 i;
@@ -1040,9 +1247,9 @@ void sub_8025910(u8 taskId)
switch (data[0])
{
case 0:
- if (SendBlock(0, &gUnknown_02022C98->unk_318C[gUnknown_02022C98->multiplayerId].isShiny, sizeof(gUnknown_02022C98->unk_318C[gUnknown_02022C98->multiplayerId].isShiny)))
+ if (SendBlock(0, &gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId].isShiny, sizeof(gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId].isShiny)))
{
- gUnknown_02022C98->unk_0008 = 0;
+ gUnknown_02022C98->unk08 = 0;
data[0]++;
}
break;
@@ -1055,129 +1262,129 @@ void sub_8025910(u8 taskId)
case 2:
if (sub_8025170())
{
- for (i = 0; i < gUnknown_02022C98->unk_0024; i++)
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
{
- *(u8 *)&gUnknown_02022C98->unk_318C[i] = *(u8 *)gBlockRecvBuffer[i];
- gUnknown_02022C98->unk_0008 = gUnknown_02022C98->unk_0024;
+ *(u8 *)&gUnknown_02022C98->unk318C[i] = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
}
}
- if (gUnknown_02022C98->unk_0008 >= gUnknown_02022C98->unk_0024)
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24)
{
DestroyTask(taskId);
sub_80292E0(6);
- gUnknown_02022C98->unk_0010++;
+ gUnknown_02022C98->unk10++;
}
break;
}
}
-void sub_80259FC(void)
+static void sub_80259FC(void)
{
u8 i;
- u8 r7 = gUnknown_02022C98->unk_0024;
+ u8 r7 = gUnknown_02022C98->unk24;
- gUnknown_02022C98->unk_31A0[0].unk_10 = sub_8028164(0, &gUnknown_02022C98->unk_31A0[0], &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, &gUnknown_02022C98->unk_0040, &gUnknown_02022C98->unk_0120, &gUnknown_02022C98->unk_012C);
- gUnknown_02022C98->unk_0128 = 1;
+ gUnknown_02022C98->unk31A0[0].unk10 = sub_8028164(0, &gUnknown_02022C98->unk31A0[0], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ gUnknown_02022C98->unk128 = 1;
for (i = 1; i < r7; i++)
{
- if ( gUnknown_02022C98->unk_00A8[i] == 0
- && sub_8028318(i, &gUnknown_02022C98->unk_31A0[i].unk_2C) == 0)
+ if ( gUnknown_02022C98->unkA8[i] == 0
+ && sub_8028318(i, &gUnknown_02022C98->unk31A0[i].unk2C.unk0) == 0)
{
- gUnknown_02022C98->unk_31A0[i].unk_2C = 0;
- gUnknown_02022C98->unk_0128 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk128 = 0;
}
}
- if (++gUnknown_02022C98->unk_0124 >= 60)
+ if (++gUnknown_02022C98->unk124 >= 60)
{
- if (gUnknown_02022C98->unk_0128 != 0)
+ if (gUnknown_02022C98->unk128 != 0)
{
sub_8011AC8();
- gUnknown_02022C98->unk_0124 = 0;
+ gUnknown_02022C98->unk124 = 0;
}
- else if (gUnknown_02022C98->unk_0124 > 70)
+ else if (gUnknown_02022C98->unk124 > 70)
{
sub_8011AC8();
- gUnknown_02022C98->unk_0124 = 0;
+ gUnknown_02022C98->unk124 = 0;
}
}
for (i = 0; i < r7; i++)
{
- if ( gUnknown_02022C98->unk_31A0[i].unk_2C != 0
- && gUnknown_02022C98->unk_00A8[i] == 0)
+ if ( gUnknown_02022C98->unk31A0[i].unk2C.unk0 != 0
+ && gUnknown_02022C98->unkA8[i] == 0)
{
- gUnknown_02022C98->unk_00A8[i] = 1;
+ gUnknown_02022C98->unkA8[i] = 1;
}
- switch (gUnknown_02022C98->unk_00A8[i])
+ switch (gUnknown_02022C98->unkA8[i])
{
case 0:
default:
break;
case 1 ... 3:
- if (++gUnknown_02022C98->unk_00B0[i] >= 6)
+ if (++gUnknown_02022C98->unkB0[i] >= 6)
{
- gUnknown_02022C98->unk_00B0[i] = 0;
- gUnknown_02022C98->unk_00A8[i] = 0;
- gUnknown_02022C98->unk_31A0[i].unk_2C = 0;
- gUnknown_02022C98->unk_31A0[i].unk_30 = 0;
- gUnknown_02022C98->unk_31A0[i].unk_34 = 0;
+ gUnknown_02022C98->unkB0[i] = 0;
+ gUnknown_02022C98->unkA8[i] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk8 = 0;
}
break;
case 4:
- if (++gUnknown_02022C98->unk_00B0[i] >= 40)
+ if (++gUnknown_02022C98->unkB0[i] >= 40)
{
- gUnknown_02022C98->unk_00B0[i] = 0;
- gUnknown_02022C98->unk_00A8[i] = 0;
- gUnknown_02022C98->unk_31A0[i].unk_2C = 0;
- gUnknown_02022C98->unk_31A0[i].unk_30 = 0;
- gUnknown_02022C98->unk_31A0[i].unk_34 = 0;
+ gUnknown_02022C98->unkB0[i] = 0;
+ gUnknown_02022C98->unkA8[i] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk8 = 0;
}
break;
}
}
}
-void sub_8025C0C(void)
+static void sub_8025C0C(void)
{
u8 i;
- u8 r6 = gUnknown_02022C98->unk_0024;
+ u8 r6 = gUnknown_02022C98->unk24;
- gUnknown_02022C98->unk_31A0[0].unk_10 = sub_8028164(0, &gUnknown_02022C98->unk_31A0[0], &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, &gUnknown_02022C98->unk_0040, &gUnknown_02022C98->unk_0120, &gUnknown_02022C98->unk_012C);
- gUnknown_02022C98->unk_0128 = 1;
+ gUnknown_02022C98->unk31A0[0].unk10 = sub_8028164(0, &gUnknown_02022C98->unk31A0[0], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ gUnknown_02022C98->unk128 = 1;
for (i = 1; i < r6; i++)
{
if (sub_8028374(i) != 0)
{
- gUnknown_02022C98->unk_0130[i] = 1;
- gUnknown_02022C98->unk_0128 = 0;
+ gUnknown_02022C98->unk130[i] = 1;
+ gUnknown_02022C98->unk128 = 0;
}
}
- if (++gUnknown_02022C98->unk_0124 >= 60)
+ if (++gUnknown_02022C98->unk124 >= 60)
{
- if (gUnknown_02022C98->unk_0128 != 0)
+ if (gUnknown_02022C98->unk128 != 0)
{
sub_8011AC8();
- gUnknown_02022C98->unk_0124 = 0;
+ gUnknown_02022C98->unk124 = 0;
}
- else if (gUnknown_02022C98->unk_0124 > 70)
+ else if (gUnknown_02022C98->unk124 > 70)
{
sub_8011AC8();
- gUnknown_02022C98->unk_0124 = 0;
+ gUnknown_02022C98->unk124 = 0;
}
}
}
-void sub_8025D04(void)
+static void sub_8025D04(void)
{
- switch (gUnknown_02022C98->unk_0018)
+ switch (gUnknown_02022C98->unk18)
{
case 3:
- if (sub_8026BB8() == 1)
+ if (sub_8026BB8() == TRUE)
{
sub_8026C28();
- gUnknown_02022C98->unk_011C = 1;
+ gUnknown_02022C98->unk11C = 1;
}
break;
case 4:
@@ -1189,48 +1396,48 @@ void sub_8025D04(void)
}
}
-void sub_8025D50(void)
+static void sub_8025D50(void)
{
- switch (gUnknown_02022C98->unk_0018)
+ switch (gUnknown_02022C98->unk18)
{
case 4:
- sub_8027E30(&gUnknown_02022C98->unk_32CC, &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, gUnknown_02022C98->unk_0040, gUnknown_02022C98->unk_0120, gUnknown_02022C98->unk_012C);
+ sub_8027E30(&gUnknown_02022C98->unk32CC, &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, gUnknown_02022C98->unk40, gUnknown_02022C98->unk120, gUnknown_02022C98->unk12C);
break;
case 11:
- sub_8027E30(&gUnknown_02022C98->unk_32CC, &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, gUnknown_02022C98->unk_0040, gUnknown_02022C98->unk_0120, gUnknown_02022C98->unk_012C);
+ sub_8027E30(&gUnknown_02022C98->unk32CC, &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, gUnknown_02022C98->unk40, gUnknown_02022C98->unk120, gUnknown_02022C98->unk12C);
break;
}
}
-void sub_8025E0C(void)
+static void sub_8025E0C(void)
{
- switch (gUnknown_02022C98->unk_0018)
+ switch (gUnknown_02022C98->unk18)
{
case 4:
- sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, &gUnknown_02022C98->unk_0040, &gUnknown_02022C98->unk_0120, &gUnknown_02022C98->unk_012C);
+ sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
break;
case 11:
- sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk_31A0[0].unk_2C, &gUnknown_02022C98->unk_31A0[1].unk_2C, &gUnknown_02022C98->unk_31A0[2].unk_2C, &gUnknown_02022C98->unk_31A0[3].unk_2C, &gUnknown_02022C98->unk_31A0[4].unk_2C, &gUnknown_02022C98->unk_0040, &gUnknown_02022C98->unk_0120, &gUnknown_02022C98->unk_012C);
+ sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
break;
}
}
-void sub_8025ED8(void)
+static void sub_8025ED8(void)
{
- switch (gUnknown_02022C98->unk_0018)
+ switch (gUnknown_02022C98->unk18)
{
case 3:
sub_8027DD0(1);
- gUnknown_02022C98->unk_011C = 1;
+ gUnknown_02022C98->unk11C = 1;
break;
case 4:
- if (gUnknown_02022C98->unk_32CC.unk_2C != 0)
+ if (gUnknown_02022C98->unk32CC.unk2C.unk0 != 0)
{
- sub_80282EC(gUnknown_02022C98->unk_32CC.unk_2C);
+ sub_80282EC(gUnknown_02022C98->unk32CC.unk2C.unk0);
}
break;
case 11:
- if (gUnknown_02022C98->unk_0120 == 0 && gUnknown_02022C98->unk_012C == 0)
+ if (gUnknown_02022C98->unk120 == 0 && gUnknown_02022C98->unk12C == 0)
{
sub_8028350(1);
}
@@ -1238,105 +1445,105 @@ void sub_8025ED8(void)
}
}
-void sub_8025F48(void)
+static void sub_8025F48(void)
{
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
{
if (!IsSEPlaying())
{
- gUnknown_02022C98->unk_0144 = 0;
+ gUnknown_02022C98->unk144 = 0;
}
}
- else if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_30 == 1)
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 == 1)
{
- if (gUnknown_02022C98->unk_0144 == 0)
+ if (gUnknown_02022C98->unk144 == 0)
{
m4aSongNumStop(SE_SEIKAI);
PlaySE(SE_SEIKAI);
- gUnknown_02022C98->unk_0144 = 1;
+ gUnknown_02022C98->unk144 = 1;
}
}
- else if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_34 == 1)
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 == 1)
{
- if (gUnknown_02022C98->unk_0144 == 0 && !IsSEPlaying())
+ if (gUnknown_02022C98->unk144 == 0 && !IsSEPlaying())
{
PlaySE(SE_BOO);
sub_80284CC(1);
- gUnknown_02022C98->unk_0144 = 1;
+ gUnknown_02022C98->unk144 = 1;
}
}
- if (gUnknown_02022C98->unk_0154 == 0 && gUnknown_02022C98->unk_0040 >= 10)
+ if (gUnknown_02022C98->unk154 == 0 && gUnknown_02022C98->unk40 >= 10)
{
StopMapMusic();
- gUnknown_02022C98->unk_0154 = 1;
+ gUnknown_02022C98->unk154 = 1;
}
- else if (gUnknown_02022C98->unk_0154 == 1)
+ else if (gUnknown_02022C98->unk154 == 1)
{
PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN
- gUnknown_02022C98->unk_0154 = 2;
+ gUnknown_02022C98->unk154 = 2;
}
}
-void sub_8026044(void)
+static void sub_8026044(void)
{
- u8 r8 = gUnknown_02022C98->unk_0044;
- u8 r7 = gUnknown_02022C98->unk_0048;
+ u8 r8 = gUnknown_02022C98->unk44;
+ u8 r7 = gUnknown_02022C98->unk48;
u8 r4;
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_2C == 0)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
{
- if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_30 != 1 && gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_34 != 1)
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 != 1 && gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 != 1)
{
- gUnknown_02022C98->unk_0144 = 0;
+ gUnknown_02022C98->unk144 = 0;
}
}
- else if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_30 == 1)
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 == 1)
{
- if (gUnknown_02022C98->unk_0144 == 0)
+ if (gUnknown_02022C98->unk144 == 0)
{
m4aSongNumStop(SE_SEIKAI);
PlaySE(SE_SEIKAI);
- gUnknown_02022C98->unk_0144 = 1;
+ gUnknown_02022C98->unk144 = 1;
}
}
- else if (gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_34 == 1)
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 == 1)
{
- if (gUnknown_02022C98->unk_0144 == 0 && !IsSEPlaying())
+ if (gUnknown_02022C98->unk144 == 0 && !IsSEPlaying())
{
PlaySE(SE_BOO);
sub_80284CC(1);
- gUnknown_02022C98->unk_0144 = 1;
+ gUnknown_02022C98->unk144 = 1;
}
}
for (r4 = r8; r4 < r7; r4++)
{
- struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_31A0[gUnknown_02022C98->multiplayerId].unk_14;
- if (ptr->unk_B[r4] >= 10)
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk14;
+ if (ptr->unkB[r4] >= 10)
{
- if (gUnknown_02022C98->unk_0148[r4] == 0)
+ if (gUnknown_02022C98->unk148[r4] == 0)
{
- PlaySE(SE_FUUSEN1 + ptr->unk_0[r4]);
- gUnknown_02022C98->unk_0148[r4] = 1;
+ PlaySE(SE_FUUSEN1 + ptr->unk0[r4]);
+ gUnknown_02022C98->unk148[r4] = 1;
}
}
else
{
- gUnknown_02022C98->unk_0148[r4] = 0;
+ gUnknown_02022C98->unk148[r4] = 0;
}
}
- if (gUnknown_02022C98->unk_0154 == 0 && gUnknown_02022C98->unk_0040 >= 10)
+ if (gUnknown_02022C98->unk154 == 0 && gUnknown_02022C98->unk40 >= 10)
{
StopMapMusic();
- gUnknown_02022C98->unk_0154 = 1;
+ gUnknown_02022C98->unk154 = 1;
}
- else if (gUnknown_02022C98->unk_0154 == 1)
+ else if (gUnknown_02022C98->unk154 == 1)
{
PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN
- gUnknown_02022C98->unk_0154 = 2;
+ gUnknown_02022C98->unk154 = 2;
}
}
-void sub_80261CC(void)
+static void sub_80261CC(void)
{
RunTasks();
AnimateSprites();
@@ -1344,46 +1551,46 @@ void sub_80261CC(void)
UpdatePaletteFade();
}
-void sub_80261E4(void)
+static void sub_80261E4(void)
{
TransferPlttBuffer();
LoadOam();
ProcessSpriteCopyRequests();
}
-void sub_80261F8(struct DodrioBerryPickingSubstruct_318C * a0, struct Pokemon * a1)
+static void sub_80261F8(struct DodrioSubstruct_318C * a0, struct Pokemon * a1)
{
a0->isShiny = IsMonShiny(a1);
}
-void sub_802620C(TaskFunc func, u8 priority)
+static void sub_802620C(TaskFunc func, u8 priority)
{
CreateTask(func, priority);
}
-void sub_802621C(TaskFunc func)
+static void sub_802621C(TaskFunc func)
{
- gUnknown_02022C98->unk_0004 = CreateTask(func, 1);
- gUnknown_02022C98->unk_0010 = 0;
- gUnknown_02022C98->unk_000C = 0;
- gUnknown_02022C98->unk_0014 = 0;
+ gUnknown_02022C98->unk04 = CreateTask(func, 1);
+ gUnknown_02022C98->unk10 = 0;
+ gUnknown_02022C98->unk0C = 0;
+ gUnknown_02022C98->unk14 = 0;
}
-void sub_8026240(u8 a0)
+static void sub_8026240(u8 a0)
{
- gUnknown_02022C98->unk_001C = gUnknown_02022C98->unk_0018;
- gUnknown_02022C98->unk_0018 = a0;
- gUnknown_02022C98->unk_0010 = 0;
- gUnknown_02022C98->unk_0014 = 0;
+ gUnknown_02022C98->unk1C = gUnknown_02022C98->unk18;
+ gUnknown_02022C98->unk18 = a0;
+ gUnknown_02022C98->unk10 = 0;
+ gUnknown_02022C98->unk14 = 0;
}
-bool32 sub_8026264(void)
+static bool32 sub_8026264(void)
{
- u8 r2 = gUnknown_02022C98->unk_0014 / 4;
- gUnknown_02022C98->unk_0014++;
- if (r2 != 0 && gUnknown_02022C98->unk_0014 % 4 == 0)
+ u8 r2 = gUnknown_02022C98->unk14 / 4;
+ gUnknown_02022C98->unk14++;
+ if (r2 != 0 && gUnknown_02022C98->unk14 % 4 == 0)
{
- if (r2 < gUnknown_082F7A94[gUnknown_02022C98->unk_0024 - 1])
+ if (r2 < gUnknown_082F7A94[gUnknown_02022C98->unk24 - 1])
{
SetGpuReg(REG_OFFSET_BG1HOFS, (r2 * 8));
SetGpuReg(REG_OFFSET_BG2HOFS, -(r2 * 8));
@@ -1400,530 +1607,125 @@ bool32 sub_8026264(void)
}
}
-void sub_80262C0(void)
+static void sub_80262C0(void)
{
u8 i;
- u8 start = gUnknown_02022C98->unk_0044;
- u8 finish = gUnknown_02022C98->unk_0048;
+ u8 start = gUnknown_02022C98->unk44;
+ u8 finish = gUnknown_02022C98->unk48;
for (i = start; i < finish; i++)
{
- struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_32CC.unk_14;
- ptr->unk_B[i] = (i % 2 == 0) ? 1 : 0;
- ptr->unk_0[i] = 0;
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk32CC.unk14;
+ ptr->unkB[i] = (i % 2 == 0) ? 1 : 0;
+ ptr->unk0[i] = 0;
}
}
-#ifdef NONMATCHING
-void sub_8026324(void)
-{
- u8 sp0 = gUnknown_02022C98->unk_0044;
- u8 sp4 = gUnknown_02022C98->unk_0048;
- u8 sp8 = gUnknown_02022C98->unk_0024;
- u8 r6;
- u8 r10;
- s32 r2;
- u8 r5;
- u8 r3;
- s32 r2_2;
- u8 r4;
- u8 r7, r7_2;
+static void sub_8026324(void)
+{
+ u8 sp0 = gUnknown_02022C98->unk44;
+ u8 sp4 = gUnknown_02022C98->unk48;
+ u8 sp8 = gUnknown_02022C98->unk24;
+ u8 i, j, k, r5;
- if (gUnknown_02022C98->unk_0040 >= 10)
+ if (gUnknown_02022C98->unk40 >= 10)
return;
- for (r6 = 0; r6 < sp8; r6++)
+ for (i = 0; i < sp8; i++)
{
- if (gUnknown_02022C98->unk_31A0[r6].unk_2C != 0 && gUnknown_02022C98->unk_00A8[r6] == 1)
+ u8 *ptr = &gUnknown_02022C98->unk31A0[i].unk2C.unk0;
+ if (*ptr != 0 && gUnknown_02022C98->unkA8[i] == 1)
{
- for (r10 = sp0; r10 < sp4; r10++)
+ for (j = sp0; j < sp4; j++)
{
- r5 = gUnknown_082F449C[r10];
- if (gUnknown_02022C98->unk_00F4[r5][0] == r6)
- {
+ r5 = gUnknown_082F449C[0][0][j];
+ if (gUnknown_02022C98->unkF4[r5][0] == i || gUnknown_02022C98->unkF4[r5][1] == i)
break;
- }
- if (gUnknown_02022C98->unk_00F4[r5][1] == r6)
- {
- break;
- }
- if (sub_8026634(gUnknown_02022C98->unk_31A0[r6].unk_2C, r6, gUnknown_082F449C[r10]) == 1)
+ if (sub_8026634(i, *ptr, r5) == TRUE)
{
- for (r2 = 0; r2 < 2; r2++)
+ for (k = 0; k < 2; k++)
{
- if (gUnknown_02022C98->unk_00F4[r5][r2] == 0xFF)
+ if (gUnknown_02022C98->unkF4[r5][k] == 0xFF)
{
- gUnknown_02022C98->unk_00F4[r5][r2] = r6;
- gUnknown_02022C98->unk_00A8[r6] = 2;
- gUnknown_02022C98->unk_00C4[r5] = 1;
+ gUnknown_02022C98->unkF4[r5][k] = i;
+ gUnknown_02022C98->unkA8[i] = 2;
+ gUnknown_02022C98->unkC4[r5] = 1;
break;
}
}
break;
}
- if (gUnknown_02022C98->unk_31A0[r6].unk_34 == 1)
- {
+ if (gUnknown_02022C98->unk31A0[i].unk2C.unk8 == 1)
break;
- }
}
}
}
- for (r10 = sp0; r10 < sp4; r10++)
+ for (j = sp0; j < sp4; j++)
{
- r6 = 0xFF;
- r5 = gUnknown_082F449C[r10];
- if (gUnknown_02022C98->unk_00C4[r5] == 1)
+ u8 id = 0xFF;
+ r5 = gUnknown_082F449C[0][0][j];
+ if (gUnknown_02022C98->unkC4[r5] == 1)
{
- r3 = gUnknown_02022C98->unk_0090[sub_8026D8C(r5)] / 7;
- if (r3 < 2)
- {
- r3 = 2;
- }
- r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk_31A0[0].unk_14.unk_0[r5]] - gUnknown_02022C98->unk_00D0[r5];
+ s32 r2;
+ u8 r4, r3 = gUnknown_02022C98->unk90[sub_8026D8C(r5)] / 7;
+ if (r3 >= ARRAY_COUNT(gUnknown_082F7A88) - 1)
+ r3 = ARRAY_COUNT(gUnknown_082F7A88) - 1;
+
+ r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk31A0[0].unk14.unk0[r5]] - gUnknown_02022C98->unkD0[r5];
if (r2 < 6)
+ gUnknown_02022C98->unk9C[r5] += r2;
+
+ if (++gUnknown_02022C98->unk9C[r5] >= 6)
{
- gUnknown_02022C98->unk_009C[r5] += r2;
- }
- if (++gUnknown_02022C98->unk_009C[r5] >= 6)
- {
- gUnknown_02022C98->unk_009C[r5] = 0;
- if (gUnknown_02022C98->unk_00F4[r5][0] != 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF)
+ gUnknown_02022C98->unk9C[r5] = 0;
+ if (gUnknown_02022C98->unkF4[r5][0] == 0xFF && gUnknown_02022C98->unkF4[r5][1] == 0xFF)
{
- r4 = gUnknown_02022C98->unk_00F4[r5][0];
+ continue;
}
- else if (gUnknown_02022C98->unk_00F4[r5][0] == 0xFF && gUnknown_02022C98->unk_00F4[r5][1] == 0xFF)
+ else if (gUnknown_02022C98->unkF4[r5][0] != 0xFF && gUnknown_02022C98->unkF4[r5][1] == 0xFF)
{
- continue;
+ r4 = gUnknown_02022C98->unkF4[r5][0];
}
else
{
- r7 = gUnknown_02022C98->unk_00F4[r5][0];
- r7_2 = gUnknown_02022C98->unk_00F4[r5][1];
- if ((Random() & 1))
+ u8 unk0 = gUnknown_02022C98->unkF4[r5][0];
+ i = gUnknown_02022C98->unkF4[r5][1]; // Have to re-use the variable to match.
+ if (!(Random() & 1))
{
- r4 = r7_2;
- r6 = r7;
+ r4 = unk0;
+ id = i;
}
else
{
- r4 = r7;
- r6 = r7_2;
+ r4 = i;
+ id = unk0;
}
}
- gUnknown_02022C98->unk_32CC.unk_14.unk_B[r5] = 7;
- gUnknown_02022C98->unk_00C4[r5] = 2;
- gUnknown_02022C98->unk_00A8[r4] = 3;
- gUnknown_02022C98->unk_00B8[r5] = r4;
- gUnknown_02022C98->unk_31A0[r4].unk_30 = 1;
- gUnknown_02022C98->unk_31A0[r6].unk_34 = 1;
- gUnknown_02022C98->unk_0086[r4]++;
+ gUnknown_02022C98->unk32CC.unk14.unkB[r5] = 7;
+ gUnknown_02022C98->unkC4[r5] = 2;
+ gUnknown_02022C98->unkA8[r4] = 3;
+ gUnknown_02022C98->unkB8[r5] = r4;
+ gUnknown_02022C98->unk31A0[r4].unk2C.unk4 = 1;
+ gUnknown_02022C98->unk31A0[id].unk2C.unk8 = 1;
+ gUnknown_02022C98->unk86[r4]++;
sub_8026F1C(0, r5, r4);
- sub_8027234(1);
+ sub_8027234(TRUE);
sub_8026D1C(r4);
- gUnknown_02022C98->unk_00E8[r5] = gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5];
- gUnknown_02022C98->unk_32CC.unk_14.unk_0[r5] = 3;
- gUnknown_02022C98->unk_00F4[r5][0] = 0xFF;
- gUnknown_02022C98->unk_00F4[r5][1] = 0xFF;
+ gUnknown_02022C98->unkE8[r5] = gUnknown_02022C98->unk32CC.unk14.unk0[r5];
+ gUnknown_02022C98->unk32CC.unk14.unk0[r5] = 3;
+ gUnknown_02022C98->unkF4[r5][0] = 0xFF;
+ gUnknown_02022C98->unkF4[r5][1] = 0xFF;
}
}
}
}
-#else
-NAKED
-void sub_8026324(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x10\n"
- "\tldr r0, =gUnknown_02022C98\n"
- "\tldr r1, [r0]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x44\n"
- "\tldrb r0, [r0]\n"
- "\tstr r0, [sp]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x48\n"
- "\tldrb r0, [r0]\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x24\n"
- "\tldrb r0, [r0]\n"
- "\tstr r0, [sp, 0x8]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x40\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x9\n"
- "\tbls _08026358\n"
- "\tb _08026614\n"
- "_08026358:\n"
- "\tmovs r6, 0\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tcmp r6, r0\n"
- "\tbcs _08026440\n"
- "_08026360:\n"
- "\tldr r3, =gUnknown_02022C98\n"
- "\tlsls r0, r6, 4\n"
- "\tsubs r1, r0, r6\n"
- "\tlsls r1, 2\n"
- "\tldr r2, [r3]\n"
- "\tadds r1, r2\n"
- "\tldr r4, =0x000031cc\n"
- "\tadds r4, r1\n"
- "\tmov r8, r4\n"
- "\tldrb r1, [r4]\n"
- "\tmov r9, r0\n"
- "\tadds r0, r6, 0x1\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tcmp r1, 0\n"
- "\tbeq _08026434\n"
- "\tadds r0, r2, 0\n"
- "\tadds r0, 0xA8\n"
- "\tadds r0, r6\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x1\n"
- "\tbne _08026434\n"
- "\tldr r1, [sp]\n"
- "\tmov r10, r1\n"
- "\tldr r2, [sp, 0x4]\n"
- "\tcmp r10, r2\n"
- "\tbcs _08026434\n"
- "\tadds r7, r3, 0\n"
- "_08026396:\n"
- "\tldr r0, =gUnknown_082F449C\n"
- "\tadd r0, r10\n"
- "\tldrb r5, [r0]\n"
- "\tldr r1, [r7]\n"
- "\tlsls r4, r5, 1\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0xF4\n"
- "\tadds r0, r4\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, r6\n"
- "\tbeq _08026434\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0xF5\n"
- "\tadds r0, r4\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, r6\n"
- "\tbeq _08026434\n"
- "\tmov r0, r8\n"
- "\tldrb r1, [r0]\n"
- "\tadds r0, r6, 0\n"
- "\tadds r2, r5, 0\n"
- "\tbl sub_8026634\n"
- "\tcmp r0, 0x1\n"
- "\tbne _08026410\n"
- "\tmovs r2, 0\n"
- "\tldr r3, =gUnknown_02022C98\n"
- "\tmov r8, r4\n"
- "_080263CE:\n"
- "\tldr r0, [r3]\n"
- "\tmov r4, r8\n"
- "\tadds r1, r2, r4\n"
- "\tadds r0, 0xF4\n"
- "\tadds r1, r0, r1\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08026404\n"
- "\tstrb r6, [r1]\n"
- "\tldr r0, [r3]\n"
- "\tadds r0, 0xA8\n"
- "\tadds r0, r6\n"
- "\tmovs r1, 0x2\n"
- "\tstrb r1, [r0]\n"
- "\tldr r0, [r3]\n"
- "\tadds r0, 0xC4\n"
- "\tadds r0, r5\n"
- "\tmovs r1, 0x1\n"
- "\tstrb r1, [r0]\n"
- "\tb _08026434\n"
- "\t.pool\n"
- "_08026404:\n"
- "\tadds r0, r2, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tcmp r2, 0x1\n"
- "\tbls _080263CE\n"
- "\tb _08026434\n"
- "_08026410:\n"
- "\tldr r0, [r7]\n"
- "\tmov r2, r9\n"
- "\tsubs r1, r2, r6\n"
- "\tlsls r1, 2\n"
- "\tadds r0, r1\n"
- "\tldr r4, =0x000031d4\n"
- "\tadds r0, r4\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _08026434\n"
- "\tmov r0, r10\n"
- "\tadds r0, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tmov r10, r0\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tcmp r10, r0\n"
- "\tbcc _08026396\n"
- "_08026434:\n"
- "\tldr r1, [sp, 0xC]\n"
- "\tlsls r0, r1, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r6, r2\n"
- "\tbcc _08026360\n"
- "_08026440:\n"
- "\tldr r4, [sp]\n"
- "\tmov r10, r4\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tcmp r10, r0\n"
- "\tbcc _0802644C\n"
- "\tb _08026614\n"
- "_0802644C:\n"
- "\tldr r1, =gUnknown_02022C98\n"
- "\tmov r9, r1\n"
- "_08026450:\n"
- "\tmovs r6, 0xFF\n"
- "\tldr r0, =gUnknown_082F449C\n"
- "\tadd r0, r10\n"
- "\tldrb r5, [r0]\n"
- "\tmov r2, r9\n"
- "\tldr r0, [r2]\n"
- "\tadds r0, 0xC4\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _08026468\n"
- "\tb _08026602\n"
- "_08026468:\n"
- "\tadds r0, r5, 0\n"
- "\tbl sub_8026D8C\n"
- "\tmov r1, r9\n"
- "\tldr r4, [r1]\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tadds r1, r4, 0\n"
- "\tadds r1, 0x90\n"
- "\tadds r1, r0\n"
- "\tldrb r0, [r1]\n"
- "\tmovs r1, 0x7\n"
- "\tbl __udivsi3\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tcmp r3, 0x1\n"
- "\tbls _0802648E\n"
- "\tmovs r3, 0x2\n"
- "_0802648E:\n"
- "\tldr r2, =gUnknown_082F7A88\n"
- "\tldr r0, =0x000031b4\n"
- "\tadds r1, r4, r0\n"
- "\tadds r1, r5\n"
- "\tlsls r0, r3, 1\n"
- "\tadds r0, r3\n"
- "\tldrb r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tadds r0, r2\n"
- "\tldrb r1, [r0]\n"
- "\tadds r0, r4, 0\n"
- "\tadds r0, 0xD0\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0]\n"
- "\tsubs r2, r1, r0\n"
- "\tcmp r2, 0x5\n"
- "\tbgt _080264BC\n"
- "\tadds r1, r4, 0\n"
- "\tadds r1, 0x9C\n"
- "\tadds r1, r5\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, r2\n"
- "\tstrb r0, [r1]\n"
- "_080264BC:\n"
- "\tmov r2, r9\n"
- "\tldr r1, [r2]\n"
- "\tadds r1, 0x9C\n"
- "\tadds r1, r5\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tmovs r2, 0\n"
- "\tstrb r0, [r1]\n"
- "\tmovs r4, 0xFF\n"
- "\tands r0, r4\n"
- "\tcmp r0, 0x5\n"
- "\tbhi _080264D6\n"
- "\tb _08026602\n"
- "_080264D6:\n"
- "\tmov r1, r9\n"
- "\tldr r0, [r1]\n"
- "\tadds r0, 0x9C\n"
- "\tadds r0, r5\n"
- "\tstrb r2, [r0]\n"
- "\tldr r3, [r1]\n"
- "\tlsls r1, r5, 1\n"
- "\tadds r0, r3, 0\n"
- "\tadds r0, 0xF4\n"
- "\tadds r2, r0, r1\n"
- "\tldrb r0, [r2]\n"
- "\tmov r8, r1\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08026518\n"
- "\tadds r0, r3, 0\n"
- "\tadds r0, 0xF5\n"
- "\tadd r0, r8\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08026500\n"
- "\tb _08026602\n"
- "_08026500:\n"
- "\tb _08026528\n"
- "\t.pool\n"
- "_08026518:\n"
- "\tadds r0, r3, 0\n"
- "\tadds r0, 0xF5\n"
- "\tadd r0, r8\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08026528\n"
- "\tldrb r4, [r2]\n"
- "\tb _0802654E\n"
- "_08026528:\n"
- "\tmov r2, r9\n"
- "\tldr r1, [r2]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0xF4\n"
- "\tadd r0, r8\n"
- "\tldrb r7, [r0]\n"
- "\tadds r1, 0xF5\n"
- "\tadd r1, r8\n"
- "\tldrb r6, [r1]\n"
- "\tbl Random\n"
- "\tmovs r1, 0x1\n"
- "\tands r1, r0\n"
- "\tcmp r1, 0\n"
- "\tbne _0802654A\n"
- "\tadds r4, r7, 0\n"
- "\tb _0802654E\n"
- "_0802654A:\n"
- "\tadds r4, r6, 0\n"
- "\tadds r6, r7, 0\n"
- "_0802654E:\n"
- "\tmov r1, r9\n"
- "\tldr r0, [r1]\n"
- "\tldr r2, =0x000032eb\n"
- "\tadds r0, r2\n"
- "\tadds r0, r5\n"
- "\tmovs r1, 0x7\n"
- "\tstrb r1, [r0]\n"
- "\tmov r1, r9\n"
- "\tldr r0, [r1]\n"
- "\tadds r0, 0xC4\n"
- "\tadds r0, r5\n"
- "\tmovs r1, 0x2\n"
- "\tstrb r1, [r0]\n"
- "\tmov r2, r9\n"
- "\tldr r0, [r2]\n"
- "\tadds r0, 0xA8\n"
- "\tadds r0, r4\n"
- "\tmovs r1, 0x3\n"
- "\tstrb r1, [r0]\n"
- "\tldr r0, [r2]\n"
- "\tadds r0, 0xB8\n"
- "\tadds r0, r5\n"
- "\tstrb r4, [r0]\n"
- "\tldr r1, [r2]\n"
- "\tlsls r0, r4, 4\n"
- "\tsubs r0, r4\n"
- "\tlsls r0, 2\n"
- "\tadds r1, r0\n"
- "\tldr r2, =0x000031d0\n"
- "\tadds r1, r2\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tmov r2, r9\n"
- "\tldr r1, [r2]\n"
- "\tlsls r0, r6, 4\n"
- "\tsubs r0, r6\n"
- "\tlsls r0, 2\n"
- "\tadds r1, r0\n"
- "\tldr r0, =0x000031d4\n"
- "\tadds r1, r0\n"
- "\tmovs r2, 0x1\n"
- "\tstrb r2, [r1]\n"
- "\tmov r0, r9\n"
- "\tldr r1, [r0]\n"
- "\tlsls r0, r4, 1\n"
- "\tadds r1, 0x86\n"
- "\tadds r1, r0\n"
- "\tldrh r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstrh r0, [r1]\n"
- "\tmovs r0, 0\n"
- "\tadds r1, r5, 0\n"
- "\tadds r2, r4, 0\n"
- "\tbl sub_8026F1C\n"
- "\tmovs r0, 0x1\n"
- "\tbl sub_8027234\n"
- "\tadds r0, r4, 0\n"
- "\tbl sub_8026D1C\n"
- "\tmov r1, r9\n"
- "\tldr r0, [r1]\n"
- "\tadds r1, r0, 0\n"
- "\tadds r1, 0xE8\n"
- "\tadds r1, r5\n"
- "\tldr r2, =0x000032e0\n"
- "\tadds r0, r2\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0]\n"
- "\tstrb r0, [r1]\n"
- "\tmov r4, r9\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, r2\n"
- "\tadds r0, r5\n"
- "\tmovs r1, 0x3\n"
- "\tstrb r1, [r0]\n"
- "\tldr r1, [r4]\n"
- "\tadds r1, 0xF4\n"
- "\tadd r1, r8\n"
- "\tldrb r0, [r1]\n"
- "\tmovs r2, 0xFF\n"
- "\torrs r0, r2\n"
- "\tstrb r0, [r1]\n"
- "\tldr r1, [r4]\n"
- "\tadds r1, 0xF5\n"
- "\tadd r1, r8\n"
- "\tldrb r0, [r1]\n"
- "\torrs r0, r2\n"
- "\tstrb r0, [r1]\n"
- "_08026602:\n"
- "\tmov r0, r10\n"
- "\tadds r0, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tmov r10, r0\n"
- "\tldr r4, [sp, 0x4]\n"
- "\tcmp r10, r4\n"
- "\tbcs _08026614\n"
- "\tb _08026450\n"
- "_08026614:\n"
- "\tadd sp, 0x10\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool");
-}
-#endif // NONMATCHING
-u32 sub_8026634(u8 a0, u8 a1, u8 a2)
+static bool32 sub_8026634(u8 a0, u8 a1, u8 a2)
{
s32 r7 = 0;
- u8 r5 = gUnknown_02022C98->unk_0024 - 1;
- struct DodrioBerryPickingSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk_32CC.unk_14;
+ u8 r5 = gUnknown_02022C98->unk24 - 1;
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk32CC.unk14;
switch (a1)
{
@@ -1938,13 +1740,13 @@ u32 sub_8026634(u8 a0, u8 a1, u8 a2)
r7 = 2;
break;
}
- if (ptr->unk_B[a2] == 6 || ptr->unk_B[a2] == 7)
+ if (ptr->unkB[a2] == 6 || ptr->unkB[a2] == 7)
{
- if (a2 == gUknnown_082F45AF[r7 + a0 * 3 + 15 * r5])
+ if (a2 == gUknnown_082F45AF[r5][a0][r7])
{
- if (gUnknown_02022C98->unk_00C4[a2] == 1 || gUnknown_02022C98->unk_00C4[a2] == 2)
+ if (gUnknown_02022C98->unkC4[a2] == 1 || gUnknown_02022C98->unkC4[a2] == 2)
{
- gUnknown_02022C98->unk_31A0[a0].unk_34 = 1;
+ gUnknown_02022C98->unk31A0[a0].unk2C.unk8 = 1;
return FALSE;
}
else
@@ -1955,98 +1757,3330 @@ u32 sub_8026634(u8 a0, u8 a1, u8 a2)
}
else
{
- if (a2 == gUknnown_082F45AF[r7 + a0 * 3 + 15 * r5])
+ if (a2 == gUknnown_082F45AF[r5][a0][r7])
{
- gUnknown_02022C98->unk_00A8[a0] = 4;
- gUnknown_02022C98->unk_31A0[a0].unk_34 = 1;
+ gUnknown_02022C98->unkA8[a0] = 4;
+ gUnknown_02022C98->unk31A0[a0].unk2C.unk8 = 1;
}
}
return FALSE;
}
-void sub_802671C(void)
+static void sub_802671C(void)
{
- u8 r1 = gUnknown_02022C98->unk_0044;
- u8 r9 = gUnknown_02022C98->unk_0048;
+ u8 r1 = gUnknown_02022C98->unk44;
+ u8 r9 = gUnknown_02022C98->unk48;
u8 r3 = 0;
u8 r10 = 0;
u8 i;
u8 r2;
- struct DodrioBerryPickingStruct *ptr;
+ struct DodrioStruct *ptr;
- gUnknown_02022C98->unk_0120 = 0;
+ gUnknown_02022C98->unk120 = 0;
for (i = r1; i < r9 - 1; i++)
{
ptr = gUnknown_02022C98;
- if (gUnknown_02022C98->unk_00C4[i] == 0 || gUnknown_02022C98->unk_00C4[i] == 1)
+ if (gUnknown_02022C98->unkC4[i] == 0 || gUnknown_02022C98->unkC4[i] == 1)
{
- gUnknown_02022C98->unk_0120 = 1;
- if (ptr->unk_32CC.unk_14.unk_B[i] >= 10)
+ gUnknown_02022C98->unk120 = 1;
+ if (ptr->unk32CC.unk14.unkB[i] >= 10)
{
- ptr->unk_32CC.unk_14.unk_B[i] = 10;
- gUnknown_02022C98->unk_00C4[i] = 3;
- if (gUnknown_02022C98->unk_0148[i] == 0)
+ ptr->unk32CC.unk14.unkB[i] = 10;
+ gUnknown_02022C98->unkC4[i] = 3;
+ if (gUnknown_02022C98->unk148[i] == 0)
{
- gUnknown_02022C98->unk_0148[i] = 1;
- PlaySE(SE_FUUSEN1 + ptr->unk_32CC.unk_14.unk_0[i]);
+ gUnknown_02022C98->unk148[i] = 1;
+ PlaySE(SE_FUUSEN1 + ptr->unk32CC.unk14.unk0[i]);
}
- if (gUnknown_02022C98->unk_0040 < 10 || r10 == 1)
+ if (gUnknown_02022C98->unk40 < 10 || r10 == 1)
{
r10 = 1;
- gUnknown_02022C98->unk_0148[i] = 0;
- if (gUnknown_02022C98->unk_0040 < 10)
+ gUnknown_02022C98->unk148[i] = 0;
+ if (gUnknown_02022C98->unk40 < 10)
{
- gUnknown_02022C98->unk_0040++;
+ gUnknown_02022C98->unk40++;
}
sub_8026F1C(3, i, 0);
- sub_8027234(0);
+ sub_8027234(FALSE);
}
}
else
{
- r3 = gUnknown_02022C98->unk_0090[sub_8026D8C(i)] / 7;
+ r3 = gUnknown_02022C98->unk90[sub_8026D8C(i)] / 7;
if (r3 >= 2)
{
r3 = 2;
}
- r2 = gUnknown_082F7A88[r3][ptr->unk_32CC.unk_14.unk_0[i]];
- if (++gUnknown_02022C98->unk_00D0[i] >= r2)
+ r2 = gUnknown_082F7A88[r3][ptr->unk32CC.unk14.unk0[i]];
+ if (++gUnknown_02022C98->unkD0[i] >= r2)
{
- ptr->unk_32CC.unk_14.unk_B[i]++;
- gUnknown_02022C98->unk_00D0[i] = 0;
+ ptr->unk32CC.unk14.unkB[i]++;
+ gUnknown_02022C98->unkD0[i] = 0;
}
sub_8026324();
}
}
- else if (gUnknown_02022C98->unk_00C4[i] == 2)
+ else if (gUnknown_02022C98->unkC4[i] == 2)
+ {
+ gUnknown_02022C98->unk120 = 1;
+ if (++gUnknown_02022C98->unkDC[i] >= 20)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->unkB8[i]].unk2C.unk4 = 0;
+ gUnknown_02022C98->unkDC[i] = 0;
+ gUnknown_02022C98->unkD0[i] = 0;
+ gUnknown_02022C98->unkC4[i] = 0;
+ ptr->unk32CC.unk14.unkB[i] = 1;
+ ptr->unk32CC.unk14.unk0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ }
+ }
+ else if (gUnknown_02022C98->unkC4[i] == 3)
+ {
+ if (++gUnknown_02022C98->unkDC[i] >= 20)
+ {
+ if (gUnknown_02022C98->unk40 < 10)
+ {
+ gUnknown_02022C98->unkDC[i] = 0;
+ gUnknown_02022C98->unkD0[i] = 0;
+ gUnknown_02022C98->unkC4[i] = 0;
+ ptr->unk32CC.unk14.unkB[i] = 1;
+ gUnknown_02022C98->unkE8[i] = ptr->unk32CC.unk14.unk0[i];
+ ptr->unk32CC.unk14.unk0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ }
+ }
+ }
+ }
+}
+
+static void sub_8026988(void)
+{
+ u8 i, first, count;
+
+ first = gUnknown_02022C98->unk44;
+ count = gUnknown_02022C98->unk48;
+ for (i = first; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ u8 var = gUnknown_082F449C[gUnknown_02022C98->unk24 - 1][gUnknown_02022C98->multiplayerId][i];
+
+ if (ptr->unk14.unkB[var] != 0)
+ sub_8028BF8(i, FALSE);
+ else
+ sub_8028BF8(i, TRUE);
+
+ if (ptr->unk14.unkB[var] > 9)
+ {
+ sub_8028CA4(i, ptr->unk14.unk0[var] + 3);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2 - 1);
+ }
+ else if (ptr->unk14.unk0[var] == 3)
+ {
+ ptr->unk14.unkB[var] = 7;
+ sub_8028CA4(i, 6);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2 - 1);
+ }
+ else
+ {
+ sub_8028CA4(i, ptr->unk14.unk0[var]);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2);
+ }
+ }
+}
+
+static void sub_8026A88(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 0; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[i];
+ sub_80286B4(i, ptr->unk2C.unk0);
+ }
+}
+
+static void sub_8026AC8(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 0; i < count; i++)
+ sub_80286B4(i, 4);
+}
+
+static void sub_8026AF4(void)
+{
+ sub_8026988();
+ if (gUnknown_02022C98->unk40 > 9)
+ sub_8026AC8();
+ else
+ sub_8026A88();
+
+ sub_80288D4(gUnknown_02022C98->unk40);
+}
+
+// This function is literally the same as the one above...Why?
+static void sub_8026B28(void)
+{
+ sub_8026988();
+ if (gUnknown_02022C98->unk40 > 9)
+ sub_8026AC8();
+ else
+ sub_8026A88();
+
+ sub_80288D4(gUnknown_02022C98->unk40);
+}
+
+static void sub_8026B5C(u8 arg0, u8 *arg1, u8 *arg2)
+{
+ switch (arg0)
+ {
+ case 1:
+ *arg1 = 4, *arg2 = 7;
+ break;
+ case 2:
+ *arg1 = 3, *arg2 = 8;
+ break;
+ case 3:
+ *arg1 = 2, *arg2 = 9;
+ break;
+ case 4:
+ *arg1 = 1, *arg2 = 10;
+ break;
+ case 5:
+ *arg1 = 0, *arg2 = 11;
+ break;
+ }
+}
+
+static bool32 sub_8026BB8(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 1; i < count; i++)
+ {
+ if (gUnknown_02022C98->unk158[i] == 0)
+ gUnknown_02022C98->unk158[i] = sub_8027DFC(i);
+ }
+
+ // This loop won't ever run, the seemingly poitnless assingment below is to make the compiler
+ // generate code for it.
+ count = count;
+ for (; i < count; i++)
+ {
+ if (gUnknown_02022C98->unk158[i] == 0)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_8026C28(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ gUnknown_02022C98->unk158[i] = 0;
+}
+
+static bool32 sub_8026C50(void)
+{
+ if (gUnknown_02022C98->unk40 > 9 && gUnknown_02022C98->unk120 == 0)
+ {
+ gUnknown_02022C98->unk40 = 10;
+ if (gUnknown_02022C98->unk12C != 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_8026C90(void)
+{
+ u8 i, first, count;
+
+ if (gUnknown_02022C98->unk40 > 9)
+ {
+ first = gUnknown_02022C98->unk44;
+ count = gUnknown_02022C98->unk48;
+ gUnknown_02022C98->unk40 = 10;
+ if (gUnknown_02022C98->unk12C != 0)
+ {
+ for (i = first; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ u8 var = gUnknown_082F449C[gUnknown_02022C98->unk24 - 1][gUnknown_02022C98->multiplayerId][i];
+
+ if (ptr->unk14.unkB[var] != 10)
+ return FALSE;
+ }
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void sub_8026D1C(u8 arg0)
+{
+ u8 var = gUnknown_082F7A9C[gUnknown_02022C98->unk90[arg0] % 7] + (gUnknown_02022C98->unk90[arg0] / 7) * 100;
+ if (gUnknown_02022C98->unk86[arg0] >= var)
+ gUnknown_02022C98->unk90[arg0]++;
+}
+
+static u8 sub_8026D8C(u8 arg0)
+{
+ return gUnknown_082F4648[gUnknown_02022C98->unk24 - 1][arg0];
+}
+
+static u8 sub_8026DB0(u8 arg0, u8 arg1)
+{
+ u8 i, var3;
+ u8 count = gUnknown_02022C98->unk24 - 1;
+ u8 var0 = gUnknown_082F45FA[count][arg0][0];
+ u8 var1 = gUnknown_082F45FA[count][arg0][1];
+ u8 var2 = gUnknown_082F45FA[count][arg0][2];
+
+ for (i = 0; gUnknown_082F467F[count][i] != 0; i++)
+ {
+ if (arg1 == gUnknown_082F467F[count][i])
+ return sub_8026E70(gUnknown_02022C98->unk90[var1], arg1);
+ }
+
+ // Gets the highest of the three.
+ if (gUnknown_02022C98->unk90[var0] > gUnknown_02022C98->unk90[var1])
+ var3 = gUnknown_02022C98->unk90[var0];
+ else
+ var3 = gUnknown_02022C98->unk90[var1];
+
+ if (gUnknown_02022C98->unk90[var2] > var3)
+ var3 = gUnknown_02022C98->unk90[var2];
+
+ return sub_8026E70(var3, arg1);
+}
+
+static u8 sub_8026E70(u8 arg0, u8 arg1)
+{
+ u8 var = gUnknown_02022C98->unkE8[arg1];
+ switch (arg0 % 7)
+ {
+ default: return 0;
+ case 0: return 0;
+ case 1: return 1;
+ case 2: return 2;
+ case 3:
+ if (var == 0)
+ return 1;
+ else
+ return 0;
+ case 4:
+ if (var == 0)
+ return 2;
+ else
+ return 0;
+ case 5:
+ if (var == 2)
+ return 1;
+ else
+ return 2;
+ case 6:
+ if (var == 0)
+ return 1;
+ else if (var == 1)
+ return 2;
+ else
+ return 0;
+ }
+}
+
+static bool32 sub_8026EEC(u16 arg0[5][6])
+{
+ int sum, i;
+ for (sum = 0, i = 0; i < GetLinkPlayerCount(); sum += arg0[i][3], i++)
+ ;
+
+ if (sum >= 11)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_8026F1C(u8 arg0, u8 arg1, u8 arg2)
+{
+ u8 var;
+ u8 count = gUnknown_02022C98->unk24;
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ var = gUnknown_02022C98->unk31A0[0].unk14.unk0[arg1];
+ gUnknown_02022C98->unk4A[arg2][var] = IncrementWithLimit(gUnknown_02022C98->unk4A[arg2][var], 20000);
+ break;
+ case 3:
+ if (sub_8026EEC(gUnknown_02022C98->unk4A))
+ break;
+ switch (count)
+ {
+ case 5:
+ switch (arg1)
+ {
+ case 0:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 1:
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 2:
+ gUnknown_02022C98->unk4A[3][3]++;
+ gUnknown_02022C98->unk4A[4][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[4][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[4][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 8:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 9:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ }
+ break;
+ case 4:
+ switch (arg1)
+ {
+ case 1:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 2:
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[3][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 8:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ }
+ break;
+ case 3:
+ switch (arg1)
+ {
+ case 2:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ }
+ break;
+ case 2:
+ switch (arg1)
+ {
+ case 3:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ }
+ break;
+ }
+ break;
+ }
+}
+
+static void sub_8027234(bool32 arg0)
+{
+ if (gUnknown_02022C98->unk24 != 5)
+ return;
+
+ if (arg0 == TRUE)
+ {
+ if (++gUnknown_02022C98->unk112 > gUnknown_02022C98->unk114)
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk112;
+ if (gUnknown_02022C98->unk112 > 9999)
+ gUnknown_02022C98->unk112 = 9999;
+ }
+ else
+ {
+ if (gUnknown_02022C98->unk112 > gUnknown_02022C98->unk114)
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk112;
+ gUnknown_02022C98->unk112 = 0;
+ }
+}
+
+static void sub_80272A4(void)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ gUnknown_02022C98->unk4A[i][5] = gUnknown_02022C98->unk114;
+}
+
+static void sub_80272E8(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 11; j++)
+ gUnknown_02022C98->unk31A0[i].unk14.unkB[j] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk90[i] = 0;
+ gUnknown_02022C98->unk86[i] = 0;
+ gUnknown_02022C98->unk3308[i].unk0 = 0;
+ gUnknown_02022C98->unk3308[i].unk4 = 0;
+ gUnknown_02022C98->unk4A[i][0] = 0;
+ gUnknown_02022C98->unk4A[i][1] = 0;
+ gUnknown_02022C98->unk4A[i][2] = 0;
+ gUnknown_02022C98->unk4A[i][3] = 0;
+ gUnknown_02022C98->unk4A[i][4] = 0;
+ gUnknown_02022C98->unk4A[i][5] = 0;
+ }
+ gUnknown_02022C98->unk154 = 0;
+ gUnknown_02022C98->unk112 = 0;
+ gUnknown_02022C98->unk40 = 0;
+ sub_8026A88();
+ sub_8026988();
+}
+
+static const s16 gUnknown_082F7B24[] = {10, 30, 50, 50};
+
+static void sub_80273F0(void)
+{
+ u8 i, var = 0, var2 = 0;
+
+ switch (gUnknown_02022C98->unk24)
+ {
+ case 4: var = 1; break;
+ case 5: var = 2; break;
+ }
+
+ var2 = Random() % 10;
+ for (i = 0; i < 5; i++)
+ gUnknown_02022C98->unk4A[i][4] = gUnknown_082F7AA4[var][var2];
+}
+
+static u32 sub_802745C(u8 arg0)
+{
+ u32 sum = gUnknown_02022C98->unk4A[arg0][0]
+ + gUnknown_02022C98->unk4A[arg0][1]
+ + gUnknown_02022C98->unk4A[arg0][2];
+ return min(sum, 9999);
+}
+
+static void sub_802749C(void)
+{
+ u32 berriesPicked = Min(sub_802745C(gUnknown_02022C98->multiplayerId), 9999);
+ u32 score = Min(sub_80276C0(gUnknown_02022C98->multiplayerId), 999990);
+
+ if (gSaveBlock2Ptr->berryPick.bestScore < score)
+ gSaveBlock2Ptr->berryPick.bestScore = score;
+ if (gSaveBlock2Ptr->berryPick.berriesPicked < berriesPicked)
+ gSaveBlock2Ptr->berryPick.berriesPicked = berriesPicked;
+ if (gSaveBlock2Ptr->berryPick.berriesPickedInRow < gUnknown_02022C98->unk114)
+ gSaveBlock2Ptr->berryPick.berriesPickedInRow = gUnknown_02022C98->unk114;
+}
+
+static u8 sub_8027518(u8 arg0)
+{
+ u8 i, saved;
+
+ saved = gUnknown_02022C98->unk98[3];
+ for (i = 3; i != 0; i--)
+ gUnknown_02022C98->unk98[i] = gUnknown_02022C98->unk98[i - 1];
+ gUnknown_02022C98->unk98[0] = arg0;
+ return saved;
+}
+
+static void sub_8027554(void)
+{
+ if (gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] == 0)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 2;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 3;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 1;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 0;
+ }
+ }
+ else
+ {
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId]--;
+ }
+}
+
+static void sub_8027608(void)
+{
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 0;
+}
+
+static u16 sub_802762C(void)
+{
+ return gUnknown_02022C98->unk4A[gUnknown_02022C98->multiplayerId][4] + FIRST_BERRY_INDEX;
+}
+
+static u8 sub_8027650(void)
+{
+ return gUnknown_02022C98->unk24;
+}
+
+static u8 *sub_8027660(u8 id)
+{
+ if (gReceivedRemoteLinkPlayers)
+ return gLinkPlayers[id].name;
+ else
+ return gUnknown_02022C98->unk31A0[id].name;
+}
+
+static u16 sub_80276A0(u8 arg0, u8 arg1)
+{
+ return gUnknown_02022C98->unk4A[arg0][arg1];
+}
+
+static u32 sub_80276C0(u8 arg0)
+{
+ u8 i;
+ u32 var, sum = 0;
+
+ for (i = 0; i < 3; i++)
+ sum += gUnknown_02022C98->unk4A[arg0][i] * gUnknown_082F7B24[i];
+
+ var = gUnknown_02022C98->unk4A[arg0][3] * gUnknown_082F7B24[3];
+ if (sum <= var)
+ return 0;
+ else
+ return sum - var;
+}
+
+static u32 sub_8027748(void)
+{
+ u8 i, count = gUnknown_02022C98->unk24;
+ u32 maxVar = sub_80276C0(0);
+
+ for (i = 1; i < count; i++)
+ {
+ u32 var = sub_80276C0(i);
+ if (var > maxVar)
+ maxVar = var;
+ }
+ return Min(maxVar, 999990);
+}
+
+static u32 sub_802778C(u8 arg0)
+{
+ u8 i, count = gUnknown_02022C98->unk24;
+ u16 maxVar = gUnknown_02022C98->unk4A[0][arg0];
+
+ for (i = 0; i < count; i++)
+ {
+ u16 var = gUnknown_02022C98->unk4A[i][arg0];
+ if (var > maxVar)
+ maxVar = var;
+ }
+ return maxVar;
+}
+
+static u32 sub_80277D0(u8 arg0)
+{
+ u32 vals[5], temp;
+ s16 r6 = TRUE;
+ u8 i, count = gUnknown_02022C98->unk24;
+
+ for (i = 0; i < count; i++)
+ vals[i] = temp = sub_80276C0(i);
+
+ while (r6)
+ {
+ r6 = FALSE;
+ for (i = 0; i < count - 1; i++)
+ {
+ if (vals[i] < vals[i + 1])
+ {
+ SWAP(vals[i], vals[i + 1], temp);
+ r6 = TRUE;
+ }
+ }
+ }
+
+ return vals[arg0];
+}
+
+static u32 sub_802784C(void)
+{
+ u8 i, r10 = 0, r8 = 0, r9 = 0, count = gUnknown_02022C98->unk24;
+
+ // Function called two times for some reason.
+ sub_8027748();
+ if (sub_8027748() == 0)
+ {
+ for (i = 0; i < count; i++)
+ {
+ gUnknown_02022C98->unk3308[i].unk0 = 4;
+ gUnknown_02022C98->unk3308[i].unk4 = 0;
+ }
+ }
+
+ for (i = 0; i < count; i++)
+ gUnknown_02022C98->unk3308[i].unk4 = Min(sub_80276C0(i), 999990);
+
+ do
+ {
+ u32 r6 = sub_80277D0(r10);
+ u8 r3 = r8;
+ for (i = 0; i < count; i++)
+ {
+ if (r6 == gUnknown_02022C98->unk3308[i].unk4)
+ {
+ gUnknown_02022C98->unk3308[i].unk0 = r3;
+ r8++;
+ r9++;
+ }
+ }
+ r10 = r8;
+ } while (r9 < count);
+
+ return 0;
+}
+
+static void sub_802793C(struct DodrioSubstruct_3308 *dst, u8 id)
+{
+ *dst = gUnknown_02022C98->unk3308[id];
+}
+
+// Unused function
+static u8 sub_802795C(u8 arg0)
+{
+ u8 i, ret = 0, count = gUnknown_02022C98->unk24;
+ u32 var, vars[5] = {0};
+
+ for (i = 0; i < count; i++)
+ vars[i] = sub_80276C0(i);
+
+ var = vars[arg0];
+ for (i = 0; i < 5; i++)
+ {
+ if (i != arg0 && var < vars[i])
+ ret++;
+ }
+
+ return ret;
+}
+
+static u8 sub_80279C8(void)
+{
+ u8 multiplayerId = gUnknown_02022C98->multiplayerId;
+ u16 itemId = sub_802762C();
+
+ if (sub_80276C0(multiplayerId) != sub_8027748())
+ return 3;
+ if (!CheckBagHasSpace(itemId, 1))
+ return 2;
+
+ AddBagItem(itemId, 1);
+ if (!CheckBagHasSpace(itemId, 1))
+ return 1;
+ return 0;
+}
+
+// Really? What next, u32 Add(u32 a)return a+1;?
+static u32 IncrementWithLimit(u32 a, u32 max)
+{
+ if (a < max)
+ return a + 1;
+ else
+ return max;
+}
+
+// Gamefreak pls, min(a, b) ((a) < (b) ? (a) : (b)) is a well-known macro
+static u32 Min(u32 a, u32 b)
+{
+ if (a < b)
+ return a;
+ else
+ return b;
+}
+
+static u8 sub_8027A48(u8 id)
+{
+ return gUnknown_02022C98->unk34[id];
+}
+
+void sub_8027A5C(void)
+{
+ int i;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES)
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_DODRIO)
+ {
+ gSpecialVar_Result = 1;
+ return;
+ }
+ }
+
+ gSpecialVar_Result = 0;
+}
+
+void sub_8027AAC(void)
+{
+ u8 taskId = CreateTask(sub_8027ACC, 0);
+ sub_8027ACC(taskId);
+}
+
+// Data related to printing saved results.
+static const struct WindowTemplate gUnknown_082F7B2C =
+{
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 1,
+ .width = 20,
+ .height = 11,
+ .paletteNum = 15,
+ .baseBlock = 0x1,
+};
+
+static const u8 *const gUnknown_082F7B34[3] = {gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers};
+static const u8 gUnknown_082F7B40[] = {4, 7, 4};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7B44[][2] = {{25}, {41}, {57}};
+static const u8 gUnknown_082F7B4A[][2] = {{25}, {41}, {73}};
+
+static void sub_8027ACC(u8 taskId)
+{
+ struct WindowTemplate window;
+ s32 i, width, widthCurr;
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ window = gUnknown_082F7B2C;
+ width = GetStringWidth(1, gText_BerryPickingRecords, 0);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082F7B34); i++)
+ {
+ widthCurr = GetStringWidth(1, gUnknown_082F7B34[i], 0) + 50;
+ if (widthCurr > width)
+ width = widthCurr;
+ }
+ width = (width + 7) / 8;
+ if (width & 1)
+ width++;
+ window.tilemapLeft = (30 - width) / 2;
+ window.width = width;
+ data[1] = AddWindow(&window);
+ sub_8027BEC(data[1], width);
+ CopyWindowToVram(data[1], 3);
+ data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ data[0]++;
+ break;
+ case 2:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ rbox_fill_rectangle(data[1]);
+ CopyWindowToVram(data[1], 1);
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(data[1]);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ break;
+ }
+}
+
+static void sub_8027BEC(u8 windowId, s32 width)
+{
+ s32 i, x, numWidth;
+ s32 results[3];
+ results[0] = gSaveBlock2Ptr->berryPick.berriesPicked;
+ results[1] = gSaveBlock2Ptr->berryPick.bestScore;
+ results[2] = gSaveBlock2Ptr->berryPick.berriesPickedInRow;
+
+ LoadUserWindowBorderGfx_(windowId, 0x21D, 0xD0);
+ DrawTextBorderOuter(windowId, 0x21D, 0xD);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized(windowId, 1, gText_BerryPickingRecords, GetStringCenterAlignXOffset(1, gText_BerryPickingRecords, width * 8), 1, TEXT_SPEED_FF, NULL);
+ for (i = 0; i < 3; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, results[i], STR_CONV_MODE_LEFT_ALIGN, gUnknown_082F7B40[i]);
+ numWidth = GetStringWidth(1, gStringVar1, -1);
+ AddTextPrinterParameterized(windowId, 1, gUnknown_082F7B34[i], 0, gUnknown_082F7B44[i][0], TEXT_SPEED_FF, NULL);
+ x = (width * 8) - numWidth;
+ AddTextPrinterParameterized(windowId, 1, gStringVar1, x, gUnknown_082F7B4A[i][0], TEXT_SPEED_FF, NULL);
+ }
+ PutWindowTilemap(windowId);
+}
+
+// Debug functions?
+static const u16 gUnknown_082F7B50[][4] =
+{
+ {9999, 0, 90, 9999},
+ {9999, 9999, 70, 9999},
+ {9999, 0, 9999, 0},
+ {9999, 9999, 60, 0},
+ {9999, 9999, 9999, 0},
+};
+
+static const u8 gUnknown_082F7B78[] = _("あいうえおかき");
+static const u8 gUnknown_082F7B80[] = _("ABCDEFG");
+static const u8 gUnknown_082F7B88[] = _("0123456");
+
+static const u8 *const gUnknown_082F7B90[] =
+{
+ gUnknown_082F7B78,
+ gUnknown_082F7B78,
+ gUnknown_082F7B78,
+ gUnknown_082F7B80,
+ gUnknown_082F7B88
+};
+
+static void sub_8027D20(void)
+{
+ gUnknown_02022C98->unk24 = GetLinkPlayerCount();
+}
+
+static void sub_8027D38(void)
+{
+ u8 i, playerId;
+
+ for (playerId = gUnknown_02022C98->unk24; playerId < 5; playerId++)
+ StringCopy(gLinkPlayers[playerId].name, gUnknown_082F7B90[playerId]);
+
+ gUnknown_02022C98->unk24 = 5;
+ for (i = 0; i < 4; i++)
+ {
+ for (playerId = 0; playerId < gUnknown_02022C98->unk24; playerId++)
+ gUnknown_02022C98->unk4A[playerId][i] = gUnknown_082F7B50[playerId][i];
+ }
+}
+
+struct UnkPacket1
+{
+ u8 id;
+ u8 ALIGNED(4) unk4;
+};
+
+static void sub_8027DD0(u32 arg0)
+{
+ struct UnkPacket1 packet;
+ packet.id = 1;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8027DFC(u32 arg0)
+{
+ struct UnkPacket1 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 1)
+ return packet->unk4;
+
+ return 0;
+}
+
+struct UnkPacket2
+{
+ u8 id;
+ u8 unk1_0:4;
+ u8 unk1_1:4;
+ u8 unk2_0:4;
+ u8 unk2_1:4;
+ u8 unk3_0:4;
+ u8 unk3_1:4;
+ u8 unk4_0:4;
+ u8 unk4_1:4;
+ u8 unk5_0:4;
+ u8 unk5_1:4;
+ u8 unk6_0:2;
+ u8 unk6_1:2;
+ u8 unk6_2:2;
+ u8 unk6_3:2;
+ u8 unk7_0:2;
+ u8 unk7_1:2;
+ u8 unk7_2:2;
+ u8 unk7_3:2;
+ u8 unk8_0:2;
+ u8 unk8_1:2;
+ u8 unk8_2:2;
+ u8 unk8_3:2;
+ u8 unk9_0:2;
+ u8 unk9_1:2;
+ u8 unk9_2:2;
+ u8 unk9_3:1;
+ u8 unk9_4:1;
+ u8 unkA_0:1;
+ u8 unkA_1:1;
+ u8 unkA_2:1;
+ u8 unkA_3:5;
+ u8 unkB_0:1;
+ u8 unkB_1:1;
+ u8 unkB_2:1;
+ u8 unkB_3:1;
+ u8 unkB_4:1;
+ u8 unkB_5:1;
+ u8 unkB_6:1;
+};
+
+#ifdef NONMATCHING
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8)
+{
+ struct UnkPacket2 packet;
+ struct DodrioSubstruct_31A0_14 *ptr = &arg0->unk14;
+
+ packet.id = 2;
+ packet.unk1_0 = ptr->unkB[0];
+ packet.unk1_1 = ptr->unkB[1];
+ packet.unk2_0 = ptr->unkB[2];
+ packet.unk2_1 = ptr->unkB[3];
+ packet.unk3_0 = ptr->unkB[4];
+ packet.unk3_1 = ptr->unkB[5];
+ packet.unk4_0 = ptr->unkB[6];
+ packet.unk4_1 = ptr->unkB[7];
+ packet.unk5_0 = ptr->unkB[8];
+ packet.unk5_1 = ptr->unkB[9];
+
+ packet.unk6_0 = ptr->unk0[0];
+ packet.unk6_1 = ptr->unk0[1];
+ packet.unk6_2 = ptr->unk0[2];
+ packet.unk6_3 = ptr->unk0[3];
+ packet.unk7_0 = ptr->unk0[4];
+ packet.unk7_1 = ptr->unk0[5];
+ packet.unk7_2 = ptr->unk0[6];
+ packet.unk7_3 = ptr->unk0[7];
+ packet.unk8_0 = ptr->unk0[8];
+ packet.unk8_1 = ptr->unk0[9];
+
+ packet.unk8_2 = arg1->unk0;
+ packet.unk8_3 = arg2->unk0;
+ packet.unk9_0 = arg3->unk0;
+ packet.unk9_1 = arg4->unk0;
+ packet.unk9_2 = arg5->unk0;
+
+ packet.unk9_3 = arg1->unk4;
+ packet.unk9_4 = arg2->unk4;
+ packet.unkA_0 = arg3->unk4;
+ packet.unkA_1 = arg4->unk4;
+ packet.unkA_2 = arg5->unk4;
+
+ packet.unkB_2 = arg1->unk8;
+ packet.unkB_3 = arg2->unk8;
+ packet.unkB_4 = arg3->unk8;
+ packet.unkB_5 = arg4->unk8;
+ packet.unkB_6 = arg5->unk8;
+
+ packet.unkA_3 = arg6;
+ packet.unkB_1 = arg7;
+ packet.unkB_0 = arg8;
+ sub_800FE50(&packet);
+}
+#else
+NAKED
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8)
+{
+ asm_unified(" push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ ldr r4, [sp, 0x48]\n\
+ lsls r4, 24\n\
+ str r4, [sp, 0x1C]\n\
+ movs r4, 0x14\n\
+ adds r4, r0\n\
+ mov r9, r4\n\
+ mov r5, sp\n\
+ movs r4, 0x2\n\
+ strb r4, [r5]\n\
+ mov r10, sp\n\
+ mov r5, r9\n\
+ ldrb r4, [r5, 0xB]\n\
+ movs r7, 0xF\n\
+ adds r5, r7, 0\n\
+ ands r5, r4\n\
+ mov r6, r10\n\
+ ldrb r6, [r6, 0x1]\n\
+ mov r8, r6\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x1]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0xC]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x1]\n\
+ ldrb r5, [r6, 0xD]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x2]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x2]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0xE]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x2]\n\
+ ldrb r5, [r6, 0xF]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x3]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x3]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x10]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x3]\n\
+ ldrb r5, [r6, 0x11]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x4]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x4]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x12]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x4]\n\
+ ldrb r4, [r6, 0x13]\n\
+ movs r6, 0xF\n\
+ ands r4, r6\n\
+ mov r6, r8\n\
+ ldrb r5, [r6, 0x5]\n\
+ movs r6, 0x10\n\
+ negs r6, r6\n\
+ ands r6, r5\n\
+ orrs r6, r4\n\
+ str r6, [sp, 0xC]\n\
+ mov r4, r8\n\
+ strb r6, [r4, 0x5]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x14]\n\
+ lsls r4, 4\n\
+ ldr r6, [sp, 0xC]\n\
+ ands r6, r7\n\
+ orrs r6, r4\n\
+ strb r6, [r5, 0x5]\n\
+ mov r7, sp\n\
+ movs r4, 0x3\n\
+ mov r8, r4\n\
+ ldrb r0, [r0, 0x14]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ ldrb r5, [r7, 0x6]\n\
+ movs r6, 0x4\n\
+ negs r6, r6\n\
+ mov r10, r6\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ strb r4, [r7, 0x6]\n\
+ mov r5, r9\n\
+ ldrb r0, [r5, 0x1]\n\
+ mov r6, r8\n\
+ ands r0, r6\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ strb r5, [r7, 0x6]\n\
+ mov r0, r9\n\
+ ldrb r4, [r0, 0x2]\n\
+ ands r4, r6\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ strb r0, [r7, 0x6]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x3]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x6]\n\
+ mov r4, r9\n\
+ ldrb r0, [r4, 0x4]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ ldrb r5, [r7, 0x7]\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ strb r4, [r7, 0x7]\n\
+ mov r6, r9\n\
+ ldrb r0, [r6, 0x5]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ strb r5, [r7, 0x7]\n\
+ ldrb r4, [r6, 0x6]\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ strb r0, [r7, 0x7]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x7]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x7]\n\
+ mov r8, sp\n\
+ mov r0, r9\n\
+ ldrb r4, [r0, 0x8]\n\
+ movs r7, 0x3\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ mov r4, r8\n\
+ ldrb r5, [r4, 0x8]\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x8]\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x9]\n\
+ adds r0, r7, 0\n\
+ ands r0, r5\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ mov r0, r8\n\
+ strb r5, [r0, 0x8]\n\
+ ldrb r0, [r1]\n\
+ adds r4, r7, 0\n\
+ ands r4, r0\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x8]\n\
+ mov r5, sp\n\
+ ldrb r4, [r2]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x8]\n\
+ ldrb r4, [r3]\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ ldrb r4, [r5, 0x9]\n\
+ mov r6, r10\n\
+ ands r6, r4\n\
+ orrs r6, r0\n\
+ mov r10, r6\n\
+ strb r6, [r5, 0x9]\n\
+ ldr r0, [sp, 0x40]\n\
+ ldrb r4, [r0]\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ lsls r0, 2\n\
+ movs r4, 0xD\n\
+ negs r4, r4\n\
+ ands r6, r4\n\
+ orrs r6, r0\n\
+ str r6, [sp, 0x10]\n\
+ strb r6, [r5, 0x9]\n\
+ mov r4, sp\n\
+ ldr r5, [sp, 0x44]\n\
+ ldrb r0, [r5]\n\
+ adds r6, r7, 0\n\
+ ands r6, r0\n\
+ lsls r0, r6, 4\n\
+ subs r7, 0x34\n\
+ ldr r5, [sp, 0x10]\n\
+ ands r7, r5\n\
+ orrs r7, r0\n\
+ strb r7, [r4, 0x9]\n\
+ mov r5, sp\n\
+ ldrb r0, [r1, 0x4]\n\
+ movs r6, 0x1\n\
+ mov r12, r6\n\
+ mov r4, r12\n\
+ ands r4, r0\n\
+ lsls r4, 6\n\
+ movs r0, 0x41\n\
+ negs r0, r0\n\
+ mov r10, r0\n\
+ ands r0, r7\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x9]\n\
+ ldrb r4, [r2, 0x4]\n\
+ lsls r4, 7\n\
+ movs r5, 0x7F\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x9]\n\
+ ldrb r4, [r3, 0x4]\n\
+ mov r0, r12\n\
+ ands r0, r4\n\
+ mov r5, r8\n\
+ ldrb r4, [r5, 0xA]\n\
+ movs r7, 0x2\n\
+ negs r7, r7\n\
+ adds r5, r7, 0\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ mov r6, r8\n\
+ strb r5, [r6, 0xA]\n\
+ mov r9, sp\n\
+ ldr r4, [sp, 0x40]\n\
+ ldrb r0, [r4, 0x4]\n\
+ mov r4, r12\n\
+ ands r4, r0\n\
+ lsls r4, 1\n\
+ movs r6, 0x3\n\
+ negs r6, r6\n\
+ mov r8, r6\n\
+ mov r0, r8\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r9\n\
+ strb r0, [r4, 0xA]\n\
+ ldr r6, [sp, 0x44]\n\
+ ldrb r5, [r6, 0x4]\n\
+ mov r4, r12\n\
+ ands r4, r5\n\
+ lsls r4, 2\n\
+ movs r5, 0x5\n\
+ negs r5, r5\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r9\n\
+ strb r0, [r4, 0xA]\n\
+ mov r4, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r1\n\
+ lsls r0, 2\n\
+ ldrb r1, [r4, 0xB]\n\
+ ands r5, r1\n\
+ orrs r5, r0\n\
+ strb r5, [r4, 0xB]\n\
+ ldrb r1, [r2, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r1\n\
+ lsls r0, 3\n\
+ movs r1, 0x9\n\
+ negs r1, r1\n\
+ ands r1, r5\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xB]\n\
+ ldrb r2, [r3, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r2\n\
+ lsls r0, 4\n\
+ movs r2, 0x11\n\
+ negs r2, r2\n\
+ ands r2, r1\n\
+ orrs r2, r0\n\
+ strb r2, [r4, 0xB]\n\
+ mov r3, sp\n\
+ ldr r5, [sp, 0x40]\n\
+ ldrb r0, [r5, 0x8]\n\
+ mov r1, r12\n\
+ ands r1, r0\n\
+ lsls r1, 5\n\
+ movs r0, 0x21\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0xB]\n\
+ mov r2, sp\n\
+ ldrb r1, [r6, 0x8]\n\
+ mov r6, r12\n\
+ ands r6, r1\n\
+ lsls r1, r6, 6\n\
+ mov r3, r10\n\
+ ands r0, r3\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0xB]\n\
+ ldr r4, [sp, 0x1C]\n\
+ lsrs r3, r4, 21\n\
+ ldrb r1, [r2, 0xA]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ orrs r0, r3\n\
+ strb r0, [r2, 0xA]\n\
+ mov r1, sp\n\
+ ldr r5, [sp, 0x4C]\n\
+ movs r6, 0x1\n\
+ ands r5, r6\n\
+ lsls r2, r5, 1\n\
+ ldrb r0, [r1, 0xB]\n\
+ mov r3, r8\n\
+ ands r3, r0\n\
+ orrs r3, r2\n\
+ mov r8, r3\n\
+ strb r3, [r1, 0xB]\n\
+ mov r0, sp\n\
+ ldr r4, [sp, 0x50]\n\
+ ands r4, r6\n\
+ mov r5, r8\n\
+ ands r5, r7\n\
+ orrs r5, r4\n\
+ strb r5, [r0, 0xB]\n\
+ bl sub_800FE50\n\
+ add sp, 0x20\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\
+");
+}
+#endif
+
+static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8)
+{
+ struct UnkPacket2 *packet;
+ struct DodrioSubstruct_31A0_14 *ptr = &arg0->unk14;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[0][1];
+ if (packet->id == 2)
+ {
+ ptr->unkB[0] = packet->unk1_0;
+ ptr->unkB[1] = packet->unk1_1;
+ ptr->unkB[2] = packet->unk2_0;
+ ptr->unkB[3] = packet->unk2_1;
+ ptr->unkB[4] = packet->unk3_0;
+ ptr->unkB[5] = packet->unk3_1;
+ ptr->unkB[6] = packet->unk4_0;
+ ptr->unkB[7] = packet->unk4_1;
+ ptr->unkB[8] = packet->unk5_0;
+ ptr->unkB[9] = packet->unk5_1;
+ ptr->unkB[10] = packet->unk1_0;
+
+ ptr->unk0[0] = packet->unk6_0;
+ ptr->unk0[1] = packet->unk6_1;
+ ptr->unk0[2] = packet->unk6_2;
+ ptr->unk0[3] = packet->unk6_3;
+ ptr->unk0[4] = packet->unk7_0;
+ ptr->unk0[5] = packet->unk7_1;
+ ptr->unk0[6] = packet->unk7_2;
+ ptr->unk0[7] = packet->unk7_3;
+ ptr->unk0[8] = packet->unk8_0;
+ ptr->unk0[9] = packet->unk8_1;
+ ptr->unk0[10] = packet->unk6_0;
+
+ arg1->unk0 = packet->unk8_2;
+ arg1->unk4 = packet->unk9_3;
+ arg1->unk8 = packet->unkB_2;
+
+ arg2->unk0 = packet->unk8_3;
+ arg2->unk4 = packet->unk9_4;
+ arg2->unk8 = packet->unkB_3;
+
+ arg3->unk0 = packet->unk9_0;
+ arg3->unk4 = packet->unkA_0;
+ arg3->unk8 = packet->unkB_4;
+
+ arg4->unk0 = packet->unk9_1;
+ arg4->unk4 = packet->unkA_1;
+ arg4->unk8 = packet->unkB_5;
+
+ arg5->unk0 = packet->unk9_2;
+ arg5->unk4 = packet->unkA_2;
+ arg5->unk8 = packet->unkB_6;
+
+ *arg6 = packet->unkA_3;
+ *arg7 = packet->unkB_1;
+ *arg8 = packet->unkB_0;
+ return 1;
+ }
+
+ return 0;
+}
+
+struct UnkPacket3
+{
+ u8 id;
+ u8 ALIGNED(4) unk4;
+};
+
+static void sub_80282EC(u8 arg0)
+{
+ struct UnkPacket3 packet;
+ packet.id = 3;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8028318(u32 arg0, u8 *arg1)
+{
+ struct UnkPacket3 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 3)
+ {
+ *arg1 = packet->unk4;
+ return 1;
+ }
+
+ return 0;
+}
+
+struct UnkPacket4
+{
+ u8 id;
+ u32 unk4;
+};
+
+static void sub_8028350(u32 arg0)
+{
+ struct UnkPacket4 packet;
+ packet.id = 4;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8028374(u32 arg0)
+{
+ struct UnkPacket4 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 4)
+ return packet->unk4;
+
+ return 0;
+}
+
+// Large chunk of data
+static const struct BgTemplate gUnknown_082F7BA4[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+// Unknown unreferenced data, feel free to remove.
+static const u32 sUnused[] = {255, 0};
+
+static const struct WindowTemplate gUnknown_082F7BBC[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 14,
+ .paletteNum = 13,
+ .baseBlock = 0x4B,
+ }
+};
+static const struct WindowTemplate gUnknown_082F7BCC =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 7,
+ .paletteNum = 13,
+ .baseBlock = 0x4B,
+};
+static const struct WindowTemplate gUnknown_082F7BD4[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 8,
+ .width = 19,
+ .height = 3,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 7,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 13,
+ .baseBlock = 0x4C,
+ }
+};
+static const struct WindowTemplate gUnknown_082F7BE4 =
+{
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 6,
+ .width = 22,
+ .height = 5,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+};
+static const struct WindowTemplate gUnknown_082F7BEC =
+{
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 8,
+ .width = 19,
+ .height = 3,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+};
+
+// This is an unused copy of the tables from the top of the file. Feel free to remove.
+static const u8 sDuplicateArray[] =
+{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0, 0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 2, 9,
+ 0, 0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0, 0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0, 0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0, 0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0, 0, 7,
+ 8, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0,
+ 1, 2, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 5, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6, 7, 2, 2, 3, 4, 0, 0, 0, 0, 0, 0,
+ 3, 4, 5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 0, 0, 0, 4, 5, 6, 6, 7, 8, 8, 9, 0, 0, 1, 2, 2, 3, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 1,
+ 2, 1, 2, 3, 2, 3, 0, 0, 0, 0, 4, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 0, 0, 0, 0, 9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9, 9,
+ 9, 9, 0, 0, 1, 1, 0, 9, 9, 9, 9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9, 9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9, 3, 3, 4, 4, 0, 0, 1, 1,
+ 2, 2, 3, 5, 0, 0, 0, 0, 4, 6, 0, 0, 0, 3, 5, 7, 0, 0, 2, 4, 6, 8, 0, 1, 3, 5, 6, 9
+};
+
+static const u16 gDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal",
+ "graphics/link_games/dodrioberry_bg2.gbapal");
+static const u16 gDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal");
+static const u16 gDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal");
+static const u16 gDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal");
+static const u16 gDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal");
+static const u32 gDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz");
+static const u16 gDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal");
+static const u32 gDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz");
+static const u32 gDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz");
+static const u32 gDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz");
+static const u32 gDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz");
+static const u32 gDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz");
+static const u32 gDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz");
+static const u32 gDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz");
+static const u32 gDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz");
+
+static const struct OamData sOamData_82FB1E0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1E8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1F0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1F8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FB200[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB208[] =
+{
+ ANIMCMD_FRAME(64, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB210[] =
+{
+ ANIMCMD_FRAME(128, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB218[] =
+{
+ ANIMCMD_FRAME(192, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB220[] =
+{
+ ANIMCMD_FRAME(256, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB228[] =
+{
+ sSpriteAnim_82FB200,
+ sSpriteAnim_82FB208,
+ sSpriteAnim_82FB210,
+ sSpriteAnim_82FB218,
+ sSpriteAnim_82FB220
+};
+
+static const union AnimCmd sSpriteAnim_82FB23C[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB244[] =
+{
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB24C[] =
+{
+ ANIMCMD_FRAME(8, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB254[] =
+{
+ sSpriteAnim_82FB23C,
+ sSpriteAnim_82FB244,
+ sSpriteAnim_82FB24C
+};
+
+static const union AnimCmd sSpriteAnim_82FB260[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB268[] =
+{
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB270[] =
+{
+ ANIMCMD_FRAME(8, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB278[] =
+{
+ ANIMCMD_FRAME(12, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB280[] =
+{
+ ANIMCMD_FRAME(16, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB288[] =
+{
+ ANIMCMD_FRAME(20, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB290[] =
+{
+ ANIMCMD_FRAME(24, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB298[] =
+{
+ ANIMCMD_FRAME(28, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB2A0[] =
+{
+ ANIMCMD_FRAME(32, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB2A8[] =
+{
+ sSpriteAnim_82FB260,
+ sSpriteAnim_82FB268,
+ sSpriteAnim_82FB270,
+ sSpriteAnim_82FB278,
+ sSpriteAnim_82FB280,
+ sSpriteAnim_82FB288,
+ sSpriteAnim_82FB290,
+ sSpriteAnim_82FB298,
+ sSpriteAnim_82FB2A0
+};
+
+static const union AnimCmd sSpriteAnim_82FB2CC[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB2D4[] =
+{
+ sSpriteAnim_82FB2CC
+};
+
+static void sub_80283A8(void)
+{
+ void *ptr = AllocZeroed(0x3000);
+ struct SpritePalette pal1 = {gDodrioBerryPkmnPal, 0};
+ struct SpritePalette pal2 = {gDodrioBerryShinyPal, 1};
+
+ LZ77UnCompWram(gDodrioBerryPkmnGfx, ptr);
+ // This check should be one line up.
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sheet = {ptr, 0x3000, 0};
+ LoadSpriteSheet(&sheet);
+ Free(ptr);
+ }
+ LoadSpritePalette(&pal1);
+ LoadSpritePalette(&pal2);
+}
+
+static void sub_8028408(struct DodrioSubstruct_318C *arg0, u8 arg1, u8 id, u8 arg3)
+{
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 0,
+ .paletteTag = arg0->isShiny,
+ .oam = &sOamData_82FB1E0,
+ .anims = sSpriteAnimTable_82FB228,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80284A8,
+ };
+
+ gUnknown_02022C9C[id] = AllocZeroed(4);
+ *gUnknown_02022C9C[id] = CreateSprite(&sprTemplate, sub_8028F14(arg1, arg3), 136, 3);
+ sub_8028654(TRUE, id);
+}
+
+static void sub_80284A8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ break;
+ case 1:
+ sub_802853C(sprite);
+ break;
+ case 2:
+ sub_80285AC(sprite);
+ break;
+ }
+}
+
+static void sub_80284CC(u8 unused)
+{
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[GetMultiplayerId()]];
+ sprite->data[0] = 1;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+}
+
+static void sub_8028504(u8 unused)
+{
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[GetMultiplayerId()]];
+ sprite->data[0] = 2;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+}
+
+static u32 sub_802853C(struct Sprite *sprite)
+{
+ s8 var;
+ u8 mod = (++sprite->data[1] / 2) % 4;
+
+ if (sprite->data[1] >= 3)
+ {
+ switch (mod)
+ {
+ default:
+ var = 1;
+ break;
+ case 1:
+ case 2:
+ var = -1;
+ break;
+ }
+
+ sprite->pos1.x += var;
+ if (++sprite->data[1] >= 40)
+ {
+ sprite->data[0] = 0;
+ sprite->pos1.x = sub_8028F14(0, sub_8027650());
+ }
+ }
+
+ return 0;
+}
+
+static u32 sub_80285AC(struct Sprite *sprite)
+{
+ u8 mod = (++sprite->data[1] / 13) % 4;
+
+ if (sprite->data[1] % 13 == 0 && mod != 0)
+ PlaySE(SE_W204);
+ if (sprite->data[1] >= 104)
+ {
+ sprite->data[0] = 0;
+ mod = 0;
+ }
+ sub_80286B4(GetMultiplayerId(), mod);
+ return 0;
+}
+
+static void sub_8028614(u8 count)
+{
+ u8 i;
+ for (i = 0; i < count; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[i]];
+ if (sprite != NULL)
+ DestroySpriteAndFreeResources(sprite);
+ // Memory should be freed here but is not.
+ }
+}
+
+static void sub_8028654(bool8 invisible, u8 id)
+{
+ gSprites[*gUnknown_02022C9C[id]].invisible = invisible;
+}
+
+static void sub_802868C(bool8 invisible, u8 count)
+{
+ u8 i;
+ for (i = 0; i < count; i++)
+ sub_8028654(invisible, i);
+}
+
+static void sub_80286B4(u8 id, u8 frameNum)
+{
+ StartSpriteAnim(&gSprites[*gUnknown_02022C9C[id]], frameNum);
+}
+
+static void nullsub_15(struct Sprite *sprite)
+{
+
+}
+
+static void sub_80286E4(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ sprite->pos1.x = (i * 16) + 48;
+ sprite->pos1.y = -8 - (i * 8);
+ gUnknown_02022CF4->unkC[i] = 0;
+ }
+}
+
+static void sub_8028734(void)
+{
+ u8 i;
+ void *ptr = AllocZeroed(0x180);
+ struct SpritePalette spPal = {gDodrioBerryStatusPal, 2};
+
+ LZ77UnCompWram(gDodrioBerryStatusGfx, ptr);
+ // This check should be one line up.
+ if (ptr != NULL)
+ {
+ struct SpriteSheet spSheet = {ptr, 0x180, 1};
+ struct SpriteTemplate spTemplate =
+ {
+ .tileTag = 1,
+ .paletteTag = 2,
+ .oam = &sOamData_82FB1E8,
+ .anims = sSpriteAnimTable_82FB254,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_15,
+ };
+
+ gUnknown_02022CF4 = AllocZeroed(sizeof(*gUnknown_02022CF4));
+ LoadSpriteSheet(&spSheet);
+ LoadSpritePalette(&spPal);
+ for (i = 0; i < 10; i++)
+ gUnknown_02022CF4->unk2A[i] = CreateSprite(&spTemplate, (i * 16) + 48, -8 - (i * 8), 0);
+ }
+
+ Free(ptr);
+}
+
+static void sub_80287E4(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ if (sprite != NULL)
+ DestroySpriteAndFreeResources(sprite);
+ }
+ FREE_AND_SET_NULL(gUnknown_02022CF4);
+}
+
+static bool32 sub_8028828(void)
+{
+ u8 i;
+ bool32 r3 = FALSE;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ gUnknown_02022CF4->unk16[i] = 2;
+ if (gUnknown_02022CF4->unkC[i] != 0 && sprite->pos1.y == 8)
+ continue;
+ r3 = TRUE;
+ if (sprite->pos1.y == 8)
+ {
+ if (gUnknown_02022CF4->unkC[i] != 0)
+ continue;
+ gUnknown_02022CF4->unkC[i] = 1;
+ gUnknown_02022CF4->unk16[i] = -16;
+ PlaySE(SE_TK_KASYA);
+ }
+ sprite->pos1.y += gUnknown_02022CF4->unk16[i];
+ }
+
+ if (r3)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void sub_80288D4(u8 arg0)
+{
+ u8 i;
+
+ if (arg0 > 10)
+ {
+ for (i = 0; i < 10; i++)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 1);
+ }
+ else
+ {
+ for (i = 0; i < 10 - arg0; i++)
+ {
+ if (arg0 > 6)
+ {
+ gUnknown_02022CF4->unk3E += arg0 - 6;
+ if (gUnknown_02022CF4->unk3E > 30)
+ gUnknown_02022CF4->unk3E = 0;
+ else if (gUnknown_02022CF4->unk3E > 10)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 2);
+ else
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 0);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 0);
+ }
+ }
+ for (; i < 10; i++)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 1);
+ }
+}
+
+static void sub_80289E8(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ gSprites[gUnknown_02022CF4->unk2A[i]].invisible = invisible;
+}
+
+// Unknown unused data, feel free to remove.
+static const u8 sUnused2[] = {0xD4, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0xFB, 0x0, 0x0};
+
+static void sub_8028A34(void)
+{
+ void *ptr = AllocZeroed(0x480);
+ struct SpritePalette sprPal = {gDodrioBerrySpritesPal, 3};
+
+ LZ77UnCompWram(gDodrioBerrySpritesGfx, ptr);
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sprSheet = {ptr, 0x480, 2};
+ LoadSpriteSheet(&sprSheet);
+ }
+
+ LoadSpritePalette(&sprPal);
+ Free(ptr);
+}
+
+static const s16 gUnknown_082FB31C[] = {88, 128, 168, 208};
+
+static void sub_8028A88(void)
+{
+ u8 i;
+ s16 x;
+
+ struct SpriteTemplate sprTemplate1 =
+ {
+ .tileTag = 2,
+ .paletteTag = 3,
+ .oam = &sOamData_82FB1F0,
+ .anims = sSpriteAnimTable_82FB2A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+ struct SpriteTemplate sprTemplate2 =
+ {
+ .tileTag = 2,
+ .paletteTag = 3,
+ .oam = &sOamData_82FB1E8,
+ .anims = sSpriteAnimTable_82FB2A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ for (i = 0; i < 11; i++)
+ {
+ gUnknown_02022CB8[i] = AllocZeroed(4);
+ x = i * 16;
+ *gUnknown_02022CB8[i] = CreateSprite(&sprTemplate1, x + (i * 8), 8, 1);
+ sub_8028BF8(i, TRUE);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_02022CE4[i] = AllocZeroed(4);
+ if (i == 3)
+ *gUnknown_02022CE4[i] = CreateSprite(&sprTemplate2, gUnknown_082FB31C[i], 49, 0);
+ else
+ *gUnknown_02022CE4[i] = CreateSprite(&sprTemplate2, gUnknown_082FB31C[i], 52, 0);
+ StartSpriteAnim(&gSprites[*gUnknown_02022CE4[i]], i);
+ }
+
+ sub_8028C30(TRUE);
+}
+
+static void sub_8028B80(void)
+{
+ struct Sprite *sprite;
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ {
+ sprite = &gSprites[*gUnknown_02022CB8[i]];
+ if (sprite != NULL)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CB8[i]);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ sprite = &gSprites[*gUnknown_02022CE4[i]];
+ if (sprite != NULL)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CE4[i]);
+ }
+}
+
+static void sub_8028BF8(u8 id, bool8 invisible)
+{
+ gSprites[*gUnknown_02022CB8[id]].invisible = invisible;
+}
+
+static void sub_8028C30(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ gSprites[*gUnknown_02022CE4[i]].invisible = invisible;
+}
+
+static void sub_8028C7C(u8 id, u8 y)
+{
+ gSprites[*gUnknown_02022CB8[id]].pos1.y = y * 8;
+}
+
+static void sub_8028CA4(u16 id, u8 frameNum)
+{
+ StartSpriteAnim(&gSprites[*gUnknown_02022CB8[id]], frameNum);
+}
+
+// Unused
+static void sub_8028CD0(u8 spriteId)
+{
+ gSprites[spriteId].pos1.x = 20 * spriteId + 50;
+ gSprites[spriteId].pos1.y = 50;
+}
+
+// Gamefreak made a mistake there and goes out of bounds for the data array as it holds 8 elements
+// in turn overwriting sprite's subpriority and subsprites fields.
+#if defined(NONMATCHING) || MODERN
+ #define sKeepPosX data[1]
+#else
+ #define sKeepPosX data[10]
+#endif // NONMATCHING
+
+static void sub_8028CF4(struct Sprite *sprite)
+{
+ u8 i;
+ static const u8 array[] = {30, 20};
+
+ if (sprite->sKeepPosX != TRUE)
+ {
+ for (i = 0; i < 2; i++)
+ {
+ if (++gUnknown_02022CB0[i][1] > array[i])
+ {
+ sprite->pos1.x--;
+ gUnknown_02022CB0[i][1] = 0;
+ }
+ }
+ }
+}
+
+static const s16 gUnknown_082FB356[][2] = {{230, 55}, {30, 74}};
+
+static void sub_8028D44(void)
+{
+ u8 i;
+ void *ptr = AllocZeroed(0x400);
+ struct SpritePalette sprPal = {gDodrioBerryPlatformPal, 6};
+
+ LZ77UnCompWram(gDodrioBerryPlatformGfx, ptr);
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sprSheet = {ptr, 0x400, 5};
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 5,
+ .paletteTag = 6,
+ .oam = &sOamData_82FB1F8,
+ .anims = sSpriteAnimTable_82FB2D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8028CF4,
+ };
+
+ LoadSpriteSheet(&sprSheet);
+ LoadSpritePalette(&sprPal);
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02022CB0[i] = AllocZeroed(4);
+ *gUnknown_02022CB0[i] = CreateSprite(&sprTemplate, gUnknown_082FB356[i][0], gUnknown_082FB356[i][1], 4);
+ }
+ }
+
+ Free(ptr);
+}
+
+static void sub_8028DFC(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ sprite->sKeepPosX = TRUE;
+ sprite->pos1.x = gUnknown_082FB356[i][0];
+ sprite->pos1.y = gUnknown_082FB356[i][1];
+ }
+}
+
+static void sub_8028E4C(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ sprite->sKeepPosX = FALSE;
+ }
+}
+
+static void sub_8028E84(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ if (sprite)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CB0[i]);
+ }
+}
+
+static void sub_8028EC8(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ gSprites[*gUnknown_02022CB0[i]].invisible = invisible;
+}
+
+#undef sKeepPosX
+
+static s16 sub_8028F14(u8 arg0, u8 arg1)
+{
+ s16 x = 0;
+ switch (arg1)
+ {
+ case 1:
+ x = 15;
+ break;
+ case 2:
+ switch (arg0)
+ {
+ case 0: x = 12; break;
+ case 1: x = 18; break;
+ }
+ break;
+ case 3:
+ switch (arg0)
+ {
+ case 0: x = 15; break;
+ case 1: x = 21; break;
+ case 2: x = 9; break;
+ }
+ break;
+ case 4:
+ switch (arg0)
{
- gUnknown_02022C98->unk_0120 = 1;
- if (++gUnknown_02022C98->unk_00DC[i] >= 20)
+ case 0: x = 12; break;
+ case 1: x = 18; break;
+ case 2: x = 24; break;
+ case 3: x = 6; break;
+ }
+ break;
+ case 5:
+ switch (arg0)
+ {
+ case 0: x = 15; break;
+ case 1: x = 21; break;
+ case 2: x = 27; break;
+ case 3: x = 3; break;
+ case 4: x = 9; break;
+ }
+ break;
+ }
+
+ return x * 8;
+}
+
+static void sub_8028FCC(void)
+{
+ u8 i;
+ for (i = 0; i < 11; i++)
+ {
+ sub_8028BF8(i, TRUE);
+ sub_8028C7C(i, 1);
+ }
+ sub_80289E8(FALSE);
+}
+
+static void sub_8028FF8(u8 frameId)
+{
+ LoadBgTiles(0, GetWindowFrameTilesPal(frameId)->tiles, 0x120, 1);
+ LoadPalette(GetWindowFrameTilesPal(frameId)->pal, 0xA0, 0x20);
+}
+
+static void sub_802902C(void)
+{
+ LoadUserWindowBorderGfx_(0, 0xA, 0xB0);
+}
+
+static void sub_802903C(void)
+{
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->unk3018 = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+}
+
+static void sub_8029074(const struct WindowTemplate *winTempl)
+{
+ u8 pal = 0xA;
+
+ FillBgTilemapBufferRect(0, 1, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 2, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 3, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 4, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 6, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 7, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 8, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 9, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+}
+
+static void sub_8029174(const struct WindowTemplate *winTempl)
+{
+ u8 pal = 0xB;
+
+ FillBgTilemapBufferRect(0, 10, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 11, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 12, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 13, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 15, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 16, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 17, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 18, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+}
+
+static void sub_8029274(struct DodrioSubstruct_0160 *ptr)
+{
+ gUnknown_02022CF8 = ptr;
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->unk3018 = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ gUnknown_02022CF8->unk3004 = CreateTask(sub_8029314, 3);
+ sub_802A72C(sub_8029338);
+}
+
+static void sub_80292D4(void)
+{
+ FreeAllWindowBuffers();
+}
+
+// Data used by functions below.
+struct WinCoords
+{
+ u8 left;
+ u8 top;
+};
+
+static const u8 gUnknown_082FB380[][3] =
+{
+ {1, 2, 3},
+ {1, 4, 5},
+ {1, 8, 9},
+ {1, 6, 7},
+};
+
+static const struct WinCoords gUnknown_082FB38C[] = {{12, 6}};
+static const struct WinCoords gUnknown_082FB390[] = {{9, 10}, {15, 6}};
+static const struct WinCoords gUnknown_082FB398[] = {{12, 6}, {18, 10}, {6, 10}};
+static const struct WinCoords gUnknown_082FB3A4[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}};
+static const struct WinCoords gUnknown_082FB3B4[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}};
+
+static const struct WinCoords *const gUnknown_082FB3C8[] =
+{
+ gUnknown_082FB38C,
+ gUnknown_082FB390,
+ gUnknown_082FB398,
+ gUnknown_082FB3A4,
+ gUnknown_082FB3B4,
+};
+
+static const u8 *const gUnknown_082FB3DC[] =
+{
+ gText_1Colon,
+ gText_2Colon,
+ gText_3Colon,
+ gText_4Colon,
+ gText_5Colon,
+};
+
+static const u16 gUnknown_082FB3F0[] = {92, 132, 172, 212};
+static const u16 gUnknown_082FB3F8[] = {33, 49, 65, 81, 97};
+static const u16 gUnknown_082FB402[] = {17, 33, 49, 65, 81};
+
+struct
+{
+ u8 id;
+ void (*func)(void);
+} const gUnknown_082FB40C[] =
+{
+ {0, sub_8029338},
+ {1, sub_8029440},
+ {2, sub_802988C},
+ {3, sub_802A010},
+ {4, sub_802A380},
+ {5, sub_802A454},
+ {6, sub_802A534},
+ {7, sub_802A588},
+ {8, sub_802A6FC},
+ {9, nullsub_16},
+};
+
+static void sub_80292E0(u8 arg0)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ if (gUnknown_082FB40C[i].id == arg0)
+ sub_802A72C(gUnknown_082FB40C[i].func);
+ }
+}
+
+static void sub_8029314(u8 taskId)
+{
+ if (!gUnknown_02022CF8->finished)
+ sub_802A75C()();
+}
+
+static void sub_8029338(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ sub_802A7A8();
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ if (sub_802A8E8() == TRUE)
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ CopyToBgTilemapBuffer(3, gDodrioBerryBgTilemap1, 0, 0);
+ CopyToBgTilemapBuffer(1, gDodrioBerryBgTilemap2Left, 0, 0);
+ CopyToBgTilemapBuffer(2, gDodrioBerryBgTilemap2Right, 0, 0);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 4:
+ sub_8028FF8(gSaveBlock2Ptr->optionsWindowFrameType);
+ sub_802902C();
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_8029440(void)
+{
+ u8 i, playersCount, id, colorsId, *name;
+ u32 left;
+ struct WindowTemplate window;
+ const struct WinCoords *ptr;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ playersCount = sub_8027650();
+ ptr = gUnknown_082FB3C8[playersCount - 1];
+ window.bg = 0;
+ window.width = 7;
+ window.height = 2;
+ window.paletteNum = 0xD;
+ window.baseBlock = 0x13;
+ for (i = 0; i < playersCount; ptr++, i++)
+ {
+ colorsId = 0;
+ id = sub_8027A48(i);
+ left = (56 - GetStringWidth(1, sub_8027660(id), -1)) / 2u;
+ window.tilemapLeft = ptr->left;
+ window.tilemapTop = ptr->top;
+ gUnknown_02022CF8->unk3008[i] = AddWindow(&window);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[i], PIXEL_FILL(1));
+ if (id == GetMultiplayerId())
+ colorsId = 2;
+ name = sub_8027660(id);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[i], 1, left, 1, gUnknown_082FB380[colorsId], -1, name);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[i], 2);
+ window.baseBlock += 0xE;
+ sub_8029174(&window);
+ }
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ playersCount = sub_8027650();
+ for (i = 0; i < playersCount; i++)
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ if (++gUnknown_02022CF8->state > 180)
+ {
+ playersCount = sub_8027650();
+ for (i = 0; i < playersCount; i++)
{
- gUnknown_02022C98->unk_31A0[gUnknown_02022C98->unk_00B8[i]].unk_30 = 0;
- gUnknown_02022C98->unk_00DC[i] = 0;
- gUnknown_02022C98->unk_00D0[i] = 0;
- gUnknown_02022C98->unk_00C4[i] = 0;
- ptr->unk_32CC.unk_14.unk_B[i] = 1;
- ptr->unk_32CC.unk_14.unk_0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[i]);
}
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
}
- else if (gUnknown_02022C98->unk_00C4[i] == 3)
+ break;
+ }
+}
+
+static void sub_80296A8(u8 playersCount_)
+{
+ u8 i, r8 = 0, r6 = 0;
+ u8 playersCount = playersCount_; // Pointless variable, I know, but it's needed to match.
+ u8 *name;
+ u32 x, numWidth;
+ u8 numString[32];
+ u8 array[5] = {0, 1, 2, 3, 4};
+ struct DodrioSubstruct_3308 temp, structArray[5];
+
+ for (i = 0; i < playersCount; i++)
+ {
+ array[i] = i;
+ sub_802793C(&temp, i);
+ structArray[i] = temp;
+ }
+
+ if (sub_8027748() != 0)
+ {
+ do
{
- if (++gUnknown_02022C98->unk_00DC[i] >= 20)
+ for (i = 0; i < playersCount; i++)
{
- if (gUnknown_02022C98->unk_0040 < 10)
+ if (structArray[i].unk0 == r8)
{
- gUnknown_02022C98->unk_00DC[i] = 0;
- gUnknown_02022C98->unk_00D0[i] = 0;
- gUnknown_02022C98->unk_00C4[i] = 0;
- ptr->unk_32CC.unk_14.unk_B[i] = 1;
- gUnknown_02022C98->unk_00E8[i] = ptr->unk_32CC.unk_14.unk_0[i];
- ptr->unk_32CC.unk_14.unk_0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ array[r6] = i;
+ r6++;
}
}
+ r8 = r6;
+ } while (r6 < playersCount);
+ }
+
+ for (i = 0; i < playersCount; i++)
+ {
+ if (structArray[i].unk4 == 0)
+ structArray[i].unk0 = playersCount - 1;
+ }
+
+ x = 216 - GetStringWidth(1, gText_SpacePoints, 0);
+ for (i = 0; i < playersCount; i++)
+ {
+ u8 colorsId = 0;
+ u8 id = array[i];
+ u32 points = structArray[id].unk4;
+
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gUnknown_082FB3DC[structArray[id].unk0], 8, gUnknown_082FB402[i], -1, NULL);
+ if (id == GetMultiplayerId())
+ colorsId = 2;
+ name = sub_8027660(id);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, 28, gUnknown_082FB402[i], gUnknown_082FB380[colorsId], -1, name);
+ ConvertIntToDecimalStringN(numString, points, STR_CONV_MODE_LEFT_ALIGN, 7);
+ numWidth = GetStringWidth(1, numString, -1);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, numString, x - numWidth, gUnknown_082FB402[i], -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SpacePoints, x, gUnknown_082FB402[i], -1, NULL);
+ }
+}
+
+static void sub_802988C(void)
+{
+ u8 i, j, itemGiveRet, playersCount = sub_8027650();
+ u8 *name;
+ u32 strWidth, x;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ sub_802784C();
+ gUnknown_02022CF8->unk301C = 0;
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BBC[0]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BBC[1]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BBC[0]);
+ sub_8029174(&gUnknown_082F7BBC[1]);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_BerryPickingResults, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_BerryPickingResults, x, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_10P30P50P50P, 68, 17, -1, NULL);
+ for (i = 0; i < playersCount; i++)
+ {
+ u8 colorsId = 0;
+ if (i == GetMultiplayerId())
+ colorsId = 2;
+
+ name = sub_8027660(i);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, 0, gUnknown_082FB3F8[i], gUnknown_082FB380[colorsId], -1, name);
+ for (j = 0; j < 4; j++)
+ {
+ u32 width;
+ u16 result1 = Min(sub_80276A0(i, j), 9999);
+ u16 result2 = Min(sub_802778C(j), 9999);
+
+ ConvertIntToDecimalStringN(gStringVar4, result1, STR_CONV_MODE_LEFT_ALIGN, 4);
+ width = GetStringWidth(1, gStringVar4, -1);
+ if (result2 == result1 && result2 != 0)
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, gUnknown_082FB3F0[j] - width, gUnknown_082FB3F8[i], gUnknown_082FB380[1], -1, gStringVar4);
+ else
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, gUnknown_082FB3F0[j] - width, gUnknown_082FB3F8[i], -1, NULL);
+ }
+ }
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ sub_8028C30(FALSE);
+ gUnknown_02022CF8->state++;
+ break;
+ case 4:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ sub_8028C30(TRUE);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ case 5:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_AnnouncingRankings, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_AnnouncingRankings, x, 1, -1, NULL);
+ gUnknown_02022CF8->state++;
+ break;
+ case 6:
+ sub_80296A8(playersCount);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 7:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 8:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ if (sub_8027748() < 3000)
+ {
+ gUnknown_02022CF8->state = 127;
+ }
+ else
+ {
+ StopMapMusic();
+ gUnknown_02022CF8->state++;
+ }
+
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 5, 30, 15);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BCC);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BCC);
+ }
+ break;
+ case 9:
+ PlayNewMapMusic(MUS_FANFA1);
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_AnnouncingPrizes, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_AnnouncingPrizes, x, 1, -1, NULL);
+ DynamicPlaceholderTextUtil_Reset();
+ CopyItemName(sub_802762C(), gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_FirstPlacePrize);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, 0, 1, -1, NULL);
+ itemGiveRet = sub_80279C8();
+ if (itemGiveRet != 0 && itemGiveRet != 3)
+ {
+ DynamicPlaceholderTextUtil_Reset();
+ CopyItemName(sub_802762C(), gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ if (itemGiveRet == 2)
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_CantHoldAnyMore);
+ else if (itemGiveRet == 1)
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_FilledStorageSpace);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, 0, 41, -1, NULL);
+ }
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 10:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ FadeOutAndFadeInNewMapMusic(MUS_RG_WIN_YASEI, 20, 10);
+ gUnknown_02022CF8->state++;
+ break;
+ case 11:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A010(void)
+{
+ u8 y;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BD4[0]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BD4[1]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BD4[0]);
+ sub_8029074(&gUnknown_082F7BD4[1]);
+ gUnknown_02022CF8->state++;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_WantToPlayAgain, 0, 5, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_Yes, 8, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_No, 8, 17, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SelectorArrow2, 0, 1, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ y = gUnknown_02022CF8->unk3020;
+ if (y == 0)
+ y = 1;
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_Yes, 8, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_No, 8, 17, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SelectorArrow2, 0, ((y - 1) * 16) + 1, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 3);
+ // Increment state only if A or B button have been pressed.
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_02022CF8->unk3020 == 0)
+ gUnknown_02022CF8->unk3020 = 1;
+ gUnknown_02022CF8->state++;
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ switch (gUnknown_02022CF8->unk3020)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3020 = 2;
+ break;
+ case 1:
+ gUnknown_02022CF8->unk3020 = 2;
+ break;
+ case 2:
+ gUnknown_02022CF8->unk3020 = 1;
+ break;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_02022CF8->unk3020 = 2;
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ gUnknown_02022CF8->unk3024 = gUnknown_02022CF8->unk3020;
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A380(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ DrawDialogueFrame(0, FALSE);
+ AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ CopyWindowToVram(0, 3);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CreateTask(sub_8153688, 0);
+ gUnknown_02022CF8->state++;
}
+ break;
+ case 3:
+ if (!FuncIsActiveTask(sub_8153688))
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
}
}
+
+static void sub_802A454(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BEC);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ sub_8029174(&gUnknown_082F7BEC);
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_CommunicationStandby3, 0, 5, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A534(void)
+{
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+}
+
+static void sub_802A588(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BE4);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ sub_8029174(&gUnknown_082F7BE4);
+ gUnknown_02022CF8->state++;
+ gUnknown_02022CF8->unk301C = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_SomeoneDroppedOut, 0, 5, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ if (++gUnknown_02022CF8->unk301C >= 120)
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->unk3024 = 5;
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A6FC(void)
+{
+ DestroyTask(gUnknown_02022CF8->unk3004);
+ gUnknown_02022CF8->finished = TRUE;
+}
+
+static void nullsub_16(void)
+{
+
+}
+
+static void sub_802A72C(void (*func)(void))
+{
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->unk3028 = func;
+}
+
+static void (*sub_802A75C(void))(void)
+{
+ return gUnknown_02022CF8->unk3028;
+}
+
+static bool32 sub_802A770(void)
+{
+ if (gUnknown_02022CF8->finished == TRUE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static u8 sub_802A794(void)
+{
+ return gUnknown_02022CF8->unk3024;
+}
+
+static void sub_802A7A8(void)
+{
+ DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3,(void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_082F7BA4, ARRAY_COUNT(gUnknown_082F7BA4));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ InitStandardTextBoxWindows();
+ sub_8197200();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetBgTilemapBuffer(3, gUnknown_02022CF8->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, gUnknown_02022CF8->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, gUnknown_02022CF8->tilemapBuffers[2]);
+}
+
+static bool32 sub_802A8E8(void)
+{
+ switch (gUnknown_02022CF8->unk3018)
+ {
+ case 0:
+ LoadPalette(gDodrioBerryBgPal1, 0, sizeof(gDodrioBerryBgPal1));
+ break;
+ case 1:
+ reset_temp_tile_data_buffers();
+ break;
+ case 2:
+ decompress_and_copy_tile_data_to_vram(3, gDodrioBerryBgGfx1, 0, 0, 0);
+ break;
+ case 3:
+ decompress_and_copy_tile_data_to_vram(1, gDodrioBerryBgGfx2, 0, 0, 0);
+ break;
+ case 4:
+ if (free_temp_tile_data_buffers_if_possible() == TRUE)
+ return FALSE;
+ break;
+ case 5:
+ LoadPalette(stdpal_get(3), 0xD0, 0x20);
+ break;
+ default:
+ gUnknown_02022CF8->unk3018 = 0;
+ return TRUE;
+ }
+
+ gUnknown_02022CF8->unk3018++;
+ return FALSE;
+}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index b322fc1c7..6d62cdc4a 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -336,14 +336,9 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
{
- #ifdef NONMATCHING
- u8 r5 = direction;
- u8 r6 = direction;
- #else
- u8 r5 = direction;
- register u8 r6 asm("r6") = direction;
- #endif
- //a very bad HACK
+ u8 r5 = direction;
+ u8 r6 = direction;
+ r6++; r6--;
if (EventObjectIsMovementOverridden(playerEventObj)
&& !EventObjectClearHeldMovementIfFinished(playerEventObj))
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index c002f700f..a2457307b 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -219,8 +219,8 @@ static void sub_8137404(u8 taskId)
static void sub_8137420(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
LoadPalette(gUnknown_085B28A0, 0xE0, 0x10);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
@@ -304,8 +304,8 @@ static void sub_81375BC(u8 taskId)
static void sub_81375D8(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index 5c1fb59f7..d2d89babf 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -6,6 +6,7 @@
#include "battle.h"
#include "gym_leader_rematch.h"
#include "match_call.h"
+#include "constants/region_map_sections.h"
// Static type declarations
@@ -17,13 +18,13 @@ typedef struct MatchCallTextDataStruct {
struct MatchCallStructCommon {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
};
struct MatchCallStruct0 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
const u8 *desc;
const u8 *name;
@@ -32,7 +33,7 @@ struct MatchCallStruct0 {
struct MatchCallStruct1 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -42,12 +43,12 @@ struct MatchCallStruct1 {
struct MatchCallSubstruct2 {
u16 flag;
- u8 v2;
+ u8 mapSec;
};
struct MatchCallStruct2 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -57,7 +58,7 @@ struct MatchCallStruct2 {
struct MatchCallStruct3 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
const u8 *desc;
const u8 *name;
@@ -75,7 +76,7 @@ struct MatchCallStruct4 {
// Note: Type1 and Type5 have identical struct layouts.
struct MatchCallStruct5 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -110,11 +111,11 @@ static bool32 MatchCallGetFlag_Type2(match_call_t);
static bool32 MatchCallGetFlag_Type3(match_call_t);
static bool32 MatchCallGetFlag_Type4(match_call_t);
-static u8 sub_81D1714(match_call_t);
-static u8 sub_81D1718(match_call_t);
-static u8 sub_81D171C(match_call_t);
-static u8 sub_81D1750(match_call_t);
-static u8 sub_81D1754(match_call_t);
+static u8 MatchCallGetMapSec_Type0(match_call_t);
+static u8 MatchCallGetMapSec_Type1(match_call_t);
+static u8 MatchCallGetMapSec_Type2(match_call_t);
+static u8 MatchCallGetMapSec_Type3(match_call_t);
+static u8 MatchCallGetMapSec_Type4(match_call_t);
static bool32 MatchCall_IsRematchable_Type0(match_call_t);
static bool32 MatchCall_IsRematchable_Type1(match_call_t);
@@ -325,7 +326,7 @@ static const match_call_text_data_t sMrStoneTextScripts[] = {
static const struct MatchCallStruct0 sMrStoneMatchCallHeader =
{
.type = 0,
- .v1 = 10,
+ .mapSec = MAPSEC_RUSTBORO_CITY,
.flag = 0xFFFF,
.desc = gMrStoneMatchCallDesc,
.name = gMrStoneMatchCallName,
@@ -348,7 +349,7 @@ static const match_call_text_data_t sNormanTextScripts[] = {
static const struct MatchCallStruct5 sNormanMatchCallHeader =
{
.type = 5,
- .v1 = 7,
+ .mapSec = MAPSEC_PETALBURG_CITY,
.flag = FLAG_ENABLE_NORMAN_MATCH_CALL,
.rematchTableIdx = REMATCH_NORMAN,
.desc = gNormanMatchCallDesc,
@@ -359,7 +360,7 @@ static const struct MatchCallStruct5 sNormanMatchCallHeader =
static const struct MatchCallStruct3 sProfBirchMatchCallHeader =
{
.type = 3,
- .v1 = 0,
+ .mapSec = 0,
.flag = FLAG_ENABLE_PROF_BIRCH_MATCH_CALL,
.desc = gProfBirchMatchCallDesc,
.name = gProfBirchMatchCallName
@@ -375,7 +376,7 @@ static const match_call_text_data_t sMomTextScripts[] = {
static const struct MatchCallStruct0 sMomMatchCallHeader =
{
.type = 0,
- .v1 = 0,
+ .mapSec = MAPSEC_LITTLEROOT_TOWN,
.flag = FLAG_ENABLE_MOM_MATCH_CALL,
.desc = gMomMatchCallDesc,
.name = gMomMatchCallName,
@@ -396,7 +397,7 @@ static const match_call_text_data_t sStevenTextScripts[] = {
static const struct MatchCallStruct0 sStevenMatchCallHeader =
{
.type = 0,
- .v1 = 0xD5,
+ .mapSec = MAPSEC_NONE,
.flag = FLAG_REGISTERED_STEVEN_POKENAV,
.desc = gStevenMatchCallDesc,
.name = gStevenMatchCallName,
@@ -473,16 +474,16 @@ static const match_call_text_data_t sWallyTextScripts[] = {
};
const struct MatchCallSubstruct2 sWallyAdditionalData[] = {
- { FLAG_HIDE_MAUVILLE_CITY_WALLY, 0x05 },
- { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xD5 },
- { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, 0x46 },
- { 0xFFFF, 0xD5 }
+ { FLAG_HIDE_MAUVILLE_CITY_WALLY, MAPSEC_VERDANTURF_TOWN },
+ { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, MAPSEC_NONE },
+ { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, MAPSEC_VICTORY_ROAD },
+ { 0xFFFF, MAPSEC_NONE }
};
static const struct MatchCallStruct2 sWallyMatchCallHeader =
{
.type = 2,
- .v1 = 0,
+ .mapSec = 0,
.flag = FLAG_ENABLE_WALLY_MATCH_CALL,
.rematchTableIdx = REMATCH_WALLY_3,
.desc = gWallyMatchCallDesc,
@@ -505,7 +506,7 @@ static const match_call_text_data_t sScottTextScripts[] = {
static const struct MatchCallStruct0 sScottMatchCallHeader =
{
.type = 0,
- .v1 = 0xD5,
+ .mapSec = MAPSEC_NONE,
.flag = FLAG_ENABLE_SCOTT_MATCH_CALL,
.desc = gScottMatchCallDesc,
.name = gScottMatchCallName,
@@ -523,7 +524,7 @@ static const match_call_text_data_t sRoxanneTextScripts[] = {
static const struct MatchCallStruct5 sRoxanneMatchCallHeader =
{
.type = 5,
- .v1 = 10,
+ .mapSec = MAPSEC_RUSTBORO_CITY,
.flag = FLAG_ENABLE_ROXANNE_MATCH_CALL,
.rematchTableIdx = REMATCH_ROXANNE,
.desc = gRoxanneMatchCallDesc,
@@ -542,7 +543,7 @@ static const match_call_text_data_t sBrawlyTextScripts[] = {
static const struct MatchCallStruct5 sBrawlyMatchCallHeader =
{
.type = 5,
- .v1 = 2,
+ .mapSec = MAPSEC_DEWFORD_TOWN,
.flag = FLAG_ENABLE_BRAWLY_MATCH_CALL,
.rematchTableIdx = REMATCH_BRAWLY,
.desc = gBrawlyMatchCallDesc,
@@ -561,7 +562,7 @@ static const match_call_text_data_t sWattsonTextScripts[] = {
static const struct MatchCallStruct5 sWattsonMatchCallHeader =
{
.type = 5,
- .v1 = 9,
+ .mapSec = MAPSEC_MAUVILLE_CITY,
.flag = FLAG_ENABLE_WATTSON_MATCH_CALL,
.rematchTableIdx = REMATCH_WATTSON,
.desc = gWattsonMatchCallDesc,
@@ -580,7 +581,7 @@ static const match_call_text_data_t sFlanneryTextScripts[] = {
static const struct MatchCallStruct5 sFlanneryMatchCallHeader =
{
.type = 5,
- .v1 = 3,
+ .mapSec = MAPSEC_LAVARIDGE_TOWN,
.flag = FLAG_ENABLE_FLANNERY_MATCH_CALL,
.rematchTableIdx = REMATCH_FLANNERY,
.desc = gFlanneryMatchCallDesc,
@@ -599,7 +600,7 @@ static const match_call_text_data_t sWinonaTextScripts[] = {
static const struct MatchCallStruct5 sWinonaMatchCallHeader =
{
.type = 5,
- .v1 = 11,
+ .mapSec = MAPSEC_FORTREE_CITY,
.flag = FLAG_ENABLE_WINONA_MATCH_CALL,
.rematchTableIdx = REMATCH_WINONA,
.desc = gWinonaMatchCallDesc,
@@ -618,7 +619,7 @@ static const match_call_text_data_t sTateLizaTextScripts[] = {
static const struct MatchCallStruct5 sTateLizaMatchCallHeader =
{
.type = 5,
- .v1 = 13,
+ .mapSec = MAPSEC_MOSSDEEP_CITY,
.flag = FLAG_ENABLE_TATE_AND_LIZA_MATCH_CALL,
.rematchTableIdx = REMATCH_TATE_AND_LIZA,
.desc = gTateLizaMatchCallDesc,
@@ -637,7 +638,7 @@ static const match_call_text_data_t sJuanTextScripts[] = {
static const struct MatchCallStruct5 sJuanMatchCallHeader =
{
.type = 5,
- .v1 = 14,
+ .mapSec = MAPSEC_SOOTOPOLIS_CITY,
.flag = FLAG_ENABLE_JUAN_MATCH_CALL,
.rematchTableIdx = REMATCH_JUAN,
.desc = gJuanMatchCallDesc,
@@ -653,7 +654,7 @@ static const match_call_text_data_t sSidneyTextScripts[] = {
static const struct MatchCallStruct5 sSidneyMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_SIDNEY,
.rematchTableIdx = REMATCH_SIDNEY,
.desc = gEliteFourMatchCallDesc,
@@ -669,7 +670,7 @@ static const match_call_text_data_t sPhoebeTextScripts[] = {
static const struct MatchCallStruct5 sPhoebeMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_PHOEBE,
.rematchTableIdx = REMATCH_PHOEBE,
.desc = gEliteFourMatchCallDesc,
@@ -685,7 +686,7 @@ static const match_call_text_data_t sGlaciaTextScripts[] = {
static const struct MatchCallStruct5 sGlaciaMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_GLACIA,
.rematchTableIdx = REMATCH_GLACIA,
.desc = gEliteFourMatchCallDesc,
@@ -701,7 +702,7 @@ static const match_call_text_data_t sDrakeTextScripts[] = {
static const struct MatchCallStruct5 sDrakeMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_DRAKE,
.rematchTableIdx = REMATCH_DRAKE,
.desc = gEliteFourMatchCallDesc,
@@ -717,7 +718,7 @@ static const match_call_text_data_t sWallaceTextScripts[] = {
static const struct MatchCallStruct5 sWallaceMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_WALLACE,
.rematchTableIdx = REMATCH_WALLACE,
.desc = gChampionMatchCallDesc,
@@ -753,24 +754,24 @@ static bool32 (*const sMatchCallGetFlagFuncs[])(match_call_t) = {
MatchCallGetFlag_Type0,
MatchCallGetFlag_Type1,
MatchCallGetFlag_Type2,
- MatchCallGetFlag_Type3,
- MatchCallGetFlag_Type4
+ MatchCallGetFlag_Type4,
+ MatchCallGetFlag_Type3
};
-static u8 (*const gUnknown_08625310[])(match_call_t) = {
- sub_81D1714,
- sub_81D1718,
- sub_81D171C,
- sub_81D1750,
- sub_81D1754
+static u8 (*const sMatchCallGetMapSecFuncs[])(match_call_t) = {
+ MatchCallGetMapSec_Type0,
+ MatchCallGetMapSec_Type1,
+ MatchCallGetMapSec_Type2,
+ MatchCallGetMapSec_Type4,
+ MatchCallGetMapSec_Type3
};
static bool32 (*const sMatchCall_IsRematchableFunctions[])(match_call_t) = {
MatchCall_IsRematchable_Type0,
MatchCall_IsRematchable_Type1,
MatchCall_IsRematchable_Type2,
- MatchCall_IsRematchable_Type3,
- MatchCall_IsRematchable_Type4
+ MatchCall_IsRematchable_Type4,
+ MatchCall_IsRematchable_Type3
};
static bool32 (*const gUnknown_08625338[])(match_call_t) = {
@@ -785,24 +786,24 @@ static u32 (*const sMatchCall_GetRematchTableIdxFunctions[])(match_call_t) = {
MatchCall_GetRematchTableIdx_Type0,
MatchCall_GetRematchTableIdx_Type1,
MatchCall_GetRematchTableIdx_Type2,
- MatchCall_GetRematchTableIdx_Type3,
- MatchCall_GetRematchTableIdx_Type4
+ MatchCall_GetRematchTableIdx_Type4,
+ MatchCall_GetRematchTableIdx_Type3
};
static void (*const sMatchCall_GetMessageFunctions[])(match_call_t, u8 *) = {
MatchCall_GetMessage_Type0,
MatchCall_GetMessage_Type1,
MatchCall_GetMessage_Type2,
- MatchCall_GetMessage_Type3,
- MatchCall_GetMessage_Type4
+ MatchCall_GetMessage_Type4,
+ MatchCall_GetMessage_Type3
};
static void (*const sMatchCall_GetNameAndDescFunctions[])(match_call_t, const u8 **, const u8 **) = {
MatchCall_GetNameAndDesc_Type0,
MatchCall_GetNameAndDesc_Type1,
MatchCall_GetNameAndDesc_Type2,
- MatchCall_GetNameAndDesc_Type3,
- MatchCall_GetNameAndDesc_Type4
+ MatchCall_GetNameAndDesc_Type4,
+ MatchCall_GetNameAndDesc_Type3
};
static const struct UnkStruct_08625388 sMatchCallCheckPageOverrides[] = {
@@ -883,7 +884,7 @@ static bool32 MatchCallGetFlag_Type2(match_call_t matchCall)
return FlagGet(matchCall.type2->flag);
}
-static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
+static bool32 MatchCallGetFlag_Type4(match_call_t matchCall)
{
if (matchCall.type4->gender != gSaveBlock2Ptr->playerGender)
return FALSE;
@@ -892,12 +893,12 @@ static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
return FlagGet(matchCall.type4->flag);
}
-static bool32 MatchCallGetFlag_Type4(match_call_t matchCall)
+static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
{
return FlagGet(matchCall.type3->flag);
}
-u8 sub_81D16DC(u32 idx)
+u8 MatchCallMapSecGetByIndex(u32 idx)
{
match_call_t matchCall;
u32 i;
@@ -906,20 +907,20 @@ u8 sub_81D16DC(u32 idx)
return 0;
matchCall = sMatchCallHeaders[idx];
i = MatchCallGetFunctionIndex(matchCall);
- return gUnknown_08625310[i](matchCall);
+ return sMatchCallGetMapSecFuncs[i](matchCall);
}
-static u8 sub_81D1714(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type0(match_call_t matchCall)
{
- return matchCall.type0->v1;
+ return matchCall.type0->mapSec;
}
-static u8 sub_81D1718(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type1(match_call_t matchCall)
{
- return matchCall.type1->v1;
+ return matchCall.type1->mapSec;
}
-static u8 sub_81D171C(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type2(match_call_t matchCall)
{
s32 i;
@@ -928,17 +929,17 @@ static u8 sub_81D171C(match_call_t matchCall)
if (!FlagGet(matchCall.type2->v10[i].flag))
break;
}
- return matchCall.type2->v10[i].v2;
+ return matchCall.type2->v10[i].mapSec;
}
-static u8 sub_81D1750(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type4(match_call_t matchCall)
{
- return 0xd5;
+ return MAPSEC_NONE;
}
-static u8 sub_81D1754(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type3(match_call_t matchCall)
{
- return 0xd5;
+ return MAPSEC_NONE;
}
bool32 MatchCall_IsRematchable(u32 idx)
@@ -970,12 +971,12 @@ static bool32 MatchCall_IsRematchable_Type2(match_call_t matchCall)
return gSaveBlock1Ptr->trainerRematches[matchCall.type2->rematchTableIdx] ? TRUE : FALSE;
}
-static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
+static bool32 MatchCall_IsRematchable_Type4(match_call_t matchCall)
{
return FALSE;
}
-static bool32 MatchCall_IsRematchable_Type4(match_call_t matchCall)
+static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
{
return FALSE;
}
@@ -1051,12 +1052,12 @@ static u32 MatchCall_GetRematchTableIdx_Type2(match_call_t matchCall)
return matchCall.type2->rematchTableIdx;
}
-static u32 MatchCall_GetRematchTableIdx_Type3(match_call_t matchCall)
+static u32 MatchCall_GetRematchTableIdx_Type4(match_call_t matchCall)
{
return REMATCH_TABLE_ENTRIES;
}
-static u32 MatchCall_GetRematchTableIdx_Type4(match_call_t matchCall)
+static u32 MatchCall_GetRematchTableIdx_Type3(match_call_t matchCall)
{
return REMATCH_TABLE_ENTRIES;
}
@@ -1091,12 +1092,12 @@ static void MatchCall_GetMessage_Type2(match_call_t matchCall, u8 *dest)
sub_81D1920(matchCall.type2->textData, dest);
}
-static void MatchCall_GetMessage_Type3(match_call_t matchCall, u8 *dest)
+static void MatchCall_GetMessage_Type4(match_call_t matchCall, u8 *dest)
{
sub_81D1920(matchCall.type4->textData, dest);
}
-static void MatchCall_GetMessage_Type4(match_call_t matchCall, u8 *dest)
+static void MatchCall_GetMessage_Type3(match_call_t matchCall, u8 *dest)
{
sub_8197080(dest);
}
@@ -1190,13 +1191,13 @@ static void MatchCall_GetNameAndDesc_Type2(match_call_t matchCall, const u8 **de
*desc = matchCall.type2->desc;
}
-static void MatchCall_GetNameAndDesc_Type3(match_call_t matchCall, const u8 **desc, const u8 **name)
+static void MatchCall_GetNameAndDesc_Type4(match_call_t matchCall, const u8 **desc, const u8 **name)
{
*desc = matchCall.type4->desc;
*name = matchCall.type4->name;
}
-static void MatchCall_GetNameAndDesc_Type4(match_call_t matchCall, const u8 **desc, const u8 **name)
+static void MatchCall_GetNameAndDesc_Type3(match_call_t matchCall, const u8 **desc, const u8 **name)
{
*desc = matchCall.type3->desc;
*name = matchCall.type3->name;
diff --git a/src/pokenav_unk_10.c b/src/pokenav_unk_10.c
index dd91e930a..0ca0ea20d 100644
--- a/src/pokenav_unk_10.c
+++ b/src/pokenav_unk_10.c
@@ -60,8 +60,77 @@ u32 sub_81D0954(void);
void sub_81D1500(struct Pokenav10Struct *structPtr);
bool32 sub_81D1524(struct Pokenav10Struct *structPtr);
void sub_81D1538(struct Sprite *sprite);
+u32 sub_81D0C84(s32);
+u32 sub_81D0D2C(s32);
+u32 sub_81D0D8C(s32);
+u32 sub_81D0E00(s32);
+u32 sub_81D0C54(s32);
+
+const u8 gUnknown_086237F8[][4] =
+{
+ {1, 1, 0, 0},
+ {3, 4, 1, 0},
+ {3, 4, 5, 0},
+ {3, 4, 9, 0},
+ {3, 4, 13, 0},
+ {3, 4, 17, 0},
+ {1, 1, 21, 0},
+ {1, 1, 22, 0},
+ {1, 1, 23, 0},
+ {1, 1, 24, 0},
+ {1, 1, 25, 1},
+ {1, 1, 26, 1},
+ {1, 1, 27, 1},
+ {1, 1, 28, 1},
+ {1, 1, 29, 1},
+ {1, 1, 30, 1},
+ {1, 1, 31, 1}
+};
+
+#include "data/text/ribbon_descriptions.h"
+#include "data/text/gift_ribbon_descriptions.h"
+
+const u16 gUnknown_08623FF8[] = INCBIN_U16("graphics/pokenav/ribbons_icon1.gbapal");
+const u16 gUnknown_08624018[] = INCBIN_U16("graphics/pokenav/ribbons_icon2.gbapal");
+const u16 gUnknown_08624038[] = INCBIN_U16("graphics/pokenav/ribbons_icon3.gbapal");
+const u16 gUnknown_08624058[] = INCBIN_U16("graphics/pokenav/ribbons_icon4.gbapal");
+const u16 gUnknown_08624078[] = INCBIN_U16("graphics/pokenav/ribbons_icon5.gbapal");
+const u16 gUnknown_08624098[] = INCBIN_U16("graphics/pokenav/8624098.gbapal");
+const u32 gUnknown_086240B8[] = INCBIN_U32("graphics/pokenav/ribbons_icon.4bpp.lz");
+const u32 gUnknown_08624280[] = INCBIN_U32("graphics/pokenav/ribbons_icon_big.4bpp.lz");
+
+const struct BgTemplate gUnknown_08624B98[2] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+const LoopedTask gUnknown_08624BA0[] =
+{
+ NULL,
+ sub_81D0C84,
+ sub_81D0D2C,
+ sub_81D0D8C,
+ sub_81D0E00,
+ sub_81D0C54
+};
-// code
static const struct WindowTemplate gUnknown_08624BB8 =
{
.bg = 2,
diff --git a/src/pokenav_unk_2.c b/src/pokenav_unk_2.c
index 3aec4685e..60aa5ea5e 100644
--- a/src/pokenav_unk_2.c
+++ b/src/pokenav_unk_2.c
@@ -1,6 +1,261 @@
#include "global.h"
+#include "bg.h"
#include "gym_leader_rematch.h"
#include "pokenav.h"
+#include "sprite.h"
+#include "window.h"
+#include "strings.h"
+#include "scanline_effect.h"
+
+extern const u32 gPokenavOptions_Gfx[];
+extern const u16 gPokenavOptions_Pal[];
+
+const u16 gUnknown_0861FC78[] = INCBIN_U16("graphics/pokenav/bg.gbapal");
+const u32 gUnknown_0861FC98[] = INCBIN_U32("graphics/pokenav/bg.4bpp.lz");
+const u32 gUnknown_0861FCAC[] = INCBIN_U32("graphics/pokenav/bg.bin.lz");
+const u16 gUnknown_0861FD4C[] = INCBIN_U16("graphics/pokenav/outline.gbapal");
+const u32 gUnknown_0861FD6C[] = INCBIN_U32("graphics/pokenav/outline.4bpp.lz");
+const u32 gUnknown_0861FFF4[] = INCBIN_U32("graphics/pokenav/outline_map.bin.lz");
+const u16 gUnknown_08620104[] = INCBIN_U16("graphics/pokenav/blue_light.gbapal");
+const u32 gUnknown_08620124[] = INCBIN_U32("graphics/pokenav/blue_light.4bpp.lz");
+
+const struct BgTemplate gUnknown_08620194[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x0F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x17,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+u32 sub_81C9C6C(s32);
+u32 sub_81C9CA8(s32);
+u32 sub_81C9D44(s32);
+u32 sub_81C9DD8(s32);
+u32 sub_81C9E58(s32);
+u32 sub_81C9EC8(s32);
+u32 sub_81C9EF8(s32);
+u32 sub_81C9F28(s32);
+
+u32 (*const gUnknown_086201A0[])(s32) =
+{
+ NULL,
+ sub_81C9C6C,
+ sub_81C9CA8,
+ sub_81C9D44,
+ sub_81C9DD8,
+ sub_81C9E58,
+ sub_81C9EC8,
+ sub_81C9EF8,
+ sub_81C9F28
+};
+
+const struct CompressedSpriteSheet gUnknown_086201C4[] =
+{
+ {
+ .data = gPokenavOptions_Gfx,
+ .size = 0x3400,
+ .tag = 0x0003
+ },
+ {
+ .data = gUnknown_08620124,
+ .size = 0x0100,
+ .tag = 0x0001
+ }
+};
+
+ const struct SpritePalette gUnknown_086201D4[] =
+ {
+ {gPokenavOptions_Pal + 0x00, 4},
+ {gPokenavOptions_Pal + 0x10, 5},
+ {gPokenavOptions_Pal + 0x20, 6},
+ {gPokenavOptions_Pal + 0x30, 7},
+ {gPokenavOptions_Pal + 0x40, 8},
+ {gUnknown_08620104, 3},
+ {}
+};
+
+const u16 gUnknown_0862020C[] = {0, 0};
+const u16 gUnknown_08620210[] = {0x20, 1};
+const u16 gUnknown_08620214[] = {0x40, 4};
+const u16 gUnknown_08620218[] = {0x60, 2};
+const u16 gUnknown_0862021C[] = {0x80, 3};
+const u16 gUnknown_08620220[] = {0xA0, 1};
+const u16 gUnknown_08620224[] = {0xC0, 1};
+const u16 gUnknown_08620228[] = {0xE0, 4};
+const u16 gUnknown_0862022C[] = {0x100, 1};
+const u16 gUnknown_08620230[] = {0x120, 2};
+const u16 gUnknown_08620234[] = {0x140, 0};
+const u16 gUnknown_08620238[] = {0x160, 0};
+const u16 gUnknown_0862023C[] = {0x180, 3};
+
+struct UnkStruct_08620240
+{
+ u16 unk0;
+ u16 unk2;
+ const u16 *unk4[6];
+};
+
+const struct UnkStruct_08620240 gUnknown_08620240[5] =
+{
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C, NULL, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C, NULL}
+ },
+ {
+ 0x38,
+ 0x14,
+ {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C, NULL, NULL, NULL}
+ },
+ {
+ 0x28,
+ 0x10,
+ {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C}
+ },
+};
+
+const struct WindowTemplate gUnknown_086202CC =
+{
+ .bg = 1,
+ .tilemapLeft = 3,
+ .tilemapTop = 17,
+ .width = 0x18,
+ .height = 0x2,
+ .paletteNum = 1,
+ .baseBlock = 8
+};
+
+const u8 *const gUnknown_086202D4[] =
+{
+ gUnknown_085EBCC5,
+ gUnknown_085EBCE8,
+ gUnknown_085EBD01,
+ gUnknown_085EBD1C,
+ gUnknown_085EBD34,
+ gUnknown_085EBD83,
+ gUnknown_085EBDA2,
+ gUnknown_085EBDBF,
+ gUnknown_085EBDDB,
+ gUnknown_085EBDEE,
+ gUnknown_085EBE06,
+ gUnknown_085EBE19,
+ gUnknown_085EBE2D,
+ gUnknown_085EBE41
+};
+
+const u8 gUnknown_0862030C[] = {6, 8, 7};
+
+const u8 gUnknown_0862030F[] = {6, 8, 7, 0, 0};
+
+const struct OamData gUnknown_08620314 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const union AffineAnimCmd gUnknown_0862031C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0862032C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0x12),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08620344[] =
+{
+ gUnknown_0862031C,
+ gUnknown_0862032C
+};
+
+const struct SpriteTemplate gUnknown_0862034C =
+{
+ .tileTag = 3,
+ .paletteTag = 4,
+ .oam = &gUnknown_08620314,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08620344,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gUnknown_08620364 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_0862036C =
+{
+ .tileTag = 1,
+ .paletteTag = 3,
+ .oam = &gUnknown_08620364,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct ScanlineEffectParams gUnknown_08620384 =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1,
+ 0
+};
bool32 sub_81C98D4(void)
{
diff --git a/src/pokenav_unk_3.c b/src/pokenav_unk_3.c
index d7afada49..9b62bea78 100755
--- a/src/pokenav_unk_3.c
+++ b/src/pokenav_unk_3.c
@@ -37,9 +37,10 @@ static u32 sub_81CACF8(struct Pokenav3Struct *);
static u32 sub_81CAD20(s32);
static bool32 sub_81CB1D0(void);
-extern const u8 gUnknown_08622508[];
-extern const u8 gUnknown_0862250A[];
-extern const u8 *const gUnknown_08622028[][4];
+#include "data/text/match_call_messages.h"
+
+const u8 gUnknown_08622508[] = {0, 2};
+const u8 gUnknown_0862250A[] = {0, 1, 2};
bool32 sub_81CAAE8(void)
{
@@ -207,7 +208,7 @@ static u32 sub_81CAD20(s32 taskState)
{
state->unk1C[state->unkA].unk2 = j;
state->unk1C[state->unkA].unk0 = 1;
- state->unk1C[state->unkA].unk1 = sub_81D16DC(j);
+ state->unk1C[state->unkA].unk1 = MatchCallMapSecGetByIndex(j);
state->unkA++;
}
@@ -364,7 +365,7 @@ const u8 *sub_81CAFD8(int index, int textType)
var0 = state->unk1C[index].unk2;
}
- return gUnknown_08622028[var0][textType];
+ return gMatchCallMessages[var0][textType];
}
u16 sub_81CB01C(void)
diff --git a/src/pokenav_unk_4.c b/src/pokenav_unk_4.c
index cd9651580..93dab4491 100755
--- a/src/pokenav_unk_4.c
+++ b/src/pokenav_unk_4.c
@@ -93,27 +93,191 @@ static void sub_81CC330(struct Pokenav4Struct *);
static struct Sprite *sub_81CC370(void);
static void sub_81CC440(struct Sprite *sprite);
static void sub_81CC4A4(struct Sprite *sprite);
+void sub_81CC34C(struct Sprite *sprite);
+u32 sub_81CB510(s32);
+u32 sub_81CB588(s32);
+u32 sub_81CB600(s32);
+u32 sub_81CB678(s32);
+u32 sub_81CB6F0(s32);
+u32 sub_81CB734(s32);
+u32 sub_81CB75C(s32);
+u32 sub_81CB7A0(s32);
+u32 sub_81CB824(s32);
+u32 sub_81CB888(s32);
+u32 sub_81CB93C(s32);
+u32 sub_81CBAD4(s32);
+u32 sub_81CB9C8(s32);
+u32 sub_81CBA68(s32);
+u32 sub_81CBB74(s32);
-extern const LoopedTask gUnknown_08622798[];
-extern const struct BgTemplate gUnknown_0862278C[3];
-extern const u16 gUnknown_08622510[];
-extern const u32 gUnknown_08622530[];
-extern const u32 gUnknown_08622760[];
-extern const u16 gUnknown_08622700[];
-extern const u16 gUnknown_08622720[];
-extern const u8 gUnknown_086225D4[];
-extern const u16 gUnknown_086226E0[];
-extern const struct BgTemplate gUnknown_08622794;
-extern const struct WindowTemplate gUnknown_086227D8;
-extern const struct WindowTemplate gUnknown_086227E0;
-extern const u8 *const gUnknown_086227E8[];
extern const struct WindowTemplate gUnknown_08622808;
-extern const u8 gUnknown_086227F4[];
-extern const struct CompressedSpriteSheet gUnknown_08622810[1];
-extern const struct SpritePalette gUnknown_08622818[];
extern const struct SpriteTemplate gUnknown_08622830;
extern const struct SpriteTemplate gUnknown_08622850;
+const u16 gUnknown_08622510[] = INCBIN_U16("graphics/pokenav/ui_matchcall.gbapal");
+const u32 gUnknown_08622530[] = INCBIN_U32("graphics/pokenav/ui_matchcall.4bpp.lz");
+const u32 gUnknown_086225D4[] = INCBIN_U32("graphics/pokenav/ui_matchcall.bin.lz");
+const u16 gUnknown_08622698[] = INCBIN_U16("graphics/pokenav/arrow2.gbapal");
+const u32 gUnknown_086226B8[] = INCBIN_U32("graphics/pokenav/arrow2.4bpp.lz");
+const u16 gUnknown_086226E0[] = INCBIN_U16("graphics/pokenav/86226E0.gbapal");
+const u16 gUnknown_08622700[] = INCBIN_U16("graphics/pokenav/8622700.gbapal");
+const u16 gUnknown_08622720[] = INCBIN_U16("graphics/pokenav/pokeball_matchcall.gbapal");
+const u32 gUnknown_08622760[] = INCBIN_U32("graphics/pokenav/pokeball_matchcall.4bpp.lz");
+
+const struct BgTemplate gUnknown_0862278C[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const LoopedTask gUnknown_08622798[] =
+{
+ NULL,
+ sub_81CB510,
+ sub_81CB588,
+ sub_81CB600,
+ sub_81CB678,
+ sub_81CB6F0,
+ sub_81CB734,
+ sub_81CB75C,
+ sub_81CB7A0,
+ sub_81CB824,
+ sub_81CB888,
+ sub_81CB93C,
+ sub_81CBAD4,
+ sub_81CB9C8,
+ sub_81CBA68,
+ sub_81CBB74
+};
+
+const struct WindowTemplate gUnknown_086227D8 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 5,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 16
+};
+
+const struct WindowTemplate gUnknown_086227E0 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 9,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 2,
+ .baseBlock = 38
+};
+
+const u8 *const gUnknown_086227E8[] =
+{
+ gUnknown_085EC017,
+ gUnknown_085EC01C,
+ gUnknown_085EC022
+};
+
+const u8 gUnknown_086227F4[] = _("·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·\p");
+
+const struct WindowTemplate gUnknown_08622808 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 12,
+ .width = 0x1C,
+ .height = 0x04,
+ .paletteNum = 1,
+ .baseBlock = 10
+};
+
+const struct CompressedSpriteSheet gUnknown_08622810[1] =
+{
+ {gUnknown_086226B8, 0x40, 7}
+};
+
+const struct SpritePalette gUnknown_08622818[] =
+{
+ {gUnknown_08622698, 12},
+ {}
+};
+
+const struct OamData gUnknown_08622828 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622830 =
+{
+ .tileTag = 7,
+ .paletteTag = 12,
+ .oam = &gUnknown_08622828,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CC34C,
+};
+
+const struct OamData gUnknown_08622848 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622850 =
+{
+ .tileTag = 8,
+ .paletteTag = 13,
+ .oam = &gUnknown_08622848,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
bool32 sub_81CB260(void)
{
struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
@@ -718,7 +882,7 @@ static void sub_81CBBB8(void)
template.unkE = 7;
template.unk10 = sub_81CB050;
template.unk14 = sub_81CBCEC;
- sub_81C81D4(&gUnknown_08622794, &template, 2);
+ sub_81C81D4(&gUnknown_0862278C[2], &template, 2);
CreateTask(sub_81CBC64, 7);
}
diff --git a/src/pokenav_unk_5.c b/src/pokenav_unk_5.c
index 5f24fd07f..ccab58078 100755
--- a/src/pokenav_unk_5.c
+++ b/src/pokenav_unk_5.c
@@ -32,11 +32,11 @@ struct Pokenav5Struct_2
u8 cityZoomPics[22][0xC8];
};
-struct CityZoomPic
+struct CityMapEntry
{
u16 mapSecId;
- u16 unk2;
- const u32 *data;
+ u16 index;
+ const u32 *tilemap;
};
static u32 sub_81CC568(struct Pokenav5Struct *);
@@ -61,17 +61,110 @@ static void sub_81CCDE8(struct Pokenav5Struct_2 *, int, int);
static void sub_81CCFA4(int);
static void sub_81CCC9C(u8 taskId);
static void sub_81CCF78(void);
+void sub_81CCEF4(struct Sprite *sprite);
+u32 sub_81CC848(s32);
+u32 sub_81CC878(s32);
+u32 sub_81CC8D8(s32);
+u32 sub_81CC95C(s32);
-extern const LoopedTask gUnknown_086230E4[];
-extern const struct BgTemplate gUnknown_086230D8[2];
-extern const struct CompressedSpriteSheet gUnknown_086230F8[1];
-extern const struct SpritePalette gUnknown_08623100[];
-extern const struct WindowTemplate gUnknown_08623110;
-extern const u32 gUnknown_08622888[];
-extern const u16 gUnknown_08622868[];
extern const u16 gHoennMapZoomIcons_Pal[];
-extern const struct CityZoomPic gUnknown_08623118[22];
extern const struct SpriteTemplate gUnknown_086231D0;
+extern const u32 gHoennMapZoomIcons_Gfx[];
+
+const u16 gUnknown_08622868[] = INCBIN_U16("graphics/pokenav/8622868.gbapal");
+const u32 gUnknown_08622888[] = INCBIN_U32("graphics/pokenav/zoom_tiles.4bpp.lz");
+
+#include "data/region_map/city_map_tilemaps.h"
+
+
+const struct BgTemplate gUnknown_086230D8[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x00,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+const LoopedTask gUnknown_086230E4[] =
+{
+ NULL,
+ sub_81CC848,
+ sub_81CC878,
+ sub_81CC8D8,
+ sub_81CC95C
+};
+
+const struct CompressedSpriteSheet gUnknown_086230F8[1] =
+{
+ {gHoennMapZoomIcons_Gfx, 0x800, 6}
+};
+
+const struct SpritePalette gUnknown_08623100[] =
+{
+ {gHoennMapZoomIcons_Pal, 11},
+ {}
+};
+
+const struct WindowTemplate gUnknown_08623110 =
+{
+ .bg = 1,
+ .tilemapLeft = 17,
+ .tilemapTop = 4,
+ .width = 12,
+ .height = 13,
+ .paletteNum = 1,
+ .baseBlock = 0x4C
+};
+
+#include "data/region_map/city_map_entries.h"
+
+const struct OamData gUnknown_086231C8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_086231D0 =
+{
+ .tileTag = 6,
+ .paletteTag = 11,
+ .oam = &gUnknown_086231C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CCEF4,
+};
u32 sub_81CC4D4(void)
{
@@ -215,7 +308,7 @@ static u32 sub_81CC6F4(s32 taskState)
HideBg(2);
HideBg(3);
SetBgMode(1);
- InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8));
+ InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8) - 1);
regionMap = GetSubstructPtr(16);
sub_8122CF8(regionMap, &gUnknown_086230D8[1], sub_81CC6D0());
sub_81CC9C0();
@@ -278,7 +371,7 @@ static u32 sub_81CC6F4(s32 taskState)
}
}
-u32 sub_81CC848(int taskState)
+u32 sub_81CC848(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
@@ -295,7 +388,7 @@ u32 sub_81CC848(int taskState)
return 4;
}
-u32 sub_81CC878(int taskState)
+u32 sub_81CC878(s32 taskState)
{
switch (taskState)
{
@@ -321,7 +414,7 @@ u32 sub_81CC878(int taskState)
return 4;
}
-u32 sub_81CC8D8(int taskState)
+u32 sub_81CC8D8(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
@@ -354,7 +447,7 @@ u32 sub_81CC8D8(int taskState)
return 4;
}
-u32 sub_81CC95C(int taskState)
+u32 sub_81CC95C(s32 taskState)
{
switch (taskState)
{
@@ -521,9 +614,9 @@ static bool32 sub_81CCD24(void)
static u32 sub_81CCD34(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- if (taskState < (int)ARRAY_COUNT(gUnknown_08623118))
+ if (taskState < (int)ARRAY_COUNT(gPokenavCityMaps))
{
- LZ77UnCompWram(gUnknown_08623118[taskState].data, state->cityZoomPics[taskState]);
+ LZ77UnCompWram(gPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
return 1;
}
@@ -533,10 +626,10 @@ static u32 sub_81CCD34(s32 taskState)
static void sub_81CCD70(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
{
int i;
- for (i = 0; i < (int)ARRAY_COUNT(gUnknown_08623118) && (gUnknown_08623118[i].mapSecId != mapSecId || gUnknown_08623118[i].unk2 != pos); i++)
+ for (i = 0; i < (int)ARRAY_COUNT(gPokenavCityMaps) && (gPokenavCityMaps[i].mapSecId != mapSecId || gPokenavCityMaps[i].index != pos); i++)
;
- if (i == ARRAY_COUNT(gUnknown_08623118))
+ if (i == ARRAY_COUNT(gPokenavCityMaps))
return;
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
diff --git a/src/pokenav_unk_7.c b/src/pokenav_unk_7.c
index ff5d2cc6e..90b677fa7 100644
--- a/src/pokenav_unk_7.c
+++ b/src/pokenav_unk_7.c
@@ -1,5 +1,7 @@
#include "global.h"
#include "bg.h"
+#include "window.h"
+#include "pokenav.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "graphics.h"
@@ -13,7 +15,106 @@
#include "strings.h"
#include "text.h"
-static u8 gUnknown_030012BC;
+u32 sub_81CE37C(s32);
+u32 sub_81CE2D0(s32);
+u32 sub_81CE4D8(s32);
+u32 sub_81CE5E4(s32);
+u32 sub_81CE6BC(s32);
+u32 sub_81CE700(s32);
+
+BSS_DATA u8 gUnknown_030012BC;
+
+const u16 gUnknown_086231E8[] = INCBIN_U16("graphics/pokenav/86231E8.gbapal");
+const u16 gUnknown_08623208[] = INCBIN_U16("graphics/pokenav/8623208.gbapal");
+const u32 gUnknown_08623228[] = INCBIN_U32("graphics/pokenav/8623228.4bpp.lz");
+const u32 gUnknown_0862323C[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
+const u16 gUnknown_08623338[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
+
+const struct BgTemplate gUnknown_08623358[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1D,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x1E,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const struct WindowTemplate gUnknown_08623364 =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 2
+};
+
+const struct WindowTemplate gUnknown_0862336C =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x36
+};
+
+const struct WindowTemplate gUnknown_08623374 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 0x1C,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const struct WindowTemplate gUnknown_0862337C =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 0x1C,
+ .width = 3,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const LoopedTask gUnknown_08623384[] =
+{
+ NULL,
+ sub_81CE37C,
+ sub_81CE2D0,
+ sub_81CE4D8,
+ sub_81CE5E4,
+ sub_81CE6BC,
+ sub_81CE700
+};
struct Pokenav7Struct
{
@@ -52,19 +153,6 @@ void sub_81CEEC8(void);
void sub_81CEE68(void);
void sub_81CEE74(bool8 showBg);
-// const data
-extern const LoopedTask gUnknown_08623384[];
-extern const struct BgTemplate gUnknown_08623358[3];
-extern const u32 gUnknown_08623228[];
-extern const u32 gUnknown_0862323C[];
-extern const u16 gUnknown_086231E8[];
-extern const u16 gUnknown_08623338[];
-extern const u16 gUnknown_08623208[];
-extern const struct WindowTemplate gUnknown_08623364;
-extern const struct WindowTemplate gUnknown_0862336C;
-extern const struct WindowTemplate gUnknown_08623374;
-extern const struct WindowTemplate gUnknown_0862337C;
-
// code
bool32 sub_81CDDD4(void)
{
diff --git a/src/pokenav_unk_8.c b/src/pokenav_unk_8.c
index 56ffd0f0a..bcafc14d0 100644
--- a/src/pokenav_unk_8.c
+++ b/src/pokenav_unk_8.c
@@ -1,5 +1,81 @@
#include "global.h"
#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CF134(void);
+u32 sub_81CF1C4(void);
+u32 sub_81CF1D8(void);
+u32 sub_81CF278(void);
+u32 sub_81CF578(s32);
+u32 sub_81CF5F0(s32);
+u32 sub_81CF668(s32);
+u32 sub_81CF6E0(s32);
+u32 sub_81CF758(s32);
+u32 sub_81CF798(s32);
+
+const u32 gUnknown_086233A0[] = {0x16, 0x17, 0x18, 0x21, 0x2F};
+
+u32 (*const gUnknown_086233B4[])(void) =
+{
+ sub_81CF134,
+ sub_81CF1C4,
+ sub_81CF1D8,
+ sub_81CF278
+};
+
+const u16 gUnknown_086233C4[] = INCBIN_U16("graphics/pokenav/condition_search2.gbapal");
+const u32 gUnknown_086233E4[] = INCBIN_U32("graphics/pokenav/condition_search2.4bpp.lz");
+const u32 gUnknown_086234AC[] = INCBIN_U32("graphics/pokenav/condition_search2.bin.lz");
+const u16 gUnknown_08623570[] = INCBIN_U16("graphics/pokenav/8623570.gbapal");
+
+const struct BgTemplate gUnknown_08623590 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_08623594 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_08623598[] =
+{
+ NULL,
+ sub_81CF578,
+ sub_81CF5F0,
+ sub_81CF668,
+ sub_81CF6E0,
+ sub_81CF758,
+ sub_81CF798
+};
+
+const struct WindowTemplate gUnknown_086235B4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+const u8 gUnknown_086235BC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235C8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235D4[] = _("{UNK_SPACER}");
struct PokenavSub7
{
@@ -12,8 +88,6 @@ struct PokenavSub7
struct PokenavSub18 *unkPtr;
};
-extern const u32 gUnknown_086233A0[];
-
u32 sub_81CF010(struct PokenavSub7 *structPtr);
u32 sub_81CF030(struct PokenavSub7 *structPtr);
u32 sub_81CF0B8(struct PokenavSub7 *structPtr);
diff --git a/src/pokenav_unk_9.c b/src/pokenav_unk_9.c
new file mode 100644
index 000000000..2927d7211
--- /dev/null
+++ b/src/pokenav_unk_9.c
@@ -0,0 +1,74 @@
+#include "global.h"
+#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CFB8C(void);
+u32 sub_81CFC2C(void);
+u32 sub_81CFC40(void);
+u32 sub_81CFFFC(s32);
+u32 sub_81D0074(s32);
+u32 sub_81D00EC(s32);
+u32 sub_81D0164(s32);
+u32 sub_81D01DC(s32);
+u32 sub_81D021C(s32);
+
+u32 (*const gUnknown_086235D8[])(void) =
+{
+ sub_81CFB8C,
+ sub_81CFC2C,
+ sub_81CFC40
+};
+
+const u16 gUnknown_086235E4[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
+const u32 gUnknown_08623604[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
+const u32 gUnknown_086236CC[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
+const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
+
+const struct BgTemplate gUnknown_086237B0 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_086237B4 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_086237B8[] =
+{
+ NULL,
+ sub_81CFFFC,
+ sub_81D0074,
+ sub_81D00EC,
+ sub_81D0164,
+ sub_81D01DC,
+ sub_81D021C
+};
+
+const struct WindowTemplate gUnknown_086237D4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+const u8 gUnknown_086237DC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237E8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237F4[] = _("{UNK_SPACER}");
diff --git a/src/text.c b/src/text.c
index 91a82b19f..7e4fa7104 100644
--- a/src/text.c
+++ b/src/text.c
@@ -462,6 +462,108 @@ u8 GetLastTextColor(u8 colorType)
}
}
+#ifdef NONMATCHING
+
+#define GLYPH_COPY(fromY_, toY_, fromX_, toX_, unk) \
+{ \
+ u32 i, j, *ptr, toY, fromX, toX, r5, toOrr, bits; \
+ u8 *dst; \
+ \
+ j = fromX_; \
+ i = fromY_; \
+ ptr = unk; \
+ toX = toX_; \
+ toY = toY_; \
+ fromX = fromX_; \
+ \
+ for (; i < toY; i++) \
+ { \
+ r5 = *(ptr++); \
+ for (j = fromX; j < toX; j++) \
+ { \
+ toOrr = r5 & 0xF; \
+ if (toOrr) \
+ { \
+ dst = windowTiles + ((j / 8) * 32) + ((j & 7) / 2) + ((i / 8) * widthOffset) + ((i & 7) * 4); \
+ bits = ((j & 1) << 2); \
+ *dst = ((toOrr << bits) | (*dst & (0xF0 >> bits))); \
+ } \
+ r5 >>= 4; \
+ } \
+ } \
+}
+
+void CopyGlyphToWindow(struct TextPrinter *textPrinter)
+{
+ struct Window *win;
+ struct WindowTemplate *winTempl;
+ struct Struct_03002F90 *unkStruct;
+ u32 currX, widthOffset, currY;
+ s32 r4, r0;
+ u8 *windowTiles;
+
+ win = &gWindows[textPrinter->printerTemplate.windowId];
+ winTempl = &win->window;
+
+ r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX;
+ if (r4 > gUnknown_03002F90.unk80)
+ r4 = gUnknown_03002F90.unk80;
+
+ r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY;
+ if (r0 > gUnknown_03002F90.unk81)
+ r0 = gUnknown_03002F90.unk81;
+
+ currX = textPrinter->printerTemplate.currentX;
+ currY = textPrinter->printerTemplate.currentY;
+ unkStruct = &gUnknown_03002F90;
+ windowTiles = win->tileData;
+ widthOffset = winTempl->width * 32;
+
+ if (r4 <= 8)
+ {
+ if (r0 <= 8)
+ {
+ GLYPH_COPY(currY, currY + r0, currX, currX + r4, unkStruct->unk0);
+ }
+ else
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + 8, currX, currX + r4, unkStruct->unk0);
+
+ temp = currY + 8;
+ GLYPH_COPY(temp, (temp - 8) + r0, currX, currX + r4, unkStruct->unk40);
+ }
+ }
+ else
+ {
+ if (r0 <= 8)
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + r0, currX, currX + 8, unkStruct->unk0);
+
+ temp = currX + 8;
+ GLYPH_COPY(currY, currY + r0, temp, (temp - 8) + r4, unkStruct->unk20);
+ }
+ else
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + 8, currX, currX + 8, unkStruct->unk0);
+
+ temp = currX + 8;
+ GLYPH_COPY(currY, currY + 8, temp, temp - 8 + r4, unkStruct->unk20);
+
+ temp = currY + 8;
+ GLYPH_COPY(temp, temp - 8 + r0, currX, currX + 8, unkStruct->unk40);
+ {
+ u32 tempX, tempY;
+ tempX = currX + 8;
+ tempY = currY + 8;
+ GLYPH_COPY(tempY, tempY - 8 + r0, tempX, tempX - 8 + r4, unkStruct->unk60);
+ }
+ }
+ }
+}
+#else
NAKED
void CopyGlyphToWindow(struct TextPrinter *x)
{
@@ -1164,6 +1266,7 @@ _080052AA:\n\
bx r0\n\
.pool");
}
+#endif // NONMATCHING
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
{
diff --git a/src/union_room.c b/src/union_room.c
index 486771af7..01288c8cc 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1,53 +1,54 @@
#include "global.h"
-#include "window.h"
+#include "alloc.h"
+#include "battle.h"
+#include "berry_crush.h"
#include "bg.h"
-#include "random.h"
-#include "string_util.h"
-#include "task.h"
+#include "cable_club.h"
+#include "data.h"
+#include "decompress.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
#include "event_data.h"
+#include "event_obj_lock.h"
+#include "field_control_avatar.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_weather.h"
+#include "international_string_util.h"
+#include "librfu.h"
#include "link.h"
#include "link_rfu.h"
-#include "librfu.h"
-#include "alloc.h"
-#include "menu.h"
#include "list_menu.h"
+#include "load_save.h"
+#include "menu.h"
#include "menu_helpers.h"
-#include "script.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "constants/game_stat.h"
-#include "constants/maps.h"
-#include "constants/species.h"
-#include "constants/rgb.h"
-#include "constants/battle_frontier.h"
-#include "trade.h"
-#include "trainer_card.h"
+#include "mevent.h"
+#include "mystery_gift.h"
#include "overworld.h"
-#include "battle.h"
-#include "load_save.h"
-#include "cable_club.h"
-#include "field_control_avatar.h"
-#include "party_menu.h"
-#include "field_weather.h"
#include "palette.h"
-#include "decompress.h"
-#include "start_menu.h"
-#include "data.h"
-#include "field_screen_effect.h"
+#include "party_menu.h"
+#include "pokemon_jump.h"
+#include "random.h"
+#include "script.h"
#include "script_pokemon_util_80F87D8.h"
-#include "international_string_util.h"
-#include "field_player_avatar.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "string_util.h"
#include "strings.h"
-#include "mevent.h"
-#include "dynamic_placeholder_text_util.h"
+#include "task.h"
+#include "trade.h"
+#include "trainer_card.h"
#include "union_room.h"
-#include "easy_chat.h"
-#include "event_obj_lock.h"
#include "union_room_chat.h"
-#include "berry_crush.h"
-#include "mystery_gift.h"
#include "union_room_player_avatar.h"
-#include "pokemon_jump.h"
+#include "window.h"
+#include "constants/battle_frontier.h"
+#include "constants/game_stat.h"
+#include "constants/maps.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
EWRAM_DATA u8 gUnknown_02022C20[12] = {};
EWRAM_DATA u8 gUnknown_02022C2C = 0;
@@ -98,7 +99,6 @@ bool32 sub_8017678(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1)
u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId);
void sub_801807C(struct TradeUnkStruct *arg0);
void sub_801AC54(void);
-void sub_802493C(u8 monId, MainCallback callback);
void sub_80149D8(void);
void MG_DrawTextBorder(u8 windowId);
s8 mevent_message_print_and_prompt_yes_no(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index f28b651cc..655f38def 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -85,6 +85,10 @@ struct UsePokeblockStruct
/*0x7FD0*/ struct UsePokeblockSubStruct info;
};
+#define TAG_TILE_CONDITION_UP_DOWN 0
+#define TAG_PAL_CONDITION_UP_DOWN 0
+#define TAG_PAL_POKEBLOCK_CONDITION 1
+
extern void sub_81D21DC(u8);
// this file's functions
@@ -130,26 +134,12 @@ static u8 sub_8168048(void);
void sub_8168180(struct Sprite *sprite);
void sub_81681B4(struct Sprite *sprite);
void sub_8168168(struct Sprite *sprite);
+void sub_8168374(struct Sprite *sprite);
-extern const struct BgTemplate gUnknown_085DFCCC[4];
-extern const struct WindowTemplate gUnknown_085DFCDC[];
-extern const struct WindowTemplate sUsePokeblockYesNoWinTemplate[];
-extern const u8* sContestStatNames[];
-extern const u32 gUnknown_085DFCB0[];
-extern const u8 gUnknown_085DFCC4[];
-extern const struct SpriteSheet gSpriteSheet_ConditionUpDown;
-extern const struct SpritePalette gSpritePalette_ConditionUpDown;
-extern const struct SpriteTemplate gSpriteTemplate_085DFD5C;
-extern const s16 gUnknown_085DFD28[][2];
-extern const u32 gUnknown_085DFB60[];
-extern const u32 gUnknown_085DFA80[];
-extern const u32 gUnknown_085DFA60[];
-extern const u32 gUnknown_085DFC0C[];
extern const u16 gUnknown_086231E8[];
extern const u16 gUnknown_08623208[];
-extern const u8 gUnknown_085DFCC9[];
-extern const struct SpritePalette gUnknown_085DFDB8;
-extern const struct SpriteTemplate gUnknown_085DFDA0;
+extern const struct SpritePalette gSpritePalette_085DFDB8;
+extern const struct SpriteTemplate gSpriteTemplate_085DFDA0;
// ram variables
EWRAM_DATA struct UsePokeblockSubStruct *gUnknown_0203BC90 = NULL;
@@ -165,6 +155,245 @@ EWRAM_DATA struct UsePokeblockStruct *gUnknown_0203BCAC = NULL;
// const rom data
// todo: make it static once the file is decompiled
+const u32 gUnknown_085DFA60[] = INCBIN_U32("graphics/interface/85DFA60.bin");
+const u32 gUnknown_085DFA80[] = INCBIN_U32("graphics/interface/85DFA80.4bpp");
+const u32 gUnknown_085DFB60[] = INCBIN_U32("graphics/interface/85DFB60.bin");
+const u32 gUnknown_085DFC0C[] = INCBIN_U32("graphics/interface/85DFC0C.bin");
+
+const u32 gUnknown_085DFCB0[] =
+{
+ MON_DATA_COOL,
+ MON_DATA_TOUGH,
+ MON_DATA_SMART,
+ MON_DATA_CUTE,
+ MON_DATA_BEAUTY
+};
+
+const u8 gUnknown_085DFCC4[] =
+{
+ 0, // Spicy/Cool
+ 4, // Dry/Beauty
+ 3, // Sweet/Cute
+ 2, // Bitter/Smart
+ 1 // Sour/Tough
+};
+
+const u8 gUnknown_085DFCC9[] =
+{
+ 0,
+ 8,
+ 1
+};
+
+const struct BgTemplate gUnknown_085DFCCC[4] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x1E,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1D,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x100
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x17,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ }
+};
+
+const struct WindowTemplate gUnknown_085DFCDC[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 0xD,
+ .tilemapTop = 1,
+ .width = 0xD,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 1
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0xE,
+ .width = 0xB,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x35
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 0x11,
+ .width = 0x1C,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x4B
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate sUsePokeblockYesNoWinTemplate =
+{
+ .bg = 0,
+ .tilemapLeft = 0x18,
+ .tilemapTop = 0xB,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x83
+};
+
+const u8 *const sContestStatNames[] =
+{
+ gText_Coolness,
+ gText_Toughness,
+ gText_Smartness,
+ gText_Cuteness,
+ gText_Beauty3
+};
+
+const struct SpriteSheet gSpriteSheet_ConditionUpDown =
+{
+ gUsePokeblockUpDown_Gfx, 0x200, TAG_TILE_CONDITION_UP_DOWN
+};
+
+const struct SpritePalette gSpritePalette_ConditionUpDown =
+{
+ gUsePokeblockUpDown_Pal, TAG_PAL_CONDITION_UP_DOWN
+};
+
+const s16 gUnknown_085DFD28[][2] =
+{
+ {0x9C, 0x24},
+ {0x75, 0x3B},
+ {0x75, 0x76},
+ {0xC5, 0x76},
+ {0xC5, 0x3B}
+};
+
+const struct OamData gOamData_085DFD3C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const union AnimCmd gSpriteAnim_085DFD44[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD4C[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_085DFD54[] =
+{
+ gSpriteAnim_085DFD44,
+ gSpriteAnim_085DFD4C
+};
+
+const struct SpriteTemplate gSpriteTemplate_085DFD5C =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gOamData_085DFD3C,
+ .anims = gSpriteAnimTable_085DFD54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gOamData_085DFD74 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const union AnimCmd gSpriteAnim_085DFD7C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD84[] =
+{
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD8C[] =
+{
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_085DFD94[] =
+{
+ gSpriteAnim_085DFD7C,
+ gSpriteAnim_085DFD84,
+ gSpriteAnim_085DFD8C
+};
+
+const struct SpriteTemplate gSpriteTemplate_085DFDA0 =
+{
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &gOamData_085DFD74,
+ .anims = gSpriteAnimTable_085DFD94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8168374,
+};
+
+const struct SpritePalette gSpritePalette_085DFDB8 =
+{
+ gUsePokeblockCondition_Pal, TAG_PAL_POKEBLOCK_CONDITION
+};
+
// code
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void))
{
@@ -618,7 +847,7 @@ void sub_8166D44(void)
AddTextPrinterParameterized(2, 1, gStringVar4, 0, 1, 0, NULL);
PutWindowTilemap(2);
CopyWindowToVram(2, 3);
- CreateYesNoMenu(sUsePokeblockYesNoWinTemplate, 151, 14, 0);
+ CreateYesNoMenu(&sUsePokeblockYesNoWinTemplate, 151, 14, 0);
}
s8 sub_8166DE4(void)
@@ -1373,7 +1602,7 @@ static void sub_8168248(void)
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePalette;
- spritePalette = gUnknown_085DFDB8;
+ spritePalette = gSpritePalette_085DFDB8;
spriteSheet.data = gUsePokeblockCondition_Gfx;
spriteSheet.size = 0x800;
spriteSheet.tag = 1;
@@ -1388,7 +1617,7 @@ static void sub_8168294(void)
int yStart = 17;
int var = 8;
struct Sprite **sprites = gUnknown_0203BCAC->field_7B44;
- const struct SpriteTemplate *template = &gUnknown_085DFDA0;
+ const struct SpriteTemplate *template = &gSpriteTemplate_085DFDA0;
for (i = 0, xDiff = 64, xStart = -96; i < 2; i++)
{