Add Unown forms

This commit is contained in:
DizzyEggg 2019-04-07 12:40:18 +02:00
parent 8213222337
commit c090f6cda9
14 changed files with 502 additions and 122 deletions

View File

@ -865,6 +865,36 @@
#define NUM_SPECIES SPECIES_EGG #define NUM_SPECIES SPECIES_EGG
// Unown forms, not actual species
#define SPECIES_UNOWN_A NUM_SPECIES + 1
#define SPECIES_UNOWN_B NUM_SPECIES + 2
#define SPECIES_UNOWN_C NUM_SPECIES + 3
#define SPECIES_UNOWN_D NUM_SPECIES + 4
#define SPECIES_UNOWN_E NUM_SPECIES + 5
#define SPECIES_UNOWN_F NUM_SPECIES + 6
#define SPECIES_UNOWN_G NUM_SPECIES + 7
#define SPECIES_UNOWN_H NUM_SPECIES + 8
#define SPECIES_UNOWN_I NUM_SPECIES + 9
#define SPECIES_UNOWN_J NUM_SPECIES + 10
#define SPECIES_UNOWN_K NUM_SPECIES + 11
#define SPECIES_UNOWN_L NUM_SPECIES + 12
#define SPECIES_UNOWN_M NUM_SPECIES + 13
#define SPECIES_UNOWN_N NUM_SPECIES + 14
#define SPECIES_UNOWN_O NUM_SPECIES + 15
#define SPECIES_UNOWN_P NUM_SPECIES + 16
#define SPECIES_UNOWN_Q NUM_SPECIES + 17
#define SPECIES_UNOWN_R NUM_SPECIES + 18
#define SPECIES_UNOWN_S NUM_SPECIES + 19
#define SPECIES_UNOWN_T NUM_SPECIES + 20
#define SPECIES_UNOWN_U NUM_SPECIES + 21
#define SPECIES_UNOWN_V NUM_SPECIES + 22
#define SPECIES_UNOWN_W NUM_SPECIES + 23
#define SPECIES_UNOWN_X NUM_SPECIES + 24
#define SPECIES_UNOWN_Y NUM_SPECIES + 25
#define SPECIES_UNOWN_Z NUM_SPECIES + 26
#define SPECIES_UNOWN_EMARK NUM_SPECIES + 27
#define SPECIES_UNOWN_QMARK NUM_SPECIES + 28
// National Dex Index Defines // National Dex Index Defines
#define NATIONAL_DEX_NONE 0 #define NATIONAL_DEX_NONE 0

View File

@ -92,7 +92,6 @@ extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
extern const union AnimCmd *const gUnknown_082FF70C[]; extern const union AnimCmd *const gUnknown_082FF70C[];
extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gMonFrontPicCoords[];
extern const struct CompressedSpriteSheet gMonStillFrontPicTable[];
extern const struct MonCoords gMonBackPicCoords[]; extern const struct MonCoords gMonBackPicCoords[];
extern const struct CompressedSpriteSheet gMonBackPicTable[]; extern const struct CompressedSpriteSheet gMonBackPicTable[];
extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonPaletteTable[];

View File

@ -503,6 +503,7 @@ u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon); u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon); u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality); u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
u32 GetUnownSpeciesId(u32 personality);
void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition); void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition); void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition); void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition);

View File

