diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-10 19:43:47 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-10 19:43:47 -0400 |
commit | 716639a6287ac32b389085930dca612eba5818f2 (patch) | |
tree | a651c5afcf58c0cb43b31b3a289cb6dba54742aa | |
parent | 6982393439b300deef09bef2e29f8f6c1180eee9 (diff) |
through sub_81306D4
-rw-r--r-- | asm/oak_speech.s | 419 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/menu.h | 1 | ||||
-rw-r--r-- | src/oak_speech.c | 201 |
4 files changed, 132 insertions, 492 deletions
diff --git a/asm/oak_speech.s b/asm/oak_speech.s index 928ac6c6c..5645b6521 100644 --- a/asm/oak_speech.s +++ b/asm/oak_speech.s @@ -5,425 +5,6 @@ .text - thumb_func_start sub_81303B4 -sub_81303B4: @ 81303B4 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _081303F8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0813044C - ldr r4, _081303FC @ =sOakSpeechResources - ldr r0, [r4] - ldrb r0, [r0, 0x10] - movs r1, 0 - bl sub_8131754 - ldr r0, [r4] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _08130408 - ldr r0, _08130400 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r2, [r1, 0x8] - str r5, [sp] - ldr r0, _08130404 @ =sub_8130C64 - str r0, [sp, 0x4] - movs r0, 0 - movs r3, 0 - bl DoNamingScreen - b _08130440 - .align 2, 0 -_081303F8: .4byte gPaletteFade -_081303FC: .4byte sOakSpeechResources -_08130400: .4byte gSaveBlock2Ptr -_08130404: .4byte sub_8130C64 -_08130408: - ldr r0, _08130454 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl sub_810F4D8 - ldrh r0, [r4, 0x22] - lsls r0, 24 - lsrs r0, 24 - bl RemoveWindow - ldr r0, _08130458 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _0813045C @ =0x00003a4c - adds r1, r0 - str r5, [sp] - ldr r0, _08130460 @ =sub_8130C64 - str r0, [sp, 0x4] - movs r0, 0x4 - movs r2, 0 - movs r3, 0 - bl DoNamingScreen -_08130440: - adds r0, r6, 0 - movs r1, 0x1 - bl sub_8131168 - bl FreeAllWindowBuffers -_0813044C: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130454: .4byte gTasks -_08130458: .4byte gSaveBlock1Ptr -_0813045C: .4byte 0x00003a4c -_08130460: .4byte sub_8130C64 - thumb_func_end sub_81303B4 - - thumb_func_start sub_8130464 -sub_8130464: @ 8130464 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r6, r1, 3 - ldr r7, _081304A0 @ =gTasks+0x8 - adds r5, r6, r7 - ldr r0, _081304A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08130544 - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _08130500 - ldr r0, _081304A8 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _081304B4 - ldr r0, _081304AC @ =gStringVar4 - ldr r1, _081304B0 @ =gUnknown_81C5E13 - bl StringExpandPlaceholders - b _081304BC - .align 2, 0 -_081304A0: .4byte gTasks+0x8 -_081304A4: .4byte gPaletteFade -_081304A8: .4byte sOakSpeechResources -_081304AC: .4byte gStringVar4 -_081304B0: .4byte gUnknown_81C5E13 -_081304B4: - ldr r0, _081304F4 @ =gStringVar4 - ldr r1, _081304F8 @ =gUnknown_81C5EB5 - bl StringExpandPlaceholders -_081304BC: - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r2, _081304F4 @ =gStringVar4 - ldr r0, _081304FC @ =sOakSpeechResources - ldr r0, [r0] - ldrb r3, [r0, 0x1F] - movs r4, 0 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - strh r4, [r5, 0x1E] - movs r0, 0x19 - strh r0, [r5, 0x6] - b _08130544 - .align 2, 0 -_081304F4: .4byte gStringVar4 -_081304F8: .4byte gUnknown_81C5EB5 -_081304FC: .4byte sOakSpeechResources -_08130500: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _08130544 - ldrh r0, [r5, 0x6] - movs r1, 0x6 - ldrsh r4, [r5, r1] - cmp r4, 0 - beq _0813051C - subs r0, 0x1 - strh r0, [r5, 0x6] - b _08130544 -_0813051C: - bl sub_80F796C - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0813054C @ =gUnknown_8462ED0 - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl sub_810FF60 - adds r0, r7, 0 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _08130550 @ =sub_8130554 - str r1, [r0] -_08130544: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813054C: .4byte gUnknown_8462ED0 -_08130550: .4byte sub_8130554 - thumb_func_end sub_8130464 - - thumb_func_start sub_8130554 -sub_8130554: @ 8130554 - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r5, r0, 24 - cmp r5, 0 - beq _0813057C - cmp r5, 0 - bgt _08130576 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08130604 - b _0813063E -_08130576: - cmp r5, 0x1 - beq _08130604 - b _0813063E -_0813057C: - movs r0, 0x5 - bl PlaySE - ldr r1, _081305B0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r6, r0, r1 - movs r0, 0x28 - strh r0, [r6, 0xE] - ldr r7, _081305B4 @ =sOakSpeechResources - ldr r0, [r7] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _081305BC - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_813144C - ldr r0, _081305B8 @ =sub_8130650 - str r0, [r6] - b _0813063E - .align 2, 0 -_081305B0: .4byte gTasks -_081305B4: .4byte sOakSpeechResources -_081305B8: .4byte sub_8130650 -_081305BC: - ldr r4, _081305F8 @ =gStringVar4 - ldr r1, _081305FC @ =gUnknown_81C5EC5 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0 - bl sub_80F6EE4 - ldr r0, [r7] - ldrb r3, [r0, 0x1F] - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl AddTextPrinterParametrized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _08130600 @ =sub_8130694 - str r0, [r6] - b _0813063E - .align 2, 0 -_081305F8: .4byte gStringVar4 -_081305FC: .4byte gUnknown_81C5EC5 -_08130600: .4byte sub_8130694 -_08130604: - movs r0, 0x5 - bl PlaySE - ldr r0, _08130624 @ =sOakSpeechResources - ldr r0, [r0] - ldrh r0, [r0, 0x10] - cmp r0, 0 - bne _08130630 - ldr r0, _08130628 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813062C @ =sub_8130160 - b _0813063C - .align 2, 0 -_08130624: .4byte sOakSpeechResources -_08130628: .4byte gTasks -_0813062C: .4byte sub_8130160 -_08130630: - ldr r0, _08130648 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813064C @ =sub_8130228 -_0813063C: - str r0, [r1] -_0813063E: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130648: .4byte gTasks -_0813064C: .4byte sub_8130228 - thumb_func_end sub_8130554 - - thumb_func_start sub_8130650 -sub_8130650: @ 8130650 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, _0813067C @ =gTasks+0x8 - adds r4, r5, r6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813068A - bl sub_8131310 - ldrh r1, [r4, 0x6] - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08130680 - subs r0, r1, 0x1 - strh r0, [r4, 0x6] - b _0813068A - .align 2, 0 -_0813067C: .4byte gTasks+0x8 -_08130680: - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _08130690 @ =sub_81306D4 - str r1, [r0] -_0813068A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130690: .4byte sub_81306D4 - thumb_func_end sub_8130650 - - thumb_func_start sub_8130694 -sub_8130694: @ 8130694 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _081306C4 - movs r0, 0 - movs r1, 0x1 - bl sub_80F6F54 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_813144C - ldr r0, _081306CC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _081306D0 @ =sub_81307D0 - str r0, [r1] -_081306C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081306CC: .4byte gTasks -_081306D0: .4byte sub_81307D0 - thumb_func_end sub_8130694 - - thumb_func_start sub_81306D4 -sub_81306D4: @ 81306D4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - ldr r0, _08130710 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r1, 0 - strh r1, [r4, 0xA] - ldr r0, _08130714 @ =gSpriteCoordOffsetX - strh r1, [r0] - movs r0, 0x2 - bl sub_81311F4 - adds r0, r5, 0 - movs r1, 0x2 - bl sub_81315CC - ldr r0, _08130718 @ =sub_813071C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130710: .4byte gTasks -_08130714: .4byte gSpriteCoordOffsetX -_08130718: .4byte sub_813071C - thumb_func_end sub_81306D4 - thumb_func_start sub_813071C sub_813071C: @ 813071C push {r4,r5,lr} diff --git a/include/event_scripts.h b/include/event_scripts.h index 9b31a084f..c55076322 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -713,6 +713,9 @@ extern const u8 gUnknown_81C5D12[]; extern const u8 gUnknown_81C5D4B[]; extern const u8 gUnknown_81C5DBD[]; extern const u8 gUnknown_81C5DEA[]; +extern const u8 gUnknown_81C5E13[]; extern const u8 gUnknown_81C5E91[]; +extern const u8 gUnknown_81C5EB5[]; +extern const u8 gUnknown_81C5EC5[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/menu.h b/include/menu.h index 41119db4f..3394603c8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -44,5 +44,6 @@ void sub_810F5E8(const u8 *, u32, u8); void sub_810F71C(void); void sub_810F740(void); void sub_810F7D8(u8, u8, u8, u8, u8, u8, u8); +void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8); #endif // GUARD_MENU_H diff --git a/src/oak_speech.c b/src/oak_speech.c index 19c603c99..b880dc71e 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -18,6 +18,7 @@ #include "scanline_effect.h" #include "string_util.h" #include "pokeball.h" +#include "naming_screen.h" #include "constants/species.h" #include "constants/songs.h" @@ -68,6 +69,13 @@ void sub_8130160(u8 taskId); void sub_8130324(u8 taskId); void sub_81303B4(u8 taskId); void sub_8130464(u8 taskId); +void sub_8130554(u8 taskId); +void sub_8130650(u8 taskId); +void sub_8130694(u8 taskId); +void sub_81306D4(u8 taskId); +void sub_813071C(u8 taskId); +void sub_81307D0(u8 taskId); +void sub_8130C64(void); void sub_8130F2C(u8 taskId); void sub_8130FD4(u8 taskId, u8 state); void sub_8131168(u8 taskId, u8 state); @@ -513,6 +521,7 @@ extern const struct BgTemplate gUnknown_8462E58[3]; extern const struct WindowTemplate *const gUnknown_8462EB4[3]; extern const struct WindowTemplate gUnknown_8462EC0; extern const struct WindowTemplate gUnknown_8462EC8; +extern const struct WindowTemplate gUnknown_8462ED0; extern const struct TextColor gUnknown_8462EE8; extern const struct TextColor gUnknown_8462EEC; extern const u8 *const gUnknown_8462EF0[]; @@ -1316,13 +1325,10 @@ void sub_8130228(u8 taskId) gTasks[taskId].func = sub_8130324; } -#ifdef NONMATCHING -// switch case uses blt, should use ble void sub_8130324(u8 taskId) { s16 * data = gTasks[taskId].data; s8 input = ProcessMenuInput(); - switch (input) { case 1: @@ -1341,77 +1347,126 @@ void sub_8130324(u8 taskId) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_81303B4; break; + case -1: + break; } } -#else -NAKED -void sub_8130324(u8 taskId) + +void sub_81303B4(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_8131754(sOakSpeechResources->unk_0010, 0); + if (sOakSpeechResources->unk_0010 == 0) + { + DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8130C64); + } + else + { + sub_810F4D8(gTasks[taskId].data[13], 1); + RemoveWindow(gTasks[taskId].data[13]); + DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, sub_8130C64); + } + sub_8131168(taskId, 1); + FreeAllWindowBuffers(); + } +} + +void sub_8130464(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + if (data[15] == 1) + { + if (sOakSpeechResources->unk_0010 == 0) + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5E13); + } + else + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EB5); + } + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + data[15] = 0; + data[3] = 25; + } + else if (!IsTextPrinterActive(0)) + { + if (data[3] != 0) + data[3]--; + else + { + sub_810FF60(&gUnknown_8462ED0, 2, 0, 2, sub_80F796C(), 14, 0); + gTasks[taskId].func = sub_8130554; + } + } + } +} + +void sub_8130554(u8 taskId) +{ + s8 input = ProcessMenuInputNoWrap_(); + switch (input) + { + case 0: + PlaySE(SE_SELECT); + gTasks[taskId].data[3] = 40; + if (sOakSpeechResources->unk_0010 == 0) + { + sub_80F6F54(0, 1); + sub_813144C(taskId, 2); + gTasks[taskId].func = sub_8130650; + } + else + { + StringExpandPlaceholders(gStringVar4, gUnknown_81C5EC5); + OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F); + gTasks[taskId].func = sub_8130694; + } + break; + case 1: + case -1: + PlaySE(SE_SELECT); + if (sOakSpeechResources->unk_0010 == 0) + gTasks[taskId].func = sub_8130160; + else + gTasks[taskId].func = sub_8130228; + break; + } +} + +void sub_8130650(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 0) + { + sub_8131310(); + if (data[3] != 0) + data[3]--; + else + gTasks[taskId].func = sub_81306D4; + } +} + +void sub_8130694(u8 taskId) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tsub sp, 0x4\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r1, r0, 2\n" - "\tadds r1, r0\n" - "\tlsls r6, r1, 3\n" - "\tldr r7, _0813037C @ =gTasks+0x8\n" - "\tadds r5, r6, r7\n" - "\tbl ProcessMenuInput\n" - "\tlsls r0, 24\n" - "\tasrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _08130388\n" - "\tcmp r4, 0\n" - "\tble _081303A8\n" - "\tcmp r4, 0x4\n" - "\tbgt _081303A8\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tldrb r0, [r5, 0x1A]\n" - "\tmovs r1, 0x1\n" - "\tbl sub_810F4D8\n" - "\tldrb r0, [r5, 0x1A]\n" - "\tbl RemoveWindow\n" - "\tldr r0, _08130380 @ =sOakSpeechResources\n" - "\tldr r0, [r0]\n" - "\tldrb r0, [r0, 0x10]\n" - "\tsubs r1, r4, 0x1\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tbl sub_8131754\n" - "\tmovs r0, 0x1\n" - "\tstrh r0, [r5, 0x1E]\n" - "\tadds r0, r7, 0\n" - "\tsubs r0, 0x8\n" - "\tadds r0, r6, r0\n" - "\tldr r1, _08130384 @ =sub_8130464\n" - "\tb _081303A6\n" - "\t.align 2, 0\n" - "_0813037C: .4byte gTasks+0x8\n" - "_08130380: .4byte sOakSpeechResources\n" - "_08130384: .4byte sub_8130464\n" - "_08130388:\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tstr r4, [sp]\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x10\n" - "\tbl BeginNormalPaletteFade\n" - "\tadds r0, r7, 0\n" - "\tsubs r0, 0x8\n" - "\tadds r0, r6, r0\n" - "\tldr r1, _081303B0 @ =sub_81303B4\n" - "_081303A6:\n" - "\tstr r1, [r0]\n" - "_081303A8:\n" - "\tadd sp, 0x4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_081303B0: .4byte sub_81303B4"); + if (!IsTextPrinterActive(0)) + { + sub_80F6F54(0, 1); + sub_813144C(taskId, 2); + gTasks[taskId].func = sub_81307D0; + } +} + +void sub_81306D4(u8 taskId) +{ + ChangeBgX(2, 0, 0); + gTasks[taskId].data[1] = 0; + gSpriteCoordOffsetX = 0; + sub_81311F4(2, 0); + sub_81315CC(taskId, 2); + gTasks[taskId].func = sub_813071C; } -#endif //NONMATCHING |