mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-16 13:57:14 -05:00
decomp an evolve func for pokemon
This commit is contained in:
@@ -181,23 +181,4 @@ sub_808DD18:
|
||||
_0808DD44: .4byte gMonsterParameters
|
||||
thumb_func_end sub_808DD18
|
||||
|
||||
thumb_func_start sub_808DD48
|
||||
sub_808DD48:
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
ldr r2, _0808DD64
|
||||
ldr r3, [r2]
|
||||
lsls r2, r0, 3
|
||||
adds r2, r0
|
||||
lsls r2, 3
|
||||
adds r2, r3
|
||||
ldr r3, [r2, 0x38]
|
||||
ldr r2, [r2, 0x34]
|
||||
str r2, [r1]
|
||||
str r3, [r1, 0x4]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0808DD64: .4byte gMonsterParameters
|
||||
thumb_func_end sub_808DD48
|
||||
|
||||
.align 2,0 @ don't pad with nop
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
#ifndef POKEMON_H
|
||||
#define POKEMON_H
|
||||
|
||||
struct EvolveStruct1
|
||||
{
|
||||
u16 evolve_from;
|
||||
u16 evolve_type;
|
||||
};
|
||||
|
||||
struct EvolveNeeds
|
||||
{
|
||||
u16 evolve_need1;
|
||||
u16 evolve_need2;
|
||||
};
|
||||
|
||||
struct gPokemon
|
||||
{
|
||||
/* 0x0 */ u8* species;
|
||||
@@ -36,10 +48,8 @@ struct gPokemon
|
||||
/* 0x31 */ u8 unk31;
|
||||
/* 0x32 */ u8 unk32;
|
||||
/* 0x33 */ bool8 unk33;
|
||||
/* 0x34 */ u16 evolve_from; //verified
|
||||
/* 0x36 */ u16 evolve_type;
|
||||
/* 0x38 */ u16 evolve_need1; // verified
|
||||
/* 0x3A */ u16 evolve_need2; // verified
|
||||
/* 0x34 */ struct EvolveStruct1 pre;
|
||||
/* 0x38 */ struct EvolveNeeds need;
|
||||
/* 0x3C */ u16 dexNo;
|
||||
/* 0x3E */ u16 internalNo; // verified
|
||||
/* 0x40 */ s16 base_recruit; // verified
|
||||
|
||||
@@ -8,6 +8,43 @@ extern struct gPokemon *gMonsterParameters;
|
||||
extern struct FileArchive gUnknown_8510000;
|
||||
extern const char gUnknown_8107684;
|
||||
|
||||
struct unkEvolve
|
||||
{
|
||||
/* 0x0 */ struct EvolveStruct1 conditions;
|
||||
/* 0x4 */ struct EvolveNeeds needs;
|
||||
};
|
||||
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
void sub_808DD48(s16 r0, struct unkEvolve *r1)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
struct EvolveStruct1 temp2;
|
||||
struct EvolveNeeds temp1;
|
||||
temp1 = gMonsterParameters[r0].need;
|
||||
temp2 = gMonsterParameters[r0].pre; // TODO should be using r2 but it uses r0
|
||||
r1->conditions = temp2;
|
||||
r1->needs = temp1;
|
||||
#else
|
||||
asm_unified("\tlsls r0, 16\n"
|
||||
"\tasrs r0, 16\n"
|
||||
"\tldr r2, _0808DD64\n"
|
||||
"\tldr r3, [r2]\n"
|
||||
"\tlsls r2, r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tadds r2, r3\n"
|
||||
"\tldr r3, [r2, 0x38]\n"
|
||||
"\tldr r2, [r2, 0x34]\n"
|
||||
"\tstr r2, [r1]\n"
|
||||
"\tstr r3, [r1, 0x4]\n"
|
||||
"\tbx lr\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808DD64: .4byte gMonsterParameters");
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
#endif
|
||||
|
||||
@@ -75,7 +75,7 @@ u8 GetUnk12(s16 r0)
|
||||
|
||||
s16 sub_808DC0C(s16 r0)
|
||||
{
|
||||
return gMonsterParameters[r0].evolve_from;
|
||||
return gMonsterParameters[r0].pre.evolve_from;
|
||||
}
|
||||
|
||||
// TODO fix calculation to match
|
||||
|
||||
Reference in New Issue
Block a user