mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
(nw) tie up some loose ends - in particular, allow watchdog timer to
take any tag-like for the screen tag rather than only C strings
This commit is contained in:
parent
ce3deb056d
commit
127949063b
@ -29,7 +29,7 @@ watchdog_timer_device::watchdog_timer_device(const machine_config &mconfig, cons
|
||||
: device_t(mconfig, WATCHDOG_TIMER, tag, owner, clock)
|
||||
, m_vblank_count(0)
|
||||
, m_time(attotime::zero)
|
||||
, m_screen_tag(nullptr)
|
||||
, m_screen(*this, finder_base::DUMMY_TAG)
|
||||
{
|
||||
}
|
||||
|
||||
@ -43,9 +43,10 @@ void watchdog_timer_device::device_validity_check(validity_checker &valid) const
|
||||
{
|
||||
if (m_vblank_count != 0)
|
||||
{
|
||||
screen_device *screen = dynamic_cast<screen_device *>(siblingdevice(m_screen_tag));
|
||||
if (screen == nullptr)
|
||||
osd_printf_error("Invalid screen tag specified\n");
|
||||
if (m_screen.finder_tag() == finder_base::DUMMY_TAG)
|
||||
osd_printf_error("VBLANK count set without setting screen tag\n");
|
||||
else if (!m_screen)
|
||||
osd_printf_error("Screen device %s not found\n", m_screen.finder_tag());
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,9 +65,8 @@ void watchdog_timer_device::device_start()
|
||||
if (m_vblank_count != 0)
|
||||
{
|
||||
// fetch the screen
|
||||
screen_device *screen = siblingdevice<screen_device>(m_screen_tag);
|
||||
if (screen != nullptr)
|
||||
screen->register_vblank_callback(vblank_state_delegate(&watchdog_timer_device::watchdog_vblank, this));
|
||||
if (m_screen)
|
||||
m_screen->register_vblank_callback(vblank_state_delegate(&watchdog_timer_device::watchdog_vblank, this));
|
||||
}
|
||||
save_item(NAME(m_enabled));
|
||||
save_item(NAME(m_counter));
|
||||
|
@ -1,11 +1,12 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Aaron Giles
|
||||
|
||||
#ifndef MAME_MACHINE_WATCHDOG_H
|
||||
#define MAME_MACHINE_WATCHDOG_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <screen.h>
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
@ -20,7 +21,7 @@ public:
|
||||
watchdog_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// inline configuration helpers
|
||||
void set_vblank_count(const char *screen_tag, int32_t count) { m_screen_tag = screen_tag; m_vblank_count = count; }
|
||||
template <typename T> void set_vblank_count(T &&screen_tag, int32_t count) { m_screen.set_tag(std::forward<T>(screen_tag)); m_vblank_count = count; }
|
||||
void set_time(attotime time) { m_time = time; }
|
||||
|
||||
// watchdog control
|
||||
@ -49,13 +50,13 @@ private:
|
||||
void watchdog_vblank(screen_device &screen, bool vblank_state);
|
||||
|
||||
// configuration data
|
||||
int32_t m_vblank_count; // number of VBLANKs until resetting the machine
|
||||
int32_t m_vblank_count; // number of VBLANKs until resetting the machine
|
||||
attotime m_time; // length of time until resetting the machine
|
||||
const char * m_screen_tag; // the tag of the screen this timer tracks
|
||||
optional_device<screen_device> m_screen; // the tag of the screen this timer tracks
|
||||
|
||||
// internal state
|
||||
bool m_enabled; // is the watchdog enabled?
|
||||
int32_t m_counter; // counter for VBLANK tracking
|
||||
int32_t m_counter; // counter for VBLANK tracking
|
||||
emu_timer * m_timer; // timer for triggering reset
|
||||
};
|
||||
|
||||
|
@ -416,8 +416,8 @@ WRITE8_MEMBER(exidy_sh8253_sound_device::r6532_portb_w)
|
||||
{
|
||||
if (m_tms.found())
|
||||
{
|
||||
m_tms->rsq_w(data & 0x01);
|
||||
m_tms->wsq_w((data >> 1) & 0x01);
|
||||
m_tms->rsq_w(BIT(data, 0));
|
||||
m_tms->wsq_w(BIT(data, 1));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1365,10 +1365,10 @@ READ8_MEMBER( cmi_state::fdc_r )
|
||||
{
|
||||
switch (m_fdc_addr)
|
||||
{
|
||||
case 0xc: { return m_wd1791->status_r() ^ 0xff; }
|
||||
case 0xd: { return m_wd1791->track_r() ^ 0xff; }
|
||||
case 0xe: { return m_wd1791->sector_r() ^ 0xff; }
|
||||
case 0xf: { return m_wd1791->data_r() ^ 0xff; }
|
||||
case 0xc: return m_wd1791->status_r() ^ 0xff;
|
||||
case 0xd: return m_wd1791->track_r() ^ 0xff;
|
||||
case 0xe: return m_wd1791->sector_r() ^ 0xff;
|
||||
case 0xf: return m_wd1791->data_r() ^ 0xff;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ MACHINE_CONFIG_START(foodf_state::foodf)
|
||||
|
||||
X2212(config, "nvram").set_auto_save(true);
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD(m_scan_timer, foodf_state, scanline_update_timer)
|
||||
|
||||
|
@ -1650,7 +1650,7 @@ MACHINE_CONFIG_START(bosco_state::bosco)
|
||||
//m_videolatch->q_out_cb<7>().set("50xx_2", FUNC(namco_50xx_device::reset_w));
|
||||
//m_videolatch->q_out_cb<7>().append("52xx", FUNC(namco_52xx_device, reset_w));
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
|
||||
@ -1722,7 +1722,7 @@ MACHINE_CONFIG_START(galaga_state::galaga)
|
||||
// Q0-Q5 to 05XX for starfield control
|
||||
m_videolatch->q_out_cb<7>().set(FUNC(galaga_state::flip_screen_w));
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
|
||||
@ -1825,7 +1825,7 @@ MACHINE_CONFIG_START(xevious_state::xevious)
|
||||
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("50xx", namco_50xx_device, write))
|
||||
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
|
||||
|
@ -1776,10 +1776,10 @@ MACHINE_CONFIG_START(gottlieb_state::gottlieb_core)
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(SYSTEM_CLOCK/4, GOTTLIEB_VIDEO_HCOUNT, 0, GOTTLIEB_VIDEO_HBLANK, GOTTLIEB_VIDEO_VCOUNT, 0, GOTTLIEB_VIDEO_VBLANK)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(gottlieb_state, screen_update_gottlieb)
|
||||
|
||||
|
@ -755,7 +755,7 @@ MACHINE_CONFIG_START(grchamp_state::grchamp)
|
||||
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(grchamp_state, irq0_line_hold, (double)SOUND_CLOCK/4/16/16/10/16)
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||
|
||||
/* video hardware */
|
||||
@ -763,7 +763,7 @@ MACHINE_CONFIG_START(grchamp_state::grchamp)
|
||||
MCFG_PALETTE_ADD("palette", 32)
|
||||
MCFG_PALETTE_INIT_OWNER(grchamp_state, grchamp)
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(grchamp_state, screen_update)
|
||||
|
@ -194,7 +194,7 @@ void m79152pc_state::screen_draw_line(bitmap_ind16 &bitmap, unsigned y)
|
||||
for (u16 x = ma; x < ma + 80; x++)
|
||||
{
|
||||
// BIT(attr, 3) should probably be blinking
|
||||
// BIT(attr, 1) may be used for high-intensity text (
|
||||
// BIT(attr, 1) may be used for high-intensity text
|
||||
u8 chr = m_videoram[x];
|
||||
u8 attr = m_attributes[x];
|
||||
u8 gfx = m_chargen[(chr << 4) | (BIT(attr, 2) && ra == 15 ? 3 : ra)];
|
||||
|
@ -1092,7 +1092,7 @@ MACHINE_CONFIG_START(mcr3_state::mcrmono)
|
||||
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
||||
m_ctc->zc_callback<0>().set(m_ctc, FUNC(z80ctc_device::trg1));
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
@ -1101,7 +1101,7 @@ MACHINE_CONFIG_START(mcr3_state::mcrmono)
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_REFRESH_RATE(30)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
|
@ -1157,12 +1157,12 @@ MACHINE_CONFIG_START(missile_state::missile)
|
||||
MCFG_DEVICE_ADD("maincpu", M6502, MASTER_CLOCK/8)
|
||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_PALETTE_ADD("palette", 8)
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(missile_state, screen_update_missile)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
@ -897,7 +897,7 @@ MACHINE_CONFIG_START(polepos_state::polepos)
|
||||
MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("52xx", namco_52xx_device, write))
|
||||
MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16); // 128V clocks the same as VBLANK
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
||||
|
||||
@ -1006,7 +1006,7 @@ MACHINE_CONFIG_START(polepos_state::topracern)
|
||||
MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
|
||||
MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 16); // 128V clocks the same as VBLANK
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* some interleaving */
|
||||
|
||||
|
@ -347,7 +347,7 @@ MACHINE_CONFIG_START(rampart_state::rampart)
|
||||
|
||||
EEPROM_2816(config, "eeprom").lock_after_write(true);
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rampart)
|
||||
@ -358,7 +358,7 @@ MACHINE_CONFIG_START(rampart_state::rampart)
|
||||
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", rampart_state::s_mob_config)
|
||||
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
/* note: these parameters are from published specs, not derived */
|
||||
/* the board uses an SOS-2 chip to generate video signals */
|
||||
|
@ -573,12 +573,12 @@ MACHINE_CONFIG_START(sbrkout_state::sbrkout)
|
||||
// coin counter activity as stated in Atari bulletin B-0054 (which recommends tying it to the
|
||||
// CPU reset line instead).
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbrkout)
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 384, 0, 256, 262, 0, 224)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(sbrkout_state, screen_update_sbrkout)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
@ -497,10 +497,10 @@ MACHINE_CONFIG_START(sprint2_state::sprint2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(sprint2_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sprint2_state, sprint2)
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(12.096_MHz_XTAL, 768, 0, 512, 262, 0, 224)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(sprint2_state, screen_update_sprint2)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint2_state, screen_vblank_sprint2))
|
||||
|
@ -385,10 +385,10 @@ MACHINE_CONFIG_START(sprint4_state::sprint4)
|
||||
MCFG_DEVICE_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
|
||||
MCFG_DEVICE_PROGRAM_MAP(sprint4_cpu_map)
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sprint4_state, screen_vblank))
|
||||
|
@ -254,12 +254,11 @@ READ16_MEMBER(tecmosys_state::unk880000_r)
|
||||
|
||||
switch( offset )
|
||||
{
|
||||
case 0:
|
||||
if ( m_screen->vpos() >= 240) return 0;
|
||||
else return 1;
|
||||
case 0:
|
||||
return (m_screen->vpos() >= 240) ? 0 : 1;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -459,7 +458,7 @@ MACHINE_CONFIG_START(tecmosys_state::tecmosys)
|
||||
MCFG_DEVICE_PROGRAM_MAP(main_map)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tecmosys_state, irq1_line_hold)
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 400); // guess
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 400); // guess
|
||||
|
||||
MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000)/2 )
|
||||
MCFG_DEVICE_PROGRAM_MAP(sound_map)
|
||||
@ -469,7 +468,7 @@ MACHINE_CONFIG_START(tecmosys_state::tecmosys)
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom", eeprom_serial_streaming::ENABLE);
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
|
||||
MCFG_SCREEN_REFRESH_RATE(57.4458)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3000))
|
||||
|
@ -211,7 +211,7 @@ MACHINE_CONFIG_START(toobin_state::toobin)
|
||||
|
||||
EEPROM_2804(config, "eeprom").lock_after_write(true);
|
||||
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 4, toobin_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
|
||||
@ -219,7 +219,7 @@ MACHINE_CONFIG_START(toobin_state::toobin)
|
||||
MCFG_ATARI_MOTION_OBJECTS_ADD("mob", "screen", toobin_state::s_mob_config)
|
||||
MCFG_ATARI_MOTION_OBJECTS_GFXDECODE("gfxdecode")
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 640, 0, 512, 416, 0, 384)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(toobin_state, screen_update)
|
||||
|
@ -302,10 +302,10 @@ MACHINE_CONFIG_START(ultratnk_state::ultratnk)
|
||||
latch.q_out_cb<6>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_2>));
|
||||
latch.q_out_cb<7>().set("discrete", FUNC(discrete_device::write_line<ULTRATNK_FIRE_EN_1>));
|
||||
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);
|
||||
WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_ADD(m_screen, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update)
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ultratnk_state, screen_vblank))
|
||||
|
Loading…
Reference in New Issue
Block a user