А прикол. До сих пор среди примеров идущих в комплекте нет такой банальной штуки, как тайл-анимашка. Даже в примере с Саником фон статичен [даже стеф не осилил  ]
]
Да, это бы не помешало!  

В случае с анимациями придётся наверное свой велосипед делать.  Две стратегии:
1. Перезаписывать весь тайл. DMA поможет.
2. Перезаписывать  участок VRAM, отведённый под TileMap (1 байт)
Первый способ более медленный, зато есть возможность подгружать тайлы с ROM.
---
Столкнулся с такой проблемой. Делаю переключение персов (1 перс - свой атлас анимаций, своя палитра, свои спрайты).  Список спрайтов заполняется(идёт вниз) до конца по мере переключения между персами.  В настоящее время нужен только один перс.
Спасла дефрагментация Sprite VRAM.  С ней перс пересоздаётся в той же VRAM и перерасхода нет:
void Person_Create(struct Person *p,const SpriteDefinition *sd)
{
 SPR_releaseSprite(p->sprite);
 SPR_defragVRAM();
 p->sprite=SPR_addSprite(sd,p->X,p->Y,TILE_ATTR(PAL0,FALSE,FALSE,p->H));
 SPR_setAnim(p->sprite,0);   //always 0
 SPR_setFrame(p->sprite,27); //IDLE
 SPR_update();
 SYS_doVBlankProcess();
 VDP_setPalette(PAL0,sd->palette->data);
}
Ещё пришлось костыль поставить перед переключением палитры:
 SPR_update();
 SYS_doVBlankProcess();
Потому что палитра меняется сразу,  а спрайты только после SPR_Update.
Иначе видно переключение палитры во время смены персонажа и старого персонажа с новой палитрой.
Переключение персонажей сделал - так же как в Bucky O'Hare. По нажатию кнопки.
Есть ли в SGDK способ отложенно апдейтнуть палитру  синхронно с SPR_Update ?  Просто у меня уже один SPR_Update в цикле есть, а при пересоздании перса приходится его вызывать ещё раз, чтобы избежать артефактов с палитрой.
Можно конечно, программными флагами, но а вдруг есть более красивое решение?  

ИМХО немного нелогично получается:  палитра перезаписывается сразу, а спрайты после SPR_Update.