summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-10 19:43:47 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-04-10 19:43:47 -0400
commit716639a6287ac32b389085930dca612eba5818f2 (patch)
treea651c5afcf58c0cb43b31b3a289cb6dba54742aa
parent6982393439b300deef09bef2e29f8f6c1180eee9 (diff)
through sub_81306D4
-rw-r--r--asm/oak_speech.s419
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/menu.h1
-rw-r--r--src/oak_speech.c201
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