summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-08-29 22:57:04 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-08-29 22:57:04 -0400
commit710346afa3c90682e123ebd981fb8c8ffb30784f (patch)
treeccf37d31fad534e399af87bb9f8cb64fd15d4562
parent36bafa9f9fad1efd7baead651c7f357f6a832023 (diff)
sub_80416A0
-rw-r--r--asm/daycare.s37
-rw-r--r--src/daycare.c33
2 files changed, 21 insertions, 49 deletions
diff --git a/asm/daycare.s b/asm/daycare.s
index a0ea9124a..50f1eee69 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -6,43 +6,6 @@
.text
- thumb_func_start sub_80416A0
-sub_80416A0: @ 80416A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- lsls r0, r4, 2
- mov r8, r0
- add r4, r8
- lsls r4, 4
- adds r4, r5, r4
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x88
- lsls r0, 1
- adds r5, r0
- add r5, r8
- ldr r1, [r5]
- adds r0, r4, 0
- bl Daycare_GetLevelAfterSteps
- lsls r0, 24
- lsrs r0, 24
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80416A0
-
thumb_func_start sub_80416E8
sub_80416E8: @ 80416E8
push {r4-r6,lr}
diff --git a/src/daycare.c b/src/daycare.c
index 2f30c1479..f067ec8ec 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "daycare.h"
#include "pokemon.h"
+#include "event_data.h"
#include "species.h"
#include "items.h"
#include "text.h"
@@ -144,37 +145,35 @@ void sub_804151C(struct Pokemon * mon)
CalculateMonStats(mon);
}
-u16 sub_8041570(struct DayCareData * daycare_data, u8 a2)
+u16 sub_8041570(struct DayCareData * daycare_data, u8 slot)
{
u16 species;
u32 experience;
struct Pokemon pokemon;
- GetBoxMonNick(&daycare_data->mons[a2], gStringVar1);
- species = GetBoxMonData(&daycare_data->mons[a2], MON_DATA_SPECIES);
- sub_803B4B4(&daycare_data->mons[a2], &pokemon);
+ GetBoxMonNick(&daycare_data->mons[slot], gStringVar1);
+ species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES);
+ sub_803B4B4(&daycare_data->mons[slot], &pokemon);
if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
{
- experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[a2];
+ experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->mail.extra.steps[slot];
SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience);
sub_804151C(&pokemon);
}
gPlayerParty[PARTY_SIZE - 1] = pokemon;
- if (daycare_data->mail.data[a2].mail.itemId)
+ if (daycare_data->mail.data[slot].mail.itemId)
{
- GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[a2].mail);
- sub_80417F4(&daycare_data->mail.data[a2].mail);
+ GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->mail.data[slot].mail);
+ sub_80417F4(&daycare_data->mail.data[slot].mail);
}
party_compaction();
- ZeroBoxMonData(&daycare_data->mons[a2]);
- daycare_data->mail.extra.steps[a2] = 0;
+ ZeroBoxMonData(&daycare_data->mons[slot]);
+ daycare_data->mail.extra.steps[slot] = 0;
sub_80414C0(daycare_data);
CalculatePlayerPartyCount();
return species;
}
-extern u8 gSpecialVar_0x8004;
-
u16 sub_8041648()
{
return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
@@ -186,3 +185,13 @@ u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp);
return GetLevelFromBoxMonExp(&temp);
}
+
+u8 sub_80416A0(struct DayCareData *daycareData, u8 slot)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]);
+ levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->mail.extra.steps[slot]);
+ return levelAfter - levelBefore;
+}