-sound/dave, digitalk, k051649, lc7535, n63701x, namco, nile, s14001a: Removed MCFG macros. [Ryan Holtz]

-drivers/20pacgal, baraduke, deco32, fidel6502, fidelz80, galaga, gaplus, hcastle, hexion, jrpacman, konmedal,
 mappy, namcos86, pacland, pengo, polepos, quickpick5, rallyx, skykid, srmp6, tceptor, toypop: Removed MACHINE_CONFIG macros. [Ryan Holtz]
This commit is contained in:
mooglyguy 2018-12-19 07:53:28 +01:00
parent d07330bb29
commit cf5a34ce49
37 changed files with 1202 additions and 1286 deletions

View File

@ -12,37 +12,6 @@
#pragma once
///*************************************************************************
// MACROS / CONSTANTS
///*************************************************************************
///*************************************************************************
// INTERFACE CONFIGURATION MACROS
///*************************************************************************
#define MCFG_DAVE_ADD(_tag, _clock, _program_map, _io_map) \
SPEAKER(config, "lspeaker").front_left(); \
SPEAKER(config, "rspeaker").front_right(); \
MCFG_DEVICE_ADD(_tag, DAVE, _clock) \
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) \
MCFG_SOUND_ROUTE(1, "rspeaker", 0.25) \
MCFG_DEVICE_ADDRESS_MAP(AS_PROGRAM, _program_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_IO, _io_map)
#define MCFG_DAVE_IRQ_CALLBACK(_write) \
downcast<dave_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
#define MCFG_DAVE_LH_CALLBACK(_write) \
downcast<dave_device &>(*device).set_lh_wr_callback(DEVCB_##_write);
#define MCFG_DAVE_RH_CALLBACK(_write) \
downcast<dave_device &>(*device).set_rh_wr_callback(DEVCB_##_write);
///*************************************************************************
// TYPE DEFINITIONS
///*************************************************************************

View File

@ -6,17 +6,6 @@
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_DIGITALKER_ADD(tag, clock) \
MCFG_DEVICE_ADD((tag), DIGITALKER, (clock))
#define MCFG_DIGITALKER_REPLACE(tag, clock) \
MCFG_DEVICE_REPLACE((tag), DIGITALKER, (clock))
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************

View File

@ -6,21 +6,10 @@
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_K051649_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, K051649, _clock)
#define MCFG_K051649_REPLACE(_tag, _clock) \
MCFG_DEVICE_REPLACE(_tag, K051649, _clock)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> k051649_device
class k051649_device : public device_t,

View File

@ -27,23 +27,12 @@
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_LC7535_SELECT_CB(_read) \
downcast<lc7535_device &>(*device).set_select_callback(DEVCB_##_read);
#define MCFG_LC7535_VOLUME_CB(_class, _method) \
downcast<lc7535_device &>(*device).set_volume_callback(lc7535_device::volume_delegate(&_class::_method, #_class "::" #_method, this));
#define LC7535_VOLUME_CHANGED(name) void name(int attenuation_right, int attenuation_left, bool loudness)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
#define LC7535_VOLUME_CHANGED(name) void name(int attenuation_right, int attenuation_left, bool loudness)
class lc7535_device : public device_t
{
public:
@ -52,9 +41,16 @@ public:
typedef device_delegate<void (int attenuation_right, int attenuation_left, bool loudness)> volume_delegate;
template <typename Object> void set_volume_callback(Object &&cb) { m_volume_cb = std::forward<Object>(cb); }
template <class Object> devcb_base &set_select_callback(Object &&cb) { return m_select_cb.set_callback(std::forward<Object>(cb)); }
auto select() { return m_select_cb.bind(); }
void set_volume_callback(volume_delegate callback) { m_volume_cb = callback; }
template <class FunctionClass> void set_volume_callback(const char *devname, void (FunctionClass::*callback)(int, int, bool), const char *name)
{
set_volume_callback(volume_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_volume_callback(void (FunctionClass::*callback)(int, int, bool), const char *name)
{
set_volume_callback(volume_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
// serial interface
DECLARE_WRITE_LINE_MEMBER( ce_w );

View File

@ -5,16 +5,6 @@
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_NAMCO_63701X_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, NAMCO_63701X, _clock)
#define MCFG_NAMCO_63701X_REPLACE(_tag, _clock) \
MCFG_DEVICE_REPLACE(_tag, NAMCO_63701X, _clock)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************

View File

@ -61,7 +61,7 @@ namco_audio_device::namco_audio_device(const machine_config &mconfig, device_typ
, m_sample_rate(0)
, m_f_fracbits(0)
, m_voices(0)
, m_stereo(0)
, m_stereo(false)
{
}

View File

@ -6,20 +6,13 @@
#pragma once
#define MCFG_NAMCO_AUDIO_VOICES(_voices) \
downcast<namco_audio_device &>(*device).set_voices(_voices);
#define MCFG_NAMCO_AUDIO_STEREO(_stereo) \
downcast<namco_audio_device &>(*device).set_stereo(_stereo);
class namco_audio_device : public device_t,
public device_sound_interface
{
public:
// configuration
void set_voices(int voices) { m_voices = voices; }
void set_stereo(int stereo) { m_stereo = stereo; }
void set_stereo(bool stereo) { m_stereo = stereo; }
DECLARE_WRITE_LINE_MEMBER(sound_enable_w);
@ -71,7 +64,7 @@ protected:
int m_f_fracbits;
int m_voices; /* number of voices */
int m_stereo; /* set to 1 to indicate stereo (e.g., System 1) */
bool m_stereo; /* set to indicate stereo (e.g., System 1) */
/* decoded waveform table */
int16_t *m_waveform[MAX_VOLUME];

View File

@ -6,16 +6,6 @@
#pragma once
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_NILE_ADD(_tag, _clock) \
MCFG_DEVICE_ADD(_tag, NILE, _clock)
#define MCFG_NILE_REPLACE(_tag, _clock) \
MCFG_DEVICE_REPLACE(_tag, NILE, _clock)
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************

View File

@ -8,13 +8,6 @@
#ifndef MAME_SOUND_S14001A_H
#define MAME_SOUND_S14001A_H
#define MCFG_S14001A_BSY_HANDLER(_devcb) \
downcast<s14001a_device &>(*device).set_bsy_handler(DEVCB_##_devcb);
#define MCFG_S14001A_EXT_READ_HANDLER(_devcb) \
downcast<s14001a_device &>(*device).set_ext_read_handler(DEVCB_##_devcb);
class s14001a_device : public device_t, public device_sound_interface
{
public:

View File

@ -397,14 +397,14 @@ WRITE_LINE_MEMBER(_20pacgal_state::vblank_irq)
m_maincpu->set_input_line(0, HOLD_LINE); // TODO: assert breaks the inputs in 25pacman test mode
}
MACHINE_CONFIG_START(_20pacgal_state::_20pacgal)
void _20pacgal_state::_20pacgal(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z180, MAIN_CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(_20pacgal_map)
MCFG_DEVICE_IO_MAP(_20pacgal_io_map)
Z180(config, m_maincpu, MAIN_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &_20pacgal_state::_20pacgal_map);
m_maincpu->set_addrmap(AS_IO, &_20pacgal_state::_20pacgal_io_map);
EEPROM_93C46_8BIT(config, "eeprom");
EEPROM_93C46_8BIT(config, m_eeprom);
WATCHDOG_TIMER(config, "watchdog");
@ -414,26 +414,27 @@ MACHINE_CONFIG_START(_20pacgal_state::_20pacgal)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, NAMCO_AUDIO_CLOCK)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
namco_cus30_device &namco(NAMCO_CUS30(config, "namco", NAMCO_AUDIO_CLOCK));
namco.set_voices(3);
namco.add_route(ALL_OUTPUTS, "speaker", 1.0);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
MACHINE_CONFIG_START(_25pacman_state::_25pacman)
void _25pacman_state::_25pacman(machine_config &config)
{
_20pacgal(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(_25pacman_map)
MCFG_DEVICE_IO_MAP(_25pacman_io_map)
m_maincpu->set_addrmap(AS_PROGRAM, &_25pacman_state::_25pacman_map);
m_maincpu->set_addrmap(AS_IO, &_25pacman_state::_25pacman_io_map);
AMD_29LV200T(config, "flash");
MACHINE_CONFIG_END
}

View File

@ -111,7 +111,6 @@ DIP locations verified for:
#include "includes/baraduke.h"
#include "cpu/m6809/m6809.h"
#include "cpu/m6800/m6801.h"
#include "machine/watchdog.h"
#include "screen.h"
#include "speaker.h"
@ -364,41 +363,41 @@ void baraduke_state::machine_start()
}
MACHINE_CONFIG_START(baraduke_state::baraduke)
void baraduke_state::baraduke(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) // 68A09E
MCFG_DEVICE_PROGRAM_MAP(baraduke_map)
MC6809E(config, m_maincpu, XTAL(49'152'000)/32); // 68A09E
m_maincpu->set_addrmap(AS_PROGRAM, &baraduke_state::baraduke_map);
hd63701_cpu_device &mcu(HD63701(config, m_mcu, XTAL(49'152'000)/8));
mcu.set_addrmap(AS_PROGRAM, &baraduke_state::mcu_map);
mcu.in_p1_cb().set(FUNC(baraduke_state::inputport_r)); /* input ports read */
mcu.out_p1_cb().set(FUNC(baraduke_state::inputport_select_w)); /* input port select */
mcu.in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
mcu.out_p2_cb().set(FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */
HD63701(config, m_mcu, XTAL(49'152'000)/8);
m_mcu->set_addrmap(AS_PROGRAM, &baraduke_state::mcu_map);
m_mcu->in_p1_cb().set(FUNC(baraduke_state::inputport_r)); /* input ports read */
m_mcu->out_p1_cb().set(FUNC(baraduke_state::inputport_select_w)); /* input port select */
m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
m_mcu->out_p2_cb().set(FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */
config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synch */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 0, 36*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(baraduke_state, screen_update_baraduke)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, baraduke_state, screen_vblank_baraduke))
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(XTAL(49'152'000)/8, 384, 0, 36*8, 264, 2*8, 30*8);
screen.set_screen_update(FUNC(baraduke_state::screen_update_baraduke));
screen.screen_vblank().set(FUNC(baraduke_state::screen_vblank_baraduke));
screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_baraduke)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_INIT_OWNER(baraduke_state, baraduke)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_baraduke);
PALETTE(config, m_palette, 2048);
m_palette->set_init(FUNC(baraduke_state::palette_init_baraduke));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048);
m_cus30->set_voices(8);
m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0);
}

View File

@ -1854,33 +1854,32 @@ GFXDECODE_END
// MACHINE DEFINITIONS
//**************************************************************************
MACHINE_CONFIG_START(captaven_state::captaven)
void captaven_state::captaven(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000)/4) /* verified on pcb (Data East 101 custom)*/
MCFG_DEVICE_PROGRAM_MAP(captaven_map)
ARM(config, m_maincpu, XTAL(28'000'000)/4); /* verified on pcb (Data East 101 custom)*/
m_maincpu->set_addrmap(AS_PROGRAM, &captaven_state::captaven_map);
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000)/4/3)); /* pin 10 is 32mhz/4, pin 14 is High so internal divisor is 3 (verified on pcb) */
audiocpu.set_addrmap(AS_PROGRAM, &captaven_state::h6280_sound_map);
audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
MCFG_INPUT_MERGER_ANY_HIGH("irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE))
INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE);
DECO_IRQ(config, m_deco_irq, 0);
m_deco_irq->set_screen_tag(m_screen);
m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(captaven_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(captaven_state::screen_update));
m_screen->set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_captaven)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(XBGR)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_captaven);
PALETTE(config, m_palette, 2048);
m_palette->set_format(PALETTE_FORMAT_XBGR);
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@ -1933,34 +1932,35 @@ MACHINE_CONFIG_START(captaven_state::captaven)
m_ym2151->add_route(0, "lspeaker", 0.42);
m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
OKIM6295(config, m_oki[0], XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH) /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
MACHINE_CONFIG_END
OKIM6295(config, m_oki[1], XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb; pin 7 is floating to 2.5V (left unconnected), so I presume High */
m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
}
// DE-0380-2
MACHINE_CONFIG_START(fghthist_state::fghthist)
MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4)
MCFG_DEVICE_PROGRAM_MAP(fghthist_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert)
void fghthist_state::fghthist(machine_config &config)
{
ARM(config, m_maincpu, XTAL(28'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthist_map);
m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
h6280_device &audiocpu(H6280(config, m_audiocpu, XTAL(32'220'000) / 8));
audiocpu.set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_custom_latch_map);
audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
EEPROM_93C46_16BIT(config, "eeprom");
EEPROM_93C46_16BIT(config, m_eeprom);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(fghthist_state, screen_update)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(fghthist_state::screen_update));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_fghthist)
MCFG_PALETTE_ADD("palette", 2048)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_fghthist);
PALETTE(config, m_palette, 2048);
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@ -2018,28 +2018,26 @@ MACHINE_CONFIG_START(fghthist_state::fghthist)
m_ym2151->add_route(0, "lspeaker", 0.42);
m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
MACHINE_CONFIG_END
OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
}
// DE-0395-1
MACHINE_CONFIG_START(fghthist_state::fghthsta)
void fghthist_state::fghthsta(machine_config &config)
{
fghthist(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(fghthsta_memmap)
MCFG_DEVICE_MODIFY("audiocpu")
MCFG_DEVICE_PROGRAM_MAP(h6280_sound_map)
m_maincpu->set_addrmap(AS_PROGRAM, &fghthist_state::fghthsta_memmap);
m_audiocpu->set_addrmap(AS_PROGRAM, &fghthist_state::h6280_sound_map);
config.device_remove("soundlatch");
m_ioprot->soundlatch_irq_cb().set_inputline(m_audiocpu, 0);
MACHINE_CONFIG_END
}
// DE-0396-0
void fghthist_state::fghthistu(machine_config &config)
@ -2061,34 +2059,33 @@ void fghthist_state::fghthistu(machine_config &config)
}
// DE-0359-2 + Bottom board DE-0360-4
MACHINE_CONFIG_START(dragngun_state::dragngun)
void dragngun_state::dragngun(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4)
MCFG_DEVICE_PROGRAM_MAP(dragngun_map)
ARM(config, m_maincpu, XTAL(28'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::dragngun_map);
h6280_device &audiocpu(H6280(config, m_audiocpu, 32220000/8));
audiocpu.set_addrmap(AS_PROGRAM, &dragngun_state::h6280_sound_map);
audiocpu.add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused
audiocpu.add_route(ALL_OUTPUTS, "rspeaker", 0);
MCFG_INPUT_MERGER_ANY_HIGH("irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE))
INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE);
DECO_IRQ(config, m_deco_irq, 0);
m_deco_irq->set_screen_tag(m_screen);
m_deco_irq->raster2_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<0>));
m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
EEPROM_93C46_16BIT(config, "eeprom");
EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update)
//MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(dragngun_state::screen_update));
//m_screen->set_palette(m_palette);
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM32)
BUFFERED_SPRITERAM32(config, m_spriteram);
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@ -2125,8 +2122,8 @@ MACHINE_CONFIG_START(dragngun_state::dragngun)
DECO_ZOOMSPR(config, m_sprgenzoom, 0);
m_sprgenzoom->set_gfxdecode(m_gfxdecode);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dragngun)
MCFG_PALETTE_ADD("palette", 2048)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun);
PALETTE(config, m_palette, 2048);
DECO146PROT(config, m_ioprot, 0);
m_ioprot->port_a_cb().set_ioport("INPUTS");
@ -2145,35 +2142,33 @@ MACHINE_CONFIG_START(dragngun_state::dragngun)
m_ym2151->add_route(0, "lspeaker", 0.42);
m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
SPEAKER(config, "gun_speaker").front_center();
MCFG_DEVICE_ADD("oki3", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "gun_speaker", 1.0)
OKIM6295(config, m_oki[2], 32220000/32, okim6295_device::PIN7_HIGH);
m_oki[2]->add_route(ALL_OUTPUTS, "gun_speaker", 1.0);
MCFG_DEVICE_ADD("vol_main", LC7535)
MCFG_LC7535_SELECT_CB(CONSTANT(1))
MCFG_LC7535_VOLUME_CB(dragngun_state, volume_main_changed)
LC7535(config, m_vol_main);
m_vol_main->select().set_constant(1);
m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed));
MCFG_DEVICE_ADD("vol_gun", LC7535)
MCFG_LC7535_SELECT_CB(CONSTANT(0))
MCFG_LC7535_VOLUME_CB(dragngun_state, volume_gun_changed)
MACHINE_CONFIG_END
LC7535(config, m_vol_gun);
m_vol_gun->select().set_constant(0);
m_vol_gun->set_volume_callback(FUNC(dragngun_state::volume_gun_changed));
}
MACHINE_CONFIG_START(dragngun_state::lockloadu)
void dragngun_state::lockloadu(machine_config &config)
{
dragngun(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(lockloadu_map)
MCFG_DEVICE_MODIFY("audiocpu")
MCFG_DEVICE_PROGRAM_MAP(lockloadu_sound_map)
m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_map);
m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockloadu_sound_map);
m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>));
@ -2181,24 +2176,22 @@ MACHINE_CONFIG_START(dragngun_state::lockloadu)
m_deco_tilegen[1]->set_pf2_size(DECO_32x32); // lockload definitely wants pf34 half width..
m_ym2151->port_write_handler().set(FUNC(dragngun_state::lockload_okibank_lo_w));
MACHINE_CONFIG_END
}
// DE-0420-1 + Bottom board DE-0421-0
MACHINE_CONFIG_START(dragngun_state::lockload)
void dragngun_state::lockload(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'000'000) / 4)
MCFG_DEVICE_PROGRAM_MAP(lockload_map)
ARM(config, m_maincpu, XTAL(28'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_map);
MCFG_INPUT_MERGER_ANY_HIGH("irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE))
INPUT_MERGER_ANY_HIGH(config, "irq_merger").output_handler().set_inputline("maincpu", ARM_IRQ_LINE);
MCFG_DEVICE_ADD("audiocpu", Z80, 32220000/8)
MCFG_DEVICE_PROGRAM_MAP(lockload_sound_map)
MCFG_DEVICE_IO_MAP(z80_sound_io)
Z80(config, m_audiocpu, 32220000/8);
m_audiocpu->set_addrmap(AS_PROGRAM, &dragngun_state::lockload_sound_map);
m_audiocpu->set_addrmap(AS_IO, &dragngun_state::z80_sound_io);
MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0);
DECO_IRQ(config, m_deco_irq, 0);
m_deco_irq->set_screen_tag(m_screen);
@ -2208,19 +2201,19 @@ MACHINE_CONFIG_START(dragngun_state::lockload)
m_deco_irq->vblank_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<1>));
m_deco_irq->lightgun_irq_callback().set("irq_merger", FUNC(input_merger_any_high_device::in_w<2>));
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */
config.m_minimum_quantum = attotime::from_hz(6000); /* to improve main<->audio comms */
EEPROM_93C46_16BIT(config, "eeprom");
EEPROM_93C46_16BIT(config, m_eeprom);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(dragngun_state::screen_update));
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM32)
BUFFERED_SPRITERAM32(config, m_spriteram);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_dragngun)
MCFG_PALETTE_ADD("palette", 2048)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dragngun);
PALETTE(config, m_palette, 2048);
DECO16IC(config, m_deco_tilegen[0], 0);
m_deco_tilegen[0]->set_split(0);
@ -2274,31 +2267,31 @@ MACHINE_CONFIG_START(dragngun_state::lockload)
m_ym2151->add_route(0, "lspeaker", 0.42);
m_ym2151->add_route(1, "rspeaker", 0.42);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.35);
m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.35);
MCFG_DEVICE_ADD("vol_main", LC7535)
MCFG_LC7535_SELECT_CB(CONSTANT(1))
MCFG_LC7535_VOLUME_CB(dragngun_state, volume_main_changed)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(nslasher_state::tattass)
LC7535(config, m_vol_main);
m_vol_main->select().set_constant(1);
m_vol_main->set_volume_callback(FUNC(dragngun_state::volume_main_changed));
}
void nslasher_state::tattass(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", ARM, 28000000/4) // unconfirmed
MCFG_DEVICE_PROGRAM_MAP(tattass_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert)
ARM(config, m_maincpu, 28000000/4); // unconfirmed
m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::tattass_map);
m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
EEPROM_93C76_8BIT(config, "eeprom");
EEPROM_93C76_8BIT(config, m_eeprom);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(nslasher_state::screen_update));
DECO_ACE(config, m_deco_ace, 0);
@ -2342,7 +2335,7 @@ MACHINE_CONFIG_START(nslasher_state::tattass)
m_sprgen[1]->set_gfx_region(4);
m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_deco_ace, gfx_tattass)
GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_tattass);
DECO104PROT(config, m_ioprot, 0);
m_ioprot->port_a_cb().set_ioport("IN0");
@ -2353,29 +2346,28 @@ MACHINE_CONFIG_START(nslasher_state::tattass)
/* sound hardware */
DECOBSMT(config, m_decobsmt, 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(nslasher_state::nslasher)
}
void nslasher_state::nslasher(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", ARM, XTAL(28'322'000) / 4)
MCFG_DEVICE_PROGRAM_MAP(nslasher_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert)
ARM(config, m_maincpu, XTAL(28'322'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &nslasher_state::nslasher_map);
m_maincpu->set_vblank_int("screen", FUNC(deco32_state::irq0_line_assert));
MCFG_DEVICE_ADD("audiocpu", Z80, 32220000/9)
MCFG_DEVICE_PROGRAM_MAP(z80_sound_map)
MCFG_DEVICE_IO_MAP(z80_sound_io)
Z80(config, m_audiocpu, 32220000/9);
m_audiocpu->set_addrmap(AS_PROGRAM, &nslasher_state::z80_sound_map);
m_audiocpu->set_addrmap(AS_IO, &nslasher_state::z80_sound_io);
MCFG_INPUT_MERGER_ANY_HIGH("sound_irq_merger")
MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
INPUT_MERGER_ANY_HIGH(config, "sound_irq_merger").output_handler().set_inputline("audiocpu", INPUT_LINE_IRQ0);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */
config.m_minimum_quantum = attotime::from_hz(6000); /* to improve main<->audio comms */
EEPROM_93C46_16BIT(config, "eeprom");
EEPROM_93C46_16BIT(config, m_eeprom);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'322'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(28'322'000) / 4, 442, 0, 320, 274, 8, 248);
m_screen->set_screen_update(FUNC(nslasher_state::screen_update));
DECO_ACE(config, m_deco_ace, 0);
@ -2419,7 +2411,7 @@ MACHINE_CONFIG_START(nslasher_state::nslasher)
m_sprgen[1]->set_gfx_region(4);
m_sprgen[1]->set_gfxdecode_tag(m_gfxdecode);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_deco_ace, gfx_nslasher)
GFXDECODE(config, m_gfxdecode, m_deco_ace, gfx_nslasher);
DECO104PROT(config, m_ioprot, 0);
m_ioprot->port_a_cb().set_ioport("IN0");
@ -2438,14 +2430,14 @@ MACHINE_CONFIG_START(nslasher_state::nslasher)
m_ym2151->add_route(0, "lspeaker", 0.40);
m_ym2151->add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("oki1", OKIM6295, 32220000/32, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
OKIM6295(config, m_oki[0], 32220000/32, okim6295_device::PIN7_HIGH);
m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
MCFG_DEVICE_ADD("oki2", OKIM6295, 32220000/16, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.10)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)
MACHINE_CONFIG_END
OKIM6295(config, m_oki[1], 32220000/16, okim6295_device::PIN7_HIGH);
m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.10);
m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.10);
}
// the US release uses a H6280 instead of a Z80, much like Lock 'n' Loaded
void nslasher_state::nslasheru(machine_config &config)

