mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
Made machine->gfx[num] choice (when starting Konami devices), independent of the device order
Updated overdriv.c to use the Konami video devices Commit of machine/simpsons.c that I forgot to commit earlier (sorry)
This commit is contained in:
parent
ef4d608713
commit
adf3319b1c
@ -353,7 +353,7 @@ static MACHINE_RESET( 88games )
|
||||
|
||||
static const k052109_interface _88games_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
_88games_tile_callback
|
||||
@ -361,7 +361,7 @@ static const k052109_interface _88games_k052109_intf =
|
||||
|
||||
static const k051960_interface _88games_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
_88games_sprite_callback
|
||||
@ -369,7 +369,7 @@ static const k051960_interface _88games_k051960_intf =
|
||||
|
||||
static const k051316_interface _88games_k051316_intf =
|
||||
{
|
||||
"gfx3",
|
||||
"gfx3", 2,
|
||||
4, FALSE, 0,
|
||||
0, 0, 0,
|
||||
_88games_zoom_callback
|
||||
|
@ -226,7 +226,7 @@ static const ym2151_interface ym2151_config =
|
||||
|
||||
static const k052109_interface aliens_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
aliens_tile_callback
|
||||
@ -234,7 +234,7 @@ static const k052109_interface aliens_k052109_intf =
|
||||
|
||||
static const k051960_interface aliens_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
aliens_sprite_callback
|
||||
|
@ -235,7 +235,7 @@ INPUT_PORTS_END
|
||||
|
||||
static const k056832_interface asterix_k056832_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
K056832_BPP_4,
|
||||
1, 1,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
@ -244,7 +244,7 @@ static const k056832_interface asterix_k056832_intf =
|
||||
|
||||
static const k05324x_interface asterix_k05324x_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-3, -1,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
|
@ -184,7 +184,7 @@ INPUT_PORTS_END
|
||||
|
||||
static const k052109_interface blockhl_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
blockhl_tile_callback
|
||||
@ -192,7 +192,7 @@ static const k052109_interface blockhl_k052109_intf =
|
||||
|
||||
static const k051960_interface blockhl_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
blockhl_sprite_callback
|
||||
|
@ -247,7 +247,7 @@ static const k007232_interface k007232_config =
|
||||
|
||||
static const k052109_interface crimfght_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
crimfght_tile_callback
|
||||
@ -255,7 +255,7 @@ static const k052109_interface crimfght_k052109_intf =
|
||||
|
||||
static const k051960_interface crimfght_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
crimfght_sprite_callback
|
||||
|
@ -263,7 +263,7 @@ static const k007232_interface k007232_config =
|
||||
|
||||
static const k052109_interface gbusters_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
gbusters_tile_callback
|
||||
@ -271,7 +271,7 @@ static const k052109_interface gbusters_k052109_intf =
|
||||
|
||||
static const k051960_interface gbusters_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
gbusters_sprite_callback
|
||||
|
@ -488,7 +488,7 @@ static MACHINE_RESET( moo )
|
||||
|
||||
static const k056832_interface moo_k056832_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
K056832_BPP_4,
|
||||
1, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
@ -498,7 +498,7 @@ static const k056832_interface moo_k056832_intf =
|
||||
static const k053247_interface moo_k053247_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-48+1, 23,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
@ -508,7 +508,7 @@ static const k053247_interface moo_k053247_intf =
|
||||
static const k053247_interface bucky_k053247_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-48, 23,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
|
@ -21,7 +21,7 @@ Notes:
|
||||
#include "driver.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "deprecat.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/2151intf.h"
|
||||
@ -31,51 +31,9 @@ Notes:
|
||||
VIDEO_START( overdriv );
|
||||
VIDEO_UPDATE( overdriv );
|
||||
|
||||
|
||||
static READ16_HANDLER( K051316_0_msb_r )
|
||||
{
|
||||
return K051316_0_r(space,offset) << 8;
|
||||
}
|
||||
|
||||
static READ16_HANDLER( K051316_1_msb_r )
|
||||
{
|
||||
return K051316_1_r(space,offset) << 8;
|
||||
}
|
||||
|
||||
static READ16_HANDLER( K051316_rom_0_msb_r )
|
||||
{
|
||||
return K051316_rom_0_r(space,offset) << 8;
|
||||
}
|
||||
|
||||
static READ16_HANDLER( K051316_rom_1_msb_r )
|
||||
{
|
||||
return K051316_rom_1_r(space,offset) << 8;
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K051316_0_msb_w )
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K051316_0_w(space,offset,data >> 8);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K051316_1_msb_w )
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K051316_1_w(space,offset,data >> 8);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K051316_ctrl_0_msb_w )
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K051316_ctrl_0_w(space,offset,data >> 8);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K051316_ctrl_1_msb_w )
|
||||
{
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K051316_ctrl_1_w(space,offset,data >> 8);
|
||||
}
|
||||
|
||||
extern void overdriv_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask);
|
||||
extern void overdriv_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags);
|
||||
extern void overdriv_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags);
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
@ -137,18 +95,20 @@ static WRITE16_HANDLER( eeprom_w )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static INTERRUPT_GEN( cpuA_interrupt )
|
||||
{
|
||||
if (cpu_getiloops(device)) cpu_set_input_line(device, 5, HOLD_LINE);
|
||||
else cpu_set_input_line(device, 4, HOLD_LINE);
|
||||
if (cpu_getiloops(device))
|
||||
cpu_set_input_line(device, 5, HOLD_LINE);
|
||||
else
|
||||
cpu_set_input_line(device, 4, HOLD_LINE);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( cpuB_interrupt )
|
||||
{
|
||||
if (K053246_is_IRQ_enabled()) cpu_set_input_line(device, 4, HOLD_LINE);
|
||||
const device_config *k053246 = devtag_get_device(device->machine, "k053246");
|
||||
|
||||
if (k053246_is_irq_enabled(k053246))
|
||||
cpu_set_input_line(device, 4, HOLD_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -185,12 +145,13 @@ static READ16_HANDLER( cpuB_ctrl_r )
|
||||
|
||||
static WRITE16_HANDLER( cpuB_ctrl_w )
|
||||
{
|
||||
const device_config *k053246 = devtag_get_device(space->machine, "k053246");
|
||||
COMBINE_DATA(&cpuB_ctrl);
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0 = enable sprite ROM reading */
|
||||
K053246_set_OBJCHA_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k053246_set_objcha_line(k053246, (data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
/* bit 1 used but unknown (irq enable?) */
|
||||
|
||||
@ -232,19 +193,19 @@ static ADDRESS_MAP_START( overdriv_master_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x100000, 0x10001f) AM_WRITENOP /* 053252? (LSB) */
|
||||
AM_RANGE(0x140000, 0x140001) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("PADDLE")
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(K051316_ctrl_0_msb_w)
|
||||
AM_RANGE(0x1c8000, 0x1c801f) AM_WRITE(K051316_ctrl_1_msb_w)
|
||||
AM_RANGE(0x1d0000, 0x1d001f) AM_WRITE(K053251_msb_w)
|
||||
AM_RANGE(0x1c0000, 0x1c001f) AM_DEVWRITE8("k051316_1", k051316_ctrl_w, 0xff00)
|
||||
AM_RANGE(0x1c8000, 0x1c801f) AM_DEVWRITE8("k051316_2", k051316_ctrl_w, 0xff00)
|
||||
AM_RANGE(0x1d0000, 0x1d001f) AM_DEVWRITE("k053251", k053251_msb_w)
|
||||
AM_RANGE(0x1d8000, 0x1d8003) AM_DEVREADWRITE8("konami1", overdriv_sound_r, k053260_w, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x1e0000, 0x1e0003) AM_DEVREADWRITE8("konami2", overdriv_sound_r, k053260_w, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(overdriv_soundirq_w)
|
||||
AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, coin counter, start lamp, other? */
|
||||
AM_RANGE(0x1f8000, 0x1f8001) AM_WRITE(eeprom_w)
|
||||
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0x210000, 0x210fff) AM_READWRITE(K051316_0_msb_r,K051316_0_msb_w)
|
||||
AM_RANGE(0x218000, 0x218fff) AM_READWRITE(K051316_1_msb_r,K051316_1_msb_w)
|
||||
AM_RANGE(0x220000, 0x220fff) AM_READ(K051316_rom_0_msb_r)
|
||||
AM_RANGE(0x228000, 0x228fff) AM_READ(K051316_rom_1_msb_r)
|
||||
AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE8("k051316_1", k051316_r, k051316_w, 0xff00)
|
||||
AM_RANGE(0x218000, 0x218fff) AM_DEVREADWRITE8("k051316_2", k051316_r, k051316_w, 0xff00)
|
||||
AM_RANGE(0x220000, 0x220fff) AM_DEVREAD8("k051316_1", k051316_rom_r, 0xff00)
|
||||
AM_RANGE(0x228000, 0x228fff) AM_DEVREAD8("k051316_2", k051316_rom_r, 0xff00)
|
||||
AM_RANGE(0x230000, 0x230001) AM_WRITE(overdriv_cpuB_irq6_w)
|
||||
AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq5_w)
|
||||
ADDRESS_MAP_END
|
||||
@ -255,10 +216,10 @@ static ADDRESS_MAP_START( overdriv_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM
|
||||
AM_RANGE(0x100000, 0x10000f) AM_NOP // K053250 #0
|
||||
AM_RANGE(0x108000, 0x10800f) AM_NOP // K053250 #1
|
||||
AM_RANGE(0x118000, 0x118fff) AM_READWRITE(K053247_word_r,K053247_word_w)
|
||||
AM_RANGE(0x120000, 0x120001) AM_READ(K053246_word_r)
|
||||
AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_word_r, k053247_word_w)
|
||||
AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053246_word_r)
|
||||
AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r,cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */
|
||||
AM_RANGE(0x130000, 0x130007) AM_WRITE(K053246_word_w)
|
||||
AM_RANGE(0x130000, 0x130007) AM_DEVWRITE("k053246", k053246_word_w)
|
||||
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0x208000, 0x20bfff) AM_RAM
|
||||
AM_RANGE(0x218000, 0x219fff) AM_READNOP // K053250 #0 gfx ROM read (LSB)
|
||||
@ -304,7 +265,7 @@ static INPUT_PORTS_START( overdriv )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8,
|
||||
@ -320,7 +281,7 @@ static GFXDECODE_START( overdriv )
|
||||
GFXDECODE_ENTRY( "gfx4", 0, charlayout, 0, 0x80 )
|
||||
GFXDECODE_ENTRY( "gfx5", 0, charlayout, 0, 0x80 )
|
||||
GFXDECODE_END
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
static const k053260_interface k053260_config =
|
||||
@ -328,6 +289,31 @@ static const k053260_interface k053260_config =
|
||||
"shared"
|
||||
};
|
||||
|
||||
static const k053247_interface overdriv_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
77, 22,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
overdriv_sprite_callback
|
||||
};
|
||||
|
||||
static const k051316_interface overdriv_k051316_intf_1 =
|
||||
{
|
||||
"gfx2", 1,
|
||||
4, TRUE, 0,
|
||||
1, 14, -1,
|
||||
overdriv_zoom_callback_0
|
||||
};
|
||||
|
||||
static const k051316_interface overdriv_k051316_intf_2 =
|
||||
{
|
||||
"gfx3", 2,
|
||||
4, FALSE, 0,
|
||||
0, 15, 1,
|
||||
overdriv_zoom_callback_1
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( overdriv )
|
||||
@ -362,12 +348,17 @@ static MACHINE_DRIVER_START( overdriv )
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 )
|
||||
|
||||
MDRV_GFXDECODE(overdriv)
|
||||
// MDRV_GFXDECODE(overdriv)
|
||||
MDRV_PALETTE_LENGTH(2048)
|
||||
|
||||
MDRV_VIDEO_START(overdriv)
|
||||
MDRV_VIDEO_UPDATE(overdriv)
|
||||
|
||||
MDRV_K053246_ADD("k053246", overdriv_k053246_intf)
|
||||
MDRV_K051316_ADD("k051316_1", overdriv_k051316_intf_1)
|
||||
MDRV_K051316_ADD("k051316_2", overdriv_k051316_intf_2)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -433,10 +424,4 @@ ROM_START( overdriv )
|
||||
ROM_END
|
||||
|
||||
|
||||
static DRIVER_INIT( overdriv )
|
||||
{
|
||||
konami_rom_deinterleave_4(machine, "gfx1");
|
||||
}
|
||||
|
||||
|
||||
GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv, ROT90, "Konami", "Over Drive", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING, layout_overdriv )
|
||||
GAMEL( 1990, overdriv, 0, overdriv, overdriv, 0, ROT90, "Konami", "Over Drive", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING, layout_overdriv )
|
||||
|
@ -237,7 +237,7 @@ INPUT_PORTS_END
|
||||
|
||||
static const k052109_interface parodius_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
parodius_tile_callback
|
||||
@ -245,7 +245,7 @@ static const k052109_interface parodius_k052109_intf =
|
||||
|
||||
static const k05324x_interface parodius_k05324x_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
0, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
|
@ -264,7 +264,7 @@ static INTERRUPT_GEN( simpsons_irq )
|
||||
|
||||
static const k052109_interface simpsons_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
simpsons_tile_callback
|
||||
@ -273,7 +273,7 @@ static const k052109_interface simpsons_k052109_intf =
|
||||
static const k053247_interface simpsons_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
53, 23,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
|
@ -615,7 +615,7 @@ static const k007232_interface k007232_config =
|
||||
|
||||
static const k052109_interface thunderx_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
thunderx_tile_callback
|
||||
@ -623,7 +623,7 @@ static const k052109_interface thunderx_k052109_intf =
|
||||
|
||||
static const k051960_interface thunderx_k051960_intf =
|
||||
{
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
thunderx_sprite_callback
|
||||
|
@ -452,7 +452,7 @@ static INTERRUPT_GEN( vendetta_irq )
|
||||
|
||||
static const k052109_interface vendetta_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
vendetta_tile_callback
|
||||
@ -460,7 +460,7 @@ static const k052109_interface vendetta_k052109_intf =
|
||||
|
||||
static const k052109_interface esckids_k052109_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
esckids_tile_callback
|
||||
@ -469,7 +469,7 @@ static const k052109_interface esckids_k052109_intf =
|
||||
static const k053247_interface vendetta_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
53, 6,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
@ -479,7 +479,7 @@ static const k053247_interface vendetta_k053246_intf =
|
||||
static const k053247_interface esckids_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
101, 6,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
|
@ -478,7 +478,7 @@ static const k053250_interface xexex_k053250_intf =
|
||||
|
||||
static const k056832_interface xexex_k056832_intf =
|
||||
{
|
||||
"gfx1",
|
||||
"gfx1", 0,
|
||||
K056832_BPP_4,
|
||||
1, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
@ -488,7 +488,7 @@ static const k056832_interface xexex_k056832_intf =
|
||||
static const k053247_interface xexex_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-48, 32,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/konami/konami.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "sound/k053260.h"
|
||||
@ -85,15 +85,18 @@ WRITE8_HANDLER( simpsons_eeprom_w )
|
||||
|
||||
WRITE8_HANDLER( simpsons_coin_counter_w )
|
||||
{
|
||||
const device_config *k053246 = devtag_get_device(space->machine, "k053246");
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
/* bit 0,1 coin counters */
|
||||
coin_counter_w(space->machine, 0,data & 0x01);
|
||||
coin_counter_w(space->machine, 1,data & 0x02);
|
||||
/* bit 2 selects mono or stereo sound */
|
||||
/* bit 3 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
|
||||
/* bit 4 = INIT (unknown) */
|
||||
/* bit 5 = enable sprite ROM reading */
|
||||
K053246_set_OBJCHA_line((~data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k053246_set_objcha_line(k053246, (~data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
READ8_HANDLER( simpsons_sound_interrupt_r )
|
||||
|
@ -2640,7 +2640,6 @@ static DEVICE_START( k052109 )
|
||||
k052109_state *k052109 = k052109_get_safe_token(device);
|
||||
const k052109_interface *intf = k052109_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
int gfx_index;
|
||||
UINT32 total;
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
@ -2664,23 +2663,17 @@ static DEVICE_START( k052109 )
|
||||
};
|
||||
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
/* decode the graphics */
|
||||
switch (intf->plane_order)
|
||||
{
|
||||
case NORMAL_PLANE_ORDER:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 32;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout, 4);
|
||||
break;
|
||||
|
||||
case GRADIUS3_PLANE_ORDER:
|
||||
total = 0x1000;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout_gradius3, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout_gradius3, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2691,7 +2684,7 @@ static DEVICE_START( k052109 )
|
||||
deinterleave_gfx(machine, intf->gfx_memory_region, intf->deinterleave);
|
||||
|
||||
k052109->memory_region = intf->gfx_memory_region;
|
||||
k052109->gfxnum = gfx_index;
|
||||
k052109->gfxnum = intf->gfx_num;
|
||||
k052109->callback = intf->callback;
|
||||
|
||||
k052109->tilemap[0] = tilemap_create_device(device, k052109_get_tile_info0, tilemap_scan_rows, 8, 8, 64, 32);
|
||||
@ -3179,7 +3172,6 @@ static DEVICE_START( k051960 )
|
||||
k051960_state *k051960 = k051960_get_safe_token(device);
|
||||
const k051960_interface *intf = k051960_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
int gfx_index;
|
||||
UINT32 total;
|
||||
static const gfx_layout spritelayout =
|
||||
{
|
||||
@ -3218,29 +3210,22 @@ static DEVICE_START( k051960 )
|
||||
128*8
|
||||
};
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
/* decode the graphics */
|
||||
switch (intf->plane_order)
|
||||
{
|
||||
case NORMAL_PLANE_ORDER:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 128;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
break;
|
||||
|
||||
case REVERSE_PLANE_ORDER:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 128;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &spritelayout_reverse, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &spritelayout_reverse, 4);
|
||||
break;
|
||||
|
||||
case GRADIUS3_PLANE_ORDER:
|
||||
total = 0x4000;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &spritelayout_gradius3, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &spritelayout_gradius3, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -3254,7 +3239,7 @@ static DEVICE_START( k051960 )
|
||||
deinterleave_gfx(machine, intf->gfx_memory_region, intf->deinterleave);
|
||||
|
||||
k051960->memory_region = intf->gfx_memory_region;
|
||||
k051960->gfx = machine->gfx[gfx_index];
|
||||
k051960->gfx = machine->gfx[intf->gfx_num];
|
||||
k051960->callback = intf->callback;
|
||||
k051960->ram = auto_alloc_array_clear(machine, UINT8, 0x400);
|
||||
|
||||
@ -4041,7 +4026,6 @@ static DEVICE_START( k05324x )
|
||||
k05324x_state *k05324x = k05324x_get_safe_token(device);
|
||||
const k05324x_interface *intf = k05324x_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
int gfx_index;
|
||||
UINT32 total;
|
||||
static const gfx_layout spritelayout =
|
||||
{
|
||||
@ -4056,19 +4040,12 @@ static DEVICE_START( k05324x )
|
||||
128*8
|
||||
};
|
||||
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
/* decode the graphics */
|
||||
switch (intf->plane_order)
|
||||
{
|
||||
case NORMAL_PLANE_ORDER:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 128;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -4084,7 +4061,7 @@ static DEVICE_START( k05324x )
|
||||
k05324x->ramsize = 0x800;
|
||||
|
||||
k05324x->memory_region = intf->gfx_memory_region;
|
||||
k05324x->gfx = machine->gfx[gfx_index];
|
||||
k05324x->gfx = machine->gfx[intf->gfx_num];
|
||||
k05324x->dx = intf->dx;
|
||||
k05324x->dy = intf->dy;
|
||||
k05324x->callback = intf->callback;
|
||||
@ -4870,8 +4847,6 @@ static DEVICE_START( k053247 )
|
||||
k053247_state *k053247 = k053247_get_safe_token(device);
|
||||
const k053247_interface *intf = k053247_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
|
||||
int gfx_index;
|
||||
UINT32 total;
|
||||
static const gfx_layout spritelayout =
|
||||
{
|
||||
@ -4888,19 +4863,12 @@ static DEVICE_START( k053247 )
|
||||
|
||||
k053247->screen = devtag_get_device(device->machine, intf->screen);
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
|
||||
/* decode the graphics */
|
||||
switch (intf->plane_order)
|
||||
{
|
||||
case NORMAL_PLANE_ORDER:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 128;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &spritelayout, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -4927,7 +4895,7 @@ static DEVICE_START( k053247 )
|
||||
k053247->dx = intf->dx;
|
||||
k053247->dy = intf->dy;
|
||||
k053247->memory_region = intf->gfx_memory_region;
|
||||
k053247->gfx = machine->gfx[gfx_index];
|
||||
k053247->gfx = machine->gfx[intf->gfx_num];
|
||||
k053247->callback = intf->callback;
|
||||
|
||||
k053247->ram = auto_alloc_array(machine, UINT16, 0x1000/2);
|
||||
@ -4946,8 +4914,6 @@ static DEVICE_START( k055673 )
|
||||
k053247_state *k053247 = k053247_get_safe_token(device);
|
||||
const k053247_interface *intf = k053247_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
|
||||
int gfx_index;
|
||||
UINT32 total;
|
||||
UINT8 *s1, *s2, *d;
|
||||
long i;
|
||||
@ -4998,12 +4964,6 @@ static DEVICE_START( k055673 )
|
||||
16*16*6
|
||||
};
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
K055673_rom = (UINT16 *)memory_region(machine, intf->gfx_memory_region);
|
||||
|
||||
/* decode the graphics */
|
||||
@ -5028,22 +4988,22 @@ static DEVICE_START( k055673 )
|
||||
}
|
||||
|
||||
total = size4 / 128;
|
||||
decode_gfx(machine, gfx_index, (UINT8 *)K055673_rom, total, &spritelayout, 4);
|
||||
decode_gfx(machine, intf->gfx_num, (UINT8 *)K055673_rom, total, &spritelayout, 4);
|
||||
break;
|
||||
|
||||
case K055673_LAYOUT_RNG:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (16 * 16 / 2);
|
||||
decode_gfx(machine, gfx_index, (UINT8 *)K055673_rom, total, &spritelayout2, 4);
|
||||
decode_gfx(machine, intf->gfx_num, (UINT8 *)K055673_rom, total, &spritelayout2, 4);
|
||||
break;
|
||||
|
||||
case K055673_LAYOUT_LE2:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (16 * 16);
|
||||
decode_gfx(machine, gfx_index, (UINT8 *)K055673_rom, total, &spritelayout3, 4);
|
||||
decode_gfx(machine, intf->gfx_num, (UINT8 *)K055673_rom, total, &spritelayout3, 4);
|
||||
break;
|
||||
|
||||
case K055673_LAYOUT_GX6:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (16 * 16 * 6 / 8);
|
||||
decode_gfx(machine, gfx_index, (UINT8 *)K055673_rom, total, &spritelayout4, 4);
|
||||
decode_gfx(machine, intf->gfx_num, (UINT8 *)K055673_rom, total, &spritelayout4, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -5056,7 +5016,7 @@ static DEVICE_START( k055673 )
|
||||
k053247->dx = intf->dx;
|
||||
k053247->dy = intf->dy;
|
||||
k053247->memory_region = intf->gfx_memory_region;
|
||||
k053247->gfx = machine->gfx[gfx_index];
|
||||
k053247->gfx = machine->gfx[intf->gfx_num];
|
||||
k053247->callback = intf->callback;
|
||||
|
||||
k053247->ram = auto_alloc_array(machine, UINT16, 0x1000 / 2);
|
||||
@ -5285,7 +5245,7 @@ static DEVICE_START( k051316 )
|
||||
const k051316_interface *intf = k051316_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
|
||||
int gfx_index, is_tail2nos = 0;
|
||||
int is_tail2nos = 0;
|
||||
UINT32 total;
|
||||
|
||||
static const gfx_layout charlayout4 =
|
||||
@ -5340,34 +5300,28 @@ static DEVICE_START( k051316 )
|
||||
128*8
|
||||
};
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
if (machine->gfx[gfx_index] == 0)
|
||||
break;
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
/* decode the graphics */
|
||||
switch (intf->bpp)
|
||||
{
|
||||
case -4:
|
||||
total = 0x400;
|
||||
is_tail2nos = 1;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout_tail2nos, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout_tail2nos, 4);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 128;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout4, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout4, 4);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 256;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout7, 7);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout7, 7);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / 256;
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout8, 8);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout8, 8);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -5375,7 +5329,7 @@ static DEVICE_START( k051316 )
|
||||
}
|
||||
|
||||
k051316->memory_region = intf->gfx_memory_region;
|
||||
k051316->gfxnum = gfx_index;
|
||||
k051316->gfxnum = intf->gfx_num;
|
||||
k051316->bpp = is_tail2nos ? 4 : intf->bpp; // tail2nos is passed with bpp = -4 to setup the custom charlayout!
|
||||
k051316->callback = intf->callback;
|
||||
|
||||
@ -7784,7 +7738,6 @@ static DEVICE_START( k056832 )
|
||||
const k056832_interface *intf = k056832_get_interface(device);
|
||||
running_machine *machine = device->machine;
|
||||
tilemap *tmap;
|
||||
int gfx_index;
|
||||
int i;
|
||||
UINT32 total;
|
||||
static const gfx_layout charlayout8 =
|
||||
@ -7850,15 +7803,6 @@ static DEVICE_START( k056832 )
|
||||
};
|
||||
|
||||
|
||||
/* find first empty slot to decode gfx */
|
||||
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
|
||||
{
|
||||
if (machine->gfx[gfx_index] == 0) break;
|
||||
}
|
||||
|
||||
assert(gfx_index != MAX_GFX_ELEMENTS);
|
||||
|
||||
|
||||
/* handle the various graphics formats */
|
||||
i = (intf->big) ? 8 : 16;
|
||||
|
||||
@ -7868,45 +7812,45 @@ static DEVICE_START( k056832 )
|
||||
{
|
||||
case K056832_BPP_4:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 4);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout4, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout4, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_5:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 5);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout5, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout5, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_6:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 6);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout6, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout6, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_8:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 8);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout8, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout8, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_8LE:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 8);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout8le, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout8le, 4);
|
||||
break;
|
||||
|
||||
case K056832_BPP_4dj:
|
||||
total = memory_region_length(machine, intf->gfx_memory_region) / (i * 4);
|
||||
decode_gfx(machine, gfx_index, memory_region(machine, intf->gfx_memory_region), total, &charlayout4dj, 4);
|
||||
decode_gfx(machine, intf->gfx_num, memory_region(machine, intf->gfx_memory_region), total, &charlayout4dj, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatalerror("Unsupported bpp");
|
||||
}
|
||||
|
||||
machine->gfx[gfx_index]->color_granularity = 16; /* override */
|
||||
machine->gfx[intf->gfx_num]->color_granularity = 16; /* override */
|
||||
|
||||
/* deinterleave the graphics, if needed */
|
||||
deinterleave_gfx(machine, intf->gfx_memory_region, intf->deinterleave);
|
||||
|
||||
k056832->memory_region = intf->gfx_memory_region;
|
||||
k056832->gfxnum = gfx_index;
|
||||
k056832->gfxnum = intf->gfx_num;
|
||||
k056832->callback = intf->callback;
|
||||
|
||||
k056832->rombase = memory_region(machine, intf->gfx_memory_region);
|
||||
@ -8951,8 +8895,8 @@ static DEVICE_START( k053250 )
|
||||
k053250_state *k053250 = k053250_get_safe_token(device);
|
||||
const k053250_interface *intf = k053250_get_interface(device);
|
||||
|
||||
k053250->base = memory_region(device->machine, intf->region);
|
||||
k053250->rommask = memory_region_length(device->machine, intf->region);
|
||||
k053250->base = memory_region(device->machine, intf->gfx_memory_region);
|
||||
k053250->rommask = memory_region_length(device->machine, intf->gfx_memory_region);
|
||||
|
||||
k053250->screen = devtag_get_device(device->machine, intf->screen);
|
||||
|
||||
@ -8966,7 +8910,7 @@ static DEVICE_START( k053250 )
|
||||
k053250->offsy = intf->yoff;
|
||||
|
||||
/* unpack graphics */
|
||||
k053250_unpack_pixels(device->machine, intf->region);
|
||||
k053250_unpack_pixels(device->machine, intf->gfx_memory_region);
|
||||
|
||||
state_save_register_device_item_pointer(device, 0, k053250->ram, 0x6000 / 2);
|
||||
state_save_register_device_item_array(device, 0, k053250->regs);
|
||||
|
@ -40,6 +40,7 @@ typedef struct _k052109_interface k052109_interface;
|
||||
struct _k052109_interface
|
||||
{
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int plane_order;
|
||||
int deinterleave;
|
||||
k052109_callback callback;
|
||||
@ -49,6 +50,7 @@ typedef struct _k051960_interface k051960_interface;
|
||||
struct _k051960_interface
|
||||
{
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int plane_order;
|
||||
int deinterleave;
|
||||
k051960_callback callback;
|
||||
@ -58,6 +60,7 @@ typedef struct _k05324x_interface k05324x_interface;
|
||||
struct _k05324x_interface
|
||||
{
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int plane_order;
|
||||
int dx, dy;
|
||||
int deinterleave;
|
||||
@ -69,6 +72,7 @@ struct _k053247_interface
|
||||
{
|
||||
const char *screen;
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int plane_order;
|
||||
int dx, dy;
|
||||
int deinterleave;
|
||||
@ -79,6 +83,7 @@ typedef struct _k051316_interface k051316_interface;
|
||||
struct _k051316_interface
|
||||
{
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int bpp, pen_is_mask, transparent_pen;
|
||||
int wrap, xoffs, yoffs;
|
||||
k051316_callback callback;
|
||||
@ -94,7 +99,8 @@ struct _k053936_interface
|
||||
typedef struct _k056832_interface k056832_interface;
|
||||
struct _k056832_interface
|
||||
{
|
||||
const char *gfx_memory_region;
|
||||
const char *gfx_memory_region;
|
||||
int gfx_num;
|
||||
int bpp;
|
||||
int big;
|
||||
int djmain_hack;
|
||||
@ -116,7 +122,7 @@ typedef struct _k053250_interface k053250_interface;
|
||||
struct _k053250_interface
|
||||
{
|
||||
const char *screen;
|
||||
const char *region;
|
||||
const char *gfx_memory_region;
|
||||
int xoff, yoff;
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
|
||||
static int zoom_colorbase[2],road_colorbase[2],sprite_colorbase;
|
||||
@ -11,7 +11,7 @@ static int zoom_colorbase[2],road_colorbase[2],sprite_colorbase;
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void overdriv_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
void overdriv_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask)
|
||||
{
|
||||
int pri = (*color & 0xffe0) >> 5; /* ??????? */
|
||||
if (pri) *priority_mask = 0x02;
|
||||
@ -27,14 +27,14 @@ static void overdriv_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void zoom_callback_0(int *code,int *color,int *flags)
|
||||
void overdriv_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
||||
*code |= ((*color & 0x03) << 8);
|
||||
*color = zoom_colorbase[0] + ((*color & 0x3c) >> 2);
|
||||
}
|
||||
|
||||
static void zoom_callback_1(int *code,int *color,int *flags)
|
||||
void overdriv_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*flags = (*color & 0x40) ? TILE_FLIPX : 0;
|
||||
*code |= ((*color & 0x03) << 8);
|
||||
@ -51,14 +51,17 @@ static void zoom_callback_1(int *code,int *color,int *flags)
|
||||
|
||||
VIDEO_START( overdriv )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K051316_vh_start_0(machine,"gfx2",4,TRUE,0,zoom_callback_0);
|
||||
K051316_vh_start_1(machine,"gfx3",4,FALSE,0,zoom_callback_1);
|
||||
K053247_vh_start(machine,"gfx1",77,22,NORMAL_PLANE_ORDER,overdriv_sprite_callback);
|
||||
// const device_config *k051316_1 = devtag_get_device(machine, "k051316_1");
|
||||
// const device_config *k051316_2 = devtag_get_device(machine, "k051316_2");
|
||||
|
||||
K051316_wraparound_enable(0,1);
|
||||
K051316_set_offset(0,14,-1);
|
||||
K051316_set_offset(1,15,0);
|
||||
// K053251_vh_start(machine);
|
||||
// K051316_vh_start_0(machine,"gfx2",4,TRUE,0,zoom_callback_0);
|
||||
// K051316_vh_start_1(machine,"gfx3",4,FALSE,0,zoom_callback_1);
|
||||
// K053247_vh_start(machine,"gfx1",77,22,NORMAL_PLANE_ORDER,overdriv_sprite_callback);
|
||||
|
||||
// k051316_wraparound_enable(k051316_1, 1);
|
||||
// k051316_set_offset(k051316_1, 14, -1);
|
||||
// k051316_set_offset(k051316_2, 15, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -71,17 +74,22 @@ VIDEO_START( overdriv )
|
||||
|
||||
VIDEO_UPDATE( overdriv )
|
||||
{
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
road_colorbase[1] = K053251_get_palette_index(K053251_CI1);
|
||||
road_colorbase[0] = K053251_get_palette_index(K053251_CI2);
|
||||
zoom_colorbase[1] = K053251_get_palette_index(K053251_CI3);
|
||||
zoom_colorbase[0] = K053251_get_palette_index(K053251_CI4);
|
||||
const device_config *k051316_1 = devtag_get_device(screen->machine, "k051316_1");
|
||||
const device_config *k051316_2 = devtag_get_device(screen->machine, "k051316_2");
|
||||
const device_config *k053246 = devtag_get_device(screen->machine, "k053246");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
road_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
road_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
zoom_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
zoom_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
|
||||
K051316_zoom_draw_0(bitmap,cliprect,0,0);
|
||||
K051316_zoom_draw_1(bitmap,cliprect,0,1);
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
|
||||
K053247_sprites_draw(screen->machine, bitmap,cliprect);
|
||||
k051316_zoom_draw(k051316_1, bitmap, cliprect, 0, 0);
|
||||
k051316_zoom_draw(k051316_2, bitmap, cliprect, 0, 1);
|
||||
|
||||
k053247_sprites_draw(k053246, bitmap,cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user