AxibugEmuOnline/References/VirtuaNESex_src_191105/NES/Mapper/Mapper086.cpp
2024-08-05 17:58:53 +08:00

45 lines
963 B
C++

//////////////////////////////////////////////////////////////////////////
// Mapper086 Jaleco Early Mapper #2 //
//////////////////////////////////////////////////////////////////////////
void Mapper086::Reset()
{
SetPROM_32K_Bank( 0, 1, 2, 3 );
SetVROM_8K_Bank( 0 );
reg = 0xFF;
cnt = 0;
}
void Mapper086::WriteLow( WORD addr, BYTE data )
{
if( addr == 0x6000 ) {
SetPROM_32K_Bank( (data&0x30)>>4 );
SetVROM_8K_Bank( (data&0x03)|((data & 0x40)>>4) );
}
if( addr == 0x7000 ) {
if( !(reg&0x10) && (data&0x10) && !cnt ) {
//DEBUGOUT( "WR:$%02X\n", data );
if( (data&0x0F) == 0 // Strike
|| (data&0x0F) == 5 ) { // Foul
cnt = 60; // 次の発声を1秒程禁止する
}
// OSDにするべきか…
if( Config.sound.bExtraSoundEnable ) {
DirectSound.EsfAllStop();
DirectSound.EsfPlay( ESF_MOEPRO_STRIKE+(data&0x0F) );
}
}
reg = data;
}
}
void Mapper086::VSync()
{
if( cnt ) {
cnt--;
}
}