summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2019-04-10 10:16:20 -0400
committerscnorton <scnorton@biociphers.org>2019-04-10 10:16:20 -0400
commitbf7084cb60f0375973d8caf1005fb8b02653ade2 (patch)
treeccf2cdf76dedeee231af58e0de9cc1e0187b2f5a
parentdbd48510879a39de0ed7af143d4284ede7ae5829 (diff)
through sub_812F33C
-rw-r--r--asm/oak_speech.s480
-rw-r--r--data/data_845FD54.s16
-rw-r--r--data/event_scripts.s220
-rw-r--r--data/oak_speech/unk_8460BA8.bin2
-rw-r--r--include/menu.h1
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--include/text.h1
-rw-r--r--src/oak_speech.c138
8 files changed, 356 insertions, 503 deletions
diff --git a/asm/oak_speech.s b/asm/oak_speech.s
index aa2c7a8ec..4823a9717 100644
--- a/asm/oak_speech.s
+++ b/asm/oak_speech.s
@@ -5,486 +5,6 @@
.text
- thumb_func_start sub_812F0B0
-sub_812F0B0: @ 812F0B0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0812F10C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F162
- ldr r0, _0812F110 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0812F162
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0812F120
- ldr r1, _0812F114 @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x26]
- ldr r0, _0812F118 @ =sOakSpeechResources
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- adds r4, r2, 0
- cmp r0, 0x1
- bhi _0812F150
- movs r0, 0x2
- bl stdpal_get
- ldrh r2, [r0, 0x1E]
- ldr r0, _0812F11C @ =0xffffdfff
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0812F150
- .align 2, 0
-_0812F10C: .4byte gPaletteFade
-_0812F110: .4byte gMain
-_0812F114: .4byte gTasks
-_0812F118: .4byte sOakSpeechResources
-_0812F11C: .4byte 0xffffdfff
-_0812F120:
- ldr r0, _0812F16C @ =sOakSpeechResources
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- cmp r0, 0
- beq _0812F162
- ldr r1, _0812F170 @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812F174 @ =0x0000ffff
- strh r1, [r0, 0x26]
- movs r0, 0x2
- bl stdpal_get
- ldrh r2, [r0, 0x1E]
- ldr r0, _0812F178 @ =0xffffdfff
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0812F150:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0812F170 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812F17C @ =sub_812F180
- str r0, [r1]
-_0812F162:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F16C: .4byte sOakSpeechResources
-_0812F170: .4byte gTasks
-_0812F174: .4byte 0x0000ffff
-_0812F178: .4byte 0xffffdfff
-_0812F17C: .4byte sub_812F180
- thumb_func_end sub_812F0B0
-
- thumb_func_start sub_812F180
-sub_812F180: @ 812F180
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, _0812F1B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F260
- ldr r1, _0812F1B4 @ =sOakSpeechResources
- ldr r0, [r1]
- ldrh r0, [r0, 0x12]
- adds r5, r1, 0
- cmp r0, 0
- bne _0812F1B8
- movs r1, 0x1
- mov r8, r1
- b _0812F1C4
- .align 2, 0
-_0812F1B0: .4byte gPaletteFade
-_0812F1B4: .4byte sOakSpeechResources
-_0812F1B8:
- cmp r0, 0
- blt _0812F1C4
- cmp r0, 0x2
- bgt _0812F1C4
- movs r2, 0x3
- mov r8, r2
-_0812F1C4:
- ldr r2, [r5]
- ldr r1, _0812F244 @ =gTasks
- lsls r3, r7, 2
- adds r0, r3, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- ldrh r1, [r2, 0x12]
- adds r0, r1
- movs r1, 0
- strh r0, [r2, 0x12]
- lsls r0, 16
- lsrs r0, 16
- mov r9, r3
- cmp r0, 0x2
- bhi _0812F24C
- movs r6, 0
- cmp r1, r8
- bcs _0812F234
-_0812F1EA:
- ldr r0, [r5]
- lsls r4, r6, 1
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- movs r1, 0
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r8
- bcc _0812F1EA
-_0812F234:
- ldr r0, _0812F244 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812F248 @ =sub_812EF50
- str r0, [r1]
- b _0812F260
- .align 2, 0
-_0812F244: .4byte gTasks
-_0812F248: .4byte sub_812EF50
-_0812F24C:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0812F270 @ =sub_812F274
- str r0, [r4]
-_0812F260:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F270: .4byte sub_812F274
- thumb_func_end sub_812F180
-
- thumb_func_start sub_812F274
-sub_812F274: @ 812F274
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
- ldr r0, _0812F32C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F320
- ldr r5, _0812F330 @ =sOakSpeechResources
-_0812F292:
- ldr r0, [r5]
- lsls r4, r6, 1
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- movs r7, 0
- strh r7, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _0812F292
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x12
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, _0812F334 @ =gTasks
- mov r1, r8
- lsls r4, r1, 2
- add r4, r8
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x12]
- bl sub_8006398
- ldr r0, _0812F330 @ =sOakSpeechResources
- ldr r0, [r0]
- strh r7, [r0, 0x14]
- adds r0, 0x14
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x20
- strh r0, [r4, 0xE]
- ldr r0, _0812F338 @ =sub_812F33C
- str r0, [r4]
-_0812F320:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F32C: .4byte gPaletteFade
-_0812F330: .4byte sOakSpeechResources
-_0812F334: .4byte gTasks
-_0812F338: .4byte sub_812F33C
- thumb_func_end sub_812F274
-
- thumb_func_start sub_812F33C
-sub_812F33C: @ 812F33C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- mov r8, r0
- ldr r0, _0812F370 @ =gTasks+0x8
- mov r9, r0
- mov r5, r8
- add r5, r9
- movs r0, 0
- str r0, [sp, 0x14]
- ldrh r0, [r5, 0x6]
- movs r1, 0x6
- ldrsh r6, [r5, r1]
- cmp r6, 0
- beq _0812F374
- subs r0, 0x1
- strh r0, [r5, 0x6]
- b _0812F476
- .align 2, 0
-_0812F370: .4byte gTasks+0x8
-_0812F374:
- movs r0, 0xA2
- lsls r0, 1
- bl PlayBGM
- bl sub_810F71C
- ldr r0, _0812F484 @ =gUnknown_8415D48
- movs r1, 0
- movs r2, 0x1
- bl sub_810F5E8
- ldr r0, _0812F488 @ =gUnknown_8460BA8
- add r1, sp, 0x14
- bl malloc_and_decompress
- adds r1, r0, 0
- ldr r4, _0812F48C @ =sOakSpeechResources
- ldr r0, [r4]
- str r1, [r0, 0x8]
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x13
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x2
- bl CopyToBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- bl Free
- ldr r0, [r4]
- str r6, [r0, 0x8]
- ldr r0, _0812F490 @ =gUnknown_8462EC0
- bl AddWindow
- strh r0, [r5, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrb r0, [r5, 0x1C]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x1C]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r4]
- movs r1, 0
- strh r6, [r0, 0x12]
- ldr r0, _0812F494 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- strb r1, [r0]
- movs r0, 0x10
- strh r0, [r5, 0x1E]
- ldrb r0, [r5, 0x1C]
- movs r1, 0x1
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0812F498 @ =gUnknown_8462EEC
- str r1, [sp, 0x8]
- str r6, [sp, 0xC]
- ldr r1, _0812F49C @ =gUnknown_8462EF0
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x5
- bl AddTextPrinterParametrized2
- str r6, [sp]
- movs r0, 0
- movs r1, 0xE2
- movs r2, 0x91
- movs r3, 0
- bl sub_8006300
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- ldr r4, _0812F4A0 @ =gSprites
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- ands r3, r1
- strb r3, [r0, 0x5]
- adds r0, r7, 0
- movs r1, 0
- bl sub_8130FD4
- movs r0, 0x1
- negs r0, r0
- str r6, [sp]
- movs r1, 0x2
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, _0812F4A4 @ =sub_812F4A8
- str r1, [r0]
-_0812F476:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F484: .4byte gUnknown_8415D48
-_0812F488: .4byte gUnknown_8460BA8
-_0812F48C: .4byte sOakSpeechResources
-_0812F490: .4byte gUnknown_8462EC0
-_0812F494: .4byte gMain
-_0812F498: .4byte gUnknown_8462EEC
-_0812F49C: .4byte gUnknown_8462EF0
-_0812F4A0: .4byte gSprites
-_0812F4A4: .4byte sub_812F4A8
- thumb_func_end sub_812F33C
-
thumb_func_start sub_812F4A8
sub_812F4A8: @ 812F4A8
push {r4-r7,lr}
diff --git a/data/data_845FD54.s b/data/data_845FD54.s
index e395c79d9..c14671533 100644
--- a/data/data_845FD54.s
+++ b/data/data_845FD54.s
@@ -5,9 +5,6 @@
.align 2
// oak_speech
-gUnknown_8460BA8:: @ 8460BA8
- .incbin "baserom.gba", 0x460BA8, 0xFC
-
gUnknown_8460CA4:: @ 8460CA4
.incbin "baserom.gba", 0x460CA4, 0x44
@@ -83,7 +80,7 @@ gUnknown_8462EB4:: @ 8462EB4
.4byte gUnknown_8462E94
gUnknown_8462EC0:: @ 8462EC0
- .incbin "baserom.gba", 0x462EC0, 0x8
+ window_template 0x00, 0x01, 0x04, 0x1c, 0x0f, 0x0f, 0x0001
gUnknown_8462EC8:: @ 8462EC8
.incbin "baserom.gba", 0x462EC8, 0x8
@@ -94,14 +91,19 @@ gUnknown_8462ED0:: @ 8462ED0
gUnknown_8462ED8:: @ 8462ED8
.incbin "baserom.gba", 0x462ED8, 0x10
+ .align 2
gUnknown_8462EE8:: @ 8462EE8
- .incbin "baserom.gba", 0x462EE8, 0x4
+ .byte 0x00, 0x01, 0x02
+ .align 2
gUnknown_8462EEC:: @ 8462EEC
- .incbin "baserom.gba", 0x462EEC, 0x4
+ .byte 0x00, 0x02, 0x03
+ .align 2
gUnknown_8462EF0:: @ 8462EF0
- .incbin "baserom.gba", 0x462EF0, 0xC
+ .4byte gUnknown_81C5A04
+ .4byte gUnknown_81C5AEB
+ .4byte gUnknown_81C5BB9
gUnknown_8462EFC:: @ 8462EFC
.incbin "baserom.gba", 0x462EFC, 0x18
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 23f6ad5a9..7d4a7b996 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -429,49 +429,239 @@ gUnknown_81C566A:: @ 81C566A
.incbin "baserom.gba", 0x1C566A, 0xE5
gUnknown_81C574F:: @ 81C574F
- .incbin "baserom.gba", 0x1C574F, 0xDE
+ .string "NEW NAME$"
+
+gUnknown_81C5758:: @ 81C5758
+ .string "GREEN$"
+
+gUnknown_81C575E:: @ 81C575E
+ .string "RED$"
+
+gUnknown_81C5762:: @ 81C5762
+ .string "LEAF$"
+
+gUnknown_81C5767:: @ 81C5767
+ .string "FIRE$"
+
+gUnknown_81C576C:: @ 81C576C
+ .string "GARY$"
+
+gUnknown_81C5771:: @ 81C5771
+ .string "KAZ$"
+
+gUnknown_81C5775:: @ 81C5775
+ .string "TORU$"
+
+gUnknown_81C577A:: @ 81C577A
+ .string "ASH$"
+
+gUnknown_81C577E:: @ 81C577E
+ .string "KENE$"
+
+gUnknown_81C5783:: @ 81C5783
+ .string "GEKI$"
+
+gUnknown_81C5788:: @ 81C5788
+ .string "JAK$"
+
+gUnknown_81C578C:: @ 81C578C
+ .string "JANNE$"
+
+gUnknown_81C5792:: @ 81C5792
+ .string "JONN$"
+
+gUnknown_81C5797:: @ 81C5797
+ .string "KAMON$"
+
+gUnknown_81C579D:: @ 81C579D
+ .string "KARL$"
+
+gUnknown_81C57A2:: @ 81C57A2
+ .string "TAYLOR$"
+
+gUnknown_81C57A9:: @ 81C57A9
+ .string "OSCAR$"
+
+gUnknown_81C57AF:: @ 81C57AF
+ .string "HIRO$"
+
+gUnknown_81C57B4:: @ 81C57B4
+ .string "MAX$"
+
+gUnknown_81C57B8:: @ 81C57B8
+ .string "JON$"
+
+gUnknown_81C57BC:: @ 81C57BC
+ .string "RALPH$"
+
+gUnknown_81C57C2:: @ 81C57C2
+ .string "KAY$"
+
+gUnknown_81C57C6:: @ 81C57C6
+ .string "TOSH$"
+
+gUnknown_81C57CB:: @ 81C57CB
+ .string "ROAK$"
+
+gUnknown_81C57D0:: @ 81C57D0
+ .string "OMI$"
+
+gUnknown_81C57D4:: @ 81C57D4
+ .string "JODI$"
+
+gUnknown_81C57D9:: @ 81C57D9
+ .string "AMANDA$"
+
+gUnknown_81C57E0:: @ 81C57E0
+ .string "HILLARY$"
+
+gUnknown_81C57E8:: @ 81C57E8
+ .string "MAKEY$"
+
+gUnknown_81C57EE:: @ 81C57EE
+ .string "MICHI$"
+
+gUnknown_81C57F4:: @ 81C57F4
+ .string "PAULA$"
+
+gUnknown_81C57FA:: @ 81C57FA
+ .string "JUNE$"
+
+gUnknown_81C57FF:: @ 81C57FF
+ .string "CASSIE$"
+
+gUnknown_81C5806:: @ 81C5806
+ .string "REY$"
+
+gUnknown_81C580A:: @ 81C580A
+ .string "SEDA$"
+
+gUnknown_81C580F:: @ 81C580F
+ .string "KIKO$"
+
+gUnknown_81C5814:: @ 81C5814
+ .string "MINA$"
+
+gUnknown_81C5819:: @ 81C5819
+ .string "NORIE$"
+
+gUnknown_81C581F:: @ 81C581F
+ .string "SAI$"
+
+gUnknown_81C5823:: @ 81C5823
+ .string "MOMO$"
+
+gUnknown_81C5828:: @ 81C5828
+ .string "SUZI$"
gUnknown_81C582D:: @ 81C582D
- .incbin "baserom.gba", 0x1C582D, 0x1A8
+ .string "The various buttons will be explained in\n"
+ .string "the order of their importance.$"
+
+gUnknown_81C5875:: @ 81C5875
+ .string "Moves the main character.\n"
+ .string "Also used to choose various data\n"
+ .string "headings.$"
+
+gUnknown_81C58BA:: @ 81C58BA
+ .string "Used to confirm a choice, check\n"
+ .string "things, chat, and scroll text.$"
+
+gUnknown_81C58F9:: @ 81C58F9
+ .string "Used to exit, cancel a choice,\n"
+ .string "and cancel a mode.$"
+
+gUnknown_81C592B:: @ 81C592B
+ .string "Press this button to open the\n"
+ .string "MENU.$"
+
+gUnknown_81C594F:: @ 81C594F
+ .string "Used to shift items and to use\n"
+ .string "a registered item.$"
+
+gUnknown_81C5981:: @ 81C5981
+ .string "If you need help playing the\n"
+ .string "game, or on how to do things,\n"
+ .string "press the L or R Button.$"
gUnknown_81C59D5:: @ 81C59D5
- .incbin "baserom.gba", 0x1C59D5, 0x2A3
+ .string "Now tell me. Are you a boy?\n"
+ .string "Or are you a girl?$"
+
+gUnknown_81C5A04::
+ .string "In the world which you are about to\n"
+ .string "enter, you will embark on a grand\n"
+ .string "adventure with you as the hero.\n"
+ .string "\n"
+ .string "Speak to people and check things\n"
+ .string "wherever you go, be it towns, roads,\n"
+ .string "or caves. Gather information and\n"
+ .string "hints from every source.$"
+
+gUnknown_81C5AEB::
+ .string "New paths will open to you by helping\n"
+ .string "people in need, overcoming challenges,\n"
+ .string "and solving mysteries.\n"
+ .string "\n"
+ .string "At times, you will be challenged by\n"
+ .string "others and attacked by wild creatures.\n"
+ .string "Be brave and keep pushing on.$"
+
+gUnknown_81C5BB9::
+ .string "Through your adventure, we hope\n"
+ .string "that you will interact with all sorts\n"
+ .string "of people and achieve personal growth.\n"
+ .string "That is our biggest objective.\n"
+ .string "\n"
+ .string "Press the A Button, and let your\n"
+ .string "adventure begin!$"
gUnknown_81C5C78:: @ 81C5C78
- .incbin "baserom.gba", 0x1C5C78, 0x8E
+ .string "Hello, there!\n"
+ .string "Glad to meet you!\pWelcome to the world of POKéMON!\pMy name is OAK.\pPeople affectionately refer to me\n"
+ .string "as the POKéMON PROFESSOR.\p$"
gUnknown_81C5D06:: @ 81C5D06
- .incbin "baserom.gba", 0x1C5D06, 0xC
+ .string "This world…$"
gUnknown_81C5D12:: @ 81C5D12
- .incbin "baserom.gba", 0x1C5D12, 0x39
+ .string "…is inhabited far and wide by\n"
+ .string "creatures called POKéMON.\p$"
gUnknown_81C5D4B:: @ 81C5D4B
- .incbin "baserom.gba", 0x1C5D4B, 0x72
+ .string "For some people, POKéMON are pets.\n"
+ .string "Others use them for battling.\pAs for myself…\pI study POKéMON as a profession.\p$"
gUnknown_81C5DBD:: @ 81C5DBD
- .incbin "baserom.gba", 0x1C5DBD, 0x2D
+ .string "But first, tell me a little about\n"
+ .string "yourself.\p$"
gUnknown_81C5DEA:: @ 81C5DEA
- .incbin "baserom.gba", 0x1C5DEA, 0x29
+ .string "Let’s begin with your name.\n"
+ .string "What is it?\p$"
gUnknown_81C5E13:: @ 81C5E13
- .incbin "baserom.gba", 0x1C5E13, 0x1B
+ .string "Right…\n"
+ .string "So your name is {PLAYER}.$"
gUnknown_81C5E2E:: @ 81C5E2E
- .incbin "baserom.gba", 0x1C5E2E, 0x63
+ .string "This is my grandson.\pHe’s been your rival since you both\n"
+ .string "were babies.\p…Erm, what was his name now?$"
gUnknown_81C5E91:: @ 81C5E91
- .incbin "baserom.gba", 0x1C5E91, 0x24
+ .string "Your rival’s name, what was it now?$"
gUnknown_81C5EB5:: @ 81C5EB5
- .incbin "baserom.gba", 0x1C5EB5, 0x10
+ .string "…Er, was it {RIVAL}?$"
gUnknown_81C5EC5:: @ 81C5EC5
- .incbin "baserom.gba", 0x1C5EC5, 0x2F
+ .string "That’s right! I remember now!\n"
+ .string "His name is {RIVAL}!\p$"
gUnknown_81C5EF4:: @ 81C5EF4
- .incbin "baserom.gba", 0x1C5EF4, 0x75
+ .string "{PLAYER}!\pYour very own POKéMON legend is\n"
+ .string "about to unfold!\pA world of dreams and adventures\n"
+ .string "with POKéMON awaits! Let’s go!$"
@ pokedude data
.incbin "baserom.gba", 0x1C5F69, 0x983
diff --git a/data/oak_speech/unk_8460BA8.bin b/data/oak_speech/unk_8460BA8.bin
new file mode 100644
index 000000000..ad1c8216c
--- /dev/null
+++ b/data/oak_speech/unk_8460BA8.bin
@@ -0,0 +1,2 @@
+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^                                ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ` a b c d e f   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (p q r s t u v   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` g h i j k l m   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (w x y z { | }   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` n o ‚ ƒ „ … †   ` ~  ’ “ ” • –  
+ \ No newline at end of file
diff --git a/include/menu.h b/include/menu.h
index f9fa63f98..b134ef7f5 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -41,5 +41,6 @@ void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void sub_810F558(u8, u8, u8, u8, u16);
void sub_810F650(const u8 *, const u8 *, u8, u32, u8);
void sub_810F5E8(const u8 *, u32, u8);
+void sub_810F71C(void);
#endif // GUARD_MENU_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 0d51eb5fb..8903f5d56 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -27,5 +27,6 @@ void sub_80F6F1C(u8 windowId, bool8 copyNow);
void sub_80F6C6C(void);
void sub_80F6C98(void);
void sub_80F77CC(u16);
+void * malloc_and_decompress(const void * src, u32 * size);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/text.h b/include/text.h
index 1956de52b..c8835fbde 100644
--- a/include/text.h
+++ b/include/text.h
@@ -251,5 +251,6 @@ s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
u8 sub_8006300(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
+void sub_8006398(u8 spriteId);
#endif // GUARD_TEXT_H
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 022012cf9..ec30dfe6e 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -17,10 +17,13 @@
#include "event_scripts.h"
#include "scanline_effect.h"
#include "constants/species.h"
+#include "constants/songs.h"
struct OakSpeechResources
{
- u8 filler_0000[0x12];
+ u8 filler_0000[0x8];
+ void * unk_0008;
+ u8 filler_000C[6];
u16 unk_0012;
u16 unk_0014[3];
u8 filler_001A[5];
@@ -36,6 +39,11 @@ void sub_812E9F8(u8 taskId);
void sub_812EB58(u8 taskId);
void sub_812EEB0(void);
void sub_812F0B0(u8 taskId);
+void sub_812F180(u8 taskId);
+void sub_812F274(u8 taskId);
+void sub_812F33C(u8 taskId);
+void sub_812F4A8(u8 taskId);
+void sub_8130FD4(u8 taskId, u8 state);
extern const u8 gUnknown_8415D2C[];
extern const u8 gUnknown_8415D48[];
@@ -459,13 +467,17 @@ const u8 gUnknown_845FD54[][5] = {
ALIGNED(4) const u16 gUnknown_8460568[] = INCBIN_U16("data/oak_speech/unk_8460568.gbapal");
const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz");
+const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz");
extern const u16 gUnknown_8460D94[];
extern const u16 gUnknown_8460E34[];
extern const struct BgTemplate gUnknown_8462E58[3];
extern const struct WindowTemplate *const gUnknown_8462EB4[3];
+extern const struct WindowTemplate gUnknown_8462EC0;
extern const struct TextColor gUnknown_8462EE8;
+extern const struct TextColor gUnknown_8462EEC;
+extern const u8 *const gUnknown_8462EF0[];
extern const u8 *const gUnknown_8463074[];
void sub_812E944(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5)
@@ -708,3 +720,127 @@ void sub_812EF50(u8 taskId)
BeginNormalPaletteFade(0xFFFFDFFF, -1, 16, 0, stdpal_get(2)[15]);
gTasks[taskId].func = sub_812F0B0;
}
+
+void sub_812F0B0(u8 taskId)
+{
+ if (!gPaletteFade.active && JOY_NEW((A_BUTTON | B_BUTTON)))
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ gTasks[taskId].data[15] = 1;
+ if (sOakSpeechResources->unk_0012 < 2)
+ {
+ BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]);
+ }
+ }
+ else
+ {
+ if (sOakSpeechResources->unk_0012 != 0)
+ {
+ gTasks[taskId].data[15] = -1;
+ BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]);
+ }
+ else
+ return;
+ }
+ }
+ else
+ return;
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = sub_812F180;
+}
+
+void sub_812F180(u8 taskId)
+{
+ u8 r8 = 0;
+ u8 i;
+
+ if (!gPaletteFade.active)
+ {
+ switch (sOakSpeechResources->unk_0012) {
+ case 0:
+ r8 = 1;
+ break;
+ case 1:
+ case 2:
+ r8 = 3;
+ break;
+ }
+ sOakSpeechResources->unk_0012 += gTasks[taskId].data[15];
+ if (sOakSpeechResources->unk_0012 < 3)
+ {
+ for (i = 0; i < r8; i++)
+ {
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
+ ClearWindowTilemap(sOakSpeechResources->unk_0014[i]);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
+ RemoveWindow(sOakSpeechResources->unk_0014[i]);
+ sOakSpeechResources->unk_0014[i] = 0;
+ }
+ gTasks[taskId].func = sub_812EF50;
+ }
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ gTasks[taskId].func = sub_812F274;
+ }
+ }
+}
+
+void sub_812F274(u8 taskId)
+{
+ u8 i = 0;
+
+ if (!gPaletteFade.active)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
+ ClearWindowTilemap(sOakSpeechResources->unk_0014[i]);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
+ RemoveWindow(sOakSpeechResources->unk_0014[i]);
+ sOakSpeechResources->unk_0014[i] = 0;
+ }
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 18);
+ CopyBgTilemapBufferToVram(1);
+ sub_8006398(gTasks[taskId].data[5]);
+ sOakSpeechResources->unk_0014[0] = RGB_BLACK;
+ LoadPalette(sOakSpeechResources->unk_0014, 0, 2);
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].func = sub_812F33C;
+ }
+}
+
+void sub_812F33C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u32 sp14 = 0;
+
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ PlayBGM(324);
+ sub_810F71C();
+ sub_810F5E8(gUnknown_8415D48, 0, 1);
+ sOakSpeechResources->unk_0008 = malloc_and_decompress(gUnknown_8460BA8, &sp14);
+ CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
+ CopyBgTilemapBufferToVram(1);
+ Free(sOakSpeechResources->unk_0008);
+ sOakSpeechResources->unk_0008 = NULL;
+ data[14] = AddWindow(&gUnknown_8462EC0);
+ PutWindowTilemap(data[14]);
+ FillWindowPixelBuffer(data[14], 0x00);
+ CopyWindowToVram(data[14], 3);
+ sOakSpeechResources->unk_0012 = 0;
+ gMain.state = 0;
+ data[15] = 16;
+ AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &gUnknown_8462EEC, 0, gUnknown_8462EF0[0]);
+ data[5] = sub_8006300(0, 0xe2, 0x91, 0, 0);
+ gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[data[5]].oam.priority = 0;
+ sub_8130FD4(taskId, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 16, 0, 0);
+ gTasks[taskId].func = sub_812F4A8;
+ }
+}