This commit is contained in:
Cowering 2015-05-26 12:55:27 -05:00
commit b2af252a36
43 changed files with 257 additions and 221 deletions

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/********************************************************************* /*********************************************************************

View File

@ -5,10 +5,10 @@
EACA Colour Genie Floppy Disc Controller EACA Colour Genie Floppy Disc Controller
TODO: TODO:
- Only native MESS .mfi files load - Only native MESS .mfi files load (some sectors are marked DDM)
- FM mode disks can be formatted but don't work correctly
- What's the exact FD1793 model? - What's the exact FD1793 model?
- How does it turn off the motor? - How does it turn off the motor?
- How does it switch between FM/MFM?
- What's the source of the timer and the exact timings? - What's the source of the timer and the exact timings?
***************************************************************************/ ***************************************************************************/
@ -24,9 +24,6 @@
#define VERBOSE 0 #define VERBOSE 0
// set to 1 to test fm disk formats
#define FM_MODE 0
//************************************************************************** //**************************************************************************
// DEVICE DEFINITIONS // DEVICE DEFINITIONS
@ -34,6 +31,15 @@
const device_type CGENIE_FDC = &device_creator<cgenie_fdc_device>; const device_type CGENIE_FDC = &device_creator<cgenie_fdc_device>;
DEVICE_ADDRESS_MAP_START( mmio, 8, cgenie_fdc_device )
AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x10) AM_READWRITE(irq_r, select_w)
AM_RANGE(0xec, 0xef) AM_MIRROR(0x10) AM_DEVREAD("fd1793", fd1793_t, read)
AM_RANGE(0xec, 0xec) AM_MIRROR(0x10) AM_WRITE(command_w)
AM_RANGE(0xed, 0xed) AM_MIRROR(0x10) AM_DEVWRITE("fd1793", fd1793_t, track_w)
AM_RANGE(0xee, 0xee) AM_MIRROR(0x10) AM_DEVWRITE("fd1793", fd1793_t, sector_w)
AM_RANGE(0xef, 0xef) AM_MIRROR(0x10) AM_DEVWRITE("fd1793", fd1793_t, data_w)
ADDRESS_MAP_END
FLOPPY_FORMATS_MEMBER( cgenie_fdc_device::floppy_formats ) FLOPPY_FORMATS_MEMBER( cgenie_fdc_device::floppy_formats )
FLOPPY_CGENIE_FORMAT FLOPPY_CGENIE_FORMAT
FLOPPY_FORMATS_END FLOPPY_FORMATS_END
@ -132,10 +138,7 @@ void cgenie_fdc_device::device_reset()
m_slot->m_program->install_rom(0xc000, 0xdfff, memregion("software")->base()); m_slot->m_program->install_rom(0xc000, 0xdfff, memregion("software")->base());
// memory mapped i/o // memory mapped i/o
m_slot->m_program->install_read_handler(0xffe0, 0xffe3, 0, 0x10, read8_delegate(FUNC(cgenie_fdc_device::irq_r), this)); m_slot->m_program->install_device(0xff00, 0xffff, *this, &cgenie_fdc_device::mmio);
m_slot->m_program->install_write_handler(0xffe0, 0xffe3, 0, 0x10, write8_delegate(FUNC(cgenie_fdc_device::select_w), this));
m_slot->m_program->install_read_handler(0xffec, 0xffef, 0, 0x10, read8_delegate(FUNC(fd1793_t::read), m_fdc.target()));
m_slot->m_program->install_write_handler(0xffec, 0xffef, 0, 0x10, write8_delegate(FUNC(fd1793_t::write), m_fdc.target()));
// map extra socket // map extra socket
if (m_socket->exists()) if (m_socket->exists())
@ -199,9 +202,6 @@ WRITE8_MEMBER( cgenie_fdc_device::select_w )
if (VERBOSE) if (VERBOSE)
logerror("cgenie_fdc_device::motor_w: 0x%02x\n", data); logerror("cgenie_fdc_device::motor_w: 0x%02x\n", data);
if (FM_MODE)
m_fdc->dden_w(1);
m_floppy = NULL; m_floppy = NULL;
if (BIT(data, 0)) m_floppy = m_floppy0->get_device(); if (BIT(data, 0)) m_floppy = m_floppy0->get_device();
@ -217,3 +217,13 @@ WRITE8_MEMBER( cgenie_fdc_device::select_w )
m_floppy->mon_w(0); m_floppy->mon_w(0);
} }
} }
WRITE8_MEMBER( cgenie_fdc_device::command_w )
{
// density select is encoded into this pseudo-command
if ((data & 0xfe) == 0xfe)
m_fdc->dden_w(!BIT(data, 0));
// forward to the controller
m_fdc->cmd_w(data);
}

View File

@ -29,6 +29,8 @@ public:
// construction/destruction // construction/destruction
cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_ADDRESS_MAP(mmio, 8);
TIMER_DEVICE_CALLBACK_MEMBER(timer_callback); TIMER_DEVICE_CALLBACK_MEMBER(timer_callback);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(socket_load); DECLARE_DEVICE_IMAGE_LOAD_MEMBER(socket_load);
@ -36,6 +38,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(intrq_w); DECLARE_WRITE_LINE_MEMBER(intrq_w);
DECLARE_READ8_MEMBER(irq_r); DECLARE_READ8_MEMBER(irq_r);
DECLARE_WRITE8_MEMBER(select_w); DECLARE_WRITE8_MEMBER(select_w);
DECLARE_WRITE8_MEMBER(command_w);
DECLARE_FLOPPY_FORMATS(floppy_formats); DECLARE_FLOPPY_FORMATS(floppy_formats);

View File

@ -6,9 +6,27 @@
********************************************************************** **********************************************************************
____ ____ ____ ____
Vss 1 |* \_/ | 28 H2 Vss 1 |* \_/ | 40 H2
H3 2 | | 27 H1 H3 2 | | 39 H1
H4 3 | | 26 Vdd H4 3 | | 38 Vdd
CE 4 | | 25 S2 CE 4 | | 37 S2
MS 5 | | 24 S1 MS 5 | | 36 S1
STD 6 | | 23 S0 STD 6 | | 35 S0
A4 7 | TMS1024 | 22 D7 A1 7 | | 34 D3
B4 8 | | 21 C7 B1 8 | | 33 C3
C4 9 | | 20 B7 C1 9 | | 32 B3
D4 10 | | 19 A7 D1 10 | TMS1025 | 31 A3
A5 11 | | 18 D6 A4 11 | | 30 D7
B5 12 | | 17 C6 B4 12 | | 29 C7
C5 13 | | 16 B6 C4 13 | | 28 B7
D5 14 |___________| 15 A6 D4 14 | | 27 A7
A5 15 | | 26 D6
B5 16 | | 25 C6
C5 17 | | 24 B6
D5 18 | | 23 A6
A2 19 | | 22 D2
B2 20 |___________| 21 C2
**********************************************************************/ **********************************************************************/