View File

@ -474,7 +474,8 @@ public:
m_ppi8255(*this, "ppi8255"),
m_rombank(*this, "rombank"),
m_mainmap(*this, "mainmap"),
m_div_config(*this, "div_config")
m_div_config(*this, "div_config"),
m_irq_on(*this, "irq_on")
{ }
void csc(machine_config &config);
@ -528,6 +529,7 @@ private:
optional_memory_bank m_rombank;
optional_device<address_map_bank_device> m_mainmap;
optional_ioport m_div_config;
optional_device<timer_device> m_irq_on;
// common
TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
@ -1831,16 +1833,16 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
MACHINE_CONFIG_START(fidel6502_state::rsc)
void fidel6502_state::rsc(machine_config &config)
{
/* basic machine hardware */
M6502(config, m_maincpu, 1800000); // measured approx 1.81MHz
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::rsc_map);
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(546)) // from 555 timer, measured
MCFG_TIMER_START_DELAY(attotime::from_hz(546) - attotime::from_usec(38)) // active for 38us
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(546)); // from 555 timer, measured
m_irq_on->set_start_delay(attotime::from_hz(546) - attotime::from_usec(38)); // active for 38us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(546))
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(546));
pia6821_device &pia(PIA6821(config, "pia", 0)); // MOS 6520
pia.readpa_handler().set(FUNC(fidel6502_state::csc_pia1_pa_r));
@ -1851,26 +1853,26 @@ MACHINE_CONFIG_START(fidel6502_state::rsc)
pia.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w));
pia.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_rsc_v2);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::csc)
}
void fidel6502_state::csc(machine_config &config)
{
/* basic machine hardware */
M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // from 3.9MHz resonator
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::csc_map);
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(38.4_kHz_XTAL/64)) // through 4060 IC, 600Hz
MCFG_TIMER_START_DELAY(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)) // edge!
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(38.4_kHz_XTAL/64))
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz
m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64));
pia6821_device &pia0(PIA6821(config, "pia0", 0));
pia0.readpb_handler().set(FUNC(fidel6502_state::csc_pia0_pb_r));
@ -1887,7 +1889,7 @@ MACHINE_CONFIG_START(fidel6502_state::csc)
pia1.ca2_handler().set(FUNC(fidel6502_state::csc_pia1_ca2_w));
pia1.cb2_handler().set(FUNC(fidel6502_state::csc_pia1_cb2_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_csc);
/* sound hardware */
@ -1896,11 +1898,11 @@ MACHINE_CONFIG_START(fidel6502_state::csc)
speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r));
speech.add_route(ALL_OUTPUTS, "speaker", 0.75);
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
MACHINE_CONFIG_END
}
void fidel6502_state::su9(machine_config &config)
{
@ -1913,20 +1915,21 @@ void fidel6502_state::su9(machine_config &config)
config.set_default_layout(layout_fidel_su9);
}
MACHINE_CONFIG_START(fidel6502_state::eas_base)
void fidel6502_state::eas_base(machine_config &config)
{
/* basic machine hardware */
R65C02(config, m_maincpu, 3_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline);
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(38.4_kHz_XTAL/64)) // through 4060 IC, 600Hz
MCFG_TIMER_START_DELAY(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)) // edge!
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz
m_irq_on->set_start_delay(attotime::from_hz(38.4_kHz_XTAL/64) - attotime::from_hz(38.4_kHz_XTAL*2)); // edge!
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(38.4_kHz_XTAL/64))
MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(3_MHz_XTAL))
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(38.4_kHz_XTAL/64));
TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL));
ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::eas_map).set_options(ENDIANNESS_LITTLE, 8, 16);
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_eas);
/* sound hardware */
@ -1935,7 +1938,7 @@ MACHINE_CONFIG_START(fidel6502_state::eas_base)
speech.ext_read().set(FUNC(fidel6502_state::csc_speech_r));
speech.add_route(ALL_OUTPUTS, "speaker", 0.75);
DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
@ -1945,7 +1948,7 @@ MACHINE_CONFIG_START(fidel6502_state::eas_base)
cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
MACHINE_CONFIG_END
}
void fidel6502_state::eas(machine_config &config)
{
@ -1960,314 +1963,324 @@ void fidel6502_state::eas(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
}
MACHINE_CONFIG_START(fidel6502_state::pc)
void fidel6502_state::pc(machine_config &config)
{
eas_base(config);
/* basic machine hardware */
m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
MCFG_DEVICE_REMOVE("dummy_timer")
MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(4_MHz_XTAL))
TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL));
m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::pc_map);
config.set_default_layout(layout_fidel_pc);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(fidel6502_state::eag)
void fidel6502_state::eag(machine_config &config)
{
eas(config);
/* basic machine hardware */
m_maincpu->set_clock(5_MHz_XTAL); // R65C02P4
MCFG_DEVICE_REMOVE("dummy_timer")
MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(5_MHz_XTAL))
TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(5_MHz_XTAL));
m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::eag_map);
config.set_default_layout(layout_fidel_eag);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::sc9d)
}
void fidel6502_state::sc9d(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6502, 3.9_MHz_XTAL/2) // R6502AP, 3.9MHz resonator
MCFG_DEVICE_PROGRAM_MAP(sc9d_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(610)) // from 555 timer (22nF, 102K, 2.7K)
MCFG_TIMER_START_DELAY(attotime::from_hz(610) - attotime::from_usec(41)) // active for 41us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(610))
M6502(config, m_maincpu, 3.9_MHz_XTAL/2); // R6502AP, 3.9MHz resonator
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9d_map);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(610)); // from 555 timer (22nF, 102K, 2.7K)
m_irq_on->set_start_delay(attotime::from_hz(610) - attotime::from_usec(41)); // active for 41us
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(610));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_sc9);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
MCFG_GENERIC_EXTENSIONS("bin,dat")
MCFG_GENERIC_LOAD(fidelbase_state, scc_cartridge)
MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
MACHINE_CONFIG_END
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat"));
cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
MACHINE_CONFIG_START(fidel6502_state::sc9b)
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}
void fidel6502_state::sc9b(machine_config &config)
{
sc9d(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", M6502, 1500000) // from ceramic resonator "681 JSA", measured
MCFG_DEVICE_PROGRAM_MAP(sc9_map)
MACHINE_CONFIG_END
M6502(config.replace(), m_maincpu, 1500000); // from ceramic resonator "681 JSA", measured
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::sc9_map);
}
MACHINE_CONFIG_START(fidel6502_state::sc9c)
void fidel6502_state::sc9c(machine_config &config)
{
sc9b(config);
/* basic machine hardware */
MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, sc9c)
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(fidel6502_state::playmatic)
void fidel6502_state::playmatic(machine_config &config)
{
sc9b(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(3100000) // approximation
m_maincpu->set_clock(3100000); // approximation
config.set_default_layout(layout_fidel_playmatic);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::sc12)
}
void fidel6502_state::sc12(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", R65C02, 3_MHz_XTAL) // R65C02P3
MCFG_DEVICE_PROGRAM_MAP(div_trampoline)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630))
R65C02(config, m_maincpu, 3_MHz_XTAL); // R65C02P3
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::div_trampoline);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(3_MHz_XTAL))
TIMER(config, "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(3_MHz_XTAL));
ADDRESS_MAP_BANK(config, "mainmap").set_map(&fidel6502_state::sc12_map).set_options(ENDIANNESS_LITTLE, 8, 16);
ADDRESS_MAP_BANK(config, m_mainmap).set_map(&fidel6502_state::sc12_map).set_options(ENDIANNESS_LITTLE, 8, 16);
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_sc12);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
MCFG_GENERIC_EXTENSIONS("bin,dat")
MCFG_GENERIC_LOAD(fidelbase_state, scc_cartridge)
MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
MACHINE_CONFIG_END
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc", "bin,dat"));
cartslot.set_device_load(device_image_load_delegate(&fidelbase_state::device_image_load_scc_cartridge, this));
MACHINE_CONFIG_START(fidel6502_state::sc12b)
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}
void fidel6502_state::sc12b(machine_config &config)
{
sc12(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(4_MHz_XTAL) // R65C02P4
m_maincpu->set_clock(4_MHz_XTAL); // R65C02P4
// change irq timer frequency
MCFG_DEVICE_REMOVE("irq_on")
MCFG_DEVICE_REMOVE("irq_off")
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(596)) // from 556 timer (22nF, 82K+26K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(596) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(596))
TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(596)); // from 556 timer (22nF, 82K+26K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(596) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(596));
MCFG_DEVICE_REMOVE("dummy_timer")
MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", fidel6502_state, dummy, attotime::from_hz(4_MHz_XTAL))
MACHINE_CONFIG_END
TIMER(config.replace(), "dummy_timer").configure_periodic(FUNC(fidel6502_state::dummy), attotime::from_hz(4_MHz_XTAL));
}
MACHINE_CONFIG_START(fidel6502_state::as12)
void fidel6502_state::as12(machine_config &config)
{
sc12b(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("mainmap")
MCFG_DEVICE_PROGRAM_MAP(as12_map)
m_mainmap->set_addrmap(AS_PROGRAM, &fidel6502_state::as12_map);
// change irq timer frequency
MCFG_DEVICE_REMOVE("irq_on")
MCFG_DEVICE_REMOVE("irq_off")
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(585)) // from 556 timer (22nF, 110K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(585) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(585))
TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585));
config.set_default_layout(layout_fidel_as12);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::fexcel)
}
void fidel6502_state::fexcel(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M65SC02, 12_MHz_XTAL/4) // G65SC102P-3, 12.0M ceramic resonator
MCFG_DEVICE_PROGRAM_MAP(fexcel_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630))
M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_ex);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
MACHINE_CONFIG_START(fidel6502_state::fexcel4)
void fidel6502_state::fexcel4(machine_config &config)
{
fexcel(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", R65C02, 4_MHz_XTAL) // R65C02P4
MCFG_DEVICE_PROGRAM_MAP(fexcel_map)
MACHINE_CONFIG_END
R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcel_map);
}
MACHINE_CONFIG_START(fidel6502_state::fexcelb)
void fidel6502_state::fexcelb(machine_config &config)
{
fexcel(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(fexcelb_map)
MACHINE_CONFIG_END
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelb_map);
}
MACHINE_CONFIG_START(fidel6502_state::fexcelp)
void fidel6502_state::fexcelp(machine_config &config)
{
fexcel(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", R65C02, 5_MHz_XTAL) // R65C02P4
MCFG_DEVICE_PROGRAM_MAP(fexcelp_map)
MACHINE_CONFIG_END
R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
}
MACHINE_CONFIG_START(fidel6502_state::granits)
void fidel6502_state::granits(machine_config &config)
{
fexcelp(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(8_MHz_XTAL) // overclocked
MACHINE_CONFIG_END
m_maincpu->set_clock(8_MHz_XTAL); // overclocked
}
MACHINE_CONFIG_START(fidel6502_state::fdes2100)
void fidel6502_state::fdes2100(machine_config &config)
{
fexcel(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", M65C02, 5_MHz_XTAL) // WDC 65C02
MCFG_DEVICE_PROGRAM_MAP(fexcelp_map)
M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
// change irq timer frequency
MCFG_DEVICE_REMOVE("irq_on")
MCFG_DEVICE_REMOVE("irq_off")
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(585)) // from 556 timer (22nF, 110K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(585) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(585))
TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(585)); // from 556 timer (22nF, 110K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(585) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config.replace(), "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(585));
config.set_default_layout(layout_fidel_des);
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(fidel6502_state::fdes2000)
void fidel6502_state::fdes2000(machine_config &config)
{
fdes2100(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", R65C02, 3_MHz_XTAL) // RP65C02G
MCFG_DEVICE_PROGRAM_MAP(fexcelp_map)
MACHINE_CONFIG_END
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fexcelp_map);
}
MACHINE_CONFIG_START(fidel6502_state::fexcelv)
void fidel6502_state::fexcelv(machine_config &config)
{
fexcelb(config);
/* sound hardware */
MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidel6502_state, fexcelv_speech_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
MACHINE_CONFIG_END
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->ext_read().set(FUNC(fidel6502_state::fexcelv_speech_r));
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
MACHINE_CONFIG_START(fidel6502_state::fexceld)
void fidel6502_state::fexceld(machine_config &config)
{
fexcelb(config);
/* basic machine hardware */
config.set_default_layout(layout_fidel_exd);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::fdes2100d)
}
void fidel6502_state::fdes2100d(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M65C02, 6_MHz_XTAL) // W65C02P-6
MCFG_DEVICE_PROGRAM_MAP(fdesdis_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(630)) // from 556 timer (22nF, 102K, 1K)
MCFG_TIMER_START_DELAY(attotime::from_hz(630) - attotime::from_nsec(15250)) // active for 15.25us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(630))
M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(630)); // from 556 timer (22nF, 102K, 1K)
m_irq_on->set_start_delay(attotime::from_hz(630) - attotime::from_nsec(15250)); // active for 15.25us
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(630));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_desdis);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
MACHINE_CONFIG_START(fidel6502_state::fdes2000d)
void fidel6502_state::fdes2000d(machine_config &config)
{
fdes2100d(config);
/* basic machine hardware */
MCFG_DEVICE_REPLACE("maincpu", R65C02, 3_MHz_XTAL) // R65C02P3
MCFG_DEVICE_PROGRAM_MAP(fdesdis_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::fphantom)
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // R65C02P3
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fdesdis_map);
}
void fidel6502_state::fphantom(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", R65C02, 4.9152_MHz_XTAL) // R65C02P4
MCFG_DEVICE_PERIODIC_INT_DRIVER(fidel6502_state, irq0_line_hold, 600) // guessed
MCFG_DEVICE_PROGRAM_MAP(fphantom_map)
R65C02(config, m_maincpu, 4.9152_MHz_XTAL); // R65C02P4
m_maincpu->set_periodic_int(FUNC(fidel6502_state::irq0_line_hold), attotime::from_hz(600)); // guessed
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::fphantom_map);
MCFG_MACHINE_RESET_OVERRIDE(fidel6502_state, fphantom)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
//config.set_default_layout(layout_fidel_phantom);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidel6502_state::chesster)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
void fidel6502_state::chesster(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", R65C02, 5_MHz_XTAL) // RP65C02G
MCFG_DEVICE_PROGRAM_MAP(chesster_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(9615)) // R/C circuit, measured
MCFG_TIMER_START_DELAY(attotime::from_hz(9615) - attotime::from_nsec(2600)) // active for 2.6us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(9615))
R65C02(config, m_maincpu, 5_MHz_XTAL); // RP65C02G
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::chesster_map);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidel6502_state::irq_on), attotime::from_hz(9615)); // R/C circuit, measured
m_irq_on->set_start_delay(attotime::from_hz(9615) - attotime::from_nsec(2600)); // active for 2.6us
TIMER(config, "irq_off").configure_periodic(FUNC(fidel6502_state::irq_off), attotime::from_hz(9615));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_chesster);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac8", DAC_8BIT_R2R, 0) // m74hc374b1.ic1 + 8l513_02.z2
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac8", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac8", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
DAC_8BIT_R2R(config, "dac8", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); // m74hc374b1.ic1 + 8l513_02.z2
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT);
}
MACHINE_CONFIG_START(fidel6502_state::kishon)
void fidel6502_state::kishon(machine_config &config)
{
chesster(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(3.579545_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(kishon_map)
MACHINE_CONFIG_END
m_maincpu->set_clock(3.579545_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidel6502_state::kishon_map);
}

View File

@ -520,7 +520,8 @@ public:
m_ppi8255(*this, "ppi8255"),
m_i8243(*this, "i8243"),
m_beeper_off(*this, "beeper_off"),
m_beeper(*this, "beeper")
m_beeper(*this, "beeper"),
m_irq_on(*this, "irq_on")
{ }
void cc10(machine_config &config);
@ -546,6 +547,7 @@ private:
optional_device<i8243_device> m_i8243;
optional_device<timer_device> m_beeper_off;
optional_device<beep_device> m_beeper;
optional_device<timer_device> m_irq_on;
TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); }
TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); }
@ -1660,46 +1662,48 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
MACHINE_CONFIG_START(fidelz80_state::bcc)
void fidelz80_state::bcc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3.579545_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(bcc_map)
MCFG_DEVICE_IO_MAP(bcc_io)
Z80(config, m_maincpu, 3.579545_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::bcc_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::bcc_io);
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_bcc);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::scc)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
void fidelz80_state::scc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(scc_map)
MCFG_DEVICE_IO_MAP(scc_io)
Z80(config, m_maincpu, 3.9_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::scc_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::scc_io);
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_sc8);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::cc10)
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
void fidelz80_state::cc10(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(cc10_map)
MCFG_DEVICE_IO_MAP(vcc_io)
Z80(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::cc10_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io);
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::cc10_ppi_porta_w));
@ -1710,22 +1714,22 @@ MACHINE_CONFIG_START(fidelz80_state::cc10)
m_ppi8255->tri_pb_callback().set_constant(0);
m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_cc);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("beeper", BEEP, 1360) // approximation, from 556 timer ic
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_TIMER_DRIVER_ADD("beeper_off", fidelz80_state, beeper_off_callback)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::vcc)
BEEP(config, m_beeper, 1360); // approximation, from 556 timer ic
m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
TIMER(config, "beeper_off").configure_generic(FUNC(fidelz80_state::beeper_off_callback));
}
void fidelz80_state::vcc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4_MHz_XTAL)
MCFG_DEVICE_PROGRAM_MAP(vcc_map)
MCFG_DEVICE_IO_MAP(vcc_io)
Z80(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vcc_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vcc_io);
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vcc_ppi_porta_w));
@ -1736,25 +1740,25 @@ MACHINE_CONFIG_START(fidelz80_state::vcc)
m_ppi8255->in_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_r));
m_ppi8255->out_pc_callback().set(FUNC(fidelz80_state::vcc_ppi_portc_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_vcc);
MCFG_MACHINE_START_OVERRIDE(fidelz80_state,vcc)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidelz80_state, vcc_speech_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::vsc)
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r));
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
void fidelz80_state::vsc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL) // 3.9MHz resonator
MCFG_DEVICE_PROGRAM_MAP(vsc_map)
MCFG_DEVICE_IO_MAP(vsc_io)
MCFG_DEVICE_PERIODIC_INT_DRIVER(fidelz80_state, nmi_line_pulse, 587) // 555 timer, measured
Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vsc_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vsc_io);
m_maincpu->set_periodic_int(FUNC(fidelz80_state::nmi_line_pulse), attotime::from_hz(587)); // 555 timer, measured
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(fidelz80_state::vsc_ppi_porta_w));
@ -1766,23 +1770,23 @@ MACHINE_CONFIG_START(fidelz80_state::vsc)
m_z80pio->in_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_r));
m_z80pio->out_pb_callback().set(FUNC(fidelz80_state::vsc_pio_portb_w));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_vsc);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
MCFG_S14001A_EXT_READ_HANDLER(READ8(*this, fidelz80_state, vcc_speech_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::vbrc)
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->ext_read().set(FUNC(fidelz80_state::vcc_speech_r));
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
void fidelz80_state::vbrc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 5_MHz_XTAL/2)
MCFG_DEVICE_PROGRAM_MAP(vbrc_main_map)
MCFG_DEVICE_IO_MAP(vbrc_main_io)
MCFG_QUANTUM_PERFECT_CPU("maincpu")
Z80(config, m_maincpu, 5_MHz_XTAL/2);
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::vbrc_main_map);
m_maincpu->set_addrmap(AS_IO, &fidelz80_state::vbrc_main_io);
config.m_perfect_cpu_quantum = subtag("maincpu");
I8041(config, m_mcu, 5_MHz_XTAL);
m_mcu->p1_out_cb().set(FUNC(fidelz80_state::vbrc_mcu_p1_w));
@ -1798,34 +1802,35 @@ MACHINE_CONFIG_START(fidelz80_state::vbrc)
m_i8243->p6_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<2>));
m_i8243->p7_out_cb().set(FUNC(fidelz80_state::vbrc_ioexp_port_w<3>));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_vbrc);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
MCFG_S14001A_BSY_HANDLER(INPUTLINE("maincpu", Z80_INPUT_LINE_WAIT))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(fidelz80_state::dsc)
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
m_speech->bsy().set_inputline("maincpu", Z80_INPUT_LINE_WAIT);
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
}
void fidelz80_state::dsc(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3.9_MHz_XTAL) // 3.9MHz resonator
MCFG_DEVICE_PROGRAM_MAP(dsc_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidelz80_state, irq_on, attotime::from_hz(523)) // from 555 timer (22nF, 120K, 2.7K)
MCFG_TIMER_START_DELAY(attotime::from_hz(523) - attotime::from_usec(41)) // active for 41us
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidelz80_state, irq_off, attotime::from_hz(523))
Z80(config, m_maincpu, 3.9_MHz_XTAL); // 3.9MHz resonator
m_maincpu->set_addrmap(AS_PROGRAM, &fidelz80_state::dsc_map);
TIMER(config, m_irq_on).configure_periodic(FUNC(fidelz80_state::irq_on), attotime::from_hz(523)); // from 555 timer (22nF, 120K, 2.7K)
m_irq_on->set_start_delay(attotime::from_hz(523) - attotime::from_usec(41)); // active for 41us
TIMER(config, "irq_off").configure_periodic(FUNC(fidelz80_state::irq_off), attotime::from_hz(523));
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1))
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_fidel_dsc);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT)
MACHINE_CONFIG_END
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}

