summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-09-05 01:41:14 -0700
committerYamaArashi <shadow962@live.com>2016-09-05 01:41:14 -0700
commit2085d7169e75b1fb417948d6e5167007064df258 (patch)
treeb45a1d7d0f4bd7e20cbf30b1f098af49add15e4a
parent411c2dc2d62881e4454833cf556999e311ad9554 (diff)
incorporate camthesaxman's birch speech decompilation work
-rw-r--r--asm/rom3.s2850
-rw-r--r--ewram_syms.txt2
-rw-r--r--include/sprite.h16
-rw-r--r--src/main_menu.c1061
4 files changed, 1071 insertions, 2858 deletions
diff --git a/asm/rom3.s b/asm/rom3.s
index 94b6d2b21..9fe90ef87 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -6,2856 +6,6 @@
.text
- thumb_func_start Task_Birch1
-Task_Birch1: @ 800A1F4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0800A2B0
- bl SetUpWindowConfig
- ldr r0, _0800A2B4
- bl sub_8071C4C
- ldr r0, _0800A2B8
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, _0800A2BC
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _0800A2C0
- ldr r1, _0800A2C4
- bl LZ77UnCompVram
- ldr r0, _0800A2C8
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _0800A2CC
- movs r1, 0x1
- movs r2, 0x10
- bl LoadPalette
- bl remove_some_task
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- adds r0, r4, 0
- bl AddBirchSpeechObjects
- movs r0, 0x1
- negs r0, r0
- movs r5, 0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _0800A2D0
- ldr r2, _0800A2D4
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0800A2D8
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x10]
- ldr r1, _0800A2DC
- str r1, [r0]
- movs r1, 0xFF
- strh r1, [r0, 0xC]
- strh r1, [r0, 0xE]
- movs r1, 0xD8
- strh r1, [r0, 0x16]
- movs r0, 0xBB
- lsls r0, 1
- bl sub_8075474
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A2B0: .4byte gWindowConfig_81E6C3C
-_0800A2B4: .4byte gWindowConfig_81E6CE4
-_0800A2B8: .4byte REG_WIN0H
-_0800A2BC: .4byte gUnknown_081E768C
-_0800A2C0: .4byte gUnknown_081E7834
-_0800A2C4: .4byte 0x06003800
-_0800A2C8: .4byte gUnknown_081E764C
-_0800A2CC: .4byte gUnknown_081E796C
-_0800A2D0: .4byte REG_BG1CNT
-_0800A2D4: .4byte 0x00000703
-_0800A2D8: .4byte 0x03004b20
-_0800A2DC: .4byte task_new_game_prof_birch_speech_2
- thumb_func_end Task_Birch1
-
- thumb_func_start task_new_game_prof_birch_speech_2
-task_new_game_prof_birch_speech_2: @ 800A2E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0800A300
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x16]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0800A304
- subs r0, r1, 0x1
- strh r0, [r4, 0x16]
- b _0800A34A
- .align 2, 0
-_0800A300: .4byte 0x03004b20
-_0800A304:
- ldrb r0, [r4, 0x18]
- ldr r2, _0800A350
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x88
- strh r0, [r1, 0x20]
- movs r0, 0x3C
- strh r0, [r1, 0x22]
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- subs r0, 0x41
- ands r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- adds r0, r5, 0
- movs r1, 0xA
- bl sub_800B534
- adds r0, r5, 0
- movs r1, 0x14
- bl sub_800B6C0
- movs r0, 0x50
- strh r0, [r4, 0x16]
- ldr r0, _0800A354
- str r0, [r4]
-_0800A34A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A350: .4byte 0x02020004
-_0800A354: .4byte task_new_game_prof_birch_speech_3
- thumb_func_end task_new_game_prof_birch_speech_2
-
- thumb_func_start task_new_game_prof_birch_speech_3
-task_new_game_prof_birch_speech_3: @ 800A358
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800A398
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0800A3BA
- ldr r2, _0800A39C
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrh r1, [r4, 0x16]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0800A3A0
- subs r0, r1, 0x1
- strh r0, [r4, 0x16]
- b _0800A3BA
- .align 2, 0
-_0800A398: .4byte 0x03004b20
-_0800A39C: .4byte 0x02020004
-_0800A3A0:
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r0, _0800A3C0
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r0, _0800A3C4
- str r0, [r4]
-_0800A3BA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A3C0: .4byte gUnknown_081C6D78
-_0800A3C4: .4byte task_new_game_prof_birch_speech_4
- thumb_func_end task_new_game_prof_birch_speech_3
-
- thumb_func_start task_new_game_prof_birch_speech_4
-task_new_game_prof_birch_speech_4: @ 800A3C8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0800A404
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800A3FE
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A3FE
- ldr r1, _0800A408
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A40C
- str r1, [r0]
- ldr r0, _0800A410
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
-_0800A3FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A404: .4byte 0x0202f388
-_0800A408: .4byte 0x03004b20
-_0800A40C: .4byte task_new_game_prof_birch_speech_5
-_0800A410: .4byte gUnknown_081C6DF8
- thumb_func_end task_new_game_prof_birch_speech_4
-
- thumb_func_start task_new_game_prof_birch_speech_5
-task_new_game_prof_birch_speech_5: @ 800A414
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A434
- ldr r0, _0800A43C
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800A440
- str r0, [r1]
-_0800A434:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A43C: .4byte 0x03004b20
-_0800A440: .4byte task_new_game_prof_birch_speech_6
- thumb_func_end task_new_game_prof_birch_speech_5
-
- thumb_func_start task_new_game_prof_birch_speech_6
-task_new_game_prof_birch_speech_6: @ 800A444
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800A4A8
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x1A]
- ldr r1, _0800A4AC
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- movs r5, 0
- movs r1, 0x68
- strh r1, [r2, 0x20]
- movs r1, 0x48
- strh r1, [r2, 0x22]
- movs r1, 0x3E
- adds r1, r2
- mov r12, r1
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- mov r3, r12
- strb r1, [r3]
- strh r5, [r2, 0x2E]
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r2, 0x20
- str r2, [sp, 0x8]
- ldr r2, _0800A4B0
- str r2, [sp, 0xC]
- movs r2, 0x70
- movs r3, 0x3A
- bl AddTextPrinterForMessage
- ldr r0, _0800A4B4
- str r0, [r4]
- strh r5, [r4, 0x16]
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A4A8: .4byte 0x03004b20
-_0800A4AC: .4byte 0x02020004
-_0800A4B0: .4byte 0x0000ffff
-_0800A4B4: .4byte task_new_game_prof_birch_speech_7
- thumb_func_end task_new_game_prof_birch_speech_6
-
- thumb_func_start task_new_game_prof_birch_speech_7
-task_new_game_prof_birch_speech_7: @ 800A4B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8075374
- lsls r0, 24
- cmp r0, 0
- beq _0800A4E4
- ldr r0, _0800A518
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r5, r1, r0
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0x5F
- ble _0800A4E4
- ldr r0, _0800A51C
- bl sub_807206C
- ldr r0, _0800A520
- str r0, [r5]
-_0800A4E4:
- ldr r1, _0800A518
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r3, [r2, 0x16]
- movs r0, 0x16
- ldrsh r1, [r2, r0]
- ldr r0, _0800A524
- cmp r1, r0
- bgt _0800A510
- adds r0, r3, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _0800A510
- movs r0, 0xAF
- lsls r0, 1
- movs r1, 0
- bl cry_related
-_0800A510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A518: .4byte 0x03004b20
-_0800A51C: .4byte gUnknown_0840DFF7
-_0800A520: .4byte task_new_game_prof_birch_speech_8
-_0800A524: .4byte 0x00003fff
- thumb_func_end task_new_game_prof_birch_speech_7
-
- thumb_func_start task_new_game_prof_birch_speech_8
-task_new_game_prof_birch_speech_8: @ 800A528
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A552
- ldr r0, _0800A558
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r1, _0800A55C
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A560
- str r1, [r0]
-_0800A552:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A558: .4byte gUnknown_081C6E1A
-_0800A55C: .4byte 0x03004b20
-_0800A560: .4byte task_new_game_prof_birch_speech_9
- thumb_func_end task_new_game_prof_birch_speech_8
-
- thumb_func_start task_new_game_prof_birch_speech_9
-task_new_game_prof_birch_speech_9: @ 800A564
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A59A
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r0, _0800A5A0
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r1, _0800A5A4
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A5A8
- str r1, [r0]
-_0800A59A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A5A0: .4byte gUnknown_081C6FCB
-_0800A5A4: .4byte 0x03004b20
-_0800A5A8: .4byte task_new_game_prof_birch_speech_10
- thumb_func_end task_new_game_prof_birch_speech_9
-
- thumb_func_start task_new_game_prof_birch_speech_10
-task_new_game_prof_birch_speech_10: @ 800A5AC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A612
- ldr r5, _0800A618
- ldr r0, _0800A61C
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r1, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x1]
- movs r0, 0x1A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r2, r1
- orrs r2, r3
- strb r2, [r0, 0x1]
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_800B458
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_800B614
- movs r0, 0x40
- strh r0, [r4, 0x16]
- ldr r0, _0800A620
- str r0, [r4]
-_0800A612:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A618: .4byte 0x02020004
-_0800A61C: .4byte 0x03004b20
-_0800A620: .4byte task_new_game_prof_birch_speech_11
- thumb_func_end task_new_game_prof_birch_speech_10
-
- thumb_func_start task_new_game_prof_birch_speech_11
-task_new_game_prof_birch_speech_11: @ 800A624
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800A64C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r3, [r2, 0x10]
- movs r0, 0x10
- ldrsh r1, [r2, r0]
- movs r0, 0x3C
- negs r0, r0
- cmp r1, r0
- beq _0800A654
- subs r1, r3, 0x2
- strh r1, [r2, 0x10]
- ldr r0, _0800A650
- strh r1, [r0]
- b _0800A65C
- .align 2, 0
-_0800A64C: .4byte 0x03004b20
-_0800A650: .4byte REG_BG1HOFS
-_0800A654:
- ldr r0, _0800A660
- strh r0, [r2, 0x10]
- ldr r0, _0800A664
- str r0, [r2]
-_0800A65C:
- pop {r0}
- bx r0
- .align 2, 0
-_0800A660: .4byte 0x0000ffc4
-_0800A664: .4byte task_new_game_prof_birch_speech_12
- thumb_func_end task_new_game_prof_birch_speech_11
-
- thumb_func_start task_new_game_prof_birch_speech_12
-task_new_game_prof_birch_speech_12: @ 800A668
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _0800A6C0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0800A70E
- ldr r2, _0800A6C4
- movs r0, 0x18
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r7, 0x4
- orrs r1, r7
- strb r1, [r0]
- movs r0, 0x1A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- ldrh r0, [r4, 0x16]
- movs r1, 0x16
- ldrsh r6, [r4, r1]
- cmp r6, 0
- beq _0800A6C8
- subs r0, 0x1
- strh r0, [r4, 0x16]
- b _0800A70E
- .align 2, 0
-_0800A6C0: .4byte 0x03004b20
-_0800A6C4: .4byte 0x02020004
-_0800A6C8:
- ldrb r3, [r4, 0x1C]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- movs r0, 0xB4
- strh r0, [r1, 0x20]
- movs r0, 0x3C
- strh r0, [r1, 0x22]
- movs r2, 0x3E
- adds r2, r1
- mov r12, r2
- ldrb r2, [r2]
- subs r0, 0x41
- ands r0, r2
- mov r2, r12
- strb r0, [r2]
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r7
- strb r0, [r1, 0x1]
- strh r3, [r4, 0xC]
- strh r6, [r4, 0x14]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_800B534
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_800B6C0
- ldr r0, _0800A714
- str r0, [r4]
-_0800A70E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A714: .4byte task_new_game_prof_birch_speech_13
- thumb_func_end task_new_game_prof_birch_speech_12
-
- thumb_func_start task_new_game_prof_birch_speech_13
-task_new_game_prof_birch_speech_13: @ 800A718
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800A750
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0800A74C
- ldr r2, _0800A754
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r0, _0800A758
- str r0, [r3]
-_0800A74C:
- pop {r0}
- bx r0
- .align 2, 0
-_0800A750: .4byte 0x03004b20
-_0800A754: .4byte 0x02020004
-_0800A758: .4byte task_new_game_prof_birch_speech_14
- thumb_func_end task_new_game_prof_birch_speech_13
-
- thumb_func_start task_new_game_prof_birch_speech_14
-task_new_game_prof_birch_speech_14: @ 800A75C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r0, _0800A790
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r1, _0800A794
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A798
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A790: .4byte gUnknown_081C6FD8
-_0800A794: .4byte 0x03004b20
-_0800A798: .4byte task_new_game_prof_birch_speech_15
- thumb_func_end task_new_game_prof_birch_speech_14
-
- thumb_func_start task_new_game_prof_birch_speech_15
-task_new_game_prof_birch_speech_15: @ 800A79C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A7C4
- movs r0, 0x2
- movs r1, 0x4
- bl CreateGenderMenu
- ldr r0, _0800A7CC
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800A7D0
- str r0, [r1]
-_0800A7C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A7CC: .4byte 0x03004b20
-_0800A7D0: .4byte task_new_game_prof_birch_speech_16
- thumb_func_end task_new_game_prof_birch_speech_15
-
- thumb_func_start task_new_game_prof_birch_speech_16
-task_new_game_prof_birch_speech_16: @ 800A7D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl GenderMenuProcessInput
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _0800A7EE
- cmp r4, 0x1
- beq _0800A7EE
- lsls r4, r5, 2
- b _0800A818
-_0800A7EE:
- bl sub_8072DEC
- movs r0, 0x5
- bl audio_play
- ldr r0, _0800A860
- strb r4, [r0, 0x8]
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x8
- movs r3, 0x9
- bl Reset
- ldr r1, _0800A864
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A868
- str r1, [r0]
- adds r4, r2, 0
-_0800A818:
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0800A864
- adds r0, r4, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r3, r0
- beq _0800A85A
- strh r3, [r4, 0x14]
- ldr r2, _0800A86C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r0, r5, 0
- movs r1, 0
- bl sub_800B458
- ldr r0, _0800A870
- str r0, [r4]
-_0800A85A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A860: .4byte gSaveBlock2
-_0800A864: .4byte 0x03004b20
-_0800A868: .4byte sub_800A974
-_0800A86C: .4byte 0x02020004
-_0800A870: .4byte task_new_game_prof_birch_speech_17
- thumb_func_end task_new_game_prof_birch_speech_16
-
- thumb_func_start task_new_game_prof_birch_speech_17
-task_new_game_prof_birch_speech_17: @ 800A874
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0800A8A4
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- ldrb r5, [r4, 0xC]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- adds r7, r1, 0
- cmp r0, 0
- bne _0800A8AC
- ldr r0, _0800A8A8
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x4
- strh r0, [r1, 0x20]
- b _0800A912
- .align 2, 0
-_0800A8A4: .4byte 0x03004b20
-_0800A8A8: .4byte 0x02020004
-_0800A8AC:
- ldr r3, _0800A8CC
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0800A8D0
- ldrb r5, [r4, 0x1E]
- b _0800A8D2
- .align 2, 0
-_0800A8CC: .4byte 0x02020004
-_0800A8D0:
- ldrb r5, [r4, 0x1C]
-_0800A8D2:
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r3
- movs r0, 0xF0
- strh r0, [r2, 0x20]
- movs r0, 0x3C
- strh r0, [r2, 0x22]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r3]
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r7
- strh r5, [r4, 0xC]
- ldrb r1, [r2, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x1]
- adds r0, r6, 0
- movs r1, 0
- bl sub_800B534
- ldr r0, _0800A918
- str r0, [r4]
-_0800A912:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A918: .4byte task_new_game_prof_birch_speech_18
- thumb_func_end task_new_game_prof_birch_speech_17
-
- thumb_func_start task_new_game_prof_birch_speech_18
-task_new_game_prof_birch_speech_18: @ 800A91C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800A948
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrb r1, [r3, 0xC]
- ldr r2, _0800A94C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- ldrh r1, [r2, 0x20]
- movs r4, 0x20
- ldrsh r0, [r2, r4]
- cmp r0, 0xB4
- ble _0800A950
- subs r0, r1, 0x4
- strh r0, [r2, 0x20]
- b _0800A96A
- .align 2, 0
-_0800A948: .4byte 0x03004b20
-_0800A94C: .4byte 0x02020004
-_0800A950:
- movs r0, 0xB4
- strh r0, [r2, 0x20]
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0800A96A
- ldrb r0, [r2, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- strb r1, [r2, 0x1]
- ldr r0, _0800A970
- str r0, [r3]
-_0800A96A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A970: .4byte task_new_game_prof_birch_speech_16
- thumb_func_end task_new_game_prof_birch_speech_18
-
- thumb_func_start sub_800A974
-sub_800A974: @ 800A974
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r0, _0800A9A8
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r1, _0800A9AC
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800A9B0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A9A8: .4byte gUnknown_081C6FFA
-_0800A9AC: .4byte 0x03004b20
-_0800A9B0: .4byte Task_800A9B4
- thumb_func_end sub_800A974
-
- thumb_func_start Task_800A9B4
-Task_800A9B4: @ 800A9B4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800A9DC
- movs r0, 0x2
- movs r1, 0x1
- bl CreateNameMenu
- ldr r0, _0800A9E4
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800A9E8
- str r0, [r1]
-_0800A9DC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800A9E4: .4byte 0x03004b20
-_0800A9E8: .4byte sub_800A9EC
- thumb_func_end Task_800A9B4
-
- thumb_func_start sub_800A9EC
-sub_800A9EC: @ 800A9EC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- bl NameMenuProcessInput
- lsls r6, r0, 24
- asrs r4, r6, 24
- cmp r4, 0
- beq _0800AA48
- cmp r4, 0
- bgt _0800AA0E
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0800AA78
- b _0800AA9C
-_0800AA0E:
- cmp r4, 0x4
- bgt _0800AA9C
- bl sub_8072DEC
- movs r0, 0x5
- bl audio_play
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x16
- movs r3, 0xC
- bl Reset
- lsrs r0, r6, 24
- bl set_default_player_name
- ldr r1, _0800AA40
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800AA44
- str r1, [r0]
- b _0800AA9C
- .align 2, 0
-_0800AA40: .4byte 0x03004b20
-_0800AA44: .4byte task_new_game_prof_birch_speech_part2_1
-_0800AA48:
- movs r0, 0x5
- bl audio_play
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0800AA70
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800AA74
- str r1, [r0]
- b _0800AA9C
- .align 2, 0
-_0800AA70: .4byte 0x03004b20
-_0800AA74: .4byte sub_800AAAC
-_0800AA78:
- bl sub_8072DEC
- movs r0, 0x5
- bl audio_play
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x16
- movs r3, 0xC
- bl Reset
- ldr r0, _0800AAA4
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800AAA8
- str r0, [r1]
-_0800AA9C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AAA4: .4byte 0x03004b20
-_0800AAA8: .4byte task_new_game_prof_birch_speech_14
- thumb_func_end sub_800A9EC
-
- thumb_func_start sub_800AAAC
-sub_800AAAC: @ 800AAAC
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _0800AAE0
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0800AAD8
- movs r0, 0x1
- bl set_default_player_name
- ldr r1, _0800AAE4
- ldrb r2, [r1, 0x8]
- str r4, [sp]
- ldr r0, _0800AAE8
- str r0, [sp, 0x4]
- movs r0, 0
- movs r3, 0
- bl DoNamingScreen
-_0800AAD8:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AAE0: .4byte 0x0202f388
-_0800AAE4: .4byte gSaveBlock2
-_0800AAE8: .4byte new_game_prof_birch_speech_part2_start
- thumb_func_end sub_800AAAC
-
- thumb_func_start task_new_game_prof_birch_speech_part2_1
-task_new_game_prof_birch_speech_part2_1: @ 800AAEC
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r5, _0800AB28
- ldr r1, _0800AB2C
- adds r0, r5, 0
- bl StringExpandPlaceholders
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r1, _0800AB30
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0800AB34
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AB28: .4byte 0x020234cc
-_0800AB2C: .4byte gUnknown_081C7017
-_0800AB30: .4byte 0x03004b20
-_0800AB34: .4byte sub_800AB38
- thumb_func_end task_new_game_prof_birch_speech_part2_1
-
- thumb_func_start sub_800AB38
-sub_800AB38: @ 800AB38
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800AB62
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8072974
- ldr r0, _0800AB68
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800AB6C
- str r0, [r1]
-_0800AB62:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AB68: .4byte 0x03004b20
-_0800AB6C: .4byte task_new_game_prof_birch_speech_part2_4
- thumb_func_end sub_800AB38
-
- thumb_func_start task_new_game_prof_birch_speech_part2_4
-task_new_game_prof_birch_speech_part2_4: @ 800AB70
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl FillWindowPixelBuffer
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0800AB96
- cmp r1, 0
- bgt _0800AB90
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0800ABF0
- b _0800AC10
-_0800AB90:
- cmp r1, 0x1
- beq _0800ABF0
- b _0800AC10
-_0800AB96:
- movs r0, 0x5
- bl audio_play
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x8
- movs r3, 0x7
- bl Reset
- ldr r2, _0800ABE4
- ldr r0, _0800ABE8
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_800B458
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_800B614
- ldr r0, _0800ABEC
- str r0, [r4]
- b _0800AC10
- .align 2, 0
-_0800ABE4: .4byte 0x02020004
-_0800ABE8: .4byte 0x03004b20
-_0800ABEC: .4byte sub_800AC20
-_0800ABF0:
- movs r0, 0x5
- bl audio_play
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x8
- movs r3, 0x7
- bl Reset
- ldr r0, _0800AC18
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0800AC1C
- str r0, [r1]
-_0800AC10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AC18: .4byte 0x03004b20
-_0800AC1C: .4byte task_new_game_prof_birch_speech_14
- thumb_func_end task_new_game_prof_birch_speech_part2_4
-
- thumb_func_start sub_800AC20
-sub_800AC20: @ 800AC20
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800AC44
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r1, [r2, 0x10]
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _0800AC4C
- adds r1, 0x2
- strh r1, [r2, 0x10]
- ldr r0, _0800AC48
- strh r1, [r0]
- b _0800AC50
- .align 2, 0
-_0800AC44: .4byte 0x03004b20
-_0800AC48: .4byte REG_BG1HOFS
-_0800AC4C:
- ldr r0, _0800AC54
- str r0, [r2]
-_0800AC50:
- pop {r0}
- bx r0
- .align 2, 0
-_0800AC54: .4byte task_new_game_prof_birch_speech_part2_6
- thumb_func_end sub_800AC20
-
- thumb_func_start task_new_game_prof_birch_speech_part2_6
-task_new_game_prof_birch_speech_part2_6: @ 800AC58
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0800AD34
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- movs r1, 0x12
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _0800AD2C
- ldr r5, _0800AD38
- movs r2, 0x1C
- ldrsh r1, [r7, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r3, 0x4
- mov r12, r3
- mov r2, r12
- orrs r1, r2
- strb r1, [r0]
- movs r3, 0x1E
- ldrsh r1, [r7, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r7, 0x18]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x88
- strh r0, [r1, 0x20]
- movs r0, 0x40
- strh r0, [r1, 0x22]
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- movs r4, 0x5
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r3]
- ldrb r3, [r1, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- mov r3, r12
- orrs r0, r3
- strb r0, [r1, 0x1]
- ldrb r1, [r7, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x68
- strh r1, [r0, 0x20]
- movs r1, 0x48
- strh r1, [r0, 0x22]
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- ands r4, r1
- strb r4, [r3]
- ldrb r1, [r0, 0x1]
- ands r2, r1
- mov r1, r12
- orrs r2, r1
- strb r2, [r0, 0x1]
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_800B534
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_800B6C0
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r4, _0800AD3C
- ldr r1, _0800AD40
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r0, _0800AD44
- str r0, [r7]
-_0800AD2C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AD34: .4byte 0x03004b20
-_0800AD38: .4byte 0x02020004
-_0800AD3C: .4byte 0x020234cc
-_0800AD40: .4byte gUnknown_081C7025
-_0800AD44: .4byte task_new_game_prof_birch_speech_part2_7
- thumb_func_end task_new_game_prof_birch_speech_part2_6
-
- thumb_func_start task_new_game_prof_birch_speech_part2_7
-task_new_game_prof_birch_speech_part2_7: @ 800AD48
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0800ADE8
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0800ADE0
- ldr r7, _0800ADEC
- movs r1, 0x18
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x1]
- movs r6, 0xD
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800ADE0
- movs r0, 0x18
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r2, [r0, 0x1]
- adds r1, r6, 0
- ands r1, r2
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r0, 0x1]
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x1]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_800B458
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_800B614
- movs r0, 0x40
- strh r0, [r4, 0x16]
- ldr r0, _0800ADF0
- str r0, [r4]
-_0800ADE0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800ADE8: .4byte 0x03004b20
-_0800ADEC: .4byte 0x02020004
-_0800ADF0: .4byte task_new_game_prof_birch_speech_part2_8
- thumb_func_end task_new_game_prof_birch_speech_part2_7
-
- thumb_func_start task_new_game_prof_birch_speech_part2_8
-task_new_game_prof_birch_speech_part2_8: @ 800ADF4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0800AE4C
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- adds r7, r1, 0
- cmp r0, 0
- beq _0800AEC4
- ldr r2, _0800AE50
- movs r3, 0x18
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r0]
- movs r0, 0x1A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- ldrh r1, [r4, 0x16]
- movs r3, 0x16
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0800AE54
- subs r0, r1, 0x1
- strh r0, [r4, 0x16]
- b _0800AEC4
- .align 2, 0
-_0800AE4C: .4byte 0x03004b20
-_0800AE50: .4byte 0x02020004
-_0800AE54:
- ldr r0, _0800AE60
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _0800AE64
- ldrb r5, [r4, 0x1E]
- b _0800AE66
- .align 2, 0
-_0800AE60: .4byte gSaveBlock2
-_0800AE64:
- ldrb r5, [r4, 0x1C]
-_0800AE66:
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r2
- movs r0, 0x78
- strh r0, [r1, 0x20]
- movs r0, 0x3C
- strh r0, [r1, 0x22]
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- subs r0, 0x41
- ands r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r7
- strh r5, [r4, 0xC]
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_800B534
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_800B6C0
- movs r0, 0x2
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x12
- bl DrawDefaultWindow
- ldr r0, _0800AECC
- movs r1, 0x3
- movs r2, 0xE
- bl AddTextPrinterWithCallbackForMessage
- ldr r0, _0800AED0
- str r0, [r4]
-_0800AEC4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AECC: .4byte gUnknown_081C7074
-_0800AED0: .4byte task_new_game_prof_birch_speech_part2_9
- thumb_func_end task_new_game_prof_birch_speech_part2_8
-
- thumb_func_start task_new_game_prof_birch_speech_part2_9
-task_new_game_prof_birch_speech_part2_9: @ 800AED4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800AF6C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r6, r1, r2
- movs r1, 0x12
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _0800AF64
- ldr r7, _0800AF70
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x18
- bl sub_8072CF4
- lsls r0, 24
- cmp r0, 0
- beq _0800AF64
- ldrb r0, [r6, 0xC]
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r5, r4, r7
- ldrb r1, [r5, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x1]
- adds r0, r7, 0
- adds r0, 0x10
- adds r0, r4, r0
- ldr r1, _0800AF74
- str r1, [r0]
- adds r0, r5, 0
- bl InitSpriteAffineAnim
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- adds r0, r7, 0
- adds r0, 0x1C
- adds r4, r0
- ldr r0, _0800AF78
- str r0, [r4]
- ldr r0, _0800AF7C
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- bl play_sound_effect
- ldr r0, _0800AF80
- str r0, [r6]
-_0800AF64:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800AF6C: .4byte 0x03004b20
-_0800AF70: .4byte 0x02020004
-_0800AF74: .4byte gSpriteAffineAnimTable_81E79AC
-_0800AF78: .4byte sub_800B240
-_0800AF7C: .4byte 0x0000ffff
-_0800AF80: .4byte task_new_game_prof_birch_speech_part2_10
- thumb_func_end task_new_game_prof_birch_speech_part2_9
-
- thumb_func_start task_new_game_prof_birch_speech_part2_10
-task_new_game_prof_birch_speech_part2_10: @ 800AF84
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800AFB4
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrb r1, [r3, 0xC]
- ldr r2, _0800AFB8
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _0800AFAE
- ldr r0, _0800AFBC
- str r0, [r3]
-_0800AFAE:
- pop {r0}
- bx r0
- .align 2, 0
-_0800AFB4: .4byte 0x03004b20
-_0800AFB8: .4byte 0x02020004
-_0800AFBC: .4byte sub_800AFC0
- thumb_func_end task_new_game_prof_birch_speech_part2_10
-
- thumb_func_start sub_800AFC0
-sub_800AFC0: @ 800AFC0
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0800B018
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800B010
- ldr r0, _0800B01C
- lsls r4, r2, 2
- adds r4, r2
- lsls r4, 3
- adds r4, r0
- ldrb r2, [r4, 0xC]
- ldr r1, _0800B020
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0800B024
- str r1, [r0]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x82
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0800B028
- ldr r1, _0800B02C
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0800B030
- str r0, [r4]
-_0800B010:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B018: .4byte 0x0202f388
-_0800B01C: .4byte 0x03004b20
-_0800B020: .4byte 0x02020004
-_0800B024: .4byte nullsub_34
-_0800B028: .4byte 0xffff0000
-_0800B02C: .4byte 0x0000ffff
-_0800B030: .4byte sub_800B034
- thumb_func_end sub_800AFC0
-
- thumb_func_start sub_800B034
-sub_800B034: @ 800B034
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0800B058
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0800B052
- ldr r0, _0800B05C
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0800B052:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B058: .4byte 0x0202f388
-_0800B05C: .4byte c2_load_new_map_2
- thumb_func_end sub_800B034
-
- thumb_func_start new_game_prof_birch_speech_part2_start
-new_game_prof_birch_speech_part2_start: @ 800B060
- push {r4,r5,lr}
- sub sp, 0xC
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 19
- movs r4, 0
- strh r4, [r0]
- adds r0, 0xC
- strh r4, [r0]
- subs r0, 0x2
- strh r4, [r0]
- subs r0, 0x2
- strh r4, [r0]
- adds r0, 0x10
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- subs r0, 0x6
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- subs r0, 0x6
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- add r0, sp, 0x4
- strh r4, [r0]
- ldr r1, _0800B13C
- str r0, [r1]
- movs r4, 0xC0
- lsls r4, 19
- str r4, [r1, 0x4]
- ldr r0, _0800B140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0800B144
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r2, [r0]
- str r0, [r1]
- movs r0, 0xA0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0800B148
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- ldr r0, _0800B14C
- adds r1, r4, 0
- bl LZ77UnCompVram
- ldr r0, _0800B150
- ldr r1, _0800B154
- bl LZ77UnCompVram
- ldr r0, _0800B158
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- bl ResetTasks
- ldr r0, _0800B15C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0800B160
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldr r0, _0800B164
- strh r0, [r4, 0x10]
- bl remove_some_task
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- adds r0, r5, 0
- bl AddBirchSpeechObjects
- ldr r0, _0800B168
- bl SetUpWindowConfig
- ldr r0, _0800B16C
- bl sub_8071C4C
- ldr r0, _0800B170
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _0800B174
- movs r0, 0x1
- strh r0, [r4, 0x14]
- ldrb r3, [r4, 0x1E]
- b _0800B178
- .align 2, 0
-_0800B13C: .4byte 0x040000d4
-_0800B140: .4byte 0x8100c000
-_0800B144: .4byte 0x85000100
-_0800B148: .4byte 0x81000200
-_0800B14C: .4byte gUnknown_081E768C
-_0800B150: .4byte gUnknown_081E7834
-_0800B154: .4byte 0x06003800
-_0800B158: .4byte gUnknown_081E764C
-_0800B15C: .4byte task_new_game_prof_birch_speech_part2_1
-_0800B160: .4byte 0x03004b20
-_0800B164: .4byte 0x0000ffc4
-_0800B168: .4byte gWindowConfig_81E6C3C
-_0800B16C: .4byte gWindowConfig_81E6CE4
-_0800B170: .4byte gSaveBlock2
-_0800B174:
- strh r0, [r4, 0x14]
- ldrb r3, [r4, 0x1C]
-_0800B178:
- ldr r0, _0800B210
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- movs r4, 0
- movs r0, 0xB4
- strh r0, [r1, 0x20]
- movs r0, 0x3C
- strh r0, [r1, 0x22]
- adds r1, 0x3E
- ldrb r2, [r1]
- subs r0, 0x41
- ands r0, r2
- strb r0, [r1]
- ldr r1, _0800B214
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0xC]
- ldr r1, _0800B218
- ldr r2, _0800B21C
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _0800B220
- strh r4, [r0]
- adds r0, 0x4
- strh r4, [r0]
- adds r0, 0x4
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x6
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r3, _0800B224
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0800B228
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r0, _0800B22C
- bl SetVBlankCallback
- ldr r0, _0800B230
- bl SetMainCallback2
- ldr r1, _0800B234
- ldr r2, _0800B238
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B210: .4byte 0x02020004
-_0800B214: .4byte 0x03004b20
-_0800B218: .4byte REG_BG1HOFS
-_0800B21C: .4byte 0x0000ffc4
-_0800B220: .4byte REG_WIN0H
-_0800B224: .4byte 0x04000208
-_0800B228: .4byte 0x04000200
-_0800B22C: .4byte VBlankCB_MainMenu
-_0800B230: .4byte CB2_MainMenu
-_0800B234: .4byte REG_BG1CNT
-_0800B238: .4byte 0x00000703
- thumb_func_end new_game_prof_birch_speech_part2_start
-
- thumb_func_start nullsub_34
-nullsub_34: @ 800B23C
- bx lr
- thumb_func_end nullsub_34
-
- thumb_func_start sub_800B240
-sub_800B240: @ 800B240
- movs r2, 0x22
- ldrsh r1, [r0, r2]
- lsls r1, 16
- movs r3, 0x2E
- ldrsh r2, [r0, r3]
- adds r1, r2
- movs r2, 0xC0
- lsls r2, 8
- adds r1, r2
- lsrs r2, r1, 16
- strh r2, [r0, 0x22]
- strh r1, [r0, 0x2E]
- bx lr
- thumb_func_end sub_800B240
-
- thumb_func_start sub_800B25C
-sub_800B25C: @ 800B25C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _0800B2B8
- ldr r2, _0800B2BC
- movs r3, 0xAF
- lsls r3, 3
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r3, 0x1
- adds r2, r3
- ldrb r2, [r2]
- ldr r4, _0800B2C0
- ldr r3, [r4]
- ldr r4, [r4, 0x4]
- str r4, [sp]
- movs r4, 0xAF
- lsls r4, 1
- str r4, [sp, 0x4]
- bl DecompressPicFromTable_2
- ldr r0, _0800B2C4
- bl LoadCompressedObjectPalette
- adds r0, r4, 0
- movs r1, 0x1
- bl gpu_pal_obj_decompress_and_apply
- ldr r0, _0800B2C8
- adds r1, r5, 0
- adds r2, r6, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0800B2B8: .4byte gMonFrontPicTable + 0xAF0
-_0800B2BC: .4byte gMonFrontPicCoords
-_0800B2C0: .4byte gUnknown_081FAF4C
-_0800B2C4: .4byte gMonPaletteTable + 0xAF0
-_0800B2C8: .4byte 0x02024e8c
- thumb_func_end sub_800B25C
-
- thumb_func_start AddBirchSpeechObjects
-AddBirchSpeechObjects: @ 800B2CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x88
- movs r1, 0x3C
- movs r2, 0x1
- bl AddNewGameBirchObject
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0800B3DC
- mov r9, r1
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- movs r3, 0x1C
- add r3, r9
- mov r8, r3
- adds r1, r2, r3
- ldr r7, _0800B3E0
- str r7, [r1]
- add r2, r9
- ldrb r3, [r2, 0x5]
- movs r6, 0xD
- negs r6, r6
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x5]
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r3, 0x4
- mov r10, r3
- mov r3, r10
- orrs r1, r3
- strb r1, [r2]
- ldr r1, _0800B3E4
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r1
- strh r0, [r5, 0x18]
- movs r0, 0x68
- movs r1, 0x48
- bl sub_800B25C
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r4, r8
- adds r1, r2, r4
- str r7, [r1]
- add r2, r9
- ldrb r3, [r2, 0x5]
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x5]
- adds r2, 0x3E
- ldrb r1, [r2]
- mov r3, r10
- orrs r1, r3
- strb r1, [r2]
- strh r0, [r5, 0x1A]
- ldr r4, _0800B3E8
- str r4, [sp]
- movs r0, 0
- movs r1, 0x78
- movs r2, 0x3C
- movs r3, 0
- bl sub_80859BC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r3, r8
- adds r1, r2, r3
- str r7, [r1]
- add r2, r9
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- mov r4, r10
- orrs r1, r4
- strb r1, [r3]
- ldrb r3, [r2, 0x5]
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x5]
- strh r0, [r5, 0x1C]
- ldr r0, _0800B3E8
- movs r1, 0x80
- lsls r1, 4
- adds r4, r0, r1
- str r4, [sp]
- movs r0, 0x1
- movs r1, 0x78
- movs r2, 0x3C
- movs r3, 0
- bl sub_80859BC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r8, r2
- mov r3, r8
- str r7, [r3]
- add r2, r9
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- mov r4, r10
- orrs r1, r4
- strb r1, [r3]
- ldrb r1, [r2, 0x5]
- ands r6, r1
- strb r6, [r2, 0x5]
- strh r0, [r5, 0x1E]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B3DC: .4byte 0x02020004
-_0800B3E0: .4byte nullsub_34
-_0800B3E4: .4byte 0x03004b20
-_0800B3E8: .4byte 0x02000000
- thumb_func_end AddBirchSpeechObjects
-
- thumb_func_start sub_800B3EC
-sub_800B3EC: @ 800B3EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _0800B420
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r3, r0, r4
- ldrh r1, [r3, 0xA]
- movs r5, 0xA
- ldrsh r0, [r3, r5]
- cmp r0, 0
- bne _0800B424
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x1
- strh r0, [r1, 0x12]
- adds r0, r2, 0
- bl DestroyTask
- b _0800B44E
- .align 2, 0
-_0800B420: .4byte 0x03004b20
-_0800B424:
- ldrh r2, [r3, 0x10]
- movs r4, 0x10
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _0800B434
- subs r0, r2, 0x1
- strh r0, [r3, 0x10]
- b _0800B44E
-_0800B434:
- ldrh r0, [r3, 0xE]
- strh r0, [r3, 0x10]
- subs r1, 0x1
- strh r1, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- ldr r2, _0800B454
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- lsls r0, 8
- adds r1, r0
- strh r1, [r2]
-_0800B44E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B454: .4byte REG_BLDALPHA
- thumb_func_end sub_800B3EC
-
- thumb_func_start sub_800B458
-sub_800B458: @ 800B458
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _0800B4BC
- movs r2, 0x94
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x10
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- ldr r0, _0800B4C0
- mov r8, r0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r6, 0
- strh r6, [r0, 0x12]
- ldr r0, _0800B4C4
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r8
- strh r4, [r1, 0x8]
- movs r0, 0x10
- strh r0, [r1, 0xA]
- strh r6, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r5, [r1, 0x10]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B4BC: .4byte REG_BLDCNT
-_0800B4C0: .4byte 0x03004b20
-_0800B4C4: .4byte sub_800B3EC
- thumb_func_end sub_800B458
-
- thumb_func_start sub_800B4C8
-sub_800B4C8: @ 800B4C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _0800B4FC
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r3, r0, r4
- ldrh r1, [r3, 0xA]
- movs r5, 0xA
- ldrsh r0, [r3, r5]
- cmp r0, 0x10
- bne _0800B500
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x1
- strh r0, [r1, 0x12]
- adds r0, r2, 0
- bl DestroyTask
- b _0800B52A
- .align 2, 0
-_0800B4FC: .4byte 0x03004b20
-_0800B500:
- ldrh r2, [r3, 0x10]
- movs r4, 0x10
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _0800B510
- subs r0, r2, 0x1
- strh r0, [r3, 0x10]
- b _0800B52A
-_0800B510:
- ldrh r0, [r3, 0xE]
- strh r0, [r3, 0x10]
- adds r1, 0x1
- strh r1, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- subs r0, 0x1
- strh r0, [r3, 0xC]
- ldr r2, _0800B530
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- lsls r0, 8
- adds r1, r0
- strh r1, [r2]
-_0800B52A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B530: .4byte REG_BLDALPHA
- thumb_func_end sub_800B4C8
-
- thumb_func_start sub_800B534
-sub_800B534: @ 800B534
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _0800B59C
- movs r2, 0x94
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- ldr r0, _0800B5A0
- mov r8, r0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r6, 0
- strh r6, [r0, 0x12]
- ldr r0, _0800B5A4
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r8
- strh r4, [r1, 0x8]
- strh r6, [r1, 0xA]
- movs r0, 0x10
- strh r0, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r5, [r1, 0x10]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B59C: .4byte REG_BLDCNT
-_0800B5A0: .4byte 0x03004b20
-_0800B5A4: .4byte sub_800B4C8
- thumb_func_end sub_800B534
-
- thumb_func_start sub_800B5A8
-sub_800B5A8: @ 800B5A8
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0800B5C8
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r3, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _0800B5CC
- subs r0, r3, 0x1
- strh r0, [r1, 0xC]
- b _0800B608
- .align 2, 0
-_0800B5C8: .4byte 0x03004b20
-_0800B5CC:
- ldrh r3, [r1, 0xA]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r0, 0x8
- bne _0800B5DE
- adds r0, r2, 0
- bl DestroyTask
- b _0800B608
-_0800B5DE:
- ldrh r2, [r1, 0x10]
- movs r4, 0x10
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _0800B5EE
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- b _0800B608
-_0800B5EE:
- ldrh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- adds r0, r3, 0x1
- strh r0, [r1, 0xA]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- lsls r0, 1
- ldr r1, _0800B610
- adds r0, r1
- movs r1, 0x1
- movs r2, 0x10
- bl LoadPalette
-_0800B608:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B610: .4byte gUnknown_081E795C
- thumb_func_end sub_800B5A8
-
- thumb_func_start sub_800B614
-sub_800B614: @ 800B614
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0800B64C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800B650
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r4, [r1, 0x8]
- strh r0, [r1, 0xA]
- movs r0, 0x8
- strh r0, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r5, [r1, 0x10]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B64C: .4byte sub_800B5A8
-_0800B650: .4byte 0x03004b20
- thumb_func_end sub_800B614
-
- thumb_func_start sub_800B654
-sub_800B654: @ 800B654
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0800B674
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r3, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _0800B678
- subs r0, r3, 0x1
- strh r0, [r1, 0xC]
- b _0800B6B4
- .align 2, 0
-_0800B674: .4byte 0x03004b20
-_0800B678:
- ldrh r3, [r1, 0xA]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bne _0800B68A
- adds r0, r2, 0
- bl DestroyTask
- b _0800B6B4
-_0800B68A:
- ldrh r2, [r1, 0x10]
- movs r4, 0x10
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _0800B69A
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- b _0800B6B4
-_0800B69A:
- ldrh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- subs r0, r3, 0x1
- strh r0, [r1, 0xA]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- lsls r0, 1
- ldr r1, _0800B6BC
- adds r0, r1
- movs r1, 0x1
- movs r2, 0x10
- bl LoadPalette
-_0800B6B4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B6BC: .4byte gUnknown_081E795C
- thumb_func_end sub_800B654
-
- thumb_func_start sub_800B6C0
-sub_800B6C0: @ 800B6C0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0800B6F8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0800B6FC
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- movs r0, 0x8
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r5, [r1, 0x10]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B6F8: .4byte sub_800B654
-_0800B6FC: .4byte 0x03004b20
- thumb_func_end sub_800B6C0
-
- thumb_func_start CreateGenderMenu
-CreateGenderMenu: @ 800B700
- push {r4,r5,lr}
- sub sp, 0x8
- adds r2, r0, 0
- adds r3, r1, 0
- lsls r2, 24
- lsls r3, 24
- lsrs r5, r2, 24
- movs r0, 0xC0
- lsls r0, 19
- adds r2, r0
- lsrs r2, 24
- lsrs r4, r3, 24
- movs r0, 0xA0
- lsls r0, 19
- adds r3, r0
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl DrawDefaultWindow
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- ldr r3, _0800B75C
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x2
- bl PrintStringArray
- movs r0, 0
- str r0, [sp]
- movs r0, 0x5
- str r0, [sp, 0x4]
- movs r0, 0
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x2
- bl InitMenu
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B75C: .4byte gUnknown_081E79B0
- thumb_func_end CreateGenderMenu
-
- thumb_func_start GenderMenuProcessInput
-GenderMenuProcessInput: @ 800B760
- push {lr}
- bl ProcessMenuInputNoWrap
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GenderMenuProcessInput
-
- thumb_func_start CreateNameMenu
-CreateNameMenu: @ 800B770
- push {r4,r5,lr}
- sub sp, 0x8
- adds r2, r0, 0
- adds r3, r1, 0
- lsls r2, 24
- lsls r3, 24
- lsrs r5, r2, 24
- movs r0, 0xA0
- lsls r0, 20
- adds r2, r0
- lsrs r2, 24
- lsrs r4, r3, 24
- movs r0, 0xB0
- lsls r0, 20
- adds r3, r0
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl DrawDefaultWindow
- ldr r0, _0800B7B8
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0800B7C0
- adds r5, 0x1
- lsls r0, r5, 24
- lsrs r0, 24
- adds r4, 0x1
- lsls r1, r4, 24
- lsrs r1, 24
- ldr r3, _0800B7BC
- movs r2, 0x5
- bl PrintStringArray
- b _0800B7D4
- .align 2, 0
-_0800B7B8: .4byte gSaveBlock2
-_0800B7BC: .4byte gUnknown_081E79C0
-_0800B7C0:
- adds r5, 0x1
- lsls r0, r5, 24
- lsrs r0, 24
- adds r4, 0x1
- lsls r1, r4, 24
- lsrs r1, 24
- ldr r3, _0800B7F4
- movs r2, 0x5
- bl PrintStringArray
-_0800B7D4:
- lsls r1, r5, 24
- lsrs r1, 24
- lsls r2, r4, 24
- lsrs r2, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r3, 0x5
- bl InitMenu
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B7F4: .4byte gUnknown_081E79E8
- thumb_func_end CreateNameMenu
-
- thumb_func_start NameMenuProcessInput
-NameMenuProcessInput: @ 800B7F8
- push {lr}
- bl ProcessMenuInput
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end NameMenuProcessInput
-
- thumb_func_start set_default_player_name
-set_default_player_name: @ 800B808
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0800B81C
- ldrb r1, [r0, 0x8]
- adds r5, r0, 0
- cmp r1, 0
- bne _0800B824
- ldr r1, _0800B820
- b _0800B826
- .align 2, 0
-_0800B81C: .4byte gSaveBlock2
-_0800B820: .4byte gUnknown_081E79C0
-_0800B824:
- ldr r1, _0800B850
-_0800B826:
- lsls r0, r2, 3
- adds r0, r1
- ldr r3, [r0]
- movs r2, 0
- ldr r4, _0800B854
-_0800B830:
- adds r1, r2, r4
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x6
- bls _0800B830
- adds r1, r2, r5
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800B850: .4byte gUnknown_081E79E8
-_0800B854: .4byte gSaveBlock2
- thumb_func_end set_default_player_name
-
thumb_func_start sub_800B858
sub_800B858: @ 800B858
push {lr}
diff --git a/ewram_syms.txt b/ewram_syms.txt
index 0f363dee0..277a7a173 100644
--- a/ewram_syms.txt
+++ b/ewram_syms.txt
@@ -3,6 +3,8 @@ unk_2004000 = 0x2004000;
gUnknown_020239F8 = 0x20239F8;
+gUnknown_02024E8C = 0x2024E8C;
+
gSaveBlock2 = 0x2024EA4;
stru_202E908 = 0x202E908;
diff --git a/include/sprite.h b/include/sprite.h
index 10bd3a5f0..9b800a9ea 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -149,14 +149,14 @@ struct Sprite
u8 animLoopCounter;
// general purpose data fields
- u16 data0;
- u16 data1;
- u16 data2;
- u16 data3;
- u16 data4;
- u16 data5;
- u16 data6;
- u16 data7;
+ s16 data0;
+ s16 data1;
+ s16 data2;
+ s16 data3;
+ s16 data4;
+ s16 data5;
+ s16 data6;
+ s16 data7;
u16 inUse:1;
u16 coordOffsetEnabled:1;
diff --git a/src/main_menu.c b/src/main_menu.c
index 87c3a671a..5e2e61f11 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -6,6 +6,7 @@
#include "rtc.h"
#include "songs.h"
#include "palette.h"
+#include "string_util.h"
extern u8 sub_8072080(void);
extern void Print(u8 *, u8, u8);
@@ -20,6 +21,29 @@ extern u8 *sub_8072C14(u8 *, s32, u8, u8);
extern u8 sub_80729D8(u8 *, u8, u16, u8);
extern u8 GetBadgeCount(void);
extern void Task_Birch1(u8);
+void AddTextPrinterWithCallbackForMessage(const u8 *string, u8 a, u8 b);
+u8 sub_8072CF4(u8 a);
+void sub_8072DEC(void);
+u8 sub_8075374(void);
+void sub_807206C(u32);
+void cry_related(u16, u8);
+void audio_play(u8 a);
+void Reset(u8 a, u8 b, u8 c, u8 d);
+u8 GetMenuCursorPos(void);
+void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4);
+void sub_8072974(u8 r0, u8 r1, u32 r2);
+s8 FillWindowPixelBuffer(void);
+void c2_load_new_map_2(void);
+void LZ77UnCompVram(const void *src, void *dest);
+void sub_8071C4C(const struct WindowConfig *);
+void CB2_MainMenu(void);
+void VBlankCB_MainMenu(void);
+void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32);
+void LoadCompressedObjectPalette(const struct SpritePalette *);
+void gpu_pal_obj_decompress_and_apply(u16, u8);
+u8 AddNewGameBirchObject(u8, u8, u8);
+u8 sub_80859BC(u8, u16, u16, u8, void *);
+void DrawDefaultWindow(u8 a, u8 b, u8 c, u8 d);
extern struct PaletteFadeControl gPaletteFade;
extern u8 gSaveFileDeletedMessage[];
@@ -603,3 +627,1040 @@ void PrintBadgeCount(void)
ConvertIntToDecimalString(buffer, GetBadgeCount());
sub_80729D8(buffer, 205, 40, 1);
}
+
+//Text Strings
+extern const u8 gUnknown_081C6D78[]; //Hi! Sorry to keep you waiting!...
+extern const u8 gUnknown_081C6DF8[];
+extern const u8 gUnknown_081C6E1A[];
+extern const u8 gUnknown_081C6FCB[];
+extern const u8 gUnknown_081C6FD8[];
+extern const u8 gUnknown_081C6FFA[];
+extern u8 gUnknown_081C7017[];
+extern u8 gUnknown_081C7025[];
+extern u8 gUnknown_081C7074[];
+
+struct MonCoords
+{
+ u8 x, y;
+};
+
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct SpriteSheet gMonFrontPicTable[];
+extern const struct SpritePalette gMonPaletteTable[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern void * const gUnknown_081FAF4C[];
+extern u16 gUnknown_081E795C[];
+extern u8 * const gUnknown_081E79B0[][2];
+extern u8 * const gUnknown_081E79C0[][2];
+extern u8 * const gUnknown_081E79E8[][2];
+
+extern const u8 gUnknown_081E764C[];
+extern const u8 gUnknown_081E768C[];
+extern const u8 gUnknown_081E7834[];
+extern const u8 gUnknown_081E796C[];
+extern const u8 gUnknown_0840DFF7[];
+
+extern u8 gSpriteAffineAnimTable_81E79AC[];
+
+extern struct Sprite gSprites[];
+extern u8 gStringVar4[];
+
+extern u8 unk_2000000[];
+
+void task_new_game_prof_birch_speech_2(u8 taskId);
+void task_new_game_prof_birch_speech_3(u8 taskId);
+void task_new_game_prof_birch_speech_4(u8 taskId);
+void task_new_game_prof_birch_speech_5(u8 taskId);
+void task_new_game_prof_birch_speech_6(u8 taskId);
+void task_new_game_prof_birch_speech_7(u8 taskId);
+void task_new_game_prof_birch_speech_8(u8 taskId);
+void task_new_game_prof_birch_speech_9(u8 taskId);
+void task_new_game_prof_birch_speech_10(u8 taskId);
+void task_new_game_prof_birch_speech_11(u8 taskId);
+void task_new_game_prof_birch_speech_12(u8 taskId);
+void task_new_game_prof_birch_speech_13(u8 taskId);
+void task_new_game_prof_birch_speech_14(u8 taskId);
+void task_new_game_prof_birch_speech_15(u8 taskId);
+void task_new_game_prof_birch_speech_16(u8 taskId);
+void task_new_game_prof_birch_speech_17(u8 taskId);
+void task_new_game_prof_birch_speech_18(u8 taskId);
+void sub_800A974(u8 taskId);
+void Task_800A9B4(u8 taskId);
+void sub_800A9EC(u8 taskId);
+void sub_800AAAC(u8 taskId);
+void task_new_game_prof_birch_speech_part2_1(u8 taskId);
+void sub_800AB38(u8 taskId);
+void task_new_game_prof_birch_speech_part2_4(u8 taskId);
+void sub_800AC20(u8 taskId);
+void task_new_game_prof_birch_speech_part2_6(u8 taskId);
+void task_new_game_prof_birch_speech_part2_7(u8 taskId);
+void task_new_game_prof_birch_speech_part2_8(u8 taskId);
+void task_new_game_prof_birch_speech_part2_9(u8 taskId);
+void task_new_game_prof_birch_speech_part2_10(u8 taskId);
+void sub_800AFC0(u8 taskId);
+void sub_800B034(u8 taskId);
+void new_game_prof_birch_speech_part2_start();
+void nullsub_34(struct Sprite *sprite);
+void sub_800B240(struct Sprite *sprite);
+u8 sub_800B25C(u8, u8);
+void AddBirchSpeechObjects(u8);
+void sub_800B3EC(u8);
+void sub_800B458(u8, u8);
+void sub_800B4C8(u8);
+void sub_800B534(u8 taskId, u8 a);
+void sub_800B5A8(u8);
+void sub_800B614(u8, u8);
+void sub_800B654(u8);
+void sub_800B6C0(u8 taskId, u8 a);
+void CreateGenderMenu(u8 left, u8 top);
+s8 GenderMenuProcessInput(void);
+void CreateNameMenu(u8 a, u8 b);
+s8 NameMenuProcessInput(void);
+void set_default_player_name(u8 a);
+
+void Task_Birch1(u8 taskId)
+{
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ sub_8071C4C(&gWindowConfig_81E6CE4);
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ LZ77UnCompVram(gUnknown_081E768C, (void *)BG_VRAM);
+ LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800));
+ LoadPalette(gUnknown_081E764C, 0, 0x40);
+ LoadPalette(gUnknown_081E796C, 1, 0x10);
+ remove_some_task();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ AddBirchSpeechObjects(taskId);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ REG_BG1CNT = 0x00000703;
+ REG_DISPCNT = 0x9A << 5;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].func = task_new_game_prof_birch_speech_2;
+ gTasks[taskId].data[2] = 0xFF;
+ gTasks[taskId].data[3] = 0xFF;
+ gTasks[taskId].data[7] = 0xD8;
+
+ sub_8075474(0xBB << 1);
+}
+
+void task_new_game_prof_birch_speech_2(u8 taskId)
+{
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+
+ if(task->data[7] != 0)
+ {
+ task->data[7]--;
+ }
+ else
+ {
+ u8 spriteId = task->data[8];
+ struct Sprite *sprites = gSprites;
+ struct Sprite *sprite = &sprites[spriteId];
+ sprite->pos1.x = 0x88;
+ sprite->pos1.y = 0x3C;
+ sprite->invisible = 0;
+ sprite->oam.objMode = 1;
+ sub_800B534(taskId, 0xA);
+ sub_800B6C0(taskId, 0x14);
+ task->data[7] = 0x50;
+ task->func = task_new_game_prof_birch_speech_3;
+ }
+}
+
+void task_new_game_prof_birch_speech_3(u8 taskId)
+{
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+
+ if(task->data[5] != 0)
+ {
+ struct Sprite *sprites = gSprites;
+ struct Sprite *sprite = &sprites[(s16)task->data[8]];
+
+ sprite->oam.objMode = 0;
+ if((u16)task->data[7])
+ {
+ task->data[7]--;
+ }
+ else
+ {
+ DrawDefaultWindow(0x2, 0xD, 0x1B, 0x12);
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6D78, 0x3, 0xE);
+ task->func = task_new_game_prof_birch_speech_4;
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_4(u8 taskId)
+{
+ if(!gPaletteFade.active && sub_8072CF4(0x18))
+ {
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+ task->func = task_new_game_prof_birch_speech_5;
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6DF8, 0x3, 0xE);
+ }
+}
+
+void task_new_game_prof_birch_speech_5(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ gTasks[taskId].func = task_new_game_prof_birch_speech_6;
+}
+
+void task_new_game_prof_birch_speech_6(u8 taskId)
+{
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+ u8 data = (u8)task->data[9];
+ struct Sprite *sprites = gSprites;
+ struct Sprite *sprite = &sprites[data];
+
+ sprite->pos1.x = 0x68;
+ sprite->pos1.y = 0x48;
+ sprite->invisible = 0;
+ sprite->data0 = 0;
+ AddTextPrinterForMessage(data, sprite->oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF);
+ task->func = task_new_game_prof_birch_speech_7;
+ task->data[7] = 0;
+}
+
+void task_new_game_prof_birch_speech_7(u8 taskId)
+{
+ struct Task *tasks;
+ struct Task *task;
+
+ if(sub_8075374())
+ {
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId]; //r5
+
+ if(task->data[7] > 0x5F)
+ {
+ sub_807206C((u32)&gUnknown_0840DFF7);
+ task->func = task_new_game_prof_birch_speech_8;
+ }
+ }
+ //_0800A4E4
+ tasks = gTasks;
+ task = &tasks[taskId]; //r2
+ if((s16)task->data[7] <= 0x00003fff)
+ {
+ task->data[7]++;
+ if(task->data[7] == 0x20)
+ {
+ cry_related(0xAF << 1, 0);
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_8(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6E1A, 0x3, 0xE);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_9;
+ }
+}
+
+void task_new_game_prof_birch_speech_9(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ DrawDefaultWindow(0x2, 0xD, 0x1B, 0x12);
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6FCB, 0x3, 0xE);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_10;
+ }
+}
+
+void task_new_game_prof_birch_speech_10(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ struct Sprite *sprites = gSprites;
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+ struct Sprite *sprite = &sprites[task->data[8]];
+ struct Sprite *sprite2;
+
+ sprite->oam.objMode = 1;
+ sprite2 = &sprites[task->data[9]];
+ sprite2->oam.objMode = 1;
+ sub_800B458(taskId, 0x2);
+ sub_800B614(taskId, 0x1);
+ task->data[7] = 0x40;
+ task->func = task_new_game_prof_birch_speech_11;
+ }
+}
+
+void task_new_game_prof_birch_speech_11(u8 taskId)
+{
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+
+ if((s16)task->data[4] != -0x3C)
+ {
+ task->data[4] -= 2;
+ REG_BG1HOFS = task->data[4];
+ }
+ else
+ {
+ task->data[4] = 0x0000ffc4;
+ task->func = task_new_game_prof_birch_speech_12;
+ }
+}
+
+//Fix Me: Uses a few different registers, and I can't figure out why.
+void task_new_game_prof_birch_speech_12(u8 taskId)
+{
+ if(gTasks[taskId].data[5])
+ {
+ gSprites[gTasks[taskId].data[8]].invisible = 1;
+ gSprites[gTasks[taskId].data[9]].invisible = 1;
+
+ if(gTasks[taskId].data[7])
+ {
+ gTasks[taskId].data[7]--;
+ }
+ else
+ {
+ u8 data10 = gTasks[taskId].data[10];
+
+ gSprites[data10].pos1.x = 0xB4;
+ gSprites[data10].pos1.y = 0x3C;
+ gSprites[data10].invisible = 0;
+ gSprites[data10].oam.objMode = 1;
+ gTasks[taskId].data[2] = data10;
+ gTasks[taskId].data[6] = 0;
+ sub_800B534(taskId, 2);
+ sub_800B6C0(taskId, 1);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_13;
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_13(u8 taskId)
+{
+ struct Task *tasks = gTasks;
+ struct Task *task = &tasks[taskId];
+
+ if(task->data[5])
+ {
+ struct Sprite *sprites = gSprites;
+ struct Sprite *sprite = &sprites[task->data[2]];
+
+ sprite->oam.objMode = 0;
+ task->func = task_new_game_prof_birch_speech_14;
+ }
+}
+
+void task_new_game_prof_birch_speech_14(u8 taskId)
+{
+ DrawDefaultWindow(2, 0xD, 0x1B, 0x12);
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6FD8, 3, 14);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_15;
+}
+
+void task_new_game_prof_birch_speech_15(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ CreateGenderMenu(2, 4);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_16;
+ }
+}
+
+//Fix Me
+void task_new_game_prof_birch_speech_16(u8 taskId)
+{
+ u8 cursorPos;
+
+ switch (GenderMenuProcessInput())
+ {
+ case MALE:
+ sub_8072DEC();
+ audio_play(5);
+ gSaveBlock2.playerGender = MALE;
+ Reset(2, 4, 8, 9);
+ gTasks[taskId].func = sub_800A974;
+ break;
+ case FEMALE:
+ sub_8072DEC();
+ audio_play(5);
+ gSaveBlock2.playerGender = FEMALE;
+ Reset(2, 4, 8, 9);
+ gTasks[taskId].func = sub_800A974;
+ break;
+ }
+
+ cursorPos = GetMenuCursorPos();
+
+ if(cursorPos != (s16)gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[6] = cursorPos;
+ gSprites[gTasks[taskId].data[2]].oam.objMode = 1;
+ sub_800B458(taskId, 0);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_17;
+ }
+}
+
+void task_new_game_prof_birch_speech_17(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[2];
+
+ if(gTasks[taskId].data[5] == 0)
+ {
+ gSprites[spriteId].pos1.x += 4;
+ }
+ else
+ {
+ gSprites[spriteId].invisible = 1;
+ if(gTasks[taskId].data[6])
+ {
+ spriteId = gTasks[taskId].data[11];
+ }
+ else
+ {
+ spriteId = gTasks[taskId].data[10];
+ }
+
+ gSprites[spriteId].pos1.x = 0xF0;
+ gSprites[spriteId].pos1.y = 0x3C;
+ gSprites[spriteId].invisible = 0;
+ gTasks[taskId].data[2] = spriteId;
+ gSprites[spriteId].oam.objMode = 1;
+ sub_800B534(taskId, 0);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_18;
+ }
+}
+
+void task_new_game_prof_birch_speech_18(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[2];
+
+ if(gSprites[spriteId].pos1.x > 0xB4)
+ {
+ gSprites[spriteId].pos1.x -= 4;
+ }
+ else
+ {
+ gSprites[spriteId].pos1.x = 0xB4;
+ if(gTasks[taskId].data[5])
+ {
+ gSprites[spriteId].oam.objMode = 0;
+ gTasks[taskId].func = task_new_game_prof_birch_speech_16;
+ }
+ }
+}
+
+void sub_800A974(u8 taskId)
+{
+ DrawDefaultWindow(2, 13, 27, 18);
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C6FFA, 3, 14);
+ gTasks[taskId].func = Task_800A9B4;
+}
+
+void Task_800A9B4(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ CreateNameMenu(2, 1);
+ gTasks[taskId].func = sub_800A9EC;
+ }
+}
+
+//Fix Me
+void sub_800A9EC(u8 taskId)
+{
+ s8 n = NameMenuProcessInput();
+
+ switch (n)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ sub_8072DEC();
+ audio_play(5);
+ Reset(2, 1, 22, 12);
+ set_default_player_name(n);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_1;
+ break;
+ case 0:
+ audio_play(5);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_800AAAC;
+ break;
+ case -1:
+ sub_8072DEC();
+ audio_play(5);
+ Reset(2, 1, 22, 12);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_14;
+ break;
+ }
+}
+
+//Fix Me
+void sub_800AAAC(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ set_default_player_name(1);
+ DoNamingScreen(0, &gSaveBlock2, gSaveBlock2.playerGender, 0, 0, new_game_prof_birch_speech_part2_start);
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_1(u8 taskId)
+{
+ DrawDefaultWindow(2, 13, 27, 18);
+ StringExpandPlaceholders(gStringVar4, gUnknown_081C7017);
+ AddTextPrinterWithCallbackForMessage(gStringVar4, 3, 14);
+ gTasks[taskId].func = sub_800AB38;
+}
+
+void sub_800AB38(u8 taskId)
+{
+ if(sub_8072CF4(0x18))
+ {
+ sub_8072974(2, 1, 1);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_4;
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_4(u8 taskId)
+{
+ switch (FillWindowPixelBuffer())
+ {
+ case 0:
+ audio_play(5);
+ Reset(2, 1, 8, 7);
+ gSprites[gTasks[taskId].data[2]].oam.objMode = ST_OAM_OBJ_BLEND;
+ sub_800B458(taskId, 2);
+ sub_800B614(taskId, 1);
+ gTasks[taskId].func = sub_800AC20;
+ break;
+ case -1:
+ case 1:
+ audio_play(5);
+ Reset(2, 1, 8, 7);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_14;
+ break;
+ }
+}
+
+void sub_800AC20(u8 taskId)
+{
+ if(gTasks[taskId].data[4])
+ {
+ gTasks[taskId].data[4] += 2;
+ REG_BG1HOFS = gTasks[taskId].data[4];
+ }
+ else
+ {
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_6;
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_6(u8 taskId)
+{
+ if(gTasks[taskId].data[5])
+ {
+ s16 spriteId;
+
+ spriteId = gTasks[taskId].data[10];
+ gSprites[spriteId].invisible = 1;
+
+ spriteId = gTasks[taskId].data[11];
+ gSprites[spriteId].invisible = 1;
+
+ spriteId = (u8)gTasks[taskId].data[8];
+ gSprites[spriteId].pos1.x = 0x88;
+ gSprites[spriteId].pos1.y = 0x40;
+ gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].oam.objMode = 1;
+
+ spriteId = (u8)gTasks[taskId].data[9];
+ gSprites[spriteId].pos1.x = 0x68;
+ gSprites[spriteId].pos1.y = 0x48;
+ gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].oam.objMode = 1;
+
+ sub_800B534(taskId, 2);
+ sub_800B6C0(taskId, 1);
+ DrawDefaultWindow(2, 13, 27, 18);
+ StringExpandPlaceholders(gStringVar4, gUnknown_081C7025);
+ AddTextPrinterWithCallbackForMessage(gStringVar4, 3, 14);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_7;
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_7(u8 taskId)
+{
+ if(gTasks[taskId].data[5])
+ {
+ s16 spriteId;
+
+ spriteId = gTasks[taskId].data[8];
+ gSprites[spriteId].oam.objMode = 0;
+
+ spriteId = gTasks[taskId].data[9];
+ gSprites[spriteId].oam.objMode = 0;
+
+ if(sub_8072CF4(0x18))
+ {
+ spriteId = gTasks[taskId].data[8];
+ gSprites[spriteId].oam.objMode = 1;
+
+ spriteId = gTasks[taskId].data[9];
+ gSprites[spriteId].oam.objMode = 1;
+
+ sub_800B458(taskId, 2);
+ sub_800B614(taskId, 1);
+ gTasks[taskId].data[7] = 0x40;
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_8;
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_8(u8 taskId)
+{
+ if(gTasks[taskId].data[5])
+ {
+ s16 spriteId;
+
+ spriteId = gTasks[taskId].data[8];
+ gSprites[spriteId].invisible = 1;
+
+ spriteId = gTasks[taskId].data[9];
+ gSprites[spriteId].invisible = 1;
+
+ if(gTasks[taskId].data[7])
+ {
+ gTasks[taskId].data[7]--;
+ }
+ else
+ {
+ u8 spriteId;
+
+ if(gSaveBlock2.playerGender)
+ spriteId = (u8)gTasks[taskId].data[11];
+ else
+ spriteId = (u8)gTasks[taskId].data[10];
+
+ gSprites[spriteId].pos1.x = 0x78;
+ gSprites[spriteId].pos1.y = 0x3C;
+ gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].oam.objMode = 1;
+ gTasks[taskId].data[2] = spriteId;
+
+ sub_800B534(taskId, 2);
+ sub_800B6C0(taskId, 1);
+ DrawDefaultWindow(2, 13, 27, 18);
+ AddTextPrinterWithCallbackForMessage(gUnknown_081C7074, 3, 14);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_9;
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_9(u8 taskId)
+{
+ if(gTasks[taskId].data[5])
+ {
+ s16 spriteId;
+
+ spriteId = gTasks[taskId].data[2];
+ gSprites[spriteId].oam.objMode = 0;
+
+ if(sub_8072CF4(0x18))
+ {
+ u8 spriteId;
+
+ spriteId = gTasks[taskId].data[2];
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].affineAnims = (union AffineAnimCmd **)gSpriteAffineAnimTable_81E79AC;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ gSprites[spriteId].callback = sub_800B240;
+ BeginNormalPaletteFade(0x0000ffff, 0, 0, 0x10, 0);
+ play_sound_effect(4);
+ gTasks[taskId].func = task_new_game_prof_birch_speech_part2_10;
+ }
+ }
+}
+
+void task_new_game_prof_birch_speech_part2_10(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[2];
+
+ if (gSprites[spriteId].affineAnimEnded)
+ gTasks[taskId].func = sub_800AFC0;
+}
+
+void sub_800AFC0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 spriteId = gTasks[taskId].data[2];
+ gSprites[spriteId].callback = nullsub_34;
+ REG_DISPCNT = 4160;
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF);
+ gTasks[taskId].func = sub_800B034;
+ }
+}
+
+void sub_800B034(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(c2_load_new_map_2);
+ DestroyTask(taskId);
+ }
+}
+
+// CB2
+void new_game_prof_birch_speech_part2_start()
+{
+ u8 taskId;
+ u8 spriteId;
+ u16 savedIme;
+
+ SetVBlankCallback(NULL);
+
+ REG_DISPCNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)PLTT, PLTT_SIZE);
+
+ ResetPaletteFade();
+
+ LZ77UnCompVram(gUnknown_081E768C, (void *)BG_VRAM);
+ LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800));
+
+ LoadPalette(gUnknown_081E764C, 0, 0x40);
+
+ ResetTasks();
+
+ taskId = CreateTask(task_new_game_prof_birch_speech_part2_1, 0);
+
+ gTasks[taskId].data[4] = -60;
+
+ remove_some_task();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ AddBirchSpeechObjects(taskId);
+
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ sub_8071C4C(&gWindowConfig_81E6CE4);
+
+ if (gSaveBlock2.playerGender != MALE)
+ {
+ gTasks[taskId].data[6] = FEMALE;
+ spriteId = gTasks[taskId].data[11];
+ }
+ else
+ {
+ gTasks[taskId].data[6] = MALE;
+ spriteId = gTasks[taskId].data[10];
+ }
+
+ gSprites[spriteId].pos1.x = 180;
+ gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].invisible = 0;
+
+ gTasks[taskId].data[2] = spriteId;
+
+ REG_BG1HOFS = -60;
+
+ BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0x10, 0, 0);
+
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+
+ SetVBlankCallback(VBlankCB_MainMenu);
+ SetMainCallback2(CB2_MainMenu);
+ REG_BG1CNT = 1795;
+ REG_DISPCNT = 4928;
+}
+
+void nullsub_34(struct Sprite *sprite)
+{
+}
+
+void sub_800B240(struct Sprite *sprite)
+{
+ u32 y = (sprite->pos1.y << 16) + sprite->data0 + 0xC000;
+ sprite->pos1.y = y >> 16;
+ sprite->data0 = y;
+}
+
+u8 sub_800B25C(u8 a1, u8 a2)
+{
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[350],
+ gMonFrontPicCoords[350].x,
+ gMonFrontPicCoords[350].y,
+ gUnknown_081FAF4C[0],
+ gUnknown_081FAF4C[1],
+ 350);
+ LoadCompressedObjectPalette(&gMonPaletteTable[350]);
+ gpu_pal_obj_decompress_and_apply(350, 1);
+ return CreateSprite(&gUnknown_02024E8C, a1, a2, 0);
+}
+
+void AddBirchSpeechObjects(u8 taskId)
+{
+ u8 spriteId;
+
+ spriteId = AddNewGameBirchObject(136, 60, 1);
+ gSprites[spriteId].callback = nullsub_34;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[8] = spriteId;
+
+ spriteId = sub_800B25C(0x68, 0x48);
+ gSprites[spriteId].callback = nullsub_34;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[9] = spriteId;
+
+ spriteId = sub_80859BC(0, 120, 60, 0, unk_2000000);
+ gSprites[spriteId].callback = nullsub_34;
+ gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].oam.priority = 0;
+ gTasks[taskId].data[10] = spriteId;
+
+ spriteId = sub_80859BC(1, 120, 60, 0, unk_2000000 + 0x800);
+ gSprites[spriteId].callback = nullsub_34;
+ gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].oam.priority = 0;
+ gTasks[taskId].data[11] = spriteId;
+}
+
+void sub_800B3EC(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gTasks[gTasks[taskId].data[0]].data[5] = 1;
+ DestroyTask(taskId);
+ }
+ else
+ {
+ if (gTasks[taskId].data[4])
+ {
+ gTasks[taskId].data[4]--;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]--;
+ gTasks[taskId].data[2]++;
+ REG_BLDALPHA = gTasks[taskId].data[1] + (gTasks[taskId].data[2] * 256);
+ }
+ }
+}
+
+void sub_800B458(u8 taskId, u8 a2)
+{
+ u8 newTaskId;
+
+ REG_BLDCNT = 592;
+ REG_BLDALPHA = 16;
+ REG_BLDY = 0;
+ gTasks[taskId].data[5] = 0;
+ newTaskId = CreateTask(sub_800B3EC, 0);
+
+ gTasks[newTaskId].data[0] = taskId;
+ gTasks[newTaskId].data[1] = 16;
+ gTasks[newTaskId].data[2] = 0;
+ gTasks[newTaskId].data[3] = a2;
+ gTasks[newTaskId].data[4] = a2;
+}
+
+void sub_800B4C8(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 16)
+ {
+ gTasks[gTasks[taskId].data[0]].data[5] = 1;
+ DestroyTask(taskId);
+ }
+ else if (gTasks[taskId].data[4])
+ {
+ gTasks[taskId].data[4]--;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]++;
+ gTasks[taskId].data[2]--;
+ REG_BLDALPHA = gTasks[taskId].data[1] + (gTasks[taskId].data[2] * 256);
+ }
+}
+
+void sub_800B534(u8 taskId, u8 a2)
+{
+ u8 newTaskId;
+
+ REG_BLDCNT = 592;
+ REG_BLDALPHA = 4096;
+ REG_BLDY = 0;
+ gTasks[taskId].data[5] = 0;
+ newTaskId = CreateTask(sub_800B4C8, 0);
+
+ gTasks[newTaskId].data[0] = taskId;
+ gTasks[newTaskId].data[1] = 0;
+ gTasks[newTaskId].data[2] = 16;
+ gTasks[newTaskId].data[3] = a2;
+ gTasks[newTaskId].data[4] = a2;
+}
+
+void sub_800B5A8(u8 taskId)
+{
+ if (gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[2]--;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 8)
+ {
+ DestroyTask(taskId);
+ }
+ else if (gTasks[taskId].data[4])
+ {
+ gTasks[taskId].data[4]--;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]++;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[1]], 1, 0x10);
+ }
+ }
+}
+
+void sub_800B614(u8 a1, u8 a2)
+{
+ u8 newTaskId = CreateTask(sub_800B5A8, 0);
+ gTasks[newTaskId].data[0] = a1;
+ gTasks[newTaskId].data[1] = 0;
+ gTasks[newTaskId].data[2] = 8;
+ gTasks[newTaskId].data[3] = a2;
+ gTasks[newTaskId].data[4] = a2;
+}
+
+void sub_800B654(u8 taskId)
+{
+ if (gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[2]--;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 0)
+ {
+ DestroyTask(taskId);
+ }
+ else
+ {
+ if (gTasks[taskId].data[4])
+ {
+ gTasks[taskId].data[4]--;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]--;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[1]], 1, 0x10);
+ }
+ }
+ }
+}
+
+void sub_800B6C0(u8 a1, u8 a2)
+{
+ u8 newTaskId = CreateTask(sub_800B654, 0);
+ gTasks[newTaskId].data[0] = a1;
+ gTasks[newTaskId].data[1] = 8;
+ gTasks[newTaskId].data[2] = 8;
+ gTasks[newTaskId].data[3] = a2;
+ gTasks[newTaskId].data[4] = a2;
+}
+
+void CreateGenderMenu(u8 left, u8 top)
+{
+ u8 menuLeft, menuTop;
+ DrawDefaultWindow(left, top, left + 6, top + 5);
+ menuLeft = left + 1;
+ menuTop = top + 1;
+ PrintStringArray(menuLeft, menuTop, 2, gUnknown_081E79B0);
+ InitMenu(0, menuLeft, menuTop, 2, 0, 5);
+}
+
+s8 GenderMenuProcessInput(void)
+{
+ return ProcessMenuInputNoWrap();
+}
+
+void CreateNameMenu(u8 left, u8 top)
+{
+ DrawDefaultWindow(left, top, left + 10, top + 11);
+
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ PrintStringArray((u8)(left + 1), (u8)(top + 1), 5, gUnknown_081E79C0);
+ }
+ else
+ {
+ PrintStringArray((u8)(left + 1), (u8)(top + 1), 5, gUnknown_081E79E8);
+ }
+
+ InitMenu(0, (u8)(left + 1), (u8)(top + 1), 5, 0, 9);
+}
+
+s8 NameMenuProcessInput(void)
+{
+ return ProcessMenuInput();
+}
+
+void set_default_player_name(u8 index)
+{
+ u8 i;
+ u8 *name;
+
+ if (gSaveBlock2.playerGender == MALE)
+ name = gUnknown_081E79C0[index][0];
+ else
+ name = gUnknown_081E79E8[index][0];
+
+ for (i = 0; i < 7; i++)
+ gSaveBlock2.playerName[i] = name[i];
+
+ gSaveBlock2.playerName[i] = EOS;
+}