セーブ機能の前に、後回ししていたエフェクト処理を追加しました。
・・・作業としてはこんな感じです。
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なので大丈夫でした。
正直いって地味作業すぎますね・・・。(^^;