diff --git a/.gitattributes b/.gitattributes index 0a5ce6ab896..a6c4f724d7d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2524,6 +2524,19 @@ src/emu/video/dm9368.h svneol=native#text/plain src/emu/video/ef9340_1.c svneol=native#text/plain src/emu/video/ef9340_1.h svneol=native#text/plain src/emu/video/ef9341_chargen.h svneol=native#text/plain +src/emu/video/epic12.c svneol=native#text/plain +src/emu/video/epic12.h svneol=native#text/plain +src/emu/video/epic12_blit0.c svneol=native#text/plain +src/emu/video/epic12_blit1.c svneol=native#text/plain +src/emu/video/epic12_blit2.c svneol=native#text/plain +src/emu/video/epic12_blit3.c svneol=native#text/plain +src/emu/video/epic12_blit4.c svneol=native#text/plain +src/emu/video/epic12_blit5.c svneol=native#text/plain +src/emu/video/epic12_blit6.c svneol=native#text/plain +src/emu/video/epic12_blit7.c svneol=native#text/plain +src/emu/video/epic12_blit8.c svneol=native#text/plain +src/emu/video/epic12in.inc svneol=native#text/plain +src/emu/video/epic12pixel.inc svneol=native#text/plain src/emu/video/fixfreq.c svneol=native#text/plain src/emu/video/fixfreq.h svneol=native#text/plain src/emu/video/generic.c svneol=native#text/plain @@ -3663,6 +3676,7 @@ src/mame/drivers/csplayh5.c svneol=native#text/plain src/mame/drivers/cubeqst.c svneol=native#text/plain src/mame/drivers/cultures.c svneol=native#text/plain src/mame/drivers/cupidon.c svneol=native#text/plain +src/mame/drivers/cv1k.c svneol=native#text/plain src/mame/drivers/cvs.c svneol=native#text/plain src/mame/drivers/cyberbal.c svneol=native#text/plain src/mame/drivers/cybertnk.c svneol=native#text/plain diff --git a/src/emu/video/epic12.c b/src/emu/video/epic12.c new file mode 100644 index 00000000000..011ee67d1e6 --- /dev/null +++ b/src/emu/video/epic12.c @@ -0,0 +1,1056 @@ +/* emulation of Altera Cyclone EPIC12 FPGA programmed as a blitter */ + +#include "emu.h" +#include "epic12.h" + + + +const device_type EPIC12 = &device_creator; + +epic12_device::epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, EPIC12, "epic12_device", tag, owner, clock, "epic12", __FILE__), + device_video_interface(mconfig, *this) +{ + m_is_unsafe = 0; + m_delay_scale = 0; + m_maincpu = 0; + queue = 0; + blitter_request = 0; + epic12_device_blitter_delay_timer = 0; + blitter_busy = 0; + use_ram = 0; + epic12_device_ram16 = 0; + epic12_device_gfx_addr = 0; + epic12_device_gfx_scroll_0_x = 0; + epic12_device_gfx_scroll_0_y = 0; + epic12_device_gfx_scroll_1_x = 0; + epic12_device_gfx_scroll_1_y = 0; + epic12_device_gfx_size = 0; + epic12_device_gfx_addr_shadowcopy = 0; + epic12_device_gfx_scroll_0_x_shadowcopy = 0; + epic12_device_gfx_scroll_0_y_shadowcopy = 0; + epic12_device_gfx_scroll_1_x_shadowcopy = 0; + epic12_device_gfx_scroll_1_y_shadowcopy = 0; + epic12_device_ram16_copy = 0; + epic12_device_blit_delay = 0; + +} + +TIMER_CALLBACK_MEMBER( epic12_device::epic12_device_blitter_delay_callback ) +{ + blitter_busy = 0; +} + +// static + void epic12_device::set_rambase(device_t &device, UINT16* rambase) +{ + epic12_device &dev = downcast(device); + dev.epic12_device_ram16 = rambase; +} + + +void epic12_device::set_delay_scale(device_t &device, int delay_scale) +{ + epic12_device &dev = downcast(device); + dev.m_delay_scale = delay_scale; +} + +void epic12_device::set_is_unsafe(device_t &device, int is_unsafe) +{ + epic12_device &dev = downcast(device); + dev.m_is_unsafe = is_unsafe; + +} + +void epic12_device::set_cpu_device(device_t &device, legacy_cpu_device* maincpu) +{ + epic12_device &dev = downcast(device); + dev.m_maincpu = maincpu; +} + + +void epic12_device::device_start() +{ + epic12_device_gfx_size = 0x2000 * 0x1000; + epic12_device_bitmaps = auto_bitmap_rgb32_alloc(machine(), 0x2000, 0x1000); + epic12_device_clip = epic12_device_bitmaps->cliprect(); + + epic12_device_ram16_copy = auto_alloc_array(machine(), UINT16, m_main_ramsize/2); + + + + epic12_device_blitter_delay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(epic12_device::epic12_device_blitter_delay_callback),this)); + epic12_device_blitter_delay_timer->adjust(attotime::never); + + +} + +void epic12_device::device_reset() +{ + + if (m_is_unsafe) + { + use_ram = epic12_device_ram16; + queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_HIGH_FREQ|WORK_QUEUE_FLAG_MULTI); + } + else + { + use_ram = epic12_device_ram16_copy; // slow mode + queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_HIGH_FREQ); + } + + + // cache table to avoid divides in blit code, also pre-clamped + int x,y; + for (y=0;y<0x40;y++) + { + for (x=0;x<0x20;x++) + { + epic12_device_colrtable[x][y] = (x*y) / 0x1f; + if (epic12_device_colrtable[x][y]>0x1f) epic12_device_colrtable[x][y] = 0x1f; + + epic12_device_colrtable_rev[x^0x1f][y] = (x*y) / 0x1f; + if (epic12_device_colrtable_rev[x^0x1f][y]>0x1f) epic12_device_colrtable_rev[x^0x1f][y] = 0x1f; + } + } + + // preclamped add table + for (y=0;y<0x20;y++) + { + for (x=0;x<0x20;x++) + { + epic12_device_colrtable_add[x][y] = (x+y); + if (epic12_device_colrtable_add[x][y]>0x1f) epic12_device_colrtable_add[x][y] = 0x1f; + } + } + + blitter_busy = 0; + +} + +// todo, get these into the device class without ruining performance +UINT8 epic12_device_colrtable[0x20][0x40]; +UINT8 epic12_device_colrtable_rev[0x20][0x40]; +UINT8 epic12_device_colrtable_add[0x20][0x20]; +UINT64 epic12_device_blit_delay; + +inline UINT16 epic12_device::READ_NEXT_WORD(offs_t *addr) +{ +// UINT16 data = space.read_word(*addr); // going through the memory system is 'more correct' but noticably slower + UINT16 data = use_ram[((*addr&(m_main_rammask))>>1)^3]; // this probably needs to be made endian safe tho + *addr += 2; + +// printf("data %04x\n", data); + return data; +} + +inline UINT16 epic12_device::COPY_NEXT_WORD(address_space &space, offs_t *addr) +{ +// UINT16 data = space.read_word(*addr); // going through the memory system is 'more correct' but noticably slower + UINT16 data = epic12_device_ram16[((*addr&(m_main_rammask))>>1)^3]; // this probably needs to be made endian safe tho + epic12_device_ram16_copy[((*addr&(m_main_rammask))>>1)^3] = data; + + *addr += 2; + +// printf("data %04x\n", data); + return data; +} + + +inline void epic12_device::epic12_device_gfx_upload_shadow_copy(address_space &space, offs_t *addr) +{ + UINT32 x,y, dimx,dimy; + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + + dimx = (COPY_NEXT_WORD(space, addr) & 0x1fff) + 1; + dimy = (COPY_NEXT_WORD(space, addr) & 0x0fff) + 1; + + for (y = 0; y < dimy; y++) + { + for (x = 0; x < dimx; x++) + { + COPY_NEXT_WORD(space, addr); + } + } +} + +inline void epic12_device::epic12_device_gfx_upload(offs_t *addr) +{ + UINT32 x,y, dst_p,dst_x_start,dst_y_start, dimx,dimy; + UINT32 *dst; + + // 0x20000000 + READ_NEXT_WORD(addr); + READ_NEXT_WORD(addr); + + // 0x99999999 + READ_NEXT_WORD(addr); + READ_NEXT_WORD(addr); + + dst_x_start = READ_NEXT_WORD(addr); + dst_y_start = READ_NEXT_WORD(addr); + + dst_p = 0; + dst_x_start &= 0x1fff; + dst_y_start &= 0x0fff; + + dimx = (READ_NEXT_WORD(addr) & 0x1fff) + 1; + dimy = (READ_NEXT_WORD(addr) & 0x0fff) + 1; + + logerror("GFX COPY: DST %02X,%02X,%03X DIM %02X,%03X\n", dst_p,dst_x_start,dst_y_start, dimx,dimy); + + for (y = 0; y < dimy; y++) + { + dst = &epic12_device_bitmaps->pix(dst_y_start + y, 0); + dst += dst_x_start; + + for (x = 0; x < dimx; x++) + { + UINT16 pendat = READ_NEXT_WORD(addr); + // real hw would upload the gfxword directly, but our VRAM is 32-bit, so convert it. + //dst[dst_x_start + x] = pendat; + *dst++ = ((pendat&0x8000)<<14) | ((pendat&0x7c00)<<9) | ((pendat&0x03e0)<<6) | ((pendat&0x001f)<<3); // --t- ---- rrrr r--- gggg g--- bbbb b--- format + //dst[dst_x_start + x] = ((pendat&0x8000)<<14) | ((pendat&0x7c00)<<6) | ((pendat&0x03e0)<<3) | ((pendat&0x001f)<<0); // --t- ---- ---r rrrr ---g gggg ---b bbbb format + + + } + } +} + +#define draw_params epic12_device_bitmaps, &epic12_device_clip, &epic12_device_bitmaps->pix(0,0),src_x,src_y, x,y, dimx,dimy, flipy, s_alpha, d_alpha, &tint_clr + + + +epic12_device_blitfunction epic12_device_f0_ti1_tr1_blit_funcs[] = +{ + + epic12_device::draw_sprite_f0_ti1_tr1_s0_d0, epic12_device::draw_sprite_f0_ti1_tr1_s1_d0, epic12_device::draw_sprite_f0_ti1_tr1_s2_d0, epic12_device::draw_sprite_f0_ti1_tr1_s3_d0, epic12_device::draw_sprite_f0_ti1_tr1_s4_d0, epic12_device::draw_sprite_f0_ti1_tr1_s5_d0, epic12_device::draw_sprite_f0_ti1_tr1_s6_d0, epic12_device::draw_sprite_f0_ti1_tr1_s7_d0, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d1, epic12_device::draw_sprite_f0_ti1_tr1_s1_d1, epic12_device::draw_sprite_f0_ti1_tr1_s2_d1, epic12_device::draw_sprite_f0_ti1_tr1_s3_d1, epic12_device::draw_sprite_f0_ti1_tr1_s4_d1, epic12_device::draw_sprite_f0_ti1_tr1_s5_d1, epic12_device::draw_sprite_f0_ti1_tr1_s6_d1, epic12_device::draw_sprite_f0_ti1_tr1_s7_d1, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d2, epic12_device::draw_sprite_f0_ti1_tr1_s1_d2, epic12_device::draw_sprite_f0_ti1_tr1_s2_d2, epic12_device::draw_sprite_f0_ti1_tr1_s3_d2, epic12_device::draw_sprite_f0_ti1_tr1_s4_d2, epic12_device::draw_sprite_f0_ti1_tr1_s5_d2, epic12_device::draw_sprite_f0_ti1_tr1_s6_d2, epic12_device::draw_sprite_f0_ti1_tr1_s7_d2, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d3, epic12_device::draw_sprite_f0_ti1_tr1_s1_d3, epic12_device::draw_sprite_f0_ti1_tr1_s2_d3, epic12_device::draw_sprite_f0_ti1_tr1_s3_d3, epic12_device::draw_sprite_f0_ti1_tr1_s4_d3, epic12_device::draw_sprite_f0_ti1_tr1_s5_d3, epic12_device::draw_sprite_f0_ti1_tr1_s6_d3, epic12_device::draw_sprite_f0_ti1_tr1_s7_d3, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d4, epic12_device::draw_sprite_f0_ti1_tr1_s1_d4, epic12_device::draw_sprite_f0_ti1_tr1_s2_d4, epic12_device::draw_sprite_f0_ti1_tr1_s3_d4, epic12_device::draw_sprite_f0_ti1_tr1_s4_d4, epic12_device::draw_sprite_f0_ti1_tr1_s5_d4, epic12_device::draw_sprite_f0_ti1_tr1_s6_d4, epic12_device::draw_sprite_f0_ti1_tr1_s7_d4, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d5, epic12_device::draw_sprite_f0_ti1_tr1_s1_d5, epic12_device::draw_sprite_f0_ti1_tr1_s2_d5, epic12_device::draw_sprite_f0_ti1_tr1_s3_d5, epic12_device::draw_sprite_f0_ti1_tr1_s4_d5, epic12_device::draw_sprite_f0_ti1_tr1_s5_d5, epic12_device::draw_sprite_f0_ti1_tr1_s6_d5, epic12_device::draw_sprite_f0_ti1_tr1_s7_d5, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d6, epic12_device::draw_sprite_f0_ti1_tr1_s1_d6, epic12_device::draw_sprite_f0_ti1_tr1_s2_d6, epic12_device::draw_sprite_f0_ti1_tr1_s3_d6, epic12_device::draw_sprite_f0_ti1_tr1_s4_d6, epic12_device::draw_sprite_f0_ti1_tr1_s5_d6, epic12_device::draw_sprite_f0_ti1_tr1_s6_d6, epic12_device::draw_sprite_f0_ti1_tr1_s7_d6, + epic12_device::draw_sprite_f0_ti1_tr1_s0_d7, epic12_device::draw_sprite_f0_ti1_tr1_s1_d7, epic12_device::draw_sprite_f0_ti1_tr1_s2_d7, epic12_device::draw_sprite_f0_ti1_tr1_s3_d7, epic12_device::draw_sprite_f0_ti1_tr1_s4_d7, epic12_device::draw_sprite_f0_ti1_tr1_s5_d7, epic12_device::draw_sprite_f0_ti1_tr1_s6_d7, epic12_device::draw_sprite_f0_ti1_tr1_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f0_ti1_tr0_blit_funcs[] = +{ + + epic12_device::draw_sprite_f0_ti1_tr0_s0_d0, epic12_device::draw_sprite_f0_ti1_tr0_s1_d0, epic12_device::draw_sprite_f0_ti1_tr0_s2_d0, epic12_device::draw_sprite_f0_ti1_tr0_s3_d0, epic12_device::draw_sprite_f0_ti1_tr0_s4_d0, epic12_device::draw_sprite_f0_ti1_tr0_s5_d0, epic12_device::draw_sprite_f0_ti1_tr0_s6_d0, epic12_device::draw_sprite_f0_ti1_tr0_s7_d0, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d1, epic12_device::draw_sprite_f0_ti1_tr0_s1_d1, epic12_device::draw_sprite_f0_ti1_tr0_s2_d1, epic12_device::draw_sprite_f0_ti1_tr0_s3_d1, epic12_device::draw_sprite_f0_ti1_tr0_s4_d1, epic12_device::draw_sprite_f0_ti1_tr0_s5_d1, epic12_device::draw_sprite_f0_ti1_tr0_s6_d1, epic12_device::draw_sprite_f0_ti1_tr0_s7_d1, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d2, epic12_device::draw_sprite_f0_ti1_tr0_s1_d2, epic12_device::draw_sprite_f0_ti1_tr0_s2_d2, epic12_device::draw_sprite_f0_ti1_tr0_s3_d2, epic12_device::draw_sprite_f0_ti1_tr0_s4_d2, epic12_device::draw_sprite_f0_ti1_tr0_s5_d2, epic12_device::draw_sprite_f0_ti1_tr0_s6_d2, epic12_device::draw_sprite_f0_ti1_tr0_s7_d2, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d3, epic12_device::draw_sprite_f0_ti1_tr0_s1_d3, epic12_device::draw_sprite_f0_ti1_tr0_s2_d3, epic12_device::draw_sprite_f0_ti1_tr0_s3_d3, epic12_device::draw_sprite_f0_ti1_tr0_s4_d3, epic12_device::draw_sprite_f0_ti1_tr0_s5_d3, epic12_device::draw_sprite_f0_ti1_tr0_s6_d3, epic12_device::draw_sprite_f0_ti1_tr0_s7_d3, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d4, epic12_device::draw_sprite_f0_ti1_tr0_s1_d4, epic12_device::draw_sprite_f0_ti1_tr0_s2_d4, epic12_device::draw_sprite_f0_ti1_tr0_s3_d4, epic12_device::draw_sprite_f0_ti1_tr0_s4_d4, epic12_device::draw_sprite_f0_ti1_tr0_s5_d4, epic12_device::draw_sprite_f0_ti1_tr0_s6_d4, epic12_device::draw_sprite_f0_ti1_tr0_s7_d4, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d5, epic12_device::draw_sprite_f0_ti1_tr0_s1_d5, epic12_device::draw_sprite_f0_ti1_tr0_s2_d5, epic12_device::draw_sprite_f0_ti1_tr0_s3_d5, epic12_device::draw_sprite_f0_ti1_tr0_s4_d5, epic12_device::draw_sprite_f0_ti1_tr0_s5_d5, epic12_device::draw_sprite_f0_ti1_tr0_s6_d5, epic12_device::draw_sprite_f0_ti1_tr0_s7_d5, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d6, epic12_device::draw_sprite_f0_ti1_tr0_s1_d6, epic12_device::draw_sprite_f0_ti1_tr0_s2_d6, epic12_device::draw_sprite_f0_ti1_tr0_s3_d6, epic12_device::draw_sprite_f0_ti1_tr0_s4_d6, epic12_device::draw_sprite_f0_ti1_tr0_s5_d6, epic12_device::draw_sprite_f0_ti1_tr0_s6_d6, epic12_device::draw_sprite_f0_ti1_tr0_s7_d6, + epic12_device::draw_sprite_f0_ti1_tr0_s0_d7, epic12_device::draw_sprite_f0_ti1_tr0_s1_d7, epic12_device::draw_sprite_f0_ti1_tr0_s2_d7, epic12_device::draw_sprite_f0_ti1_tr0_s3_d7, epic12_device::draw_sprite_f0_ti1_tr0_s4_d7, epic12_device::draw_sprite_f0_ti1_tr0_s5_d7, epic12_device::draw_sprite_f0_ti1_tr0_s6_d7, epic12_device::draw_sprite_f0_ti1_tr0_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f1_ti1_tr1_blit_funcs[] = +{ + + epic12_device::draw_sprite_f1_ti1_tr1_s0_d0, epic12_device::draw_sprite_f1_ti1_tr1_s1_d0, epic12_device::draw_sprite_f1_ti1_tr1_s2_d0, epic12_device::draw_sprite_f1_ti1_tr1_s3_d0, epic12_device::draw_sprite_f1_ti1_tr1_s4_d0, epic12_device::draw_sprite_f1_ti1_tr1_s5_d0, epic12_device::draw_sprite_f1_ti1_tr1_s6_d0, epic12_device::draw_sprite_f1_ti1_tr1_s7_d0, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d1, epic12_device::draw_sprite_f1_ti1_tr1_s1_d1, epic12_device::draw_sprite_f1_ti1_tr1_s2_d1, epic12_device::draw_sprite_f1_ti1_tr1_s3_d1, epic12_device::draw_sprite_f1_ti1_tr1_s4_d1, epic12_device::draw_sprite_f1_ti1_tr1_s5_d1, epic12_device::draw_sprite_f1_ti1_tr1_s6_d1, epic12_device::draw_sprite_f1_ti1_tr1_s7_d1, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d2, epic12_device::draw_sprite_f1_ti1_tr1_s1_d2, epic12_device::draw_sprite_f1_ti1_tr1_s2_d2, epic12_device::draw_sprite_f1_ti1_tr1_s3_d2, epic12_device::draw_sprite_f1_ti1_tr1_s4_d2, epic12_device::draw_sprite_f1_ti1_tr1_s5_d2, epic12_device::draw_sprite_f1_ti1_tr1_s6_d2, epic12_device::draw_sprite_f1_ti1_tr1_s7_d2, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d3, epic12_device::draw_sprite_f1_ti1_tr1_s1_d3, epic12_device::draw_sprite_f1_ti1_tr1_s2_d3, epic12_device::draw_sprite_f1_ti1_tr1_s3_d3, epic12_device::draw_sprite_f1_ti1_tr1_s4_d3, epic12_device::draw_sprite_f1_ti1_tr1_s5_d3, epic12_device::draw_sprite_f1_ti1_tr1_s6_d3, epic12_device::draw_sprite_f1_ti1_tr1_s7_d3, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d4, epic12_device::draw_sprite_f1_ti1_tr1_s1_d4, epic12_device::draw_sprite_f1_ti1_tr1_s2_d4, epic12_device::draw_sprite_f1_ti1_tr1_s3_d4, epic12_device::draw_sprite_f1_ti1_tr1_s4_d4, epic12_device::draw_sprite_f1_ti1_tr1_s5_d4, epic12_device::draw_sprite_f1_ti1_tr1_s6_d4, epic12_device::draw_sprite_f1_ti1_tr1_s7_d4, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d5, epic12_device::draw_sprite_f1_ti1_tr1_s1_d5, epic12_device::draw_sprite_f1_ti1_tr1_s2_d5, epic12_device::draw_sprite_f1_ti1_tr1_s3_d5, epic12_device::draw_sprite_f1_ti1_tr1_s4_d5, epic12_device::draw_sprite_f1_ti1_tr1_s5_d5, epic12_device::draw_sprite_f1_ti1_tr1_s6_d5, epic12_device::draw_sprite_f1_ti1_tr1_s7_d5, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d6, epic12_device::draw_sprite_f1_ti1_tr1_s1_d6, epic12_device::draw_sprite_f1_ti1_tr1_s2_d6, epic12_device::draw_sprite_f1_ti1_tr1_s3_d6, epic12_device::draw_sprite_f1_ti1_tr1_s4_d6, epic12_device::draw_sprite_f1_ti1_tr1_s5_d6, epic12_device::draw_sprite_f1_ti1_tr1_s6_d6, epic12_device::draw_sprite_f1_ti1_tr1_s7_d6, + epic12_device::draw_sprite_f1_ti1_tr1_s0_d7, epic12_device::draw_sprite_f1_ti1_tr1_s1_d7, epic12_device::draw_sprite_f1_ti1_tr1_s2_d7, epic12_device::draw_sprite_f1_ti1_tr1_s3_d7, epic12_device::draw_sprite_f1_ti1_tr1_s4_d7, epic12_device::draw_sprite_f1_ti1_tr1_s5_d7, epic12_device::draw_sprite_f1_ti1_tr1_s6_d7, epic12_device::draw_sprite_f1_ti1_tr1_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f1_ti1_tr0_blit_funcs[] = +{ + + epic12_device::draw_sprite_f1_ti1_tr0_s0_d0, epic12_device::draw_sprite_f1_ti1_tr0_s1_d0, epic12_device::draw_sprite_f1_ti1_tr0_s2_d0, epic12_device::draw_sprite_f1_ti1_tr0_s3_d0, epic12_device::draw_sprite_f1_ti1_tr0_s4_d0, epic12_device::draw_sprite_f1_ti1_tr0_s5_d0, epic12_device::draw_sprite_f1_ti1_tr0_s6_d0, epic12_device::draw_sprite_f1_ti1_tr0_s7_d0, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d1, epic12_device::draw_sprite_f1_ti1_tr0_s1_d1, epic12_device::draw_sprite_f1_ti1_tr0_s2_d1, epic12_device::draw_sprite_f1_ti1_tr0_s3_d1, epic12_device::draw_sprite_f1_ti1_tr0_s4_d1, epic12_device::draw_sprite_f1_ti1_tr0_s5_d1, epic12_device::draw_sprite_f1_ti1_tr0_s6_d1, epic12_device::draw_sprite_f1_ti1_tr0_s7_d1, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d2, epic12_device::draw_sprite_f1_ti1_tr0_s1_d2, epic12_device::draw_sprite_f1_ti1_tr0_s2_d2, epic12_device::draw_sprite_f1_ti1_tr0_s3_d2, epic12_device::draw_sprite_f1_ti1_tr0_s4_d2, epic12_device::draw_sprite_f1_ti1_tr0_s5_d2, epic12_device::draw_sprite_f1_ti1_tr0_s6_d2, epic12_device::draw_sprite_f1_ti1_tr0_s7_d2, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d3, epic12_device::draw_sprite_f1_ti1_tr0_s1_d3, epic12_device::draw_sprite_f1_ti1_tr0_s2_d3, epic12_device::draw_sprite_f1_ti1_tr0_s3_d3, epic12_device::draw_sprite_f1_ti1_tr0_s4_d3, epic12_device::draw_sprite_f1_ti1_tr0_s5_d3, epic12_device::draw_sprite_f1_ti1_tr0_s6_d3, epic12_device::draw_sprite_f1_ti1_tr0_s7_d3, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d4, epic12_device::draw_sprite_f1_ti1_tr0_s1_d4, epic12_device::draw_sprite_f1_ti1_tr0_s2_d4, epic12_device::draw_sprite_f1_ti1_tr0_s3_d4, epic12_device::draw_sprite_f1_ti1_tr0_s4_d4, epic12_device::draw_sprite_f1_ti1_tr0_s5_d4, epic12_device::draw_sprite_f1_ti1_tr0_s6_d4, epic12_device::draw_sprite_f1_ti1_tr0_s7_d4, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d5, epic12_device::draw_sprite_f1_ti1_tr0_s1_d5, epic12_device::draw_sprite_f1_ti1_tr0_s2_d5, epic12_device::draw_sprite_f1_ti1_tr0_s3_d5, epic12_device::draw_sprite_f1_ti1_tr0_s4_d5, epic12_device::draw_sprite_f1_ti1_tr0_s5_d5, epic12_device::draw_sprite_f1_ti1_tr0_s6_d5, epic12_device::draw_sprite_f1_ti1_tr0_s7_d5, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d6, epic12_device::draw_sprite_f1_ti1_tr0_s1_d6, epic12_device::draw_sprite_f1_ti1_tr0_s2_d6, epic12_device::draw_sprite_f1_ti1_tr0_s3_d6, epic12_device::draw_sprite_f1_ti1_tr0_s4_d6, epic12_device::draw_sprite_f1_ti1_tr0_s5_d6, epic12_device::draw_sprite_f1_ti1_tr0_s6_d6, epic12_device::draw_sprite_f1_ti1_tr0_s7_d6, + epic12_device::draw_sprite_f1_ti1_tr0_s0_d7, epic12_device::draw_sprite_f1_ti1_tr0_s1_d7, epic12_device::draw_sprite_f1_ti1_tr0_s2_d7, epic12_device::draw_sprite_f1_ti1_tr0_s3_d7, epic12_device::draw_sprite_f1_ti1_tr0_s4_d7, epic12_device::draw_sprite_f1_ti1_tr0_s5_d7, epic12_device::draw_sprite_f1_ti1_tr0_s6_d7, epic12_device::draw_sprite_f1_ti1_tr0_s7_d7, +}; + + + +epic12_device_blitfunction epic12_device_f0_ti0_tr1_blit_funcs[] = +{ + + epic12_device::draw_sprite_f0_ti0_tr1_s0_d0, epic12_device::draw_sprite_f0_ti0_tr1_s1_d0, epic12_device::draw_sprite_f0_ti0_tr1_s2_d0, epic12_device::draw_sprite_f0_ti0_tr1_s3_d0, epic12_device::draw_sprite_f0_ti0_tr1_s4_d0, epic12_device::draw_sprite_f0_ti0_tr1_s5_d0, epic12_device::draw_sprite_f0_ti0_tr1_s6_d0, epic12_device::draw_sprite_f0_ti0_tr1_s7_d0, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d1, epic12_device::draw_sprite_f0_ti0_tr1_s1_d1, epic12_device::draw_sprite_f0_ti0_tr1_s2_d1, epic12_device::draw_sprite_f0_ti0_tr1_s3_d1, epic12_device::draw_sprite_f0_ti0_tr1_s4_d1, epic12_device::draw_sprite_f0_ti0_tr1_s5_d1, epic12_device::draw_sprite_f0_ti0_tr1_s6_d1, epic12_device::draw_sprite_f0_ti0_tr1_s7_d1, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d2, epic12_device::draw_sprite_f0_ti0_tr1_s1_d2, epic12_device::draw_sprite_f0_ti0_tr1_s2_d2, epic12_device::draw_sprite_f0_ti0_tr1_s3_d2, epic12_device::draw_sprite_f0_ti0_tr1_s4_d2, epic12_device::draw_sprite_f0_ti0_tr1_s5_d2, epic12_device::draw_sprite_f0_ti0_tr1_s6_d2, epic12_device::draw_sprite_f0_ti0_tr1_s7_d2, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d3, epic12_device::draw_sprite_f0_ti0_tr1_s1_d3, epic12_device::draw_sprite_f0_ti0_tr1_s2_d3, epic12_device::draw_sprite_f0_ti0_tr1_s3_d3, epic12_device::draw_sprite_f0_ti0_tr1_s4_d3, epic12_device::draw_sprite_f0_ti0_tr1_s5_d3, epic12_device::draw_sprite_f0_ti0_tr1_s6_d3, epic12_device::draw_sprite_f0_ti0_tr1_s7_d3, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d4, epic12_device::draw_sprite_f0_ti0_tr1_s1_d4, epic12_device::draw_sprite_f0_ti0_tr1_s2_d4, epic12_device::draw_sprite_f0_ti0_tr1_s3_d4, epic12_device::draw_sprite_f0_ti0_tr1_s4_d4, epic12_device::draw_sprite_f0_ti0_tr1_s5_d4, epic12_device::draw_sprite_f0_ti0_tr1_s6_d4, epic12_device::draw_sprite_f0_ti0_tr1_s7_d4, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d5, epic12_device::draw_sprite_f0_ti0_tr1_s1_d5, epic12_device::draw_sprite_f0_ti0_tr1_s2_d5, epic12_device::draw_sprite_f0_ti0_tr1_s3_d5, epic12_device::draw_sprite_f0_ti0_tr1_s4_d5, epic12_device::draw_sprite_f0_ti0_tr1_s5_d5, epic12_device::draw_sprite_f0_ti0_tr1_s6_d5, epic12_device::draw_sprite_f0_ti0_tr1_s7_d5, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d6, epic12_device::draw_sprite_f0_ti0_tr1_s1_d6, epic12_device::draw_sprite_f0_ti0_tr1_s2_d6, epic12_device::draw_sprite_f0_ti0_tr1_s3_d6, epic12_device::draw_sprite_f0_ti0_tr1_s4_d6, epic12_device::draw_sprite_f0_ti0_tr1_s5_d6, epic12_device::draw_sprite_f0_ti0_tr1_s6_d6, epic12_device::draw_sprite_f0_ti0_tr1_s7_d6, + epic12_device::draw_sprite_f0_ti0_tr1_s0_d7, epic12_device::draw_sprite_f0_ti0_tr1_s1_d7, epic12_device::draw_sprite_f0_ti0_tr1_s2_d7, epic12_device::draw_sprite_f0_ti0_tr1_s3_d7, epic12_device::draw_sprite_f0_ti0_tr1_s4_d7, epic12_device::draw_sprite_f0_ti0_tr1_s5_d7, epic12_device::draw_sprite_f0_ti0_tr1_s6_d7, epic12_device::draw_sprite_f0_ti0_tr1_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f0_ti0_tr0_blit_funcs[] = +{ + + epic12_device::draw_sprite_f0_ti0_tr0_s0_d0, epic12_device::draw_sprite_f0_ti0_tr0_s1_d0, epic12_device::draw_sprite_f0_ti0_tr0_s2_d0, epic12_device::draw_sprite_f0_ti0_tr0_s3_d0, epic12_device::draw_sprite_f0_ti0_tr0_s4_d0, epic12_device::draw_sprite_f0_ti0_tr0_s5_d0, epic12_device::draw_sprite_f0_ti0_tr0_s6_d0, epic12_device::draw_sprite_f0_ti0_tr0_s7_d0, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d1, epic12_device::draw_sprite_f0_ti0_tr0_s1_d1, epic12_device::draw_sprite_f0_ti0_tr0_s2_d1, epic12_device::draw_sprite_f0_ti0_tr0_s3_d1, epic12_device::draw_sprite_f0_ti0_tr0_s4_d1, epic12_device::draw_sprite_f0_ti0_tr0_s5_d1, epic12_device::draw_sprite_f0_ti0_tr0_s6_d1, epic12_device::draw_sprite_f0_ti0_tr0_s7_d1, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d2, epic12_device::draw_sprite_f0_ti0_tr0_s1_d2, epic12_device::draw_sprite_f0_ti0_tr0_s2_d2, epic12_device::draw_sprite_f0_ti0_tr0_s3_d2, epic12_device::draw_sprite_f0_ti0_tr0_s4_d2, epic12_device::draw_sprite_f0_ti0_tr0_s5_d2, epic12_device::draw_sprite_f0_ti0_tr0_s6_d2, epic12_device::draw_sprite_f0_ti0_tr0_s7_d2, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d3, epic12_device::draw_sprite_f0_ti0_tr0_s1_d3, epic12_device::draw_sprite_f0_ti0_tr0_s2_d3, epic12_device::draw_sprite_f0_ti0_tr0_s3_d3, epic12_device::draw_sprite_f0_ti0_tr0_s4_d3, epic12_device::draw_sprite_f0_ti0_tr0_s5_d3, epic12_device::draw_sprite_f0_ti0_tr0_s6_d3, epic12_device::draw_sprite_f0_ti0_tr0_s7_d3, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d4, epic12_device::draw_sprite_f0_ti0_tr0_s1_d4, epic12_device::draw_sprite_f0_ti0_tr0_s2_d4, epic12_device::draw_sprite_f0_ti0_tr0_s3_d4, epic12_device::draw_sprite_f0_ti0_tr0_s4_d4, epic12_device::draw_sprite_f0_ti0_tr0_s5_d4, epic12_device::draw_sprite_f0_ti0_tr0_s6_d4, epic12_device::draw_sprite_f0_ti0_tr0_s7_d4, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d5, epic12_device::draw_sprite_f0_ti0_tr0_s1_d5, epic12_device::draw_sprite_f0_ti0_tr0_s2_d5, epic12_device::draw_sprite_f0_ti0_tr0_s3_d5, epic12_device::draw_sprite_f0_ti0_tr0_s4_d5, epic12_device::draw_sprite_f0_ti0_tr0_s5_d5, epic12_device::draw_sprite_f0_ti0_tr0_s6_d5, epic12_device::draw_sprite_f0_ti0_tr0_s7_d5, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d6, epic12_device::draw_sprite_f0_ti0_tr0_s1_d6, epic12_device::draw_sprite_f0_ti0_tr0_s2_d6, epic12_device::draw_sprite_f0_ti0_tr0_s3_d6, epic12_device::draw_sprite_f0_ti0_tr0_s4_d6, epic12_device::draw_sprite_f0_ti0_tr0_s5_d6, epic12_device::draw_sprite_f0_ti0_tr0_s6_d6, epic12_device::draw_sprite_f0_ti0_tr0_s7_d6, + epic12_device::draw_sprite_f0_ti0_tr0_s0_d7, epic12_device::draw_sprite_f0_ti0_tr0_s1_d7, epic12_device::draw_sprite_f0_ti0_tr0_s2_d7, epic12_device::draw_sprite_f0_ti0_tr0_s3_d7, epic12_device::draw_sprite_f0_ti0_tr0_s4_d7, epic12_device::draw_sprite_f0_ti0_tr0_s5_d7, epic12_device::draw_sprite_f0_ti0_tr0_s6_d7, epic12_device::draw_sprite_f0_ti0_tr0_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f1_ti0_tr1_blit_funcs[] = +{ + + epic12_device::draw_sprite_f1_ti0_tr1_s0_d0, epic12_device::draw_sprite_f1_ti0_tr1_s1_d0, epic12_device::draw_sprite_f1_ti0_tr1_s2_d0, epic12_device::draw_sprite_f1_ti0_tr1_s3_d0, epic12_device::draw_sprite_f1_ti0_tr1_s4_d0, epic12_device::draw_sprite_f1_ti0_tr1_s5_d0, epic12_device::draw_sprite_f1_ti0_tr1_s6_d0, epic12_device::draw_sprite_f1_ti0_tr1_s7_d0, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d1, epic12_device::draw_sprite_f1_ti0_tr1_s1_d1, epic12_device::draw_sprite_f1_ti0_tr1_s2_d1, epic12_device::draw_sprite_f1_ti0_tr1_s3_d1, epic12_device::draw_sprite_f1_ti0_tr1_s4_d1, epic12_device::draw_sprite_f1_ti0_tr1_s5_d1, epic12_device::draw_sprite_f1_ti0_tr1_s6_d1, epic12_device::draw_sprite_f1_ti0_tr1_s7_d1, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d2, epic12_device::draw_sprite_f1_ti0_tr1_s1_d2, epic12_device::draw_sprite_f1_ti0_tr1_s2_d2, epic12_device::draw_sprite_f1_ti0_tr1_s3_d2, epic12_device::draw_sprite_f1_ti0_tr1_s4_d2, epic12_device::draw_sprite_f1_ti0_tr1_s5_d2, epic12_device::draw_sprite_f1_ti0_tr1_s6_d2, epic12_device::draw_sprite_f1_ti0_tr1_s7_d2, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d3, epic12_device::draw_sprite_f1_ti0_tr1_s1_d3, epic12_device::draw_sprite_f1_ti0_tr1_s2_d3, epic12_device::draw_sprite_f1_ti0_tr1_s3_d3, epic12_device::draw_sprite_f1_ti0_tr1_s4_d3, epic12_device::draw_sprite_f1_ti0_tr1_s5_d3, epic12_device::draw_sprite_f1_ti0_tr1_s6_d3, epic12_device::draw_sprite_f1_ti0_tr1_s7_d3, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d4, epic12_device::draw_sprite_f1_ti0_tr1_s1_d4, epic12_device::draw_sprite_f1_ti0_tr1_s2_d4, epic12_device::draw_sprite_f1_ti0_tr1_s3_d4, epic12_device::draw_sprite_f1_ti0_tr1_s4_d4, epic12_device::draw_sprite_f1_ti0_tr1_s5_d4, epic12_device::draw_sprite_f1_ti0_tr1_s6_d4, epic12_device::draw_sprite_f1_ti0_tr1_s7_d4, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d5, epic12_device::draw_sprite_f1_ti0_tr1_s1_d5, epic12_device::draw_sprite_f1_ti0_tr1_s2_d5, epic12_device::draw_sprite_f1_ti0_tr1_s3_d5, epic12_device::draw_sprite_f1_ti0_tr1_s4_d5, epic12_device::draw_sprite_f1_ti0_tr1_s5_d5, epic12_device::draw_sprite_f1_ti0_tr1_s6_d5, epic12_device::draw_sprite_f1_ti0_tr1_s7_d5, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d6, epic12_device::draw_sprite_f1_ti0_tr1_s1_d6, epic12_device::draw_sprite_f1_ti0_tr1_s2_d6, epic12_device::draw_sprite_f1_ti0_tr1_s3_d6, epic12_device::draw_sprite_f1_ti0_tr1_s4_d6, epic12_device::draw_sprite_f1_ti0_tr1_s5_d6, epic12_device::draw_sprite_f1_ti0_tr1_s6_d6, epic12_device::draw_sprite_f1_ti0_tr1_s7_d6, + epic12_device::draw_sprite_f1_ti0_tr1_s0_d7, epic12_device::draw_sprite_f1_ti0_tr1_s1_d7, epic12_device::draw_sprite_f1_ti0_tr1_s2_d7, epic12_device::draw_sprite_f1_ti0_tr1_s3_d7, epic12_device::draw_sprite_f1_ti0_tr1_s4_d7, epic12_device::draw_sprite_f1_ti0_tr1_s5_d7, epic12_device::draw_sprite_f1_ti0_tr1_s6_d7, epic12_device::draw_sprite_f1_ti0_tr1_s7_d7, +}; + +epic12_device_blitfunction epic12_device_f1_ti0_tr0_blit_funcs[] = +{ + + epic12_device::draw_sprite_f1_ti0_tr0_s0_d0, epic12_device::draw_sprite_f1_ti0_tr0_s1_d0, epic12_device::draw_sprite_f1_ti0_tr0_s2_d0, epic12_device::draw_sprite_f1_ti0_tr0_s3_d0, epic12_device::draw_sprite_f1_ti0_tr0_s4_d0, epic12_device::draw_sprite_f1_ti0_tr0_s5_d0, epic12_device::draw_sprite_f1_ti0_tr0_s6_d0, epic12_device::draw_sprite_f1_ti0_tr0_s7_d0, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d1, epic12_device::draw_sprite_f1_ti0_tr0_s1_d1, epic12_device::draw_sprite_f1_ti0_tr0_s2_d1, epic12_device::draw_sprite_f1_ti0_tr0_s3_d1, epic12_device::draw_sprite_f1_ti0_tr0_s4_d1, epic12_device::draw_sprite_f1_ti0_tr0_s5_d1, epic12_device::draw_sprite_f1_ti0_tr0_s6_d1, epic12_device::draw_sprite_f1_ti0_tr0_s7_d1, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d2, epic12_device::draw_sprite_f1_ti0_tr0_s1_d2, epic12_device::draw_sprite_f1_ti0_tr0_s2_d2, epic12_device::draw_sprite_f1_ti0_tr0_s3_d2, epic12_device::draw_sprite_f1_ti0_tr0_s4_d2, epic12_device::draw_sprite_f1_ti0_tr0_s5_d2, epic12_device::draw_sprite_f1_ti0_tr0_s6_d2, epic12_device::draw_sprite_f1_ti0_tr0_s7_d2, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d3, epic12_device::draw_sprite_f1_ti0_tr0_s1_d3, epic12_device::draw_sprite_f1_ti0_tr0_s2_d3, epic12_device::draw_sprite_f1_ti0_tr0_s3_d3, epic12_device::draw_sprite_f1_ti0_tr0_s4_d3, epic12_device::draw_sprite_f1_ti0_tr0_s5_d3, epic12_device::draw_sprite_f1_ti0_tr0_s6_d3, epic12_device::draw_sprite_f1_ti0_tr0_s7_d3, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d4, epic12_device::draw_sprite_f1_ti0_tr0_s1_d4, epic12_device::draw_sprite_f1_ti0_tr0_s2_d4, epic12_device::draw_sprite_f1_ti0_tr0_s3_d4, epic12_device::draw_sprite_f1_ti0_tr0_s4_d4, epic12_device::draw_sprite_f1_ti0_tr0_s5_d4, epic12_device::draw_sprite_f1_ti0_tr0_s6_d4, epic12_device::draw_sprite_f1_ti0_tr0_s7_d4, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d5, epic12_device::draw_sprite_f1_ti0_tr0_s1_d5, epic12_device::draw_sprite_f1_ti0_tr0_s2_d5, epic12_device::draw_sprite_f1_ti0_tr0_s3_d5, epic12_device::draw_sprite_f1_ti0_tr0_s4_d5, epic12_device::draw_sprite_f1_ti0_tr0_s5_d5, epic12_device::draw_sprite_f1_ti0_tr0_s6_d5, epic12_device::draw_sprite_f1_ti0_tr0_s7_d5, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d6, epic12_device::draw_sprite_f1_ti0_tr0_s1_d6, epic12_device::draw_sprite_f1_ti0_tr0_s2_d6, epic12_device::draw_sprite_f1_ti0_tr0_s3_d6, epic12_device::draw_sprite_f1_ti0_tr0_s4_d6, epic12_device::draw_sprite_f1_ti0_tr0_s5_d6, epic12_device::draw_sprite_f1_ti0_tr0_s6_d6, epic12_device::draw_sprite_f1_ti0_tr0_s7_d6, + epic12_device::draw_sprite_f1_ti0_tr0_s0_d7, epic12_device::draw_sprite_f1_ti0_tr0_s1_d7, epic12_device::draw_sprite_f1_ti0_tr0_s2_d7, epic12_device::draw_sprite_f1_ti0_tr0_s3_d7, epic12_device::draw_sprite_f1_ti0_tr0_s4_d7, epic12_device::draw_sprite_f1_ti0_tr0_s5_d7, epic12_device::draw_sprite_f1_ti0_tr0_s6_d7, epic12_device::draw_sprite_f1_ti0_tr0_s7_d7, +}; + + + +inline void epic12_device::epic12_device_gfx_draw_shadow_copy(address_space &space, offs_t *addr, int cliptype) +{ + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); // UINT16 dst_x_start = COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); // UINT16 dst_y_start = COPY_NEXT_WORD(space, addr); + UINT16 w = COPY_NEXT_WORD(space, addr); + UINT16 h = COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + COPY_NEXT_WORD(space, addr); + + + + // todo, calcualte clipping. + epic12_device_blit_delay += w*h; + +} + + + +inline void epic12_device::epic12_device_gfx_draw(offs_t *addr) +{ + int x,y, dimx,dimy, flipx,flipy;//, src_p; + int trans,blend, s_mode, d_mode; + clr_t tint_clr; + int tinted = 0; + + UINT16 attr = READ_NEXT_WORD(addr); + UINT16 alpha = READ_NEXT_WORD(addr); + UINT16 src_x = READ_NEXT_WORD(addr); + UINT16 src_y = READ_NEXT_WORD(addr); + UINT16 dst_x_start = READ_NEXT_WORD(addr); + UINT16 dst_y_start = READ_NEXT_WORD(addr); + UINT16 w = READ_NEXT_WORD(addr); + UINT16 h = READ_NEXT_WORD(addr); + UINT16 tint_r = READ_NEXT_WORD(addr); + UINT16 tint_gb = READ_NEXT_WORD(addr); + + // 0: +alpha + // 1: +source + // 2: +dest + // 3: * + // 4: -alpha + // 5: -source + // 6: -dest + // 7: * + + d_mode = attr & 0x0007; + s_mode = (attr & 0x0070) >> 4; + + trans = attr & 0x0100; + blend = attr & 0x0200; + + flipy = attr & 0x0400; + flipx = attr & 0x0800; + + const UINT8 d_alpha = ((alpha & 0x00ff) )>>3; + const UINT8 s_alpha = ((alpha & 0xff00) >> 8 )>>3; + +// src_p = 0; + src_x = src_x & 0x1fff; + src_y = src_y & 0x0fff; + + + x = (dst_x_start & 0x7fff) - (dst_x_start & 0x8000); + y = (dst_y_start & 0x7fff) - (dst_y_start & 0x8000); + + dimx = (w & 0x1fff) + 1; + dimy = (h & 0x0fff) + 1; + + // convert parameters to clr + + + tint_to_clr(tint_r & 0x00ff, (tint_gb >> 8) & 0xff, tint_gb & 0xff, &tint_clr); + + /* interestingly this gets set to 0x20 for 'normal' not 0x1f */ + + if (tint_clr.r!=0x20) + tinted = 1; + + if (tint_clr.g!=0x20) + tinted = 1; + + if (tint_clr.b!=0x20) + tinted = 1; + + + // surprisingly frequent, need to verify if it produces a worthwhile speedup tho. + if ((s_mode==0 && s_alpha==0x1f) && (d_mode==4 && d_alpha==0x1f)) + blend = 0; + + if (tinted) + { + if (!flipx) + { + if (trans) + { + if (!blend) + { + draw_sprite_f0_ti1_tr1_plain(draw_params); + } + else + { + epic12_device_f0_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + else + { + if (!blend) + { + draw_sprite_f0_ti1_tr0_plain(draw_params); + } + else + { + epic12_device_f0_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + } + else // flipx + { + if (trans) + { + if (!blend) + { + draw_sprite_f1_ti1_tr1_plain(draw_params); + } + else + { + epic12_device_f1_ti1_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + else + { + if (!blend) + { + draw_sprite_f1_ti1_tr0_plain(draw_params); + } + else + { + epic12_device_f1_ti1_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + } + } + else + { + + if (blend==0 && tinted==0) + { + if (!flipx) + { + if (trans) + { + draw_sprite_f0_ti0_tr1_simple(draw_params); + } + else + { + draw_sprite_f0_ti0_tr0_simple(draw_params); + } + } + else + { + if (trans) + { + draw_sprite_f1_ti0_tr1_simple(draw_params); + } + else + { + draw_sprite_f1_ti0_tr0_simple(draw_params); + } + + } + + return; + } + + + + //printf("smode %d dmode %d\n", s_mode, d_mode); + + if (!flipx) + { + if (trans) + { + if (!blend) + { + draw_sprite_f0_ti0_plain(draw_params); + } + else + { + epic12_device_f0_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + else + { + if (!blend) + { + draw_sprite_f0_ti0_tr0_plain(draw_params); + } + else + { + epic12_device_f0_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + } + else // flipx + { + if (trans) + { + if (!blend) + { + draw_sprite_f1_ti0_plain(draw_params); + } + else + { + epic12_device_f1_ti0_tr1_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + else + { + if (!blend) + { + draw_sprite_f1_ti0_tr0_plain(draw_params); + } + else + { + epic12_device_f1_ti0_tr0_blit_funcs[s_mode | (d_mode<<3)](draw_params); + } + } + } + } + + + +} + + +void epic12_device::epic12_device_gfx_create_shadow_copy(address_space &space) +{ + offs_t addr = epic12_device_gfx_addr & 0x1fffffff; + UINT16 cliptype = 0; + + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x_shadowcopy; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y_shadowcopy; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + + while (1) + { + UINT16 data = COPY_NEXT_WORD(space, &addr); + + switch( data & 0xf000 ) + { + case 0x0000: + case 0xf000: + return; + + case 0xc000: + data = COPY_NEXT_WORD(space, &addr); + + cliptype = data ? 1 : 0; + + if (cliptype) + { + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x_shadowcopy; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y_shadowcopy; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + } + else + { + epic12_device_clip.min_x = 0; + epic12_device_clip.min_y = 0; + epic12_device_clip.max_x = 0x2000-1; + epic12_device_clip.max_y = 0x1000-1; + } + + break; + + case 0x2000: + addr -= 2; + epic12_device_gfx_upload_shadow_copy(space, &addr); + break; + + case 0x1000: + addr -= 2; + epic12_device_gfx_draw_shadow_copy(space, &addr, cliptype); + break; + + default: + popmessage("GFX op = %04X", data); + return; + } + } +} + + +void epic12_device::epic12_device_gfx_exec(void) +{ + UINT16 cliptype = 0; + + offs_t addr = epic12_device_gfx_addr_shadowcopy & 0x1fffffff; + +// logerror("GFX EXEC: %08X\n", addr); + + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x_shadowcopy; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y_shadowcopy; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + + while (1) + { + UINT16 data = READ_NEXT_WORD(&addr); + + switch( data & 0xf000 ) + { + case 0x0000: + case 0xf000: + return; + + case 0xc000: + data = READ_NEXT_WORD(&addr); + cliptype = data ? 1 : 0; + + if (cliptype) + { + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x_shadowcopy; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y_shadowcopy; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + } + else + { + epic12_device_clip.min_x = 0; + epic12_device_clip.min_y = 0; + epic12_device_clip.max_x = 0x2000-1; + epic12_device_clip.max_y = 0x1000-1; + } + break; + + case 0x2000: + addr -= 2; + epic12_device_gfx_upload(&addr); + break; + + case 0x1000: + addr -= 2; + epic12_device_gfx_draw(&addr); + break; + + default: + popmessage("GFX op = %04X", data); + return; + } + } +} + + +void epic12_device::epic12_device_gfx_exec_unsafe(void) +{ + UINT16 cliptype = 0; + + offs_t addr = epic12_device_gfx_addr & 0x1fffffff; + +// logerror("GFX EXEC: %08X\n", addr); + + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + + while (1) + { + UINT16 data = READ_NEXT_WORD(&addr); + + switch( data & 0xf000 ) + { + case 0x0000: + case 0xf000: + return; + + case 0xc000: + data = READ_NEXT_WORD(&addr); + cliptype = data ? 1 : 0; + + if (cliptype) + { + epic12_device_clip.min_x = epic12_device_gfx_scroll_1_x; + epic12_device_clip.min_y = epic12_device_gfx_scroll_1_y; + epic12_device_clip.max_x = epic12_device_clip.min_x + 320-1; + epic12_device_clip.max_y = epic12_device_clip.min_y + 240-1; + } + else + { + epic12_device_clip.min_x = 0; + epic12_device_clip.min_y = 0; + epic12_device_clip.max_x = 0x2000-1; + epic12_device_clip.max_y = 0x1000-1; + } + break; + + case 0x2000: + addr -= 2; + epic12_device_gfx_upload(&addr); + break; + + case 0x1000: + addr -= 2; + epic12_device_gfx_draw(&addr); + break; + + default: + popmessage("GFX op = %04X", data); + return; + } + } +} + + + +void *epic12_device::blit_request_callback(void *param, int threadid) +{ + epic12_device *object = reinterpret_cast(param); + + object->epic12_device_gfx_exec(); + return NULL; +} + + + +void *epic12_device::blit_request_callback_unsafe(void *param, int threadid) +{ + epic12_device *object = reinterpret_cast(param); + + epic12_device_blit_delay = 0; + object->epic12_device_gfx_exec_unsafe(); + return NULL; +} + + +READ32_MEMBER( epic12_device::epic12_device_gfx_ready_r ) +{ + return 0x00000010; +} + +READ32_MEMBER( epic12_device::epic12_device_gfx_ready_r_unsafe ) +{ + if (blitter_busy) + { + m_maincpu->spin_until_time(attotime::from_usec(10)); + return 0x00000000; + } + else + return 0x00000010; +} + +WRITE32_MEMBER( epic12_device::epic12_device_gfx_exec_w ) +{ + if ( ACCESSING_BITS_0_7 ) + { + if (data & 1) + { + //g_profiler.start(PROFILER_USER1); + // make sure we've not already got a request running + if (blitter_request) + { + int result; + do + { + result = osd_work_item_wait(blitter_request, 1000); + } while (result==0); + osd_work_item_release(blitter_request); + } + + epic12_device_blit_delay = 0; + epic12_device_gfx_create_shadow_copy(space); // create a copy of the blit list so we can safely thread it. + + if (epic12_device_blit_delay) + { + blitter_busy = 1; + epic12_device_blitter_delay_timer->adjust(attotime::from_nsec(epic12_device_blit_delay*8)); // NOT accurate timing (currently ignored anyway) + } + + epic12_device_gfx_addr_shadowcopy = epic12_device_gfx_addr; + epic12_device_gfx_scroll_0_x_shadowcopy = epic12_device_gfx_scroll_0_x; + epic12_device_gfx_scroll_0_y_shadowcopy = epic12_device_gfx_scroll_0_y; + epic12_device_gfx_scroll_1_x_shadowcopy = epic12_device_gfx_scroll_1_x; + epic12_device_gfx_scroll_1_y_shadowcopy = epic12_device_gfx_scroll_1_y; + blitter_request = osd_work_item_queue(queue, blit_request_callback, (void*)this, 0); + //g_profiler.stop(); + } + } +} + + +WRITE32_MEMBER( epic12_device::epic12_device_gfx_exec_w_unsafe ) +{ + if ( ACCESSING_BITS_0_7 ) + { + if (data & 1) + { + //g_profiler.start(PROFILER_USER1); + // make sure we've not already got a request running + if (blitter_request) + { + int result; + do + { + result = osd_work_item_wait(blitter_request, 1000); + } while (result==0); + osd_work_item_release(blitter_request); + } + + if (epic12_device_blit_delay) + { + blitter_busy = 1; + int delay = epic12_device_blit_delay*(15 * m_delay_scale / 50); + //printf("delay %d\n", delay); + epic12_device_blitter_delay_timer->adjust(attotime::from_nsec(delay)); + } + else + { + blitter_busy = 0; + } + + blitter_request = osd_work_item_queue(queue, blit_request_callback_unsafe, (void*)this, 0); + //g_profiler.stop(); + } + } +} + + +void epic12_device::draw_screen(bitmap_rgb32 &bitmap, const rectangle &cliprect ) +{ + if (!m_is_unsafe) + { + if (blitter_request) + { + int result; + do + { + result = osd_work_item_wait(blitter_request, 1000); + } while (result==0); + osd_work_item_release(blitter_request); + } + } + + int scroll_0_x, scroll_0_y; +// int scroll_1_x, scroll_1_y; + + bitmap.fill(0, cliprect); + + scroll_0_x = -epic12_device_gfx_scroll_0_x; + scroll_0_y = -epic12_device_gfx_scroll_0_y; +// scroll_1_x = -epic12_device_gfx_scroll_1_x; +// scroll_1_y = -epic12_device_gfx_scroll_1_y; + + //printf("SCREEN UPDATE\n %d %d %d %d\n", scroll_0_x, scroll_0_y, scroll_1_x, scroll_1_y); + + copyscrollbitmap(bitmap, *epic12_device_bitmaps, 1,&scroll_0_x, 1,&scroll_0_y, cliprect); +} + + + + + + +READ32_MEMBER( epic12_device::epic12_device_blitter_r ) +{ + switch (offset*4) + { + case 0x10: + return epic12_device::epic12_device_gfx_ready_r(space,offset,mem_mask); + + case 0x24: + return 0xffffffff; + + case 0x28: + return 0xffffffff; + + case 0x50: + return space.machine().root_device().ioport(":DSW")->read(); + + default: + logerror("unknownepic12_device_blitter_r %08x %08x\n", offset*4, mem_mask); + break; + + } + return 0; +} + +READ32_MEMBER( epic12_device::epic12_device_blitter_r_unsafe ) +{ + switch (offset*4) + { + case 0x10: + return epic12_device::epic12_device_gfx_ready_r_unsafe(space,offset,mem_mask); + + case 0x24: + return 0xffffffff; + + case 0x28: + return 0xffffffff; + + case 0x50: + return space.machine().root_device().ioport(":DSW")->read(); + + default: + logerror("unknownepic12_device_blitter_r %08x %08x\n", offset*4, mem_mask); + break; + + } + return 0; +} + + +WRITE32_MEMBER( epic12_device::epic12_device_blitter_w ) +{ + switch (offset*4) + { + case 0x04: + epic12_device_gfx_exec_w(space,offset,data,mem_mask); + break; + + case 0x08: + COMBINE_DATA(&epic12_device_gfx_addr); + break; + + case 0x14: + COMBINE_DATA(&epic12_device_gfx_scroll_0_x); + break; + + case 0x18: + COMBINE_DATA(&epic12_device_gfx_scroll_0_y); + break; + + case 0x40: + COMBINE_DATA(&epic12_device_gfx_scroll_1_x); + break; + + case 0x44: + COMBINE_DATA(&epic12_device_gfx_scroll_1_y); + break; + + } +} + +WRITE32_MEMBER( epic12_device::epic12_device_blitter_w_unsafe ) +{ + switch (offset*4) + { + case 0x04: + epic12_device_gfx_exec_w_unsafe(space,offset,data,mem_mask); + break; + + case 0x08: + COMBINE_DATA(&epic12_device_gfx_addr); + break; + + case 0x14: + COMBINE_DATA(&epic12_device_gfx_scroll_0_x); + break; + + case 0x18: + COMBINE_DATA(&epic12_device_gfx_scroll_0_y); + break; + + case 0x40: + COMBINE_DATA(&epic12_device_gfx_scroll_1_x); + break; + + case 0x44: + COMBINE_DATA(&epic12_device_gfx_scroll_1_y); + break; + + } +} + +void epic12_device::install_handlers(int addr1, int addr2) +{ + address_space &space = m_maincpu->space(AS_PROGRAM); + + read32_delegate read; + write32_delegate write; + + if (m_is_unsafe) + { + printf("using unsafe blit code!\n"); + read = read32_delegate(FUNC(epic12_device::epic12_device_blitter_r_unsafe), this); + write = write32_delegate(FUNC(epic12_device::epic12_device_blitter_w_unsafe), this); + } + else + { + read = read32_delegate(FUNC(epic12_device::epic12_device_blitter_r), this); + write = write32_delegate(FUNC(epic12_device::epic12_device_blitter_w), this); + } + + space.install_readwrite_handler(addr1, addr2, read , write, U64(0xffffffffffffffff)); + + + +} + +READ64_MEMBER( epic12_device::epic12_device_fpga_r ) +{ + return 0xff; +} + +// todo, store what's written here and checksum it, different microcode probably leads to slightly different blitter timings +WRITE64_MEMBER( epic12_device::epic12_device_fpga_w ) +{ + if (ACCESSING_BITS_24_31) + { + // data & 0x08 = CE + // data & 0x10 = CLK + // data & 0x20 = DATA + } +} diff --git a/src/emu/video/epic12.h b/src/emu/video/epic12.h new file mode 100644 index 00000000000..bbd94c151e5 --- /dev/null +++ b/src/emu/video/epic12.h @@ -0,0 +1,855 @@ + +#define MCFG_EPIC12_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EPIC12, 0) + +//#define MCFG_EP1C12_ADD(_tag,_config,_map) +// MCFG_DEVICE_CONFIG(_config) +// MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) + +#define MCFG_EPIC12_SET_MAINRAMSIZE( _rgn ) \ + epic12_device::set_mainramsize(*device, _rgn); + + +extern UINT8 epic12_device_colrtable[0x20][0x40]; +extern UINT8 epic12_device_colrtable_rev[0x20][0x40]; +extern UINT8 epic12_device_colrtable_add[0x20][0x20]; +extern UINT64 epic12_device_blit_delay; + +struct _clr_t +{ + UINT8 b,g,r,t; +}; + +typedef struct _clr_t clr_t; + +union colour_t +{ + clr_t trgb; + UINT32 u32; +}; + +typedef const void (*epic12_device_blitfunction)(bitmap_rgb32 *, + const rectangle *, + UINT32 *, /* gfx */ + int , /* src_x */ + int , /* src_y */ + const int , /* dst_x_start */ + const int , /* dst_y_start */ + int , /* dimx */ + int , /* dimy */ + const int , /* flipy */ + const UINT8 , /* s_alpha */ + const UINT8 , /* d_alpha */ + //int , /* tint */ + const clr_t * ); + + +class epic12_device : public device_t, + public device_video_interface +{ +public: + epic12_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + static void set_rambase(device_t &device, UINT16* rambase); + + inline UINT16 READ_NEXT_WORD(offs_t *addr); + + static void set_mainramsize(device_t &device, int ramsize) + { + epic12_device &dev = downcast(device); + dev.m_main_ramsize = ramsize; + dev.m_main_rammask = ramsize-1; + } + + + static void *blit_request_callback(void *param, int threadid); + + DECLARE_READ64_MEMBER( epic12_device_fpga_r ); + DECLARE_WRITE64_MEMBER( epic12_device_fpga_w ); + + void draw_screen(bitmap_rgb32 &bitmap, const rectangle &cliprect ); + + UINT16* epic12_device_ram16; + UINT32 epic12_device_gfx_addr; + UINT32 epic12_device_gfx_scroll_0_x, epic12_device_gfx_scroll_0_y; + UINT32 epic12_device_gfx_scroll_1_x, epic12_device_gfx_scroll_1_y; + + + int epic12_device_gfx_size; + bitmap_rgb32 *epic12_device_bitmaps; + rectangle epic12_device_clip; + + + UINT16* use_ram; + int m_main_ramsize; // type D has double the main ram + int m_main_rammask; + + // thread safe mode, with no delays & shadow ram copy + DECLARE_READ32_MEMBER(epic12_device_blitter_r); + DECLARE_WRITE32_MEMBER(epic12_device_blitter_w); + UINT32 epic12_device_gfx_addr_shadowcopy; + UINT32 epic12_device_gfx_scroll_0_x_shadowcopy, epic12_device_gfx_scroll_0_y_shadowcopy; + UINT32 epic12_device_gfx_scroll_1_x_shadowcopy, epic12_device_gfx_scroll_1_y_shadowcopy; + UINT16* epic12_device_ram16_copy; + inline void epic12_device_gfx_upload_shadow_copy(address_space &space, offs_t *addr); + inline void epic12_device_gfx_create_shadow_copy(address_space &space); + inline UINT16 COPY_NEXT_WORD(address_space &space, offs_t *addr); + inline void epic12_device_gfx_draw_shadow_copy(address_space &space, offs_t *addr, int cliptype); + inline void epic12_device_gfx_upload(offs_t *addr); + inline void epic12_device_gfx_draw(offs_t *addr); + void epic12_device_gfx_exec(void); + DECLARE_READ32_MEMBER( epic12_device_gfx_ready_r ); + DECLARE_WRITE32_MEMBER( epic12_device_gfx_exec_w ); + + + // for thread unsafe mode with blitter delays, no shadow copy of RAM + DECLARE_READ32_MEMBER(epic12_device_blitter_r_unsafe); + DECLARE_WRITE32_MEMBER(epic12_device_blitter_w_unsafe); + READ32_MEMBER( epic12_device_gfx_ready_r_unsafe ); + WRITE32_MEMBER( epic12_device_gfx_exec_w_unsafe ); + void epic12_device_gfx_exec_unsafe(void); + static void *blit_request_callback_unsafe(void *param, int threadid); + + int m_is_unsafe; + int m_delay_scale; + legacy_cpu_device* m_maincpu; + + static void set_delay_scale(device_t &device, int delay_scale); + static void set_is_unsafe(device_t &device, int is_unsafe); + static void set_cpu_device(device_t &device, legacy_cpu_device* maincpu); + + void install_handlers(int addr1, int addr2); + +#define BLIT_FUNCTION static const void +#define BLIT_PARAMS bitmap_rgb32 *bitmap, const rectangle *clip, UINT32 *gfx, int src_x, int src_y, const int dst_x_start, const int dst_y_start, int dimx, int dimy, const int flipy, const UINT8 s_alpha, const UINT8 d_alpha, const clr_t *tint_clr + + BLIT_FUNCTION draw_sprite_f0_ti0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f1_ti0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr1_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti1_tr0_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr1_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_plain(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d0(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d1(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d2(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d3(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d4(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d5(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d6(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s0_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s1_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s2_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s3_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s4_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s5_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s6_d7(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti1_tr0_s7_d7(BLIT_PARAMS); + + BLIT_FUNCTION draw_sprite_f0_ti0_tr1_simple(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f0_ti0_tr0_simple(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr1_simple(BLIT_PARAMS); + BLIT_FUNCTION draw_sprite_f1_ti0_tr0_simple(BLIT_PARAMS); + + + + static inline void pen_to_clr(UINT32 pen, clr_t *clr) + { + // --t- ---- rrrr r--- gggg g--- bbbb b--- format + clr->r = (pen >> (16+3));// & 0x1f; + clr->g = (pen >> (8+3));// & 0x1f; + clr->b = (pen >> 3);// & 0x1f; + + // --t- ---- ---r rrrr ---g gggg ---b bbbb format + // clr->r = (pen >> 16) & 0x1f; + // clr->g = (pen >> 8) & 0x1f; + // clr->b = (pen >> 0) & 0x1f; + + }; + + + // convert separate r,g,b biases (0..80..ff) to clr_t (-1f..0..1f) + static inline void tint_to_clr(UINT8 r, UINT8 g, UINT8 b, clr_t *clr) + { + clr->r = r>>2; + clr->g = g>>2; + clr->b = b>>2; + }; + + // clr_t to r5g5b5 + static inline UINT32 clr_to_pen(const clr_t *clr) + { + + // --t- ---- rrrr r--- gggg g--- bbbb b--- format + return (clr->r << (16+3)) | (clr->g << (8+3)) | (clr->b << 3); + + // --t- ---- ---r rrrr ---g gggg ---b bbbb format + // return (clr->r << (16)) | (clr->g << (8)) | (clr->b); + }; + + + static inline void clr_add_with_clr_mul_fixed(clr_t *clr, const clr_t *clr0, const UINT8 mulfixed_val, const clr_t *mulfixed_clr0) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(mulfixed_clr0->r)][mulfixed_val]]; + clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(mulfixed_clr0->g)][mulfixed_val]]; + clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(mulfixed_clr0->b)][mulfixed_val]]; + } + + static inline void clr_add_with_clr_mul_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr2->r)][(clr1->r)]]; + clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable[(clr2->g)][(clr1->g)]]; + clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable[(clr2->b)][(clr1->b)]]; + } + + static inline void clr_add_with_clr_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->r)][(clr1->r)]]; + clr->g = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->g)][(clr1->g)]]; + clr->b = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable[(clr1->b)][(clr1->b)]]; + } + + static inline void clr_add_with_clr_mul_fixed_rev(clr_t *clr, const clr_t *clr0, const UINT8 val, const clr_t *clr1) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[val][(clr1->r)]]; + clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[val][(clr1->g)]]; + clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[val][(clr1->b)]]; + } + + static inline void clr_add_with_clr_mul_rev_3param(clr_t *clr, const clr_t *clr0, const clr_t *clr1, const clr_t *clr2) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr2->r)][(clr1->r)]]; + clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr2->g)][(clr1->g)]]; + clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr2->b)][(clr1->b)]]; + } + + static inline void clr_add_with_clr_mul_rev_square(clr_t *clr, const clr_t *clr0, const clr_t *clr1) + { + clr->r = epic12_device_colrtable_add[clr0->r][epic12_device_colrtable_rev[(clr1->r)][(clr1->r)]]; + clr->g = epic12_device_colrtable_add[clr0->g][epic12_device_colrtable_rev[(clr1->g)][(clr1->g)]]; + clr->b = epic12_device_colrtable_add[clr0->b][epic12_device_colrtable_rev[(clr1->b)][(clr1->b)]]; + } + + + static inline void clr_add(clr_t *clr, const clr_t *clr0, const clr_t *clr1) + { + /* + clr->r = clr0->r + clr1->r; + clr->g = clr0->g + clr1->g; + clr->b = clr0->b + clr1->b; + */ + // use pre-clamped lookup table + clr->r = epic12_device_colrtable_add[clr0->r][clr1->r]; + clr->g = epic12_device_colrtable_add[clr0->g][clr1->g]; + clr->b = epic12_device_colrtable_add[clr0->b][clr1->b]; + + } + + + static inline void clr_mul(clr_t *clr0, const clr_t *clr1) + { + clr0->r = epic12_device_colrtable[(clr0->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable[(clr0->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable[(clr0->b)][(clr1->b)]; + } + + static inline void clr_square(clr_t *clr0, const clr_t *clr1) + { + clr0->r = epic12_device_colrtable[(clr1->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable[(clr1->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable[(clr1->b)][(clr1->b)]; + } + + static inline void clr_mul_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2) + { + clr0->r = epic12_device_colrtable[(clr2->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable[(clr2->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable[(clr2->b)][(clr1->b)]; + } + + static inline void clr_mul_rev(clr_t *clr0, const clr_t *clr1) + { + clr0->r = epic12_device_colrtable_rev[(clr0->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable_rev[(clr0->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable_rev[(clr0->b)][(clr1->b)]; + } + + static inline void clr_mul_rev_square(clr_t *clr0, const clr_t *clr1) + { + clr0->r = epic12_device_colrtable_rev[(clr1->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable_rev[(clr1->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable_rev[(clr1->b)][(clr1->b)]; + } + + + static inline void clr_mul_rev_3param(clr_t *clr0, const clr_t *clr1, const clr_t *clr2) + { + clr0->r = epic12_device_colrtable_rev[(clr2->r)][(clr1->r)]; + clr0->g = epic12_device_colrtable_rev[(clr2->g)][(clr1->g)]; + clr0->b = epic12_device_colrtable_rev[(clr2->b)][(clr1->b)]; + } + + static inline void clr_mul_fixed(clr_t *clr, const UINT8 val, const clr_t *clr0) + { + clr->r = epic12_device_colrtable[val][(clr0->r)]; + clr->g = epic12_device_colrtable[val][(clr0->g)]; + clr->b = epic12_device_colrtable[val][(clr0->b)]; + } + + static inline void clr_mul_fixed_rev(clr_t *clr, const UINT8 val, const clr_t *clr0) + { + clr->r = epic12_device_colrtable_rev[val][(clr0->r)]; + clr->g = epic12_device_colrtable_rev[val][(clr0->g)]; + clr->b = epic12_device_colrtable_rev[val][(clr0->b)]; + } + + static inline void clr_copy(clr_t *clr, const clr_t *clr0) + { + clr->r = clr0->r; + clr->g = clr0->g; + clr->b = clr0->b; + } + + + + // (1|s|d) * s_factor * s + (1|s|d) * d_factor * d + // 0: +alpha + // 1: +source + // 2: +dest + // 3: * + // 4: -alpha + // 5: -source + // 6: -dest + // 7: * + + +protected: + virtual void device_start(); + virtual void device_reset(); + + + + osd_work_queue * queue; /* work queue */ + osd_work_item * blitter_request; + + // blit timing + emu_timer *epic12_device_blitter_delay_timer; + int blitter_busy; + + TIMER_CALLBACK_MEMBER( epic12_device_blitter_delay_callback ); + + +private: +}; + + + + + + +extern const device_type EPIC12; diff --git a/src/emu/video/epic12_blit0.c b/src/emu/video/epic12_blit0.c new file mode 100644 index 00000000000..229b2c43699 --- /dev/null +++ b/src/emu/video/epic12_blit0.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* Non-Flipped, Non-Tinted, Transparent */ +#define FLIPX 0 +#define TINT 0 +#define TRANSPARENT 1 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f0_ti0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr1_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE diff --git a/src/emu/video/epic12_blit1.c b/src/emu/video/epic12_blit1.c new file mode 100644 index 00000000000..3067094a1ba --- /dev/null +++ b/src/emu/video/epic12_blit1.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* Non-Flipped, Non-Tinted, Non-Transparent */ +#define FLIPX 0 +#define TINT 0 +#define TRANSPARENT 0 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti0_tr0_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE diff --git a/src/emu/video/epic12_blit2.c b/src/emu/video/epic12_blit2.c new file mode 100644 index 00000000000..cff04448ff6 --- /dev/null +++ b/src/emu/video/epic12_blit2.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* X-Flipped, Non-Tinted, Transparent */ +#define FLIPX 1 +#define TINT 0 +#define TRANSPARENT 1 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f1_ti0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr1_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE \ No newline at end of file diff --git a/src/emu/video/epic12_blit3.c b/src/emu/video/epic12_blit3.c new file mode 100644 index 00000000000..5729949ca50 --- /dev/null +++ b/src/emu/video/epic12_blit3.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* X-Flipped, Non-Tinted, Non-Transparent */ +#define FLIPX 1 +#define TINT 0 +#define TRANSPARENT 0 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti0_tr0_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE \ No newline at end of file diff --git a/src/emu/video/epic12_blit4.c b/src/emu/video/epic12_blit4.c new file mode 100644 index 00000000000..4d4bcc0853b --- /dev/null +++ b/src/emu/video/epic12_blit4.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* Non-Flipped, Tinted, Transparent */ +#define FLIPX 0 +#define TINT 1 +#define TRANSPARENT 1 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr1_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE \ No newline at end of file diff --git a/src/emu/video/epic12_blit5.c b/src/emu/video/epic12_blit5.c new file mode 100644 index 00000000000..3c52a61c078 --- /dev/null +++ b/src/emu/video/epic12_blit5.c @@ -0,0 +1,556 @@ +#define REALLY_SIMPLE 0 +/* Non-Flipped, Tinted, Non-Transparent */ +#define FLIPX 0 +#define TINT 1 +#define TRANSPARENT 0 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f0_ti1_tr0_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE diff --git a/src/emu/video/epic12_blit6.c b/src/emu/video/epic12_blit6.c new file mode 100644 index 00000000000..963d6f14ca5 --- /dev/null +++ b/src/emu/video/epic12_blit6.c @@ -0,0 +1,558 @@ +#define REALLY_SIMPLE 0 +/* X-Flipped, Tinted, Transparent */ +#define FLIPX 1 +#define TINT 1 +#define TRANSPARENT 1 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr1_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE + + diff --git a/src/emu/video/epic12_blit7.c b/src/emu/video/epic12_blit7.c new file mode 100644 index 00000000000..a7203492f10 --- /dev/null +++ b/src/emu/video/epic12_blit7.c @@ -0,0 +1,558 @@ +#define REALLY_SIMPLE 0 +/* X-Flipped, Tinted, Non-Transparent */ +#define FLIPX 1 +#define TINT 1 +#define TRANSPARENT 0 + +#include "emu.h" +#include "epic12.h" + +/* Special Case */ +#define BLENDED 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_plain +#include "epic12in.inc" +#undef FUNCNAME +#undef BLENDED + +/* Regular Cases*/ +#define BLENDED 1 + +#define _SMODE 0 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 0 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d0 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/////// + + +#define _SMODE 0 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 1 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d1 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +//// + + +#define _SMODE 0 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 2 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d2 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 3 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d3 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 4 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d4 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 5 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d5 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + +#define _SMODE 0 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 6 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d6 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +/// + + +#define _SMODE 0 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s0_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 1 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s1_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 2 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s2_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 3 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s3_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 4 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s4_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 5 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s5_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 6 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s6_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#define _SMODE 7 +#define _DMODE 7 +#define FUNCNAME draw_sprite_f1_ti1_tr0_s7_d7 +#include "epic12in.inc" +#undef FUNCNAME +#undef _SMODE +#undef _DMODE + +#undef BLENDED + +#undef FLIPX +#undef TINT +#undef TRANSPARENT +#undef REALLY_SIMPLE + + diff --git a/src/emu/video/epic12_blit8.c b/src/emu/video/epic12_blit8.c new file mode 100644 index 00000000000..29bb6794e12 --- /dev/null +++ b/src/emu/video/epic12_blit8.c @@ -0,0 +1,43 @@ +/* Special case 'Really Simple' blitters, no blending, no tinting etc.*/ + +#include "emu.h" +#include "epic12.h" + + +#define REALLY_SIMPLE 1 +#define BLENDED 0 + +#define TRANSPARENT 1 +#define FLIPX 0 +#define FUNCNAME draw_sprite_f0_ti0_tr1_simple +#include "epic12in.inc" +#undef FUNCNAME +#undef FLIPX + +#define FLIPX 1 +#define FUNCNAME draw_sprite_f1_ti0_tr1_simple +#include "epic12in.inc" +#undef FUNCNAME +#undef FLIPX +#undef TRANSPARENT + + +#define TRANSPARENT 0 +#define FLIPX 0 +#define FUNCNAME draw_sprite_f0_ti0_tr0_simple +#include "epic12in.inc" +#undef FUNCNAME +#undef FLIPX + +#define FLIPX 1 +#define FUNCNAME draw_sprite_f1_ti0_tr0_simple +#include "epic12in.inc" +#undef FUNCNAME +#undef FLIPX +#undef TRANSPARENT + +#undef BLENDED +#undef REALLY_SIMPLE + + + diff --git a/src/emu/video/epic12in.inc b/src/emu/video/epic12in.inc new file mode 100644 index 00000000000..7972485f2ed --- /dev/null +++ b/src/emu/video/epic12in.inc @@ -0,0 +1,169 @@ + + + +const void epic12_device::FUNCNAME(BLIT_PARAMS) +{ + + + UINT32* gfx2; + int y, yf; + +#if REALLY_SIMPLE == 0 + colour_t s_clr; +#endif + +#if BLENDED == 1 + colour_t d_clr; + +#if _SMODE == 2 +#if _DMODE != 0 + colour_t clr0; +#endif +#elif _SMODE == 0 +#if _DMODE != 0 +#if _DMODE != 5 +#if _DMODE != 1 + colour_t clr0; +#endif +#endif +#endif +#else + colour_t clr0; +#endif + + +#endif + +#if REALLY_SIMPLE == 1 +#if TRANSPARENT == 1 + UINT32 pen; +#endif +#else + UINT32 pen; +#endif + UINT32 *bmp; + +#if FLIPX == 1 + src_x += (dimx-1); +#endif + + if (flipy) { yf = -1; src_y += (dimy-1); } + else { yf = +1; } + + int starty = 0; + const int dst_y_end = dst_y_start+dimy; + + if (dst_y_start < clip->min_y) + starty = clip->min_y - dst_y_start; + + if (dst_y_end > clip->max_y) + dimy -= (dst_y_end-1) - clip->max_y; + + // check things are safe to draw (note, if the source would wrap round an edge of the 0x2000*0x1000 vram we don't draw.. not sure what the hw does anyway) + // ddpdfk triggers this on boss explosions so it needs fixing +#if FLIPX == 1 + if ((src_x &0x1fff) < ((src_x-(dimx-1))&0x1fff)) + { + // popmessage("sprite gets clipped off src_x %04x dimx %04x\n", src_x, dimx); + return; + } +#else + if ((src_x &0x1fff) > ((src_x+(dimx-1))&0x1fff)) + { + // popmessage("sprite gets clipped off src_x %04x dimx %04x\n", src_x, dimx); + return; + } +#endif + + int startx = 0; + const int dst_x_end = dst_x_start+dimx; + + if (dst_x_start < clip->min_x) + startx = clip->min_x - dst_x_start; + + if (dst_x_end > clip->max_x) + dimx -= (dst_x_end-1) - clip->max_x; + +// wrong/unsafe slowdown sim + if (dimy > starty && dimx > startx) + { + epic12_device_blit_delay += (dimy - starty)*(dimx - startx); + + //printf("delay is now %d\n", epic12_device_blit_delay); + } + +#if BLENDED == 1 +#if _SMODE == 0 +#if _DMODE == 0 + const UINT8* salpha_table = epic12_device_colrtable[s_alpha]; + const UINT8* dalpha_table = epic12_device_colrtable[d_alpha]; +#endif + +#if _DMODE == 5 + const UINT8* salpha_table = epic12_device_colrtable[s_alpha]; +#endif +#if _DMODE == 1 + const UINT8* salpha_table = epic12_device_colrtable[s_alpha]; +#endif + +#endif + +#if _SMODE == 2 +#if _DMODE == 0 + + const UINT8* dalpha_table = epic12_device_colrtable[d_alpha]; +#endif +#endif +#endif + + + + for (y = starty; y < dimy; y++) + { + bmp = &bitmap->pix(dst_y_start + y, dst_x_start+startx); + const int ysrc_index = ((src_y + yf * y) & 0x0fff) * 0x2000; + gfx2 = gfx + ysrc_index; + + #if FLIPX == 1 + gfx2 += (src_x-startx); + #else + gfx2 += (src_x+startx); + #endif + +#if 1 + const UINT32* end = bmp+(dimx-startx); +#else + // maybe we can do some SSE type optimizations on larger blocks? right now this just results in more code and slower compiling tho. + + const int width = dimx-startx; + const UINT32* end = bmp+(width); + + if (width<0) return; + + int bigblocks = width>>3; + + while (bigblocks) + { + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + #include "epic12pixel.inc" + + bigblocks--; + } +#endif + while (bmp> 3); // using the union is actually significantly slower than our pen_to_clr to function! + // source * intesity and clamp + +#if TINT == 1 + clr_mul(&s_clr.trgb, tint_clr); +#endif + + #if BLENDED == 1 + + // convert destination to clr + pen_to_clr(*bmp, &d_clr.trgb); + //d_clr.u32 = *bmp >> 3; // using the union is actually significantly slower than our pen_to_clr to function! + #if _SMODE == 0 + //g_profiler.start(PROFILER_USER7); + + + #if _DMODE == 0 + //g_profiler.start(PROFILER_USER1); + // this is used extensively in the games (ingame, futari title screens etc.) + + s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; + s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; + s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; + #elif _DMODE == 1 + //g_profiler.start(PROFILER_USER2); + // futari ~7% + s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable[(s_clr.trgb.r)][(d_clr.trgb.r)]]; + s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable[(s_clr.trgb.g)][(d_clr.trgb.g)]]; + s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable[(s_clr.trgb.b)][(d_clr.trgb.b)]]; + #elif _DMODE == 2 + //g_profiler.start(PROFILER_USER3); + clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); + clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 3 + //g_profiler.start(PROFILER_USER4); + clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + + #elif _DMODE == 4 + //g_profiler.start(PROFILER_USER5); + clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); + clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + #elif _DMODE == 5 + // futari black character select ~13% + //g_profiler.start(PROFILER_USER6); + s_clr.trgb.r = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.r)]][epic12_device_colrtable_rev[(s_clr.trgb.r)][(d_clr.trgb.r)]]; + s_clr.trgb.g = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.g)]][epic12_device_colrtable_rev[(s_clr.trgb.g)][(d_clr.trgb.g)]]; + s_clr.trgb.b = epic12_device_colrtable_add[salpha_table[(s_clr.trgb.b)]][epic12_device_colrtable_rev[(s_clr.trgb.b)][(d_clr.trgb.b)]]; + + #elif _DMODE == 6 + //g_profiler.start(PROFILER_USER7); + clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); + clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 7 + //g_profiler.start(PROFILER_USER8); + clr_mul_fixed(&clr0.trgb, s_alpha, &s_clr.trgb); + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #endif + + //g_profiler.stop(); + #elif _SMODE == 1 + //g_profiler.start(PROFILER_USER6); + clr_square(&clr0.trgb, &s_clr.trgb); + + #elif _SMODE == 2 + // g_profiler.start(PROFILER_USER4); + #if _DMODE == 0 + // this is used heavily on espgal2 highscore screen (~28%) optimized to avoid use of temp clr0 variable + s_clr.trgb.r = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.r)][(s_clr.trgb.r)]][dalpha_table[(d_clr.trgb.r)]]; + s_clr.trgb.g = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.g)][(s_clr.trgb.g)]][dalpha_table[(d_clr.trgb.g)]]; + s_clr.trgb.b = epic12_device_colrtable_add[epic12_device_colrtable[(d_clr.trgb.b)][(s_clr.trgb.b)]][dalpha_table[(d_clr.trgb.b)]]; + #elif _DMODE == 1 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + #elif _DMODE == 2 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 3 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + + #elif _DMODE == 4 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + #elif _DMODE == 5 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + #elif _DMODE == 6 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 7 + clr_mul_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #endif + //g_profiler.stop(); + + #elif _SMODE == 3 + //g_profiler.start(PROFILER_USER1); + clr_copy(&clr0.trgb, &s_clr.trgb); + + #elif _SMODE == 4 + //g_profiler.start(PROFILER_USER2); + clr_mul_fixed_rev(&clr0.trgb, s_alpha, &s_clr.trgb); + #elif _SMODE == 5 + //g_profiler.start(PROFILER_USER3); + clr_mul_rev_square(&clr0.trgb, &s_clr.trgb); + #elif _SMODE == 6 + //g_profiler.start(PROFILER_USER4); + clr_mul_rev_3param(&clr0.trgb, &s_clr.trgb, &d_clr.trgb); + #elif _SMODE == 7 + //g_profiler.start(PROFILER_USER5); + clr_copy(&clr0.trgb, &s_clr.trgb); + #endif + + +// smode 0/2 cases are already split up and handled above. +#if _SMODE != 2 +#if _SMODE != 0 + + #if _DMODE == 0 + clr_add_with_clr_mul_fixed(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + #elif _DMODE == 1 + clr_add_with_clr_mul_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + #elif _DMODE == 2 + clr_add_with_clr_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 3 + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + + #elif _DMODE == 4 + clr_add_with_clr_mul_fixed_rev(&s_clr.trgb, &clr0.trgb, d_alpha, &d_clr.trgb); + #elif _DMODE == 5 + clr_add_with_clr_mul_rev_3param(&s_clr.trgb, &clr0.trgb, &d_clr.trgb, &s_clr.trgb); + #elif _DMODE == 6 + clr_add_with_clr_mul_rev_square(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #elif _DMODE == 7 + clr_add(&s_clr.trgb, &clr0.trgb, &d_clr.trgb); + #endif + + //g_profiler.stop(); +#endif +#endif + + + #endif + + // write result + *bmp = clr_to_pen(&s_clr.trgb)|(pen&0x20000000); + //*bmp = (s_clr.u32<<3)|(pen&0x20000000); // using the union is actually significantly slower than our clr_to_pen function! + +#endif // END NOT REALLY SIMPLE + +#if TRANSPARENT == 1 + } +#endif + LOOP_INCREMENTS + diff --git a/src/emu/video/video.mak b/src/emu/video/video.mak index f3f56ba8d4c..9997391a551 100644 --- a/src/emu/video/video.mak +++ b/src/emu/video/video.mak @@ -104,6 +104,38 @@ ifneq ($(filter EF9340_1,$(VIDEOS)),) VIDEOOBJS+= $(VIDEOOBJ)/ef9340_1.o endif +#------------------------------------------------- +#@src/emu/video/epic12.h,VIDEOS += EPIC12 +#------------------------------------------------- + +ifneq ($(filter EPIC12,$(VIDEOS)),) +VIDEOOBJS+= $(VIDEOOBJ)/epic12.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit0.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit1.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit2.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit3.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit4.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit5.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit6.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit7.o +VIDEOOBJS+= $(VIDEOOBJ)/epic12_blit8.o + +$(VIDEOOBJ)/epic12o: $(VIDEOSRC)/epic12.h + +$(VIDEOOBJ)/epic12_blit0.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit1.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit2.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit3.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit4.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit5.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit6.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit7.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc +$(VIDEOOBJ)/epic12_blit8.o: $(VIDEOSRC)/epic12.h $(VIDEOSRC)/epic12in.inc + +$(VIDEOSRC)/epic12in.inc: $(VIDEOSRC)/epic12pixel.inc + +endif + #------------------------------------------------- # #@src/emu/video/fixfreq.h,VIDEOS += FIXFREQ diff --git a/src/mame/drivers/cv1k.c b/src/mame/drivers/cv1k.c new file mode 100644 index 00000000000..c0661758496 --- /dev/null +++ b/src/mame/drivers/cv1k.c @@ -0,0 +1,1268 @@ +/* + +U2 flash rom note + +Cave often programmed the u2 roms onto defective flash chips, programming around the bad blocks. +As a result these are highly suseptible to failure, blocks around the known bad blocks appear to +decay at an alarming rate in some cases, and in others data has clearly been programmed over +blocks that were already going bad. - this is why the same game often has different u2 roms +in the different sets at the moment. - these will be reconstructed at some point. + +The flash roms do contain a 'bad block' table, so it should be possible to rebuild a 'clean' +flash ROM for each game by comparing multiple dumps of each game and ensuring no other data has +decayed. Naturally this is not an ideal situation for the less common games! + +---- + +Cave CV1000 hardware + +Games by Cave ID number: + +CA011 Mushihime-Sama +CA012 Ibara +CA012B Ibara Kuro Black Label +CA013 Espgaluda II +CA014 Pink Sweets: Ibara Sorekara +CA015 Mushihime-Sama Futari +CA015B Mushihime-Sama Futari Black Label +CA016 Muchi Muchi Pork! +CA017 Deathsmiles +CA017B Deathsmiles Black Label +CA019 Do-Don-Pachi Dai-Fukkatsu +CA019B Do-Don-Pachi Dai-Fukkatsu Black Label +CA021 Akai Katana + +CMDL01 Medal Mahjong Moukari Bancho + +Note: CA018 - Deathsmiles II: Makai no Merry Christmas on unknown custom platform + CA020 - Do-Don-Pachi Dai-ou-jou Tamashii on PGM2 platform + +PCB CV1000-B / CV1000-D ++--------------------------------------------+ +| | +| | +| | +| VOL | +| | ++-+ +-----+ +-----+ X3 | + | | U24 | | U23 | | ++-+ +-----+ +-----+ +------+ | +| |Yamaha| | +| U25* U26* |YMZ770| | +| | | | +|J D5 +------+ | +|A D2 | +|M D3 +-----+ +-----+ | +|M D4 P2* | U7 | | U6 | | +|A D1 +-----+ +-----+ | +| +-------+ | +|C |P4 JTAG| | +|o +-------+ +-------+ | +|n |Altera | +--+ | +|n D6 |Cyclone| | | | +|e X1 S1 | | |U1| | +|c S3 +---------+ +-------+ | | | +|t | | +--+ | +|e | Hitachi | | +|r | | S2 | +| | SH3 | +-----------------+ | +| | | | P3 | | +| +---------+ +-----------------+ | ++-+ X2 | + | +--+ +--+ +---+ U27 | ++-+ | | | | |U13| | +|+-+ |U2| |U4| +---+ | +||P| | | | | __ | +||8| U12* +--+ +--+ U10 / \ | +|+-+ |C126| | +| P5* P7* \__/ | ++--------------------------------------------+ + +* Denotes not populated + + CPU: Hitachi 6417709S SH3 clocked at 102.4MHz (12.800MHz * 8) +Sound: Yamaha YMZ770C-F clocked at 16.384MHz +Other: Altera Cyclone EPIC12 FPGA + Altera EPM7032 (MAX 7000 Series) at U13 + +OSC: + X1 12.800MHz (SH3 clock derived from this) + X2 32.768kHz (Used by the RTC) + X3 16.384MHz (Yamaha YMZ770C-F clock) + +Memory: + U6 (SDRAM) MT46V16M16 ? 4 MBit x 16 x 4 banks, RAM (256 MBit) + U7 (SDRAM) MT46V16M16 ? 4 MBit x 16 x 4 banks, RAM (256 MBit) + U1 (SDRAM) MT48LC2M32 ? 512K x 32 x 4 banks, (64 MBit) for CV1000-B + U1 (SDRAM) IS42S32400 - 1024K x 32 x 4 banks, (128 MBit) for CV1000-D + +Roms: + U4 (FLASH) 29LV160BB 16M-Bit CMOS 3.0V, Boot device, FPGA bit file, main program code for CV1000-B + U4 (FLASH) S29JL032H 32M-Bit CMOS 3.0V, Boot device, FPGA bit file, main program code for CV1000-D + U2 (FLASH) K9F1G08U0M 128M x 8 Bit / 64M x 16 Bit NAND. Graphics data. + U23-U24 (FLASH) MBM 29DL321, 32M-Bit CMOS 3.0V. Sound data. + U25-U26 (FLASH) MBM 29DL321, not populated + +Battery: + C126 CR2450, Powers the RTC (Real Time Clock) U10. Look at the garden clock in Ibara. NOT present on CV1000-D + +Dipswitches & Push Buttons: + S1 (DIL SWITCH) Half Pitch DIL Switch x 1, function unknown + S2 (DIL SWITCH) Half Pitch DIL Switch x 4, SW1=Setup, other switches unknown + S3 (MICRO PUSH BUTTON) Test switch, same as on the JAMMA connector +. +Connectors: + P2 (IDC CONNECTOR 20 PIN) function unknown, P2 is not always mounted + P4 (IDC CONNECTOR 14 PIN) JTAG connector + P8 (IDC CONNECTOR 10 PIN) Advanced User Debugger + P3 (CONNECTOR) Most likely an expansion port, P3 is not always mounted + P5 (CONNECTOR) D9 serial connector. Used for the mahjong Touchscreen titles. Also mounted on early Mushihime-Sama PCB's + P7 (CONNECTOR) Network port pinout. Never seen mounted on any PCB. + +Misc: + U27 (SUPERVISOR) MAX 690S 3.0V Microprocessor Supervisory Circuit. + U10 (RTC & EEPROM) RTC 9701, Serial RTC Module with EEPROM 4 kbit (256x16 bit), controlled by Altera EPM7032 U13. + U12 (RS-232 TRANCEIVER) MAX 3244E RS-232 Tranceiver, only mounted when P5 is mounted. + D1-D6 (LED) Status LED's. D6 lights up at power on then shuts off, D2 indicates coinage. + +Note: * The Altera EPM7032 usually stamped / labeled with the Cave game ID number as listed above. + * Actual flash ROMs will vary by manufacturer but will be compatible with flash ROM listed. + * The CV1000-D revision PCB has double the RAM at U1, double the ROM at U4 and no battery. + The CV1000-D is used for Dodonpachi Daifukkatsu and later games. Commonly referred to as SH3B PCB. + +Information by The Sheep, rtw, Ex-Cyber, BrianT & Guru + +------------------------------------------------------ + + To enter service mode in most cases hold down 0 (Service 2) for a few seconds + (I believe it's the test button on the PCB) + Some games also use the test dipswitch as an alternative method. + +ToDo: + +Improve Blending precision? + - I'm not sure what precision the original HW mixes with, source data is 555 RGB with 1 bit transparency (16-bits) + and the real VRAM is also clearly in this format. The Alpha values supplied however are 8bpp, and the 'Tint' + values use 0x20 for 'normal' (not 0x1f) + +Overall screen brightness / contrast (see test mode) + - Could convert ram back to 16-bit and use a palette lookup at the final blit.. probably easiest / quickest. + +Touchscreen + - Used for mmmbanc, needs SH3 serial support. + +Remaining Video issues + - mmpork startup screen flicker - the FOR USE IN JAPAN screen doesn't appear on the real PCB until after the graphics are fully loaded, it still displays 'please wait' until that point. + - is the use of the 'scroll' registers 100% correct? (related to above?) + - Sometimes the 'sprites' in mushisam lag by a frame vs the 'backgrounds' is this a timing problem, does the real game do it? + +Speedups + - Blitter is already tightly optimized + - Need SH3 recompiler? + +Blitter Timing + - Correct slowdown emulation and flags (depends on blit mode, and speed of RAM) - could do with the recompiler or alt idle skips on the busy flag wait looops + - End of Blit IRQ? (one game has a valid irq routine that looks like it was used for profiling, but nothing depends on it) + +*/ + +#include "emu.h" +#include "cpu/sh4/sh4.h" +#include "cpu/sh4/sh3comn.h" +#include "profiler.h" +#include "machine/rtc9701.h" +#include "sound/ymz770.h" +#include "video/epic12.h" +#include "machine/serflash.h" + + + +class cv1k_state : public driver_device +{ +public: + cv1k_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_blitter(*this, "blitter"), + m_serflash(*this, "game"), + m_eeprom(*this, "eeprom"), + cv1k_ram(*this, "mainram") { } + + required_device m_maincpu; + required_device m_blitter; + required_device m_serflash; + required_device m_eeprom; + + required_shared_ptr cv1k_ram; + + DECLARE_READ8_MEMBER(cv1k_flash_io_r); + DECLARE_WRITE8_MEMBER(cv1k_flash_io_w); + DECLARE_READ8_MEMBER(serial_rtc_eeprom_r); + DECLARE_WRITE8_MEMBER(serial_rtc_eeprom_w); + DECLARE_READ64_MEMBER(cv1k_flash_port_e_r); + + INTERRUPT_GEN_MEMBER(cv1k_interrupt); + UINT32 screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + DECLARE_MACHINE_RESET( cv1k ); + + /* game specific */ + DECLARE_READ64_MEMBER(mushisam_speedup_r); + DECLARE_READ64_MEMBER(mushisama_speedup_r); + DECLARE_READ64_MEMBER(espgal2_speedup_r); + DECLARE_DRIVER_INIT(mushisam); + DECLARE_DRIVER_INIT(mushisama); + DECLARE_DRIVER_INIT(espgal2); +}; + +/*************************************************************************** + Video Hardware +***************************************************************************/ + + + +UINT32 cv1k_state::screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + epic12_device::set_delay_scale(m_blitter, screen.machine().root_device().ioport(":BLITRATE")->read()); + + m_blitter->draw_screen(bitmap,cliprect); + return 0; +} + + +// FLASH interface + +READ64_MEMBER( cv1k_state::cv1k_flash_port_e_r ) +{ + return ((m_serflash->flash_ready_r(space, offset) ? 0x20 : 0x00)) | 0xdf; +} + + +READ8_MEMBER( cv1k_state::cv1k_flash_io_r ) +{ + switch (offset) + { + default: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + + // logerror("cv1k_flash_io_r offset %04x\n", offset); + return 0xff; + + case 0x00: + return m_serflash->flash_io_r(space,offset); + } +} + +WRITE8_MEMBER( cv1k_state::cv1k_flash_io_w ) +{ + switch (offset) + { + default: + case 0x03: + logerror("unknown cv1k_flash_io_w offset %04x data %02x\n", offset, data); // 03 enable/disable fgpa access? + break; + + case 0x00: + m_serflash->flash_data_w(space, offset, data); + break; + + case 0x01: + m_serflash->flash_cmd_w(space, offset, data); + break; + + case 0x2: + m_serflash->flash_addr_w(space, offset, data); + break; + } +} + + + +// ibarablk uses the rtc to render the clock in the first attract demo +// if this code returns bad values it has gfx corruption. the ibarablka set doesn't do this?! +READ8_MEMBER( cv1k_state::serial_rtc_eeprom_r ) +{ + switch (offset) + { + case 1: + return 0xfe | m_eeprom->read_bit(); + + default: + return 0; + } +} + +WRITE8_MEMBER( cv1k_state::serial_rtc_eeprom_w ) +{ + switch (offset) + { + case 0x01: + space.machine().root_device().ioport("EEPROMOUT")->write(data, 0xff); + break; + case 0x03: + m_serflash->flash_enab_w(space,offset,data); + return; + default: + logerror("unknown serial_rtc_eeprom_w access offset %02x data %02x\n",offset, data); + break; + } +} + + +static ADDRESS_MAP_START( cv1k_map, AS_PROGRAM, 64, cv1k_state ) + AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP // mmmbanc writes here on startup for some reason.. + AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x800000) // work RAM + AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(cv1k_flash_io_r, cv1k_flash_io_w, U64(0xffffffffffffffff)) + AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff)) + AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff)) +// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset + AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( cv1k_d_map, AS_PROGRAM, 64, cv1k_state ) + AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP // mmmbanc writes here on startup for some reason.. + AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("mainram") // work RAM + AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(cv1k_flash_io_r, cv1k_flash_io_w, U64(0xffffffffffffffff)) + AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, U64(0xffffffffffffffff)) + AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, U64(0xffffffffffffffff)) +// AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset + AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( cv1k_port, AS_IO, 64, cv1k_state ) + AM_RANGE(SH3_PORT_C, SH3_PORT_C+7) AM_READ_PORT("PORT_C") + AM_RANGE(SH3_PORT_D, SH3_PORT_D+7) AM_READ_PORT("PORT_D") + AM_RANGE(SH3_PORT_E, SH3_PORT_E+7) AM_READ( cv1k_flash_port_e_r ) + AM_RANGE(SH3_PORT_F, SH3_PORT_F+7) AM_READ_PORT("PORT_F") + AM_RANGE(SH3_PORT_L, SH3_PORT_L+7) AM_READ_PORT("PORT_L") + AM_RANGE(SH3_PORT_J, SH3_PORT_J+7) AM_DEVREADWRITE( "blitter", epic12_device, epic12_device_fpga_r, epic12_device_fpga_w ) +ADDRESS_MAP_END + + +static INPUT_PORTS_START( cv1k ) + PORT_START("DSW") // 18000050.l (18000050.b + 3 i.e. MSB + 3, is shown as DIPSW) +// PORT_BIT( 0xfcfffffc, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_DIPNAME( 0x00000002, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000002, DEF_STR( On ) ) + PORT_SERVICE( 0x00000001, IP_ACTIVE_HIGH ) + + PORT_START("PORT_C") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) // Service coin + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE3 ) // Test button copied here + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) // IMPLEMENT COIN ERROR! + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("PORT_D") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + + PORT_START("PORT_F") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Test Push Button + PORT_BIT( 0xfd, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("PORT_L") // 4000134.b, 4000136.b + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + + PORT_START( "EEPROMOUT" ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", rtc9701_device, write_bit) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", rtc9701_device, set_clock_line) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", rtc9701_device, set_cs_line) + + PORT_START("BLITCFG") // the Blitter Delay code isn't threadsafe, DO NOT turn on by default + PORT_CONFNAME( 0x0001, 0x0000, "Use (unsafe) Blitter Delay (requires reset)" ) + PORT_CONFSETTING( 0x0000, DEF_STR( No ) ) + PORT_CONFSETTING( 0x0001, DEF_STR( Yes ) ) + + PORT_START("BLITRATE") + PORT_ADJUSTER(50, "Blitter Delay") +INPUT_PORTS_END + + + +#define CAVE_CPU_CLOCK 12800000 * 8 +#define CAVE_CPU_CLOCK_D 166666666 + + +// none of this is verified +// (the sh3 is different to the sh4 anyway, should be changed) +static const struct sh4_config sh4cpu_config = { + 0, // md2 (clock divders) + 0, // md1 (clock divders) + 0, // md0 (clock divders) + 0, + 0, + 0, + 1, + 1, // md7 (master?) + 0, + CAVE_CPU_CLOCK // influences music sequencing in ddpdfk at least +}; + + + +INTERRUPT_GEN_MEMBER(cv1k_state::cv1k_interrupt) +{ + m_maincpu->set_input_line(2, HOLD_LINE); +} + +MACHINE_RESET_MEMBER( cv1k_state, cv1k ) +{ + epic12_device::set_rambase (m_blitter, reinterpret_cast(cv1k_ram.target())); + epic12_device::set_cpu_device (m_blitter, m_maincpu ); + epic12_device::set_is_unsafe(m_blitter, machine().root_device().ioport(":BLITCFG")->read()); + m_blitter->install_handlers( 0x18000000, 0x18000057 ); + m_blitter->reset(); +} + +static MACHINE_CONFIG_START( cv1k, cv1k_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", SH3BE, CAVE_CPU_CLOCK) + MCFG_CPU_CONFIG(sh4cpu_config) + MCFG_CPU_PROGRAM_MAP(cv1k_map) + MCFG_CPU_IO_MAP(cv1k_port) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cv1k_state, cv1k_interrupt) + + MCFG_RTC9701_ADD("eeprom") + MCFG_SERFLASH_ADD("game") + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(0x200, 0x200) + MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1) + + MCFG_PALETTE_LENGTH(0x10000) + + MCFG_SCREEN_UPDATE_DRIVER(cv1k_state, screen_update_cv1k) + + MCFG_MACHINE_RESET_OVERRIDE(cv1k_state, cv1k) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_YMZ770_ADD("ymz770", 16384000) + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_EPIC12_ADD("blitter") + MCFG_EPIC12_SET_MAINRAMSIZE(0x800000) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( cv1k_d, cv1k ) + MCFG_DEVICE_REMOVE("maincpu") + + MCFG_CPU_ADD("maincpu", SH3BE, CAVE_CPU_CLOCK) + MCFG_CPU_CONFIG(sh4cpu_config) + MCFG_CPU_PROGRAM_MAP(cv1k_d_map) + MCFG_CPU_IO_MAP(cv1k_port) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cv1k_state, cv1k_interrupt) + + MCFG_DEVICE_MODIFY("blitter") + MCFG_EPIC12_SET_MAINRAMSIZE(0x1000000) +MACHINE_CONFIG_END + +/* unused code, alt idct32 functions from metallic */ +#if 0 // variable free version + +#define fast_sincos__sin_15pi_div_64_ ( 0.6715589548) +#define fast_sincos__cos_15pi_div_64_ ( 0.7409511254) +#define fast_sincos__cos_13pi_div_64_ ( 0.8032075315) +#define fast_sincos__sin_13pi_div_64_ ( 0.5956993045) +#define fast_sincos__cos_11pi_div_64_ ( 0.8577286100) +#define fast_sincos__sin_11pi_div_64_ ( 0.5141027442) +#define fast_sincos__cos_9pi_div_64_ ( 0.9039892931) +#define fast_sincos__sin_9pi_div_64_ ( 0.4275550934) +#define fast_sincos__cos_7pi_div_64_ ( 0.9415440652) +#define fast_sincos__sin_7pi_div_64_ ( 0.3368898534) +#define fast_sincos__sin_5pi_div_64_ ( 0.2429801799) +#define fast_sincos__cos_5pi_div_64_ ( 0.9700312532) +#define fast_sincos__cos_3pi_div_64_ ( 0.9891765100) +#define fast_sincos__sin_3pi_div_64_ ( 0.1467304745) +#define fast_sincos__cos_pi_div_64_ ( 0.9987954562) +#define fast_sincos__sin_pi_div_64_ ( 0.0490676743) +#define fast_sincos__sin_7pi_div_32_ ( 0.6343932842) +#define fast_sincos__cos_7pi_div_32_ ( 0.7730104534) +#define fast_sincos__sin_5pi_div_32_ ( 0.4713967368) +#define fast_sincos__cos_5pi_div_32_ ( 0.8819212643) +#define fast_sincos__sin_3pi_div_32_ ( 0.2902846773) +#define fast_sincos__cos_3pi_div_32_ ( 0.9569403357) +#define fast_sincos__sin_pi_div_32_ ( 0.0980171403) +#define fast_sincos__cos_pi_div_32_ ( 0.9951847267) +#define fast_sincos__cos_3pi_div_16_ ( 0.8314696123) +#define fast_sincos__sin_3pi_div_16_ ( 0.5555702330) +#define fast_sincos__sin_pi_div_16_ ( 0.1950903220) +#define fast_sincos__cos_pi_div_16_ ( 0.9807852804) +#define fast_sincos__sin_pi_div_8_ ( 0.3826834324) +#define fast_sincos__cos_pi_div_8_ ( 0.9238795325) +#define fast_sincos__sin_pi_div_4_ ( 0.7071067812) + + +#define SPLIT( var2, base, diff) \ + var2 = base - diff; \ + +void mpeg_audio::idct32(const double *src, double *dst) +{ + dst[7] = (((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) * fast_sincos__cos_pi_div_8_ + ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))) * fast_sincos__sin_pi_div_8_) + (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) * fast_sincos__sin_pi_div_8_ - ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))) * fast_sincos__cos_pi_div_8_); + dst[9] = (((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) * fast_sincos__cos_pi_div_8_ + ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))) * fast_sincos__sin_pi_div_8_) - (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) * fast_sincos__sin_pi_div_8_ - ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))) * fast_sincos__cos_pi_div_8_); + dst[23] = (((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) * fast_sincos__sin_pi_div_8_ - ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))) * fast_sincos__cos_pi_div_8_) + (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) * fast_sincos__cos_pi_div_8_ + ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))) * fast_sincos__sin_pi_div_8_); + dst[25] = (((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) * fast_sincos__sin_pi_div_8_ - ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))) * fast_sincos__cos_pi_div_8_) - (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) * fast_sincos__cos_pi_div_8_ + ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) - (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))) * fast_sincos__sin_pi_div_8_); + dst[15] = ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) - ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))))*fast_sincos__sin_pi_div_4_) + ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) - ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))))*fast_sincos__sin_pi_div_4_); + dst[17] = ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) - ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))))*fast_sincos__sin_pi_div_4_) - ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) - ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_))))*fast_sincos__sin_pi_div_4_); + dst[31] = ((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_))) + ((((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)));; + dst[1] = ((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) + ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) + ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_))) + ((((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) + ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) + (((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) + ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_))); + + dst[11] = (((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) + ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)) + (((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) - ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)); + dst[13] = (((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) + ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)) - (((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) - ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)); + dst[19] = (((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) - ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)) + (((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) + ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)); + dst[21] = (((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) - ((((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)) - (((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) + ((((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) - ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_)); + dst[27] = (((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_) + ((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_)) + (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) + ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_)); + dst[29] = (((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_) + ((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__cos_pi_div_16_)) - (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__sin_pi_div_16_) + ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_)); + dst[3] = (((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_) + ((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_)) + (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) + ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_)); + dst[5] = (((((src[2] - src[29]) * fast_sincos__cos_5pi_div_64_ + (src[13] - src[18]) * fast_sincos__sin_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__sin_11pi_div_64_ + (src[5] - src[26]) * fast_sincos__cos_11pi_div_64_)) * fast_sincos__sin_3pi_div_16_ + (((src[14] - src[17]) * fast_sincos__sin_3pi_div_64_ + (src[1] - src[30]) * fast_sincos__cos_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__cos_13pi_div_64_ + (src[9] - src[22]) * fast_sincos__sin_13pi_div_64_)) * fast_sincos__cos_3pi_div_16_) + ((((src[0] - src[31]) * fast_sincos__cos_pi_div_64_ + (src[15] - src[16]) * fast_sincos__sin_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__sin_15pi_div_64_ + (src[7] - src[24]) * fast_sincos__cos_15pi_div_64_)) * fast_sincos__cos_pi_div_16_ + (((src[12] - src[19]) * fast_sincos__sin_7pi_div_64_ + (src[3] - src[28]) * fast_sincos__cos_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__cos_9pi_div_64_ + (src[11] - src[20]) * fast_sincos__sin_9pi_div_64_)) * fast_sincos__sin_pi_div_16_)) - (((((src[0] - src[31]) * fast_sincos__sin_pi_div_64_ - (src[15] - src[16]) * fast_sincos__cos_pi_div_64_) - ((src[8] - src[23]) * fast_sincos__cos_15pi_div_64_ - (src[7] - src[24]) * fast_sincos__sin_15pi_div_64_)) * fast_sincos__sin_pi_div_16_ - (((src[12] - src[19]) * fast_sincos__cos_7pi_div_64_ - (src[3] - src[28]) * fast_sincos__sin_7pi_div_64_) - ((src[4] - src[27]) * fast_sincos__sin_9pi_div_64_ - (src[11] - src[20]) * fast_sincos__cos_9pi_div_64_)) * fast_sincos__cos_pi_div_16_) + ((((src[2] - src[29]) * fast_sincos__sin_5pi_div_64_ - (src[13] - src[18]) * fast_sincos__cos_5pi_div_64_) - ((src[10] - src[21]) * fast_sincos__cos_11pi_div_64_ - (src[5] - src[26]) * fast_sincos__sin_11pi_div_64_)) * fast_sincos__cos_3pi_div_16_ - (((src[14] - src[17]) * fast_sincos__cos_3pi_div_64_ - (src[1] - src[30]) * fast_sincos__sin_3pi_div_64_) - ((src[6] - src[25]) * fast_sincos__sin_13pi_div_64_ - (src[9] - src[22]) * fast_sincos__cos_13pi_div_64_)) * fast_sincos__sin_3pi_div_16_)); + + dst[0] = ((((src[0] + src[31]) + (src[15] + src[16])) + ((src[7] + src[24]) + (src[8] + src[23]))) + (((src[3] + src[28]) + (src[12] + src[19])) + ((src[4] + src[27]) + (src[11] + src[20])))) + ((((src[1] + src[30]) + (src[14] + src[17])) + ((src[6] + src[25]) + (src[9] + src[22]))) + (((src[2] + src[29]) + (src[13] + src[18])) + ((src[5] + src[26]) + (src[10] + src[21])))); + dst[16] = (((((src[0] + src[31]) + (src[15] + src[16])) + ((src[7] + src[24]) + (src[8] + src[23]))) + (((src[3] + src[28]) + (src[12] + src[19])) + ((src[4] + src[27]) + (src[11] + src[20])))) - ((((src[1] + src[30]) + (src[14] + src[17])) + ((src[6] + src[25]) + (src[9] + src[22]))) + (((src[2] + src[29]) + (src[13] + src[18])) + ((src[5] + src[26]) + (src[10] + src[21])))))*fast_sincos__sin_pi_div_4_; + dst[8] = ((((src[0] + src[31]) + (src[15] + src[16])) + ((src[7] + src[24]) + (src[8] + src[23]))) - (((src[3] + src[28]) + (src[12] + src[19])) + ((src[4] + src[27]) + (src[11] + src[20])))) * fast_sincos__cos_pi_div_8_ + ((((src[1] + src[30]) + (src[14] + src[17])) + ((src[6] + src[25]) + (src[9] + src[22]))) - (((src[2] + src[29]) + (src[13] + src[18])) + ((src[5] + src[26]) + (src[10] + src[21])))) * fast_sincos__sin_pi_div_8_; + dst[24] = ((((src[0] + src[31]) + (src[15] + src[16])) + ((src[7] + src[24]) + (src[8] + src[23]))) - (((src[3] + src[28]) + (src[12] + src[19])) + ((src[4] + src[27]) + (src[11] + src[20])))) * fast_sincos__sin_pi_div_8_ - ((((src[1] + src[30]) + (src[14] + src[17])) + ((src[6] + src[25]) + (src[9] + src[22]))) - (((src[2] + src[29]) + (src[13] + src[18])) + ((src[5] + src[26]) + (src[10] + src[21])))) * fast_sincos__cos_pi_div_8_; + dst[12] = ((((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__cos_pi_div_16_ + (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__sin_pi_div_16_) - ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__sin_3pi_div_16_ + (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) + ((((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__sin_pi_div_16_ - (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__cos_pi_div_16_) - ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__cos_3pi_div_16_ - (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_); + dst[20] = ((((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__cos_pi_div_16_ + (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__sin_pi_div_16_) - ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__sin_3pi_div_16_ + (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__cos_3pi_div_16_))*fast_sincos__sin_pi_div_4_) - ((((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__sin_pi_div_16_ - (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__cos_pi_div_16_) - ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__cos_3pi_div_16_ - (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__sin_3pi_div_16_))*fast_sincos__sin_pi_div_4_); + dst[4] = ((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__cos_pi_div_16_ + (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__sin_pi_div_16_) + ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__sin_3pi_div_16_ + (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__cos_3pi_div_16_); + dst[28] = ((((src[0] + src[31]) + (src[15] + src[16])) - ((src[7] + src[24]) + (src[8] + src[23]))) * fast_sincos__sin_pi_div_16_ - (((src[3] + src[28]) + (src[12] + src[19])) - ((src[4] + src[27]) + (src[11] + src[20]))) * fast_sincos__cos_pi_div_16_) + ((((src[2] + src[29]) + (src[13] + src[18])) - ((src[5] + src[26]) + (src[10] + src[21]))) * fast_sincos__cos_3pi_div_16_ - (((src[1] + src[30]) + (src[14] + src[17])) - ((src[6] + src[25]) + (src[9] + src[22]))) * fast_sincos__sin_3pi_div_16_); + + dst[6] = (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) * fast_sincos__cos_pi_div_8_ + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)) * fast_sincos__sin_pi_div_8_) + (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) * fast_sincos__sin_pi_div_8_ - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)) * fast_sincos__cos_pi_div_8_); + dst[10] = (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) * fast_sincos__cos_pi_div_8_ + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)) * fast_sincos__sin_pi_div_8_) - (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) * fast_sincos__sin_pi_div_8_ - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)) * fast_sincos__cos_pi_div_8_); + dst[22] = (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) * fast_sincos__sin_pi_div_8_ - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)) * fast_sincos__cos_pi_div_8_) + (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) * fast_sincos__cos_pi_div_8_ + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)) * fast_sincos__sin_pi_div_8_); + dst[26] = (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) * fast_sincos__sin_pi_div_8_ - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)) * fast_sincos__cos_pi_div_8_) - (((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) - (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) * fast_sincos__cos_pi_div_8_ + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) - (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)) * fast_sincos__sin_pi_div_8_); + dst[30] = ((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)); + dst[2] = ((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) + ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)); + dst[14] = ((((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)))*fast_sincos__sin_pi_div_4_) + ((((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)))*fast_sincos__sin_pi_div_4_); + dst[18] = ((((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__cos_pi_div_32_ + ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__sin_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__sin_7pi_div_32_ + ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__cos_7pi_div_32_)) - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__sin_3pi_div_32_ + ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__cos_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__cos_5pi_div_32_ + ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__sin_5pi_div_32_)))*fast_sincos__sin_pi_div_4_) - ((((((src[0] + src[31]) - (src[15] + src[16])) * fast_sincos__sin_pi_div_32_ - ((src[7] + src[24]) - (src[8] + src[23])) * fast_sincos__cos_pi_div_32_) + (((src[4] + src[27]) - (src[11] + src[20])) * fast_sincos__cos_7pi_div_32_ - ((src[3] + src[28]) - (src[12] + src[19])) * fast_sincos__sin_7pi_div_32_)) - ((((src[6] + src[25]) - (src[9] + src[22])) * fast_sincos__cos_3pi_div_32_ - ((src[1] + src[30]) - (src[14] + src[17])) * fast_sincos__sin_3pi_div_32_) + (((src[2] + src[29]) - (src[13] + src[18])) * fast_sincos__sin_5pi_div_32_ - ((src[5] + src[26]) - (src[10] + src[21])) * fast_sincos__cos_5pi_div_32_)))*fast_sincos__sin_pi_div_4_); +} +#endif + +#if 0 // optimized for compiler version +const double fast_sincos[] = { + 0.6715589548 /*sin15pi/64*/ , 0.7409511254, /*cos*/ + 0.8032075315 /*cos13pi/64*/ , 0.5956993045, /*sin*/ + 0.8577286100 /*cos11pi/64*/ , 0.5141027442, /*sin*/ + 0.9039892931 /*cos9pi/64*/ , 0.4275550934, /*sin*/ + 0.9415440652 /*cos7pi/64*/ , 0.3368898534, /*sin*/ + 0.2429801799 /*sin5pi/64*/ , 0.9700312532, /*cos*/ + 0.9891765100 /*cos3pi/64*/ , 0.1467304745, /*sin*/ + 0.9987954562 /*cospi/64*/ , 0.0490676743, /*sin*/ + 0.6343932842 /*sin7pi/32*/ , 0.7730104534, /*cos*/ + 0.4713967368 /*sin5pi/32*/ , 0.8819212643, /*cos*/ + 0.2902846773 /*sin3pi/32*/ , 0.9569403357, /*cos*/ + 0.0980171403 /*sinpi/32*/ , 0.9951847267, /*cos*/ + 0.8314696123 /*cos3pi/16*/ , 0.5555702330, /*sin*/ + 0.1950903220 /*sinpi/16*/ , 0.9807852804, /*cos*/ + 0.3826834324 /*sinpi/8*/ , 0.9238795325, /*cos*/ + 0.7071067812 /*sinpi/4*/, +}; +const UINT32 _sin_15pi_div_64 = 0, _cos_15pi_div_64 = 1; +const UINT32 _cos_13pi_div_64 = 2, _sin_13pi_div_64 = 3; +const UINT32 _cos_11pi_div_64 = 4, _sin_11pi_div_64 = 5; +const UINT32 _cos_9pi_div_64 = 6, _sin_9pi_div_64 = 7; +const UINT32 _cos_7pi_div_64 = 8, _sin_7pi_div_64 = 9; +const UINT32 _sin_5pi_div_64 = 10, _cos_5pi_div_64 = 11; +const UINT32 _cos_3pi_div_64 = 12, _sin_3pi_div_64 = 13; +const UINT32 _cos_pi_div_64 = 14, _sin_pi_div_64 = 15; +const UINT32 _sin_7pi_div_32 = 16, _cos_7pi_div_32 = 17; +const UINT32 _sin_5pi_div_32 = 18, _cos_5pi_div_32 = 19; +const UINT32 _sin_3pi_div_32 = 20, _cos_3pi_div_32 = 21; +const UINT32 _sin_pi_div_32 = 22, _cos_pi_div_32 = 23; +const UINT32 _cos_3pi_div_16 = 24, _sin_3pi_div_16 = 25; +const UINT32 _sin_pi_div_16 = 26, _cos_pi_div_16 = 27; +const UINT32 _sin_pi_div_8 = 28, _cos_pi_div_8 = 29; +const UINT32 _sin_pi_div_4 = 30; + + +#define SPLIT( var1, var2, base, diff) \ + var1 = base + diff; \ + var2 = base - diff; \ + +// from MetalliC +void mpeg_audio::idct32(const double *src, double *dst) +{ + double l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15; + double r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15; + + // input + SPLIT( l0, r0, src[0], src[31] ); + SPLIT( l1, r1, src[1], src[30] ); + SPLIT( l2, r2, src[2], src[29] ); + SPLIT( l3, r3, src[3], src[28] ); + SPLIT( l4, r4, src[4], src[27] ); + SPLIT( l5, r5, src[5], src[26] ); + SPLIT( l6, r6, src[6], src[25] ); + SPLIT( l7, r7, src[7], src[24] ); + SPLIT( l8, r8, src[8], src[23] ); + SPLIT( l9, r9, src[9], src[22] ); + SPLIT(l10, r10, src[10], src[21] ); + SPLIT(l11, r11, src[11], src[20] ); + SPLIT(l12, r12, src[12], src[19] ); + SPLIT(l13, r13, src[13], src[18] ); + SPLIT(l14, r14, src[14], src[17] ); + SPLIT(l15, r15, src[15], src[16] ); + + // process + double temp3 = l0 + l15; + double temp2 = l0 - l15; + + double temp0 = l1 + l14; + double temp1 = l1 - l14; + + l0 = l2 + l13; + l2 = l2 - l13; + + l1 = l3 + l12; + l3 = l3 - l12; + + l14 = l4 + l11; + l4 = l4 - l11; + + l15 = l5 + l10; + l5 = l5 - l10; + + double temp5 = l6 + l9; + l6 = l6 - l9; + + double temp6 = l7 + l8; + l7 = l7 - l8; + + l8 = temp3 + temp6; + temp3 = temp3 - temp6; + + l9 = temp0 + temp5; + temp0 = temp0 - temp5; + + l10 = l0 + l15; + double temp4 = l0 - l15; + + l11 = l1 + l14; + l13 = l1 - l14; + + l0 = l8 + l11; + l8 = l8 - l11; + + l1 = l9 + l10; + l9 = l9 - l10; + + //// + + l10 = l0 + l1; + + l1 = (l0 - l1)*fast_sincos[_sin_pi_div_4]; + l14 = l8 * fast_sincos[_cos_pi_div_8] + l9 * fast_sincos[_sin_pi_div_8]; + l8 = l8 * fast_sincos[_sin_pi_div_8] - l9 * fast_sincos[_cos_pi_div_8]; + l9 = temp3 * fast_sincos[_cos_pi_div_16] + l13 * fast_sincos[_sin_pi_div_16]; + temp3 = temp3 * fast_sincos[_sin_pi_div_16] - l13 * fast_sincos[_cos_pi_div_16]; + l13 = temp4 * fast_sincos[_sin_3pi_div_16] + temp0 * fast_sincos[_cos_3pi_div_16]; + temp0 = temp4 * fast_sincos[_cos_3pi_div_16] - temp0 * fast_sincos[_sin_3pi_div_16]; + l15 = l9 + l13; + temp5 = (l9 - l13)*fast_sincos[_sin_pi_div_4]; + l13 = temp3 + temp0; + temp6 = (temp3 - temp0)*fast_sincos[_sin_pi_div_4]; + temp0 = temp5 + temp6; + l9 = temp5 - temp6; + temp5 = temp2 * fast_sincos[_cos_pi_div_32] + l7 * fast_sincos[_sin_pi_div_32]; + temp2 = temp2 * fast_sincos[_sin_pi_div_32] - l7 * fast_sincos[_cos_pi_div_32]; + temp6 = l6 * fast_sincos[_sin_3pi_div_32] + temp1 * fast_sincos[_cos_3pi_div_32]; + temp1 = l6 * fast_sincos[_cos_3pi_div_32] - temp1 * fast_sincos[_sin_3pi_div_32]; + double temp7 = l2 * fast_sincos[_cos_5pi_div_32] + l5 * fast_sincos[_sin_5pi_div_32]; + l2 = l2 * fast_sincos[_sin_5pi_div_32] - l5 * fast_sincos[_cos_5pi_div_32]; + l5 = l4 * fast_sincos[_sin_7pi_div_32] + l3 * fast_sincos[_cos_7pi_div_32]; + l3 = l4 * fast_sincos[_cos_7pi_div_32] - l3 * fast_sincos[_sin_7pi_div_32]; + l4 = temp5 + l5; + temp3 = temp5 - l5; + l5 = temp6 + temp7; + l7 = temp6 - temp7; + temp5 = l4 + l5; + temp6 = (l4 - l5)*fast_sincos[_sin_pi_div_4]; + temp7 = temp3 * fast_sincos[_cos_pi_div_8] + l7 * fast_sincos[_sin_pi_div_8]; + temp3 = temp3 * fast_sincos[_sin_pi_div_8] - l7 * fast_sincos[_cos_pi_div_8]; + double temp8 = temp2 + l3; + temp2 = temp2 - l3; + l3 = temp1 + l2; + temp1 = temp1 - l2; + l2 = temp8 + l3; + l7 = (temp8 - l3)*fast_sincos[_sin_pi_div_4]; + l3 = temp2 * fast_sincos[_cos_pi_div_8] + temp1 * fast_sincos[_sin_pi_div_8]; + temp2 = temp2 * fast_sincos[_sin_pi_div_8] - temp1 * fast_sincos[_cos_pi_div_8]; + temp1 = temp7 + temp2; + l5 = temp7 - temp2; + temp2 = temp6 + l7; + l4 = temp6 - l7; + l7 = temp3 + l3; + temp3 = temp3 - l3; + temp6 = r0 * fast_sincos[_cos_pi_div_64] + r15 * fast_sincos[_sin_pi_div_64]; + r0 = r0 * fast_sincos[_sin_pi_div_64] - r15 * fast_sincos[_cos_pi_div_64]; + temp7 = r14 * fast_sincos[_sin_3pi_div_64] + r1 * fast_sincos[_cos_3pi_div_64]; + r1 = r14 * fast_sincos[_cos_3pi_div_64] - r1 * fast_sincos[_sin_3pi_div_64]; + r14 = r2 * fast_sincos[_cos_5pi_div_64] + r13 * fast_sincos[_sin_5pi_div_64]; + r2 = r2 * fast_sincos[_sin_5pi_div_64] - r13 * fast_sincos[_cos_5pi_div_64]; + r13 = r12 * fast_sincos[_sin_7pi_div_64] + r3 * fast_sincos[_cos_7pi_div_64]; + r3 = r12 * fast_sincos[_cos_7pi_div_64] - r3 * fast_sincos[_sin_7pi_div_64]; + r12 = r4 * fast_sincos[_cos_9pi_div_64] + r11 * fast_sincos[_sin_9pi_div_64]; + r4 = r4 * fast_sincos[_sin_9pi_div_64] - r11 * fast_sincos[_cos_9pi_div_64]; + r11 = r10 * fast_sincos[_sin_11pi_div_64] + r5 * fast_sincos[_cos_11pi_div_64]; + r5 = r10 * fast_sincos[_cos_11pi_div_64] - r5 * fast_sincos[_sin_11pi_div_64]; + r10 = r6 * fast_sincos[_cos_13pi_div_64] + r9 * fast_sincos[_sin_13pi_div_64]; + r6 = r6 * fast_sincos[_sin_13pi_div_64] - r9 * fast_sincos[_cos_13pi_div_64]; + r9 = r8 * fast_sincos[_sin_15pi_div_64] + r7 * fast_sincos[_cos_15pi_div_64]; + r7 = r8 * fast_sincos[_cos_15pi_div_64] - r7 * fast_sincos[_sin_15pi_div_64]; + r8 = temp6 + r9; + l3 = temp6 - r9; + r9 = temp7 + r10; + r15 = temp7 - r10; + temp6 = r14 + r11; + r14 = r14 - r11; + temp7 = r13 + r12; + r13 = r13 - r12; + r12 = r8 + temp7; + r8 = r8 - temp7; + r11 = r9 + temp6; + r9 = r9 - temp6; + temp6 = r12 + r11; + temp7 = (r12 - r11)*fast_sincos[_sin_pi_div_4]; + r11 = r8 * fast_sincos[_cos_pi_div_8] + r9 * fast_sincos[_sin_pi_div_8]; + r8 = r8 * fast_sincos[_sin_pi_div_8] - r9 * fast_sincos[_cos_pi_div_8]; + r9 = l3 * fast_sincos[_cos_pi_div_16] + r13 * fast_sincos[_sin_pi_div_16]; + l3 = l3 * fast_sincos[_sin_pi_div_16] - r13 * fast_sincos[_cos_pi_div_16]; + r13 = r14 * fast_sincos[_sin_3pi_div_16] + r15 * fast_sincos[_cos_3pi_div_16]; + r15 = r14 * fast_sincos[_cos_3pi_div_16] - r15 * fast_sincos[_sin_3pi_div_16]; + r14 = r13 + r9; + temp8 = (r9 - r13)*fast_sincos[_sin_pi_div_4]; + r13 = r15 + l3; + l3 = (l3 - r15)*fast_sincos[_sin_pi_div_4]; + r15 = temp8 + l3; + r9 = temp8 - l3; + temp8 = r0 + r7; + r0 = r0 - r7; + r7 = r1 + r6; + r1 = r1 - r6; + r6 = r2 + r5; + r2 = r2 - r5; + r5 = r3 + r4; + r3 = r3 - r4; + r4 = temp8 + r5; + l3 = temp8 - r5; + temp8 = r7 + r6; + r7 = r7 - r6; + r6 = r4 + temp8; + r4 = (r4 - temp8)*fast_sincos[_sin_pi_div_4]; + r5 = l3 * fast_sincos[_cos_pi_div_8] + r7 * fast_sincos[_sin_pi_div_8]; + l3 = l3 * fast_sincos[_sin_pi_div_8] - r7 * fast_sincos[_cos_pi_div_8]; + r7 = r0 * fast_sincos[_cos_pi_div_16] + r3 * fast_sincos[_sin_pi_div_16]; + r0 = r0 * fast_sincos[_sin_pi_div_16] - r3 * fast_sincos[_cos_pi_div_16]; + r3 = r2 * fast_sincos[_sin_3pi_div_16] + r1 * fast_sincos[_cos_3pi_div_16]; + r1 = r2 * fast_sincos[_cos_3pi_div_16] - r1 * fast_sincos[_sin_3pi_div_16]; + temp8 = r7 + r3; + r7 = (r7 - r3)*fast_sincos[_sin_pi_div_4]; + r3 = r0 + r1; + r0 = (r0 - r1)*fast_sincos[_sin_pi_div_4]; + r1 = r7 + r0; + r7 = r7 - r0; + r0 = r14 + r3; + r14 = r14 - r3; + + r3 = r11 + l3; + r11 = r11 - l3; + + l3 = r15 + r7; + r15 = r15 - r7; + + r7 = temp7 + r4; + r12 = temp7 - r4; + + r4 = r9 + r1; + r9 = r9 - r1; + + r1 = r8 + r5; + r8 = r8 - r5; + r5 = r13 + temp8; + r13 = r13 - temp8; + + // output + + dst[0] = l10; + dst[1] = temp6; + dst[2] = temp5; + dst[3] = r0; + dst[4] = l15; + dst[5] = r14; + dst[6] = temp1; + dst[7] = r3; + dst[8] = l14; + dst[9] = r11; + dst[10] = l5; + dst[11] = l3; + dst[12] = temp0; + dst[13] = r15; + dst[14] = temp2; + dst[15] = r7; + dst[16] = l1; + dst[17] = r12; + dst[18] = l4; + dst[19] = r4; + dst[20] = l9; + dst[21] = r9; + dst[22] = l7; + dst[23] = r1; + dst[24] = l8; + dst[25] = r8; + dst[26] = temp3; + dst[27] = r5; + dst[28] = l13; + dst[29] = r13; + dst[30] = l2; + dst[31] = r6; +} +#endif + + +/************************************************** + +All roms are flash roms with no labels, so keep the + version numbers attached to the roms that differ + - roms which differ have also been prefixed with + the MAME set names to aid readability and prevent + accidental misloading of sets with the wrong + CRCs which causes issues with the speedups. + +**************************************************/ + +ROM_START( mushisam ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("mushisam_u4", 0x000000, 0x200000, CRC(15321b30) SHA1(d2cd714ff2299eeab6f9a7c219dfb559c8f98b45) ) /* (2004/10/12.MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) /* (2004/10/12.MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(138e2050) SHA1(9e86489a4e65af5efb5495adf6d4b3e01d5b2816) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(e3d05c9f) SHA1(130c3d62317da1729c85bd178bd51500edd73ada) ) +ROM_END + + +ROM_START( mushisama ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("mushisama_u4", 0x000000, 0x200000, CRC(0b5b30b2) SHA1(35fd1bb1561c30b311b4325bc8f4628f2fccd20b) ) /* (2004/10/12 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + //ROM_LOAD("mushisama_u2", 0x000000, 0x8400000, CRC(b1f826dc) SHA1(c287bd9f571d0df03d7fcbcf3c57c74ce564ab05) ) /* (2004/10/12 MASTER VER.) */ + ROM_LOAD("mushisama_u2", 0x000000, 0x8400000, CRC(f1e0cf65) SHA1(d00d950422309fdf08efe1e2d5f040beb45ee6fb) ) /* (2004/10/12 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(138e2050) SHA1(9e86489a4e65af5efb5495adf6d4b3e01d5b2816) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(e3d05c9f) SHA1(130c3d62317da1729c85bd178bd51500edd73ada) ) +ROM_END + +ROM_START( mushisamb ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("mushisamb_u4", 0x000000, 0x200000, CRC(9f1c7f51) SHA1(f82ae72ec03687904ca7516887080be92365a5f3) ) /* (2004/10/12 MASTER VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) +// ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(2cd13810) SHA1(40e45e201b60e63a060b68d4cc767eb64cfb99c2) ) /* (2004/10/12 MASTER VER) */ + ROM_LOAD("mushisamb_u2", 0x000000, 0x8400000, CRC(6cc9d1a9) SHA1(17907798dce1defadd10354cec6c8d364e045570) ) /* (2004/10/12 MASTER VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(138e2050) SHA1(9e86489a4e65af5efb5495adf6d4b3e01d5b2816) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(e3d05c9f) SHA1(130c3d62317da1729c85bd178bd51500edd73ada) ) +ROM_END + +ROM_START( espgal2 ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(09c908bb) SHA1(7d6031fd3542b3e1d296ff218feb40502fd78694) ) /* (2005/11/14 MASTER VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(222f58c7) SHA1(d47a5085a1debd9cb8c61d88cd39e4f5036d1797) ) /* (2005/11/14 MASTER VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(b9a10c22) SHA1(4561f95c6018c9716077224bfe9660e61fb84681) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c76b1ec4) SHA1(b98a53d41a995d968e0432ed824b0b06d93dcea8) ) +ROM_END + +ROM_START( mushitam ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("mushitam_u4", 0x000000, 0x200000, CRC(c49eb6b1) SHA1(c40ee5de89e3f1cb49ac19687657dd2b42a88d81) ) /* (2005/09/09.MASTER VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD("mushitam_u2", 0x000000, 0x8400000, CRC(8ba498ab) SHA1(459c0b4ab831bbe019bdd5b0ac56955948b9e3a6) ) /* (2005/09/09.MASTER VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(701a912a) SHA1(85c198946fb693d99928ea2595c84ba4d9dc8157) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(6feeb9a1) SHA1(992711c80e660c32f97b343c2ce8184fddd7364e) ) +ROM_END + +ROM_START( mushitama ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("mushitama_u4", 0x000000, 0x200000, CRC(4a23e6c8) SHA1(d44c287bb88e6d413a8d35d75bc1b4928ad52cdf) ) /* (2005/09/09 MASTER VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD("mushitama_u2", 0x000000, 0x8400000, CRC(3f93ff82) SHA1(6f6c250aa7134016ffb288d056bc937ea311f538) ) /* (2005/09/09 MASTER VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(701a912a) SHA1(85c198946fb693d99928ea2595c84ba4d9dc8157) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(6feeb9a1) SHA1(992711c80e660c32f97b343c2ce8184fddd7364e) ) +ROM_END + + +ROM_START( futari15 ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("futari15_u4", 0x000000, 0x200000, CRC(e8c5f128) SHA1(45fb8066fdbecb83fdc2e14555c460d0c652cd5f) ) /* (2006/12/8.MAST VER. 1.54.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD("futari15_u2", 0x000000, 0x8400000, CRC(b9eae1fc) SHA1(410f8e7cfcbfd271b41fb4f8d049a13a3191a1f9) ) /* (2006/12/8.MAST VER. 1.54.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) ) +ROM_END + +ROM_START( futari15a ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("futari15a_u4", 0x000000, 0x200000, CRC(a609cf89) SHA1(56752fae9f42fa852af8ee2eae79e25ec7f17953) ) /* (2006/12/8 MAST VER 1.54) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD("futari15a_u2", 0x000000, 0x8400000, CRC(b9d815f9) SHA1(6b6f668b0bbb087ffac65e4f0d8bd9d5b28eeb28) ) /* (2006/12/8 MAST VER 1.54) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP("u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) ) + ROM_LOAD16_WORD_SWAP("u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) ) +ROM_END + +ROM_START( futari10 ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "futari10_u4", 0x000000, 0x200000, CRC(b127dca7) SHA1(e1f518bc72fc1cdf69aefa89eafa4edaf4e84778) ) /* (2006/10/23 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "futari10_u2", 0x000000, 0x8400000, CRC(78ffcd0c) SHA1(0e2937edec15ce3f5741b72ebd3bbaaefffb556e) ) /* (2006/10/23 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) ) +ROM_END + +ROM_START( futaribl ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(6db13c62) SHA1(6a53ce7f70b754936ccbb3a4674d4b2f03979644) ) /* (2007/12/11 BLACK LABEL VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "futariblk_u2", 0x000000, 0x8400000, CRC(08c6fd62) SHA1(e1fc386b2b0e41906c724287cbf82304297e0150) ) /* (2007/12/11 BLACK LABEL VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(39f1e1f4) SHA1(53d12f59a56df35c705408c76e6e02118da656f1) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(c631a766) SHA1(8bb6934a2f5b8a9841c3dcf85192b1743773dd8b) ) +ROM_END + +ROM_START( ibara ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(8e6c155d) SHA1(38ac2107dc7824836e2b4e04c7180d5ae43c9b79) ) /* (2005/03/22 MASTER VER..) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(55840976) SHA1(4982bdce84f9603adfed7a618f18bc80359ab81e) ) /* (2005/03/22 MASTER VER..) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(ee5e585d) SHA1(7eeba4ee693060e927f8c46b16e39227c6a62392) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(f0aa3cb6) SHA1(f9d137cd879e718811b2d21a0af2a9c6b7dca2f9) ) +ROM_END + +ROM_START( ibarablk ) /* Title screen shows (c) 2005 despite the 2006 "master" date */ + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "ibarablk_u4", 0x000000, 0x200000, CRC(ee1f1f77) SHA1(ac276f3955aa4dde2544af4912819a7ae6bcf8dd) ) /* (2006/02/06. MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "ibarablk_u2", 0x000000, 0x8400000, CRC(5e46be44) SHA1(bed5f1bf452f2cac58747ecabec3c4392566a3a7) ) /* (2006/02/06. MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(a436bb22) SHA1(0556e771cc02638bf8814315ba671c2d442594f1) ) /* (2006/02/06 MASTER VER.) */ + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(d11ab6b6) SHA1(2132191cbe847e2560423e4545c969f21f8ff825) ) /* (2006/02/06 MASTER VER.) */ +ROM_END + +ROM_START( ibarablka ) /* Title screen shows (c) 2005 despite the 2006 "master" date */ + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "ibarablka_u4", 0x000000, 0x200000, CRC(a9d43839) SHA1(507696e616608c05893c7ac2814b3365e9cb0720) ) /* (2006/02/06 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "ibarablka_u2", 0x000000, 0x8400000, CRC(33400d96) SHA1(09c22b5431ac3726bf88c56efd970f56793f825a) ) /* (2006/02/06 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(a436bb22) SHA1(0556e771cc02638bf8814315ba671c2d442594f1) ) /* (2006/02/06 MASTER VER.) */ + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(d11ab6b6) SHA1(2132191cbe847e2560423e4545c969f21f8ff825) ) /* (2006/02/06 MASTER VER.) */ +ROM_END + +ROM_START( deathsml ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(1a7b98bf) SHA1(07798a4a846e5802756396b34df47d106895c1f1) ) /* (2007/10/09 MASTER VER) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) +// ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(d45b0698) SHA1(7077b9445f5ed4749c7f683191ccd312180fac38) ) /* (2007/10/09 MASTER VER) */ // one bad asset? + ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(59ef5d78) SHA1(426e506b6d88948aa55aec71c0db6e91da3d490d) ) /* (2007/10/09 MASTER VER) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(aab718c8) SHA1(0e636c46d06151abd6f73232bc479dafcafe5327) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(83881d84) SHA1(6e2294b247dfcbf0ced155dc45c706f29052775d) ) +ROM_END + +ROM_START( mmpork ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(d06cfa42) SHA1(5707feb4b3e5265daf5926f38c38612b24106f1f) ) /* (2007/ 4/17 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(1ee961b8) SHA1(81a2eba704ac1cf7fc44fa7c6a3f50e3570c104f) ) /* (2007/ 4/17 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4a4b36df) SHA1(5db5ce6fa47e5ca3263d4bd19315890c6d29df66) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(ce83d07b) SHA1(a5947467c8f5b7c4b0ad8e32df2ee29b787e355f) ) +ROM_END + +ROM_START( mmmbanc ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u4", 0x0000, 0x200000, CRC(5589d8c6) SHA1(43fbdb0effe2bc0e7135698757b6ee50200aecde) ) /* (2007/06/05 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(f3b50c30) SHA1(962327798081b292b2d3fd3b7845c0197f9f2d8a) ) /* (2007/06/05 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4caaa1bf) SHA1(9b92c13eac05601da4d9bb3eb727c156974e9f0c) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(8e3a51ba) SHA1(e34cf9acb13c3d8ca6cd1306b060b1d429872abd) ) +ROM_END + +ROM_START( pinkswts ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "pinkswts_u4", 0x0000, 0x200000, CRC(5d812c9e) SHA1(db821ec3892fd150513749d64a8b60bf147f3275) ) /* (2006/04/06 MASTER VER....) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "pinkswts_u2", 0x000000, 0x8400000, CRC(92d3243a) SHA1(e9d20c62f642fb2f62ef83ed5caeee6b3f67fef9) ) /* (2006/04/06 MASTER VER....) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4b82d250) SHA1(ee98dbc3f791efb6d58f3945bcb2044667ae7978) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(e93f0627) SHA1(6f5ec0ade87f7fc42a58a8f125557a4d1f3f187d) ) +ROM_END + +ROM_START( pinkswtsa ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "pnkswtsa_u4", 0x0000, 0x200000, CRC(ee3339b2) SHA1(995988d370731a7074b49ce8752525dadf06a954) ) /* (2006/04/06 MASTER VER...) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "pnkswtsa_u2", 0x000000, 0x8400000, CRC(829a862e) SHA1(8c0ee2a0eb33b68869252fd68aed74820a904287) ) /* (2006/04/06 MASTER VER...) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4b82d250) SHA1(ee98dbc3f791efb6d58f3945bcb2044667ae7978) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(e93f0627) SHA1(6f5ec0ade87f7fc42a58a8f125557a4d1f3f187d) ) +ROM_END + +ROM_START( pinkswtsb ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "pnkswtsb_u4", 0x0000, 0x200000, CRC(68bcc009) SHA1(2fef544b93c61161a37365f868b431d8262e4b21) ) /* (2006/04/06 MASTER VER.) */ + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "pnkswtsb_u2", 0x000000, 0x8400000, CRC(a5666ed9) SHA1(682e06c84990225bc6bb0c9f38b5f46c4e36b430) ) /* (2006/04/06 MASTER VER.) */ + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4b82d250) SHA1(ee98dbc3f791efb6d58f3945bcb2044667ae7978) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(e93f0627) SHA1(6f5ec0ade87f7fc42a58a8f125557a4d1f3f187d) ) +ROM_END + +ROM_START( pinkswtsx ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "pnkswtsx_u4", 0x0000, 0x200000, CRC(8fe05bf0) SHA1(5cd45ac0e74690787c83d3fb383a65ed7cd47104) ) // (2006/xx/xx MASTER VER.) + ROM_RELOAD(0x200000,0x200000) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "pnkswtsx_u2", 0x000000, 0x8400000, CRC(91e4deb2) SHA1(893cb10d6f805df7cb4a1bb709a3ea6de147b7e9) ) // (2006/xx/xx MASTER VER.) + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(4b82d250) SHA1(ee98dbc3f791efb6d58f3945bcb2044667ae7978) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(e93f0627) SHA1(6f5ec0ade87f7fc42a58a8f125557a4d1f3f187d) ) +ROM_END + +ROM_START( ddpdfk ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "(__ddpdfk)u4", 0x0000, 0x400000, CRC(9976d699) SHA1(9dfe9d1daf6f638cafce8cdc5230209e2bcb7522) ) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "(__ddpdfk)u2", 0x000000, 0x8400000, CRC(84a51a4f) SHA1(291a6279c0746d2eb8630e7d6d886043f0cfdd94) ) +// ROM_LOAD( "u2_bad1", 0x000000, 0x8400000, CRC(05e5d333) SHA1(3324fc3b092cbb56d3cfb539c8fd919f55abe910) ) // 1 corrupted image +// ROM_LOAD( "u2_bad2", 0x000000, 0x8400000, CRC(ce641eab) SHA1(fd86e141a049cc12c7169ad43b5ebe068ea61402) ) // 8 corrupted image(s) + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(27032cde) SHA1(5b58d0140d72b91db4e763ca4af93060d36ac74d) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(a6178c2c) SHA1(7742ad1de2e4b0d0206ad11d467ea35da36352df) ) +ROM_END + + + +ROM_START( ddpdfk10 ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "(__ddpdfk10)u4", 0x0000, 0x400000, CRC(a3d650b2) SHA1(46a7551760e18c2cecd372c3f4be16f6600efc2c) ) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "(__ddpdfk10)u2", 0x000000, 0x8400000, CRC(d349cb2a) SHA1(c364c36b69b93f8f62390f185d044f51056669ff) ) + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "u23", 0x000000, 0x400000, CRC(27032cde) SHA1(5b58d0140d72b91db4e763ca4af93060d36ac74d) ) + ROM_LOAD16_WORD_SWAP( "u24", 0x400000, 0x400000, CRC(a6178c2c) SHA1(7742ad1de2e4b0d0206ad11d467ea35da36352df) ) +ROM_END + +ROM_START( dsmbl ) + ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "(__dsmbl)u4", 0x000000, 0x400000, CRC(77fc5ad1) SHA1(afe044fc16e9494143c876879b033caccd08cf22) ) + + ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_LOAD( "(__dsmbl)u2", 0x000000, 0x8400000, CRC(d6b85b7a) SHA1(4674f6ad07f6a03904ca3d05060816b8fe061add) ) + + ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) + ROM_LOAD16_WORD_SWAP( "(__dsmbl)u23", 0x000000, 0x400000, CRC(a9536a6a) SHA1(4b9dcaf6803b1fcfdf73ae9daabc4508fec71631) ) + ROM_LOAD16_WORD_SWAP( "(__dsmbl)u24", 0x400000, 0x400000, CRC(3b673326) SHA1(1ae847eb4e752fef1d72081d82344f0ad0537c31) ) +ROM_END + + + +READ64_MEMBER( cv1k_state::mushisam_speedup_r ) +{ + int pc = m_maincpu->pc(); + if ( pc == 0xc04a0aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam + else if (pc == 0xc04a0da) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushitam +// else printf("read %08x\n", m_maincpu->pc()); + return cv1k_ram[0x0022f0/8]; +} + +DRIVER_INIT_MEMBER(cv1k_state,mushisam) +{ + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0022f0, 0xc0022f7, read64_delegate(FUNC(cv1k_state::mushisam_speedup_r),this)); +} + +READ64_MEMBER( cv1k_state::mushisama_speedup_r ) +{ + if (m_maincpu->pc()== 0xc04a2aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam +// else printf("read %08x\n", m_maincpu->pc()); + return cv1k_ram[0x00024d8/8]; +} + +DRIVER_INIT_MEMBER(cv1k_state,mushisama) +{ + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0024d8, 0xc0024df, read64_delegate(FUNC(cv1k_state::mushisama_speedup_r),this)); +} + +READ64_MEMBER( cv1k_state::espgal2_speedup_r ) +{ + int pc = m_maincpu->pc(); + + if ( pc == 0xc05177a ) m_maincpu->spin_until_time( attotime::from_usec(10)); // espgal2 + if ( pc == 0xc05176a ) m_maincpu->spin_until_time( attotime::from_usec(10)); // futari15 / futari15a / futari10 / futariblk / ibarablk / ibarablka / mmpork / mmmbanc + if ( pc == 0xc0519a2 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // deathsml + if ( pc == 0xc1d1346 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // dpddfk +// else printf("read %08x\n", m_maincpu->pc()); + return cv1k_ram[0x002310/8]; +} + +DRIVER_INIT_MEMBER(cv1k_state,espgal2) +{ + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc002310, 0xc002317, read64_delegate(FUNC(cv1k_state::espgal2_speedup_r),this)); +} + + +// The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes. + +// CA011 Mushihime-Sama +GAME( 2004, mushisam, 0, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave", "Mushihime-Sama (2004/10/12.MASTER VER.)", 0 ) +GAME( 2004, mushisama, mushisam, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave", "Mushihime-Sama (2004/10/12 MASTER VER.)", 0 ) +GAME( 2004, mushisamb, mushisam, cv1k, cv1k, cv1k_state, mushisama, ROT270, "Cave", "Mushihime-Sama (2004/10/12 MASTER VER)", 0 ) + +// CA012 Ibara +GAME( 2005, ibara, 0, cv1k, cv1k, cv1k_state, mushisam, ROT270, "Cave", "Ibara (2005/03/22 MASTER VER..)", 0 ) + +// CA012B Ibara Kuro Black Label +GAME( 2006, ibarablk, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", 0 ) +GAME( 2006, ibarablka, ibarablk, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", 0 ) + +// CA013 Espgaluda II +GAME( 2005, espgal2, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Espgaluda II (2005/11/14 MASTER VER)", 0 ) + +// CA??? Puzzle! Mushihime-Tama +GAME( 2005, mushitam, 0, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", 0 ) +GAME( 2005, mushitama, mushitam, cv1k, cv1k, cv1k_state, mushisam, ROT0, "Cave", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", 0 ) + +// CA014 Pink Sweets: Ibara Sorekara +GAME( 2006, pinkswts, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", 0 ) +GAME( 2006, pinkswtsa, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", 0 ) +GAME( 2006, pinkswtsb, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", 0 ) +GAME( 2006, pinkswtsx, pinkswts, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)", 0 ) // defaults to freeplay, possibly bootlegged from show/dev version? + +// CA015 Mushihime-Sama Futari +GAME( 2006, futari15, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)", 0 ) +GAME( 2006, futari15a, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)", 0 ) +GAME( 2006, futari10, futari15, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", 0 ) + +// CA016 Muchi Muchi Pork! +GAME( 2007, mmpork, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", 0 ) + +// CA015B Mushihime-Sama Futari Black Label +GAME( 2007, futaribl, 0, cv1k, cv1k, cv1k_state, espgal2, ROT270, "Cave", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", 0 ) + +// CA017 Deathsmiles +GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave", "Deathsmiles (2007/10/09 MASTER VER)", 0 ) + +// CA017B Deathsmiles Black Label +GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT0, "Cave", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", 0 ) + +// CA019 Do-Don-Pachi Dai-Fukkatsu +GAME( 2008, ddpdfk, 0, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", 0 ) +GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, espgal2, ROT270, "Cave", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", 0 ) + +// CMDL01 Medal Mahjong Moukari Bancho +GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, espgal2, ROT0, "Cave", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", GAME_NOT_WORKING ) + + + + + + + + + + + diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c index 7b1960137d4..a9ac65e8b6e 100644 --- a/src/mame/drivers/toaplan2.c +++ b/src/mame/drivers/toaplan2.c @@ -4619,6 +4619,21 @@ ROM_START( snowbro2 ) ROM_LOAD( "rom4", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) ) ROM_END +ROM_START( snowbro2b ) // seems to be the same data as the main set, but with the extra user1 rom and different rom layout + ROM_REGION( 0x080000, "maincpu", 0 ) /* Main 68K code */ + ROM_LOAD16_BYTE( "sb2-prg1.U39", 0x000000, 0x040000, CRC(e1fec8a2) SHA1(30c1a351070d784da9ba0dca68be8a262dba2045) ) + ROM_LOAD16_BYTE( "sb2-prg0.u23", 0x000001, 0x040000, CRC(b473cd57) SHA1(331130faa9de01b3ca93845174e8c3684bd269c7) ) + + ROM_REGION( 0x400000, "gfx1", 0 ) // one of these seems badly read, check + ROM_LOAD( "sb2-gfx.u177", 0x000000, 0x200000, BAD_DUMP CRC(ebeec910) SHA1(e179f393b98135caa8419b68cd979038ab47a413) ) + ROM_LOAD( "sb2-gfx.u175", 0x200000, 0x200000, BAD_DUMP CRC(72622795) SHA1(03f041e30b78da2c554b70ed0e5dae7f0214103d) ) + + ROM_REGION( 0x80000, "oki", 0 ) /* ADPCM Samples */ + ROM_LOAD( "sb2-snd.4", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) ) + + ROM_REGION( 0x8000, "user1", 0 ) /* ??? Some sort of table - same as other bootleg boards */ + ROM_LOAD( "sb2-unk.u100", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) ) +ROM_END /* -------------------------- Raizing games ------------------------- */ @@ -5316,6 +5331,7 @@ GAME( 1994, pwrkick, 0, pwrkick, pwrkick, driver_device, 0, GAME( 1995, othldrby, 0, othldrby, othldrby,driver_device, 0, ROT0, "Sunwise", "Othello Derby (Japan)", 0 ) GAME( 1994, snowbro2, 0, snowbro2, snowbro2, driver_device, 0, ROT0, "Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise", GAME_SUPPORTS_SAVE ) +GAME( 1994, snowbro2b, snowbro2, snowbro2, snowbro2, driver_device, 0, ROT0, "bootleg", "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg)", GAME_SUPPORTS_SAVE ) GAME( 1993, sstriker, 0, mahoudai, sstriker, driver_device, 0, ROT270, "Raizing", "Sorcer Striker (set 1)" , GAME_SUPPORTS_SAVE ) // verified on two different PCBs GAME( 1993, sstrikera, sstriker, mahoudai, sstrikera, driver_device, 0, ROT270, "Raizing", "Sorcer Striker (set 2)" , GAME_SUPPORTS_SAVE ) // from Korean board diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9286cac0f06..92de3cde6cd 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2654,6 +2654,7 @@ batsugun // TP-030 (c) 1993 Toaplan batsuguna // TP-030 (c) 1993 Toaplan batsugunsp // TP-??? (c) 1993 Toaplan snowbro2 // TP-??? (c) 1994 Hanafram +snowbro2b // pwrkick // (c) 1994 Sunwise sstriker // (c) 1993 Raizing sstrikera // (c) 1993 Raizing @@ -2774,6 +2775,30 @@ korokoro // (c) 1999 Takumi crusherm // (c) 1999 Takumi tjumpman // (c) 1999 Namco +mushisam +mushisama +mushisamb +espgal2 +ibara +ibarablk +ibarablka +mushitam +mushitama +futari15 +futari15a +futari10 +futaribl +pinkswts +pinkswtsa +pinkswtsb +pinkswtsx +deathsml +mmpork +mmmbanc +ddpdfk +ddpdfk10 +dsmbl + // Kyugo games // Kyugo only made four games: Repulse, Flash Gal, SRD Mission and Air Wolf. // Gyrodine was made by Crux. Crux was antecedent of Toa Plan, and spin-off from Orca. diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 3be377e0b45..992a26bec95 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -280,6 +280,7 @@ VIDEOS += BUFSPRITE #VIDEOS += DL1416 VIDEOS += DM9368 #VIDEOS += EF9340_1 +VIDEOS += EPIC12 VIDEOS += FIXFREQ VIDEOS += H63484 #VIDEOS += HD44102 @@ -321,6 +322,7 @@ VIDEOS += TMS9928A VIDEOS += V9938 VIDEOS += VOODOO + #------------------------------------------------- # specify available machine cores #------------------------------------------------- @@ -2051,6 +2053,7 @@ $(MAMEOBJ)/misc.a: \ $(DRIVERS)/castle.o \ $(DRIVERS)/cave.o $(VIDEO)/cave.o \ $(DRIVERS)/cavepc.o \ + $(DRIVERS)/cv1k.o \ $(DRIVERS)/cb2001.o \ $(DRIVERS)/cdi.o $(VIDEO)/mcd212.o $(MACHINE)/cdi070.o $(MACHINE)/cdislave.o $(MACHINE)/cdicdic.o \ $(DRIVERS)/cesclass.o \