sub_8111438
This commit is contained in:
-215
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user