View File

@ -1585,17 +1585,17 @@ WRITE_LINE_MEMBER(galaga_state::vblank_irq)
m_subcpu->set_input_line(0, ASSERT_LINE);
}
MACHINE_CONFIG_START(bosco_state::bosco)
void bosco_state::bosco(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(bosco_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map);
MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(bosco_map)
Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map);
MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(bosco_map)
Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &bosco_state::bosco_map);
ls259_device &misclatch(LS259(config, "misclatch")); // 3C on CPU board
misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w));
@ -1650,8 +1650,8 @@ MACHINE_CONFIG_START(bosco_state::bosco)
//m_videolatch->q_out_cb<7>().append("52xx", FUNC(namco_52xx_device, reset_w));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@ -1661,35 +1661,35 @@ MACHINE_CONFIG_START(bosco_state::bosco)
m_screen->screen_vblank().append(FUNC(galaga_state::vblank_irq));
m_screen->set_palette("palette");
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bosco)
MCFG_PALETTE_ADD("palette", 64*4+64*4+4+64)
MCFG_PALETTE_INDIRECT_ENTRIES(32+64)
MCFG_PALETTE_INIT_OWNER(bosco_state,bosco)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_bosco);
PALETTE(config, m_palette, 64*4+64*4+4+64);
m_palette->set_indirect_entries(32+64);
m_palette->set_init(FUNC(bosco_state::palette_init_bosco));
MCFG_VIDEO_START_OVERRIDE(bosco_state,bosco)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0)
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0);
/* discrete circuit on the 54XX outputs */
MCFG_DEVICE_ADD("discrete", DISCRETE, bosco_discrete)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(galaga_state::galaga)
DISCRETE(config, "discrete", bosco_discrete).add_route(ALL_OUTPUTS, "mono", 0.90);
}
void galaga_state::galaga(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(galaga_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map);
MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(galaga_map)
Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map);
MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(galaga_map)
Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &galaga_state::galaga_map);
ls259_device &misclatch(LS259(config, "misclatch")); // 3C on CPU board
misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w));
@ -1722,8 +1722,8 @@ MACHINE_CONFIG_START(galaga_state::galaga)
m_videolatch->q_out_cb<7>().set(FUNC(galaga_state::flip_screen_w));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@ -1733,25 +1733,26 @@ MACHINE_CONFIG_START(galaga_state::galaga)
m_screen->screen_vblank().append(FUNC(galaga_state::vblank_irq));
m_screen->set_palette("palette");
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_galaga)
MCFG_PALETTE_ADD("palette", 64*4+64*4+64)
MCFG_PALETTE_INDIRECT_ENTRIES(32+64)
MCFG_PALETTE_INIT_OWNER(galaga_state,galaga)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaga);
PALETTE(config, m_palette, 64*4+64*4+64);
m_palette->set_indirect_entries(32+64);
m_palette->set_init(FUNC(galaga_state::palette_init_galaga));
MCFG_VIDEO_START_OVERRIDE(galaga_state,galaga)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0)
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0);
/* discrete circuit on the 54XX outputs */
MCFG_DEVICE_ADD("discrete", DISCRETE, galaga_discrete)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
MACHINE_CONFIG_END
DISCRETE(config, "discrete", galaga_discrete).add_route(ALL_OUTPUTS, "mono", 0.90);
}
MACHINE_CONFIG_START(galaga_state::galagab)
void galaga_state::galagab(machine_config &config)
{
galaga(config);
/* basic machine hardware */
@ -1765,33 +1766,33 @@ MACHINE_CONFIG_START(galaga_state::galagab)
n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(galaga_mem4)
z80_device &sub3(Z80(config, "sub3", MASTER_CLOCK/6)); /* 3.072 MHz */
sub3.set_addrmap(AS_PROGRAM, &galaga_state::galaga_mem4);
/* sound hardware */
config.device_remove("discrete");
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(galaga_state::gatsbee)
void galaga_state::gatsbee(machine_config &config)
{
galaga(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(gatsbee_main_map)
m_maincpu->set_addrmap(AS_PROGRAM, &galaga_state::gatsbee_main_map);
ls259_device &extralatch(LS259(config, "extralatch"));
extralatch.q_out_cb<0>().set(FUNC(galaga_state::gatsbee_bank_w));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(xevious_state::xevious)
}
void xevious_state::xevious(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(xevious_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map);
MCFG_DEVICE_ADD("sub", Z80,MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(xevious_map)
Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map);
MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(xevious_map)
Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &xevious_state::xevious_map);
ls259_device &misclatch(LS259(config, "misclatch")); // 5K
misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w));
@ -1825,35 +1826,36 @@ MACHINE_CONFIG_START(xevious_state::xevious)
n06xx.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
config.m_minimum_quantum = attotime::from_hz(60000); /* 1000 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(xevious_state, screen_update_xevious)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaga_state, vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224);
m_screen->set_screen_update(FUNC(xevious_state::screen_update_xevious));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(galaga_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_xevious);
PALETTE(config, m_palette, 128*4+64*8+64*2);
m_palette->set_indirect_entries(128+1);
m_palette->set_init(FUNC(xevious_state::palette_init_xevious));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_xevious)
MCFG_PALETTE_ADD("palette", 128*4+64*8+64*2)
MCFG_PALETTE_INDIRECT_ENTRIES(128+1)
MCFG_PALETTE_INIT_OWNER(xevious_state,xevious)
MCFG_VIDEO_START_OVERRIDE(xevious_state,xevious)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0)
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0);
/* discrete circuit on the 54XX outputs */
MCFG_DEVICE_ADD("discrete", DISCRETE, galaga_discrete)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
MACHINE_CONFIG_END
DISCRETE(config, "discrete", galaga_discrete).add_route(ALL_OUTPUTS, "mono", 0.90);
}
MACHINE_CONFIG_START(battles_state::battles)
void battles_state::battles(machine_config &config)
{
xevious(config);
/* basic machine hardware */
@ -1867,33 +1869,33 @@ MACHINE_CONFIG_START(battles_state::battles)
n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(battles_mem4)
Z80(config, m_subcpu3, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu3->set_addrmap(AS_PROGRAM, &battles_state::battles_mem4);
m_screen->screen_vblank().append(FUNC(battles_state::interrupt_4));
MCFG_TIMER_DRIVER_ADD("nmi", battles_state, nmi_generate)
TIMER(config, "nmi").configure_generic(FUNC(battles_state::nmi_generate));
/* sound hardware */
config.device_remove("discrete");
MCFG_DEVICE_ADD("samples", SAMPLES)
MCFG_SAMPLES_CHANNELS(1)
MCFG_SAMPLES_NAMES(battles_sample_names)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(digdug_state::digdug)
SAMPLES(config, m_samples);
m_samples->set_channels(1);
m_samples->set_samples_names(battles_sample_names);
m_samples->add_route(ALL_OUTPUTS, "mono", 0.80);
}
void digdug_state::digdug(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(digdug_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map);
MCFG_DEVICE_ADD("sub", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(digdug_map)
Z80(config, m_subcpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map);
MCFG_DEVICE_ADD("sub2", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(digdug_map)
Z80(config, m_subcpu2, MASTER_CLOCK/6); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &digdug_state::digdug_map);
ls259_device &misclatch(LS259(config, "misclatch")); // 8R
misclatch.q_out_cb<0>().set(FUNC(galaga_state::irq1_clear_w));
@ -1935,42 +1937,43 @@ MACHINE_CONFIG_START(digdug_state::digdug)
m_videolatch->q_out_cb<3>().set(FUNC(digdug_state::bg_disable_w));
m_videolatch->q_out_cb<7>().set(FUNC(digdug_state::flip_screen_w));
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
MCFG_DEVICE_ADD("earom", ER2055)
ER2055(config, m_earom);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(digdug_state, screen_update_digdug)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaga_state, vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/3, 384, 0, 288, 264, 0, 224);
m_screen->set_screen_update(FUNC(digdug_state::screen_update_digdug));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(galaga_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_digdug);
PALETTE(config, m_palette, 16*2+64*4+64*4);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(digdug_state::palette_init_digdug));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_digdug)
MCFG_PALETTE_ADD("palette", 16*2+64*4+64*4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(digdug_state,digdug)
MCFG_VIDEO_START_OVERRIDE(digdug_state,digdug)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0)
MACHINE_CONFIG_END
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 0.90 * 10.0 / 16.0);
}
MACHINE_CONFIG_START(digdug_state::dzigzag)
void digdug_state::dzigzag(machine_config &config)
{
digdug(config);
/* basic machine hardware */
MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(dzigzag_mem4)
MACHINE_CONFIG_END
z80_device &sub3(Z80(config, "sub3", MASTER_CLOCK/6)); /* 3.072 MHz */
sub3.set_addrmap(AS_PROGRAM, &digdug_state::dzigzag_mem4);
}

