diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pokemon_1.c | 182 | ||||
-rw-r--r-- | src/pokemon_mid.c | 85 |
2 files changed, 166 insertions, 101 deletions
diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 80ae6a1..e76f970 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -14,61 +14,211 @@ struct unkEvolve /* 0x4 */ struct EvolveNeeds needs; }; -s16 sub_808DD48(s16 r0, struct unkEvolve *r1) +u8 *GetCategoryString(s16 index) +{ + return gMonsterParameters[index].category; +} + +u8 GetPokemonSize(s16 index) +{ + return gMonsterParameters[index].size; +} + +u8 GetShadowSize(s16 index) +{ + return gMonsterParameters[index].shadow_size; +} + +s32 GetMoveSpeed(s16 index) +{ + return gMonsterParameters[index].move_speed; +} + +u8 GetWalkableTiles(s16 index) +{ + return gMonsterParameters[index].walkable_tiles; +} + +u8 GetUnk1B(s16 index) +{ + return ((u8)(gMonsterParameters[index].unk1B) << 25) >> 24; +} + +bool8 GetIsMoving(s16 index) +{ + return gMonsterParameters[index].isMoving; +} + +u8 GetUnk1D(s16 index) +{ + return gMonsterParameters[index].unk1D; +} + +u16 GetLowKickDmg(s16 index) +{ + return gMonsterParameters[index].lowkick_dmg; +} + +u16 GetSizeOrbDmg(s16 index) +{ + return gMonsterParameters[index].sizeorb_dmg; +} + +u8 GetFriendArea(s16 index) +{ + return gMonsterParameters[index].friend_area; +} + +u16 GetBaseHP(s16 index) +{ + return gMonsterParameters[index].base_hp; +} + +bool8 GetUnk33(s16 index) +{ + return gMonsterParameters[index].unk33; +} + +u8 GetUnk12(s16 index) +{ + return gMonsterParameters[index].unk12; +} + +s16 GetPokemonEvolveFrom(s16 index) +{ + return gMonsterParameters[index].pre.evolve_from; +} + +u16 GetPokemonAttSpatt(s16 index, u32 r1) +{ + return gMonsterParameters[index].base_att_spatt[r1]; +} + +u16 GetPokemonDefSpdef(s16 index, u32 r1) +{ + return gMonsterParameters[index].base_def_spdef[r1]; +} + +u8 GetPokemonType(s16 index, u32 typeIndex) +{ + return gMonsterParameters[index].types[typeIndex]; +} + +u8 GetPokemonAbility(s16 index, u32 abilityIndex) +{ + return gMonsterParameters[index].abilities[abilityIndex]; +} + +s16 sub_808DCA0(s16 index, u32 r1) +{ + return gMonsterParameters[index].unk3C[r1]; +} + +s16 GetBaseRecruit(s16 index) +{ + return gMonsterParameters[index].base_recruit; +} + +s16 sub_808DCDC(s16 index, s32 r1) +{ + return gMonsterParameters[index].unk42[r1]; +} + + +s16 sub_808DCFC(s16 index) +{ + return gMonsterParameters[index].unk3C[1]; +} + +#ifdef NONMATCHING +u32 CalculateEXPGain(s16 index, s32 level) +{ + return gMonsterParameters[index].base_exp + (gMonsterParameters[index].base_exp * (level- 1)) / 10; +} +#else +NAKED +u32 CalculateEXPGain(s16 index, s32 level) +{ + asm_unified("\tpush {r4,lr}\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tldr r2, _0808DD44\n" + "\tldr r3, [r2]\n" + "\tlsls r2, r0, 3\n" + "\tadds r2, r0\n" + "\tlsls r2, 3\n" + "\tadds r2, r3\n" + "\tldr r4, [r2, 0x20]\n" + "\tsubs r1, 0x1\n" + "\tadds r0, r4, 0\n" + "\tmuls r0, r1\n" + "\tmovs r1, 0xA\n" + "\tbl __divsi3\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tpop {r4}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" +"_0808DD44: .4byte gMonsterParameters"); +} +#endif + +s16 sub_808DD48(s16 index, struct unkEvolve *r1) { struct EvolveStruct1 temp2; struct EvolveNeeds temp1; - temp1 = gMonsterParameters[r0].need; - temp2 = gMonsterParameters[r0].pre; + temp1 = gMonsterParameters[index].need; + temp2 = gMonsterParameters[index].pre; r1->conditions = temp2; r1->needs = temp1; // The return value is not used anywhere, but necessary for the function to match. - return r0; + return index; } -u8 sub_808DD68(s16 r0, u32 r1) +u8 GetPokemonOverworldPalette(s16 index, u32 r1) { // Had to have this cast to match u32 temp; - temp = r0; + temp = index; if (r1 != 0) { - return 0xA; + return 10; } else { - return gMonsterParameters[temp].overworld_sprite; + return gMonsterParameters[temp].overworld_palette; } } -struct OpenedFile *sub_808DD90(s16 r0) +struct OpenedFile *OpenPokemonDialogueSpriteFile(s16 index) { // Looks like this loads the dialogue sprite for the pokemon char buffer[0xC]; - if(gMonsterParameters[r0].dialogue_sprites == 0) + if(gMonsterParameters[index].dialogue_sprites == 0) { return NULL; } - sprintf(buffer, gUnknown_8107684, r0); // "kao%03d" + sprintf(buffer, gUnknown_8107684, index); // "kao%03d" return OpenFile(buffer, &gMonsterFileArchive); } -struct OpenedFile *sub_808DDD0(s16 r0) +struct OpenedFile *GetDialogueSpriteDataPtr(s16 index) { // Looks like this loads the dialogue sprite for the pokemon char buffer[0xC]; - if(gMonsterParameters[r0].dialogue_sprites == 0) + if(gMonsterParameters[index].dialogue_sprites == 0) { return NULL; } - sprintf(buffer, gUnknown_8107684, r0); // "kao%03d" + sprintf(buffer, gUnknown_8107684, index); // "kao%03d" return OpenFileAndGetFileDataPtr(buffer, &gMonsterFileArchive); } -bool8 sub_808DE10(s16 r0, s32 r1) +bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 r1) { // checking to see if dialogue sprite is available?? - return (gMonsterParameters[r0].dialogue_sprites >> r1) & 1; + return (gMonsterParameters[index].dialogue_sprites >> r1) & 1; } diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c deleted file mode 100644 index e348784..0000000 --- a/src/pokemon_mid.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "global.h" -#include "pokemon.h" - -extern struct gPokemon *gMonsterParameters; - -u8 *GetCategoryString(s16 r0) -{ - return gMonsterParameters[r0].category; -} - -u8 GetPokemonSize(s16 r0) -{ - return gMonsterParameters[r0].size; -} - -u8 GetShadowSize(s16 r0) -{ - return gMonsterParameters[r0].shadow_size; -} - -s32 GetMoveSpeed(s16 r0) -{ - return gMonsterParameters[r0].move_speed; -} - -u8 GetWalkableTiles(s16 r0) -{ - return gMonsterParameters[r0].walkable_tiles; -} - -u8 GetUnk1B(s16 r0) -{ - return ((u8)(gMonsterParameters[r0].unk1B) << 25) >> 24; -} - -bool8 GetIsMoving(s16 r0) -{ - return gMonsterParameters[r0].isMoving; -} - -u8 GetUnk1D(s16 r0) -{ - return gMonsterParameters[r0].unk1D; -} - -u16 GetLowKickDmg(s16 r0) -{ - return gMonsterParameters[r0].lowkick_dmg; -} - -u16 GetSizeOrbDmg(s16 r0) -{ - return gMonsterParameters[r0].sizeorb_dmg; -} - -u8 GetFriendArea(s16 r0) -{ - return gMonsterParameters[r0].friend_area; -} - -u16 GetBaseHP(s16 r0) -{ - return gMonsterParameters[r0].base_hp; -} - -bool8 GetUnk33(s16 r0) -{ - return gMonsterParameters[r0].unk33; -} - -u8 GetUnk12(s16 r0) -{ - return gMonsterParameters[r0].unk12; -} - -s16 sub_808DC0C(s16 r0) -{ - return gMonsterParameters[r0].pre.evolve_from; -} - -// TODO fix calculation to match -//u32 sub_808DC28(s16 r0, u32 r1) -//{ -// return gMonsterParameters[r0].base_att + (r1 << 1); -//} |