summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-09-10 01:59:10 -0700
committerYamaArashi <shadow962@live.com>2016-09-10 01:59:10 -0700
commit19bffecc4deb401aa51add3b95163b72686f40ee (patch)
treebe5ff81cfaeb53b8c386147877fef8ceeb2ec283 /src
parent69ca60ca91e3cf0d3dc323bf30bb7d79c77464d8 (diff)
decompile more pokemon functions
Diffstat (limited to 'src')
-rw-r--r--src/main_menu.c4
-rw-r--r--src/pokemon_1.c7
-rw-r--r--src/pokemon_2.c65
3 files changed, 71 insertions, 5 deletions
diff --git a/src/main_menu.c b/src/main_menu.c
index 559bf5a0a..692267c64 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -8,6 +8,7 @@
#include "palette.h"
#include "string_util.h"
#include "species.h"
+#include "pokemon.h"
extern u8 MenuUpdateWindowText(void);
extern void MenuPrint(u8 *, u8, u8);
@@ -41,7 +42,6 @@ void CB2_MainMenu(void);
void VBlankCB_MainMenu(void);
void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32);
void LoadCompressedObjectPalette(const struct SpritePalette *);
-void gpu_pal_obj_decompress_and_apply(u16, u8);
u8 AddNewGameBirchObject(u8, u8, u8);
u8 sub_80859BC(u8, u16, u16, u8, void *);
void MenuDrawTextWindow(u8 a, u8 b, u8 c, u8 d);
@@ -1426,7 +1426,7 @@ u8 CreateAzurillSprite(u8 a1, u8 a2)
gUnknown_081FAF4C[1],
SPECIES_AZURILL);
LoadCompressedObjectPalette(&gMonPaletteTable[SPECIES_AZURILL]);
- gpu_pal_obj_decompress_and_apply(SPECIES_AZURILL, 1);
+ GetMonSpriteTemplate_803C56C(SPECIES_AZURILL, 1);
return CreateSprite(&gUnknown_02024E8C, a1, a2, 0);
}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 02ae1533f..566db2e68 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -4,6 +4,7 @@
#include "pokemon.h"
#include "species.h"
#include "main.h"
+#include "sprite.h"
extern u8 sav1_map_get_name();
@@ -203,7 +204,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level,
actualLetter = ((((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | personality & 0x3) % 28);
}
while (nature != GetNatureFromPersonality(personality)
- || gender != pokemon_species_get_gender_info(species, personality)
+ || gender != GetGenderFromSpeciesAndPersonality(species, personality)
|| actualLetter != unownLetter - 1);
}
else
@@ -214,7 +215,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level,
personality = (u16)r | (Random() << 16);
}
while (nature != GetNatureFromPersonality(personality)
- || gender != pokemon_species_get_gender_info(species, personality));
+ || gender != GetGenderFromSpeciesAndPersonality(species, personality));
}
CreateMon(mon, species, level, fixedIV, 1, personality, 0, 0);
@@ -234,7 +235,7 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level)
r2 = Random();
personality = (u16)r2 | (Random() << 16);
}
- while (pokemon_species_get_gender_info(species, personality) != MALE);
+ while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE);
CreateMon(mon, species, level, 32, 1, personality, 1, otId);
}
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 9f9fc3911..647808d14 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -4,10 +4,75 @@
#include "pokemon.h"
#include "species.h"
#include "main.h"
+#include "sprite.h"
+
+extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gBadEggNickname[];
extern u8 gEggNickname[];
extern u32 gBitTable[];
+extern struct BaseStats gBaseStats[];
+extern struct SpriteTemplate gSpriteTemplate_8208288[];
+extern union AmimCmd *gSpriteAnimTable_81E7C64[];
+extern union AnimCmd **gUnknown_081EC2A4[];
+extern union AnimCmd **gUnknown_081ECACC[];
+
+u8 GetMonGender(struct Pokemon *mon)
+{
+ return GetBoxMonGender(&mon->box);
+}
+
+u8 GetBoxMonGender(struct BoxPokemon *boxMon)
+{
+ u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL);
+
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
+{
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
+{
+ gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
+ gUnknown_02024E8C.paletteTag = species;
+ gUnknown_02024E8C.anims = (union AnimCmd **)gSpriteAnimTable_81E7C64;
+}
+
+void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
+{
+ gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
+ gUnknown_02024E8C.paletteTag = species;
+ if (a2 == 0 || a2 == 2)
+ gUnknown_02024E8C.anims = gUnknown_081ECACC[species];
+ else
+ gUnknown_02024E8C.anims = gUnknown_081EC2A4[species];
+}
void EncryptBoxMon(struct BoxPokemon *boxMon)
{