through sub_80E715C

This commit is contained in:
PikalaxALT 2017-11-04 10:15:58 -04:00
parent f5c1e190d1
commit c054446790
10 changed files with 134 additions and 258 deletions

View File

@ -795,7 +795,7 @@ sub_80B2A08: @ 80B2A08
ldrh r0, [r0] ldrh r0, [r0]
cmp r0, 0x4 cmp r0, 0x4
bne _080B2A38 bne _080B2A38
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
cmp r0, 0 cmp r0, 0
bne _080B2A4A bne _080B2A4A
bl sub_800AC34 bl sub_800AC34

View File

@ -1394,8 +1394,10 @@ _08009FF4:
bx r1 bx r1
thumb_func_end GetLinkPlayerCount thumb_func_end GetLinkPlayerCount
thumb_func_start sub_8009FF8 thumb_func_start LinkPartnerVersionCheck
sub_8009FF8: @ 8009FF8 LinkPartnerVersionCheck: @ 8009FF8
@ s32 LinkPartnerVersionCheck(u32 version1, u32 version2)
@ returns 1 if any link partners are playing either version1 or version2, -1 if no link partners are playing either version1 or version2
push {r4-r7,lr} push {r4-r7,lr}
adds r6, r0, 0 adds r6, r0, 0
adds r5, r1, 0 adds r5, r1, 0
@ -1431,7 +1433,7 @@ _0800A034:
pop {r4-r7} pop {r4-r7}
pop {r1} pop {r1}
bx r1 bx r1
thumb_func_end sub_8009FF8 thumb_func_end LinkPartnerVersionCheck
thumb_func_start sub_800A03C thumb_func_start sub_800A03C
sub_800A03C: @ 800A03C sub_800A03C: @ 800A03C
@ -1439,8 +1441,8 @@ sub_800A03C: @ 800A03C
bx lr bx lr
thumb_func_end sub_800A03C thumb_func_end sub_800A03C
thumb_func_start sub_800A040 thumb_func_start Link_HaveFourPlayersWithAtLeastOneRubyOrSapphire
sub_800A040: @ 800A040 Link_HaveFourPlayersWithAtLeastOneRubyOrSapphire: @ 800A040
push {lr} push {lr}
bl GetLinkPlayerCount bl GetLinkPlayerCount
lsls r0, 24 lsls r0, 24
@ -1449,7 +1451,7 @@ sub_800A040: @ 800A040
bne _0800A05A bne _0800A05A
movs r0, 0x2 movs r0, 0x2
movs r1, 0x1 movs r1, 0x1
bl sub_8009FF8 bl LinkPartnerVersionCheck
cmp r0, 0 cmp r0, 0
bge _0800A05E bge _0800A05E
_0800A05A: _0800A05A:
@ -1460,14 +1462,14 @@ _0800A05E:
_0800A060: _0800A060:
pop {r1} pop {r1}
bx r1 bx r1
thumb_func_end sub_800A040 thumb_func_end Link_HaveFourPlayersWithAtLeastOneRubyOrSapphire
thumb_func_start sub_800A064 thumb_func_start Link_AnyPartnersPlayingRubyOrSapphrie
sub_800A064: @ 800A064 Link_AnyPartnersPlayingRubyOrSapphrie: @ 800A064
push {lr} push {lr}
movs r0, 0x2 movs r0, 0x2
movs r1, 0x1 movs r1, 0x1
bl sub_8009FF8 bl LinkPartnerVersionCheck
cmp r0, 0 cmp r0, 0
bge _0800A076 bge _0800A076
movs r0, 0 movs r0, 0
@ -1477,14 +1479,14 @@ _0800A076:
_0800A078: _0800A078:
pop {r1} pop {r1}
bx r1 bx r1
thumb_func_end sub_800A064 thumb_func_end Link_AnyPartnersPlayingRubyOrSapphrie
thumb_func_start sub_800A07C thumb_func_start sub_800A07C
sub_800A07C: @ 800A07C sub_800A07C: @ 800A07C
push {lr} push {lr}
movs r0, 0x4 movs r0, 0x4
movs r1, 0x5 movs r1, 0x5
bl sub_8009FF8 bl LinkPartnerVersionCheck
adds r2, r0, 0 adds r2, r0, 0
cmp r2, 0 cmp r2, 0
blt _0800A0A4 blt _0800A0A4

View File