View File

@ -514,18 +514,19 @@ void gaplus_state::machine_start()
m_lamps.resolve();
}
MACHINE_CONFIG_START(gaplus_base_state::gaplus_base)
void gaplus_base_state::gaplus_base(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
MC6809E(config, m_maincpu, XTAL(24'576'000) / 16); /* 1.536 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu1_map);
MCFG_DEVICE_ADD("sub", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(cpu2_map)
MC6809E(config, m_subcpu, XTAL(24'576'000) / 16); /* 1.536 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu2_map);
MCFG_DEVICE_ADD("sub2", MC6809E, XTAL(24'576'000) / 16) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(cpu3_map)
MC6809E(config, m_subcpu2, XTAL(24'576'000) / 16); /* 1.536 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &gaplus_base_state::cpu3_map);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* a high value to ensure proper synchronization of the CPUs */
config.m_minimum_quantum = attotime::from_hz(6000); /* a high value to ensure proper synchronization of the CPUs */
WATCHDOG_TIMER(config, "watchdog");
@ -548,23 +549,23 @@ MACHINE_CONFIG_START(gaplus_base_state::gaplus_base)
m_screen->screen_vblank().append(FUNC(gaplus_base_state::vblank_irq));
m_screen->set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gaplus)
MCFG_PALETTE_ADD("palette", 64 * 4 + 64 * 8)
MCFG_PALETTE_INDIRECT_ENTRIES(256)
MCFG_PALETTE_INIT_OWNER(gaplus_base_state, gaplus)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaplus);
PALETTE(config, m_palette, 64 * 4 + 64 * 8);
m_palette->set_indirect_entries(256);
m_palette->set_init(FUNC(gaplus_base_state::palette_init_gaplus));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_15XX, XTAL(24'576'000) / 1024)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
NAMCO_15XX(config, m_namco_15xx, XTAL(24'576'000) / 1024);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADD("samples", SAMPLES)
MCFG_SAMPLES_CHANNELS(1)
MCFG_SAMPLES_NAMES(gaplus_sample_names)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
SAMPLES(config, m_samples);
m_samples->set_channels(1);
m_samples->set_samples_names(gaplus_sample_names);
m_samples->add_route(ALL_OUTPUTS, "mono", 0.80);
}
void gaplus_state::gaplus(machine_config &config)
{

View File

@ -186,36 +186,35 @@ void hcastle_state::machine_reset()
m_old_pf2 = -1;
}
MACHINE_CONFIG_START(hcastle_state::hcastle)
void hcastle_state::hcastle(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", KONAMI, 3000000) /* Derived from 24 MHz clock */
MCFG_DEVICE_PROGRAM_MAP(hcastle_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", hcastle_state, irq0_line_hold)
KONAMI(config, m_maincpu, 3000000); /* Derived from 24 MHz clock */
m_maincpu->set_addrmap(AS_PROGRAM, &hcastle_state::hcastle_map);
m_maincpu->set_vblank_int("screen", FUNC(hcastle_state::irq0_line_hold));
MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
Z80(config, m_audiocpu, 3579545);
m_audiocpu->set_addrmap(AS_PROGRAM, &hcastle_state::sound_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM8)
BUFFERED_SPRITERAM8(config, m_spriteram);
BUFFERED_SPRITERAM8(config, m_spriteram2);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second verified by comparison with real board */)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(hcastle_state, screen_update_hcastle)
MCFG_SCREEN_PALETTE("palette")
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hcastle)
MCFG_PALETTE_ADD("palette", 2*8*16*16)
MCFG_PALETTE_INDIRECT_ENTRIES(128)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_INIT_OWNER(hcastle_state, hcastle)
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(59);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* frames per second verified by comparison with real board */
screen.set_size(32*8, 32*8);
screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(hcastle_state::screen_update_hcastle));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hcastle);
PALETTE(config, m_palette, 2*8*16*16);
m_palette->set_indirect_entries(128);
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
m_palette->set_init(FUNC(hcastle_state::palette_init_hcastle));
K007121(config, m_k007121_1, 0);
m_k007121_1->set_palette_tag(m_palette);
@ -227,18 +226,17 @@ MACHINE_CONFIG_START(hcastle_state::hcastle)
GENERIC_LATCH_8(config, "soundlatch");
MCFG_DEVICE_ADD("k007232", K007232, 3579545)
MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(*this, hcastle_state, volume_callback))
MCFG_SOUND_ROUTE(0, "mono", 0.44)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
K007232(config, m_k007232, 3579545);
m_k007232->port_write().set(FUNC(hcastle_state::volume_callback));
m_k007232->add_route(0, "mono", 0.44);
m_k007232->add_route(1, "mono", 0.50);
MCFG_DEVICE_ADD("ymsnd", YM3812, 3579545)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) /* from schematic; NMI handler is just a retn */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
ym3812_device &ymsnd(YM3812(config, "ymsnd", 3579545));
ymsnd.irq_handler().set_inputline("audiocpu", INPUT_LINE_NMI); /* from schematic; NMI handler is just a retn */
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.70);
MCFG_K051649_ADD("k051649", 3579545/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
MACHINE_CONFIG_END
K051649(config, "k051649", 3579545/2).add_route(ALL_OUTPUTS, "mono", 0.45);
}
/***************************************************************************/

