deprecat.h

This commit is contained in:
Angelo Salese 2011-12-05 01:10:00 +00:00
parent c3b493a5dc
commit a10e09d634
2 changed files with 29 additions and 15 deletions

View File

@ -68,7 +68,6 @@ mw-9.rom = ST M27C1001 / GFX
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "deprecat.h"
#include "machine/eeprom.h" #include "machine/eeprom.h"
#include "includes/cps1.h" // needed for decoding functions only #include "includes/cps1.h" // needed for decoding functions only
#include "includes/mitchell.h" #include "includes/mitchell.h"
@ -113,7 +112,7 @@ static NVRAM_HANDLER( mitchell )
static READ8_HANDLER( pang_port5_r ) static READ8_HANDLER( pang_port5_r )
{ {
int bit = space->machine().device<eeprom_device>("eeprom")->read_bit() << 7; mitchell_state *state = space->machine().driver_data<mitchell_state>();
/* bits 0 and (sometimes) 3 are checked in the interrupt handler. /* bits 0 and (sometimes) 3 are checked in the interrupt handler.
bit 3 is checked before updating the palette so it really seems to be vblank. bit 3 is checked before updating the palette so it really seems to be vblank.
@ -121,10 +120,8 @@ static READ8_HANDLER( pang_port5_r )
Many games require two interrupts per frame and for these bits to toggle, Many games require two interrupts per frame and for these bits to toggle,
otherwise music doesn't work. otherwise music doesn't work.
*/ */
if (cpu_getiloops(&space->device()) & 1)
bit |= 0x01;
return (input_port_read(space->machine(), "SYS0") & 0x7e) | bit; return (input_port_read(space->machine(), "SYS0") & 0xfe) | (state->m_irq_source & 1);
} }
static WRITE8_DEVICE_HANDLER( eeprom_cs_w ) static WRITE8_DEVICE_HANDLER( eeprom_cs_w )
@ -434,7 +431,7 @@ static INPUT_PORTS_START( mj_common )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -684,7 +681,7 @@ static INPUT_PORTS_START( pang )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -732,7 +729,7 @@ static INPUT_PORTS_START( mstworld )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM (spang) */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -848,7 +845,7 @@ static INPUT_PORTS_START( qtono1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode farther down */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode farther down */
@ -888,7 +885,7 @@ static INPUT_PORTS_START( block )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -930,7 +927,7 @@ static INPUT_PORTS_START( blockjoy )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* data from EEPROM */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit)
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1087,6 +1084,7 @@ static MACHINE_START( mitchell )
state->save_item(NAME(state->m_keymatrix)); state->save_item(NAME(state->m_keymatrix));
state->save_item(NAME(state->m_dir)); state->save_item(NAME(state->m_dir));
state->save_item(NAME(state->m_dial)); state->save_item(NAME(state->m_dial));
state->save_item(NAME(state->m_irq_source));
// state_save_register_global(machine, init_eeprom_count); // state_save_register_global(machine, init_eeprom_count);
} }
@ -1104,13 +1102,26 @@ static MACHINE_RESET( mitchell )
state->m_keymatrix = 0; state->m_keymatrix = 0;
} }
static TIMER_DEVICE_CALLBACK( mitchell_irq )
{
mitchell_state *state = timer.machine().driver_data<mitchell_state>();
int scanline = param;
if(scanline == 248 || scanline == 112)
{
device_set_input_line(state->m_maincpu,0,HOLD_LINE);
state->m_irq_source = (scanline == 248);
}
}
static MACHINE_CONFIG_START( mgakuen, mitchell_state ) static MACHINE_CONFIG_START( mgakuen, mitchell_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* probably same clock as the other mitchell hardware games */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* probably same clock as the other mitchell hardware games */
MCFG_CPU_PROGRAM_MAP(mgakuen_map) MCFG_CPU_PROGRAM_MAP(mgakuen_map)
MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_CPU_IO_MAP(mitchell_io_map)
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,2) /* ??? one extra irq seems to be needed for music (see input5_r) */ MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */
MCFG_MACHINE_START(mitchell) MCFG_MACHINE_START(mitchell)
MCFG_MACHINE_RESET(mitchell) MCFG_MACHINE_RESET(mitchell)
@ -1148,7 +1159,7 @@ static MACHINE_CONFIG_START( pang, mitchell_state )
MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz/2) /* verified on pcb */ MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(mitchell_map) MCFG_CPU_PROGRAM_MAP(mitchell_map)
MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_CPU_IO_MAP(mitchell_io_map)
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,2) /* ??? one extra irq seems to be needed for music (see input5_r) */ MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */
MCFG_MACHINE_START(mitchell) MCFG_MACHINE_START(mitchell)
MCFG_MACHINE_RESET(mitchell) MCFG_MACHINE_RESET(mitchell)
@ -1283,7 +1294,7 @@ static MACHINE_CONFIG_START( marukin, mitchell_state )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* verified on pcb */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(mitchell_map) MCFG_CPU_PROGRAM_MAP(mitchell_map)
MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_CPU_IO_MAP(mitchell_io_map)
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,2) /* ??? one extra irq seems to be needed for music (see input5_r) */ MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */
MCFG_NVRAM_HANDLER(mitchell) MCFG_NVRAM_HANDLER(mitchell)
MCFG_EEPROM_ADD("eeprom", eeprom_intf) MCFG_EEPROM_ADD("eeprom", eeprom_intf)
@ -1336,7 +1347,7 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state )
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(mitchell_map) MCFG_CPU_PROGRAM_MAP(mitchell_map)
MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_CPU_IO_MAP(mitchell_io_map)
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,2) /* ??? one extra irq seems to be needed for music (see input5_r) */ MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */
MCFG_NVRAM_HANDLER(mitchell) MCFG_NVRAM_HANDLER(mitchell)
MCFG_EEPROM_ADD("eeprom", eeprom_intf) MCFG_EEPROM_ADD("eeprom", eeprom_intf)

View File

@ -11,6 +11,7 @@ class mitchell_state : public driver_device
public: public:
mitchell_state(const machine_config &mconfig, device_type type, const char *tag) mitchell_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_oki(*this, "oki") { } m_oki(*this, "oki") { }
@ -38,10 +39,12 @@ public:
int m_keymatrix; int m_keymatrix;
/* devices */ /* devices */
optional_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu; optional_device<cpu_device> m_audiocpu;
optional_device<okim6295_device> m_oki; optional_device<okim6295_device> m_oki;
UINT8 *m_nvram; UINT8 *m_nvram;
size_t m_nvram_size; size_t m_nvram_size;
UINT8 m_irq_source;
}; };