diff --git a/src/fieldmap.c b/src/fieldmap.c index 1c792cb10e..dbda92b2f7 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -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;