summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-10 20:26:51 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-04-10 20:26:51 -0400
commit35892e6b5381190269a61f3a87743086a6a44c12 (patch)
tree1527d1bd0bd9814d90c8cd5fc7798ca25b04b2ef /src
parent716639a6287ac32b389085930dca612eba5818f2 (diff)
through sub_8130C20
Diffstat (limited to 'src')
-rw-r--r--src/oak_speech.c217
1 files changed, 217 insertions, 0 deletions
diff --git a/src/oak_speech.c b/src/oak_speech.c
index b880dc71e..93bc74eec 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -5,6 +5,7 @@
#include "gpu_regs.h"
#include "wild_encounter.h"
#include "palette.h"
+#include "blend_palette.h"
#include "text.h"
#include "window.h"
#include "text_window.h"
@@ -19,6 +20,8 @@
#include "string_util.h"
#include "pokeball.h"
#include "naming_screen.h"
+#include "math_util.h"
+#include "overworld.h"
#include "constants/species.h"
#include "constants/songs.h"
@@ -75,6 +78,18 @@ void sub_8130694(u8 taskId);
void sub_81306D4(u8 taskId);
void sub_813071C(u8 taskId);
void sub_81307D0(u8 taskId);
+void sub_8130858(u8 taskId);
+void sub_81308D0(u8 taskId);
+void sub_8130914(u8 taskId);
+void sub_8130940(u8 taskId);
+void sub_8130980(u8 taskId);
+void sub_8130A38(u8 taskId);
+void sub_8130A80(u8 taskId);
+void sub_8130ADC(u8 taskId);
+void sub_8130B10(u8 taskId);
+void sub_8130BA8(u8 taskId);
+void sub_8130BF0(u8 taskId);
+void sub_8130C20(u8 taskId);
void sub_8130C64(void);
void sub_8130F2C(u8 taskId);
void sub_8130FD4(u8 taskId, u8 state);
@@ -1470,3 +1485,205 @@ void sub_81306D4(u8 taskId)
sub_81315CC(taskId, 2);
gTasks[taskId].func = sub_813071C;
}
+
+void sub_813071C(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ OaksSpeechPrintMessage(gUnknown_81C5E2E, sOakSpeechResources->unk_001F);
+ sOakSpeechResources->unk_0010 = 1;
+ gTasks[taskId].func = sub_81301B0;
+ }
+}
+
+void sub_81307D0(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ sub_8131310();
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ sub_81311F4(MALE, 0);
+ else
+ sub_81311F4(FEMALE, 0);
+ gTasks[taskId].data[1] = 0;
+ gSpriteCoordOffsetX = 0;
+ ChangeBgX(2, 0, 0);
+ sub_81315CC(taskId, 2);
+ gTasks[taskId].func = sub_8130858;
+ }
+ }
+}
+
+void sub_8130858(u8 taskId)
+{
+ if (gTasks[taskId].data[2] != 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_81C5EF4);
+ OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->unk_001F);
+ gTasks[taskId].data[3] = 30;
+ gTasks[taskId].func = sub_81308D0;
+ }
+}
+
+void sub_81308D0(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ if (gTasks[taskId].data[3] != 0)
+ gTasks[taskId].data[3]--;
+ else
+ {
+ FadeOutBGM(4);
+ gTasks[taskId].func = sub_8130914;
+ }
+ }
+}
+
+void sub_8130914(u8 taskId)
+{
+ sOakSpeechResources->unk_0012 = 0;
+ sub_8130A38(taskId);
+ sub_8130ADC(taskId);
+ sub_8130940(taskId);
+}
+
+void sub_8130940(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ SetBgAttribute(2, 6, 1);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 256;
+ data[15] = 0;
+ gTasks[taskId].func = sub_8130980;
+}
+
+void sub_8130980(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s16 x, y;
+ u16 r0;
+
+ sOakSpeechResources->unk_0012++;
+ if (sOakSpeechResources->unk_0012 % 20 == 0)
+ {
+ if (sOakSpeechResources->unk_0012 == 40)
+ PlaySE(SE_FU_ZUZUZU);
+ r0 = data[2];
+ data[2] -= 32;
+ x = sub_80D8B90(r0 - 8);
+ y = sub_80D8B90(data[2] - 16);
+ SetBgAffine(2, 0x7800, 0x5400, 0x78, 0x54, x, y, 0);
+ if (data[2] <= 96)
+ {
+ data[15] = 1;
+ data[0] = 36;
+ gTasks[taskId].func = sub_8130BA8;
+ }
+ }
+}
+
+void sub_8130A38(u8 taskId)
+{
+ u8 taskId2 = CreateTask(sub_8130A80, 1);
+ s16 * data = gTasks[taskId2].data;
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 0;
+ data[15] = 0;
+ BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK);
+}
+
+void sub_8130A80(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ if (data[1] != 0)
+ {
+ DestroyTask(taskId);
+ sub_8131168(taskId, 1);
+ }
+ else
+ {
+ data[1]++;
+ BeginNormalPaletteFade(0x0000F000, 0, 0, 16, RGB_BLACK);
+ }
+ }
+}
+
+void sub_8130ADC(u8 taskId)
+{
+ u8 taskId2 = CreateTask(sub_8130B10, 2);
+ s16 * data = gTasks[taskId2].data;
+ data[0] = 8;
+ data[1] = 0;
+ data[2] = 8;
+ data[14] = 0;
+ data[15] = 0;
+}
+
+void sub_8130B10(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 i;
+
+ if (data[0] != 0)
+ data[0]--;
+ else
+ {
+ if (data[1] <= 0 && data[2] != 0)
+ data[2]--;
+ BlendPalette(0x40, 0x20, data[14], RGB_WHITE);
+ data[14]++;
+ data[1]--;
+ data[0] = data[2];
+ if (data[14] > 14)
+ {
+ for (i = 0; i < 32; i++)
+ {
+ gPlttBufferFaded[i + 0x40] = RGB_WHITE;
+ gPlttBufferUnfaded[i + 0x40] = RGB_WHITE;
+ }
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_8130BA8(u8 taskId)
+{
+ if (gTasks[taskId].data[0] != 0)
+ gTasks[taskId].data[0]--;
+ else
+ {
+ BeginNormalPaletteFade(0x00000030, 2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = sub_8130BF0;
+ }
+}
+
+void sub_8130BF0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = sub_8130C20;
+ }
+}
+
+void sub_8130C20(u8 taskId)
+{
+ FreeAllWindowBuffers();
+ sub_8044D80();
+ Free(sOakSpeechResources);
+ sOakSpeechResources = NULL;
+ gTextFlags.flag_0 = FALSE;
+ SetMainCallback2(CB2_NewGame);
+ DestroyTask(taskId);
+}