summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-03-10 14:31:53 -0400
committerGitHub <noreply@github.com>2020-03-10 14:31:53 -0400
commita9bc506b32a13381ce60ad616cec532b82fcf660 (patch)
tree7b9baa6d26e1cd6ea99b4aa266de6b0cf914978c
parentc40d7241ff2d2c0220550339b27a2725aac856fe (diff)
parent7209db3397451f4b1424e01fb8950d4d74f8f4fa (diff)
Merge pull request #295 from PikalaxALT/naming_screen
Naming screen
-rw-r--r--asm/event_object_movement.s14
-rw-r--r--asm/naming_screen.s4594
-rw-r--r--data/data_8479668.s153
-rw-r--r--data/naming_screen.s458
-rw-r--r--include/event_object_movement.h1
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/field_specials.h1
-rw-r--r--include/graphics.h22
-rw-r--r--include/keyboard_text.h (renamed from include/data_8479668.h)19
-rw-r--r--include/naming_screen.h6
-rw-r--r--include/pokemon_storage_system.h3
-rw-r--r--include/strings.h8
-rw-r--r--ld_script.txt5
-rw-r--r--src/daycare.c2
-rw-r--r--src/easy_chat_3.c2
-rw-r--r--src/field_specials.c4
-rw-r--r--src/graphics.c4
-rw-r--r--src/keyboard_text.c61
-rw-r--r--src/naming_screen.c2401
-rw-r--r--src/oak_speech.c4
-rw-r--r--src/strings.c12
-rw-r--r--src/union_room_chat.c2
-rw-r--r--sym_ewram.txt6
24 files changed, 2542 insertions, 5242 deletions
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s
index e9ddd9ebc..d09ee8e97 100644
--- a/asm/event_object_movement.s
+++ b/asm/event_object_movement.s
@@ -1470,8 +1470,8 @@ _0805E8E0:
bx r1
thumb_func_end TrySpawnObjectEvent
- thumb_func_start sub_805E8E8
-sub_805E8E8: @ 805E8E8
+ thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfo
+MakeObjectTemplateFromObjectEventGraphicsInfo: @ 805E8E8
push {r4-r7,lr}
adds r6, r1, 0
adds r4, r2, 0
@@ -1515,7 +1515,7 @@ _0805E936:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_805E8E8
+ thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfo
thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex
MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940
@@ -1527,7 +1527,7 @@ MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940
lsrs r1, 14
adds r1, r4
ldr r1, [r1]
- bl sub_805E8E8
+ bl MakeObjectTemplateFromObjectEventGraphicsInfo
pop {r4}
pop {r0}
bx r0
@@ -1565,7 +1565,7 @@ AddPseudoObjectEvent: @ 805E978
lsrs r4, 24
add r3, sp, 0x18
mov r2, sp
- bl sub_805E8E8
+ bl MakeObjectTemplateFromObjectEventGraphicsInfo
mov r0, sp
ldrh r1, [r0, 0x2]
ldr r0, _0805E9F0 @ =0x0000ffff
@@ -1649,7 +1649,7 @@ sprite_new: @ 805E9F8
add r3, sp, 0x1C
adds r0, r5, 0
mov r2, sp
- bl sub_805E8E8
+ bl MakeObjectTemplateFromObjectEventGraphicsInfo
mov r1, sp
ldr r2, _0805EB3C @ =0x0000ffff
adds r0, r2, 0
@@ -1799,7 +1799,7 @@ sub_805EB44: @ 805EB44
add r3, sp, 0x18
adds r0, r6, 0
mov r2, sp
- bl sub_805E8E8
+ bl MakeObjectTemplateFromObjectEventGraphicsInfo
mov r1, sp
ldr r2, _0805EC28 @ =0x0000ffff
adds r0, r2, 0
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
deleted file mode 100644
index 1e0d2ef68..000000000
--- a/asm/naming_screen.s
+++ /dev/null
@@ -1,4594 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DoNamingScreen
-DoNamingScreen: @ 809D954
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 16
- lsrs r6, r3, 16
- ldr r4, _0809D980 @ =gUnknown_203998C
- movs r0, 0xF2
- lsls r0, 5
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _0809D984
- ldr r0, [sp, 0x1C]
- bl SetMainCallback2
- b _0809D9BE
- .align 2, 0
-_0809D980: .4byte gUnknown_203998C
-_0809D984:
- ldr r1, _0809D9C8 @ =0x00001e2c
- adds r0, r1
- strb r7, [r0]
- ldr r0, [r4]
- ldr r2, _0809D9CC @ =0x00001e34
- adds r1, r0, r2
- strh r5, [r1]
- adds r2, 0x2
- adds r1, r0, r2
- strh r6, [r1]
- ldr r1, _0809D9D0 @ =0x00001e38
- adds r2, r0, r1
- ldr r1, [sp, 0x18]
- str r1, [r2]
- ldr r2, _0809D9D4 @ =0x00001e30
- adds r1, r0, r2
- mov r2, r8
- str r2, [r1]
- ldr r1, _0809D9D8 @ =0x00001e3c
- adds r0, r1
- ldr r2, [sp, 0x1C]
- str r2, [r0]
- cmp r7, 0
- bne _0809D9B8
- bl StartTimer1
-_0809D9B8:
- ldr r0, _0809D9DC @ =c2_choose_name_or_words_screen
- bl SetMainCallback2
-_0809D9BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D9C8: .4byte 0x00001e2c
-_0809D9CC: .4byte 0x00001e34
-_0809D9D0: .4byte 0x00001e38
-_0809D9D4: .4byte 0x00001e30
-_0809D9D8: .4byte 0x00001e3c
-_0809D9DC: .4byte c2_choose_name_or_words_screen
- thumb_func_end DoNamingScreen
-
- thumb_func_start c2_choose_name_or_words_screen
-c2_choose_name_or_words_screen: @ 809D9E0
- push {lr}
- ldr r0, _0809D9FC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _0809DA78
- lsls r0, 2
- ldr r1, _0809DA00 @ =_0809DA04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809D9FC: .4byte gMain
-_0809DA00: .4byte _0809DA04
- .align 2, 0
-_0809DA04:
- .4byte _0809DA24
- .4byte _0809DA2E
- .4byte _0809DA34
- .4byte _0809DA3A
- .4byte _0809DA44
- .4byte _0809DA4A
- .4byte _0809DA50
- .4byte _0809DA56
-_0809DA24:
- bl sub_809FB88
- bl sub_809DA84
- b _0809DA62
-_0809DA2E:
- bl choose_name_or_words_screen_init_bgs
- b _0809DA62
-_0809DA34:
- bl ResetPaletteFade
- b _0809DA62
-_0809DA3A:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- b _0809DA62
-_0809DA44:
- bl ResetTasks
- b _0809DA62
-_0809DA4A:
- bl choose_name_or_words_screen_apply_bg_pals
- b _0809DA62
-_0809DA50:
- bl choose_name_or_words_screen_load_bg_tile_patterns
- b _0809DA62
-_0809DA56:
- bl sub_809E898
- bl UpdatePaletteFade
- bl sub_809FC34
-_0809DA62:
- ldr r1, _0809DA74 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0809DA80
- .align 2, 0
-_0809DA74: .4byte gMain
-_0809DA78:
- bl sub_809F8C0
- bl sub_809DD60
-_0809DA80:
- pop {r0}
- bx r0
- thumb_func_end c2_choose_name_or_words_screen
-
- thumb_func_start sub_809DA84
-sub_809DA84: @ 809DA84
- push {r4-r6,lr}
- ldr r4, _0809DB3C @ =gUnknown_203998C
- ldr r0, [r4]
- ldr r1, _0809DB40 @ =0x00001e10
- adds r0, r1
- movs r2, 0
- strb r2, [r0]
- ldr r1, [r4]
- ldr r3, _0809DB44 @ =0x00001e18
- adds r0, r1, r3
- movs r5, 0
- strh r2, [r0]
- ldr r6, _0809DB48 @ =0x00001e1a
- adds r0, r1, r6
- strh r2, [r0]
- ldr r0, _0809DB4C @ =0x00001e1c
- adds r2, r1, r0
- movs r3, 0x1
- movs r0, 0x1
- strh r0, [r2]
- adds r6, 0x4
- adds r2, r1, r6
- movs r0, 0x2
- strh r0, [r2]
- movs r0, 0xF1
- lsls r0, 5
- adds r1, r0
- strb r5, [r1]
- ldr r0, [r4]
- ldr r1, _0809DB50 @ =0x00001e21
- adds r0, r1
- strb r3, [r0]
- ldr r1, [r4]
- ldr r5, _0809DB54 @ =0x00001e28
- adds r3, r1, r5
- ldr r2, _0809DB58 @ =gUnknown_83E248C
- adds r6, 0xE
- adds r0, r1, r6
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- ldrb r0, [r0, 0x4]
- ldr r2, _0809DB5C @ =0x00001e22
- adds r1, r2
- strb r0, [r1]
- ldr r2, [r4]
- adds r0, r2, r5
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 3
- movs r0, 0xF0
- subs r0, r1
- asrs r0, 1
- adds r0, 0x6
- ldr r3, _0809DB60 @ =0x00001e16
- adds r1, r2, r3
- strh r0, [r1]
- ldr r6, _0809DB64 @ =gKeyRepeatStartDelay
- ldrh r0, [r6]
- ldr r1, _0809DB68 @ =0x00001e25
- adds r2, r1
- strb r0, [r2]
- ldr r0, [r4]
- movs r2, 0xC0
- lsls r2, 5
- adds r0, r2
- movs r1, 0xFF
- movs r2, 0x10
- bl memset
- ldr r1, [r4]
- adds r5, r1, r5
- ldr r0, [r5]
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809DB30
- movs r3, 0xC0
- lsls r3, 5
- adds r0, r1, r3
- ldr r2, _0809DB6C @ =0x00001e30
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
-_0809DB30:
- movs r0, 0x10
- strh r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809DB3C: .4byte gUnknown_203998C
-_0809DB40: .4byte 0x00001e10
-_0809DB44: .4byte 0x00001e18
-_0809DB48: .4byte 0x00001e1a
-_0809DB4C: .4byte 0x00001e1c
-_0809DB50: .4byte 0x00001e21
-_0809DB54: .4byte 0x00001e28
-_0809DB58: .4byte gUnknown_83E248C
-_0809DB5C: .4byte 0x00001e22
-_0809DB60: .4byte 0x00001e16
-_0809DB64: .4byte gKeyRepeatStartDelay
-_0809DB68: .4byte 0x00001e25
-_0809DB6C: .4byte 0x00001e30
- thumb_func_end sub_809DA84
-
- thumb_func_start sub_809DB70
-sub_809DB70: @ 809DB70
- push {r4,r5,lr}
- movs r3, 0
- ldr r4, _0809DBAC @ =gSprites
- movs r5, 0x5
- negs r5, r5
-_0809DB7A:
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r0, r4
- adds r2, r0, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- lsls r0, r1, 31
- cmp r0, 0
- beq _0809DB94
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2]
-_0809DB94:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3F
- bls _0809DB7A
- movs r0, 0
- bl sub_809EA0C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809DBAC: .4byte gSprites
- thumb_func_end sub_809DB70
-
- thumb_func_start choose_name_or_words_screen_init_bgs
-choose_name_or_words_screen_init_bgs: @ 809DBB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0xC
- mov r8, r0
- add r2, sp, 0x8
- movs r6, 0
- ldr r1, _0809DD44 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _0809DD48 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0809DBD6:
- strh r6, [r2]
- add r0, sp, 0x8
- 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 _0809DBD6
- strh r6, [r2]
- add r2, sp, 0x8
- 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, 0xC]
- ldr r2, _0809DD44 @ =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
- add r0, sp, 0x8
- 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, _0809DD4C @ =gUnknown_83E2290
- 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 ResetBg0
-_0809DCA4:
- lsls r0, r4, 3
- ldr r1, _0809DD50 @ =gUnknown_83E22A0
- adds r0, r1
- bl AddWindow
- ldr r5, _0809DD54 @ =gUnknown_203998C
- ldr r1, [r5]
- ldr r2, _0809DD58 @ =0x00001e11
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0809DCA4
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r1, 0xC8
- lsls r1, 3
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _0809DD5C @ =0x0000080c
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r5]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r0, 0x80
- lsls r0, 4
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- movs r0, 0x3
- bl SetBgTilemapBuffer
- movs r4, 0x20
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809DD44: .4byte 0x040000d4
-_0809DD48: .4byte 0x81000800
-_0809DD4C: .4byte gUnknown_83E2290
-_0809DD50: .4byte gUnknown_83E22A0
-_0809DD54: .4byte gUnknown_203998C
-_0809DD58: .4byte 0x00001e11
-_0809DD5C: .4byte 0x0000080c
- thumb_func_end choose_name_or_words_screen_init_bgs
-
- thumb_func_start sub_809DD60
-sub_809DD60: @ 809DD60
- push {lr}
- ldr r0, _0809DD80 @ =sub_809DD88
- movs r1, 0x2
- bl CreateTask
- ldr r0, _0809DD84 @ =sub_809FB70
- bl SetMainCallback2
- bl BackupHelpContext
- movs r0, 0x3 @ HELPCONTEXT_NAMING_SCREEN
- bl SetHelpContext
- pop {r0}
- bx r0
- .align 2, 0
-_0809DD80: .4byte sub_809DD88
-_0809DD84: .4byte sub_809FB70
- thumb_func_end sub_809DD60
-
- thumb_func_start sub_809DD88
-sub_809DD88: @ 809DD88
- push {lr}
- ldr r0, _0809DDA4 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809DDA8 @ =0x00001e10
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- bhi _0809DE1A
- lsls r0, 2
- ldr r1, _0809DDAC @ =_0809DDB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809DDA4: .4byte gUnknown_203998C
-_0809DDA8: .4byte 0x00001e10
-_0809DDAC: .4byte _0809DDB0
- .align 2, 0
-_0809DDB0:
- .4byte _0809DDD8
- .4byte _0809DDE6
- .4byte _0809DDEC
- .4byte _0809DDF2
- .4byte _0809DDF8
- .4byte _0809DDFE
- .4byte _0809DE04
- .4byte _0809DE0A
- .4byte _0809DE10
- .4byte _0809DE16
-_0809DDD8:
- bl sub_809DE70
- bl sub_809DB70
- bl sub_809FB9C
- b _0809DE1A
-_0809DDE6:
- bl sub_809DF28
- b _0809DE1A
-_0809DDEC:
- bl sub_809DF64
- b _0809DE1A
-_0809DDF2:
- bl sub_809DF74
- b _0809DE1A
-_0809DDF8:
- bl sub_809E210
- b _0809DE1A
-_0809DDFE:
- bl sub_809E250
- b _0809DE1A
-_0809DE04:
- bl pokemon_store
- b _0809DE1A
-_0809DE0A:
- bl sub_809E1D4
- b _0809DE1A
-_0809DE10:
- bl sub_809E014
- b _0809DE1A
-_0809DE16:
- bl sub_809E048
-_0809DE1A:
- pop {r0}
- bx r0
- thumb_func_end sub_809DD88
-
- thumb_func_start sub_809DE20
-sub_809DE20: @ 809DE20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809DE2C @ =gUnknown_83E234B
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809DE2C: .4byte gUnknown_83E234B
- thumb_func_end sub_809DE20
-
- thumb_func_start sub_809DE30
-sub_809DE30: @ 809DE30
- ldr r1, _0809DE44 @ =gUnknown_83E234E
- ldr r0, _0809DE48 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809DE4C @ =0x00001e22
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809DE44: .4byte gUnknown_83E234E
-_0809DE48: .4byte gUnknown_203998C
-_0809DE4C: .4byte 0x00001e22
- thumb_func_end sub_809DE30
-
- thumb_func_start sub_809DE50
-sub_809DE50: @ 809DE50
- ldr r1, _0809DE64 @ =gUnknown_83E2351
- ldr r0, _0809DE68 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809DE6C @ =0x00001e22
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809DE64: .4byte gUnknown_83E2351
-_0809DE68: .4byte gUnknown_203998C
-_0809DE6C: .4byte 0x00001e22
- thumb_func_end sub_809DE50
-
- thumb_func_start sub_809DE70
-sub_809DE70: @ 809DE70
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, _0809DF08 @ =gUnknown_8E982BC
- movs r0, 0x3
- bl sub_809F900
- ldr r5, _0809DF0C @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r1, _0809DF10 @ =0x00001e22
- adds r0, r1
- movs r6, 0
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, _0809DF14 @ =gUnknown_8E98458
- movs r0, 0x2
- bl sub_809F900
- ldr r1, _0809DF18 @ =gUnknown_8E98398
- movs r0, 0x1
- bl sub_809F900
- ldr r0, [r5]
- ldr r1, _0809DF1C @ =0x00001e12
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_809F9E8
- ldr r0, [r5]
- ldr r1, _0809DF20 @ =0x00001e11
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_809F9E8
- bl sub_809F914
- bl sub_809F56C
- bl sub_809FAE4
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r6, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r5]
- ldr r0, _0809DF24 @ =0x00001e10
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809DF08: .4byte gUnknown_8E982BC
-_0809DF0C: .4byte gUnknown_203998C
-_0809DF10: .4byte 0x00001e22
-_0809DF14: .4byte gUnknown_8E98458
-_0809DF18: .4byte gUnknown_8E98398
-_0809DF1C: .4byte 0x00001e12
-_0809DF20: .4byte 0x00001e11
-_0809DF24: .4byte 0x00001e10
- thumb_func_end sub_809DE70
-
- thumb_func_start sub_809DF28
-sub_809DF28: @ 809DF28
- push {lr}
- ldr r0, _0809DF58 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0809DF50
- movs r0, 0x1
- bl SetInputState
- movs r0, 0x1
- bl sub_809EA64
- ldr r0, _0809DF5C @ =gUnknown_203998C
- ldr r1, [r0]
- ldr r0, _0809DF60 @ =0x00001e10
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0809DF50:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809DF58: .4byte gPaletteFade
-_0809DF5C: .4byte gUnknown_203998C
-_0809DF60: .4byte 0x00001e10
- thumb_func_end sub_809DF28
-
- thumb_func_start sub_809DF64
-sub_809DF64: @ 809DF64
- push {lr}
- bl sub_809F0CC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_809DF64
-
- thumb_func_start sub_809DF74
-sub_809DF74: @ 809DF74
- push {lr}
- bl sub_809EAD4
- lsls r0, 24
- cmp r0, 0
- beq _0809DF96
- movs r0, 0x1
- bl SetInputState
- bl sub_809E9F8
- ldr r0, _0809DF9C @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809DFA0 @ =0x00001e10
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
-_0809DF96:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809DF9C: .4byte gUnknown_203998C
-_0809DFA0: .4byte 0x00001e10
- thumb_func_end sub_809DF74
-
- thumb_func_start pokemon_store
-pokemon_store: @ 809DFA4
- push {r4,lr}
- bl sub_809F7EC
- movs r0, 0
- bl SetInputState
- movs r0, 0
- bl sub_809EA64
- movs r0, 0x3
- movs r1, 0
- movs r2, 0x1
- bl sub_809E518
- ldr r4, _0809DFEC @ =gUnknown_203998C
- ldr r0, [r4]
- ldr r1, _0809DFF0 @ =0x00001e2c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0809DFF8
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _0809DFF8
- bl pokemon_transfer_to_pc_with_message
- ldr r0, [r4]
- ldr r1, _0809DFF4 @ =0x00001e10
- adds r0, r1
- movs r1, 0x7
- strb r1, [r0]
- movs r0, 0
- b _0809E006
- .align 2, 0
-_0809DFEC: .4byte gUnknown_203998C
-_0809DFF0: .4byte 0x00001e2c
-_0809DFF4: .4byte 0x00001e10
-_0809DFF8:
- ldr r0, _0809E00C @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809E010 @ =0x00001e10
- adds r0, r1
- movs r1, 0x8
- strb r1, [r0]
- movs r0, 0x1
-_0809E006:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809E00C: .4byte gUnknown_203998C
-_0809E010: .4byte 0x00001e10
- thumb_func_end pokemon_store
-
- thumb_func_start sub_809E014
-sub_809E014: @ 809E014
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0809E040 @ =gUnknown_203998C
- ldr r1, [r0]
- ldr r0, _0809E044 @ =0x00001e10
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_0809E040: .4byte gUnknown_203998C
-_0809E044: .4byte 0x00001e10
- thumb_func_end sub_809E014
-
- thumb_func_start sub_809E048
-sub_809E048: @ 809E048
- push {r4,r5,lr}
- ldr r0, _0809E0A0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0809E096
- ldr r4, _0809E0A4 @ =gUnknown_203998C
- ldr r0, [r4]
- ldr r1, _0809E0A8 @ =0x00001e2c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809E06C
- bl SeedRngAndSetTrainerId
-_0809E06C:
- ldr r0, [r4]
- ldr r1, _0809E0AC @ =0x00001e3c
- adds r0, r1
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r0, _0809E0B0 @ =sub_809DD88
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- bl RestoreHelpContext
-_0809E096:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809E0A0: .4byte gPaletteFade
-_0809E0A4: .4byte gUnknown_203998C
-_0809E0A8: .4byte 0x00001e2c
-_0809E0AC: .4byte 0x00001e3c
-_0809E0B0: .4byte sub_809DD88
- thumb_func_end sub_809E048
-
- thumb_func_start pokemon_transfer_to_pc_with_message
-pokemon_transfer_to_pc_with_message: @ 809E0B4
- push {r4,r5,lr}
- sub sp, 0x10
- movs r5, 0
- bl IsDestinationBoxFull
- lsls r0, 24
- cmp r0, 0
- bne _0809E104
- ldr r4, _0809E0F0 @ =gStringVar1
- ldr r0, _0809E0F4 @ =0x00004037
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _0809E0F8 @ =gStringVar2
- ldr r1, _0809E0FC @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r2, _0809E100 @ =0x00001e30
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- b _0809E144
- .align 2, 0
-_0809E0F0: .4byte gStringVar1
-_0809E0F4: .4byte 0x00004037
-_0809E0F8: .4byte gStringVar2
-_0809E0FC: .4byte gUnknown_203998C
-_0809E100: .4byte 0x00001e30
-_0809E104:
- ldr r4, _0809E1AC @ =gStringVar1
- ldr r0, _0809E1B0 @ =0x00004037
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _0809E1B4 @ =gStringVar2
- ldr r1, _0809E1B8 @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r2, _0809E1BC @ =0x00001e30
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r4, _0809E1C0 @ =gStringVar3
- bl GetPCBoxToSendMon
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r5, 0x2
-_0809E144:
- ldr r0, _0809E1C4 @ =0x00000834
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0809E156
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0809E156:
- ldr r4, _0809E1C8 @ =gStringVar4
- ldr r1, _0809E1CC @ =gUnknown_83E2280
- lsls r0, r5, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- ldr r2, _0809E1D0 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- bl GetTextSpeedSetting
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [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, 0x2
- adds r2, r4, 0
- bl AddTextPrinterParameterized2
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E1AC: .4byte gStringVar1
-_0809E1B0: .4byte 0x00004037
-_0809E1B4: .4byte gStringVar2
-_0809E1B8: .4byte gUnknown_203998C
-_0809E1BC: .4byte 0x00001e30
-_0809E1C0: .4byte gStringVar3
-_0809E1C4: .4byte 0x00000834
-_0809E1C8: .4byte gStringVar4
-_0809E1CC: .4byte gUnknown_83E2280
-_0809E1D0: .4byte gTextFlags
- thumb_func_end pokemon_transfer_to_pc_with_message
-
- thumb_func_start sub_809E1D4
-sub_809E1D4: @ 809E1D4
- push {lr}
- bl RunTextPrinters
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0809E1FE
- ldr r0, _0809E204 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809E1FE
- ldr r0, _0809E208 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809E20C @ =0x00001e10
- adds r0, r1
- movs r1, 0x8
- strb r1, [r0]
-_0809E1FE:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809E204: .4byte gMain
-_0809E208: .4byte gUnknown_203998C
-_0809E20C: .4byte 0x00001e10
- thumb_func_end sub_809E1D4
-
- thumb_func_start sub_809E210
-sub_809E210: @ 809E210
- push {lr}
- movs r0, 0
- bl SetInputState
- bl sub_809EC20
- bl sub_809E30C
- movs r0, 0x1
- bl sub_809EA0C
- movs r0, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_809E518
- movs r0, 0x6
- bl PlaySE
- ldr r0, _0809E248 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809E24C @ =0x00001e10
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809E248: .4byte gUnknown_203998C
-_0809E24C: .4byte 0x00001e10
- thumb_func_end sub_809E210
-
- thumb_func_start sub_809E250
-sub_809E250: @ 809E250
- push {r4-r6,lr}
- sub sp, 0x4
- bl sub_809E364
- lsls r0, 24
- cmp r0, 0
- beq _0809E302
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sub_809E9CC
- bl sub_809EB40
- movs r5, 0
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r0, 24
- lsrs r0, 24
- adds r6, r4, 0
- cmp r1, r0
- bne _0809E282
- movs r5, 0x1
-_0809E282:
- ldr r2, _0809E2B8 @ =gUnknown_203998C
- ldr r0, [r2]
- ldr r1, _0809E2BC @ =0x00001e10
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r1, [r2]
- ldr r3, _0809E2C0 @ =0x00001e22
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r4, [r2]
- adds r4, r3
- ldrb r0, [r4]
- movs r1, 0x3
- bl __umodsi3
- strb r0, [r4]
- cmp r5, 0
- beq _0809E2C4
- mov r4, sp
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- b _0809E2E2
- .align 2, 0
-_0809E2B8: .4byte gUnknown_203998C
-_0809E2BC: .4byte 0x00001e10
-_0809E2C0: .4byte 0x00001e22
-_0809E2C4:
- mov r0, sp
- movs r2, 0
- ldrsh r4, [r0, r2]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _0809E2E4
- mov r4, sp
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
-_0809E2E2:
- strh r0, [r4]
-_0809E2E4:
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- bl sub_809E948
- bl sub_809FA60
- movs r0, 0x1
- bl SetInputState
- movs r0, 0
- bl sub_809EA0C
-_0809E302:
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809E250
-
- thumb_func_start sub_809E30C
-sub_809E30C: @ 809E30C
- push {r4,lr}
- ldr r4, _0809E328 @ =sub_809E32C
- 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
- .align 2, 0
-_0809E328: .4byte sub_809E32C
- thumb_func_end sub_809E30C
-
- thumb_func_start sub_809E32C
-sub_809E32C: @ 809E32C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0809E35C @ =gUnknown_83E2354
- ldr r2, _0809E360 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0809E33E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0809E33E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E35C: .4byte gUnknown_83E2354
-_0809E360: .4byte gTasks
- thumb_func_end sub_809E32C
-
- thumb_func_start sub_809E364
-sub_809E364: @ 809E364
- push {lr}
- ldr r0, _0809E378 @ =sub_809E32C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0809E37C
- movs r0, 0
- b _0809E37E
- .align 2, 0
-_0809E378: .4byte sub_809E32C
-_0809E37C:
- movs r0, 0x1
-_0809E37E:
- pop {r1}
- bx r1
- thumb_func_end sub_809E364
-
- thumb_func_start sub_809E384
-sub_809E384: @ 809E384
- ldr r1, _0809E3A0 @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r3, _0809E3A4 @ =0x00001e18
- adds r2, r1, r3
- movs r3, 0
- strh r3, [r2]
- ldr r2, _0809E3A8 @ =0x00001e1a
- adds r1, r2
- strh r3, [r1]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- movs r0, 0
- bx lr
- .align 2, 0
-_0809E3A0: .4byte gUnknown_203998C
-_0809E3A4: .4byte 0x00001e18
-_0809E3A8: .4byte 0x00001e1a
- thumb_func_end sub_809E384
-
- thumb_func_start sub_809E3AC
-sub_809E3AC: @ 809E3AC
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r5, _0809E42C @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r2, _0809E430 @ =0x00001e1a
- adds r1, r0, r2
- str r1, [sp]
- ldr r1, _0809E434 @ =0x00001e18
- adds r0, r1
- str r0, [sp, 0x4]
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- movs r1, 0x28
- bl Sin
- ldr r1, [r5]
- movs r2, 0xF1
- lsls r2, 5
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- adds r0, 0x80
- movs r1, 0xFF
- ands r0, r1
- movs r1, 0x28
- bl Sin
- ldr r1, [r5]
- ldr r2, _0809E438 @ =0x00001e21
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x3F
- ble _0809E422
- ldr r0, [r5]
- ldr r1, _0809E43C @ =0x00001e1c
- adds r2, r0, r1
- ldrb r3, [r2]
- adds r1, 0x2
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- strh r3, [r0]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0809E422:
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809E42C: .4byte gUnknown_203998C
-_0809E430: .4byte 0x00001e1a
-_0809E434: .4byte 0x00001e18
-_0809E438: .4byte 0x00001e21
-_0809E43C: .4byte 0x00001e1c
- thumb_func_end sub_809E3AC
-
- thumb_func_start sub_809E440
-sub_809E440: @ 809E440
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r5, _0809E4C4 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r2, _0809E4C8 @ =0x00001e1a
- adds r1, r0, r2
- str r1, [sp]
- ldr r3, _0809E4CC @ =0x00001e18
- adds r0, r3
- str r0, [sp, 0x4]
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl Sin
- ldr r1, [r5]
- movs r2, 0xF1
- lsls r2, 5
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- ldrh r0, [r4, 0xA]
- adds r0, 0x80
- movs r1, 0xFF
- ands r0, r1
- movs r1, 0x28
- bl Sin
- ldr r1, [r5]
- ldr r3, _0809E4D0 @ =0x00001e21
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 2
- add r1, sp
- ldr r1, [r1]
- strh r0, [r1]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- ble _0809E4BA
- ldr r0, [r5]
- movs r2, 0xF1
- lsls r2, 5
- adds r1, r0, r2
- ldrb r2, [r1]
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r3
- strb r2, [r0]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0809E4BA:
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809E4C4: .4byte gUnknown_203998C
-_0809E4C8: .4byte 0x00001e1a
-_0809E4CC: .4byte 0x00001e18
-_0809E4D0: .4byte 0x00001e21
- thumb_func_end sub_809E440
-
- thumb_func_start sub_809E4D4
-sub_809E4D4: @ 809E4D4
- push {lr}
- ldr r0, _0809E4EC @ =sub_809E32C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809E4EC: .4byte sub_809E32C
- thumb_func_end sub_809E4D4
-
- thumb_func_start sub_809E4F0
-sub_809E4F0: @ 809E4F0
- push {lr}
- ldr r0, _0809E510 @ =c3_0809E58C
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809E514 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x3
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0809E510: .4byte c3_0809E58C
-_0809E514: .4byte gTasks
- thumb_func_end sub_809E4F0
-
- thumb_func_start sub_809E518
-sub_809E518: @ 809E518
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _0809E550 @ =c3_0809E58C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0809E554 @ =gTasks
- adds r4, r1, r0
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r5, r0
- bne _0809E558
- cmp r6, 0
- bne _0809E558
- strh r7, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0xC]
- b _0809E584
- .align 2, 0
-_0809E550: .4byte c3_0809E58C
-_0809E554: .4byte gTasks
-_0809E558:
- cmp r5, 0x3
- bne _0809E568
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0809E568
- cmp r6, 0
- beq _0809E584
-_0809E568:
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- beq _0809E57A
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_809E6B8
-_0809E57A:
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r7, 0
- bl sub_809E6E0
-_0809E584:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809E518
-
- thumb_func_start c3_0809E58C
-c3_0809E58C: @ 809E58C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0809E5F4 @ =gTasks
- adds r4, r1, r0
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- beq _0809E63E
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0809E63E
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_809E644
- lsls r0, 16
- lsrs r0, 16
- ldrb r3, [r4, 0xE]
- adds r1, r3, 0
- adds r2, r3, 0
- bl MultiplyInvertedPaletteRGBComponents
- ldrh r1, [r4, 0x12]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0809E5D8
- subs r0, r1, 0x1
- strh r0, [r4, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _0809E63E
-_0809E5D8:
- movs r0, 0x2
- strh r0, [r4, 0x12]
- ldrh r1, [r4, 0x10]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r0, 0
- blt _0809E602
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- cmp r0, 0xD
- bgt _0809E5F8
- adds r0, r2, r1
- b _0809E606
- .align 2, 0
-_0809E5F4: .4byte gTasks
-_0809E5F8:
- movs r0, 0x10
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x14]
- adds r0, 0x1
- b _0809E60C
-_0809E602:
- ldrh r3, [r4, 0xE]
- adds r0, r1, r3
-_0809E606:
- strh r0, [r4, 0xE]
- ldrh r2, [r4, 0x14]
- adds r0, r1, r2
-_0809E60C:
- strh r0, [r4, 0x14]
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- ldrh r1, [r4, 0xE]
- cmp r0, 0x10
- bne _0809E62C
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0x16
- bne _0809E62C
- ldr r0, _0809E628 @ =0x0000fffc
- strh r0, [r4, 0x10]
- b _0809E63E
- .align 2, 0
-_0809E628: .4byte 0x0000fffc
-_0809E62C:
- lsls r0, r1, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _0809E63E
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- movs r0, 0x2
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x14]
-_0809E63E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end c3_0809E58C
-
- thumb_func_start sub_809E644
-sub_809E644: @ 809E644
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x4
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x87
- lsls r1, 1
- adds r5, r1, 0
- adds r0, r5
- add r6, sp, 0x8
- strh r0, [r6]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r5
- mov r1, sp
- adds r1, 0xA
- strh r0, [r1]
- movs r0, 0x7
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- adds r0, r5
- add r1, sp, 0xC
- strh r0, [r1]
- movs r0, 0x7
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- ldr r1, _0809E6B4 @ =0x00000101
- adds r0, r1
- mov r1, sp
- adds r1, 0xE
- strh r0, [r1]
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0x8
- bl memcpy
- lsls r4, 1
- mov r1, sp
- adds r0, r1, r4
- ldrh r0, [r0]
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809E6B4: .4byte 0x00000101
- thumb_func_end sub_809E644
-
- thumb_func_start sub_809E6B8
-sub_809E6B8: @ 809E6B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_809E644
- lsls r0, 16
- ldr r2, _0809E6D8 @ =gPlttBufferFaded
- lsrs r0, 15
- adds r2, r0, r2
- ldr r1, _0809E6DC @ =gPlttBufferUnfaded
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_0809E6D8: .4byte gPlttBufferFaded
-_0809E6DC: .4byte gPlttBufferUnfaded
- thumb_func_end sub_809E6B8
-
- thumb_func_start sub_809E6E0
-sub_809E6E0: @ 809E6E0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- movs r1, 0x1
- strh r1, [r0, 0xC]
- movs r2, 0x4
- strh r2, [r0, 0xE]
- movs r1, 0x2
- strh r1, [r0, 0x10]
- strh r3, [r0, 0x12]
- strh r2, [r0, 0x14]
- bx lr
- thumb_func_end sub_809E6E0
-
- thumb_func_start sub_809E700
-sub_809E700: @ 809E700
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0809E718
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
-_0809E718:
- ldrh r0, [r5, 0x36]
- movs r1, 0xFF
- ands r1, r0
- adds r6, r5, 0
- adds r6, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r6]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _0809E74C
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
-_0809E74C:
- ldrb r1, [r6]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0809E77C
- movs r1, 0x36
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0809E77C
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _0809E77C
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r1, r0
- beq _0809E786
-_0809E77C:
- movs r0, 0
- strh r0, [r5, 0x38]
- movs r0, 0x2
- strh r0, [r5, 0x3A]
- strh r0, [r5, 0x3C]
-_0809E786:
- ldrh r0, [r5, 0x3C]
- subs r0, 0x1
- strh r0, [r5, 0x3C]
- lsls r0, 16
- cmp r0, 0
- bne _0809E7AE
- ldrh r1, [r5, 0x3A]
- ldrh r2, [r5, 0x38]
- adds r0, r1, r2
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- beq _0809E7A6
- cmp r0, 0
- bne _0809E7AA
-_0809E7A6:
- negs r0, r1
- strh r0, [r5, 0x3A]
-_0809E7AA:
- movs r0, 0x2
- strh r0, [r5, 0x3C]
-_0809E7AE:
- movs r1, 0x36
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0809E7E4
- ldrh r4, [r5, 0x38]
- lsls r5, r4, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 17
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 4
- ldr r2, _0809E7EC @ =0x01010000
- adds r0, r2
- lsrs r0, 16
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r5, 0
- bl MultiplyInvertedPaletteRGBComponents
-_0809E7E4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E7EC: .4byte 0x01010000
- thumb_func_end sub_809E700
-
- thumb_func_start sub_809E7F0
-sub_809E7F0: @ 809E7F0
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _0809E838 @ =gUnknown_83E2364
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0809E814
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _0809E822
-_0809E814:
- movs r0, 0x8
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- strh r0, [r4, 0x30]
-_0809E822:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x24]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E838: .4byte gUnknown_83E2364
- thumb_func_end sub_809E7F0
-
- thumb_func_start sub_809E83C
-sub_809E83C: @ 809E83C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _0809E864 @ =gUnknown_83E236C
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- bl sub_809F668
- lsls r0, 24
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- cmp r0, r1
- beq _0809E868
- movs r0, 0
- strh r0, [r4, 0x26]
- strh r0, [r4, 0x30]
- b _0809E88E
- .align 2, 0
-_0809E864: .4byte gUnknown_83E236C
-_0809E868:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0809E890
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r0, 0
-_0809E88E:
- strh r0, [r4, 0x32]
-_0809E890:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809E83C
-
- thumb_func_start sub_809E898
-sub_809E898: @ 809E898
- push {lr}
- bl sub_809E8B4
- bl sub_809EB5C
- bl sub_809EDE8
- bl sub_809EE60
- bl sub_809EF24
- pop {r0}
- bx r0
- thumb_func_end sub_809E898
-
- thumb_func_start sub_809E8B4
-sub_809E8B4: @ 809E8B4
- push {r4-r6,lr}
- ldr r0, _0809E938 @ =gUnknown_83E25EC
- movs r1, 0x26
- movs r2, 0x58
- movs r3, 0x1
- bl CreateSprite
- ldr r5, _0809E93C @ =gUnknown_203998C
- ldr r1, [r5]
- ldr r4, _0809E940 @ =0x00001e23
- adds r1, r4
- strb r0, [r1]
- movs r0, 0x1
- bl sub_809EA0C
- ldr r6, _0809E944 @ =gSprites
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldr r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r2, r1
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldr r2, [r5]
- adds r2, r4
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0x3A]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- strh r1, [r0, 0x3A]
- movs r0, 0
- movs r1, 0
- bl sub_809E948
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E938: .4byte gUnknown_83E25EC
-_0809E93C: .4byte gUnknown_203998C
-_0809E940: .4byte 0x00001e23
-_0809E944: .4byte gSprites
- thumb_func_end sub_809E8B4
-
- thumb_func_start sub_809E948
-sub_809E948: @ 809E948
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsls r1, 16
- lsrs r7, r1, 16
- ldr r1, _0809E994 @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r2, _0809E998 @ =0x00001e23
- adds r1, r2
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- ldr r2, _0809E99C @ =gSprites
- adds r5, r1, r2
- lsrs r1, r0, 16
- mov r8, r1
- asrs r6, r0, 16
- ldr r4, _0809E9A0 @ =gUnknown_83E2330
- bl sub_809DE50
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r6, r0
- bge _0809E9A8
- bl sub_809DE50
- ldr r1, _0809E9A4 @ =gUnknown_83E2333
- lsls r0, 24
- lsrs r0, 21
- adds r0, r6, r0
- adds r0, r1
- ldrb r0, [r0]
- adds r0, 0x26
- b _0809E9AA
- .align 2, 0
-_0809E994: .4byte gUnknown_203998C
-_0809E998: .4byte 0x00001e23
-_0809E99C: .4byte gSprites
-_0809E9A0: .4byte gUnknown_83E2330
-_0809E9A4: .4byte gUnknown_83E2333
-_0809E9A8:
- movs r0, 0
-_0809E9AA:
- strh r0, [r5, 0x20]
- lsls r0, r7, 16
- asrs r0, 12
- adds r0, 0x58
- strh r0, [r5, 0x22]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x30]
- strh r0, [r5, 0x34]
- mov r2, r8
- strh r2, [r5, 0x2E]
- strh r7, [r5, 0x30]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809E948
-
- thumb_func_start sub_809E9CC
-sub_809E9CC: @ 809E9CC
- ldr r2, _0809E9EC @ =gUnknown_203998C
- ldr r2, [r2]
- ldr r3, _0809E9F0 @ =0x00001e23
- adds r2, r3
- ldrb r3, [r2]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- ldr r3, _0809E9F4 @ =gSprites
- adds r2, r3
- ldrh r3, [r2, 0x2E]
- strh r3, [r0]
- ldrh r0, [r2, 0x30]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0809E9EC: .4byte gUnknown_203998C
-_0809E9F0: .4byte 0x00001e23
-_0809E9F4: .4byte gSprites
- thumb_func_end sub_809E9CC
-
- thumb_func_start sub_809E9F8
-sub_809E9F8: @ 809E9F8
- push {lr}
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_809E948
- pop {r0}
- bx r0
- thumb_func_end sub_809E9F8
-
- thumb_func_start sub_809EA0C
-sub_809EA0C: @ 809EA0C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0809EA54 @ =gSprites
- ldr r1, _0809EA58 @ =gUnknown_203998C
- ldr r4, [r1]
- ldr r1, _0809EA5C @ =0x00001e23
- adds r4, r1
- ldrb r1, [r4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r5
- ldrh r3, [r2, 0x36]
- ldr r1, _0809EA60 @ =0xffffff00
- ands r1, r3
- strh r1, [r2, 0x36]
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrh r2, [r1, 0x36]
- orrs r0, r2
- strh r0, [r1, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EA54: .4byte gSprites
-_0809EA58: .4byte gUnknown_203998C
-_0809EA5C: .4byte 0x00001e23
-_0809EA60: .4byte 0xffffff00
- thumb_func_end sub_809EA0C
-
- thumb_func_start sub_809EA64
-sub_809EA64: @ 809EA64
- push {r4,r5,lr}
- lsls r0, 24
- ldr r5, _0809EA9C @ =gSprites
- ldr r1, _0809EAA0 @ =gUnknown_203998C
- ldr r4, [r1]
- ldr r1, _0809EAA4 @ =0x00001e23
- adds r4, r1
- ldrb r1, [r4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r5
- ldrh r3, [r2, 0x36]
- movs r1, 0xFF
- ands r1, r3
- strh r1, [r2, 0x36]
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- lsrs r0, 16
- ldrh r2, [r1, 0x36]
- orrs r0, r2
- strh r0, [r1, 0x36]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EA9C: .4byte gSprites
-_0809EAA0: .4byte gUnknown_203998C
-_0809EAA4: .4byte 0x00001e23
- thumb_func_end sub_809EA64
-
- thumb_func_start sub_809EAA8
-sub_809EAA8: @ 809EAA8
- push {lr}
- ldr r0, _0809EAC8 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809EACC @ =0x00001e23
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809EAD0 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_0809EAC8: .4byte gUnknown_203998C
-_0809EACC: .4byte 0x00001e23
-_0809EAD0: .4byte gSprites
- thumb_func_end sub_809EAA8
-
- thumb_func_start sub_809EAD4
-sub_809EAD4: @ 809EAD4
- ldr r2, _0809EAF4 @ =gSprites
- ldr r0, _0809EAF8 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809EAFC @ =0x00001e23
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 31
- bx lr
- .align 2, 0
-_0809EAF4: .4byte gSprites
-_0809EAF8: .4byte gUnknown_203998C
-_0809EAFC: .4byte 0x00001e23
- thumb_func_end sub_809EAD4
-
- thumb_func_start sub_809EB00
-sub_809EB00: @ 809EB00
- push {r4,r5,lr}
- sub sp, 0x4
- mov r5, sp
- adds r5, 0x2
- mov r0, sp
- adds r1, r5, 0
- bl sub_809E9CC
- mov r0, sp
- movs r1, 0
- ldrsh r4, [r0, r1]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _0809EB34
- ldr r0, _0809EB30 @ =gUnknown_83E2374
- movs r2, 0
- ldrsh r1, [r5, r2]
- adds r1, r0
- ldrb r0, [r1]
- b _0809EB36
- .align 2, 0
-_0809EB30: .4byte gUnknown_83E2374
-_0809EB34:
- movs r0, 0
-_0809EB36:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809EB00
-
- thumb_func_start sub_809EB40
-sub_809EB40: @ 809EB40
- push {r4,lr}
- ldr r4, _0809EB58 @ =gUnknown_83E2330
- bl sub_809DE50
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809EB58: .4byte gUnknown_83E2330
- thumb_func_end sub_809EB40
-
- thumb_func_start sub_809EB5C
-sub_809EB5C: @ 809EB5C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _0809EC00 @ =gUnknown_83E2574
- movs r1, 0xCC
- movs r2, 0x58
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809EC04 @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r2, _0809EC08 @ =0x00001e24
- adds r1, r2
- strb r0, [r1]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _0809EC0C @ =gSprites
- mov r8, r0
- add r5, r8
- ldr r1, _0809EC10 @ =gUnknown_83E2504
- adds r0, r5, 0
- bl SetSubspriteTables
- adds r1, r5, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r6, 0x4
- orrs r0, r6
- strb r0, [r1]
- ldr r0, _0809EC14 @ =gUnknown_83E25A4
- movs r1, 0xCC
- movs r2, 0x54
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3A]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r8
- ldr r1, _0809EC18 @ =gUnknown_83E250C
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r6
- strb r0, [r4]
- ldr r0, _0809EC1C @ =gUnknown_83E258C
- movs r1, 0xCC
- movs r2, 0x53
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r6
- strb r1, [r2, 0x5]
- strh r0, [r5, 0x3C]
- adds r2, 0x3E
- ldrb r0, [r2]
- orrs r0, r6
- strb r0, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EC00: .4byte gUnknown_83E2574
-_0809EC04: .4byte gUnknown_203998C
-_0809EC08: .4byte 0x00001e24
-_0809EC0C: .4byte gSprites
-_0809EC10: .4byte gUnknown_83E2504
-_0809EC14: .4byte gUnknown_83E25A4
-_0809EC18: .4byte gUnknown_83E250C
-_0809EC1C: .4byte gUnknown_83E258C
- thumb_func_end sub_809EB5C
-
- thumb_func_start sub_809EC20
-sub_809EC20: @ 809EC20
- ldr r0, _0809EC44 @ =gUnknown_203998C
- ldr r2, [r0]
- ldr r1, _0809EC48 @ =0x00001e24
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809EC4C @ =gSprites
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x2E]
- ldr r1, _0809EC50 @ =0x00001e22
- adds r2, r1
- ldrb r1, [r2]
- strh r1, [r0, 0x30]
- bx lr
- .align 2, 0
-_0809EC44: .4byte gUnknown_203998C
-_0809EC48: .4byte 0x00001e24
-_0809EC4C: .4byte gSprites
-_0809EC50: .4byte 0x00001e22
- thumb_func_end sub_809EC20
-
- thumb_func_start sub_809EC54
-sub_809EC54: @ 809EC54
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _0809EC78 @ =gUnknown_83E2378
-_0809EC5A:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0809EC5A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EC78: .4byte gUnknown_83E2378
- thumb_func_end sub_809EC54
-
- thumb_func_start sub_809EC7C
-sub_809EC7C: @ 809EC7C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r1, _0809ECC4 @ =gSprites
- adds r5, r1
- movs r2, 0x3C
- ldrsh r0, [r6, r2]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- ldr r0, _0809ECC8 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809ECCC @ =0x00001e22
- adds r0, r1
- ldrb r0, [r0]
- bl sub_809DE20
- lsls r0, 24
- lsrs r0, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_809ED88
- ldrh r0, [r6, 0x2E]
- adds r0, 0x1
- strh r0, [r6, 0x2E]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809ECC4: .4byte gSprites
-_0809ECC8: .4byte gUnknown_203998C
-_0809ECCC: .4byte 0x00001e22
- thumb_func_end sub_809EC7C
-
- thumb_func_start sub_809ECD0
-sub_809ECD0: @ 809ECD0
- movs r0, 0
- bx lr
- thumb_func_end sub_809ECD0
-
- thumb_func_start sub_809ECD4
-sub_809ECD4: @ 809ECD4
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r0, 0x3A
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r2, _0809ED40 @ =gSprites
- adds r4, r0, r2
- movs r0, 0x3C
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r2
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0809ED38
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- ldr r0, _0809ED44 @ =0x0000fffc
- strh r0, [r4, 0x26]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x30]
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- lsls r0, 24
- lsrs r0, 24
- bl sub_809DE20
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_809ED88
-_0809ED38:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809ED40: .4byte gSprites
-_0809ED44: .4byte 0x0000fffc
- thumb_func_end sub_809ECD4
-
- thumb_func_start sub_809ED48
-sub_809ED48: @ 809ED48
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809ED84 @ =gSprites
- adds r2, r0, r1
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _0809ED7C
- movs r0, 0
- strh r0, [r2, 0x26]
- movs r0, 0x1
- strh r0, [r4, 0x2E]
-_0809ED7C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809ED84: .4byte gSprites
- thumb_func_end sub_809ED48
-
- thumb_func_start sub_809ED88
-sub_809ED88: @ 809ED88
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0809EDE0 @ =gUnknown_83E2388
- lsls r4, r5, 1
- adds r0, r4, r0
- ldrh r0, [r0]
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- mov r1, r8
- ldrb r2, [r1, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- mov r0, r8
- strb r1, [r0, 0x5]
- ldr r0, _0809EDE4 @ =gUnknown_83E238E
- adds r4, r0
- ldrh r0, [r4]
- bl GetSpriteTileStartByTag
- adds r1, r6, 0
- adds r1, 0x40
- strh r0, [r1]
- adds r6, 0x42
- movs r1, 0x3F
- ands r1, r5
- ldrb r2, [r6]
- movs r0, 0x40
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EDE0: .4byte gUnknown_83E2388
-_0809EDE4: .4byte gUnknown_83E238E
- thumb_func_end sub_809ED88
-
- thumb_func_start sub_809EDE8
-sub_809EDE8: @ 809EDE8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _0809EE50 @ =gUnknown_83E25BC
- movs r1, 0xCC
- movs r2, 0x74
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r6, _0809EE54 @ =gSprites
- adds r4, r6
- ldr r0, _0809EE58 @ =gUnknown_83E2524
- mov r8, r0
- adds r0, r4, 0
- mov r1, r8
- bl SetSubspriteTables
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r5, 0x4
- orrs r0, r5
- strb r0, [r4]
- ldr r0, _0809EE5C @ =gUnknown_83E25D4
- movs r1, 0xCC
- movs r2, 0x8C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r6
- adds r0, r4, 0
- mov r1, r8
- bl SetSubspriteTables
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r5
- strb r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EE50: .4byte gUnknown_83E25BC
-_0809EE54: .4byte gSprites
-_0809EE58: .4byte gUnknown_83E2524
-_0809EE5C: .4byte gUnknown_83E25D4
- thumb_func_end sub_809EDE8
-
- thumb_func_start sub_809EE60
-sub_809EE60: @ 809EE60
- push {r4-r6,lr}
- ldr r5, _0809EF0C @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r4, _0809EF10 @ =0x00001e16
- adds r0, r4
- ldrh r1, [r0]
- subs r1, 0x5
- ldr r0, _0809EF14 @ =gUnknown_83E2604
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, _0809EF18 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r5]
- adds r4, r0, r4
- ldrh r1, [r4]
- movs r5, 0
- ldr r2, _0809EF1C @ =0x00001e28
- adds r0, r2
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r5, r0
- bcs _0809EF04
- adds r6, r3, 0
-_0809EEB2:
- lsls r1, 16
- asrs r4, r1, 16
- movs r0, 0xC0
- lsls r0, 10
- adds r1, r0
- asrs r1, 16
- ldr r0, _0809EF20 @ =gUnknown_83E261C
- movs r2, 0x3C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- strh r5, [r0, 0x2E]
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x8
- lsls r4, 16
- lsrs r1, r4, 16
- ldr r0, _0809EF0C @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809EF1C @ =0x00001e28
- adds r0, r2
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r5, r0
- bcc _0809EEB2
-_0809EF04:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EF0C: .4byte gUnknown_203998C
-_0809EF10: .4byte 0x00001e16
-_0809EF14: .4byte gUnknown_83E2604
-_0809EF18: .4byte gSprites
-_0809EF1C: .4byte 0x00001e28
-_0809EF20: .4byte gUnknown_83E261C
- thumb_func_end sub_809EE60
-
- thumb_func_start sub_809EF24
-sub_809EF24: @ 809EF24
- push {lr}
- ldr r1, _0809EF44 @ =gUnknown_83E2394
- ldr r0, _0809EF48 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809EF4C @ =0x00001e28
- adds r0, r2
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_0809EF44: .4byte gUnknown_83E2394
-_0809EF48: .4byte gUnknown_203998C
-_0809EF4C: .4byte 0x00001e28
- thumb_func_end sub_809EF24
-
- thumb_func_start nullsub_54
-nullsub_54: @ 809EF50
- bx lr
- thumb_func_end nullsub_54
-
- thumb_func_start sub_809EF54
-sub_809EF54: @ 809EF54
- push {lr}
- sub sp, 0x4
- ldr r0, _0809EFA0 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809EFA4 @ =0x00001e34
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0
- bl sub_805C7C8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809EFA8 @ =SpriteCallbackDummy
- movs r2, 0
- str r2, [sp]
- movs r2, 0x38
- movs r3, 0x25
- bl AddPseudoObjectEvent
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _0809EFAC @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x4
- bl StartSpriteAnim
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0809EFA0: .4byte gUnknown_203998C
-_0809EFA4: .4byte 0x00001e34
-_0809EFA8: .4byte SpriteCallbackDummy
-_0809EFAC: .4byte gSprites
- thumb_func_end sub_809EF54
-
- thumb_func_start sub_809EFB0
-sub_809EFB0: @ 809EFB0
- push {r4,lr}
- ldr r0, _0809EFE4 @ =gUnknown_83E2634
- movs r1, 0x38
- movs r2, 0x29
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0809EFE8 @ =gSprites
- adds r4, r0
- ldr r1, _0809EFEC @ =gUnknown_83E252C
- adds r0, r4, 0
- bl SetSubspriteTables
- ldrb r0, [r4, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r4, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EFE4: .4byte gUnknown_83E2634
-_0809EFE8: .4byte gSprites
-_0809EFEC: .4byte gUnknown_83E252C
- thumb_func_end sub_809EFB0
-
- thumb_func_start sub_809EFF0
-sub_809EFF0: @ 809EFF0
- push {lr}
- sub sp, 0xC
- bl LoadMonIconPalettes
- ldr r0, _0809F038 @ =gUnknown_203998C
- ldr r3, [r0]
- ldr r1, _0809F03C @ =0x00001e34
- adds r0, r3, r1
- ldrh r0, [r0]
- ldr r1, _0809F040 @ =SpriteCallbackDummy
- movs r2, 0
- str r2, [sp]
- ldr r2, _0809F044 @ =0x00001e38
- adds r3, r2
- ldr r2, [r3]
- str r2, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x28
- bl CreateMonIcon
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809F048 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- orrs r0, r2
- strb r0, [r1, 0x5]
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_0809F038: .4byte gUnknown_203998C
-_0809F03C: .4byte 0x00001e34
-_0809F040: .4byte SpriteCallbackDummy
-_0809F044: .4byte 0x00001e38
-_0809F048: .4byte gSprites
- thumb_func_end sub_809EFF0
-
- thumb_func_start sub_809F04C
-sub_809F04C: @ 809F04C
- push {r4,lr}
- sub sp, 0x2C
- ldr r0, _0809F0B8 @ =gUnknown_83E23C0
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x1C]
- str r1, [sp, 0x20]
- ldr r0, _0809F0BC @ =gUnknown_83E23C8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x24]
- str r1, [sp, 0x28]
- ldr r1, _0809F0C0 @ =SpriteCallbackDummy
- add r3, sp, 0x18
- movs r0, 0
- mov r2, sp
- bl sub_805E8E8
- mov r2, sp
- add r0, sp, 0x1C
- ldrh r1, [r0, 0x6]
- strh r1, [r2]
- add r4, sp, 0x24
- ldrh r1, [r4, 0x4]
- strh r1, [r2, 0x2]
- ldr r1, _0809F0C4 @ =gUnknown_83E23BC
- str r1, [sp, 0x8]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x38
- movs r2, 0x25
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809F0C8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- orrs r0, r2
- strb r0, [r1, 0x5]
- add sp, 0x2C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F0B8: .4byte gUnknown_83E23C0
-_0809F0BC: .4byte gUnknown_83E23C8
-_0809F0C0: .4byte SpriteCallbackDummy
-_0809F0C4: .4byte gUnknown_83E23BC
-_0809F0C8: .4byte gSprites
- thumb_func_end sub_809F04C
-
- thumb_func_start sub_809F0CC
-sub_809F0CC: @ 809F0CC
- push {r4,r5,lr}
- bl GetInputEvent
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_809EB00
- lsls r0, 24
- lsrs r0, 24
- cmp r4, 0x8
- bne _0809F0EA
- bl sub_809F1F0
- b _0809F106
-_0809F0EA:
- cmp r4, 0x6
- bne _0809F0F4
- bl sub_809F700
- b _0809F114
-_0809F0F4:
- cmp r5, 0x9
- beq _0809F110
- ldr r1, _0809F10C @ =gUnknown_83E23D0
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
-_0809F106:
- lsls r0, 24
- lsrs r0, 24
- b _0809F116
- .align 2, 0
-_0809F10C: .4byte gUnknown_83E23D0
-_0809F110:
- bl sub_809E9F8
-_0809F114:
- movs r0, 0
-_0809F116:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809F0CC
-
- thumb_func_start sub_809F11C
-sub_809F11C: @ 809F11C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl sub_809E518
- cmp r4, 0x5
- bne _0809F156
- bl sub_809F75C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_809EAA8
- cmp r4, 0
- beq _0809F156
- movs r0, 0
- bl SetInputState
- ldr r0, _0809F160 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809F164 @ =0x00001e10
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
-_0809F156:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809F160: .4byte gUnknown_203998C
-_0809F164: .4byte 0x00001e10
- thumb_func_end sub_809F11C
-
- thumb_func_start KeyboardKeyHandler_Page
-KeyboardKeyHandler_Page: @ 809F168
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_809E518
- cmp r4, 0x5
- beq _0809F182
- movs r0, 0
- b _0809F18A
-_0809F182:
- bl sub_809F1F0
- lsls r0, 24
- lsrs r0, 24
-_0809F18A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end KeyboardKeyHandler_Page
-
- thumb_func_start KeyboardKeyHandler_Backspace
-KeyboardKeyHandler_Backspace: @ 809F190
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl sub_809E518
- cmp r4, 0x5
- bne _0809F1AA
- bl sub_809F700
-_0809F1AA:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end KeyboardKeyHandler_Backspace
-
- thumb_func_start KeyboardKeyHandler_OK
-KeyboardKeyHandler_OK: @ 809F1B4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl sub_809E518
- cmp r4, 0x5
- beq _0809F1CE
- movs r0, 0
- b _0809F1E2
-_0809F1CE:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0809F1E8 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809F1EC @ =0x00001e10
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
-_0809F1E2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0809F1E8: .4byte gUnknown_203998C
-_0809F1EC: .4byte 0x00001e10
- thumb_func_end KeyboardKeyHandler_OK
-
- thumb_func_start sub_809F1F0
-sub_809F1F0: @ 809F1F0
- ldr r0, _0809F200 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r1, _0809F204 @ =0x00001e10
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_0809F200: .4byte gUnknown_203998C
-_0809F204: .4byte 0x00001e10
- thumb_func_end sub_809F1F0
-
- thumb_func_start InputInit
-InputInit: @ 809F208
- push {lr}
- ldr r0, _0809F218 @ =sub_809F26C
- movs r1, 0x1
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0809F218: .4byte sub_809F26C
- thumb_func_end InputInit
-
- thumb_func_start GetInputEvent
-GetInputEvent: @ 809F21C
- push {lr}
- ldr r0, _0809F238 @ =sub_809F26C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809F23C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0xA]
- pop {r1}
- bx r1
- .align 2, 0
-_0809F238: .4byte sub_809F26C
-_0809F23C: .4byte gTasks
- thumb_func_end GetInputEvent
-
- thumb_func_start SetInputState
-SetInputState: @ 809F240
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0809F264 @ =sub_809F26C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809F268 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F264: .4byte sub_809F26C
-_0809F268: .4byte gTasks
- thumb_func_end SetInputState
-
- thumb_func_start sub_809F26C
-sub_809F26C: @ 809F26C
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0809F294 @ =gUnknown_83E23E0
- ldr r2, _0809F298 @ =gTasks
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_0809F294: .4byte gUnknown_83E23E0
-_0809F298: .4byte gTasks
- thumb_func_end sub_809F26C
-
- thumb_func_start InputState_Disabled
-InputState_Disabled: @ 809F29C
- movs r1, 0
- strh r1, [r0, 0xA]
- bx lr
- thumb_func_end InputState_Disabled
-
- thumb_func_start InputState_Enabled
-InputState_Enabled: @ 809F2A4
- push {lr}
- adds r2, r0, 0
- movs r0, 0
- strh r0, [r2, 0xA]
- ldr r0, _0809F2C0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809F2C4
- movs r0, 0x5
- strh r0, [r2, 0xA]
- b _0809F2F4
- .align 2, 0
-_0809F2C0: .4byte gMain
-_0809F2C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809F2D2
- movs r0, 0x6
- strh r0, [r2, 0xA]
- b _0809F2F4
-_0809F2D2:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0809F2E0
- movs r0, 0x8
- strh r0, [r2, 0xA]
- b _0809F2F4
-_0809F2E0:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0809F2EE
- movs r0, 0x9
- strh r0, [r2, 0xA]
- b _0809F2F4
-_0809F2EE:
- adds r0, r2, 0
- bl sub_809F2F8
-_0809F2F4:
- pop {r0}
- bx r0
- thumb_func_end InputState_Enabled
-
- thumb_func_start sub_809F2F8
-sub_809F2F8: @ 809F2F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- mov r9, r0
- ldr r1, _0809F3E4 @ =gUnknown_83E23E8
- mov r0, sp
- movs r2, 0xA
- bl memcpy
- add r0, sp, 0xC
- mov r10, r0
- ldr r1, _0809F3E8 @ =gUnknown_83E23F2
- movs r2, 0xA
- bl memcpy
- mov r1, sp
- adds r1, 0x18
- str r1, [sp, 0x2C]
- ldr r1, _0809F3EC @ =gUnknown_83E23FC
- ldr r0, [sp, 0x2C]
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- adds r2, 0x20
- str r2, [sp, 0x30]
- ldr r1, _0809F3F0 @ =gUnknown_83E2404
- adds r0, r2, 0
- movs r2, 0x6
- bl memcpy
- add r4, sp, 0x28
- mov r5, sp
- adds r5, 0x2A
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_809E9CC
- ldr r0, _0809F3F4 @ =gMain
- ldrh r2, [r0, 0x30]
- movs r0, 0x40
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- negs r0, r0
- lsrs r1, r0, 31
- movs r0, 0x80
- ands r0, r2
- adds r6, r4, 0
- cmp r0, 0
- beq _0809F366
- movs r1, 0x2
-_0809F366:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _0809F370
- movs r1, 0x3
-_0809F370:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- beq _0809F37A
- movs r1, 0x4
-_0809F37A:
- ldrh r0, [r6]
- mov r8, r0
- lsls r1, 1
- mov r2, sp
- adds r7, r2, r1
- ldrh r0, [r7]
- add r0, r8
- strh r0, [r6]
- add r1, r10
- ldrh r0, [r1]
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- movs r2, 0
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bge _0809F3A6
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6]
-_0809F3A6:
- movs r0, 0
- ldrsh r4, [r6, r0]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _0809F3BA
- movs r0, 0
- strh r0, [r6]
-_0809F3BA:
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _0809F426
- movs r2, 0
- ldrsh r4, [r6, r2]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _0809F3F8
- ldrh r0, [r5]
- mov r1, r9
- strh r0, [r1, 0xC]
- movs r2, 0
- ldrsh r0, [r5, r2]
- lsls r0, 1
- ldr r1, [sp, 0x2C]
- adds r0, r1, r0
- b _0809F422
- .align 2, 0
-_0809F3E4: .4byte gUnknown_83E23E8
-_0809F3E8: .4byte gUnknown_83E23F2
-_0809F3EC: .4byte gUnknown_83E23FC
-_0809F3F0: .4byte gUnknown_83E2404
-_0809F3F4: .4byte gMain
-_0809F3F8:
- mov r2, r8
- lsls r4, r2, 16
- asrs r4, 16
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _0809F426
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _0809F418
- mov r2, r9
- ldrh r0, [r2, 0xC]
- b _0809F424
-_0809F418:
- movs r1, 0
- ldrsh r0, [r5, r1]
- lsls r0, 1
- ldr r2, [sp, 0x30]
- adds r0, r2, r0
-_0809F422:
- ldrh r0, [r0]
-_0809F424:
- strh r0, [r5]
-_0809F426:
- movs r0, 0
- ldrsh r4, [r6, r0]
- bl sub_809EB40
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _0809F468
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bge _0809F442
- movs r0, 0x2
- strh r0, [r5]
-_0809F442:
- movs r2, 0
- ldrsh r0, [r5, r2]
- cmp r0, 0x2
- ble _0809F44E
- movs r0, 0
- strh r0, [r5]
-_0809F44E:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0809F45E
- movs r0, 0x1
- mov r2, r9
- strh r0, [r2, 0xC]
- b _0809F480
-_0809F45E:
- cmp r0, 0x2
- bne _0809F480
- mov r1, r9
- strh r0, [r1, 0xC]
- b _0809F480
-_0809F468:
- movs r2, 0
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bge _0809F474
- movs r0, 0x3
- strh r0, [r5]
-_0809F474:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x3
- ble _0809F480
- movs r0, 0
- strh r0, [r5]
-_0809F480:
- movs r2, 0
- ldrsh r0, [r6, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl sub_809E948
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809F2F8
-
- thumb_func_start sub_809F49C
-sub_809F49C: @ 809F49C
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _0809F4E4 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r4, _0809F4E8 @ =0x00001e14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0809F4EC @ =0x00001e28
- adds r1, r2
- ldr r1, [r1]
- ldr r2, [r1, 0x8]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x1
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F4E4: .4byte gUnknown_203998C
-_0809F4E8: .4byte 0x00001e14
-_0809F4EC: .4byte 0x00001e28
- thumb_func_end sub_809F49C
-
- thumb_func_start sub_809F4F0
-sub_809F4F0: @ 809F4F0
- push {r4,r5,lr}
- sub sp, 0x2C
- ldr r5, _0809F558 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r1, _0809F55C @ =0x00001e34
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _0809F560 @ =gSpeciesNames
- adds r1, r0
- add r0, sp, 0xC
- bl StringCopy
- ldr r0, [r5]
- ldr r1, _0809F564 @ =0x00001e28
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0, 0x8]
- add r0, sp, 0xC
- movs r2, 0xF
- bl StringAppendN
- ldr r0, [r5]
- ldr r4, _0809F568 @ =0x00001e14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- add r2, sp, 0xC
- movs r3, 0x1
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- add sp, 0x2C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F558: .4byte gUnknown_203998C
-_0809F55C: .4byte 0x00001e34
-_0809F560: .4byte gSpeciesNames
-_0809F564: .4byte 0x00001e28
-_0809F568: .4byte 0x00001e14
- thumb_func_end sub_809F4F0
-
- thumb_func_start sub_809F56C
-sub_809F56C: @ 809F56C
- push {lr}
- ldr r1, _0809F588 @ =gUnknown_83E240C
- ldr r0, _0809F58C @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809F590 @ =0x00001e2c
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_0809F588: .4byte gUnknown_83E240C
-_0809F58C: .4byte gUnknown_203998C
-_0809F590: .4byte 0x00001e2c
- thumb_func_end sub_809F56C
-
- thumb_func_start sub_809F594
-sub_809F594: @ 809F594
- push {lr}
- ldr r1, _0809F5B4 @ =gUnknown_83E2420
- ldr r0, _0809F5B8 @ =gUnknown_203998C
- ldr r0, [r0]
- ldr r2, _0809F5BC @ =0x00001e28
- adds r0, r2
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r0}
- bx r0
- .align 2, 0
-_0809F5B4: .4byte gUnknown_83E2420
-_0809F5B8: .4byte gUnknown_203998C
-_0809F5BC: .4byte 0x00001e28
- thumb_func_end sub_809F594
-
- thumb_func_start nullsub_55
-nullsub_55: @ 809F5C0
- bx lr
- thumb_func_end nullsub_55
-
- thumb_func_start sub_809F5C4
-sub_809F5C4: @ 809F5C4
- push {r4,r5,lr}
- sub sp, 0x10
- movs r4, 0
- ldr r1, _0809F61C @ =gText_MaleSymbol
- add r0, sp, 0xC
- bl StringCopy
- ldr r5, _0809F620 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r1, _0809F624 @ =0x00001e36
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xFF
- beq _0809F614
- cmp r0, 0xFE
- bne _0809F5EE
- ldr r1, _0809F628 @ =gText_FemaleSymbol
- add r0, sp, 0xC
- bl StringCopy
- movs r4, 0x1
-_0809F5EE:
- ldr r0, [r5]
- ldr r1, _0809F62C @ =0x00001e13
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r4, 1
- adds r1, r4
- ldr r2, _0809F630 @ =gUnknown_83E2428
- adds r1, r2
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- add r1, sp, 0xC
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x68
- movs r3, 0x1
- bl AddTextPrinterParameterized3
-_0809F614:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F61C: .4byte gText_MaleSymbol
-_0809F620: .4byte gUnknown_203998C
-_0809F624: .4byte 0x00001e36
-_0809F628: .4byte gText_FemaleSymbol
-_0809F62C: .4byte 0x00001e13
-_0809F630: .4byte gUnknown_83E2428
- thumb_func_end sub_809F5C4
-
- thumb_func_start sub_809F634
-sub_809F634: @ 809F634
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _0809F664 @ =gUnknown_83E22D0
- bl sub_809DE50
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 13
- adds r4, r5
- lsls r0, 24
- lsrs r0, 19
- adds r4, r0
- adds r4, r6
- ldrb r0, [r4]
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809F664: .4byte gUnknown_83E22D0
- thumb_func_end sub_809F634
-
- thumb_func_start sub_809F668
-sub_809F668: @ 809F668
- push {r4,r5,lr}
- movs r2, 0
- ldr r0, _0809F690 @ =gUnknown_203998C
- ldr r4, [r0]
- ldr r3, _0809F694 @ =0x00001e28
- adds r1, r4, r3
- ldr r1, [r1]
- ldrb r3, [r1, 0x1]
- adds r5, r0, 0
- cmp r2, r3
- bcs _0809F6A2
- movs r0, 0xC0
- lsls r0, 5
- adds r1, r4, r0
-_0809F684:
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0809F698
- adds r0, r2, 0
- b _0809F6B2
- .align 2, 0
-_0809F690: .4byte gUnknown_203998C
-_0809F694: .4byte 0x00001e28
-_0809F698:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _0809F684
-_0809F6A2:
- ldr r0, [r5]
- ldr r1, _0809F6B8 @ =0x00001e28
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_0809F6B2:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809F6B8: .4byte 0x00001e28
- thumb_func_end sub_809F668
-
- thumb_func_start sub_809F6BC
-sub_809F6BC: @ 809F6BC
- push {lr}
- ldr r0, _0809F6E8 @ =gUnknown_203998C
- ldr r2, [r0]
- ldr r1, _0809F6EC @ =0x00001e28
- adds r0, r2, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- subs r0, 0x1
- lsls r1, r0, 24
- cmp r1, 0
- ble _0809F6F8
- movs r0, 0xC0
- lsls r0, 5
- adds r3, r2, r0
-_0809F6D8:
- asrs r2, r1, 24
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0809F6F0
- lsrs r0, r1, 24
- b _0809F6FA
- .align 2, 0
-_0809F6E8: .4byte gUnknown_203998C
-_0809F6EC: .4byte 0x00001e28
-_0809F6F0:
- subs r0, r2, 0x1
- lsls r1, r0, 24
- cmp r1, 0
- bgt _0809F6D8
-_0809F6F8:
- movs r0, 0
-_0809F6FA:
- pop {r1}
- bx r1
- thumb_func_end sub_809F6BC
-
- thumb_func_start sub_809F700
-sub_809F700: @ 809F700
- push {r4-r6,lr}
- bl sub_809F6BC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _0809F758 @ =gUnknown_203998C
- ldr r0, [r6]
- movs r5, 0xC0
- lsls r5, 5
- adds r0, r5
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
- bl sub_809F914
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r0, [r6]
- adds r0, r5
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
- bl sub_809EB00
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0809F740
- cmp r0, 0x2
- bne _0809F74A
-_0809F740:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl sub_809E518
-_0809F74A:
- movs r0, 0x17
- bl PlaySE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F758: .4byte gUnknown_203998C
- thumb_func_end sub_809F700
-
- thumb_func_start sub_809F75C
-sub_809F75C: @ 809F75C
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sub_809E9CC
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl sub_809F634
- lsls r0, 24
- lsrs r0, 24
- bl sub_809F7C4
- bl sub_809F914
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x5
- bl PlaySE
- bl sub_809F6BC
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809F7B0 @ =gUnknown_203998C
- ldr r1, [r1]
- ldr r2, _0809F7B4 @ =0x00001e28
- adds r1, r2
- ldr r1, [r1]
- ldrb r1, [r1, 0x1]
- subs r1, 0x1
- cmp r0, r1
- bne _0809F7B8
- movs r0, 0x1
- b _0809F7BA
- .align 2, 0
-_0809F7B0: .4byte gUnknown_203998C
-_0809F7B4: .4byte 0x00001e28
-_0809F7B8:
- movs r0, 0
-_0809F7BA:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809F75C
-
- thumb_func_start sub_809F7C4
-sub_809F7C4: @ 809F7C4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_809F668
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809F7E8 @ =gUnknown_203998C
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 5
- adds r1, r2
- adds r1, r0
- strb r4, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F7E8: .4byte gUnknown_203998C
- thumb_func_end sub_809F7C4
-
- thumb_func_start sub_809F7EC
-sub_809F7EC: @ 809F7EC
- push {r4,r5,lr}
- movs r2, 0
- ldr r1, _0809F800 @ =gUnknown_203998C
- ldr r0, [r1]
- ldr r4, _0809F804 @ =0x00001e28
- adds r0, r4
- ldr r0, [r0]
- adds r5, r1, 0
- b _0809F84C
- .align 2, 0
-_0809F800: .4byte gUnknown_203998C
-_0809F804: .4byte 0x00001e28
-_0809F808:
- ldr r1, [r1]
- movs r0, 0xC0
- lsls r0, 5
- adds r3, r1, r0
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809F83C
- cmp r0, 0xFF
- beq _0809F83C
- ldr r2, _0809F838 @ =0x00001e30
- adds r0, r1, r2
- ldr r0, [r0]
- adds r1, r4
- ldr r1, [r1]
- ldrb r2, [r1, 0x1]
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r1, r3, 0
- bl StringCopyN
- b _0809F852
- .align 2, 0
-_0809F838: .4byte 0x00001e30
-_0809F83C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r1, r5, 0
- ldr r0, [r1]
- ldr r4, _0809F858 @ =0x00001e28
- adds r0, r4
- ldr r0, [r0]
-_0809F84C:
- ldrb r0, [r0, 0x1]
- cmp r2, r0
- bcc _0809F808
-_0809F852:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F858: .4byte 0x00001e28
- thumb_func_end sub_809F7EC
-
- thumb_func_start choose_name_or_words_screen_load_bg_tile_patterns
-choose_name_or_words_screen_load_bg_tile_patterns: @ 809F85C
- push {r4-r6,lr}
- ldr r0, _0809F8AC @ =gUnknown_8E980E4
- ldr r6, _0809F8B0 @ =gUnknown_203998C
- ldr r1, [r6]
- ldr r4, _0809F8B4 @ =0x00001810
- adds r1, r4
- bl LZ77UnCompWram
- ldr r1, [r6]
- adds r1, r4
- movs r5, 0xC0
- lsls r5, 3
- movs r0, 0x1
- adds r2, r5, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r1, [r6]
- adds r1, r4
- movs r0, 0x2
- adds r2, r5, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r1, [r6]
- adds r1, r4
- movs r0, 0x3
- adds r2, r5, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r0, _0809F8B8 @ =gUnknown_83E267C
- bl LoadSpriteSheets
- ldr r0, _0809F8BC @ =gUnknown_83E26E4
- bl LoadSpritePalettes
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F8AC: .4byte gUnknown_8E980E4
-_0809F8B0: .4byte gUnknown_203998C
-_0809F8B4: .4byte 0x00001810
-_0809F8B8: .4byte gUnknown_83E267C
-_0809F8BC: .4byte gUnknown_83E26E4
- thumb_func_end choose_name_or_words_screen_load_bg_tile_patterns
-
- thumb_func_start sub_809F8C0
-sub_809F8C0: @ 809F8C0
- push {lr}
- bl InputInit
- bl sub_809E4F0
- pop {r0}
- bx r0
- thumb_func_end sub_809F8C0
-
- thumb_func_start choose_name_or_words_screen_apply_bg_pals
-choose_name_or_words_screen_apply_bg_pals: @ 809F8D0
- push {lr}
- ldr r0, _0809F8F8 @ =gUnknown_8E98024
- movs r1, 0
- movs r2, 0xC0
- bl LoadPalette
- ldr r0, _0809F8FC @ =gUnknown_8E97FE4
- movs r1, 0xA0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x2
- bl stdpal_get
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_0809F8F8: .4byte gUnknown_8E98024
-_0809F8FC: .4byte gUnknown_8E97FE4
- thumb_func_end choose_name_or_words_screen_apply_bg_pals
-
- thumb_func_start sub_809F900
-sub_809F900: @ 809F900
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_809F900
-
- thumb_func_start sub_809F914
-sub_809F914: @ 809F914
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r7, _0809F9D8 @ =gUnknown_203998C
- ldr r1, [r7]
- ldr r2, _0809F9DC @ =0x00001e28
- adds r0, r1, r2
- ldr r0, [r0]
- ldrb r6, [r0, 0x1]
- subs r2, 0x12
- adds r0, r1, r2
- ldrh r0, [r0]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r0, _0809F9E0 @ =0x00001e13
- adds r1, r0
- ldrb r0, [r1]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r4, 0
- cmp r4, r6
- bcs _0809F9AA
- add r5, sp, 0xC
- mov r10, r4
- ldr r0, _0809F9E4 @ =gExpandedPlaceholder_Empty
- ldrb r0, [r0]
- mov r8, r0
-_0809F956:
- ldr r0, [r7]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r5]
- mov r2, r8
- strb r2, [r5, 0x1]
- ldrb r0, [r5]
- bl sub_809FC54
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r0, 0x1
- bne _0809F97A
- movs r1, 0x2
-_0809F97A:
- ldr r0, [r7]
- ldr r2, _0809F9E0 @ =0x00001e13
- adds r0, r2
- ldrb r0, [r0]
- lsls r3, r4, 3
- add r3, r9
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- movs r1, 0x2
- add r2, sp, 0xC
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0809F956
-_0809F9AA:
- bl sub_809F594
- ldr r5, _0809F9D8 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r4, _0809F9E0 @ =0x00001e13
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F9D8: .4byte gUnknown_203998C
-_0809F9DC: .4byte 0x00001e28
-_0809F9E0: .4byte 0x00001e13
-_0809F9E4: .4byte gExpandedPlaceholder_Empty
- thumb_func_end sub_809F914
-
- thumb_func_start sub_809F9E8
-sub_809F9E8: @ 809F9E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _0809FA54 @ =gUnknown_83E243C
- adds r0, r5, r0
- ldrb r1, [r0]
- adds r0, r6, 0
- bl FillWindowPixelBuffer
- movs r4, 0
- ldr r1, _0809FA58 @ =gUnknown_83E2440
- lsls r0, r5, 2
- adds r0, r1
- ldr r7, [r0]
- ldr r0, _0809FA5C @ =gUnknown_83E264C
- mov r8, r0
-_0809FA12:
- lsls r3, r4, 4
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r4, 2
- lsls r1, r5, 4
- adds r0, r1
- add r0, r8
- ldr r0, [r0]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x1
- movs r2, 0
- bl AddTextPrinterParameterized3
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _0809FA12
- adds r0, r6, 0
- bl PutWindowTilemap
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FA54: .4byte gUnknown_83E243C
-_0809FA58: .4byte gUnknown_83E2440
-_0809FA5C: .4byte gUnknown_83E264C
- thumb_func_end sub_809F9E8
-
- thumb_func_start sub_809FA60
-sub_809FA60: @ 809FA60
- push {r4,r5,lr}
- movs r0, 0xA
- bl GetGpuReg
- adds r4, r0, 0
- movs r5, 0x3
- ands r4, r5
- movs r0, 0xC
- bl GetGpuReg
- ands r0, r5
- cmp r4, r0
- bls _0809FA90
- movs r2, 0x1
- movs r5, 0x1
- ldr r1, _0809FA88 @ =gUnknown_203998C
- ldr r0, [r1]
- ldr r3, _0809FA8C @ =0x00001e11
- b _0809FA9A
- .align 2, 0
-_0809FA88: .4byte gUnknown_203998C
-_0809FA8C: .4byte 0x00001e11
-_0809FA90:
- movs r2, 0x2
- movs r5, 0x2
- ldr r1, _0809FAD4 @ =gUnknown_203998C
- ldr r0, [r1]
- ldr r3, _0809FAD8 @ =0x00001e12
-_0809FA9A:
- adds r0, r3
- ldrb r4, [r0]
- adds r0, r1, 0
- ldr r1, _0809FADC @ =gUnknown_83E244C
- ldr r0, [r0]
- ldr r3, _0809FAE0 @ =0x00001e22
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl sub_809F900
- bl sub_809DE30
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_809F9E8
- adds r0, r5, 0
- bl CopyBgTilemapBufferToVram
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FAD4: .4byte gUnknown_203998C
-_0809FAD8: .4byte 0x00001e12
-_0809FADC: .4byte gUnknown_83E244C
-_0809FAE0: .4byte 0x00001e22
- thumb_func_end sub_809FA60
-
- thumb_func_start sub_809FAE4
-sub_809FAE4: @ 809FAE4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- ldr r1, _0809FB60 @ =gUnknown_83E2458
- add r0, sp, 0xC
- movs r2, 0x3
- bl memcpy
- ldr r0, _0809FB64 @ =gUnknown_8418E77
- mov r8, r0
- movs r0, 0
- mov r1, r8
- movs r2, 0
- bl GetStringWidth
- adds r6, r0, 0
- ldr r5, _0809FB68 @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r4, _0809FB6C @ =0x00001e15
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x14
- negs r1, r1
- adds r2, r1, 0
- subs r2, r6
- lsls r2, 24
- lsrs r2, 24
- add r1, sp, 0xC
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- mov r1, r8
- str r1, [sp, 0x8]
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParameterized3
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FB60: .4byte gUnknown_83E2458
-_0809FB64: .4byte gUnknown_8418E77
-_0809FB68: .4byte gUnknown_203998C
-_0809FB6C: .4byte 0x00001e15
- thumb_func_end sub_809FAE4
-
- thumb_func_start sub_809FB70
-sub_809FB70: @ 809FB70
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_809FB70
-
- thumb_func_start sub_809FB88
-sub_809FB88: @ 809FB88
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_809FB88
-
- thumb_func_start sub_809FB9C
-sub_809FB9C: @ 809FB9C
- push {lr}
- ldr r0, _0809FBA8 @ =sub_809FBAC
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .align 2, 0
-_0809FBA8: .4byte sub_809FBAC
- thumb_func_end sub_809FB9C
-
- thumb_func_start sub_809FBAC
-sub_809FBAC: @ 809FBAC
- push {r4,r5,lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r5, _0809FC1C @ =gUnknown_203998C
- ldr r0, [r5]
- ldr r1, _0809FC20 @ =0x00001e18
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, [r5]
- ldr r1, _0809FC24 @ =0x00001e1a
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- movs r0, 0xA
- bl GetGpuReg
- ldr r4, _0809FC28 @ =0x0000fffc
- adds r1, r4, 0
- ands r1, r0
- movs r0, 0xA
- bl SetGpuReg
- ldr r0, [r5]
- ldr r1, _0809FC2C @ =0x00001e1c
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0xA
- bl SetGpuRegBits
- movs r0, 0xC
- bl GetGpuReg
- ands r4, r0
- movs r0, 0xC
- adds r1, r4, 0
- bl SetGpuReg
- ldr r0, [r5]
- ldr r1, _0809FC30 @ =0x00001e1e
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0xC
- bl SetGpuRegBits
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FC1C: .4byte gUnknown_203998C
-_0809FC20: .4byte 0x00001e18
-_0809FC24: .4byte 0x00001e1a
-_0809FC28: .4byte 0x0000fffc
-_0809FC2C: .4byte 0x00001e1c
-_0809FC30: .4byte 0x00001e1e
- thumb_func_end sub_809FBAC
-
- thumb_func_start sub_809FC34
-sub_809FC34: @ 809FC34
- push {lr}
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- pop {r0}
- bx r0
- thumb_func_end sub_809FC34
-
- thumb_func_start sub_809FC54
-sub_809FC54: @ 809FC54
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r2, 0
- ldr r0, _0809FC74 @ =gUnknown_8418E8A
- ldrb r1, [r0]
- adds r3, r0, 0
- cmp r1, 0xFF
- beq _0809FC86
- adds r1, r3, 0
-_0809FC68:
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r4, r0
- bne _0809FC78
- movs r0, 0x1
- b _0809FC88
- .align 2, 0
-_0809FC74: .4byte gUnknown_8418E8A
-_0809FC78:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0809FC68
-_0809FC86:
- movs r0, 0
-_0809FC88:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809FC54
-
- thumb_func_start sub_809FC90
-sub_809FC90: @ 809FC90
- push {lr}
- sub sp, 0x8
- ldr r0, _0809FCB0 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809FCB4 @ =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x4]
- movs r0, 0
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809FCB0: .4byte gSaveBlock2Ptr
-_0809FCB4: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_809FC90
-
- thumb_func_start sub_809FCB8
-sub_809FCB8: @ 809FCB8
- push {lr}
- sub sp, 0x8
- ldr r0, _0809FCD8 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809FCDC @ =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809FCD8: .4byte gSaveBlock2Ptr
-_0809FCDC: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_809FCB8
-
- thumb_func_start sub_809FCE0
-sub_809FCE0: @ 809FCE0
- push {lr}
- sub sp, 0x8
- ldr r0, _0809FD00 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809FD04 @ =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809FD00: .4byte gSaveBlock2Ptr
-_0809FD04: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_809FCE0
-
- thumb_func_start sub_809FD08
-sub_809FD08: @ 809FD08
- push {lr}
- sub sp, 0x8
- ldr r0, _0809FD28 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809FD2C @ =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809FD28: .4byte gSaveBlock2Ptr
-_0809FD2C: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_809FD08
-
- thumb_func_start sub_809FD30
-sub_809FD30: @ 809FD30
- push {lr}
- sub sp, 0x8
- ldr r0, _0809FD50 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809FD54 @ =CB2_ReturnToFieldWithOpenMenu
- str r0, [sp, 0x4]
- movs r0, 0x4
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809FD50: .4byte gSaveBlock2Ptr
-_0809FD54: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_809FD30
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data_8479668.s b/data/data_8479668.s
index 50ce06127..5c00ff639 100644
--- a/data/data_8479668.s
+++ b/data/data_8479668.s
@@ -13,159 +13,6 @@
.section .rodata
- // easy_chat_2
-
-gUnknown_847A8D8::
- .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others$"
-
-gUnknown_847A8FA::
- .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L$"
-
-gUnknown_847A913::
- .string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
-
-gUnknown_847A934::
- .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
-
- // naming_screen
-
-gUnknown_847A955::
- .string "{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.$"
-
-gUnknown_847A976::
- .string "{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},$"
-
-gUnknown_847A997::
- .string "{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} $"
-
-gUnknown_847A9B8::
- .string "{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} $"
-
-gUnknown_847A9D9::
- .string "{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.$"
-
-gUnknown_847A9FA::
- .string "{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},$"
-
-gUnknown_847AA1B::
- .string "{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} $"
-
-gUnknown_847AA3C::
- .string "{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} $"
-
-gUnknown_847AA5D::
- .string "{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} $"
-
-gUnknown_847AA76::
- .string "{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} $"
-
-gUnknown_847AA8F::
- .string "{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-$"
-
-gUnknown_847AAA8::
- .string "{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} $"
-
- // union_room_chat
-
-gText_UnionRoomChatKeyboard_ABCDE::
- .string "ABCDE$"
-
-gText_UnionRoomChatKeyboard_FGHIJ::
- .string "FGHIJ$"
-
-gText_UnionRoomChatKeyboard_KLMNO::
- .string "KLMNO$"
-
-gText_UnionRoomChatKeyboard_PQRST::
- .string "PQRST$"
-
-gText_UnionRoomChatKeyboard_UVWXY::
- .string "UVWXY$"
-
-gText_UnionRoomChatKeyboard_Z::
- .string "Z $"
-
-gText_UnionRoomChatKeyboard_01234Upper::
- .string "01234$"
-
-gText_UnionRoomChatKeyboard_56789Upper::
- .string "56789$"
-
-gText_UnionRoomChatKeyboard_PunctuationUpper::
- .string ".,!? $"
-
-gText_UnionRoomChatKeyboard_SymbolsUpper::
- .string "-/&… $"
-
-gText_UnionRoomChatKeyboard_abcde::
- .string "abcde$"
-
-gText_UnionRoomChatKeyboard_fghij::
- .string "fghij$"
-
-gText_UnionRoomChatKeyboard_klmno::
- .string "klmno$"
-
-gText_UnionRoomChatKeyboard_pqrst::
- .string "pqrst$"
-
-gText_UnionRoomChatKeyboard_uvwxy::
- .string "uvwxy$"
-
-gText_UnionRoomChatKeyboard_z::
- .string "z $"
-
-gText_UnionRoomChatKeyboard_01234Lower::
- .string "01234$"
-
-gText_UnionRoomChatKeyboard_56789Lower::
- .string "56789$"
-
-gText_UnionRoomChatKeyboard_PunctuationLower::
- .string ".,!? $"
-
-gText_UnionRoomChatKeyboard_SymbolsLower::
- .string "-/&… $"
-
- .string "$"
- .string "$"
- .string "$"
- .string "$"
- .string "$"
- .string "$"
- .string "$"
- .string "$"
-
-gText_UnionRoomChatKeyboard_Emoji1::
- .string "{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}$"
-
-gText_UnionRoomChatKeyboard_Emoji2::
- .string "{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}$"
-
-gText_UnionRoomChatKeyboard_Emoji3::
- .string "{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}$"
-
-gText_UnionRoomChatKeyboard_Emoji4::
- .string "♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}$"
-
-gText_UnionRoomChatKeyboard_Emoji5::
- .string "{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}$"
-
-gText_UnionRoomChatKeyboard_Emoji6::
- .string "{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}$"
-
-gText_UnionRoomChatKeyboard_Emoji7::
- .string "{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}$"
-
-gText_UnionRoomChatKeyboard_Emoji8::
- .string "{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}$"
-
-gText_UnionRoomChatKeyboard_Emoji9::
- .string "{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}$"
-
-gText_UnionRoomChatKeyboard_Emoji10::
- .string "{EXTRA 210}{EXTRA 208}ょ: $"
-
@ 847ABAC
.align 2
.include "data/trainer_tower/trainers.inc"
diff --git a/data/naming_screen.s b/data/naming_screen.s
deleted file mode 100644
index b7d348165..000000000
--- a/data/naming_screen.s
+++ /dev/null
@@ -1,458 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnknown_83E1800:: @ 83E1800
- .incbin "graphics/interface/naming_screen_83E1800.4bpp"
-
-gUnknown_83E18C0:: @ 83E18C0
- .incbin "graphics/interface/naming_screen_83E18C0.4bpp"
-
-gUnknown_83E1980:: @ 83E1980
- .incbin "graphics/interface/naming_screen_83E1980.4bpp"
-
-gUnknown_83E2280:: @ 83E2280
- .4byte Text_MonSentToBoxInSomeonesPC
- .4byte Text_MonSentToBoxInBillsPC
- .4byte Text_MonSentToBoxSomeonesBoxFull
- .4byte Text_MonSentToBoxBillsBoxFull
-
-gUnknown_83E2290:: @ 83E2290
- .4byte 0x000001e0
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 30,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000011d9
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 29,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000021ca
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 28,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000031ff
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_83E22A0:: @ 83E22A0
- .byte 1, 3, 10, 19, 8, 10
- .2byte 0x0030
- @ {
- @ .bg = 1,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 10,
- @ .width = 19,
- @ .height = 8,
- @ .paletteNum = 10,
- @ .baseBlock = 0x0030
- @ }
- .byte 2, 3, 10, 19, 8, 10
- .2byte 0x00c8
- @ {
- @ .bg = 2,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 10,
- @ .width = 19,
- @ .height = 8,
- @ .paletteNum = 10,
- @ .baseBlock = 0x00c8
- @ }
- .byte 3, 8, 6, 14, 2, 10
- .2byte 0x0030
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 8,
- @ .tilemapTop = 6,
- @ .width = 14,
- @ .height = 2,
- @ .paletteNum = 10,
- @ .baseBlock = 0x0030
- @ }
- .byte 3, 9, 4, 16, 2, 10
- .2byte 0x004c
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 9,
- @ .tilemapTop = 4,
- @ .width = 16,
- @ .height = 2,
- @ .paletteNum = 10,
- @ .baseBlock = 0x004c
- @ }
- .byte 0, 0, 0, 30, 2, 11
- .2byte 0x006c
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 30,
- @ .height = 2,
- @ .paletteNum = 11,
- @ .baseBlock = 0x006c
- @ }
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
- @ {
- @ .bg = 255,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
-
-gUnknown_83E22D0:: @ 83E22D0
- .string "abcdef .", 8
- .string "ghijkl ,", 8
- .string "mnopqrs", 8
- .string "tuvwxyz", 8
- .string "ABCDEF .", 8
- .string "GHIJKL ,", 8
- .string "MNOPQRS", 8
- .string "TUVWXYZ", 8
- .string "01234", 8
- .string "56789", 8
- .string "!?♂♀/-", 8
- .string "…“”‘'", 8
-
-gUnknown_83E2330:: @ 83E2330
- .byte 0x08, 0x08, 0x06
-
-gUnknown_83E2333:: @ 83E2333
- .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x16, 0x2c, 0x42, 0x58, 0x6e, 0x00, 0x00
-
-gUnknown_83E234B:: @ 83E234B
- .byte 0x00, 0x02, 0x01
-
-gUnknown_83E234E:: @ 83E234E
- .byte 0x01, 0x00, 0x02
-
-gUnknown_83E2351:: @ 83E2351
- .byte 0x02, 0x01, 0x00
-
-gUnknown_83E2354:: @ 83E2354
- .4byte sub_809E384
- .4byte sub_809E3AC
- .4byte sub_809E440
- .4byte sub_809E4D4
-
-gUnknown_83E2364:: @ 83E2364
- .2byte 0x0000, 0xfffc, 0xfffe, 0xffff
-
-gUnknown_83E236C:: @ 83E236C
- .2byte 0x0002, 0x0003, 0x0002, 0x0001
-
-gUnknown_83E2374:: @ 83E2374
- .byte 0x01, 0x02, 0x03, 0x00
-
-gUnknown_83E2378:: @ 83E2378
- .4byte sub_809EC7C
- .4byte sub_809ECD0
- .4byte sub_809ECD4
- .4byte sub_809ED48
-
-gUnknown_83E2388:: @ 83E2388
- .2byte 0x0001, 0x0003, 0x0002
-
-gUnknown_83E238E:: @ 83E238E
- .2byte 0x0004, 0x0006, 0x0005
-
-gUnknown_83E2394:: @ 83E2394
- .4byte nullsub_54
- .4byte sub_809EF54
- .4byte sub_809EFB0
- .4byte sub_809EFF0
- .4byte sub_809F04C
-
-gUnknown_83E23A8:: @ 83E23A8
- obj_image_anim_frame 0, 10
- obj_image_anim_frame 24, 10
- obj_image_anim_frame 0, 10
- obj_image_anim_frame 32, 10
- obj_image_anim_jump 0
-
-gUnknown_83E23BC:: @ 83E23BC
- .4byte gUnknown_83E23A8
-
-gUnknown_83E23C0:: @ 83E23C0
- obj_tiles gUnknown_83E1980, 0x0900, 255
-
-gUnknown_83E23C8:: @ 83E23C8
- obj_pal gUnknown_8E98004, 255
-
-gUnknown_83E23D0:: @ 83E23D0
- .4byte sub_809F11C
- .4byte KeyboardKeyHandler_Page
- .4byte KeyboardKeyHandler_Backspace
- .4byte KeyboardKeyHandler_OK
-
-gUnknown_83E23E0:: @ 83E23E0
- .4byte InputState_Disabled
- .4byte InputState_Enabled
-
-gUnknown_83E23E8:: @ 83E23E8
- .2byte 0x0000, 0x0000, 0x0000, 0xffff, 0x0001
-
-gUnknown_83E23F2:: @ 83E23F2
- .2byte 0x0000, 0xffff, 0x0001, 0x0000, 0x0000
-
-gUnknown_83E23FC:: @ 83E23FC
- .2byte 0x0000, 0x0001, 0x0001, 0x0002
-
-gUnknown_83E2404:: @ 83E2404
- .2byte 0x0000, 0x0000, 0x0003, 0x0000
-
-gUnknown_83E240C:: @ 83E240C
- .4byte sub_809F49C
- .4byte sub_809F49C
- .4byte sub_809F4F0
- .4byte sub_809F4F0
- .4byte sub_809F49C
-
-gUnknown_83E2420:: @ 83E2420
- .4byte nullsub_55
- .4byte sub_809F5C4
-
-gUnknown_83E2428:: @ 83E2428
- .byte 0x00, 0x09, 0x08, 0x00
- .byte 0x05, 0x04, 0x00, 0x00
-
-gUnknown_83E2430:: @ 83E2430
- .byte 0x0d, 0x01, 0x02, 0x00
-
-gUnknown_83E2434:: @ 83E2434
- .byte 0x0e, 0x01, 0x02, 0x00
-
-gUnknown_83E2438:: @ 83E2438
- .byte 0x0f, 0x01, 0x02, 0x00
-
-gUnknown_83E243C:: @ 83E243C
- .byte 0xee, 0xdd, 0xff, 0x00
-
-gUnknown_83E2440:: @ 83E2440
- .4byte gUnknown_83E2434
- .4byte gUnknown_83E2430
- .4byte gUnknown_83E2438
-
-gUnknown_83E244C:: @ 83E244C
- .4byte gUnknown_8E98398
- .4byte gUnknown_8E98458
- .4byte gUnknown_8E98518
-
-gUnknown_83E2458:: @ 83E2458
- .byte 0x0f, 0x01, 0x02
-
- .align 2
-gUnknown_83E245C:: @ 83E245C
- .byte 0x00, 0x07, 0x01, 0x00, 0x01
- .align 2
- .4byte gUnknown_8418E47
-
-gUnknown_83E2468:: @ 83E2468
- .byte 0x00, 0x08, 0x02, 0x00, 0x01
- .align 2
- .4byte gUnknown_8418E52
-
-gUnknown_83E2474:: @ 83E2474
- .byte 0x00, 0x0a, 0x03, 0x01, 0x01
- .align 2
- .4byte gUnknown_8418E5C
-
-gUnknown_83E2480:: @ 83E2480
- .byte 0x00, 0x07, 0x04, 0x00, 0x01
- .align 2
- .4byte gUnknown_8418E69
-
-gUnknown_83E248C:: @ 83E248C
- .4byte gUnknown_83E245C
- .4byte gUnknown_83E2468
- .4byte gUnknown_83E2474
- .4byte gUnknown_83E2474
- .4byte gUnknown_83E2480
-
-gUnknown_83E24A0:: @ 83E24A0
- .4byte 0x00000000, 0x00000000
-
-gUnknown_83E24A8:: @ 3E24A8
- .4byte 0x40000000, 0x00000000
-
-gUnknown_83E24B0:: @ 3E24B0
- .4byte 0x80004000, 0x00000000
-
-gUnknown_83E24B8:: @ 83E24B8
- subsprite 236, 240, 1, 0x0000, 32x8
- subsprite 12, 240, 1, 0x0004, 8x8
- subsprite 236, 248, 1, 0x0005, 32x8
- subsprite 12, 248, 1, 0x0009, 8x8
- subsprite 236, 0, 1, 0x000a, 32x8
- subsprite 12, 0, 1, 0x000e, 8x8
- subsprite 236, 8, 1, 0x000f, 32x8
- subsprite 12, 8, 1, 0x0013, 8x8
-
-gUnknown_83E24D8:: @ 83E24D8
- subsprite 244, 252, 1, 0x0000, 16x8
- subsprite 4, 252, 1, 0x0002, 8x8
-
-gUnknown_83E24E0:: @ 83E24E0
- subsprite 236, 244, 1, 0x0000, 32x8
- subsprite 12, 244, 1, 0x0004, 8x8
- subsprite 236, 252, 1, 0x0005, 32x8
- subsprite 12, 252, 1, 0x0009, 8x8
- subsprite 236, 4, 1, 0x000a, 32x8
- subsprite 12, 4, 1, 0x000e, 8x8
-
-gUnknown_83E24F8::
- subsprite 248, 244, 3, 0x0000, 16x8
- subsprite 248, 252, 3, 0x0002, 16x8
- subsprite 248, 4, 3, 0x0004, 16x8
-
-gUnknown_83E2504:: @ 83E2504
- .byte 0x08
- .align 2
- .4byte gUnknown_83E24B8
-
-gUnknown_83E250C:: @ 83E250C
- .byte 0x02
- .align 2
- .4byte gUnknown_83E24D8
- .byte 0x02
- .align 2
- .4byte gUnknown_83E24D8
- .byte 0x02
- .align 2
- .4byte gUnknown_83E24D8
-
-gUnknown_83E2524:: @ 83E2524
- .byte 0x06
- .align 2
- .4byte gUnknown_83E24E0
-
-gUnknown_83E252C:: @ 83E252C
- .byte 0x03
- .align 2
- .4byte gUnknown_83E24F8
-
-gUnknown_83E2534:: @ 83E2534
- obj_frame_tiles gUnknown_83E1800, 0x00c0
- obj_frame_tiles gUnknown_83E18C0, 0x00c0
-
-gUnknown_83E2544:: @ 83E2544
- obj_image_anim_frame 0, 1
- obj_image_anim_jump 0
-
-gUnknown_83E254C:: @ 83E254C
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 8, 8
- obj_image_anim_end
-
-gUnknown_83E2558:: @ 83E2558
- obj_image_anim_frame 0, 2
- obj_image_anim_frame 1, 2
- obj_image_anim_jump 0
-
-gUnknown_83E2564:: @ 83E2564
- .4byte gUnknown_83E2544
-
-gUnknown_83E2568:: @ 83E2568
- .4byte gUnknown_83E2544
- .4byte gUnknown_83E254C
-
-gUnknown_83E2570:: @ 83E2570
- .4byte gUnknown_83E2558
-
-gUnknown_83E2574:: @ 83E2574
- spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809EC54
-
-gUnknown_83E258C:: @ 83E258C
- spr_template 3, 1, gUnknown_83E24B0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83E25A4:: @ 83E25A4
- spr_template 4, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83E25BC:: @ 83E25BC
- spr_template 0, 6, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83E25D4:: @ 83E25D4
- spr_template 1, 7, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83E25EC:: @ 83E25EC
- spr_template 7, 5, gUnknown_83E24A8, gUnknown_83E2568, NULL, gDummySpriteAffineAnimTable, sub_809E700
-
-gUnknown_83E2604:: @ 83E2604
- spr_template 10, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E7F0
-
-gUnknown_83E261C:: @ 83E261C
- spr_template 11, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E83C
-
-gUnknown_83E2634:: @ 83E2634
- spr_template 65535, 0, gUnknown_83E24A0, gUnknown_83E2570, gUnknown_83E2534, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_83E264C:: @ 83E264C
- .4byte gUnknown_847A955
- .4byte gUnknown_847A976
- .4byte gUnknown_847A997
- .4byte gUnknown_847A9B8
- .4byte gUnknown_847A9D9
- .4byte gUnknown_847A9FA
- .4byte gUnknown_847AA1B
- .4byte gUnknown_847AA3C
- .4byte gUnknown_847AA5D
- .4byte gUnknown_847AA76
- .4byte gUnknown_847AA8F
- .4byte gUnknown_847AAA8
-
-gUnknown_83E267C:: @ 83E267C
- obj_tiles gUnknown_8E98858, 0x01e0, 0
- obj_tiles gUnknown_8E98A38, 0x01e0, 1
- obj_tiles gUnknown_8E985D8, 0x0280, 2
- obj_tiles gUnknown_8E98FD8, 0x0100, 3
- obj_tiles gUnknown_8E98C18, 0x0060, 4
- obj_tiles gUnknown_8E98CB8, 0x0060, 5
- obj_tiles gUnknown_8E98D58, 0x0060, 6
- obj_tiles gUnknown_8E98DF8, 0x0080, 7
- obj_tiles gUnknown_8E98E98, 0x0080, 8
- obj_tiles gUnknown_8E98F38, 0x0080, 9
- obj_tiles gUnknown_8E990D8, 0x0020, 10
- obj_tiles gUnknown_8E990F8, 0x0020, 11
- null_obj_tiles
-
-gUnknown_83E26E4:: @ 83E26E4
- obj_pal gUnknown_8E98024, 0
- obj_pal gUnknown_8E98044, 1
- obj_pal gUnknown_8E98064, 2
- obj_pal gUnknown_8E98084, 3
- obj_pal gUnknown_8E980A4, 4
- obj_pal gUnknown_8E980C4, 5
- obj_pal gUnknown_8E980A4, 6
- obj_pal gUnknown_8E980A4, 7
- null_obj_pal
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 7828d0bcb..50d9935fc 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -128,6 +128,7 @@ void SetSpritePosToMapCoords(s16 x, s16 y, s16 *x2, s16 *y2);
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
u8 ZCoordToPriority(u8 z);
void SetObjectSubpriorityByZCoord(u8 z, struct Sprite * sprite, u8 offset);
+void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables);
// Exported data declarations
diff --git a/include/field_effect.h b/include/field_effect.h
index 3c92afb6a..59de741be 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -24,5 +24,6 @@ void sub_8083598(u8 a0);
void FreeResourcesAndDestroySprite(struct Sprite * sprite, u8 spriteId);
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, bool8 unused);
void ReturnToFieldFromFlyMapSelect(void);
+void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 5565fb64b..3233c2d70 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -37,5 +37,6 @@ bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerSurfingNorth(void);
void player_get_pos_including_state_based_drift(s16 *x, s16 *y);
void sub_805CBE8(void);
+u8 sub_805C7C8(u8 state, u8 gender);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 811bfef93..b3291bf54 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -21,6 +21,7 @@ void nullsub_61(void);
u8 ContextNpcGetTextColor(void);
void SetPCBoxToSendMon(u8);
u16 GetPCBoxToSendMon(void);
+bool8 IsDestinationBoxFull(void);
bool8 ShouldShowBoxWasFullMessage(void);
u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr);
u8 GetUnlockedSeviiAreas(void);
diff --git a/include/graphics.h b/include/graphics.h
index a61d5f62f..d84371e3a 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4895,4 +4895,26 @@ extern const u32 gEasyChatRedRectangularCursor_Tiles[];
extern const u32 gEasyChatSelectGroupHelp_Tiles[];
extern const u32 gEasyChatModeIcons_Tiles[];
+// naming_screen
+extern const u32 gUnknown_8E982BC[];
+extern const u32 gUnknown_8E98458[];
+extern const u32 gUnknown_8E98398[];
+extern const u32 gUnknown_8E98518[];
+extern const u32 gNamingScreenMenu_Gfx[];
+extern const u16 gUnknown_8E98004[];
+extern const u16 gUnknown_8E97FE4[];
+extern const u16 gNamingScreenMenu_Pal[];
+extern const u16 gUnknown_8E98858[];
+extern const u16 gUnknown_8E98A38[];
+extern const u16 gUnknown_8E985D8[];
+extern const u16 gUnknown_8E98FD8[];
+extern const u16 gUnknown_8E98C18[];
+extern const u16 gUnknown_8E98CB8[];
+extern const u16 gUnknown_8E98D58[];
+extern const u16 gUnknown_8E98DF8[];
+extern const u16 gUnknown_8E98E98[];
+extern const u16 gUnknown_8E98F38[];
+extern const u16 gUnknown_8E990D8[];
+extern const u16 gUnknown_8E990F8[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/data_8479668.h b/include/keyboard_text.h
index aba3721c8..cc436c2d3 100644
--- a/include/data_8479668.h
+++ b/include/keyboard_text.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_DATA_8479668_H
-#define GUARD_DATA_8479668_H
+#ifndef GUARD_KEYBOARD_TEXT_H
+#define GUARD_KEYBOARD_TEXT_H
extern const u8 gText_UnionRoomChatKeyboard_ABCDE[];
extern const u8 gText_UnionRoomChatKeyboard_FGHIJ[];
@@ -37,4 +37,17 @@ extern const u8 gUnknown_847A8FA[];
extern const u8 gUnknown_847A913[];
extern const u8 gUnknown_847A934[];
-#endif //GUARD_DATA_8479668_H
+extern const u8 gText_NamingScreenKeyboard_abcdef[];
+extern const u8 gText_NamingScreenKeyboard_ghijkl[];
+extern const u8 gText_NamingScreenKeyboard_mnopqrs[];
+extern const u8 gText_NamingScreenKeyboard_tuvwxyz[];
+extern const u8 gText_NamingScreenKeyboard_ABCDEF[];
+extern const u8 gText_NamingScreenKeyboard_GHIJKL[];
+extern const u8 gText_NamingScreenKeyboard_MNOPQRS[];
+extern const u8 gText_NamingScreenKeyboard_TUVWXYZ[];
+extern const u8 gText_NamingScreenKeyboard_01234[];
+extern const u8 gText_NamingScreenKeyboard_56789[];
+extern const u8 gText_NamingScreenKeyboard_Symbols1[];
+extern const u8 gText_NamingScreenKeyboard_Symbols2[];
+
+#endif //GUARD_KEYBOARD_TEXT_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index be2cf34f8..1e8d11b3a 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -6,9 +6,9 @@
#define NAMING_SCREEN_PLAYER 0
#define NAMING_SCREEN_BOX 1
#define NAMING_SCREEN_CAUGHT_MON 2
-#define NAMING_SCREEN_3 3
-#define NAMING_SCREEN_WALDA 4
+#define NAMING_SCREEN_NAME_RATER 3
+#define NAMING_SCREEN_RIVAL 4
-void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void));
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback);
#endif // GUARD_NAMING_SCREEN_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 81f50e1e9..c636651f3 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -6,13 +6,12 @@
#define TOTAL_BOXES_COUNT 14
#define IN_BOX_COUNT 30
-u8* GetBoxNamePtr(u8 boxNumber);
+u8 *GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick);
void CompactPartySlots(void);
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
-u8 * GetBoxNamePtr(u8 boxId);
void sub_808CE60(void);
void ResetPokemonStorageSystem(void);
u8 StorageGetCurrentBox(void);
diff --git a/include/strings.h b/include/strings.h
index 443d84de2..be3555780 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1350,4 +1350,12 @@ extern const u8 gUnknown_8418AA1[];
extern const u8 gUnknown_8418AB2[];
extern const u8 gUnknown_841EE2B[];
+// naming_screen
+extern const u8 gText_MoveOkBack[];
+extern const u8 gText_AlphabetUpperLower[];
+extern const u8 gText_YourName[];
+extern const u8 gText_BoxName[];
+extern const u8 gText_PkmnsNickname[];
+extern const u8 gText_RivalsName[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index c2b35f7a2..ef3c4a997 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -141,7 +141,7 @@ SECTIONS {
src/special_field_anim.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
- asm/naming_screen.o(.text);
+ src/naming_screen.o(.text);
src/money.o(.text);
src/script_pokemon_util.o(.text);
src/field_poison.o(.text);
@@ -459,7 +459,7 @@ SECTIONS {
src/special_field_anim.o(.rodata);
src/berry.o(.rodata);
src/script_menu.o(.rodata);
- data/naming_screen.o(.rodata);
+ src/naming_screen.o(.rodata);
src/pokemon_size_record.o(.rodata);
src/item_use.o(.rodata);
src/battle_anim_effects_1.o(.rodata);
@@ -591,6 +591,7 @@ SECTIONS {
src/trainer_tower.o(.rodata);
src/minigame_countdown.o(.rodata);
src/berry_fix_program.o(.rodata);
+ src/keyboard_text.o(.rodata);
data/data_8479668.o(.rodata);
/* These should not be moved to C files */
diff --git a/src/daycare.c b/src/daycare.c
index 36fb34c79..4d1b5aa7b 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1967,7 +1967,7 @@ static void CB2_EggHatch_1(void)
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
- DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
+ DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
break;
case 1:
case -1:
diff --git a/src/easy_chat_3.c b/src/easy_chat_3.c
index 3d9d6c9f7..1501762bc 100644
--- a/src/easy_chat_3.c
+++ b/src/easy_chat_3.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "gflib.h"
-#include "data_8479668.h"
+#include "keyboard_text.h"
#include "decompress.h"
#include "easy_chat.h"
#include "graphics.h"
diff --git a/src/field_specials.c b/src/field_specials.c
index e8def2c39..25d2eceb7 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1637,7 +1637,7 @@ void ChangeBoxPokemonNickname(void)
species = GetBoxMonData(pokemon, MON_DATA_SPECIES, NULL);
gender = GetBoxMonGender(pokemon);
personality = GetBoxMonData(pokemon, MON_DATA_PERSONALITY, NULL);
- DoNamingScreen(3, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
+ DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
}
static void ChangeBoxPokemonNickname_CB(void)
@@ -1657,7 +1657,7 @@ void ChangePokemonNickname(void)
species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
gender = GetMonGender(&gPlayerParty[gSpecialVar_0x8004]);
personality = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL);
- DoNamingScreen(3, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
+ DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
}
static void ChangePokemonNickname_CB(void)
diff --git a/src/graphics.c b/src/graphics.c
index cb35568fa..69e804fd9 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1182,14 +1182,14 @@ const u32 gUnknown_8E97EC4[] = INCBIN_U32("graphics/interface/learn_move.bin.lz"
const u16 gUnknown_8E97FE4[] = INCBIN_U16("graphics/interface/naming_screen_8E97FE4.gbapal");
const u16 gUnknown_8E98004[] = INCBIN_U16("graphics/interface/naming_screen_8E98004.gbapal");
-const u16 gUnknown_8E98024[] = INCBIN_U16("graphics/interface/naming_screen_8E98024.gbapal");
+const u16 gNamingScreenMenu_Pal[] = INCBIN_U16("graphics/interface/naming_screen_8E98024.gbapal");
const u16 gUnknown_8E98044[] = INCBIN_U16("graphics/interface/naming_screen_8E98044.gbapal");
const u16 gUnknown_8E98064[] = INCBIN_U16("graphics/interface/naming_screen_8E98064.gbapal");
const u16 gUnknown_8E98084[] = INCBIN_U16("graphics/interface/naming_screen_8E98084.gbapal");
const u16 gUnknown_8E980A4[] = INCBIN_U16("graphics/interface/naming_screen_8E980A4.gbapal");
const u16 gUnknown_8E980C4[] = INCBIN_U16("graphics/interface/naming_screen_8E980C4.gbapal");
-const u32 gUnknown_8E980E4[] = INCBIN_U32("graphics/interface/naming_screen_menu.4bpp.lz");
+const u32 gNamingScreenMenu_Gfx[] = INCBIN_U32("graphics/interface/naming_screen_menu.4bpp.lz");
const u32 gUnknown_8E982BC[] = INCBIN_U32("graphics/interface/naming_screen_menu.bin.lz");
const u32 gUnknown_8E98398[] = INCBIN_U32("graphics/interface/naming_screen_E98398.bin.lz");
const u32 gUnknown_8E98458[] = INCBIN_U32("graphics/interface/naming_screen_E98458.bin.lz");
diff --git a/src/keyboard_text.c b/src/keyboard_text.c
new file mode 100644
index 000000000..5db1a6aaa
--- /dev/null
+++ b/src/keyboard_text.c
@@ -0,0 +1,61 @@
+#include "global.h"
+
+// easy_chat_3
+const u8 gUnknown_847A8D8[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others");
+const u8 gUnknown_847A8FA[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L");
+const u8 gUnknown_847A913[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} ");
+const u8 gUnknown_847A934[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} ");
+
+// naming_screen
+const u8 gText_NamingScreenKeyboard_abcdef[] = _("{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.");
+const u8 gText_NamingScreenKeyboard_ghijkl[] = _("{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},");
+const u8 gText_NamingScreenKeyboard_mnopqrs[] = _("{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} ");
+const u8 gText_NamingScreenKeyboard_tuvwxyz[] = _("{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} ");
+const u8 gText_NamingScreenKeyboard_ABCDEF[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.");
+const u8 gText_NamingScreenKeyboard_GHIJKL[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},");
+const u8 gText_NamingScreenKeyboard_MNOPQRS[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} ");
+const u8 gText_NamingScreenKeyboard_TUVWXYZ[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} ");
+const u8 gText_NamingScreenKeyboard_01234[] = _("{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} ");
+const u8 gText_NamingScreenKeyboard_56789[] = _("{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} ");
+const u8 gText_NamingScreenKeyboard_Symbols1[] = _("{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-");
+const u8 gText_NamingScreenKeyboard_Symbols2[] = _("{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} ");
+
+// union_room_chat
+const u8 gText_UnionRoomChatKeyboard_ABCDE[] = _("ABCDE");
+const u8 gText_UnionRoomChatKeyboard_FGHIJ[] = _("FGHIJ");
+const u8 gText_UnionRoomChatKeyboard_KLMNO[] = _("KLMNO");
+const u8 gText_UnionRoomChatKeyboard_PQRST[] = _("PQRST");
+const u8 gText_UnionRoomChatKeyboard_UVWXY[] = _("UVWXY");
+const u8 gText_UnionRoomChatKeyboard_Z[] = _("Z ");
+const u8 gText_UnionRoomChatKeyboard_01234Upper[] = _("01234");
+const u8 gText_UnionRoomChatKeyboard_56789Upper[] = _("56789");
+const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[] = _(".,!? ");
+const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[] = _("-/&… ");
+const u8 gText_UnionRoomChatKeyboard_abcde[] = _("abcde");
+const u8 gText_UnionRoomChatKeyboard_fghij[] = _("fghij");
+const u8 gText_UnionRoomChatKeyboard_klmno[] = _("klmno");
+const u8 gText_UnionRoomChatKeyboard_pqrst[] = _("pqrst");
+const u8 gText_UnionRoomChatKeyboard_uvwxy[] = _("uvwxy");
+const u8 gText_UnionRoomChatKeyboard_z[] = _("z ");
+const u8 gText_UnionRoomChatKeyboard_01234Lower[] = _("01234");
+const u8 gText_UnionRoomChatKeyboard_56789Lower[] = _("56789");
+const u8 gText_UnionRoomChatKeyboard_PunctuationLower[] = _(".,!? ");
+const u8 gText_UnionRoomChatKeyboard_SymbolsLower[] = _("-/&… ");
+const u8 gText_BlankString_847AB39[] = _("");
+const u8 gText_BlankString_847AB3A[] = _("");
+const u8 gText_BlankString_847AB3B[] = _("");
+const u8 gText_BlankString_847AB3C[] = _("");
+const u8 gText_BlankString_847AB3D[] = _("");
+const u8 gText_BlankString_847AB3E[] = _("");
+const u8 gText_BlankString_847AB3F[] = _("");
+const u8 gText_BlankString_847AB40[] = _("");
+const u8 gText_UnionRoomChatKeyboard_Emoji1[] = _("{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}");
+const u8 gText_UnionRoomChatKeyboard_Emoji2[] = _("{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}");
+const u8 gText_UnionRoomChatKeyboard_Emoji3[] = _("{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}");
+const u8 gText_UnionRoomChatKeyboard_Emoji4[] = _("♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}");
+const u8 gText_UnionRoomChatKeyboard_Emoji5[] = _("{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}");
+const u8 gText_UnionRoomChatKeyboard_Emoji6[] = _("{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}");
+const u8 gText_UnionRoomChatKeyboard_Emoji7[] = _("{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}");
+const u8 gText_UnionRoomChatKeyboard_Emoji8[] = _("{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}");
+const u8 gText_UnionRoomChatKeyboard_Emoji9[] = _("{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}");
+const u8 gText_UnionRoomChatKeyboard_Emoji10[] = _("{EXTRA 210}{EXTRA 208}ょ: ");
diff --git a/src/naming_screen.c b/src/naming_screen.c
new file mode 100644
index 000000000..364fc3fe6
--- /dev/null
+++ b/src/naming_screen.c
@@ -0,0 +1,2401 @@
+#include "global.h"
+#include "gflib.h"
+#include "data.h"
+#include "keyboard_text.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
+#include "field_effect.h"
+#include "field_player_avatar.h"
+#include "field_specials.h"
+#include "graphics.h"
+#include "help_system.h"
+#include "menu.h"
+#include "overworld.h"
+#include "naming_screen.h"
+#include "new_menu_helpers.h"
+#include "pokemon_icon.h"
+#include "pokemon_storage_system.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "trig.h"
+#include "constants/help_system.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "constants/event_objects.h"
+
+#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
+
+#define KBEVENT_NONE 0
+#define KBEVENT_PRESSED_A 5
+#define KBEVENT_PRESSED_B 6
+#define KBEVENT_PRESSED_SELECT 8
+#define KBEVENT_PRESSED_START 9
+
+#define KBROW_COUNT 4
+
+enum
+{
+ KBPAGE_LETTERS_LOWER,
+ KBPAGE_LETTERS_UPPER,
+ KBPAGE_SYMBOLS,
+ KBPAGE_COUNT,
+};
+
+enum
+{
+ MAIN_STATE_BEGIN_FADE_IN,
+ MAIN_STATE_WAIT_FADE_IN,
+ MAIN_STATE_HANDLE_INPUT,
+ MAIN_STATE_MOVE_TO_OK_BUTTON,
+ MAIN_STATE_START_PAGE_SWAP,
+ MAIN_STATE_WAIT_PAGE_SWAP,
+ MAIN_STATE_6,
+ MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
+ MAIN_STATE_BEGIN_FADE_OUT,
+ MAIN_STATE_WAIT_FADE_OUT_AND_EXIT,
+};
+
+enum
+{
+ INPUT_STATE_DISABLED,
+ INPUT_STATE_ENABLED,
+};
+
+enum
+{
+ KEY_ROLE_CHAR,
+ KEY_ROLE_PAGE,
+ KEY_ROLE_BACKSPACE,
+ KEY_ROLE_OK,
+};
+
+struct NamingScreenTemplate
+{
+ u8 copyExistingString;
+ u8 maxChars;
+ u8 iconFunction;
+ u8 addGenderIcon;
+ u8 initialPage;
+ const u8 *title;
+};
+
+struct NamingScreenData
+{
+ /*0x0*/ u8 tilemapBuffer1[0x800];
+ /*0x800*/ u8 tilemapBuffer2[0x800];
+ /*0x800*/ u8 tilemapBuffer3[0x800];
+ /*0x1800*/ u8 textBuffer[0x10];
+ /*0x1810*/ u8 tileBuffer[0x600];
+ /*0x1E10*/ u8 state;
+ /*0x1E11*/ u8 windows[5];
+ /*0x1E16*/ u16 inputCharBaseXPos;
+ /*0x1E18*/ u16 bg1vOffset;
+ /*0x1E1A*/ u16 bg2vOffset;
+ /*0x1E1C*/ u16 bg1Priority;
+ /*0x1E1E*/ u16 bg2Priority;
+ /*0x1E20*/ u8 bgToReveal;
+ /*0x1E21*/ u8 bgToHide;
+ /*0x1E22*/ u8 currentPage;
+ /*0x1E23*/ u8 cursorSpriteId;
+ /*0x1E24*/ u8 selectBtnFrameSpriteId;
+ /*0x1E25*/ u8 keyRepeatStartDelayCopy;
+ /*0x1E28*/ const struct NamingScreenTemplate *template;
+ /*0x1E2C*/ u8 templateNum;
+ /*0x1E30*/ u8 *destBuffer;
+ /*0x1E34*/ u16 monSpecies;
+ /*0x1E36*/ u16 monGender;
+ /*0x1E38*/ u32 monPersonality;
+ /*0x1E3C*/ MainCallback returnCallback;
+};
+
+static EWRAM_DATA struct NamingScreenData * sNamingScreenData = NULL;
+
+static void CB2_NamingScreen(void);
+static void NamingScreen_Init(void);
+static void NamingScreen_InitBGs(void);
+static void sub_809DD60(void);
+static void sub_809DD88(u8 taskId);
+static bool8 MainState_BeginFadeIn(void);
+static bool8 MainState_WaitFadeIn(void);
+static bool8 MainState_HandleInput(void);
+static bool8 MainState_MoveToOKButton(void);
+static bool8 pokemon_store(void);
+static bool8 MainState_BeginFadeInOut(void);
+static bool8 MainState_WaitFadeOutAndExit(void);
+static void pokemon_transfer_to_pc_with_message(void);
+static bool8 sub_809E1D4(void);
+static bool8 MainState_StartPageSwap(void);
+static bool8 MainState_WaitPageSwap(void);
+static void StartPageSwapAnim(void);
+static void Task_HandlePageSwapAnim(u8 taskId);
+static bool8 IsPageSwapAnimNotInProgress(void);
+static bool8 PageSwapAnimState_Init(struct Task * task);
+static bool8 PageSwapAnimState_1(struct Task * task);
+static bool8 PageSwapAnimState_2(struct Task * task);
+static bool8 PageSwapAnimState_Done(struct Task * task);
+static void sub_809E518(u8 a0, u8 a1, u8 a2);
+static void Task_809E58C(u8 taskId);
+static u16 sub_809E644(u8 tag);
+static void sub_809E6B8(u8 a0);
+static void sub_809E6E0(struct Task * task, u8 a1, u8 a2);
+static void sub_809E700(struct Sprite * sprite);
+static void sub_809E7F0(struct Sprite * sprite);
+static void sub_809E83C(struct Sprite * sprite);
+static void sub_809E898(void);
+static void CursorInit(void);
+static void SetCursorPos(s16 x, s16 y);
+static void GetCursorPos(s16 *xP, s16 *yP);
+static void MoveCursorToOKButton(void);
+static void sub_809EA0C(u8 a0);
+static void sub_809EA64(u8 a0);
+static bool8 IsCursorAnimFinished(void);
+static u8 GetCurrentPageColumnCount(void);
+static void CreatePageSwitcherSprites(void);
+static void sub_809EC20(void);
+static bool8 PageSwapSpritesCB_Init(struct Sprite * sprite);
+static bool8 PageSwapSpritesCB_Idle(struct Sprite * sprite);
+static bool8 PageSwapSpritesCB_SwapHide(struct Sprite * sprite);
+static bool8 PageSwapSpritesCB_SwapShow(struct Sprite * sprite);
+static void sub_809ED88(u8 a0, struct Sprite * spr1, struct Sprite * spr2);
+static void CreateBackOkSprites(void);
+static void CreateUnderscoreSprites(void);
+static void CreateInputTargetIcon(void);
+static void NamingScreen_NoCreateIcon(void);
+static void NamingScreen_CreatePlayerIcon(void);
+static void NamingScreen_CreatePCIcon(void);
+static void NamingScreen_CreateMonIcon(void);
+static void NamingScreen_CreateRivalIcon(void);
+static bool8 HandleKeyboardEvent(void);
+static bool8 KeyboardKeyHandler_Character(u8);
+static bool8 KeyboardKeyHandler_Page(u8);
+static bool8 KeyboardKeyHandler_Backspace(u8);
+static bool8 KeyboardKeyHandler_OK(u8);
+static bool8 TriggerKeyboardChange(void);
+static u8 GetInputEvent(void);
+static void SetInputState(u8 state);
+static void Task_HandleInput(u8 taskId);
+static void InputState_Disabled(struct Task * task);
+static void InputState_Enabled(struct Task * task);
+static void HandleDpadMovement(struct Task * task);
+static void PrintTitle(void);
+static void AddGenderIconFunc_No(void);
+static void AddGenderIconFunc_Yes(void);
+static void DeleteTextCharacter(void);
+static u8 GetTextCaretPosition(void);
+static bool8 AppendCharToBuffer_CheckBufferFull(void);
+static void AddTextCharacter(u8 character);
+static void CopyStringToDestBuffer(void);
+static void choose_name_or_words_screen_load_bg_tile_patterns(void);
+static void sub_809F8C0(void);
+static void choose_name_or_words_screen_apply_bg_pals(void);
+static void DecompressToBgTilemapBuffer(u8 bgId, const u32 * tmap);
+static void PrintBufferCharactersOnScreen(void);
+static void sub_809F9E8(u8 windowId, u8 kbPage);
+static void sub_809FA60(void);
+static void sub_809FAE4(void);
+static void sub_809FB70(void);
+static void NamingScreen_TurnOffScreen(void);
+static void NamingScreen_InitDisplayMode(void);
+static void VBlankCB_NamingScreen(void);
+static void ShowAllBgs(void);
+static bool8 IsLetter(u8 character);
+
+// Forward declarations
+
+static const struct SubspriteTable gUnknown_83E2504[];
+static const struct SubspriteTable gUnknown_83E250C[];
+static const struct SubspriteTable gUnknown_83E2524[];
+static const struct SubspriteTable gUnknown_83E252C[];
+
+static const struct SpriteTemplate gUnknown_83E2574;
+static const struct SpriteTemplate gUnknown_83E258C;
+static const struct SpriteTemplate gUnknown_83E25A4;
+static const struct SpriteTemplate gUnknown_83E25BC;
+static const struct SpriteTemplate gUnknown_83E25D4;
+static const struct SpriteTemplate gUnknown_83E25EC;
+static const struct SpriteTemplate sSpriteTemplate_InputArrow;
+static const struct SpriteTemplate sSpriteTemplate_Underscore;
+static const struct SpriteTemplate gUnknown_83E2634;
+
+static const u8 *const sNamingScreenKeyboardText[][KBROW_COUNT];
+
+static const struct SpriteSheet gUnknown_83E267C[];
+static const struct SpritePalette gUnknown_83E26E4[];
+
+static const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1800.4bpp");
+static const u16 gUnknown_83E18C0[] = INCBIN_U16("graphics/interface/naming_screen_83E18C0.4bpp");
+static const u16 gUnknown_83E1980[] = INCBIN_U16("graphics/interface/naming_screen_83E1980.4bpp");
+
+static const u8 *const sTransferredToPCMessages[] = {
+ Text_MonSentToBoxInSomeonesPC,
+ Text_MonSentToBoxInBillsPC,
+ Text_MonSentToBoxSomeonesBoxFull,
+ Text_MonSentToBoxBillsBoxFull
+};
+
+static const struct BgTemplate gUnknown_83E2290[4] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate gUnknown_83E22A0[6] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 3,
+ .tilemapTop = 10,
+ .width = 19,
+ .height = 8,
+ .paletteNum = 10,
+ .baseBlock = 0x0030
+ }, {
+ .bg = 2,
+ .tilemapLeft = 3,
+ .tilemapTop = 10,
+ .width = 19,
+ .height = 8,
+ .paletteNum = 10,
+ .baseBlock = 0x00c8
+ }, {
+ .bg = 3,
+ .tilemapLeft = 8,
+ .tilemapTop = 6,
+ .width = 14,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x0030
+ }, {
+ .bg = 3,
+ .tilemapLeft = 9,
+ .tilemapTop = 4,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x004c
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 2,
+ .paletteNum = 11,
+ .baseBlock = 0x006c
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const u8 gUnknown_83E22D0[][4][8] = {
+ [KBPAGE_LETTERS_LOWER] = {
+ __("abcdef ."),
+ __("ghijkl ,"),
+ __("mnopqrs"),
+ __("tuvwxyz"),
+ },
+ [KBPAGE_LETTERS_UPPER] = {
+ __("ABCDEF ."),
+ __("GHIJKL ,"),
+ __("MNOPQRS"),
+ __("TUVWXYZ"),
+ },
+ [KBPAGE_SYMBOLS] = {
+ __("01234"),
+ __("56789"),
+ __("!?♂♀/-"),
+ __("…“”‘'"),
+ }
+};
+
+static const u8 gUnknown_83E2330[] = {
+ [KBPAGE_LETTERS_LOWER] = 8, // lower
+ [KBPAGE_LETTERS_UPPER] = 8, // upper
+ [KBPAGE_SYMBOLS] = 6
+};
+
+static const u8 gUnknown_83E2333[][8] = {
+ [KBPAGE_LETTERS_LOWER] = {
+ 0,
+ 12,
+ 24,
+ 56,
+ 68,
+ 80,
+ 92,
+ 123
+ },
+ [KBPAGE_LETTERS_UPPER] = {
+ 0,
+ 12,
+ 24,
+ 56,
+ 68,
+ 80,
+ 92,
+ 123
+ },
+ [KBPAGE_SYMBOLS] = {
+ 0,
+ 22,
+ 44,
+ 66,
+ 88,
+ 110
+ }
+};
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[];
+
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback)
+{
+ sNamingScreenData = Alloc(sizeof(struct NamingScreenData));
+ if (!sNamingScreenData)
+ {
+ SetMainCallback2(returnCallback);
+ }
+ else
+ {
+ sNamingScreenData->templateNum = templateNum;
+ sNamingScreenData->monSpecies = monSpecies;
+ sNamingScreenData->monGender = monGender;
+ sNamingScreenData->monPersonality = monPersonality;
+ sNamingScreenData->destBuffer = destBuffer;
+ sNamingScreenData->returnCallback = returnCallback;
+
+ if (templateNum == 0)
+ StartTimer1();
+
+ SetMainCallback2(CB2_NamingScreen);
+ }
+}
+
+static void CB2_NamingScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ NamingScreen_TurnOffScreen();
+ NamingScreen_Init();
+ gMain.state++;
+ break;
+ case 1:
+ NamingScreen_InitBGs();
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 3:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 4:
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 5:
+ choose_name_or_words_screen_apply_bg_pals();
+ gMain.state++;
+ break;
+ case 6:
+ choose_name_or_words_screen_load_bg_tile_patterns();
+ gMain.state++;
+ break;
+ case 7:
+ sub_809E898();
+ UpdatePaletteFade();
+ ShowAllBgs();
+ gMain.state++;
+ break;
+ default:
+ sub_809F8C0();
+ sub_809DD60();
+ break;
+ }
+}
+
+static void NamingScreen_Init(void)
+{
+ sNamingScreenData->state = 0;
+ sNamingScreenData->bg1vOffset = 0;
+ sNamingScreenData->bg2vOffset = 0;
+ sNamingScreenData->bg1Priority = BGCNT_PRIORITY(1);
+ sNamingScreenData->bg2Priority = BGCNT_PRIORITY(2);
+ sNamingScreenData->bgToReveal = 0;
+ sNamingScreenData->bgToHide = 1;
+ sNamingScreenData->template = sNamingScreenTemplates[sNamingScreenData->templateNum];
+ sNamingScreenData->currentPage = sNamingScreenData->template->initialPage;
+ sNamingScreenData->inputCharBaseXPos = (240 - sNamingScreenData->template->maxChars * 8) / 2 + 6;
+ sNamingScreenData->keyRepeatStartDelayCopy = gKeyRepeatStartDelay;
+ memset(sNamingScreenData->textBuffer, 0xFF, sizeof(sNamingScreenData->textBuffer));
+ if (sNamingScreenData->template->copyExistingString != 0)
+ StringCopy(sNamingScreenData->textBuffer, sNamingScreenData->destBuffer);
+ gKeyRepeatStartDelay = 16;
+}
+
+static void sub_809DB70(void)
+{
+ u8 i;
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].inUse)
+ gSprites[i].invisible = FALSE;
+ }
+ sub_809EA0C(0);
+}
+
+static void NamingScreen_InitBGs(void)
+{
+ u8 i;
+
+ DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3, (void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_83E2290, NELEMS(gUnknown_83E2290));
+
+ 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();
+ ResetBg0();
+
+ for (i = 0; i < NELEMS(gUnknown_83E22A0) - 1; i++)
+ sNamingScreenData->windows[i] = AddWindow(&gUnknown_83E22A0[i]);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0xC, 0x8));
+
+ SetBgTilemapBuffer(1, sNamingScreenData->tilemapBuffer1);
+ SetBgTilemapBuffer(2, sNamingScreenData->tilemapBuffer2);
+ SetBgTilemapBuffer(3, sNamingScreenData->tilemapBuffer3);
+
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20);
+ FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20);
+}
+
+static void sub_809DD60(void)
+{
+ CreateTask(sub_809DD88, 2);
+ SetMainCallback2(sub_809FB70);
+ BackupHelpContext();
+ SetHelpContext(HELPCONTEXT_NAMING_SCREEN);
+}
+
+static void sub_809DD88(u8 taskId)
+{
+ switch (sNamingScreenData->state)
+ {
+ case MAIN_STATE_BEGIN_FADE_IN:
+ MainState_BeginFadeIn();
+ sub_809DB70();
+ NamingScreen_InitDisplayMode();
+ break;
+ case MAIN_STATE_WAIT_FADE_IN:
+ MainState_WaitFadeIn();
+ break;
+ case MAIN_STATE_HANDLE_INPUT:
+ MainState_HandleInput();
+ break;
+ case MAIN_STATE_MOVE_TO_OK_BUTTON:
+ MainState_MoveToOKButton();
+ break;
+ case MAIN_STATE_START_PAGE_SWAP:
+ MainState_StartPageSwap();
+ break;
+ case MAIN_STATE_WAIT_PAGE_SWAP:
+ MainState_WaitPageSwap();
+ break;
+ case MAIN_STATE_6:
+ pokemon_store();
+ break;
+ case MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE:
+ sub_809E1D4();
+ break;
+ case MAIN_STATE_BEGIN_FADE_OUT:
+ MainState_BeginFadeInOut();
+ break;
+ case MAIN_STATE_WAIT_FADE_OUT_AND_EXIT:
+ MainState_WaitFadeOutAndExit();
+ break;
+ }
+}
+
+static const u8 sPageOrderLowerFirst[] = {
+ KBPAGE_LETTERS_LOWER,
+ KBPAGE_SYMBOLS,
+ KBPAGE_LETTERS_UPPER
+};
+
+static const u8 sPageOrderUpperFirst[] = {
+ KBPAGE_LETTERS_UPPER,
+ KBPAGE_LETTERS_LOWER,
+ KBPAGE_SYMBOLS
+};
+
+static const u8 sPageOrderSymbolsFirst[] = {
+ KBPAGE_SYMBOLS,
+ KBPAGE_LETTERS_UPPER,
+ KBPAGE_LETTERS_LOWER
+};
+
+static u8 sub_809DE20(u8 a1)
+{
+ return sPageOrderLowerFirst[a1];
+}
+
+static u8 sub_809DE30(void)
+{
+ return sPageOrderUpperFirst[sNamingScreenData->currentPage];
+}
+
+static u8 sub_809DE50(void)
+{
+ return sPageOrderSymbolsFirst[sNamingScreenData->currentPage];
+}
+
+static bool8 MainState_BeginFadeIn(void)
+{
+ DecompressToBgTilemapBuffer(3, gUnknown_8E982BC);
+ sNamingScreenData->currentPage = KBPAGE_LETTERS_UPPER;
+ DecompressToBgTilemapBuffer(2, gUnknown_8E98458);
+ DecompressToBgTilemapBuffer(1, gUnknown_8E98398);
+ sub_809F9E8(sNamingScreenData->windows[1], KBPAGE_LETTERS_LOWER);
+ sub_809F9E8(sNamingScreenData->windows[0], KBPAGE_LETTERS_UPPER);
+ PrintBufferCharactersOnScreen();
+ PrintTitle();
+ sub_809FAE4();
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ BlendPalettes(-1, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sNamingScreenData->state++;
+ return FALSE;
+}
+
+static bool8 MainState_WaitFadeIn(void)
+{
+ if (!gPaletteFade.active)
+ {
+ SetInputState(INPUT_STATE_ENABLED);
+ sub_809EA64(1);
+ sNamingScreenData->state++;
+ }
+ return FALSE;
+}
+
+static bool8 MainState_HandleInput(void)
+{
+ return HandleKeyboardEvent();
+}
+
+static bool8 MainState_MoveToOKButton(void)
+{
+ if (IsCursorAnimFinished())
+ {
+ SetInputState(INPUT_STATE_ENABLED);
+ MoveCursorToOKButton();
+ sNamingScreenData->state = MAIN_STATE_HANDLE_INPUT;
+ }
+ return FALSE;
+}
+
+static bool8 pokemon_store(void)
+{
+ CopyStringToDestBuffer();
+ SetInputState(INPUT_STATE_DISABLED);
+ sub_809EA64(0);
+ sub_809E518(3, 0, 1);
+ if (sNamingScreenData->templateNum == NAMING_SCREEN_CAUGHT_MON &&
+ CalculatePlayerPartyCount() >= 6)
+ {
+ pokemon_transfer_to_pc_with_message();
+ sNamingScreenData->state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
+ return FALSE;
+ }
+ else
+ {
+ sNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT;
+ return TRUE; //Exit the naming screen
+ }
+}
+
+static bool8 MainState_BeginFadeInOut(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sNamingScreenData->state++;
+ return FALSE;
+}
+
+static bool8 MainState_WaitFadeOutAndExit(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (sNamingScreenData->templateNum == NAMING_SCREEN_PLAYER)
+ SeedRngAndSetTrainerId();
+ SetMainCallback2(sNamingScreenData->returnCallback);
+ DestroyTask(FindTaskIdByFunc(sub_809DD88));
+ FreeAllWindowBuffers();
+ FREE_AND_SET_NULL(sNamingScreenData);
+ RestoreHelpContext();
+ }
+ return FALSE;
+}
+
+static void pokemon_transfer_to_pc_with_message(void)
+{
+ u8 stringToDisplay = 0;
+
+ if (!IsDestinationBoxFull())
+ {
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
+ StringCopy(gStringVar2, sNamingScreenData->destBuffer);
+ }
+ else
+ {
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
+ StringCopy(gStringVar2, sNamingScreenData->destBuffer);
+ StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon()));
+ stringToDisplay = 2;
+ }
+
+ if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC))
+ stringToDisplay++;
+
+ StringExpandPlaceholders(gStringVar4, sTransferredToPCMessages[stringToDisplay]);
+ DrawDialogueFrame(0, FALSE);
+ gTextFlags.canABSpeedUpPrint = TRUE;
+ AddTextPrinterParameterized2(0, 2, gStringVar4, GetTextSpeedSetting(), NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY);
+ CopyWindowToVram(0, 3);
+}
+
+static bool8 sub_809E1D4(void)
+{
+ RunTextPrinters();
+
+ if (!IsTextPrinterActive(0) && (JOY_NEW(A_BUTTON)))
+ sNamingScreenData->state = MAIN_STATE_BEGIN_FADE_OUT;
+
+ return FALSE;
+}
+
+static bool8 MainState_StartPageSwap(void)
+{
+ SetInputState(INPUT_STATE_DISABLED);
+ sub_809EC20();
+ StartPageSwapAnim();
+ sub_809EA0C(1);
+ sub_809E518(0, 0, 1);
+ PlaySE(SE_WIN_OPEN);
+ sNamingScreenData->state = MAIN_STATE_WAIT_PAGE_SWAP;
+ return FALSE;
+}
+
+static bool8 MainState_WaitPageSwap(void)
+{
+ s16 cursorX;
+ s16 cursorY;
+ bool32 var3;
+
+ if (IsPageSwapAnimNotInProgress())
+ {
+
+ GetCursorPos(&cursorX, &cursorY);
+ var3 = (cursorX == GetCurrentPageColumnCount());
+
+ sNamingScreenData->state = MAIN_STATE_HANDLE_INPUT;
+ sNamingScreenData->currentPage++;
+ sNamingScreenData->currentPage %= 3;
+
+ if (var3)
+ {
+ cursorX = GetCurrentPageColumnCount();
+ }
+ else
+ {
+ if (cursorX >= GetCurrentPageColumnCount())
+ cursorX = GetCurrentPageColumnCount() - 1;
+ }
+
+ SetCursorPos(cursorX, cursorY);
+ sub_809FA60();
+ SetInputState(INPUT_STATE_ENABLED);
+ sub_809EA0C(0);
+ }
+ return FALSE;
+}
+
+//--------------------------------------------------
+// Page Swap
+//--------------------------------------------------
+
+#define tState data[0]
+#define tFrameCount data[1]
+
+static bool8 (*const sPageSwapAnimStateFuncs[])(struct Task * task) = {
+ PageSwapAnimState_Init,
+ PageSwapAnimState_1,
+ PageSwapAnimState_2,
+ PageSwapAnimState_Done
+};
+
+static void StartPageSwapAnim(void)
+{
+ u8 taskId;
+
+ taskId = CreateTask(Task_HandlePageSwapAnim, 0);
+ Task_HandlePageSwapAnim(taskId);
+}
+
+static void Task_HandlePageSwapAnim(u8 taskId)
+{
+ while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId]))
+ ;
+}
+
+static bool8 IsPageSwapAnimNotInProgress(void)
+{
+ if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 PageSwapAnimState_Init(struct Task *task)
+{
+ sNamingScreenData->bg1vOffset = 0;
+ sNamingScreenData->bg2vOffset = 0;
+ task->tState++;
+ return 0;
+}
+
+static bool8 PageSwapAnimState_1(struct Task *task)
+{
+ u16 *const arr[] =
+ {
+ &sNamingScreenData->bg2vOffset,
+ &sNamingScreenData->bg1vOffset
+ };
+
+ task->tFrameCount += 4;
+ *arr[sNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40);
+ *arr[sNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 64)
+ {
+ u8 temp = sNamingScreenData->bg1Priority; //Why u8 and not u16?
+
+ sNamingScreenData->bg1Priority = sNamingScreenData->bg2Priority;
+ sNamingScreenData->bg2Priority = temp;
+ task->tState++;
+ }
+ return 0;
+}
+
+static bool8 PageSwapAnimState_2(struct Task *task)
+{
+ u16 *const arr[] =
+ {
+ &sNamingScreenData->bg2vOffset,
+ &sNamingScreenData->bg1vOffset
+ };
+
+ task->tFrameCount += 4;
+ *arr[sNamingScreenData->bgToReveal] = Sin(task->tFrameCount, 40);
+ *arr[sNamingScreenData->bgToHide] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 128)
+ {
+ u8 temp = sNamingScreenData->bgToReveal;
+
+ sNamingScreenData->bgToReveal = sNamingScreenData->bgToHide;
+ sNamingScreenData->bgToHide = temp;
+ task->tState++;
+ }
+ return 0;
+}
+
+static bool8 PageSwapAnimState_Done(struct Task *task)
+{
+ DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim));
+ return 0;
+}
+
+#undef tState
+#undef tFrameCount
+
+//--------------------------------------------------
+// Cursor blink
+//--------------------------------------------------
+
+#define tIdent data[0]
+
+static void sub_809E4F0(void)
+{
+ u8 taskId;
+
+ taskId = CreateTask(Task_809E58C, 3);
+ gTasks[taskId].data[0] = 3;
+}
+
+static void sub_809E518(u8 a, u8 b, u8 c)
+{
+ struct Task *task = &gTasks[FindTaskIdByFunc(Task_809E58C)];
+
+ if (a == task->data[0] && c == 0)
+ {
+ task->data[1] = b;
+ task->data[2] = 1;
+ return;
+ }
+ if (a == 3 && task->data[1] == 0 && c == 0)
+ return;
+ if (task->data[0] != 3)
+ sub_809E6B8(task->data[0]);
+ sub_809E6E0(task, a, b);
+}
+
+static void Task_809E58C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[0] == 3 || task->data[2] == 0)
+ return;
+ MultiplyInvertedPaletteRGBComponents(sub_809E644(task->data[0]), task->data[3], task->data[3], task->data[3]);
+ if (task->data[5] != 0)
+ {
+ task->data[5]--;
+ if (task->data[5] != 0)
+ return;
+ }
+ task->data[5] = 2;
+ if (task->data[4] >= 0)
+ {
+ if (task->data[3] < 14)
+ {
+ task->data[3] += task->data[4];
+ task->data[6] += task->data[4];
+ }
+ else
+ {
+ task->data[3] = 16;
+ task->data[6]++;
+ }
+ }
+ else
+ {
+ task->data[3] += task->data[4];
+ task->data[6] += task->data[4];
+ }
+
+ if (task->data[3] == 16 && task->data[6] == 22)
+ {
+ task->data[4] = -4;
+ }
+ else if (task->data[3] == 0)
+ {
+ task->data[2] = task->data[1];
+ task->data[4] = 2;
+ task->data[6] = 0;
+ }
+}
+
+static u16 sub_809E644(u8 a)
+{
+ const u16 arr[] =
+ {
+ IndexOfSpritePaletteTag(4) * 16 + 0x10E, // Swap
+ IndexOfSpritePaletteTag(6) * 16 + 0x10E, // BACK
+ IndexOfSpritePaletteTag(7) * 16 + 0x10E, // OK
+ IndexOfSpritePaletteTag(7) * 16 + 0x101, // kbd
+ };
+
+ return arr[a];
+}
+
+static void sub_809E6B8(u8 a)
+{
+ u16 index = sub_809E644(a);
+
+ gPlttBufferFaded[index] = gPlttBufferUnfaded[index];
+}
+
+static void sub_809E6E0(struct Task *task, u8 b, u8 c)
+{
+ task->data[0] = b;
+ task->data[1] = c;
+ task->data[2] = 1;
+ task->data[3] = 4;
+ task->data[4] = 2;
+ task->data[5] = 0;
+ task->data[6] = 4;
+}
+
+//--------------------------------------------------
+// Cursor
+//--------------------------------------------------
+
+static void sub_809E700(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ StartSpriteAnim(sprite, 0);
+ sprite->invisible = (sprite->data[4] & 0xFF);
+ if (sprite->data[0] == GetCurrentPageColumnCount())
+ sprite->invisible = TRUE;
+ if (sprite->invisible || (sprite->data[4] & 0xFF00) == 0
+ || sprite->data[0] != sprite->data[2] || sprite->data[1] != sprite->data[3])
+ {
+ sprite->data[5] = 0;
+ sprite->data[6] = 2;
+ sprite->data[7] = 2;
+ }
+ sprite->data[7]--;
+ if (sprite->data[7] == 0)
+ {
+ sprite->data[5] += sprite->data[6];
+ if (sprite->data[5] == 16 || sprite->data[5] == 0)
+ sprite->data[6] = -sprite->data[6];
+ sprite->data[7] = 2;
+ }
+ if ((sprite->data[4] & 0xFF00) != 0)
+ {
+ s8 gb = sprite->data[5];
+ s8 r = sprite->data[5] >> 1;
+ u16 index = IndexOfSpritePaletteTag(5) * 16 + 0x0101;
+
+ MultiplyInvertedPaletteRGBComponents(index, r, gb, gb);
+ }
+}
+
+static void sub_809E7F0(struct Sprite *sprite)
+{
+ const s16 arr[] = {0, -4, -2, -1};
+
+ if (sprite->data[0] == 0 || --sprite->data[0] == 0)
+ {
+ sprite->data[0] = 8;
+ sprite->data[1] = (sprite->data[1] + 1) & 3;
+ }
+ sprite->pos2.x = arr[sprite->data[1]];
+}
+
+static void sub_809E83C(struct Sprite *sprite)
+{
+ const s16 arr[] = {2, 3, 2, 1};
+ u8 var;
+
+ var = GetTextCaretPosition();
+ if (var != (u8)sprite->data[0])
+ {
+ sprite->pos2.y = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ else
+ {
+ sprite->pos2.y = arr[sprite->data[1]];
+ sprite->data[2]++;
+ if (sprite->data[2] > 8)
+ {
+ sprite->data[1] = (sprite->data[1] + 1) & 3;
+ sprite->data[2] = 0;
+ }
+ }
+}
+
+static void sub_809E898(void)
+{
+ CursorInit();
+ CreatePageSwitcherSprites();
+ CreateBackOkSprites();
+ CreateUnderscoreSprites();
+ CreateInputTargetIcon();
+}
+
+static void CursorInit(void)
+{
+ sNamingScreenData->cursorSpriteId = CreateSprite(&gUnknown_83E25EC, 38, 88, 1);
+ sub_809EA0C(1);
+ gSprites[sNamingScreenData->cursorSpriteId].oam.priority = 1;
+ gSprites[sNamingScreenData->cursorSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[sNamingScreenData->cursorSpriteId].data[6] = 1;
+ gSprites[sNamingScreenData->cursorSpriteId].data[6] = 2;
+ SetCursorPos(0, 0);
+}
+
+static void SetCursorPos(s16 x, s16 y)
+{
+ struct Sprite *cursorSprite = &gSprites[sNamingScreenData->cursorSpriteId];
+
+ if (x < gUnknown_83E2330[sub_809DE50()])
+ cursorSprite->pos1.x = gUnknown_83E2333[sub_809DE50()][x] + 38;
+ else
+ cursorSprite->pos1.x = 0;
+
+ cursorSprite->pos1.y = y * 16 + 88;
+ cursorSprite->data[2] = cursorSprite->data[0];
+ cursorSprite->data[3] = cursorSprite->data[1];
+ cursorSprite->data[0] = x;
+ cursorSprite->data[1] = y;
+}
+
+static void GetCursorPos(s16 *x, s16 *y)
+{
+ struct Sprite *cursorSprite = &gSprites[sNamingScreenData->cursorSpriteId];
+
+ *x = cursorSprite->data[0];
+ *y = cursorSprite->data[1];
+}
+
+static void MoveCursorToOKButton(void)
+{
+ SetCursorPos(GetCurrentPageColumnCount(), 2);
+}
+
+static void sub_809EA0C(u8 a)
+{
+ gSprites[sNamingScreenData->cursorSpriteId].data[4] &= ~0xFF;
+ gSprites[sNamingScreenData->cursorSpriteId].data[4] |= a;
+ StartSpriteAnim(&gSprites[sNamingScreenData->cursorSpriteId], 0);
+}
+
+static void sub_809EA64(u8 a)
+{
+ gSprites[sNamingScreenData->cursorSpriteId].data[4] &= 0xFF;
+ gSprites[sNamingScreenData->cursorSpriteId].data[4] |= a << 8;
+}
+
+static void sub_809EAA8(void)
+{
+ StartSpriteAnim(&gSprites[sNamingScreenData->cursorSpriteId], 1);
+}
+
+static bool8 IsCursorAnimFinished(void)
+{
+ return gSprites[sNamingScreenData->cursorSpriteId].animEnded;
+}
+
+static const u8 sKeyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK};
+
+static u8 GetKeyRoleAtCursorPos(void)
+{
+ s16 cursorX;
+ s16 cursorY;
+
+ GetCursorPos(&cursorX, &cursorY);
+ if (cursorX < GetCurrentPageColumnCount())
+ return KEY_ROLE_CHAR;
+ else
+ return sKeyRoles[cursorY];
+}
+
+static u8 GetCurrentPageColumnCount(void)
+{
+ return gUnknown_83E2330[sub_809DE50()];
+}
+
+static void CreatePageSwitcherSprites(void)
+{
+ u8 spriteId1;
+ u8 spriteId2;
+ u8 spriteId3;
+
+ spriteId1 = CreateSprite(&gUnknown_83E2574, 0xCC, 0x58, 0);
+ sNamingScreenData->selectBtnFrameSpriteId = spriteId1;
+ SetSubspriteTables(&gSprites[spriteId1], gUnknown_83E2504);
+ gSprites[spriteId1].invisible = TRUE;
+
+ spriteId2 = CreateSprite(&gUnknown_83E25A4, 0xCC, 0x54, 1);
+ gSprites[spriteId1].data[6] = spriteId2;
+ SetSubspriteTables(&gSprites[spriteId2], gUnknown_83E250C);
+ gSprites[spriteId2].invisible = TRUE;
+
+ spriteId3 = CreateSprite(&gUnknown_83E258C, 0xCC, 0x53, 2);
+ gSprites[spriteId3].oam.priority = 1;
+ gSprites[spriteId1].data[7] = spriteId3;
+ gSprites[spriteId3].invisible = TRUE;
+}
+
+static void sub_809EC20(void)
+{
+ struct Sprite *sprite = &gSprites[sNamingScreenData->selectBtnFrameSpriteId];
+
+ sprite->data[0] = 2;
+ sprite->data[1] = sNamingScreenData->currentPage;
+}
+
+static bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = {
+ PageSwapSpritesCB_Init,
+ PageSwapSpritesCB_Idle,
+ PageSwapSpritesCB_SwapHide,
+ PageSwapSpritesCB_SwapShow
+};
+
+static void SpriteCB_PageSwap(struct Sprite *sprite)
+{
+ while (sPageSwapSpritesCBs[sprite->data[0]](sprite))
+ ;
+}
+
+static bool8 PageSwapSpritesCB_Init(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+
+ sub_809ED88(sub_809DE20(sNamingScreenData->currentPage), sprite1, sprite2);
+ sprite->data[0]++;
+ return FALSE;
+}
+
+static bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+
+ return FALSE;
+}
+
+static bool8 PageSwapSpritesCB_SwapHide(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+ u8 page;
+
+ sprite1->pos2.y++;
+ if (sprite1->pos2.y > 7)
+ {
+ sprite->data[0]++;
+ sprite1->pos2.y = -4;
+ sprite1->invisible = TRUE;
+ page = sprite->data[1];
+ sub_809ED88(sub_809DE20((page + 1) % 3), sprite1, sprite2);
+ }
+ return FALSE;
+}
+
+static bool8 PageSwapSpritesCB_SwapShow(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+
+ sprite1->invisible = FALSE;
+ sprite1->pos2.y++;
+ if (sprite1->pos2.y >= 0)
+ {
+ sprite1->pos2.y = 0;
+ sprite->data[0] = 1;
+ }
+ return FALSE;
+}
+
+static const u16 gUnknown_83E2388[] = {1, 3, 2};
+static const u16 gUnknown_83E238E[] = {4, 6, 5};
+
+static void sub_809ED88(u8 page, struct Sprite * sprite1, struct Sprite * sprite2)
+{
+ sprite2->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_83E2388[page]);
+ sprite1->sheetTileStart = GetSpriteTileStartByTag(gUnknown_83E238E[page]);
+ sprite1->subspriteTableNum = page;
+}
+
+//
+
+static void CreateBackOkSprites(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gUnknown_83E25BC, 0xCC, 0x74, 0);
+ SetSubspriteTables(&gSprites[spriteId], gUnknown_83E2524);
+ gSprites[spriteId].invisible = TRUE;
+
+ spriteId = CreateSprite(&gUnknown_83E25D4, 0xCC, 0x8C, 0);
+ SetSubspriteTables(&gSprites[spriteId], gUnknown_83E2524);
+ gSprites[spriteId].invisible = TRUE;
+}
+
+static void CreateUnderscoreSprites(void)
+{
+ u8 spriteId;
+ s16 xPos;
+ u8 i;
+
+ xPos = sNamingScreenData->inputCharBaseXPos - 5;
+ spriteId = CreateSprite(&sSpriteTemplate_InputArrow, xPos, 0x38, 0);
+ gSprites[spriteId].oam.priority = 3;
+ gSprites[spriteId].invisible = TRUE;
+ xPos = sNamingScreenData->inputCharBaseXPos;
+ for (i = 0; i < sNamingScreenData->template->maxChars; i++, xPos += 8)
+ {
+ spriteId = CreateSprite(&sSpriteTemplate_Underscore, xPos + 3, 0x3C, 0);
+ gSprites[spriteId].oam.priority = 3;
+ gSprites[spriteId].data[0] = i;
+ gSprites[spriteId].invisible = TRUE;
+ }
+}
+
+//--------------------------------------------------
+// Icon creation (the thing you're naming or giving input to)
+//--------------------------------------------------
+
+static void (*const sIconFunctions[])(void) = {
+ NamingScreen_NoCreateIcon,
+ NamingScreen_CreatePlayerIcon,
+ NamingScreen_CreatePCIcon,
+ NamingScreen_CreateMonIcon,
+ NamingScreen_CreateRivalIcon
+};
+
+static void CreateInputTargetIcon(void)
+{
+ sIconFunctions[sNamingScreenData->template->iconFunction]();
+}
+
+static void NamingScreen_NoCreateIcon(void)
+{
+
+}
+
+static void NamingScreen_CreatePlayerIcon(void)
+{
+ u8 rivalGfxId;
+ u8 spriteId;
+
+ rivalGfxId = sub_805C7C8(0, sNamingScreenData->monSpecies);
+ spriteId = AddPseudoObjectEvent(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
+ gSprites[spriteId].oam.priority = 3;
+ StartSpriteAnim(&gSprites[spriteId], 4);
+}
+
+static void NamingScreen_CreatePCIcon(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gUnknown_83E2634, 0x38, 0x29, 0);
+ SetSubspriteTables(&gSprites[spriteId], gUnknown_83E252C);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+static void NamingScreen_CreateMonIcon(void)
+{
+ u8 spriteId;
+
+ LoadMonIconPalettes();
+ spriteId = CreateMonIcon(sNamingScreenData->monSpecies, SpriteCallbackDummy, 0x38, 0x28, 0, sNamingScreenData->monPersonality, 1);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+static const union AnimCmd gUnknown_83E23A8[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(24, 10),
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const gUnknown_83E23BC[] = {
+ gUnknown_83E23A8
+};
+
+static void NamingScreen_CreateRivalIcon(void)
+{
+ const struct SpriteSheet sheet = {
+ gUnknown_83E1980, 0x900, 255
+ };
+ const struct SpritePalette palette = {
+ gUnknown_8E98004, 255
+ };
+ struct SpriteTemplate template;
+ const struct SubspriteTable * tables_p;
+ u8 spriteId;
+
+ MakeObjectTemplateFromObjectEventGraphicsInfo(OBJ_EVENT_GFX_RED_NORMAL, SpriteCallbackDummy, &template, &tables_p);
+
+ template.tileTag = sheet.tag;
+ template.paletteTag = palette.tag;
+ template.anims = gUnknown_83E23BC;
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 0x38, 0x25, 0);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+static bool8 (*const sKeyboardKeyHandlers[])(u8) = {
+ KeyboardKeyHandler_Character,
+ KeyboardKeyHandler_Page,
+ KeyboardKeyHandler_Backspace,
+ KeyboardKeyHandler_OK,
+};
+
+static bool8 HandleKeyboardEvent(void)
+{
+ u8 event = GetInputEvent();
+ u8 keyRole = GetKeyRoleAtCursorPos();
+
+ if (event == KBEVENT_PRESSED_SELECT)
+ {
+ return TriggerKeyboardChange();
+ }
+ else if (event == KBEVENT_PRESSED_B)
+ {
+ DeleteTextCharacter();
+ return FALSE;
+ }
+ else if (event == KBEVENT_PRESSED_START)
+ {
+ MoveCursorToOKButton();
+ return FALSE;
+ }
+ else
+ {
+ return sKeyboardKeyHandlers[keyRole](event);
+ }
+}
+
+static bool8 KeyboardKeyHandler_Character(u8 event)
+{
+ sub_809E518(3, 0, 0);
+ if (event == KBEVENT_PRESSED_A)
+ {
+ bool8 var = AppendCharToBuffer_CheckBufferFull();
+
+ sub_809EAA8();
+ if (var)
+ {
+ SetInputState(INPUT_STATE_DISABLED);
+ sNamingScreenData->state = MAIN_STATE_MOVE_TO_OK_BUTTON;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_Page(u8 event)
+{
+ sub_809E518(0, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ return TriggerKeyboardChange();
+ else
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_Backspace(u8 event)
+{
+ sub_809E518(1, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ DeleteTextCharacter();
+ return FALSE;
+}
+
+static bool8 KeyboardKeyHandler_OK(u8 event)
+{
+ sub_809E518(2, 1, 0);
+ if (event == KBEVENT_PRESSED_A)
+ {
+ PlaySE(SE_SELECT);
+ sNamingScreenData->state = MAIN_STATE_6;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static bool8 TriggerKeyboardChange(void)
+{
+ sNamingScreenData->state = MAIN_STATE_START_PAGE_SWAP;
+ return TRUE;
+}
+
+//--------------------------------------------------
+// Input handling
+//--------------------------------------------------
+
+enum
+{
+ FNKEY_CASE,
+ FNKEY_BACK,
+ FNKEY_OK,
+};
+
+#define tState data[0]
+#define tKeyboardEvent data[1]
+#define tKbFunctionKey data[2]
+
+static void (*const sInputStateFuncs[])(struct Task *) = {
+ InputState_Disabled,
+ InputState_Enabled
+};
+
+static void InputInit(void)
+{
+ CreateTask(Task_HandleInput, 1);
+}
+
+static u8 GetInputEvent(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_HandleInput);
+
+ return gTasks[taskId].tKeyboardEvent;
+}
+
+static void SetInputState(u8 state)
+{
+ u8 taskId = FindTaskIdByFunc(Task_HandleInput);
+
+ gTasks[taskId].tState = state;
+}
+
+static void Task_HandleInput(u8 taskId)
+{
+ sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]);
+}
+
+static void InputState_Disabled(struct Task *task)
+{
+ task->tKeyboardEvent = 0;
+}
+
+static void InputState_Enabled(struct Task *task)
+{
+ task->tKeyboardEvent = 0;
+
+ if (JOY_NEW(A_BUTTON))
+ task->tKeyboardEvent = KBEVENT_PRESSED_A;
+ else if (JOY_NEW(B_BUTTON))
+ task->tKeyboardEvent = KBEVENT_PRESSED_B;
+ else if (JOY_NEW(SELECT_BUTTON))
+ task->tKeyboardEvent = KBEVENT_PRESSED_SELECT;
+ else if (JOY_NEW(START_BUTTON))
+ task->tKeyboardEvent = KBEVENT_PRESSED_START;
+ else
+ HandleDpadMovement(task);
+}
+
+static void HandleDpadMovement(struct Task *task)
+{
+ const s16 sDpadDeltaX[] = {
+ 0, //none
+ 0, //up
+ 0, //down
+ -1, //left
+ 1 //right
+ };
+
+ const s16 sDpadDeltaY[] = {
+ 0, //none
+ -1, //up
+ 1, //down
+ 0, //left
+ 0 //right
+ };
+
+ const s16 s4RowTo3RowTableY[] = {0, 1, 1, 2};
+ const s16 s3RowTo4RowTableY[] = {0, 0, 3};
+
+ s16 cursorX;
+ s16 cursorY;
+ u16 dpadDir;
+ s16 prevCursorX;
+
+ GetCursorPos(&cursorX, &cursorY);
+ dpadDir = 0;
+ if (JOY_REPT(DPAD_UP))
+ dpadDir = 1;
+ if (JOY_REPT(DPAD_DOWN))
+ dpadDir = 2;
+ if (JOY_REPT(DPAD_LEFT))
+ dpadDir = 3;
+ if (JOY_REPT(DPAD_RIGHT))
+ dpadDir = 4;
+
+ //Get new cursor position
+ prevCursorX = cursorX;
+ cursorX += sDpadDeltaX[dpadDir];
+ cursorY += sDpadDeltaY[dpadDir];
+
+ //Wrap cursor position in the X direction
+ if (cursorX < 0)
+ cursorX = GetCurrentPageColumnCount();
+ if (cursorX > GetCurrentPageColumnCount())
+ cursorX = 0;
+
+ //Handle cursor movement in X direction
+ if (sDpadDeltaX[dpadDir] != 0)
+ {
+ if (cursorX == GetCurrentPageColumnCount())
+ {
+ //We are now on the last column
+ task->tKbFunctionKey = cursorY;
+ cursorY = s4RowTo3RowTableY[cursorY];
+ }
+ else if (prevCursorX == GetCurrentPageColumnCount())
+ {
+ if (cursorY == 1)
+ cursorY = task->tKbFunctionKey;
+ else
+ cursorY = s3RowTo4RowTableY[cursorY];
+ }
+ }
+
+ if (cursorX == GetCurrentPageColumnCount())
+ {
+ //There are only 3 keys on the last column, unlike the others,
+ //so wrap Y accordingly
+ if (cursorY < 0)
+ cursorY = 2;
+ if (cursorY > 2)
+ cursorY = 0;
+ if (cursorY == 0)
+ task->tKbFunctionKey = FNKEY_BACK;
+ else if (cursorY == 2)
+ task->tKbFunctionKey = FNKEY_OK;
+ }
+ else
+ {
+ if (cursorY < 0)
+ cursorY = 3;
+ if (cursorY > 3)
+ cursorY = 0;
+ }
+ SetCursorPos(cursorX, cursorY);
+}
+
+#undef tState
+#undef tKeyboardEvent
+#undef tKbFunctionKey
+
+static void PrintTitleFunction_NoMon(void)
+{
+ FillWindowPixelBuffer(sNamingScreenData->windows[3], PIXEL_FILL(1));
+ AddTextPrinterParameterized(sNamingScreenData->windows[3], 1, sNamingScreenData->template->title, 1, 1, 0, NULL);
+ PutWindowTilemap(sNamingScreenData->windows[3]);
+}
+
+static void PrintTitleFunction_WithMon(void)
+{
+ u8 buffer[0x20];
+
+ StringCopy(buffer, gSpeciesNames[sNamingScreenData->monSpecies]);
+ StringAppendN(buffer, sNamingScreenData->template->title, 15);
+ FillWindowPixelBuffer(sNamingScreenData->windows[3], PIXEL_FILL(1));
+ AddTextPrinterParameterized(sNamingScreenData->windows[3], 1, buffer, 1, 1, 0, NULL);
+ PutWindowTilemap(sNamingScreenData->windows[3]);
+}
+
+static void (*const sPrintTitleFuncs[])(void) = {
+ [NAMING_SCREEN_PLAYER] = PrintTitleFunction_NoMon,
+ [NAMING_SCREEN_BOX] = PrintTitleFunction_NoMon,
+ [NAMING_SCREEN_CAUGHT_MON] = PrintTitleFunction_WithMon,
+ [NAMING_SCREEN_NAME_RATER] = PrintTitleFunction_WithMon,
+ [NAMING_SCREEN_RIVAL] = PrintTitleFunction_NoMon
+};
+
+static void PrintTitle(void)
+{
+ sPrintTitleFuncs[sNamingScreenData->templateNum]();
+}
+
+static void (*const sAddGenderIconFuncs[])(void) = {
+ AddGenderIconFunc_No,
+ AddGenderIconFunc_Yes
+};
+
+static void CallAddGenderIconFunc(void)
+{
+ sAddGenderIconFuncs[sNamingScreenData->template->addGenderIcon]();
+}
+
+static void AddGenderIconFunc_No(void)
+{
+
+}
+
+static const u8 sGenderColors[2][3] = {
+ [MALE] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_BLUE, TEXT_COLOR_BLUE},
+ [FEMALE] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}
+};
+
+static void AddGenderIconFunc_Yes(void)
+{
+ u8 genderSymbol[2];
+ bool8 gender = MALE;
+
+ StringCopy(genderSymbol, gText_MaleSymbol);
+
+ if (sNamingScreenData->monGender != MON_GENDERLESS)
+ {
+ if (sNamingScreenData->monGender == MON_FEMALE)
+ {
+ StringCopy(genderSymbol, gText_FemaleSymbol);
+ gender = FEMALE;
+ }
+ AddTextPrinterParameterized3(sNamingScreenData->windows[2], 2, 0x68, 1, sGenderColors[gender], TEXT_SPEED_FF, genderSymbol);
+ }
+}
+
+static u8 GetCharAtKeyboardPos(s16 x, s16 y)
+{
+ return gUnknown_83E22D0[sub_809DE50()][y][x];
+}
+
+static u8 GetTextCaretPosition(void)
+{
+ u8 i;
+
+ for (i = 0; i < sNamingScreenData->template->maxChars; i++)
+ {
+ if (sNamingScreenData->textBuffer[i] == EOS)
+ return i;
+ }
+ return sNamingScreenData->template->maxChars - 1;
+}
+
+static u8 GetPreviousTextCaretPosition(void)
+{
+ s8 i;
+
+ for (i = sNamingScreenData->template->maxChars - 1; i > 0; i--)
+ {
+ if (sNamingScreenData->textBuffer[i] != EOS)
+ return i;
+ }
+ return 0;
+}
+
+static void DeleteTextCharacter(void)
+{
+ u8 index;
+ u8 var2;
+
+ index = GetPreviousTextCaretPosition();
+ // Temporarily make this a space for redrawing purposes
+ sNamingScreenData->textBuffer[index] = CHAR_SPACE;
+ PrintBufferCharactersOnScreen();
+ CopyBgTilemapBufferToVram(3);
+ sNamingScreenData->textBuffer[index] = EOS;
+ var2 = GetKeyRoleAtCursorPos();
+ if (var2 == KEY_ROLE_CHAR || var2 == KEY_ROLE_BACKSPACE)
+ sub_809E518(1, 0, 1);
+ PlaySE(SE_BOWA);
+}
+
+static bool8 AppendCharToBuffer_CheckBufferFull(void)
+{
+ s16 x;
+ s16 y;
+
+ GetCursorPos(&x, &y);
+ AddTextCharacter(GetCharAtKeyboardPos(x, y));
+ PrintBufferCharactersOnScreen();
+ CopyBgTilemapBufferToVram(3);
+ PlaySE(SE_SELECT);
+
+ if (GetPreviousTextCaretPosition() != sNamingScreenData->template->maxChars - 1)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void AddTextCharacter(u8 ch)
+{
+ u8 index = GetTextCaretPosition();
+
+ sNamingScreenData->textBuffer[index] = ch;
+}
+
+static void CopyStringToDestBuffer(void)
+{
+ // Copy from the first non-whitespace character
+ u8 i;
+
+ for (i = 0; i < sNamingScreenData->template->maxChars; i++)
+ {
+ if (sNamingScreenData->textBuffer[i] != CHAR_SPACE && sNamingScreenData->textBuffer[i] != EOS)
+ {
+ StringCopyN(sNamingScreenData->destBuffer, sNamingScreenData->textBuffer, sNamingScreenData->template->maxChars + 1);
+ break;
+ }
+ }
+}
+
+static void choose_name_or_words_screen_load_bg_tile_patterns(void)
+{
+ LZ77UnCompWram(gNamingScreenMenu_Gfx, sNamingScreenData->tileBuffer);
+ LoadBgTiles(1, sNamingScreenData->tileBuffer, 0x600, 0);
+ LoadBgTiles(2, sNamingScreenData->tileBuffer, 0x600, 0);
+ LoadBgTiles(3, sNamingScreenData->tileBuffer, 0x600, 0);
+ LoadSpriteSheets(gUnknown_83E267C);
+ LoadSpritePalettes(gUnknown_83E26E4);
+}
+
+static void sub_809F8C0(void)
+{
+ InputInit();
+ sub_809E4F0();
+}
+
+static void choose_name_or_words_screen_apply_bg_pals(void)
+{
+ LoadPalette(gNamingScreenMenu_Pal, 0, 0xC0);
+ LoadPalette(gUnknown_8E97FE4, 0xA0, 0x20);
+ LoadPalette(stdpal_get(2), 0xB0, 0x20);
+}
+
+static void DecompressToBgTilemapBuffer(u8 bg, const u32 *src)
+{
+ CopyToBgTilemapBuffer(bg, src, 0, 0);
+}
+
+static void PrintBufferCharactersOnScreen(void)
+{
+ u8 i;
+ u8 temp[2];
+ u16 xoff;
+ u8 maxChars = sNamingScreenData->template->maxChars;
+ u16 xpos = sNamingScreenData->inputCharBaseXPos - 0x40;
+
+ FillWindowPixelBuffer(sNamingScreenData->windows[2], PIXEL_FILL(1));
+
+ for (i = 0; i < maxChars; i++)
+ {
+ temp[0] = sNamingScreenData->textBuffer[i];
+ temp[1] = gExpandedPlaceholder_Empty[0];
+ xoff = (IsLetter(temp[0]) == TRUE) ? 2 : 0;
+
+ AddTextPrinterParameterized(sNamingScreenData->windows[2], 2, temp, i * 8 + xpos + xoff, 1, TEXT_SPEED_FF, NULL);
+ }
+
+ CallAddGenderIconFunc();
+ CopyWindowToVram(sNamingScreenData->windows[2], 2);
+ PutWindowTilemap(sNamingScreenData->windows[2]);
+}
+
+struct TextColor // Needed because of alignment
+{
+ u8 colors[3][4];
+};
+
+static const struct TextColor sTextColorStruct = {
+ {
+ {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY},
+ {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY},
+ {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}
+ }
+};
+
+static const u8 sFillValues[KBPAGE_COUNT] = {
+ [KBPAGE_LETTERS_LOWER] = PIXEL_FILL(14),
+ [KBPAGE_LETTERS_UPPER] = PIXEL_FILL(13),
+ [KBPAGE_SYMBOLS] = PIXEL_FILL(15)
+};
+
+static const u8 *const sKeyboardTextColors[KBPAGE_COUNT] = {
+ [KBPAGE_LETTERS_LOWER] = sTextColorStruct.colors[1],
+ [KBPAGE_LETTERS_UPPER] = sTextColorStruct.colors[0],
+ [KBPAGE_SYMBOLS] = sTextColorStruct.colors[2]
+};
+
+static void sub_809F9E8(u8 window, u8 page)
+{
+ u8 i;
+
+ FillWindowPixelBuffer(window, sFillValues[page]);
+
+ for (i = 0; i < KBROW_COUNT; i++)
+ {
+ AddTextPrinterParameterized3(window, 1, 0, i * 16 + 1, sKeyboardTextColors[page], 0, sNamingScreenKeyboardText[page][i]);
+ }
+
+ PutWindowTilemap(window);
+}
+
+static const u32 *const gUnknown_83E244C[] = {
+ gUnknown_8E98398,
+ gUnknown_8E98458,
+ gUnknown_8E98518
+};
+
+static void sub_809FA60(void)
+{
+ u8 bgId;
+ u8 bgId_copy;
+ u8 windowId;
+ u8 bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3;
+ u8 bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3;
+
+ if (bg1Priority > bg2Priority)
+ {
+ bgId = 1;
+ bgId_copy = 1;
+ windowId = sNamingScreenData->windows[0];
+ }
+ else
+ {
+ bgId = 2;
+ bgId_copy = 2;
+ windowId = sNamingScreenData->windows[1];
+ }
+
+ DecompressToBgTilemapBuffer(bgId, gUnknown_83E244C[sNamingScreenData->currentPage]);
+ sub_809F9E8(windowId, sub_809DE30());
+ CopyBgTilemapBufferToVram(bgId_copy);
+}
+
+static void sub_809FAE4(void)
+{
+ const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
+ int strwidth = GetStringWidth(0, gText_MoveOkBack, 0);
+
+ FillWindowPixelBuffer(sNamingScreenData->windows[4], PIXEL_FILL(15));
+ AddTextPrinterParameterized3(sNamingScreenData->windows[4], 0, 236 - strwidth, 0, color, 0, gText_MoveOkBack);
+ PutWindowTilemap(sNamingScreenData->windows[4]);
+ CopyWindowToVram(sNamingScreenData->windows[4], 3);
+}
+
+static void sub_809FB70(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void NamingScreen_TurnOffScreen(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+static void NamingScreen_InitDisplayMode(void)
+{
+ SetVBlankCallback(VBlankCB_NamingScreen);
+}
+
+static void VBlankCB_NamingScreen(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ SetGpuReg(REG_OFFSET_BG1VOFS, sNamingScreenData->bg1vOffset);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sNamingScreenData->bg2vOffset);
+ SetGpuReg(REG_OFFSET_BG1CNT, GetGpuReg(REG_OFFSET_BG1CNT) & 0xFFFC); // clear priority bits
+ SetGpuRegBits(REG_OFFSET_BG1CNT, sNamingScreenData->bg1Priority);
+ SetGpuReg(REG_OFFSET_BG2CNT, GetGpuReg(REG_OFFSET_BG2CNT) & 0xFFFC); // clear priority bits
+ SetGpuRegBits(REG_OFFSET_BG2CNT, sNamingScreenData->bg2Priority);
+}
+
+static void ShowAllBgs(void)
+{
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+}
+
+static bool8 IsLetter(u8 character)
+{
+ u8 i;
+
+ for (i = 0; gText_AlphabetUpperLower[i] != EOS; i++)
+ {
+ if (character == gText_AlphabetUpperLower[i])
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//--------------------------------------------------
+// Unused debug functions
+//--------------------------------------------------
+
+static void Debug_DoNamingScreen_Player(void)
+{
+ DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu);
+}
+
+static void Debug_DoNamingScreen_Box(void)
+{
+ DoNamingScreen(NAMING_SCREEN_BOX, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu);
+}
+
+static void Debug_DoNamingScreen_CaughtMon(void)
+{
+ DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu);
+}
+
+static void Debug_DoNamingScreen_NameRater(void)
+{
+ DoNamingScreen(NAMING_SCREEN_NAME_RATER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu);
+}
+
+static void Debug_DoNamingScreen_Rival(void)
+{
+ DoNamingScreen(NAMING_SCREEN_RIVAL, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, MON_MALE, 0, CB2_ReturnToFieldWithOpenMenu);
+}
+
+//--------------------------------------------------
+// Forward-declared variables
+//--------------------------------------------------
+
+static const struct NamingScreenTemplate sPlayerNamingScreenTemplate = {
+ .copyExistingString = FALSE,
+ .maxChars = PLAYER_NAME_LENGTH,
+ .iconFunction = 1,
+ .addGenderIcon = 0,
+ .initialPage = KBPAGE_LETTERS_UPPER,
+ .title = gText_YourName,
+};
+
+static const struct NamingScreenTemplate sPcBoxNamingScreenTemplate = {
+ .copyExistingString = FALSE,
+ .maxChars = 8/*BOX_NAME_LENGTH*/,
+ .iconFunction = 2,
+ .addGenderIcon = 0,
+ .initialPage = KBPAGE_LETTERS_UPPER,
+ .title = gText_BoxName,
+};
+
+static const struct NamingScreenTemplate sMonNamingScreenTemplate = {
+ .copyExistingString = FALSE,
+ .maxChars = POKEMON_NAME_LENGTH,
+ .iconFunction = 3,
+ .addGenderIcon = 1,
+ .initialPage = KBPAGE_LETTERS_UPPER,
+ .title = gText_PkmnsNickname,
+};
+
+static const struct NamingScreenTemplate sRivalNamingScreenTemplate = {
+ .copyExistingString = FALSE,
+ .maxChars = OT_NAME_LENGTH,
+ .iconFunction = 4,
+ .addGenderIcon = 0,
+ .initialPage = KBPAGE_LETTERS_UPPER,
+ .title = gText_RivalsName,
+};
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[] = {
+ &sPlayerNamingScreenTemplate,
+ &sPcBoxNamingScreenTemplate,
+ &sMonNamingScreenTemplate,
+ &sMonNamingScreenTemplate,
+ &sRivalNamingScreenTemplate,
+};
+
+static const struct OamData gOamData_858BFEC = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+};
+
+static const struct OamData gOamData_858BFF4 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+};
+
+static const struct OamData gOamData_858BFFC = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+};
+
+static const struct Subsprite gUnknown_83E24B8[] = {
+ {
+ .x = -20,
+ .y = -16,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 0,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = -16,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 4,
+ .priority = 1
+ }, {
+ .x = -20,
+ .y = -8,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 5,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = -8,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 9,
+ .priority = 1
+ }, {
+ .x = -20,
+ .y = 0,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 10,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 14,
+ .priority = 1
+ }, {
+ .x = -20,
+ .y = 8,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 15,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = 8,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 19,
+ .priority = 1
+ }
+};
+
+static const struct Subsprite gUnknown_83E24D8[] = {
+ {
+ .x = -12,
+ .y = -4,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .tileOffset = 0,
+ .priority = 1
+ }, {
+ .x = 4,
+ .y = -4,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 2,
+ .priority = 1
+ }
+};
+
+static const struct Subsprite gUnknown_83E24E0[] = {
+ {
+ .x = -20,
+ .y = -12,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 0,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = -12,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 4,
+ .priority = 1
+ }, {
+ .x = -20,
+ .y = -4,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 5,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = -4,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 9,
+ .priority = 1
+ }, {
+ .x = -20,
+ .y = 4,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .tileOffset = 10,
+ .priority = 1
+ }, {
+ .x = 12,
+ .y = 4,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 14,
+ .priority = 1
+ }
+};
+
+static const struct Subsprite gUnknown_83E24F8[] = {
+ {
+ .x = -8,
+ .y = -12,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .tileOffset = 0,
+ .priority = 3
+ }, {
+ .x = -8,
+ .y = -4,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .tileOffset = 2,
+ .priority = 3
+ }, {
+ .x = -8,
+ .y = 4,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .tileOffset = 4,
+ .priority = 3
+ }
+};
+
+static const struct SubspriteTable gUnknown_83E2504[] = {
+ subsprite_table(gUnknown_83E24B8)
+};
+
+static const struct SubspriteTable gUnknown_83E250C[] = {
+ subsprite_table(gUnknown_83E24D8),
+ subsprite_table(gUnknown_83E24D8),
+ subsprite_table(gUnknown_83E24D8)
+};
+
+static const struct SubspriteTable gUnknown_83E2524[] = {
+ subsprite_table(gUnknown_83E24E0)
+};
+
+static const struct SubspriteTable gUnknown_83E252C[] = {
+ subsprite_table(gUnknown_83E24F8)
+};
+
+static const struct SpriteFrameImage gUnknown_0858C080[] = {
+ {gUnknown_83E1800, sizeof(gUnknown_83E1800)},
+ {gUnknown_83E18C0, sizeof(gUnknown_83E18C0)},
+};
+
+static const union AnimCmd gSpriteAnim_858C090[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_858C098[] = {
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_858C0A4[] = {
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const gSpriteAnimTable_858C0B0[] = {
+ gSpriteAnim_858C090
+};
+
+static const union AnimCmd *const gSpriteAnimTable_858C0B4[] = {
+ gSpriteAnim_858C090,
+ gSpriteAnim_858C098
+};
+
+static const union AnimCmd *const gSpriteAnimTable_858C0BC[] = {
+ gSpriteAnim_858C0A4
+};
+
+static const struct SpriteTemplate gUnknown_83E2574 = {
+ .tileTag = 0x0002,
+ .paletteTag = 0x0004,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_PageSwap
+};
+
+static const struct SpriteTemplate gUnknown_83E258C = {
+ .tileTag = 0x0003,
+ .paletteTag = 0x0001,
+ .oam = &gOamData_858BFFC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_83E25A4 = {
+ .tileTag = 0x0004,
+ .paletteTag = 0x0004,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_83E25BC = {
+ .tileTag = 0x0000,
+ .paletteTag = 0x0006,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_83E25D4 = {
+ .tileTag = 0x0001,
+ .paletteTag = 0x0007,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_83E25EC = {
+ .tileTag = 0x0007,
+ .paletteTag = 0x0005,
+ .oam = &gOamData_858BFF4,
+ .anims = gSpriteAnimTable_858C0B4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_809E700
+};
+
+static const struct SpriteTemplate sSpriteTemplate_InputArrow = {
+ .tileTag = 0x000A,
+ .paletteTag = 0x0003,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_809E7F0
+};
+
+static const struct SpriteTemplate sSpriteTemplate_Underscore = {
+ .tileTag = 0x000B,
+ .paletteTag = 0x0003,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0B0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_809E83C
+};
+
+static const struct SpriteTemplate gUnknown_83E2634 = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x0000,
+ .oam = &gOamData_858BFEC,
+ .anims = gSpriteAnimTable_858C0BC,
+ .images = gUnknown_0858C080,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const u8 *const sNamingScreenKeyboardText[KBPAGE_COUNT][KBROW_COUNT] = {
+ [KBPAGE_LETTERS_LOWER] = {
+ gText_NamingScreenKeyboard_abcdef,
+ gText_NamingScreenKeyboard_ghijkl,
+ gText_NamingScreenKeyboard_mnopqrs,
+ gText_NamingScreenKeyboard_tuvwxyz
+ },
+ [KBPAGE_LETTERS_UPPER] = {
+ gText_NamingScreenKeyboard_ABCDEF,
+ gText_NamingScreenKeyboard_GHIJKL,
+ gText_NamingScreenKeyboard_MNOPQRS,
+ gText_NamingScreenKeyboard_TUVWXYZ
+ },
+ [KBPAGE_SYMBOLS] = {
+ gText_NamingScreenKeyboard_01234,
+ gText_NamingScreenKeyboard_56789,
+ gText_NamingScreenKeyboard_Symbols1,
+ gText_NamingScreenKeyboard_Symbols2
+ },
+};
+
+// FIXME: Sync with Emerald
+static const struct SpriteSheet gUnknown_83E267C[] = {
+ {gUnknown_8E98858, 0x1E0, 0x0000},
+ {gUnknown_8E98A38, 0x1E0, 0x0001},
+ {gUnknown_8E985D8, 0x280, 0x0002},
+ {gUnknown_8E98FD8, 0x100, 0x0003},
+ {gUnknown_8E98C18, 0x060, 0x0004},
+ {gUnknown_8E98CB8, 0x060, 0x0005},
+ {gUnknown_8E98D58, 0x060, 0x0006},
+ {gUnknown_8E98DF8, 0x080, 0x0007},
+ {gUnknown_8E98E98, 0x080, 0x0008},
+ {gUnknown_8E98F38, 0x080, 0x0009},
+ {gUnknown_8E990D8, 0x020, 0x000A},
+ {gUnknown_8E990F8, 0x020, 0x000B},
+ {} // terminator
+};
+
+static const struct SpritePalette gUnknown_83E26E4[] = {
+ {gNamingScreenMenu_Pal, 0x0000},
+ {gNamingScreenMenu_Pal + 0x10, 0x0001},
+ {gNamingScreenMenu_Pal + 0x20, 0x0002},
+ {gNamingScreenMenu_Pal + 0x30, 0x0003},
+ {gNamingScreenMenu_Pal + 0x40, 0x0004},
+ {gNamingScreenMenu_Pal + 0x50, 0x0005},
+ {gNamingScreenMenu_Pal + 0x40, 0x0006},
+ {gNamingScreenMenu_Pal + 0x40, 0x0007},
+ {} // terminator
+};
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 871a73783..11281da30 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -1223,13 +1223,13 @@ static void Task_OakSpeech25(u8 taskId)
GetDefaultName(sOakSpeechResources->unk_0010, 0);
if (sOakSpeechResources->unk_0010 == 0)
{
- DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen);
+ DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen);
}
else
{
ClearStdWindowAndFrameToTransparent(gTasks[taskId].data[13], 1);
RemoveWindow(gTasks[taskId].data[13]);
- DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
+ DoNamingScreen(NAMING_SCREEN_RIVAL, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
}
DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1);
FreeAllWindowBuffers();
diff --git a/src/strings.c b/src/strings.c
index 8ef338eb3..f5040838a 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -767,12 +767,12 @@ const u8 gText_SaveFailedScreen_SaveCompleted[] = _("Save completed.\n“Please
const u8 gUnknown_8418E36[] = _("れんらくせん");
const u8 gUnknown_8418E3D[] = _("ひみつきち");
const u8 gUnknown_8418E43[] = _("アジト");
-const u8 gUnknown_8418E47[] = _("YOUR NAME?");
-const u8 gUnknown_8418E52[] = _("BOX NAME?");
-const u8 gUnknown_8418E5C[] = _("'s nickname?");
-const u8 gUnknown_8418E69[] = _("RIVAL's NAME?");
-const u8 gUnknown_8418E77[] = _("{DPAD_ANY}MOVE {A_BUTTON}OK {B_BUTTON}BACK");
-const u8 gUnknown_8418E8A[] = _("");
+const u8 gText_YourName[] = _("YOUR NAME?");
+const u8 gText_BoxName[] = _("BOX NAME?");
+const u8 gText_PkmnsNickname[] = _("'s nickname?");
+const u8 gText_RivalsName[] = _("RIVAL's NAME?");
+const u8 gText_MoveOkBack[] = _("{DPAD_ANY}MOVE {A_BUTTON}OK {B_BUTTON}BACK");
+const u8 gText_AlphabetUpperLower[] = _("");
const u8 gText_RegionMap_Space[] = _(" ");
const u8 gText_RegionMap_AButtonGuide[] = _("{A_BUTTON}GUIDE");
const u8 gText_RegionMap_AButtonCancel[] = _("{A_BUTTON}CANCEL");
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 167da514a..4ac4c62cb 100644
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -14,7 +14,7 @@
#include "task.h"
#include "union_room_chat.h"
#include "union_room_chat_display.h"
-#include "data_8479668.h"
+#include "keyboard_text.h"
#include "constants/songs.h"
#define MESSAGE_BUFFER_NCHAR 15
diff --git a/sym_ewram.txt b/sym_ewram.txt
index ea2b7b749..9de1255c2 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -233,12 +233,8 @@ gUnknown_203982C: @ 203982C
.include "src/special_field_anim.o"
.align 2
.include "src/script_menu.o"
-
.align 2
- @ .include "src/naming_screen.o"
-gUnknown_203998C: @ 203998C
- .space 0x4
-
+ .include "src/naming_screen.o"
.align 2
.include "src/money.o"
.align 2