summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/backfire.c
diff options
context:
space:
mode:
author Scott Stone <tafoid@users.noreply.github.com>2011-03-25 16:29:24 +0000
committer Scott Stone <tafoid@users.noreply.github.com>2011-03-25 16:29:24 +0000
commitc5e98b94594ba6e87d3cfa6dea448d3ab7fa1cc9 (patch)
tree8d6d28fd14ca5a013c8736141a3411717c11cc53 /src/mame/drivers/backfire.c
parentfb5091182ec04236744f282bdf37c3ccdda8c04d (diff)
Haze: Each deco16ic device now handles 2 tilemaps, not 4.. (base of converting it to be a device for the tilemap chip). (no whatsnew)
Diffstat (limited to 'src/mame/drivers/backfire.c')
-rw-r--r--src/mame/drivers/backfire.c53
1 files changed, 35 insertions, 18 deletions
diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c
index 020bf7ad167..686d3da683d 100644
--- a/src/mame/drivers/backfire.c
+++ b/src/mame/drivers/backfire.c
@@ -41,6 +41,8 @@ public:
/* devices */
device_t *maincpu;
device_t *deco16ic;
+ device_t *deco16ic34;
+
device_t *lscreen;
device_t *rscreen;
device_t *eeprom;
@@ -70,7 +72,7 @@ static VIDEO_START( backfire )
state->left = auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
state->right = auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
-
+
state->save_pointer(NAME(state->spriteram_1), 0x2000/2);
state->save_pointer(NAME(state->spriteram_2), 0x2000/2);
@@ -89,8 +91,8 @@ static SCREEN_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 */
- deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
- deco16ic_pf34_update(state->deco16ic, state->pf3_rowscroll, state->pf4_rowscroll);
+ deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
+ deco16ic_pf_update(state->deco16ic34, state->pf3_rowscroll, state->pf4_rowscroll);
if (screen == state->lscreen)
{
@@ -100,14 +102,14 @@ static SCREEN_UPDATE( backfire )
if (state->left_priority[0] == 0)
{
- deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 1);
+ deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 1);
deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 2);
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram_1, 0x800);
}
else if (state->left_priority[0] == 2)
{
deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 2);
- deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 4);
+ deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 4);
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram_1, 0x800);
}
else
@@ -120,14 +122,14 @@ static SCREEN_UPDATE( backfire )
if (state->right_priority[0] == 0)
{
- deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 1);
+ deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 1);
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
screen->machine->device<decospr_device>("spritegen2")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram_2, 0x800);
}
else if (state->right_priority[0] == 2)
{
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
- deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 4);
+ deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 4);
screen->machine->device<decospr_device>("spritegen2")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram_2, 0x800);
}
else
@@ -248,14 +250,14 @@ static WRITE32_HANDLER( backfire_spriteram2_w )
static ADDRESS_MAP_START( backfire_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
+ AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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", 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(0x130000, 0x13001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
+ AM_RANGE(0x140000, 0x141fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
+ AM_RANGE(0x144000, 0x145fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_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)
@@ -379,6 +381,7 @@ static const gfx_layout tilelayout =
static GFXDECODE_START( backfire )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */
GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
+ GFXDECODE_ENTRY( "gfx2", 0, charlayout, 0, 128 ) /* Characters 8x8 */
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x200, 32 ) /* Sprites 16x16 (screen 1) */
GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 0x600, 32 ) /* Sprites 16x16 (screen 2) */
@@ -414,14 +417,25 @@ static int backfire_bank_callback( int bank )
static const deco16ic_interface backfire_deco16ic_intf =
{
"lscreen",
- 0, 0, 1, 1,
- 0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
- 0x00, 0x40, 0x10, 0x50, /* color base */
- 0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
+ 0, 1,
+ 0x0f, 0x0f, /* trans masks (default values) */
+ 0x00, 0x40, /* color base */
+ 0x0f, 0x0f, /* color masks (default values) */
+ backfire_bank_callback,
backfire_bank_callback,
+ 0,1
+};
+
+static const deco16ic_interface backfire_deco16ic34_intf =
+{
+ "lscreen",
+ 0, 1,
+ 0x0f, 0x0f, /* trans masks (default values) */
+ 0x10, 0x50, /* color base */
+ 0x0f, 0x0f, /* color masks (default values) */
backfire_bank_callback,
backfire_bank_callback,
- backfire_bank_callback
+ 2,3
};
static MACHINE_START( backfire )
@@ -430,6 +444,7 @@ static MACHINE_START( backfire )
state->maincpu = machine->device("maincpu");
state->deco16ic = machine->device("deco_custom");
+ state->deco16ic34 = machine->device("deco_custom34");
state->lscreen = machine->device("lscreen");
state->rscreen = machine->device("rscreen");
state->eeprom = machine->device("eeprom");
@@ -482,12 +497,14 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
MCFG_VIDEO_START(backfire)
MCFG_DECO16IC_ADD("deco_custom", backfire_deco16ic_intf)
+ MCFG_DECO16IC_ADD("deco_custom34", backfire_deco16ic34_intf)
+
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
- decospr_device_config::set_gfx_region(device, 3);
+ decospr_device_config::set_gfx_region(device, 4);
decospr_device_config::set_pri_callback(device, backfire_pri_callback);
MCFG_DEVICE_ADD("spritegen2", decospr_, 0)
- decospr_device_config::set_gfx_region(device, 4);
+ decospr_device_config::set_gfx_region(device, 5);
decospr_device_config::set_pri_callback(device, backfire_pri_callback);