View File

@ -188,7 +188,7 @@ ATTR_COLD void truthtable_desc_t::setup(const char **truthtable, UINT32 disabled
tindex[j] = k; tindex[j] = k;
} }
help(0, inout, 0 , val, tindex); help(0, inout, 0 , val, tindex.data());
ttline = pstring(truthtable[0]); ttline = pstring(truthtable[0]);
truthtable++; truthtable++;
} }

View File

@ -51,18 +51,15 @@ public:
m_list = NULL; m_list = NULL;
} }
ATTR_HOT /* inline */ operator _ListClass * () { return m_list; }
ATTR_HOT /* inline */ operator const _ListClass * () const { return m_list; }
/* using the [] operator will not allow gcc to vectorize code because /* using the [] operator will not allow gcc to vectorize code because
* basically a pointer is returned. * basically a pointer is returned.
* array works around this. * array works around this.
*/ */
ATTR_HOT /* inline */ _ListClass *array() { return m_list; } ATTR_HOT /* inline */ _ListClass *data() { return m_list; }
ATTR_HOT /* inline */ _ListClass& operator[](const std::size_t index) { return m_list[index]; } ATTR_HOT /* inline */ _ListClass& operator[](std::size_t index) { return m_list[index]; }
ATTR_HOT /* inline */ const _ListClass& operator[](const std::size_t index) const { return m_list[index]; } ATTR_HOT /* inline */ const _ListClass& operator[](std::size_t index) const { return m_list[index]; }
ATTR_HOT /* inline */ std::size_t size() const { return m_capacity; } ATTR_HOT /* inline */ std::size_t size() const { return m_capacity; }

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
class geebee_sound_device : public device_t, class geebee_sound_device : public device_t,
public device_sound_interface public device_sound_interface

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/* 8 voices max */ /* 8 voices max */
#define MAX_VOICES 8 #define MAX_VOICES 8

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -218,7 +218,7 @@ Notes:
TODO: TODO:
- There is still a big mystery about the first location of tri port ram, which is - There is still a big mystery about the first location of tri port ram, which is
shared among all four CPUs. See namcos1_mcu_patch_w() for the kludge: essentially, shared among all four CPUs. See mcu_patch_w() for the kludge: essentially,
this location has to be 0xA6 for the games to work. However, the MCU first sets it this location has to be 0xA6 for the games to work. However, the MCU first sets it
to 0xA6, then zeroes it - and there doesn't seem to be any code anywhere for any CPU to 0xA6, then zeroes it - and there doesn't seem to be any code anywhere for any CPU
that would set it back to 0xA6. Se, we ignore the zeroing write. that would set it back to 0xA6. Se, we ignore the zeroing write.
@ -358,19 +358,19 @@ READ8_MEMBER(namcos1_state::dsw_r)
return 0xf0 | ret; return 0xf0 | ret;
} }
WRITE8_MEMBER(namcos1_state::namcos1_coin_w) WRITE8_MEMBER(namcos1_state::coin_w)
{ {
coin_lockout_global_w(machine(), ~data & 1); coin_lockout_global_w(machine(), ~data & 1);
coin_counter_w(machine(), 0, data & 2); coin_counter_w(machine(), 0, data & 2);
coin_counter_w(machine(), 1, data & 4); coin_counter_w(machine(), 1, data & 4);
} }
void namcos1_state::namcos1_update_DACs() void namcos1_state::update_DACs()
{ {
m_dac->write_signed16(0x8000 + (m_dac0_value * m_dac0_gain) + (m_dac1_value * m_dac1_gain)); m_dac->write_signed16(0x8000 + (m_dac0_value * m_dac0_gain) + (m_dac1_value * m_dac1_gain));
} }
void namcos1_state::namcos1_init_DACs() void namcos1_state::init_DACs()
{ {
m_dac0_value = 0; m_dac0_value = 0;
m_dac1_value = 0; m_dac1_value = 0;
@ -378,7 +378,7 @@ void namcos1_state::namcos1_init_DACs()
m_dac1_gain = 0x80; m_dac1_gain = 0x80;
} }
WRITE8_MEMBER(namcos1_state::namcos1_dac_gain_w) WRITE8_MEMBER(namcos1_state::dac_gain_w)
{ {
int value; int value;
@ -390,19 +390,19 @@ WRITE8_MEMBER(namcos1_state::namcos1_dac_gain_w)
value = (data >> 3) & 3; /* GAIN2,GAIN3 */ value = (data >> 3) & 3; /* GAIN2,GAIN3 */
m_dac1_gain = 0x20 * (value+1); m_dac1_gain = 0x20 * (value+1);
namcos1_update_DACs(); update_DACs();
} }
WRITE8_MEMBER(namcos1_state::namcos1_dac0_w) WRITE8_MEMBER(namcos1_state::dac0_w)
{ {
m_dac0_value = data - 0x80; /* shift zero point */ m_dac0_value = data - 0x80; /* shift zero point */
namcos1_update_DACs(); update_DACs();
} }
WRITE8_MEMBER(namcos1_state::namcos1_dac1_w) WRITE8_MEMBER(namcos1_state::dac1_w)
{ {
m_dac1_value = data - 0x80; /* shift zero point */ m_dac1_value = data - 0x80; /* shift zero point */
namcos1_update_DACs(); update_DACs();
} }
@ -416,11 +416,11 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, namcos1_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( virtual_map, AS_PROGRAM, 8, namcos1_state ) static ADDRESS_MAP_START( virtual_map, AS_PROGRAM, 8, namcos1_state )
AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(namcos1_3dcs_w) AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(_3dcs_w)
AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write) AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write)
AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(namcos1_videoram_w) AM_SHARE("videoram") AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w) AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w)
AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(namcos1_spriteram_w) AM_SHARE("spriteram") AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram")
AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0) AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0)
AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */ AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */
AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800) AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800)
@ -436,7 +436,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, namcos1_state )
AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */ AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */
AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram") AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram")
AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */
AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos1_sound_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xc000, 0xc001) AM_WRITE(sound_bankswitch_w) /* ROM bank selector */
AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w) AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w)
AM_RANGE(0xe000, 0xe000) AM_WRITE(irq_ack_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(irq_ack_w)
AM_RANGE(0xc000, 0xffff) AM_ROM AM_RANGE(0xc000, 0xffff) AM_ROM
@ -452,16 +452,16 @@ static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, namcos1_state )
AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked ROM */ AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked ROM */
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram") AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram")
AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */ AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */
AM_RANGE(0xd000, 0xd000) AM_WRITE(namcos1_dac0_w) AM_RANGE(0xd000, 0xd000) AM_WRITE(dac0_w)
AM_RANGE(0xd400, 0xd400) AM_WRITE(namcos1_dac1_w) AM_RANGE(0xd400, 0xd400) AM_WRITE(dac1_w)
AM_RANGE(0xd800, 0xd800) AM_WRITE(namcos1_mcu_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xd800, 0xd800) AM_WRITE(mcu_bankswitch_w) /* ROM bank selector */
AM_RANGE(0xf000, 0xf000) AM_WRITE(irq_ack_w) AM_RANGE(0xf000, 0xf000) AM_WRITE(irq_ack_w)
AM_RANGE(0xf000, 0xffff) AM_ROM AM_RANGE(0xf000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_port_map, AS_IO, 8, namcos1_state ) static ADDRESS_MAP_START( mcu_port_map, AS_IO, 8, namcos1_state )
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(namcos1_coin_w) AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(coin_w)
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(namcos1_dac_gain_w) AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(dac_gain_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1063,8 +1063,8 @@ static MACHINE_CONFIG_START( ns1, namcos1_state )
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8) MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update_namcos1) MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update)
MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof_namcos1) MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", namcos1) MCFG_GFXDECODE_ADD("gfxdecode", "palette", namcos1)

View File

@ -317,9 +317,7 @@ rumbling on a subwoofer in the cabinet.)
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
#include "sound/flt_vol.h"
#include "includes/taitoipt.h" #include "includes/taitoipt.h"
#include "includes/ninjaw.h" #include "includes/ninjaw.h"
@ -355,7 +353,7 @@ WRITE8_MEMBER(ninjaw_state::sound_bankswitch_w)
membank("z80bank")->set_entry(data & 7); membank("z80bank")->set_entry(data & 7);
} }
WRITE16_MEMBER(ninjaw_state::ninjaw_sound_w) WRITE16_MEMBER(ninjaw_state::sound_w)
{ {
if (offset == 0) if (offset == 0)
m_tc0140syt->master_port_w(space, 0, data & 0xff); m_tc0140syt->master_port_w(space, 0, data & 0xff);
@ -364,11 +362,11 @@ WRITE16_MEMBER(ninjaw_state::ninjaw_sound_w)
#ifdef MAME_DEBUG #ifdef MAME_DEBUG
if (data & 0xff00) if (data & 0xff00)
popmessage("ninjaw_sound_w to high byte: %04x", data); popmessage("sound_w to high byte: %04x", data);
#endif #endif
} }
READ16_MEMBER(ninjaw_state::ninjaw_sound_r) READ16_MEMBER(ninjaw_state::sound_r)
{ {
if (offset == 1) if (offset == 1)
return ((m_tc0140syt->master_comm_r(space, 0) & 0xff)); return ((m_tc0140syt->master_comm_r(space, 0) & 0xff));
@ -379,7 +377,7 @@ READ16_MEMBER(ninjaw_state::ninjaw_sound_r)
/**** sound pan control ****/ /**** sound pan control ****/
WRITE8_MEMBER(ninjaw_state::ninjaw_pancontrol) WRITE8_MEMBER(ninjaw_state::pancontrol_w)
{ {
filter_volume_device *flt = NULL; filter_volume_device *flt = NULL;
offset &= 3; offset &= 3;
@ -415,7 +413,7 @@ static ADDRESS_MAP_START( ninjaw_master_map, AS_PROGRAM, 16, ninjaw_state )
AM_RANGE(0x200000, 0x200001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0x00ff) AM_RANGE(0x200000, 0x200001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff) AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff)
AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w) AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w) AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
@ -451,7 +449,7 @@ static ADDRESS_MAP_START( darius2_master_map, AS_PROGRAM, 16, ninjaw_state )
AM_RANGE(0x200000, 0x200001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0x00ff) AM_RANGE(0x200000, 0x200001) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, portreg_r, portreg_w, 0x00ff)
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff) AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, port_r, port_w, 0x00ff)
AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w) AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w) AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w)
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
@ -478,14 +476,14 @@ ADDRESS_MAP_END
/***************************************************************************/ /***************************************************************************/
static ADDRESS_MAP_START( ninjaw_sound_map, AS_PROGRAM, 8, ninjaw_state ) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ninjaw_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank")
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r,slave_comm_w) AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r,slave_comm_w)
AM_RANGE(0xe400, 0xe403) AM_WRITE(ninjaw_pancontrol) /* pan */ AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */
AM_RANGE(0xea00, 0xea00) AM_READNOP AM_RANGE(0xea00, 0xea00) AM_READNOP
AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
@ -624,17 +622,6 @@ static GFXDECODE_START( ninjaw )
GFXDECODE_END GFXDECODE_END
/**************************************************************
YM2610 (SOUND)
**************************************************************/
/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
WRITE_LINE_MEMBER(ninjaw_state::irqhandler)
{
m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
}
/************************************************************** /**************************************************************
SUBWOOFER (SOUND) SUBWOOFER (SOUND)
**************************************************************/ **************************************************************/
@ -649,7 +636,6 @@ public:
protected: protected:
// device-level overrides // device-level overrides
virtual void device_config_complete();
virtual void device_start(); virtual void device_start();
// sound stream update overrides // sound stream update overrides
@ -670,16 +656,6 @@ subwoofer_device::subwoofer_device(const machine_config &mconfig, const char *ta
{ {
} }
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void subwoofer_device::device_config_complete()
{
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
@ -720,7 +696,7 @@ to the scrolling background.
Darius2: arbitrary interleaving of 10 to keep cpus synced. Darius2: arbitrary interleaving of 10 to keep cpus synced.
*************************************************************/ *************************************************************/
void ninjaw_state::ninjaw_postload() void ninjaw_state::postload()
{ {
parse_control(); parse_control();
} }
@ -731,7 +707,7 @@ void ninjaw_state::machine_start()
save_item(NAME(m_cpua_ctrl)); save_item(NAME(m_cpua_ctrl));
save_item(NAME(m_pandata)); save_item(NAME(m_pandata));
machine().save().register_postload(save_prepost_delegate(FUNC(ninjaw_state::ninjaw_postload), this)); machine().save().register_postload(save_prepost_delegate(FUNC(ninjaw_state::postload), this));
} }
void ninjaw_state::machine_reset() void ninjaw_state::machine_reset()
@ -751,7 +727,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
MCFG_CPU_ADD("audiocpu", Z80,16000000/4) /* 16/4 MHz ? */ MCFG_CPU_ADD("audiocpu", Z80,16000000/4) /* 16/4 MHz ? */
MCFG_CPU_PROGRAM_MAP(ninjaw_sound_map) MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */ MCFG_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */
MCFG_CPU_PROGRAM_MAP(ninjaw_slave_map) MCFG_CPU_PROGRAM_MAP(ninjaw_slave_map)
@ -779,7 +755,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_left) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_left)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ADD("mscreen", RASTER) MCFG_SCREEN_ADD("mscreen", RASTER)
@ -787,7 +763,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_middle) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_middle)
MCFG_SCREEN_PALETTE("palette2") MCFG_SCREEN_PALETTE("palette2")
MCFG_SCREEN_ADD("rscreen", RASTER) MCFG_SCREEN_ADD("rscreen", RASTER)
@ -795,7 +771,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_right) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_right)
MCFG_SCREEN_PALETTE("palette3") MCFG_SCREEN_PALETTE("palette3")
MCFG_DEVICE_ADD("tc0100scn_1", TC0100SCN, 0) MCFG_DEVICE_ADD("tc0100scn_1", TC0100SCN, 0)
@ -838,7 +814,7 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymsnd", YM2610, 16000000/2) MCFG_SOUND_ADD("ymsnd", YM2610, 16000000/2)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(ninjaw_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25) MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(1, "2610.1.l", 1.0) MCFG_SOUND_ROUTE(1, "2610.1.l", 1.0)
@ -871,7 +847,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
MCFG_CPU_ADD("audiocpu", Z80,16000000/4) /* 4 MHz ? */ MCFG_CPU_ADD("audiocpu", Z80,16000000/4) /* 4 MHz ? */
MCFG_CPU_PROGRAM_MAP(ninjaw_sound_map) MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */ MCFG_CPU_ADD("sub", M68000,16000000/2) /* 8 MHz ? */
MCFG_CPU_PROGRAM_MAP(darius2_slave_map) MCFG_CPU_PROGRAM_MAP(darius2_slave_map)
@ -899,7 +875,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_left) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_left)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ADD("mscreen", RASTER) MCFG_SCREEN_ADD("mscreen", RASTER)
@ -907,7 +883,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_middle) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_middle)
MCFG_SCREEN_PALETTE("palette2") MCFG_SCREEN_PALETTE("palette2")
MCFG_SCREEN_ADD("rscreen", RASTER) MCFG_SCREEN_ADD("rscreen", RASTER)
@ -915,7 +891,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8) MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 3*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_ninjaw_right) MCFG_SCREEN_UPDATE_DRIVER(ninjaw_state, screen_update_right)
MCFG_SCREEN_PALETTE("palette3") MCFG_SCREEN_PALETTE("palette3")
MCFG_DEVICE_ADD("tc0100scn_1", TC0100SCN, 0) MCFG_DEVICE_ADD("tc0100scn_1", TC0100SCN, 0)
@ -958,7 +934,7 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ymsnd", YM2610, 16000000/2) MCFG_SOUND_ADD("ymsnd", YM2610, 16000000/2)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(ninjaw_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.25) MCFG_SOUND_ROUTE(0, "rspeaker", 0.25)
MCFG_SOUND_ROUTE(1, "2610.1.l", 1.0) MCFG_SOUND_ROUTE(1, "2610.1.l", 1.0)
@ -1198,7 +1174,7 @@ ROM_END
/* Working Games */ /* Working Games */
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS // YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS
GAME( 1987, ninjaw, 0, ninjaw, ninjaw, driver_device, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World)", 0 ) GAME( 1987, ninjaw, 0, ninjaw, ninjaw, driver_device, 0, ROT0, "Taito Corporation Japan", "The Ninja Warriors (World)", GAME_SUPPORTS_SAVE )
GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, driver_device, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", 0 ) GAME( 1987, ninjawj, ninjaw, ninjaw, ninjawj, driver_device, 0, ROT0, "Taito Corporation", "The Ninja Warriors (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1987, ninjawu, ninjaw, ninjaw, ninjaw, driver_device, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US)", 0 ) /* Uses same coinage as World, see notes */ GAME( 1987, ninjawu, ninjaw, ninjaw, ninjaw, driver_device, 0, ROT0, "Taito Corporation America (licensed to Romstar)", "The Ninja Warriors (US)", GAME_SUPPORTS_SAVE ) /* Uses same coinage as World, see notes */
GAME( 1989, darius2, 0, darius2, darius2, driver_device, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", 0 ) GAME( 1989, darius2, 0, darius2, darius2, driver_device, 0, ROT0, "Taito Corporation", "Darius II (triple screen) (Japan)", GAME_SUPPORTS_SAVE )

View File

@ -1,5 +1,5 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Darren Olafson // copyright-holders:Darren Olafson, Zsolt Vasvari
/*************************************************************************** /***************************************************************************
New York! New York! hardware New York! New York! hardware

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************
Wiping Wiping

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/************************************************************************* /*************************************************************************

View File

@ -67,21 +67,35 @@ public:
UINT8 *m_tilemap_maskdata; UINT8 *m_tilemap_maskdata;
int m_copy_sprites; int m_copy_sprites;
UINT8 m_drawmode_table[16]; UINT8 m_drawmode_table[16];
DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_main); DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_main);
DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_sub); DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_sub);
DECLARE_WRITE_LINE_MEMBER(subres_w); DECLARE_WRITE_LINE_MEMBER(subres_w);
DECLARE_WRITE8_MEMBER(irq_ack_w); DECLARE_WRITE8_MEMBER(irq_ack_w);
DECLARE_READ8_MEMBER(dsw_r); DECLARE_READ8_MEMBER(dsw_r);
DECLARE_WRITE8_MEMBER(namcos1_coin_w); DECLARE_WRITE8_MEMBER(coin_w);
DECLARE_WRITE8_MEMBER(namcos1_dac_gain_w); DECLARE_WRITE8_MEMBER(dac_gain_w);
DECLARE_WRITE8_MEMBER(namcos1_dac0_w); DECLARE_WRITE8_MEMBER(dac0_w);
DECLARE_WRITE8_MEMBER(namcos1_dac1_w); DECLARE_WRITE8_MEMBER(dac1_w);
DECLARE_WRITE8_MEMBER(namcos1_sound_bankswitch_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE8_MEMBER(namcos1_mcu_bankswitch_w); DECLARE_WRITE8_MEMBER(mcu_bankswitch_w);
DECLARE_WRITE8_MEMBER(namcos1_mcu_patch_w); DECLARE_WRITE8_MEMBER(mcu_patch_w);
DECLARE_READ8_MEMBER(quester_paddle_r); DECLARE_READ8_MEMBER(quester_paddle_r);
DECLARE_READ8_MEMBER(berabohm_buttons_r); DECLARE_READ8_MEMBER(berabohm_buttons_r);
DECLARE_READ8_MEMBER(faceoff_inputs_r); DECLARE_READ8_MEMBER(faceoff_inputs_r);
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(spriteram_w);
DECLARE_WRITE8_MEMBER(_3dcs_w);
DECLARE_READ8_MEMBER(no_key_r);
DECLARE_WRITE8_MEMBER(no_key_w);
DECLARE_READ8_MEMBER(key_type1_r);
DECLARE_WRITE8_MEMBER(key_type1_w);
DECLARE_READ8_MEMBER(key_type2_r);
DECLARE_WRITE8_MEMBER(key_type2_w);
DECLARE_READ8_MEMBER(key_type3_r);
DECLARE_WRITE8_MEMBER(key_type3_w);
DECLARE_DRIVER_INIT(pacmania); DECLARE_DRIVER_INIT(pacmania);
DECLARE_DRIVER_INIT(ws); DECLARE_DRIVER_INIT(ws);
DECLARE_DRIVER_INIT(wldcourt); DECLARE_DRIVER_INIT(wldcourt);
@ -105,31 +119,24 @@ public:
DECLARE_DRIVER_INIT(ws89); DECLARE_DRIVER_INIT(ws89);
DECLARE_DRIVER_INIT(dspirit); DECLARE_DRIVER_INIT(dspirit);
DECLARE_DRIVER_INIT(pistoldm); DECLARE_DRIVER_INIT(pistoldm);
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
void driver_init();
TILE_GET_INFO_MEMBER(bg_get_info0); TILE_GET_INFO_MEMBER(bg_get_info0);
TILE_GET_INFO_MEMBER(bg_get_info1); TILE_GET_INFO_MEMBER(bg_get_info1);
TILE_GET_INFO_MEMBER(bg_get_info2); TILE_GET_INFO_MEMBER(bg_get_info2);
TILE_GET_INFO_MEMBER(bg_get_info3); TILE_GET_INFO_MEMBER(bg_get_info3);
TILE_GET_INFO_MEMBER(fg_get_info4); TILE_GET_INFO_MEMBER(fg_get_info4);
TILE_GET_INFO_MEMBER(fg_get_info5); TILE_GET_INFO_MEMBER(fg_get_info5);
virtual void machine_reset();
virtual void video_start();
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_namcos1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_namcos1(screen_device &screen, bool state); void screen_eof(screen_device &screen, bool state);
void namcos1_update_DACs(); void update_DACs();
void namcos1_init_DACs(); void init_DACs();
DECLARE_WRITE8_MEMBER( namcos1_videoram_w );
DECLARE_WRITE8_MEMBER( namcos1_spriteram_w );
WRITE8_MEMBER( namcos1_3dcs_w );
READ8_MEMBER( no_key_r );
WRITE8_MEMBER( no_key_w );
READ8_MEMBER( key_type1_r );
WRITE8_MEMBER( key_type1_w );
READ8_MEMBER( key_type2_r );
WRITE8_MEMBER( key_type2_w );
READ8_MEMBER( key_type3_r );
WRITE8_MEMBER( key_type3_w );
void namcos1_driver_init();
private: private:
inline offs_t direct_handler(int whichcpu, direct_read_data &direct, offs_t address); inline offs_t direct_handler(int whichcpu, direct_read_data &direct, offs_t address);
inline void get_tile_info(tile_data &tileinfo,int tile_index,UINT8 *info_vram); inline void get_tile_info(tile_data &tileinfo,int tile_index,UINT8 *info_vram);

View File

@ -18,7 +18,6 @@ class ninjaw_state : public driver_device
public: public:
ninjaw_state(const machine_config &mconfig, device_type type, const char *tag) ninjaw_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_subcpu(*this, "sub"), m_subcpu(*this, "sub"),
@ -35,14 +34,8 @@ public:
m_2610_2l(*this, "2610.2.l"), m_2610_2l(*this, "2610.2.l"),
m_2610_2r(*this, "2610.2.r"), m_2610_2r(*this, "2610.2.r"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_spriteram(*this, "spriteram") { }
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
/* misc */
UINT16 m_cpua_ctrl;
int m_pandata[4];
/* devices */ /* devices */
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
@ -63,20 +56,28 @@ public:
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
/* misc */
UINT16 m_cpua_ctrl;
int m_pandata[4];
DECLARE_WRITE16_MEMBER(cpua_ctrl_w); DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE16_MEMBER(ninjaw_sound_w); DECLARE_WRITE16_MEMBER(sound_w);
DECLARE_READ16_MEMBER(ninjaw_sound_r); DECLARE_READ16_MEMBER(sound_r);
DECLARE_WRITE8_MEMBER(ninjaw_pancontrol); DECLARE_WRITE8_MEMBER(pancontrol_w);
DECLARE_WRITE16_MEMBER(tc0100scn_triple_screen_w); DECLARE_WRITE16_MEMBER(tc0100scn_triple_screen_w);
virtual void machine_start(); virtual void machine_start();
virtual void machine_reset(); virtual void machine_reset();
UINT32 screen_update_ninjaw_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_ninjaw_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_ninjaw_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void ninjaw_postload(); UINT32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void postload();
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs ); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs );
void parse_control( ); void parse_control( );
UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn); UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, tc0100scn_device *tc0100scn);
DECLARE_WRITE_LINE_MEMBER(irqhandler);
}; };

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
class pooyan_state : public driver_device class pooyan_state : public driver_device
{ {

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
class shaolins_state : public driver_device class shaolins_state : public driver_device
{ {

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
class vastar_state : public driver_device class vastar_state : public driver_device
{ {

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
class wiping_state : public driver_device class wiping_state : public driver_device
{ {

View File

@ -10,7 +10,7 @@
* * * *
*******************************************************************************/ *******************************************************************************/
WRITE8_MEMBER( namcos1_state::namcos1_3dcs_w ) WRITE8_MEMBER( namcos1_state::_3dcs_w )
{ {
if (offset & 1) popmessage("LEFT"); if (offset & 1) popmessage("LEFT");
else popmessage("RIGHT"); else popmessage("RIGHT");
@ -475,12 +475,9 @@ WRITE8_MEMBER( namcos1_state::key_type3_w )
* * * *
*******************************************************************************/ *******************************************************************************/
WRITE8_MEMBER(namcos1_state::namcos1_sound_bankswitch_w) WRITE8_MEMBER(namcos1_state::sound_bankswitch_w)
{ {
UINT8 *rom = memregion("audiocpu")->base() + 0xc000; membank("soundbank")->set_entry((data & 0x70) >> 4);
int bank = (data & 0x70) >> 4;
membank("soundbank")->set_base(rom + 0x4000 * bank);
} }
@ -539,12 +536,25 @@ WRITE_LINE_MEMBER(namcos1_state::subres_w)
* * * *
*******************************************************************************/ *******************************************************************************/
void namcos1_state::machine_start()
{
membank("soundbank")->configure_entries(0, 8, memregion("audiocpu")->base() + 0xc000, 0x4000);
save_item(NAME(m_dac0_value));
save_item(NAME(m_dac1_value));
save_item(NAME(m_dac0_gain));
save_item(NAME(m_dac1_gain));
save_item(NAME(m_key));
save_item(NAME(m_mcu_patch_data));
save_item(NAME(m_reset));
}
void namcos1_state::machine_reset() void namcos1_state::machine_reset()
{ {
/* mcu patch data clear */ /* mcu patch data clear */
m_mcu_patch_data = 0; m_mcu_patch_data = 0;
namcos1_init_DACs(); init_DACs();
memset(m_key, 0, sizeof(m_key)); memset(m_key, 0, sizeof(m_key));
m_key_quotient = 0; m_key_quotient = 0;
m_key_reminder = 0; m_key_reminder = 0;
@ -566,7 +576,7 @@ void namcos1_state::machine_reset()
*******************************************************************************/ *******************************************************************************/
/* mcu banked rom area select */ /* mcu banked rom area select */
WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w) WRITE8_MEMBER(namcos1_state::mcu_bankswitch_w)
{ {
int addr; int addr;
@ -590,8 +600,8 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w)
/* This point is very obscure, but i havent found any better way yet. */ /* This point is very obscure, but I haven't found any better way yet. */
/* Works with all games so far. */ /* Works with all games so far. */
/* patch points of memory address */ /* patch points of memory address */
/* CPU0/1 bank[17f][1000] */ /* CPU0/1 bank[17f][1000] */
@ -602,7 +612,7 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w)
/* I found set $A6 only initialize in MCU */ /* I found set $A6 only initialize in MCU */
/* This patch kill write this data by MCU case $A6 to xx(clear) */ /* This patch kill write this data by MCU case $A6 to xx(clear) */
WRITE8_MEMBER(namcos1_state::namcos1_mcu_patch_w) WRITE8_MEMBER(namcos1_state::mcu_patch_w)
{ {
//logerror("mcu C000 write pc=%04x data=%02x\n",space.device().safe_pc(),data); //logerror("mcu C000 write pc=%04x data=%02x\n",space.device().safe_pc(),data);
if (m_mcu_patch_data == 0xa6) return; if (m_mcu_patch_data == 0xa6) return;
@ -617,7 +627,7 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_patch_w)
* driver specific initialize routine * * driver specific initialize routine *
* * * *
*******************************************************************************/ *******************************************************************************/
void namcos1_state::namcos1_driver_init() void namcos1_state::driver_init()
{ {
// bit 16 of the address is inverted for PRG7 (and bits 17,18 just not connected) // bit 16 of the address is inverted for PRG7 (and bits 17,18 just not connected)
for (int i = 0x380000;i < 0x400000;i++) for (int i = 0x380000;i < 0x400000;i++)
@ -634,7 +644,7 @@ void namcos1_state::namcos1_driver_init()
m_subcpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(namcos1_state::direct_handler_sub), this)); m_subcpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(namcos1_state::direct_handler_sub), this));
// kludge! see notes // kludge! see notes
m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(namcos1_state::namcos1_mcu_patch_w), this)); m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(namcos1_state::mcu_patch_w), this));
// these are overridden as needed in the specific DRIVER_INIT_MEMBERs // these are overridden as needed in the specific DRIVER_INIT_MEMBERs
m_key_id = 0; m_key_id = 0;
@ -652,7 +662,7 @@ void namcos1_state::namcos1_driver_init()
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,shadowld) DRIVER_INIT_MEMBER(namcos1_state,shadowld)
{ {
namcos1_driver_init(); driver_init();
} }
/******************************************************************************* /*******************************************************************************
@ -660,7 +670,7 @@ DRIVER_INIT_MEMBER(namcos1_state,shadowld)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,dspirit) DRIVER_INIT_MEMBER(namcos1_state,dspirit)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type1_r),this), read8_delegate(FUNC(namcos1_state::key_type1_r),this),
write8_delegate(FUNC(namcos1_state::key_type1_w),this)); write8_delegate(FUNC(namcos1_state::key_type1_w),this));
@ -672,7 +682,7 @@ DRIVER_INIT_MEMBER(namcos1_state,dspirit)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,wldcourt) DRIVER_INIT_MEMBER(namcos1_state,wldcourt)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type1_r),this), read8_delegate(FUNC(namcos1_state::key_type1_r),this),
write8_delegate(FUNC(namcos1_state::key_type1_w),this)); write8_delegate(FUNC(namcos1_state::key_type1_w),this));
@ -684,7 +694,7 @@ DRIVER_INIT_MEMBER(namcos1_state,wldcourt)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,blazer) DRIVER_INIT_MEMBER(namcos1_state,blazer)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type1_r),this), read8_delegate(FUNC(namcos1_state::key_type1_r),this),
write8_delegate(FUNC(namcos1_state::key_type1_w),this)); write8_delegate(FUNC(namcos1_state::key_type1_w),this));
@ -696,7 +706,7 @@ DRIVER_INIT_MEMBER(namcos1_state,blazer)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,puzlclub) DRIVER_INIT_MEMBER(namcos1_state,puzlclub)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type1_r),this), read8_delegate(FUNC(namcos1_state::key_type1_r),this),
write8_delegate(FUNC(namcos1_state::key_type1_w),this)); write8_delegate(FUNC(namcos1_state::key_type1_w),this));
@ -708,11 +718,14 @@ DRIVER_INIT_MEMBER(namcos1_state,puzlclub)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,pacmania) DRIVER_INIT_MEMBER(namcos1_state,pacmania)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type2_r),this), read8_delegate(FUNC(namcos1_state::key_type2_r),this),
write8_delegate(FUNC(namcos1_state::key_type2_w),this)); write8_delegate(FUNC(namcos1_state::key_type2_w),this));
m_key_id = 0x12; m_key_id = 0x12;
save_item(NAME(m_key_quotient));
save_item(NAME(m_key_reminder));
save_item(NAME(m_key_numerator_high_word));
} }
/******************************************************************************* /*******************************************************************************
@ -720,11 +733,14 @@ DRIVER_INIT_MEMBER(namcos1_state,pacmania)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,alice) DRIVER_INIT_MEMBER(namcos1_state,alice)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type2_r),this), read8_delegate(FUNC(namcos1_state::key_type2_r),this),
write8_delegate(FUNC(namcos1_state::key_type2_w),this)); write8_delegate(FUNC(namcos1_state::key_type2_w),this));
m_key_id = 0x25; m_key_id = 0x25;
save_item(NAME(m_key_quotient));
save_item(NAME(m_key_reminder));
save_item(NAME(m_key_numerator_high_word));
} }
/******************************************************************************* /*******************************************************************************
@ -732,11 +748,14 @@ DRIVER_INIT_MEMBER(namcos1_state,alice)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,galaga88) DRIVER_INIT_MEMBER(namcos1_state,galaga88)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type2_r),this), read8_delegate(FUNC(namcos1_state::key_type2_r),this),
write8_delegate(FUNC(namcos1_state::key_type2_w),this)); write8_delegate(FUNC(namcos1_state::key_type2_w),this));
m_key_id = 0x31; m_key_id = 0x31;
save_item(NAME(m_key_quotient));
save_item(NAME(m_key_reminder));
save_item(NAME(m_key_numerator_high_word));
} }
/******************************************************************************* /*******************************************************************************
@ -744,11 +763,14 @@ DRIVER_INIT_MEMBER(namcos1_state,galaga88)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,ws) DRIVER_INIT_MEMBER(namcos1_state,ws)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type2_r),this), read8_delegate(FUNC(namcos1_state::key_type2_r),this),
write8_delegate(FUNC(namcos1_state::key_type2_w),this)); write8_delegate(FUNC(namcos1_state::key_type2_w),this));
m_key_id = 0x07; m_key_id = 0x07;
save_item(NAME(m_key_quotient));
save_item(NAME(m_key_reminder));
save_item(NAME(m_key_numerator_high_word));
} }
/******************************************************************************* /*******************************************************************************
@ -756,11 +778,14 @@ DRIVER_INIT_MEMBER(namcos1_state,ws)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,bakutotu) DRIVER_INIT_MEMBER(namcos1_state,bakutotu)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type2_r),this), read8_delegate(FUNC(namcos1_state::key_type2_r),this),
write8_delegate(FUNC(namcos1_state::key_type2_w),this)); write8_delegate(FUNC(namcos1_state::key_type2_w),this));
m_key_id = 0x22; m_key_id = 0x22;
save_item(NAME(m_key_quotient));
save_item(NAME(m_key_reminder));
save_item(NAME(m_key_numerator_high_word));
} }
/******************************************************************************* /*******************************************************************************
@ -768,7 +793,7 @@ DRIVER_INIT_MEMBER(namcos1_state,bakutotu)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,splatter) DRIVER_INIT_MEMBER(namcos1_state,splatter)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -786,7 +811,7 @@ DRIVER_INIT_MEMBER(namcos1_state,splatter)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,rompers) DRIVER_INIT_MEMBER(namcos1_state,rompers)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -804,7 +829,7 @@ DRIVER_INIT_MEMBER(namcos1_state,rompers)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,blastoff) DRIVER_INIT_MEMBER(namcos1_state,blastoff)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -822,7 +847,7 @@ DRIVER_INIT_MEMBER(namcos1_state,blastoff)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,ws89) DRIVER_INIT_MEMBER(namcos1_state,ws89)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -840,7 +865,7 @@ DRIVER_INIT_MEMBER(namcos1_state,ws89)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,tankfrce) DRIVER_INIT_MEMBER(namcos1_state,tankfrce)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -863,6 +888,8 @@ DRIVER_INIT_MEMBER(namcos1_state,tankfrc4)
m_stored_input[1] = 0; m_stored_input[1] = 0;
m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_stored_input));
} }
/******************************************************************************* /*******************************************************************************
@ -870,7 +897,7 @@ DRIVER_INIT_MEMBER(namcos1_state,tankfrc4)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,dangseed) DRIVER_INIT_MEMBER(namcos1_state,dangseed)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -888,7 +915,7 @@ DRIVER_INIT_MEMBER(namcos1_state,dangseed)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,pistoldm) DRIVER_INIT_MEMBER(namcos1_state,pistoldm)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -906,7 +933,7 @@ DRIVER_INIT_MEMBER(namcos1_state,pistoldm)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,ws90) DRIVER_INIT_MEMBER(namcos1_state,ws90)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -924,7 +951,7 @@ DRIVER_INIT_MEMBER(namcos1_state,ws90)
*******************************************************************************/ *******************************************************************************/
DRIVER_INIT_MEMBER(namcos1_state,soukobdx) DRIVER_INIT_MEMBER(namcos1_state,soukobdx)
{ {
namcos1_driver_init(); driver_init();
m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff,
read8_delegate(FUNC(namcos1_state::key_type3_r),this), read8_delegate(FUNC(namcos1_state::key_type3_r),this),
write8_delegate(FUNC(namcos1_state::key_type3_w),this)); write8_delegate(FUNC(namcos1_state::key_type3_w),this));
@ -975,8 +1002,9 @@ READ8_MEMBER( namcos1_state::quester_paddle_r )
DRIVER_INIT_MEMBER(namcos1_state,quester) DRIVER_INIT_MEMBER(namcos1_state,quester)
{ {
m_strobe = 0; m_strobe = 0;
namcos1_driver_init(); driver_init();
m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::quester_paddle_r), this)); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::quester_paddle_r), this));
save_item(NAME(m_strobe));
} }
@ -1065,8 +1093,11 @@ DRIVER_INIT_MEMBER(namcos1_state,berabohm)
m_input_count = 0; m_input_count = 0;
m_strobe = 0; m_strobe = 0;
m_strobe_count = 0; m_strobe_count = 0;
namcos1_driver_init(); driver_init();
m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::berabohm_buttons_r), this)); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::berabohm_buttons_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_strobe));
save_item(NAME(m_strobe_count));
} }
@ -1141,6 +1172,8 @@ DRIVER_INIT_MEMBER(namcos1_state,faceoff)
m_stored_input[0] = 0; m_stored_input[0] = 0;
m_stored_input[1] = 0; m_stored_input[1] = 0;
namcos1_driver_init(); driver_init();
m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this));
save_item(NAME(m_input_count));
save_item(NAME(m_stored_input));
} }

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -141,6 +141,8 @@ void namcos1_state::video_start()
memset(m_playfield_control, 0, sizeof(m_playfield_control)); memset(m_playfield_control, 0, sizeof(m_playfield_control));
m_copy_sprites = 0; m_copy_sprites = 0;
save_item(NAME(m_copy_sprites));
} }
@ -151,7 +153,7 @@ void namcos1_state::video_start()
***************************************************************************/ ***************************************************************************/
WRITE8_MEMBER( namcos1_state::namcos1_videoram_w ) WRITE8_MEMBER( namcos1_state::videoram_w )
{ {
m_videoram[offset] = data; m_videoram[offset] = data;
if (offset < 0x7000) if (offset < 0x7000)
@ -170,7 +172,7 @@ WRITE8_MEMBER( namcos1_state::namcos1_videoram_w )
} }
WRITE8_MEMBER( namcos1_state::namcos1_spriteram_w ) WRITE8_MEMBER( namcos1_state::spriteram_w )
{ {
/* 0000-07ff work ram */ /* 0000-07ff work ram */
/* 0800-0fff sprite ram */ /* 0800-0fff sprite ram */
@ -280,7 +282,7 @@ void namcos1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co
UINT32 namcos1_state::screen_update_namcos1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) UINT32 namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
int i, j, scrollx, scrolly, priority; int i, j, scrollx, scrolly, priority;
rectangle new_clip = cliprect; rectangle new_clip = cliprect;
@ -344,7 +346,7 @@ UINT32 namcos1_state::screen_update_namcos1(screen_device &screen, bitmap_ind16
} }
void namcos1_state::screen_eof_namcos1(screen_device &screen, bool state) void namcos1_state::screen_eof(screen_device &screen, bool state)
{ {
// rising edge // rising edge
if (state) if (state)

View File

@ -9,7 +9,6 @@
void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs ) void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs )
{ {
UINT16 *spriteram = m_spriteram;
int offs, data, tilenum, color, flipx, flipy; int offs, data, tilenum, color, flipx, flipy;
int x, y, priority, curx, cury; int x, y, priority, curx, cury;
int code; int code;
@ -20,16 +19,16 @@ void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
for (offs = (m_spriteram.bytes() / 2) - 4; offs >= 0; offs -= 4) for (offs = (m_spriteram.bytes() / 2) - 4; offs >= 0; offs -= 4)
{ {
data = spriteram[offs + 2]; data = m_spriteram[offs + 2];
tilenum = data & 0x7fff; tilenum = data & 0x7fff;
if (!tilenum) if (!tilenum)
continue; continue;
data = spriteram[offs + 0]; data = m_spriteram[offs + 0];
x = (data - 32) & 0x3ff; /* aligns sprites on rock outcrops and sewer hole */ x = (data - 32) & 0x3ff; /* aligns sprites on rock outcrops and sewer hole */
data = spriteram[offs + 1]; data = m_spriteram[offs + 1];
y = (data - 0) & 0x1ff; y = (data - 0) & 0x1ff;
/* /*
@ -45,7 +44,7 @@ void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
Bit&0x8000 is set on some sprites in later levels of Darius Bit&0x8000 is set on some sprites in later levels of Darius
but is again unknown, and there is no obvious visual problem. but is again unknown, and there is no obvious visual problem.
*/ */
data = spriteram[offs + 3]; data = m_spriteram[offs + 3];
flipx = (data & 0x1); flipx = (data & 0x1);
flipy = (data & 0x2) >> 1; flipy = (data & 0x2) >> 1;
priority = (data & 0x4) >> 2; // 1 = low priority = (data & 0x4) >> 2; // 1 = low
@ -118,6 +117,6 @@ UINT32 ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap,
return 0; return 0;
} }
UINT32 ninjaw_state::screen_update_ninjaw_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 0, m_tc0100scn_1); } UINT32 ninjaw_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 0, m_tc0100scn_1); }
UINT32 ninjaw_state::screen_update_ninjaw_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 1, m_tc0100scn_2); } UINT32 ninjaw_state::screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 1, m_tc0100scn_2); }
UINT32 ninjaw_state::screen_update_ninjaw_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 2, m_tc0100scn_3); } UINT32 ninjaw_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 36 * 8 * 2, m_tc0100scn_3); }

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -40,16 +40,6 @@ void tc0110pcr_device::static_set_palette_tag(device_t &device, const char *tag)
downcast<tc0110pcr_device &>(device).m_palette.set_tag(tag); downcast<tc0110pcr_device &>(device).m_palette.set_tag(tag);
} }
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void tc0110pcr_device::device_config_complete()
{
}
//------------------------------------------------- //-------------------------------------------------
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
@ -60,6 +50,7 @@ void tc0110pcr_device::device_start()
save_pointer(NAME(m_ram), TC0110PCR_RAM_SIZE); save_pointer(NAME(m_ram), TC0110PCR_RAM_SIZE);
save_item(NAME(m_type)); save_item(NAME(m_type));
save_item(NAME(m_addr));
machine().save().register_postload(save_prepost_delegate(FUNC(tc0110pcr_device::restore_colors), this)); machine().save().register_postload(save_prepost_delegate(FUNC(tc0110pcr_device::restore_colors), this));
} }

View File

@ -22,7 +22,6 @@ public:
protected: protected:
// device-level overrides // device-level overrides
virtual void device_config_complete();
virtual void device_start(); virtual void device_start();
virtual void device_reset(); virtual void device_reset();

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:BSD-3-Clause
// copyright-holders:Allard van der Bas // copyright-holders:Allard van der Bas
/*************************************************************************** /***************************************************************************

View File

@ -1,4 +1,4 @@
// license:BSD-3-Clause // license:GPL-2.0+
// copyright-holders:Angelo Salese, Jonathan Edwards, Christopher Edwards,Robbbert // copyright-holders:Angelo Salese, Jonathan Edwards, Christopher Edwards,Robbbert
/************************************************************************************** /**************************************************************************************

View File

@ -1,4 +1,4 @@
// license:??? // license:GPL-2.0+
// copyright-holders:Jonathan Edwards // copyright-holders:Jonathan Edwards
/**************************************************************************** /****************************************************************************