Mesen/Core/MMC3_182.h

39 lines
940 B
C++

#pragma once
#include "stdafx.h"
#include "MMC3.h"
class MMC3_182 : public MMC3
{
protected:
virtual void WriteRegister(uint16_t addr, uint8_t value) override
{
switch(addr & 0xE001) {
case 0x8001: MMC3::WriteRegister(0xA000, value); break;
case 0xA000: {
uint8_t data = (value & 0xF8);
switch(value & 0x07) {
case 0: data |= 0; break;
case 1: data |= 3; break;
case 2: data |= 1; break;
case 3: data |= 5; break;
case 4: data |= 6; break;
case 5: data |= 7; break;
case 6: data |= 2; break;
case 7: data |= 4; break;
}
MMC3::WriteRegister(0x8000, data);
break;
}
case 0xC000: MMC3::WriteRegister(0x8001, value); break;
case 0xC001:
MMC3::WriteRegister(0xC000, value);
MMC3::WriteRegister(0xC001, value);
break;
case 0xE000: MMC3::WriteRegister(0xE000, value); break;
case 0xE001: MMC3::WriteRegister(0xE001, value); break;
}
}
};