@ -17,13 +17,6 @@
#include "constants/battle_anim.h" #include "constants/battle_anim.h"
#include "constants/species.h" #include "constants/species.h"
#define GET_UNOWN_LETTER(personality) (( \
(((personality & 0x03000000) >> 24) << 6) \
| (((personality & 0x00030000) >> 16) << 4) \
| (((personality & 0x00000300) >> 8) << 2) \
| (((personality & 0x00000003) >> 0) << 0) \
) % 28)
#define IS_DOUBLE_BATTLE() ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) #define IS_DOUBLE_BATTLE() ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
extern const struct OamData gUnknown_0852497C; extern const struct OamData gUnknown_0852497C;
@ -177,7 +170,6 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
u8 GetBattlerYDelta(u8 battlerId, u16 species) u8 GetBattlerYDelta(u8 battlerId, u16 species)
{ {
u16 letter;
u32 personality; u32 personality;
struct BattleSpriteInfo *spriteInfo; struct BattleSpriteInfo *spriteInfo;
u8 ret; u8 ret;
@ -187,7 +179,6 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
{ {
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/*
if (IsContest()) if (IsContest())
{ {
if (gContestResources->field_18->unk4_0) if (gContestResources->field_18->unk4_0)
@ -203,13 +194,8 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
else else
personality = gTransformedPersonalities[battlerId]; personality = gTransformedPersonalities[battlerId];
} }
letter = GET_UNOWN_LETTER(personality); coordSpecies = GetUnownSpeciesId(personality);
if (!letter)
coordSpecies = species;
else
coordSpecies = letter + SPECIES_UNOWN_B - 1;
ret = gMonBackPicCoords[coordSpecies].y_offset; ret = gMonBackPicCoords[coordSpecies].y_offset;
*/
} }
else if (species == SPECIES_CASTFORM) else if (species == SPECIES_CASTFORM)
{ {
@ -228,19 +214,14 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
{ {
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/*
spriteInfo = gBattleSpritesDataPtr->battlerData; spriteInfo = gBattleSpritesDataPtr->battlerData;
if (!spriteInfo[battlerId].transformSpecies) if (!spriteInfo[battlerId].transformSpecies)
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY);
else else
personality = gTransformedPersonalities[battlerId]; personality = gTransformedPersonalities[battlerId];
letter = GET_UNOWN_LETTER(personality);
if (!letter) coordSpecies = GetUnownSpeciesId(personality);
coordSpecies = species;
else
coordSpecies = letter + SPECIES_UNOWN_B - 1;
ret = gMonFrontPicCoords[coordSpecies].y_offset; ret = gMonFrontPicCoords[coordSpecies].y_offset;
*/
} }
else if (species == SPECIES_CASTFORM) else if (species == SPECIES_CASTFORM)
{ {
@ -2097,8 +2078,6 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
{ {
u16 species; u16 species;
u32 personality; u32 personality;
u16 letter;
u16 unownSpecies;
int ret; int ret;
const struct MonCoords *coords; const struct MonCoords *coords;
struct BattleSpriteInfo *spriteInfo; struct BattleSpriteInfo *spriteInfo;
@ -2117,14 +2096,8 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
} }
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/* species = GetUnownSpeciesId(personality);
letter = GET_UNOWN_LETTER(personality); coords = &gMonBackPicCoords[species];
if (!letter)
unownSpecies = SPECIES_UNOWN;
else
unownSpecies = letter + SPECIES_UNOWN_B - 1;
coords = &gMonBackPicCoords[unownSpecies];
*/
} }
else if (species == SPECIES_CASTFORM) else if (species == SPECIES_CASTFORM)
{ {
@ -2157,14 +2130,8 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/* species = GetUnownSpeciesId(personality);
letter = GET_UNOWN_LETTER(personality); coords = &gMonBackPicCoords[species];
if (!letter)
unownSpecies = SPECIES_UNOWN;
else
unownSpecies = letter + SPECIES_UNOWN_B - 1;
coords = &gMonBackPicCoords[unownSpecies];
*/
} }
else if (species > NUM_SPECIES) else if (species > NUM_SPECIES)
{ {
@ -2191,14 +2158,8 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/* species = GetUnownSpeciesId(personality);
letter = GET_UNOWN_LETTER(personality); coords = &gMonFrontPicCoords[species];
if (!letter)
unownSpecies = SPECIES_UNOWN;
else
unownSpecies = letter + SPECIES_UNOWN_B - 1;
coords = &gMonFrontPicCoords[unownSpecies];
*/
} }
else if (species == SPECIES_CASTFORM) else if (species == SPECIES_CASTFORM)
{ {

View File

@ -591,9 +591,9 @@ static const u8 sPkblToEscapeFactor[][3] = {{0, 0, 0}, {3, 5, 0}, {2, 3, 0}, {1,
static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1}; static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1};
static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4}; static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4};
// code
void CB2_InitBattle(void) void CB2_InitBattle(void)
{ {
u32 i;
MoveSaveBlocks_ResetHeap(); MoveSaveBlocks_ResetHeap();
AllocateBattleResources(); AllocateBattleResources();
AllocateBattleSpritesData(); AllocateBattleSpritesData();
@ -2728,6 +2728,7 @@ extern const struct MonCoords gCastformFrontSpriteCoords[];
void SpriteCB_FaintOpponentMon(struct Sprite *sprite) void SpriteCB_FaintOpponentMon(struct Sprite *sprite)
{ {
u8 battler = sprite->sBattler; u8 battler = sprite->sBattler;
u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY);
u16 species; u16 species;
u8 yOffset; u8 yOffset;
@ -2740,16 +2741,8 @@ void SpriteCB_FaintOpponentMon(struct Sprite *sprite)
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
u32 personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); species = GetUnownSpeciesId(personality);
u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); yOffset = gMonFrontPicCoords[species].y_offset;
u16 unownSpecies;
if (unownForm == 0)
unownSpecies = SPECIES_UNOWN; // Use the A Unown form.
else
unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters.
yOffset = gMonFrontPicCoords[unownSpecies].y_offset;
} }
else if (species == SPECIES_CASTFORM) else if (species == SPECIES_CASTFORM)
{ {

View File

@ -1005,11 +1005,6 @@ const struct MonCoords gMonBackPicCoords[] =
.size = 0x66, .size = 0x66,
.y_offset = 0xb, .y_offset = 0xb,
}, },
[SPECIES_UNOWN] =
{
.size = 0x36,
.y_offset = 0x8,
},
[SPECIES_WOBBUFFET] = [SPECIES_WOBBUFFET] =
{ {
.size = 0x75, .size = 0x75,
@ -3250,4 +3245,149 @@ const struct MonCoords gMonBackPicCoords[] =
.size = 0x64, .size = 0x64,
.y_offset = 0x8, .y_offset = 0x8,
}, },
[SPECIES_EGG] =
{
.size = 0x36,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_A] =
{
.size = 0x36,
.y_offset = 0x8,
},
[SPECIES_UNOWN_B] =
{
.size = 0x56,
.y_offset = 0x09,
},
[SPECIES_UNOWN_C] =
{
.size = 0x67,
.y_offset = 0x06,
},
[SPECIES_UNOWN_D] =
{
.size = 0x56,
.y_offset = 0x08,
},
[SPECIES_UNOWN_E] =
{
.size = 0x56,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_F] =
{
.size = 0x66,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_G] =
{
.size = 0x57,
.y_offset = 0x05,
},
[SPECIES_UNOWN_H] =
{
.size = 0x66,
.y_offset = 0x08,
},
[SPECIES_UNOWN_I] =
{
.size = 0x37,
.y_offset = 0x07,
},
[SPECIES_UNOWN_J] =
{
.size = 0x46,
.y_offset = 0x09,
},
[SPECIES_UNOWN_K] =
{
.size = 0x57,
.y_offset = 0x07,
},
[SPECIES_UNOWN_L] =
{
.size = 0x46,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_M] =
{
.size = 0x65,
.y_offset = 0x0d,
},
[SPECIES_UNOWN_N] =
{
.size = 0x65,
.y_offset = 0x0d,
},
[SPECIES_UNOWN_O] =
{
.size = 0x66,
.y_offset = 0x08,
},
[SPECIES_UNOWN_P] =
{
.size = 0x46,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_Q] =
{
.size = 0x55,
.y_offset = 0x0f,
},
[SPECIES_UNOWN_R] =
{
.size = 0x45,
.y_offset = 0x0c,
},
[SPECIES_UNOWN_S] =
{
.size = 0x57,
.y_offset = 0x04,
},
[SPECIES_UNOWN_T] =
{
.size = 0x45,
.y_offset = 0x0d,
},
[SPECIES_UNOWN_U] =
{
.size = 0x65,
.y_offset = 0x0d,
},
[SPECIES_UNOWN_V] =
{
.size = 0x56,
.y_offset = 0x0b,
},
[SPECIES_UNOWN_W] =
{
.size = 0x55,
.y_offset = 0x0d,
},
[SPECIES_UNOWN_X] =
{
.size = 0x55,
.y_offset = 0x0f,
},
[SPECIES_UNOWN_Y] =
{
.size = 0x46,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_Z] =
{
.size = 0x46,
.y_offset = 0x0a,
},
[SPECIES_UNOWN_EMARK] =
{
.size = 0x37,
.y_offset = 0x06,
},
[SPECIES_UNOWN_QMARK] =
{
.size = 0x47,
.y_offset = 0x06,
},
}; };

View File

@ -809,4 +809,33 @@ const struct CompressedSpriteSheet gMonBackPicTable[] =
SPECIES_SPRITE(BLACEPHALON, gMonBackPic_Blacephalon), SPECIES_SPRITE(BLACEPHALON, gMonBackPic_Blacephalon),
SPECIES_SPRITE(ZERAORA, gMonBackPic_Zeraora), SPECIES_SPRITE(ZERAORA, gMonBackPic_Zeraora),
SPECIES_SPRITE(EGG, gMonFrontPic_Egg), SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
SPECIES_SPRITE(UNOWN_A, gMonBackPic_UnownA),
SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB),
SPECIES_SPRITE(UNOWN_C, gMonBackPic_UnownC),
SPECIES_SPRITE(UNOWN_D, gMonBackPic_UnownD),
SPECIES_SPRITE(UNOWN_E, gMonBackPic_UnownE),
SPECIES_SPRITE(UNOWN_F, gMonBackPic_UnownF),
SPECIES_SPRITE(UNOWN_G, gMonBackPic_UnownG),
SPECIES_SPRITE(UNOWN_H, gMonBackPic_UnownH),
SPECIES_SPRITE(UNOWN_I, gMonBackPic_UnownI),
SPECIES_SPRITE(UNOWN_J, gMonBackPic_UnownJ),
SPECIES_SPRITE(UNOWN_K, gMonBackPic_UnownK),
SPECIES_SPRITE(UNOWN_L, gMonBackPic_UnownL),
SPECIES_SPRITE(UNOWN_M, gMonBackPic_UnownM),
SPECIES_SPRITE(UNOWN_N, gMonBackPic_UnownN),
SPECIES_SPRITE(UNOWN_O, gMonBackPic_UnownO),
SPECIES_SPRITE(UNOWN_P, gMonBackPic_UnownP),
SPECIES_SPRITE(UNOWN_Q, gMonBackPic_UnownQ),
SPECIES_SPRITE(UNOWN_R, gMonBackPic_UnownR),
SPECIES_SPRITE(UNOWN_S, gMonBackPic_UnownS),
SPECIES_SPRITE(UNOWN_T, gMonBackPic_UnownT),
SPECIES_SPRITE(UNOWN_U, gMonBackPic_UnownU),
SPECIES_SPRITE(UNOWN_V, gMonBackPic_UnownV),
SPECIES_SPRITE(UNOWN_W, gMonBackPic_UnownW),
SPECIES_SPRITE(UNOWN_X, gMonBackPic_UnownX),
SPECIES_SPRITE(UNOWN_Y, gMonBackPic_UnownY),
SPECIES_SPRITE(UNOWN_Z, gMonBackPic_UnownZ),
SPECIES_SPRITE(UNOWN_EMARK, gMonBackPic_UnownExclamationMark),
SPECIES_SPRITE(UNOWN_QMARK, gMonBackPic_UnownQuestionMark),
}; };

