mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
-devices/machine/msm6253: Removed MCFG macros and added devcb3 support, nw
-devices/machine/timer: Added device support to configure_scanline, nw -devices/sound/2612intf: Removed MCFG macros. -drivers/cegac2, segajw, segam1, segas18, segas24, segas32, segaufo, seta, shangha3: Removed MACHINE_CONFIG, mw
This commit is contained in:
parent
d582f7c4a0
commit
61a555c347
@ -25,13 +25,9 @@ DEFINE_DEVICE_TYPE(MSM6253, msm6253_device, "msm6253", "OKI MSM6253 A/D Converte
|
||||
|
||||
msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, MSM6253, tag, owner, clock)
|
||||
, m_analog_ports(*this, {finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG})
|
||||
, m_analog_input_cb{{*this}, {*this}, {*this}, {*this}}
|
||||
, m_shift_register(0)
|
||||
{
|
||||
m_analog_input_cb[0] = port_read_delegate(FUNC(msm6253_device::port_read<0>), this);
|
||||
m_analog_input_cb[1] = port_read_delegate(FUNC(msm6253_device::port_read<1>), this);
|
||||
m_analog_input_cb[2] = port_read_delegate(FUNC(msm6253_device::port_read<2>), this);
|
||||
m_analog_input_cb[3] = port_read_delegate(FUNC(msm6253_device::port_read<3>), this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -41,37 +37,12 @@ msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, d
|
||||
void msm6253_device::device_start()
|
||||
{
|
||||
for (int port = 0; port < 4; port++)
|
||||
{
|
||||
// resolve each callback
|
||||
m_analog_input_cb[port].bind_relative_to(*owner());
|
||||
|
||||
// ensure that any configured ports truly are analog
|
||||
if (m_analog_ports[port].found())
|
||||
{
|
||||
for (ioport_field &field : m_analog_ports[port]->fields())
|
||||
if (!field.is_analog() && field.type() != IPT_UNKNOWN && field.type() != IPT_UNUSED)
|
||||
throw emu_fatalerror("Port %s is not an analog port\n", m_analog_ports[port]->tag());
|
||||
}
|
||||
}
|
||||
m_analog_input_cb[port].resolve_safe(0);
|
||||
|
||||
// save our state
|
||||
save_item(NAME(m_shift_register));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// port_read - helper to read configured ports
|
||||
//-------------------------------------------------
|
||||
|
||||
template<int port>
|
||||
ioport_value msm6253_device::port_read()
|
||||
{
|
||||
if (m_analog_ports[port].found())
|
||||
return m_analog_ports[port]->read();
|
||||
|
||||
logerror("%s: Read from unassigned IN%d\n", machine().describe_context(), port);
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// address_w - write from address bus to select
|
||||
// one of four internal latches
|
||||
|
@ -23,38 +23,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
//**************************************************************************
|
||||
// CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_MSM6253_IN0_ANALOG_PORT(_input) \
|
||||
downcast<msm6253_device &>(*device).set_input_tag<0>(_input);
|
||||
#define MCFG_MSM6253_IN1_ANALOG_PORT(_input) \
|
||||
downcast<msm6253_device &>(*device).set_input_tag<1>(_input);
|
||||
#define MCFG_MSM6253_IN2_ANALOG_PORT(_input) \
|
||||
downcast<msm6253_device &>(*device).set_input_tag<2>(_input);
|
||||
#define MCFG_MSM6253_IN3_ANALOG_PORT(_input) \
|
||||
downcast<msm6253_device &>(*device).set_input_tag<3>(_input);
|
||||
|
||||
#define MCFG_MSM6253_IN0_ANALOG_READ(_class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, this);
|
||||
#define MCFG_MSM6253_IN1_ANALOG_READ(_class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, this);
|
||||
#define MCFG_MSM6253_IN2_ANALOG_READ(_class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, this);
|
||||
#define MCFG_MSM6253_IN3_ANALOG_READ(_class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, this);
|
||||
|
||||
#define MCFG_MSM6253_IN0_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<0>(&_class::_method, #_class "::" #_method, _tag);
|
||||
#define MCFG_MSM6253_IN1_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<1>(&_class::_method, #_class "::" #_method, _tag);
|
||||
#define MCFG_MSM6253_IN2_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<2>(&_class::_method, #_class "::" #_method, _tag);
|
||||
#define MCFG_MSM6253_IN3_ANALOG_DEVREAD(_tag, _class, _method) \
|
||||
downcast<msm6253_device &>(*device).set_input_cb<3>(&_class::_method, #_class "::" #_method, _tag);
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
@ -64,23 +32,11 @@
|
||||
class msm6253_device : public device_t
|
||||
{
|
||||
public:
|
||||
typedef device_delegate<ioport_value ()> port_read_delegate;
|
||||
|
||||
// construction/destruction
|
||||
msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
// configuration
|
||||
template <unsigned P> void set_input_tag(const char *tag) { m_analog_ports[P].set_tag(tag); }
|
||||
template <unsigned P, typename... T> void set_input_cb(T &&... args) { m_analog_input_cb[P] = port_read_delegate(std::forward<T>(args)...); }
|
||||
template <unsigned P> void set_input_cb(port_read_delegate callback) { m_analog_input_cb[P] = callback; }
|
||||
template <unsigned P, class FunctionClass> void set_input_cb(const char *devname, ioport_value (FunctionClass::*callback)(), const char *name)
|
||||
{
|
||||
set_input_cb<P>(port_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
template <unsigned P, class FunctionClass> void set_input_cb(ioport_value (FunctionClass::*callback)(), const char *name)
|
||||
{
|
||||
set_input_cb<P>(port_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
template <unsigned Port> auto input() { return m_analog_input_cb[Port].bind(); }
|
||||
|
||||
// write handlers
|
||||
WRITE8_MEMBER(address_w);
|
||||
@ -96,12 +52,8 @@ protected:
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
// helpers
|
||||
template<int port> ioport_value port_read();
|
||||
|
||||
// input configuration
|
||||
optional_ioport_array<4> m_analog_ports;
|
||||
port_read_delegate m_analog_input_cb[4];
|
||||
devcb_read8 m_analog_input_cb[4];
|
||||
|
||||
// private data
|
||||
u8 m_shift_register;
|
||||
|
@ -111,6 +111,11 @@ public:
|
||||
{
|
||||
configure_scanline(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), screen, first_vpos, increment);
|
||||
}
|
||||
template <class FunctionClass> void configure_scanline(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32),
|
||||
const char *name, const char *screen, int first_vpos, int increment)
|
||||
{
|
||||
configure_scanline(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), screen, first_vpos, increment);
|
||||
}
|
||||
|
||||
template <typename Object> void set_callback(Object &&cb) { m_callback = std::forward<Object>(cb); }
|
||||
template <class FunctionClass> void set_callback(void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name)
|
||||
|
@ -6,9 +6,6 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#define MCFG_YM2612_IRQ_HANDLER(cb) \
|
||||
downcast<ym2612_device &>(*device).set_irq_handler((DEVCB_##cb));
|
||||
|
||||
class ym2612_device : public device_t, public device_sound_interface
|
||||
{
|
||||
public:
|
||||
|
@ -54,11 +54,14 @@ public:
|
||||
sega315_5124_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
sega315_5124_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t cram_size, uint8_t palette_offset, uint8_t reg_num_mask, int max_sprite_zoom_hcount, int max_sprite_zoom_vcount, const uint8_t *line_timing);
|
||||
|
||||
void set_signal_type(bool is_pal) { m_is_pal = is_pal; }
|
||||
void set_is_pal(bool is_pal) { m_is_pal = is_pal; }
|
||||
|
||||
template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_csync_callback(Object &&cb) { return m_csync_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_pause_callback(Object &&cb) { return m_pause_cb.set_callback(std::forward<Object>(cb)); }
|
||||
auto irq() { return m_int_cb.bind(); }
|
||||
auto csync() { return m_csync_cb.bind(); }
|
||||
auto pause() { return m_pause_cb.bind(); }
|
||||
|
||||
DECLARE_READ8_MEMBER( data_read );
|
||||
DECLARE_WRITE8_MEMBER( data_write );
|
||||
@ -256,7 +259,7 @@ protected:
|
||||
#define MCFG_SEGA315_5124_SET_SCREEN MCFG_VIDEO_SET_SCREEN
|
||||
|
||||
#define MCFG_SEGA315_5124_IS_PAL(_bool) \
|
||||
downcast<sega315_5124_device &>(*device).set_signal_type(_bool);
|
||||
downcast<sega315_5124_device &>(*device).set_is_pal(_bool);
|
||||
|
||||
#define MCFG_SEGA315_5124_INT_CB(_devcb) \
|
||||
downcast<sega315_5124_device &>(*device).set_int_callback(DEVCB_##_devcb);
|
||||
@ -271,7 +274,7 @@ protected:
|
||||
#define MCFG_SEGA315_5246_SET_SCREEN MCFG_VIDEO_SET_SCREEN
|
||||
|
||||
#define MCFG_SEGA315_5246_IS_PAL(_bool) \
|
||||
downcast<sega315_5246_device &>(*device).set_signal_type(_bool);
|
||||
downcast<sega315_5246_device &>(*device).set_is_pal(_bool);
|
||||
|
||||
#define MCFG_SEGA315_5246_INT_CB(_devcb) \
|
||||
downcast<sega315_5246_device &>(*device).set_int_callback(DEVCB_##_devcb);
|
||||
@ -286,7 +289,7 @@ protected:
|
||||
#define MCFG_SEGA315_5377_SET_SCREEN MCFG_VIDEO_SET_SCREEN
|
||||
|
||||
#define MCFG_SEGA315_5377_IS_PAL(_bool) \
|
||||
downcast<sega315_5377_device &>(*device).set_signal_type(_bool);
|
||||
downcast<sega315_5377_device &>(*device).set_is_pal(_bool);
|
||||
|
||||
#define MCFG_SEGA315_5377_INT_CB(_devcb) \
|
||||
downcast<sega315_5377_device &>(*device).set_int_callback(DEVCB_##_devcb);
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
|
||||
#define MCFG_SEGA315_5313_IS_PAL(_bool) \
|
||||
downcast<sega315_5313_device &>(*device).set_signal_type(_bool);
|
||||
downcast<sega315_5313_device &>(*device).set_is_pal(_bool);
|
||||
|
||||
#define MCFG_SEGA315_5313_INT_CB(_devcb) \
|
||||
downcast<sega315_5313_device &>(*device).set_int_callback(DEVCB_##_devcb);
|
||||
@ -34,10 +34,10 @@
|
||||
downcast<sega315_5313_device &>(*device).set_alt_timing(_data);
|
||||
|
||||
#define MCFG_SEGA315_5313_PAL_WRITE_BASE(_data) \
|
||||
downcast<sega315_5313_device &>(*device).set_palwrite_base(_data);
|
||||
downcast<sega315_5313_device &>(*device).set_pal_write_base(_data);
|
||||
|
||||
#define MCFG_SEGA315_5313_PALETTE(_palette_tag) \
|
||||
downcast<sega315_5313_device &>(*device).set_palette_tag(_palette_tag);
|
||||
downcast<sega315_5313_device &>(*device).set_palette(_palette_tag);
|
||||
|
||||
|
||||
// Temporary solution while 32x VDP mixing and scanline interrupting is moved outside MD VDP
|
||||
@ -70,9 +70,13 @@ public:
|
||||
template <class Object> devcb_base &set_sndirqline_callback(Object &&cb) { return m_sndirqline_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_lv6irqline_callback(Object &&cb) { return m_lv6irqline_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_lv4irqline_callback(Object &&cb) { return m_lv4irqline_callback.set_callback(std::forward<Object>(cb)); }
|
||||
auto snd_irq() { return m_sndirqline_callback.bind(); }
|
||||
auto lv6_irq() { return m_lv6irqline_callback.bind(); }
|
||||
auto lv4_irq() { return m_lv4irqline_callback.bind(); }
|
||||
|
||||
void set_alt_timing(int use_alt_timing) { m_use_alt_timing = use_alt_timing; }
|
||||
void set_palwrite_base(int palwrite_base) { m_palwrite_base = palwrite_base; }
|
||||
template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
|
||||
void set_pal_write_base(int palwrite_base) { m_palwrite_base = palwrite_base; }
|
||||
template <typename T> void set_palette(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
|
||||
|
||||
template <typename Object> void set_md_32x_scanline(Object &&cb) { m_32x_scanline_func = std::forward<Object>(cb); }
|
||||
template <typename Object> void set_md_32x_interrupt(Object &&cb) { m_32x_interrupt_func = std::forward<Object>(cb); }
|
||||
|
@ -563,7 +563,7 @@ WRITE8_MEMBER(segac2_state::prot_w)
|
||||
m_sp_palbase = new_sp_palbase;
|
||||
m_bg_palbase = new_bg_palbase;
|
||||
recompute_palette_tables();
|
||||
if (LOG_PALETTE) logerror("Set palbank: %d/%d (scan=%d)\n", m_bg_palbase, m_sp_palbase, m_screen->vpos());
|
||||
if (LOG_PALETTE && m_screen) logerror("Set palbank: %d/%d (scan=%d)\n", m_bg_palbase, m_sp_palbase, m_screen->vpos());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1542,15 +1542,16 @@ WRITE_LINE_MEMBER(segac2_state::vdp_lv4irqline_callback_c2)
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(segac2_state::segac)
|
||||
|
||||
void segac2_state::segac(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, XL2_CLOCK/6)
|
||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(md_base_state,genesis_int_callback)
|
||||
M68000(config, m_maincpu, XL2_CLOCK/6);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segac2_state::main_map);
|
||||
m_maincpu->set_irq_acknowledge_callback(FUNC(md_base_state::genesis_int_callback));
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(segac2_state,segac2)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(segac2_state,segac2)
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); // borencha requires 0xff fill or there is no sound (it lacks some of the init code of the borench set)
|
||||
|
||||
sega_315_5296_device &io(SEGA_315_5296(config, "io", XL2_CLOCK/6)); // clock divider guessed
|
||||
@ -1564,36 +1565,36 @@ MACHINE_CONFIG_START(segac2_state::segac)
|
||||
io.out_ph_callback().set(FUNC(segac2_state::io_porth_w));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, XL2_CLOCK, "maincpu")
|
||||
MCFG_SEGA315_5313_IS_PAL(false)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(*this, segac2_state, vdp_sndirqline_callback_c2));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(*this, segac2_state, vdp_lv6irqline_callback_c2));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(*this, segac2_state, vdp_lv4irqline_callback_c2));
|
||||
MCFG_SEGA315_5313_ALT_TIMING(1);
|
||||
MCFG_VIDEO_SET_SCREEN("megadriv")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
|
||||
SEGA315_5313(config, m_vdp, XL2_CLOCK, m_maincpu);
|
||||
m_vdp->set_is_pal(false);
|
||||
m_vdp->snd_irq().set(FUNC(segac2_state::vdp_sndirqline_callback_c2));
|
||||
m_vdp->lv6_irq().set(FUNC(segac2_state::vdp_lv6irqline_callback_c2));
|
||||
m_vdp->lv4_irq().set(FUNC(segac2_state::vdp_lv4irqline_callback_c2));
|
||||
m_vdp->set_alt_timing(1);
|
||||
m_vdp->set_screen("megadriv");
|
||||
m_vdp->add_route(ALL_OUTPUTS, "mono", 0.5);
|
||||
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
|
||||
TIMER(config, "scantimer").configure_scanline("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1);
|
||||
|
||||
MCFG_SCREEN_ADD("megadriv", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(512, 262)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 32*8-1, 0, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segac2_state, screen_update_segac2_new)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, segac2_state, screen_vblank_megadriv))
|
||||
screen_device &screen(SCREEN(config, "megadriv", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(60);
|
||||
screen.set_size(512, 262);
|
||||
screen.set_visarea(0, 32*8-1, 0, 28*8-1);
|
||||
screen.set_screen_update(FUNC(segac2_state::screen_update_segac2_new));
|
||||
screen.screen_vblank().set(FUNC(segac2_state::screen_vblank_megadriv));
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 2048*3)
|
||||
PALETTE(config, m_palette, 2048*3);
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(segac2_state,segac2_new)
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, XL2_CLOCK/7)
|
||||
MCFG_YM2612_IRQ_HANDLER(WRITELINE(*this, segac2_state, segac2_irq2_interrupt))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
ym3438_device &ymsnd(YM3438(config, "ymsnd", XL2_CLOCK/7));
|
||||
ymsnd.irq_handler().set(FUNC(segac2_state::segac2_irq2_interrupt));
|
||||
ymsnd.add_route(0, "mono", 0.50);
|
||||
/* right channel not connected */
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
|
||||
void segac2_state::segac2(machine_config &config)
|
||||
|
@ -370,17 +370,18 @@ void segajw_state::ramdac_map(address_map &map)
|
||||
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segajw_state::segajw)
|
||||
void segajw_state::segajw(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu",M68000,8000000) // unknown clock
|
||||
MCFG_DEVICE_PROGRAM_MAP(segajw_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segajw_state, irq4_line_hold)
|
||||
M68000(config, m_maincpu, 8000000); // unknown clock
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segajw_state::segajw_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segajw_state::irq4_line_hold));
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // unknown clock
|
||||
MCFG_DEVICE_PROGRAM_MAP(segajw_audiocpu_map)
|
||||
MCFG_DEVICE_IO_MAP(segajw_audiocpu_io_map)
|
||||
Z80(config, m_audiocpu, 4000000); // unknown clock
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &segajw_state::segajw_audiocpu_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &segajw_state::segajw_audiocpu_io_map);
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(2000))
|
||||
config.m_minimum_quantum = attotime::from_hz(2000);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_NONE);
|
||||
|
||||
@ -399,19 +400,20 @@ MACHINE_CONFIG_START(segajw_state::segajw)
|
||||
io1c.out_pg_callback().set(FUNC(segajw_state::coinlockout_w));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
|
||||
MCFG_SCREEN_SIZE(720, 480)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 448-1)
|
||||
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_screen_update("hd63484", FUNC(hd63484_device::update_screen));
|
||||
screen.set_size(720, 480);
|
||||
screen.set_visarea(0, 720-1, 0, 448-1);
|
||||
screen.set_palette("palette");
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 16)
|
||||
PALETTE(config, "palette", 16);
|
||||
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette"));
|
||||
ramdac.set_addrmap(0, &segajw_state::ramdac_map);
|
||||
|
||||
MCFG_HD63484_ADD("hd63484", 8000000, segajw_hd63484_map) // unknown clock
|
||||
hd63484_device &hd63484(HD63484(config, "hd63484", 8000000));
|
||||
hd63484.set_addrmap(0, &segajw_state::segajw_hd63484_map); // unknown clock
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -421,10 +423,10 @@ MACHINE_CONFIG_START(segajw_state::segajw)
|
||||
|
||||
GENERIC_LATCH_8(config, "soundlatch2");
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, 8000000) // unknown clock
|
||||
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("maincpu", 5))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
ym3438_device &ymsnd(YM3438(config, "ymsnd", 8000000)); // unknown clock
|
||||
ymsnd.irq_handler().set_inputline("maincpu", 5);
|
||||
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -53,6 +53,8 @@ public:
|
||||
segam1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_m1comm(*this, "m1comm")
|
||||
, m_screen(*this, "screen")
|
||||
, m_palette(*this, "palette")
|
||||
, m_paletteram(*this, "paletteram")
|
||||
@ -73,6 +75,8 @@ private:
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<z80_device> m_audiocpu;
|
||||
required_device<z80_device> m_m1comm;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_shared_ptr<u16> m_paletteram;
|
||||
@ -348,18 +352,18 @@ INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(segam1_state::segam1)
|
||||
void segam1_state::segam1(machine_config &config)
|
||||
{
|
||||
M68000(config, m_maincpu, XTAL(20'000'000)/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segam1_state::segam1_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segam1_state::irq4_line_hold));
|
||||
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(segam1_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segam1_state, irq4_line_hold)
|
||||
Z80(config, m_audiocpu, 4000000); // unknown clock
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &segam1_state::segam1_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &segam1_state::segam1_sound_io_map);
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // unknown clock
|
||||
MCFG_DEVICE_PROGRAM_MAP(segam1_sound_map)
|
||||
MCFG_DEVICE_IO_MAP(segam1_sound_io_map)
|
||||
|
||||
MCFG_DEVICE_ADD("m1comm", Z80, 4000000) // unknown clock
|
||||
MCFG_DEVICE_PROGRAM_MAP(segam1_comms_map)
|
||||
Z80(config, m_m1comm, 4000000); // unknown clock
|
||||
m_m1comm->set_addrmap(AS_PROGRAM, &segam1_state::segam1_comms_map);
|
||||
|
||||
sega_315_5296_device &io1(SEGA_315_5296(config, "io1", 0)); // unknown clock
|
||||
io1.in_pa_callback().set_ioport("INA");
|
||||
@ -372,7 +376,7 @@ MACHINE_CONFIG_START(segam1_state::segam1)
|
||||
sega_315_5296_device &io2(SEGA_315_5296(config, "io2", 0)); // unknown clock
|
||||
io2.in_pg_callback().set_ioport("ING");
|
||||
|
||||
MCFG_DEVICE_ADD("uart", I8251, 4000000) // unknown clock
|
||||
I8251(config, "uart", 4000000); // unknown clock
|
||||
|
||||
mb8421_device &dpram(MB8421(config, "dpram"));
|
||||
dpram.intl_callback().set_inputline("m1comm", 0);
|
||||
@ -380,32 +384,31 @@ MACHINE_CONFIG_START(segam1_state::segam1)
|
||||
S24TILE(config, m_tile, 0, 0x3fff).set_palette(m_palette);
|
||||
S24MIXER(config, m_mixer, 0);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
||||
MCFG_SCREEN_RAW_PARAMS(16000000, 656, 0, 496, 424, 0, 384) // copied from segas24.cpp; may not be accurate
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segam1_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
|
||||
m_screen->set_raw(16000000, 656, 0, 496, 424, 0, 384); // copied from segas24.cpp; may not be accurate
|
||||
m_screen->set_screen_update(FUNC(segam1_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8192*2)
|
||||
PALETTE(config, m_palette, 8192*2);
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline("audiocpu", INPUT_LINE_NMI);
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, 8000000)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
|
||||
//MCFG_YM2612_IRQ_HANDLER(WRITELINE(*this, segam1_state, ym3438_irq_handler))
|
||||
MACHINE_CONFIG_END
|
||||
YM3438(config, m_ymsnd, 8000000);
|
||||
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 0.40);
|
||||
//m_ymsnd->irq_handler().set(FUNC(segam1_state::ym3438_irq_handler));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segam1_state::unkm1)
|
||||
void segam1_state::unkm1(machine_config &config)
|
||||
{
|
||||
segam1(config);
|
||||
MCFG_DEVICE_MODIFY("audiocpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(unkm1_sound_map)
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &segam1_state::unkm1_sound_map);
|
||||
|
||||
MCFG_DEVICE_MODIFY("m1comm")
|
||||
MCFG_DEVICE_DISABLE() // not dumped yet
|
||||
MACHINE_CONFIG_END
|
||||
m_m1comm->set_disable(); // not dumped yet
|
||||
}
|
||||
|
||||
|
||||
ROM_START( bingpty ) // 1994/05/01 string
|
||||
|
@ -1307,18 +1307,18 @@ WRITE_LINE_MEMBER(segas18_state::vdp_lv4irqline_callback_s18)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
MACHINE_CONFIG_START(segas18_state::system18)
|
||||
|
||||
void segas18_state::system18(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(system18_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas18_state, irq4_line_hold)
|
||||
M68000(config, m_maincpu, 10000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas18_state::system18_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segas18_state::irq4_line_hold));
|
||||
|
||||
MCFG_DEVICE_ADD("soundcpu", Z80, 8000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
||||
MCFG_DEVICE_IO_MAP(sound_portmap)
|
||||
Z80(config, m_soundcpu, 8000000);
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &segas18_state::sound_map);
|
||||
m_soundcpu->set_addrmap(AS_IO, &segas18_state::sound_portmap);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
SEGA_315_5195_MEM_MAPPER(config, m_mapper, 10000000, m_maincpu);
|
||||
m_mapper->set_mapper(FUNC(segas18_state::memory_mapper), this);
|
||||
@ -1336,28 +1336,28 @@ MACHINE_CONFIG_START(segas18_state::system18)
|
||||
m_io->out_cnt1_callback().set(m_segaic16vid, FUNC(segaic16_video_device::set_display_enable));
|
||||
m_io->out_cnt2_callback().set(FUNC(segas18_state::set_vdp_enable));
|
||||
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 15000000, "maincpu") // ??? Frequency is a complete guess
|
||||
MCFG_SEGA315_5313_IS_PAL(false)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(*this, segas18_state, vdp_sndirqline_callback_s18));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(*this, segas18_state, vdp_lv6irqline_callback_s18));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(*this, segas18_state, vdp_lv4irqline_callback_s18));
|
||||
MCFG_SEGA315_5313_ALT_TIMING(1);
|
||||
MCFG_SEGA315_5313_PAL_WRITE_BASE(0x2000);
|
||||
MCFG_SEGA315_5313_PALETTE("palette")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.0)
|
||||
SEGA315_5313(config, m_vdp, 15000000, m_maincpu); // ??? Frequency is a complete guess
|
||||
m_vdp->set_is_pal(false);
|
||||
m_vdp->snd_irq().set(FUNC(segas18_state::vdp_sndirqline_callback_s18));
|
||||
m_vdp->lv6_irq().set(FUNC(segas18_state::vdp_lv6irqline_callback_s18));
|
||||
m_vdp->lv4_irq().set(FUNC(segas18_state::vdp_lv4irqline_callback_s18));
|
||||
m_vdp->set_alt_timing(1);
|
||||
m_vdp->set_pal_write_base(0x2000);
|
||||
m_vdp->set_palette(m_palette);
|
||||
m_vdp->add_route(ALL_OUTPUTS, "mono", 0.0);
|
||||
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "screen", 0, 1)
|
||||
TIMER(config, "scantimer").configure_scanline("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "screen", 0, 1);
|
||||
|
||||
// video hardware
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(57.23) // verified on pcb
|
||||
MCFG_SCREEN_SIZE(342,262)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segas18_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(57.23); // verified on pcb
|
||||
m_screen->set_size(342,262);
|
||||
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
|
||||
m_screen->set_screen_update(FUNC(segas18_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_segas18)
|
||||
MCFG_PALETTE_ADD("palette", 2048*3+2048 + 64*3)
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_segas18);
|
||||
PALETTE(config, m_palette, 2048*3+2048 + 64*3);
|
||||
|
||||
SEGA_SYS16B_SPRITES(config, m_sprites, 0);
|
||||
SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode);
|
||||
@ -1365,28 +1365,28 @@ MACHINE_CONFIG_START(segas18_state::system18)
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
MCFG_DEVICE_ADD("ym1", YM3438, 8000000)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
|
||||
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("soundcpu", INPUT_LINE_IRQ0))
|
||||
ym3438_device &ym1(YM3438(config, "ym1", 8000000));
|
||||
ym1.add_route(ALL_OUTPUTS, "mono", 0.40);
|
||||
ym1.irq_handler().set_inputline("soundcpu", INPUT_LINE_IRQ0);
|
||||
|
||||
MCFG_DEVICE_ADD("ym2", YM3438, 8000000)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
|
||||
ym3438_device &ym2(YM3438(config, "ym2", 8000000));
|
||||
ym2.add_route(ALL_OUTPUTS, "mono", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("rfsnd", RF5C68, 10000000)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, pcm_map)
|
||||
MACHINE_CONFIG_END
|
||||
rf5c68_device &rfsnd(RF5C68(config, "rfsnd", 10000000));
|
||||
rfsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
rfsnd.set_addrmap(0, &segas18_state::pcm_map);
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(segas18_state::system18_fd1094)
|
||||
void segas18_state::system18_fd1094(machine_config &config)
|
||||
{
|
||||
system18(config);
|
||||
|
||||
// basic machine hardware
|
||||
MCFG_DEVICE_REPLACE("maincpu", FD1094, 10000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(system18_map)
|
||||
MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas18_state, irq4_line_hold)
|
||||
MACHINE_CONFIG_END
|
||||
FD1094(config.replace(), m_maincpu, 10000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas18_state::system18_map);
|
||||
m_maincpu->set_addrmap(AS_OPCODES, &segas18_state::decrypted_opcodes_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segas18_state::irq4_line_hold));
|
||||
}
|
||||
|
||||
void segas18_state::lghost_fd1094(machine_config &config)
|
||||
{
|
||||
@ -1436,33 +1436,33 @@ void segas18_state::wwally(machine_config &config)
|
||||
m_upd4701[2]->set_porty_tag("TRACKY3");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas18_state::system18_i8751)
|
||||
void segas18_state::system18_i8751(machine_config &config)
|
||||
{
|
||||
system18(config);
|
||||
|
||||
// basic machine hardware
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_VBLANK_INT_REMOVE()
|
||||
m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr);
|
||||
|
||||
m_mapper->mcu_int().set_inputline(m_mcu, INPUT_LINE_IRQ1);
|
||||
|
||||
MCFG_DEVICE_ADD("mcu", I8751, 8000000)
|
||||
MCFG_DEVICE_IO_MAP(mcu_io_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas18_state, irq0_line_hold)
|
||||
MACHINE_CONFIG_END
|
||||
I8751(config, m_mcu, 8000000);
|
||||
m_mcu->set_addrmap(AS_IO, &segas18_state::mcu_io_map);
|
||||
m_mcu->set_vblank_int("screen", FUNC(segas18_state::irq0_line_hold));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas18_state::system18_fd1094_i8751)
|
||||
void segas18_state::system18_fd1094_i8751(machine_config &config)
|
||||
{
|
||||
system18_fd1094(config);
|
||||
|
||||
// basic machine hardware
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_VBLANK_INT_REMOVE()
|
||||
m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr);
|
||||
|
||||
m_mapper->mcu_int().set_inputline(m_mcu, INPUT_LINE_IRQ1);
|
||||
|
||||
MCFG_DEVICE_ADD("mcu", I8751, 8000000)
|
||||
MCFG_DEVICE_IO_MAP(mcu_io_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas18_state, irq0_line_hold)
|
||||
MACHINE_CONFIG_END
|
||||
I8751(config, m_mcu, 8000000);
|
||||
m_mcu->set_addrmap(AS_IO, &segas18_state::mcu_io_map);
|
||||
m_mcu->set_vblank_int("screen", FUNC(segas18_state::irq0_line_hold));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1916,17 +1916,17 @@ INPUT_PORTS_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
MACHINE_CONFIG_START(segas24_state::system24)
|
||||
|
||||
void segas24_state::system24(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, MASTER_CLOCK/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas24_state::cpu1_map);
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", segas24_state, irq_vbl, "screen", 0, 1)
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(segas24_state::irq_vbl), "screen", 0, 1);
|
||||
|
||||
M68000(config, m_subcpu, MASTER_CLOCK/2);
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &segas24_state::cpu2_map);
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||
config.m_minimum_quantum = attotime::from_hz(6000);
|
||||
|
||||
sega_315_5296_device &io(SEGA_315_5296(config, "io", VIDEO_CLOCK/2));
|
||||
io.in_pa_callback().set_ioport("P1");
|
||||
@ -1940,22 +1940,22 @@ MACHINE_CONFIG_START(segas24_state::system24)
|
||||
io.out_cnt1_callback().set(FUNC(segas24_state::cnt1));
|
||||
io.out_cnt2_callback().set("ymsnd", FUNC(ym2151_device::reset_w));
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD("irq_timer", segas24_state, irq_timer_cb)
|
||||
MCFG_TIMER_DRIVER_ADD("irq_timer_clear", segas24_state, irq_timer_clear_cb)
|
||||
MCFG_TIMER_ADD_NONE("frc_timer")
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_frc", segas24_state, irq_frc_cb, attotime::from_hz(FRC_CLOCK_MODE1))
|
||||
TIMER(config, "irq_timer").configure_generic(FUNC(segas24_state::irq_timer_cb));
|
||||
TIMER(config, "irq_timer_clear").configure_generic(FUNC(segas24_state::irq_timer_clear_cb));
|
||||
TIMER(config, "frc_timer").configure_generic(timer_device::expired_delegate());
|
||||
TIMER(config, "irq_frc").configure_periodic(FUNC(segas24_state::irq_frc_cb), attotime::from_hz(FRC_CLOCK_MODE1));
|
||||
|
||||
S24TILE(config, m_vtile, 0, 0xfff).set_palette("palette");
|
||||
S24SPRITE(config, m_vsprite, 0);
|
||||
S24MIXER(config, m_vmixer, 0);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
||||
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segas24_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
|
||||
m_screen->set_raw(VIDEO_CLOCK/2, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/);
|
||||
m_screen->set_screen_update(FUNC(segas24_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 8192*2)
|
||||
PALETTE(config, m_palette, 8192*2);
|
||||
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
@ -1965,10 +1965,12 @@ MACHINE_CONFIG_START(segas24_state::system24)
|
||||
ymsnd.add_route(0, "lspeaker", 0.50);
|
||||
ymsnd.add_route(1, "rspeaker", 0.50);
|
||||
|
||||
MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5) // 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, "lspeaker", 0.5).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // 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);
|
||||
}
|
||||
|
||||
void segas24_state::system24_rom(machine_config &config)
|
||||
{
|
||||
@ -1999,7 +2001,8 @@ void segas24_state::system24_floppy_rom(machine_config &config)
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &segas24_state::rombd_cpu2_map);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas24_state::system24_floppy_hotrod)
|
||||
void segas24_state::system24_floppy_hotrod(machine_config &config)
|
||||
{
|
||||
system24_floppy(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas24_state::hotrod_cpu1_map);
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &segas24_state::hotrod_cpu2_map);
|
||||
@ -2012,14 +2015,14 @@ MACHINE_CONFIG_START(segas24_state::system24_floppy_hotrod)
|
||||
upd2.set_portx_tag("DIAL3");
|
||||
upd2.set_porty_tag("DIAL4");
|
||||
|
||||
MCFG_DEVICE_ADD("adc1", MSM6253, 0) // IC5 - 33k/33p R/C clock
|
||||
MCFG_MSM6253_IN0_ANALOG_PORT("PEDAL1")
|
||||
MCFG_MSM6253_IN1_ANALOG_PORT("PEDAL2")
|
||||
MCFG_MSM6253_IN2_ANALOG_PORT("PEDAL3")
|
||||
MCFG_MSM6253_IN3_ANALOG_PORT("PEDAL4")
|
||||
msm6253_device &adc1(MSM6253(config, "adc1", 0)); // IC5 - 33k/33p R/C clock
|
||||
adc1.input<0>().set_ioport("PEDAL1");
|
||||
adc1.input<1>().set_ioport("PEDAL2");
|
||||
adc1.input<2>().set_ioport("PEDAL3");
|
||||
adc1.input<3>().set_ioport("PEDAL4");
|
||||
|
||||
MCFG_DEVICE_ADD("adc2", MSM6253, 0) // IC2 - 33k/33p R/C clock
|
||||
MACHINE_CONFIG_END
|
||||
MSM6253(config, "adc2", 0); // IC2 - 33k/33p R/C clock
|
||||
}
|
||||
|
||||
void segas24_state::system24_floppy_fd1094(machine_config &config)
|
||||
{
|
||||
@ -2029,7 +2032,8 @@ void segas24_state::system24_floppy_fd1094(machine_config &config)
|
||||
m_subcpu->set_addrmap(AS_OPCODES, &segas24_state::decrypted_opcodes_map);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas24_state::system24_floppy_fd_upd)
|
||||
void segas24_state::system24_floppy_fd_upd(machine_config &config)
|
||||
{
|
||||
system24_floppy_fd1094(config);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas24_state::roughrac_cpu1_map);
|
||||
m_subcpu->set_addrmap(AS_PROGRAM, &segas24_state::roughrac_cpu2_map);
|
||||
@ -2037,7 +2041,7 @@ MACHINE_CONFIG_START(segas24_state::system24_floppy_fd_upd)
|
||||
upd4701_device &upd4701(UPD4701A(config, "upd4701")); // IC4 on 834-6510 I/O board
|
||||
upd4701.set_portx_tag("DIAL1");
|
||||
upd4701.set_porty_tag("DIAL2");
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
void segas24_state::dcclub(machine_config &config)
|
||||
{
|
||||
|
@ -2306,12 +2306,12 @@ GFXDECODE_END
|
||||
*************************************/
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(segas32_state::device_add_mconfig)
|
||||
|
||||
void segas32_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", V60, MASTER_CLOCK/2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas32_state, start_of_vblank_int)
|
||||
V60(config, m_maincpu, MASTER_CLOCK/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_state::system32_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segas32_state::start_of_vblank_int));
|
||||
|
||||
Z80(config, m_soundcpu, MASTER_CLOCK/4);
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &segas32_state::system32_sound_map);
|
||||
@ -2334,39 +2334,39 @@ MACHINE_CONFIG_START(segas32_state::device_add_mconfig)
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom");
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback)
|
||||
MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback)
|
||||
TIMER(config, "v60_irq0").configure_generic(FUNC(segas32_state::signal_v60_irq_callback));
|
||||
TIMER(config, "v60_irq1").configure_generic(FUNC(segas32_state::signal_v60_irq_callback));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_segas32)
|
||||
MCFG_PALETTE_ADD("palette", 0x4000)
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_segas32);
|
||||
PALETTE(config, m_palette, 0x4000);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(52*8, 262)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_system32)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->set_size(52*8, 262);
|
||||
m_screen->set_visarea(0*8, 52*8-1, 0*8, 28*8-1);
|
||||
m_screen->set_screen_update(FUNC(segas32_state::screen_update_system32));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
|
||||
MCFG_DEVICE_ADD("ym1", YM3438, MASTER_CLOCK/4)
|
||||
MCFG_YM2612_IRQ_HANDLER(WRITELINE(*this, segas32_state, ym3438_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
|
||||
ym3438_device &ym1(YM3438(config, "ym1", MASTER_CLOCK/4));
|
||||
ym1.irq_handler().set(FUNC(segas32_state::ym3438_irq_handler));
|
||||
ym1.add_route(0, "lspeaker", 0.40);
|
||||
ym1.add_route(1, "rspeaker", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("ym2", YM3438, MASTER_CLOCK/4)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
|
||||
ym3438_device &ym2(YM3438(config, "ym2", MASTER_CLOCK/4));
|
||||
ym2.add_route(0, "lspeaker", 0.40);
|
||||
ym2.add_route(1, "rspeaker", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("rfsnd", RF5C68, RFC_CLOCK/4)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, rf5c68_map)
|
||||
rf5c68_device &rfsnd(RF5C68(config, "rfsnd", RFC_CLOCK/4));
|
||||
rfsnd.add_route(0, "lspeaker", 0.55);
|
||||
rfsnd.add_route(1, "rspeaker", 0.55);
|
||||
rfsnd.set_addrmap(0, &segas32_state::rf5c68_map);
|
||||
|
||||
S32COMM(config, m_s32comm, 0);
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_REGULAR_DEVICE, segas32_regular_state, "segas32_pcb_regular", "Sega System 32 regular PCB")
|
||||
|
||||
@ -2386,18 +2386,18 @@ void segas32_state::system32_analog_map(address_map &map)
|
||||
map(0xc00050, 0xc00057).mirror(0x0fff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas32_analog_state::device_add_mconfig)
|
||||
void segas32_analog_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_analog_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_analog_state::system32_analog_map);
|
||||
|
||||
MCFG_DEVICE_ADD("adc", MSM6253, 0)
|
||||
MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1")
|
||||
MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2")
|
||||
MCFG_MSM6253_IN2_ANALOG_PORT("ANALOG3")
|
||||
MCFG_MSM6253_IN3_ANALOG_PORT("ANALOG4")
|
||||
MACHINE_CONFIG_END
|
||||
msm6253_device &adc(MSM6253(config, "adc", 0));
|
||||
adc.input<0>().set_ioport("ANALOG1");
|
||||
adc.input<1>().set_ioport("ANALOG2");
|
||||
adc.input<2>().set_ioport("ANALOG3");
|
||||
adc.input<3>().set_ioport("ANALOG4");
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_ANALOG_DEVICE, segas32_analog_state, "segas32_pcb_analog", "Sega System 32 analog PCB")
|
||||
|
||||
@ -2425,11 +2425,11 @@ void segas32_trackball_state::system32_trackball_map(address_map &map)
|
||||
map(0xc00050, 0xc00057).mirror(0x0fff80).rw("upd3", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy_w)).umask16(0x00ff);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas32_trackball_state::device_add_mconfig)
|
||||
void segas32_trackball_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_trackball_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_trackball_state::system32_trackball_map);
|
||||
|
||||
upd4701_device &upd1(UPD4701A(config, "upd1"));
|
||||
upd1.set_portx_tag("TRACKX1");
|
||||
@ -2444,7 +2444,7 @@ MACHINE_CONFIG_START(segas32_trackball_state::device_add_mconfig)
|
||||
upd3.set_porty_tag("TRACKY3");
|
||||
|
||||
// 837-8685 I/O board has an unpopulated space for a fourth UPD4701A
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_TRACKBALL_DEVICE, segas32_trackball_state, "segas32_pcb_trackball", "Sega System 32 trackball PCB")
|
||||
|
||||
@ -2464,17 +2464,17 @@ void segas32_state::system32_4player_map(address_map &map)
|
||||
map(0xc00060, 0xc00067).mirror(0x0fff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas32_4player_state::device_add_mconfig)
|
||||
void segas32_4player_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_4player_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_4player_state::system32_4player_map);
|
||||
|
||||
i8255_device &ppi(I8255A(config, "ppi"));
|
||||
ppi.in_pa_callback().set_ioport("EXTRA1");
|
||||
ppi.in_pb_callback().set_ioport("EXTRA2");
|
||||
ppi.in_pc_callback().set_ioport("EXTRA3");
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_4PLAYER_DEVICE, segas32_4player_state, "segas32_pcb_4player", "Sega System 32 4-player/fighting PCB")
|
||||
|
||||
@ -2499,18 +2499,18 @@ void segas32_state::ga2_main_map(address_map &map)
|
||||
map(0xa00000, 0xa00fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas32_v25_state::device_add_mconfig)
|
||||
void segas32_v25_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_4player_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(ga2_main_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_v25_state::ga2_main_map);
|
||||
|
||||
MCFG_DEVICE_ADD("dpram", MB8421, 0)
|
||||
MB8421(config, "dpram", 0);
|
||||
|
||||
/* add a V25 for protection */
|
||||
MCFG_DEVICE_ADD("mcu", V25, 10000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(v25_map)
|
||||
MACHINE_CONFIG_END
|
||||
v25_device &mcu(V25(config, "mcu", 10000000));
|
||||
mcu.set_addrmap(AS_PROGRAM, &segas32_v25_state::v25_map);
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_V25_DEVICE, segas32_v25_state, "segas32_pcb_v25", "Sega System 32 V25 PCB")
|
||||
|
||||
@ -2523,19 +2523,20 @@ segas32_v25_state::segas32_v25_state(const machine_config &mconfig, const char *
|
||||
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(segas32_upd7725_state::device_add_mconfig)
|
||||
void segas32_upd7725_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_analog_state::device_add_mconfig(config);
|
||||
|
||||
/* add a upd7725; this is on the 837-8341 daughterboard which plugs into the socket on the master pcb's ROM board where an fd1149 could go */
|
||||
MCFG_DEVICE_ADD("dsp", UPD7725, 8000000) // TODO: Find real clock speed for the upd7725; this is a canned oscillator on the 837-8341 pcb
|
||||
MCFG_DEVICE_PROGRAM_MAP(upd7725_prg_map)
|
||||
MCFG_DEVICE_DATA_MAP(upd7725_data_map)
|
||||
MCFG_DEVICE_DISABLE() // TODO: disable for now, needs DMA pins and interrupts implemented in upd7725 core
|
||||
upd7725_device &dsp(UPD7725(config, "dsp", 8000000)); // TODO: Find real clock speed for the upd7725; this is a canned oscillator on the 837-8341 pcb
|
||||
dsp.set_addrmap(AS_PROGRAM, &segas32_upd7725_state::upd7725_prg_map);
|
||||
dsp.set_addrmap(AS_DATA, &segas32_upd7725_state::upd7725_data_map);
|
||||
dsp.set_disable(); // TODO: disable for now, needs DMA pins and interrupts implemented in upd7725 core
|
||||
// TODO: find /INT source for upd7725
|
||||
// TODO: figure out how the p0 and p1 lines from the upd7725 affect the mainboard; do they select one of four (or 8) latches to/from the mainboard?
|
||||
// TODO: trace out the 837-8341 pcb
|
||||
// See HLE of this dsp in /src/mame/machine/segas32.cpp : arescue_dsp_r and arescue_dsp_w
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_UPD7725_DEVICE, segas32_upd7725_state, "segas32_pcb_upd7725", "Sega System 32 uPD7725 PCB")
|
||||
|
||||
@ -2589,26 +2590,26 @@ void segas32_cd_state::cdrom_config(device_t *device)
|
||||
MCFG_SOUND_ROUTE( 1, "^^rspeaker", 0.30 )
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(segas32_cd_state::device_add_mconfig)
|
||||
void segas32_cd_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
segas32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(system32_cd_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &segas32_cd_state::system32_cd_map);
|
||||
|
||||
mb89352_device &scsictrl(MB89352A(config, "mb89352", 8000000));
|
||||
scsictrl.set_scsi_port("scsi");
|
||||
scsictrl.irq_cb().set(FUNC(segas32_cd_state::scsi_irq_w));
|
||||
scsictrl.drq_cb().set(FUNC(segas32_cd_state::scsi_drq_w));
|
||||
|
||||
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
|
||||
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_0)
|
||||
MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", cdrom_config)
|
||||
scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
|
||||
scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
|
||||
scsi.slot(1).set_option_machine_config("cdrom", cdrom_config);
|
||||
|
||||
cxd1095_device &cxdio(CXD1095(config, "cxdio", 0));
|
||||
cxdio.out_porta_cb().set(FUNC(segas32_cd_state::lamps1_w));
|
||||
cxdio.out_portb_cb().set(FUNC(segas32_cd_state::lamps2_w));
|
||||
cxdio.in_portd_cb().set_constant(0xff); // Ports C-E used for IEEE-488 printer interface
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_S32_CD_DEVICE, segas32_cd_state, "segas32_pcb_cd", "Sega System 32 CD PCB")
|
||||
|
||||
@ -2620,15 +2621,16 @@ segas32_cd_state::segas32_cd_state(const machine_config &mconfig, const char *ta
|
||||
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(sega_multi32_state::device_add_mconfig)
|
||||
void sega_multi32_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", V70, MULTI32_CLOCK/2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", segas32_state, start_of_vblank_int)
|
||||
V70(config, m_maincpu, MULTI32_CLOCK/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sega_multi32_state::multi32_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(segas32_state::start_of_vblank_int));
|
||||
|
||||
MCFG_DEVICE_ADD("soundcpu", Z80, MASTER_CLOCK/4)
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_sound_map)
|
||||
MCFG_DEVICE_IO_MAP(multi32_sound_portmap)
|
||||
Z80(config, m_soundcpu, MASTER_CLOCK/4);
|
||||
m_soundcpu->set_addrmap(AS_PROGRAM, &sega_multi32_state::multi32_sound_map);
|
||||
m_soundcpu->set_addrmap(AS_IO, &sega_multi32_state::multi32_sound_portmap);
|
||||
|
||||
sega_315_5296_device &io_chip_0(SEGA_315_5296(config, "io_chip_0", 0)); // unknown clock
|
||||
io_chip_0.in_pa_callback().set_ioport("P1_A");
|
||||
@ -2657,42 +2659,42 @@ MACHINE_CONFIG_START(sega_multi32_state::device_add_mconfig)
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom");
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback)
|
||||
MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback)
|
||||
TIMER(config, "v60_irq0").configure_generic(FUNC(segas32_state::signal_v60_irq_callback));
|
||||
TIMER(config, "v60_irq1").configure_generic(FUNC(segas32_state::signal_v60_irq_callback));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_segas32)
|
||||
MCFG_PALETTE_ADD("palette", 0x8000)
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_segas32);
|
||||
PALETTE(config, m_palette, 0x8000);
|
||||
config.set_default_layout(layout_dualhsxs);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(52*8, 262)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_multi32_left)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->set_size(52*8, 262);
|
||||
m_screen->set_visarea(0*8, 52*8-1, 0*8, 28*8-1);
|
||||
m_screen->set_screen_update(FUNC(segas32_state::screen_update_multi32_left));
|
||||
|
||||
MCFG_SCREEN_ADD("screen2", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(52*8, 262)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 52*8-1, 0*8, 28*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(segas32_state, screen_update_multi32_right)
|
||||
screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
|
||||
screen2.set_refresh_hz(60);
|
||||
screen2.set_size(52*8, 262);
|
||||
screen2.set_visarea(0*8, 52*8-1, 0*8, 28*8-1);
|
||||
screen2.set_screen_update(FUNC(segas32_state::screen_update_multi32_right));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, MASTER_CLOCK/4)
|
||||
MCFG_YM2612_IRQ_HANDLER(WRITELINE(*this, segas32_state, ym3438_irq_handler))
|
||||
MCFG_SOUND_ROUTE(1, "lspeaker", 0.40)
|
||||
MCFG_SOUND_ROUTE(0, "rspeaker", 0.40)
|
||||
ym3438_device &ymsnd(YM3438(config, "ymsnd", MASTER_CLOCK/4));
|
||||
ymsnd.irq_handler().set(FUNC(segas32_state::ym3438_irq_handler));
|
||||
ymsnd.add_route(1, "lspeaker", 0.40);
|
||||
ymsnd.add_route(0, "rspeaker", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("sega", MULTIPCM, MASTER_CLOCK/4)
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, multipcm_map)
|
||||
MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
|
||||
MULTIPCM(config, m_multipcm, MASTER_CLOCK/4);
|
||||
m_multipcm->set_addrmap(0, &sega_multi32_state::multipcm_map);
|
||||
m_multipcm->add_route(1, "lspeaker", 1.0);
|
||||
m_multipcm->add_route(0, "rspeaker", 1.0);
|
||||
|
||||
S32COMM(config, m_s32comm, 0);
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_MULTI32_DEVICE, sega_multi32_state, "segas32_pcb_multi", "Sega Multi 32")
|
||||
@ -2717,25 +2719,25 @@ void sega_multi32_analog_state::multi32_analog_map(address_map &map)
|
||||
map(0xc00060, 0xc00060).mirror(0x07ff80).w(FUNC(sega_multi32_analog_state::analog_bank_w));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(sega_multi32_analog_state::device_add_mconfig)
|
||||
void sega_multi32_analog_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
sega_multi32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_analog_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sega_multi32_analog_state::multi32_analog_map);
|
||||
|
||||
MCFG_DEVICE_ADD("adc", MSM6253, 0)
|
||||
MCFG_MSM6253_IN0_ANALOG_PORT("ANALOG1")
|
||||
MCFG_MSM6253_IN1_ANALOG_PORT("ANALOG2")
|
||||
MCFG_MSM6253_IN2_ANALOG_READ(sega_multi32_analog_state, in2_analog_read)
|
||||
MCFG_MSM6253_IN3_ANALOG_READ(sega_multi32_analog_state, in3_analog_read)
|
||||
MACHINE_CONFIG_END
|
||||
msm6253_device &adc(MSM6253(config, "adc", 0));
|
||||
adc.input<0>().set_ioport("ANALOG1");
|
||||
adc.input<1>().set_ioport("ANALOG2");
|
||||
adc.input<2>().set(FUNC(sega_multi32_analog_state::in2_analog_read));
|
||||
adc.input<3>().set(FUNC(sega_multi32_analog_state::in3_analog_read));
|
||||
}
|
||||
|
||||
ioport_value sega_multi32_analog_state::in2_analog_read()
|
||||
READ8_MEMBER(sega_multi32_analog_state::in2_analog_read)
|
||||
{
|
||||
return m_analog_ports[m_analog_bank * 4 + 2].read_safe(0);
|
||||
}
|
||||
|
||||
ioport_value sega_multi32_analog_state::in3_analog_read()
|
||||
READ8_MEMBER(sega_multi32_analog_state::in3_analog_read)
|
||||
{
|
||||
return m_analog_ports[m_analog_bank * 4 + 3].read_safe(0);
|
||||
}
|
||||
@ -2762,17 +2764,17 @@ void segas32_state::multi32_6player_map(address_map &map)
|
||||
map(0xc00060, 0xc00067).mirror(0x07ff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(sega_multi32_6player_state::device_add_mconfig)
|
||||
void sega_multi32_6player_state::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
sega_multi32_state::device_add_mconfig(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(multi32_6player_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sega_multi32_6player_state::multi32_6player_map);
|
||||
|
||||
i8255_device &ppi(I8255A(config, "ppi"));
|
||||
ppi.in_pa_callback().set_ioport("EXTRA1");
|
||||
ppi.in_pb_callback().set_ioport("EXTRA2");
|
||||
ppi.in_pc_callback().set_ioport("EXTRA3");
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA_MULTI32_6PLAYER_DEVICE, sega_multi32_6player_state, "segas32_pcb_multi_6player", "Sega Multi 32 6-player PCB")
|
||||
|
||||
|
@ -777,15 +777,15 @@ void ufo_state::machine_start()
|
||||
save_item(NAME(m_stepper));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(ufo_state::newufo)
|
||||
|
||||
void ufo_state::newufo(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, XTAL(16'000'000)/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &ufo_state::ufo_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &ufo_state::ufo_portmap);
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("motor_timer", ufo_state, simulate_xyz, attotime::from_hz(MOTOR_SPEED))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("update_timer", ufo_state, update_info, attotime::from_hz(60))
|
||||
TIMER(config, "motor_timer").configure_periodic(FUNC(ufo_state::simulate_xyz), attotime::from_hz(MOTOR_SPEED));
|
||||
TIMER(config, "update_timer").configure_periodic(FUNC(ufo_state::update_info), attotime::from_hz(60));
|
||||
|
||||
SEGA_315_5296(config, m_io1, XTAL(16'000'000));
|
||||
// all ports set to input
|
||||
@ -819,11 +819,11 @@ MACHINE_CONFIG_START(ufo_state::newufo)
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
MCFG_DEVICE_ADD("ym", YM3438, XTAL(16'000'000)/2)
|
||||
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("maincpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.40)
|
||||
MACHINE_CONFIG_END
|
||||
ym3438_device &ym(YM3438(config, "ym", XTAL(16'000'000)/2));
|
||||
ym.irq_handler().set_inputline("maincpu", 0);
|
||||
ym.add_route(0, "mono", 0.40);
|
||||
ym.add_route(1, "mono", 0.40);
|
||||
}
|
||||
|
||||
void ufo_state::ufomini(machine_config &config)
|
||||
{
|
||||
|
@ -1304,10 +1304,10 @@ void segaybd_state::yboard(machine_config &config)
|
||||
// FMCS and CKOT connect to CS and OSC IN on MSM6253 below
|
||||
|
||||
msm6253_device &adc(MSM6253(config, "adc", 0));
|
||||
adc.set_input_tag<0>("ADC.0");
|
||||
adc.set_input_tag<1>("ADC.1");
|
||||
adc.set_input_tag<2>("ADC.2");
|
||||
adc.set_input_cb<3>(FUNC(segaybd_state::analog_mux));
|
||||
adc.input<0>().set_ioport("ADC.0");
|
||||
adc.input<1>().set_ioport("ADC.1");
|
||||
adc.input<2>().set_ioport("ADC.2");
|
||||
adc.input<3>().set(FUNC(segaybd_state::analog_mux));
|
||||
|
||||
SEGA_315_5248_MULTIPLIER(config, "multiplier_main", 0);
|
||||
SEGA_315_5248_MULTIPLIER(config, "multiplier_subx", 0);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -445,29 +445,28 @@ static GFXDECODE_START( gfx_shangha3 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(shangha3_state::shangha3)
|
||||
|
||||
void shangha3_state::shangha3(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 48_MHz_XTAL/3) // TMP68HC000N-16
|
||||
MCFG_DEVICE_PROGRAM_MAP(shangha3_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shangha3_state, irq4_line_assert)
|
||||
M68000(config, m_maincpu, 48_MHz_XTAL/3); // TMP68HC000N-16
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &shangha3_state::shangha3_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(shangha3_state::irq4_line_assert));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
// MCFG_SCREEN_REFRESH_RATE(60)
|
||||
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
// MCFG_SCREEN_SIZE(24*16, 16*16)
|
||||
// MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(48_MHz_XTAL/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
// m_screen->set_refresh_hz(60);
|
||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
|
||||
// m_screen->set_size(24*16, 16*16);
|
||||
// m_screen->set_visarea(0*16, 24*16-1, 1*16, 15*16-1);
|
||||
m_screen->set_raw(48_MHz_XTAL/6, 512, 0, 24*16, 263, 1*16, 15*16); /* refresh rate is unknown */
|
||||
m_screen->set_screen_update(FUNC(shangha3_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_shangha3);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_shangha3)
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
|
||||
MCFG_PALETTE_ENABLE_SHADOWS()
|
||||
PALETTE(config, m_palette, 2048);
|
||||
m_palette->set_format(PALETTE_FORMAT_RRRRRGGGGGBBBBBx);
|
||||
m_palette->enable_shadows();
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -477,38 +476,36 @@ MACHINE_CONFIG_START(shangha3_state::shangha3)
|
||||
aysnd.port_b_read_callback().set_ioport("DSW2");
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.30);
|
||||
|
||||
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // pin 7 not verified
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(shangha3_state::heberpop)
|
||||
OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH); // pin 7 not verified
|
||||
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
void shangha3_state::heberpop(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 48_MHz_XTAL/3) // TMP68HC000N-16 like the others??
|
||||
MCFG_DEVICE_PROGRAM_MAP(heberpop_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shangha3_state, irq4_line_assert)
|
||||
M68000(config, m_maincpu, 48_MHz_XTAL/3); // TMP68HC000N-16 like the others??
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &shangha3_state::heberpop_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(shangha3_state::irq4_line_assert));
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, 48_MHz_XTAL/8) /* 6 MHz ??? */
|
||||
MCFG_DEVICE_PROGRAM_MAP(heberpop_sound_map)
|
||||
MCFG_DEVICE_IO_MAP(heberpop_sound_io_map) /* NMI triggered by YM3438 */
|
||||
Z80(config, m_audiocpu, 48_MHz_XTAL/8); /* 6 MHz ??? */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &shangha3_state::heberpop_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &shangha3_state::heberpop_sound_io_map); /* NMI triggered by YM3438 */
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
// MCFG_SCREEN_REFRESH_RATE(60)
|
||||
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
// MCFG_SCREEN_SIZE(24*16, 16*16)
|
||||
// MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(48_MHz_XTAL/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
// m_screen->set_refresh_hz(60);
|
||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
|
||||
// m_screen->set_size(24*16, 16*16);
|
||||
// m_screen->set_visarea(0*16, 24*16-1, 1*16, 15*16-1);
|
||||
m_screen->set_raw(48_MHz_XTAL/6, 512, 0, 24*16, 263, 1*16, 15*16); /* refresh rate is unknown */
|
||||
m_screen->set_screen_update(FUNC(shangha3_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_shangha3);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_shangha3)
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
|
||||
MCFG_PALETTE_ENABLE_SHADOWS()
|
||||
PALETTE(config, m_palette, 2048);
|
||||
m_palette->set_format(PALETTE_FORMAT_RRRRRGGGGGBBBBBx);
|
||||
m_palette->enable_shadows();
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -516,43 +513,41 @@ MACHINE_CONFIG_START(shangha3_state::heberpop)
|
||||
GENERIC_LATCH_8(config, m_soundlatch);
|
||||
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, 48_MHz_XTAL/6) /* 8 MHz? */
|
||||
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.40)
|
||||
ym3438_device &ymsnd(YM3438(config, "ymsnd", 48_MHz_XTAL/6)); /* 8 MHz? */
|
||||
ymsnd.irq_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
|
||||
ymsnd.add_route(0, "mono", 0.40);
|
||||
ymsnd.add_route(1, "mono", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // pin 7 not verified
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(shangha3_state::blocken)
|
||||
OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH); // pin 7 not verified
|
||||
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
void shangha3_state::blocken(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 48_MHz_XTAL/3) // TMP68HC000N-16
|
||||
MCFG_DEVICE_PROGRAM_MAP(blocken_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", shangha3_state, irq4_line_assert)
|
||||
M68000(config, m_maincpu, 48_MHz_XTAL/3); // TMP68HC000N-16
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &shangha3_state::blocken_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(shangha3_state::irq4_line_assert));
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, 48_MHz_XTAL/8) /* 6 MHz? */
|
||||
MCFG_DEVICE_PROGRAM_MAP(heberpop_sound_map)
|
||||
MCFG_DEVICE_IO_MAP(heberpop_sound_io_map) /* NMI triggered by YM3438 */
|
||||
Z80(config, m_audiocpu, 48_MHz_XTAL/8); /* 6 MHz? */
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &shangha3_state::heberpop_sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &shangha3_state::heberpop_sound_io_map); /* NMI triggered by YM3438 */
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
// MCFG_SCREEN_REFRESH_RATE(60)
|
||||
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
// MCFG_SCREEN_SIZE(24*16, 16*16)
|
||||
// MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1)
|
||||
MCFG_SCREEN_RAW_PARAMS(48_MHz_XTAL/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
// m_screen->set_refresh_hz(60);
|
||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
|
||||
// m_screen->set_size(24*16, 16*16);
|
||||
// m_screen->set_visarea(0*16, 24*16-1, 1*16, 15*16-1);
|
||||
m_screen->set_raw(48_MHz_XTAL/6, 512, 0, 24*16, 263, 1*16, 15*16); /* refresh rate is unknown */
|
||||
m_screen->set_screen_update(FUNC(shangha3_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_shangha3);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_shangha3)
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 2048)
|
||||
MCFG_PALETTE_FORMAT(RRRRRGGGGGBBBBBx)
|
||||
MCFG_PALETTE_ENABLE_SHADOWS()
|
||||
PALETTE(config, m_palette, 2048);
|
||||
m_palette->set_format(PALETTE_FORMAT_RRRRRGGGGGBBBBBx);
|
||||
m_palette->enable_shadows();
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -560,15 +555,15 @@ MACHINE_CONFIG_START(shangha3_state::blocken)
|
||||
GENERIC_LATCH_8(config, m_soundlatch);
|
||||
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
|
||||
|
||||
MCFG_DEVICE_ADD("ymsnd", YM3438, 48_MHz_XTAL/6) /* 8 MHz? */
|
||||
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.40)
|
||||
ym3438_device &ymsnd(YM3438(config, "ymsnd", 48_MHz_XTAL/6)); /* 8 MHz? */
|
||||
ymsnd.irq_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
|
||||
ymsnd.add_route(0, "mono", 0.40);
|
||||
ymsnd.add_route(1, "mono", 0.40);
|
||||
|
||||
MCFG_DEVICE_ADD("oki", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, blocken_oki_map)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
OKIM6295(config, m_oki, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
|
||||
m_oki->set_addrmap(0, &shangha3_state::blocken_oki_map);
|
||||
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -371,8 +371,8 @@ class sega_multi32_analog_state : public sega_multi32_state
|
||||
public:
|
||||
sega_multi32_analog_state(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
ioport_value in2_analog_read();
|
||||
ioport_value in3_analog_read();
|
||||
DECLARE_READ8_MEMBER(in2_analog_read);
|
||||
DECLARE_READ8_MEMBER(in3_analog_read);
|
||||
DECLARE_WRITE8_MEMBER(analog_bank_w);
|
||||
|
||||
void multi32_analog_map(address_map &map);
|
||||
|
@ -124,7 +124,7 @@ public:
|
||||
void init_eightfrc();
|
||||
void init_pairlove();
|
||||
|
||||
DECLARE_PALETTE_INIT(palette_init_RRRRRGGGGGBBBBB_proms);
|
||||
DECLARE_PALETTE_INIT(RRRRRGGGGGBBBBB_proms);
|
||||
|
||||
SETA001_SPRITE_GFXBANK_CB_MEMBER(setac_gfxbank_callback);
|
||||
|
||||
|
@ -148,10 +148,10 @@ void model1io_device::device_add_mconfig(machine_config &config)
|
||||
io.in_pg_callback().set(FUNC(model1io_device::io_pg_r));
|
||||
|
||||
msm6253_device &adc(MSM6253(config, "adc", 0));
|
||||
adc.set_input_cb<0>(FUNC(model1io_device::analog0_r), this);
|
||||
adc.set_input_cb<1>(FUNC(model1io_device::analog1_r), this);
|
||||
adc.set_input_cb<2>(FUNC(model1io_device::analog2_r), this);
|
||||
adc.set_input_cb<3>(FUNC(model1io_device::analog3_r), this);
|
||||
adc.input<0>().set(FUNC(model1io_device::analog0_r));
|
||||
adc.input<1>().set(FUNC(model1io_device::analog1_r));
|
||||
adc.input<2>().set(FUNC(model1io_device::analog2_r));
|
||||
adc.input<3>().set(FUNC(model1io_device::analog3_r));
|
||||
}
|
||||
|
||||
|
||||
|
@ -182,10 +182,10 @@ MACHINE_CONFIG_START( model1io2_device::device_add_mconfig )
|
||||
MB3773(config, m_watchdog, 0);
|
||||
|
||||
msm6253_device &adc(MSM6253(config, "adc", 32_MHz_XTAL / 16 / 4));
|
||||
adc.set_input_cb<0>(FUNC(model1io2_device::analog0_r), this);
|
||||
adc.set_input_cb<1>(FUNC(model1io2_device::analog1_r), this);
|
||||
adc.set_input_cb<2>(FUNC(model1io2_device::analog2_r), this);
|
||||
adc.set_input_cb<3>(FUNC(model1io2_device::analog3_r), this);
|
||||
adc.input<0>().set(FUNC(model1io2_device::analog0_r));
|
||||
adc.input<1>().set(FUNC(model1io2_device::analog1_r));
|
||||
adc.input<2>().set(FUNC(model1io2_device::analog2_r));
|
||||
adc.input<3>().set(FUNC(model1io2_device::analog3_r));
|
||||
|
||||
// diagnostic LCD display
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
|
@ -571,7 +571,7 @@ PALETTE_INIT_MEMBER(seta_state,zingzip)
|
||||
}
|
||||
|
||||
// color prom
|
||||
PALETTE_INIT_MEMBER(seta_state,palette_init_RRRRRGGGGGBBBBB_proms)
|
||||
PALETTE_INIT_MEMBER(seta_state,RRRRRGGGGGBBBBB_proms)
|
||||
{
|
||||
const uint8_t *color_prom = memregion("proms")->base();
|
||||
int x;
|
||||
@ -587,7 +587,7 @@ PALETTE_INIT_MEMBER(setaroul_state,setaroul)
|
||||
m_gfxdecode->gfx(0)->set_granularity(16);
|
||||
m_gfxdecode->gfx(1)->set_granularity(16);
|
||||
|
||||
PALETTE_INIT_NAME(palette_init_RRRRRGGGGGBBBBB_proms)(palette);
|
||||
palette_init_RRRRRGGGGGBBBBB_proms(palette);
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(usclssic_state,usclssic)
|
||||
|
Loading…
Reference in New Issue
Block a user