summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/event_object_movement.s14
-rw-r--r--asm/naming_screen.s549
-rw-r--r--data/naming_screen.s45
-rw-r--r--include/event_object_movement.h1
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/graphics.h1
-rw-r--r--include/naming_screen.h4
-rw-r--r--src/daycare.c2
-rw-r--r--src/field_specials.c4
-rw-r--r--src/naming_screen.c222
-rw-r--r--src/oak_speech.c4
11 files changed, 232 insertions, 615 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
index a4f237008..f3931d1fe 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -5,555 +5,6 @@
.text
- 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 @ =gNamingScreenData
- 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 gNamingScreenData
-_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 CreateBackOkSprites
-CreateBackOkSprites: @ 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 CreateBackOkSprites
-
- thumb_func_start CreateUnderscoreSprites
-CreateUnderscoreSprites: @ 809EE60
- push {r4-r6,lr}
- ldr r5, _0809EF0C @ =gNamingScreenData
- 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 @ =gNamingScreenData
- 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 gNamingScreenData
-_0809EF10: .4byte 0x00001e16
-_0809EF14: .4byte gUnknown_83E2604
-_0809EF18: .4byte gSprites
-_0809EF1C: .4byte 0x00001e28
-_0809EF20: .4byte gUnknown_83E261C
- thumb_func_end CreateUnderscoreSprites
-
- thumb_func_start CreateInputTargetIcon
-CreateInputTargetIcon: @ 809EF24
- push {lr}
- ldr r1, _0809EF44 @ =gUnknown_83E2394
- ldr r0, _0809EF48 @ =gNamingScreenData
- 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 gNamingScreenData
-_0809EF4C: .4byte 0x00001e28
- thumb_func_end CreateInputTargetIcon
-
- 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 @ =gNamingScreenData
- 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 gNamingScreenData
-_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 @ =gNamingScreenData
- 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 gNamingScreenData
-_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 HandleKeyboardEvent
HandleKeyboardEvent: @ 809F0CC
push {r4,r5,lr}
diff --git a/data/naming_screen.s b/data/naming_screen.s
index 366638746..4f89d013f 100644
--- a/data/naming_screen.s
+++ b/data/naming_screen.s
@@ -6,35 +6,6 @@
.section .rodata
.align 2
-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
@@ -119,11 +90,11 @@ gUnknown_83E2480:: @ 83E2480
.4byte gUnknown_8418E69
sNamingScreenTemplates:: @ 83E248C
- .4byte gUnknown_83E245C
- .4byte gUnknown_83E2468
- .4byte gUnknown_83E2474
- .4byte gUnknown_83E2474
- .4byte gUnknown_83E2480
+ .4byte gUnknown_83E245C @ NAMING_SCREEN_PLAYER
+ .4byte gUnknown_83E2468 @ NAMING_SCREEN_BOX
+ .4byte gUnknown_83E2474 @ NAMING_SCREEN_CAUGHT_MON
+ .4byte gUnknown_83E2474 @ NAMING_SCREEN_NAME_RATER
+ .4byte gUnknown_83E2480 @ NAMING_SCREEN_RIVAL
gUnknown_83E24A0:: @ 83E24A0
.4byte 0x00000000, 0x00000000
@@ -216,7 +187,7 @@ gUnknown_83E2570:: @ 83E2570
.4byte gUnknown_83E2558
gUnknown_83E2574:: @ 83E2574
- spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809EC54
+ spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCB_PageSwap
gUnknown_83E258C:: @ 83E258C
spr_template 3, 1, gUnknown_83E24B0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
@@ -233,10 +204,10 @@ gUnknown_83E25D4:: @ 83E25D4
gUnknown_83E25EC:: @ 83E25EC
spr_template 7, 5, gUnknown_83E24A8, gUnknown_83E2568, NULL, gDummySpriteAffineAnimTable, sub_809E700
-gUnknown_83E2604:: @ 83E2604
+sSpriteTemplate_InputArrow:: @ 83E2604
spr_template 10, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E7F0
-gUnknown_83E261C:: @ 83E261C
+sSpriteTemplate_Underscore:: @ 83E261C
spr_template 11, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E83C
gUnknown_83E2634:: @ 83E2634
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_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/graphics.h b/include/graphics.h
index f85b95bad..a61250ea8 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4899,5 +4899,6 @@ extern const u32 gEasyChatModeIcons_Tiles[];
extern const u32 gUnknown_8E982BC[];
extern const u32 gUnknown_8E98458[];
extern const u32 gUnknown_8E98398[];
+extern const u16 gUnknown_8E98004[];
#endif //GUARD_GRAPHICS_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
index 424d1bdba..1e8d11b3a 100644
--- a/include/naming_screen.h
+++ b/include/naming_screen.h
@@ -6,8 +6,8 @@
#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 // Wrong name?
+#define NAMING_SCREEN_NAME_RATER 3
+#define NAMING_SCREEN_RIVAL 4
void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback);
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/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/naming_screen.c b/src/naming_screen.c
index a5a6b5a5b..6f506f621 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1,21 +1,23 @@
#include "global.h"
#include "gflib.h"
-#include "battle_message.h"
#include "graphics.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 "help_system.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 "trig.h"
#include "constants/help_system.h"
#include "constants/flags.h"
#include "constants/songs.h"
+#include "constants/event_objects.h"
enum
{
@@ -137,13 +139,19 @@ bool8 IsCursorAnimFinished();
u8 GetCurrentPageColumnCount(void);
void CreatePageSwitcherSprites(void);
void sub_809EC20(void);
-bool8 sub_809EC7C(struct Sprite * sprite);
-bool8 sub_809ECD0(struct Sprite * sprite);
-bool8 sub_809ECD4(struct Sprite * sprite);
-bool8 sub_809ED48(struct Sprite * sprite);
+bool8 PageSwapSpritesCB_Init(struct Sprite * sprite);
+bool8 PageSwapSpritesCB_Idle(struct Sprite * sprite);
+bool8 PageSwapSpritesCB_SwapHide(struct Sprite * sprite);
+bool8 PageSwapSpritesCB_SwapShow(struct Sprite * sprite);
+void sub_809ED88(u8 a0, struct Sprite * spr1, struct Sprite * spr2);
void CreateBackOkSprites(void);
void CreateUnderscoreSprites(void);
void CreateInputTargetIcon(void);
+void NamingScreen_NoCreateIcon(void);
+void NamingScreen_CreatePlayerIcon(void);
+void NamingScreen_CreatePCIcon(void);
+void NamingScreen_CreateMonIcon(void);
+void NamingScreen_CreateRivalIcon(void);
void sub_809FA60(void);
bool8 NamingScreen_InitDisplayMode(void);
void NamingScreen_TurnOffScreen(void);
@@ -164,6 +172,8 @@ void sub_809FC34(void);
extern const struct SubspriteTable gUnknown_83E2504[];
extern const struct SubspriteTable gUnknown_83E250C[];
+extern const struct SubspriteTable gUnknown_83E2524[];
+extern const struct SubspriteTable gUnknown_83E252C[];
extern const struct SpriteTemplate gUnknown_83E2574;
extern const struct SpriteTemplate gUnknown_83E258C;
@@ -171,8 +181,8 @@ extern const struct SpriteTemplate gUnknown_83E25A4;
extern const struct SpriteTemplate gUnknown_83E25BC;
extern const struct SpriteTemplate gUnknown_83E25D4;
extern const struct SpriteTemplate gUnknown_83E25EC;
-extern const struct SpriteTemplate gUnknown_83E2604;
-extern const struct SpriteTemplate gUnknown_83E261C;
+extern const struct SpriteTemplate sSpriteTemplate_InputArrow;
+extern const struct SpriteTemplate sSpriteTemplate_Underscore;
extern const struct SpriteTemplate gUnknown_83E2634;
const u16 gUnknown_83E1800[] = INCBIN_U16("graphics/interface/naming_screen_83E1800.4bpp");
@@ -1115,15 +1125,197 @@ void sub_809EC20(void)
sprite->data[1] = gNamingScreenData->currentPage;
}
-bool8 (*const gUnknown_83E2378[])(struct Sprite * sprite) = {
- sub_809EC7C,
- sub_809ECD0,
- sub_809ECD4,
- sub_809ED48
+bool8 (*const sPageSwapSpritesCBs[])(struct Sprite * sprite) = {
+ PageSwapSpritesCB_Init,
+ PageSwapSpritesCB_Idle,
+ PageSwapSpritesCB_SwapHide,
+ PageSwapSpritesCB_SwapShow
};
-void sub_809EC54(struct Sprite *sprite)
+void SpriteCB_PageSwap(struct Sprite *sprite)
{
- while (gUnknown_83E2378[sprite->data[0]](sprite))
+ while (sPageSwapSpritesCBs[sprite->data[0]](sprite))
;
}
+
+bool8 PageSwapSpritesCB_Init(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+
+ sub_809ED88(sub_809DE20(gNamingScreenData->currentPage), sprite1, sprite2);
+ sprite->data[0]++;
+ return FALSE;
+}
+
+bool8 PageSwapSpritesCB_Idle(struct Sprite *sprite)
+{
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite2 = &gSprites[sprite->data[7]];
+
+ return FALSE;
+}
+
+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;
+}
+
+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;
+}
+
+const u16 gUnknown_83E2388[] = {1, 3, 2};
+const u16 gUnknown_83E238E[] = {4, 6, 5};
+
+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;
+}
+
+//
+
+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;
+}
+
+void CreateUnderscoreSprites(void)
+{
+ u8 spriteId;
+ s16 xPos;
+ u8 i;
+
+ xPos = gNamingScreenData->inputCharBaseXPos - 5;
+ spriteId = CreateSprite(&sSpriteTemplate_InputArrow, xPos, 0x38, 0);
+ gSprites[spriteId].oam.priority = 3;
+ gSprites[spriteId].invisible = TRUE;
+ xPos = gNamingScreenData->inputCharBaseXPos;
+ for (i = 0; i < gNamingScreenData->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)
+//--------------------------------------------------
+
+void (*const sIconFunctions[])(void) = {
+ NamingScreen_NoCreateIcon,
+ NamingScreen_CreatePlayerIcon,
+ NamingScreen_CreatePCIcon,
+ NamingScreen_CreateMonIcon,
+ NamingScreen_CreateRivalIcon
+};
+
+void CreateInputTargetIcon(void)
+{
+ sIconFunctions[gNamingScreenData->template->iconFunction]();
+}
+
+void NamingScreen_NoCreateIcon(void)
+{
+
+}
+
+void NamingScreen_CreatePlayerIcon(void)
+{
+ u8 rivalGfxId;
+ u8 spriteId;
+
+ rivalGfxId = sub_805C7C8(0, gNamingScreenData->monSpecies);
+ spriteId = AddPseudoObjectEvent(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
+ gSprites[spriteId].oam.priority = 3;
+ StartSpriteAnim(&gSprites[spriteId], 4);
+}
+
+void NamingScreen_CreatePCIcon(void)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&gUnknown_83E2634, 0x38, 0x29, 0);
+ SetSubspriteTables(&gSprites[spriteId], gUnknown_83E252C);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+void NamingScreen_CreateMonIcon(void)
+{
+ u8 spriteId;
+
+ LoadMonIconPalettes();
+ spriteId = CreateMonIcon(gNamingScreenData->monSpecies, SpriteCallbackDummy, 0x38, 0x28, 0, gNamingScreenData->monPersonality, 1);
+ gSprites[spriteId].oam.priority = 3;
+}
+
+const union AnimCmd gUnknown_83E23A8[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(24, 10),
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gUnknown_83E23BC[] = {
+ gUnknown_83E23A8
+};
+
+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;
+}
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();