あーさん日記

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

リハビリ14

flash対応完了。実機動作も確認しました。
以下の関数でsramかどうか判定しています。

EWRAM_CODE bool BakIsFlash(void)
{
	u8 t1 = BakRead2(0x7FFF);
	u8 t2 = ~t1;

	BakWrite2(0x7FFF, t2);
	BakWrite2(0x7FFF, t2+1); // もう一度書き込む(flash erase済みの可能性もあるので)

	if(BakRead2(0x7FFF) == t2+1)
	{
		BakWrite2(0x7FFF, t1);

		return FALSE;
	}

	return TRUE;
}

flashはセクタ削除や書き込むにウェイト使うのでちょっとプチフリします。