summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/machine/deco104.c8
-rw-r--r--src/mame/machine/deco146.c29
-rw-r--r--src/mame/machine/deco146.h6
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];