View File

@ -87,7 +87,6 @@ Notes:
#include "sound/okim6295.h"
#include "sound/k051649.h"
#include "emupal.h"
#include "speaker.h"
@ -252,13 +251,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(hexion_state::scanline)
}
}
MACHINE_CONFIG_START(hexion_state::hexion)
void hexion_state::hexion(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/4) /* Z80B 6 MHz @ 17F, xtal verified, divider not verified */
MCFG_DEVICE_PROGRAM_MAP(hexion_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hexion_state, scanline, "screen", 0, 1)
Z80(config, m_maincpu, XTAL(24'000'000)/4); /* Z80B 6 MHz @ 17F, xtal verified, divider not verified */
m_maincpu->set_addrmap(AS_PROGRAM, &hexion_state::hexion_map);
TIMER(config, "scantimer").configure_scanline(FUNC(hexion_state::scanline), "screen", 0, 1);
WATCHDOG_TIMER(config, "watchdog");
K053252(config, m_k053252, XTAL(24'000'000)/2); /* K053252, X0-010(?) @8D, xtal verified, divider not verified */
@ -267,37 +265,39 @@ MACHINE_CONFIG_START(hexion_state::hexion)
m_k053252->int_time().set(FUNC(hexion_state::ccu_int_time_w));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 36*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(hexion_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 36*8);
screen.set_visarea(0*8, 64*8-1, 0*8, 32*8-1);
screen.set_screen_update(FUNC(hexion_state::screen_update));
screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hexion)
MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hexion);
PALETTE(config, m_palette, 256);
m_palette->set_prom_region("proms");
m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) /* MSM6295GS @ 5E, clock frequency & pin 7 not verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
/* MSM6295GS @ 5E, clock frequency & pin 7 not verified */
OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
MCFG_K051649_ADD("k051649", XTAL(24'000'000)/16) /* KONAMI 051649 // 2212P003 // JAPAN 8910EAJ @ 1D, xtal verified, divider not verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MACHINE_CONFIG_END
/* KONAMI 051649 // 2212P003 // JAPAN 8910EAJ @ 1D, xtal verified, divider not verified */
K051649(config, "k051649", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "mono", 0.5);
}
MACHINE_CONFIG_START(hexion_state::hexionb)
void hexion_state::hexionb(machine_config &config)
{
hexion(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(hexionb_map)
m_maincpu->set_addrmap(AS_PROGRAM, &hexion_state::hexionb_map);
MCFG_DEVICE_REMOVE("k051649")
config.device_remove("k051649");
MCFG_DEVICE_ADD("oki2", OKIM6295, 1056000, okim6295_device::PIN7_LOW) // clock frequency & pin 7 not verified; this clock and pin 7 being low makes the pitch match the non-bootleg version, so is probably correct
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MACHINE_CONFIG_END
// clock frequency & pin 7 not verified; this clock and pin 7 being low makes the pitch match the non-bootleg version, so is probably correct
OKIM6295(config, "oki2", 1056000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.5);
}
/***************************************************************************

View File

@ -279,12 +279,12 @@ WRITE_LINE_MEMBER(jrpacman_state::vblank_irq)
m_maincpu->set_input_line(0, HOLD_LINE);
}
MACHINE_CONFIG_START(jrpacman_state::jrpacman)
void jrpacman_state::jrpacman(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_IO_MAP(port_map)
Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &jrpacman_state::main_map);
m_maincpu->set_addrmap(AS_IO, &jrpacman_state::port_map);
ls259_device &latch1(LS259(config, "latch1")); // 5P
latch1.q_out_cb<0>().set(FUNC(jrpacman_state::irq_mask_w));
@ -302,28 +302,29 @@ MACHINE_CONFIG_START(jrpacman_state::jrpacman)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(jrpacman_state, screen_update_pacman)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, jrpacman_state, vblank_irq))
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60.606060);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(36*8, 28*8);
screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
screen.set_screen_update(FUNC(jrpacman_state::screen_update_pacman));
screen.set_palette(m_palette);
screen.screen_vblank().set(FUNC(jrpacman_state::vblank_irq));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jrpacman);
PALETTE(config, m_palette, 128*4);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(jrpacman_state::palette_init_pacman));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jrpacman)
MCFG_PALETTE_ADD("palette", 128*4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(jrpacman_state,pacman)
MCFG_VIDEO_START_OVERRIDE(jrpacman_state,jrpacman)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, 3072000/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO(config, m_namco_sound, 3072000/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
}

View File

@ -381,25 +381,26 @@ void konmedal_state::machine_reset()
m_control = m_control2 = m_shuri_irq = 0;
}
MACHINE_CONFIG_START(konmedal_state::tsukande)
void konmedal_state::tsukande(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/2) // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown
MCFG_DEVICE_PROGRAM_MAP(medal_main)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konmedal_state, konmedal_interrupt)
Z80(config, m_maincpu, XTAL(14'318'181)/2); // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown
m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::medal_main);
m_maincpu->set_vblank_int("screen", FUNC(konmedal_state::konmedal_interrupt));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_konmedal)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(59.62); /* verified on pcb */
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(80, 400-1, 16, 240-1);
screen.set_screen_update(FUNC(konmedal_state::screen_update_konmedal));
screen.set_palette(m_palette);
MCFG_PALETTE_ADD("palette", 8192)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_INIT_OWNER(konmedal_state, konmedal)
PALETTE(config, m_palette, 8192);
m_palette->enable_shadows();
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
m_palette->set_init(FUNC(konmedal_state::palette_init_konmedal));
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this);
@ -410,30 +411,31 @@ MACHINE_CONFIG_START(konmedal_state::tsukande)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD("ymz", YMZ280B, XTAL(16'934'400)) // 16.9344MHz xtal verified on PCB
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
YMZ280B(config, m_ymz, XTAL(16'934'400)); // 16.9344MHz xtal verified on PCB
m_ymz->add_route(0, "lspeaker", 1.0);
m_ymz->add_route(1, "rspeaker", 1.0);
}
MACHINE_CONFIG_START(konmedal_state::ddboy)
void konmedal_state::ddboy(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(14'318'181)/2) // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown
MCFG_DEVICE_PROGRAM_MAP(ddboy_main)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", konmedal_state, konmedal_interrupt)
Z80(config, m_maincpu, XTAL(14'318'181)/2); // z84c0008pec 8mhz part, 14.31818Mhz xtal verified on PCB, divisor unknown
m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::ddboy_main);
m_maincpu->set_vblank_int("screen", FUNC(konmedal_state::konmedal_interrupt));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.62) /* verified on pcb */
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_konmedal)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(59.62); /* verified on pcb */
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(80, 400-1, 16, 240-1);
screen.set_screen_update(FUNC(konmedal_state::screen_update_konmedal));
screen.set_palette(m_palette);
MCFG_PALETTE_ADD("palette", 8192)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_INIT_OWNER(konmedal_state, konmedal)
PALETTE(config, m_palette, 8192);
m_palette->enable_shadows();
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
m_palette->set_init(FUNC(konmedal_state::palette_init_konmedal));
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this);
@ -442,13 +444,12 @@ MACHINE_CONFIG_START(konmedal_state::ddboy)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(14'318'181)/14, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(0, "mono", 1.0)
MCFG_SOUND_ROUTE(1, "mono", 1.0)
OKIM6295(config, m_oki, XTAL(14'318'181)/14, okim6295_device::PIN7_HIGH);
m_oki->add_route(0, "mono", 1.0);
m_oki->add_route(1, "mono", 1.0);
MCFG_K051649_ADD("k051649", XTAL(14'318'181)/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
MACHINE_CONFIG_END
K051649(config, "k051649", XTAL(14'318'181)/8).add_route(ALL_OUTPUTS, "mono", 0.45);
}
/*
Shuriken Boy
@ -542,25 +543,26 @@ WRITE8_MEMBER(konmedal_state::shuri_vrom_bank_w)
m_vrom_base |= (data << 10);
}
MACHINE_CONFIG_START(konmedal_state::shuriboy)
void konmedal_state::shuriboy(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000) / 3) // divisor unknown
MCFG_DEVICE_PROGRAM_MAP(shuriboy_main)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", konmedal_state, scanline, "screen", 0, 1)
Z80(config, m_maincpu, XTAL(24'000'000) / 3); // divisor unknown
m_maincpu->set_addrmap(AS_PROGRAM, &konmedal_state::shuriboy_main);
TIMER(config, "scantimer").configure_scanline(FUNC(konmedal_state::scanline), "screen", 0, 1);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) // everything not verified, just a placeholder
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(30))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(80, 400-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(konmedal_state, screen_update_shuriboy)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // everything not verified, just a placeholder
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(30));
screen.set_size(64*8, 32*8);
screen.set_visarea(80, 400-1, 16, 240-1);
screen.set_screen_update(FUNC(konmedal_state::screen_update_shuriboy));
screen.set_palette(m_palette);
MCFG_PALETTE_ADD("palette", 8192) // not verified
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_ENABLE_HILIGHTS()
PALETTE(config, m_palette, 8192); // not verified
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
m_palette->enable_shadows();
m_palette->enable_hilights();
K052109(config, m_k052109, 0);
m_k052109->set_palette(m_palette);
@ -571,11 +573,10 @@ MACHINE_CONFIG_START(konmedal_state::shuriboy)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_K051649_ADD("k051649", XTAL(24'000'000) / 12) // divisor unknown
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
K051649(config, "k051649", XTAL(24'000'000) / 12).add_route(ALL_OUTPUTS, "mono", 0.45); // divisor unknown
// upd7759c
MACHINE_CONFIG_END
}
ROM_START( tsukande )
ROM_REGION( 0x20000, "maincpu", 0 ) /* main program */

View File

