出来ることはひととおり試してみたので一旦ここでリファクタリングしたよ
全部 main.c と適当なスタックで hoge とか foo とかでやってたのをきれいきれいに
あとワークエリアは流石にu8 buf[16]; とかしておいて
「(s16)(((s16*)buf)+0) は x で…+2 は y で…」なんてやってられないので
{ s16, x, y; s16 n, c; Sprite *spr; u16 pad[2]; } *HOGE
とかで this = (HOGE)buf; してから this->x とか this->y とか にしたらだいぶ見た目がふつうになったンゴ!
あと構造体でのアクセスがめちゃんこ遅いという噂があったけどどうにもならんて感じじゃないので気にしないことに(計測する余裕がないンゴ!)