summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-05 16:30:42 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-05 18:37:36 +0100
commit0cb7e425f1b631ba49aedc46f635f054b8c44847 (patch)
treee571d8c03f64e637b8a372338dd2a410e9074c3d
parent6d3fa422b1dcca4f240f4c9842596c5b279b5c4e (diff)
-midtunit.cpp: Various cleanups. Removed MCFG, converted to video device and removed static globals. [Ryan Holtz]
-midwunit.cpp,midxunit.cpp: Various cleanups. Removed MCFG, converted to logmacro. [Ryan Holtz]
-rw-r--r--src/mame/drivers/midtunit.cpp22
-rw-r--r--src/mame/drivers/midwunit.cpp66
-rw-r--r--src/mame/drivers/midxunit.cpp55
-rw-r--r--src/mame/includes/midtunit.h7
-rw-r--r--src/mame/includes/midwunit.h35
-rw-r--r--src/mame/includes/midxunit.h8
-rw-r--r--src/mame/machine/midwunit.cpp79
-rw-r--r--src/mame/machine/midxunit.cpp62
-rw-r--r--src/mame/video/midtunit.cpp9
-rw-r--r--src/mame/video/midtunit.h6
-rw-r--r--src/mame/video/midtunit.hxx48
11 files changed, 181 insertions, 216 deletions
diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp
index e6163ff490a..882c72a4794 100644
--- a/src/mame/drivers/midtunit.cpp
+++ b/src/mame/drivers/midtunit.cpp
@@ -593,30 +593,30 @@ INPUT_PORTS_END
void midtunit_state::tunit_core(machine_config &config)
{
- MIDTUNIT_VIDEO(config, "video", "maincpu", "palette", "gfxrom");
+ MIDTUNIT_VIDEO(config, m_video, m_maincpu, m_palette, m_gfxrom);
/* basic machine hardware */
- tms340x0_device &maincpu(TMS34010(config, "maincpu", CPU_CLOCK));
- maincpu.set_addrmap(AS_PROGRAM, &midtunit_state::main_map);
- maincpu.set_halt_on_reset(false); /* halt on reset */
- maincpu.set_pixel_clock(PIXEL_CLOCK); /* pixel clock */
- maincpu.set_pixels_per_clock(2); /* pixels per clock */
- maincpu.set_scanline_ind16_callback("video", FUNC(midtunit_video_device::scanline_update)); /* scanline updater (indexed16) */
- maincpu.set_shiftreg_in_callback("video", FUNC(midtunit_video_device::to_shiftreg)); /* write to shiftreg function */
- maincpu.set_shiftreg_out_callback("video", FUNC(midtunit_video_device::from_shiftreg)); /* read from shiftreg function */
+ TMS34010(config, m_maincpu, CPU_CLOCK);
+ m_maincpu->set_addrmap(AS_PROGRAM, &midtunit_state::main_map);
+ m_maincpu->set_halt_on_reset(false); /* halt on reset */
+ m_maincpu->set_pixel_clock(PIXEL_CLOCK); /* pixel clock */
+ m_maincpu->set_pixels_per_clock(2); /* pixels per clock */
+ m_maincpu->set_scanline_ind16_callback("video", FUNC(midtunit_video_device::scanline_update)); /* scanline updater (indexed16) */
+ m_maincpu->set_shiftreg_in_callback("video", FUNC(midtunit_video_device::to_shiftreg)); /* write to shiftreg function */
+ m_maincpu->set_shiftreg_out_callback("video", FUNC(midtunit_video_device::from_shiftreg)); /* read from shiftreg function */
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- PALETTE(config, "palette", 32768).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
+ PALETTE(config, m_palette, 32768).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
// from TMS340 registers
screen.set_raw(PIXEL_CLOCK * 2, 506, 100, 500, 289, 20, 274);
screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
- screen.set_palette("palette");
+ screen.set_palette(m_palette);
}
diff --git a/src/mame/drivers/midwunit.cpp b/src/mame/drivers/midwunit.cpp
index 951589f4971..b98b260bc34 100644
--- a/src/mame/drivers/midwunit.cpp
+++ b/src/mame/drivers/midwunit.cpp
@@ -115,7 +115,7 @@ Notes:
void midwunit_state::main_map(address_map &map)
{
- map(0x00000000, 0x003fffff).rw(FUNC(midwunit_state::midtunit_vram_r), FUNC(midwunit_state::midtunit_vram_w));
+ map(0x00000000, 0x003fffff).rw(m_video, FUNC(midwunit_video_device::midtunit_vram_r), FUNC(midwunit_video_device::midtunit_vram_w));
map(0x01000000, 0x013fffff).ram().share("mainram");
map(0x01400000, 0x0145ffff).rw(FUNC(midwunit_state::midwunit_cmos_r), FUNC(midwunit_state::midwunit_cmos_w)).share("nvram");
map(0x01480000, 0x014fffff).w(FUNC(midwunit_state::midwunit_cmos_enable_w));
@@ -123,9 +123,9 @@ void midwunit_state::main_map(address_map &map)
map(0x01680000, 0x0168001f).rw(FUNC(midwunit_state::midwunit_sound_r), FUNC(midwunit_state::midwunit_sound_w));
map(0x01800000, 0x0187ffff).rw(FUNC(midwunit_state::midwunit_io_r), FUNC(midwunit_state::midwunit_io_w));
map(0x01880000, 0x018fffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
- map(0x01a00000, 0x01a000ff).mirror(0x00080000).rw(FUNC(midwunit_state::midtunit_dma_r), FUNC(midwunit_state::midtunit_dma_w));
- map(0x01b00000, 0x01b0001f).rw(FUNC(midwunit_state::midwunit_control_r), FUNC(midwunit_state::midwunit_control_w));
- map(0x02000000, 0x06ffffff).r(FUNC(midwunit_state::midwunit_gfxrom_r));
+ map(0x01a00000, 0x01a000ff).mirror(0x00080000).rw(m_video, FUNC(midwunit_video_device::midtunit_dma_r), FUNC(midwunit_video_device::midtunit_dma_w));
+ map(0x01b00000, 0x01b0001f).rw(m_video, FUNC(midwunit_video_device::midwunit_control_r), FUNC(midwunit_video_device::midwunit_control_w));
+ map(0x02000000, 0x06ffffff).r(m_video, FUNC(midwunit_video_device::midwunit_gfxrom_r));
map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w));
map(0xff800000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -624,53 +624,51 @@ INPUT_PORTS_END
*
*************************************/
-MACHINE_CONFIG_START(midwunit_state::wunit)
+void midwunit_state::wunit(machine_config &config)
+{
+ MIDWUNIT_VIDEO(config, m_video, m_maincpu, m_palette, m_gfxrom);
- MCFG_DEVICE_ADD("maincpu", TMS34010, 50000000)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TMS340X0_HALT_ON_RESET(false) /* halt on reset */
- MCFG_TMS340X0_PIXEL_CLOCK(PIXEL_CLOCK) /* pixel clock */
- MCFG_TMS340X0_PIXELS_PER_CLOCK(1) /* pixels per clock */
- MCFG_TMS340X0_SCANLINE_IND16_CB(midtunit_state, scanline_update) /* scanline updater (indexed16) */
- MCFG_TMS340X0_TO_SHIFTREG_CB(midtunit_state, to_shiftreg) /* write to shiftreg function */
- MCFG_TMS340X0_FROM_SHIFTREG_CB(midtunit_state, from_shiftreg) /* read from shiftreg function */
+ TMS34010(config, m_maincpu, 50000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &midwunit_state::main_map);
+ m_maincpu->set_halt_on_reset(false); /* halt on reset */
+ m_maincpu->set_pixel_clock(PIXEL_CLOCK); /* pixel clock */
+ m_maincpu->set_pixels_per_clock(1); /* pixels per clock */
+ m_maincpu->set_scanline_ind16_callback("video", FUNC(midtunit_video_device::scanline_update)); /* scanline updater (indexed16) */
+ m_maincpu->set_shiftreg_in_callback("video", FUNC(midtunit_video_device::to_shiftreg)); /* write to shiftreg function */
+ m_maincpu->set_shiftreg_out_callback("video", FUNC(midtunit_video_device::from_shiftreg)); /* read from shiftreg function */
- MCFG_MACHINE_RESET_OVERRIDE(midwunit_state,midwunit)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_PALETTE_ADD("palette", 32768)
- MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ PALETTE(config, m_palette, 32768).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
- MCFG_SCREEN_ADD("screen", RASTER)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
// from TMS340 registers
- MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 506, 101, 501, 289, 20, 274)
- MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_VIDEO_START_OVERRIDE(midwunit_state,midwunit)
+ screen.set_raw(PIXEL_CLOCK, 506, 101, 501, 289, 20, 274);
+ screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
+ screen.set_palette(m_palette);
/* sound hardware */
DCS_AUDIO_8K(config, m_dcs, 0);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(midwunit_state::wunit_picsim)
+void midwunit_state::wunit_picsim(machine_config &config)
+{
wunit(config);
- MCFG_DEVICE_ADD("serial_security_sim", MIDWAY_SERIAL_PIC, 0)
- MCFG_MIDWAY_SERIAL_PIC_UPPER(528); // this is actually a generic code all games check for in addition to their own game specific code!
-MACHINE_CONFIG_END
-
+ MIDWAY_SERIAL_PIC(config, m_midway_serial_pic, 0);
+ m_midway_serial_pic->set_upper(528); // this is actually a generic code all games check for in addition to their own game specific code!
+}
-MACHINE_CONFIG_START(midwunit_state::wunit_picemu)
+void midwunit_state::wunit_picemu(machine_config &config)
+{
wunit(config);
- MCFG_DEVICE_ADD("serial_security", MIDWAY_SERIAL_PIC_EMU, 0)
+ MIDWAY_SERIAL_PIC_EMU(config, m_midway_serial_pic_emu, 0);
// todo, REMOVE once the emulated PIC above works!
// this just allows it to fall through to the simulation for now
- MCFG_DEVICE_ADD("serial_security_sim", MIDWAY_SERIAL_PIC, 0)
- MCFG_MIDWAY_SERIAL_PIC_UPPER(528);
-
-MACHINE_CONFIG_END
+ MIDWAY_SERIAL_PIC(config, m_midway_serial_pic, 0);
+ m_midway_serial_pic->set_upper(528);
+}
diff --git a/src/mame/drivers/midxunit.cpp b/src/mame/drivers/midxunit.cpp
index f9bbe07a9e6..3420dd2c730 100644
--- a/src/mame/drivers/midxunit.cpp
+++ b/src/mame/drivers/midxunit.cpp
@@ -106,8 +106,8 @@ There's a separate sound board also, but it wasn't available so is not documente
void midxunit_state::main_map(address_map &map)
{
- map(0x00000000, 0x003fffff).rw(FUNC(midxunit_state::midtunit_vram_data_r), FUNC(midxunit_state::midtunit_vram_data_w));
- map(0x00800000, 0x00bfffff).rw(FUNC(midxunit_state::midtunit_vram_color_r), FUNC(midxunit_state::midtunit_vram_color_w));
+ map(0x00000000, 0x003fffff).rw(m_video, FUNC(midxunit_video_device::midtunit_vram_data_r), FUNC(midxunit_video_device::midtunit_vram_data_w));
+ map(0x00800000, 0x00bfffff).rw(m_video, FUNC(midxunit_video_device::midtunit_vram_color_r), FUNC(midxunit_video_device::midtunit_vram_color_w));
map(0x20000000, 0x20ffffff).ram();
map(0x40800000, 0x4fffffff).w(FUNC(midxunit_state::midxunit_unknown_w));
map(0x60400000, 0x6040001f).rw(FUNC(midxunit_state::midxunit_status_r), FUNC(midxunit_state::midxunit_security_clock_w));
@@ -121,10 +121,10 @@ void midxunit_state::main_map(address_map &map)
map(0x80800010, 0x8080001f).noprw();
map(0x80c00000, 0x80c000ff).rw(FUNC(midxunit_state::midxunit_uart_r), FUNC(midxunit_state::midxunit_uart_w));
map(0xa0440000, 0xa047ffff).rw(FUNC(midxunit_state::midxunit_cmos_r), FUNC(midxunit_state::midxunit_cmos_w)).share("nvram");
- map(0xa0800000, 0xa08fffff).rw(FUNC(midxunit_state::midxunit_paletteram_r), FUNC(midxunit_state::midxunit_paletteram_w)).share("palette");
+ map(0xa0800000, 0xa08fffff).rw(m_video, FUNC(midxunit_video_device::midxunit_paletteram_r), FUNC(midxunit_video_device::midxunit_paletteram_w)).share("palette");
map(0xc0000000, 0xc00003ff).rw("maincpu", FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w));
- map(0xc0800000, 0xc08000ff).mirror(0x00400000).rw(FUNC(midxunit_state::midtunit_dma_r), FUNC(midxunit_state::midtunit_dma_w));
- map(0xf8000000, 0xfeffffff).r(FUNC(midxunit_state::midwunit_gfxrom_r));
+ map(0xc0800000, 0xc08000ff).mirror(0x00400000).rw(m_video, FUNC(midxunit_video_device::midtunit_dma_r), FUNC(midxunit_video_device::midtunit_dma_w));
+ map(0xf8000000, 0xfeffffff).r(m_video, FUNC(midxunit_video_device::midwunit_gfxrom_r));
map(0xff000000, 0xffffffff).rom().region("maincpu", 0);
}
@@ -241,34 +241,33 @@ INPUT_PORTS_END
*
*************************************/
-MACHINE_CONFIG_START(midxunit_state::midxunit)
+void midxunit_state::midxunit(machine_config &config)
+{
+ MIDXUNIT_VIDEO(config, m_video, m_maincpu, m_palette, m_gfxrom);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", TMS34020, 40000000)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_TMS340X0_HALT_ON_RESET(false) /* halt on reset */
- MCFG_TMS340X0_PIXEL_CLOCK(PIXEL_CLOCK) /* pixel clock */
- MCFG_TMS340X0_PIXELS_PER_CLOCK(1) /* pixels per clock */
- MCFG_TMS340X0_SCANLINE_IND16_CB(midxunit_state, scanline_update) /* scanline updater (indexed16) */
- MCFG_TMS340X0_TO_SHIFTREG_CB(midtunit_state, to_shiftreg) /* write to shiftreg function */
- MCFG_TMS340X0_FROM_SHIFTREG_CB(midtunit_state, from_shiftreg) /* read from shiftreg function */
-
- MCFG_MACHINE_RESET_OVERRIDE(midxunit_state,midxunit)
+ TMS34020(config, m_maincpu, 40000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &midxunit_state::main_map);
+ m_maincpu->set_halt_on_reset(false); /* halt on reset */
+ m_maincpu->set_pixel_clock(PIXEL_CLOCK); /* pixel clock */
+ m_maincpu->set_pixels_per_clock(1); /* pixels per clock */
+ m_maincpu->set_scanline_ind16_callback("video", FUNC(midxunit_video_device::scanline_update)); /* scanline updater (indexed16) */
+ m_maincpu->set_shiftreg_in_callback("video", FUNC(midxunit_video_device::to_shiftreg)); /* write to shiftreg function */
+ m_maincpu->set_shiftreg_out_callback("video", FUNC(midtunit_video_device::from_shiftreg)); /* read from shiftreg function */
+
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_PALETTE_ADD("palette", 32768)
- MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ PALETTE(config, m_palette, 32768).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB);
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 506, 101, 501, 289, 20, 274)
- MCFG_SCREEN_UPDATE_DEVICE("maincpu", tms34010_device, tms340x0_ind16)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_VIDEO_START_OVERRIDE(midxunit_state,midxunit)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(PIXEL_CLOCK, 506, 101, 501, 289, 20, 274);
+ screen.set_screen_update("maincpu", FUNC(tms34010_device::tms340x0_ind16));
+ screen.set_palette(m_palette);
- MCFG_DEVICE_ADD("serial_pic", MIDWAY_SERIAL_PIC, 0)
+ MIDWAY_SERIAL_PIC(config, m_midway_serial_pic, 0);
/* serial prefixes 419, 420 */
- MCFG_MIDWAY_SERIAL_PIC_UPPER(419);
+ m_midway_serial_pic->set_upper(419);
adc0848_device &adc(ADC0848(config, "adc", 0));
adc.intr_callback().set(FUNC(midxunit_state::adc_int_w)); // ADC INT passed through PLSI1032
@@ -281,7 +280,7 @@ MACHINE_CONFIG_START(midxunit_state::midxunit)
/* sound hardware */
DCS_AUDIO_2K_UART(config, m_dcs, 0);
-MACHINE_CONFIG_END
+}
@@ -431,5 +430,5 @@ ROM_END
*
*************************************/
-GAME( 1994, revx, 0, midxunit, revx, midxunit_state, init_revx, ROT0, "Midway", "Revolution X (rev 1.0 6/16/94)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, revxp5, revx, midxunit, revx, midxunit_state, init_revx, ROT0, "Midway", "Revolution X (prototype, rev 5.0 5/23/94)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, revx, 0, midxunit, revx, midxunit_state, empty_init, ROT0, "Midway", "Revolution X (rev 1.0 6/16/94)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, revxp5, revx, midxunit, revx, midxunit_state, empty_init, ROT0, "Midway", "Revolution X (prototype, rev 5.0 5/23/94)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h
index 0f1fc45485a..005681d6609 100644
--- a/src/mame/includes/midtunit.h
+++ b/src/mame/includes/midtunit.h
@@ -28,10 +28,10 @@ public:
m_video(*this, "video"),
m_dcs(*this, "dcs"),
m_palette(*this, "palette"),
+ m_gfxrom(*this, "gfxrom"),
m_cvsd_sound(*this, "cvsd"),
m_adpcm_sound(*this, "adpcm"),
- m_nvram(*this, "nvram"),
- m_gfxrom(*this, "gfxrom")
+ m_nvram(*this, "nvram")
{ }
void tunit_core(machine_config &config);
@@ -52,6 +52,7 @@ protected:
required_device<midtunit_video_device> m_video;
optional_device<dcs_audio_device> m_dcs;
required_device<palette_device> m_palette;
+ required_memory_region m_gfxrom;
private:
optional_device<williams_cvsd_sound_device> m_cvsd_sound;
@@ -59,8 +60,6 @@ private:
required_shared_ptr<uint16_t> m_nvram;
- required_memory_region m_gfxrom;
-
DECLARE_WRITE16_MEMBER(midtunit_cmos_enable_w);
DECLARE_WRITE16_MEMBER(midtunit_cmos_w);
DECLARE_READ16_MEMBER(midtunit_cmos_r);
diff --git a/src/mame/includes/midwunit.h b/src/mame/includes/midwunit.h
index f1b39b35bb0..8545708a63c 100644
--- a/src/mame/includes/midwunit.h
+++ b/src/mame/includes/midwunit.h
@@ -38,20 +38,11 @@ public:
void init_umk3r11();
void init_mk3r20();
-private:
- optional_device<midway_serial_pic_device> m_midway_serial_pic;
- optional_device<midway_serial_pic_emu_device> m_midway_serial_pic_emu;
- required_shared_ptr<uint16_t> m_nvram;
- required_shared_ptr<uint16_t> m_mainram;
- required_ioport_array<4> m_ports;
-
- uint8_t m_cmos_write_enable;
- uint16_t m_iodata[8];
- uint8_t m_ioshuffle[16];
- uint8_t m_uart[8];
- uint8_t m_security_bits;
- uint16_t *m_umk3_palette;
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+private:
DECLARE_WRITE16_MEMBER(midwunit_cmos_enable_w);
DECLARE_WRITE16_MEMBER(midwunit_cmos_w);
DECLARE_READ16_MEMBER(midwunit_cmos_r);
@@ -65,13 +56,21 @@ private:
DECLARE_WRITE16_MEMBER(umk3_palette_hack_w);
DECLARE_WRITE16_MEMBER(wwfmania_io_0_w);
- DECLARE_MACHINE_RESET(midwunit);
- DECLARE_VIDEO_START(midwunit);
-
- void register_state_saving();
- void init_wunit_generic();
void init_mk3_common();
void main_map(address_map &map);
+
+ optional_device<midway_serial_pic_device> m_midway_serial_pic;
+ optional_device<midway_serial_pic_emu_device> m_midway_serial_pic_emu;
+ required_shared_ptr<uint16_t> m_nvram;
+ required_shared_ptr<uint16_t> m_mainram;
+ required_ioport_array<4> m_ports;
+
+ uint8_t m_cmos_write_enable;
+ uint16_t m_iodata[8];
+ uint8_t m_ioshuffle[16];
+ uint8_t m_uart[8];
+ uint8_t m_security_bits;
+ uint16_t *m_umk3_palette;
};
#endif // MAME_INCLUDES_MIDWUNIT_H
diff --git a/src/mame/includes/midxunit.h b/src/mame/includes/midxunit.h
index 1b2d162bf29..5a3d7bada8c 100644
--- a/src/mame/includes/midxunit.h
+++ b/src/mame/includes/midxunit.h
@@ -23,7 +23,9 @@ public:
void midxunit(machine_config &config);
- void init_revx();
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
private:
DECLARE_READ16_MEMBER(midxunit_cmos_r);
@@ -41,14 +43,12 @@ private:
DECLARE_READ16_MEMBER(midxunit_sound_state_r);
DECLARE_WRITE16_MEMBER(midxunit_sound_w);
DECLARE_WRITE_LINE_MEMBER(midxunit_dcs_output_full);
- DECLARE_MACHINE_RESET(midxunit);
- DECLARE_VIDEO_START(midxunit);
- void register_state_saving();
void main_map(address_map &map);
required_shared_ptr<uint16_t> m_nvram;
required_device<midway_serial_pic_device> m_midway_serial_pic;
+
uint8_t m_cmos_write_enable;
uint16_t m_iodata[8];
uint8_t m_ioshuffle[16];
diff --git a/src/mame/machine/midwunit.cpp b/src/mame/machine/midwunit.cpp
index 0104178554e..85203c56d7e 100644
--- a/src/mame/machine/midwunit.cpp
+++ b/src/mame/machine/midwunit.cpp
@@ -13,22 +13,13 @@
#include "includes/midtunit.h"
#include "includes/midwunit.h"
-/*************************************
- *
- * State saving
- *
- *************************************/
-
-void midwunit_state::register_state_saving()
-{
- save_item(NAME(m_cmos_write_enable));
- save_item(NAME(m_iodata));
- save_item(NAME(m_ioshuffle));
- save_item(NAME(m_uart));
- save_item(NAME(m_security_bits));
-}
-
+#define LOG_UNKNOWN (1 << 0)
+#define LOG_CMOS (1 << 1)
+#define LOG_IO (1 << 2)
+#define LOG_SOUND (1 << 3)
+#define VERBOSE (0)
+#include "logmacro.h"
/*************************************
*
@@ -51,7 +42,7 @@ WRITE16_MEMBER(midwunit_state::midwunit_cmos_w)
}
else
{
- logerror("%08X:Unexpected CMOS W @ %05X\n", m_maincpu->pc(), offset);
+ LOGMASKED(LOG_CMOS | LOG_UNKNOWN, "%s: Unexpected CMOS W @ %05X\n", machine().describe_context(), offset);
popmessage("Bad CMOS write");
}
}
@@ -73,17 +64,15 @@ READ16_MEMBER(midwunit_state::midwunit_cmos_r)
WRITE16_MEMBER(midwunit_state::midwunit_io_w)
{
- int oldword, newword;
-
offset %= 8;
- oldword = m_iodata[offset];
- newword = oldword;
+ int oldword = m_iodata[offset];
+ int newword = oldword;
COMBINE_DATA(&newword);
switch (offset)
{
case 1:
- logerror("%08X:Control W @ %05X = %04X\n", m_maincpu->pc(), offset, data);
+ LOGMASKED(LOG_IO, "%s: Control W @ %05X = %04X\n", machine().describe_context(), offset, data);
/* bit 4 reset sound CPU */
m_dcs->reset_w(newword & 0x10);
@@ -99,7 +88,7 @@ WRITE16_MEMBER(midwunit_state::midwunit_io_w)
break;
default:
- logerror("%08X:Unknown I/O write to %d = %04X\n", m_maincpu->pc(), offset, data);
+ LOGMASKED(LOG_IO | LOG_UNKNOWN, "%s: Unknown I/O write to %d = %04X\n", machine().describe_context(), offset, data);
break;
}
m_iodata[offset] = newword;
@@ -134,7 +123,7 @@ READ16_MEMBER(midwunit_state::midwunit_io_r)
return (picret << 12) | midwunit_sound_state_r(space, 0, 0xffff);
}
default:
- logerror("%08X:Unknown I/O read from %d\n", m_maincpu->pc(), offset);
+ LOGMASKED(LOG_IO | LOG_UNKNOWN, "%s: Unknown I/O read from %d\n", machine().describe_context(), offset);
break;
}
return ~0;
@@ -148,10 +137,13 @@ READ16_MEMBER(midwunit_state::midwunit_io_r)
*
*************************************/
-void midwunit_state::init_wunit_generic()
+void midwunit_state::machine_start()
{
- /* register for state saving */
- register_state_saving();
+ save_item(NAME(m_cmos_write_enable));
+ save_item(NAME(m_iodata));
+ save_item(NAME(m_ioshuffle));
+ save_item(NAME(m_uart));
+ save_item(NAME(m_security_bits));
}
@@ -195,9 +187,6 @@ WRITE16_MEMBER(midwunit_state::umk3_palette_hack_w)
void midwunit_state::init_mk3_common()
{
- /* common init */
- init_wunit_generic();
-
/* serial prefixes 439, 528 */
//midway_serial_pic_init(machine(), 528);
}
@@ -236,9 +225,6 @@ void midwunit_state::init_umk3r11()
void midwunit_state::init_openice()
{
- /* common init */
- init_wunit_generic();
-
/* serial prefixes 438, 528 */
//midway_serial_pic_init(machine(), 528);
}
@@ -248,9 +234,6 @@ void midwunit_state::init_openice()
void midwunit_state::init_nbahangt()
{
- /* common init */
- init_wunit_generic();
-
/* serial prefixes 459, 470, 528 */
//midway_serial_pic_init(machine(), 528);
}
@@ -260,10 +243,8 @@ void midwunit_state::init_nbahangt()
WRITE16_MEMBER(midwunit_state::wwfmania_io_0_w)
{
- int i;
-
/* start with the originals */
- for (i = 0; i < 16; i++)
+ for (int i = 0; i < 16; i++)
m_ioshuffle[i] = i % 8;
/* based on the data written, shuffle */
@@ -304,14 +285,11 @@ WRITE16_MEMBER(midwunit_state::wwfmania_io_0_w)
m_ioshuffle[8] = 4;
break;
}
- logerror("Changed I/O swiching to %d\n", data);
+ LOGMASKED(LOG_IO, "Changed I/O swiching to %d\n", data);
}
void midwunit_state::init_wwfmania()
{
- /* common init */
- init_wunit_generic();
-
/* enable I/O shuffling */
m_maincpu->space(AS_PROGRAM).install_write_handler(0x01800000, 0x0180000f, write16_delegate(FUNC(midwunit_state::wwfmania_io_0_w),this));
@@ -324,9 +302,6 @@ void midwunit_state::init_wwfmania()
void midwunit_state::init_rmpgwt()
{
- /* common init */
- init_wunit_generic();
-
/* serial prefixes 465, 528 */
//midway_serial_pic_init(machine(), 528);
}
@@ -334,20 +309,18 @@ void midwunit_state::init_rmpgwt()
/*************************************
*
- * Machine init
+ * Machine reset
*
*************************************/
-MACHINE_RESET_MEMBER(midwunit_state,midwunit)
+void midwunit_state::machine_reset()
{
- int i;
-
/* reset sound */
m_dcs->reset_w(1);
m_dcs->reset_w(0);
/* reset I/O shuffling */
- for (i = 0; i < 16; i++)
+ for (int i = 0; i < 16; i++)
m_ioshuffle[i] = i % 8;
}
@@ -385,7 +358,7 @@ WRITE16_MEMBER(midwunit_state::midwunit_security_w)
READ16_MEMBER(midwunit_state::midwunit_sound_r)
{
- logerror("%08X:Sound read\n", m_maincpu->pc());
+ LOGMASKED(LOG_SOUND, "%s: Sound read\n", machine().describe_context());
return m_dcs->data_r() & 0xff;
}
@@ -402,14 +375,14 @@ WRITE16_MEMBER(midwunit_state::midwunit_sound_w)
/* check for out-of-bounds accesses */
if (offset)
{
- logerror("%08X:Unexpected write to sound (hi) = %04X\n", m_maincpu->pc(), data);
+ LOGMASKED(LOG_SOUND | LOG_UNKNOWN, "%s: Unexpected write to sound (hi) = %04X\n", machine().describe_context(), data);
return;
}
/* call through based on the sound type */
if (ACCESSING_BITS_0_7)
{
- logerror("%08X:Sound write = %04X\n", m_maincpu->pc(), data);
+ LOGMASKED(LOG_SOUND, "%s: Sound write = %04X\n", machine().describe_context(), data);
m_dcs->data_w(data & 0xff);
}
}
diff --git a/src/mame/machine/midxunit.cpp b/src/mame/machine/midxunit.cpp
index 57299d2162a..fbbdad46380 100644
--- a/src/mame/machine/midxunit.cpp
+++ b/src/mame/machine/midxunit.cpp
@@ -14,24 +14,13 @@
#include "includes/midxunit.h"
#include "midwayic.h"
+#define LOG_IO (1 << 0)
+#define LOG_UART (1 << 1)
+#define LOG_UNKNOWN (1 << 2)
+#define LOG_SOUND (1 << 3)
-/*************************************
- *
- * State saving
- *
- *************************************/
-
-void midxunit_state::register_state_saving()
-{
- save_item(NAME(m_cmos_write_enable));
- save_item(NAME(m_iodata));
- save_item(NAME(m_ioshuffle));
- save_item(NAME(m_uart));
- save_item(NAME(m_security_bits));
- save_item(NAME(m_adc_int));
-}
-
-
+#define VERBOSE (0)
+#include "logmacro.h"
/*************************************
*
@@ -74,8 +63,8 @@ WRITE16_MEMBER(midxunit_state::midxunit_io_w)
default:
/* Gun Outputs for RevX */
- /* Note: The Gun for the Coin slot you use is supposed to rumble when you insert coins, and it doesn't for P3 */
- /* Perhaps an Input is hooked up wrong??? */
+ /* Note: The Gun for the Coin slot you use is supposed to rumble when you insert coins, and it doesn't for P3. */
+ /* Perhaps an Input is hooked up wrong. */
output().set_value("Player1_Gun_Recoil", data & 0x1 );
output().set_value("Player2_Gun_Recoil", (data & 0x2) >> 1 );
output().set_value("Player3_Gun_Recoil", (data & 0x4) >> 2 );
@@ -83,8 +72,7 @@ WRITE16_MEMBER(midxunit_state::midxunit_io_w)
output().set_value("Player2_Gun_LED", (~data & 0x20) >> 5 );
output().set_value("Player3_Gun_LED", (~data & 0x40) >> 6 );
- logerror("%08X:I/O write to %d = %04X\n", m_maincpu->pc(), offset, data);
-// logerror("%08X:Unknown I/O write to %d = %04X\n", m_maincpu->pc(), offset, data);
+ LOGMASKED(LOG_IO, "%s: I/O write to %d = %04X\n", machine().describe_context(), offset, data);
break;
}
m_iodata[offset] = newword;
@@ -99,7 +87,7 @@ WRITE16_MEMBER(midxunit_state::midxunit_unknown_w)
m_dcs->reset_w(data & 2);
if (ACCESSING_BITS_0_7 && offset % 0x40000 == 0)
- logerror("%08X:midxunit_unknown_w @ %d = %02X\n", m_maincpu->pc(), offs, data & 0xff);
+ LOGMASKED(LOG_UNKNOWN, "%s: midxunit_unknown_w @ %d = %02X\n", machine().describe_context(), offs, data & 0xff);
}
@@ -202,7 +190,7 @@ READ16_MEMBER(midxunit_state::midxunit_uart_r)
break;
}
-/* logerror("%08X:UART R @ %X = %02X\n", m_maincpu->pc(), offset, result);*/
+ LOGMASKED(LOG_UART, "%s: UART R @ %X = %02X\n", machine().describe_context(), offset, result);
return result;
}
@@ -238,7 +226,7 @@ WRITE16_MEMBER(midxunit_state::midxunit_uart_w)
break;
}
-/* logerror("%08X:UART W @ %X = %02X\n", m_maincpu->pc(), offset, data);*/
+ LOGMASKED(LOG_UART, "%s: UART W @ %X = %02X\n", machine().describe_context(), offset, data);
}
@@ -253,28 +241,30 @@ WRITE16_MEMBER(midxunit_state::midxunit_uart_w)
/********************** Revolution X **********************/
-void midxunit_state::init_revx()
-{
- /* register for state saving */
- register_state_saving();
-}
-
/*************************************
*
* Machine init
*
*************************************/
-MACHINE_RESET_MEMBER(midxunit_state,midxunit)
+void midxunit_state::machine_start()
{
- int i;
+ save_item(NAME(m_cmos_write_enable));
+ save_item(NAME(m_iodata));
+ save_item(NAME(m_ioshuffle));
+ save_item(NAME(m_uart));
+ save_item(NAME(m_security_bits));
+ save_item(NAME(m_adc_int));
+}
+void midxunit_state::machine_reset()
+{
/* reset sound */
m_dcs->reset_w(1);
m_dcs->reset_w(0);
/* reset I/O shuffling */
- for (i = 0; i < 16; i++)
+ for (int i = 0; i < 16; i++)
m_ioshuffle[i] = i % 8;
m_dcs->set_io_callbacks(write_line_delegate(FUNC(midxunit_state::midxunit_dcs_output_full),this), write_line_delegate());
@@ -316,7 +306,7 @@ WRITE16_MEMBER(midxunit_state::midxunit_security_clock_w)
READ16_MEMBER(midxunit_state::midxunit_sound_r)
{
- logerror("%08X:Sound read\n", m_maincpu->pc());
+ LOGMASKED(LOG_SOUND, "%08X:Sound read\n", m_maincpu->pc());
return m_dcs->data_r() & 0xff;
}
@@ -333,14 +323,14 @@ WRITE16_MEMBER(midxunit_state::midxunit_sound_w)
/* check for out-of-bounds accesses */
if (offset)
{
- logerror("%08X:Unexpected write to sound (hi) = %04X\n", m_maincpu->pc(), data);
+ LOGMASKED(LOG_SOUND | LOG_UNKNOWN, "%s: Unexpected write to sound (hi) = %04X\n", machine().describe_context(), data);
return;
}
/* call through based on the sound type */
if (ACCESSING_BITS_0_7)
{
- logerror("%08X:Sound write = %04X\n", m_maincpu->pc(), data);
+ LOGMASKED(LOG_SOUND, "%s: Sound write = %04X\n", machine().describe_context(), data);
m_dcs->data_w(data & 0xff);
}
}
diff --git a/src/mame/video/midtunit.cpp b/src/mame/video/midtunit.cpp
index 71112f2e32b..cb2df663e4b 100644
--- a/src/mame/video/midtunit.cpp
+++ b/src/mame/video/midtunit.cpp
@@ -31,13 +31,18 @@ midtunit_video_device::midtunit_video_device(const machine_config &mconfig, cons
{
}
+midwunit_video_device::midwunit_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : midtunit_video_device(mconfig, type, tag, owner, clock)
+{
+}
+
midwunit_video_device::midwunit_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: midtunit_video_device(mconfig, MIDWUNIT_VIDEO, tag, owner, clock)
{
}
midxunit_video_device::midxunit_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : midtunit_video_device(mconfig, MIDXUNIT_VIDEO, tag, owner, clock)
+ : midwunit_video_device(mconfig, MIDXUNIT_VIDEO, tag, owner, clock)
{
}
@@ -128,7 +133,7 @@ WRITE16_MEMBER(midtunit_video_device::midtunit_vram_w)
if (m_videobank_select)
{
if (ACCESSING_BITS_0_7)
- m_local_videoram[offset] = 0;// (data & 0xff) | ((m_dma_register[DMA_PALETTE] & 0xff) << 8);
+ m_local_videoram[offset] = (data & 0xff) | ((m_dma_register[DMA_PALETTE] & 0xff) << 8);
if (ACCESSING_BITS_8_15)
m_local_videoram[offset + 1] = ((data >> 8) & 0xff) | (m_dma_register[DMA_PALETTE] & 0xff00);
}
diff --git a/src/mame/video/midtunit.h b/src/mame/video/midtunit.h
index ba47b53bd68..489a2e5906b 100644
--- a/src/mame/video/midtunit.h
+++ b/src/mame/video/midtunit.h
@@ -167,16 +167,18 @@ public:
DECLARE_READ16_MEMBER(midwunit_control_r);
protected:
+ midwunit_video_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 0);
+
virtual void device_start() override;
};
-class midxunit_video_device : public midtunit_video_device
+class midxunit_video_device : public midwunit_video_device
{
public:
// construction/destruction
template <typename T, typename U, typename V>
midxunit_video_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&palette_tag, V &&gfxrom_tag)
- : midxunit_video_device(mconfig, tag, owner, (uint32_t)0)
+ : midwunit_video_device(mconfig, tag, owner, (uint32_t)0)
{
m_maincpu.set_tag(std::forward<T>(cpu_tag));
m_palette.set_tag(std::forward<U>(palette_tag));
diff --git a/src/mame/video/midtunit.hxx b/src/mame/video/midtunit.hxx
index 0d5ca3f3750..690afa6646b 100644
--- a/src/mame/video/midtunit.hxx
+++ b/src/mame/video/midtunit.hxx
@@ -19,32 +19,32 @@
dest[i+7] = &midtunit_video_device::dma_draw<7, xflip, skip, scale, zero, nonzero>;
#define TEMPLATED_DMA_DRAW_NONE(dest, i) \
- dest[i*8+0] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+1] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+2] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+3] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+4] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+5] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+6] = &midtunit_video_device::dma_draw_none; \
- dest[i*8+7] = &midtunit_video_device::dma_draw_none;
+ dest[i+0] = &midtunit_video_device::dma_draw_none; \
+ dest[i+1] = &midtunit_video_device::dma_draw_none; \
+ dest[i+2] = &midtunit_video_device::dma_draw_none; \
+ dest[i+3] = &midtunit_video_device::dma_draw_none; \
+ dest[i+4] = &midtunit_video_device::dma_draw_none; \
+ dest[i+5] = &midtunit_video_device::dma_draw_none; \
+ dest[i+6] = &midtunit_video_device::dma_draw_none; \
+ dest[i+7] = &midtunit_video_device::dma_draw_none;
-#define TEMPLATED_DMA_DRAW_P0(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COPY, PIXEL_SKIP)
-#define TEMPLATED_DMA_DRAW_P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_SKIP, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_C0(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COLOR, PIXEL_SKIP)
-#define TEMPLATED_DMA_DRAW_C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_SKIP, PIXEL_COLOR)
-#define TEMPLATED_DMA_DRAW_P0P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COPY, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_C0C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COLOR, PIXEL_COLOR)
-#define TEMPLATED_DMA_DRAW_C0P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COLOR, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_P0C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, false, skip, scale, PIXEL_COPY, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_P0(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COPY, PIXEL_SKIP)
+#define TEMPLATED_DMA_DRAW_P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_SKIP, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_C0(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COLOR, PIXEL_SKIP)
+#define TEMPLATED_DMA_DRAW_C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_SKIP, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_P0P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COPY, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_C0C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COLOR, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_C0P1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COLOR, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_P0C1(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, false, skip, scale, PIXEL_COPY, PIXEL_COLOR)
-#define TEMPLATED_DMA_DRAW_P0_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COPY, PIXEL_SKIP)
-#define TEMPLATED_DMA_DRAW_P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_SKIP, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_C0_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COLOR, PIXEL_SKIP)
-#define TEMPLATED_DMA_DRAW_C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_SKIP, PIXEL_COLOR)
-#define TEMPLATED_DMA_DRAW_P0P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COPY, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_C0C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COLOR, PIXEL_COLOR)
-#define TEMPLATED_DMA_DRAW_C0P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COLOR, PIXEL_COPY)
-#define TEMPLATED_DMA_DRAW_P0C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i*8, true, skip, scale, PIXEL_COPY, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_P0_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COPY, PIXEL_SKIP)
+#define TEMPLATED_DMA_DRAW_P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_SKIP, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_C0_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COLOR, PIXEL_SKIP)
+#define TEMPLATED_DMA_DRAW_C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_SKIP, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_P0P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COPY, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_C0C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COLOR, PIXEL_COLOR)
+#define TEMPLATED_DMA_DRAW_C0P1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COLOR, PIXEL_COPY)
+#define TEMPLATED_DMA_DRAW_P0C1_XF(dest, i, skip, scale) INIT_TEMPLATED_DMA_DRAW(dest, i, true, skip, scale, PIXEL_COPY, PIXEL_COLOR)
#define INIT_TEMPLATED_DMA_DRAW_GROUP(dest, skip, scale) \
TEMPLATED_DMA_DRAW_NONE(dest, 0); \