4roses: More program decryption (nw)

This commit is contained in:
AJR 2018-03-30 20:17:25 -04:00
parent cb552d1593
commit a0dc658589

View File

@ -200,9 +200,11 @@ public:
void _4roses(machine_config &config);
void rugby(machine_config &config);
private:
DECLARE_READ8_MEMBER(_4roses_opcode_r);
DECLARE_READ8_MEMBER(rugby_opcode_r);
void _4roses_map(address_map &map);
void _4roses_opcodes_map(address_map &map);
void rugby_map(address_map &map);
void rugby_opcodes_map(address_map &map);
@ -232,6 +234,22 @@ void _4roses_state::_4roses_map(address_map &map)
map(0x6000, 0xffff).rom().region("maincpu", 0x6000);
}
READ8_MEMBER(_4roses_state::_4roses_opcode_r)
{
uint8_t data = m_maincpu->space(AS_PROGRAM).read_byte(offset);
if ((offset & 0x7c00) == 0x6400)
data = bitswap<8>(data ^ 0x3f, 3, 4, 2, 5, 1, 6, 0, 7);
else if ((offset & 0x7c00) == 0x6000)
data = bitswap<8>(data ^ 0x68, 4, 3, 2, 1, 0, 7, 6, 5);
return data;
}
void _4roses_state::_4roses_opcodes_map(address_map &map)
{
map(0x0000, 0x7fff).r(this, FUNC(_4roses_state::_4roses_opcode_r));
map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
}
void _4roses_state::rugby_map(address_map &map)
{
map(0x0000, 0x07ff).ram(); // AM_SHARE("nvram")
@ -402,6 +420,7 @@ MACHINE_CONFIG_START(_4roses_state::_4roses)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz, guess */
MCFG_CPU_PROGRAM_MAP(_4roses_map)
MCFG_CPU_OPCODES_MAP(_4roses_opcodes_map)
// MCFG_NVRAM_ADD_0FILL("nvram")