37 lines
794 B
C++
37 lines
794 B
C++
|
//////////////////////////////////////////////////////////////////////////
|
||
|
// Mapper141 //
|
||
|
//////////////////////////////////////////////////////////////////////////
|
||
|
void Mapper141::Reset()
|
||
|
{
|
||
|
for(INT i=0;i<8;i++) reg[i]=0;
|
||
|
SetVROM_8K_Bank(0);
|
||
|
cmd=0;
|
||
|
SetBank();
|
||
|
}
|
||
|
|
||
|
void Mapper141::WriteLow( WORD addr, BYTE data )
|
||
|
{
|
||
|
addr&=0x4101;
|
||
|
if (addr==0x4100)
|
||
|
cmd=data;
|
||
|
else {
|
||
|
reg[cmd&7]=data;
|
||
|
SetBank();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Mapper141::SetBank()
|
||
|
{
|
||
|
SetPROM_32K_Bank(reg[5]&7);
|
||
|
for(INT i=0;i<4;i++){
|
||
|
int bank;
|
||
|
if(reg[7]&1) bank=(reg[0]&7)|((reg[4]&7)<<3);
|
||
|
else bank=(reg[i]&7)|((reg[4]&7)<<3);
|
||
|
bank=(bank<<1)|(i&1);
|
||
|
SetVROM_2K_Bank(i*2, bank);
|
||
|
}
|
||
|
if(reg[7]&1) SetVRAM_Mirror(VRAM_VMIRROR);
|
||
|
else SetVRAM_Mirror(VRAM_HMIRROR);
|
||
|
|
||
|
}
|