v9938/v9958: Eliminate MCFG macros (nw)

This commit is contained in:
AJR 2018-09-08 10:56:21 -04:00
parent f23002376a
commit d5f990ea66
15 changed files with 131 additions and 120 deletions

View File

@ -49,27 +49,29 @@ void a2bus_ezcgi_device::device_add_mconfig(machine_config &config)
}
MACHINE_CONFIG_START(a2bus_ezcgi_9938_device::device_add_mconfig)
MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000, XTAL(21'477'272)) // 192K of VRAM / typical 9938 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, a2bus_ezcgi_9938_device, tms_irq_w))
V9938(config, m_tms, XTAL(21'477'272)); // typical 9938 clock, not verified
m_tms->set_vram_size(0x30000); // 192K of VRAM
m_tms->set_screen(SCREEN_TAG);
m_tms->int_cb().set(FUNC(a2bus_ezcgi_9938_device::tms_irq_w));
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_UPDATE_DEVICE(TMS_TAG, v9938_device, screen_update)
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(a2bus_ezcgi_9958_device::device_add_mconfig)
MCFG_V9958_ADD(TMS_TAG, SCREEN_TAG, 0x30000, XTAL(21'477'272)) // 192K of VRAM / typcial 9938/9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, a2bus_ezcgi_9958_device, tms_irq_w))
V9958(config, m_tms, XTAL(21'477'272)); // typical 9938/9958 clock, not verified
m_tms->set_vram_size(0x30000); // 192K of VRAM
m_tms->set_screen(SCREEN_TAG);
m_tms->int_cb().set(FUNC(a2bus_ezcgi_9958_device::tms_irq_w));
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_UPDATE_DEVICE(TMS_TAG, v9938_device, screen_update)
MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
MACHINE_CONFIG_END

View File

@ -108,6 +108,7 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons
device_video_interface(mconfig, *this),
m_space_config("vram", ENDIANNESS_BIG, 8, 18),
m_model(model),
m_pal_config(false),
m_offset_x(0),
m_offset_y(0),
m_visible_y(0),
@ -153,6 +154,25 @@ device_memory_interface::space_config_vector v99x8_device::memory_space_config()
}
void v99x8_device::device_config_complete()
{
if (!has_screen())
return;
if (!screen().refresh_attoseconds())
screen().set_raw(clock(),
HTOTAL,
0,
HVISIBLE - 1,
(m_pal_config ? VTOTAL_PAL : VTOTAL_NTSC) * 2,
VERTICAL_ADJUST * 2,
(m_pal_config ? VVISIBLE_PAL : VVISIBLE_NTSC) * 2 - 1 - VERTICAL_ADJUST * 2);
if (!screen().has_screen_update())
screen().set_screen_update(screen_update_rgb32_delegate(FUNC(v99x8_device::screen_update), this));
}
void v99x8_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
int scanline = (m_scanline - (m_scanline_start + m_offset_y));

View File

