summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_7.c50
-rw-r--r--src/battle_anim.c4
-rw-r--r--src/berry_tag_screen.c4
-rw-r--r--src/credits.c6
-rw-r--r--src/decompress.c64
-rwxr-xr-xsrc/field_effect.c3
-rw-r--r--src/intro.c18
-rw-r--r--src/money.c4
-rw-r--r--src/pokeball.c313
-rw-r--r--src/pokedex.c10
-rw-r--r--src/pokemon_3.c8
-rw-r--r--src/script_pokemon_util_80C4BF0.c19
-rw-r--r--src/starter_choose.c4
-rw-r--r--src/title_screen.c6
-rw-r--r--src/wallclock.c2
15 files changed, 393 insertions, 122 deletions
diff --git a/src/battle_7.c b/src/battle_7.c
index a2990018e..a93237608 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -55,21 +55,21 @@ extern void (*gAnimScriptCallback)(void);
extern u8 gAnimScriptActive;
extern const u8 *const gBattleAnims_Unknown1[];
extern const u8 *const gBattleAnims_Unknown2[];
-extern const struct SpriteSheet gTrainerFrontPicTable[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
-extern const struct SpritePalette gTrainerFrontPicPaletteTable[];
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const u8 gSubstituteDollTilemap[];
extern const u8 gSubstituteDollGfx[];
extern const u8 gSubstituteDollPal[];
-extern const struct SpriteSheet gUnknown_081FAF24;
+extern const struct CompressedSpriteSheet gUnknown_081FAF24;
extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
extern void (*const gOpponentBufferCommands[])(void);
-extern const struct SpriteSheet gUnknown_0820A47C;
-extern const struct SpriteSheet gUnknown_0820A484;
-extern const struct SpriteSheet gUnknown_0820A48C[];
-extern const struct SpriteSheet gUnknown_0820A49C[];
-extern const struct SpriteSheet gUnknown_0820A4AC;
-extern const struct SpriteSheet gUnknown_0820A4B4[];
+extern const struct CompressedSpriteSheet gUnknown_0820A47C;
+extern const struct CompressedSpriteSheet gUnknown_0820A484;
+extern const struct CompressedSpriteSheet gUnknown_0820A48C[];
+extern const struct CompressedSpriteSheet gUnknown_0820A49C[];
+extern const struct CompressedSpriteSheet gUnknown_0820A4AC;
+extern const struct CompressedSpriteSheet gUnknown_0820A4B4[];
extern const struct SpritePalette gUnknown_0820A4D4[];
extern const u8 gUnknown_08D09C48[];
@@ -84,10 +84,8 @@ extern u8 sub_8078874(u8);
extern u8 sub_8077F68(u8);
extern u8 sub_8077F7C(u8);
extern void sub_8094958(void);
-extern const u16 *pokemon_get_pal(struct Pokemon *);
extern void sub_80105DC(struct Sprite *);
extern void move_anim_start_t2();
-extern const u16 *species_and_otid_get_pal();
void sub_80315E8(u8);
u8 sub_803163C(u8);
@@ -283,7 +281,7 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
u32 otId;
u8 var;
u16 paletteOffset;
- const u16 *palette;
+ const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
if (ewram17800[b].unk2 == 0)
@@ -308,16 +306,16 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
r7);
paletteOffset = 0x100 + b * 16;
if (ewram17800[b].unk2 == 0)
- palette = pokemon_get_pal(pkmn);
+ lzPaletteData = pokemon_get_pal(pkmn);
else
- palette = species_and_otid_get_pal(species, otId, personalityValue);
- sub_800D238(palette, ewram);
+ lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
+ sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 0x20);
LoadPalette(ewram, 0x80 + b * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + b * 16;
- sub_800D238(palette, ewram + 0x16400);
+ sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
if (ewram17800[b].unk2 != 0)
@@ -335,7 +333,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
u32 otId;
u8 var;
u16 paletteOffset;
- const u16 *palette;
+ const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
if (ewram17800[b].unk2 == 0)
@@ -360,16 +358,16 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
r7);
paletteOffset = 0x100 + b * 16;
if (ewram17800[b].unk2 == 0)
- palette = pokemon_get_pal(pkmn);
+ lzPaletteData = pokemon_get_pal(pkmn);
else
- palette = species_and_otid_get_pal(species, otId, personalityValue);
- sub_800D238(palette, ewram);
+ lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
+ sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 0x20);
LoadPalette(ewram, 0x80 + b * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + b * 16;
- sub_800D238(palette, ewram + 0x16400);
+ sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
if (ewram17800[b].unk2 != 0)
@@ -390,7 +388,7 @@ void nullsub_9(u16 unused)
void sub_8031A6C(u16 a, u8 b)
{
u8 status;
- struct SpriteSheet spriteSheet;
+ struct CompressedSpriteSheet spriteSheet;
status = GetBankIdentity(b);
DecompressPicFromTable_2(
@@ -624,7 +622,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
u32 personalityValue;
u32 otId;
u8 r10;
- const u16 *palette;
+ const u8 *lzPaletteData;
if (c)
{
@@ -697,14 +695,14 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + a * 16;
- palette = species_and_otid_get_pal(species, otId, personalityValue);
- sub_800D238(palette, ewram);
+ lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
+ sub_800D238(lzPaletteData, ewram);
LoadPalette(ewram, paletteOffset, 32);
if (species == SPECIES_CASTFORM)
{
u16 *paletteSrc = (u16 *)(ewram + 0x16400);
- sub_800D238(palette, paletteSrc);
+ sub_800D238(lzPaletteData, paletteSrc);
LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32);
}
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
diff --git a/src/battle_anim.c b/src/battle_anim.c
index cc856d5cd..55ede1788 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -58,8 +58,8 @@ extern struct MusicPlayerInfo gMPlay_SE2;
extern const u16 gUnknown_081C7160[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct SpriteSheet gBattleAnimPicTable[];
-extern const struct SpritePalette gBattleAnimPaletteTable[];
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
static void RunAnimScriptCommand(void);
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 5647d4593..116ca2cca 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -38,8 +38,8 @@ extern struct BerryTagStatus gUnknown_0203932E;
extern u16 gScriptItemId;
extern u16 gUnknown_030041B4;
-extern const struct SpriteSheet gUnknown_083C1F74;
-extern const struct SpritePalette gUnknown_083C1F7C;
+extern const struct CompressedSpriteSheet gUnknown_083C1F74;
+extern const struct CompressedSpritePalette gUnknown_083C1F7C;
extern u8 *gUnknown_0841192C[];
diff --git a/src/credits.c b/src/credits.c
index a7d6191e6..8ec126a41 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1495,7 +1495,7 @@ void spritecb_81454E0(struct Sprite *sprite) {
static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
{
u32 personality;
- const u16 *palette;
+ const u8 *lzPaletteData;
u8 spriteId;
u8 spriteId2;
@@ -1527,8 +1527,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
1
);
- palette = species_and_otid_get_pal(species, 0, 0xFFFF);
- LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20);
+ lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF);
+ LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20);
sub_8143648(position, position);
spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
diff --git a/src/decompress.c b/src/decompress.c
index 1d38447b5..d7f7087a7 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -16,57 +16,57 @@ void LZDecompressVram(const void *src, void *dest)
LZ77UnCompVram(src, dest);
}
-void LoadCompressedObjectPic(const struct SpriteSheet *a)
+void LoadCompressedObjectPic(const struct CompressedSpriteSheet *src)
{
- struct SpriteSheet spriteSheet;
+ struct SpriteSheet dest;
- LZ77UnCompWram(a->data, (void *)WRAM);
- spriteSheet.data = (void *)WRAM;
- spriteSheet.size = a->size;
- spriteSheet.tag = a->tag;
- LoadSpriteSheet(&spriteSheet);
+ LZ77UnCompWram(src->data, (void *)WRAM);
+ dest.data = (void *)WRAM;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
}
-void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer)
+void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer)
{
- struct SpriteSheet spriteSheet;
+ struct SpriteSheet dest;
- LZ77UnCompWram(a->data, buffer);
- spriteSheet.data = buffer;
- spriteSheet.size = a->size;
- spriteSheet.tag = a->tag;
- LoadSpriteSheet(&spriteSheet);
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
}
-void LoadCompressedObjectPalette(const struct SpritePalette *a)
+void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src)
{
- struct SpritePalette spritePalette;
+ struct SpritePalette dest;
- LZ77UnCompWram(a->data, (void *)WRAM);
- spritePalette.data = (void *)WRAM;
- spritePalette.tag = a->tag;
- LoadSpritePalette(&spritePalette);
+ LZ77UnCompWram(src->data, (void *)WRAM);
+ dest.data = (void *)WRAM;
+ dest.tag = src->tag;
+ LoadSpritePalette(&dest);
}
-void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer)
+void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer)
{
- struct SpritePalette spritePalette;
+ struct SpritePalette dest;
LZ77UnCompWram(a->data, buffer);
- spritePalette.data = buffer;
- spritePalette.tag = a->tag;
- LoadSpritePalette(&spritePalette);
+ dest.data = buffer;
+ dest.tag = a->tag;
+ LoadSpritePalette(&dest);
}
-void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 species)
+void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, u8 b, u8 c, void *d, void *buffer, s32 species)
{
if (species > SPECIES_EGG)
- LZ77UnCompWram(gMonFrontPicTable[0].data, e);
+ LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
else
- LZ77UnCompWram(a->data, e);
+ LZ77UnCompWram(src->data, buffer);
}
-void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g)
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g)
{
u32 frontOrBack;
@@ -76,10 +76,10 @@ void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32
else
frontOrBack = 1; // frontPic
- LoadSpecialPokePic(spriteSheet, b, c, d, dest, species, g, frontOrBack);
+ LoadSpecialPokePic(src, b, c, d, dest, species, g, frontOrBack);
}
-void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack)
+void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack)
{
u8 frontOrBack8 = frontOrBack;
@@ -101,7 +101,7 @@ void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32
else if (species > SPECIES_EGG) // is species unknown? draw the ? icon
LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
else
- LZ77UnCompWram(spriteSheet->data, dest);
+ LZ77UnCompWram(src->data, dest);
DrawSpindaSpots(species, g, dest, frontOrBack8);
}
diff --git a/src/field_effect.c b/src/field_effect.c
index 9591bb6a0..a7f0e4129 100755
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -657,7 +657,8 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
{
- const struct SpritePalette *spritePalette;
+ const struct CompressedSpritePalette *spritePalette;
+
HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g);
spritePalette = sub_80409C8(species, d, g);
LoadCompressedObjectPalette(spritePalette);
diff --git a/src/intro.c b/src/intro.c
index f13bd04e6..396f5e5df 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -31,7 +31,7 @@ extern struct GcmbStruct gMultibootProgramStruct;
extern u16 gSaveFileStatus;
extern u8 gReservedSpritePaletteCount;
extern const u8 gInterfaceGfx_PokeBall[];
-extern const u16 gInterfacePal_PokeBall[];
+extern const u8 gInterfacePal_PokeBall[];
extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
@@ -411,12 +411,12 @@ static const struct SpriteTemplate gSpriteTemplate_840AFF0 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813DA64,
};
-const struct SpriteSheet gUnknown_0840B008[] =
+const struct CompressedSpriteSheet gUnknown_0840B008[] =
{
{gIntroTiles, 0x1400, 2000},
{NULL},
};
-const struct SpriteSheet gUnknown_0840B018[] =
+const struct CompressedSpriteSheet gUnknown_0840B018[] =
{
{gIntro1EonTiles, 0x400, 2002},
{NULL},
@@ -738,17 +738,17 @@ static const struct SpriteTemplate gSpriteTemplate_840B1F4 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_813EDFC,
};
-const struct SpriteSheet gIntro3PokeballGfx_Table[] =
+const struct CompressedSpriteSheet gIntro3PokeballGfx_Table[] =
{
{gInterfaceGfx_PokeBall, 0x100, 2002},
{NULL},
};
-const struct SpriteSheet gIntro3MiscGfx_Table[] =
+const struct CompressedSpriteSheet gIntro3MiscGfx_Table[] =
{
{gIntro3MiscTiles, 0xa00, 2003},
{NULL},
};
-const struct SpritePalette gInterfacePokeballPal_Table[] =
+const struct CompressedSpritePalette gInterfacePokeballPal_Table[] =
{
{gInterfacePal_PokeBall, 2002},
{NULL},
@@ -1772,15 +1772,15 @@ void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha)
static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front)
{
- const u16 *pal;
+ const u8 *lzPaletteData;
u8 spriteId;
if (front)
LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1);
else
LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0);
- pal = species_and_otid_get_pal(species, 0, 0xFFFF);
- LoadCompressedPalette(pal, 0x100 + d * 0x10, 0x20);
+ lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF);
+ LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20);
sub_8143648(d, d);
spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4);
gSprites[spriteId].oam.paletteNum = d;
diff --git a/src/money.c b/src/money.c
index de0730951..ab4508a39 100644
--- a/src/money.c
+++ b/src/money.c
@@ -10,8 +10,8 @@
extern u16 gSpecialVar_0x8005;
extern u8 gUnknown_02038734;
-extern const struct SpriteSheet gUnknown_083CF584;
-extern const struct SpritePalette gUnknown_083CF58C;
+extern const struct CompressedSpriteSheet gUnknown_083CF584;
+extern const struct CompressedSpritePalette gUnknown_083CF58C;
extern const struct SpriteTemplate gSpriteTemplate_83CF56C;
bool8 IsEnoughMoney(u32 budget, u32 cost)
diff --git a/src/pokeball.c b/src/pokeball.c
index 4b2ba8212..c123130c6 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -2,6 +2,7 @@
#include "gba/m4a_internal.h"
#include "battle.h"
#include "decompress.h"
+#include "graphics.h"
#include "m4a.h"
#include "main.h"
#include "pokeball.h"
@@ -23,10 +24,276 @@ extern u8 gObjectBankIDs[];
extern u8 gDoingBattleAnim;
extern u8 gHealthboxIDs[];
-extern const struct SpriteSheet gUnknown_0820A92C[];
-extern const struct SpritePalette gUnknown_0820A98C[];
-extern const struct SpriteTemplate gSpriteTemplate_820AAB4[];
-extern const u8 gUnknown_08D030D0[];
+#define GFX_TAG_POKEBALL 55000
+#define GFX_TAG_GREATBALL 55001
+#define GFX_TAG_SAFARIBALL 55002
+#define GFX_TAG_ULTRABALL 55003
+#define GFX_TAG_MASTERBALL 55004
+#define GFX_TAG_NETBALL 55005
+#define GFX_TAG_DIVEBALL 55006
+#define GFX_TAG_NESTBALL 55007
+#define GFX_TAG_REPEATBALL 55008
+#define GFX_TAG_TIMERBALL 55009
+#define GFX_TAG_LUXURYBALL 55010
+#define GFX_TAG_PREMIERBALL 55011
+
+static const struct CompressedSpriteSheet sBallSpriteSheets[] =
+{
+ {gInterfaceGfx_PokeBall, 384, GFX_TAG_POKEBALL},
+ {gInterfaceGfx_GreatBall, 384, GFX_TAG_GREATBALL},
+ {gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARIBALL},
+ {gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRABALL},
+ {gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTERBALL},
+ {gInterfaceGfx_NetBall, 384, GFX_TAG_NETBALL},
+ {gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVEBALL},
+ {gInterfaceGfx_NestBall, 384, GFX_TAG_NESTBALL},
+ {gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEATBALL},
+ {gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMERBALL},
+ {gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURYBALL},
+ {gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIERBALL},
+};
+
+static const struct CompressedSpritePalette sBallSpritePalettes[] =
+{
+ {gInterfacePal_PokeBall, GFX_TAG_POKEBALL},
+ {gInterfacePal_GreatBall, GFX_TAG_GREATBALL},
+ {gInterfacePal_SafariBall, GFX_TAG_SAFARIBALL},
+ {gInterfacePal_UltraBall, GFX_TAG_ULTRABALL},
+ {gInterfacePal_MasterBall, GFX_TAG_MASTERBALL},
+ {gInterfacePal_NetBall, GFX_TAG_NETBALL},
+ {gInterfacePal_DiveBall, GFX_TAG_DIVEBALL},
+ {gInterfacePal_NestBall, GFX_TAG_NESTBALL},
+ {gInterfacePal_RepeatBall, GFX_TAG_REPEATBALL},
+ {gInterfacePal_TimerBall, GFX_TAG_TIMERBALL},
+ {gInterfacePal_LuxuryBall, GFX_TAG_LUXURYBALL},
+ {gInterfacePal_PremierBall, GFX_TAG_PREMIERBALL},
+};
+
+static const struct OamData sBallOamData =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sBallAnimSeq3[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq5[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq4[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq6[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sBallAnimSeq1[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sBallAnimSeq2[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sBallAnimSequences[] =
+{
+ sBallAnimSeq0,
+ sBallAnimSeq1,
+ sBallAnimSeq2,
+
+ // unused?
+ sBallAnimSeq3,
+ sBallAnimSeq4,
+ sBallAnimSeq5,
+ sBallAnimSeq6,
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq1[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -3, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq2[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 3, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq3[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq4[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 25, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const sBallAffineAnimSequences[] =
+{
+ sBallAffineAnimSeq0,
+ sBallAffineAnimSeq1,
+ sBallAffineAnimSeq2,
+ sBallAffineAnimSeq3,
+ sBallAffineAnimSeq4,
+};
+
+static void objc_0804ABD4(struct Sprite *sprite);
+const struct SpriteTemplate gBallSpriteTemplates[] =
+{
+ {
+ .tileTag = GFX_TAG_POKEBALL,
+ .paletteTag = GFX_TAG_POKEBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_GREATBALL,
+ .paletteTag = GFX_TAG_GREATBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_SAFARIBALL,
+ .paletteTag = GFX_TAG_SAFARIBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_ULTRABALL,
+ .paletteTag = GFX_TAG_ULTRABALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_MASTERBALL,
+ .paletteTag = GFX_TAG_MASTERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_NETBALL,
+ .paletteTag = GFX_TAG_NETBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_DIVEBALL,
+ .paletteTag = GFX_TAG_DIVEBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_NESTBALL,
+ .paletteTag = GFX_TAG_NESTBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_REPEATBALL,
+ .paletteTag = GFX_TAG_REPEATBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_TIMERBALL,
+ .paletteTag = GFX_TAG_TIMERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_LUXURYBALL,
+ .paletteTag = GFX_TAG_LUXURYBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+ {
+ .tileTag = GFX_TAG_PREMIERBALL,
+ .paletteTag = GFX_TAG_PREMIERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = objc_0804ABD4,
+ },
+};
extern u32 ball_number_to_ball_processing_index(u16); // not sure of return type
extern void sub_80786EC();
@@ -95,7 +362,7 @@ static void sub_8046464(u8 taskId)
ball = GetMonData(&gPlayerParty[gBattlePartyID[r5]], MON_DATA_POKEBALL);
r4 = ball_number_to_ball_processing_index(ball);
sub_80478DC(r4);
- spriteId = CreateSprite(&gSpriteTemplate_820AAB4[r4], 32, 80, 0x1D);
+ spriteId = CreateSprite(&gBallSpriteTemplates[r4], 32, 80, 0x1D);
gSprites[spriteId].data0 = 0x80;
gSprites[spriteId].data1 = 0;
gSprites[spriteId].data7 = r8;
@@ -103,13 +370,13 @@ static void sub_8046464(u8 taskId)
{
case 0xFF:
gBankTarget = r5;
- gSprites[spriteId].pos1.x = 0x18;
- gSprites[spriteId].pos1.y = 0x44;
+ gSprites[spriteId].pos1.x = 24;
+ gSprites[spriteId].pos1.y = 68;
gSprites[spriteId].callback = sub_8047074;
break;
case 0xFE:
gSprites[spriteId].pos1.x = sub_8077ABC(r5, 0);
- gSprites[spriteId].pos1.y = sub_8077ABC(r5, 1) + 0x18;
+ gSprites[spriteId].pos1.y = sub_8077ABC(r5, 1) + 24;
gBankTarget = r5;
gSprites[spriteId].data0 = 0;
gSprites[spriteId].callback = sub_8047254;
@@ -136,7 +403,7 @@ static void sub_8046464(u8 taskId)
PlaySE(SE_NAGERU);
}
-void objc_0804ABD4(struct Sprite *sprite)
+static void objc_0804ABD4(struct Sprite *sprite)
{
if (sub_8078718(sprite))
{
@@ -563,7 +830,7 @@ static void sub_8047074(struct Sprite *sprite)
{
sprite->data0 = 25;
sprite->data2 = sub_8077ABC(sprite->data6, 2);
- sprite->data4 = sub_8077ABC(sprite->data6, 3) + 0x18;
+ sprite->data4 = sub_8077ABC(sprite->data6, 3) + 24;
sprite->data5 = -30;
sprite->oam.affineParam = sprite->data6;
sub_80786EC(sprite);
@@ -628,7 +895,7 @@ static void sub_80470C4(struct Sprite *sprite)
static void sub_8047230(struct Sprite *sprite)
{
- if (sprite->data0++ > 0x18)
+ if (sprite->data0++ > 24)
{
sprite->data0 = 0;
sprite->callback = sub_8046C78;
@@ -663,9 +930,9 @@ void CreatePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 e, u8 f, u8 g, u32 h)
{
u8 spriteId;
- LoadCompressedObjectPic(&gUnknown_0820A92C[0]);
- LoadCompressedObjectPalette(&gUnknown_0820A98C[0]);
- spriteId = CreateSprite(&gSpriteTemplate_820AAB4[0], x, y, f);
+ LoadCompressedObjectPic(&sBallSpriteSheets[0]);
+ LoadCompressedObjectPalette(&sBallSpritePalettes[0]);
+ spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, f);
gSprites[spriteId].data0 = a;
gSprites[spriteId].data5 = gSprites[a].pos1.x;
gSprites[spriteId].data6 = gSprites[a].pos1.y;
@@ -752,9 +1019,9 @@ u8 sub_8047580(u8 a, u8 b, u8 x, u8 y, u8 e, u8 f, u8 g, u32 h)
{
u8 spriteId;
- LoadCompressedObjectPic(&gUnknown_0820A92C[0]);
- LoadCompressedObjectPalette(&gUnknown_0820A98C[0]);
- spriteId = CreateSprite(&gSpriteTemplate_820AAB4[0], x, y, f);
+ LoadCompressedObjectPic(&sBallSpriteSheets[0]);
+ LoadCompressedObjectPalette(&sBallSpritePalettes[0]);
+ spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, f);
gSprites[spriteId].data0 = a;
gSprites[spriteId].data1 = g;
gSprites[spriteId].data2 = b;
@@ -893,10 +1160,10 @@ void sub_80478DC(u8 a)
{
u16 var;
- if (GetSpriteTileStartByTag(gUnknown_0820A92C[a].tag) == 0xFFFF)
+ if (GetSpriteTileStartByTag(sBallSpriteSheets[a].tag) == 0xFFFF)
{
- LoadCompressedObjectPic(&gUnknown_0820A92C[a]);
- LoadCompressedObjectPalette(&gUnknown_0820A98C[a]);
+ LoadCompressedObjectPic(&sBallSpriteSheets[a]);
+ LoadCompressedObjectPalette(&sBallSpritePalettes[a]);
}
switch (a)
{
@@ -905,7 +1172,7 @@ void sub_80478DC(u8 a)
case 11:
break;
default:
- var = GetSpriteTileStartByTag(gUnknown_0820A92C[a].tag);
+ var = GetSpriteTileStartByTag(sBallSpriteSheets[a].tag);
LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + var * 32));
break;
}
@@ -913,8 +1180,8 @@ void sub_80478DC(u8 a)
void sub_804794C(u8 a)
{
- FreeSpriteTilesByTag(gUnknown_0820A92C[a].tag);
- FreeSpritePaletteByTag(gUnknown_0820A98C[a].tag);
+ FreeSpriteTilesByTag(sBallSpriteSheets[a].tag);
+ FreeSpritePaletteByTag(sBallSpritePalettes[a].tag);
}
static u16 sub_8047978(u8 a)
diff --git a/src/pokedex.c b/src/pokedex.c
index 8674c3d2b..17ae9a597 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -162,7 +162,7 @@ extern const u8 gUnknown_08E96ACC[];
extern const u8 gUnknown_08E96B58[];
extern const u16 gPokedexMenu_Pal[];
extern const u16 gPokedexMenu2_Pal[];
-extern const struct SpriteSheet gTrainerFrontPicTable[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct PokedexEntry gPokedexEntries[];
extern const u8 gPokedexMenuSearch_Gfx[];
@@ -493,7 +493,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A05B4 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_808F168,
};
-static const struct SpriteSheet gUnknown_083A05CC[] =
+static const struct CompressedSpriteSheet gUnknown_083A05CC[] =
{
{gPokedexMenu2_Gfx, 0x1F00, 0x1000},
{NULL, 0, 0},
@@ -3921,7 +3921,7 @@ static void sub_8090B8C(u8 taskId)
u32 otId;
u32 personality;
u8 paletteNum;
- const u16 *palette;
+ const u8 *lzPaletteData;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000);
@@ -3930,8 +3930,8 @@ static void sub_8090B8C(u8 taskId)
otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12];
personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14];
paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum;
- palette = species_and_otid_get_pal(species, otId, personality);
- LoadCompressedPalette(palette, 0x100 | paletteNum * 16, 32);
+ lzPaletteData = species_and_otid_get_pal(species, otId, personality);
+ LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32);
DestroyTask(taskId);
}
}
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index ef9a1698d..cb8eb2a46 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1172,7 +1172,7 @@ void current_map_music_set__default_for_battle(u16 song)
PlayNewMapMusic(sub_8040728());
}
-const u16 *pokemon_get_pal(struct Pokemon *mon)
+const u8 *pokemon_get_pal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -1186,7 +1186,7 @@ const u16 *pokemon_get_pal(struct Pokemon *mon)
//Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-const u16 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality)
+const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
@@ -1200,7 +1200,7 @@ const u16 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality)
return gMonPaletteTable[species].data;
}
-const struct SpritePalette *sub_8040990(struct Pokemon *mon)
+const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -1208,7 +1208,7 @@ const struct SpritePalette *sub_8040990(struct Pokemon *mon)
return sub_80409C8(species, otId, personality);
}
-const struct SpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality)
+const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality)
{
u32 shinyValue;
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index fb72be527..ecfd8111b 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -407,7 +407,7 @@ u8 sub_80C5044(void)
void ShowContestEntryMonPic(void)
{
- struct SpritePalette *paletteData;
+ const struct CompressedSpritePalette *palette;
u32 var1, var2;
u16 species;
u8 spriteId;
@@ -425,13 +425,18 @@ void ShowContestEntryMonPic(void)
taskId = CreateTask(sub_80C5190, 0x50);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = species;
- HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data,
- gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,
- (u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1);
- paletteData = (struct SpritePalette *) sub_80409C8(species, var2, var1);
- LoadCompressedObjectPalette(paletteData);
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ gMonFrontPicCoords[species].y_offset,
+ (u32)gUnknown_081FAF4C[0],
+ gUnknown_081FAF4C[1],
+ species,
+ var1);
+ palette = sub_80409C8(species, var2, var1);
+ LoadCompressedObjectPalette(palette);
GetMonSpriteTemplate_803C56C(species, 1);
- gUnknown_02024E8C.paletteTag = paletteData->tag;
+ gUnknown_02024E8C.paletteTag = palette->tag;
spriteId = CreateSprite(&gUnknown_02024E8C, 0x78, 0x40, 0);
gTasks[taskId].data[2] = spriteId;
gTasks[taskId].data[3] = left;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index f30be8e08..c838f2dc0 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -172,12 +172,12 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
{
gSpriteAffineAnim_83F7774,
};
-static const struct SpriteSheet gUnknown_083F7794[] =
+static const struct CompressedSpriteSheet gUnknown_083F7794[] =
{
{gBirchBallarrow_Gfx, 0x0800, 0x1000},
{NULL},
};
-static const struct SpriteSheet gUnknown_083F77A4[] =
+static const struct CompressedSpriteSheet gUnknown_083F77A4[] =
{
{gBirchCircle_Gfx, 0x0800, 0x1001},
{NULL},
diff --git a/src/title_screen.c b/src/title_screen.c
index 12c31d10a..dd06956c3 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -152,7 +152,7 @@ static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallback_VersionBannerRight,
};
-static const struct SpriteSheet gUnknown_08393EFC[] =
+static const struct CompressedSpriteSheet gUnknown_08393EFC[] =
{
{gVersionTiles, 0x1000, 1000},
{NULL},
@@ -234,7 +234,7 @@ static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallback_PressStartCopyrightBanner,
};
-static const struct SpriteSheet gUnknown_08393F8C[] =
+static const struct CompressedSpriteSheet gUnknown_08393F8C[] =
{
{gTitleScreenPressStart_Gfx, 0x520, 1001},
{NULL},
@@ -279,7 +279,7 @@ static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallback_PokemonLogoShine,
};
-static const struct SpriteSheet sPokemonLogoShineSpriteSheet[] =
+static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] =
{
{sLogoShineTiles, 0x800, 1002},
{NULL},
diff --git a/src/wallclock.c b/src/wallclock.c
index efc7dd42a..8db13dc2d 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -24,7 +24,7 @@ extern u16 gMiscClockFemale_Pal[];
//--------------------------------------------------
static const u8 ClockGfx_Misc[] = INCBIN_U8("graphics/misc/clock_misc.4bpp.lz");
-static const struct SpriteSheet gUnknown_083F7A90[] =
+static const struct CompressedSpriteSheet gUnknown_083F7A90[] =
{
{ClockGfx_Misc, 0x2000, 0x1000},
{NULL},