summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cops.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cops.cpp')
-rw-r--r--src/mame/drivers/cops.cpp248
1 files changed, 124 insertions, 124 deletions
diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp
index c0b862a2677..98196e8048c 100644
--- a/src/mame/drivers/cops.cpp
+++ b/src/mame/drivers/cops.cpp
@@ -10,23 +10,23 @@
Bad Boys by Inner Circle, so there is musical accompaniment to areas
where the laserdisc audio is muted.
- The different games here have subtly different control PCBs COPS has an Atari
- part number (58-12B), while Revelations simply refers to a Lasermax control PCB
- (Lasermax being the consumer name for the LDP series)
-
- NOTES: To boot up Revelations, turn the refill key (R) and press button A
- to init NVRAM.
-
- TODO: There are probably more ROMs for Revelations and related, the disc
+ The different games here have subtly different control PCBs COPS has an Atari
+ part number (58-12B), while Revelations simply refers to a Lasermax control PCB
+ (Lasermax being the consumer name for the LDP series)
+
+ NOTES: To boot up Revelations, turn the refill key (R) and press button A
+ to init NVRAM.
+
+ TODO: There are probably more ROMs for Revelations and related, the disc
contains full data for a picture based memory game called 'Vision Quest'.
- However, the Vision Quest Laserdisc is slightly different, with Revelations
- specific data seemingly replaced with black level.
+ However, the Vision Quest Laserdisc is slightly different, with Revelations
+ specific data seemingly replaced with black level.
The UK version COPS appears to want to communicate with the LDP in a
different way, passing illegal commands, need to verify this is the same
- player.
-
- This should be similar hardware for Street Viper if we get a dump.
+ player.
+
+ This should be similar hardware for Street Viper if we get a dump.
***************************************************************************/
@@ -78,7 +78,7 @@ protected:
public:
DECLARE_WRITE8_MEMBER(io1_w);
DECLARE_READ8_MEMBER(io1_r);
- DECLARE_READ8_MEMBER(io1_lm_r);
+ DECLARE_READ8_MEMBER(io1_lm_r);
DECLARE_WRITE8_MEMBER(io2_w);
DECLARE_READ8_MEMBER(io2_r);
DECLARE_READ8_MEMBER(ldstatus_r);
@@ -86,10 +86,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(ld_w);
DECLARE_WRITE_LINE_MEMBER(via1_irq);
DECLARE_WRITE_LINE_MEMBER(via2_irq);
- void dacia_receive(UINT8 data);
- void update_dacia_irq();
- DECLARE_WRITE8_MEMBER(dacia_w);
- DECLARE_READ8_MEMBER(dacia_r);
+ void dacia_receive(UINT8 data);
+ void update_dacia_irq();
+ DECLARE_WRITE8_MEMBER(dacia_w);
+ DECLARE_READ8_MEMBER(dacia_r);
DECLARE_WRITE8_MEMBER(via1_b_w);
DECLARE_WRITE8_MEMBER(via1_cb1_w);
DECLARE_WRITE8_MEMBER(cdrom_data_w);
@@ -101,46 +101,46 @@ public:
UINT8 m_lcd_addr_l, m_lcd_addr_h;
UINT8 m_lcd_data_l, m_lcd_data_h;
- UINT8 m_dacia_irq1_reg;
- UINT8 m_dacia_rts1;
- UINT8 m_dacia_dtr1;
+ UINT8 m_dacia_irq1_reg;
+ UINT8 m_dacia_rts1;
+ UINT8 m_dacia_dtr1;
UINT8 m_parity_1;
UINT8 m_parity_mode_1;
UINT8 m_bpc_1;
- int m_dacia_ic_div_1;
- UINT8 m_dacia_echo1;
- UINT8 m_dacia_stp_1;
- UINT8 m_dacia_reg1;
- UINT8 m_dacia_fe1;
- UINT8 m_dacia_cmp1;
- UINT8 m_dacia_cmpval1;
-
- UINT8 m_dacia_irq2_reg;
- UINT8 m_dacia_rts2;
- UINT8 m_dacia_dtr2;
+ int m_dacia_ic_div_1;
+ UINT8 m_dacia_echo1;
+ UINT8 m_dacia_stp_1;
+ UINT8 m_dacia_reg1;
+ UINT8 m_dacia_fe1;
+ UINT8 m_dacia_cmp1;
+ UINT8 m_dacia_cmpval1;
+
+ UINT8 m_dacia_irq2_reg;
+ UINT8 m_dacia_rts2;
+ UINT8 m_dacia_dtr2;
UINT8 m_parity_2;
UINT8 m_parity_mode_2;
UINT8 m_bpc_2;
- int m_dacia_ic_div_2;
- UINT8 m_dacia_echo2;
- UINT8 m_dacia_stp_2;
- UINT8 m_dacia_reg2;
- UINT8 m_dacia_fe2;
- UINT8 m_dacia_cmp2;
- UINT8 m_dacia_cmpval2;
+ int m_dacia_ic_div_2;
+ UINT8 m_dacia_echo2;
+ UINT8 m_dacia_stp_2;
+ UINT8 m_dacia_reg2;
+ UINT8 m_dacia_fe2;
+ UINT8 m_dacia_cmp2;
+ UINT8 m_dacia_cmpval2;
- UINT8 m_dacia_cts;
- UINT8 m_dacia_dcd;
- UINT8 m_dacia_trans;
- UINT8 m_dacia_trans2;
+ UINT8 m_dacia_cts;
+ UINT8 m_dacia_dcd;
+ UINT8 m_dacia_trans;
+ UINT8 m_dacia_trans2;
- UINT8 m_dacia_receiver_data;
- UINT8 m_dacia_receiver_full;
+ UINT8 m_dacia_receiver_data;
+ UINT8 m_dacia_receiver_full;
- UINT8 m_dacia_receiver_data2;
- UINT8 m_dacia_receiver_full2;
+ UINT8 m_dacia_receiver_data2;
+ UINT8 m_dacia_receiver_full2;
UINT8 m_cdrom_ctrl;
UINT8 m_cdrom_data;
@@ -158,7 +158,7 @@ public:
UINT8 lddata;
UINT8 generate_isr();
UINT8 generate_isr2();
-// void laserdisc_w(UINT8 data);
+// void laserdisc_w(UINT8 data);
void laserdisc_response_w(UINT8 data);
};
@@ -262,29 +262,29 @@ WRITE_LINE_MEMBER(cops_state::ld_w)
}
/*void cops_state::laserdisc_w(UINT8 data)
{
- switch( m_ld_input_state )
- {
- case LD_INPUT_TEXT_GET_X:
- m_ld_input_state = LD_INPUT_TEXT_GET_Y;
- break;
- case LD_INPUT_TEXT_GET_Y:
- m_ld_input_state = LD_INPUT_TEXT_GET_MODE;
- break;
- case LD_INPUT_TEXT_GET_MODE:
- m_ld_input_state = LD_INPUT_GET_COMMAND;
- break;
- case LD_INPUT_TEXT_GET_SET_WINDOW:
- m_ld_input_state = LD_INPUT_GET_COMMAND;
- break;
- case LD_INPUT_TEXT_GET_STRING:
- if ( data == 0x1a )
- {
- m_ld_input_state = LD_INPUT_GET_COMMAND;
- }
- break;
- }
- break;
- }
+ switch( m_ld_input_state )
+ {
+ case LD_INPUT_TEXT_GET_X:
+ m_ld_input_state = LD_INPUT_TEXT_GET_Y;
+ break;
+ case LD_INPUT_TEXT_GET_Y:
+ m_ld_input_state = LD_INPUT_TEXT_GET_MODE;
+ break;
+ case LD_INPUT_TEXT_GET_MODE:
+ m_ld_input_state = LD_INPUT_GET_COMMAND;
+ break;
+ case LD_INPUT_TEXT_GET_SET_WINDOW:
+ m_ld_input_state = LD_INPUT_GET_COMMAND;
+ break;
+ case LD_INPUT_TEXT_GET_STRING:
+ if ( data == 0x1a )
+ {
+ m_ld_input_state = LD_INPUT_GET_COMMAND;
+ }
+ break;
+ }
+ break;
+ }
}*/
/*************************************
@@ -298,67 +298,67 @@ void cops_state::update_dacia_irq()
UINT8 isr = generate_isr();
//remove bits
isr &= ~m_dacia_irq1_reg;
- m_maincpu->set_input_line(INPUT_LINE_NMI, isr? ASSERT_LINE:CLEAR_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_NMI, isr? ASSERT_LINE:CLEAR_LINE);
UINT8 isr2 = generate_isr2();
//remove bits
isr2 &= ~m_dacia_irq2_reg;
- m_maincpu->set_input_line(INPUT_LINE_NMI, isr2? ASSERT_LINE:CLEAR_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_NMI, isr2? ASSERT_LINE:CLEAR_LINE);
}
void cops_state::dacia_receive(UINT8 data)
{
- if (m_dacia_cmp1)
- {
- if (m_dacia_cmpval1 == data)
- {
- m_dacia_receiver_data = data;
- m_dacia_receiver_full = 1;
- update_dacia_irq();
- m_dacia_cmp1 =0;
- m_dacia_cts =1;
- m_dacia_trans =1;
- }
- }
- else
- {
- m_dacia_receiver_data = data;
- m_dacia_receiver_full = 1;
- update_dacia_irq();
- m_dacia_cts =1;
- m_dacia_trans =1;
- }
+ if (m_dacia_cmp1)
+ {
+ if (m_dacia_cmpval1 == data)
+ {
+ m_dacia_receiver_data = data;
+ m_dacia_receiver_full = 1;
+ update_dacia_irq();
+ m_dacia_cmp1 =0;
+ m_dacia_cts =1;
+ m_dacia_trans =1;
+ }
+ }
+ else
+ {
+ m_dacia_receiver_data = data;
+ m_dacia_receiver_full = 1;
+ update_dacia_irq();
+ m_dacia_cts =1;
+ m_dacia_trans =1;
+ }
}
UINT8 cops_state::generate_isr()
{
- UINT8 isr =0;
+ UINT8 isr =0;
- isr |= m_dacia_receiver_full;
- isr |= (m_dacia_cmp1 << 1);
- isr |= (m_dacia_trans <<4);
+ isr |= m_dacia_receiver_full;
+ isr |= (m_dacia_cmp1 << 1);
+ isr |= (m_dacia_trans <<4);
- if (isr)
- {
- isr |= 0x40;
- }
- return isr;
+ if (isr)
+ {
+ isr |= 0x40;
+ }
+ return isr;
}
UINT8 cops_state::generate_isr2()
{
- UINT8 isr2 =0;
+ UINT8 isr2 =0;
- isr2 |= m_dacia_receiver_full2;
- isr2 |= (m_dacia_cmp2 << 1);
- isr2 |= (m_dacia_trans2 <<4);
+ isr2 |= m_dacia_receiver_full2;
+ isr2 |= (m_dacia_cmp2 << 1);
+ isr2 |= (m_dacia_trans2 <<4);
- if (isr2)
- {
- isr2 |= 0x40;
- }
- return isr2;
+ if (isr2)
+ {
+ isr2 |= 0x40;
+ }
+ return isr2;
}
READ8_MEMBER(cops_state::dacia_r)
@@ -388,8 +388,8 @@ READ8_MEMBER(cops_state::dacia_r)
{
m_dacia_receiver_full = 0;
m_dacia_fe1=0;
-
-// if (LOG_DACIA) logerror("RDR1 %02x\n",m_dacia_receiver_data);
+
+// if (LOG_DACIA) logerror("RDR1 %02x\n",m_dacia_receiver_data);
if (LOG_DACIA) logerror("RDR1 %02x\n",m_ld->status_r());
return m_ld->status_r();
}
@@ -415,7 +415,7 @@ READ8_MEMBER(cops_state::dacia_r)
case 7: /* RDR2: Receive data register */
m_dacia_receiver_full2 = 0;
m_dacia_fe2=0;
-
+
if (LOG_DACIA) logerror("RDR2 %02x\n",m_ld->status_r());
return m_ld->status_r();
@@ -473,7 +473,7 @@ WRITE8_MEMBER(cops_state::dacia_w)
}
if (LOG_DACIA) logerror("DACIA TIME %02d\n", XTAL_3_6864MHz / m_dacia_ic_div_1);
-// m_ld_timer->adjust(attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1), 0, attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1));
+// m_ld_timer->adjust(attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1), 0, attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1));
if (LOG_DACIA) logerror("DACIA Ctrl Register: %02x\n", data);
@@ -499,7 +499,7 @@ WRITE8_MEMBER(cops_state::dacia_w)
if (LOG_DACIA) logerror("DACIA Transmit: %02x %c\n", data, (char)data);
m_ld->command_w(data);
break;
- }
+ }
case 4: /* IRQ enable Register 2 */
{
m_dacia_irq2_reg &= ~0x80;
@@ -567,14 +567,14 @@ WRITE8_MEMBER(cops_state::dacia_w)
case 7: /* Transmit Data Register 2 */
{
if (LOG_DACIA) logerror("DACIA Transmit 2: %02x %c\n", data, (char)data);
-
- // for (int i=0; i <8; i++)
+
+ // for (int i=0; i <8; i++)
{
- // m_ld_command_to_send[i] = data & (1<<i);
+ // m_ld_command_to_send[i] = data & (1<<i);
}
-// m_ld->command_w(data);
+// m_ld->command_w(data);
break;
- }
+ }
}
}
/*************************************
@@ -604,7 +604,7 @@ READ8_MEMBER(cops_state::io1_lm_r)
switch( offset & 0x0f )
{
case 0x07: /* WDI */
- return 1;
+ return 1;
case 0x08: /* SW0 */
return ioport("SW0")->read();
case 0x09: /* SW1 */
@@ -891,7 +891,7 @@ void cops_state::machine_reset()
m_irq = 0;
m_lcd_addr_l = m_lcd_addr_h = 0;
m_lcd_data_l = m_lcd_data_h = 0;
-
+
m_dacia_cts = 0;
m_dacia_dcd = 0;
@@ -965,7 +965,7 @@ static MACHINE_CONFIG_START( revlatns, cops_state )
MCFG_VIA6522_CB1_HANDLER(WRITE8(cops_state, via1_cb1_w))
MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz)
-
+
/* acia (really a 65C52)*/
/* sound hardware */