@ -1315,14 +1315,14 @@ void mappy_state::machine_start()
}
MACHINE_CONFIG_START(mappy_state::superpac_common)
void mappy_state::superpac_common(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(superpac_cpu1_map)
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu1_map);
MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(superpac_cpu2_map)
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu2_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
@ -1333,34 +1333,34 @@ MACHINE_CONFIG_START(mappy_state::superpac_common)
mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
ls157_device &dipmux(LS157(config, "dipmux"));
dipmux.a_in_callback().set_ioport("DSW2");
dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_superpac)
MCFG_PALETTE_ADD("palette", 64*4+64*4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(mappy_state,superpac)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_superpac);
PALETTE(config, m_palette, 64*4+64*4);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(mappy_state::palette_init_superpac));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
m_screen->set_screen_update(FUNC(mappy_state::screen_update_superpac));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
NAMCO_15XX(config, m_namco_15xx, 18432000/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
void mappy_state::superpac(machine_config &config)
{
@ -1399,9 +1399,8 @@ void mappy_state::pacnpal(machine_config &config)
m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
}
MACHINE_CONFIG_START(mappy_state::grobda)
void mappy_state::grobda(machine_config &config)
{
superpac_common(config);
NAMCO_58XX(config, m_namcoio[0], 0);
@ -1418,23 +1417,24 @@ MACHINE_CONFIG_START(mappy_state::grobda)
m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
/* sound hardware */
MCFG_DEVICE_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // alternate route to 15XX-related DAC?
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mappy_state::phozon)
DAC_4BIT_BINARY_WEIGHTED(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); // alternate route to 15XX-related DAC?
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
void mappy_state::phozon(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* MAIN CPU */
MCFG_DEVICE_PROGRAM_MAP(phozon_cpu1_map)
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* MAIN CPU */
m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu1_map);
MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* SOUND CPU */
MCFG_DEVICE_PROGRAM_MAP(phozon_cpu2_map)
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* SOUND CPU */
m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu2_map);
MCFG_DEVICE_ADD("sub2", MC6809E, PIXEL_CLOCK/4) /* SUB CPU */
MCFG_DEVICE_PROGRAM_MAP(phozon_cpu3_map)
MC6809E(config, m_subcpu2, PIXEL_CLOCK/4); /* SUB CPU */
m_subcpu2->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu3_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 5C
mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
@ -1447,7 +1447,8 @@ MACHINE_CONFIG_START(mappy_state::phozon)
mainlatch.q_out_cb<6>().set_inputline(m_subcpu2, INPUT_LINE_RESET).invert();
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
NAMCO_58XX(config, m_namcoio[0], 0);
m_namcoio[0]->in_callback<0>().set_ioport("COINS");
@ -1467,36 +1468,35 @@ MACHINE_CONFIG_START(mappy_state::phozon)
dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_phozon)
MCFG_PALETTE_ADD("palette", 64*4+64*4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(mappy_state,phozon)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_phozon);
PALETTE(config, m_palette, 64*4+64*4);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(mappy_state::palette_init_phozon));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on all three CPUs; also update the custom I/O chips
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
m_screen->set_screen_update(FUNC(mappy_state::screen_update_phozon));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mappy_state::mappy_common)
NAMCO_15XX(config, m_namco_15xx, 18432000/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
void mappy_state::mappy_common(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(mappy_cpu1_map)
MC6809E(config, m_maincpu, PIXEL_CLOCK/4); /* 1.536 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu1_map);
MCFG_DEVICE_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(mappy_cpu2_map)
MC6809E(config, m_subcpu, PIXEL_CLOCK/4); /* 1.536 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu2_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board
mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w));
@ -1508,33 +1508,34 @@ MACHINE_CONFIG_START(mappy_state::mappy_common)
mainlatch.q_out_cb<5>().set_inputline(m_subcpu, INPUT_LINE_RESET).invert();
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs
ls157_device &dipmux(LS157(config, "dipmux"));
dipmux.a_in_callback().set_ioport("DSW2");
dipmux.b_in_callback().set_ioport("DSW2").rshift(4);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mappy)
MCFG_PALETTE_ADD("palette", 64*4+16*16)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(mappy_state,mappy)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mappy);
PALETTE(config, m_palette, 64*4+16*16);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(mappy_state::palette_init_mappy));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
m_screen->set_screen_update(FUNC(mappy_state::screen_update_mappy));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on both CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy)
/* sound hardware */
SPEAKER(config, "speaker").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_15XX, 18432000/768)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
MACHINE_CONFIG_END
NAMCO_15XX(config, m_namco_15xx, 18432000/768);
m_namco_15xx->set_voices(8);
m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
void mappy_state::mappy(machine_config &config)
{
@ -1574,14 +1575,14 @@ void mappy_state::digdug2(machine_config &config)
m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0);
}
MACHINE_CONFIG_START(mappy_state::todruaga)
void mappy_state::todruaga(machine_config &config)
{
digdug2(config);
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_todruaga)
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_ENTRIES(64*4+64*16)
MACHINE_CONFIG_END
m_gfxdecode->set_info(gfx_todruaga);
m_palette->set_entries(64*4+64*16);
}
void mappy_state::motos(machine_config &config)
{

View File

@ -178,7 +178,6 @@ TODO:
#include "includes/namcos86.h"
#include "cpu/m6809/m6809.h"
#include "cpu/m6800/m6801.h"
#include "sound/ym2151.h"
#include "screen.h"
#include "speaker.h"
@ -1047,111 +1046,97 @@ GFXDECODE_END
/*******************************************************************/
MACHINE_CONFIG_START(namcos86_state::hopmappy)
void namcos86_state::hopmappy(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("cpu1", MC6809E, XTAL(49'152'000)/32)
MCFG_DEVICE_PROGRAM_MAP(cpu1_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos86_state, irq0_line_assert)
MC6809E(config, m_cpu1, XTAL(49'152'000)/32);
m_cpu1->set_addrmap(AS_PROGRAM, &namcos86_state::cpu1_map);
m_cpu1->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_assert));
MCFG_DEVICE_ADD("cpu2", MC6809E, XTAL(49'152'000)/32)
MCFG_DEVICE_PROGRAM_MAP(hopmappy_cpu2_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos86_state, irq0_line_assert)
MC6809E(config, m_cpu2, XTAL(49'152'000)/32);
m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_cpu2_map);
m_cpu2->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_assert));
hd63701_cpu_device &mcu(HD63701(config, "mcu", XTAL(49'152'000)/8)); /* or compatible 6808 with extra instructions */
mcu.set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_mcu_map);
mcu.in_p1_cb().set_ioport("IN2");
mcu.in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
mcu.out_p1_cb().set(FUNC(namcos86_state::coin_w));
mcu.out_p2_cb().set(FUNC(namcos86_state::led_w));
mcu.set_vblank_int("screen", FUNC(namcos86_state::irq0_line_hold)); /* ??? */
HD63701(config, m_mcu, XTAL(49'152'000)/8); /* or compatible 6808 with extra instructions */
m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::hopmappy_mcu_map);
m_mcu->in_p1_cb().set_ioport("IN2");
m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
m_mcu->out_p1_cb().set(FUNC(namcos86_state::coin_w));
m_mcu->out_p2_cb().set(FUNC(namcos86_state::led_w));
m_mcu->set_vblank_int("screen", FUNC(namcos86_state::irq0_line_hold)); /* ??? */
MCFG_QUANTUM_TIME(attotime::from_hz(48000)) /* heavy interleaving needed to avoid hangs in rthunder */
config.m_minimum_quantum = attotime::from_hz(48000); /* heavy interleaving needed to avoid hangs in rthunder */
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 3+8*8, 3+44*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(namcos86_state, screen_update)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos86_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(XTAL(49'152'000)/8, 384, 3+8*8, 3+44*8, 264, 2*8, 30*8);
screen.set_screen_update(FUNC(namcos86_state::screen_update));
screen.screen_vblank().set(FUNC(namcos86_state::screen_vblank));
screen.set_palette(m_palette);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_namcos86)
MCFG_PALETTE_ADD("palette", 4096)
MCFG_PALETTE_INIT_OWNER(namcos86_state, namcos86)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_namcos86);
PALETTE(config, m_palette, 4096);
m_palette->set_init(FUNC(namcos86_state::palette_init_namcos86));
/* sound hardware */
SPEAKER(config, "mono").front_center();
YM2151(config, "ymsnd", 3579580).add_route(0, "mono", 0.0).add_route(1, "mono", 0.60); /* only right channel is connected */
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048);
m_cus30->set_voices(8);
m_cus30->add_route(ALL_OUTPUTS, "mono", 0.50);
}
MACHINE_CONFIG_START(namcos86_state::roishtar)
void namcos86_state::roishtar(machine_config &config)
{
hopmappy(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("cpu2")
MCFG_DEVICE_PROGRAM_MAP(roishtar_cpu2_map)
m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::roishtar_cpu2_map);
m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::roishtar_mcu_map);
}
MCFG_DEVICE_MODIFY("mcu")
MCFG_DEVICE_PROGRAM_MAP(roishtar_mcu_map)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos86_state::genpeitd)
void namcos86_state::genpeitd(machine_config &config)
{
hopmappy(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("cpu2")
MCFG_DEVICE_PROGRAM_MAP(genpeitd_cpu2_map)
MCFG_DEVICE_MODIFY("mcu")
MCFG_DEVICE_PROGRAM_MAP(genpeitd_mcu_map)
m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::genpeitd_cpu2_map);
m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::genpeitd_mcu_map);
/* sound hardware */
MCFG_NAMCO_63701X_ADD("namco2", 6000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_63701X(config, m_63701x, 6000000);
m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_START(namcos86_state::rthunder)
void namcos86_state::rthunder(machine_config &config)
{
hopmappy(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("cpu2")
MCFG_DEVICE_PROGRAM_MAP(rthunder_cpu2_map)
MCFG_DEVICE_MODIFY("mcu")
MCFG_DEVICE_PROGRAM_MAP(rthunder_mcu_map)
m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::rthunder_cpu2_map);
m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::rthunder_mcu_map);
/* sound hardware */
MCFG_NAMCO_63701X_ADD("namco2", 6000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_63701X(config, m_63701x, 6000000);
m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_START(namcos86_state::wndrmomo)
void namcos86_state::wndrmomo(machine_config &config)
{
hopmappy(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("cpu2")
MCFG_DEVICE_PROGRAM_MAP(wndrmomo_cpu2_map)
MCFG_DEVICE_MODIFY("mcu")
MCFG_DEVICE_PROGRAM_MAP(wndrmomo_mcu_map)
m_cpu2->set_addrmap(AS_PROGRAM, &namcos86_state::wndrmomo_cpu2_map);
m_mcu->set_addrmap(AS_PROGRAM, &namcos86_state::wndrmomo_mcu_map);
/* sound hardware */
MCFG_NAMCO_63701X_ADD("namco2", 6000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_63701X(config, m_63701x, 6000000);
m_63701x->add_route(ALL_OUTPUTS, "mono", 1.0);
}
/***************************************************************************

View File

@ -413,11 +413,11 @@ WRITE_LINE_MEMBER(pacland_state::vblank_irq)
m_mcu->set_input_line(0, ASSERT_LINE);
}
MACHINE_CONFIG_START(pacland_state::pacland)
void pacland_state::pacland(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32) /* 1.536 MHz */
MCFG_DEVICE_PROGRAM_MAP(main_map)
MC6809E(config, m_maincpu, XTAL(49'152'000)/32); /* 1.536 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &pacland_state::main_map);
HD63701(config, m_mcu, XTAL(49'152'000)/8); /* 6.144 MHz? */
m_mcu->set_addrmap(AS_PROGRAM, &pacland_state::mcu_map);
@ -426,29 +426,29 @@ MACHINE_CONFIG_START(pacland_state::pacland)
m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
m_mcu->out_p2_cb().set(FUNC(pacland_state::led_w));
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synching between the MCU and the CPU */
config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synching between the MCU and the CPU */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(49'152'000)/8, 384, 3*8, 39*8, 264, 2*8, 30*8)
MCFG_SCREEN_UPDATE_DRIVER(pacland_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacland_state, vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(XTAL(49'152'000)/8, 384, 3*8, 39*8, 264, 2*8, 30*8);
m_screen->set_screen_update(FUNC(pacland_state::screen_update));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(pacland_state::vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pacland)
MCFG_PALETTE_ADD("palette", 256*4+256*4+64*16)
MCFG_PALETTE_INDIRECT_ENTRIES(256)
MCFG_PALETTE_INIT_OWNER(pacland_state, pacland)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pacland);
PALETTE(config, m_palette, 256*4+256*4+64*16);
m_palette->set_indirect_entries(256);
m_palette->set_init(FUNC(pacland_state::palette_init_pacland));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2/1024)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2/1024);
m_cus30->set_voices(8);
m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0);
}
/***************************************************************************

View File

@ -383,13 +383,12 @@ WRITE_LINE_MEMBER(pengo_state::vblank_irq)
m_maincpu->set_input_line(0, HOLD_LINE);
}
MACHINE_CONFIG_START(pengo_state::pengo)
void pengo_state::pengo(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6)
MCFG_DEVICE_PROGRAM_MAP(pengo_map)
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
Z80(config, m_maincpu, MASTER_CLOCK/6);
m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::pengo_map);
m_maincpu->set_addrmap(AS_OPCODES, &pengo_state::decrypted_opcodes_map);
LS259(config, m_latch); // U27
m_latch->q_out_cb<0>().set(FUNC(pengo_state::irq_mask_w));
@ -404,33 +403,32 @@ MACHINE_CONFIG_START(pengo_state::pengo)
WATCHDOG_TIMER(config, m_watchdog);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pengo)
MCFG_PALETTE_ADD("palette", 128*4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_INIT_OWNER(pengo_state,pacman)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pengo);
PALETTE(config, m_palette, 128*4);
m_palette->set_indirect_entries(32);
m_palette->set_init(FUNC(pengo_state::palette_init_pacman));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(pengo_state, screen_update_pacman)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pengo_state, vblank_irq))
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART);
screen.set_screen_update(FUNC(pengo_state::screen_update_pacman));
screen.set_palette(m_palette);
screen.screen_vblank().set(FUNC(pengo_state::vblank_irq));
MCFG_VIDEO_START_OVERRIDE(pengo_state,pengo)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32)
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32);
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_START(pengo_state::pengou)
void pengo_state::pengou(machine_config &config)
{
pengo(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
MACHINE_CONFIG_END
m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
}
void pengo_state::pengoe(machine_config &config)
{
@ -441,20 +439,20 @@ void pengo_state::pengoe(machine_config &config)
maincpu.set_decrypted_tag(":decrypted_opcodes");
}
MACHINE_CONFIG_START(pengo_state::jrpacmbl)
void pengo_state::jrpacmbl(machine_config &config)
{
pengo(config);
/* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(jrpacmbl_map)
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_OPCODES)
m_maincpu->set_addrmap(AS_PROGRAM, &pengo_state::jrpacmbl_map);
m_maincpu->set_addrmap(AS_OPCODES, address_map_constructor());
m_latch->q_out_cb<4>().set(FUNC(pengo_state::jrpacman_bgpriority_w));
m_latch->q_out_cb<5>().set(FUNC(pengo_state::jrpacman_spritebank_w));
m_latch->q_out_cb<7>().set(FUNC(pengo_state::jrpacman_charbank_w));
MCFG_VIDEO_START_OVERRIDE(pengo_state,jrpacman)
MACHINE_CONFIG_END
}

View File

@ -849,18 +849,18 @@ GFXDECODE_END
* Machine driver
*********************************************************************/
MACHINE_CONFIG_START(polepos_state::polepos)
void polepos_state::polepos(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, Z80, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z80_map)
MCFG_DEVICE_IO_MAP(z80_io)
Z80(config, m_maincpu, MASTER_CLOCK/8); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &polepos_state::z80_map);
m_maincpu->set_addrmap(AS_IO, &polepos_state::z80_io);
MCFG_DEVICE_ADD(m_subcpu, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z8002_map_1)
Z8002(config, m_subcpu, MASTER_CLOCK/8); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_1);
MCFG_DEVICE_ADD(m_subcpu2, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z8002_map_2)
Z8002(config, m_subcpu2, MASTER_CLOCK/8); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_2);
namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/8/2)); /* 1.536 MHz */
n51xx.set_screen_tag(m_screen);
@ -899,11 +899,11 @@ MACHINE_CONFIG_START(polepos_state::polepos)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
config.m_minimum_quantum = attotime::from_hz(6000); /* some interleaving */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", polepos_state, scanline, "screen", 0, 1)
TIMER(config, "scantimer").configure_scanline(FUNC(polepos_state::scanline), "screen", 0, 1);
LS259(config, m_latch); // at 8E on polepos
m_latch->q_out_cb<0>().set_inputline(m_maincpu, 0, CLEAR_LINE).invert();
@ -917,39 +917,38 @@ MACHINE_CONFIG_START(polepos_state::polepos)
m_latch->q_out_cb<7>().set(FUNC(polepos_state::chacl_w));
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16);
m_screen->set_screen_update(FUNC(polepos_state::screen_update));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_polepos);
PALETTE(config, m_palette, 0x0f00);
m_palette->set_indirect_entries(128);
m_palette->set_init(FUNC(polepos_state::palette_init_polepos));
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_polepos)
MCFG_PALETTE_ADD(m_palette, 0x0f00)
MCFG_PALETTE_INDIRECT_ENTRIES(128)
config.set_default_layout(layout_polepos);
MCFG_PALETTE_INIT_OWNER(polepos_state,polepos)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD(m_namco_sound, NAMCO, MASTER_CLOCK/512)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_NAMCO_AUDIO_STEREO(1)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
NAMCO(config, m_namco_sound, MASTER_CLOCK/512);
m_namco_sound->set_voices(8);
m_namco_sound->set_stereo(true);
m_namco_sound->add_route(0, "lspeaker", 0.80);
m_namco_sound->add_route(1, "rspeaker", 0.80);
/* discrete circuit on the 54XX outputs */
MCFG_DEVICE_ADD("discrete", DISCRETE, polepos_discrete)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90)
discrete_sound_device &discrete(DISCRETE(config, "discrete", polepos_discrete));
discrete.add_route(ALL_OUTPUTS, "lspeaker", 0.90);
discrete.add_route(ALL_OUTPUTS, "rspeaker", 0.90);
/* engine sound */
MCFG_DEVICE_ADD("polepos", POLEPOS_SOUND, MASTER_CLOCK/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77)
MACHINE_CONFIG_END
polepos_sound_device &polepos(POLEPOS_SOUND(config, "polepos", MASTER_CLOCK/8));
polepos.add_route(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77);
polepos.add_route(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77);
}
WRITE8_MEMBER(polepos_state::bootleg_soundlatch_w)
{
@ -982,18 +981,18 @@ void polepos_state::sound_z80_bootleg_iomap(address_map &map)
map(0x00, 0x00).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w));
}
MACHINE_CONFIG_START(polepos_state::topracern)
void polepos_state::topracern(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD(m_maincpu, Z80, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z80_map)
MCFG_DEVICE_IO_MAP(topracern_io)
Z80(config, m_maincpu, MASTER_CLOCK/8); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &polepos_state::z80_map);
m_maincpu->set_addrmap(AS_IO, &polepos_state::topracern_io);
MCFG_DEVICE_ADD(m_subcpu, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z8002_map_1)
Z8002(config, m_subcpu, MASTER_CLOCK/8); /* 3.072 MHz */
m_subcpu->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_1);
MCFG_DEVICE_ADD(m_subcpu2, Z8002, MASTER_CLOCK/8) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(z8002_map_2)
Z8002(config, m_subcpu2, MASTER_CLOCK/8); /* 3.072 MHz */
m_subcpu2->set_addrmap(AS_PROGRAM, &polepos_state::z8002_map_2);
// TODO, remove these devices too, this bootleg doesn't have them, but the emulation doesn't boot without them.
// doesn't exist on the bootleg, but required for now or the game only boots in test mode! they probably simulate some of the logic
@ -1008,11 +1007,11 @@ MACHINE_CONFIG_START(polepos_state::topracern)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
config.m_minimum_quantum = attotime::from_hz(6000); /* some interleaving */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", polepos_state, scanline, "screen", 0, 1)
TIMER(config, "scantimer").configure_scanline(FUNC(polepos_state::scanline), "screen", 0, 1);
LS259(config, m_latch);
m_latch->q_out_cb<0>().set_inputline(m_maincpu, 0, CLEAR_LINE).invert();
@ -1026,39 +1025,42 @@ MACHINE_CONFIG_START(polepos_state::topracern)
m_latch->q_out_cb<7>().set(FUNC(polepos_state::chacl_w));
/* video hardware */
MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16)
MCFG_SCREEN_UPDATE_DRIVER(polepos_state, screen_update)
MCFG_SCREEN_PALETTE(m_palette)
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(MASTER_CLOCK/4, 384, 0, 256, 264, 16, 224+16);
m_screen->set_screen_update(FUNC(polepos_state::screen_update));
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_polepos);
PALETTE(config, m_palette, 0x0f00);
m_palette->set_indirect_entries(128);
m_palette->set_init(FUNC(polepos_state::palette_init_polepos));
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_polepos)
MCFG_PALETTE_ADD(m_palette, 0x0f00)
MCFG_PALETTE_INDIRECT_ENTRIES(128)
config.set_default_layout(layout_topracer);
MCFG_PALETTE_INIT_OWNER(polepos_state,polepos)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD(m_namco_sound, NAMCO, MASTER_CLOCK/512)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_NAMCO_AUDIO_STEREO(1)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
NAMCO(config, m_namco_sound, MASTER_CLOCK/512);
m_namco_sound->set_voices(8);
m_namco_sound->set_stereo(true);
m_namco_sound->add_route(0, "lspeaker", 0.80);
m_namco_sound->add_route(1, "rspeaker", 0.80);
/* engine sound */
MCFG_DEVICE_ADD("polepos", POLEPOS_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77)
polepos_sound_device &polepos(POLEPOS_SOUND(config, "polepos", 0));
polepos.add_route(ALL_OUTPUTS, "lspeaker", 0.90 * 0.77);
polepos.add_route(ALL_OUTPUTS, "rspeaker", 0.90 * 0.77);
MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) // unknown resistor configuration
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.12)
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
dac_4bit_r2r_device &dac(DAC_4BIT_R2R(config, "dac", 0)); // unknown resistor configuration
dac.add_route(ALL_OUTPUTS, "lspeaker", 0.12);
dac.add_route(ALL_OUTPUTS, "rspeaker", 0.12);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
void polepos_state::polepos2bi(machine_config &config)
{

View File

@ -400,11 +400,12 @@ void quickpick5_state::machine_reset()
{
}
MACHINE_CONFIG_START(quickpick5_state::quickpick5)
void quickpick5_state::quickpick5(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(32'000'000)/4) // z84c0008pec 8mhz part, 32Mhz xtal verified on PCB, divisor unknown
MCFG_DEVICE_PROGRAM_MAP(quickpick5_main)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", quickpick5_state, scanline, "screen", 0, 1)
Z80(config, m_maincpu, XTAL(32'000'000)/4); // z84c0008pec 8mhz part, 32Mhz xtal verified on PCB, divisor unknown
m_maincpu->set_addrmap(AS_PROGRAM, &quickpick5_state::quickpick5_main);
TIMER(config, "scantimer").configure_scanline(FUNC(quickpick5_state::scanline), "screen", 0, 1);
K053252(config, m_k053252, XTAL(32'000'000)/4); /* K053252, xtal verified, divider not verified */
m_k053252->int1_ack().set(FUNC(quickpick5_state::vbl_ack_w));
@ -412,36 +413,36 @@ MACHINE_CONFIG_START(quickpick5_state::quickpick5)
m_k053252->int_time().set(FUNC(quickpick5_state::ccu_int_time_w));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.62)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(20))
MCFG_SCREEN_SIZE(64*8, 33*8)
MCFG_SCREEN_VISIBLE_AREA(88, 456-1, 28, 256-1)
MCFG_SCREEN_UPDATE_DRIVER(quickpick5_state, screen_update_quickpick5)
MCFG_SCREEN_PALETTE("palette")
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(59.62);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(20));
screen.set_size(64*8, 33*8);
screen.set_visarea(88, 456-1, 28, 256-1);
screen.set_screen_update(FUNC(quickpick5_state::screen_update_quickpick5));
screen.set_palette(m_palette);
MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
PALETTE(config, m_palette, 1024);
m_palette->enable_shadows();
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
K053245(config, m_k053245, 0);
m_k053245->set_palette(m_palette);
m_k053245->set_offsets(-(44+80), 20);
m_k053245->set_sprite_callback(FUNC(quickpick5_state::sprite_callback), this);
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_K051649_ADD("k051649", XTAL(32'000'000)/18) // xtal is verified, divider is not
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
K051649(config, m_k051649, XTAL(32'000'000)/18); // xtal is verified, divider is not
m_k051649->add_route(ALL_OUTPUTS, "mono", 0.45);
MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(32'000'000)/18, okim6295_device::PIN7_HIGH)
MCFG_SOUND_ROUTE(0, "mono", 1.0)
MCFG_SOUND_ROUTE(1, "mono", 1.0)
MACHINE_CONFIG_END
OKIM6295(config, m_oki, XTAL(32'000'000)/18, okim6295_device::PIN7_HIGH);
m_oki->add_route(0, "mono", 1.0);
m_oki->add_route(1, "mono", 1.0);
}
ROM_START( quickp5 )
ROM_REGION( 0x10000, "maincpu", 0 ) /* main program */

