diff options
author | scnorton <scnorton@biociphers.org> | 2019-04-10 10:16:20 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2019-04-10 10:16:20 -0400 |
commit | bf7084cb60f0375973d8caf1005fb8b02653ade2 (patch) | |
tree | ccf2cdf76dedeee231af58e0de9cc1e0187b2f5a | |
parent | dbd48510879a39de0ed7af143d4284ede7ae5829 (diff) |
through sub_812F33C
-rw-r--r-- | asm/oak_speech.s | 480 | ||||
-rw-r--r-- | data/data_845FD54.s | 16 | ||||
-rw-r--r-- | data/event_scripts.s | 220 | ||||
-rw-r--r-- | data/oak_speech/unk_8460BA8.bin | 2 | ||||
-rw-r--r-- | include/menu.h | 1 | ||||
-rw-r--r-- | include/new_menu_helpers.h | 1 | ||||
-rw-r--r-- | include/text.h | 1 | ||||
-rw-r--r-- | src/oak_speech.c | 138 |
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; + } +} |