through sub_815E9FC

This commit is contained in:
scnorton
2019-01-08 10:20:51 -05:00
parent 9c5f01fc8e
commit 7738fcee63
6 changed files with 80 additions and 295 deletions
-241
View File
@@ -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
View File
@@ -1 +1 @@
VMap
VMap
-27
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+52
View File
@@ -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;
}
}