View File

@ -1005,11 +1005,6 @@ const struct MonCoords gMonFrontPicCoords[] =
.size = 0x55, .size = 0x55,
.y_offset = 0xd, .y_offset = 0xd,
}, },
[SPECIES_UNOWN] =
{
.size = 0x35,
.y_offset = 0xf,
},
[SPECIES_WOBBUFFET] = [SPECIES_WOBBUFFET] =
{ {
.size = 0x77, .size = 0x77,
@ -3250,4 +3245,149 @@ const struct MonCoords gMonFrontPicCoords[] =
.size = 0x45, .size = 0x45,
.y_offset = 0x0, .y_offset = 0x0,
}, },
[SPECIES_EGG] =
{
.size = 0x33,
.y_offset = 0x14,
},
[SPECIES_UNOWN_A] =
{
.size = 0x35,
.y_offset = 0xf,
},
[SPECIES_UNOWN_B] =
{
.size = 0x34,
.y_offset = 0x10,
},
[SPECIES_UNOWN_C] =
{
.size = 0x44,
.y_offset = 0x10,
},
[SPECIES_UNOWN_D] =
{
.size = 0x44,
.y_offset = 0x10,
},
[SPECIES_UNOWN_E] =
{
.size = 0x44,
.y_offset = 0x11,
},
[SPECIES_UNOWN_F] =
{
.size = 0x44,
.y_offset = 0x11,
},
[SPECIES_UNOWN_G] =
{
.size = 0x35,
.y_offset = 0x0e,
},
[SPECIES_UNOWN_H] =
{
.size = 0x44,
.y_offset = 0x10,
},
[SPECIES_UNOWN_I] =
{
.size = 0x34,
.y_offset = 0x10,
},
[SPECIES_UNOWN_J] =
{
.size = 0x34,
.y_offset = 0x11,
},
[SPECIES_UNOWN_K] =
{
.size = 0x44,
.y_offset = 0x11,
},
[SPECIES_UNOWN_L] =
{
.size = 0x34,
.y_offset = 0x13,
},
[SPECIES_UNOWN_M] =
{
.size = 0x44,
.y_offset = 0x13,
},
[SPECIES_UNOWN_N] =
{
.size = 0x43,
.y_offset = 0x14,
},
[SPECIES_UNOWN_O] =
{
.size = 0x44,
.y_offset = 0x10,
},
[SPECIES_UNOWN_P] =
{
.size = 0x34,
.y_offset = 0x13,
},
[SPECIES_UNOWN_Q] =
{
.size = 0x43,
.y_offset = 0x15,
},
[SPECIES_UNOWN_R] =
{
.size = 0x34,
.y_offset = 0x13,
},
[SPECIES_UNOWN_S] =
{
.size = 0x45,
.y_offset = 0x0c,
},
[SPECIES_UNOWN_T] =
{
.size = 0x34,
.y_offset = 0x12,
},
[SPECIES_UNOWN_U] =
{
.size = 0x44,
.y_offset = 0x12,
},
[SPECIES_UNOWN_V] =
{
.size = 0x44,
.y_offset = 0x12,
},
[SPECIES_UNOWN_W] =
{
.size = 0x44,
.y_offset = 0x13,
},
[SPECIES_UNOWN_X] =
{
.size = 0x33,
.y_offset = 0x15,
},
[SPECIES_UNOWN_Y] =
{
.size = 0x34,
.y_offset = 0x11,
},
[SPECIES_UNOWN_Z] =
{
.size = 0x34,
.y_offset = 0x10,
},
[SPECIES_UNOWN_EMARK] =
{
.size = 0x35,
.y_offset = 0x0f,
},
[SPECIES_UNOWN_QMARK] =
{
.size = 0x35,
.y_offset = 0x0d,
},
}; };

