あーさん日記

https://akkera102.sakura.ne.jp/gbadev/ の中の人

リハビリ12

セーブ機能の前に、後回ししていたエフェクト処理を追加しました。
・・・作業としてはこんな感じです。


1.ゲームをキャプチャ録画してフレーム単位で動作を見てみる。
2.変化しているドットを色分けする。1フレーム目は黒、2フレーム目はオレンジ、3フレーム目は緑(以下略。
f:id:akkera102:20181031001834p:plain
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をキャプチャ録画。
f:id:akkera102:20181031002051p:plain
5.最後にVCOUNTを測定して画面がちらつかないか調べる。
今回は167->217なので大丈夫でした。


正直いって地味作業すぎますね・・・。(^^;