mirror of
https://github.com/holub/mame
synced 2025-05-16 19:00:43 +03:00
Haze: Each deco16ic device now handles 2 tilemaps, not 4.. (base of converting it to be a device for the tilemap chip). (no whatsnew)
This commit is contained in:
parent
fb5091182e
commit
c5e98b9459
@ -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);
|
||||
|
||||
|
||||
|
@ -106,15 +106,15 @@ 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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", deco16ic_pf_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_MEMBER(boogwing_state, pf1_rowscroll)
|
||||
AM_RANGE(0x26a000, 0x26afff) AM_RAM AM_BASE_MEMBER(boogwing_state, pf2_rowscroll)
|
||||
|
||||
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(0x270000, 0x27000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x274000, 0x275fff) AM_RAM_DEVWRITE("deco_custom34", deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x276000, 0x277fff) AM_RAM_DEVWRITE("deco_custom34", deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x278000, 0x278fff) AM_RAM AM_BASE_MEMBER(boogwing_state, pf3_rowscroll)
|
||||
AM_RANGE(0x27a000, 0x27afff) AM_RAM AM_BASE_MEMBER(boogwing_state, pf4_rowscroll)
|
||||
|
||||
@ -311,14 +311,25 @@ static int boogwing_bank_callback2( const int bank )
|
||||
static const deco16ic_interface boogwing_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x1f, 0x0f, 0x0f, /* trans masks (pf2 has 5bpp graphics) */
|
||||
0, 0, 0, 16, /* color base (pf2 is non default) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x1f, /* trans masks (pf2 has 5bpp graphics) */
|
||||
0, 0, /* color base (pf2 is non default) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
boogwing_bank_callback,
|
||||
0, 1
|
||||
};
|
||||
|
||||
static const deco16ic_interface boogwing_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f,
|
||||
0, 16,
|
||||
0x0f, 0x0f,
|
||||
boogwing_bank_callback2,
|
||||
boogwing_bank_callback2
|
||||
boogwing_bank_callback2,
|
||||
0, 2
|
||||
};
|
||||
|
||||
|
||||
@ -347,6 +358,7 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state )
|
||||
MCFG_GFXDECODE(boogwing)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", boogwing_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", boogwing_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
@ -113,15 +113,15 @@ static ADDRESS_MAP_START( twocrude_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0a4000, 0x0a47ff) AM_RAM AM_BASE_MEMBER(cbuster_state, pf1_rowscroll)
|
||||
AM_RANGE(0x0a6000, 0x0a67ff) AM_RAM AM_BASE_MEMBER(cbuster_state, pf2_rowscroll)
|
||||
|
||||
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(0x0a8000, 0x0a8fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x0aa000, 0x0aafff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_BASE_MEMBER(cbuster_state, pf3_rowscroll)
|
||||
AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_BASE_MEMBER(cbuster_state, pf4_rowscroll)
|
||||
|
||||
AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_BASE_MEMBER(cbuster_state, spriteram16)
|
||||
AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP
|
||||
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(0x0b5000, 0x0b500f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("deco_custom34", deco16ic_pf_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)
|
||||
@ -283,14 +283,25 @@ static int twocrude_bank_callback( const int bank )
|
||||
static const deco16ic_interface twocrude_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x20, 0x30, 0x40, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x20, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
twocrude_bank_callback,
|
||||
twocrude_bank_callback,
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface twocrude_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x30, 0x40, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
twocrude_bank_callback,
|
||||
twocrude_bank_callback
|
||||
twocrude_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
static MACHINE_START( cbuster )
|
||||
@ -300,6 +311,7 @@ static MACHINE_START( cbuster )
|
||||
state->maincpu = machine->device("maincpu");
|
||||
state->audiocpu = machine->device("audiocpu");
|
||||
state->deco16ic = machine->device("deco_custom");
|
||||
state->deco16ic34 = machine->device("deco_custom34");
|
||||
|
||||
state->save_item(NAME(state->prot));
|
||||
state->save_item(NAME(state->pri));
|
||||
@ -340,6 +352,8 @@ static MACHINE_CONFIG_START( twocrude, cbuster_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", twocrude_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", twocrude_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
||||
|
@ -152,7 +152,7 @@ static READ16_HANDLER( robocop2_prot_r )
|
||||
static WRITE16_HANDLER( cninja_pf12_control_w )
|
||||
{
|
||||
cninja_state *state = space->machine->driver_data<cninja_state>();
|
||||
deco16ic_pf12_control_w(state->deco16ic, offset, data, mem_mask);
|
||||
deco16ic_pf_control_w(state->deco16ic, offset, data, mem_mask);
|
||||
space->machine->primary_screen->update_partial(space->machine->primary_screen->vpos());
|
||||
}
|
||||
|
||||
@ -160,7 +160,7 @@ static WRITE16_HANDLER( cninja_pf12_control_w )
|
||||
static WRITE16_HANDLER( cninja_pf34_control_w )
|
||||
{
|
||||
cninja_state *state = space->machine->driver_data<cninja_state>();
|
||||
deco16ic_pf34_control_w(state->deco16ic, offset, data, mem_mask);
|
||||
deco16ic_pf_control_w(state->deco16ic34, offset, data, mem_mask);
|
||||
space->machine->primary_screen->update_partial(space->machine->primary_screen->vpos());
|
||||
}
|
||||
|
||||
@ -175,8 +175,8 @@ static ADDRESS_MAP_START( cninja_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf2_rowscroll)
|
||||
|
||||
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_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(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf3_rowscroll)
|
||||
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf4_rowscroll)
|
||||
|
||||
@ -209,8 +209,8 @@ static ADDRESS_MAP_START( cninjabl_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf2_rowscroll)
|
||||
|
||||
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) // not used / incorrect on this
|
||||
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(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf3_rowscroll)
|
||||
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf4_rowscroll)
|
||||
|
||||
@ -237,8 +237,8 @@ static ADDRESS_MAP_START( edrandy_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf2_rowscroll)
|
||||
|
||||
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_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(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf3_rowscroll)
|
||||
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf4_rowscroll)
|
||||
|
||||
@ -265,8 +265,8 @@ static ADDRESS_MAP_START( robocop2_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf2_rowscroll)
|
||||
|
||||
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_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(0x154000, 0x154fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf3_rowscroll)
|
||||
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf4_rowscroll)
|
||||
|
||||
@ -301,8 +301,8 @@ static ADDRESS_MAP_START( mutantf_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf2_rowscroll)
|
||||
|
||||
AM_RANGE(0x310000, 0x31000f) AM_WRITE(cninja_pf34_control_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(0x314000, 0x315fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf3_rowscroll)
|
||||
AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_BASE_MEMBER(cninja_state, pf4_rowscroll)
|
||||
|
||||
@ -777,55 +777,104 @@ static int mutantf_2_bank_callback( const int bank )
|
||||
static const deco16ic_interface cninja_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 48, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
1, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
NULL,
|
||||
cninja_bank_callback,
|
||||
cninja_bank_callback
|
||||
0, 1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface cninja_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 48, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
cninja_bank_callback,
|
||||
cninja_bank_callback,
|
||||
0, 2,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static const deco16ic_interface edrandy_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 48, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
NULL,
|
||||
cninja_bank_callback,
|
||||
cninja_bank_callback
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface edrandy_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 48, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
cninja_bank_callback,
|
||||
cninja_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
static const deco16ic_interface robocop2_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 48, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
robocop2_bank_callback,
|
||||
robocop2_bank_callback,
|
||||
robocop2_bank_callback
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface robocop2_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 48, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
robocop2_bank_callback,
|
||||
robocop2_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
static const deco16ic_interface mutantf_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 0x30, 0x20, 0x40, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 0x30, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
mutantf_1_bank_callback,
|
||||
mutantf_2_bank_callback,
|
||||
mutantf_1_bank_callback,
|
||||
mutantf_1_bank_callback
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface mutantf_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x40, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
mutantf_1_bank_callback,
|
||||
mutantf_1_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_START( cninja )
|
||||
{
|
||||
cninja_state *state = machine->driver_data<cninja_state>();
|
||||
@ -887,6 +936,8 @@ static MACHINE_CONFIG_START( cninja, cninja_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", cninja_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", cninja_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
decospr_device_config::set_pri_callback(device, cninja_pri_callback);
|
||||
@ -940,6 +991,8 @@ static MACHINE_CONFIG_START( stoneage, cninja_state )
|
||||
MCFG_VIDEO_START(stoneage)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", cninja_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", cninja_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
decospr_device_config::set_pri_callback(device, cninja_pri_callback);
|
||||
@ -989,6 +1042,7 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", cninja_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom32", cninja_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
@ -1032,6 +1086,8 @@ static MACHINE_CONFIG_START( edrandy, cninja_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", edrandy_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", edrandy_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
decospr_device_config::set_pri_callback(device, cninja_pri_callback);
|
||||
@ -1083,6 +1139,8 @@ static MACHINE_CONFIG_START( robocop2, cninja_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", robocop2_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", robocop2_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
decospr_device_config::set_pri_callback(device, cninja_pri_callback);
|
||||
@ -1137,6 +1195,8 @@ static MACHINE_CONFIG_START( mutantf, cninja_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", mutantf_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", mutantf_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen1", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
||||
|
@ -229,12 +229,12 @@ static ADDRESS_MAP_START( dassault_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
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_MEMBER(dassault_state, pf2_rowscroll)
|
||||
AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_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(0x240000, 0x240fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_BASE_MEMBER(dassault_state, pf4_rowscroll)
|
||||
AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w)
|
||||
AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_control_w)
|
||||
|
||||
AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE_MEMBER(dassault_state, ram) /* Main ram */
|
||||
AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) /* Spriteram (2nd) */
|
||||
@ -541,16 +541,28 @@ static int dassault_bank_callback( const int bank )
|
||||
static const deco16ic_interface dassault_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dassault_bank_callback,
|
||||
dassault_bank_callback,
|
||||
dassault_bank_callback,
|
||||
dassault_bank_callback
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface dassault_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dassault_bank_callback,
|
||||
dassault_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( dassault, dassault_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -582,6 +594,7 @@ static MACHINE_CONFIG_START( dassault, dassault_state )
|
||||
MCFG_PALETTE_LENGTH(4096)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", dassault_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", dassault_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
@ -90,10 +90,10 @@ UINT16 dblwings_pri_callback(UINT16 x)
|
||||
static SCREEN_UPDATE(dblewing)
|
||||
{
|
||||
dblewing_state *state = screen->machine->driver_data<dblewing_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 0); /* not Confirmed */
|
||||
bitmap_fill(screen->machine->priority_bitmap, NULL, 0);
|
||||
@ -320,7 +320,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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE_SIZE_MEMBER(dblewing_state, spriteram, spriteram_size)
|
||||
AM_RANGE(0x320000, 0x3207ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM
|
||||
@ -543,14 +543,13 @@ static int dblewing_bank_callback( const int bank )
|
||||
static const deco16ic_interface dblewing_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dblewing_bank_callback,
|
||||
dblewing_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
static MACHINE_START( dblewing )
|
||||
|
@ -66,7 +66,7 @@ static SCREEN_UPDATE( wcvol95 )
|
||||
bitmap_fill(screen->machine->priority_bitmap, NULL, 0);
|
||||
bitmap_fill(bitmap, NULL, 0);
|
||||
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram, 0x800);
|
||||
@ -130,7 +130,7 @@ 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_MODERN("oki1", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8_MODERN("oki2", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -142,7 +142,7 @@ 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", 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(wcvol95_pf1_rowscroll_r, wcvol95_pf1_rowscroll_w)
|
||||
@ -315,14 +315,13 @@ static int deco156_bank_callback(const int bank)
|
||||
static const deco16ic_interface deco156_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
deco156_bank_callback,
|
||||
deco156_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
UINT16 deco156_pri_callback(UINT16 x)
|
||||
|
@ -253,16 +253,28 @@ static int fghthist_bank_callback( int bank )
|
||||
static const deco16ic_interface fghthist_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x10, 0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x10, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
fghthist_bank_callback,
|
||||
fghthist_bank_callback,
|
||||
fghthist_bank_callback,
|
||||
fghthist_bank_callback
|
||||
0,1
|
||||
};
|
||||
|
||||
static const deco16ic_interface fghthist_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
fghthist_bank_callback,
|
||||
fghthist_bank_callback,
|
||||
0,2
|
||||
};
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
static WRITE32_HANDLER( deco32_pf12_control_w )
|
||||
@ -707,7 +719,7 @@ static WRITE32_HANDLER( deco32_buffer_spriteram_w )
|
||||
{
|
||||
deco32_state *state = space->machine->driver_data<deco32_state>();
|
||||
memcpy(state->spriteram16_buffered, state->spriteram16, 0x1000);
|
||||
}
|
||||
}
|
||||
|
||||
static READ32_HANDLER( deco32_spriteram2_r )
|
||||
{
|
||||
@ -727,7 +739,7 @@ static WRITE32_HANDLER( deco32_buffer_spriteram2_w )
|
||||
{
|
||||
deco32_state *state = space->machine->driver_data<deco32_state>();
|
||||
memcpy(state->spriteram16_2_buffered, state->spriteram16_2, 0x1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// tattass tests these as 32-bit ram, even if only 16-bits are hooked up to the tilemap chip - does it mirror parts of the dword?
|
||||
@ -745,7 +757,7 @@ static ADDRESS_MAP_START( captaven_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x108000, 0x108003) AM_WRITENOP /* ? */
|
||||
AM_RANGE(0x110000, 0x111fff) AM_READWRITE(deco32_spriteram_r, deco32_spriteram_w)
|
||||
AM_RANGE(0x120000, 0x127fff) AM_RAM AM_BASE_MEMBER(deco32_state, ram) /* Main RAM */
|
||||
|
||||
|
||||
AM_RANGE(0x128000, 0x128fff) AM_READ(captaven_prot_r)
|
||||
AM_RANGE(0x1280c8, 0x1280cb) AM_WRITE(deco32_sound_w)
|
||||
AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(deco32_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) /* Palette RAM */
|
||||
@ -755,23 +767,23 @@ static ADDRESS_MAP_START( captaven_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
|
||||
AM_RANGE(0x178000, 0x178003) AM_WRITE(deco32_pri_w)
|
||||
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w) /* Mirror address - bug in program code */
|
||||
AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w) // unused
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) // unused
|
||||
AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32) // unused
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( fghthist_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
// AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(deco32_pf1_data_w) // wtf??
|
||||
// AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(deco32_pf1_data_w) // wtf??
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE_MEMBER(deco32_state, ram)
|
||||
AM_RANGE(0x120020, 0x12002f) AM_READ(fghthist_control_r)
|
||||
@ -790,13 +802,13 @@ static ADDRESS_MAP_START( fghthist_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x16c000, 0x16c01f) AM_READNOP
|
||||
AM_RANGE(0x17c000, 0x17c03f) AM_READNOP
|
||||
@ -823,13 +835,13 @@ static ADDRESS_MAP_START( fghthsta_memmap, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(deco16_146_fghthist_prot_r, deco16_146_fghthist_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
ADDRESS_MAP_END
|
||||
@ -846,15 +858,15 @@ static ADDRESS_MAP_START( dragngun_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x138000, 0x138003) AM_NOP /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */
|
||||
AM_RANGE(0x138008, 0x13800b) AM_WRITE(deco32_palette_dma_w)
|
||||
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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, 0x1a3fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w) // unused
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) // unused
|
||||
AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32) // unused
|
||||
|
||||
@ -897,15 +909,15 @@ static ADDRESS_MAP_START( lockload_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x170000, 0x170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */
|
||||
AM_RANGE(0x178008, 0x17800f) AM_WRITENOP /* Gun read ACK's */
|
||||
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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, 0x1a3fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w) // unused
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w) // unused
|
||||
AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32) // unused
|
||||
|
||||
@ -963,13 +975,13 @@ static ADDRESS_MAP_START( tattass_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(tattass_prot_r, tattass_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1004,13 +1016,13 @@ static ADDRESS_MAP_START( nslasher_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(deco32_pf1_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf1_rowscroll32)
|
||||
AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf2_rowscroll32)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf3_data_dword_r, deco16ic_pf3_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom", deco16ic_pf4_data_dword_r, deco16ic_pf4_data_dword_w)
|
||||
AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
|
||||
AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
|
||||
AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(deco32_pf3_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf3_rowscroll32)
|
||||
AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_rowscroll_w) AM_BASE_MEMBER(deco32_state, pf4_rowscroll32)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf34_control_dword_r, deco16ic_pf34_control_dword_w)
|
||||
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("deco_custom34", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
|
||||
|
||||
AM_RANGE(0x200000, 0x200fff) AM_READWRITE(nslasher_prot_r, nslasher_prot_w) AM_BASE(&deco32_prot_ram)
|
||||
ADDRESS_MAP_END
|
||||
@ -1768,14 +1780,25 @@ static int captaven_bank_callback( int bank )
|
||||
static const deco16ic_interface captaven_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 0, // pf12only, split, fullwidth12 / fullwidth34
|
||||
0x0f, 0x0f, 0xff, 0x00, /* trans masks (default values) */
|
||||
0x20, 0x20, 0x10, 0x00, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x00, /* color masks (default values) */
|
||||
0,
|
||||
0,
|
||||
0, 1, // pf12only, split, fullwidth12 / fullwidth34
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x20, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
NULL,
|
||||
0,1
|
||||
};
|
||||
|
||||
static const deco16ic_interface captaven_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, // pf12only, split, fullwidth12 / fullwidth34
|
||||
0xff, 0x00, /* trans masks (default values) */
|
||||
0x10, 0x00, /* color base */
|
||||
0x0f, 0x00, /* color masks (default values) */
|
||||
captaven_bank_callback,
|
||||
NULL,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
@ -1805,6 +1828,7 @@ static MACHINE_CONFIG_START( captaven, deco32_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", captaven_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", captaven_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
@ -1855,6 +1879,7 @@ static MACHINE_CONFIG_START( fghthist, deco32_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", fghthist_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", fghthist_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
@ -1901,6 +1926,7 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", fghthist_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", fghthist_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
@ -1942,27 +1968,49 @@ static int dragngun_bank2_callback( int bank )
|
||||
static const deco16ic_interface dragngun_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1, // dragon gun definitely needs pf3/4 full width, bgs in 2nd attract demo.
|
||||
0x0f, 0x0f, 0xff, 0xff, /* trans masks (default values) */
|
||||
0x20, 0x30, 0x04, 0x04, /* color base */
|
||||
0x0f, 0x0f, 0x03, 0x03, /* color masks (default values) */
|
||||
0, 1, // dragon gun definitely needs pf3/4 full width, bgs in 2nd attract demo.
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dragngun_bank_callback,
|
||||
dragngun_bank_callback,
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface dragngun_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1, // dragon gun definitely needs pf3/4 full width, bgs in 2nd attract demo.
|
||||
0xff, 0xff, /* trans masks (default values) */
|
||||
0x04, 0x04, /* color base */
|
||||
0x03, 0x03, /* color masks (default values) */
|
||||
dragngun_bank2_callback,
|
||||
NULL
|
||||
NULL,
|
||||
0,2,
|
||||
};
|
||||
|
||||
static const deco16ic_interface lockload_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 0, // lockload definitely wants pf34 half width..
|
||||
0x0f, 0x0f, 0xff, 0xff, /* trans masks (default values) */
|
||||
0x20, 0x30, 0x04, 0x04, /* color base */
|
||||
0x0f, 0x0f, 0x03, 0x03, /* color masks (default values) */
|
||||
0, 1, // lockload definitely wants pf34 half width..
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dragngun_bank_callback,
|
||||
dragngun_bank_callback,
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface lockload_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, // lockload definitely wants pf34 half width..
|
||||
0xff, 0xff, /* trans masks (default values) */
|
||||
0x04, 0x04, /* color base */
|
||||
0x03, 0x03, /* color masks (default values) */
|
||||
dragngun_bank2_callback,
|
||||
NULL
|
||||
NULL,
|
||||
0,2,
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( dragngun, dragngun_state )
|
||||
@ -1992,6 +2040,7 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state )
|
||||
MCFG_SCREEN_EOF(dragngun)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", dragngun_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", dragngun_deco16ic34_intf)
|
||||
|
||||
MCFG_GFXDECODE(dragngun)
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
@ -2046,6 +2095,7 @@ static MACHINE_CONFIG_START( lockload, dragngun_state )
|
||||
MCFG_SCREEN_EOF(dragngun)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", lockload_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", lockload_deco16ic34_intf)
|
||||
|
||||
MCFG_GFXDECODE(dragngun)
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
@ -2083,16 +2133,28 @@ static int tattass_bank_callback( int bank )
|
||||
static const deco16ic_interface tattass_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x10, 0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x10, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback
|
||||
0,1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface tattass_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x20, 0x30, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
tattass_bank_callback,
|
||||
tattass_bank_callback,
|
||||
0,2,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tattass, deco32_state )
|
||||
|
||||
@ -2112,17 +2174,18 @@ static MACHINE_CONFIG_START( tattass, deco32_state )
|
||||
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
|
||||
MCFG_SCREEN_SIZE(42*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
|
||||
|
||||
|
||||
MCFG_SCREEN_UPDATE(nslasher)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", tattass_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", tattass_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen1", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen2", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 4);
|
||||
|
||||
|
||||
|
||||
MCFG_GFXDECODE(tattass)
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
@ -2161,6 +2224,7 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
|
||||
MCFG_SCREEN_UPDATE(nslasher)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", tattass_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", tattass_deco16ic34_intf)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen1", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 3);
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
static ADDRESS_MAP_START( dietgo_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf_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)
|
||||
@ -180,14 +180,13 @@ static int dietgo_bank_callback(const int bank)
|
||||
static const deco16ic_interface dietgo_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
dietgo_bank_callback,
|
||||
dietgo_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
|
||||
@ -227,7 +226,7 @@ static MACHINE_CONFIG_START( dietgo, dietgo_state )
|
||||
MCFG_DECO16IC_ADD("deco_custom", dietgo_deco16ic_intf)
|
||||
MCFG_DEVICE_ADD("spritegen", decospr_, 0)
|
||||
decospr_device_config::set_gfx_region(device, 2);
|
||||
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
@ -108,7 +108,7 @@ static ADDRESS_MAP_START( funkyjet_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf_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)
|
||||
@ -289,11 +289,12 @@ static const ym2151_interface ym2151_config =
|
||||
static const deco16ic_interface funkyjet_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL, NULL, NULL
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL,
|
||||
0,1,
|
||||
};
|
||||
|
||||
static MACHINE_START( funkyjet )
|
||||
|
@ -75,13 +75,13 @@ static VIDEO_START( mirage )
|
||||
static SCREEN_UPDATE( mirage )
|
||||
{
|
||||
mirage_state *state = screen->machine->driver_data<mirage_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 0x400);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 0x400);
|
||||
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 256); /* not verified */
|
||||
|
||||
@ -150,7 +150,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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE("deco_custom", deco16ic_pf_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)
|
||||
@ -290,14 +290,13 @@ static int mirage_bank_callback( const int bank )
|
||||
static const deco16ic_interface mirage_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
mirage_bank_callback,
|
||||
mirage_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
|
||||
|
@ -86,7 +86,7 @@ static ADDRESS_MAP_START( pktgaldx_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8_MODERN("oki2", okim6295_device, write, 0x00ff)
|
||||
AM_RANGE(0x150006, 0x150007) AM_DEVREAD8_MODERN("oki2", okim6295_device, read, 0x00ff)
|
||||
|
||||
AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("deco_custom", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("deco_custom", deco16ic_pf_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
|
||||
@ -300,16 +300,17 @@ static int pktgaldx_bank_callback( const int bank )
|
||||
static const deco16ic_interface pktgaldx_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL,
|
||||
pktgaldx_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
|
||||
|
||||
static MACHINE_START( pktgaldx )
|
||||
{
|
||||
pktgaldx_state *state = machine->driver_data<pktgaldx_state>();
|
||||
|
@ -136,8 +136,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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w)
|
||||
AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_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 */
|
||||
|
||||
@ -152,8 +152,8 @@ static ADDRESS_MAP_START( rohga_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
|
||||
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(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
|
||||
AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, pf1_rowscroll)
|
||||
AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, pf2_rowscroll)
|
||||
@ -170,15 +170,15 @@ static ADDRESS_MAP_START( wizdfire_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
|
||||
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(0x208000, 0x208fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x20a000, 0x20afff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
|
||||
AM_RANGE(0x20b000, 0x20b3ff) AM_WRITEONLY /* ? Always 0 written */
|
||||
AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf3_rowscroll)
|
||||
AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf4_rowscroll)
|
||||
|
||||
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(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_control_w)
|
||||
|
||||
AM_RANGE(0x320000, 0x320001) AM_DEVWRITE("deco_custom", deco16ic_priority_w) /* Priority */
|
||||
AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
|
||||
@ -201,16 +201,16 @@ static ADDRESS_MAP_START( nitrobal_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
|
||||
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(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
|
||||
AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf1_rowscroll)
|
||||
AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf2_rowscroll)
|
||||
AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf3_rowscroll)
|
||||
AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE_MEMBER(rohga_state, pf4_rowscroll)
|
||||
|
||||
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(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_control_w)
|
||||
|
||||
AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_DEVWRITE("deco_custom", deco16ic_priority_w) /* Priority */
|
||||
AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
|
||||
@ -231,8 +231,8 @@ 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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom", deco16ic_pf34_control_w)
|
||||
AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("deco_custom", deco16ic_pf_control_w)
|
||||
AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_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")
|
||||
@ -246,8 +246,8 @@ static ADDRESS_MAP_START( schmeisr_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
|
||||
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(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, pf1_rowscroll)
|
||||
AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, pf2_rowscroll)
|
||||
AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, pf3_rowscroll)
|
||||
@ -749,27 +749,49 @@ static int rohga_bank_callback( const int bank )
|
||||
static const deco16ic_interface rohga_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16,/* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
rohga_bank_callback,
|
||||
rohga_bank_callback,
|
||||
0, 1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface rohga_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
rohga_bank_callback,
|
||||
rohga_bank_callback
|
||||
rohga_bank_callback,
|
||||
0, 2,
|
||||
};
|
||||
|
||||
static const deco16ic_interface nitrobal_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 0, 0,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 0, /* color base (pf4 is not default) */
|
||||
0x0f, 0x0f, 0, 0, /* color masks */
|
||||
0, 0,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (pf4 is not default) */
|
||||
0x0f, 0x0f, /* color masks */
|
||||
rohga_bank_callback,
|
||||
rohga_bank_callback,
|
||||
0, 1,
|
||||
};
|
||||
|
||||
static const deco16ic_interface nitrobal_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 0, /* color base (pf4 is not default) */
|
||||
0, 0, /* color masks */
|
||||
rohga_bank_callback,
|
||||
rohga_bank_callback
|
||||
rohga_bank_callback,
|
||||
0, 2,
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( rohga, rohga_state )
|
||||
@ -799,6 +821,7 @@ static MACHINE_CONFIG_START( rohga, rohga_state )
|
||||
MCFG_VIDEO_START(rohga)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", rohga_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", rohga_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
@ -842,6 +865,7 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", rohga_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", rohga_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
@ -885,6 +909,7 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state )
|
||||
MCFG_PALETTE_LENGTH(2048)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", nitrobal_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", nitrobal_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
@ -930,6 +955,7 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state )
|
||||
MCFG_VIDEO_START(rohga)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", rohga_deco16ic_intf)
|
||||
MCFG_DECO16IC_ADD("deco_custom34", rohga_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
@ -251,10 +251,10 @@ static WRITE32_HANDLER( simpl156_pf2_rowscroll_w )
|
||||
static ADDRESS_MAP_START( joemacr_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, mainram) // main ram
|
||||
AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
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", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -275,10 +275,10 @@ static ADDRESS_MAP_START( chainrec_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, systemram) // work ram (32-bit)
|
||||
AM_RANGE(0x3c0000, 0x3c0003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x400000, 0x407fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, mainram) // main ram?
|
||||
AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
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", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -296,10 +296,10 @@ static ADDRESS_MAP_START( magdrop_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, systemram) // work ram (32-bit)
|
||||
AM_RANGE(0x340000, 0x340003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x380000, 0x387fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, mainram) // main ram?
|
||||
AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
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", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -317,10 +317,10 @@ static ADDRESS_MAP_START( magdropp_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, systemram) // work ram (32-bit)
|
||||
AM_RANGE(0x4c0000, 0x4c0003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x680000, 0x687fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, mainram) // main ram?
|
||||
AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
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", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -337,10 +337,10 @@ static ADDRESS_MAP_START( mitchell156_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
|
||||
AM_RANGE(0x180000, 0x187fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, mainram) // main ram
|
||||
AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
|
||||
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", deco16ic_pf12_control_dword_r, deco16ic_pf12_control_dword_w)
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_dword_r, deco16ic_pf_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)
|
||||
@ -407,14 +407,13 @@ static int simpl156_bank_callback(const int bank)
|
||||
static const deco16ic_interface simpl156_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16,/* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
simpl156_bank_callback,
|
||||
simpl156_bank_callback,
|
||||
NULL,
|
||||
NULL
|
||||
0,1,
|
||||
};
|
||||
|
||||
UINT16 simpl156_pri_callback(UINT16 x)
|
||||
|
@ -69,7 +69,7 @@ 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", deco16ic_pf12_control_r, deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_r, deco16ic_pf_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)
|
||||
@ -84,7 +84,7 @@ 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", deco16ic_pf12_control_r, deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("deco_custom", deco16ic_pf_control_r, deco16ic_pf_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
|
||||
@ -323,11 +323,12 @@ static const ym2151_interface ym2151_config =
|
||||
static const deco16ic_interface supbtime_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL, NULL, NULL
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL,
|
||||
0,1
|
||||
};
|
||||
|
||||
static MACHINE_START( supbtime )
|
||||
|
@ -119,7 +119,7 @@ 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", deco16ic_pf12_control_w)
|
||||
AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("deco_custom", deco16ic_pf_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
|
||||
@ -288,11 +288,12 @@ static const ym2151_interface ym2151_config =
|
||||
static const deco16ic_interface tumblep_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
1, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, 0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL, NULL, NULL
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0, 16, /* color base (default values) */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
NULL, NULL,
|
||||
0,1
|
||||
};
|
||||
|
||||
static MACHINE_START( tumblep )
|
||||
|
@ -52,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", 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(0x200000, 0x201fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
|
||||
AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("deco_custom34", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
|
||||
AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("deco_custom34", deco16ic_pf_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(0x2c0000, 0x2c000f) AM_DEVWRITE("deco_custom", deco16ic_pf_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
|
||||
@ -193,6 +193,7 @@ static const gfx_layout tilelayout =
|
||||
static GFXDECODE_START( vaportra )
|
||||
GFXDECODE_ENTRY( "gfx1", 0x000000, charlayout, 0x000, 0x500 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0x000, 0x500 ) /* Tiles 16x16 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0x000000, charlayout, 0x000, 0x500 ) /* Characters 8x8 */
|
||||
GFXDECODE_ENTRY( "gfx2", 0x000000, tilelayout, 0x000, 0x500 ) /* Tiles 16x16 */ // ok
|
||||
GFXDECODE_ENTRY( "gfx3", 0x000000, tilelayout, 0x100, 16 ) /* Sprites 16x16 */
|
||||
GFXDECODE_END
|
||||
@ -219,17 +220,28 @@ static int vaportra_bank_callback( const int bank )
|
||||
static const deco16ic_interface vaportra_deco16ic_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 0, 1, 1,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x20, 0x30, 0x40, /* color base */
|
||||
0x0f, 0x0f, 0x0f, 0x0f, /* color masks (default values) */
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x00, 0x20, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
vaportra_bank_callback,
|
||||
vaportra_bank_callback,
|
||||
vaportra_bank_callback,
|
||||
vaportra_bank_callback
|
||||
0,1
|
||||
};
|
||||
|
||||
|
||||
static const deco16ic_interface vaportra_deco16ic34_intf =
|
||||
{
|
||||
"screen",
|
||||
0, 1,
|
||||
0x0f, 0x0f, /* trans masks (default values) */
|
||||
0x30, 0x40, /* color base */
|
||||
0x0f, 0x0f, /* color masks (default values) */
|
||||
vaportra_bank_callback,
|
||||
vaportra_bank_callback,
|
||||
2,3
|
||||
};
|
||||
|
||||
static MACHINE_START( vaportra )
|
||||
{
|
||||
vaportra_state *state = machine->driver_data<vaportra_state>();
|
||||
@ -237,6 +249,7 @@ static MACHINE_START( vaportra )
|
||||
state->maincpu = machine->device("maincpu");
|
||||
state->audiocpu = machine->device("audiocpu");
|
||||
state->deco16ic = machine->device("deco_custom");
|
||||
state->deco16ic34 = machine->device("deco_custom34");
|
||||
|
||||
state->save_item(NAME(state->priority));
|
||||
}
|
||||
@ -278,6 +291,8 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state )
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom", vaportra_deco16ic_intf)
|
||||
|
||||
MCFG_DECO16IC_ADD("deco_custom34", vaportra_deco16ic34_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
@ -15,6 +15,7 @@ public:
|
||||
maincpu(*this, "maincpu"),
|
||||
audiocpu(*this, "audiocpu"),
|
||||
deco16ic(*this, "deco_custom"),
|
||||
deco16ic34(*this, "deco_custom34"),
|
||||
oki1(*this, "oki1"),
|
||||
oki2(*this, "oki2") { }
|
||||
|
||||
@ -28,6 +29,7 @@ public:
|
||||
required_device<cpu_device> maincpu;
|
||||
required_device<cpu_device> audiocpu;
|
||||
required_device<deco16ic_device> deco16ic;
|
||||
required_device<deco16ic_device> deco16ic34;
|
||||
required_device<okim6295_device> oki1;
|
||||
required_device<okim6295_device> oki2;
|
||||
};
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
device_t *maincpu;
|
||||
device_t *audiocpu;
|
||||
device_t *deco16ic;
|
||||
device_t *deco16ic34;
|
||||
};
|
||||
|
||||
|
||||
|
@ -15,6 +15,7 @@ public:
|
||||
maincpu(*this, "maincpu"),
|
||||
audiocpu(*this, "audiocpu"),
|
||||
deco16ic(*this, "deco_custom"),
|
||||
deco16ic34(*this, "deco_custom34"),
|
||||
raster_irq_timer(*this, "raster_timer"),
|
||||
oki2(*this, "oki2") { }
|
||||
|
||||
@ -32,6 +33,7 @@ public:
|
||||
required_device<cpu_device> maincpu;
|
||||
required_device<cpu_device> audiocpu;
|
||||
required_device<deco16ic_device> deco16ic;
|
||||
required_device<deco16ic_device> deco16ic34;
|
||||
optional_device<timer_device> raster_irq_timer;
|
||||
optional_device<okim6295_device> oki2;
|
||||
};
|
||||
|
@ -16,6 +16,7 @@ public:
|
||||
audiocpu(*this, "audiocpu"),
|
||||
subcpu(*this, "sub"),
|
||||
deco16ic(*this, "deco_custom"),
|
||||
deco16ic34(*this, "deco_custom34"),
|
||||
oki2(*this, "oki2") { }
|
||||
|
||||
/* memory pointers */
|
||||
@ -30,6 +31,7 @@ public:
|
||||
required_device<cpu_device> audiocpu;
|
||||
required_device<cpu_device> subcpu;
|
||||
required_device<deco16ic_device> deco16ic;
|
||||
required_device<deco16ic_device> deco16ic34;
|
||||
required_device<okim6295_device> oki2;
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
int ace_ram_dirty;
|
||||
int has_ace_ram;
|
||||
UINT32 *ace_ram;
|
||||
|
||||
|
||||
UINT8 *dirty_palette;
|
||||
|
||||
int pri;
|
||||
@ -42,8 +42,9 @@ public:
|
||||
UINT32 *pf2_rowscroll32;
|
||||
UINT32 *pf3_rowscroll32;
|
||||
UINT32 *pf4_rowscroll32;
|
||||
|
||||
|
||||
device_t *deco16ic;
|
||||
device_t *deco16ic34;
|
||||
};
|
||||
|
||||
class dragngun_state : public deco32_state
|
||||
|
@ -15,6 +15,7 @@ public:
|
||||
maincpu(*this, "maincpu"),
|
||||
audiocpu(*this, "audiocpu"),
|
||||
deco16ic(*this, "deco_custom"),
|
||||
deco16ic34(*this, "deco_custom34"),
|
||||
oki1(*this, "oki1"),
|
||||
oki2(*this, "oki2") { }
|
||||
|
||||
@ -29,6 +30,7 @@ public:
|
||||
required_device<cpu_device> maincpu;
|
||||
required_device<cpu_device> audiocpu;
|
||||
required_device<deco16ic_device> deco16ic;
|
||||
required_device<deco16ic_device> deco16ic34;
|
||||
required_device<okim6295_device> oki1;
|
||||
required_device<okim6295_device> oki2;
|
||||
};
|
||||
|
@ -23,6 +23,7 @@ public:
|
||||
device_t *maincpu;
|
||||
device_t *audiocpu;
|
||||
device_t *deco16ic;
|
||||
device_t *deco16ic34;
|
||||
};
|
||||
|
||||
|
||||
|
@ -140,12 +140,12 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
|
||||
SCREEN_UPDATE( boogwing )
|
||||
{
|
||||
boogwing_state *state = screen->machine->driver_data<boogwing_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
deco16ic_clear_sprite_priority_bitmap(state->deco16ic);
|
||||
@ -157,17 +157,17 @@ SCREEN_UPDATE( boogwing )
|
||||
if ((priority & 0x7) == 0x5)
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_34_combine_draw(state->deco16ic, bitmap, cliprect, 0, 32);
|
||||
deco16ic_tilemap_12_combine_draw(state->deco16ic34, bitmap, cliprect, 0, 32);
|
||||
}
|
||||
else if ((priority & 0x7) == 0x1 || (priority & 0x7) == 0x2)
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 8);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 32);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 32);
|
||||
}
|
||||
else if ((priority & 0x7) == 0x3)
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 8);
|
||||
|
||||
// This mode uses playfield 3 to shadow sprites & playfield 2 (instead of
|
||||
@ -176,8 +176,8 @@ SCREEN_UPDATE( boogwing )
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 8);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 8);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 32);
|
||||
}
|
||||
|
||||
|
@ -50,29 +50,29 @@ VIDEO_START( twocrude )
|
||||
SCREEN_UPDATE( twocrude )
|
||||
{
|
||||
cbuster_state *state = screen->machine->driver_data<cbuster_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, !BIT(flip, 7));
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffer, 0x400);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffer, 0x400);
|
||||
|
||||
|
||||
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);
|
||||
|
||||
/* Draw playfields & sprites */
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
screen->machine->device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen->machine, bitmap, cliprect, 0x0800, 0x0900, 0x100, 0x0ff);
|
||||
screen->machine->device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen->machine, bitmap, cliprect, 0x0900, 0x0900, 0x500, 0x0ff);
|
||||
|
||||
if (state->pri)
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
|
||||
|
@ -126,17 +126,17 @@ static void cninjabl_draw_sprites( running_machine *machine, bitmap_t *bitmap, c
|
||||
SCREEN_UPDATE( cninja )
|
||||
{
|
||||
cninja_state *state = screen->machine->driver_data<cninja_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
bitmap_fill(bitmap, cliprect, 512);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 0x400);
|
||||
@ -147,17 +147,17 @@ SCREEN_UPDATE( cninja )
|
||||
SCREEN_UPDATE( cninjabl )
|
||||
{
|
||||
cninja_state *state = screen->machine->driver_data<cninja_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
bitmap_fill(bitmap, cliprect, 512);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4);
|
||||
cninjabl_draw_sprites(screen->machine, bitmap, cliprect);
|
||||
@ -168,16 +168,16 @@ SCREEN_UPDATE( cninjabl )
|
||||
SCREEN_UPDATE( edrandy )
|
||||
{
|
||||
cninja_state *state = screen->machine->driver_data<cninja_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
bitmap_fill(bitmap, cliprect, 0);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 0x400);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
@ -187,7 +187,7 @@ SCREEN_UPDATE( edrandy )
|
||||
SCREEN_UPDATE( robocop2 )
|
||||
{
|
||||
cninja_state *state = screen->machine->driver_data<cninja_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
/* One of the tilemap chips can switch between 2 tilemaps at 4bpp, or 1 at 8bpp */
|
||||
@ -195,37 +195,37 @@ SCREEN_UPDATE( robocop2 )
|
||||
{
|
||||
deco16ic_set_tilemap_colour_mask(state->deco16ic, 2, 0);
|
||||
deco16ic_set_tilemap_colour_mask(state->deco16ic, 3, 0);
|
||||
deco16ic_pf34_set_gfxbank(state->deco16ic, 0, 4);
|
||||
deco16ic_pf12_set_gfxbank(state->deco16ic34, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_set_tilemap_colour_mask(state->deco16ic, 2, 0xf);
|
||||
deco16ic_set_tilemap_colour_mask(state->deco16ic, 3, 0xf);
|
||||
deco16ic_pf34_set_gfxbank(state->deco16ic, 0, 2);
|
||||
deco16ic_pf12_set_gfxbank(state->deco16ic34, 0, 2);
|
||||
}
|
||||
|
||||
/* Update playfields */
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
bitmap_fill(bitmap, cliprect, 0x200);
|
||||
|
||||
if ((priority & 4) == 0)
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
|
||||
/* Switchable priority */
|
||||
switch (priority & 0x8)
|
||||
{
|
||||
case 8:
|
||||
deco16ic_tilemap_2_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);
|
||||
break;
|
||||
default:
|
||||
case 0:
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
break;
|
||||
}
|
||||
@ -244,13 +244,13 @@ VIDEO_START( mutantf )
|
||||
SCREEN_UPDATE( mutantf )
|
||||
{
|
||||
cninja_state *state = screen->machine->driver_data<cninja_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
bitmap_fill(bitmap, cliprect, 0x400); /* Confirmed */
|
||||
@ -272,10 +272,10 @@ SCREEN_UPDATE( mutantf )
|
||||
The other bits may control alpha blend on the 2nd sprite chip, or
|
||||
layer order.
|
||||
*/
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
|
||||
|
||||
if (priority & 1)
|
||||
{
|
||||
|
@ -175,34 +175,34 @@ static void draw_sprites( running_machine* machine, bitmap_t *bitmap, const rect
|
||||
SCREEN_UPDATE( dassault )
|
||||
{
|
||||
dassault_state *state = screen->machine->driver_data<dassault_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
/* Update tilemaps */
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, 0, state->pf2_rowscroll);
|
||||
deco16ic_pf34_update(state->deco16ic, 0, state->pf4_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, 0, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic34, 0, state->pf4_rowscroll);
|
||||
|
||||
/* Draw playfields/update priority bitmap */
|
||||
deco16ic_clear_sprite_priority_bitmap(state->deco16ic);
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
bitmap_fill(bitmap, cliprect, screen->machine->pens[3072]);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
|
||||
/* The middle playfields can be swapped priority-wise */
|
||||
if ((priority & 3) == 0)
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 16);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 16);
|
||||
}
|
||||
else if ((priority & 3) == 1)
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 64);
|
||||
}
|
||||
else if ((priority & 3) == 3)
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 16);
|
||||
}
|
||||
else
|
||||
|
@ -140,8 +140,8 @@ Rowscroll style:
|
||||
|
||||
2010-02: Converted to be a device.
|
||||
TODO:
|
||||
- properly support PCBs with two ICs (i.e. no pf3/pf4 because they actually belong to a 2nd chip)
|
||||
- move here emulation of the sprite chips (currently replicated in each driver)?
|
||||
- convert to c++ device
|
||||
- splite tilemap emulation from other emulation
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -149,7 +149,6 @@ Rowscroll style:
|
||||
#include "video/deco16ic.h"
|
||||
#include "ui.h"
|
||||
|
||||
/* Note, each device should have 2 tilemaps, not 4.. games with 4 chips use 2 devices.. this should be fixed here! */
|
||||
|
||||
typedef struct _deco16ic_state deco16ic_state;
|
||||
struct _deco16ic_state
|
||||
@ -157,35 +156,33 @@ struct _deco16ic_state
|
||||
screen_device *screen;
|
||||
|
||||
UINT16 *pf1_data, *pf2_data;
|
||||
UINT16 *pf3_data, *pf4_data;
|
||||
UINT16 *pf12_control, *pf34_control;
|
||||
UINT16 *pf12_control;
|
||||
UINT16 *raster_display_list;
|
||||
UINT8 *dirty_palette;
|
||||
|
||||
const UINT16 *pf1_rowscroll_ptr, *pf2_rowscroll_ptr;
|
||||
const UINT16 *pf3_rowscroll_ptr, *pf4_rowscroll_ptr;
|
||||
|
||||
tilemap_t *pf1_tilemap_16x16, *pf2_tilemap_16x16, *pf3_tilemap_16x16, *pf4_tilemap_16x16 ;
|
||||
tilemap_t *pf1_tilemap_16x16, *pf2_tilemap_16x16;
|
||||
tilemap_t *pf1_tilemap_8x8, *pf2_tilemap_8x8;
|
||||
bitmap_t *sprite_priority_bitmap;
|
||||
|
||||
deco16_bank_cb bank_cb[4];
|
||||
deco16_bank_cb bank_cb[2];
|
||||
|
||||
UINT16 priority;
|
||||
|
||||
int raster_display_position;
|
||||
|
||||
int use_custom_pf1, use_custom_pf2, use_custom_pf3, use_custom_pf4;
|
||||
int use_custom_pf1, use_custom_pf2;
|
||||
|
||||
int pf1_bank, pf2_bank, pf3_bank, pf4_bank;
|
||||
int pf12_16x16_gfx_bank, pf34_16x16_gfx_bank, pf12_8x8_gfx_bank;
|
||||
int pf1_colourmask, pf2_colourmask, pf3_colourmask, pf4_colourmask;
|
||||
int pf1_colour_bank, pf2_colour_bank, pf3_colour_bank, pf4_colour_bank;
|
||||
int pf1_trans_mask, pf2_trans_mask, pf3_trans_mask, pf4_trans_mask;
|
||||
int pf1_bank, pf2_bank;
|
||||
int pf12_16x16_gfx_bank, pf12_8x8_gfx_bank;
|
||||
int pf1_colourmask, pf2_colourmask;
|
||||
int pf1_colour_bank, pf2_colour_bank;
|
||||
int pf1_trans_mask, pf2_trans_mask;
|
||||
|
||||
int pf12_last_small, pf12_last_big, pf34_last_big;
|
||||
int pf12_last_small, pf12_last_big;
|
||||
|
||||
int pf3_8bpp_mode;
|
||||
int pf1_8bpp_mode;
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
@ -287,76 +284,6 @@ static TILEMAP_MAPPER( deco16_scan_rows )
|
||||
return (col & 0x1f) + ((row & 0x1f) << 5) + ((col & 0x20) << 5) + ((row & 0x20) << 6);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO_DEVICE( get_pf4_tile_info )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
UINT16 tile = deco16ic->pf4_data[tile_index];
|
||||
UINT8 colour = (tile >> 12) & 0xf;
|
||||
UINT8 flags = 0;
|
||||
|
||||
if (tile & 0x8000)
|
||||
{
|
||||
if ((deco16ic->pf34_control[6] >> 8) & 0x01)
|
||||
{
|
||||
flags |= TILE_FLIPX;
|
||||
colour &= 0x7;
|
||||
}
|
||||
if ((deco16ic->pf34_control[6] >> 8) & 0x02)
|
||||
{
|
||||
flags|=TILE_FLIPY;
|
||||
colour &= 0x7;
|
||||
}
|
||||
}
|
||||
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf34_16x16_gfx_bank,
|
||||
(tile & 0xfff) | deco16ic->pf4_bank,
|
||||
(colour & deco16ic->pf4_colourmask) + deco16ic->pf4_colour_bank,
|
||||
flags);
|
||||
}
|
||||
|
||||
static TILE_GET_INFO_DEVICE( get_pf3_tile_info )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
UINT16 tile = deco16ic->pf3_data[tile_index];
|
||||
UINT8 colour = (tile >> 12) & 0xf;
|
||||
UINT8 flags = 0;
|
||||
|
||||
if (tile & 0x8000)
|
||||
{
|
||||
if ((deco16ic->pf34_control[6] >> 0) & 0x01)
|
||||
{
|
||||
flags |= TILE_FLIPX;
|
||||
colour &= 0x7;
|
||||
}
|
||||
if ((deco16ic->pf34_control[6] >> 0) & 0x02)
|
||||
{
|
||||
flags |= TILE_FLIPY;
|
||||
colour &= 0x7;
|
||||
}
|
||||
}
|
||||
|
||||
if (deco16ic->pf3_8bpp_mode)
|
||||
{
|
||||
// Captain America operates this chip in 8bpp mode.
|
||||
// In 8bpp mode you appear to only get 1 layer, not 2, but you also
|
||||
// have an extra 2 tile bits, and 2 less colour bits.
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf34_16x16_gfx_bank,
|
||||
(tile & 0x3fff) | deco16ic->pf3_bank,
|
||||
((colour & deco16ic->pf3_colourmask) + deco16ic->pf3_colour_bank)>>2,
|
||||
flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf34_16x16_gfx_bank,
|
||||
(tile & 0xfff) | deco16ic->pf3_bank,
|
||||
((colour & deco16ic->pf3_colourmask) + deco16ic->pf3_colour_bank),
|
||||
flags);
|
||||
}
|
||||
}
|
||||
|
||||
static TILE_GET_INFO_DEVICE( get_pf2_tile_info )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
@ -406,11 +333,25 @@ static TILE_GET_INFO_DEVICE( get_pf1_tile_info )
|
||||
}
|
||||
}
|
||||
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf12_16x16_gfx_bank,
|
||||
(tile & 0xfff) | deco16ic->pf1_bank,
|
||||
(colour & deco16ic->pf1_colourmask) + deco16ic->pf1_colour_bank,
|
||||
flags);
|
||||
if (deco16ic->pf1_8bpp_mode)
|
||||
{
|
||||
// Captain America operates this chip in 8bpp mode.
|
||||
// In 8bpp mode you appear to only get 1 layer, not 2, but you also
|
||||
// have an extra 2 tile bits, and 2 less colour bits.
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf12_16x16_gfx_bank,
|
||||
(tile & 0x3fff) | deco16ic->pf1_bank,
|
||||
((colour & deco16ic->pf1_colourmask) + deco16ic->pf1_colour_bank)>>2,
|
||||
flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
SET_TILE_INFO_DEVICE(
|
||||
deco16ic->pf12_16x16_gfx_bank,
|
||||
(tile & 0xfff) | deco16ic->pf1_bank,
|
||||
(colour & deco16ic->pf1_colourmask) + deco16ic->pf1_colour_bank,
|
||||
flags);
|
||||
}
|
||||
}
|
||||
|
||||
static TILE_GET_INFO_DEVICE( get_pf2_tile_info_b )
|
||||
@ -523,7 +464,7 @@ static void custom_tilemap_draw(
|
||||
width_mask = src_bitmap0->width - 1;
|
||||
height_mask = src_bitmap0->height - 1;
|
||||
src_y = scrolly + starty;
|
||||
|
||||
|
||||
|
||||
for (y = starty; y < endy; y++)
|
||||
{
|
||||
@ -547,7 +488,7 @@ static void custom_tilemap_draw(
|
||||
|
||||
if (src_bitmap1)
|
||||
{
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
p |= (*BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x) & combine_mask) << combine_shift;
|
||||
}
|
||||
|
||||
src_x = (src_x + 1) & width_mask;
|
||||
@ -586,7 +527,7 @@ static void custom_tilemap_draw(
|
||||
{
|
||||
UINT16 p2 = *BITMAP_ADDR16(src_bitmap1, (src_y + column_offset) & height_mask, src_x);
|
||||
p = 0x200+( ((p&0x30)<<4) | (p&0x0f) | ((p2 & 0x0f)<<4));
|
||||
}
|
||||
}
|
||||
}
|
||||
src_x = (src_x + 1) & width_mask;
|
||||
|
||||
@ -608,10 +549,10 @@ static void custom_tilemap_draw(
|
||||
/******************************************************************************/
|
||||
|
||||
/* captain america seems to have a similar 8bpp feature to robocop2, investigate merging */
|
||||
void deco16ic_set_pf3_8bpp_mode(device_t *device, int mode)
|
||||
void deco16ic_set_pf1_8bpp_mode(device_t *device, int mode)
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
deco16ic->pf3_8bpp_mode = mode;
|
||||
deco16ic->pf1_8bpp_mode = mode;
|
||||
}
|
||||
|
||||
/* robocop 2 can switch between 2 tilemaps at 4bpp, or 1 at 8bpp */
|
||||
@ -623,25 +564,34 @@ void deco16ic_set_tilemap_colour_mask( device_t *device, int tmap, int mask )
|
||||
{
|
||||
case 0: deco16ic->pf1_colourmask = mask; break;
|
||||
case 1: deco16ic->pf2_colourmask = mask; break;
|
||||
case 2: deco16ic->pf3_colourmask = mask; break;
|
||||
case 3: deco16ic->pf4_colourmask = mask; break;
|
||||
}
|
||||
}
|
||||
|
||||
void deco16ic_pf34_set_gfxbank( device_t *device, int small, int big )
|
||||
void deco16ic_pf12_set_gfxbank( device_t *device, int small, int big )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
if (deco16ic->pf34_last_big != big)
|
||||
if (deco16ic->pf12_last_big != big)
|
||||
{
|
||||
if (deco16ic->pf3_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf3_tilemap_16x16);
|
||||
if (deco16ic->pf4_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf4_tilemap_16x16);
|
||||
if (deco16ic->pf1_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf1_tilemap_16x16);
|
||||
if (deco16ic->pf2_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf2_tilemap_16x16);
|
||||
|
||||
deco16ic->pf34_last_big = big;
|
||||
deco16ic->pf12_last_big = big;
|
||||
}
|
||||
deco16ic->pf34_16x16_gfx_bank = big;
|
||||
deco16ic->pf12_16x16_gfx_bank = big;
|
||||
|
||||
if (deco16ic->pf12_last_small != small)
|
||||
{
|
||||
if (deco16ic->pf1_tilemap_8x8)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf1_tilemap_8x8);
|
||||
if (deco16ic->pf2_tilemap_8x8)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf2_tilemap_8x8);
|
||||
|
||||
deco16ic->pf12_last_small = small;
|
||||
}
|
||||
deco16ic->pf12_8x8_gfx_bank = small;
|
||||
}
|
||||
|
||||
/* stoneage has broken scroll registers */
|
||||
@ -663,14 +613,6 @@ void deco16ic_set_scrolldx( device_t *device, int tmap, int size, int dx, int dx
|
||||
else
|
||||
tilemap_set_scrolldx(deco16ic->pf2_tilemap_8x8, dx, dx_if_flipped);
|
||||
break;
|
||||
case 2:
|
||||
if (!size)
|
||||
tilemap_set_scrolldx(deco16ic->pf3_tilemap_16x16, dx, dx_if_flipped);
|
||||
break;
|
||||
case 3:
|
||||
if (!size)
|
||||
tilemap_set_scrolldx(deco16ic->pf4_tilemap_16x16, dx, dx_if_flipped);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -698,22 +640,6 @@ WRITE16_DEVICE_HANDLER( deco16ic_pf2_data_w )
|
||||
tilemap_mark_tile_dirty(deco16ic->pf2_tilemap_16x16, offset);
|
||||
}
|
||||
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf3_data_w )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
COMBINE_DATA(&deco16ic->pf3_data[offset]);
|
||||
tilemap_mark_tile_dirty(deco16ic->pf3_tilemap_16x16, offset);
|
||||
}
|
||||
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf4_data_w )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
COMBINE_DATA(&deco16ic->pf4_data[offset]);
|
||||
tilemap_mark_tile_dirty(deco16ic->pf4_tilemap_16x16, offset);
|
||||
}
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf1_data_r )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
@ -726,67 +652,31 @@ READ16_DEVICE_HANDLER( deco16ic_pf2_data_r )
|
||||
return deco16ic->pf2_data[offset];
|
||||
}
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf3_data_r )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
return deco16ic->pf3_data[offset];
|
||||
}
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf4_data_r )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
return deco16ic->pf4_data[offset];
|
||||
}
|
||||
|
||||
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf12_control_w )
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf_control_w )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
COMBINE_DATA(&deco16ic->pf12_control[offset]);
|
||||
device->machine->primary_screen->update_partial(device->machine->primary_screen->vpos());
|
||||
}
|
||||
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf34_control_w )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
COMBINE_DATA(&deco16ic->pf34_control[offset]);
|
||||
device->machine->primary_screen->update_partial(device->machine->primary_screen->vpos());
|
||||
}
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf12_control_r )
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf_control_r )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
return deco16ic->pf12_control[offset];
|
||||
}
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf34_control_r )
|
||||
|
||||
READ32_DEVICE_HANDLER ( deco16ic_pf_control_dword_r )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
return deco16ic->pf34_control[offset];
|
||||
return deco16ic_pf_control_r(device, offset, 0xffff)^0xffff0000;
|
||||
}
|
||||
|
||||
|
||||
READ32_DEVICE_HANDLER ( deco16ic_pf12_control_dword_r )
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf_control_dword_w )
|
||||
{
|
||||
return deco16ic_pf12_control_r(device, offset, 0xffff)^0xffff0000;
|
||||
deco16ic_pf_control_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf12_control_dword_w )
|
||||
{
|
||||
deco16ic_pf12_control_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
READ32_DEVICE_HANDLER ( deco16ic_pf34_control_dword_r )
|
||||
{
|
||||
return deco16ic_pf34_control_r(device, offset, 0xffff)^0xffff0000;
|
||||
}
|
||||
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf34_control_dword_w )
|
||||
{
|
||||
deco16ic_pf34_control_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
|
||||
READ32_DEVICE_HANDLER( deco16ic_pf1_data_dword_r )
|
||||
{
|
||||
return deco16ic_pf1_data_r(device, offset, 0xffff)^0xffff0000;
|
||||
@ -807,25 +697,6 @@ WRITE32_DEVICE_HANDLER( deco16ic_pf2_data_dword_w )
|
||||
deco16ic_pf2_data_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
READ32_DEVICE_HANDLER( deco16ic_pf3_data_dword_r )
|
||||
{
|
||||
return deco16ic_pf3_data_r(device, offset, 0xffff)^0xffff0000;
|
||||
}
|
||||
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf3_data_dword_w )
|
||||
{
|
||||
deco16ic_pf3_data_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
READ32_DEVICE_HANDLER( deco16ic_pf4_data_dword_r )
|
||||
{
|
||||
return deco16ic_pf4_data_r(device, offset, 0xffff)^0xffff0000;
|
||||
}
|
||||
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf4_data_dword_w )
|
||||
{
|
||||
deco16ic_pf4_data_w(device, offset, data & 0xffff, mem_mask & 0xffff);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************************/
|
||||
@ -844,9 +715,6 @@ static int deco16_pf_update(
|
||||
/* Toggle between 8x8 and 16x16 modes (and master enable bit) */
|
||||
if (BIT(control1, 7))
|
||||
{
|
||||
if (!tilemap_8x8)
|
||||
popmessage("Deco16: Playfield switched into 8x8 mode but no tilemap defined");
|
||||
|
||||
if (tilemap_8x8)
|
||||
tilemap_set_enable(tilemap_8x8, BIT(control0, 7));
|
||||
|
||||
@ -856,9 +724,6 @@ static int deco16_pf_update(
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!tilemap_16x16)
|
||||
popmessage("Deco16: Playfield switched into 16x16 mode but no tilemap defined");
|
||||
|
||||
if (tilemap_8x8)
|
||||
tilemap_set_enable(tilemap_8x8, 0);
|
||||
|
||||
@ -986,7 +851,7 @@ static int deco16_pf_update(
|
||||
return use_custom;
|
||||
}
|
||||
|
||||
void deco16ic_pf12_update( device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr )
|
||||
void deco16ic_pf_update( device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
int bank1, bank2;
|
||||
@ -1029,43 +894,6 @@ void deco16ic_pf12_update( device_t *device, const UINT16 *rowscroll_1_ptr, cons
|
||||
}
|
||||
}
|
||||
|
||||
void deco16ic_pf34_update( device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
int bank1, bank2;
|
||||
|
||||
/* Update scrolling and tilemap enable */
|
||||
deco16ic->pf3_rowscroll_ptr = rowscroll_1_ptr;
|
||||
deco16ic->pf4_rowscroll_ptr = rowscroll_2_ptr;
|
||||
deco16ic->use_custom_pf4 = deco16_pf_update(0, deco16ic->pf4_tilemap_16x16, rowscroll_2_ptr, deco16ic->pf34_control[3], deco16ic->pf34_control[4], deco16ic->pf34_control[5] >> 8, deco16ic->pf34_control[6] >> 8);
|
||||
deco16ic->use_custom_pf3 = deco16_pf_update(0, deco16ic->pf3_tilemap_16x16, rowscroll_1_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff);
|
||||
|
||||
/* Update banking and global flip state */
|
||||
if (deco16ic->bank_cb[2])
|
||||
{
|
||||
bank1 = deco16ic->bank_cb[2](deco16ic->pf34_control[7] & 0xff);
|
||||
if (bank1 != deco16ic->pf3_bank)
|
||||
{
|
||||
if (deco16ic->pf3_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf3_tilemap_16x16);
|
||||
|
||||
deco16ic->pf3_bank = bank1;
|
||||
}
|
||||
}
|
||||
|
||||
if (deco16ic->bank_cb[3])
|
||||
{
|
||||
bank2 = deco16ic->bank_cb[3](deco16ic->pf34_control[7] >> 8);
|
||||
if (bank2 != deco16ic->pf4_bank)
|
||||
{
|
||||
if (deco16ic->pf4_tilemap_16x16)
|
||||
tilemap_mark_all_tiles_dirty(deco16ic->pf4_tilemap_16x16);
|
||||
|
||||
deco16ic->pf4_bank = bank2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************************/
|
||||
|
||||
void deco16ic_print_debug_info(device_t *device, bitmap_t *bitmap)
|
||||
@ -1084,16 +912,6 @@ void deco16ic_print_debug_info(device_t *device, bitmap_t *bitmap)
|
||||
else
|
||||
sprintf(buf, "\n\n");
|
||||
|
||||
if (deco16ic->pf34_control)
|
||||
{
|
||||
sprintf(&buf[strlen(buf)],"%04X %04X %04X %04X\n", deco16ic->pf34_control[0], deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[3]);
|
||||
sprintf(&buf[strlen(buf)],"%04X %04X %04X %04X\n", deco16ic->pf34_control[4], deco16ic->pf34_control[5], deco16ic->pf34_control[6], deco16ic->pf34_control[7]);
|
||||
}
|
||||
else
|
||||
sprintf(&buf[strlen(buf)], "\n\n");
|
||||
|
||||
sprintf(&buf[strlen(buf)],"%04X", deco16ic->priority);
|
||||
|
||||
ui_draw_text(&device->machine->render().ui_container(), buf, 60, 40);
|
||||
}
|
||||
|
||||
@ -1213,33 +1031,14 @@ void deco16ic_tilemap_2_draw(device_t *device, bitmap_t *bitmap, const rectangle
|
||||
}
|
||||
}
|
||||
|
||||
void deco16ic_tilemap_3_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority)
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
if (deco16ic->use_custom_pf3)
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf3_tilemap_16x16, 0, 0, deco16ic->pf3_rowscroll_ptr, deco16ic->pf34_control[1], deco16ic->pf34_control[2], deco16ic->pf34_control[5] & 0xff, deco16ic->pf34_control[6] & 0xff, 0, 0, deco16ic->pf3_trans_mask, flags, priority, 0);
|
||||
else if (deco16ic->pf3_tilemap_16x16)
|
||||
tilemap_draw(bitmap, cliprect, deco16ic->pf3_tilemap_16x16, flags, priority);
|
||||
}
|
||||
|
||||
void deco16ic_tilemap_4_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority)
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
if (deco16ic->use_custom_pf4)
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf4_tilemap_16x16, 0, 0, deco16ic->pf4_rowscroll_ptr, deco16ic->pf34_control[3], deco16ic->pf34_control[4], deco16ic->pf34_control[5] >> 8, deco16ic->pf34_control[6] >> 8, 0, 0, deco16ic->pf4_trans_mask, flags, priority, 0);
|
||||
else if (deco16ic->pf4_tilemap_16x16)
|
||||
tilemap_draw(bitmap, cliprect, deco16ic->pf4_tilemap_16x16, flags, priority);
|
||||
}
|
||||
|
||||
/*****************************************************************************************/
|
||||
|
||||
// Combines the output of two 4BPP tilemaps into an 8BPP tilemap
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo)
|
||||
void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo)
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 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, is_tattoo);
|
||||
custom_tilemap_draw(device, bitmap, cliprect, 0, deco16ic->pf1_tilemap_16x16, 0, deco16ic->pf2_tilemap_16x16, deco16ic->pf1_rowscroll_ptr, deco16ic->pf12_control[1], deco16ic->pf12_control[2], deco16ic->pf12_control[5] & 0xff, deco16ic->pf12_control[6] & 0xff, 0xf, 4, 0xff, flags, priority, is_tattoo);
|
||||
}
|
||||
|
||||
|
||||
@ -1261,26 +1060,23 @@ static DEVICE_START( deco16ic )
|
||||
|
||||
deco16ic->bank_cb[0] = intf->bank_cb0;
|
||||
deco16ic->bank_cb[1] = intf->bank_cb1;
|
||||
deco16ic->bank_cb[2] = intf->bank_cb2;
|
||||
deco16ic->bank_cb[3] = intf->bank_cb3;
|
||||
|
||||
deco16ic->pf1_trans_mask = intf->trans_mask1;
|
||||
deco16ic->pf2_trans_mask = intf->trans_mask2;
|
||||
deco16ic->pf3_trans_mask = intf->trans_mask3;
|
||||
deco16ic->pf4_trans_mask = intf->trans_mask4;
|
||||
|
||||
deco16ic->pf1_colour_bank = intf->col_base1;
|
||||
deco16ic->pf2_colour_bank = intf->col_base2;
|
||||
deco16ic->pf3_colour_bank = intf->col_base3;
|
||||
deco16ic->pf4_colour_bank = intf->col_base4;
|
||||
|
||||
deco16ic->pf1_colourmask = intf->col_mask1;
|
||||
deco16ic->pf2_colourmask = intf->col_mask2;
|
||||
deco16ic->pf3_colourmask = intf->col_mask3;
|
||||
deco16ic->pf4_colourmask = intf->col_mask4;
|
||||
|
||||
deco16ic->pf1_tilemap_16x16 = tilemap_create_device(device, get_pf1_tile_info, deco16_scan_rows, 16, 16, 64, 32);
|
||||
deco16ic->pf1_tilemap_8x8 = tilemap_create_device(device, get_pf1_tile_info_b, tilemap_scan_rows, 8, 8, 64, 32);
|
||||
deco16ic->pf1_tilemap_16x16 = tilemap_create_device(device, get_pf1_tile_info, deco16_scan_rows, 16, 16, intf->full_width12 ? 64 : 32, 32);
|
||||
// deco16ic->pf1_tilemap_8x8 = tilemap_create_device(device, get_pf1_tile_info_b, tilemap_scan_rows, 8, 8, intf->full_width12 ? 64 : 32, 32);
|
||||
deco16ic->pf1_tilemap_8x8 = tilemap_create_device(device, get_pf1_tile_info_b, tilemap_scan_rows, 8, 8, 64 , 32);
|
||||
|
||||
deco16ic->pf12_8x8_gfx_bank = intf->_8x8_gfxregion;
|
||||
deco16ic->pf12_16x16_gfx_bank = intf->_16x16_gfxregion;
|
||||
|
||||
|
||||
if (intf->split)
|
||||
deco16ic->pf2_tilemap_16x16 = tilemap_create_device(device, get_pf2_tile_info, deco16_scan_rows, 16, 16, intf->full_width12 ? 64 : 32, 32);
|
||||
@ -1289,17 +1085,6 @@ static DEVICE_START( deco16ic )
|
||||
|
||||
deco16ic->pf2_tilemap_8x8 = tilemap_create_device(device, get_pf2_tile_info_b, tilemap_scan_rows, 8, 8, intf->full_width12 ? 64 : 32, 32);
|
||||
|
||||
if (!intf->pf12_only)
|
||||
{
|
||||
deco16ic->pf4_tilemap_16x16 = tilemap_create_device(device, get_pf4_tile_info, deco16_scan_rows, 16, 16, intf->full_width34 ? 64 : 32, 32);
|
||||
deco16ic->pf3_tilemap_16x16 = tilemap_create_device(device, get_pf3_tile_info, deco16_scan_rows, 16, 16, intf->full_width34 ? 64 : 32, 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic->pf3_tilemap_16x16 = 0;
|
||||
deco16ic->pf4_tilemap_16x16 = 0;
|
||||
}
|
||||
|
||||
tilemap_set_transparent_pen(deco16ic->pf1_tilemap_8x8, 0);
|
||||
tilemap_set_transparent_pen(deco16ic->pf2_tilemap_8x8, 0);
|
||||
tilemap_set_transparent_pen(deco16ic->pf1_tilemap_16x16, 0);
|
||||
@ -1308,73 +1093,53 @@ static DEVICE_START( deco16ic )
|
||||
if (intf->split) /* Caveman Ninja only */
|
||||
tilemap_set_transmask(deco16ic->pf2_tilemap_16x16, 0, 0x00ff, 0xff01);
|
||||
|
||||
if (!intf->pf12_only)
|
||||
{
|
||||
tilemap_set_transparent_pen(deco16ic->pf3_tilemap_16x16, 0);
|
||||
tilemap_set_transparent_pen(deco16ic->pf4_tilemap_16x16, 0);
|
||||
}
|
||||
|
||||
deco16ic->pf3_8bpp_mode = 0;
|
||||
deco16ic->pf1_8bpp_mode = 0;
|
||||
|
||||
deco16ic->dirty_palette = auto_alloc_array_clear(device->machine, UINT8, 4096);
|
||||
deco16ic->raster_display_list = auto_alloc_array_clear(device->machine, UINT16, 20 * 256 / 2);
|
||||
|
||||
deco16ic->pf1_data = auto_alloc_array_clear(device->machine, UINT16, 0x2000 / 2);
|
||||
deco16ic->pf2_data = auto_alloc_array_clear(device->machine, UINT16, 0x2000 / 2);
|
||||
deco16ic->pf3_data = auto_alloc_array_clear(device->machine, UINT16, 0x2000 / 2);
|
||||
deco16ic->pf4_data = auto_alloc_array_clear(device->machine, UINT16, 0x2000 / 2);
|
||||
deco16ic->pf12_control = auto_alloc_array_clear(device->machine, UINT16, 0x10 / 2);
|
||||
deco16ic->pf34_control = auto_alloc_array_clear(device->machine, UINT16, 0x10 / 2);
|
||||
|
||||
|
||||
device->save_item(NAME(deco16ic->priority));
|
||||
device->save_item(NAME(deco16ic->raster_display_position));
|
||||
device->save_item(NAME(deco16ic->use_custom_pf1));
|
||||
device->save_item(NAME(deco16ic->use_custom_pf2));
|
||||
device->save_item(NAME(deco16ic->use_custom_pf3));
|
||||
device->save_item(NAME(deco16ic->use_custom_pf4));
|
||||
device->save_item(NAME(deco16ic->pf1_bank));
|
||||
device->save_item(NAME(deco16ic->pf2_bank));
|
||||
device->save_item(NAME(deco16ic->pf3_bank));
|
||||
device->save_item(NAME(deco16ic->pf4_bank));
|
||||
device->save_item(NAME(deco16ic->pf12_8x8_gfx_bank));
|
||||
device->save_item(NAME(deco16ic->pf12_16x16_gfx_bank));
|
||||
device->save_item(NAME(deco16ic->pf34_16x16_gfx_bank));
|
||||
device->save_item(NAME(deco16ic->pf12_last_small));
|
||||
device->save_item(NAME(deco16ic->pf12_last_big));
|
||||
device->save_item(NAME(deco16ic->pf34_last_big));
|
||||
device->save_item(NAME(deco16ic->pf3_8bpp_mode));
|
||||
|
||||
device->save_item(NAME(deco16ic->pf1_8bpp_mode));
|
||||
|
||||
device->save_pointer(NAME(deco16ic->dirty_palette), 4096);
|
||||
device->save_pointer(NAME(deco16ic->raster_display_list), 20 * 256 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf1_data), 0x2000 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf2_data), 0x2000 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf3_data), 0x2000 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf4_data), 0x2000 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf12_control), 0x10 / 2);
|
||||
device->save_pointer(NAME(deco16ic->pf34_control), 0x10 / 2);
|
||||
|
||||
}
|
||||
|
||||
static DEVICE_RESET( deco16ic )
|
||||
{
|
||||
deco16ic_state *deco16ic = get_safe_token(device);
|
||||
|
||||
deco16ic->pf1_bank = deco16ic->pf2_bank = deco16ic->pf3_bank = deco16ic->pf4_bank = 0;
|
||||
deco16ic->pf1_bank = deco16ic->pf2_bank = 0;
|
||||
|
||||
deco16ic->pf12_8x8_gfx_bank = 0;
|
||||
deco16ic->pf12_16x16_gfx_bank = 1;
|
||||
deco16ic->pf34_16x16_gfx_bank = 2;
|
||||
|
||||
deco16ic->raster_display_position = 0;
|
||||
|
||||
deco16ic->pf12_last_small = deco16ic->pf12_last_big = deco16ic->pf34_last_big = -1;
|
||||
deco16ic->pf12_last_small = deco16ic->pf12_last_big = -1;
|
||||
|
||||
deco16ic->priority = 0;
|
||||
deco16ic->use_custom_pf1 = deco16ic->use_custom_pf2 = deco16ic->use_custom_pf3 = deco16ic->use_custom_pf4 = 0;
|
||||
deco16ic->use_custom_pf1 = deco16ic->use_custom_pf2 = 0;
|
||||
|
||||
deco16ic->pf1_rowscroll_ptr = 0;
|
||||
deco16ic->pf2_rowscroll_ptr = 0;
|
||||
deco16ic->pf3_rowscroll_ptr = 0;
|
||||
deco16ic->pf4_rowscroll_ptr = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,15 +24,14 @@ typedef struct _deco16ic_interface deco16ic_interface;
|
||||
struct _deco16ic_interface
|
||||
{
|
||||
const char *screen;
|
||||
int pf12_only;
|
||||
int split;
|
||||
int full_width12;
|
||||
int full_width34;
|
||||
|
||||
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;
|
||||
int trans_mask1, trans_mask2;
|
||||
int col_base1, col_base2;
|
||||
int col_mask1, col_mask2;
|
||||
deco16_bank_cb bank_cb0, bank_cb1;
|
||||
int _8x8_gfxregion, _16x16_gfxregion;
|
||||
};
|
||||
|
||||
DECLARE_LEGACY_DEVICE(DECO16IC, deco16ic);
|
||||
@ -52,37 +51,26 @@ DECLARE_LEGACY_DEVICE(DECO16IC, deco16ic);
|
||||
|
||||
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 );
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_pf_control_w );
|
||||
|
||||
|
||||
READ16_DEVICE_HANDLER( deco16ic_pf_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 );
|
||||
WRITE32_DEVICE_HANDLER( deco16ic_pf_control_dword_w );
|
||||
|
||||
READ32_DEVICE_HANDLER( deco16ic_pf_control_dword_r );
|
||||
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_nonbuffered_palette_w );
|
||||
WRITE16_DEVICE_HANDLER( deco16ic_buffered_palette_w );
|
||||
@ -95,17 +83,13 @@ READ16_DEVICE_HANDLER( deco16ic_71_r );
|
||||
|
||||
void deco16ic_print_debug_info(device_t *device, bitmap_t *bitmap);
|
||||
|
||||
void deco16ic_pf12_update(device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
|
||||
void deco16ic_pf34_update(device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
|
||||
void deco16ic_pf_update(device_t *device, const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
|
||||
|
||||
void deco16ic_tilemap_1_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
void deco16ic_tilemap_2_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
void deco16ic_tilemap_3_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
void deco16ic_tilemap_4_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
|
||||
|
||||
/* used by boogwing, nitrobal */
|
||||
void deco16ic_tilemap_34_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo = false);
|
||||
|
||||
void deco16ic_tilemap_12_combine_draw(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority, int is_tattoo = false);
|
||||
|
||||
/* used by boogwing, dassault, nitrobal */
|
||||
void deco16ic_clear_sprite_priority_bitmap(device_t *device);
|
||||
@ -117,10 +101,10 @@ void deco16ic_pdrawgfx(
|
||||
|
||||
/* used by robocop2 */
|
||||
void deco16ic_set_tilemap_colour_mask(device_t *device, int tmap, int mask);
|
||||
void deco16ic_pf34_set_gfxbank(device_t *device, int small, int big);
|
||||
void deco16ic_pf12_set_gfxbank(device_t *device, int small, int big);
|
||||
|
||||
/* used by captaven */
|
||||
void deco16ic_set_pf3_8bpp_mode(device_t *device, int mode);
|
||||
void deco16ic_set_pf1_8bpp_mode(device_t *device, int mode);
|
||||
|
||||
/* used by stoneage */
|
||||
void deco16ic_set_scrolldx(device_t *device, int tmap, int size, int dx, int dx_if_flipped);
|
||||
|
@ -548,7 +548,7 @@ VIDEO_START( dragngun )
|
||||
{
|
||||
dragngun_state *state = machine->driver_data<dragngun_state>();
|
||||
state->dirty_palette = auto_alloc_array(machine, UINT8, 4096);
|
||||
|
||||
|
||||
memset(state->dirty_palette,0,4096);
|
||||
|
||||
state_save_register_global(machine, state->dragngun_sprite_ctrl);
|
||||
@ -590,7 +590,7 @@ SCREEN_EOF( captaven )
|
||||
|
||||
SCREEN_EOF( dragngun )
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -600,34 +600,35 @@ SCREEN_UPDATE( captaven )
|
||||
{
|
||||
deco32_state *state = screen->machine->driver_data<deco32_state>();
|
||||
state->deco16ic = screen->machine->device("deco_custom");
|
||||
state->deco16ic34 = screen->machine->device("deco_custom34");
|
||||
|
||||
tilemap_set_flip_all(screen->machine,flip_screen_get(screen->machine) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap,cliprect,screen->machine->pens[0x000]); // Palette index not confirmed
|
||||
|
||||
deco16ic_set_pf3_8bpp_mode(state->deco16ic, 1);
|
||||
deco16ic_set_pf1_8bpp_mode(state->deco16ic34, 1);
|
||||
|
||||
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);
|
||||
|
||||
// pf4 not used (because pf3 is in 8bpp mode)
|
||||
|
||||
if ((state->pri&1)==0)
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 1);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 1);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
}
|
||||
|
||||
deco16ic_tilemap_1_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen")->set_alt_format(true);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x400);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x400);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -636,22 +637,23 @@ SCREEN_UPDATE( dragngun )
|
||||
{
|
||||
deco32_state *state = screen->machine->driver_data<deco32_state>();
|
||||
state->deco16ic = screen->machine->device("deco_custom");
|
||||
state->deco16ic34 = screen->machine->device("deco_custom34");
|
||||
|
||||
bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
|
||||
|
||||
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);
|
||||
|
||||
//deco16ic_set_pf3_8bpp_mode(state->deco16ic, 1); // despite being 8bpp this doesn't require the same shifting as captaven, why not?
|
||||
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 0); // it uses pf3 in 8bpp mode instead, like captaven
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 0); // it uses pf3 in 8bpp mode instead, like captaven
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
|
||||
// zooming sprite draw is very slow, and sprites are buffered.. however, one of the levels attempts to use
|
||||
// partial updates for every line, which causes things to be very slow... the sprites appear to support
|
||||
// multiple layers of alpha, so rendering to a buffer for layer isn't easy (maybe there are multiple sprite
|
||||
// chips at work?)
|
||||
// chips at work?)
|
||||
//
|
||||
// really, it needs optimizing .. the raster effects also need fixing properly, they're not correct using
|
||||
// partial updates right now but the old buffering of scroll values was a hack and doesn't work properly
|
||||
@ -679,27 +681,28 @@ SCREEN_UPDATE( fghthist )
|
||||
{
|
||||
deco32_state *state = screen->machine->driver_data<deco32_state>();
|
||||
state->deco16ic = screen->machine->device("deco_custom");
|
||||
state->deco16ic34 = screen->machine->device("deco_custom34");
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap,cliprect,screen->machine->pens[0x000]); // Palette index not confirmed
|
||||
|
||||
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);
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x800, true);
|
||||
screen->machine->device<decospr_device>("spritegen")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x800, true);
|
||||
|
||||
/* Draw screen */
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 1);
|
||||
|
||||
if(state->pri&1)
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
screen->machine->device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen->machine, bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
screen->machine->device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(screen->machine, bitmap, cliprect, 0x0800, 0x0800, 1024, 0x1ff);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
@ -730,7 +733,7 @@ static void mixDualAlphaSprites(bitmap_t *bitmap, const rectangle *cliprect, con
|
||||
bitmap_t* sprite0_mix_bitmap = machine->device<decospr_device>("spritegen1")->get_sprite_temp_bitmap();
|
||||
bitmap_t* sprite1_mix_bitmap = machine->device<decospr_device>("spritegen2")->get_sprite_temp_bitmap();
|
||||
|
||||
|
||||
|
||||
/* Mix sprites into main bitmap, based on priority & alpha */
|
||||
for (y=8; y<248; y++) {
|
||||
UINT8* tilemapPri=BITMAP_ADDR8(machine->priority_bitmap, y, 0);
|
||||
@ -856,9 +859,10 @@ SCREEN_UPDATE( nslasher )
|
||||
deco32_state *state = screen->machine->driver_data<deco32_state>();
|
||||
int alphaTilemap=0;
|
||||
state->deco16ic = screen->machine->device("deco_custom");
|
||||
state->deco16ic34 = screen->machine->device("deco_custom34");
|
||||
|
||||
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);
|
||||
|
||||
/* This is not a conclusive test for deciding if tilemap needs alpha blending */
|
||||
if (state->ace_ram[0x17]!=0x0 && state->pri)
|
||||
@ -875,33 +879,33 @@ SCREEN_UPDATE( nslasher )
|
||||
screen->machine->device<decospr_device>("spritegen1")->set_pix_raw_shift(8);
|
||||
screen->machine->device<decospr_device>("spritegen2")->set_pix_raw_shift(8);
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen1")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x800, true);
|
||||
screen->machine->device<decospr_device>("spritegen2")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_2_buffered, 0x800, true);
|
||||
|
||||
screen->machine->device<decospr_device>("spritegen1")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_buffered, 0x800, true);
|
||||
screen->machine->device<decospr_device>("spritegen2")->draw_sprites(screen->machine, bitmap, cliprect, state->spriteram16_2_buffered, 0x800, true);
|
||||
|
||||
|
||||
/* Render alpha-blended tilemap to seperate buffer for proper mixing */
|
||||
bitmap_fill(state->tilemap_alpha_bitmap,cliprect,0);
|
||||
|
||||
/* Draw playfields & sprites */
|
||||
if (state->pri&2)
|
||||
{
|
||||
deco16ic_tilemap_34_combine_draw(state->deco16ic, bitmap, cliprect, 0, 1, 1);
|
||||
deco16ic_tilemap_12_combine_draw(state->deco16ic34, bitmap, cliprect, 0, 1, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 1);
|
||||
if (state->pri&1)
|
||||
{
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
if (alphaTilemap)
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, state->tilemap_alpha_bitmap, cliprect, 0, 4);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, state->tilemap_alpha_bitmap, cliprect, 0, 4);
|
||||
else
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
if (alphaTilemap)
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, state->tilemap_alpha_bitmap, cliprect, 0, 4);
|
||||
else
|
||||
|
@ -6,10 +6,10 @@
|
||||
SCREEN_UPDATE( dietgo )
|
||||
{
|
||||
dietgo_state *state = screen->machine->driver_data<dietgo_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 256); /* not verified */
|
||||
|
||||
|
@ -14,10 +14,10 @@
|
||||
SCREEN_UPDATE( funkyjet )
|
||||
{
|
||||
funkyjet_state *state = screen->machine->driver_data<funkyjet_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 768);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
|
@ -8,10 +8,10 @@
|
||||
SCREEN_UPDATE( pktgaldx )
|
||||
{
|
||||
pktgaldx_state *state = screen->machine->driver_data<pktgaldx_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 0); /* not Confirmed */
|
||||
bitmap_fill(screen->machine->priority_bitmap, NULL, 0);
|
||||
|
@ -422,13 +422,13 @@ sprite 2:
|
||||
static void update_rohga( device_t *screen, bitmap_t *bitmap, const rectangle *cliprect, int is_schmeisr )
|
||||
{
|
||||
rohga_state *state = screen->machine->driver_data<rohga_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
/* Update playfields */
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields */
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
@ -440,25 +440,25 @@ static void update_rohga( device_t *screen, bitmap_t *bitmap, const rectangle *c
|
||||
if (priority & 4)
|
||||
{
|
||||
// Draw as 1 8BPP layer
|
||||
deco16ic_tilemap_34_combine_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 3);
|
||||
deco16ic_tilemap_12_combine_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Draw as 2 4BPP layers
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
}
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
break;
|
||||
case 1:
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_2_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);
|
||||
break;
|
||||
case 2:
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 4);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 2);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 4);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -483,26 +483,26 @@ SCREEN_UPDATE( schmeisr )
|
||||
SCREEN_UPDATE( wizdfire )
|
||||
{
|
||||
rohga_state *state = screen->machine->driver_data<rohga_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 priority = deco16ic_priority_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
/* Update playfields */
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, 0, 0);
|
||||
deco16ic_pf34_update(state->deco16ic, state->pf3_rowscroll, state->pf4_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, 0, 0);
|
||||
deco16ic_pf_update(state->deco16ic34, state->pf3_rowscroll, state->pf4_rowscroll);
|
||||
|
||||
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
|
||||
bitmap_fill(bitmap, cliprect, screen->machine->pens[512]);
|
||||
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
wizdfire_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 4, 3);
|
||||
deco16ic_tilemap_2_draw(state->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?! */
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 0);
|
||||
else
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, 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);
|
||||
@ -516,12 +516,12 @@ SCREEN_UPDATE( wizdfire )
|
||||
SCREEN_UPDATE( nitrobal )
|
||||
{
|
||||
rohga_state *state = screen->machine->driver_data<rohga_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
/* Update playfields */
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
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);
|
||||
|
||||
/* Draw playfields - Palette of 2nd playfield chip visible if playfields turned off */
|
||||
bitmap_fill(bitmap, cliprect, screen->machine->pens[512]);
|
||||
@ -529,7 +529,7 @@ SCREEN_UPDATE( nitrobal )
|
||||
deco16ic_clear_sprite_priority_bitmap(state->deco16ic);
|
||||
|
||||
/* pf3 and pf4 are combined into a single 8bpp bitmap */
|
||||
deco16ic_tilemap_34_combine_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_12_combine_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 16);
|
||||
nitrobal_draw_sprites(screen->machine, bitmap, cliprect, screen->machine->generic.buffered_spriteram.u16, 3);
|
||||
|
@ -31,7 +31,7 @@ SCREEN_UPDATE( simpl156 )
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap, NULL, 0);
|
||||
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 256);
|
||||
|
||||
|
@ -24,10 +24,10 @@ End sequence uses rowscroll '98 c0' on pf1 (jmp to 1d61a on supbtimj)
|
||||
SCREEN_UPDATE(supbtime)
|
||||
{
|
||||
supbtime_state *state = screen->machine->driver_data<supbtime_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 768);
|
||||
|
||||
|
@ -22,10 +22,10 @@ to switch between 8*8 tiles and 16*16 tiles.
|
||||
SCREEN_UPDATE( tumblep )
|
||||
{
|
||||
tumblep_state *state = screen->machine->driver_data<tumblep_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
|
||||
flip_screen_set(screen->machine, BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
deco16ic_pf_update(state->deco16ic, state->pf1_rowscroll, state->pf2_rowscroll);
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 256); /* not verified */
|
||||
|
||||
|
@ -110,7 +110,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
|
||||
|
||||
while (multi >= 0)
|
||||
{
|
||||
drawgfx_transpen(bitmap,cliprect,machine->gfx[3],
|
||||
drawgfx_transpen(bitmap,cliprect,machine->gfx[4],
|
||||
sprite - multi * inc,
|
||||
colour,
|
||||
fx,fy,
|
||||
@ -125,41 +125,41 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
|
||||
SCREEN_UPDATE( vaportra )
|
||||
{
|
||||
vaportra_state *state = screen->machine->driver_data<vaportra_state>();
|
||||
UINT16 flip = deco16ic_pf12_control_r(state->deco16ic, 0, 0xffff);
|
||||
UINT16 flip = deco16ic_pf_control_r(state->deco16ic, 0, 0xffff);
|
||||
int pri = state->priority[0] & 0x03;
|
||||
|
||||
flip_screen_set(screen->machine, !BIT(flip, 7));
|
||||
deco16ic_pf12_update(state->deco16ic, 0, 0);
|
||||
deco16ic_pf34_update(state->deco16ic, 0, 0);
|
||||
deco16ic_pf_update(state->deco16ic, 0, 0);
|
||||
deco16ic_pf_update(state->deco16ic34, 0, 0);
|
||||
|
||||
/* Draw playfields */
|
||||
if (pri == 0)
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
else if (pri == 1)
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
else if (pri == 2)
|
||||
{
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
deco16ic_tilemap_3_draw(state->deco16ic, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_1_draw(state->deco16ic34, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||
deco16ic_tilemap_4_draw(state->deco16ic, bitmap, cliprect, 0, 0);
|
||||
deco16ic_tilemap_2_draw(state->deco16ic34, bitmap, cliprect, 0, 0);
|
||||
}
|
||||
|
||||
draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user