summaryrefslogtreecommitdiff
path: root/src/decompress.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/decompress.c')
-rw-r--r--src/decompress.c67
1 files changed, 33 insertions, 34 deletions
diff --git a/src/decompress.c b/src/decompress.c
index adc6798b6..8f573fecb 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,6 +1,7 @@
#include "global.h"
+#include "decompress.h"
#include "species.h"
-#include "sprite.h"
+#include "asm.h"
#define WRAM 0x02000000
@@ -8,10 +9,6 @@ extern struct SpriteSheet gMonFrontPicTable[];
extern struct SpriteSheet gMonBackPicTable[];
extern void *gUnknown_081FAF4C[];
-extern void DrawSpindaSpots(u16, u32, void *, u8);
-
-void sub_800D378(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *e, s32 f, u32 g, u32 h);
-
void sub_800D238(const void *src, void *dest)
{
LZ77UnCompWram(src, dest);
@@ -22,7 +19,7 @@ void LZDecompressVram(const void *src, void *dest)
LZ77UnCompVram(src, dest);
}
-void LoadCompressedObjectPic(struct SpriteSheet *a)
+void LoadCompressedObjectPic(const struct SpriteSheet *a)
{
struct SpriteSheet spriteSheet;
@@ -33,7 +30,7 @@ void LoadCompressedObjectPic(struct SpriteSheet *a)
LoadSpriteSheet(&spriteSheet);
}
-void LoadCompressedObjectPicOverrideBuffer(struct SpriteSheet *a, void *buffer)
+void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer)
{
struct SpriteSheet spriteSheet;
@@ -44,7 +41,7 @@ void LoadCompressedObjectPicOverrideBuffer(struct SpriteSheet *a, void *buffer)
LoadSpriteSheet(&spriteSheet);
}
-void LoadCompressedObjectPalette(struct SpritePalette *a)
+void LoadCompressedObjectPalette(const struct SpritePalette *a)
{
struct SpritePalette spritePalette;
@@ -54,7 +51,7 @@ void LoadCompressedObjectPalette(struct SpritePalette *a)
LoadSpritePalette(&spritePalette);
}
-void LoadCompressedObjectPaletteOverrideBuffer(struct SpritePalette *a, void *buffer)
+void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer)
{
struct SpritePalette spritePalette;
@@ -64,53 +61,55 @@ void LoadCompressedObjectPaletteOverrideBuffer(struct SpritePalette *a, void *bu
LoadSpritePalette(&spritePalette);
}
-void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f)
+void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 species)
{
- if (f > 412)
+ if (species > SPECIES_EGG)
LZ77UnCompWram(gMonFrontPicTable[0].data, e);
else
LZ77UnCompWram(a->data, e);
}
-void sub_800D334(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g)
+void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g)
{
- u32 unk;
+ u32 frontOrBack;
+ // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
if (dest == gUnknown_081FAF4C[0] || dest == gUnknown_081FAF4C[2])
- unk = 0;
+ frontOrBack = 0; // backPic
else
- unk = 1;
- sub_800D378(a, b, c, d, dest, f, g, unk);
+ frontOrBack = 1; // frontPic
+
+ LoadSpecialPokePic(spriteSheet, b, c, d, dest, species, g, frontOrBack);
}
-void sub_800D378(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g, u32 h)
+void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 frontOrBack)
{
- u8 r7 = h;
+ u8 frontOrBack8 = frontOrBack;
- if (f == SPECIES_UNOWN)
+ if (species == SPECIES_UNOWN)
{
- u16 r1 = (((g & 0x3000000) >> 18) | ((g & 0x30000) >> 12) | ((g & 0x300) >> 6) | (g & 3)) % 0x1C;
+ u16 i = (((g & 0x3000000) >> 18) | ((g & 0x30000) >> 12) | ((g & 0x300) >> 6) | (g & 3)) % 0x1C;
- if (r1 == 0)
- r1 = SPECIES_UNOWN;
+ // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
+ if (i == 0)
+ i = SPECIES_UNOWN;
else
- r1 += 412;
- if (r7 == 0)
- LZ77UnCompWram(gMonBackPicTable[r1].data, dest);
+ i += SPECIES_EGG;
+
+ if (frontOrBack8 == 0)
+ LZ77UnCompWram(gMonBackPicTable[i].data, dest);
else
- LZ77UnCompWram(gMonFrontPicTable[r1].data, dest);
+ LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
}
+ else if (species > SPECIES_EGG) // is species unknown? draw the ? icon
+ LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
else
- {
- if (f > 412)
- LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
- else
- LZ77UnCompWram(a->data, dest);
- }
- DrawSpindaSpots(f, g, dest, r7);
+ LZ77UnCompWram(spriteSheet->data, dest);
+
+ DrawSpindaSpots(species, g, dest, frontOrBack8);
}
-static void Unused_LZDecompressWramIndirect(const void **src, void *dest)
+void Unused_LZDecompressWramIndirect(const void **src, void *dest)
{
LZ77UnCompWram(*src, dest);
}