Add NUM_MON_PIC_FRAMES, and trainer pic size constants

This commit is contained in:
GriffinR
2022-10-10 22:07:34 -04:00
parent bbb4ee32ca
commit 60e1ad20e4
16 changed files with 211 additions and 165 deletions
+16 -12
View File
@@ -9,6 +9,12 @@
#include "pokemon.h"
#include "constants/trainers.h"
#define PICS_COUNT 8
// Needs to be large enough to store either a decompressed pokemon pic or trainer pic
#define PIC_SPRITE_SIZE max(MON_PIC_SIZE, TRAINER_PIC_SIZE)
#define MAX_PIC_FRAMES max(MAX_MON_PIC_FRAMES, MAX_TRAINER_PIC_FRAMES)
struct PicData
{
u8 *frames;
@@ -18,8 +24,6 @@ struct PicData
u8 active;
};
#define PICS_COUNT 8
static EWRAM_DATA struct SpriteTemplate sCreatingSpriteTemplate = {};
static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {};
@@ -149,11 +153,11 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront
if (i == PICS_COUNT)
return 0xFFFF;
framePics = Alloc(4 * 0x800);
framePics = Alloc(PIC_SPRITE_SIZE * MAX_PIC_FRAMES);
if (!framePics)
return 0xFFFF;
images = Alloc(4 * sizeof(struct SpriteFrameImage));
images = Alloc(sizeof(struct SpriteFrameImage) * MAX_PIC_FRAMES);
if (!images)
{
Free(framePics);
@@ -164,10 +168,10 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront
// debug trap?
return 0xFFFF;
}
for (j = 0; j < 4; j ++)
for (j = 0; j < MAX_PIC_FRAMES; j ++)
{
images[j].data = framePics + 0x800 * j;
images[j].size = 0x800;
images[j].data = framePics + PIC_SPRITE_SIZE * j;
images[j].size = PIC_SPRITE_SIZE;
}
sCreatingSpriteTemplate.tileTag = TAG_NONE;
sCreatingSpriteTemplate.oam = &sOamData_Normal;
@@ -209,7 +213,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags,
if (i == PICS_COUNT)
return 0xFFFF;
framePics = Alloc(4 * MON_PIC_SIZE);
framePics = Alloc(MON_PIC_SIZE * MAX_MON_PIC_FRAMES);
if (!framePics)
return 0xFFFF;
@@ -222,7 +226,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags,
{
type = flags;
}
images = Alloc(4 * sizeof(struct SpriteFrameImage));
images = Alloc(sizeof(struct SpriteFrameImage) * MAX_MON_PIC_FRAMES);
if (!images)
{
Free(framePics);
@@ -233,7 +237,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags,
// debug trap?
return 0xFFFF;
}
for (j = 0; j < 4; j ++)
for (j = 0; j < MAX_MON_PIC_FRAMES; j ++)
{
images[j].data = framePics + MON_PIC_SIZE * j;
images[j].size = MON_PIC_SIZE;
@@ -307,10 +311,10 @@ static u16 CreateTrainerCardSprite(u16 species, u32 otId, u32 personality, bool8
{
u8 *framePics;
framePics = Alloc(4 * 0x800);
framePics = Alloc(TRAINER_PIC_SIZE * MAX_TRAINER_PIC_FRAMES);
if (framePics && !DecompressPic_HandleDeoxys(species, personality, isFrontPic, framePics, isTrainer))
{
BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40);
BlitBitmapRectToWindow(windowId, framePics, 0, 0, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT, destX, destY, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT);
LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer);
Free(framePics);
return 0;