through sub_80E715C
This commit is contained in:
+106
-8
@@ -1,19 +1,30 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "task.h"
|
||||
#include "cable_club.h"
|
||||
#include "link.h"
|
||||
#include "tv.h"
|
||||
#include "battle_tower.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "window.h"
|
||||
#include "mystery_event_script.h"
|
||||
#include "secret_base.h"
|
||||
#include "mauville_old_man.h"
|
||||
#include "sound.h"
|
||||
#include "songs.h"
|
||||
#include "overworld.h"
|
||||
#include "field_screen.h"
|
||||
#include "fldeff_80F9BCC.h"
|
||||
#include "script.h"
|
||||
#include "event_data.h"
|
||||
#include "strings.h"
|
||||
#include "record_mixing.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
struct RecordMixingData {
|
||||
struct PlayerRecords {
|
||||
/* 0x0000 */ struct SecretBaseRecord secretBases[20];
|
||||
/* 0x0c80 */ TVShow tvShows[25];
|
||||
/* 0x1004 */ PokeNews pokeNews[16];
|
||||
@@ -47,18 +58,20 @@ IWRAM_DATA u8 gUnknown_03001160[8];
|
||||
IWRAM_DATA u32 gUnknown_03001168[3];
|
||||
|
||||
EWRAM_DATA struct DayCareMailRecordMixing gUnknown_02039F9C[2] = {};
|
||||
EWRAM_DATA struct RecordMixingData *gUnknown_0203A014 = NULL;
|
||||
EWRAM_DATA struct RecordMixingData *gUnknown_0203A018 = NULL;
|
||||
EWRAM_DATA struct PlayerRecords *gUnknown_0203A014 = NULL;
|
||||
EWRAM_DATA struct PlayerRecords *gUnknown_0203A018 = NULL;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
void sub_80E715C(u8 taskId);
|
||||
static void sub_80E715C(u8 taskId);
|
||||
void sub_80E7324(u8 taskId);
|
||||
void sub_80E78C4(OldMan *, size_t, u8);
|
||||
void sub_80E7948(void *, size_t, u8);
|
||||
void sub_80E7A14(LilycoveLady *, size_t, u8);
|
||||
void sub_80E7B2C(TVShow *);
|
||||
void sub_80E7B60(void *, size_t, u8, TVShow *);
|
||||
void sub_80E7F68(void *, u8);
|
||||
void sub_80E7FF8(u8 taskId);
|
||||
void sub_80E8110(void *, void *);
|
||||
void sub_80E8468(void *, size_t, u8);
|
||||
void sub_80E89AC(void *, size_t, u8);
|
||||
@@ -94,7 +107,7 @@ void sub_80E6BF8(void)
|
||||
gUnknown_03001158 = gSaveBlock2Ptr->field_64C;
|
||||
}
|
||||
|
||||
void sub_80E6CA0(struct RecordMixingData *dest)
|
||||
void sub_80E6CA0(struct PlayerRecords *dest)
|
||||
{
|
||||
memcpy(dest->secretBases, gUnknown_03001134, sizeof(struct SecretBaseRecord) * 20);
|
||||
memcpy(dest->tvShows, gUnknown_03001138, sizeof(TVShow) * 25);
|
||||
@@ -110,7 +123,7 @@ void sub_80E6CA0(struct RecordMixingData *dest)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80E6D54(struct RecordMixingData *dest)
|
||||
void sub_80E6D54(struct PlayerRecords *dest)
|
||||
{
|
||||
memcpy(dest->secretBases, gUnknown_03001134, sizeof(struct SecretBaseRecord) * 20);
|
||||
sub_80EB18C(dest->secretBases);
|
||||
@@ -135,7 +148,7 @@ void sub_80E6E24(void)
|
||||
sub_80E9914();
|
||||
sub_80F0BB8();
|
||||
sub_80E6BF8();
|
||||
if (sub_800A064())
|
||||
if (Link_AnyPartnersPlayingRubyOrSapphrie())
|
||||
{
|
||||
if (sub_800A03C() == FALSE)
|
||||
{
|
||||
@@ -168,7 +181,7 @@ void sub_80E6E24(void)
|
||||
|
||||
void sub_80E6F60(u32 a0)
|
||||
{
|
||||
if (sub_800A064())
|
||||
if (Link_AnyPartnersPlayingRubyOrSapphrie())
|
||||
{
|
||||
// Ruby/Sapphire
|
||||
sub_80E7B2C(gUnknown_0203A014[0].tvShows);
|
||||
@@ -198,3 +211,88 @@ void sub_80E6F60(u32 a0)
|
||||
sub_80E89AC(gUnknown_0203A014[0].unk_12dc, 0x1444, a0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80E70F4(const u8 *src)
|
||||
{
|
||||
sub_81973C4(0, 0);
|
||||
PrintTextOnWindow(0, 1, src, 0, 1, 0, NULL);
|
||||
CopyWindowToVram(0, 3);
|
||||
}
|
||||
|
||||
void sub_80E7128(u8 taskId)
|
||||
{
|
||||
if (++ gTasks[taskId].data[0] == 50)
|
||||
{
|
||||
PlaySE(SE_W213);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80E715C(u8 taskId)
|
||||
{
|
||||
s16 *data;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
gUnknown_0203A018 = malloc(sizeof(struct PlayerRecords));
|
||||
gUnknown_0203A014 = malloc(sizeof(struct PlayerRecords) * 4);
|
||||
sub_8009628(gSpecialVar_0x8005);
|
||||
VarSet(VAR_0x4000, 1);
|
||||
gUnknown_03001130 = FALSE;
|
||||
sub_80E6E24();
|
||||
sub_80FB00C();
|
||||
data[0] = 1;
|
||||
data[10] = CreateTask(sub_80E7324, 80);
|
||||
data[15] = CreateTask(sub_80E7128, 81);
|
||||
break;
|
||||
case 1:
|
||||
if (!gTasks[data[10]].isActive)
|
||||
{
|
||||
data[0] = 2;
|
||||
FlagSet(SYS_MIX_RECORD);
|
||||
sub_80FB074();
|
||||
DestroyTask(data[15]);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
data[10] = CreateTask(sub_80E7FF8, 10);
|
||||
data[0] = 3;
|
||||
PlaySE(SE_W226);
|
||||
break;
|
||||
case 3:
|
||||
if (!gTasks[data[10]].isActive)
|
||||
{
|
||||
data[0] = 4;
|
||||
if (!gLinkVSyncDisabled)
|
||||
{
|
||||
data[10] = sub_80B3050();
|
||||
}
|
||||
sub_80E70F4(gText_RecordMixingComplete);
|
||||
data[8] = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (++ data[8] > 60)
|
||||
{
|
||||
data[0] = 5;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!gTasks[data[10]].isActive)
|
||||
{
|
||||
free(gUnknown_0203A014);
|
||||
free(gUnknown_0203A018);
|
||||
sub_808729C();
|
||||
if (gLinkVSyncDisabled)
|
||||
{
|
||||
CreateTask(sub_80AF2B4, 10);
|
||||
}
|
||||
sub_8197434(0, 1);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user