sub_8111438

This commit is contained in:
PikalaxALT
2018-10-11 16:13:46 -04:00
parent 1fd187fb57
commit 3310b1445a
3 changed files with 87 additions and 217 deletions
-215
View File
@@ -5,221 +5,6 @@
.text
thumb_func_start sub_8111438
sub_8111438: @ 8111438
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x14
movs r0, 0x68
bl AllocZeroed
mov r9, r0
movs r0, 0
str r0, [sp]
str r0, [sp, 0x4]
str r0, [sp, 0x8]
str r0, [sp, 0xC]
mov r0, r9
movs r1, 0x13
movs r2, 0x1
movs r3, 0x20
bl CreateMon
ldr r0, _081114BC @ =0x00004027
bl VarGet
lsls r0, 16
lsrs r1, r0, 28
mov r6, r9
adds r6, 0x64
strh r1, [r6]
lsls r0, 4
lsrs r0, 20
mov r4, r9
adds r4, 0x66
strh r0, [r4]
bl sub_8111618
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r6]
cmp r5, r0
bls _081114C4
movs r3, 0
subs r0, r5, r0
mov r8, r4
cmp r3, r0
bge _0811150E
_08111492:
movs r0, 0x5
subs r0, r3
movs r1, 0x64
muls r0, r1
ldr r1, _081114C0 @ =gPlayerParty
adds r0, r1
str r3, [sp, 0x10]
bl ZeroMonData
ldr r3, [sp, 0x10]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
mov r0, r9
adds r0, 0x64
ldrh r0, [r0]
subs r0, r5, r0
cmp r3, r0
blt _08111492
b _0811150E
.align 2, 0
_081114BC: .4byte 0x00004027
_081114C0: .4byte gPlayerParty
_081114C4:
mov r8, r4
cmp r5, r0
bcs _0811150E
movs r3, 0
adds r4, r6, 0
_081114CE:
lsls r1, r3, 24
lsrs r1, 24
movs r0, 0
str r3, [sp, 0x10]
bl sub_808BCB4
ldr r3, [sp, 0x10]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0x4
bls _081114CE
adds r3, r5, 0
ldrh r0, [r4]
cmp r3, r0
bcs _0811150E
_081114EE:
movs r0, 0x64
muls r0, r3
ldr r1, _08111574 @ =gPlayerParty
adds r0, r1
mov r1, r9
movs r2, 0x64
str r3, [sp, 0x10]
bl CopyMon
ldr r3, [sp, 0x10]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
ldrh r1, [r4]
cmp r3, r1
bcc _081114EE
_0811150E:
bl sub_811164C
lsls r0, 16
lsrs r5, r0, 16
mov r1, r8
ldrh r0, [r1]
cmp r5, r0
bls _08111578
movs r3, 0
_08111520:
movs r6, 0
lsls r7, r3, 24
lsrs r7, 24
_08111526:
lsls r0, r6, 24
lsrs r4, r0, 24
adds r0, r7, 0
adds r1, r4, 0
movs r2, 0x5
str r3, [sp, 0x10]
bl GetBoxMonDataFromAnyBox
ldr r3, [sp, 0x10]
cmp r0, 0
beq _08111554
adds r0, r7, 0
adds r1, r4, 0
bl sub_808BCB4
subs r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
ldr r3, [sp, 0x10]
mov r0, r8
ldrh r0, [r0]
cmp r5, r0
beq _081115D2
_08111554:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x1D
bls _08111526
mov r1, r8
ldrh r1, [r1]
cmp r5, r1
beq _081115D2
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0xD
bls _08111520
b _081115D2
.align 2, 0
_08111574: .4byte gPlayerParty
_08111578:
cmp r5, r0
bcs _081115D2
movs r3, 0
_0811157E:
movs r6, 0
lsls r7, r3, 24
_08111582:
lsls r1, r6, 24
lsrs r1, 24
lsrs r0, r7, 24
str r3, [sp, 0x10]
bl GetBoxedMonPtr
adds r4, r0, 0
movs r1, 0x5
bl GetBoxMonData
ldr r3, [sp, 0x10]
cmp r0, 0
bne _081115B6
adds r0, r4, 0
mov r1, r9
movs r2, 0x50
bl CopyMon
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
ldr r3, [sp, 0x10]
mov r0, r8
ldrh r0, [r0]
cmp r5, r0
beq _081115D2
_081115B6:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x1D
bls _08111582
mov r1, r8
ldrh r1, [r1]
cmp r5, r1
beq _081115D2
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
cmp r3, 0xD
bls _0811157E
_081115D2:
mov r0, r9
bl Free
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8111438
thumb_func_start sub_81115E8
sub_81115E8: @ 81115E8
push {r4,lr}
+3 -2
View File
@@ -5,9 +5,10 @@
#define IN_BOX_COUNT 30
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick);
void CompactPartySlots(void);
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
+84
View File
@@ -1,4 +1,6 @@
#include "global.h"
#include "constants/species.h"
#include "malloc.h"
#include "main.h"
#include "task.h"
#include "palette.h"
@@ -14,6 +16,7 @@
#include "wild_encounter.h"
#include "help_system.h"
#include "unk_8159F40.h"
#include "pokemon_storage_system.h"
#include "quest_log.h"
u8 gUnknown_3005E88;
@@ -58,6 +61,8 @@ void sub_8110F90(u8);
void sub_8111150(u8);
void sub_8111368(void);
void sub_81115E8(void);
u16 sub_8111618(void);
u16 sub_811164C(void);
void sub_8111688(void);
void sub_811175C(u8, struct UnkStruct_203AE98 *);
void sub_81118F4(s8);
@@ -676,3 +681,82 @@ void sub_81113E4(void)
CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16));
sub_8111688();
}
struct PokemonAndSomethingElse
{
struct Pokemon mon;
u16 unk_64;
u16 unk_66;
};
void sub_8111438(void)
{
struct PokemonAndSomethingElse *r9 = AllocZeroed(sizeof(struct PokemonAndSomethingElse));
u16 r0, r3, r5, r6;
CreateMon(&r9->mon, SPECIES_RATTATA, 1, 0x20, FALSE, 0, 0, 0);
r0 = VarGet(VAR_0x4027);
r9->unk_64 = r0 >> 12;
r9->unk_66 = r0 % 0x1000;
r5 = sub_8111618();
if (r5 > r9->unk_64)
{
for (r3 = 0; r3 < r5 - r9->unk_64; r3++)
{
ZeroMonData(&gPlayerParty[5 - r3]);
}
}
else if (r5 < r9->unk_64)
{
for (r3 = 0; r3 < 5; r3++)
{
sub_808BCB4(0, r3);
}
for (r3 = r5; r3 < r9->unk_64; r3++)
{
CopyMon(&gPlayerParty[r3], &r9->mon, sizeof(struct Pokemon));
}
}
r5 = sub_811164C();
if (r5 > r9->unk_66)
{
for (r3 = 0; r3 < 14; r3++)
{
for (r6 = 0; r6 < 30; r6++)
{
if (GetBoxMonDataFromAnyBox(r3, r6, MON_DATA_SANITY_BIT2))
{
sub_808BCB4(r3, r6);
r5--;
if (r5 == r9->unk_66)
break;
}
}
if (r5 == r9->unk_66)
break;
}
}
else if (r5 < r9->unk_66)
{
for (r3 = 0; r3 < 14; r3++)
{
for (r6 = 0; r6 < 30; r6++)
{
struct BoxPokemon * boxMon = GetBoxedMonPtr(r3, r6);
if (!GetBoxMonData(boxMon, MON_DATA_SANITY_BIT2))
{
CopyMon(boxMon, &r9->mon.box, sizeof(struct BoxPokemon));
r5++;
if (r5 == r9->unk_66)
break;
}
}
if (r5 == r9->unk_66)
break;
}
}
Free(r9);
}