mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 04:47:58 -05:00
Match sub_808E9EC
This commit is contained in:
210
src/pokemon_3.c
210
src/pokemon_3.c
@@ -23,24 +23,12 @@ extern u8 *gTacticsDescriptions[];
|
||||
extern u8 *gTactics[];
|
||||
extern u32 gIQSkillGroups[];
|
||||
|
||||
struct unkStruct_808E9EC
|
||||
{
|
||||
u32 unk0;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
u32 unkC;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
};
|
||||
|
||||
extern SpriteOAM gShadowSprites[3]; // Shadow sprites of some kind
|
||||
extern s16 gUnknown_810AC60; // 0xC
|
||||
extern s16 gUnknown_810AC62; // 0xC
|
||||
extern s16 gUnknown_810AC68; // 0x8
|
||||
extern s16 gUnknown_810AC64; // 0x8
|
||||
extern s16 gUnknown_810AC66; // 0x8
|
||||
extern const s16 gUnknown_810AC60; // 0xC
|
||||
extern const s16 gUnknown_810AC62; // 0xC
|
||||
extern const s16 gUnknown_810AC68; // 0x8
|
||||
extern const s16 gUnknown_810AC64; // 0x8
|
||||
extern const s16 gUnknown_810AC66; // 0x8
|
||||
extern u8 *gUnknown_810DD58[];
|
||||
extern u8 *gEvolutionStrings[];
|
||||
extern u8 *gExpPts810DD9C_Ptr[];
|
||||
@@ -310,166 +298,52 @@ s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0)
|
||||
return (r0->unk0 >> 9);
|
||||
}
|
||||
|
||||
// Unused
|
||||
#ifdef NONMATCHING
|
||||
void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1)
|
||||
struct UnusedOffenseStruct
|
||||
{
|
||||
u8 pokeAtt;
|
||||
u8 r4;
|
||||
u32 reg1_8;
|
||||
s16 reg1;
|
||||
s32 att[2];
|
||||
s32 def[2];
|
||||
u8 atkBoost;
|
||||
u8 spAtkBoost;
|
||||
u8 defBoost;
|
||||
u8 spDefBoost;
|
||||
};
|
||||
|
||||
pokeAtt = r0->offense.att[0];
|
||||
|
||||
r1->unk0 = pokeAtt;
|
||||
r1->unk4 = r0->offense.att[1];
|
||||
r1->unk8 = r0->offense.def[0];
|
||||
r1->unkC = r0->offense.def[1];
|
||||
r1->unk10 = 0;
|
||||
r1->unk11 = 0;
|
||||
r1->unk12 = 0;
|
||||
r1->unk13 = 0;
|
||||
if(r0->heldItem.id != 0)
|
||||
{
|
||||
r4 = r0->heldItem.id;
|
||||
if(r4 == 0x13)
|
||||
{
|
||||
r1->unk10 = gUnknown_810AC60;
|
||||
r1->unk0 = pokeAtt + gUnknown_810AC60;
|
||||
UNUSED static void GetMonOffenseStats(PokemonStruct1 *mon, struct UnusedOffenseStruct *dst)
|
||||
{
|
||||
dst->att[0] = mon->offense.att[0];
|
||||
dst->att[1] = mon->offense.att[1];
|
||||
dst->def[0] = mon->offense.def[0];
|
||||
dst->def[1] = mon->offense.def[1];
|
||||
dst->atkBoost = 0;
|
||||
dst->spAtkBoost = 0;
|
||||
dst->defBoost = 0;
|
||||
dst->spDefBoost = 0;
|
||||
if (mon->heldItem.id != ITEM_NOTHING) {
|
||||
u16 itemId = mon->heldItem.id;
|
||||
if (itemId == ITEM_POWER_BAND) {
|
||||
dst->atkBoost += gUnknown_810AC60;
|
||||
dst->att[0] += gUnknown_810AC60;
|
||||
}
|
||||
if(r4 == 0x21)
|
||||
{
|
||||
r1->unk11 += gUnknown_810AC62;
|
||||
r1->unk4 += gUnknown_810AC62;
|
||||
if (itemId == ITEM_SPECIAL_BAND) {
|
||||
dst->spAtkBoost += gUnknown_810AC62;
|
||||
dst->att[1] += gUnknown_810AC62;
|
||||
}
|
||||
if(r4 == 0x2B)
|
||||
{
|
||||
// TODO: regs get a little f**ked
|
||||
reg1_8 = (u8)gUnknown_810AC68;
|
||||
r1->unk10 += reg1_8;
|
||||
r1->unk11 += reg1_8;
|
||||
|
||||
reg1 = gUnknown_810AC68;
|
||||
r1->unk0 += reg1;
|
||||
r1->unk4 += reg1;
|
||||
if (itemId == ITEM_MUNCH_BELT) {
|
||||
dst->atkBoost += gUnknown_810AC68;
|
||||
dst->spAtkBoost += gUnknown_810AC68;
|
||||
dst->att[0] += gUnknown_810AC68;
|
||||
dst->att[1] += gUnknown_810AC68;
|
||||
}
|
||||
if(r4 == 0x1E)
|
||||
{
|
||||
r1->unk12 += gUnknown_810AC64;
|
||||
r1->unk8 += gUnknown_810AC64;
|
||||
if (itemId == ITEM_DEF_SCARF) {
|
||||
dst->defBoost += gUnknown_810AC64;
|
||||
dst->def[0] += gUnknown_810AC64;
|
||||
}
|
||||
if(r4 == 0x22)
|
||||
{
|
||||
r1->unk13 += gUnknown_810AC66;
|
||||
r1->unkC += gUnknown_810AC66;
|
||||
if (itemId == ITEM_ZINC_BAND) {
|
||||
dst->spDefBoost += gUnknown_810AC66;
|
||||
dst->def[1] += gUnknown_810AC66;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1)
|
||||
{
|
||||
asm_unified("\tpush {r4-r6,lr}\n"
|
||||
"\tadds r3, r1, 0\n"
|
||||
"\tldrb r2, [r0, 0x18]\n"
|
||||
"\tstr r2, [r3]\n"
|
||||
"\tldrb r1, [r0, 0x19]\n"
|
||||
"\tstr r1, [r3, 0x4]\n"
|
||||
"\tldrb r1, [r0, 0x1A]\n"
|
||||
"\tstr r1, [r3, 0x8]\n"
|
||||
"\tldrb r1, [r0, 0x1B]\n"
|
||||
"\tstr r1, [r3, 0xC]\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tstrb r1, [r3, 0x10]\n"
|
||||
"\tstrb r1, [r3, 0x11]\n"
|
||||
"\tstrb r1, [r3, 0x12]\n"
|
||||
"\tstrb r1, [r3, 0x13]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x28\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0808EA96\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tadds r5, r4, 0\n"
|
||||
"\tcmp r4, 0x13\n"
|
||||
"\tbne _0808EA2A\n"
|
||||
"\tldr r1, _0808EA9C\n"
|
||||
"\tldrh r0, [r1]\n"
|
||||
"\tstrb r0, [r3, 0x10]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldrsh r0, [r1, r6]\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tstr r0, [r3]\n"
|
||||
"_0808EA2A:\n"
|
||||
"\tcmp r4, 0x21\n"
|
||||
"\tbne _0808EA42\n"
|
||||
"\tldr r1, _0808EAA0\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tldrb r2, [r3, 0x11]\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrb r0, [r3, 0x11]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldrsh r1, [r1, r6]\n"
|
||||
"\tldr r0, [r3, 0x4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [r3, 0x4]\n"
|
||||
"_0808EA42:\n"
|
||||
"\tcmp r4, 0x2B\n"
|
||||
"\tbne _0808EA66\n"
|
||||
"\tldr r2, _0808EAA4\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tldrb r6, [r3, 0x10]\n"
|
||||
"\tadds r1, r0, r6\n"
|
||||
"\tstrb r1, [r3, 0x10]\n"
|
||||
"\tldrb r1, [r3, 0x11]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r0, [r3, 0x11]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldrsh r1, [r2, r6]\n"
|
||||
"\tldr r0, [r3]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [r3]\n"
|
||||
"\tldr r0, [r3, 0x4]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [r3, 0x4]\n"
|
||||
"_0808EA66:\n"
|
||||
"\tcmp r4, 0x1E\n"
|
||||
"\tbne _0808EA7E\n"
|
||||
"\tldr r1, _0808EAA8\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tldrb r2, [r3, 0x12]\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrb r0, [r3, 0x12]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldrsh r1, [r1, r6]\n"
|
||||
"\tldr r0, [r3, 0x8]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [r3, 0x8]\n"
|
||||
"_0808EA7E:\n"
|
||||
"\tcmp r5, 0x22\n"
|
||||
"\tbne _0808EA96\n"
|
||||
"\tldr r1, _0808EAAC\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tldrb r2, [r3, 0x13]\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrb r0, [r3, 0x13]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldrsh r1, [r1, r6]\n"
|
||||
"\tldr r0, [r3, 0xC]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstr r0, [r3, 0xC]\n"
|
||||
"_0808EA96:\n"
|
||||
"\tpop {r4-r6}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808EA9C: .4byte gUnknown_810AC60\n"
|
||||
"_0808EAA0: .4byte gUnknown_810AC62\n"
|
||||
"_0808EAA4: .4byte gUnknown_810AC68\n"
|
||||
"_0808EAA8: .4byte gUnknown_810AC64\n"
|
||||
"_0808EAAC: .4byte gUnknown_810AC66");
|
||||
}
|
||||
#endif
|
||||
|
||||
u8 *GetIQSkillName(u8 skill)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user