From ef97820c1bf64d96762ba53fe9cece53163c06cd Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Thu, 25 Feb 2010 16:21:27 +0000 Subject: [PATCH] Renamed decodev->deco16ic [Fabio Priuli] Added driver data class to funkyjet.c [Fabio Priuli] Added driver data class and save states to vaportra.c and tumbleb.c [Fabio Priuli] --- .gitattributes | 6 +- src/mame/drivers/backfire.c | 34 +- src/mame/drivers/boogwing.c | 20 +- src/mame/drivers/cbuster.c | 14 +- src/mame/drivers/cninja.c | 62 +- src/mame/drivers/dassault.c | 18 +- src/mame/drivers/dblewing.c | 16 +- src/mame/drivers/deco156.c | 20 +- src/mame/drivers/dietgo.c | 10 +- src/mame/drivers/funkyjet.c | 42 +- src/mame/drivers/mirage.c | 18 +- src/mame/drivers/pktgaldx.c | 10 +- src/mame/drivers/rohga.c | 74 +- src/mame/drivers/simpl156.c | 42 +- src/mame/drivers/supbtime.c | 14 +- src/mame/drivers/tumbleb.c | 386 ++++++---- src/mame/drivers/tumblep.c | 8 +- src/mame/drivers/vaportra.c | 72 +- src/mame/includes/dietgo.h | 2 +- src/mame/includes/funkyjet.h | 31 + src/mame/includes/pktgaldx.h | 2 +- src/mame/includes/supbtime.h | 2 +- src/mame/includes/tumbleb.h | 75 +- src/mame/includes/tumblep.h | 2 +- src/mame/includes/vaportra.h | 37 + src/mame/mame.mak | 2 +- src/mame/video/boogwing.c | 40 +- src/mame/video/cbuster.c | 20 +- src/mame/video/cninja.c | 102 +-- src/mame/video/dassault.c | 30 +- src/mame/video/{decodev.c => deco16ic.c} | 112 +-- src/mame/video/deco16ic.h | 124 ++++ src/mame/video/decodev.h | 124 ---- src/mame/video/dietgo.c | 10 +- src/mame/video/funkyjet.c | 53 +- src/mame/video/pktgaldx.c | 10 +- src/mame/video/rohga.c | 68 +- src/mame/video/simpl156.c | 8 +- src/mame/video/supbtime.c | 10 +- src/mame/video/tumbleb.c | 894 +++++++++++++---------- src/mame/video/tumblep.c | 10 +- src/mame/video/vaportra.c | 102 +-- 42 files changed, 1540 insertions(+), 1196 deletions(-) create mode 100644 src/mame/includes/funkyjet.h create mode 100644 src/mame/includes/vaportra.h rename src/mame/video/{decodev.c => deco16ic.c} (92%) create mode 100644 src/mame/video/deco16ic.h delete mode 100644 src/mame/video/decodev.h diff --git a/.gitattributes b/.gitattributes index e66bf9f7b6b..28baf4f2d93 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2520,6 +2520,7 @@ src/mame/includes/freekick.h svneol=native#text/plain src/mame/includes/fromanc2.h svneol=native#text/plain src/mame/includes/fromance.h svneol=native#text/plain src/mame/includes/funkybee.h svneol=native#text/plain +src/mame/includes/funkyjet.h svneol=native#text/plain src/mame/includes/funybubl.h svneol=native#text/plain src/mame/includes/fuukifg2.h svneol=native#text/plain src/mame/includes/fuukifg3.h svneol=native#text/plain @@ -2835,6 +2836,7 @@ src/mame/includes/tx1.h svneol=native#text/plain src/mame/includes/ultraman.h svneol=native#text/plain src/mame/includes/ultratnk.h svneol=native#text/plain src/mame/includes/unico.h svneol=native#text/plain +src/mame/includes/vaportra.h svneol=native#text/plain src/mame/includes/vastar.h svneol=native#text/plain src/mame/includes/vball.h svneol=native#text/plain src/mame/includes/vendetta.h svneol=native#text/plain @@ -3352,11 +3354,11 @@ src/mame/video/ddribble.c svneol=native#text/plain src/mame/video/deadang.c svneol=native#text/plain src/mame/video/dec0.c svneol=native#text/plain src/mame/video/dec8.c svneol=native#text/plain +src/mame/video/deco16ic.c svneol=native#text/plain +src/mame/video/deco16ic.h svneol=native#text/plain src/mame/video/deco32.c svneol=native#text/plain src/mame/video/deco_mlc.c svneol=native#text/plain src/mame/video/decocass.c svneol=native#text/plain -src/mame/video/decodev.c svneol=native#text/plain -src/mame/video/decodev.h svneol=native#text/plain src/mame/video/deniam.c svneol=native#text/plain src/mame/video/dietgo.c svneol=native#text/plain src/mame/video/digdug.c svneol=native#text/plain diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c index 23fd4c2eeba..f2237a4900d 100644 --- a/src/mame/drivers/backfire.c +++ b/src/mame/drivers/backfire.c @@ -17,7 +17,7 @@ #include "sound/okim6295.h" #include "sound/ymz280b.h" #include "cpu/arm/arm.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "rendlay.h" static UINT16 *backfire_pf1_rowscroll,*backfire_pf2_rowscroll; @@ -142,8 +142,8 @@ static VIDEO_UPDATE( backfire ) /* screen 1 uses pf1 as the forground and pf3 as the background */ /* screen 2 uses pf2 as the foreground and pf4 as the background */ - decodev_pf12_update(deco16ic, backfire_pf1_rowscroll, backfire_pf2_rowscroll); - decodev_pf34_update(deco16ic, backfire_pf3_rowscroll, backfire_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, backfire_pf1_rowscroll, backfire_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, backfire_pf3_rowscroll, backfire_pf4_rowscroll); if (screen == left_screen) { @@ -153,14 +153,14 @@ static VIDEO_UPDATE( backfire ) if (backfire_left_priority[0] == 0) { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 1); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 1); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 2); draw_sprites(screen->machine, bitmap, cliprect, backfire_spriteram32_1, 3); } else if (backfire_left_priority[0] == 2) { - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); draw_sprites(screen->machine, bitmap, cliprect, backfire_spriteram32_1, 3); } else @@ -173,14 +173,14 @@ static VIDEO_UPDATE( backfire ) if (backfire_right_priority[0] == 0) { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 1); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 1); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); draw_sprites(screen->machine, bitmap, cliprect, backfire_spriteram32_2, 4); } else if (backfire_right_priority[0] == 2) { - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 4); draw_sprites(screen->machine, bitmap, cliprect, backfire_spriteram32_2, 4); } else @@ -264,14 +264,14 @@ READ32_HANDLER( backfire_wheel2_r ) static ADDRESS_MAP_START( backfire_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x120000, 0x120fff) AM_READWRITE(backfire_pf1_rowscroll_r, backfire_pf1_rowscroll_w) AM_RANGE(0x124000, 0x124fff) AM_READWRITE(backfire_pf2_rowscroll_r, backfire_pf2_rowscroll_w) - AM_RANGE(0x130000, 0x13001f) AM_DEVREADWRITE("deco_custom", decodev_pf34_control_dword_r, decodev_pf34_control_dword_w) - AM_RANGE(0x140000, 0x141fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_dword_r, decodev_pf3_data_dword_w) - AM_RANGE(0x144000, 0x145fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_dword_r, decodev_pf4_data_dword_w) + AM_RANGE(0x130000, 0x13001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w) + AM_RANGE(0x140000, 0x141fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w) + AM_RANGE(0x144000, 0x145fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w) AM_RANGE(0x150000, 0x150fff) AM_READWRITE(backfire_pf3_rowscroll_r, backfire_pf3_rowscroll_w) AM_RANGE(0x154000, 0x154fff) AM_READWRITE(backfire_pf4_rowscroll_r, backfire_pf4_rowscroll_w) AM_RANGE(0x160000, 0x161fff) AM_WRITE(backfire_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c index 40ab6db4331..2789d088cae 100644 --- a/src/mame/drivers/boogwing.c +++ b/src/mame/drivers/boogwing.c @@ -82,7 +82,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/h6280/h6280.h" #include "includes/decocrpt.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/decoprot.h" #include "sound/2151intf.h" #include "sound/okim6295.h" @@ -98,7 +98,7 @@ static ADDRESS_MAP_START( boogwing_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x220000, 0x220001) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x220000, 0x220001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x220002, 0x22000f) AM_NOP AM_RANGE(0x240000, 0x240001) AM_WRITE(buffer_spriteram16_w) @@ -111,22 +111,22 @@ static ADDRESS_MAP_START( boogwing_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x24e344, 0x24e345) AM_READ_PORT("INPUTS") AM_RANGE(0x24e000, 0x24e7ff) AM_WRITE(deco16_104_prot_w) AM_BASE(&deco16_prot_ram) - AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x264000, 0x265fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x266000, 0x267fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x264000, 0x265fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x266000, 0x267fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x268000, 0x268fff) AM_RAM AM_BASE(&boogwing_pf1_rowscroll) AM_RANGE(0x26a000, 0x26afff) AM_RAM AM_BASE(&boogwing_pf2_rowscroll) - AM_RANGE(0x270000, 0x27000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) - AM_RANGE(0x274000, 0x275fff) AM_RAM_DEVWRITE("deco_custom", decodev_pf3_data_w) - AM_RANGE(0x276000, 0x277fff) AM_RAM_DEVWRITE("deco_custom", decodev_pf4_data_w) + AM_RANGE(0x270000, 0x27000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) + AM_RANGE(0x274000, 0x275fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_pf3_data_w) + AM_RANGE(0x276000, 0x277fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_pf4_data_w) AM_RANGE(0x278000, 0x278fff) AM_RAM AM_BASE(&boogwing_pf3_rowscroll) AM_RANGE(0x27a000, 0x27afff) AM_RAM AM_BASE(&boogwing_pf4_rowscroll) AM_RANGE(0x280000, 0x28000f) AM_NOP // ? AM_RANGE(0x282000, 0x282001) AM_NOP // Palette setup? - AM_RANGE(0x282008, 0x282009) AM_DEVWRITE("deco_custom", decodev_palette_dma_w) - AM_RANGE(0x284000, 0x285fff) AM_DEVWRITE("deco_custom", decodev_buffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x282008, 0x282009) AM_DEVWRITE("deco_custom", deco16ic_palette_dma_w) + AM_RANGE(0x284000, 0x285fff) AM_DEVWRITE("deco_custom", deco16ic_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3c0000, 0x3c004f) AM_RAM // ? ADDRESS_MAP_END diff --git a/src/mame/drivers/cbuster.c b/src/mame/drivers/cbuster.c index 1b126781dc8..98a4194c544 100644 --- a/src/mame/drivers/cbuster.c +++ b/src/mame/drivers/cbuster.c @@ -22,7 +22,7 @@ #include "sound/2203intf.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" VIDEO_UPDATE( twocrude ); @@ -116,20 +116,20 @@ static ADDRESS_MAP_START( twocrude_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE(&twocrude_ram) - AM_RANGE(0x0a0000, 0x0a1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x0a2000, 0x0a2fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x0a0000, 0x0a1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x0a2000, 0x0a2fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x0a4000, 0x0a47ff) AM_RAM AM_BASE(&twocrude_pf1_rowscroll) AM_RANGE(0x0a6000, 0x0a67ff) AM_RAM AM_BASE(&twocrude_pf2_rowscroll) - AM_RANGE(0x0a8000, 0x0a8fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x0aa000, 0x0aafff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x0a8000, 0x0a8fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x0aa000, 0x0aafff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_BASE(&twocrude_pf3_rowscroll) AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_BASE(&twocrude_pf4_rowscroll) AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP - AM_RANGE(0x0b5000, 0x0b500f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x0b5000, 0x0b500f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM_WRITE(twocrude_palette_24bit_rg_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x0b9000, 0x0b9fff) AM_RAM_WRITE(twocrude_palette_24bit_b_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x0bc000, 0x0bc00f) AM_READWRITE(twocrude_control_r, twocrude_control_w) diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c index 60b797da41e..295670a3ce6 100644 --- a/src/mame/drivers/cninja.c +++ b/src/mame/drivers/cninja.c @@ -50,7 +50,7 @@ Note about version levels using Mutant Fighter as the example: #include "sound/2203intf.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static int cninja_scanline, cninja_irq_mask; static running_device *raster_irq_timer; @@ -145,7 +145,7 @@ static READ16_HANDLER( robocop2_prot_r ) static WRITE16_HANDLER( deco16_pf12_control_w ) { running_device *deco16ic = devtag_get_device(space->machine, "deco_custom"); - decodev_pf12_control_w(deco16ic, offset, data, mem_mask); + deco16ic_pf12_control_w(deco16ic, offset, data, mem_mask); video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen)); } @@ -153,7 +153,7 @@ static WRITE16_HANDLER( deco16_pf12_control_w ) static WRITE16_HANDLER( deco16_pf34_control_w ) { running_device *deco16ic = devtag_get_device(space->machine, "deco_custom"); - decodev_pf34_control_w(deco16ic, offset, data, mem_mask); + deco16ic_pf34_control_w(deco16ic, offset, data, mem_mask); video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen)); } @@ -162,20 +162,20 @@ static ADDRESS_MAP_START( cninja_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_RANGE(0x140000, 0x14000f) AM_WRITE(deco16_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_BASE(&cninja_pf1_rowscroll) AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&cninja_pf2_rowscroll) AM_RANGE(0x150000, 0x15000f) AM_WRITE(deco16_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&cninja_pf3_rowscroll) AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&cninja_pf4_rowscroll) AM_RANGE(0x184000, 0x187fff) AM_RAM AM_BASE(&cninja_ram) AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w) - AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ @@ -196,14 +196,14 @@ static ADDRESS_MAP_START( cninjabl_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* bootleg sprite-ram (sprites rewritten here in new format) */ AM_RANGE(0x140000, 0x14000f) AM_WRITE(deco16_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_BASE(&cninja_pf1_rowscroll) AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&cninja_pf2_rowscroll) AM_RANGE(0x150000, 0x15000f) AM_WRITE(deco16_pf34_control_w) // not used / incorrect on this - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&cninja_pf3_rowscroll) AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&cninja_pf4_rowscroll) @@ -215,7 +215,7 @@ static ADDRESS_MAP_START( cninjabl_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg? AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w) - AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ ADDRESS_MAP_END @@ -224,18 +224,18 @@ static ADDRESS_MAP_START( edrandy_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x140000, 0x14000f) AM_WRITE(deco16_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE(&cninja_pf1_rowscroll) AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&cninja_pf2_rowscroll) AM_RANGE(0x150000, 0x15000f) AM_WRITE(deco16_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&cninja_pf3_rowscroll) AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&cninja_pf4_rowscroll) - AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x194000, 0x197fff) AM_RAM AM_BASE(&cninja_ram) /* Main ram */ AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(deco16_60_prot_r, deco16_60_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ AM_RANGE(0x199550, 0x199551) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */ @@ -252,14 +252,14 @@ static ADDRESS_MAP_START( robocop2_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x140000, 0x14000f) AM_WRITE(deco16_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE(&cninja_pf1_rowscroll) AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&cninja_pf2_rowscroll) AM_RANGE(0x150000, 0x15000f) AM_WRITE(deco16_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&cninja_pf3_rowscroll) AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&cninja_pf4_rowscroll) @@ -268,10 +268,10 @@ static ADDRESS_MAP_START( robocop2_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x18c000, 0x18c7ff) AM_READ(robocop2_prot_r) /* Protection device */ AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w) AM_RANGE(0x198000, 0x198001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ - AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x1b0000, 0x1b0007) AM_READWRITE(cninja_irq_r, cninja_irq_w) AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_BASE(&cninja_ram) /* Main ram */ - AM_RANGE(0x1f0000, 0x1f0001) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x1f0000, 0x1f0001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */ ADDRESS_MAP_END @@ -280,22 +280,22 @@ static ADDRESS_MAP_START( mutantf_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x100000, 0x103fff) AM_RAM AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) - AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x180000, 0x180001) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x180000, 0x180001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */ AM_RANGE(0x1a0000, 0x1a07ff) AM_READWRITE(deco16_66_prot_r, deco16_66_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) AM_DEVREAD("deco_custom", decodev_71_r) + AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) AM_DEVREAD("deco_custom", deco16ic_71_r) AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w) AM_RANGE(0x300000, 0x30000f) AM_WRITE(deco16_pf12_control_w) - AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_BASE(&cninja_pf1_rowscroll) AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_BASE(&cninja_pf2_rowscroll) AM_RANGE(0x310000, 0x31000f) AM_WRITE(deco16_pf34_control_w) - AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_BASE(&cninja_pf3_rowscroll) AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_BASE(&cninja_pf4_rowscroll) diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c index 2b45f1d113d..1319e4aca17 100644 --- a/src/mame/drivers/dassault.c +++ b/src/mame/drivers/dassault.c @@ -127,7 +127,7 @@ Dip locations verified with US conversion kit manual. #include "sound/2203intf.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" extern UINT16 *dassault_pf2_rowscroll,*dassault_pf4_rowscroll; @@ -214,25 +214,25 @@ static READ16_HANDLER( shared_ram_r ) static ADDRESS_MAP_START( dassault_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140004, 0x140007) AM_WRITENOP /* ? */ AM_RANGE(0x180000, 0x180001) AM_WRITE(dassault_sound_w) AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r) - AM_RANGE(0x1c000a, 0x1c000b) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x1c000a, 0x1c000b) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(buffer_spriteram16_2_w) AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w) - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x212000, 0x212fff) AM_WRITEONLY AM_BASE(&dassault_pf2_rowscroll) - AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) + AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) - AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_BASE(&dassault_pf4_rowscroll) - AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE(&dassault_ram) /* Main ram */ AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) /* Spriteram (2nd) */ diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c index dcb89d448dd..88ce2547bf1 100644 --- a/src/mame/drivers/dblewing.c +++ b/src/mame/drivers/dblewing.c @@ -23,7 +23,7 @@ Protection TODO: #include "includes/decocrpt.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" /* @@ -145,16 +145,16 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan static VIDEO_UPDATE(dblewing) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, dblewing_pf1_rowscroll, dblewing_pf2_rowscroll); + deco16ic_pf12_update(deco16ic, dblewing_pf1_rowscroll, dblewing_pf2_rowscroll); bitmap_fill(bitmap, cliprect, 0); /* not Confirmed */ bitmap_fill(screen->machine->priority_bitmap, NULL, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 4); draw_sprites(screen->machine, bitmap, cliprect); return 0; } @@ -377,8 +377,8 @@ static WRITE16_HANDLER( dblewing_prot_w ) static ADDRESS_MAP_START( dblewing_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x104000, 0x104fff) AM_RAM AM_BASE(&dblewing_pf1_rowscroll) AM_RANGE(0x106000, 0x106fff) AM_RAM AM_BASE(&dblewing_pf2_rowscroll) @@ -396,7 +396,7 @@ static ADDRESS_MAP_START( dblewing_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x284000, 0x284001) AM_RAM AM_RANGE(0x288000, 0x288001) AM_RAM - AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("deco_custom", decodev_pf12_control_w) + AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x320000, 0x3207ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c index 5c9be39c6ec..409aed5506f 100644 --- a/src/mame/drivers/deco156.c +++ b/src/mame/drivers/deco156.c @@ -20,7 +20,7 @@ #include "machine/eeprom.h" #include "sound/okim6295.h" #include "sound/ymz280b.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static UINT16 *deco156_pf1_rowscroll,*deco156_pf2_rowscroll; @@ -124,11 +124,11 @@ static VIDEO_UPDATE( wcvol95 ) bitmap_fill(screen->machine->priority_bitmap, NULL, 0); bitmap_fill(bitmap, NULL, 0); - decodev_pf12_update(deco16ic, deco156_pf1_rowscroll, deco156_pf2_rowscroll); + deco16ic_pf12_update(deco16ic, deco156_pf1_rowscroll, deco156_pf2_rowscroll); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } @@ -185,9 +185,9 @@ static ADDRESS_MAP_START( hvysmsh_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x12000c, 0x12000f) AM_DEVWRITE("oki1", hvysmsh_oki_0_bank_w) AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x000000ff) AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x000000ff) - AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(wcvol95_pf1_rowscroll_r, wcvol95_pf1_rowscroll_w) AM_RANGE(0x1a4000, 0x1a4fff) AM_READWRITE(wcvol95_pf2_rowscroll_r, wcvol95_pf2_rowscroll_w) AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_WRITE(deco156_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) @@ -197,9 +197,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( wcvol95_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x120000, 0x120fff) AM_READWRITE(wcvol95_pf1_rowscroll_r, wcvol95_pf1_rowscroll_w) AM_RANGE(0x124000, 0x124fff) AM_READWRITE(wcvol95_pf2_rowscroll_r, wcvol95_pf2_rowscroll_w) AM_RANGE(0x130000, 0x137fff) AM_RAM diff --git a/src/mame/drivers/dietgo.c b/src/mame/drivers/dietgo.c index 0e00e99c234..2458e6960c6 100644 --- a/src/mame/drivers/dietgo.c +++ b/src/mame/drivers/dietgo.c @@ -12,18 +12,18 @@ #include "includes/decocrpt.h" #include "includes/decoprot.h" #include "includes/dietgo.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static ADDRESS_MAP_START( dietgo_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x210000, 0x211fff) AM_DEVWRITE("deco_custom", decodev_pf1_data_w) - AM_RANGE(0x212000, 0x213fff) AM_DEVWRITE("deco_custom", decodev_pf2_data_w) + AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x210000, 0x211fff) AM_DEVWRITE("deco_custom", deco16ic_pf1_data_w) + AM_RANGE(0x212000, 0x213fff) AM_DEVWRITE("deco_custom", deco16ic_pf2_data_w) AM_RANGE(0x220000, 0x2207ff) AM_WRITEONLY AM_BASE_MEMBER(dietgo_state, pf1_rowscroll) AM_RANGE(0x222000, 0x2227ff) AM_WRITEONLY AM_BASE_MEMBER(dietgo_state, pf2_rowscroll) AM_RANGE(0x280000, 0x2807ff) AM_RAM AM_BASE_SIZE_MEMBER(dietgo_state, spriteram, spriteram_size) - AM_RANGE(0x300000, 0x300bff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x300000, 0x300bff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x340000, 0x3407ff) AM_READWRITE(dietgo_104_prot_r, dietgo_104_prot_w) AM_RANGE(0x380000, 0x38ffff) AM_RAM // mainram ADDRESS_MAP_END diff --git a/src/mame/drivers/funkyjet.c b/src/mame/drivers/funkyjet.c index 1106fd2e6e7..add0752569f 100644 --- a/src/mame/drivers/funkyjet.c +++ b/src/mame/drivers/funkyjet.c @@ -90,16 +90,13 @@ Notes: #include "emu.h" #include "cpu/m68000/m68000.h" #include "cpu/h6280/h6280.h" -#include "sound/2151intf.h" -#include "sound/okim6295.h" - #include "includes/decocrpt.h" #include "includes/decoprot.h" -#include "video/decodev.h" +#include "includes/funkyjet.h" +#include "sound/2151intf.h" +#include "sound/okim6295.h" +#include "video/deco16ic.h" -VIDEO_UPDATE( funkyjet ); - -extern UINT16 *funkyjet_pf1_rowscroll,*funkyjet_pf2_rowscroll; /******************************************************************************/ @@ -107,15 +104,15 @@ static ADDRESS_MAP_START( funkyjet_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140000, 0x143fff) AM_RAM - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_GENERIC(spriteram) + AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_MEMBER(funkyjet_state, spriteram, spriteram_size) AM_RANGE(0x180000, 0x1807ff) AM_READWRITE(deco16_146_funkyjet_prot_r, deco16_146_funkyjet_prot_w) AM_BASE(&deco16_prot_ram) AM_RANGE(0x184000, 0x184001) AM_WRITENOP AM_RANGE(0x188000, 0x188001) AM_WRITENOP - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x340000, 0x340bff) AM_RAM AM_BASE(&funkyjet_pf1_rowscroll) - AM_RANGE(0x342000, 0x342bff) AM_RAM AM_BASE(&funkyjet_pf2_rowscroll) + AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x340000, 0x340bff) AM_RAM AM_BASE_MEMBER(funkyjet_state, pf1_rowscroll) + AM_RANGE(0x342000, 0x342bff) AM_RAM AM_BASE_MEMBER(funkyjet_state, pf2_rowscroll) ADDRESS_MAP_END /******************************************************************************/ @@ -278,9 +275,10 @@ GFXDECODE_END /******************************************************************************/ -static void sound_irq(running_device *device, int state) +static void sound_irq( running_device *device, int state ) { - cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */ + funkyjet_state *driver_state = (funkyjet_state *)device->machine->driver_data; + cpu_set_input_line(driver_state->audiocpu, 1, state); /* IRQ 2 */ } static const ym2151_interface ym2151_config = @@ -298,8 +296,20 @@ static const deco16ic_interface funkyjet_deco16ic_intf = NULL, NULL, NULL, NULL }; +static MACHINE_START( funkyjet ) +{ + funkyjet_state *state = (funkyjet_state *)machine->driver_data; + + state->maincpu = devtag_get_device(machine, "maincpu"); + state->audiocpu = devtag_get_device(machine, "audiocpu"); + state->deco16ic = devtag_get_device(machine, "deco_custom"); +} + static MACHINE_DRIVER_START( funkyjet ) + /* driver data */ + MDRV_DRIVER_DATA(funkyjet_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 14000000) /* 28 MHz crystal */ MDRV_CPU_PROGRAM_MAP(funkyjet_map) @@ -308,6 +318,8 @@ static MACHINE_DRIVER_START( funkyjet ) MDRV_CPU_ADD("audiocpu", H6280,32220000/4) /* Custom chip 45, Audio section crystal is 32.220 MHz */ MDRV_CPU_PROGRAM_MAP(sound_map) + MDRV_MACHINE_START(funkyjet) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(58) diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c index 51edbcc0289..6aa299475eb 100644 --- a/src/mame/drivers/mirage.c +++ b/src/mame/drivers/mirage.c @@ -36,7 +36,7 @@ MR_01-.3A [a0b758aa] #include "cpu/m68000/m68000.h" #include "includes/decocrpt.h" #include "includes/decoprot.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "sound/okim6295.h" class mirage_state @@ -50,7 +50,7 @@ public: UINT16 * pf1_rowscroll; UINT16 * pf2_rowscroll; UINT16 * spriteram; -// UINT16 * paletteram; // currently this uses generic palette handling (in decodev.c) +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) size_t spriteram_size; /* misc */ @@ -141,16 +141,16 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect static VIDEO_UPDATE( mirage ) { mirage_state *state = (mirage_state *)screen->machine->driver_data; - UINT16 flip = decodev_pf12_control_r(state->deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 256); /* not verified */ - decodev_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); draw_sprites(screen->machine, bitmap, cliprect, 1); - decodev_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); return 0; @@ -195,8 +195,8 @@ static WRITE16_HANDLER( okim0_rombank_w ) static ADDRESS_MAP_START( mirage_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM /* tilemaps */ - AM_RANGE(0x100000, 0x101fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) // 0x100000 - 0x101fff tested - AM_RANGE(0x102000, 0x103fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) // 0x102000 - 0x102fff tested + AM_RANGE(0x100000, 0x101fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) // 0x100000 - 0x101fff tested + AM_RANGE(0x102000, 0x103fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) // 0x102000 - 0x102fff tested /* linescroll */ AM_RANGE(0x110000, 0x110bff) AM_RAM AM_BASE_MEMBER(mirage_state, pf1_rowscroll) AM_RANGE(0x112000, 0x112bff) AM_RAM AM_BASE_MEMBER(mirage_state, pf2_rowscroll) @@ -207,7 +207,7 @@ static ADDRESS_MAP_START( mirage_map, ADDRESS_SPACE_PROGRAM, 16 ) // AM_RANGE(0x140006, 0x140007) AM_READ(random_readers) // AM_RANGE(0x150006, 0x150007) AM_READNOP AM_RANGE(0x160000, 0x160001) AM_WRITENOP - AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) + AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) AM_RANGE(0x16a000, 0x16a001) AM_WRITENOP AM_RANGE(0x16c000, 0x16c001) AM_WRITE(okim1_rombank_w) AM_RANGE(0x16c002, 0x16c003) AM_WRITE(okim0_rombank_w) diff --git a/src/mame/drivers/pktgaldx.c b/src/mame/drivers/pktgaldx.c index e6bf4a1d999..67425b1c248 100644 --- a/src/mame/drivers/pktgaldx.c +++ b/src/mame/drivers/pktgaldx.c @@ -56,7 +56,7 @@ bootleg todo: #include "cpu/m68000/m68000.h" #include "includes/decocrpt.h" #include "includes/decoprot.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "sound/okim6295.h" #include "includes/pktgaldx.h" @@ -73,20 +73,20 @@ static WRITE16_DEVICE_HANDLER(pktgaldx_oki_bank_w) static ADDRESS_MAP_START( pktgaldx_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x110000, 0x1107ff) AM_RAM AM_BASE_MEMBER(pktgaldx_state, pf1_rowscroll) AM_RANGE(0x112000, 0x1127ff) AM_RAM AM_BASE_MEMBER(pktgaldx_state, pf2_rowscroll) AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_MEMBER(pktgaldx_state, spriteram, spriteram_size) - AM_RANGE(0x130000, 0x130fff) AM_RAM_DEVWRITE("deco_custom", decodev_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x130000, 0x130fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff) AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_r, 0x00ff) AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff) AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_r, 0x00ff) - AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) + AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) AM_RANGE(0x164800, 0x164801) AM_DEVWRITE("oki2", pktgaldx_oki_bank_w) AM_RANGE(0x167800, 0x167fff) AM_READWRITE(deco16_104_pktgaldx_prot_r,deco16_104_pktgaldx_prot_w) AM_BASE(&deco16_prot_ram) AM_RANGE(0x170000, 0x17ffff) AM_RAM diff --git a/src/mame/drivers/rohga.c b/src/mame/drivers/rohga.c index e29b3f0d54d..4de0b646afa 100644 --- a/src/mame/drivers/rohga.c +++ b/src/mame/drivers/rohga.c @@ -111,7 +111,7 @@ #include "includes/decoprot.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" VIDEO_START( rohga ); VIDEO_UPDATE( rohga ); @@ -142,8 +142,8 @@ static WRITE16_HANDLER( wizdfire_irq_ack_w ) static ADDRESS_MAP_START( rohga_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_READWRITE(deco16_104_rohga_prot_r,deco16_104_rohga_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ @@ -151,15 +151,15 @@ static ADDRESS_MAP_START( rohga_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x300000, 0x300001) AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */ AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */ - AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_custom", decodev_palette_dma_w) /* Write 1111 for dma? (Or any value?) */ + AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_custom", deco16ic_palette_dma_w) /* Write 1111 for dma? (Or any value?) */ AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */ - AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x321100, 0x321101) AM_READ(rohga_irq_ack_r) /* Irq ack? Value not used */ - AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf1_rowscroll) AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf2_rowscroll) @@ -167,26 +167,26 @@ static ADDRESS_MAP_START( rohga_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf4_rowscroll) AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_DEVWRITE("deco_custom", decodev_buffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */ ADDRESS_MAP_END static ADDRESS_MAP_START( wizdfire_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x202000, 0x202fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x208000, 0x208fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x20a000, 0x20afff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x202000, 0x202fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x208000, 0x208fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x20a000, 0x20afff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x20b000, 0x20b3ff) AM_WRITEONLY /* ? Always 0 written */ AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE(&rohga_pf3_rowscroll) AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE(&rohga_pf4_rowscroll) - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE("deco_custom", decodev_priority_w) /* Priority */ + AM_RANGE(0x320000, 0x320001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) /* Priority */ AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ @@ -195,8 +195,8 @@ static ADDRESS_MAP_START( wizdfire_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */ - AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_custom", decodev_buffered_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_custom", decodev_palette_dma_w) + AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_buffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_custom", deco16ic_palette_dma_w) AM_RANGE(0xfe4000, 0xfe47ff) AM_READWRITE(deco16_104_prot_r,deco16_104_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ AM_RANGE(0xfdc000, 0xffffff) AM_RAM @@ -205,20 +205,20 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( nitrobal_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_BASE(&rohga_pf1_rowscroll) AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_BASE(&rohga_pf2_rowscroll) AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE(&rohga_pf3_rowscroll) AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE(&rohga_pf4_rowscroll) - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_DEVWRITE("deco_custom", decodev_priority_w) /* Priority */ + AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_DEVWRITE("deco_custom", deco16ic_priority_w) /* Priority */ AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ @@ -227,8 +227,8 @@ static ADDRESS_MAP_START( nitrobal_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */ - AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_custom", decodev_buffered_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_custom", decodev_palette_dma_w) + AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_custom", deco16ic_buffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_custom", deco16ic_palette_dma_w) AM_RANGE(0xfec000, 0xff3fff) AM_RAM AM_RANGE(0xff4000, 0xff47ff) AM_MIRROR(0x800) AM_READWRITE(deco16_146_nitroball_prot_r,deco16_146_nitroball_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ @@ -237,30 +237,30 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( schmeisr_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) + AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_READWRITE(deco16_104_rohga_prot_r,deco16_104_rohga_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3") AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW3") AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */ AM_RANGE(0x310002, 0x310003) AM_READ_PORT("IN1") AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */ - AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_custom", decodev_palette_dma_w) /* Write 1111 for dma? (Or any value?) */ + AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_custom", deco16ic_palette_dma_w) /* Write 1111 for dma? (Or any value?) */ AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */ - AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_custom", decodev_priority_w) + AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) AM_RANGE(0x321100, 0x321101) AM_WRITE(wizdfire_irq_ack_w) /* Irq ack? Value not used */ - AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) + AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf1_rowscroll) AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf2_rowscroll) AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf3_rowscroll) AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&rohga_pf4_rowscroll) AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_DEVWRITE("deco_custom", decodev_buffered_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_DEVWRITE("deco_custom", deco16ic_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xff0000, 0xff7fff) AM_RAM /* Main ram */ ADDRESS_MAP_END diff --git a/src/mame/drivers/simpl156.c b/src/mame/drivers/simpl156.c index a5395729822..9c5ba25bdad 100644 --- a/src/mame/drivers/simpl156.c +++ b/src/mame/drivers/simpl156.c @@ -93,7 +93,7 @@ Are the OKI M6295 clocks from Heavy Smash are correct at least for the Mitchell #include "cpu/arm/arm.h" #include "machine/eeprom.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static UINT32 *simpl156_systemram; extern UINT16 *simpl156_pf1_rowscroll,*simpl156_pf2_rowscroll; @@ -254,10 +254,10 @@ static ADDRESS_MAP_START( joemacr_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x120000, 0x120fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w) AM_RANGE(0x130000, 0x130003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w) - AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x160000, 0x161fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) AM_RANGE(0x164000, 0x165fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) AM_RANGE(0x170000, 0x170003) AM_READONLY AM_WRITENOP // ? @@ -278,10 +278,10 @@ static ADDRESS_MAP_START( chainrec_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x420000, 0x420fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w) AM_RANGE(0x430000, 0x430003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w) - AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x460000, 0x461fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) AM_RANGE(0x464000, 0x465fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) AM_RANGE(0x470000, 0x470003) AM_READONLY AM_WRITENOP // ?? @@ -299,10 +299,10 @@ static ADDRESS_MAP_START( magdrop_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x3a0000, 0x3a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w) AM_RANGE(0x3b0000, 0x3b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w) - AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x3e0000, 0x3e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) AM_RANGE(0x3e4000, 0x3e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) AM_RANGE(0x3f0000, 0x3f0003) AM_READONLY AM_WRITENOP //? @@ -320,10 +320,10 @@ static ADDRESS_MAP_START( magdropp_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x6a0000, 0x6a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w) AM_RANGE(0x6b0000, 0x6b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w) - AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x6e0000, 0x6e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) AM_RANGE(0x6e4000, 0x6e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) AM_RANGE(0x6f0000, 0x6f0003) AM_READONLY AM_WRITENOP // ? @@ -340,10 +340,10 @@ static ADDRESS_MAP_START( mitchell156_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w) AM_RANGE(0x1b0000, 0x1b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w) - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_dword_r, decodev_pf12_control_dword_w) - AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_dword_r, decodev_pf1_data_dword_w) - AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_dword_r, decodev_pf2_data_dword_w) + AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w) + AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) + AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) AM_RANGE(0x1e4000, 0x1e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) AM_RANGE(0x1f0000, 0x1f0003) AM_READONLY AM_WRITENOP // ? diff --git a/src/mame/drivers/supbtime.c b/src/mame/drivers/supbtime.c index a9f48d20d14..3ef985980e9 100644 --- a/src/mame/drivers/supbtime.c +++ b/src/mame/drivers/supbtime.c @@ -25,7 +25,7 @@ down hardware (it doesn't write any good sound data btw, mostly zeros). #include "cpu/h6280/h6280.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/supbtime.h" @@ -69,9 +69,9 @@ static ADDRESS_MAP_START( supbtime_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x180000, 0x18000f) AM_READ(supbtime_controls_r) AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a0001) AM_WRITE(sound_w) - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_r, decodev_pf12_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_r, deco16ic_pf12_control_w) + AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE_MEMBER(supbtime_state, pf1_rowscroll) AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_BASE_MEMBER(supbtime_state, pf2_rowscroll) ADDRESS_MAP_END @@ -84,9 +84,9 @@ static ADDRESS_MAP_START( chinatwn_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x180000, 0x18000f) AM_READ(supbtime_controls_r) AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", decodev_pf12_control_r, decodev_pf12_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_r, deco16ic_pf12_control_w) + AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE_MEMBER(supbtime_state, pf1_rowscroll) // unused AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_BASE_MEMBER(supbtime_state, pf2_rowscroll) // unused ADDRESS_MAP_END diff --git a/src/mame/drivers/tumbleb.c b/src/mame/drivers/tumbleb.c index a6dfcf3e1ca..2411667ff8e 100644 --- a/src/mame/drivers/tumbleb.c +++ b/src/mame/drivers/tumbleb.c @@ -322,23 +322,20 @@ Stephh's notes (based on the games M68000 code and some tests) : #define FNCYWLD_HACK 0 static WRITE16_HANDLER( semicom_soundcmd_w ); -static UINT16* tumblepb_mainram; -UINT16* jumppop_control; -UINT16* suprtrio_control; /******************************************************************************/ static WRITE16_DEVICE_HANDLER( tumblepb_oki_w ) { - if (mem_mask==0xffff) + if (mem_mask == 0xffff) { - okim6295_w(device,0,data&0xff); - //printf("tumbleb_oki_w %04x %04x\n",data,mem_mask); + okim6295_w(device, 0, data & 0xff); + //printf("tumbleb_oki_w %04x %04x\n", data, mem_mask); } else { - okim6295_w(device,0,(data>>8)&0xff); - //printf("tumbleb_oki_w %04x %04x\n",data,mem_mask); + okim6295_w(device, 0, (data >> 8) & 0xff); + //printf("tumbleb_oki_w %04x %04x\n", data, mem_mask); } /* STUFF IN OTHER BYTE TOO..*/ } @@ -351,22 +348,24 @@ static READ16_HANDLER( tumblepb_prot_r ) #ifdef UNUSED_FUNCTION static WRITE16_HANDLER( tumblepb_sound_w ) { - soundlatch_w(space,0,data & 0xff); - cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + soundlatch_w(space, 0, data & 0xff); + cpu_set_input_line(state->audiocpu, 0, HOLD_LINE); } #endif static WRITE16_HANDLER( jumppop_sound_w ) { - soundlatch_w(space,0,data & 0xff); - cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE ); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + soundlatch_w(space, 0, data & 0xff); + cpu_set_input_line(state->audiocpu, 0, ASSERT_LINE); } /******************************************************************************/ static READ16_HANDLER( tumblepopb_controls_r ) { - switch (offset<<1) + switch (offset << 1) { case 0: return input_port_read(space->machine, "PLAYERS"); @@ -451,21 +450,17 @@ command 1 - stop? */ - -static int tumblep_music_command; -static int tumblep_music_bank; -static int tumbleb2_music_is_playing; - -static void tumbleb2_playmusic(running_device *device) +static void tumbleb2_playmusic( running_device *device ) { - int status = okim6295_r(device,0); + tumbleb_state *state = (tumbleb_state *)device->machine->driver_data; + int status = okim6295_r(device, 0); - if (tumbleb2_music_is_playing) + if (state->music_is_playing) { - if ((status&0x08)==0x00) + if (!BIT(status, 3)) { - okim6295_w(device,0,0x80|tumblep_music_command); - okim6295_w(device,0,0x00|0x82); + okim6295_w(device, 0, 0x80 | state->music_command); + okim6295_w(device, 0, 0x00 | 0x82); } } } @@ -473,8 +468,9 @@ static void tumbleb2_playmusic(running_device *device) static INTERRUPT_GEN( tumbleb2_interrupt ) { + tumbleb_state *state = (tumbleb_state *)device->machine->driver_data; cpu_set_input_line(device, 6, HOLD_LINE); - tumbleb2_playmusic(devtag_get_device(device->machine, "oki")); + tumbleb2_playmusic(state->oki); } static const int tumbleb_sound_lookup[256] = { @@ -498,30 +494,30 @@ static const int tumbleb_sound_lookup[256] = { }; /* we use channels 1,2,3 for sound effects, and channel 4 for music */ -static void tumbleb2_set_music_bank(running_machine *machine, int bank) +static void tumbleb2_set_music_bank( running_machine *machine, int bank ) { UINT8 *oki = memory_region(machine, "oki"); - memcpy(&oki[0x38000], &oki[0x80000+0x38000+0x8000*bank],0x8000); + memcpy(&oki[0x38000], &oki[0x80000 + 0x38000 + 0x8000 * bank], 0x8000); } -static void tumbleb2_play_sound (running_device *device, int data) +static void tumbleb2_play_sound( running_device *device, int data ) { - int status = okim6295_r(device,0); + int status = okim6295_r(device, 0); - if ((status&0x01)==0x00) + if (!BIT(status, 0)) { - okim6295_w(device,0,0x80|data); - okim6295_w(device,0,0x00|0x12); + okim6295_w(device, 0, 0x80 | data); + okim6295_w(device, 0, 0x00 | 0x12); } - else if ((status&0x02)==0x00) + else if (!BIT(status, 1)) { - okim6295_w(device,0,0x80|data); - okim6295_w(device,0,0x00|0x22); + okim6295_w(device, 0, 0x80 | data); + okim6295_w(device, 0, 0x00 | 0x22); } - else if ((status&0x04)==0x00) + else if (!BIT(status, 2)) { - okim6295_w(device,0,0x80|data); - okim6295_w(device,0,0x00|0x42); + okim6295_w(device, 0, 0x80 | data); + okim6295_w(device, 0, 0x00 | 0x42); } } @@ -537,116 +533,113 @@ static void tumbleb2_play_sound (running_device *device, int data) // bank 7 = how to play? // bank 8 = boss??? -static void process_tumbleb2_music_command(running_device *device, int data) +static void process_tumbleb2_music_command( running_device *device, int data ) { - int status = okim6295_r(device,0); + tumbleb_state *state = (tumbleb_state *)device->machine->driver_data; + int status = okim6295_r(device, 0); if (data == 1) // stop? { - if ((status&0x08)==0x08) + if (BIT(status, 3)) { - okim6295_w(device,0,0x40); /* Stop playing music */ - tumbleb2_music_is_playing = 0; + okim6295_w(device, 0, 0x40); /* Stop playing music */ + state->music_is_playing = 0; } } else { - if (tumbleb2_music_is_playing != data) + if (state->music_is_playing != data) { - tumbleb2_music_is_playing = data; - okim6295_w(device,0,0x40); // stop the current music + state->music_is_playing = data; + okim6295_w(device, 0, 0x40); // stop the current music switch (data) { case 0x04: // map screen - tumblep_music_bank = 1; - tumblep_music_command = 0x38; + state->music_bank = 1; + state->music_command = 0x38; break; case 0x05: // america - tumblep_music_bank = 6; - tumblep_music_command = 0x38; + state->music_bank = 6; + state->music_command = 0x38; break; case 0x06: // asia - tumblep_music_bank = 2; - tumblep_music_command = 0x38; + state->music_bank = 2; + state->music_command = 0x38; break; case 0x07: // africa/egypt -- don't seem to have a tune for this one - tumblep_music_bank = 4; - tumblep_music_command = 0x38; + state->music_bank = 4; + state->music_command = 0x38; break; case 0x08: // antartica - tumblep_music_bank = 3; - tumblep_music_command = 0x38; + state->music_bank = 3; + state->music_command = 0x38; break; case 0x09: // brazil / south america - tumblep_music_bank = 4; - tumblep_music_command = 0x38; + state->music_bank = 4; + state->music_command = 0x38; break; case 0x0a: // japan -- don't seem to have a tune - tumblep_music_bank = 2; - tumblep_music_command = 0x38; + state->music_bank = 2; + state->music_command = 0x38; break; case 0x0b: // australia - tumblep_music_bank = 5; - tumblep_music_command = 0x38; + state->music_bank = 5; + state->music_command = 0x38; break; case 0x0c: // france/europe - tumblep_music_bank = 6; - tumblep_music_command = 0x38; + state->music_bank = 6; + state->music_command = 0x38; break; case 0x0d: // how to play - tumblep_music_bank = 7; - tumblep_music_command = 0x38; + state->music_bank = 7; + state->music_command = 0x38; break; case 0x0f: // stage clear - tumblep_music_bank = 0; - tumblep_music_command = 0x33; + state->music_bank = 0; + state->music_command = 0x33; break; case 0x10: // boss stage - tumblep_music_bank = 8; - tumblep_music_command = 0x38; + state->music_bank = 8; + state->music_command = 0x38; break; case 0x12: // world clear - tumblep_music_bank = 0; - tumblep_music_command = 0x34; + state->music_bank = 0; + state->music_command = 0x34; break; default: // anything else.. - tumblep_music_bank = 8; - tumblep_music_command = 0x38; + state->music_bank = 8; + state->music_command = 0x38; break; } - tumbleb2_set_music_bank(device->machine, tumblep_music_bank); + + tumbleb2_set_music_bank(device->machine, state->music_bank); tumbleb2_playmusic(device); - } - - } } static WRITE16_DEVICE_HANDLER( tumbleb2_soundmcu_w ) { - int sound; - - sound = tumbleb_sound_lookup[data&0xff]; + int sound = tumbleb_sound_lookup[data & 0xff]; if (sound == 0x00) { /* pangpang has more commands than tumbleb2, extra sounds */ - //mame_printf_debug("Command %04x\n",data); + //mame_printf_debug("Command %04x\n", data); } else if (sound == -2) { @@ -666,16 +659,16 @@ static ADDRESS_MAP_START( tumblepopb_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_WRITEONLY /* To write levels modifications */ #endif AM_RANGE(0x100000, 0x100001) AM_READ(tumblepb_prot_r) AM_DEVWRITE("oki", tumblepb_oki_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&tumblepb_mainram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(tumbleb_state, mainram) AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Bootleg sprite buffer */ + AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* Bootleg sprite buffer */ AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */ AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP @@ -690,14 +683,14 @@ static ADDRESS_MAP_START( fncywld_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff) AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* sprites */ + AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* sprites */ AM_RANGE(0x160800, 0x16080f) AM_WRITEONLY /* goes slightly past the end of spriteram? */ AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(fncywld_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fncywld_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(fncywld_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fncywld_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP @@ -710,53 +703,54 @@ static READ16_HANDLER( semibase_unknown_r ) { return mame_rand(space->machine); } + static ADDRESS_MAP_START( htchctch_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x10000f) AM_READ(semibase_unknown_r) AM_RANGE(0x100000, 0x100001) AM_WRITE(semicom_soundcmd_w) AM_RANGE(0x100002, 0x100003) AM_WRITE(bcstory_tilebank_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&tumblepb_mainram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(tumbleb_state, mainram) AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x160fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Bootleg sprite buffer */ + AM_RANGE(0x160000, 0x160fff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* Bootleg sprite buffer */ AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a0fff) AM_RAM AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x320000, 0x321fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) AM_RANGE(0x341000, 0x342fff) AM_RAM // Extra ram? ADDRESS_MAP_END static ADDRESS_MAP_START( jumppop_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&tumblepb_mainram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(tumbleb_state, mainram) AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x160fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Bootleg sprite buffer */ + AM_RANGE(0x160000, 0x160fff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* Bootleg sprite buffer */ AM_RANGE(0x180000, 0x180001) AM_NOP /* IRQ ack? */ AM_RANGE(0x180002, 0x180003) AM_READ_PORT("PLAYERS") AM_RANGE(0x180004, 0x180005) AM_READ_PORT("SYSTEM") AM_RANGE(0x180006, 0x180007) AM_READ_PORT("DSW") AM_RANGE(0x18000c, 0x18000d) AM_WRITE(jumppop_sound_w) AM_RANGE(0x1a0000, 0x1a7fff) AM_RAM - AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_BASE(&tumblepb_pf2_data) - AM_RANGE(0x320000, 0x323fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x380000, 0x38000f) AM_WRITEONLY AM_BASE(&jumppop_control) + AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) + AM_RANGE(0x320000, 0x323fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x380000, 0x38000f) AM_WRITEONLY AM_BASE_MEMBER(tumbleb_state, control) ADDRESS_MAP_END static WRITE16_HANDLER( jumpkids_sound_w ) { + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; soundlatch_w(space, 0, data & 0xff); - cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE); + cpu_set_input_line(state->audiocpu, 0, HOLD_LINE); } - static ADDRESS_MAP_START( suprtrio_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0xa00000, 0xa0000f) AM_RAM AM_BASE(&suprtrio_control) - AM_RANGE(0xa20000, 0xa20fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0xa22000, 0xa22fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) + AM_RANGE(0xa00000, 0xa0000f) AM_RAM AM_BASE_MEMBER(tumbleb_state, control) + AM_RANGE(0xa20000, 0xa20fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0xa22000, 0xa22fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) AM_RANGE(0xcf0000, 0xcf05ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("PLAYERS") AM_WRITE(suprtrio_tilebank_w) AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("SYSTEM") @@ -767,15 +761,15 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pangpang_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&tumblepb_mainram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(tumbleb_state, mainram) AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Bootleg sprite buffer */ + AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* Bootleg sprite buffer */ AM_RANGE(0x160800, 0x160807) AM_WRITEONLY // writes past the end of spriteram AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(pangpang_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x340000, 0x341fff) AM_RAM_WRITE(pangpang_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(pangpang_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x340000, 0x341fff) AM_RAM_WRITE(pangpang_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) ADDRESS_MAP_END @@ -785,9 +779,9 @@ static WRITE16_HANDLER( semicom_soundcmd_w ) { if (ACCESSING_BITS_0_7) { - soundlatch_w(space,0,data & 0xff); + soundlatch_w(space, 0, data & 0xff); // needed for Super Trio which reads the sound with polling -// cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(100)); + // cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(100)); cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(20)); } @@ -804,7 +798,7 @@ static ADDRESS_MAP_START( semicom_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w) AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) -// AM_RANGE(0xf006, 0xf006) ?? + //AM_RANGE(0xf006, 0xf006) ?? AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r) AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w) ADDRESS_MAP_END @@ -813,7 +807,7 @@ static ADDRESS_MAP_START( suprtrio_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xcfff) AM_ROM AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w) -// AM_RANGE(0xf006, 0xf006) ?? + //AM_RANGE(0xf006, 0xf006) ?? AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r) AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w) ADDRESS_MAP_END @@ -831,7 +825,8 @@ ADDRESS_MAP_END static READ8_HANDLER(jumppop_z80latch_r) { - cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + cpu_set_input_line(state->audiocpu, 0, CLEAR_LINE); return soundlatch_r(space, 0); } @@ -850,16 +845,16 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( jumpkids_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x100001) AM_WRITE(jumpkids_sound_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&tumblepb_mainram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(tumbleb_state, mainram) AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Bootleg sprite buffer */ + AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_MEMBER(tumbleb_state, spriteram, spriteram_size) /* Bootleg sprite buffer */ AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */ AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE(&tumblepb_pf1_data) - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE(&tumblepb_pf2_data) + AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_BASE_MEMBER(tumbleb_state, pf1_data) + AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_BASE_MEMBER(tumbleb_state, pf2_data) AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP @@ -872,7 +867,7 @@ static WRITE8_HANDLER( jumpkids_oki_bank_w ) UINT8* sound2 = memory_region(space->machine, "oki2"); int bank = data & 0x03; - memcpy (sound1+0x20000, sound2+bank*0x20000, 0x20000); + memcpy(sound1 + 0x20000, sound2 + bank * 0x20000, 0x20000); } static ADDRESS_MAP_START( jumpkids_sound_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -1988,13 +1983,48 @@ GFXDECODE_END /******************************************************************************/ +static MACHINE_START( tumbleb ) +{ + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + + state->maincpu = devtag_get_device(machine, "maincpu"); + state->audiocpu = devtag_get_device(machine, "audiocpu"); + state->oki = devtag_get_device(machine, "oki"); + + state_save_register_global(machine, state->music_command); + state_save_register_global(machine, state->music_bank); + state_save_register_global(machine, state->music_is_playing); + + state_save_register_global_array(machine, state->control_0); + state_save_register_global(machine, state->flipscreen); + state_save_register_global(machine, state->tilebank); +} + +static MACHINE_RESET( tumbleb ) +{ + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + + state->music_command = 0; + state->music_bank = 0; + state->music_is_playing = 0; + state->flipscreen = 0; + state->tilebank = 0; + memset(state->control_0, 0, ARRAY_LENGTH(state->control_0)); +} + static MACHINE_DRIVER_START( tumblepb ) + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 14000000) MDRV_CPU_PROGRAM_MAP(tumblepopb_main_map) MDRV_CPU_VBLANK_INT("screen", irq6_line_hold) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(58) @@ -2020,11 +2050,17 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( tumbleb2 ) + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 14000000) MDRV_CPU_PROGRAM_MAP(tumblepopb_main_map) MDRV_CPU_VBLANK_INT("screen", tumbleb2_interrupt) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(58) @@ -2049,6 +2085,9 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( jumpkids ) + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 12000000) MDRV_CPU_PROGRAM_MAP(jumpkids_main_map) @@ -2058,6 +2097,9 @@ static MACHINE_DRIVER_START( jumpkids ) MDRV_CPU_ADD("audiocpu", Z80, 8000000/2) MDRV_CPU_PROGRAM_MAP(jumpkids_sound_map) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) @@ -2081,11 +2123,18 @@ static MACHINE_DRIVER_START( jumpkids ) MACHINE_DRIVER_END static MACHINE_DRIVER_START( fncywld ) + + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 12000000) MDRV_CPU_PROGRAM_MAP(fncywld_main_map) MDRV_CPU_VBLANK_INT("screen", irq6_line_hold) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) @@ -2115,9 +2164,10 @@ MACHINE_DRIVER_END -static void semicom_irqhandler(running_device *device, int irq) +static void semicom_irqhandler( running_device *device, int irq ) { - cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE); + tumbleb_state *state = (tumbleb_state *)device->machine->driver_data; + cpu_set_input_line(state->audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE); } @@ -2128,17 +2178,23 @@ static const ym2151_interface semicom_ym2151_interface = static MACHINE_RESET (htchctch) { - /* copy protection data every reset */ + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + /* copy protection data every reset */ UINT16 *PROTDATA = (UINT16*)memory_region(machine, "user1"); int i, len = memory_region_length(machine, "user1"); - for (i = 0;i < len/2;i++) - tumblepb_mainram[0x000/2 + i] = PROTDATA[i]; + for (i = 0; i < len / 2; i++) + state->mainram[0x000/2 + i] = PROTDATA[i]; + MACHINE_RESET_CALL(tumbleb); } static MACHINE_DRIVER_START( htchctch ) + + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 15000000) /* verified */ MDRV_CPU_PROGRAM_MAP(htchctch_main_map) @@ -2147,7 +2203,8 @@ static MACHINE_DRIVER_START( htchctch ) MDRV_CPU_ADD("audiocpu", Z80, 15000000/4) /* verified on dquizgo */ MDRV_CPU_PROGRAM_MAP(semicom_sound_map) - MDRV_MACHINE_RESET ( htchctch ) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(htchctch) /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -2184,7 +2241,7 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( bcstory ) MDRV_IMPORT_FROM(htchctch) - MDRV_VIDEO_UPDATE( bcstory ) + MDRV_VIDEO_UPDATE(bcstory) MDRV_SOUND_REPLACE("ymsnd", YM2151, 3427190) MDRV_SOUND_CONFIG(semicom_ym2151_interface) @@ -2214,6 +2271,10 @@ static MACHINE_DRIVER_START( metlsavr ) MACHINE_DRIVER_END static MACHINE_DRIVER_START( jumppop ) + + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 16000000) MDRV_CPU_PROGRAM_MAP(jumppop_main_map) @@ -2224,6 +2285,9 @@ static MACHINE_DRIVER_START( jumppop ) MDRV_CPU_IO_MAP(jumppop_sound_io_map) MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 1953) /* measured */ + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) @@ -2252,6 +2316,9 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( suprtrio ) + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 14000000) /* 14mhz should be correct, but lots of sprite flicker later in game */ MDRV_CPU_PROGRAM_MAP(suprtrio_main_map) @@ -2260,6 +2327,9 @@ static MACHINE_DRIVER_START( suprtrio ) MDRV_CPU_ADD("audiocpu", Z80, 8000000) MDRV_CPU_PROGRAM_MAP(suprtrio_sound_map) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) @@ -2285,11 +2355,17 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( pangpang ) + /* driver data */ + MDRV_DRIVER_DATA(tumbleb_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 14000000) MDRV_CPU_PROGRAM_MAP(pangpang_main_map) MDRV_CPU_VBLANK_INT("screen", tumbleb2_interrupt) + MDRV_MACHINE_START(tumbleb) + MDRV_MACHINE_RESET(tumbleb) + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(58) @@ -3255,7 +3331,7 @@ static void tumblepb_gfx1_rearrange(running_machine *machine) int i; /* gfx data is in the wrong order */ - for (i = 0;i < len;i++) + for (i = 0; i < len; i++) { if ((i & 0x20) == 0) { @@ -3263,7 +3339,7 @@ static void tumblepb_gfx1_rearrange(running_machine *machine) } } /* low/high half are also swapped */ - for (i = 0;i < len/2;i++) + for (i = 0; i < len/2; i++) { int t = rom[i]; rom[i] = rom[i + len/2]; rom[i + len/2] = t; } @@ -3315,11 +3391,8 @@ static DRIVER_INIT( fncywld ) } - - static READ16_HANDLER( bcstory_1a0_read ) { - //mame_printf_debug("bcstory_io %06x\n",cpu_get_pc(space->cpu)); if (cpu_get_pc(space->cpu)==0x0560) return 0x1a0; @@ -3336,6 +3409,7 @@ static DRIVER_INIT ( bcstory ) static DRIVER_INIT( htchctch ) { + tumbleb_state *state = (tumbleb_state *)machine->driver_data; // UINT16 *HCROM = (UINT16*)memory_region(machine, "maincpu"); UINT16 *PROTDATA = (UINT16*)memory_region(machine, "user1"); int i, len = memory_region_length(machine, "user1"); @@ -3347,11 +3421,11 @@ static DRIVER_INIT( htchctch ) // }; -// for (i = 0;i < sizeof(htchctch_mcu68k)/sizeof(htchctch_mcu68k[0]);i++) -// tumblepb_mainram[0x000/2 + i] = htchctch_mcu68k[i]; +// for (i = 0; i < sizeof(htchctch_mcu68k) / sizeof(htchctch_mcu68k[0]); i++) +// state->mainram[0x000/2 + i] = htchctch_mcu68k[i]; - for (i = 0;i < len/2;i++) - tumblepb_mainram[0x000/2 + i] = PROTDATA[i]; + for (i = 0; i < len / 2; i++) + state->mainram[0x000/2 + i] = PROTDATA[i]; @@ -3595,8 +3669,8 @@ static void suprtrio_decrypt_code(running_machine *machine) int i; /* decrypt main ROMs */ - memcpy(buf,rom,0x80000); - for (i = 0;i < 0x40000;i++) + memcpy(buf, rom, 0x80000); + for (i = 0; i < 0x40000; i++) { int j = i ^ 0x06; if ((i & 1) == 0) j ^= 0x02; @@ -3613,8 +3687,8 @@ static void suprtrio_decrypt_gfx(running_machine *machine) int i; /* decrypt tiles */ - memcpy(buf,rom,0x100000); - for (i = 0;i < 0x80000;i++) + memcpy(buf, rom, 0x100000); + for (i = 0; i < 0x80000; i++) { int j = i ^ 0x02; if (i & 1) j ^= 0x04; @@ -3656,22 +3730,22 @@ static DRIVER_INIT ( dquizgo ) /******************************************************************************/ -GAME( 1991, tumbleb, tumblep, tumblepb, tumblepb, tumblepb, ROT0, "bootleg", "Tumble Pop (bootleg set 1)", GAME_IMPERFECT_SOUND ) -GAME( 1991, tumbleb2, tumblep, tumbleb2, tumblepb, tumbleb2, ROT0, "bootleg", "Tumble Pop (bootleg set 2)", GAME_IMPERFECT_SOUND ) // PIC is protected, sound simulation not 100% -GAME( 1993, jumpkids, 0, jumpkids, tumblepb, jumpkids, ROT0, "Comad", "Jump Kids", 0 ) -GAME( 1994, metlsavr, 0, metlsavr, metlsavr, chokchok, ROT0, "First Amusement", "Metal Saver", 0 ) -GAME( 1994, pangpang, 0, pangpang, tumblepb, tumbleb2, ROT0, "Dong Gue La Mi Ltd.", "Pang Pang", GAME_IMPERFECT_SOUND ) // PIC is protected, sound simulation not 100% -GAME( 1994, suprtrio, 0, suprtrio, suprtrio, suprtrio, ROT0, "Gameace", "Super Trio", 0 ) +GAME( 1991, tumbleb, tumblep, tumblepb, tumblepb, tumblepb, ROT0, "bootleg", "Tumble Pop (bootleg set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1991, tumbleb2, tumblep, tumbleb2, tumblepb, tumbleb2, ROT0, "bootleg", "Tumble Pop (bootleg set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // PIC is protected, sound simulation not 100% +GAME( 1993, jumpkids, 0, jumpkids, tumblepb, jumpkids, ROT0, "Comad", "Jump Kids", GAME_SUPPORTS_SAVE ) +GAME( 1994, metlsavr, 0, metlsavr, metlsavr, chokchok, ROT0, "First Amusement", "Metal Saver", GAME_SUPPORTS_SAVE ) +GAME( 1994, pangpang, 0, pangpang, tumblepb, tumbleb2, ROT0, "Dong Gue La Mi Ltd.", "Pang Pang", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // PIC is protected, sound simulation not 100% +GAME( 1994, suprtrio, 0, suprtrio, suprtrio, suprtrio, ROT0, "Gameace", "Super Trio", GAME_SUPPORTS_SAVE ) // Should also be 'Magicball Fighting' (c)1994 see http://kmrb.or.kr/Game_Image/1999/%EC%A0%9C1248%ED%98%B8.jpg -GAME( 1995, htchctch, 0, htchctch, htchctch, htchctch, ROT0, "SemiCom", "Hatch Catch" , 0 ) // not 100% sure about gfx offsets -GAME( 1995, cookbib, 0, cookbib, cookbib, htchctch, ROT0, "SemiCom", "Cookie & Bibi" , 0 ) // not 100% sure about gfx offsets -GAME( 1995, chokchok, 0, cookbib, chokchok, chokchok, ROT0, "SemiCom", "Choky! Choky!", GAME_IMPERFECT_GRAPHICS ) // corruption during attract mode (tmap disable?) -GAME( 1995, wlstar, 0, cookbib, wlstar, wlstar, ROT0, "Mijin", "Wonder League Star - Sok-Magicball Fighting (Korea)", 0) // translates to 'Wonder League Star - Return of Magicball Fighting' -GAME( 1996, wondl96, 0, cookbib, wondl96, wlstar, ROT0, "SemiCom", "Wonder League '96 (Korea)", 0) -GAME( 1996, fncywld, 0, fncywld, fncywld, fncywld, ROT0, "Unico", "Fancy World - Earth of Crisis" , 0 ) // game says 1996, testmode 1995? -GAME( 1996, sdfight, 0, sdfight, sdfight, bcstory, ROT0, "SemiCom", "SD Fighters (Korea)", 0) -GAME( 1997, bcstry, 0, bcstory, bcstory, bcstory, ROT0, "SemiCom", "B.C. Story (set 1)", GAME_IMPERFECT_GRAPHICS) // gfx offsets? -GAME( 1997, bcstrya, bcstry, bcstory, bcstory, bcstory, ROT0, "SemiCom", "B.C. Story (set 2)", GAME_IMPERFECT_GRAPHICS) // gfx offsets? -GAME( 1997, semibase, 0, semibase, semibase, bcstory, ROT0, "SemiCom", "MuHanSeungBu (SemiCom Baseball) (Korea)", GAME_IMPERFECT_GRAPHICS)// sprite offsets.. -GAME( 1998, dquizgo, 0, cookbib, dquizgo, dquizgo, ROT0, "SemiCom", "Date Quiz Go Go (Korea)", GAME_IMPERFECT_GRAPHICS) // check layer offsets -GAME( 2001, jumppop, 0, jumppop, jumppop, 0, ORIENTATION_FLIP_X, "ESD", "Jumping Pop", 0 ) +GAME( 1995, htchctch, 0, htchctch, htchctch, htchctch, ROT0, "SemiCom", "Hatch Catch" , GAME_SUPPORTS_SAVE ) // not 100% sure about gfx offsets +GAME( 1995, cookbib, 0, cookbib, cookbib, htchctch, ROT0, "SemiCom", "Cookie & Bibi" , GAME_SUPPORTS_SAVE ) // not 100% sure about gfx offsets +GAME( 1995, chokchok, 0, cookbib, chokchok, chokchok, ROT0, "SemiCom", "Choky! Choky!", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // corruption during attract mode (tmap disable?) +GAME( 1995, wlstar, 0, cookbib, wlstar, wlstar, ROT0, "Mijin", "Wonder League Star - Sok-Magicball Fighting (Korea)", GAME_SUPPORTS_SAVE ) // translates to 'Wonder League Star - Return of Magicball Fighting' +GAME( 1996, wondl96, 0, cookbib, wondl96, wlstar, ROT0, "SemiCom", "Wonder League '96 (Korea)", GAME_SUPPORTS_SAVE ) +GAME( 1996, fncywld, 0, fncywld, fncywld, fncywld, ROT0, "Unico", "Fancy World - Earth of Crisis" , GAME_SUPPORTS_SAVE ) // game says 1996, testmode 1995? +GAME( 1996, sdfight, 0, sdfight, sdfight, bcstory, ROT0, "SemiCom", "SD Fighters (Korea)", GAME_SUPPORTS_SAVE ) +GAME( 1997, bcstry, 0, bcstory, bcstory, bcstory, ROT0, "SemiCom", "B.C. Story (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // gfx offsets? +GAME( 1997, bcstrya, bcstry, bcstory, bcstory, bcstory, ROT0, "SemiCom", "B.C. Story (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // gfx offsets? +GAME( 1997, semibase, 0, semibase, semibase, bcstory, ROT0, "SemiCom", "MuHanSeungBu (SemiCom Baseball) (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )// sprite offsets.. +GAME( 1998, dquizgo, 0, cookbib, dquizgo, dquizgo, ROT0, "SemiCom", "Date Quiz Go Go (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // check layer offsets +GAME( 2001, jumppop, 0, jumppop, jumppop, 0, ORIENTATION_FLIP_X, "ESD", "Jumping Pop", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tumblep.c b/src/mame/drivers/tumblep.c index 3068b3bfc61..2cfffc857ed 100644 --- a/src/mame/drivers/tumblep.c +++ b/src/mame/drivers/tumblep.c @@ -47,7 +47,7 @@ Stephh's notes (based on the games M68000 code and some tests) : #include "sound/3812intf.h" #include "sound/okim6295.h" #include "includes/tumblep.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #define TUMBLEP_HACK 0 @@ -117,9 +117,9 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepop_controls_r) AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_BASE_SIZE_MEMBER(tumblep_state, spriteram, spriteram_size) - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) - AM_RANGE(0x320000, 0x320fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x322000, 0x322fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) + AM_RANGE(0x320000, 0x320fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x322000, 0x322fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) AM_RANGE(0x340000, 0x3407ff) AM_WRITEONLY AM_BASE_MEMBER(tumblep_state, pf1_rowscroll) // unused AM_RANGE(0x342000, 0x3427ff) AM_WRITEONLY AM_BASE_MEMBER(tumblep_state, pf2_rowscroll) // unused ADDRESS_MAP_END diff --git a/src/mame/drivers/vaportra.c b/src/mame/drivers/vaportra.c index e8de4360151..a17545bd6c3 100644 --- a/src/mame/drivers/vaportra.c +++ b/src/mame/drivers/vaportra.c @@ -14,22 +14,19 @@ #include "sound/2203intf.h" #include "sound/2151intf.h" #include "sound/okim6295.h" -#include "video/decodev.h" - -VIDEO_UPDATE( vaportra ); - -WRITE16_HANDLER( vaportra_priority_w ); -WRITE16_HANDLER( vaportra_palette_24bit_rg_w ); -WRITE16_HANDLER( vaportra_palette_24bit_b_w ); +#include "video/deco16ic.h" +#include "includes/vaportra.h" /******************************************************************************/ static WRITE16_HANDLER( vaportra_sound_w ) { + vaportra_state *state = (vaportra_state *)space->machine->driver_data; + /* Force synchronisation between CPUs with fake timer */ timer_call_after_resynch(space->machine, NULL, 0, NULL); - soundlatch_w(space,0,data & 0xff); - cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE); + soundlatch_w(space, 0, data & 0xff); + cpu_set_input_line(state->audiocpu, 0, ASSERT_LINE); } static READ16_HANDLER( vaportra_control_r ) @@ -55,12 +52,12 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x100000, 0x100003) AM_WRITE(vaportra_priority_w) AM_RANGE(0x100006, 0x100007) AM_WRITE(vaportra_sound_w) AM_RANGE(0x100000, 0x10000f) AM_READ(vaportra_control_r) - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("deco_custom", decodev_pf3_data_r, decodev_pf3_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("deco_custom", decodev_pf4_data_r, decodev_pf4_data_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", decodev_pf34_control_w) - AM_RANGE(0x280000, 0x281fff) AM_DEVREADWRITE("deco_custom", decodev_pf1_data_r, decodev_pf1_data_w) - AM_RANGE(0x282000, 0x283fff) AM_DEVREADWRITE("deco_custom", decodev_pf2_data_r, decodev_pf2_data_w) - AM_RANGE(0x2c0000, 0x2c000f) AM_DEVWRITE("deco_custom", decodev_pf12_control_w) + AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_r, deco16ic_pf3_data_w) + AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_r, deco16ic_pf4_data_w) + AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w) + AM_RANGE(0x280000, 0x281fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_r, deco16ic_pf1_data_w) + AM_RANGE(0x282000, 0x283fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_r, deco16ic_pf2_data_w) + AM_RANGE(0x2c0000, 0x2c000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w) AM_RANGE(0x300000, 0x3009ff) AM_RAM_WRITE(vaportra_palette_24bit_rg_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x304000, 0x3049ff) AM_RAM_WRITE(vaportra_palette_24bit_b_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x308000, 0x308001) AM_NOP @@ -74,7 +71,8 @@ ADDRESS_MAP_END static READ8_HANDLER( vaportra_soundlatch_r ) { - cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE); + vaportra_state *state = (vaportra_state *)space->machine->driver_data; + cpu_set_input_line(state->audiocpu, 0, CLEAR_LINE); return soundlatch_r(space, offset); } @@ -192,8 +190,6 @@ static const gfx_layout tilelayout = 32*16 }; - - static GFXDECODE_START( vaportra ) GFXDECODE_ENTRY( "gfx1", 0x000000, charlayout, 0x000, 0x500 ) /* Characters 8x8 */ GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0x000, 0x500 ) /* Tiles 16x16 */ @@ -203,9 +199,10 @@ GFXDECODE_END /******************************************************************************/ -static void sound_irq(running_device *device, int state) +static void sound_irq( running_device *device, int state ) { - cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */ + vaportra_state *driver_state = (vaportra_state *)device->machine->driver_data; + cpu_set_input_line(driver_state->audiocpu, 1, state); /* IRQ 2 */ } static const ym2151_interface ym2151_config = @@ -233,8 +230,30 @@ static const deco16ic_interface vaportra_deco16ic_intf = }; +static MACHINE_START( vaportra ) +{ + vaportra_state *state = (vaportra_state *)machine->driver_data; + + state->maincpu = devtag_get_device(machine, "maincpu"); + state->audiocpu = devtag_get_device(machine, "audiocpu"); + state->deco16ic = devtag_get_device(machine, "deco_custom"); + + state_save_register_global_array(machine, state->priority); +} + +static MACHINE_RESET( vaportra ) +{ + vaportra_state *state = (vaportra_state *)machine->driver_data; + + state->priority[0] = 0; + state->priority[1] = 0; +} + static MACHINE_DRIVER_START( vaportra ) + /* driver data */ + MDRV_DRIVER_DATA(vaportra_state) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000,12000000) /* Custom chip 59 */ MDRV_CPU_PROGRAM_MAP(main_map) @@ -243,6 +262,9 @@ static MACHINE_DRIVER_START( vaportra ) MDRV_CPU_ADD("audiocpu", H6280, 32220000/4) /* Custom chip 45; Audio section crystal is 32.220 MHz */ MDRV_CPU_PROGRAM_MAP(sound_map) + MDRV_MACHINE_START(vaportra) + MDRV_MACHINE_RESET(vaportra) + /* video hardware */ MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) @@ -784,12 +806,12 @@ static DRIVER_INIT( vaportra ) UINT8 *RAM = memory_region(machine, "maincpu"); int i; - for (i=0x00000; i<0x80000; i++) - RAM[i]=(RAM[i] & 0x7e) | ((RAM[i] & 0x01) << 7) | ((RAM[i] & 0x80) >> 7); + for (i = 0x00000; i < 0x80000; i++) + RAM[i] = (RAM[i] & 0x7e) | ((RAM[i] & 0x01) << 7) | ((RAM[i] & 0x80) >> 7); } /******************************************************************************/ -GAME( 1989, vaportra, 0, vaportra, vaportra, vaportra, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 1)", 0 ) -GAME( 1989, vaportrau,vaportra, vaportra, vaportra, vaportra, ROT270, "Data East USA", "Vapor Trail - Hyper Offence Formation (US)", 0 ) -GAME( 1989, kuhga, vaportra, vaportra, vaportra, vaportra, ROT270, "Data East Corporation", "Kuhga - Operation Code 'Vapor Trail' (Japan revision 3)", 0 ) +GAME( 1989, vaportra, 0, vaportra, vaportra, vaportra, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 1)", GAME_SUPPORTS_SAVE ) +GAME( 1989, vaportrau,vaportra, vaportra, vaportra, vaportra, ROT270, "Data East USA", "Vapor Trail - Hyper Offence Formation (US)", GAME_SUPPORTS_SAVE ) +GAME( 1989, kuhga, vaportra, vaportra, vaportra, vaportra, ROT270, "Data East Corporation", "Kuhga - Operation Code 'Vapor Trail' (Japan revision 3)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/dietgo.h b/src/mame/includes/dietgo.h index 2ef0ce1a9ae..0c6f35af5a8 100644 --- a/src/mame/includes/dietgo.h +++ b/src/mame/includes/dietgo.h @@ -15,7 +15,7 @@ public: UINT16 * pf1_rowscroll; UINT16 * pf2_rowscroll; UINT16 * spriteram; -// UINT16 * paletteram; // currently this uses generic palette handling (in decodev.c) +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) size_t spriteram_size; /* devices */ diff --git a/src/mame/includes/funkyjet.h b/src/mame/includes/funkyjet.h new file mode 100644 index 00000000000..3891c2005a0 --- /dev/null +++ b/src/mame/includes/funkyjet.h @@ -0,0 +1,31 @@ +/************************************************************************* + + Funky Jet + +*************************************************************************/ + +class funkyjet_state +{ +public: + static void *alloc(running_machine &machine) { return auto_alloc_clear(&machine, funkyjet_state(machine)); } + + funkyjet_state(running_machine &machine) { } + + /* memory pointers */ + UINT16 * pf1_rowscroll; + UINT16 * pf2_rowscroll; + UINT16 * spriteram; +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) + size_t spriteram_size; + + /* devices */ + running_device *maincpu; + running_device *audiocpu; + running_device *deco16ic; +}; + + + +/*----------- defined in video/funkyjet.c -----------*/ + +VIDEO_UPDATE( funkyjet ); diff --git a/src/mame/includes/pktgaldx.h b/src/mame/includes/pktgaldx.h index ad3bd8e51c3..007c7969c6c 100644 --- a/src/mame/includes/pktgaldx.h +++ b/src/mame/includes/pktgaldx.h @@ -15,7 +15,7 @@ public: UINT16 * pf1_rowscroll; UINT16 * pf2_rowscroll; UINT16 * spriteram; -// UINT16 * paletteram; // currently this uses generic palette handling (in decodev.c) +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) size_t spriteram_size; UINT16* pktgaldb_fgram; diff --git a/src/mame/includes/supbtime.h b/src/mame/includes/supbtime.h index 0379b777eb9..c91adcc5d69 100644 --- a/src/mame/includes/supbtime.h +++ b/src/mame/includes/supbtime.h @@ -15,7 +15,7 @@ public: UINT16 * pf1_rowscroll; UINT16 * pf2_rowscroll; UINT16 * spriteram; -// UINT16 * paletteram; // currently this uses generic palette handling (in decodev.c) +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) size_t spriteram_size; /* video-related */ diff --git a/src/mame/includes/tumbleb.h b/src/mame/includes/tumbleb.h index 7e4b4ec98d2..c091927307d 100644 --- a/src/mame/includes/tumbleb.h +++ b/src/mame/includes/tumbleb.h @@ -1,31 +1,41 @@ -/*----------- defined in drivers/tumbleb.c -----------*/ -extern UINT16* jumppop_control; -extern UINT16* suprtrio_control; +class tumbleb_state +{ +public: + static void *alloc(running_machine &machine) { return auto_alloc_clear(&machine, tumbleb_state(machine)); } + tumbleb_state(running_machine &machine) { } + + /* memory pointers */ + UINT16 * pf1_data; + UINT16 * pf2_data; + UINT16 * mainram; + UINT16 * spriteram; + UINT16 * control; + size_t spriteram_size; +// UINT16 * paletteram; // currently this uses generic palette handling + + /* misc */ + int music_command; + int music_bank; + int music_is_playing; + + /* video-related */ + tilemap_t *pf1_tilemap,*pf1_alt_tilemap,*pf2_tilemap,*pf2_alt_tilemap; + UINT16 control_0[8]; + int flipscreen; + UINT16 tilebank; + int sprite_xoffset; + int sprite_yoffset; + + /* devices */ + running_device *maincpu; + running_device *audiocpu; + running_device *oki; +}; /*----------- defined in video/tumbleb.c -----------*/ -extern UINT16 *tumblepb_pf1_data,*tumblepb_pf2_data; - -VIDEO_START( tumblepb ); -VIDEO_START( fncywld ); -VIDEO_START( jumppop ); -VIDEO_START( sdfight ); -VIDEO_UPDATE( tumblepb ); -VIDEO_UPDATE( jumpkids ); -VIDEO_UPDATE( fncywld ); -VIDEO_UPDATE( jumppop ); -VIDEO_UPDATE( semicom ); -VIDEO_UPDATE( semicom_altoffsets ); -VIDEO_UPDATE( bcstory ); -VIDEO_UPDATE(semibase ); -VIDEO_START( suprtrio ); -VIDEO_UPDATE( suprtrio ); -VIDEO_START( pangpang ); -VIDEO_UPDATE( pangpang ); -VIDEO_UPDATE( sdfight ); - WRITE16_HANDLER( tumblepb_pf1_data_w ); WRITE16_HANDLER( tumblepb_pf2_data_w ); WRITE16_HANDLER( fncywld_pf1_data_w ); @@ -38,3 +48,22 @@ WRITE16_HANDLER( bcstory_tilebank_w ); WRITE16_HANDLER( suprtrio_tilebank_w ); WRITE16_HANDLER( chokchok_tilebank_w ); WRITE16_HANDLER( wlstar_tilebank_w ); + +VIDEO_START( tumblepb ); +VIDEO_START( fncywld ); +VIDEO_START( jumppop ); +VIDEO_START( sdfight ); +VIDEO_START( suprtrio ); +VIDEO_START( pangpang ); + +VIDEO_UPDATE( tumblepb ); +VIDEO_UPDATE( jumpkids ); +VIDEO_UPDATE( fncywld ); +VIDEO_UPDATE( jumppop ); +VIDEO_UPDATE( semicom ); +VIDEO_UPDATE( semicom_altoffsets ); +VIDEO_UPDATE( bcstory ); +VIDEO_UPDATE(semibase ); +VIDEO_UPDATE( suprtrio ); +VIDEO_UPDATE( pangpang ); +VIDEO_UPDATE( sdfight ); diff --git a/src/mame/includes/tumblep.h b/src/mame/includes/tumblep.h index 041a3705aa3..7ddff4578cf 100644 --- a/src/mame/includes/tumblep.h +++ b/src/mame/includes/tumblep.h @@ -15,7 +15,7 @@ public: UINT16 * pf1_rowscroll; UINT16 * pf2_rowscroll; UINT16 * spriteram; -// UINT16 * paletteram; // currently this uses generic palette handling (in decodev.c) +// UINT16 * paletteram; // currently this uses generic palette handling (in deco16ic.c) size_t spriteram_size; /* devices */ diff --git a/src/mame/includes/vaportra.h b/src/mame/includes/vaportra.h new file mode 100644 index 00000000000..d1851b382fe --- /dev/null +++ b/src/mame/includes/vaportra.h @@ -0,0 +1,37 @@ +/************************************************************************* + + Vapour Trail + +*************************************************************************/ + +class vaportra_state +{ +public: + static void *alloc(running_machine &machine) { return auto_alloc_clear(&machine, vaportra_state(machine)); } + + vaportra_state(running_machine &machine) { } + + /* memory pointers */ + UINT16 * pf1_rowscroll; + UINT16 * pf2_rowscroll; + UINT16 * pf3_rowscroll; + UINT16 * pf4_rowscroll; + + /* misc */ + UINT16 priority[2]; + + /* devices */ + running_device *maincpu; + running_device *audiocpu; + running_device *deco16ic; +}; + + + +/*----------- defined in video/vaportra.c -----------*/ + +WRITE16_HANDLER( vaportra_priority_w ); +WRITE16_HANDLER( vaportra_palette_24bit_rg_w ); +WRITE16_HANDLER( vaportra_palette_24bit_b_w ); + +VIDEO_UPDATE( vaportra ); diff --git a/src/mame/mame.mak b/src/mame/mame.mak index efc3e48c33e..a692a2fa32f 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -592,7 +592,7 @@ $(MAMEOBJ)/dataeast.a: \ $(MACHINE)/deco102.o \ $(MACHINE)/decocrpt.o \ $(MACHINE)/decoprot.o \ - $(VIDEO)/decodev.o \ + $(VIDEO)/deco16ic.o \ $(MAMEOBJ)/dooyong.a: \ $(DRIVERS)/dooyong.o $(VIDEO)/dooyong.o \ diff --git a/src/mame/video/boogwing.c b/src/mame/video/boogwing.c index a7b63b49ea0..345607fdaae 100644 --- a/src/mame/video/boogwing.c +++ b/src/mame/video/boogwing.c @@ -1,5 +1,5 @@ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" UINT16 *boogwing_pf1_rowscroll,*boogwing_pf2_rowscroll; UINT16 *boogwing_pf3_rowscroll,*boogwing_pf4_rowscroll; @@ -9,7 +9,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta running_device *deco16ic = devtag_get_device(machine, "deco_custom"); int offs; int flipscreen=!flip_screen_get(machine); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); for (offs = 0x400-4;offs >= 0;offs -= 4) { @@ -122,7 +122,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta while (multi >= 0) { - decodev_pdrawgfx( + deco16ic_pdrawgfx( deco16ic, bitmap, cliprect, machine->gfx[gfx_region], sprite - multi * inc, @@ -139,15 +139,15 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta VIDEO_UPDATE( boogwing ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, boogwing_pf1_rowscroll, boogwing_pf2_rowscroll); - decodev_pf34_update(deco16ic, boogwing_pf3_rowscroll, boogwing_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, boogwing_pf1_rowscroll, boogwing_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, boogwing_pf3_rowscroll, boogwing_pf4_rowscroll); /* Draw playfields */ - decodev_clear_sprite_priority_bitmap(deco16ic); + deco16ic_clear_sprite_priority_bitmap(deco16ic); bitmap_fill(bitmap, cliprect, screen->machine->pens[0x400]); /* pen not confirmed */ bitmap_fill(screen->machine->priority_bitmap, NULL, 0); @@ -155,34 +155,34 @@ VIDEO_UPDATE( boogwing ) // bit&0x4 combines playfields if ((priority & 0x7) == 0x5) { - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, 0, 32); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, 0, 32); } else if ((priority & 0x7) == 0x1 || (priority & 0x7) == 0x2) { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 8); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 32); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 8); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 32); } else if ((priority & 0x7) == 0x3) { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 8); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 8); // This mode uses playfield 3 to shadow sprites & playfield 2 (instead of // regular alpha-blending, the destination is inverted). Not yet implemented. - // decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 32); + // deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 32); } else { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 8); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 32); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 8); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 32); } draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 3); draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram2.u16, 4); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/cbuster.c b/src/mame/video/cbuster.c index a89a344ef35..42bd034d60d 100644 --- a/src/mame/video/cbuster.c +++ b/src/mame/video/cbuster.c @@ -5,7 +5,7 @@ ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static int twocrude_pri; @@ -119,29 +119,29 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect VIDEO_UPDATE( twocrude ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, !BIT(flip, 7)); - decodev_pf12_update(deco16ic, twocrude_pf1_rowscroll, twocrude_pf2_rowscroll); - decodev_pf34_update(deco16ic, twocrude_pf3_rowscroll, twocrude_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, twocrude_pf1_rowscroll, twocrude_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, twocrude_pf3_rowscroll, twocrude_pf4_rowscroll); /* Draw playfields & sprites */ - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); if (twocrude_pri) { - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); } else { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); } draw_sprites(screen->machine, bitmap, cliprect, 1); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/cninja.c b/src/mame/video/cninja.c index 1d28c61fbf7..cfdf3555311 100644 --- a/src/mame/video/cninja.c +++ b/src/mame/video/cninja.c @@ -5,7 +5,7 @@ ****************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/cninja.h" UINT16 *cninja_pf1_rowscroll,*cninja_pf2_rowscroll; @@ -18,9 +18,9 @@ VIDEO_START( stoneage ) running_device *deco16ic = devtag_get_device(machine, "deco_custom"); /* The bootleg has broken scroll registers */ - decodev_set_scrolldx(deco16ic, 3, 0, -10, -10); /* pf4 16x16 tilemap */ - decodev_set_scrolldx(deco16ic, 1, 0, -10, -10); /* pf2 16x16 tilemap */ - decodev_set_scrolldx(deco16ic, 0, 1, 2, 2); /* pf1 8x8 tilemap */ + deco16ic_set_scrolldx(deco16ic, 3, 0, -10, -10); /* pf4 16x16 tilemap */ + deco16ic_set_scrolldx(deco16ic, 1, 0, -10, -10); /* pf2 16x16 tilemap */ + deco16ic_set_scrolldx(deco16ic, 0, 1, 2, 2); /* pf1 8x8 tilemap */ } /******************************************************************************/ @@ -374,124 +374,124 @@ static void mutantf_draw_sprites(running_machine *machine, bitmap_t *bitmap, con VIDEO_UPDATE( cninja ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); - decodev_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); /* Draw playfields */ bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, 512); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4); cninja_draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } VIDEO_UPDATE( cninjabl ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); - decodev_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); /* Draw playfields */ bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, 512); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4); cninjabl_draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } VIDEO_UPDATE( edrandy ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); - decodev_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, 0); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); cninja_draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } VIDEO_UPDATE( robocop2 ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); /* One of the tilemap chips can switch between 2 tilemaps at 4bpp, or 1 at 8bpp */ if (priority & 4) { - decodev_set_tilemap_colour_mask(deco16ic, 2, 0); - decodev_set_tilemap_colour_mask(deco16ic, 3, 0); - decodev_pf34_set_gfxbank(deco16ic, 0, 4); + deco16ic_set_tilemap_colour_mask(deco16ic, 2, 0); + deco16ic_set_tilemap_colour_mask(deco16ic, 3, 0); + deco16ic_pf34_set_gfxbank(deco16ic, 0, 4); } else { - decodev_set_tilemap_colour_mask(deco16ic, 2, 0xf); - decodev_set_tilemap_colour_mask(deco16ic, 3, 0xf); - decodev_pf34_set_gfxbank(deco16ic, 0, 2); + deco16ic_set_tilemap_colour_mask(deco16ic, 2, 0xf); + deco16ic_set_tilemap_colour_mask(deco16ic, 3, 0xf); + deco16ic_pf34_set_gfxbank(deco16ic, 0, 2); } /* Update playfields */ flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); - decodev_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); /* Draw playfields */ bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, 0x200); if ((priority & 4) == 0) - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); /* Switchable priority */ switch (priority & 0x8) { case 8: - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); break; default: case 0: - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); break; } robocop2_draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } VIDEO_UPDATE( mutantf ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); - decodev_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, cninja_pf1_rowscroll, cninja_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, cninja_pf3_rowscroll, cninja_pf4_rowscroll); /* Draw playfields */ bitmap_fill(bitmap, cliprect, 0x400); /* Confirmed */ @@ -507,9 +507,9 @@ VIDEO_UPDATE( mutantf ) The other bits may control alpha blend on the 2nd sprite chip, or layer order. */ - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); /* We need to abuse the priority bitmap a little by clearing it before drawing each sprite layer. This is because there is no priority @@ -531,6 +531,6 @@ VIDEO_UPDATE( mutantf ) bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); mutantf_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 3); } - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/dassault.c b/src/mame/video/dassault.c index 82bfc8251ce..4b1c16fbe7e 100644 --- a/src/mame/video/dassault.c +++ b/src/mame/video/dassault.c @@ -5,7 +5,7 @@ ****************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" UINT16 *dassault_pf2_rowscroll,*dassault_pf4_rowscroll; @@ -156,7 +156,7 @@ static void draw_sprites( running_machine* machine, bitmap_t *bitmap, const rect while (multi >= 0) { - decodev_pdrawgfx( + deco16ic_pdrawgfx( deco16ic, bitmap,cliprect,machine->gfx[gfxbank], sprite - multi * inc, @@ -176,35 +176,35 @@ static void draw_sprites( running_machine* machine, bitmap_t *bitmap, const rect VIDEO_UPDATE( dassault ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); /* Update tilemaps */ flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, 0, dassault_pf2_rowscroll); - decodev_pf34_update(deco16ic, 0, dassault_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, 0, dassault_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, 0, dassault_pf4_rowscroll); /* Draw playfields/update priority bitmap */ - decodev_clear_sprite_priority_bitmap(deco16ic); + deco16ic_clear_sprite_priority_bitmap(deco16ic); bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); bitmap_fill(bitmap, cliprect, screen->machine->pens[3072]); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); /* The middle playfields can be swapped priority-wise */ if ((priority & 3) == 0) { - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 16); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 16); } else if ((priority & 3) == 1) { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 64); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 64); } else if ((priority & 3) == 3) { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 16); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 16); } else { @@ -213,6 +213,6 @@ VIDEO_UPDATE( dassault ) /* Draw sprites - two sprite generators, with selectable priority */ draw_sprites(screen->machine, bitmap, cliprect, priority); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/decodev.c b/src/mame/video/deco16ic.c similarity index 92% rename from src/mame/video/decodev.c rename to src/mame/video/deco16ic.c index a947f7cffdc..75ed023317d 100644 --- a/src/mame/video/decodev.c +++ b/src/mame/video/deco16ic.c @@ -146,7 +146,7 @@ Rowscroll style: ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "ui.h" #if 0 @@ -228,7 +228,7 @@ INLINE const deco16ic_interface *get_interface( running_device *device ) /* Later games have double buffered paletteram - the real palette ram is only updated on a DMA call */ -WRITE16_DEVICE_HANDLER( decodev_nonbuffered_palette_w ) +WRITE16_DEVICE_HANDLER( deco16ic_nonbuffered_palette_w ) { int r,g,b; @@ -242,7 +242,7 @@ WRITE16_DEVICE_HANDLER( decodev_nonbuffered_palette_w ) palette_set_color(device->machine, offset / 2, MAKE_RGB(r,g,b)); } -WRITE16_DEVICE_HANDLER( decodev_buffered_palette_w ) +WRITE16_DEVICE_HANDLER( deco16ic_buffered_palette_w ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -251,7 +251,7 @@ WRITE16_DEVICE_HANDLER( decodev_buffered_palette_w ) deco16ic->dirty_palette[offset / 2] = 1; } -WRITE16_DEVICE_HANDLER( decodev_palette_dma_w ) +WRITE16_DEVICE_HANDLER( deco16ic_palette_dma_w ) { deco16ic_state *deco16ic = get_safe_token(device); const int m = device->machine->config->total_colors; @@ -275,18 +275,18 @@ WRITE16_DEVICE_HANDLER( decodev_palette_dma_w ) /*****************************************************************************************/ /* */ -READ16_DEVICE_HANDLER( decodev_71_r ) +READ16_DEVICE_HANDLER( deco16ic_71_r ) { return 0xffff; } -WRITE16_DEVICE_HANDLER( decodev_priority_w ) +WRITE16_DEVICE_HANDLER( deco16ic_priority_w ) { deco16ic_state *deco16ic = get_safe_token(device); deco16ic->priority = data; } -READ16_DEVICE_HANDLER( decodev_priority_r ) +READ16_DEVICE_HANDLER( deco16ic_priority_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->priority; @@ -589,7 +589,7 @@ static void custom_tilemap_draw( /******************************************************************************/ /* robocop 2 can switch between 2 tilemaps at 4bpp, or 1 at 8bpp */ -void decodev_set_tilemap_colour_mask( running_device *device, int tmap, int mask ) +void deco16ic_set_tilemap_colour_mask( running_device *device, int tmap, int mask ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -602,7 +602,7 @@ void decodev_set_tilemap_colour_mask( running_device *device, int tmap, int mask } } -void decodev_pf34_set_gfxbank( running_device *device, int small, int big ) +void deco16ic_pf34_set_gfxbank( running_device *device, int small, int big ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -619,7 +619,7 @@ void decodev_pf34_set_gfxbank( running_device *device, int small, int big ) } /* stoneage has broken scroll registers */ -void decodev_set_scrolldx( running_device *device, int tmap, int size, int dx, int dx_if_flipped ) +void deco16ic_set_scrolldx( running_device *device, int tmap, int size, int dx, int dx_if_flipped ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -650,7 +650,7 @@ void decodev_set_scrolldx( running_device *device, int tmap, int size, int dx, i /******************************************************************************/ -WRITE16_DEVICE_HANDLER( decodev_pf1_data_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf1_data_w ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -661,7 +661,7 @@ WRITE16_DEVICE_HANDLER( decodev_pf1_data_w ) tilemap_mark_tile_dirty(deco16ic->pf1_tilemap_16x16, offset); } -WRITE16_DEVICE_HANDLER( decodev_pf2_data_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf2_data_w ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -672,7 +672,7 @@ WRITE16_DEVICE_HANDLER( decodev_pf2_data_w ) tilemap_mark_tile_dirty(deco16ic->pf2_tilemap_16x16, offset); } -WRITE16_DEVICE_HANDLER( decodev_pf3_data_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf3_data_w ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -680,7 +680,7 @@ WRITE16_DEVICE_HANDLER( decodev_pf3_data_w ) tilemap_mark_tile_dirty(deco16ic->pf3_tilemap_16x16, offset); } -WRITE16_DEVICE_HANDLER( decodev_pf4_data_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf4_data_w ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -688,115 +688,115 @@ WRITE16_DEVICE_HANDLER( decodev_pf4_data_w ) tilemap_mark_tile_dirty(deco16ic->pf4_tilemap_16x16, offset); } -READ16_DEVICE_HANDLER( decodev_pf1_data_r ) +READ16_DEVICE_HANDLER( deco16ic_pf1_data_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf1_data[offset]; } -READ16_DEVICE_HANDLER( decodev_pf2_data_r ) +READ16_DEVICE_HANDLER( deco16ic_pf2_data_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf2_data[offset]; } -READ16_DEVICE_HANDLER( decodev_pf3_data_r ) +READ16_DEVICE_HANDLER( deco16ic_pf3_data_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf3_data[offset]; } -READ16_DEVICE_HANDLER( decodev_pf4_data_r ) +READ16_DEVICE_HANDLER( deco16ic_pf4_data_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf4_data[offset]; } -WRITE16_DEVICE_HANDLER( decodev_pf12_control_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf12_control_w ) { deco16ic_state *deco16ic = get_safe_token(device); COMBINE_DATA(&deco16ic->pf12_control[offset]); } -WRITE16_DEVICE_HANDLER( decodev_pf34_control_w ) +WRITE16_DEVICE_HANDLER( deco16ic_pf34_control_w ) { deco16ic_state *deco16ic = get_safe_token(device); COMBINE_DATA(&deco16ic->pf34_control[offset]); } -READ16_DEVICE_HANDLER( decodev_pf12_control_r ) +READ16_DEVICE_HANDLER( deco16ic_pf12_control_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf12_control[offset]; } -READ16_DEVICE_HANDLER( decodev_pf34_control_r ) +READ16_DEVICE_HANDLER( deco16ic_pf34_control_r ) { deco16ic_state *deco16ic = get_safe_token(device); return deco16ic->pf34_control[offset]; } -READ32_DEVICE_HANDLER ( decodev_pf12_control_dword_r ) +READ32_DEVICE_HANDLER ( deco16ic_pf12_control_dword_r ) { - return decodev_pf12_control_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf12_control_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf12_control_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf12_control_dword_w ) { - decodev_pf12_control_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf12_control_w(device, offset, data & 0xffff, mem_mask & 0xffff); } -READ32_DEVICE_HANDLER ( decodev_pf34_control_dword_r ) +READ32_DEVICE_HANDLER ( deco16ic_pf34_control_dword_r ) { - return decodev_pf34_control_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf34_control_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf34_control_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf34_control_dword_w ) { - decodev_pf34_control_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf34_control_w(device, offset, data & 0xffff, mem_mask & 0xffff); } -READ32_DEVICE_HANDLER( decodev_pf1_data_dword_r ) +READ32_DEVICE_HANDLER( deco16ic_pf1_data_dword_r ) { - return decodev_pf1_data_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf1_data_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf1_data_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf1_data_dword_w ) { - decodev_pf1_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf1_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); } -READ32_DEVICE_HANDLER( decodev_pf2_data_dword_r ) +READ32_DEVICE_HANDLER( deco16ic_pf2_data_dword_r ) { - return decodev_pf2_data_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf2_data_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf2_data_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf2_data_dword_w ) { - decodev_pf2_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf2_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); } -READ32_DEVICE_HANDLER( decodev_pf3_data_dword_r ) +READ32_DEVICE_HANDLER( deco16ic_pf3_data_dword_r ) { - return decodev_pf3_data_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf3_data_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf3_data_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf3_data_dword_w ) { - decodev_pf3_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf3_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); } -READ32_DEVICE_HANDLER( decodev_pf4_data_dword_r ) +READ32_DEVICE_HANDLER( deco16ic_pf4_data_dword_r ) { - return decodev_pf4_data_r(device, offset, 0xffff)^0xffff0000; + return deco16ic_pf4_data_r(device, offset, 0xffff)^0xffff0000; } -WRITE32_DEVICE_HANDLER( decodev_pf4_data_dword_w ) +WRITE32_DEVICE_HANDLER( deco16ic_pf4_data_dword_w ) { - decodev_pf4_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); + deco16ic_pf4_data_w(device, offset, data & 0xffff, mem_mask & 0xffff); } @@ -970,7 +970,7 @@ static int deco16_pf_update( return use_custom; } -void decodev_pf12_update( running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr ) +void deco16ic_pf12_update( running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr ) { deco16ic_state *deco16ic = get_safe_token(device); int bank1, bank2; @@ -1013,7 +1013,7 @@ void decodev_pf12_update( running_device *device, const UINT16 *rowscroll_1_ptr, } } -void decodev_pf34_update( running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr ) +void deco16ic_pf34_update( running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr ) { deco16ic_state *deco16ic = get_safe_token(device); int bank1, bank2; @@ -1052,7 +1052,7 @@ void decodev_pf34_update( running_device *device, const UINT16 *rowscroll_1_ptr, /*****************************************************************************************/ -void decodev_print_debug_info(running_device *device, bitmap_t *bitmap) +void deco16ic_print_debug_info(running_device *device, bitmap_t *bitmap) { deco16ic_state *deco16ic = get_safe_token(device); char buf[64*5]; @@ -1083,7 +1083,7 @@ void decodev_print_debug_info(running_device *device, bitmap_t *bitmap) /*****************************************************************************************/ -void decodev_clear_sprite_priority_bitmap( running_device *device ) +void deco16ic_clear_sprite_priority_bitmap( running_device *device ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -1092,7 +1092,7 @@ void decodev_clear_sprite_priority_bitmap( running_device *device ) } /* A special pdrawgfx z-buffered sprite renderer that is needed to properly draw multiple sprite sources with alpha */ -void decodev_pdrawgfx( +void deco16ic_pdrawgfx( running_device *device, bitmap_t *dest, const rectangle *clip, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, @@ -1163,7 +1163,7 @@ void decodev_pdrawgfx( /*****************************************************************************************/ -void decodev_tilemap_1_draw( running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority ) +void deco16ic_tilemap_1_draw( running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority ) { deco16ic_state *deco16ic = get_safe_token(device); @@ -1180,7 +1180,7 @@ void decodev_tilemap_1_draw( running_device *device, bitmap_t *bitmap, const rec } } -void decodev_tilemap_2_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) +void deco16ic_tilemap_2_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) { deco16ic_state *deco16ic = get_safe_token(device); @@ -1197,7 +1197,7 @@ void decodev_tilemap_2_draw(running_device *device, bitmap_t *bitmap, const rect } } -void decodev_tilemap_3_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) +void deco16ic_tilemap_3_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) { deco16ic_state *deco16ic = get_safe_token(device); @@ -1207,7 +1207,7 @@ void decodev_tilemap_3_draw(running_device *device, bitmap_t *bitmap, const rect tilemap_draw(bitmap, cliprect, deco16ic->pf3_tilemap_16x16, flags, priority); } -void decodev_tilemap_4_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) +void deco16ic_tilemap_4_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) { deco16ic_state *deco16ic = get_safe_token(device); @@ -1220,7 +1220,7 @@ void decodev_tilemap_4_draw(running_device *device, bitmap_t *bitmap, const rect /*****************************************************************************************/ // Combines the output of two 4BPP tilemaps into an 8BPP tilemap -void decodev_tilemap_34_combine_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) +void deco16ic_tilemap_34_combine_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority) { deco16ic_state *deco16ic = get_safe_token(device); custom_tilemap_draw(device, bitmap, 0, deco16ic->pf3_tilemap_16x16, 0, deco16ic->pf4_tilemap_16x16, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0xf, 4, 0xff, flags, priority); diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h new file mode 100644 index 00000000000..ed46ceb02bd --- /dev/null +++ b/src/mame/video/deco16ic.h @@ -0,0 +1,124 @@ +/************************************************************************* + + deco16ic.h + + Implementation of various Data East custom 16bit video ICs + +**************************************************************************/ + +#include "devcb.h" + + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +typedef int (*deco16_bank_cb)( const int bank ); + + +typedef struct _deco16ic_interface deco16ic_interface; +struct _deco16ic_interface +{ + const char *screen; + int pf12_only; + int split; + int full_width; + + int trans_mask1, trans_mask2, trans_mask3, trans_mask4; + int col_base1, col_base2, col_base3, col_base4; + int col_mask1, col_mask2, col_mask3, col_mask4; + deco16_bank_cb bank_cb0, bank_cb1, bank_cb2, bank_cb3; +}; + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +DEVICE_GET_INFO( deco16ic ); + + +/*************************************************************************** + DEVICE CONFIGURATION MACROS +***************************************************************************/ + +#define DECO16IC DEVICE_GET_INFO_NAME( deco16ic ) + +#define MDRV_DECO16IC_ADD(_tag, _interface) \ + MDRV_DEVICE_ADD(_tag, DECO16IC, 0) \ + MDRV_DEVICE_CONFIG(_interface) + +/*************************************************************************** + DEVICE I/O FUNCTIONS +***************************************************************************/ + +WRITE16_DEVICE_HANDLER( deco16ic_pf1_data_w ); +WRITE16_DEVICE_HANDLER( deco16ic_pf2_data_w ); +WRITE16_DEVICE_HANDLER( deco16ic_pf3_data_w ); +WRITE16_DEVICE_HANDLER( deco16ic_pf4_data_w ); + +READ16_DEVICE_HANDLER( deco16ic_pf1_data_r ); +READ16_DEVICE_HANDLER( deco16ic_pf2_data_r ); +READ16_DEVICE_HANDLER( deco16ic_pf3_data_r ); +READ16_DEVICE_HANDLER( deco16ic_pf4_data_r ); + +WRITE16_DEVICE_HANDLER( deco16ic_pf12_control_w ); +WRITE16_DEVICE_HANDLER( deco16ic_pf34_control_w ); + +READ16_DEVICE_HANDLER( deco16ic_pf12_control_r ); +READ16_DEVICE_HANDLER( deco16ic_pf34_control_r ); + + +WRITE32_DEVICE_HANDLER( deco16ic_pf1_data_dword_w ); +WRITE32_DEVICE_HANDLER( deco16ic_pf2_data_dword_w ); +WRITE32_DEVICE_HANDLER( deco16ic_pf3_data_dword_w ); +WRITE32_DEVICE_HANDLER( deco16ic_pf4_data_dword_w ); + +READ32_DEVICE_HANDLER( deco16ic_pf1_data_dword_r ); +READ32_DEVICE_HANDLER( deco16ic_pf2_data_dword_r ); +READ32_DEVICE_HANDLER( deco16ic_pf3_data_dword_r ); +READ32_DEVICE_HANDLER( deco16ic_pf4_data_dword_r ); + +WRITE32_DEVICE_HANDLER( deco16ic_pf12_control_dword_w ); +WRITE32_DEVICE_HANDLER( deco16ic_pf34_control_dword_w ); + +READ32_DEVICE_HANDLER( deco16ic_pf12_control_dword_r ); +READ32_DEVICE_HANDLER( deco16ic_pf34_control_dword_r ); + + +WRITE16_DEVICE_HANDLER( deco16ic_nonbuffered_palette_w ); +WRITE16_DEVICE_HANDLER( deco16ic_buffered_palette_w ); +WRITE16_DEVICE_HANDLER( deco16ic_palette_dma_w ); + +WRITE16_DEVICE_HANDLER( deco16ic_priority_w ); +READ16_DEVICE_HANDLER( deco16ic_priority_r ); + +READ16_DEVICE_HANDLER( deco16ic_71_r ); + +void deco16ic_print_debug_info(running_device *device, bitmap_t *bitmap); + +void deco16ic_pf12_update(running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr); +void deco16ic_pf34_update(running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr); + +void deco16ic_tilemap_1_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); +void deco16ic_tilemap_2_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); +void deco16ic_tilemap_3_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); +void deco16ic_tilemap_4_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); + +/* used by boogwing, nitrobal */ +void deco16ic_tilemap_34_combine_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); + + +/* used by boogwing, dassault, nitrobal */ +void deco16ic_clear_sprite_priority_bitmap(running_device *device); +void deco16ic_pdrawgfx( + running_device *device, + bitmap_t *dest,const rectangle *clip,const gfx_element *gfx, + UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy, + int transparent_color,UINT32 pri_mask,UINT32 sprite_mask,UINT8 write_pri,UINT8 alpha); + +/* used by robocop2 */ +void deco16ic_set_tilemap_colour_mask(running_device *device, int tmap, int mask); +void deco16ic_pf34_set_gfxbank(running_device *device, int small, int big); + +/* used by stoneage */ +void deco16ic_set_scrolldx(running_device *device, int tmap, int size, int dx, int dx_if_flipped); diff --git a/src/mame/video/decodev.h b/src/mame/video/decodev.h deleted file mode 100644 index ba485f92290..00000000000 --- a/src/mame/video/decodev.h +++ /dev/null @@ -1,124 +0,0 @@ -/************************************************************************* - - decodev.h - - Implementation of various Data East custom video ICs - -**************************************************************************/ - -#include "devcb.h" - - -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -typedef int (*deco16_bank_cb)( const int bank ); - - -typedef struct _deco16ic_interface deco16ic_interface; -struct _deco16ic_interface -{ - const char *screen; - int pf12_only; - int split; - int full_width; - - int trans_mask1, trans_mask2, trans_mask3, trans_mask4; - int col_base1, col_base2, col_base3, col_base4; - int col_mask1, col_mask2, col_mask3, col_mask4; - deco16_bank_cb bank_cb0, bank_cb1, bank_cb2, bank_cb3; -}; - -/*************************************************************************** - FUNCTION PROTOTYPES -***************************************************************************/ - -DEVICE_GET_INFO( deco16ic ); - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define DECO16IC DEVICE_GET_INFO_NAME( deco16ic ) - -#define MDRV_DECO16IC_ADD(_tag, _interface) \ - MDRV_DEVICE_ADD(_tag, DECO16IC, 0) \ - MDRV_DEVICE_CONFIG(_interface) - -/*************************************************************************** - DEVICE I/O FUNCTIONS -***************************************************************************/ - -WRITE16_DEVICE_HANDLER( decodev_pf1_data_w ); -WRITE16_DEVICE_HANDLER( decodev_pf2_data_w ); -WRITE16_DEVICE_HANDLER( decodev_pf3_data_w ); -WRITE16_DEVICE_HANDLER( decodev_pf4_data_w ); - -READ16_DEVICE_HANDLER( decodev_pf1_data_r ); -READ16_DEVICE_HANDLER( decodev_pf2_data_r ); -READ16_DEVICE_HANDLER( decodev_pf3_data_r ); -READ16_DEVICE_HANDLER( decodev_pf4_data_r ); - -WRITE16_DEVICE_HANDLER( decodev_pf12_control_w ); -WRITE16_DEVICE_HANDLER( decodev_pf34_control_w ); - -READ16_DEVICE_HANDLER( decodev_pf12_control_r ); -READ16_DEVICE_HANDLER( decodev_pf34_control_r ); - - -WRITE32_DEVICE_HANDLER( decodev_pf1_data_dword_w ); -WRITE32_DEVICE_HANDLER( decodev_pf2_data_dword_w ); -WRITE32_DEVICE_HANDLER( decodev_pf3_data_dword_w ); -WRITE32_DEVICE_HANDLER( decodev_pf4_data_dword_w ); - -READ32_DEVICE_HANDLER( decodev_pf1_data_dword_r ); -READ32_DEVICE_HANDLER( decodev_pf2_data_dword_r ); -READ32_DEVICE_HANDLER( decodev_pf3_data_dword_r ); -READ32_DEVICE_HANDLER( decodev_pf4_data_dword_r ); - -WRITE32_DEVICE_HANDLER( decodev_pf12_control_dword_w ); -WRITE32_DEVICE_HANDLER( decodev_pf34_control_dword_w ); - -READ32_DEVICE_HANDLER( decodev_pf12_control_dword_r ); -READ32_DEVICE_HANDLER( decodev_pf34_control_dword_r ); - - -WRITE16_DEVICE_HANDLER( decodev_nonbuffered_palette_w ); -WRITE16_DEVICE_HANDLER( decodev_buffered_palette_w ); -WRITE16_DEVICE_HANDLER( decodev_palette_dma_w ); - -WRITE16_DEVICE_HANDLER( decodev_priority_w ); -READ16_DEVICE_HANDLER( decodev_priority_r ); - -READ16_DEVICE_HANDLER( decodev_71_r ); - -void decodev_print_debug_info(running_device *device, bitmap_t *bitmap); - -void decodev_pf12_update(running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr); -void decodev_pf34_update(running_device *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr); - -void decodev_tilemap_1_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); -void decodev_tilemap_2_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); -void decodev_tilemap_3_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); -void decodev_tilemap_4_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); - -/* used by boogwing, nitrobal */ -void decodev_tilemap_34_combine_draw(running_device *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority); - - -/* used by boogwing, dassault, nitrobal */ -void decodev_clear_sprite_priority_bitmap(running_device *device); -void decodev_pdrawgfx( - running_device *device, - bitmap_t *dest,const rectangle *clip,const gfx_element *gfx, - UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy, - int transparent_color,UINT32 pri_mask,UINT32 sprite_mask,UINT8 write_pri,UINT8 alpha); - -/* used by robocop2 */ -void decodev_set_tilemap_colour_mask(running_device *device, int tmap, int mask); -void decodev_pf34_set_gfxbank(running_device *device, int small, int big); - -/* used by stoneage */ -void decodev_set_scrolldx(running_device *device, int tmap, int size, int dx, int dx_if_flipped); diff --git a/src/mame/video/dietgo.c b/src/mame/video/dietgo.c index 9df3af5125b..b57a4a3ea66 100644 --- a/src/mame/video/dietgo.c +++ b/src/mame/video/dietgo.c @@ -1,5 +1,5 @@ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/dietgo.h" @@ -75,15 +75,15 @@ static void draw_sprites( running_machine* machine, bitmap_t *bitmap, const rect VIDEO_UPDATE( dietgo ) { dietgo_state *state = (dietgo_state *)screen->machine->driver_data; - UINT16 flip = decodev_pf12_control_r(state->deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 256); /* not verified */ - decodev_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); return 0; diff --git a/src/mame/video/funkyjet.c b/src/mame/video/funkyjet.c index 0b70b2e732e..29aa1ec1bc9 100644 --- a/src/mame/video/funkyjet.c +++ b/src/mame/video/funkyjet.c @@ -5,29 +5,30 @@ ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" - -UINT16 *funkyjet_pf1_rowscroll,*funkyjet_pf2_rowscroll; +#include "includes/funkyjet.h" +#include "video/deco16ic.h" /******************************************************************************/ -static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect) +static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { - UINT16 *spriteram16 = machine->generic.spriteram.u16; + funkyjet_state *state = (funkyjet_state *)machine->driver_data; + UINT16 *spriteram = state->spriteram; int offs; - for (offs = 0;offs < 0x400;offs += 4) + for (offs = 0; offs < 0x400; offs += 4) { - int x,y,sprite,colour,multi,fx,fy,inc,flash,mult; + int x, y,sprite, colour, multi, fx, fy, inc, flash, mult; - sprite = spriteram16[offs+1] & 0x3fff; + sprite = spriteram[offs + 1] & 0x3fff; - y = spriteram16[offs]; - flash=y&0x1000; - if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + y = spriteram[offs]; + flash = y & 0x1000; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) + continue; - x = spriteram16[offs+2]; - colour = (x >>9) & 0x1f; + x = spriteram[offs + 2]; + colour = (x >> 9) & 0x1f; fx = y & 0x2000; fy = y & 0x4000; @@ -40,7 +41,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta y = 240 - y; x = 304 - x; - if (x>320) continue; + if (x > 320) + continue; sprite &= ~multi; if (fy) @@ -53,13 +55,14 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta if (flip_screen_get(machine)) { - y=240-y; - x=304-x; - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - mult=16; + y = 240 - y; + x = 304 - x; + if (fx) fx = 0; else fx = 1; + if (fy) fy = 0; else fy = 1; + mult = 16; } - else mult=-16; + else + mult = -16; while (multi >= 0) { @@ -76,15 +79,15 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta VIDEO_UPDATE( funkyjet ) { - running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + funkyjet_state *state = (funkyjet_state *)screen->machine->driver_data; + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, funkyjet_pf1_rowscroll, funkyjet_pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 768); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); return 0; } diff --git a/src/mame/video/pktgaldx.c b/src/mame/video/pktgaldx.c index a8094505513..c15d0ae9c10 100644 --- a/src/mame/video/pktgaldx.c +++ b/src/mame/video/pktgaldx.c @@ -1,5 +1,5 @@ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/pktgaldx.h" static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect ) @@ -76,17 +76,17 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta VIDEO_UPDATE( pktgaldx ) { pktgaldx_state *state = (pktgaldx_state *)screen->machine->driver_data; - UINT16 flip = decodev_pf12_control_r(state->deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 0); /* not Confirmed */ bitmap_fill(screen->machine->priority_bitmap, NULL, 0); - decodev_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/rohga.c b/src/mame/video/rohga.c index 57d26e16553..985e2ae7adf 100644 --- a/src/mame/video/rohga.c +++ b/src/mame/video/rohga.c @@ -5,7 +5,7 @@ ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" static UINT16 * rohga_spriteram; @@ -207,7 +207,7 @@ static void nitrobal_draw_sprites(running_machine *machine, bitmap_t *bitmap, co { running_device *deco16ic = devtag_get_device(machine, "deco_custom"); int offs,end,inc; - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); /* Alternate format from most 16 bit games - same as Captain America and Mutant Fighter @@ -382,7 +382,7 @@ sprite 2: for (x=0; xgfx[gfxbank], sprite + y + h * x, @@ -402,13 +402,13 @@ sprite 2: static void update_rohga(running_device *screen, bitmap_t *bitmap, const rectangle *cliprect, int is_schmeisr) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); /* Update playfields */ flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, rohga_pf1_rowscroll, rohga_pf2_rowscroll); - decodev_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, rohga_pf1_rowscroll, rohga_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); /* Draw playfields */ bitmap_fill(screen->machine->priority_bitmap, cliprect, 0); @@ -420,30 +420,30 @@ static void update_rohga(running_device *screen, bitmap_t *bitmap, const rectang if (priority & 4) { // Draw as 1 8BPP layer - decodev_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 3); + deco16ic_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 3); } else { // Draw as 2 4BPP layers - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 2); } - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 4); break; case 1: - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); break; case 2: - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 4); break; } rohga_draw_sprites(screen->machine, bitmap, cliprect, rohga_spriteram, is_schmeisr); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); } VIDEO_UPDATE( rohga ) @@ -463,58 +463,58 @@ VIDEO_UPDATE( schmeisr ) VIDEO_UPDATE( wizdfire ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - UINT16 priority = decodev_priority_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 priority = deco16ic_priority_r(deco16ic, 0, 0xffff); /* Update playfields */ flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, 0, 0); - decodev_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, 0, 0); + deco16ic_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); /* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */ bitmap_fill(bitmap, cliprect, screen->machine->pens[512]); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 4, 3); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 3, 3); if ((priority & 0x1f) == 0x1f) /* Wizdfire has bit 0x40 always set, Dark Seal 2 doesn't?! */ - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 0); else - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); /* See notes in wizdfire_draw_sprites about this */ wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 0, 3); wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram2.u16, 2, 4); wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram2.u16, 1, 4); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } VIDEO_UPDATE( nitrobal ) { running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(deco16ic, 0, 0xffff); /* Update playfields */ flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(deco16ic, rohga_pf1_rowscroll, rohga_pf2_rowscroll); - decodev_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); + deco16ic_pf12_update(deco16ic, rohga_pf1_rowscroll, rohga_pf2_rowscroll); + deco16ic_pf34_update(deco16ic, rohga_pf3_rowscroll, rohga_pf4_rowscroll); /* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */ bitmap_fill(bitmap, cliprect, screen->machine->pens[512]); bitmap_fill(screen->machine->priority_bitmap, NULL, 0); - decodev_clear_sprite_priority_bitmap(deco16ic); + deco16ic_clear_sprite_priority_bitmap(deco16ic); /* pf3 and pf4 are combined into a single 8bpp bitmap */ - decodev_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_34_combine_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 16); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 16); nitrobal_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 3); nitrobal_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram2.u16, 4); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/simpl156.c b/src/mame/video/simpl156.c index 4f5661fb903..3028ca803a3 100644 --- a/src/mame/video/simpl156.c +++ b/src/mame/video/simpl156.c @@ -3,7 +3,7 @@ */ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" UINT16 *simpl156_pf1_rowscroll,*simpl156_pf2_rowscroll; @@ -119,12 +119,12 @@ VIDEO_UPDATE( simpl156 ) running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); bitmap_fill(screen->machine->priority_bitmap,NULL,0); - decodev_pf12_update(deco16ic, simpl156_pf1_rowscroll, simpl156_pf2_rowscroll); + deco16ic_pf12_update(deco16ic, simpl156_pf1_rowscroll, simpl156_pf2_rowscroll); bitmap_fill(bitmap, cliprect, 256); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 4); + deco16ic_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 2); + deco16ic_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 4); draw_sprites(screen->machine, bitmap, cliprect); return 0; diff --git a/src/mame/video/supbtime.c b/src/mame/video/supbtime.c index 20c5b447c34..da880a2993a 100644 --- a/src/mame/video/supbtime.c +++ b/src/mame/video/supbtime.c @@ -13,7 +13,7 @@ End sequence uses rowscroll '98 c0' on pf1 (jmp to 1d61a on supbtimj) ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/supbtime.h" /******************************************************************************/ @@ -91,15 +91,15 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect VIDEO_UPDATE(supbtime) { supbtime_state *state = (supbtime_state *)screen->machine->driver_data; - UINT16 flip = decodev_pf12_control_r(state->deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 768); - decodev_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); - decodev_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/tumbleb.c b/src/mame/video/tumbleb.c index 88f829d32b6..43ebb72bea3 100644 --- a/src/mame/video/tumbleb.c +++ b/src/mame/video/tumbleb.c @@ -17,36 +17,29 @@ to switch between 8*8 tiles and 16*16 tiles. #include "emu.h" #include "includes/tumbleb.h" - -static UINT16 tumblepb_control_0[8]; -UINT16 *tumblepb_pf1_data,*tumblepb_pf2_data; -static tilemap_t *pf1_tilemap,*pf1_alt_tilemap,*pf2_tilemap,*pf2_alt_tilemap; -static int flipscreen; -static UINT16 bcstory_tilebank; -static int sprite_xoffset; -static int sprite_yoffset; - - /******************************************************************************/ -static void tumblepb_draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) +static void tumblepb_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { - UINT16 *spriteram16 = machine->generic.spriteram.u16; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + UINT16 *spriteram = state->spriteram; int offs; - for (offs = 0;offs < 0x400;offs += 4) + for (offs = 0; offs < 0x400; offs += 4) { - int x,y,sprite,colour,multi,fx,fy,inc,flash,mult; + int x, y, sprite, colour, multi, fx, fy, inc, flash, mult; - sprite = spriteram16[offs+1] & 0x3fff; - if (!sprite) continue; + sprite = spriteram[offs + 1] & 0x3fff; + if (!sprite) + continue; - y = spriteram16[offs]; - flash=y&0x1000; - if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + y = spriteram[offs]; + flash = y & 0x1000; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) + continue; - x = spriteram16[offs+2]; - colour = (x >>9) & 0xf; + x = spriteram[offs + 2]; + colour = (x >> 9) & 0xf; fx = y & 0x2000; fy = y & 0x4000; @@ -57,7 +50,7 @@ static void tumblepb_draw_sprites(running_machine *machine, bitmap_t *bitmap,con if (x >= 320) x -= 512; if (y >= 256) y -= 512; y = 240 - y; - x = 304 - x; + x = 304 - x; sprite &= ~multi; if (fy) @@ -68,15 +61,16 @@ static void tumblepb_draw_sprites(running_machine *machine, bitmap_t *bitmap,con inc = 1; } - if (flipscreen) + if (state->flipscreen) { - y=240-y; - x=304-x; - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - mult=16; + y = 240 - y; + x = 304 - x; + if (fx) fx = 0; else fx = 1; + if (fy) fy = 0; else fy = 1; + mult = 16; } - else mult=-16; + else + mult = -16; while (multi >= 0) { @@ -84,31 +78,34 @@ static void tumblepb_draw_sprites(running_machine *machine, bitmap_t *bitmap,con sprite - multi * inc, colour, fx,fy, - sprite_xoffset + x,sprite_yoffset + y + mult * multi,0); + state->sprite_xoffset + x, state->sprite_yoffset + y + mult * multi, 0); multi--; } } } -static void jumpkids_draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) +static void jumpkids_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { - UINT16 *spriteram16 = machine->generic.spriteram.u16; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + UINT16 *spriteram = state->spriteram; int offs; - for (offs = 0;offs < machine->generic.spriteram_size/2;offs += 4) + for (offs = 0; offs < state->spriteram_size / 2; offs += 4) { - int x,y,sprite,colour,multi,fx,fy,inc,flash,mult; + int x, y, sprite, colour, multi, fx, fy, inc, flash, mult; - sprite = spriteram16[offs+1] & 0x7fff; - if (!sprite) continue; + sprite = spriteram[offs + 1] & 0x7fff; + if (!sprite) + continue; - y = spriteram16[offs]; - flash=y&0x1000; - if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + y = spriteram[offs]; + flash = y & 0x1000; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) + continue; - x = spriteram16[offs+2]; - colour = (x >>9) & 0xf; + x = spriteram[offs+2]; + colour = (x >> 9) & 0xf; fx = y & 0x2000; fy = y & 0x4000; @@ -119,9 +116,9 @@ static void jumpkids_draw_sprites(running_machine *machine, bitmap_t *bitmap,con if (x >= 320) x -= 512; if (y >= 256) y -= 512; y = 240 - y; - x = 304 - x; + x = 304 - x; - // sprite &= ~multi; /* Todo: I bet TumblePop bootleg doesn't do this either */ + // sprite &= ~multi; /* Todo: I bet TumblePop bootleg doesn't do this either */ if (fy) inc = -1; else @@ -130,15 +127,16 @@ static void jumpkids_draw_sprites(running_machine *machine, bitmap_t *bitmap,con inc = 1; } - if (flipscreen) + if (state->flipscreen) { - y=240-y; - x=304-x; - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - mult=16; + y = 240 - y; + x = 304 - x; + if (fx) fx = 0; else fx = 1; + if (fy) fy = 0; else fy = 1; + mult = 16; } - else mult=-16; + else + mult = -16; while (multi >= 0) { @@ -147,31 +145,34 @@ static void jumpkids_draw_sprites(running_machine *machine, bitmap_t *bitmap,con sprite - multi * inc, colour, fx,fy, - sprite_xoffset+x,sprite_yoffset + y + mult * multi,0); + state->sprite_xoffset + x, state->sprite_yoffset + y + mult * multi, 0); multi--; } } } -static void fncywld_draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect) +static void fncywld_draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { - UINT16 *spriteram16 = machine->generic.spriteram.u16; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + UINT16 *spriteram = state->spriteram; int offs; - for (offs = 0;offs < 0x400;offs += 4) + for (offs = 0; offs < 0x400; offs += 4) { - int x,y,sprite,colour,multi,fx,fy,inc,flash,mult; + int x, y, sprite, colour, multi, fx, fy, inc, flash, mult; - sprite = spriteram16[offs+1] & 0x3fff; - if (!sprite) continue; + sprite = spriteram[offs + 1] & 0x3fff; + if (!sprite) + continue; - y = spriteram16[offs]; - flash=y&0x1000; - if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + y = spriteram[offs]; + flash = y & 0x1000; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) + continue; - x = spriteram16[offs+2]; - colour = (x >>9) & 0x3f; + x = spriteram[offs + 2]; + colour = (x >> 9) & 0x3f; fx = y & 0x2000; fy = y & 0x4000; @@ -182,9 +183,9 @@ static void fncywld_draw_sprites(running_machine *machine, bitmap_t *bitmap,cons if (x >= 320) x -= 512; if (y >= 256) y -= 512; y = 240 - y; - x = 304 - x; + x = 304 - x; - // sprite &= ~multi; /* Todo: I bet TumblePop bootleg doesn't do this either */ + // sprite &= ~multi; /* Todo: I bet TumblePop bootleg doesn't do this either */ if (fy) inc = -1; else @@ -193,15 +194,15 @@ static void fncywld_draw_sprites(running_machine *machine, bitmap_t *bitmap,cons inc = 1; } - if (flipscreen) + if (state->flipscreen) { - y=240-y; - x=304-x; - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - mult=16; + y = 240 - y; + x = 304 - x; + if (fx) fx = 0; else fx = 1; + if (fy) fy = 0; else fy = 1; + mult = 16; } - else mult=-16; + else mult = -16; while (multi >= 0) { @@ -209,7 +210,7 @@ static void fncywld_draw_sprites(running_machine *machine, bitmap_t *bitmap,cons sprite - multi * inc, colour, fx,fy, - sprite_xoffset+x,sprite_yoffset+ y + mult * multi,15); + state->sprite_xoffset + x, state->sprite_yoffset + y + mult * multi, 15); multi--; } @@ -220,74 +221,109 @@ static void fncywld_draw_sprites(running_machine *machine, bitmap_t *bitmap,cons WRITE16_HANDLER( bcstory_tilebank_w ) { - bcstory_tilebank = data; - tilemap_mark_all_tiles_dirty(pf1_tilemap); - tilemap_mark_all_tiles_dirty(pf1_alt_tilemap); - tilemap_mark_all_tiles_dirty(pf2_tilemap); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + state->tilebank = data; + tilemap_mark_all_tiles_dirty(state->pf1_tilemap); + tilemap_mark_all_tiles_dirty(state->pf1_alt_tilemap); + tilemap_mark_all_tiles_dirty(state->pf2_tilemap); } WRITE16_HANDLER( chokchok_tilebank_w ) { - bcstory_tilebank = data<<1; - tilemap_mark_all_tiles_dirty(pf1_tilemap); - tilemap_mark_all_tiles_dirty(pf1_alt_tilemap); - tilemap_mark_all_tiles_dirty(pf2_tilemap); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + state->tilebank = data << 1; + tilemap_mark_all_tiles_dirty(state->pf1_tilemap); + tilemap_mark_all_tiles_dirty(state->pf1_alt_tilemap); + tilemap_mark_all_tiles_dirty(state->pf2_tilemap); } WRITE16_HANDLER( wlstar_tilebank_w ) { + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + /* it just writes 0000 or ffff */ - bcstory_tilebank = data&0x4000; - tilemap_mark_all_tiles_dirty(pf1_tilemap); - tilemap_mark_all_tiles_dirty(pf1_alt_tilemap); - tilemap_mark_all_tiles_dirty(pf2_tilemap); + state->tilebank = data & 0x4000; + tilemap_mark_all_tiles_dirty(state->pf1_tilemap); + tilemap_mark_all_tiles_dirty(state->pf1_alt_tilemap); + tilemap_mark_all_tiles_dirty(state->pf2_tilemap); } WRITE16_HANDLER( suprtrio_tilebank_w ) { - bcstory_tilebank = data<<14; // shift it here, makes using bcstory_tilebank easier - tilemap_mark_all_tiles_dirty(pf1_tilemap); - tilemap_mark_all_tiles_dirty(pf1_alt_tilemap); - tilemap_mark_all_tiles_dirty(pf2_tilemap); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + state->tilebank = data << 14; // shift it here, makes using bcstory_tilebank easier + tilemap_mark_all_tiles_dirty(state->pf1_tilemap); + tilemap_mark_all_tiles_dirty(state->pf1_alt_tilemap); + tilemap_mark_all_tiles_dirty(state->pf2_tilemap); } - - - WRITE16_HANDLER( tumblepb_pf1_data_w ) { - COMBINE_DATA(&tumblepb_pf1_data[offset]); - tilemap_mark_tile_dirty(pf1_tilemap,offset); - tilemap_mark_tile_dirty(pf1_alt_tilemap,offset); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + COMBINE_DATA(&state->pf1_data[offset]); + tilemap_mark_tile_dirty(state->pf1_tilemap, offset); + tilemap_mark_tile_dirty(state->pf1_alt_tilemap, offset); } WRITE16_HANDLER( tumblepb_pf2_data_w ) { - COMBINE_DATA(&tumblepb_pf2_data[offset]); - tilemap_mark_tile_dirty(pf2_tilemap,offset); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; - if (pf2_alt_tilemap) - tilemap_mark_tile_dirty(pf2_alt_tilemap,offset); + COMBINE_DATA(&state->pf2_data[offset]); + tilemap_mark_tile_dirty(state->pf2_tilemap, offset); + + if (state->pf2_alt_tilemap) + tilemap_mark_tile_dirty(state->pf2_alt_tilemap, offset); } WRITE16_HANDLER( fncywld_pf1_data_w ) { - COMBINE_DATA(&tumblepb_pf1_data[offset]); - tilemap_mark_tile_dirty(pf1_tilemap,offset/2); - tilemap_mark_tile_dirty(pf1_alt_tilemap,offset/2); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + COMBINE_DATA(&state->pf1_data[offset]); + tilemap_mark_tile_dirty(state->pf1_tilemap, offset / 2); + tilemap_mark_tile_dirty(state->pf1_alt_tilemap, offset / 2); } WRITE16_HANDLER( fncywld_pf2_data_w ) { - COMBINE_DATA(&tumblepb_pf2_data[offset]); - tilemap_mark_tile_dirty(pf2_tilemap,offset/2); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + COMBINE_DATA(&state->pf2_data[offset]); + tilemap_mark_tile_dirty(state->pf2_tilemap, offset / 2); } WRITE16_HANDLER( tumblepb_control_0_w ) { - COMBINE_DATA(&tumblepb_control_0[offset]); + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + COMBINE_DATA(&state->control_0[offset]); +} + + +WRITE16_HANDLER( pangpang_pf1_data_w ) +{ + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + COMBINE_DATA(&state->pf1_data[offset]); + tilemap_mark_tile_dirty(state->pf1_tilemap, offset / 2); + tilemap_mark_tile_dirty(state->pf1_alt_tilemap, offset / 2); +} + +WRITE16_HANDLER( pangpang_pf2_data_w ) +{ + tumbleb_state *state = (tumbleb_state *)space->machine->driver_data; + + COMBINE_DATA(&state->pf2_data[offset]); + tilemap_mark_tile_dirty(state->pf2_tilemap, offset / 2); + + if (state->pf2_alt_tilemap) + tilemap_mark_tile_dirty(state->pf2_alt_tilemap, offset / 2); } /******************************************************************************/ @@ -298,35 +334,37 @@ static TILEMAP_MAPPER( tumblep_scan ) return (col & 0x1f) + ((row & 0x1f) << 5) + ((col & 0x60) << 5); } -INLINE void get_bg_tile_info(running_machine *machine,tile_data *tileinfo,int tile_index,int gfx_bank,UINT16 *gfx_base) +INLINE void get_bg_tile_info( running_machine *machine, tile_data *tileinfo, int tile_index, int gfx_bank, UINT16 *gfx_base) { + tumbleb_state *state = (tumbleb_state *)machine->driver_data; int data = gfx_base[tile_index]; SET_TILE_INFO( gfx_bank, - (data & 0x0fff)|(bcstory_tilebank>>2), + (data & 0x0fff) | (state->tilebank >> 2), data >> 12, 0); } -static TILE_GET_INFO( get_bg1_tile_info ) { get_bg_tile_info(machine,tileinfo,tile_index,2,tumblepb_pf1_data); } -static TILE_GET_INFO( get_bg2_tile_info ) { get_bg_tile_info(machine,tileinfo,tile_index,1,tumblepb_pf2_data); } +static TILE_GET_INFO( get_bg1_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; get_bg_tile_info(machine, tileinfo, tile_index, 2, state->pf1_data); } +static TILE_GET_INFO( get_bg2_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; get_bg_tile_info(machine, tileinfo, tile_index, 1, state->pf2_data); } static TILE_GET_INFO( get_fg_tile_info ) { - int data = tumblepb_pf1_data[tile_index]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf1_data[tile_index]; SET_TILE_INFO( 0, - (data & 0x0fff)|bcstory_tilebank, + (data & 0x0fff) | state->tilebank, data >> 12, 0); } -INLINE void get_fncywld_bg_tile_info(running_machine *machine,tile_data *tileinfo,int tile_index,int gfx_bank,UINT16 *gfx_base) +INLINE void get_fncywld_bg_tile_info( running_machine *machine, tile_data *tileinfo, int tile_index, int gfx_bank, UINT16 *gfx_base) { - int data = gfx_base[tile_index*2]; - int attr = gfx_base[tile_index*2+1]; + int data = gfx_base[tile_index * 2]; + int attr = gfx_base[tile_index * 2 + 1]; SET_TILE_INFO( gfx_bank, @@ -335,13 +373,14 @@ INLINE void get_fncywld_bg_tile_info(running_machine *machine,tile_data *tileinf 0); } -static TILE_GET_INFO( get_fncywld_bg1_tile_info ) { get_fncywld_bg_tile_info(machine,tileinfo,tile_index,2,tumblepb_pf1_data); } -static TILE_GET_INFO( get_fncywld_bg2_tile_info ) { get_fncywld_bg_tile_info(machine,tileinfo,tile_index,1,tumblepb_pf2_data); } +static TILE_GET_INFO( get_fncywld_bg1_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; get_fncywld_bg_tile_info(machine, tileinfo, tile_index, 2, state->pf1_data); } +static TILE_GET_INFO( get_fncywld_bg2_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; get_fncywld_bg_tile_info(machine, tileinfo, tile_index, 1, state->pf2_data); } static TILE_GET_INFO( get_fncywld_fg_tile_info ) { - int data = tumblepb_pf1_data[tile_index*2]; - int attr = tumblepb_pf1_data[tile_index*2+1]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf1_data[tile_index * 2]; + int attr = state->pf1_data[tile_index * 2 + 1]; SET_TILE_INFO( 0, @@ -354,7 +393,8 @@ static TILE_GET_INFO( get_fncywld_fg_tile_info ) /* jump pop */ static TILE_GET_INFO( get_jumppop_bg1_tile_info ) { - int data = tumblepb_pf1_data[tile_index]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf1_data[tile_index]; SET_TILE_INFO( 2, @@ -365,7 +405,8 @@ static TILE_GET_INFO( get_jumppop_bg1_tile_info ) static TILE_GET_INFO( get_jumppop_bg2_tile_info ) { - int data = tumblepb_pf2_data[tile_index]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf2_data[tile_index]; SET_TILE_INFO( 1, @@ -376,7 +417,8 @@ static TILE_GET_INFO( get_jumppop_bg2_tile_info ) static TILE_GET_INFO( get_jumppop_bg2_alt_tile_info ) { - int data = tumblepb_pf2_data[tile_index]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf2_data[tile_index]; SET_TILE_INFO( 0, @@ -388,7 +430,8 @@ static TILE_GET_INFO( get_jumppop_bg2_alt_tile_info ) static TILE_GET_INFO( get_jumppop_fg_tile_info ) { - int data = tumblepb_pf1_data[tile_index]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf1_data[tile_index]; SET_TILE_INFO( 0, @@ -397,29 +440,10 @@ static TILE_GET_INFO( get_jumppop_fg_tile_info ) 0); } - -WRITE16_HANDLER( pangpang_pf1_data_w ) +INLINE void pangpang_get_bg_tile_info( running_machine *machine, tile_data *tileinfo, int tile_index, int gfx_bank, UINT16 *gfx_base ) { - COMBINE_DATA(&tumblepb_pf1_data[offset]); - tilemap_mark_tile_dirty(pf1_tilemap,offset/2); - tilemap_mark_tile_dirty(pf1_alt_tilemap,offset/2); -} - -WRITE16_HANDLER( pangpang_pf2_data_w ) -{ - COMBINE_DATA(&tumblepb_pf2_data[offset]); - tilemap_mark_tile_dirty(pf2_tilemap,offset/2); - - if (pf2_alt_tilemap) - tilemap_mark_tile_dirty(pf2_alt_tilemap,offset/2); -} - - - -INLINE void pangpang_get_bg_tile_info(running_machine *machine, tile_data *tileinfo, int tile_index,int gfx_bank,UINT16 *gfx_base) -{ - int data = gfx_base[tile_index*2+1]; - int attr = gfx_base[tile_index*2]; + int data = gfx_base[tile_index * 2 + 1]; + int attr = gfx_base[tile_index * 2]; SET_TILE_INFO( gfx_bank, @@ -428,26 +452,27 @@ INLINE void pangpang_get_bg_tile_info(running_machine *machine, tile_data *tilei 0); } -INLINE void pangpang_get_bg2x_tile_info(running_machine *machine, tile_data *tileinfo, int tile_index,int gfx_bank,UINT16 *gfx_base) +INLINE void pangpang_get_bg2x_tile_info( running_machine *machine, tile_data *tileinfo, int tile_index, int gfx_bank, UINT16 *gfx_base ) { - int data = gfx_base[tile_index*2+1]; - int attr = gfx_base[tile_index*2]; + int data = gfx_base[tile_index * 2 + 1]; + int attr = gfx_base[tile_index * 2]; SET_TILE_INFO( gfx_bank, - (data & 0xfff)+0x1000, + (data & 0xfff) + 0x1000, (attr >>12) & 0xf, 0); } -static TILE_GET_INFO( pangpang_get_bg1_tile_info ) { pangpang_get_bg_tile_info(machine,tileinfo,tile_index,2,tumblepb_pf1_data); } -static TILE_GET_INFO( pangpang_get_bg2_tile_info ) { pangpang_get_bg2x_tile_info(machine,tileinfo,tile_index,1,tumblepb_pf2_data); } +static TILE_GET_INFO( pangpang_get_bg1_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; pangpang_get_bg_tile_info(machine, tileinfo, tile_index, 2, state->pf1_data); } +static TILE_GET_INFO( pangpang_get_bg2_tile_info ) { tumbleb_state *state = (tumbleb_state *)machine->driver_data; pangpang_get_bg2x_tile_info(machine, tileinfo, tile_index, 1, state->pf2_data); } static TILE_GET_INFO( pangpang_get_fg_tile_info ) { - int data = tumblepb_pf1_data[tile_index*2+1]; - int attr = tumblepb_pf1_data[tile_index*2]; + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + int data = state->pf1_data[tile_index * 2 + 1]; + int attr = state->pf1_data[tile_index * 2]; SET_TILE_INFO( 0, @@ -457,265 +482,356 @@ static TILE_GET_INFO( pangpang_get_fg_tile_info ) } +static STATE_POSTLOAD( tumbleb_tilemap_redraw ) +{ + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + + tilemap_mark_all_tiles_dirty(state->pf1_tilemap); + tilemap_mark_all_tiles_dirty(state->pf1_alt_tilemap); + tilemap_mark_all_tiles_dirty(state->pf2_tilemap); + if (state->pf2_alt_tilemap) + tilemap_mark_all_tiles_dirty(state->pf2_alt_tilemap); +} + VIDEO_START( pangpang ) { - pf1_tilemap = tilemap_create(machine, pangpang_get_fg_tile_info, tilemap_scan_rows, 8, 8,64,32); - pf1_alt_tilemap = tilemap_create(machine, pangpang_get_bg1_tile_info,tumblep_scan,16,16,64,32); - pf2_tilemap = tilemap_create(machine, pangpang_get_bg2_tile_info,tumblep_scan, 16,16,64,32); + tumbleb_state *state = (tumbleb_state *)machine->driver_data; - tilemap_set_transparent_pen(pf1_tilemap,0); - tilemap_set_transparent_pen(pf1_alt_tilemap,0); - bcstory_tilebank = 0; + state->pf1_tilemap = tilemap_create(machine, pangpang_get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32); + state->pf1_alt_tilemap = tilemap_create(machine, pangpang_get_bg1_tile_info, tumblep_scan, 16, 16, 64, 32); + state->pf2_tilemap = tilemap_create(machine, pangpang_get_bg2_tile_info, tumblep_scan, 16, 16, 64, 32); - sprite_xoffset = -1; - sprite_yoffset = 0; + tilemap_set_transparent_pen(state->pf1_tilemap, 0); + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 0); + + state->sprite_xoffset = -1; + state->sprite_yoffset = 0; + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); } VIDEO_START( tumblepb ) { - pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8,64,32); - pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info,tumblep_scan,16,16,64,32); - pf2_tilemap = tilemap_create(machine, get_bg2_tile_info,tumblep_scan, 16,16,64,32); + tumbleb_state *state = (tumbleb_state *)machine->driver_data; - tilemap_set_transparent_pen(pf1_tilemap,0); - tilemap_set_transparent_pen(pf1_alt_tilemap,0); - bcstory_tilebank = 0; + state->pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32); + state->pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info, tumblep_scan, 16, 16, 64, 32); + state->pf2_tilemap = tilemap_create(machine, get_bg2_tile_info, tumblep_scan, 16, 16, 64, 32); - sprite_xoffset = -1; - sprite_yoffset = 0; + tilemap_set_transparent_pen(state->pf1_tilemap, 0); + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 0); + + state->sprite_xoffset = -1; + state->sprite_yoffset = 0; + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); } VIDEO_START( sdfight ) { - pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8,64,64); // 64*64 to prevent bad tilemap wrapping? - check real behavior - pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info,tumblep_scan,16,16,64,32); - pf2_tilemap = tilemap_create(machine, get_bg2_tile_info,tumblep_scan, 16,16,64,32); + tumbleb_state *state = (tumbleb_state *)machine->driver_data; - tilemap_set_transparent_pen(pf1_tilemap,0); - tilemap_set_transparent_pen(pf1_alt_tilemap,0); - bcstory_tilebank = 0; + state->pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 64); // 64*64 to prevent bad tilemap wrapping? - check real behavior + state->pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info, tumblep_scan, 16, 16, 64, 32); + state->pf2_tilemap = tilemap_create(machine, get_bg2_tile_info, tumblep_scan, 16, 16, 64, 32); + + tilemap_set_transparent_pen(state->pf1_tilemap, 0); + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 0); /* aligned to monitor test */ - sprite_xoffset = 0; - sprite_yoffset = 1; + state->sprite_xoffset = 0; + state->sprite_yoffset = 1; + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); } VIDEO_START( fncywld ) { - pf1_tilemap = tilemap_create(machine, get_fncywld_fg_tile_info, tilemap_scan_rows, 8, 8,64,32); - pf1_alt_tilemap = tilemap_create(machine, get_fncywld_bg1_tile_info,tumblep_scan,16,16,64,32); - pf2_tilemap = tilemap_create(machine, get_fncywld_bg2_tile_info,tumblep_scan, 16,16,64,32); + tumbleb_state *state = (tumbleb_state *)machine->driver_data; - tilemap_set_transparent_pen(pf1_tilemap,15); - tilemap_set_transparent_pen(pf1_alt_tilemap,15); - bcstory_tilebank = 0; + state->pf1_tilemap = tilemap_create(machine, get_fncywld_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32); + state->pf1_alt_tilemap = tilemap_create(machine, get_fncywld_bg1_tile_info, tumblep_scan, 16, 16, 64, 32); + state->pf2_tilemap = tilemap_create(machine, get_fncywld_bg2_tile_info, tumblep_scan, 16, 16, 64, 32); - sprite_xoffset = -1; - sprite_yoffset = 0; + tilemap_set_transparent_pen(state->pf1_tilemap, 15); + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 15); + + state->sprite_xoffset = -1; + state->sprite_yoffset = 0; + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); } VIDEO_START( jumppop ) { - pf1_tilemap = tilemap_create(machine, get_jumppop_fg_tile_info, tilemap_scan_rows, 8, 8,128,64); - pf1_alt_tilemap = tilemap_create(machine, get_jumppop_bg1_tile_info,tilemap_scan_rows,16,16,64,64); - pf2_tilemap = tilemap_create(machine, get_jumppop_bg2_tile_info,tilemap_scan_rows, 16,16,64,64); - pf2_alt_tilemap = tilemap_create(machine, get_jumppop_bg2_alt_tile_info,tilemap_scan_rows, 8,8,128,64); + tumbleb_state *state = (tumbleb_state *)machine->driver_data; - tilemap_set_transparent_pen(pf1_tilemap,0); - tilemap_set_transparent_pen(pf1_alt_tilemap,0); + state->pf1_tilemap = tilemap_create(machine, get_jumppop_fg_tile_info, tilemap_scan_rows, 8, 8, 128, 64); + state->pf1_alt_tilemap = tilemap_create(machine, get_jumppop_bg1_tile_info, tilemap_scan_rows, 16, 16, 64, 64); + state->pf2_tilemap = tilemap_create(machine, get_jumppop_bg2_tile_info, tilemap_scan_rows, 16, 16, 64, 64); + state->pf2_alt_tilemap = tilemap_create(machine, get_jumppop_bg2_alt_tile_info, tilemap_scan_rows, 8, 8, 128, 64); - tilemap_set_flip(pf1_tilemap, TILEMAP_FLIPX); - tilemap_set_flip(pf1_alt_tilemap, TILEMAP_FLIPX); - tilemap_set_flip(pf2_tilemap, TILEMAP_FLIPX); - tilemap_set_flip(pf2_alt_tilemap, TILEMAP_FLIPX); - bcstory_tilebank = 0; + tilemap_set_transparent_pen(state->pf1_tilemap, 0); + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 0); - sprite_xoffset = -1; - sprite_yoffset = 0; + tilemap_set_flip(state->pf1_tilemap, TILEMAP_FLIPX); + tilemap_set_flip(state->pf1_alt_tilemap, TILEMAP_FLIPX); + tilemap_set_flip(state->pf2_tilemap, TILEMAP_FLIPX); + tilemap_set_flip(state->pf2_alt_tilemap, TILEMAP_FLIPX); + + state->sprite_xoffset = -1; + state->sprite_yoffset = 0; + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); } +VIDEO_START( suprtrio ) +{ + tumbleb_state *state = (tumbleb_state *)machine->driver_data; + + state->pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32); + state->pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info, tumblep_scan, 16, 16, 64, 32); + state->pf2_tilemap = tilemap_create(machine, get_bg2_tile_info, tumblep_scan, 16, 16, 64, 32); + + tilemap_set_transparent_pen(state->pf1_alt_tilemap, 0); + + state_save_register_postload(machine, tumbleb_tilemap_redraw, NULL); +} + /******************************************************************************/ VIDEO_UPDATE( tumblepb ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=-1; - if (flipscreen) offs2=-3; else offs2=-5; + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + if (state->flipscreen) + offs = 1; + else + offs = -1; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->flipscreen) + offs2 = -3; + else + offs2 = -5; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - tumblepb_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + tumblepb_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( jumpkids ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=-1; - if (flipscreen) offs2=-3; else offs2=-5; + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + if (state->flipscreen) + offs = 1; + else + offs = -1; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->flipscreen) + offs2 = -3; + else + offs2 = -5; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( semicom ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=-1; /* fixed */ - if (flipscreen) offs2=-3; else offs2=-5; /* fixed */ + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + if (state->flipscreen) + offs = 1; + else + offs = -1; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->flipscreen) + offs2 = -3; + else + offs2 = -5; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( semicom_altoffsets ) { - int offsx,offsy,offsx2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offsx, offsy, offsx2; - flipscreen=tumblepb_control_0[0]&0x80; + state->flipscreen = state->control_0[0] & 0x80; offsx = -1; offsy = 2; offsx2 = -5; - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offsx2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offsx2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offsx ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4]+offsy ); + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offsx2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offsx2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offsx); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4] + offsy); - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( bcstory ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=8; /* not sure of this */ - if (flipscreen) offs2=-3; else offs2=8; /* not sure of this */ + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + /* not sure of this */ + if (state->flipscreen) + offs = 1; + else + offs = 8; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + /* not sure of this */ + if (state->flipscreen) + offs2 = -3; + else + offs2 = 8; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( semibase ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - offs=-1; - offs2=-2; + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + offs = -1; + offs2 = -2; /* sprites need an offset too */ + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( sdfight ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - offs=-1; - offs2=-5; // foreground scroll.. + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + offs = -1; + offs2 = -5; // foreground scroll.. /* sprites need an offset too */ + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2] - 16); // needed for the ground ... + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2] - 16); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2]-16 ); // needed for the ground ... - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2]-16 ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); - - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } @@ -723,81 +839,96 @@ VIDEO_UPDATE( sdfight ) VIDEO_UPDATE( fncywld ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=-1; - if (flipscreen) offs2=-3; else offs2=-5; + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + if (state->flipscreen) + offs = 1; + else + offs = -1; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->flipscreen) + offs2 = -3; + else + offs2 = -5; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - fncywld_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + fncywld_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( jumppop ) { -// bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine)); + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; - tilemap_set_scrollx( pf1_tilemap,0, jumppop_control[2]-0x3a0 ); - tilemap_set_scrolly( pf1_tilemap,0, jumppop_control[3] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, jumppop_control[2]-0x3a0 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, jumppop_control[3] ); - tilemap_set_scrollx( pf2_tilemap,0, jumppop_control[0]-0x3a2 ); - tilemap_set_scrolly( pf2_tilemap,0, jumppop_control[1] ); - tilemap_set_scrollx( pf2_alt_tilemap,0, jumppop_control[0]-0x3a2 ); - tilemap_set_scrolly( pf2_alt_tilemap,0, jumppop_control[1] ); + // bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine)); - if (jumppop_control[7]&1) - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control[2] - 0x3a0); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control[3]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control[2] - 0x3a0); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control[3]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control[0] - 0x3a2); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control[1]); + tilemap_set_scrollx(state->pf2_alt_tilemap, 0, state->control[0] - 0x3a2); + tilemap_set_scrolly(state->pf2_alt_tilemap, 0, state->control[1]); + + if (state->control[7] & 1) + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf2_alt_tilemap,0,0); + tilemap_draw(bitmap, cliprect, state->pf2_alt_tilemap, 0, 0); - if (jumppop_control[7]&2) - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); + if (state->control[7] & 2) + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); -//popmessage("%04x %04x %04x %04x %04x %04x %04x %04x", jumppop_control[0],jumppop_control[1],jumppop_control[2],jumppop_control[3],jumppop_control[4],jumppop_control[5],jumppop_control[6],jumppop_control[7]); +//popmessage("%04x %04x %04x %04x %04x %04x %04x %04x", state->control[0],state->control[1],state->control[2],state->control[3],state->control[4],state->control[5],state->control[6],state->control[7]); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } VIDEO_UPDATE( suprtrio ) { - tilemap_set_scrollx( pf1_alt_tilemap,0, -suprtrio_control[1]-6 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, -suprtrio_control[2] ); - tilemap_set_scrollx( pf2_tilemap,0, -suprtrio_control[3]-2 ); - tilemap_set_scrolly( pf2_tilemap,0, -suprtrio_control[4] ); + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, -state->control[1] - 6); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, -state->control[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, -state->control[3] - 2); + tilemap_set_scrolly(state->pf2_tilemap, 0, -state->control[4]); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); #if 0 popmessage("%04x %04x %04x %04x %04x %04x %04x %04x", - suprtrio_control[0], - suprtrio_control[1], - suprtrio_control[2], - suprtrio_control[3], - suprtrio_control[4], - suprtrio_control[5], - suprtrio_control[6], - suprtrio_control[7]); + state->control[0], + state->control[1], + state->control[2], + state->control[3], + state->control[4], + state->control[5], + state->control[6], + state->control[7]); #endif return 0; @@ -805,37 +936,36 @@ popmessage("%04x %04x %04x %04x %04x %04x %04x %04x", VIDEO_UPDATE( pangpang ) { - int offs,offs2; + tumbleb_state *state = (tumbleb_state *)screen->machine->driver_data; + int offs, offs2; - flipscreen=tumblepb_control_0[0]&0x80; - tilemap_set_flip_all(screen->machine,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - if (flipscreen) offs=1; else offs=-1; - if (flipscreen) offs2=-3; else offs2=-5; + state->flipscreen = state->control_0[0] & 0x80; + tilemap_set_flip_all(screen->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - tilemap_set_scrollx( pf1_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf1_alt_tilemap,0, tumblepb_control_0[1]+offs2 ); - tilemap_set_scrolly( pf1_alt_tilemap,0, tumblepb_control_0[2] ); - tilemap_set_scrollx( pf2_tilemap,0, tumblepb_control_0[3]+offs ); - tilemap_set_scrolly( pf2_tilemap,0, tumblepb_control_0[4] ); + if (state->flipscreen) + offs = 1; + else + offs = -1; - tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0); - if (tumblepb_control_0[6]&0x80) - tilemap_draw(bitmap,cliprect,pf1_tilemap,0,0); + if (state->flipscreen) + offs2 = -3; + else + offs2 = -5; + + tilemap_set_scrollx(state->pf1_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf1_alt_tilemap, 0, state->control_0[1] + offs2); + tilemap_set_scrolly(state->pf1_alt_tilemap, 0, state->control_0[2]); + tilemap_set_scrollx(state->pf2_tilemap, 0, state->control_0[3] + offs); + tilemap_set_scrolly(state->pf2_tilemap, 0, state->control_0[4]); + + tilemap_draw(bitmap, cliprect, state->pf2_tilemap, 0, 0); + + if (state->control_0[6] & 0x80) + tilemap_draw(bitmap, cliprect, state->pf1_tilemap, 0, 0); else - tilemap_draw(bitmap,cliprect,pf1_alt_tilemap,0,0); - jumpkids_draw_sprites(screen->machine,bitmap,cliprect); + tilemap_draw(bitmap, cliprect, state->pf1_alt_tilemap, 0, 0); + + jumpkids_draw_sprites(screen->machine, bitmap, cliprect); return 0; } - -VIDEO_START( suprtrio ) -{ - pf1_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8,64,32); - pf1_alt_tilemap = tilemap_create(machine, get_bg1_tile_info,tumblep_scan,16,16,64,32); - pf2_tilemap = tilemap_create(machine, get_bg2_tile_info,tumblep_scan, 16,16,64,32); - - tilemap_set_transparent_pen(pf1_alt_tilemap,0); - bcstory_tilebank = 0; -} - - diff --git a/src/mame/video/tumblep.c b/src/mame/video/tumblep.c index 9f41e88044c..bd7b6c17402 100644 --- a/src/mame/video/tumblep.c +++ b/src/mame/video/tumblep.c @@ -14,7 +14,7 @@ to switch between 8*8 tiles and 16*16 tiles. ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" +#include "video/deco16ic.h" #include "includes/tumblep.h" static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) @@ -87,15 +87,15 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect VIDEO_UPDATE( tumblep ) { tumblep_state *state = (tumblep_state *)screen->machine->driver_data; - UINT16 flip = decodev_pf12_control_r(state->deco16ic, 0, 0xffff); + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); flip_screen_set(screen->machine, BIT(flip, 7)); - decodev_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); + deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll); bitmap_fill(bitmap, cliprect, 256); /* not verified */ - decodev_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect); return 0; diff --git a/src/mame/video/vaportra.c b/src/mame/video/vaportra.c index 2b5f31cd449..e79f481673a 100644 --- a/src/mame/video/vaportra.c +++ b/src/mame/video/vaportra.c @@ -10,29 +10,28 @@ ***************************************************************************/ #include "emu.h" -#include "video/decodev.h" - -static UINT16 vaportra_priority[2]; +#include "video/deco16ic.h" +#include "includes/vaportra.h" /******************************************************************************/ - WRITE16_HANDLER( vaportra_priority_w ) { - COMBINE_DATA(&vaportra_priority[offset]); + vaportra_state *state = (vaportra_state *)space->machine->driver_data; + COMBINE_DATA(&state->priority[offset]); } /******************************************************************************/ -static void update_24bitcol(running_machine *machine, int offset) +static void update_24bitcol( running_machine *machine, int offset ) { - UINT8 r,g,b; + UINT8 r, g, b; r = (machine->generic.paletteram.u16[offset] >> 0) & 0xff; g = (machine->generic.paletteram.u16[offset] >> 8) & 0xff; b = (machine->generic.paletteram2.u16[offset] >> 0) & 0xff; - palette_set_color(machine,offset,MAKE_RGB(r,g,b)); + palette_set_color(machine, offset, MAKE_RGB(r,g,b)); } WRITE16_HANDLER( vaportra_palette_24bit_rg_w ) @@ -49,28 +48,32 @@ WRITE16_HANDLER( vaportra_palette_24bit_b_w ) /******************************************************************************/ -static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri) +static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri ) { - UINT16 *buffered_spriteram16 = machine->generic.buffered_spriteram.u16; - int offs,priority_value; + vaportra_state *state = (vaportra_state *)machine->driver_data; + UINT16 *buffered_spriteram = machine->generic.buffered_spriteram.u16; + int offs; + int priority_value = state->priority[1]; - priority_value=vaportra_priority[1]; - - for (offs = 0;offs < 0x400;offs += 4) + for (offs = 0; offs < 0x400; offs += 4) { - int x,y,sprite,colour,multi,fx,fy,inc,flash,mult; + int x, y, sprite, colour, multi, fx, fy, inc, flash, mult; - y = buffered_spriteram16[offs]; - if ((y&0x8000) == 0) continue; + y = buffered_spriteram[offs]; + if ((y & 0x8000) == 0) + continue; - sprite = buffered_spriteram16[offs+1] & 0x1fff; - x = buffered_spriteram16[offs+2]; - colour = (x >> 12) &0xf; - if (pri && (colour>=priority_value)) continue; - if (!pri && !(colour>=priority_value)) continue; + sprite = buffered_spriteram[offs + 1] & 0x1fff; + x = buffered_spriteram[offs + 2]; + colour = (x >> 12) & 0xf; + if (pri && (colour >= priority_value)) + continue; + if (!pri && !(colour >= priority_value)) + continue; - flash=x&0x800; - if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) continue; + flash = x & 0x800; + if (flash && (video_screen_get_frame_number(machine->primary_screen) & 1)) + continue; fx = y & 0x2000; fy = y & 0x4000; @@ -83,7 +86,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta x = 240 - x; y = 240 - y; - if (x>256) continue; /* Speedup */ + if (x > 256) + continue; /* Speedup */ sprite &= ~multi; if (fy) @@ -96,13 +100,13 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta if (flip_screen_get(machine)) { - y=240-y; - x=240-x; - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - mult=16; + y = 240 - y; + x = 240 - x; + if (fx) fx = 0; else fx = 1; + if (fy) fy = 0; else fy = 1; + mult = 16; } - else mult=-16; + else mult = -16; while (multi >= 0) { @@ -120,45 +124,45 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta VIDEO_UPDATE( vaportra ) { - running_device *deco16ic = devtag_get_device(screen->machine, "deco_custom"); - UINT16 flip = decodev_pf12_control_r(deco16ic, 0, 0xffff); - int pri = vaportra_priority[0] & 0x03; + vaportra_state *state = (vaportra_state *)screen->machine->driver_data; + UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff); + int pri = state->priority[0] & 0x03; flip_screen_set(screen->machine, !BIT(flip, 7)); - decodev_pf12_update(deco16ic, 0, 0); - decodev_pf34_update(deco16ic, 0, 0); + deco16ic_pf12_update(state->deco16ic, 0, 0); + deco16ic_pf34_update(state->deco16ic, 0, 0); /* Draw playfields */ if (pri == 0) { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); } else if (pri == 1) { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); } else if (pri == 2) { - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0); } else { - decodev_tilemap_3_draw(deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); - decodev_tilemap_2_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0); draw_sprites(screen->machine, bitmap, cliprect, 0); - decodev_tilemap_4_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 0); } draw_sprites(screen->machine, bitmap, cliprect, 1); - decodev_tilemap_1_draw(deco16ic, bitmap, cliprect, 0, 0); + deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0); return 0; }