View File

@ -809,4 +809,33 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] =
SPECIES_SPRITE(BLACEPHALON, gMonFrontPic_Blacephalon), SPECIES_SPRITE(BLACEPHALON, gMonFrontPic_Blacephalon),
SPECIES_SPRITE(ZERAORA, gMonFrontPic_Zeraora), SPECIES_SPRITE(ZERAORA, gMonFrontPic_Zeraora),
SPECIES_SPRITE(EGG, gMonFrontPic_Egg), SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
SPECIES_SPRITE(UNOWN_A, gMonFrontPic_UnownA),
SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB),
SPECIES_SPRITE(UNOWN_C, gMonFrontPic_UnownC),
SPECIES_SPRITE(UNOWN_D, gMonFrontPic_UnownD),
SPECIES_SPRITE(UNOWN_E, gMonFrontPic_UnownE),
SPECIES_SPRITE(UNOWN_F, gMonFrontPic_UnownF),
SPECIES_SPRITE(UNOWN_G, gMonFrontPic_UnownG),
SPECIES_SPRITE(UNOWN_H, gMonFrontPic_UnownH),
SPECIES_SPRITE(UNOWN_I, gMonFrontPic_UnownI),
SPECIES_SPRITE(UNOWN_J, gMonFrontPic_UnownJ),
SPECIES_SPRITE(UNOWN_K, gMonFrontPic_UnownK),
SPECIES_SPRITE(UNOWN_L, gMonFrontPic_UnownL),
SPECIES_SPRITE(UNOWN_M, gMonFrontPic_UnownM),
SPECIES_SPRITE(UNOWN_N, gMonFrontPic_UnownN),
SPECIES_SPRITE(UNOWN_O, gMonFrontPic_UnownO),
SPECIES_SPRITE(UNOWN_P, gMonFrontPic_UnownP),
SPECIES_SPRITE(UNOWN_Q, gMonFrontPic_UnownQ),
SPECIES_SPRITE(UNOWN_R, gMonFrontPic_UnownR),
SPECIES_SPRITE(UNOWN_S, gMonFrontPic_UnownS),
SPECIES_SPRITE(UNOWN_T, gMonFrontPic_UnownT),
SPECIES_SPRITE(UNOWN_U, gMonFrontPic_UnownU),
SPECIES_SPRITE(UNOWN_V, gMonFrontPic_UnownV),
SPECIES_SPRITE(UNOWN_W, gMonFrontPic_UnownW),
SPECIES_SPRITE(UNOWN_X, gMonFrontPic_UnownX),
SPECIES_SPRITE(UNOWN_Y, gMonFrontPic_UnownY),
SPECIES_SPRITE(UNOWN_Z, gMonFrontPic_UnownZ),
SPECIES_SPRITE(UNOWN_EMARK, gMonFrontPic_UnownExclamationMark),
SPECIES_SPRITE(UNOWN_QMARK, gMonFrontPic_UnownQuestionMark),
}; };