@ -14,45 +14,6 @@
#include "screen.h"
//**************************************************************************
// DEVICE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_V9938_ADD(_tag, _screen, _vramsize, _clock) \
MCFG_DEVICE_ADD(_tag, V9938, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen) \
downcast<v99x8_device &>(*device).set_vram_size(_vramsize);
#define MCFG_V9958_ADD(_tag, _screen, _vramsize, _clock) \
MCFG_DEVICE_ADD(_tag, V9958, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen) \
downcast<v99x8_device &>(*device).set_vram_size(_vramsize);
#define MCFG_V99X8_SCREEN_ADD_NTSC(_screen_tag, _v9938_tag, _clock) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_RAW_PARAMS(_clock, \
v99x8_device::HTOTAL, \
0, \
v99x8_device::HVISIBLE - 1, \
v99x8_device::VTOTAL_NTSC * 2, \
v99x8_device::VERTICAL_ADJUST * 2, \
v99x8_device::VVISIBLE_NTSC * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \
MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update)
#define MCFG_V99X8_SCREEN_ADD_PAL(_screen_tag, _v9938_tag, _clock) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_RAW_PARAMS(_clock, \
v99x8_device::HTOTAL, \
0, \
v99x8_device::HVISIBLE - 1, \
v99x8_device::VTOTAL_PAL * 2, \
v99x8_device::VERTICAL_ADJUST * 2, \
v99x8_device::VVISIBLE_PAL * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \
MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update)
#define MCFG_V99X8_INTERRUPT_CALLBACK(_irq) \
downcast<v99x8_device *>(device)->set_interrupt_callback(DEVCB_##_irq);
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
@ -75,6 +36,18 @@ class v99x8_device : public device_t,
public device_video_interface
{
public:
auto int_cb() { return m_int_callback.bind(); }
template <class T> void set_screen_ntsc(T &&screen)
{
set_screen(std::forward<T>(screen));
m_pal_config = false;
}
template <class T> void set_screen_pal(T &&screen)
{
set_screen(std::forward<T>(screen));
m_pal_config = true;
}
template <class Object> devcb_base &set_interrupt_callback(Object &&irq) { return m_int_callback.set_callback(std::forward<Object>(irq)); }
bitmap_rgb32 &get_bitmap() { return m_bitmap; }
void update_mouse_state(int mx_delta, int my_delta, int button_state);
@ -84,8 +57,6 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
auto int_cb() { return m_int_callback.bind(); }
uint8_t vram_r();
uint8_t status_r();
void palette_w(uint8_t data);
@ -122,7 +93,10 @@ protected:
const int m_model;
bool m_pal_config;
// device overrides
virtual void device_config_complete() override;
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;

View File

@ -69,7 +69,6 @@ class big10_state : public driver_device
public:
big10_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_v9938(*this, "v9938")
, m_maincpu(*this, "maincpu")
, m_hopper(*this, "hopper")
, m_in(*this, "IN%u", 1)
@ -87,7 +86,6 @@ protected:
DECLARE_WRITE8_MEMBER(mux_w);
private:
required_device<v9938_device> m_v9938;
uint8_t m_mux_data;
required_device<cpu_device> m_maincpu;
required_device<ticket_dispenser_device> m_hopper;
@ -139,7 +137,7 @@ void big10_state::main_io(address_map &map)
map.global_mask(0xff);
map(0x00, 0x00).r(FUNC(big10_state::mux_r)); /* present in test mode */
map(0x02, 0x02).portr("SYSTEM"); /* coins and service */
map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x98, 0x9b).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); /* Dip-Switches routes here. */
}
@ -240,9 +238,11 @@ MACHINE_CONFIG_START(big10_state::big10)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -50,7 +50,6 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_tmp68301(*this, "tmp68301"),
m_v9958(*this, "v9958"),
m_nichisnd(*this, "nichisnd"),
m_key(*this, "KEY.%u", 0),
m_region_maincpu(*this, "maincpu")
@ -58,7 +57,6 @@ public:
required_device<cpu_device> m_maincpu;
required_device<tmp68301_device> m_tmp68301;
required_device<v9958_device> m_v9958;
required_device<nichisnd_device> m_nichisnd;
required_ioport_array<5> m_key;
required_memory_region m_region_maincpu;
@ -139,7 +137,7 @@ void csplayh5_state::csplayh5_map(address_map &map)
map(0x200200, 0x200201).rw(FUNC(csplayh5_state::csplayh5_mux_r), FUNC(csplayh5_state::csplayh5_mux_w));
map(0x200400, 0x200401).portr("SYSTEM");
map(0x200600, 0x200607).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)).umask16(0x00ff);
map(0x200600, 0x200607).rw("v9958", FUNC(v9958_device::read), FUNC(v9958_device::write)).umask16(0x00ff);
map(0x800000, 0xbfffff).rom().region("blit_gfx", 0); // GFX ROM routes here
@ -385,9 +383,11 @@ MACHINE_CONFIG_START(csplayh5_state::csplayh5)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL(21'477'272)) // typical 9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, csplayh5_state, csplayh5_vdp0_interrupt))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL(21'477'272))
v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272))); // typical 9958 clock, not verified
v9958.set_screen_ntsc("screen");
v9958.set_vram_size(0x20000);
v9958.int_cb().set(FUNC(csplayh5_state::csplayh5_vdp0_interrupt));
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
MCFG_NICHISND_ADD("nichisnd")

