mirror of
https://github.com/libretro/Mesen.git
synced 2024-12-14 04:48:42 +00:00
39 lines
926 B
C++
39 lines
926 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);
|
|
case 0xE001: MMC3::WriteRegister(0xE001, value);
|
|
}
|
|
}
|
|
}; |