View File

@ -809,4 +809,32 @@ const struct CompressedSpritePalette gMonPaletteTable[] =
SPECIES_PAL(BLACEPHALON, gMonPalette_Blacephalon), SPECIES_PAL(BLACEPHALON, gMonPalette_Blacephalon),
SPECIES_PAL(ZERAORA, gMonPalette_Zeraora), SPECIES_PAL(ZERAORA, gMonPalette_Zeraora),
SPECIES_PAL(EGG, gMonPalette_Egg), SPECIES_PAL(EGG, gMonPalette_Egg),
SPECIES_PAL(UNOWN_A, gMonPalette_Unown),
SPECIES_PAL(UNOWN_B, gMonPalette_Unown),
SPECIES_PAL(UNOWN_C, gMonPalette_Unown),
SPECIES_PAL(UNOWN_D, gMonPalette_Unown),
SPECIES_PAL(UNOWN_E, gMonPalette_Unown),
SPECIES_PAL(UNOWN_F, gMonPalette_Unown),
SPECIES_PAL(UNOWN_G, gMonPalette_Unown),
SPECIES_PAL(UNOWN_H, gMonPalette_Unown),
SPECIES_PAL(UNOWN_I, gMonPalette_Unown),
SPECIES_PAL(UNOWN_J, gMonPalette_Unown),
SPECIES_PAL(UNOWN_K, gMonPalette_Unown),
SPECIES_PAL(UNOWN_L, gMonPalette_Unown),
SPECIES_PAL(UNOWN_M, gMonPalette_Unown),
SPECIES_PAL(UNOWN_N, gMonPalette_Unown),
SPECIES_PAL(UNOWN_O, gMonPalette_Unown),
SPECIES_PAL(UNOWN_P, gMonPalette_Unown),
SPECIES_PAL(UNOWN_Q, gMonPalette_Unown),
SPECIES_PAL(UNOWN_R, gMonPalette_Unown),
SPECIES_PAL(UNOWN_S, gMonPalette_Unown),
SPECIES_PAL(UNOWN_T, gMonPalette_Unown),
SPECIES_PAL(UNOWN_U, gMonPalette_Unown),
SPECIES_PAL(UNOWN_V, gMonPalette_Unown),
SPECIES_PAL(UNOWN_W, gMonPalette_Unown),
SPECIES_PAL(UNOWN_X, gMonPalette_Unown),
SPECIES_PAL(UNOWN_Y, gMonPalette_Unown),
SPECIES_PAL(UNOWN_Z, gMonPalette_Unown),
SPECIES_PAL(UNOWN_EMARK, gMonPalette_Unown),
SPECIES_PAL(UNOWN_QMARK, gMonPalette_Unown),
}; };

