summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/video/midtunit.ipp
blob: 1662c706d5d0bf897015f1498b284c5842a86e54 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                             






                                                                                             


                                                                                           






                                                             
                                                          
 







                                                                                                                                    
 







                                                                                                                                      

                                                          


















                                                             
                                                             

                                                             

                                                             
                                                             
                                                             
                                                             






                                                                      






                                                                                                 


















                                                                                                                             
                                                         
                                                                                                                           
                                                         
                                                                                                                           
                                                         
                                                                                                                           
                                                         
                                                                                                                            
                                                         
                                                                                                                           
                                                         
                                                                                                                            
                                                         
                                                                                                                           
                                                         


















                                                                                                                            
// license:BSD-3-Clause
// copyright-holders:Alex Pasadyn, Zsolt Vasvari, Ernesto Corvi, Aaron Giles
// thanks-to:Kurt Mahan
/*************************************************************************

    #defines related to the video emulation of Midway T-unit, W-unit,
    and X-unit games.

**************************************************************************/

#define INIT_TEMPLATED_DMA_DRAW(dest, i, xflip, skip, scale, zero, nonzero) \
	dest[i+0] = &midtunit_video_device::dma_draw<8, xflip, skip, scale, zero, nonzero>; \
	dest[i+1] = &midtunit_video_device::dma_draw<1, xflip, skip, scale, zero, nonzero>; \
	dest[i+2] = &midtunit_video_device::dma_draw<2, xflip, skip, scale, zero, nonzero>; \
	dest[i+3] = &midtunit_video_device::dma_draw<3, xflip, skip, scale, zero, nonzero>; \
	dest[i+4] = &midtunit_video_device::dma_draw<4, xflip, skip, scale, zero, nonzero>; \
	dest[i+5] = &midtunit_video_device::dma_draw<5, xflip, skip, scale, zero, nonzero>; \
	dest[i+6] = &midtunit_video_device::dma_draw<6, xflip, skip, scale, zero, nonzero>; \
	dest[i+7] = &midtunit_video_device::dma_draw<7, xflip, skip, scale, zero, nonzero>;

#define TEMPLATED_DMA_DRAW_NONE(dest, i) \
	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, 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, 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);                   \
	TEMPLATED_DMA_DRAW_P0(dest, 8, skip, scale);        \
	TEMPLATED_DMA_DRAW_P1(dest, 16, skip, scale);       \
	TEMPLATED_DMA_DRAW_P0P1(dest, 24, skip, scale);     \
	TEMPLATED_DMA_DRAW_C0(dest, 32, skip, scale);       \
	TEMPLATED_DMA_DRAW_C0(dest, 40, skip, scale);       \
	TEMPLATED_DMA_DRAW_C0P1(dest, 48, skip, scale);     \
	TEMPLATED_DMA_DRAW_C0P1(dest, 56, skip, scale);     \
	TEMPLATED_DMA_DRAW_C1(dest, 64, skip, scale);       \
	TEMPLATED_DMA_DRAW_P0C1(dest, 72, skip, scale);     \
	TEMPLATED_DMA_DRAW_C1(dest, 80, skip, scale);       \
	TEMPLATED_DMA_DRAW_P0C1(dest, 88, skip, scale);     \
	TEMPLATED_DMA_DRAW_C0C1(dest, 96, skip, scale);     \
	TEMPLATED_DMA_DRAW_C0C1(dest, 104, skip, scale);    \
	TEMPLATED_DMA_DRAW_C0C1(dest, 112, skip, scale);    \
	TEMPLATED_DMA_DRAW_C0C1(dest, 120, skip, scale);    \
	TEMPLATED_DMA_DRAW_NONE(dest, 128);                 \
	TEMPLATED_DMA_DRAW_P0_XF(dest, 136, skip, scale);   \
	TEMPLATED_DMA_DRAW_P1_XF(dest, 144, skip, scale);   \
	TEMPLATED_DMA_DRAW_P0P1_XF(dest, 152, skip, scale); \
	TEMPLATED_DMA_DRAW_C0_XF(dest, 160, skip, scale);   \
	TEMPLATED_DMA_DRAW_C0_XF(dest, 168, skip, scale);   \
	TEMPLATED_DMA_DRAW_C0P1_XF(dest, 176, skip, scale); \
	TEMPLATED_DMA_DRAW_C0P1_XF(dest, 184, skip, scale); \
	TEMPLATED_DMA_DRAW_C1_XF(dest, 192, skip, scale);   \
	TEMPLATED_DMA_DRAW_P0C1_XF(dest, 200, skip, scale); \
	TEMPLATED_DMA_DRAW_C1_XF(dest, 208, skip, scale);   \
	TEMPLATED_DMA_DRAW_P0C1_XF(dest, 216, skip, scale); \
	TEMPLATED_DMA_DRAW_C0C1_XF(dest, 224, skip, scale); \
	TEMPLATED_DMA_DRAW_C0C1_XF(dest, 232, skip, scale); \
	TEMPLATED_DMA_DRAW_C0C1_XF(dest, 240, skip, scale); \
	TEMPLATED_DMA_DRAW_C0C1_XF(dest, 248, skip, scale);

#define DEFINE_TEMPLATED_DMA_DRAW(xflip, skip, scale, zero, nonzero) \
	template void midtunit_video_device::dma_draw<8, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<1, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<2, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<3, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<4, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<5, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<6, xflip, skip, scale, zero, nonzero>();  \
	template void midtunit_video_device::dma_draw<7, xflip, skip, scale, zero, nonzero>();

#define DEFINE_TEMPLATED_DMA_DRAW_P0(skip, scale)   \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_SKIP)
#define DEFINE_TEMPLATED_DMA_DRAW_P1(skip, scale)   \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_SKIP,  midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_C0(skip, scale)   \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_SKIP)
#define DEFINE_TEMPLATED_DMA_DRAW_C1(skip, scale)   \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_SKIP,  midtunit_video_device::PIXEL_COLOR)
#define DEFINE_TEMPLATED_DMA_DRAW_P0P1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_C0C1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_COLOR)
#define DEFINE_TEMPLATED_DMA_DRAW_C0P1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_P0C1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW(false, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_COLOR)

#define DEFINE_TEMPLATED_DMA_DRAW_P0_XF(skip, scale)    \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_SKIP)
#define DEFINE_TEMPLATED_DMA_DRAW_P1_XF(skip, scale)    \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_SKIP,  midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_C0_XF(skip, scale)    \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_SKIP)
#define DEFINE_TEMPLATED_DMA_DRAW_C1_XF(skip, scale)    \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_SKIP,  midtunit_video_device::PIXEL_COLOR)
#define DEFINE_TEMPLATED_DMA_DRAW_P0P1_XF(skip, scale)  \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_C0C1_XF(skip, scale)  \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_COLOR)
#define DEFINE_TEMPLATED_DMA_DRAW_C0P1_XF(skip, scale)  \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COLOR, midtunit_video_device::PIXEL_COPY)
#define DEFINE_TEMPLATED_DMA_DRAW_P0C1_XF(skip, scale)  \
	DEFINE_TEMPLATED_DMA_DRAW(true, skip, scale, midtunit_video_device::PIXEL_COPY,  midtunit_video_device::PIXEL_COLOR)

#define DEFINE_TEMPLATED_DMA_DRAW_GROUP(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0P1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0C1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0P1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0C1(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P1_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C1_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0P1_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0C1_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_C0P1_XF(skip, scale) \
	DEFINE_TEMPLATED_DMA_DRAW_P0C1_XF(skip, scale)