@ -5,237 +5,6 @@
.text .text
thumb_func_start sub_80E70F4
sub_80E70F4: @ 80E70F4
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
movs r0, 0
movs r1, 0
bl sub_81973C4
movs r0, 0x1
str r0, [sp]
movs r0, 0
str r0, [sp, 0x4]
str r0, [sp, 0x8]
movs r1, 0x1
adds r2, r4, 0
movs r3, 0
bl PrintTextOnWindow
movs r0, 0
movs r1, 0x3
bl CopyWindowToVram
add sp, 0xC
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80E70F4
thumb_func_start sub_80E7128
sub_80E7128: @ 80E7128
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r4, r1, r2
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
lsls r0, 16
asrs r0, 16
cmp r0, 0x32
bne _080E7150
movs r0, 0xE2
bl PlaySE
movs r0, 0
strh r0, [r4, 0x8]
_080E7150:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E7128
thumb_func_start sub_80E715C
sub_80E715C: @ 80E715C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r5, r0, r1
movs r1, 0
ldrsh r0, [r5, r1]
cmp r0, 0x5
bls _080E7176
b _080E730A
_080E7176:
lsls r0, 2
ldr r1, =_080E7188
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080E7188:
.4byte _080E71A0
.4byte _080E7218
.4byte _080E724C
.4byte _080E726C
.4byte _080E72AC
.4byte _080E72C0
_080E71A0:
ldr r4, =gUnknown_0203A018
ldr r0, =0x00001444
bl Alloc
str r0, [r4]
ldr r4, =gUnknown_0203A014
ldr r0, =0x00005110
bl Alloc
str r0, [r4]
ldr r0, =gSpecialVar_0x8005
ldrb r0, [r0]
bl sub_8009628
movs r0, 0x80
lsls r0, 7
movs r1, 0x1
bl VarSet
ldr r1, =gUnknown_03001130
movs r0, 0
strb r0, [r1]
bl sub_80E6E24
bl sub_80FB00C
movs r0, 0x1
strh r0, [r5]
ldr r0, =sub_80E7324
movs r1, 0x50
bl CreateTask
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldr r0, =sub_80E7128
movs r1, 0x51
bl CreateTask
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1E]
b _080E730A
.pool
_080E7218:
ldr r2, =gTasks
movs r0, 0x14
ldrsh r1, [r5, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x4]
cmp r0, 0
bne _080E730A
movs r0, 0x2
strh r0, [r5]
ldr r0, =0x00000894
bl FlagSet
bl sub_80FB074
ldrb r0, [r5, 0x1E]
bl DestroyTask
b _080E730A
.pool
_080E724C:
ldr r0, =sub_80E7FF8
movs r1, 0xA
bl CreateTask
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
movs r0, 0x3
strh r0, [r5]
movs r0, 0xE0
bl PlaySE
b _080E730A
.pool
_080E726C:
ldr r2, =gTasks
movs r0, 0x14
ldrsh r1, [r5, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r4, [r0, 0x4]
cmp r4, 0
bne _080E730A
movs r0, 0x4
strh r0, [r5]
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
bne _080E7296
bl sub_80B3050
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
_080E7296:
ldr r0, =gText_RecordMixingComplete
bl sub_80E70F4
strh r4, [r5, 0x10]
b _080E730A
.pool
_080E72AC:
ldrh r0, [r5, 0x10]
adds r0, 0x1
strh r0, [r5, 0x10]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3C
ble _080E730A
movs r0, 0x5
strh r0, [r5]
b _080E730A
_080E72C0:
ldr r2, =gTasks
movs r0, 0x14
ldrsh r1, [r5, r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x4]
cmp r0, 0
bne _080E730A
ldr r0, =gUnknown_0203A014
ldr r0, [r0]
bl Free
ldr r0, =gUnknown_0203A018
ldr r0, [r0]
bl Free
bl sub_808729C
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
cmp r0, 0
beq _080E72F8
ldr r0, =sub_80AF2B4
movs r1, 0xA
bl CreateTask
_080E72F8:
movs r0, 0
movs r1, 0x1
bl sub_8197434
adds r0, r4, 0
bl DestroyTask
bl EnableBothScriptContexts
_080E730A:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E715C
thumb_func_start sub_80E7324 thumb_func_start sub_80E7324
sub_80E7324: @ 80E7324 sub_80E7324: @ 80E7324
push {r4-r6,lr} push {r4-r6,lr}
@ -431,7 +200,7 @@ _080E7490:
strh r0, [r5, 0x12] strh r0, [r5, 0x12]
ldr r0, =sub_80E756C ldr r0, =sub_80E756C
str r0, [r5] str r0, [r5]
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
cmp r0, 0 cmp r0, 0
beq _080E7504 beq _080E7504
ldr r0, =gUnknown_0203A018 ldr r0, =gUnknown_0203A018
@ -963,7 +732,7 @@ sub_80E78C4: @ 80E78C4
adds r0, r2 adds r0, r2
ldrb r4, [r0] ldrb r4, [r0]
ldrh r5, [r0, 0x1A] ldrh r5, [r0, 0x1A]
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
cmp r0, 0 cmp r0, 0
beq _080E7910 beq _080E7910
adds r0, r6, 0 adds r0, r6, 0
@ -1013,7 +782,7 @@ sub_80E7948: @ 80E7948
lsrs r6, r2, 24 lsrs r6, r2, 24
mov r0, sp mov r0, sp
bl sub_80E7830 bl sub_80E7830
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
cmp r0, 0 cmp r0, 0
beq _080E79AC beq _080E79AC
lsls r0, r6, 2 lsls r0, r6, 2
@ -1330,7 +1099,7 @@ _080E7BB0:
mov r8, r0 mov r8, r0
cmp r0, 0x3 cmp r0, 0x3
bls _080E7BB0 bls _080E7BB0
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
str r0, [sp, 0x3C] str r0, [sp, 0x3C]
movs r2, 0 movs r2, 0
mov r8, r2 mov r8, r2
@ -1887,7 +1656,7 @@ _080E8024:
.4byte _080E80EE .4byte _080E80EE
.4byte _080E80FA .4byte _080E80FA
_080E804C: _080E804C:
bl sub_800A064 bl Link_AnyPartnersPlayingRubyOrSapphrie
cmp r0, 0 cmp r0, 0
bne _080E80F2 bne _080E80F2
movs r0, 0x6 movs r0, 0x6

View File

@ -8,5 +8,6 @@
// Exported ROM declarations // Exported ROM declarations
void sub_80B37D4(TaskFunc taskFunc); void sub_80B37D4(TaskFunc taskFunc);
u8 sub_80B3050(void);
#endif //GUARD_CABLE_CLUB_H #endif //GUARD_CABLE_CLUB_H

View File

@ -9,5 +9,6 @@
void pal_fill_black(void); void pal_fill_black(void);
bool8 sub_80ABDFC(void); bool8 sub_80ABDFC(void);
void sub_80AF168(void); void sub_80AF168(void);
void sub_80AF2B4(u8 taskId);
#endif //GUARD_FIELD_SCREEN_H #endif //GUARD_FIELD_SCREEN_H

View File

@ -9,5 +9,7 @@
void sub_80FA5E4(s16 id, s16 x, s16 y); void sub_80FA5E4(s16 id, s16 x, s16 y);
void sub_80FA794(s16 x, s16 y); void sub_80FA794(s16 x, s16 y);
void sub_80FB00C(void);
void sub_80FB074(void);
#endif //GUARD_FLDEFF_80F9BCC_H #endif //GUARD_FLDEFF_80F9BCC_H

View File

@ -192,7 +192,8 @@ void sub_8011BD0(void);
u8 sub_800ABAC(void); u8 sub_800ABAC(void);
u8 sub_800ABBC(void); u8 sub_800ABBC(void);
void sub_800AC34(void); void sub_800AC34(void);
bool32 sub_800A064(void); bool32 Link_AnyPartnersPlayingRubyOrSapphrie(void);
bool32 sub_800A03C(void); bool32 sub_800A03C(void);
void sub_8009628(u8);
#endif // GUARD_LINK_H #endif // GUARD_LINK_H

View File

@ -64,5 +64,6 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void); void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void); void mapldr_default(void);
void sub_808729C(void);
#endif //GUARD_ROM4_H #endif //GUARD_ROM4_H

