セーブ機能の前に、後回ししていたエフェクト処理を追加しました。
・・・作業としてはこんな感じです。
1.ゲームをキャプチャ録画してフレーム単位で動作を見てみる。
2.変化しているドットを色分けする。1フレーム目は黒、2フレーム目はオレンジ、3フレーム目は緑(以下略。
3.エフェクト用のコードに落とす。
IWRAM_CODE void Mode3DrawFadeMask(s32 step)
{
const s32 sx[8] = { 0, 2, 1, 3, 1, 3, 0, 2 };
const s32 sy[8] = { 0, 0, 1, 1, 0, 0, 1, 1 };
s32 x, y;
for(y=0; y<SCREEN_CY; y+=4)
{
u16* s1 = Mode3.buf + sx[step] + (y + sy[step]) * SCREEN_CX;
u16* d1 = (u16*)VRAM + sx[step] + (y + sy[step]) * SCREEN_CX;
u16* s2 = s1 + 2 + SCREEN_CX * 2;
u16* d2 = d1 + 2 + SCREEN_CX * 2;
for(x=0; x<SCREEN_CX; x+=4)
{
*d1 = *s1;
s1 += 4;
d1 += 4;
*d2 = *s2;
s2 += 4;
d2 += 4;
}
}
}
4.動作確認のため、VBAをキャプチャ録画。
5.最後にVCOUNTを測定して画面がちらつかないか調べる。
今回は167->217なので大丈夫でした。
正直いって地味作業すぎますね・・・。(^^;