54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
|
|
/////////////////////////////////////////////////////////////////////
|
|
// Mapper 1
|
|
class NES_mapper1 : public NES_mapper
|
|
{
|
|
friend void adopt_MPRD(SnssMapperBlock* block, NES* nes);
|
|
friend int extract_MPRD(SnssMapperBlock* block, NES* nes);
|
|
|
|
public:
|
|
NES_mapper1(NES* parent) : NES_mapper(parent) {}
|
|
~NES_mapper1() {}
|
|
|
|
void Reset();
|
|
void MemoryWriteSaveRAM(uint32 addr, uint8 data);
|
|
void MemoryWrite(uint32 addr, uint8 data);
|
|
|
|
protected:
|
|
// this uses MMC1_256K_base and MMC1_bankX
|
|
void MMC1_set_CPU_banks();
|
|
|
|
uint32 write_count;
|
|
uint8 bits;
|
|
uint8 regs[4];
|
|
uint32 last_write_addr;
|
|
|
|
// Best Play - Pro Yakyuu Special
|
|
uint8 patch;
|
|
uint8 wram_bank, wram_flag, wram_count;
|
|
uint8 wram[0x4000];
|
|
|
|
enum MMC1_Size_t
|
|
{
|
|
MMC1_SMALL,
|
|
MMC1_512K,
|
|
MMC1_1024K
|
|
};
|
|
|
|
MMC1_Size_t MMC1_Size;
|
|
uint32 MMC1_256K_base;
|
|
uint32 MMC1_swap;
|
|
|
|
// these are the 4 ROM banks currently selected
|
|
uint32 MMC1_bank1;
|
|
uint32 MMC1_bank2;
|
|
uint32 MMC1_bank3;
|
|
uint32 MMC1_bank4;
|
|
|
|
uint32 MMC1_HI1;
|
|
uint32 MMC1_HI2;
|
|
private:
|
|
};
|
|
/////////////////////////////////////////////////////////////////////
|
|
|