View File

@ -75,5 +75,6 @@ extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[]; extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[]; extern const u8 gText_RegisteredDataDeleted[];
extern const u8 gUnknown_085EA79D[]; extern const u8 gUnknown_085EA79D[];
extern const u8 gText_RecordMixingComplete[];
#endif //GUARD_STRINGS_H #endif //GUARD_STRINGS_H

View File

@ -1,19 +1,30 @@
// Includes // Includes
#include "global.h" #include "global.h"
#include "malloc.h"
#include "task.h" #include "task.h"
#include "cable_club.h" #include "cable_club.h"
#include "link.h" #include "link.h"
#include "tv.h" #include "tv.h"
#include "battle_tower.h" #include "battle_tower.h"
#include "new_menu_helpers.h"
#include "window.h"
#include "mystery_event_script.h" #include "mystery_event_script.h"
#include "secret_base.h" #include "secret_base.h"
#include "mauville_old_man.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" #include "record_mixing.h"
// Static type declarations // Static type declarations
struct RecordMixingData { struct PlayerRecords {
/* 0x0000 */ struct SecretBaseRecord secretBases[20]; /* 0x0000 */ struct SecretBaseRecord secretBases[20];
/* 0x0c80 */ TVShow tvShows[25]; /* 0x0c80 */ TVShow tvShows[25];
/* 0x1004 */ PokeNews pokeNews[16]; /* 0x1004 */ PokeNews pokeNews[16];
@ -47,18 +58,20 @@ IWRAM_DATA u8 gUnknown_03001160[8];
IWRAM_DATA u32 gUnknown_03001168[3]; IWRAM_DATA u32 gUnknown_03001168[3];
EWRAM_DATA struct DayCareMailRecordMixing gUnknown_02039F9C[2] = {}; EWRAM_DATA struct DayCareMailRecordMixing gUnknown_02039F9C[2] = {};
EWRAM_DATA struct RecordMixingData *gUnknown_0203A014 = NULL; EWRAM_DATA struct PlayerRecords *gUnknown_0203A014 = NULL;
EWRAM_DATA struct RecordMixingData *gUnknown_0203A018 = NULL; EWRAM_DATA struct PlayerRecords *gUnknown_0203A018 = NULL;
// Static ROM declarations // 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_80E78C4(OldMan *, size_t, u8);
void sub_80E7948(void *, size_t, u8); void sub_80E7948(void *, size_t, u8);
void sub_80E7A14(LilycoveLady *, size_t, u8); void sub_80E7A14(LilycoveLady *, size_t, u8);
void sub_80E7B2C(TVShow *); void sub_80E7B2C(TVShow *);
void sub_80E7B60(void *, size_t, u8, TVShow *); void sub_80E7B60(void *, size_t, u8, TVShow *);
void sub_80E7F68(void *, u8); void sub_80E7F68(void *, u8);
void sub_80E7FF8(u8 taskId);
void sub_80E8110(void *, void *); void sub_80E8110(void *, void *);
void sub_80E8468(void *, size_t, u8); void sub_80E8468(void *, size_t, u8);
void sub_80E89AC(void *, size_t, u8); void sub_80E89AC(void *, size_t, u8);
@ -94,7 +107,7 @@ void sub_80E6BF8(void)
gUnknown_03001158 = gSaveBlock2Ptr->field_64C; 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->secretBases, gUnknown_03001134, sizeof(struct SecretBaseRecord) * 20);
memcpy(dest->tvShows, gUnknown_03001138, sizeof(TVShow) * 25); 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); memcpy(dest->secretBases, gUnknown_03001134, sizeof(struct SecretBaseRecord) * 20);
sub_80EB18C(dest->secretBases); sub_80EB18C(dest->secretBases);
@ -135,7 +148,7 @@ void sub_80E6E24(void)
sub_80E9914(); sub_80E9914();
sub_80F0BB8(); sub_80F0BB8();
sub_80E6BF8(); sub_80E6BF8();
if (sub_800A064()) if (Link_AnyPartnersPlayingRubyOrSapphrie())
{ {
if (sub_800A03C() == FALSE) if (sub_800A03C() == FALSE)
{ {
@ -168,7 +181,7 @@ void sub_80E6E24(void)
void sub_80E6F60(u32 a0) void sub_80E6F60(u32 a0)
{ {
if (sub_800A064()) if (Link_AnyPartnersPlayingRubyOrSapphrie())
{ {
// Ruby/Sapphire // Ruby/Sapphire
sub_80E7B2C(gUnknown_0203A014[0].tvShows); sub_80E7B2C(gUnknown_0203A014[0].tvShows);
@ -198,3 +211,88 @@ void sub_80E6F60(u32 a0)
sub_80E89AC(gUnknown_0203A014[0].unk_12dc, 0x1444, 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;
}
}