View File

@ -198,7 +198,6 @@ TODO:
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/samples.h"
#include "screen.h"
#include "speaker.h"
#define MASTER_CLOCK XTAL(18'432'000)
@ -814,12 +813,12 @@ WRITE_LINE_MEMBER(rallyx_state::jungler_vblank_irq)
m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
MACHINE_CONFIG_START(rallyx_state::rallyx)
void rallyx_state::rallyx(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(rallyx_map)
MCFG_DEVICE_IO_MAP(io_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::rallyx_map);
m_maincpu->set_addrmap(AS_IO, &rallyx_state::io_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 259 at 12M or 4099 at 11M on Logic Board I
mainlatch.q_out_cb<0>().set(FUNC(rallyx_state::bang_w)); // BANG
@ -836,42 +835,42 @@ MACHINE_CONFIG_START(rallyx_state::rallyx)
MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_rallyx)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rallyx_state, rallyx_vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60.606060);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(36*8, 32*8);
m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(rallyx_state::screen_update_rallyx));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(rallyx_state::rallyx_vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rallyx)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_rallyx);
PALETTE(config, m_palette, 64*4+4);
m_palette->set_indirect_entries(32);
m_palette->enable_shadows();
m_palette->set_init(FUNC(rallyx_state::palette_init_rallyx));
MCFG_PALETTE_ADD("palette", 64*4+4)
MCFG_PALETTE_INDIRECT_ENTRIES(32)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_INIT_OWNER(rallyx_state,rallyx)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,rallyx)
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO, MASTER_CLOCK/6/32) /* 96 KHz */
MCFG_NAMCO_AUDIO_VOICES(3)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
NAMCO(config, m_namco_sound, MASTER_CLOCK/6/32); /* 96 KHz */
m_namco_sound->set_voices(3);
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
MCFG_DEVICE_ADD("samples", SAMPLES)
MCFG_SAMPLES_CHANNELS(1)
MCFG_SAMPLES_NAMES(rallyx_sample_names)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(rallyx_state::jungler)
SAMPLES(config, m_samples);
m_samples->set_channels(1);
m_samples->set_samples_names(rallyx_sample_names);
m_samples->add_route(ALL_OUTPUTS, "mono", 0.80);
}
void rallyx_state::jungler(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(jungler_map)
Z80(config, m_maincpu, MASTER_CLOCK/6); /* 3.072 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &rallyx_state::jungler_map);
ls259_device &mainlatch(LS259(config, "mainlatch")); // 1C on Loco-Motion
mainlatch.q_out_cb<0>().set("timeplt_audio", FUNC(timeplt_audio_device::sh_irqtrigger_w)); // SOUNDON
@ -888,64 +887,56 @@ MACHINE_CONFIG_START(rallyx_state::jungler)
MCFG_MACHINE_START_OVERRIDE(rallyx_state,rallyx)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */)
MCFG_SCREEN_SIZE(36*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_jungler)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, rallyx_state, jungler_vblank_irq))
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* frames per second, vblank duration */
m_screen->set_size(36*8, 32*8);
m_screen->set_visarea(0*8, 36*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(rallyx_state::screen_update_jungler));
m_screen->set_palette(m_palette);
m_screen->screen_vblank().set(FUNC(rallyx_state::jungler_vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jungler)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_jungler);
PALETTE(config, m_palette, 64*4+4+64);
m_palette->set_indirect_entries(32+64);
m_palette->enable_shadows();
m_palette->set_init(FUNC(rallyx_state::palette_init_jungler));
MCFG_PALETTE_ADD("palette", 64*4+4+64)
MCFG_PALETTE_INDIRECT_ENTRIES(32+64)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_INIT_OWNER(rallyx_state,jungler)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,jungler)
/* sound hardware */
MCFG_DEVICE_ADD("timeplt_audio", LOCOMOTN_AUDIO)
MACHINE_CONFIG_END
LOCOMOTN_AUDIO(config, "timeplt_audio");
}
MACHINE_CONFIG_START(rallyx_state::tactcian)
void rallyx_state::tactcian(machine_config &config)
{
jungler(config);
/* basic machine hardware */
m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(rallyx_state::locomotn)
void rallyx_state::locomotn(machine_config &config)
{
jungler(config);
/* basic machine hardware */
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,locomotn)
MACHINE_CONFIG_END
}
MACHINE_CONFIG_START(rallyx_state::commsega)
void rallyx_state::commsega(machine_config &config)
{
jungler(config);
/* basic machine hardware */
m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
m_screen->set_screen_update(FUNC(rallyx_state::screen_update_locomotn));
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(rallyx_state, screen_update_locomotn)
MCFG_VIDEO_START_OVERRIDE(rallyx_state,commsega)
MACHINE_CONFIG_END
}
/*************************************

View File

@ -421,11 +421,11 @@ WRITE_LINE_MEMBER(skykid_state::vblank_irq)
}
MACHINE_CONFIG_START(skykid_state::skykid)
void skykid_state::skykid(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(49'152'000)/32)
MCFG_DEVICE_PROGRAM_MAP(skykid_map)
MC6809E(config, m_maincpu, XTAL(49'152'000)/32);
m_maincpu->set_addrmap(AS_PROGRAM, &skykid_state::skykid_map);
HD63701(config, m_mcu, XTAL(49'152'000)/8); /* or compatible 6808 with extra instructions */
m_mcu->set_addrmap(AS_PROGRAM, &skykid_state::mcu_map);
@ -434,32 +434,32 @@ MACHINE_CONFIG_START(skykid_state::skykid)
m_mcu->in_p2_cb().set_constant(0xff); /* leds won't work otherwise */
m_mcu->out_p2_cb().set(FUNC(skykid_state::skykid_led_w)); /* lamps */
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* we need heavy synch */
config.m_minimum_quantum = attotime::from_hz(6000); /* we need heavy synch */
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(36*8, 28*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(skykid_state, screen_update_skykid)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, skykid_state, vblank_irq))
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60.606060);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(36*8, 28*8);
screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
screen.set_screen_update(FUNC(skykid_state::screen_update_skykid));
screen.set_palette(m_palette);
screen.screen_vblank().set(FUNC(skykid_state::vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_skykid)
MCFG_PALETTE_ADD("palette", 64*4+128*4+64*8)
MCFG_PALETTE_INDIRECT_ENTRIES(256)
MCFG_PALETTE_INIT_OWNER(skykid_state, skykid)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_skykid);
PALETTE(config, m_palette, 64*4+128*4+64*8);
m_palette->set_indirect_entries(256);
m_palette->set_init(FUNC(skykid_state::palette_init_skykid));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, 49152000/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_CUS30(config, m_cus30, 49152000/2048);
m_cus30->set_voices(8);
m_cus30->add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( skykid ) // a PCB was found with ROM 4 and 6 labeled sk1, but hashes match the sk2 listed here and in other sets, while they differ from the sk1 ROMs in set skykidd?

View File

