fix: allowed loading non-word-aligned tileset palettes

This commit is contained in:
Ariel A 2025-01-25 20:59:08 -05:00
parent 16c31d61b4
commit 521bea6bc3

View File

@ -881,7 +881,7 @@ static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u1
{
// LoadPalette(&black, destOffset, 2);
if (skipFaded)
CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size);
CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size); // always word-aligned
else
LoadPaletteFast(tileset->palettes, destOffset, size);
gPlttBufferFaded[destOffset] = gPlttBufferUnfaded[destOffset] = RGB_BLACK; // why does it have to be black?
@ -891,10 +891,14 @@ static void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u1
}
else if (tileset->isSecondary == TRUE)
{
// (void*) is to silence 'source potentially unaligned' error
// All 'gTilesetPalettes_' arrays should have ALIGNED(4) in them
// All 'gTilesetPalettes_' arrays should have ALIGNED(4) in them,
// but we use SmartCopy here just in case they don't
if (skipFaded)
CpuFastCopy((void*)tileset->palettes[NUM_PALS_IN_PRIMARY], &gPlttBufferUnfaded[destOffset], size);
#ifdef CpuSmartCopy16
CpuSmartCopy16(tileset->palettes[NUM_PALS_IN_PRIMARY], &gPlttBufferUnfaded[destOffset], size);
#else
CpuCopy16(tileset->palettes[NUM_PALS_IN_PRIMARY], &gPlttBufferUnfaded[destOffset], size);
#endif
else
LoadPaletteFast(tileset->palettes[NUM_PALS_IN_PRIMARY], destOffset, size);
low = NUM_PALS_IN_PRIMARY;