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) 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 V9938(config, m_tms, XTAL(21'477'272)); // typical 9938 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, a2bus_ezcgi_9938_device, tms_irq_w)) 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_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ 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_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) 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_END
MACHINE_CONFIG_START(a2bus_ezcgi_9958_device::device_add_mconfig) 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 V9958(config, m_tms, XTAL(21'477'272)); // typical 9938/9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, a2bus_ezcgi_9958_device, tms_irq_w)) 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_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ 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_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) 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_END

View File

@ -108,6 +108,7 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons
device_video_interface(mconfig, *this), device_video_interface(mconfig, *this),
m_space_config("vram", ENDIANNESS_BIG, 8, 18), m_space_config("vram", ENDIANNESS_BIG, 8, 18),
m_model(model), m_model(model),
m_pal_config(false),
m_offset_x(0), m_offset_x(0),
m_offset_y(0), m_offset_y(0),
m_visible_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) 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)); int scanline = (m_scanline - (m_scanline_start + m_offset_y));

View File

@ -14,45 +14,6 @@
#include "screen.h" #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 // GLOBAL VARIABLES
//************************************************************************** //**************************************************************************
@ -75,6 +36,18 @@ class v99x8_device : public device_t,
public device_video_interface public device_video_interface
{ {
public: 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)); } 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; } bitmap_rgb32 &get_bitmap() { return m_bitmap; }
void update_mouse_state(int mx_delta, int my_delta, int button_state); void update_mouse_state(int mx_delta, int my_delta, int button_state);
@ -84,8 +57,6 @@ public:
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE8_MEMBER( write );
auto int_cb() { return m_int_callback.bind(); }
uint8_t vram_r(); uint8_t vram_r();
uint8_t status_r(); uint8_t status_r();
void palette_w(uint8_t data); void palette_w(uint8_t data);
@ -122,7 +93,10 @@ protected:
const int m_model; const int m_model;
bool m_pal_config;
// device overrides // device overrides
virtual void device_config_complete() override;
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) 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: public:
big10_state(const machine_config &mconfig, device_type type, const char *tag) big10_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_v9938(*this, "v9938")
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_hopper(*this, "hopper") , m_hopper(*this, "hopper")
, m_in(*this, "IN%u", 1) , m_in(*this, "IN%u", 1)
@ -87,7 +86,6 @@ protected:
DECLARE_WRITE8_MEMBER(mux_w); DECLARE_WRITE8_MEMBER(mux_w);
private: private:
required_device<v9938_device> m_v9938;
uint8_t m_mux_data; uint8_t m_mux_data;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<ticket_dispenser_device> m_hopper; required_device<ticket_dispenser_device> m_hopper;
@ -139,7 +137,7 @@ void big10_state::main_io(address_map &map)
map.global_mask(0xff); map.global_mask(0xff);
map(0x00, 0x00).r(FUNC(big10_state::mux_r)); /* present in test mode */ map(0x00, 0x00).r(FUNC(big10_state::mux_r)); /* present in test mode */
map(0x02, 0x02).portr("SYSTEM"); /* coins and service */ 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(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); /* Dip-Switches routes here. */ 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); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK) v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK));
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) v9938.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK) v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();

View File

@ -50,7 +50,6 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_tmp68301(*this, "tmp68301"), m_tmp68301(*this, "tmp68301"),
m_v9958(*this, "v9958"),
m_nichisnd(*this, "nichisnd"), m_nichisnd(*this, "nichisnd"),
m_key(*this, "KEY.%u", 0), m_key(*this, "KEY.%u", 0),
m_region_maincpu(*this, "maincpu") m_region_maincpu(*this, "maincpu")
@ -58,7 +57,6 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<tmp68301_device> m_tmp68301; required_device<tmp68301_device> m_tmp68301;
required_device<v9958_device> m_v9958;
required_device<nichisnd_device> m_nichisnd; required_device<nichisnd_device> m_nichisnd;
required_ioport_array<5> m_key; required_ioport_array<5> m_key;
required_memory_region m_region_maincpu; 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(0x200200, 0x200201).rw(FUNC(csplayh5_state::csplayh5_mux_r), FUNC(csplayh5_state::csplayh5_mux_w));
map(0x200400, 0x200401).portr("SYSTEM"); 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 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); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL(21'477'272)) // typical 9958 clock, not verified v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272))); // typical 9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, csplayh5_state, csplayh5_vdp0_interrupt)) v9958.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL(21'477'272)) v9958.set_vram_size(0x20000);
v9958.int_cb().set(FUNC(csplayh5_state::csplayh5_vdp0_interrupt));
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */ /* sound hardware */
MCFG_NICHISND_ADD("nichisnd") MCFG_NICHISND_ADD("nichisnd")

View File