@ -683,32 +683,32 @@ INPUT_PORTS_END
Machine driver
***************************************************************************/
MACHINE_CONFIG_START(srmp6_state::srmp6)
void srmp6_state::srmp6(machine_config &config)
{
M68000(config, m_maincpu, 16000000);
m_maincpu->set_addrmap(AS_PROGRAM, &srmp6_state::srmp6_map);
m_maincpu->set_vblank_int("screen", FUNC(srmp6_state::irq4_line_assert)); // irq3 is a timer irq, but it's never enabled
MCFG_DEVICE_ADD("maincpu", M68000, 16000000)
MCFG_DEVICE_PROGRAM_MAP(srmp6_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", srmp6_state, irq4_line_assert) // irq3 is a timer irq, but it's never enabled
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(0*8, 42*8-1, 0*8, 30*8-1);
screen.set_screen_update(FUNC(srmp6_state::screen_update_srmp6));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 64*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 42*8-1, 0*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(srmp6_state, screen_update_srmp6)
PALETTE(config, m_palette, 0x800);
m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR);
MCFG_PALETTE_ADD("palette", 0x800)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MCFG_NILE_ADD("nile", 0)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
nile_device &nile(NILE(config, "nile", 0));
nile.add_route(0, "lspeaker", 1.0);
nile.add_route(1, "rspeaker", 1.0);
}
/***************************************************************************

View File

@ -11,7 +11,6 @@
#include "emu.h"
#include "includes/tceptor.h"
#include "cpu/m6502/m65c02.h"
#include "cpu/m6809/m6809.h"
#include "cpu/m6800/m6801.h"
#include "cpu/m68000/m68000.h"
@ -314,25 +313,25 @@ void tceptor_state::machine_reset()
/*******************************************************************/
MACHINE_CONFIG_START(tceptor_state::tceptor)
void tceptor_state::tceptor(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", M6809, XTAL(49'152'000)/32)
MCFG_DEVICE_PROGRAM_MAP(m6809_map)
M6809(config, m_maincpu, XTAL(49'152'000)/32);
m_maincpu->set_addrmap(AS_PROGRAM, &tceptor_state::m6809_map);
MCFG_DEVICE_ADD("audiocpu", M65C02, XTAL(49'152'000)/24)
MCFG_DEVICE_PROGRAM_MAP(m6502_a_map)
M65C02(config, m_audiocpu[0], XTAL(49'152'000)/24);
m_audiocpu[0]->set_addrmap(AS_PROGRAM, &tceptor_state::m6502_a_map);
MCFG_DEVICE_ADD("audio2", M65C02, XTAL(49'152'000)/24)
MCFG_DEVICE_PROGRAM_MAP(m6502_b_map)
M65C02(config, m_audiocpu[1], XTAL(49'152'000)/24);
m_audiocpu[1]->set_addrmap(AS_PROGRAM, &tceptor_state::m6502_b_map);
MCFG_DEVICE_ADD("sub", M68000, XTAL(49'152'000)/4)
MCFG_DEVICE_PROGRAM_MAP(m68k_map)
M68000(config, m_subcpu, XTAL(49'152'000)/4);
m_subcpu->set_addrmap(AS_PROGRAM, &tceptor_state::m68k_map);
HD63701(config, m_mcu, XTAL(49'152'000)/8); // or compatible 6808 with extra instructions
m_mcu->set_addrmap(AS_PROGRAM, &tceptor_state::mcu_map);
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
config.m_minimum_quantum = attotime::from_hz(6000);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
@ -343,22 +342,22 @@ MACHINE_CONFIG_START(tceptor_state::tceptor)
adc.in_callback<3>().set_ioport("STICKY");
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tceptor)
MCFG_PALETTE_ADD("palette", 4096)
MCFG_PALETTE_INDIRECT_ENTRIES(1024)
MCFG_PALETTE_INIT_OWNER(tceptor_state, tceptor)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_tceptor);
PALETTE(config, m_palette, 4096);
m_palette->set_indirect_entries(1024);
m_palette->set_init(FUNC(tceptor_state::palette_init_tceptor));
NAMCO_C45_ROAD(config, m_c45_road, 0);
m_c45_road->set_palette(m_palette);
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tceptor_state, screen_vblank_tceptor))
MCFG_SCREEN_PALETTE("palette")
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60.606060);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(38*8, 32*8);
m_screen->set_visarea(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0);
m_screen->set_screen_update(FUNC(tceptor_state::screen_update_tceptor));
m_screen->screen_vblank().set(FUNC(tceptor_state::screen_vblank_tceptor));
m_screen->set_palette(m_palette);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@ -366,16 +365,21 @@ MACHINE_CONFIG_START(tceptor_state::tceptor)
YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
MCFG_DEVICE_ADD("namco", NAMCO_CUS30, XTAL(49'152'000)/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_NAMCO_AUDIO_STEREO(1)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
NAMCO_CUS30(config, m_cus30, XTAL(49'152'000)/2048);
m_cus30->set_voices(8);
m_cus30->set_stereo(true);
m_cus30->add_route(0, "lspeaker", 0.40);
m_cus30->add_route(1, "rspeaker", 0.40);
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.4) // unknown DAC
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
dac_8bit_r2r_device &dac(DAC_8BIT_R2R(config, "dac", 0)); // unknown DAC
dac.add_route(ALL_OUTPUTS, "lspeaker", 0.4);
dac.add_route(ALL_OUTPUTS, "rspeaker", 0.4);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
/***************************************************************************
@ -388,10 +392,10 @@ ROM_START( tceptor )
ROM_REGION( 0x10000, "maincpu", 0 ) // 68A09EP
ROM_LOAD( "tc1-1.10f", 0x08000, 0x08000, CRC(4c6b063e) SHA1(d9701657186f8051391084f51a720037f9f418b1) )
ROM_REGION( 0x10000, "audiocpu", 0 ) // RC65C02
ROM_REGION( 0x10000, "audiocpu1", 0 ) // RC65C02
ROM_LOAD( "tc1-21.1m", 0x08000, 0x08000, CRC(2d0b2fa8) SHA1(16ecd70954e52a8661642b15a5cf1db51783e444) )
ROM_REGION( 0x10000, "audio2", 0 ) // RC65C02
ROM_REGION( 0x10000, "audiocpu2", 0 ) // RC65C02
ROM_LOAD( "tc1-22.3m", 0x08000, 0x08000, CRC(9f5a3e98) SHA1(2b2ffe39fe647a3039b92721817bddc9e9a92d82) )
ROM_REGION( 0x110000, "sub", 0 ) // MC68000-12
@ -444,10 +448,10 @@ ROM_START( tceptor2 )
ROM_REGION( 0x10000, "maincpu", 0 ) // 68A09EP
ROM_LOAD( "tc2-1.10f", 0x08000, 0x08000, CRC(f953f153) SHA1(f4cd0a133d23b4bf3c24c70c28c4ecf8ad4daf6f) )
ROM_REGION( 0x10000, "audiocpu", 0 ) // RC65C02
ROM_REGION( 0x10000, "audiocpu1", 0 ) // RC65C02
ROM_LOAD( "tc1-21.1m", 0x08000, 0x08000, CRC(2d0b2fa8) SHA1(16ecd70954e52a8661642b15a5cf1db51783e444) )
ROM_REGION( 0x10000, "audio2", 0 ) // RC65C02
ROM_REGION( 0x10000, "audiocpu2", 0 ) // RC65C02
ROM_LOAD( "tc1-22.3m", 0x08000, 0x08000, CRC(9f5a3e98) SHA1(2b2ffe39fe647a3039b92721817bddc9e9a92d82) )
ROM_REGION( 0x110000, "sub", 0 ) // MC68000-12

View File

@ -691,26 +691,25 @@ WRITE_LINE_MEMBER(namcos16_state::slave_vblank_irq)
m_slave_cpu->set_input_line(6, HOLD_LINE);
}
MACHINE_CONFIG_START(namcos16_state::liblrabl)
MCFG_DEVICE_ADD("maincpu", MC6809E, MASTER_CLOCK/4)
MCFG_DEVICE_PROGRAM_MAP(master_liblrabl_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos16_state, master_scanline, "screen", 0, 1)
void namcos16_state::liblrabl(machine_config &config)
{
MC6809E(config, m_master_cpu, MASTER_CLOCK/4);
m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_liblrabl_map);
TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::master_scanline), "screen", 0, 1);
MCFG_DEVICE_ADD("slave", M68000, MASTER_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(slave_map)
M68000(config, m_slave_cpu, MASTER_CLOCK);
m_slave_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::slave_map);
MCFG_DEVICE_ADD("audiocpu", MC6809E, MASTER_CLOCK/4)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos16_state, irq0_line_hold, 60)
MC6809E(config, m_sound_cpu, MASTER_CLOCK/4);
m_sound_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map);
m_sound_cpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60));
NAMCO_58XX(config, m_namco58xx, 0);
m_namco58xx->in_callback<0>().set_ioport("COINS");
m_namco58xx->in_callback<1>().set_ioport("P1_RIGHT");
m_namco58xx->in_callback<2>().set_ioport("P2_RIGHT");
m_namco58xx->in_callback<3>().set_ioport("BUTTONS");
NAMCO_56XX(config, m_namco56xx_1, 0);
m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dipA_h));
m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dipB_l));
@ -723,29 +722,29 @@ MACHINE_CONFIG_START(namcos16_state::liblrabl)
m_namco56xx_2->in_callback<2>().set_ioport("P2_LEFT");
m_namco56xx_2->in_callback<3>().set_ioport("SERVICE");
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK,384,0,288,264,0,224) // derived from Galaxian HW, 60.606060
MCFG_SCREEN_UPDATE_DRIVER(namcos16_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, namcos16_state, slave_vblank_irq))
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(MASTER_CLOCK,384,0,288,264,0,224); // derived from Galaxian HW, 60.606060
screen.set_screen_update(FUNC(namcos16_state::screen_update));
screen.set_palette(m_palette);
screen.screen_vblank().set(FUNC(namcos16_state::slave_vblank_irq));
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_toypop)
MCFG_PALETTE_ADD("palette", 128*4+64*4+16*2)
MCFG_PALETTE_INDIRECT_ENTRIES(256)
MCFG_PALETTE_INIT_OWNER(namcos16_state, toypop)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_toypop);
PALETTE(config, m_palette, 128*4+64*4+16*2);
m_palette->set_indirect_entries(256);
m_palette->set_init(FUNC(namcos16_state::palette_init_toypop));
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("namco", NAMCO_15XX, 24000)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
NAMCO_15XX(config, m_namco15xx, 24000);
m_namco15xx->set_voices(8);
m_namco15xx->add_route(ALL_OUTPUTS, "mono", 1.0);
}
MACHINE_CONFIG_START(namcos16_state::toypop)
void namcos16_state::toypop(machine_config &config)
{
liblrabl(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(master_toypop_map)
MACHINE_CONFIG_END
m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_toypop_map);
}
ROM_START( liblrabl )

View File

@ -5,6 +5,7 @@
#pragma once
#include "cpu/m6800/m6801.h"
#include "sound/namco.h"
#include "emupal.h"
@ -62,7 +63,7 @@ protected:
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_textram;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_mcu;
required_device<hd63701_cpu_device> m_mcu;
required_device<namco_cus30_device> m_cus30;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;

View File

@ -82,6 +82,7 @@ protected:
optional_device<ym2151_device> m_ym2151;
optional_device_array<okim6295_device, 3> m_oki;
optional_device<generic_latch_8_device> m_soundlatch;
required_device<cpu_device> m_maincpu;
void allocate_spriteram(int chip);
void allocate_buffered_palette();
@ -96,8 +97,6 @@ protected:
std::unique_ptr<uint16_t[]> m_pf_rowscroll[4]; // common
private:
required_device<cpu_device> m_maincpu;
// we use the pointers below to store a 32-bit copy..
required_shared_ptr_array<uint32_t, 4> m_pf_rowscroll32;
optional_shared_ptr<uint32_t> m_paletteram;

View File

@ -7,6 +7,7 @@
#include "machine/k053252.h"
#include "machine/timer.h"
#include "emupal.h"
class hexion_state : public driver_device
{
@ -15,7 +16,8 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_k053252(*this, "k053252"),
m_gfxdecode(*this, "gfxdecode")
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
void hexion(machine_config &config);
@ -25,6 +27,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<k053252_device> m_k053252;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
uint8_t *m_vram[2];
uint8_t *m_unkram;

View File

@ -5,9 +5,10 @@
#pragma once
#include "cpu/m6800/m6801.h"
#include "machine/watchdog.h"
#include "sound/namco.h"
#include "sound/n63701x.h"
#include "sound/namco.h"
#include "emupal.h"
class namcos86_state : public driver_device
@ -17,6 +18,7 @@ public:
: driver_device(mconfig, type, tag)
, m_cpu1(*this, "cpu1")
, m_cpu2(*this, "cpu2")
, m_mcu(*this, "mcu")
, m_watchdog(*this, "watchdog")
, m_cus30(*this, "namco")
, m_gfxdecode(*this, "gfxdecode")
@ -90,6 +92,7 @@ private:
required_device<cpu_device> m_cpu1;
required_device<cpu_device> m_cpu2;
required_device<hd63701_cpu_device> m_mcu;
required_device<watchdog_timer_device> m_watchdog;
required_device<namco_cus30_device> m_cus30;
required_device<gfxdecode_device> m_gfxdecode;

View File

@ -9,6 +9,7 @@
#include "sound/namco.h"
#include "sound/samples.h"
#include "emupal.h"
#include "screen.h"
class rallyx_state : public driver_device
{
@ -29,7 +30,8 @@ public:
m_samples(*this, "samples"),
m_timeplt_audio(*this, "timeplt_audio"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
m_palette(*this, "palette"),
m_screen(*this, "screen")
{ }
/* memory pointers */
@ -59,6 +61,7 @@ public:
optional_device<timeplt_audio_device> m_timeplt_audio;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;
bool m_main_irq_mask;
DECLARE_WRITE8_MEMBER(rallyx_interrupt_vector_w);

View File

@ -5,6 +5,7 @@
#pragma once
#include "cpu/m6502/m65c02.h"
#include "sound/namco.h"
#include "video/c45.h"
#include "emupal.h"
@ -16,6 +17,7 @@ public:
tceptor_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu%u", 1U),
m_subcpu(*this, "sub"),
m_mcu(*this, "mcu"),
m_cus30(*this, "namco"),
@ -38,6 +40,7 @@ private:
uint8_t m_m68k_irq_enable;
uint8_t m_mcu_irq_enable;
required_device<cpu_device> m_maincpu;
required_device_array<m65c02_device, 2> m_audiocpu;
required_device<cpu_device> m_subcpu;
required_device<cpu_device> m_mcu;
required_device<namco_cus30_device> m_cus30;