Yet Another NEC PC-6001mk2 SR Emulator その2

SUB-CPU実装されている!しかもディスク関連(FD1~FD4)も書き直して頂けた。

http://takeda-toshiya.seesaa.net/archives/20140526-1.html

f:id:tanam:20140526231048p:image:w360

さらにSR対応も取り込んで頂けたのですが、FM音源が鳴らなかったり、機種判定が間違ったりしてたのを修正しました。(アップデートがあり既に修正されたようです。)

http://sbeach.seesaa.net/article/397250545.html#comment

pc6001.cpp

	io->set_iomap_alias_r(0xa3, psg, 0);			// FM status
	io->set_iomap_range_rw(0x40, 0x6f, memory);		// VRAM addr
#endif
#ifdef _PC6001
	io->set_iomap_single_w(0xb0, display);			// VRAM addr
	io->set_iomap_single_w(0x00, memory);			// MEMORY MAP
#else
	io->set_iomap_single_w(0xb0, memory);			// VRAM addr
	io->set_iomap_single_r(0xb2, memory);			// SR mode

memory.cpp


uint32 MEMORY::read_io8(uint32 addr)
{
	uint16 port=(addr & 0x00ff);
	byte Value=0xff;

	switch(port)
	{
#if defined(_PC6601SR) || defined(_PC6001MK2SR)
	case 0x60:case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66:case 0x67:
	case 0x68:case 0x69:case 0x6a:case 0x6b:case 0x6c:case 0x6d:case 0x6e:case 0x6f:
		Value=port60[ port-0x60 ];
		break;
	case 0xB2:
#ifdef _PC6601SR
		Value=2;
#else
		Value=0;
#endif
		break;
	case 0xC0: Value=0xff;break;
	case 0xC2: Value=0xff;break;
#endif
	case 0xF0: if (!vm->sr_mode) Value=portF0;break;
	case 0xF1: if (!vm->sr_mode) Value=portF1;break;
	}
	return(Value);
}
#endif

あとは音声合成を実装して、mk2 SRでコロニーオデッセイが実行出来るまで頑張ろう。