View File

@ -212,7 +212,6 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_soundlatch(*this, "soundlatch"),
m_pl1(*this, "PL1"),
m_pl2(*this, "PL2"),
@ -257,7 +256,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938;
required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_pl1;
required_ioport m_pl2;
@ -537,7 +535,7 @@ void kas89_state::kas89_map(address_map &map)
void kas89_state::kas89_io(address_map &map)
{
map.global_mask(0xff);
map(0x40, 0x43).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x40, 0x43).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x80, 0x80).w(FUNC(kas89_state::mux_w));
map(0x81, 0x81).r(FUNC(kas89_state::mux_r));
map(0x82, 0x82).w(FUNC(kas89_state::control_w)); /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/
@ -785,9 +783,11 @@ MACHINE_CONFIG_START(kas89_state::kas89)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -403,7 +403,6 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_adpcm(*this, "adpcm"),
m_soundirq(*this, "soundirq"),
m_hopper(*this, "hopper"),
@ -416,7 +415,6 @@ public:
private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938;
required_device<msm5205_device> m_adpcm;
required_device<rst_neg_buffer_device> m_soundirq;
required_device<ticket_dispenser_device> m_hopper;
@ -531,7 +529,7 @@ void kurukuru_state::kurukuru_io(address_map &map)
map(0x00, 0x00).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_out_latch_w));
map(0x10, 0x10).mirror(0x0f).portr("DSW1");
map(0x20, 0x20).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x80, 0x83).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x80, 0x83).mirror(0x0c).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x90, 0x90).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_bankswitch_w));
map(0xa0, 0xa0).mirror(0x0f).portr("IN0");
map(0xb0, 0xb0).mirror(0x0f).portr("IN1");
@ -550,7 +548,7 @@ void kurukuru_state::ppj_io(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x00).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_bankswitch_w));
map(0x10, 0x13).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x10, 0x13).mirror(0x0c).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x30, 0x30).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x40, 0x40).mirror(0x0f).portr("DSW1");
map(0x50, 0x50).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_out_latch_w));
@ -857,9 +855,11 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
v9938_device &v9938(V9938(config, "v9938", MAIN_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )

View File

@ -588,9 +588,11 @@ MACHINE_CONFIG_START(luckybal_state::luckybal)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, VID_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", VID_CLOCK)
v9938_device &v9938(V9938(config, "v9938", VID_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "speaker").front_center();

View File

@ -1133,14 +1133,17 @@ MACHINE_CONFIG_START(meritm_state::crt250)
MCFG_DS1204_ADD(m_ds1204)
MCFG_V9938_ADD(m_v9938[0], "screen", 0x20000, SYSTEM_CLK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp0_interrupt))
V9938(config, m_v9938[0], SYSTEM_CLK);
m_v9938[0]->set_screen_ntsc("screen");
m_v9938[0]->set_vram_size(0x20000);
m_v9938[0]->int_cb().set(FUNC(meritm_state::vdp0_interrupt));
MCFG_V9938_ADD(m_v9938[1], "screen", 0x20000, SYSTEM_CLK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp1_interrupt))
V9938(config, m_v9938[1], SYSTEM_CLK);
m_v9938[1]->set_screen_ntsc("screen");
m_v9938[1]->set_vram_size(0x20000);
m_v9938[1]->int_cb().set(FUNC(meritm_state::vdp0_interrupt));
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938_0", SYSTEM_CLK)
MCFG_SCREEN_UPDATE_DRIVER(meritm_state, screen_update)
SCREEN(config, "screen", SCREEN_TYPE_RASTER).set_screen_update(FUNC(meritm_state::screen_update));
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -1425,9 +1425,11 @@ MACHINE_CONFIG_START(msx_state::msx2)
ppi.out_pc_callback().set(FUNC(msx_state::msx_ppi_port_c_w));
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", 0x20000, 21.477272_MHz_XTAL)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, msx_state,msx_irq_source0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", 21.477272_MHz_XTAL)
V9938(config, m_v9938, 21.477272_MHz_XTAL);
m_v9938->set_screen_ntsc("screen");
m_v9938->set_vram_size(0x20000);
m_v9938->int_cb().set(FUNC(msx_state::msx_irq_source0));
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@ -1482,9 +1484,11 @@ MACHINE_CONFIG_START(msx_state::msx2p)
ppi.out_pc_callback().set(FUNC(msx_state::msx_ppi_port_c_w));
/* video hardware */
MCFG_V9958_ADD("v9958", "screen", 0x20000, 21.477272_MHz_XTAL)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, msx_state,msx_irq_source0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", 21.477272_MHz_XTAL)
V9958(config, m_v9958, 21.477272_MHz_XTAL);
m_v9958->set_screen_ntsc("screen");
m_v9958->set_vram_size(0x20000);
m_v9958->int_cb().set(FUNC(msx_state::msx_irq_source0));
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
@ -1526,11 +1530,11 @@ MACHINE_CONFIG_START(msx_state::msx2p)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(msx_state::msx2_pal)
void msx_state::msx2_pal(machine_config &config)
{
msx2(config);
MCFG_DEVICE_REMOVE("screen")
MCFG_V99X8_SCREEN_ADD_PAL("screen", "v9938", 21.477272_MHz_XTAL)
MACHINE_CONFIG_END
m_v9938->set_screen_pal("screen");
}
/***************************************************************************

View File

@ -246,10 +246,12 @@ MACHINE_CONFIG_START(nichild_state::nichild)
m_maincpu->out_pe_callback().set(FUNC(nichild_state::gfxbank_w));
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", 0x40000, MAIN_CLOCK)
// MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
// MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, nichild_state, vdp_irq))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
V9938(config, m_v9938, MAIN_CLOCK);
m_v9938->set_screen_ntsc("screen");
m_v9938->set_vram_size(0x40000);
// m_v9938->int_cb().set_inputline("maincpu", 0);
// m_v9938->int_cb().set(FUNC(nichild_state::vdp_irq));
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -59,7 +59,6 @@ class sangho_state : public driver_device
public:
sangho_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_v9958(*this, "v9958")
, m_maincpu(*this, "maincpu")
, m_region_user1(*this, "user1")
, m_banks(*this, "bank%u", 1U)
@ -71,7 +70,6 @@ protected:
void sangho_map(address_map &map);
std::unique_ptr<uint8_t[]> m_ram;
required_device<v9958_device> m_v9958;
required_device<cpu_device> m_maincpu;
required_memory_region m_region_user1;
required_memory_bank_array<8> m_banks;
@ -315,7 +313,7 @@ void pzlestar_state::pzlestar_io_map(address_map &map)
map.global_mask(0xff);
map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write));
map(0x91, 0x91).w(FUNC(pzlestar_state::pzlestar_bank_w));
map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
map(0x98, 0x9b).rw("v9958", FUNC(v9958_device::read), FUNC(v9958_device::write));
map(0xa0, 0xa0).portr("P1");
map(0xa1, 0xa1).portr("P2");
map(0xa8, 0xa8).rw(FUNC(pzlestar_state::pzlestar_mem_bank_r), FUNC(pzlestar_state::pzlestar_mem_bank_w));
@ -330,7 +328,7 @@ void sexyboom_state::sexyboom_io_map(address_map &map)
map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write));
map(0xa0, 0xa0).portr("P1");
map(0xa1, 0xa1).portr("P2");
map(0xf0, 0xf3).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write));
map(0xf0, 0xf3).rw("v9958", FUNC(v9958_device::read), FUNC(v9958_device::write));
map(0xf7, 0xf7).portr("DSW");
map(0xf8, 0xff).w(FUNC(sexyboom_state::sexyboom_bank_w));
}
@ -484,9 +482,11 @@ MACHINE_CONFIG_START(pzlestar_state::pzlestar)
MCFG_DEVICE_PROGRAM_MAP(sangho_map)
MCFG_DEVICE_IO_MAP(pzlestar_io_map)
MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL(21'477'272)) // typical 9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL(21'477'272))
v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272))); // typical 9958 clock, not verified
v9958.set_screen_ntsc("screen");
v9958.set_vram_size(0x20000);
v9958.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("ymsnd", YM2413, XTAL(21'477'272)/6)
@ -500,9 +500,11 @@ MACHINE_CONFIG_START(sexyboom_state::sexyboom)
MCFG_DEVICE_PROGRAM_MAP(sangho_map)
MCFG_DEVICE_IO_MAP(sexyboom_io_map)
MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL(21'477'272))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL(21'477'272))
v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272)));
v9958.set_screen_ntsc("screen");
v9958.set_vram_size(0x20000);
v9958.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
MCFG_PALETTE_ADD("palette", 19780)

View File

@ -167,7 +167,6 @@ class sfkick_state : public driver_device
public:
sfkick_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_v9938(*this, "v9938"),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_region_bios(*this, "bios"),
@ -215,7 +214,6 @@ private:
int m_bank[8];
int m_input_mux;
required_device<v9938_device> m_v9938;
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_memory_region m_region_bios;
@ -486,7 +484,7 @@ void sfkick_state::sfkick_io_map(address_map &map)
map.unmap_value_high();
map.global_mask(0xff);
map(0xa0, 0xa7).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x98, 0x9b).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xb4, 0xb5).ram(); /* loopback ? req by sfkicka (MSX Bios leftover)*/
}
@ -605,9 +603,11 @@ MACHINE_CONFIG_START(sfkick_state::sfkick)
MCFG_DEVICE_PROGRAM_MAP(sfkick_sound_map)
MCFG_DEVICE_IO_MAP(sfkick_sound_io_map)
MCFG_V9938_ADD("v9938", "screen", 0x80000, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
v9938_device &v9938(V9938(config, "screen", MASTER_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(0x80000);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
i8255_device &ppi(I8255A(config, "ppi8255"));
ppi.out_pa_callback().set(FUNC(sfkick_state::ppi_port_a_w));

View File

@ -54,7 +54,6 @@ public:
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_subcpu(*this, "subcpu"),
m_v9938(*this, "v9938"),
m_msm(*this, "msm"),
m_mainbank(*this, "mainbank")
{ }
@ -96,7 +95,6 @@ private:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<cpu_device> m_subcpu;
required_device<v9938_device> m_v9938;
required_device<msm5205_device> m_msm;
required_memory_bank m_mainbank;
};
@ -189,7 +187,7 @@ void sothello_state::maincpu_io_map(address_map &map)
map(0x50, 0x50).w(FUNC(sothello_state::bank_w));
map(0x60, 0x61).mirror(0x02).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
/* not sure, but the A1 line is ignored, code @ $8b8 */
map(0x70, 0x73).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write));
map(0x70, 0x73).rw("v9938", FUNC(v9938_device::read), FUNC(v9938_device::write));
}
/* sound Z80 */
@ -373,9 +371,11 @@ MACHINE_CONFIG_START(sothello_state::sothello)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, XTAL(21'477'272))
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", XTAL(21'477'272))
v9938_device &v9938(V9938(config, "v9938", XTAL(21'477'272)));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */
SPEAKER(config, "mono").front_center();

View File

@ -233,9 +233,11 @@ MACHINE_CONFIG_START(tonton_state::tonton)
/* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0))
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK)
v9938_device &v9938(V9938(config, "v9938", MAIN_CLOCK));
v9938.set_screen_ntsc("screen");
v9938.set_vram_size(0x20000);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )