Added LoadPaletteFast function.
This commit is contained in:
parent
ea6c1a9e40
commit
bc2b50cd2e
@ -1645,7 +1645,7 @@ u8 LoadSpritePaletteInSlot(const struct SpritePalette *palette, u8 paletteNum) {
|
||||
|
||||
void DoLoadSpritePalette(const u16 *src, u16 paletteOffset)
|
||||
{
|
||||
LoadPalette(src, paletteOffset + 0x100, 32);
|
||||
LoadPaletteFast(src, paletteOffset + 0x100, 32);
|
||||
}
|
||||
|
||||
u8 AllocSpritePalette(u16 tag)
|
||||
|
||||
@ -42,7 +42,7 @@ void InitTrainerHillMap(void);
|
||||
void InitBattlePyramidMap(bool8 setPlayerPosition);
|
||||
void CopyMapTilesetsToVram(struct MapLayout const *mapLayout);
|
||||
void LoadMapTilesetPalettes(struct MapLayout const *mapLayout);
|
||||
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout);
|
||||
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded);
|
||||
void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout);
|
||||
void CopyPrimaryTilesetToVram(const struct MapLayout *);
|
||||
void CopySecondaryTilesetToVram(const struct MapLayout *);
|
||||
|
||||
@ -66,6 +66,7 @@ extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
|
||||
|
||||
void LoadCompressedPalette(const u32 *, u16, u16);
|
||||
void LoadPalette(const void *, u16, u16);
|
||||
void LoadPaletteFast(const void *src, u16 offset, u16 size);
|
||||
void FillPalette(u16, u16, u16);
|
||||
void TransferPlttBuffer(void);
|
||||
u8 UpdatePaletteFade(void);
|
||||
|
||||
@ -870,9 +870,8 @@ static void FieldmapUnkDummy(void)
|
||||
|
||||
}
|
||||
|
||||
void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size, bool8 skipFaded)
|
||||
{
|
||||
u16 black = RGB_BLACK;
|
||||
u32 low = 0;
|
||||
u32 high = 0;
|
||||
|
||||
@ -880,15 +879,22 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
{
|
||||
if (tileset->isSecondary == FALSE)
|
||||
{
|
||||
LoadPalette(&black, destOffset, 2);
|
||||
LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2);
|
||||
// LoadPalette(&black, destOffset, 2);
|
||||
if (skipFaded)
|
||||
CpuFastCopy(tileset->palettes, &gPlttBufferUnfaded[destOffset], size);
|
||||
else
|
||||
LoadPaletteFast(((u16*)tileset->palettes), destOffset, size);
|
||||
gPlttBufferFaded[destOffset] = gPlttBufferUnfaded[destOffset] = RGB_BLACK; // why does it have to be black?
|
||||
FieldmapPaletteDummy(destOffset + 1, (size - 2) >> 1);
|
||||
low = 0;
|
||||
high = NUM_PALS_IN_PRIMARY;
|
||||
}
|
||||
else if (tileset->isSecondary == TRUE)
|
||||
{
|
||||
LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
|
||||
if (skipFaded)
|
||||
CpuFastCopy(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), &gPlttBufferUnfaded[destOffset], size);
|
||||
else
|
||||
LoadPaletteFast(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
|
||||
low = NUM_PALS_IN_PRIMARY;
|
||||
high = NUM_PALS_TOTAL;
|
||||
}
|
||||
@ -928,12 +934,12 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout)
|
||||
|
||||
static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2);
|
||||
LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2, FALSE);
|
||||
}
|
||||
|
||||
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout)
|
||||
void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout, bool8 skipFaded)
|
||||
{
|
||||
LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2);
|
||||
LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2, skipFaded);
|
||||
}
|
||||
|
||||
void CopyMapTilesetsToVram(struct MapLayout const *mapLayout)
|
||||
@ -950,6 +956,6 @@ void LoadMapTilesetPalettes(struct MapLayout const *mapLayout)
|
||||
if (mapLayout)
|
||||
{
|
||||
LoadPrimaryTilesetPalette(mapLayout);
|
||||
LoadSecondaryTilesetPalette(mapLayout);
|
||||
LoadSecondaryTilesetPalette(mapLayout, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -820,7 +820,7 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
|
||||
RunOnTransitionMapScript();
|
||||
InitMap();
|
||||
CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout);
|
||||
LoadSecondaryTilesetPalette(gMapHeader.mapLayout);
|
||||
LoadSecondaryTilesetPalette(gMapHeader.mapLayout, TRUE); // skip copying to Faded, gamma shift will take care of it
|
||||
|
||||
ApplyWeatherGammaShiftToPals(6, 6); // palettes [6,12]
|
||||
|
||||
|
||||
@ -96,6 +96,13 @@ void LoadPalette(const void *src, u16 offset, u16 size)
|
||||
CpuCopy16(src, &gPlttBufferFaded[offset], size);
|
||||
}
|
||||
|
||||
// Drop in replacement for LoadPalette, uses CpuFastCopy, size must be 0 % 32
|
||||
void LoadPaletteFast(const void *src, u16 offset, u16 size) {
|
||||
CpuFastCopy(src, &gPlttBufferUnfaded[offset], size);
|
||||
// Copying from EWRAM->EWRAM is faster than ROM->EWRAM
|
||||
CpuFastCopy(&gPlttBufferUnfaded[offset], &gPlttBufferFaded[offset], size);
|
||||
}
|
||||
|
||||
void FillPalette(u16 value, u16 offset, u16 size)
|
||||
{
|
||||
CpuFill16(value, &gPlttBufferUnfaded[offset], size);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user