View File

@ -809,4 +809,32 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] =
SPECIES_SHINY_PAL(BLACEPHALON, gMonShinyPalette_Blacephalon), SPECIES_SHINY_PAL(BLACEPHALON, gMonShinyPalette_Blacephalon),
SPECIES_SHINY_PAL(ZERAORA, gMonShinyPalette_Zeraora), SPECIES_SHINY_PAL(ZERAORA, gMonShinyPalette_Zeraora),
SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), SPECIES_SHINY_PAL(EGG, gMonPalette_Egg),
SPECIES_SHINY_PAL(UNOWN_A, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_C, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_D, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_E, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_F, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_G, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_H, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_I, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_J, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_K, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_L, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_M, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_N, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_O, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_P, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_Q, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_R, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_S, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_T, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_U, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_V, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_W, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_X, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_Y, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_Z, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_EMARK, gMonShinyPalette_Unown),
SPECIES_SHINY_PAL(UNOWN_QMARK, gMonShinyPalette_Unown),
}; };

View File

@ -85,23 +85,16 @@ void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *des
void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic) void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
{ {
/*
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C; u32 id = GetUnownSpeciesId(personality);
// The other Unowns are separate from Unown A.
if (i == 0)
i = SPECIES_UNOWN;
else
i += SPECIES_UNOWN_B - 1;
if (!isFrontPic) if (!isFrontPic)
LZ77UnCompWram(gMonBackPicTable[i].data, dest); LZ77UnCompWram(gMonBackPicTable[id].data, dest);
else else
LZ77UnCompWram(gMonFrontPicTable[i].data, dest); LZ77UnCompWram(gMonFrontPicTable[id].data, dest);
} }
else*/ if (species > NUM_SPECIES) // is species unknown? draw the ? icon else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
LZ77UnCompWram(gMonFrontPicTable[0].data, dest); LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
else else
LZ77UnCompWram(src->data, dest); LZ77UnCompWram(src->data, dest);
@ -507,23 +500,16 @@ void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buf
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic) // a copy of LoadSpecialPokePic void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic) // a copy of LoadSpecialPokePic
{ {
/*
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C; u32 id = GetUnownSpeciesId(personality);
// The other Unowns are separate from Unown A.
if (i == 0)
i = SPECIES_UNOWN;
else
i += SPECIES_UNOWN_B - 1;
if (!isFrontPic) if (!isFrontPic)
LZ77UnCompWram(gMonBackPicTable[i].data, dest); LZ77UnCompWram(gMonBackPicTable[id].data, dest);
else else
LZ77UnCompWram(gMonFrontPicTable[i].data, dest); LZ77UnCompWram(gMonFrontPicTable[id].data, dest);
} }
else*/ if (species > NUM_SPECIES) // is species unknown? draw the ? icon else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
LZ77UnCompWram(gMonFrontPicTable[0].data, dest); LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
else else
LZ77UnCompWram(src->data, dest); LZ77UnCompWram(src->data, dest);
@ -566,23 +552,16 @@ void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteShee
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic) void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
{ {
/*
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C; u32 id = GetUnownSpeciesId(personality);
// The other Unowns are separate from Unown A.
if (i == 0)
i = SPECIES_UNOWN;
else
i += SPECIES_UNOWN_B - 1;
if (!isFrontPic) if (!isFrontPic)
LZ77UnCompWram(gMonBackPicTable[i].data, dest); LZ77UnCompWram(gMonBackPicTable[id].data, dest);
else else
LZ77UnCompWram(gMonFrontPicTable[i].data, dest); LZ77UnCompWram(gMonFrontPicTable[id].data, dest);
} }
else*/ if (species > NUM_SPECIES) // is species unknown? draw the ? icon else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
LZ77UnCompWram(gMonFrontPicTable[0].data, dest); LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
else else
LZ77UnCompWram(src->data, dest); LZ77UnCompWram(src->data, dest);

View File

@ -24,6 +24,7 @@
#include "pokeblock.h" #include "pokeblock.h"
#include "pokemon.h" #include "pokemon.h"
#include "pokemon_animation.h" #include "pokemon_animation.h"
#include "pokemon_icon.h"
#include "pokemon_summary_screen.h" #include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h" #include "pokemon_storage_system.h"
#include "random.h" #include "random.h"
@ -3385,6 +3386,11 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE; return MON_MALE;
} }
u32 GetUnownSpeciesId(u32 personality)
{
return GetUnownLetterByPersonality(personality) + SPECIES_UNOWN_A;
}
void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition) void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
{ {
if (gMonSpritesGfxPtr != NULL) if (gMonSpritesGfxPtr != NULL)

View File

@ -762,11 +762,41 @@ const u8 *const gMonIconTable[] =
[SPECIES_BLACEPHALON] = gMonIcon_Blacephalon, [SPECIES_BLACEPHALON] = gMonIcon_Blacephalon,
[SPECIES_ZERAORA] = gMonIcon_Zeraora, [SPECIES_ZERAORA] = gMonIcon_Zeraora,
[SPECIES_EGG] = gMonIcon_Egg, [SPECIES_EGG] = gMonIcon_Egg,
[SPECIES_UNOWN_A] = gMonIcon_UnownA,
[SPECIES_UNOWN_B] = gMonIcon_UnownB,
[SPECIES_UNOWN_C] = gMonIcon_UnownC,
[SPECIES_UNOWN_D] = gMonIcon_UnownD,
[SPECIES_UNOWN_E] = gMonIcon_UnownE,
[SPECIES_UNOWN_F] = gMonIcon_UnownF,
[SPECIES_UNOWN_G] = gMonIcon_UnownG,
[SPECIES_UNOWN_H] = gMonIcon_UnownH,
[SPECIES_UNOWN_I] = gMonIcon_UnownI,
[SPECIES_UNOWN_J] = gMonIcon_UnownJ,
[SPECIES_UNOWN_K] = gMonIcon_UnownK,
[SPECIES_UNOWN_L] = gMonIcon_UnownL,
[SPECIES_UNOWN_M] = gMonIcon_UnownM,
[SPECIES_UNOWN_N] = gMonIcon_UnownN,
[SPECIES_UNOWN_O] = gMonIcon_UnownO,
[SPECIES_UNOWN_P] = gMonIcon_UnownP,
[SPECIES_UNOWN_Q] = gMonIcon_UnownQ,
[SPECIES_UNOWN_R] = gMonIcon_UnownR,
[SPECIES_UNOWN_S] = gMonIcon_UnownS,
[SPECIES_UNOWN_T] = gMonIcon_UnownT,
[SPECIES_UNOWN_U] = gMonIcon_UnownU,
[SPECIES_UNOWN_V] = gMonIcon_UnownV,
[SPECIES_UNOWN_W] = gMonIcon_UnownW,
[SPECIES_UNOWN_X] = gMonIcon_UnownX,
[SPECIES_UNOWN_Y] = gMonIcon_UnownY,
[SPECIES_UNOWN_Z] = gMonIcon_UnownZ,
[SPECIES_UNOWN_EMARK] = gMonIcon_UnownExclamationMark,
[SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark,
}; };
const u8 gMonIconPaletteIndices[NUM_SPECIES + 1] = const u8 gMonIconPaletteIndices[] =
{ {
[0 ... SPECIES_EGG] = 1, [0 ... SPECIES_EGG] = 1,
[SPECIES_UNOWN_A ... SPECIES_UNOWN_QMARK] = 0,
}; };
const struct SpritePalette gMonIconPaletteTable[] = const struct SpritePalette gMonIconPaletteTable[] =
@ -937,14 +967,7 @@ u16 GetIconSpecies(u16 species, u32 personality)
if (species == SPECIES_UNOWN) if (species == SPECIES_UNOWN)
{ {
/* result = GetUnownSpeciesId(personality);
u16 letter = GetUnownLetterByPersonality(personality);
if (letter == 0)
letter = SPECIES_UNOWN;
else
letter += (SPECIES_UNOWN_B - 1);
result = letter;
*/
} }
else else
{ {
@ -971,20 +994,14 @@ u16 sub_80D2E84(u16 species)
if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN) if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN)
{ {
/* value += SPECIES_UNOWN_A;
if (value == 0)
value += SPECIES_UNOWN;
else
value += (SPECIES_UNOWN_B - 1);
return value; return value;
*/
} }
else else
{ {
/* if (species > NUM_SPECIES)
if (species > (SPECIES_UNOWN_B - 1)) species = 0;
species = SPECIES_OLD_UNOWN_J; // That's an oddly specific species.
*/
return GetIconSpecies(species, 0); return GetIconSpecies(species, 0);
} }
} }