diff options
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 |
commit | c5e98b94594ba6e87d3cfa6dea448d3ab7fa1cc9 (patch) | |
tree | 8d6d28fd14ca5a013c8736141a3411717c11cc53 /src/mame/drivers/backfire.c | |
parent | fb5091182ec04236744f282bdf37c3ccdda8c04d (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.c | 53 |
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); |