44 lines
1.0 KiB
C++
44 lines
1.0 KiB
C++
|
|
/////////////////////////////////////////////////////////////////////
|
|
// Mapper 4
|
|
class NES_mapper4 : public NES_mapper
|
|
{
|
|
friend void adopt_MPRD(SnssMapperBlock* block, NES* nes);
|
|
friend int extract_MPRD(SnssMapperBlock* block, NES* nes);
|
|
|
|
public:
|
|
NES_mapper4(NES* parent) : NES_mapper(parent) {}
|
|
~NES_mapper4() {}
|
|
|
|
void Reset();
|
|
|
|
uint8 MemoryReadLow(uint32 addr);
|
|
void MemoryWrite(uint32 addr, uint8 data);
|
|
void HSync(uint32 scanline);
|
|
|
|
protected:
|
|
uint8 patch;
|
|
uint8 regs[8];
|
|
|
|
uint32 prg0,prg1;
|
|
uint32 chr01,chr23,chr4,chr5,chr6,chr7;
|
|
|
|
uint32 chr_swap() { return regs[0] & 0x80; }
|
|
uint32 prg_swap() { return regs[0] & 0x40; }
|
|
|
|
uint8 irq_enabled; // IRQs enabled
|
|
uint8 irq_counter; // IRQ scanline counter, decreasing
|
|
uint8 irq_latch; // IRQ scanline counter latch
|
|
|
|
uint8 vs_index; // VS Atari RBI Baseball and VS TKO Boxing
|
|
|
|
void MMC3_set_CPU_banks();
|
|
void MMC3_set_PPU_banks();
|
|
|
|
void SNSS_fixup(); // HACK HACK HACK HACK
|
|
|
|
private:
|
|
};
|
|
/////////////////////////////////////////////////////////////////////
|
|
|