mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
v9938/v9958: Eliminate MCFG macros (nw)
This commit is contained in:
parent
f23002376a
commit
d5f990ea66
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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")
|
||||
|
@ -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();
|
||||
|
@ -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 )
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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();
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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();
|
||||
|
@ -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 )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user