mirror of
https://github.com/holub/mame
synced 2025-05-11 08:38:47 +03:00
segas32.cpp: Input modernization, phase 1
* Use I8255 or MSM6253 devices for most non-JAMMA inputs * Separate service and test inputs in Multi-32 and twin-unit sets arescue: Four coins are recognized, not just two ga2: Use MB8421 device for V25 communications orunners: Assign keys to some 2P inputs
This commit is contained in:
parent
106e827b51
commit
939930817c
@ -116,7 +116,7 @@ bool msm6253_device::shift_out()
|
||||
READ8_MEMBER(msm6253_device::d0_r)
|
||||
{
|
||||
// offset is ignored
|
||||
return shift_out();
|
||||
return shift_out() | (space.unmap() & 0xfe);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -126,5 +126,5 @@ READ8_MEMBER(msm6253_device::d0_r)
|
||||
READ8_MEMBER(msm6253_device::d7_r)
|
||||
{
|
||||
// offset is ignored
|
||||
return shift_out() << 7;
|
||||
return (shift_out() << 7) | (space.unmap() & 0x7f);
|
||||
}
|
||||
|
@ -531,6 +531,9 @@ orunners: Interleaved with the dj and << >> buttons is the data the drives the
|
||||
#include "cpu/nec/v25.h"
|
||||
#include "cpu/upd7725/upd7725.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/mb8421.h"
|
||||
#include "machine/msm6253.h"
|
||||
#include "sound/2612intf.h"
|
||||
#include "sound/rf5c68.h"
|
||||
|
||||
@ -550,16 +553,12 @@ segas32_state::segas32_state(const machine_config &mconfig, const char *tag, dev
|
||||
segas32_state::segas32_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source)
|
||||
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||
m_z80_shared_ram(*this,"z80_shared_ram"),
|
||||
m_ga2_dpram(*this,"ga2_dpram"),
|
||||
m_system32_workram(*this,"workram"),
|
||||
m_system32_videoram(*this,"videoram", 0),
|
||||
m_system32_spriteram(*this,"spriteram", 0),
|
||||
m_system32_paletteram(*this,"paletteram.%u", 0, uint8_t(0)),
|
||||
m_ports_a(*this, {"P1_A", "P2_A", "PORTC_A", "PORTD_A", "SERVICE12_A", "SERVICE34_A", "PORTG_A", "PORTH_A"}),
|
||||
m_ports_b(*this, {"P1_B", "P2_B", "PORTC_B", "PORTD_B", "SERVICE12_B", "SERVICE34_B", "PORTG_B", "PORTH_B"}),
|
||||
m_analog_ports(*this, {"ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6", "ANALOG7", "ANALOG8"}),
|
||||
m_extra_ports(*this, {"EXTRA1", "EXTRA2", "EXTRA3", "EXTRA4"}),
|
||||
m_track_ports(*this, {"TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3"}),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_multipcm(*this, "sega"),
|
||||
@ -609,6 +608,11 @@ void segas32_state::device_start()
|
||||
common_start(0);
|
||||
}
|
||||
|
||||
void segas32_trackball_state::device_start()
|
||||
{
|
||||
common_start(0);
|
||||
}
|
||||
|
||||
void segas32_v25_state::device_start()
|
||||
{
|
||||
common_start(0);
|
||||
@ -624,6 +628,17 @@ void sega_multi32_state::device_start()
|
||||
common_start(1);
|
||||
}
|
||||
|
||||
void sega_multi32_analog_state::device_start()
|
||||
{
|
||||
common_start(1);
|
||||
m_analog_bank = 0;
|
||||
}
|
||||
|
||||
void sega_multi32_6player_state::device_start()
|
||||
{
|
||||
common_start(1);
|
||||
}
|
||||
|
||||
void segas32_state::device_reset()
|
||||
{
|
||||
/* initialize the interrupt controller */
|
||||
@ -986,96 +1001,6 @@ WRITE32_MEMBER(segas32_state::io_chip_1_w)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ16_MEMBER(segas32_state::io_expansion_r)
|
||||
{
|
||||
if (!m_custom_io_r[0].isnull())
|
||||
return (m_custom_io_r[0])(space, offset, mem_mask);
|
||||
else
|
||||
logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset);
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(segas32_state::io_expansion_w)
|
||||
{
|
||||
/* only LSB matters */
|
||||
if (!ACCESSING_BITS_0_7)
|
||||
return;
|
||||
|
||||
if (!m_custom_io_w[0].isnull())
|
||||
(m_custom_io_w[0])(space, offset, data, mem_mask);
|
||||
else
|
||||
logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff);
|
||||
}
|
||||
|
||||
|
||||
READ32_MEMBER(segas32_state::io_expansion_0_r)
|
||||
{
|
||||
if (!m_custom_io_r[0].isnull())
|
||||
return (m_custom_io_r[0])(space, offset*2+0, mem_mask) |
|
||||
((m_custom_io_r[0])(space, offset*2+1, mem_mask >> 16) << 16);
|
||||
else
|
||||
logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset);
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
|
||||
WRITE32_MEMBER(segas32_state::io_expansion_0_w)
|
||||
{
|
||||
/* only LSB matters */
|
||||
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* harddunk uses bits 4,5 for output lamps */
|
||||
if (m_sw3_output)
|
||||
(this->*m_sw3_output)(0, data & 0xff);
|
||||
|
||||
if (!m_custom_io_w[0].isnull())
|
||||
(m_custom_io_w[0])(space, offset*2+0, data, mem_mask);
|
||||
else
|
||||
logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff);
|
||||
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
if (!m_custom_io_w[0].isnull())
|
||||
(m_custom_io_w[0])(space, offset*2+1, data >> 16, mem_mask >> 16);
|
||||
else
|
||||
logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ32_MEMBER(segas32_state::io_expansion_1_r)
|
||||
{
|
||||
if (!m_custom_io_r[1].isnull())
|
||||
return (m_custom_io_r[1])(space, offset*2+0, mem_mask) |
|
||||
((m_custom_io_r[1])(space, offset*2+1, mem_mask >> 16) << 16);
|
||||
else
|
||||
logerror("%06X:io_expansion_r(%X)\n", space.device().safe_pc(), offset);
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
|
||||
WRITE32_MEMBER(segas32_state::io_expansion_1_w)
|
||||
{
|
||||
/* only LSB matters */
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
if (!m_custom_io_w[1].isnull())
|
||||
(m_custom_io_w[1])(space, offset*2+0, data, mem_mask);
|
||||
else
|
||||
logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
if (!m_custom_io_w[1].isnull())
|
||||
(m_custom_io_w[1])(space, offset*2+1, data >> 16, mem_mask >> 16);
|
||||
else
|
||||
logerror("%06X:io_expansion_w(%X) = %02X\n", space.device().safe_pc(), offset, data & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1085,75 +1010,7 @@ WRITE32_MEMBER(segas32_state::io_expansion_1_w)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ16_MEMBER(segas32_state::analog_custom_io_r)
|
||||
{
|
||||
uint16_t result;
|
||||
switch (offset)
|
||||
{
|
||||
case 0x10/2:
|
||||
case 0x12/2:
|
||||
case 0x14/2:
|
||||
case 0x16/2:
|
||||
result = m_analog_value[offset & 3] | 0x7f;
|
||||
m_analog_value[offset & 3] <<= 1;
|
||||
return result;
|
||||
}
|
||||
logerror("%06X:unknown analog_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask);
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(segas32_state::analog_custom_io_w)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0x10/2:
|
||||
case 0x12/2:
|
||||
case 0x14/2:
|
||||
case 0x16/2:
|
||||
m_analog_value[offset & 3] = m_analog_ports[offset & 3].read_safe(0);
|
||||
return;
|
||||
}
|
||||
logerror("%06X:unknown analog_custom_io_w(%X) = %04X & %04X\n", space.device().safe_pc(), offset*2, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(segas32_state::extra_custom_io_r)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0x20/2:
|
||||
case 0x22/2:
|
||||
case 0x24/2:
|
||||
case 0x26/2:
|
||||
return m_extra_ports[offset & 3].read_safe(0xffff);
|
||||
}
|
||||
|
||||
logerror("%06X:unknown extra_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask);
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(segas32_state::orunners_custom_io_w)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0x10/2:
|
||||
case 0x12/2:
|
||||
case 0x14/2:
|
||||
case 0x16/2:
|
||||
m_analog_value[offset & 3] = m_analog_ports[m_analog_bank * 4 + (offset & 3)].read_safe(0);
|
||||
return;
|
||||
|
||||
case 0x20/2:
|
||||
m_analog_bank = data & 1;
|
||||
return;
|
||||
}
|
||||
logerror("%06X:unknown orunners_custom_io_w(%X) = %04X & %04X\n", space.device().safe_pc(), offset*2, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(segas32_state::sonic_custom_io_r)
|
||||
READ8_MEMBER(segas32_trackball_state::sonic_custom_io_r)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
@ -1171,7 +1028,7 @@ READ16_MEMBER(segas32_state::sonic_custom_io_r)
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(segas32_state::sonic_custom_io_w)
|
||||
WRITE8_MEMBER(segas32_trackball_state::sonic_custom_io_w)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
@ -1407,7 +1264,7 @@ static ADDRESS_MAP_START( system32_map, AS_PROGRAM, 16, segas32_state )
|
||||
AM_RANGE(0x801000, 0x801001) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x00ff)
|
||||
AM_RANGE(0x801002, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x0fff80) AM_READWRITE(io_chip_r, io_chip_w)
|
||||
AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x0fff80) AM_READWRITE(io_expansion_r, io_expansion_w)
|
||||
AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x0fff80) AM_UNMAP // I/O expansion area
|
||||
AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE(interrupt_control_16_r, interrupt_control_16_w)
|
||||
AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_16_r, random_number_16_w)
|
||||
AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
@ -1431,9 +1288,9 @@ static ADDRESS_MAP_START( multi32_map, AS_PROGRAM, 32, segas32_state )
|
||||
AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x000000ff)
|
||||
AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff0000)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x07ff80) AM_READWRITE(io_chip_0_r, io_chip_0_w)
|
||||
AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x07ff80) AM_READWRITE(io_expansion_0_r, io_expansion_0_w)
|
||||
AM_RANGE(0xc00040, 0xc0007f) AM_MIRROR(0x07ff80) AM_UNMAP // I/O expansion area 0
|
||||
AM_RANGE(0xc80000, 0xc8001f) AM_MIRROR(0x07ff80) AM_READWRITE(io_chip_1_r, io_chip_1_w)
|
||||
AM_RANGE(0xc80040, 0xc8007f) AM_MIRROR(0x07ff80) AM_READWRITE(io_expansion_1_r, io_expansion_1_w)
|
||||
AM_RANGE(0xc80040, 0xc8007f) AM_MIRROR(0x07ff80) AM_UNMAP // I/O expansion area 1
|
||||
AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE(interrupt_control_32_r, interrupt_control_32_w)
|
||||
AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_32_r, random_number_32_w)
|
||||
AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
@ -1496,7 +1353,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ga2_v25_map, AS_PROGRAM, 8, segas32_state )
|
||||
AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("mcu", 0)
|
||||
AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ga2_dpram")
|
||||
AM_RANGE(0x10000, 0x1ffff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
|
||||
AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("mcu", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -1602,8 +1459,8 @@ static INPUT_PORTS_START( system32_generic_slave )
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("slavepcb:SERVICE12_A")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("slavepcb:Service Mode")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START3 )
|
||||
@ -1639,9 +1496,12 @@ static INPUT_PORTS_START( multi32_generic )
|
||||
PORT_START("mainpcb:PORTD_B")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("mainpcb:SERVICE12_A")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("mainpcb:SERVICE12_B")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("Service Mode 2")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
|
||||
@ -1676,7 +1536,7 @@ static INPUT_PORTS_START( arescue )
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("mainpcb:SERVICE12_A")
|
||||
PORT_BIT( 0x38, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("mainpcb:SERVICE34_A")
|
||||
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
@ -1701,7 +1561,7 @@ static INPUT_PORTS_START( arescue )
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("slavepcb:SERVICE12_A")
|
||||
PORT_BIT( 0x38, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("slavepcb:SERVICE34_A")
|
||||
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
@ -1802,6 +1662,9 @@ static INPUT_PORTS_START( brival )
|
||||
PORT_MODIFY("mainpcb:P2_A")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("mainpcb:EXTRA1")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("mainpcb:EXTRA2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2)
|
||||
@ -1811,6 +1674,9 @@ static INPUT_PORTS_START( brival )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
|
||||
|
||||
PORT_START("mainpcb:EXTRA3")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -1827,6 +1693,9 @@ static INPUT_PORTS_START( darkedge )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
|
||||
PORT_START("mainpcb:EXTRA1")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("mainpcb:EXTRA2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
|
||||
@ -1836,6 +1705,9 @@ static INPUT_PORTS_START( darkedge )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
|
||||
|
||||
PORT_START("mainpcb:EXTRA3")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -2150,9 +2022,9 @@ static INPUT_PORTS_START( orunners )
|
||||
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_MODIFY("mainpcb:P2_B")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) /* DJ/music */
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) /* << */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) /* >> */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_R) /* DJ/music */
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_T) /* << */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_Y) /* >> */
|
||||
PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("mainpcb:ANALOG1")
|
||||
@ -2556,9 +2428,120 @@ machine_config_constructor segas32_regular_state::device_mconfig_additions() con
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_v25 )
|
||||
|
||||
static ADDRESS_MAP_START( system32_analog_map, AS_PROGRAM, 16, segas32_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0xc00050, 0xc00057) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff)
|
||||
AM_IMPORT_FROM(system32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_analog )
|
||||
MCFG_FRAGMENT_ADD( system32 )
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_analog_map)
|
||||
|
||||
MCFG_DEVICE_ADD("adc", MSM6253, 0)
|
||||
MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1")
|
||||
MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2")
|
||||
MCFG_MSM6253_IN2_ANALOG_PORT("ANALOG3")
|
||||
MCFG_MSM6253_IN3_ANALOG_PORT("ANALOG4")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
const device_type SEGA_S32_ANALOG_DEVICE = device_creator<segas32_analog_state>;
|
||||
|
||||
segas32_analog_state::segas32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: segas32_state(mconfig, SEGA_S32_ANALOG_DEVICE, "Sega System 32 analog PCB", tag, owner, clock, "sega32_pcb_analog", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
machine_config_constructor segas32_analog_state::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( system32_analog );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( system32_trackball_map, AS_PROGRAM, 16, segas32_trackball_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0xc00040, 0xc0005f) AM_READWRITE8(sonic_custom_io_r, sonic_custom_io_w, 0x00ff)
|
||||
AM_IMPORT_FROM(system32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_trackball )
|
||||
MCFG_FRAGMENT_ADD( system32 )
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_trackball_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
const device_type SEGA_S32_TRACKBALL_DEVICE = device_creator<segas32_trackball_state>;
|
||||
|
||||
segas32_trackball_state::segas32_trackball_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: segas32_state(mconfig, SEGA_S32_TRACKBALL_DEVICE, "Sega System 32 trackball PCB", tag, owner, clock, "sega32_pcb_trackball", __FILE__),
|
||||
m_track_ports(*this, {"TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3"})
|
||||
{
|
||||
}
|
||||
|
||||
machine_config_constructor segas32_trackball_state::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( system32_trackball );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( system32_4player_map, AS_PROGRAM, 16, segas32_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0xc00060, 0xc00067) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
|
||||
AM_IMPORT_FROM(system32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_4player )
|
||||
MCFG_FRAGMENT_ADD( system32 )
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_4player_map)
|
||||
|
||||
MCFG_DEVICE_ADD("ppi", I8255A, 0)
|
||||
MCFG_I8255_IN_PORTA_CB(IOPORT("EXTRA1"))
|
||||
MCFG_I8255_IN_PORTB_CB(IOPORT("EXTRA2"))
|
||||
MCFG_I8255_IN_PORTC_CB(IOPORT("EXTRA3"))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
const device_type SEGA_S32_4PLAYER_DEVICE = device_creator<segas32_4player_state>;
|
||||
|
||||
segas32_4player_state::segas32_4player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: segas32_state(mconfig, SEGA_S32_4PLAYER_DEVICE, "Sega System 32 4 player/fighting PCB", tag, owner, clock, "sega32_pcb_4player", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
machine_config_constructor segas32_4player_state::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( system32_4player );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( ga2_main_map, AS_PROGRAM, 16, segas32_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff)
|
||||
AM_IMPORT_FROM(system32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_v25 )
|
||||
MCFG_FRAGMENT_ADD( system32_4player )
|
||||
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(ga2_main_map)
|
||||
|
||||
MCFG_DEVICE_ADD("dpram", MB8421, 0)
|
||||
|
||||
/* add a V25 for protection */
|
||||
MCFG_CPU_ADD("mcu", V25, 10000000)
|
||||
MCFG_CPU_PROGRAM_MAP(ga2_v25_map)
|
||||
@ -2582,7 +2565,7 @@ machine_config_constructor segas32_v25_state::device_mconfig_additions() const
|
||||
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( system32_upd7725 )
|
||||
MCFG_FRAGMENT_ADD( system32 )
|
||||
MCFG_FRAGMENT_ADD( system32_analog )
|
||||
|
||||
/* add a upd7725; this is on the 837-8341 daughterboard which plugs into the socket on the master pcb's rom board where an fd1149 could go */
|
||||
MCFG_CPU_ADD("dsp", UPD7725, 8000000) // TODO: Find real clock speed for the upd7725; this is a canned oscillator on the 837-8341 pcb
|
||||
@ -2620,7 +2603,6 @@ static MACHINE_CONFIG_FRAGMENT( multi32 )
|
||||
MCFG_CPU_PROGRAM_MAP(multi32_sound_map)
|
||||
MCFG_CPU_IO_MAP(multi32_sound_portmap)
|
||||
|
||||
|
||||
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback)
|
||||
@ -2672,6 +2654,88 @@ machine_config_constructor sega_multi32_state::device_mconfig_additions() const
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( multi32_analog_map, AS_PROGRAM, 32, sega_multi32_analog_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xffffff)
|
||||
AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff00ff)
|
||||
AM_RANGE(0xc00060, 0xc00063) AM_MIRROR(0x07ff80) AM_WRITE8(analog_bank_w, 0x000000ff)
|
||||
AM_IMPORT_FROM(multi32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( multi32_analog )
|
||||
MCFG_FRAGMENT_ADD(multi32)
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_analog_map)
|
||||
|
||||
MCFG_DEVICE_ADD("adc", MSM6253, 0)
|
||||
MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1")
|
||||
MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2")
|
||||
MCFG_MSM6253_IN2_ANALOG_READ(sega_multi32_analog_state, in2_analog_read)
|
||||
MCFG_MSM6253_IN3_ANALOG_READ(sega_multi32_analog_state, in3_analog_read)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
ioport_value sega_multi32_analog_state::in2_analog_read()
|
||||
{
|
||||
return m_analog_ports[m_analog_bank * 4 + 2].read_safe(0);
|
||||
}
|
||||
|
||||
ioport_value sega_multi32_analog_state::in3_analog_read()
|
||||
{
|
||||
return m_analog_ports[m_analog_bank * 4 + 3].read_safe(0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(sega_multi32_analog_state::analog_bank_w)
|
||||
{
|
||||
m_analog_bank = data & 1;
|
||||
}
|
||||
|
||||
const device_type SEGA_MULTI32_ANALOG_DEVICE = device_creator<sega_multi32_analog_state>;
|
||||
|
||||
sega_multi32_analog_state::sega_multi32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: segas32_state(mconfig, SEGA_MULTI32_ANALOG_DEVICE, "Sega Multi 32 analog PCB", tag, owner, clock, "sega32_pcb_multi_analog", __FILE__),
|
||||
m_analog_ports(*this, {"ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6", "ANALOG7", "ANALOG8"})
|
||||
{
|
||||
}
|
||||
|
||||
machine_config_constructor sega_multi32_analog_state::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( multi32_analog );
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( multi32_6player_map, AS_PROGRAM, 32, segas32_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xffffff)
|
||||
AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff00ff)
|
||||
AM_IMPORT_FROM(multi32_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( multi32_6player )
|
||||
MCFG_FRAGMENT_ADD(multi32)
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_6player_map)
|
||||
|
||||
MCFG_DEVICE_ADD("ppi", I8255A, 0)
|
||||
MCFG_I8255_IN_PORTA_CB(IOPORT("EXTRA1"))
|
||||
MCFG_I8255_IN_PORTB_CB(IOPORT("EXTRA2"))
|
||||
MCFG_I8255_IN_PORTC_CB(IOPORT("EXTRA3"))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
const device_type SEGA_MULTI32_6PLAYER_DEVICE = device_creator<sega_multi32_6player_state>;
|
||||
|
||||
sega_multi32_6player_state::sega_multi32_6player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: segas32_state(mconfig, SEGA_MULTI32_6PLAYER_DEVICE, "Sega Multi 32 6 player PCB", tag, owner, clock, "sega32_pcb_multi_6player", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
machine_config_constructor sega_multi32_6player_state::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( multi32_6player );
|
||||
}
|
||||
|
||||
|
||||
class segas32_new_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -2723,16 +2787,28 @@ static MACHINE_CONFIG_START( sega_system32, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_REGULAR_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_system32_analog, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_ANALOG_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_system32_track, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_TRACKBALL_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_system32_4p, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_4PLAYER_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
// for f1en where there is a sub-board containing shared ram sitting underneath the ROM board bridging 2 PCBs (not a network link)
|
||||
static MACHINE_CONFIG_START( sega_system32_dual_direct, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_REGULAR_DEVICE, 0)
|
||||
MCFG_DEVICE_ADD("slavepcb", SEGA_S32_REGULAR_DEVICE, 0)
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_ANALOG_DEVICE, 0)
|
||||
MCFG_DEVICE_ADD("slavepcb", SEGA_S32_ANALOG_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
// air rescue is like f1en above but also has the 837-8341 DSP daughterboard on the mainpcb side only
|
||||
static MACHINE_CONFIG_START( sega_system32_dual_direct_upd7725, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_S32_UPD7725_DEVICE, 0)
|
||||
MCFG_DEVICE_ADD("slavepcb", SEGA_S32_REGULAR_DEVICE, 0)
|
||||
MCFG_DEVICE_ADD("slavepcb", SEGA_S32_ANALOG_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_system32_v25, segas32_new_state )
|
||||
@ -2743,6 +2819,14 @@ static MACHINE_CONFIG_START( sega_multi32, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_multi32_analog, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_ANALOG_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sega_multi32_6p, segas32_new_state )
|
||||
MCFG_DEVICE_ADD("mainpcb", SEGA_MULTI32_6PLAYER_DEVICE, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROM definition(s)
|
||||
@ -5044,11 +5128,9 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void segas32_state::segas32_common_init(read16_delegate custom_r, write16_delegate custom_w)
|
||||
void segas32_state::segas32_common_init()
|
||||
{
|
||||
/* reset the custom handlers and other pointers */
|
||||
m_custom_io_r[0] = custom_r;
|
||||
m_custom_io_w[0] = custom_w;
|
||||
m_system32_prot_vblank = nullptr;
|
||||
m_sw1_output = nullptr;
|
||||
m_sw2_output = nullptr;
|
||||
@ -5322,13 +5404,13 @@ DRIVER_INIT_MEMBER(segas32_new_state,f1lap)
|
||||
|
||||
void segas32_state::init_alien3(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r), this), write16_delegate(FUNC(segas32_state::analog_custom_io_w), this));
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::alien3_sw1_output;
|
||||
}
|
||||
|
||||
void segas32_state::init_arescue(int m_hasdsp)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
if (m_hasdsp) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00007, read16_delegate(FUNC(segas32_state::arescue_dsp_r),this), write16_delegate(FUNC(segas32_state::arescue_dsp_w),this));
|
||||
|
||||
for (auto & elem : m_arescue_dsp_io)
|
||||
@ -5360,7 +5442,7 @@ void segas32_state::init_arescue(int m_hasdsp)
|
||||
|
||||
void segas32_state::init_arabfgt(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
|
||||
/* install protection handlers */
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa00100, 0xa0011f, read16_delegate(FUNC(segas32_state::arf_wakeup_protection_r),this));
|
||||
@ -5370,7 +5452,7 @@ void segas32_state::init_arabfgt(void)
|
||||
|
||||
void segas32_state::init_brival(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
|
||||
/* install protection handlers */
|
||||
m_system32_protram = std::make_unique<uint16_t[]>(0x1000/2);
|
||||
@ -5381,7 +5463,7 @@ void segas32_state::init_brival(void)
|
||||
|
||||
void segas32_state::init_darkedge(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
|
||||
/* install protection handlers */
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::darkedge_protection_r),this), write16_delegate(FUNC(segas32_state::darkedge_protection_w),this));
|
||||
@ -5390,7 +5472,7 @@ void segas32_state::init_darkedge(void)
|
||||
|
||||
void segas32_state::init_dbzvrvs(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(), write16_delegate());
|
||||
segas32_common_init();
|
||||
|
||||
/* install protection handlers */
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::dbzvrvs_protection_r),this), write16_delegate(FUNC(segas32_state::dbzvrvs_protection_w),this));
|
||||
@ -5399,7 +5481,7 @@ void segas32_state::init_dbzvrvs(void)
|
||||
|
||||
void segas32_state::init_f1en(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
|
||||
|
||||
m_sw1_output = &segas32_state::radm_sw1_output;
|
||||
@ -5410,7 +5492,7 @@ void segas32_state::init_f1en(void)
|
||||
|
||||
void segas32_state::init_f1lap(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
m_system32_prot_vblank = &segas32_state::f1lap_fd1149_vblank;
|
||||
|
||||
m_sw1_output = &segas32_state::f1lap_sw1_output;
|
||||
@ -5421,16 +5503,15 @@ void segas32_state::init_f1lap(void)
|
||||
|
||||
void segas32_state::init_ga2(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
|
||||
decrypt_ga2_protrom();
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00fff, read16_delegate(FUNC(segas32_state::ga2_dpram_r),this), write16_delegate(FUNC(segas32_state::ga2_dpram_w),this));
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_harddunk(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::harddunk_sw1_output;
|
||||
m_sw2_output = &segas32_state::harddunk_sw2_output;
|
||||
m_sw3_output = &segas32_state::harddunk_sw3_output;
|
||||
@ -5439,7 +5520,7 @@ void segas32_state::init_harddunk(void)
|
||||
|
||||
void segas32_state::init_holo(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(), write16_delegate());
|
||||
segas32_common_init();
|
||||
}
|
||||
|
||||
|
||||
@ -5448,7 +5529,7 @@ void segas32_state::init_jpark(void)
|
||||
/* Temp. Patch until we emulate the 'Drive Board', thanks to Malice */
|
||||
uint16_t *pROM = (uint16_t *)memregion("maincpu")->base();
|
||||
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
|
||||
pROM[0xC15A8/2] = 0xCD70;
|
||||
pROM[0xC15AA/2] = 0xD8CD;
|
||||
@ -5459,7 +5540,7 @@ void segas32_state::init_jpark(void)
|
||||
|
||||
void segas32_state::init_orunners(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::orunners_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::orunners_sw1_output;
|
||||
m_sw2_output = &segas32_state::orunners_sw2_output;
|
||||
|
||||
@ -5469,7 +5550,7 @@ void segas32_state::init_orunners(void)
|
||||
|
||||
void segas32_state::init_radm(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::radm_sw1_output;
|
||||
m_sw2_output = &segas32_state::radm_sw2_output;
|
||||
}
|
||||
@ -5477,7 +5558,7 @@ void segas32_state::init_radm(void)
|
||||
|
||||
void segas32_state::init_radr(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::radm_sw1_output;
|
||||
m_sw2_output = &segas32_state::radr_sw2_output;
|
||||
|
||||
@ -5487,7 +5568,7 @@ void segas32_state::init_radr(void)
|
||||
|
||||
void segas32_state::init_scross(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
m_soundcpu->space(AS_PROGRAM).install_write_handler(0xb0, 0xbf, write8_delegate(FUNC(segas32_state::scross_bank_w),this));
|
||||
|
||||
m_sw1_output = &segas32_state::scross_sw1_output;
|
||||
@ -5499,13 +5580,13 @@ void segas32_state::init_scross(void)
|
||||
|
||||
void segas32_state::init_slipstrm(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::analog_custom_io_r),this), write16_delegate(FUNC(segas32_state::analog_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_sonic(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::sonic_custom_io_r),this), write16_delegate(FUNC(segas32_state::sonic_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
|
||||
/* install protection handlers */
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x20E5C4, 0x20E5C5, write16_delegate(FUNC(segas32_state::sonic_level_load_protection),this));
|
||||
@ -5514,32 +5595,32 @@ void segas32_state::init_sonic(void)
|
||||
|
||||
void segas32_state::init_sonicp(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::sonic_custom_io_r),this), write16_delegate(FUNC(segas32_state::sonic_custom_io_w),this));
|
||||
segas32_common_init();
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_spidman(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
|
||||
segas32_common_init();
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_svf(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(), write16_delegate());
|
||||
segas32_common_init();
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_jleague(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(), write16_delegate());
|
||||
segas32_common_init();
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x20F700, 0x20F705, write16_delegate(FUNC(segas32_state::jleague_protection_w),this));
|
||||
}
|
||||
|
||||
|
||||
void segas32_state::init_titlef(void)
|
||||
{
|
||||
segas32_common_init(read16_delegate(), write16_delegate());
|
||||
segas32_common_init();
|
||||
m_sw1_output = &segas32_state::titlef_sw1_output;
|
||||
m_sw2_output = &segas32_state::titlef_sw2_output;
|
||||
}
|
||||
@ -5554,18 +5635,18 @@ void segas32_state::init_titlef(void)
|
||||
GAME( 1992, arescue, 0, sega_system32_dual_direct_upd7725, arescue, segas32_new_state, arescue, ROT0, "Sega", "Air Rescue (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, arescuej, arescue, sega_system32_dual_direct_upd7725, arescue, segas32_new_state, arescue, ROT0, "Sega", "Air Rescue (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1993, alien3, 0, sega_system32, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, alien3u, alien3, sega_system32, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, alien3, 0, sega_system32_analog, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, alien3u, alien3, sega_system32_analog, alien3, segas32_new_state, alien3, ROT0, "Sega", "Alien3: The Gun (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1991, arabfgt, 0, sega_system32, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 03.1992 */
|
||||
GAME( 1991, arabfgtu, arabfgt, sega_system32, arabfgtu, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, arabfgtj, arabfgt, sega_system32, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, arabfgt, 0, sega_system32_4p, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 03.1992 */
|
||||
GAME( 1991, arabfgtu, arabfgt, sega_system32_4p, arabfgtu, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, arabfgtj, arabfgt, sega_system32_4p, arabfgt, segas32_new_state, arabfgt, ROT0, "Sega", "Arabian Fight (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, brival, 0, sega_system32, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, brivalj, brival, sega_system32, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, brival, 0, sega_system32_4p, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, brivalj, brival, sega_system32_4p, brival, segas32_new_state, brival, ROT0, "Sega", "Burning Rival (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, darkedge, 0, sega_system32, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, darkedgej, darkedge, sega_system32, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, darkedge, 0, sega_system32_4p, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, darkedgej, darkedge, sega_system32_4p, darkedge, segas32_new_state, darkedge, ROT0, "Sega", "Dark Edge (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1994, dbzvrvs, 0, sega_system32, dbzvrvs, segas32_new_state, dbzvrvs, ROT0, "Sega / Banpresto", "Dragon Ball Z V.R.V.S. (Japan)", MACHINE_IMPERFECT_GRAPHICS)
|
||||
|
||||
@ -5573,8 +5654,8 @@ GAME( 1991, f1en, 0, sega_system32_dual_direct, f1en, segas3
|
||||
GAME( 1991, f1enu, f1en, sega_system32_dual_direct, f1en, segas32_new_state, f1en, ROT0, "Sega", "F1 Exhaust Note (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, f1enj, f1en, sega_system32_dual_direct, f1en, segas32_new_state, f1en, ROT0, "Sega", "F1 Exhaust Note (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1993, f1lap, 0, sega_system32, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, f1lapj, f1lap, sega_system32, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, f1lap, 0, sega_system32_analog, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, f1lapj, f1lap, sega_system32_analog, f1lap, segas32_new_state, f1lap, ROT0, "Sega", "F1 Super Lap (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, ga2, 0, sega_system32_v25, ga2, segas32_new_state, ga2, ROT0, "Sega", "Golden Axe: The Revenge of Death Adder (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, ga2u, ga2, sega_system32_v25, ga2u, segas32_new_state, ga2, ROT0, "Sega", "Golden Axe: The Revenge of Death Adder (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
@ -5582,29 +5663,29 @@ GAME( 1992, ga2j, ga2, sega_system32_v25, ga2, segas32_new_state,
|
||||
|
||||
GAME( 1992, holo, 0, sega_system32, holo, segas32_new_state, holo, ORIENTATION_FLIP_Y, "Sega", "Holosseum (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1993, jpark, 0, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1994 */
|
||||
GAME( 1993, jparkj, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Deluxe)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, jparkja, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Deluxe)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, jparkjc, jpark, sega_system32, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Conversion)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, jpark, 0, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1994 */
|
||||
GAME( 1993, jparkj, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Deluxe)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, jparkja, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Deluxe)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, jparkjc, jpark, sega_system32_analog, jpark, segas32_new_state, jpark, ROT0, "Sega", "Jurassic Park (Japan, Rev A, Conversion)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1994, kokoroj2, 0, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Kokoroji 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING) /* uses an Audio CD */
|
||||
GAME( 1994, kokoroj2, 0, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Kokoroji 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING) /* uses an Audio CD */
|
||||
|
||||
GAME( 1990, radm, 0, sega_system32, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1991 */
|
||||
GAME( 1990, radmu, radm, sega_system32, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1990, radm, 0, sega_system32_analog, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (World)", MACHINE_IMPERFECT_GRAPHICS ) /* Released in 02.1991 */
|
||||
GAME( 1990, radmu, radm, sega_system32_analog, radm, segas32_new_state, radm, ROT0, "Sega", "Rad Mobile (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAMEL(1991, radr, 0, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (World)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1991, radru, radr, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (US)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1991, radrj, radr, sega_system32, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1991, radr, 0, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (World)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1991, radru, radr, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (US)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1991, radrj, radr, sega_system32_analog, radr, segas32_new_state, radr, ROT0, "Sega", "Rad Rally (Japan)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
|
||||
GAMEL(1995, slipstrm, 0, sega_system32, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Brazil 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1995, slipstrmh, slipstrm, sega_system32, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Hispanic 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1995, slipstrm, 0, sega_system32_analog, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Brazil 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
GAMEL(1995, slipstrmh, slipstrm, sega_system32_analog, slipstrm, segas32_new_state, slipstrm, ROT0, "Capcom", "Slip Stream (Hispanic 950515)", MACHINE_IMPERFECT_GRAPHICS, layout_radr )
|
||||
|
||||
GAME( 1992, sonic, 0, sega_system32, sonic, segas32_new_state, sonic, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, rev. C)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, sonicp, sonic, sega_system32, sonic, segas32_new_state, sonicp, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, prototype)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, sonic, 0, sega_system32_track, sonic, segas32_new_state, sonic, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, rev. C)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, sonicp, sonic, sega_system32_track, sonic, segas32_new_state, sonicp, ROT0, "Sega", "SegaSonic The Hedgehog (Japan, prototype)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1991, spidman, 0, sega_system32, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, spidmanu, spidman, sega_system32, spidmanu, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, spidmanj, spidman, sega_system32, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, spidman, 0, sega_system32_4p, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, spidmanu, spidman, sega_system32_4p, spidmanu, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, spidmanj, spidman, sega_system32_4p, spidman, segas32_new_state, spidman, ROT0, "Sega", "Spider-Man: The Videogame (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1994, svf, 0, sega_system32, svf, segas32_new_state, svf, ROT0, "Sega", "Super Visual Football: European Sega Cup (Rev A)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, svfo, svf, sega_system32, svf, segas32_new_state, svf, ROT0, "Sega", "Super Visual Football: European Sega Cup", MACHINE_IMPERFECT_GRAPHICS )
|
||||
@ -5613,16 +5694,16 @@ GAME( 1994, jleague, svf, sega_system32, svf, segas32_new_state,
|
||||
GAME( 1994, jleagueo, svf, sega_system32, svf, segas32_new_state, jleague, ROT0, "Sega", "The J.League 1994 (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
|
||||
GAME( 1994, harddunk, 0, sega_multi32, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, harddunkj, harddunk, sega_multi32, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, harddunk, 0, sega_multi32_6p, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, harddunkj, harddunk, sega_multi32_6p, harddunk, segas32_new_state, harddunk, ROT0, "Sega", "Hard Dunk (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, orunners, 0, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, orunnersu, orunners, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, orunnersj, orunners, sega_multi32, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, orunners, 0, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, orunnersu, orunners, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, orunnersj, orunners, sega_multi32_analog, orunners, segas32_new_state, orunners, ROT0, "Sega", "OutRunners (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, scross, 0, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, scrossa, scross, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World, alt)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, scrossu, scross, sega_multi32, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, scross, 0, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, scrossa, scross, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (World, alt)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, scrossu, scross, sega_multi32_analog, scross, segas32_new_state, scross, ROT0, "Sega", "Stadium Cross (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1992, titlef, 0, sega_multi32, titlef, segas32_new_state, titlef, ROT0, "Sega", "Title Fight (World)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, titlefu, titlef, sega_multi32, titlef, segas32_new_state, titlef, ROT0, "Sega", "Title Fight (US)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
@ -21,7 +21,6 @@ public:
|
||||
segas32_state(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
|
||||
|
||||
required_shared_ptr<uint8_t> m_z80_shared_ram;
|
||||
optional_shared_ptr<uint8_t> m_ga2_dpram;
|
||||
optional_shared_ptr<uint16_t> m_system32_workram;
|
||||
required_shared_ptr<uint16_t> m_system32_videoram;
|
||||
required_shared_ptr<uint16_t> m_system32_spriteram;
|
||||
@ -29,9 +28,6 @@ public:
|
||||
|
||||
optional_ioport_array<8> m_ports_a;
|
||||
optional_ioport_array<8> m_ports_b;
|
||||
optional_ioport_array<8> m_analog_ports;
|
||||
optional_ioport_array<4> m_extra_ports;
|
||||
optional_ioport_array<6> m_track_ports;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
@ -75,11 +71,6 @@ public:
|
||||
uint8_t m_sound_dummy_value;
|
||||
uint16_t m_sound_bank;
|
||||
uint8_t m_misc_io_data[2][0x10];
|
||||
read16_delegate m_custom_io_r[2];
|
||||
write16_delegate m_custom_io_w[2];
|
||||
uint8_t m_analog_bank;
|
||||
uint8_t m_analog_value[4];
|
||||
uint8_t m_sonic_last[6];
|
||||
sys32_output_callback m_sw1_output;
|
||||
sys32_output_callback m_sw2_output;
|
||||
sys32_output_callback m_sw3_output;
|
||||
@ -100,8 +91,6 @@ public:
|
||||
typedef void (segas32_state::*prot_vblank_func)();
|
||||
prot_vblank_func m_system32_prot_vblank;
|
||||
int m_print_count;
|
||||
DECLARE_WRITE16_MEMBER(ga2_dpram_w);
|
||||
DECLARE_READ16_MEMBER(ga2_dpram_r);
|
||||
DECLARE_WRITE16_MEMBER(sonic_level_load_protection);
|
||||
DECLARE_READ16_MEMBER(brival_protection_r);
|
||||
DECLARE_WRITE16_MEMBER(brival_protection_w);
|
||||
@ -147,18 +136,6 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(io_chip_0_w);
|
||||
DECLARE_READ32_MEMBER(io_chip_1_r);
|
||||
DECLARE_WRITE32_MEMBER(io_chip_1_w);
|
||||
DECLARE_READ16_MEMBER(io_expansion_r);
|
||||
DECLARE_WRITE16_MEMBER(io_expansion_w);
|
||||
DECLARE_READ32_MEMBER(io_expansion_0_r);
|
||||
DECLARE_WRITE32_MEMBER(io_expansion_0_w);
|
||||
DECLARE_READ32_MEMBER(io_expansion_1_r);
|
||||
DECLARE_WRITE32_MEMBER(io_expansion_1_w);
|
||||
DECLARE_READ16_MEMBER(analog_custom_io_r);
|
||||
DECLARE_WRITE16_MEMBER(analog_custom_io_w);
|
||||
DECLARE_READ16_MEMBER(extra_custom_io_r);
|
||||
DECLARE_WRITE16_MEMBER(orunners_custom_io_w);
|
||||
DECLARE_READ16_MEMBER(sonic_custom_io_r);
|
||||
DECLARE_WRITE16_MEMBER(sonic_custom_io_w);
|
||||
DECLARE_WRITE16_MEMBER(random_number_16_w);
|
||||
DECLARE_READ16_MEMBER(random_number_16_r);
|
||||
DECLARE_WRITE32_MEMBER(random_number_32_w);
|
||||
@ -212,7 +189,7 @@ public:
|
||||
uint16_t common_io_chip_r(address_space &space, int which, offs_t offset, uint16_t mem_mask);
|
||||
void common_io_chip_w(address_space &space, int which, offs_t offset, uint16_t data, uint16_t mem_mask);
|
||||
void update_sound_irq_state();
|
||||
void segas32_common_init(read16_delegate custom_r, write16_delegate custom_w);
|
||||
void segas32_common_init();
|
||||
void radm_sw1_output( int which, uint16_t data );
|
||||
void radm_sw2_output( int which, uint16_t data );
|
||||
void radr_sw2_output( int which, uint16_t data );
|
||||
@ -278,8 +255,47 @@ public:
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
// virtual void device_start();
|
||||
// virtual void device_reset();
|
||||
// virtual void device_start() override;
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class segas32_analog_state : public segas32_state
|
||||
{
|
||||
public:
|
||||
segas32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
// virtual void device_start() override;
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class segas32_trackball_state : public segas32_state
|
||||
{
|
||||
public:
|
||||
segas32_trackball_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
DECLARE_READ8_MEMBER(sonic_custom_io_r);
|
||||
DECLARE_WRITE8_MEMBER(sonic_custom_io_w);
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
required_ioport_array<6> m_track_ports;
|
||||
uint8_t m_sonic_last[6];
|
||||
};
|
||||
|
||||
class segas32_4player_state : public segas32_state
|
||||
{
|
||||
public:
|
||||
segas32_4player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
// virtual void device_start() override;
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class segas32_v25_state : public segas32_state
|
||||
@ -290,7 +306,7 @@ public:
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
// virtual void device_reset();
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class segas32_upd7725_state : public segas32_state
|
||||
@ -301,7 +317,7 @@ public:
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
// virtual void device_reset();
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class sega_multi32_state : public segas32_state
|
||||
@ -312,7 +328,37 @@ public:
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
// virtual void device_reset();
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
class sega_multi32_analog_state : public segas32_state
|
||||
{
|
||||
public:
|
||||
sega_multi32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
ioport_value in2_analog_read();
|
||||
ioport_value in3_analog_read();
|
||||
DECLARE_WRITE8_MEMBER(analog_bank_w);
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
// virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
optional_ioport_array<8> m_analog_ports;
|
||||
uint8_t m_analog_bank;
|
||||
};
|
||||
|
||||
class sega_multi32_6player_state : public segas32_state
|
||||
{
|
||||
public:
|
||||
sega_multi32_6player_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_start() override;
|
||||
// virtual void device_reset() override;
|
||||
};
|
||||
|
||||
/*----------- defined in machine/segas32.c -----------*/
|
||||
|
@ -49,16 +49,6 @@ void segas32_state::decrypt_ga2_protrom()
|
||||
rom[i] = temp[BITSWAP16(i, 14, 11, 15, 12, 13, 4, 3, 7, 5, 10, 2, 8, 9, 6, 1, 0)];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(segas32_state::ga2_dpram_w)
|
||||
{
|
||||
/* does it ever actually write.. */
|
||||
}
|
||||
|
||||
READ16_MEMBER(segas32_state::ga2_dpram_r)
|
||||
{
|
||||
return (m_ga2_dpram[offset])|(m_ga2_dpram[offset+1]<<8);
|
||||
}
|
||||
|
||||
|
||||
#if 0 // simulation
|
||||
READ16_MEMBER(segas32_state::ga2_sprite_protection_r)
|
||||
|
Loading…
Reference in New Issue
Block a user