Take a stab at Mapper 212 in QucikNes. Something isn't working right.
This commit is contained in:
parent
738d041288
commit
0570de5637
Binary file not shown.
|
@ -263,6 +263,74 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Mapper_212 : public Nes_Mapper {
|
||||||
|
|
||||||
|
int reg;
|
||||||
|
void writeinternal(int data, int changed)
|
||||||
|
{
|
||||||
|
reg = data;
|
||||||
|
|
||||||
|
if (changed & 0x0007)
|
||||||
|
{
|
||||||
|
set_chr_bank(0x0000, bank_8k, reg & 0x0007);
|
||||||
|
}
|
||||||
|
if (changed & 0x0008)
|
||||||
|
{
|
||||||
|
if (reg & 0x0008)
|
||||||
|
{
|
||||||
|
mirror_horiz();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mirror_vert();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changed & 0x4007)
|
||||||
|
{
|
||||||
|
if (reg & 0x4000)
|
||||||
|
{
|
||||||
|
set_prg_bank(0x8000, bank_32k, reg >> 1 & 0x0003);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set_prg_bank(0x8000, bank_16k, reg & 0x0007);
|
||||||
|
set_prg_bank(0xc000, bank_16k, reg & 0x0007);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
Mapper_212()
|
||||||
|
{
|
||||||
|
register_state(®, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void reset_state()
|
||||||
|
{
|
||||||
|
reg = 0xffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void apply_mapping()
|
||||||
|
{
|
||||||
|
//intercept_reads(0xe000, 0x2000); // some sort of bus conflict or anti-piracy bs
|
||||||
|
writeinternal(reg, 0xffff);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
// as written. this will never be hit. what's going on?
|
||||||
|
virtual int read( nes_time_t time, nes_addr_t addr )
|
||||||
|
{
|
||||||
|
int ret = Nes_Mapper::read(time, addr);
|
||||||
|
if ((addr & 0xe010) == 0x6000)
|
||||||
|
ret |= 0x80;
|
||||||
|
return ret;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
virtual void write( nes_time_t, nes_addr_t addr, int data)
|
||||||
|
{
|
||||||
|
writeinternal(addr, addr ^ reg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void register_misc_mappers();
|
void register_misc_mappers();
|
||||||
void register_misc_mappers()
|
void register_misc_mappers()
|
||||||
{
|
{
|
||||||
|
@ -274,5 +342,6 @@ void register_misc_mappers()
|
||||||
register_mapper<Mapper_Quattro>( 232 );
|
register_mapper<Mapper_Quattro>( 232 );
|
||||||
|
|
||||||
register_mapper<Mapper_78>( 78 );
|
register_mapper<Mapper_78>( 78 );
|
||||||
|
register_mapper<Mapper_212>( 212 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue