sub_8111438
This commit is contained in:
-215
@@ -5,221 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_81115E8
|
||||||
sub_81115E8: @ 81115E8
|
sub_81115E8: @ 81115E8
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
#define IN_BOX_COUNT 30
|
#define IN_BOX_COUNT 30
|
||||||
|
|
||||||
u8* GetBoxNamePtr(u8 boxNumber);
|
u8* GetBoxNamePtr(u8 boxNumber);
|
||||||
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
|
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
|
||||||
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
|
void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick);
|
||||||
void CompactPartySlots(void);
|
void CompactPartySlots(void);
|
||||||
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
|
u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
|
||||||
|
void sub_808BCB4(u8 boxId, u8 monPosition);
|
||||||
|
|
||||||
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
|
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "constants/species.h"
|
||||||
|
#include "malloc.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
#include "wild_encounter.h"
|
#include "wild_encounter.h"
|
||||||
#include "help_system.h"
|
#include "help_system.h"
|
||||||
#include "unk_8159F40.h"
|
#include "unk_8159F40.h"
|
||||||
|
#include "pokemon_storage_system.h"
|
||||||
#include "quest_log.h"
|
#include "quest_log.h"
|
||||||
|
|
||||||
u8 gUnknown_3005E88;
|
u8 gUnknown_3005E88;
|
||||||
@@ -58,6 +61,8 @@ void sub_8110F90(u8);
|
|||||||
void sub_8111150(u8);
|
void sub_8111150(u8);
|
||||||
void sub_8111368(void);
|
void sub_8111368(void);
|
||||||
void sub_81115E8(void);
|
void sub_81115E8(void);
|
||||||
|
u16 sub_8111618(void);
|
||||||
|
u16 sub_811164C(void);
|
||||||
void sub_8111688(void);
|
void sub_8111688(void);
|
||||||
void sub_811175C(u8, struct UnkStruct_203AE98 *);
|
void sub_811175C(u8, struct UnkStruct_203AE98 *);
|
||||||
void sub_81118F4(s8);
|
void sub_81118F4(s8);
|
||||||
@@ -676,3 +681,82 @@ void sub_81113E4(void)
|
|||||||
CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16));
|
CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16));
|
||||||
sub_8111688();
|
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);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user