mmc1 系スクリプト

他のスクリプトにも問題があったり、 flash script のエラーが index error に吸われてわからないとかいろいろあるので更新できない... ので先に mmc1 だけ。

mmc1_slrom.af の cpu_transfer() を下記に変更してください。

function cpu_transfer(d, start, end, cpu_banksize)
{
	local i = 0;
	for(i = start; i < end - 2; i += 2){
		mmc1_write(d, 0x8000, 0x1c);
		mmc1_write(d, 0xe000, i | 0);
		cpu_program(d, 0x8000, cpu_banksize);
		
		mmc1_write(d, 0x8000, 0x18);
		mmc1_write(d, 0xe000, i | 1);
		cpu_program(d, 0xc000, cpu_banksize);
	}
	mmc1_write(d, 0x8000, 0x1c);
	mmc1_write(d, 0xe000, i);
	cpu_program(d, 0x8000, cpu_banksize);
	cpu_program(d, 0xc000, cpu_banksize);
}

mmc1_surom.af も同様。

function cpu_transfer(d, start, end, cpu_banksize)
{
	for(local k = 0; k < 0x20; k += 0x10){
		mmc1_write(d, 0xa000, k);
		for(local i = 0; i < 0x10; i += 2){
			//even page
			mmc1_write(d, 0x8000, 0x0c);
			mmc1_write(d, 0xe000, i);
			cpu_program(d, 0x8000, 0x4000);
			
			//odd page
			mmc1_write(d, 0x8000, 0x08);
			mmc1_write(d, 0xe000, i | 1);
			cpu_program(d, 0xc000, 0x4000);
		}
	}
}

コマンドアドレスの定義が完全に蛇足でした... この間違いに1年間気づきませんでした。いままで mmc1 系はコマンドアドレス A10-A0 type でだけかけてました。確認しなくてごめんなさい。