DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords

This commit is contained in:
PikalaxALT
2017-10-27 20:57:46 -04:00
parent d60ae05cbb
commit 5aaa4c099b
2 changed files with 52 additions and 105 deletions
+6 -100
View File
@@ -5,100 +5,6 @@
.text .text
thumb_func_start sub_80EAC5C
sub_80EAC5C: @ 80EAC5C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r10, r0
mov r9, r1
mov r8, r2
movs r5, 0
movs r6, 0
_080EAC70:
movs r0, 0x1
ands r0, r5
cmp r0, 0
bne _080EAC9A
lsls r0, r6, 2
adds r0, r6
lsls r0, 5
mov r1, r10
adds r4, r1, r0
adds r0, r4, 0
bl sub_80EABDC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080EAC9A
adds r0, r4, 0
bl sub_80E8AF0
movs r0, 0x1
orrs r5, r0
_080EAC9A:
movs r7, 0x2
movs r0, 0x2
ands r0, r5
cmp r0, 0
bne _080EACC8
lsls r0, r6, 2
adds r0, r6
lsls r0, 5
mov r1, r9
adds r4, r1, r0
adds r0, r4, 0
bl sub_80EABDC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080EACC8
adds r0, r4, 0
bl sub_80E8AF0
orrs r5, r7
lsls r0, r5, 24
lsrs r5, r0, 24
_080EACC8:
movs r7, 0x4
movs r0, 0x4
ands r0, r5
cmp r0, 0
bne _080EACF6
lsls r0, r6, 2
adds r0, r6
lsls r0, 5
mov r1, r8
adds r4, r1, r0
adds r0, r4, 0
bl sub_80EABDC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080EACF6
adds r0, r4, 0
bl sub_80E8AF0
orrs r5, r7
lsls r0, r5, 24
lsrs r5, r0, 24
_080EACF6:
cmp r5, 0x7
beq _080EAD04
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x13
bls _080EAC70
_080EAD04:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80EAC5C
thumb_func_start sub_80EAD14 thumb_func_start sub_80EAD14
sub_80EAD14: @ 80EAD14 sub_80EAD14: @ 80EAD14
push {r4-r7,lr} push {r4-r7,lr}
@@ -128,7 +34,7 @@ _080EAD24:
cmp r7, 0 cmp r7, 0
bne _080EAD50 bne _080EAD50
adds r0, r4, 0 adds r0, r4, 0
bl sub_80E8AF0 bl ClearSecretBase
b _080EAD88 b _080EAD88
_080EAD50: _080EAD50:
ldrh r0, [r6, 0xE] ldrh r0, [r6, 0xE]
@@ -136,7 +42,7 @@ _080EAD50:
cmp r0, r3 cmp r0, r3
bls _080EAD60 bls _080EAD60
adds r0, r4, 0 adds r0, r4, 0
bl sub_80E8AF0 bl ClearSecretBase
b _080EAD88 b _080EAD88
_080EAD60: _080EAD60:
ldrb r0, [r6, 0x1] ldrb r0, [r6, 0x1]
@@ -150,7 +56,7 @@ _080EAD60:
orrs r1, r0 orrs r1, r0
strb r1, [r4, 0x1] strb r1, [r4, 0x1]
adds r0, r6, 0 adds r0, r6, 0
bl sub_80E8AF0 bl ClearSecretBase
movs r0, 0x1 movs r0, 0x1
b _080EAD8A b _080EAD8A
_080EAD7E: _080EAD7E:
@@ -314,7 +220,7 @@ sub_80EAE90: @ 80EAE90
adds r1, r3, 0 adds r1, r3, 0
bl sub_80EAA64 bl sub_80EAA64
adds r0, r4, 0 adds r0, r4, 0
bl sub_80E8AF0 bl ClearSecretBase
_080EAEAE: _080EAEAE:
pop {r4} pop {r4}
pop {r0} pop {r0}
@@ -362,7 +268,7 @@ sub_80EAEF4: @ 80EAEF4
ldr r0, [r4] ldr r0, [r4]
ldr r1, [r4, 0xC] ldr r1, [r4, 0xC]
ldr r2, [r4, 0x18] ldr r2, [r4, 0x18]
bl sub_80EAC5C bl DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords
ldr r0, =gSaveBlock1Ptr ldr r0, =gSaveBlock1Ptr
ldr r0, [r0] ldr r0, [r0]
ldr r1, =0x00001a9c ldr r1, =0x00001a9c
@@ -683,7 +589,7 @@ _080EB192:
cmp r0, 0x1 cmp r0, 0x1
bne _080EB19E bne _080EB19E
adds r0, r4, 0 adds r0, r4, 0
bl sub_80E8AF0 bl ClearSecretBase
_080EB19E: _080EB19E:
adds r4, 0xA0 adds r4, 0xA0
adds r5, 0x1 adds r5, 0x1
+46 -5
View File
@@ -79,7 +79,7 @@ extern const struct YesNoFuncTable gUnknown_0858D058;
// .text // .text
void sub_80E8AF0(struct SecretBaseRecord *sbr) void ClearSecretBase(struct SecretBaseRecord *sbr)
{ {
u16 i; u16 i;
@@ -96,7 +96,7 @@ void ResetSecretBases(void)
for (i = 0; i < 20; i ++) for (i = 0; i < 20; i ++)
{ {
sub_80E8AF0(&gSaveBlock1Ptr->secretBases[i]); ClearSecretBase(&gSaveBlock1Ptr->secretBases[i]);
} }
} }
@@ -881,7 +881,7 @@ void sub_80E9A90(void)
u16 sbr_e; u16 sbr_e;
sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e;
sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]);
gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e;
sub_80E9728(); sub_80E9728();
} }
@@ -926,7 +926,7 @@ void sub_80E9B70(void)
sub_80E9AD0(); sub_80E9AD0();
IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE);
sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e;
sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]);
gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e;
} }
@@ -1613,7 +1613,7 @@ void sub_80EABA4(u32 *args, u8 b)
} }
} }
bool8 sub_80EABDC(struct SecretBaseRecord *secretBase) bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase)
{ {
u8 i; u8 i;
@@ -1638,3 +1638,44 @@ bool8 sub_80EABDC(struct SecretBaseRecord *secretBase)
return TRUE; return TRUE;
} }
void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC)
{
u8 i;
u8 sbFlags = 0x0;
for (i = 0; i < 20; i++)
{
if (!(sbFlags & 0x1)) // 001
{
if (DoesSecretBaseBelongToPlayer(&basesA[i]) == TRUE)
{
ClearSecretBase(&basesA[i]);
sbFlags |= 1;
}
}
if (!(sbFlags & 0x2)) // 010
{
if (DoesSecretBaseBelongToPlayer(&basesB[i]) == TRUE)
{
ClearSecretBase(&basesB[i]);
sbFlags |= 2;
}
}
if (!(sbFlags & 0x4)) // 100
{
if (DoesSecretBaseBelongToPlayer(&basesC[i]) == TRUE)
{
ClearSecretBase(&basesC[i]);
sbFlags |= 4;
}
}
if (sbFlags == 0x7) // 111
{
break;
}
}
}