@ -212,7 +212,6 @@ public:
driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_soundlatch(*this, "soundlatch"), m_soundlatch(*this, "soundlatch"),
m_pl1(*this, "PL1"), m_pl1(*this, "PL1"),
m_pl2(*this, "PL2"), m_pl2(*this, "PL2"),
@ -257,7 +256,6 @@ private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938;
required_device<generic_latch_8_device> m_soundlatch; required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_pl1; required_ioport m_pl1;
required_ioport m_pl2; required_ioport m_pl2;
@ -537,7 +535,7 @@ void kas89_state::kas89_map(address_map &map)
void kas89_state::kas89_io(address_map &map) void kas89_state::kas89_io(address_map &map)
{ {
map.global_mask(0xff); 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(0x80, 0x80).w(FUNC(kas89_state::mux_w));
map(0x81, 0x81).r(FUNC(kas89_state::mux_r)); 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.*/ 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); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK) v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK));
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) v9938.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK) v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();

View File

@ -403,7 +403,6 @@ public:
driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_adpcm(*this, "adpcm"), m_adpcm(*this, "adpcm"),
m_soundirq(*this, "soundirq"), m_soundirq(*this, "soundirq"),
m_hopper(*this, "hopper"), m_hopper(*this, "hopper"),
@ -416,7 +415,6 @@ public:
private: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938;
required_device<msm5205_device> m_adpcm; required_device<msm5205_device> m_adpcm;
required_device<rst_neg_buffer_device> m_soundirq; required_device<rst_neg_buffer_device> m_soundirq;
required_device<ticket_dispenser_device> m_hopper; 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(0x00, 0x00).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_out_latch_w));
map(0x10, 0x10).mirror(0x0f).portr("DSW1"); map(0x10, 0x10).mirror(0x0f).portr("DSW1");
map(0x20, 0x20).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write)); 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(0x90, 0x90).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_bankswitch_w));
map(0xa0, 0xa0).mirror(0x0f).portr("IN0"); map(0xa0, 0xa0).mirror(0x0f).portr("IN0");
map(0xb0, 0xb0).mirror(0x0f).portr("IN1"); map(0xb0, 0xb0).mirror(0x0f).portr("IN1");
@ -550,7 +548,7 @@ void kurukuru_state::ppj_io(address_map &map)
{ {
map.global_mask(0xff); map.global_mask(0xff);
map(0x00, 0x00).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_bankswitch_w)); 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(0x30, 0x30).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x40, 0x40).mirror(0x0f).portr("DSW1"); map(0x40, 0x40).mirror(0x0f).portr("DSW1");
map(0x50, 0x50).mirror(0x0f).w(FUNC(kurukuru_state::kurukuru_out_latch_w)); 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); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK) v9938_device &v9938(V9938(config, "v9938", MAIN_CLOCK));
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) v9938.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK) 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 ) 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); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, VID_CLOCK) v9938_device &v9938(V9938(config, "v9938", VID_CLOCK));
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) v9938.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", VID_CLOCK) v9938.set_vram_size(VDP_MEM);
v9938.int_cb().set_inputline("maincpu", 0);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();

View File

@ -1133,14 +1133,17 @@ MACHINE_CONFIG_START(meritm_state::crt250)
MCFG_DS1204_ADD(m_ds1204) MCFG_DS1204_ADD(m_ds1204)
MCFG_V9938_ADD(m_v9938[0], "screen", 0x20000, SYSTEM_CLK) V9938(config, m_v9938[0], SYSTEM_CLK);
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp0_interrupt)) 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) V9938(config, m_v9938[1], SYSTEM_CLK);
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, meritm_state, vdp1_interrupt)) 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) SCREEN(config, "screen", SCREEN_TYPE_RASTER).set_screen_update(FUNC(meritm_state::screen_update));
MCFG_SCREEN_UPDATE_DRIVER(meritm_state, screen_update)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); 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)); ppi.out_pc_callback().set(FUNC(msx_state::msx_ppi_port_c_w));
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", 0x20000, 21.477272_MHz_XTAL) V9938(config, m_v9938, 21.477272_MHz_XTAL);
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, msx_state,msx_irq_source0)) m_v9938->set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", 21.477272_MHz_XTAL) 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 */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); 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)); ppi.out_pc_callback().set(FUNC(msx_state::msx_ppi_port_c_w));
/* video hardware */ /* video hardware */
MCFG_V9958_ADD("v9958", "screen", 0x20000, 21.477272_MHz_XTAL) V9958(config, m_v9958, 21.477272_MHz_XTAL);
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(*this, msx_state,msx_irq_source0)) m_v9958->set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", 21.477272_MHz_XTAL) 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 */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
@ -1526,11 +1530,11 @@ MACHINE_CONFIG_START(msx_state::msx2p)
MACHINE_CONFIG_END MACHINE_CONFIG_END
MACHINE_CONFIG_START(msx_state::msx2_pal) void msx_state::msx2_pal(machine_config &config)
{
msx2(config); msx2(config);
MCFG_DEVICE_REMOVE("screen") m_v9938->set_screen_pal("screen");
MCFG_V99X8_SCREEN_ADD_PAL("screen", "v9938", 21.477272_MHz_XTAL) }
MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************

View File

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

View File

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

View File

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

View File

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

View File

@ -233,9 +233,11 @@ MACHINE_CONFIG_START(tonton_state::tonton)
/* video hardware */ /* video hardware */
MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MAIN_CLOCK) v9938_device &v9938(V9938(config, "v9938", MAIN_CLOCK));
MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) v9938.set_screen_ntsc("screen");
MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK) 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 ) MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )