through sub_815E9FC
This commit is contained in:
@@ -5,247 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_815E9C8
|
||||
sub_815E9C8: @ 815E9C8
|
||||
ldr r3, _0815E9EC @ =gSpecialVar_Result
|
||||
ldr r0, _0815E9F0 @ =gSaveBlock1Ptr
|
||||
ldr r1, [r0]
|
||||
ldr r2, _0815E9F4 @ =0x00003d34
|
||||
adds r0, r1, r2
|
||||
ldr r2, [r0]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r1, r0
|
||||
ldr r0, _0815E9F8 @ =0x00003d42
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
lsls r0, 29
|
||||
lsrs r0, 31
|
||||
strh r0, [r3]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0815E9EC: .4byte gSpecialVar_Result
|
||||
_0815E9F0: .4byte gSaveBlock1Ptr
|
||||
_0815E9F4: .4byte 0x00003d34
|
||||
_0815E9F8: .4byte 0x00003d42
|
||||
thumb_func_end sub_815E9C8
|
||||
|
||||
thumb_func_start sub_815E9FC
|
||||
sub_815E9FC: @ 815E9FC
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
ldr r0, _0815EABC @ =0x00004001
|
||||
bl VarGet
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
bl sub_815EBB8
|
||||
mov r9, r0
|
||||
ldr r0, _0815EAC0 @ =gSaveBlock1Ptr
|
||||
ldr r1, [r0]
|
||||
ldr r2, _0815EAC4 @ =0x00003d34
|
||||
adds r0, r1, r2
|
||||
ldr r2, [r0]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r1, r0
|
||||
movs r0, 0xF5
|
||||
lsls r0, 6
|
||||
adds r1, r0
|
||||
ldrb r5, [r1]
|
||||
bl ZeroEnemyPartyMons
|
||||
ldr r1, _0815EAC8 @ =gUnknown_203F458
|
||||
mov r10, r1
|
||||
ldr r6, [r1]
|
||||
ldrb r1, [r6]
|
||||
lsls r0, r1, 5
|
||||
subs r0, r1
|
||||
lsls r7, r0, 5
|
||||
adds r0, r6, r7
|
||||
ldrb r0, [r0, 0xE]
|
||||
cmp r0, 0x1
|
||||
beq _0815EAD4
|
||||
cmp r0, 0x1
|
||||
ble _0815EA56
|
||||
cmp r0, 0x2
|
||||
bne _0815EA56
|
||||
b _0815EB58
|
||||
_0815EA56:
|
||||
movs r6, 0
|
||||
lsls r5, 1
|
||||
str r5, [sp]
|
||||
lsls r0, r4, 2
|
||||
mov r5, r10
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r0, r4
|
||||
lsls r7, r0, 3
|
||||
adds r2, r7, 0x4
|
||||
mov r8, r2
|
||||
_0815EA6C:
|
||||
ldr r1, _0815EACC @ =gUnknown_847A2EE
|
||||
ldr r2, [sp]
|
||||
adds r0, r6, r2
|
||||
adds r0, r1
|
||||
ldrb r2, [r0]
|
||||
ldr r3, [r5]
|
||||
movs r0, 0x2C
|
||||
adds r4, r2, 0
|
||||
muls r4, r0
|
||||
adds r2, r4, r7
|
||||
ldrb r1, [r3]
|
||||
lsls r0, r1, 5
|
||||
subs r0, r1
|
||||
lsls r0, 5
|
||||
adds r2, r0
|
||||
adds r3, r2
|
||||
adds r3, 0x5C
|
||||
mov r0, r9
|
||||
strb r0, [r3]
|
||||
movs r0, 0x64
|
||||
muls r0, r6
|
||||
ldr r1, _0815EAD0 @ =gEnemyParty
|
||||
adds r0, r1
|
||||
ldr r1, [r5]
|
||||
ldrb r3, [r1]
|
||||
lsls r2, r3, 5
|
||||
subs r2, r3
|
||||
lsls r2, 5
|
||||
adds r2, 0xC
|
||||
adds r1, r2
|
||||
add r1, r8
|
||||
adds r4, 0x40
|
||||
adds r1, r4
|
||||
bl sub_803E0A4
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x1
|
||||
ble _0815EA6C
|
||||
b _0815EB9E
|
||||
.align 2, 0
|
||||
_0815EABC: .4byte 0x00004001
|
||||
_0815EAC0: .4byte gSaveBlock1Ptr
|
||||
_0815EAC4: .4byte 0x00003d34
|
||||
_0815EAC8: .4byte gUnknown_203F458
|
||||
_0815EACC: .4byte gUnknown_847A2EE
|
||||
_0815EAD0: .4byte gEnemyParty
|
||||
_0815EAD4:
|
||||
ldr r4, _0815EB50 @ =gUnknown_847A2FE
|
||||
lsls r5, 1
|
||||
adds r0, r5, r4
|
||||
ldrb r2, [r0]
|
||||
movs r1, 0x2C
|
||||
mov r8, r1
|
||||
mov r3, r8
|
||||
muls r3, r2
|
||||
adds r0, r3, r7
|
||||
adds r0, r6, r0
|
||||
adds r0, 0x5C
|
||||
mov r2, r9
|
||||
strb r2, [r0]
|
||||
ldr r6, _0815EB54 @ =gEnemyParty
|
||||
mov r0, r10
|
||||
ldr r1, [r0]
|
||||
ldrb r2, [r1]
|
||||
lsls r0, r2, 5
|
||||
subs r0, r2
|
||||
lsls r0, 5
|
||||
adds r0, 0xC
|
||||
adds r1, r0
|
||||
adds r3, 0x44
|
||||
adds r1, r3
|
||||
adds r0, r6, 0
|
||||
bl sub_803E0A4
|
||||
adds r4, 0x1
|
||||
adds r5, r4
|
||||
ldrb r2, [r5]
|
||||
mov r0, r10
|
||||
ldr r1, [r0]
|
||||
mov r3, r8
|
||||
muls r3, r2
|
||||
ldrb r2, [r1]
|
||||
lsls r0, r2, 5
|
||||
subs r0, r2
|
||||
lsls r0, 5
|
||||
adds r0, r3, r0
|
||||
adds r1, r0
|
||||
movs r2, 0xD2
|
||||
lsls r2, 1
|
||||
adds r1, r2
|
||||
mov r0, r9
|
||||
strb r0, [r1]
|
||||
adds r6, 0x64
|
||||
mov r2, r10
|
||||
ldr r1, [r2]
|
||||
ldrb r2, [r1]
|
||||
lsls r0, r2, 5
|
||||
subs r0, r2
|
||||
lsls r0, 5
|
||||
adds r0, 0xC
|
||||
adds r1, r0
|
||||
movs r0, 0xC6
|
||||
lsls r0, 1
|
||||
adds r3, r0
|
||||
adds r1, r3
|
||||
adds r0, r6, 0
|
||||
bl sub_803E0A4
|
||||
b _0815EB9E
|
||||
.align 2, 0
|
||||
_0815EB50: .4byte gUnknown_847A2FE
|
||||
_0815EB54: .4byte gEnemyParty
|
||||
_0815EB58:
|
||||
ldr r1, _0815EBB0 @ =gUnknown_847A30E
|
||||
lsls r0, r5, 1
|
||||
adds r0, r5
|
||||
adds r0, r4, r0
|
||||
adds r0, r1
|
||||
ldrb r2, [r0]
|
||||
movs r0, 0x2C
|
||||
adds r5, r2, 0
|
||||
muls r5, r0
|
||||
lsls r3, r4, 2
|
||||
adds r3, r4
|
||||
lsls r3, 3
|
||||
adds r3, r4
|
||||
lsls r3, 3
|
||||
adds r0, r5, r3
|
||||
adds r0, r7
|
||||
adds r0, r6, r0
|
||||
adds r0, 0x5C
|
||||
mov r1, r9
|
||||
strb r1, [r0]
|
||||
ldr r0, _0815EBB4 @ =gEnemyParty
|
||||
mov r2, r10
|
||||
ldr r1, [r2]
|
||||
ldrb r4, [r1]
|
||||
lsls r2, r4, 5
|
||||
subs r2, r4
|
||||
lsls r2, 5
|
||||
adds r2, 0xC
|
||||
adds r1, r2
|
||||
adds r3, 0x4
|
||||
adds r1, r3
|
||||
adds r5, 0x40
|
||||
adds r1, r5
|
||||
bl sub_803E0A4
|
||||
_0815EB9E:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0815EBB0: .4byte gUnknown_847A30E
|
||||
_0815EBB4: .4byte gEnemyParty
|
||||
thumb_func_end sub_815E9FC
|
||||
|
||||
thumb_func_start sub_815EBB8
|
||||
sub_815EBB8: @ 815EBB8
|
||||
push {r4-r6,lr}
|
||||
|
||||
@@ -1 +1 @@
|
||||
VMap
|
||||
VMap
|
||||
|
||||
@@ -241,33 +241,6 @@ struct LinkBattleRecords
|
||||
u8 languages[LINK_B_RECORDS_COUNT];
|
||||
};
|
||||
|
||||
struct BattleTowerPokemon
|
||||
{
|
||||
u16 species;
|
||||
u16 heldItem;
|
||||
u16 moves[4];
|
||||
u8 level;
|
||||
u8 ppBonuses;
|
||||
u8 hpEV;
|
||||
u8 attackEV;
|
||||
u8 defenseEV;
|
||||
u8 speedEV;
|
||||
u8 spAttackEV;
|
||||
u8 spDefenseEV;
|
||||
u32 otId;
|
||||
u32 hpIV:5;
|
||||
u32 attackIV:5;
|
||||
u32 defenseIV:5;
|
||||
u32 speedIV:5;
|
||||
u32 spAttackIV:5;
|
||||
u32 spDefenseIV:5;
|
||||
u32 gap:1;
|
||||
u32 altAbility:1;
|
||||
u32 personality;
|
||||
u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
u8 friendship;
|
||||
};
|
||||
|
||||
struct UnknownSaveBlock2Struct
|
||||
{
|
||||
u8 field_0;
|
||||
|
||||
+25
-24
@@ -310,31 +310,31 @@ struct PokemonStorage
|
||||
/*0x83C2*/ u8 boxWallpapers[14];
|
||||
};
|
||||
|
||||
struct UnknownPokemonStruct
|
||||
struct BattleTowerPokemon
|
||||
{
|
||||
u16 species;
|
||||
u16 heldItem;
|
||||
u16 moves[4];
|
||||
u8 level;
|
||||
u8 ppBonuses;
|
||||
u8 hpEV;
|
||||
u8 attackEV;
|
||||
u8 defenseEV;
|
||||
u8 speedEV;
|
||||
u8 spAttackEV;
|
||||
u8 spDefenseEV;
|
||||
u32 otId;
|
||||
u32 hpIV:5;
|
||||
u32 attackIV:5;
|
||||
u32 defenseIV:5;
|
||||
u32 speedIV:5;
|
||||
u32 spAttackIV:5;
|
||||
u32 spDefenseIV:5;
|
||||
u32 gap:1;
|
||||
u32 altAbility:1;
|
||||
u32 personality;
|
||||
u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
u8 friendship;
|
||||
/*0x00*/ u16 species;
|
||||
/*0x02*/ u16 heldItem;
|
||||
/*0x04*/ u16 moves[4];
|
||||
/*0x0C*/ u8 level;
|
||||
/*0x0D*/ u8 ppBonuses;
|
||||
/*0x0E*/ u8 hpEV;
|
||||
/*0x0F*/ u8 attackEV;
|
||||
/*0x10*/ u8 defenseEV;
|
||||
/*0x11*/ u8 speedEV;
|
||||
/*0x12*/ u8 spAttackEV;
|
||||
/*0x13*/ u8 spDefenseEV;
|
||||
/*0x14*/ u32 otId;
|
||||
/*0x18*/ u32 hpIV:5;
|
||||
u32 attackIV:5;
|
||||
u32 defenseIV:5;
|
||||
u32 speedIV:5;
|
||||
u32 spAttackIV:5;
|
||||
u32 spDefenseIV:5;
|
||||
u32 gap:1;
|
||||
u32 altAbility:1;
|
||||
/*0x1C*/ u32 personality;
|
||||
/*0x20*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||||
/*0x2B*/ u8 friendship;
|
||||
};
|
||||
|
||||
#define BATTLE_STATS_NO 8
|
||||
@@ -672,5 +672,6 @@ void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
|
||||
|
||||
void PlayMapChosenOrBattleBGM(u16 songId);
|
||||
u8 GetMonsStateToDoubles(void);
|
||||
void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src);
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
||||
+2
-2
@@ -351,7 +351,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
|
||||
CalculateMonStats(mon);
|
||||
}
|
||||
|
||||
void sub_803E0A4(struct Pokemon *mon, struct UnknownPokemonStruct *src)
|
||||
void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src)
|
||||
{
|
||||
s32 i;
|
||||
u8 value;
|
||||
@@ -410,7 +410,7 @@ void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u
|
||||
SetMonData(mon, MON_DATA_OBEDIENCE, &obedient);
|
||||
}
|
||||
|
||||
void sub_803E23C(struct Pokemon *mon, struct UnknownPokemonStruct *dest)
|
||||
void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest)
|
||||
{
|
||||
s32 i;
|
||||
u16 heldItem;
|
||||
|
||||
@@ -139,6 +139,7 @@ void sub_815E908(void);
|
||||
void sub_815E948(void);
|
||||
void sub_815E9C8(void);
|
||||
void sub_815E9FC(void);
|
||||
s32 sub_815EBB8(void);
|
||||
void sub_815EC0C(void);
|
||||
u32 sub_815EDDC(u32 *);
|
||||
void sub_815EDF4(u32 *, u32);
|
||||
@@ -158,6 +159,9 @@ extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8];
|
||||
extern const u16 gUnknown_847A284[8][3];
|
||||
extern const u16 gUnknown_847A2B4[];
|
||||
extern const u16 gUnknown_847A2D2[];
|
||||
extern const u8 gUnknown_847A2EE[][2];
|
||||
extern const u8 gUnknown_847A2FE[][2];
|
||||
extern const u8 gUnknown_847A30E[][3];
|
||||
|
||||
bool32 sub_815D7BC(void * dest, void * buffer)
|
||||
{
|
||||
@@ -1005,3 +1009,51 @@ void sub_815E948(void)
|
||||
}
|
||||
PlayNewMapMusic(gUnknown_847A2D2[var_4001]);
|
||||
}
|
||||
|
||||
void sub_815E9C8(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2;
|
||||
}
|
||||
|
||||
void sub_815E9FC(void)
|
||||
{
|
||||
u16 r4 = VarGet(VAR_0x4001);
|
||||
s32 r9 = sub_815EBB8();
|
||||
u8 r5 = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8;
|
||||
s32 r6;
|
||||
u8 r2;
|
||||
|
||||
ZeroEnemyPartyMons();
|
||||
|
||||
switch (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
for (r6 = 0; r6 < 2; r6++)
|
||||
/*
|
||||
* sp+0 := r5 * 2
|
||||
* r5 := gUnknown_203F458
|
||||
* r7 := r4 * 72
|
||||
* r8 := r7 + 4
|
||||
*/
|
||||
{
|
||||
r2 = gUnknown_847A2EE[r5][r6];
|
||||
gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
|
||||
sub_803E0A4(&gEnemyParty[r6], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
r2 = gUnknown_847A2FE[r5][0];
|
||||
gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2].level = r9;
|
||||
sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_040[r2]);
|
||||
r2 = gUnknown_847A2FE[r5][1];
|
||||
gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2].level = r9;
|
||||
sub_803E0A4(&gEnemyParty[1], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[1].unk_040[r2]);
|
||||
break;
|
||||
case 2:
|
||||
r2 = gUnknown_847A30E[r5][r4];
|
||||
gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2].level = r9;
|
||||
sub_803E0A4(&gEnemyParty[0], &gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_040[r2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user