diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/machine/deco104.c | 8 | ||||
-rw-r--r-- | src/mame/machine/deco146.c | 29 | ||||
-rw-r--r-- | src/mame/machine/deco146.h | 6 |
3 files changed, 31 insertions, 12 deletions
diff --git a/src/mame/machine/deco104.c b/src/mame/machine/deco104.c index 077571d3741..842d7f3fa70 100644 --- a/src/mame/machine/deco104.c +++ b/src/mame/machine/deco104.c @@ -127,7 +127,13 @@ void deco104_device::device_reset() UINT16 deco104_device::read_data_getloc(UINT16 offset, int& location) { - const UINT16* prot_ram=m_current_rambank; + UINT16* prot_ram; + + if (m_current_rambank==0) + prot_ram = m_rambank0; + else + prot_ram = m_rambank1; + location = 0x00; int tempinput = 0; diff --git a/src/mame/machine/deco146.c b/src/mame/machine/deco146.c index e077ed5ba61..81f32680d59 100644 --- a/src/mame/machine/deco146.c +++ b/src/mame/machine/deco146.c @@ -1263,10 +1263,10 @@ UINT16 deco_146_base_device::read_protport(UINT16 address, UINT16 mem_mask) { // logerror("(bankswitch) %04x %04x\n", address, mem_mask); - if (m_current_rambank==m_rambank0) - m_current_rambank = m_rambank1; + if (m_current_rambank==0) + m_current_rambank = 1; else - m_current_rambank = m_rambank0; + m_current_rambank = 0; } @@ -1297,7 +1297,10 @@ void deco_146_base_device::write_protport(address_space &space, UINT16 address, } // always store - COMBINE_DATA(&m_current_rambank[(address&0xff)>>1]); + if (m_current_rambank==0) + COMBINE_DATA(&m_rambank0[(address&0xff)>>1]); + else + COMBINE_DATA(&m_rambank1[(address&0xff)>>1]); } @@ -1458,6 +1461,17 @@ void deco_146_base_device::device_start() save_item(NAME(m_xor)); save_item(NAME(m_nand)); + save_item(NAME(m_soundlatch)); + + save_item(NAME(m_rambank0)); + save_item(NAME(m_rambank1)); + save_item(NAME(m_current_rambank)); + + save_item(NAME(region_selects)); + + save_item(NAME(m_latchaddr)); + save_item(NAME(m_latchdata)); + save_item(NAME(m_latchflag)); } void deco_146_base_device::device_reset() @@ -1471,7 +1485,7 @@ void deco_146_base_device::device_reset() - m_current_rambank = m_rambank0; + m_current_rambank = 0; m_nand = 0x0000; m_xor = 0x0000; @@ -1519,7 +1533,10 @@ UINT16 deco146_device::read_data_getloc(UINT16 address, int& location) } else { - retdata = m_current_rambank[location>>1]; + if (m_current_rambank==0) + retdata = m_rambank0[location>>1]; + else + retdata = m_rambank1[location>>1]; } UINT16 realret = reorder(retdata, &port_table[address>>1].mapping[0] ); diff --git a/src/mame/machine/deco146.h b/src/mame/machine/deco146.h index 7f61d805c46..23d38757ffe 100644 --- a/src/mame/machine/deco146.h +++ b/src/mame/machine/deco146.h @@ -102,7 +102,7 @@ protected: UINT16 m_rambank0[0x80]; UINT16 m_rambank1[0x80]; - UINT16* m_current_rambank; + int m_current_rambank; UINT16 m_nand; @@ -112,10 +112,6 @@ protected: UINT16 m_latchaddr; UINT16 m_latchdata; int m_latchflag; - - - int m_strobe; - private: UINT8 region_selects[6]; |