mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
system1: no need for m_mute_xor variable, add 2nd coincounter for nob, add shtngmst gun adjustment port
This commit is contained in:
parent
581d5d7e74
commit
902577c53d
@ -9,13 +9,12 @@ driver by Jarek Parchanski, Nicola Salmoria, Mirko Buffoni
|
|||||||
Up'n Down, Mister Viking, Flicky, SWAT, Water Match and Bull Fight are known
|
Up'n Down, Mister Viking, Flicky, SWAT, Water Match and Bull Fight are known
|
||||||
to run on IDENTICAL hardware (they were sold by Bally-Midway as ROM swaps).
|
to run on IDENTICAL hardware (they were sold by Bally-Midway as ROM swaps).
|
||||||
|
|
||||||
DIP locations verified from manual for:
|
TODO:
|
||||||
- wboy
|
- fully understand nobb ports involved in the protection
|
||||||
- choplift
|
- different XTAL/divider configurations for some Star Jacker cabinets?
|
||||||
|
See you.tube/-a7srHVPb_U
|
||||||
TODO: - fully understand nobb ports involved in the protection
|
- shtngmst handgun acts like a machine gun, trigger is a normal microswitch,
|
||||||
- different XTAL/divider configurations for some Star Jacker
|
so what causes this?
|
||||||
cabinets? See you.tube/-a7srHVPb_U
|
|
||||||
|
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
@ -349,13 +348,6 @@ void system1_state::machine_start()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MACHINE_START_MEMBER(system1_state,system2)
|
|
||||||
{
|
|
||||||
system1_state::machine_start();
|
|
||||||
m_mute_xor = 0x01;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void system1_state::machine_reset()
|
void system1_state::machine_reset()
|
||||||
{
|
{
|
||||||
m_dakkochn_mux_data = 0;
|
m_dakkochn_mux_data = 0;
|
||||||
@ -459,20 +451,6 @@ void system1_state::dakkochn_custom_w(u8 data, u8 prevdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
|
||||||
*
|
|
||||||
* Shooting Master gun input
|
|
||||||
*
|
|
||||||
*************************************/
|
|
||||||
|
|
||||||
u8 system1_state::shtngmst_gunx_r()
|
|
||||||
{
|
|
||||||
// x is slightly offset, and has a range of 00-fe
|
|
||||||
u8 x = ioport("GUNX")->read() - 0x12;
|
|
||||||
return (x == 0xff) ? 0xfe : x;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Sound I/O
|
* Sound I/O
|
||||||
@ -482,7 +460,7 @@ u8 system1_state::shtngmst_gunx_r()
|
|||||||
void system1_state::sound_control_w(u8 data)
|
void system1_state::sound_control_w(u8 data)
|
||||||
{
|
{
|
||||||
/* bit 0 = MUTE (inverted sense on System 2) */
|
/* bit 0 = MUTE (inverted sense on System 2) */
|
||||||
machine().sound().system_mute((data ^ m_mute_xor) & 1);
|
machine().sound().system_mute(data & 1);
|
||||||
|
|
||||||
/* bit 6 = feedback from sound board that read occurred */
|
/* bit 6 = feedback from sound board that read occurred */
|
||||||
|
|
||||||
@ -551,12 +529,12 @@ void system1_state::mcu_control_w(u8 data)
|
|||||||
Bit 0 -> Directly connected to Z80 /INT line
|
Bit 0 -> Directly connected to Z80 /INT line
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* boost interleave to ensure that the MCU can break the Z80 out of a HALT */
|
/* boost interleave to ensure that the MCU can break the Z80 out of BUSRQ */
|
||||||
if (!BIT(m_mcu_control, 6) && BIT(data, 6))
|
if (!BIT(m_mcu_control, 6) && BIT(data, 6))
|
||||||
machine().scheduler().perfect_quantum(attotime::from_usec(10));
|
machine().scheduler().perfect_quantum(attotime::from_usec(10));
|
||||||
|
|
||||||
m_mcu_control = data;
|
m_mcu_control = data;
|
||||||
m_maincpu->set_input_line(INPUT_LINE_HALT, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
|
m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
|
||||||
m_maincpu->set_input_line(0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
|
m_maincpu->set_input_line(0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,8 +573,11 @@ u8 system1_state::mcu_io_r(offs_t offset)
|
|||||||
return m_maincpu->space(AS_IO).read_byte(offset);
|
return m_maincpu->space(AS_IO).read_byte(offset);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
logerror("%03X: MCU movx read mode %02X offset %04X\n",
|
if (!machine().side_effects_disabled())
|
||||||
m_mcu->pc(), m_mcu_control, offset);
|
{
|
||||||
|
logerror("%03X: MCU movx read mode %02X offset %04X\n",
|
||||||
|
m_mcu->pc(), m_mcu_control, offset);
|
||||||
|
}
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -778,6 +759,15 @@ void system1_state::system1_ppi_io_map(address_map &map)
|
|||||||
map(0x14, 0x17).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
|
map(0x14, 0x17).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void system1_state::shtngmst_io_map(address_map &map)
|
||||||
|
{
|
||||||
|
system1_ppi_io_map(map);
|
||||||
|
map(0x10, 0x10).mirror(0x03).portr("TRIGGER");
|
||||||
|
map(0x18, 0x18).mirror(0x03).portr("SW12");
|
||||||
|
map(0x1c, 0x1c).mirror(0x02).portr("GUNX");
|
||||||
|
map(0x1d, 0x1d).mirror(0x02).portr("GUNY");
|
||||||
|
}
|
||||||
|
|
||||||
/* I/O map for systems with a Z80 PIO chip */
|
/* I/O map for systems with a Z80 PIO chip */
|
||||||
void system1_state::system1_pio_io_map(address_map &map)
|
void system1_state::system1_pio_io_map(address_map &map)
|
||||||
{
|
{
|
||||||
@ -791,15 +781,11 @@ void system1_state::system1_pio_io_map(address_map &map)
|
|||||||
map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
|
map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
|
||||||
}
|
}
|
||||||
|
|
||||||
void system1_state::blockgal_pio_io_map(address_map &map)
|
void system1_state::blockgal_io_map(address_map &map)
|
||||||
{
|
{
|
||||||
map.global_mask(0x1f);
|
system1_pio_io_map(map);
|
||||||
map(0x00, 0x00).mirror(0x03).portr("P1");
|
map(0x0c, 0x0c).mirror(0x02).unmapr();
|
||||||
map(0x04, 0x04).mirror(0x03).portr("P2");
|
map(0x0d, 0x0d).mirror(0x02).portr("SWA");
|
||||||
map(0x08, 0x08).mirror(0x03).portr("SYSTEM");
|
|
||||||
map(0x0d, 0x0d).mirror(0x02).portr("SWA"); // DIP2
|
|
||||||
map(0x10, 0x10).mirror(0x03).portr("SWB"); // DIP1
|
|
||||||
map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
@ -1754,6 +1740,9 @@ static INPUT_PORTS_START( shtngmst )
|
|||||||
PORT_MODIFY("P2")
|
PORT_MODIFY("P2")
|
||||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
|
PORT_MODIFY("SYSTEM")
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
PORT_MODIFY("SWA")
|
PORT_MODIFY("SWA")
|
||||||
PORT_DIPNAME( 0x01, 0x01, "Shots Per Second" ) PORT_DIPLOCATION("SWB:1")
|
PORT_DIPNAME( 0x01, 0x01, "Shots Per Second" ) PORT_DIPLOCATION("SWB:1")
|
||||||
PORT_DIPSETTING( 0x00, "3" )
|
PORT_DIPSETTING( 0x00, "3" )
|
||||||
@ -1777,46 +1766,52 @@ static INPUT_PORTS_START( shtngmst )
|
|||||||
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
|
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||||
|
|
||||||
PORT_START("TRIGGER") /* trigger is in here */
|
PORT_START("TRIGGER")
|
||||||
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||||
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||||
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
PORT_START("GUNX")
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
PORT_BIT( 0xff, 0x7f, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(0x00, 0xfe) PORT_SENSITIVITY(48) PORT_KEYDELTA(8)
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
|
|
||||||
PORT_START("GUNX") /* 1c */
|
PORT_START("GUNY")
|
||||||
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(48) PORT_KEYDELTA(8)
|
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_MINMAX(0x10, 0xf0) PORT_SENSITIVITY(64) PORT_KEYDELTA(8) PORT_REVERSE
|
||||||
|
|
||||||
PORT_START("GUNY") /* 1d */
|
PORT_START("SW12") // 2 dials
|
||||||
PORT_BIT( 0xff, 0x90, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_MINMAX(0x20, 0xff) PORT_SENSITIVITY(64) PORT_KEYDELTA(8) PORT_REVERSE
|
PORT_CONFNAME( 0x0f, 0x08, "Gun Y Offset" ) // SW 1
|
||||||
|
PORT_CONFSETTING( 0x00, "-16" )
|
||||||
PORT_START("18") /* 18 */
|
PORT_CONFSETTING( 0x01, "-14" )
|
||||||
/* what is this? check the game code... */
|
PORT_CONFSETTING( 0x02, "-12" )
|
||||||
PORT_DIPNAME( 0x01, 0x01, "port 18" )
|
PORT_CONFSETTING( 0x03, "-10" )
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x04, "-8" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x05, "-6" )
|
||||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x06, "-4" )
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x07, "-2" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x08, "0" )
|
||||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x09, "2" )
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x0a, "4" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x0b, "6" )
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x0c, "8" )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x0d, "10" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x0e, "12" )
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x0f, "14" )
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
PORT_CONFNAME( 0xf0, 0x60, "Gun X Offset" ) // SW 2
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x00, "-12" )
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x10, "-10" )
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x20, "-8" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x30, "-6" )
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x40, "-4" )
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x50, "-2" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x60, "0" )
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
PORT_CONFSETTING( 0x70, "2" )
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
PORT_CONFSETTING( 0x80, "4" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_CONFSETTING( 0x90, "6" )
|
||||||
|
PORT_CONFSETTING( 0xa0, "8" )
|
||||||
|
PORT_CONFSETTING( 0xb0, "10" )
|
||||||
|
PORT_CONFSETTING( 0xc0, "12" )
|
||||||
|
PORT_CONFSETTING( 0xd0, "14" )
|
||||||
|
PORT_CONFSETTING( 0xe0, "16" )
|
||||||
|
PORT_CONFSETTING( 0xf0, "18" )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( wboysys2 )
|
static INPUT_PORTS_START( wboysys2 )
|
||||||
@ -2034,7 +2029,7 @@ static INPUT_PORTS_START( dakkochn )
|
|||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) /* start 1 & 2 not connected. */
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) /* start 1 & 2 not connected. */
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
|
|
||||||
/*TODO: Dip-Switches */
|
/* TODO: Dip-Switches */
|
||||||
PORT_MODIFY("SWA")
|
PORT_MODIFY("SWA")
|
||||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:2")
|
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:2")
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||||
@ -2043,7 +2038,7 @@ static INPUT_PORTS_START( dakkochn )
|
|||||||
PORT_DIPSETTING( 0x04, "3" )
|
PORT_DIPSETTING( 0x04, "3" )
|
||||||
PORT_DIPSETTING( 0x0c, "4" )
|
PORT_DIPSETTING( 0x0c, "4" )
|
||||||
PORT_DIPSETTING( 0x08, "5" )
|
PORT_DIPSETTING( 0x08, "5" )
|
||||||
/* 0x00 gives 4 lives */
|
/* 0x00 gives 4 lives */
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:5")
|
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:5")
|
||||||
PORT_DIPSETTING( 0x10, "30000 100000 200000" )
|
PORT_DIPSETTING( 0x10, "30000 100000 200000" )
|
||||||
PORT_DIPSETTING( 0x00, "50000 150000 250000" )
|
PORT_DIPSETTING( 0x00, "50000 150000 250000" )
|
||||||
@ -2228,8 +2223,6 @@ void system1_state::sys1ppi(machine_config &config)
|
|||||||
void system1_state::sys1ppis(machine_config &config)
|
void system1_state::sys1ppis(machine_config &config)
|
||||||
{
|
{
|
||||||
sys1ppi(config);
|
sys1ppi(config);
|
||||||
|
|
||||||
/* video hardware */
|
|
||||||
m_screen->set_visarea(2*(0*8+8), 2*(32*8-1-8), 0*8, 28*8-1);
|
m_screen->set_visarea(2*(0*8+8), 2*(32*8-1-8), 0*8, 28*8-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2285,7 +2278,7 @@ void system1_state::sys1pioxb(machine_config &config)
|
|||||||
void system1_state::blockgal(machine_config &config)
|
void system1_state::blockgal(machine_config &config)
|
||||||
{
|
{
|
||||||
sys1pioxb(config);
|
sys1pioxb(config);
|
||||||
m_maincpu->set_addrmap(AS_IO, &system1_state::blockgal_pio_io_map);
|
m_maincpu->set_addrmap(AS_IO, &system1_state::blockgal_io_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system1_state::sys1ppix_315_5178(machine_config &config)
|
void system1_state::sys1ppix_315_5178(machine_config &config)
|
||||||
@ -2509,11 +2502,11 @@ void system1_state::mcu(machine_config &config)
|
|||||||
|
|
||||||
config.set_maximum_quantum(attotime::from_hz(m_maincpu->clock() / 16));
|
config.set_maximum_quantum(attotime::from_hz(m_maincpu->clock() / 16));
|
||||||
|
|
||||||
m_screen->screen_vblank().set_inputline("mcu", MCS51_INT0_LINE);
|
TIMER(config, "mcu_t0", 0).configure_periodic(FUNC(system1_state::mcu_t0_callback), attotime::from_usec(2500));
|
||||||
|
|
||||||
// This interrupt is driven by pin 15 of a PAL16R4 (315-5138 on Choplifter), based on the vertical count.
|
// This interrupt is driven by pin 15 of a PAL16R4 (315-5138 on Choplifter), based on the vertical count.
|
||||||
// The actual duty cycle likely differs from VBLANK, which is another output from the same PAL.
|
// The actual duty cycle likely differs from VBLANK, which is another output from the same PAL.
|
||||||
|
m_screen->screen_vblank().set_inputline("mcu", MCS51_INT0_LINE);
|
||||||
TIMER(config, "mcu_t0", 0).configure_periodic(FUNC(system1_state::mcu_t0_callback), attotime::from_usec(2500));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* alternate program map with RAM/collision swapped */
|
/* alternate program map with RAM/collision swapped */
|
||||||
@ -2524,6 +2517,9 @@ void system1_state::nob(machine_config &config)
|
|||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &system1_state::nobo_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &system1_state::nobo_map);
|
||||||
|
|
||||||
|
// nob is the only game that has 2 coin counters
|
||||||
|
m_ppi8255->out_pb_callback().append([this](u8 data) { machine().bookkeeping().coin_counter_w(1, data & 2); });
|
||||||
|
|
||||||
m_sn[1]->set_clock(SOUND_CLOCK / 4);
|
m_sn[1]->set_clock(SOUND_CLOCK / 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2546,7 +2542,7 @@ void system1_state::sys2(machine_config &config)
|
|||||||
{
|
{
|
||||||
sys1ppi(config);
|
sys1ppi(config);
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(system1_state,system2)
|
m_ppi8255->out_pc_callback().set(FUNC(system1_state::sound_control_w)).exor(0x01);
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_VIDEO_START_OVERRIDE(system1_state,system2)
|
MCFG_VIDEO_START_OVERRIDE(system1_state,system2)
|
||||||
@ -2608,18 +2604,17 @@ void system1_state::sys2xboot(machine_config &config)
|
|||||||
m_maincpu->set_addrmap(AS_OPCODES, &system1_state::banked_decrypted_opcodes_map);
|
m_maincpu->set_addrmap(AS_OPCODES, &system1_state::banked_decrypted_opcodes_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system1_state::sys2m(machine_config &config)
|
void system1_state::shtngmst(machine_config &config)
|
||||||
{
|
{
|
||||||
sys2(config);
|
sys2(config);
|
||||||
mcu(config);
|
mcu(config);
|
||||||
|
m_maincpu->set_addrmap(AS_IO, &system1_state::shtngmst_io_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* system2 with rowscroll */
|
/* system2 with rowscroll */
|
||||||
void system1_state::sys2row(machine_config &config)
|
void system1_state::sys2row(machine_config &config)
|
||||||
{
|
{
|
||||||
sys2(config);
|
sys2(config);
|
||||||
|
|
||||||
/* video hardware */
|
|
||||||
m_screen->set_screen_update(FUNC(system1_state::screen_update_system2_rowscroll));
|
m_screen->set_screen_update(FUNC(system1_state::screen_update_system2_rowscroll));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5691,16 +5686,6 @@ void system1_state::init_bootsys2d()
|
|||||||
m_bank1d->configure_entries(0, 4, m_maincpu_region->base() + 0x10000, 0x4000);
|
m_bank1d->configure_entries(0, 4, m_maincpu_region->base() + 0x10000, 0x4000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system1_state::init_shtngmst()
|
|
||||||
{
|
|
||||||
address_space &iospace = m_maincpu->space(AS_IO);
|
|
||||||
iospace.install_read_port(0x12, 0x12, "TRIGGER");
|
|
||||||
iospace.install_read_port(0x18, 0x18, 0x03, "18");
|
|
||||||
iospace.install_read_handler(0x1c, 0x1c, 0, 0x02, 0, read8smo_delegate(*this, FUNC(system1_state::shtngmst_gunx_r)));
|
|
||||||
iospace.install_read_port(0x1d, 0x1d, 0x02, "GUNY");
|
|
||||||
init_bank0c();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
@ -5762,7 +5747,7 @@ GAME( 1985, teddybboa, teddybb, sys1piox_315_5111, teddybb, system1_state, e
|
|||||||
GAME( 1985, teddybbobl, teddybb, sys1piox_315_5155, teddybb, system1_state, empty_init, ROT0, "bootleg", "TeddyBoy Blues (Old Ver. bootleg)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, teddybbobl, teddybb, sys1piox_315_5155, teddybb, system1_state, empty_init, ROT0, "bootleg", "TeddyBoy Blues (Old Ver. bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, myhero, 0, sys1pio, myhero, system1_state, empty_init, ROT0, "Coreland / Sega", "My Hero (US, not encrypted)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, myhero, 0, sys1pio, myhero, system1_state, empty_init, ROT0, "Coreland / Sega", "My Hero (US, not encrypted)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, sscandal, myhero, sys1piox_315_5132, myhero, system1_state, empty_init, ROT0, "Coreland / Sega", "Seishun Scandal (315-5132, Japan)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, sscandal, myhero, sys1piox_315_5132, myhero, system1_state, empty_init, ROT0, "Coreland / Sega", "Seishun Scandal (315-5132, Japan)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, myherobl, myhero, sys1piox_315_5132, myhero, system1_state, empty_init, ROT0, "bootleg", "My Hero (bootleg, 315-5132 encryption)", MACHINE_SUPPORTS_SAVE ) // cloned 315-5132 encryption? might be a direct copy of an undumped original set
|
GAME( 1985, myherobl, myhero, sys1piox_315_5132, myhero, system1_state, empty_init, ROT0, "bootleg", "My Hero (bootleg, 315-5132 encryption)", MACHINE_SUPPORTS_SAVE ) // cloned 315-5132 encryption? might be a direct copy of an undumped original set
|
||||||
GAME( 1985, myherok, myhero, sys1piox_315_5132, myhero, system1_state, init_myherok, ROT0, "Coreland / Sega", "Cheongchun Ilbeonji (Korea)", MACHINE_SUPPORTS_SAVE ) // possible bootleg, has extra encryption
|
GAME( 1985, myherok, myhero, sys1piox_315_5132, myhero, system1_state, init_myherok, ROT0, "Coreland / Sega", "Cheongchun Ilbeonji (Korea)", MACHINE_SUPPORTS_SAVE ) // possible bootleg, has extra encryption
|
||||||
GAME( 1985, 4dwarrio, 0, sys1piox_315_5162, 4dwarrio, system1_state, empty_init, ROT0, "Coreland / Sega", "4-D Warriors (315-5162)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, 4dwarrio, 0, sys1piox_315_5162, 4dwarrio, system1_state, empty_init, ROT0, "Coreland / Sega", "4-D Warriors (315-5162)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, raflesia, 0, sys1piox_315_5162, raflesia, system1_state, empty_init, ROT270, "Coreland / Sega", "Rafflesia (315-5162)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, raflesia, 0, sys1piox_315_5162, raflesia, system1_state, empty_init, ROT270, "Coreland / Sega", "Rafflesia (315-5162)", MACHINE_SUPPORTS_SAVE )
|
||||||
@ -5774,7 +5759,7 @@ GAME( 1986, wboyu, wboy, sys1pio, wboyu, system1_state, e
|
|||||||
GAME( 1986, wboy5, wboy, sys1piox_315_5135, wboy3, system1_state, empty_init, ROT0, "bootleg", "Wonder Boy (set 5, bootleg)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, wboy5, wboy, sys1piox_315_5135, wboy3, system1_state, empty_init, ROT0, "bootleg", "Wonder Boy (set 5, bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, wboyub, wboy, sys1piox_315_5177, wboy, system1_state, empty_init, ROT0, "bootleg", "Wonder Boy (US bootleg)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, wboyub, wboy, sys1piox_315_5177, wboy, system1_state, empty_init, ROT0, "bootleg", "Wonder Boy (US bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, wboyblt, wboy, sys1piox_315_5135, wboy3, system1_state, empty_init, ROT0, "bootleg (Tecfri)", "Wonder Boy (Tecfri bootleg)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, wboyblt, wboy, sys1piox_315_5135, wboy3, system1_state, empty_init, ROT0, "bootleg (Tecfri)", "Wonder Boy (Tecfri bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1987, blockgal, 0, blockgal, blockgal, system1_state, init_blockgal, ROT90, "Sega / Vic Tokai","Block Gal (MC-8123B, 317-0029)", MACHINE_SUPPORTS_SAVE)
|
GAME( 1987, blockgal, 0, blockgal, blockgal, system1_state, init_blockgal, ROT90, "Sega / Vic Tokai", "Block Gal (MC-8123B, 317-0029)", MACHINE_SUPPORTS_SAVE)
|
||||||
|
|
||||||
/* PIO-based System 1 with ROM banking */
|
/* PIO-based System 1 with ROM banking */
|
||||||
GAME( 1985, hvymetal, 0, sys1piox_315_5135, hvymetal, system1_state, init_bank44, ROT0, "Sega", "Heavy Metal (315-5135)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, hvymetal, 0, sys1piox_315_5135, hvymetal, system1_state, init_bank44, ROT0, "Sega", "Heavy Metal (315-5135)", MACHINE_SUPPORTS_SAVE )
|
||||||
@ -5785,7 +5770,7 @@ GAME( 1986, brain, 0, sys1pio, brain, system1_state, i
|
|||||||
GAME( 1985, choplift, 0, sys2rowm, choplift, system1_state, init_bank0c, ROT0, "Sega", "Choplifter (8751 315-5151)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, choplift, 0, sys2rowm, choplift, system1_state, init_bank0c, ROT0, "Sega", "Choplifter (8751 315-5151)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, chopliftu, choplift, sys2row, choplift, system1_state, init_bank0c, ROT0, "Sega", "Choplifter (unprotected)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, chopliftu, choplift, sys2row, choplift, system1_state, init_bank0c, ROT0, "Sega", "Choplifter (unprotected)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, chopliftbl, choplift, sys2row, choplift, system1_state, init_bank0c, ROT0, "bootleg", "Choplifter (bootleg)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, chopliftbl, choplift, sys2row, choplift, system1_state, init_bank0c, ROT0, "bootleg", "Choplifter (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1985, shtngmst, 0, sys2m, shtngmst, system1_state, init_shtngmst, ROT0, "Sega", "Shooting Master (8751 315-5159a)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1985, shtngmst, 0, shtngmst, shtngmst, system1_state, init_bank0c, ROT0, "Sega", "Shooting Master (8751 315-5159a)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, init_bank44, ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, init_bank44, ROT270, "bootleg", "Gardia (317-0007?, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, init_bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, init_bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -55,7 +55,7 @@ public:
|
|||||||
void sys1piox_315_5110(machine_config &config);
|
void sys1piox_315_5110(machine_config &config);
|
||||||
void sys1piox_315_5111(machine_config &config);
|
void sys1piox_315_5111(machine_config &config);
|
||||||
void sys1piox_315_5065(machine_config &config);
|
void sys1piox_315_5065(machine_config &config);
|
||||||
void sys2m(machine_config &config);
|
void shtngmst(machine_config &config);
|
||||||
void sys1ppix_315_5178(machine_config &config);
|
void sys1ppix_315_5178(machine_config &config);
|
||||||
void sys1ppix_315_5179(machine_config &config);
|
void sys1ppix_315_5179(machine_config &config);
|
||||||
void sys1piox_315_5093(machine_config &config);
|
void sys1piox_315_5093(machine_config &config);
|
||||||
@ -103,7 +103,6 @@ public:
|
|||||||
void init_nobb();
|
void init_nobb();
|
||||||
void init_dakkochn();
|
void init_dakkochn();
|
||||||
void init_bootleg();
|
void init_bootleg();
|
||||||
void init_shtngmst();
|
|
||||||
void init_blockgal();
|
void init_blockgal();
|
||||||
void init_nob();
|
void init_nob();
|
||||||
void init_myherok();
|
void init_myherok();
|
||||||
@ -135,9 +134,8 @@ private:
|
|||||||
tilemap_t *m_tilemap_page[8]{};
|
tilemap_t *m_tilemap_page[8]{};
|
||||||
u8 m_tilemap_pages = 0;
|
u8 m_tilemap_pages = 0;
|
||||||
|
|
||||||
// protection, miscs
|
// protection, misc
|
||||||
u8 m_adjust_cycles = 0;
|
u8 m_adjust_cycles = 0;
|
||||||
u8 m_mute_xor = 0;
|
|
||||||
u8 m_dakkochn_mux_data = 0;
|
u8 m_dakkochn_mux_data = 0;
|
||||||
u8 m_mcu_control = 0;
|
u8 m_mcu_control = 0;
|
||||||
u8 m_nob_maincpu_latch = 0;
|
u8 m_nob_maincpu_latch = 0;
|
||||||
@ -181,12 +179,10 @@ private:
|
|||||||
u8 nobb_inport23_r();
|
u8 nobb_inport23_r();
|
||||||
void nobb_outport24_w(u8 data);
|
void nobb_outport24_w(u8 data);
|
||||||
u8 nob_start_r();
|
u8 nob_start_r();
|
||||||
u8 shtngmst_gunx_r();
|
|
||||||
|
|
||||||
// video functions
|
// video functions
|
||||||
TILE_GET_INFO_MEMBER(tile_get_info);
|
TILE_GET_INFO_MEMBER(tile_get_info);
|
||||||
void system1_palette(palette_device &palette) const;
|
void system1_palette(palette_device &palette) const;
|
||||||
DECLARE_MACHINE_START(system2);
|
|
||||||
DECLARE_VIDEO_START(system2);
|
DECLARE_VIDEO_START(system2);
|
||||||
DECLARE_MACHINE_START(myherok);
|
DECLARE_MACHINE_START(myherok);
|
||||||
u32 screen_update_system1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_system1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
@ -244,9 +240,10 @@ private:
|
|||||||
void nobo_map(address_map &map) ATTR_COLD;
|
void nobo_map(address_map &map) ATTR_COLD;
|
||||||
void sound_map(address_map &map) ATTR_COLD;
|
void sound_map(address_map &map) ATTR_COLD;
|
||||||
void system1_map(address_map &map) ATTR_COLD;
|
void system1_map(address_map &map) ATTR_COLD;
|
||||||
void blockgal_pio_io_map(address_map &map) ATTR_COLD;
|
void blockgal_io_map(address_map &map) ATTR_COLD;
|
||||||
void system1_pio_io_map(address_map &map) ATTR_COLD;
|
void system1_pio_io_map(address_map &map) ATTR_COLD;
|
||||||
void system1_ppi_io_map(address_map &map) ATTR_COLD;
|
void system1_ppi_io_map(address_map &map) ATTR_COLD;
|
||||||
|
void shtngmst_io_map(address_map &map) ATTR_COLD;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAME_SEGA_SYSTEM1_H
|
#endif // MAME_SEGA_SYSTEM1_H
|
||||||
|
Loading…
Reference in New Issue
Block a user