Fixed removeobject
clearing the palettes of unloaded dummy sprites.
This commit is contained in:
parent
483d4b3448
commit
13565fc023
1 changed files with 10 additions and 2 deletions
|
@ -1389,8 +1389,16 @@ static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent)
|
|||
image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size;
|
||||
gSprites[objectEvent->spriteId].images = ℑ
|
||||
paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum;
|
||||
DestroySprite(&gSprites[objectEvent->spriteId]);
|
||||
FieldEffectFreePaletteIfUnused(paletteNum);
|
||||
// It's possible that this function is called while the sprite pointed to `== sDummySprite`, i.e during map resume;
|
||||
// In this case, don't free the palette as `paletteNum` is likely blank dummy data
|
||||
if (!gSprites[objectEvent->spriteId].inUse &&
|
||||
!gSprites[objectEvent->spriteId].oam.paletteNum &&
|
||||
gSprites[objectEvent->spriteId].callback == SpriteCallbackDummy) {
|
||||
DestroySprite(&gSprites[objectEvent->spriteId]);
|
||||
} else {
|
||||
DestroySprite(&gSprites[objectEvent->spriteId]);
|
||||
FieldEffectFreePaletteIfUnused(paletteNum);
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveAllObjectEventsExceptPlayer(void)
|
||||
|
|
Loading…
Reference in a new issue