mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
Updated dbz.c, lethal.c, metro.c, rungun.c, tail2nos.c, tmnt.c, ultraman.c, wecleman.c, xmen.c & zr107.c to use Konami video devices instead of konamiic.h code
This commit is contained in:
parent
1becf25fd5
commit
8b75692d5c
@ -53,7 +53,7 @@ Notes:
|
||||
#include "driver.h"
|
||||
#include "deprecat.h"
|
||||
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2151intf.h"
|
||||
@ -72,8 +72,14 @@ static int dbz_control;
|
||||
VIDEO_START(dbz);
|
||||
VIDEO_UPDATE(dbz);
|
||||
|
||||
extern void dbz_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask);
|
||||
extern void dbz_tile_callback(running_machine *machine, int layer, int *code, int *color, int *flags);
|
||||
|
||||
|
||||
static INTERRUPT_GEN( dbz_interrupt )
|
||||
{
|
||||
const device_config *k053246 = devtag_get_device(device->machine, "k053246");
|
||||
|
||||
switch (cpu_getiloops(device))
|
||||
{
|
||||
case 0:
|
||||
@ -81,7 +87,7 @@ static INTERRUPT_GEN( dbz_interrupt )
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (K053246_is_IRQ_enabled())
|
||||
if (k053246_is_irq_enabled(k053246))
|
||||
cpu_set_input_line(device, M68K_IRQ_4, HOLD_LINE);
|
||||
break;
|
||||
}
|
||||
@ -96,17 +102,18 @@ static READ16_HANDLER( dbzcontrol_r )
|
||||
|
||||
static WRITE16_HANDLER( dbzcontrol_w )
|
||||
{
|
||||
const device_config *k053246 = devtag_get_device(space->machine, "k053246");
|
||||
/* bit 10 = enable '246 readback */
|
||||
|
||||
COMBINE_DATA(&dbz_control);
|
||||
|
||||
if (data & 0x400)
|
||||
{
|
||||
K053246_set_OBJCHA_line(ASSERT_LINE);
|
||||
k053246_set_objcha_line(k053246, ASSERT_LINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
K053246_set_OBJCHA_line(CLEAR_LINE);
|
||||
k053246_set_objcha_line(k053246, CLEAR_LINE);
|
||||
}
|
||||
|
||||
coin_counter_w(space->machine, 0, data & 1);
|
||||
@ -134,19 +141,19 @@ static void dbz_sound_irq(const device_config *device, int irq)
|
||||
static ADDRESS_MAP_START( dbz_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x480000, 0x48ffff) AM_RAM
|
||||
AM_RANGE(0x490000, 0x491fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w) // '157 RAM is mirrored twice
|
||||
AM_RANGE(0x492000, 0x493fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w)
|
||||
AM_RANGE(0x498000, 0x49ffff) AM_READ(K056832_rom_word_8000_r) // code near a60 in dbz2, subroutine at 730 in dbz
|
||||
AM_RANGE(0x4a0000, 0x4a0fff) AM_READWRITE(K053247_word_r, K053247_word_w)
|
||||
AM_RANGE(0x490000, 0x491fff) AM_DEVREADWRITE("k056832", k056832_ram_word_r, k056832_ram_word_w) // '157 RAM is mirrored twice
|
||||
AM_RANGE(0x492000, 0x493fff) AM_DEVREADWRITE("k056832", k056832_ram_word_r, k056832_ram_word_w)
|
||||
AM_RANGE(0x498000, 0x49ffff) AM_DEVREAD("k056832", k056832_rom_word_8000_r) // code near a60 in dbz2, subroutine at 730 in dbz
|
||||
AM_RANGE(0x4a0000, 0x4a0fff) AM_DEVREADWRITE("k053246", k053247_word_r, k053247_word_w)
|
||||
AM_RANGE(0x4a1000, 0x4a3fff) AM_RAM
|
||||
AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // palette
|
||||
AM_RANGE(0x4c0000, 0x4c0001) AM_READ(K053246_word_r)
|
||||
AM_RANGE(0x4c0000, 0x4c0007) AM_WRITE(K053246_word_w)
|
||||
AM_RANGE(0x4c4000, 0x4c4007) AM_WRITE(K053246_word_w)
|
||||
AM_RANGE(0x4c8000, 0x4c8007) AM_WRITE(K056832_b_word_w)
|
||||
AM_RANGE(0x4cc000, 0x4cc03f) AM_WRITE(K056832_word_w)
|
||||
AM_RANGE(0x4d0000, 0x4d001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)
|
||||
AM_RANGE(0x4d4000, 0x4d401f) AM_WRITEONLY AM_BASE(&K053936_1_ctrl)
|
||||
AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREAD("k053246", k053246_word_r)
|
||||
AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE("k053246", k053246_word_w)
|
||||
AM_RANGE(0x4c4000, 0x4c4007) AM_DEVWRITE("k053246", k053246_word_w)
|
||||
AM_RANGE(0x4c8000, 0x4c8007) AM_DEVWRITE("k056832", k056832_b_word_w)
|
||||
AM_RANGE(0x4cc000, 0x4cc03f) AM_DEVWRITE("k056832", k056832_word_w)
|
||||
AM_RANGE(0x4d0000, 0x4d001f) AM_DEVWRITE("k053936_1", k053936_ctrl_w)
|
||||
AM_RANGE(0x4d4000, 0x4d401f) AM_DEVWRITE("k053936_2", k053936_ctrl_w)
|
||||
AM_RANGE(0x4e0000, 0x4e0001) AM_READ_PORT("P1_P2")
|
||||
AM_RANGE(0x4e0002, 0x4e0003) AM_READ_PORT("SYSTEM_DSW1")
|
||||
AM_RANGE(0x4e4000, 0x4e4001) AM_READ_PORT("DSW2")
|
||||
@ -155,12 +162,12 @@ static ADDRESS_MAP_START( dbz_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x4f0000, 0x4f0001) AM_WRITE(dbz_sound_command_w)
|
||||
AM_RANGE(0x4f4000, 0x4f4001) AM_WRITE(dbz_sound_cause_nmi)
|
||||
AM_RANGE(0x4f8000, 0x4f801f) AM_WRITENOP // 251 #1
|
||||
AM_RANGE(0x4fc000, 0x4fc01f) AM_WRITE(K053251_lsb_w) // 251 #2
|
||||
AM_RANGE(0x4fc000, 0x4fc01f) AM_DEVWRITE("k053251", k053251_lsb_w) // 251 #2
|
||||
|
||||
AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(dbz_bg2_videoram_w) AM_BASE(&dbz_bg2_videoram)
|
||||
AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(dbz_bg1_videoram_w) AM_BASE(&dbz_bg1_videoram)
|
||||
AM_RANGE(0x510000, 0x513fff) AM_RAM AM_BASE(&K053936_0_linectrl) // ?? guess, it might not be
|
||||
AM_RANGE(0x518000, 0x51bfff) AM_RAM AM_BASE(&K053936_1_linectrl) // ?? guess, it might not be
|
||||
AM_RANGE(0x510000, 0x513fff) AM_DEVREADWRITE("k053936_1", k053936_linectrl_r, k053936_linectrl_w) // ?? guess, it might not be
|
||||
AM_RANGE(0x518000, 0x51bfff) AM_DEVREADWRITE("k053936_2", k053936_linectrl_r, k053936_linectrl_w) // ?? guess, it might not be
|
||||
AM_RANGE(0x600000, 0x6fffff) AM_READNOP // PSAC 1 ROM readback window
|
||||
AM_RANGE(0x700000, 0x7fffff) AM_READNOP // PSAC 2 ROM readback window
|
||||
ADDRESS_MAP_END
|
||||
@ -318,6 +325,32 @@ GFXDECODE_END
|
||||
|
||||
/**********************************************************************************/
|
||||
|
||||
static const k056832_interface dbz_k056832_intf =
|
||||
{
|
||||
"gfx1", 2,
|
||||
K056832_BPP_4,
|
||||
1, 1,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
dbz_tile_callback, "none"
|
||||
};
|
||||
|
||||
static const k053247_interface dbz_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2", 3,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-52, 16,
|
||||
KONAMI_ROM_DEINTERLEAVE_NONE,
|
||||
dbz_sprite_callback
|
||||
};
|
||||
|
||||
/* both k053936 use the same wrap/offs */
|
||||
static const k053936_interface dbz_k053936_intf =
|
||||
{
|
||||
1, -46, -16
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( dbz )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -345,6 +378,12 @@ static MACHINE_DRIVER_START( dbz )
|
||||
MDRV_VIDEO_UPDATE(dbz)
|
||||
MDRV_PALETTE_LENGTH(0x4000/2)
|
||||
|
||||
MDRV_K056832_ADD("k056832", dbz_k056832_intf)
|
||||
MDRV_K053246_ADD("k053246", dbz_k053246_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
MDRV_K053936_ADD("k053936_1", dbz_k053936_intf)
|
||||
MDRV_K053936_ADD("k053936_2", dbz_k053936_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -441,8 +480,6 @@ static DRIVER_INIT( dbz )
|
||||
{
|
||||
UINT16 *ROM;
|
||||
|
||||
konami_rom_deinterleave_2(machine, "gfx1");
|
||||
|
||||
ROM = (UINT16 *)memory_region(machine, "maincpu");
|
||||
|
||||
// nop out dbz1's mask rom test
|
||||
@ -460,10 +497,5 @@ static DRIVER_INIT( dbz )
|
||||
ROM[0x990/2] = 0x4e71;
|
||||
}
|
||||
|
||||
static DRIVER_INIT( dbz2 )
|
||||
{
|
||||
konami_rom_deinterleave_2(machine, "gfx1");
|
||||
}
|
||||
|
||||
GAME( 1993, dbz, 0, dbz, dbz, dbz, ROT0, "Banpresto", "Dragonball Z", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, dbz2, 0, dbz, dbz2, dbz2, ROT0, "Banpresto", "Dragonball Z 2 - Super Battle", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, dbz2, 0, dbz, dbz2, 0, ROT0, "Banpresto", "Dragonball Z 2 - Super Battle", GAME_IMPERFECT_GRAPHICS )
|
||||
|
@ -165,7 +165,7 @@ maybe some priority issues / sprite placement issues..
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "cpu/hd6309/hd6309.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
@ -186,6 +186,9 @@ VIDEO_START(lethalen);
|
||||
VIDEO_UPDATE(lethalen);
|
||||
WRITE8_HANDLER(lethalen_palette_control);
|
||||
|
||||
extern void lethalen_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask);
|
||||
extern void lethalen_tile_callback(running_machine *machine, int layer, int *code, int *color, int *flags);
|
||||
|
||||
static int init_eeprom_count;
|
||||
static UINT8 cur_control2;
|
||||
|
||||
@ -249,7 +252,10 @@ static WRITE8_HANDLER( control2_w )
|
||||
|
||||
static INTERRUPT_GEN(lethalen_interrupt)
|
||||
{
|
||||
if (K056832_is_IRQ_enabled(0)) cpu_set_input_line(device, HD6309_IRQ_LINE, HOLD_LINE);
|
||||
const device_config *k056832 = devtag_get_device(device->machine, "k056832");
|
||||
|
||||
if (k056832_is_irq_enabled(k056832, 0))
|
||||
cpu_set_input_line(device, HD6309_IRQ_LINE, HOLD_LINE);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( sound_cmd_w )
|
||||
@ -281,6 +287,10 @@ static WRITE8_HANDLER( le_bankswitch_w )
|
||||
|
||||
static READ8_HANDLER( le_4800_r )
|
||||
{
|
||||
const device_config *k056832 = devtag_get_device(space->machine, "k056832");
|
||||
const device_config *k053244 = devtag_get_device(space->machine, "k053244");
|
||||
const device_config *k054000 = devtag_get_device(space->machine, "k054000");
|
||||
|
||||
if (cur_control2 & 0x10) // RAM enable
|
||||
{
|
||||
return space->machine->generic.paletteram.u8[offset];
|
||||
@ -298,7 +308,7 @@ static READ8_HANDLER( le_4800_r )
|
||||
case 0x44:
|
||||
case 0x45:
|
||||
case 0x46:
|
||||
return K053244_r(space,offset-0x40);
|
||||
return k053244_r(k053244, offset - 0x40);
|
||||
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
@ -332,22 +342,22 @@ static READ8_HANDLER( le_4800_r )
|
||||
case 0x9d:
|
||||
case 0x9e:
|
||||
case 0x9f:
|
||||
return K054000_r(space,offset-0x80);
|
||||
return k054000_r(k054000, offset - 0x80);
|
||||
|
||||
case 0xca:
|
||||
return sound_status_r(space,0);
|
||||
return sound_status_r(space, 0);
|
||||
}
|
||||
}
|
||||
else if (offset < 0x1800)
|
||||
return K053245_r(space,(offset - 0x0800) & 0x07ff);
|
||||
return k053245_r(k053244, (offset - 0x0800) & 0x07ff);
|
||||
else if (offset < 0x2000)
|
||||
return K056832_ram_code_lo_r(space,offset - 0x1800);
|
||||
return k056832_ram_code_lo_r(k056832, offset - 0x1800);
|
||||
else if (offset < 0x2800)
|
||||
return K056832_ram_code_hi_r(space,offset - 0x2000);
|
||||
return k056832_ram_code_hi_r(k056832, offset - 0x2000);
|
||||
else if (offset < 0x3000)
|
||||
return K056832_ram_attr_lo_r(space,offset - 0x2800);
|
||||
return k056832_ram_attr_lo_r(k056832, offset - 0x2800);
|
||||
else // (offset < 0x3800)
|
||||
return K056832_ram_attr_hi_r(space,offset - 0x3000);
|
||||
return k056832_ram_attr_hi_r(k056832, offset - 0x3000);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -355,6 +365,10 @@ static READ8_HANDLER( le_4800_r )
|
||||
|
||||
static WRITE8_HANDLER( le_4800_w )
|
||||
{
|
||||
const device_config *k056832 = devtag_get_device(space->machine, "k056832");
|
||||
const device_config *k053244 = devtag_get_device(space->machine, "k053244");
|
||||
const device_config *k054000 = devtag_get_device(space->machine, "k054000");
|
||||
|
||||
if (cur_control2 & 0x10) // RAM enable
|
||||
{
|
||||
paletteram_xBBBBBGGGGGRRRRR_be_w(space,offset,data);
|
||||
@ -380,7 +394,7 @@ static WRITE8_HANDLER( le_4800_w )
|
||||
case 0x44:
|
||||
case 0x45:
|
||||
case 0x46:
|
||||
K053244_w(space, offset-0x40, data);
|
||||
k053244_w(k053244, offset - 0x40, data);
|
||||
break;
|
||||
|
||||
case 0x80:
|
||||
@ -415,7 +429,7 @@ static WRITE8_HANDLER( le_4800_w )
|
||||
case 0x9d:
|
||||
case 0x9e:
|
||||
case 0x9f:
|
||||
K054000_w(space, offset-0x80, data);
|
||||
k054000_w(k054000, offset - 0x80, data);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -424,18 +438,15 @@ static WRITE8_HANDLER( le_4800_w )
|
||||
}
|
||||
}
|
||||
else if (offset < 0x1800)
|
||||
{
|
||||
K053245_w(space, (offset - 0x0800) & 0x07ff, data);
|
||||
|
||||
}
|
||||
k053245_w(k053244, (offset - 0x0800) & 0x07ff, data);
|
||||
else if (offset < 0x2000)
|
||||
K056832_ram_code_lo_w(space, offset - 0x1800, data);
|
||||
k056832_ram_code_lo_w(k056832, offset - 0x1800, data);
|
||||
else if (offset < 0x2800)
|
||||
K056832_ram_code_hi_w(space, offset - 0x2000, data);
|
||||
k056832_ram_code_hi_w(k056832, offset - 0x2000, data);
|
||||
else if (offset < 0x3000)
|
||||
K056832_ram_attr_lo_w(space, offset - 0x2800, data);
|
||||
k056832_ram_attr_lo_w(k056832, offset - 0x2800, data);
|
||||
else // (offset < 0x3800)
|
||||
K056832_ram_attr_hi_w(space, offset - 0x3000, data);
|
||||
k056832_ram_attr_hi_w(k056832, offset - 0x3000, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -450,20 +461,20 @@ static READ8_HANDLER(guns_r)
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
return GUNX(1)>>1;
|
||||
return GUNX(1) >> 1;
|
||||
case 1:
|
||||
if ((240-GUNY(1)) == 7)
|
||||
if ((240 - GUNY(1)) == 7)
|
||||
return 0;
|
||||
else
|
||||
return (240-GUNY(1));
|
||||
return (240 - GUNY(1));
|
||||
break;
|
||||
case 2:
|
||||
return GUNX(2)>>1;
|
||||
return GUNX(2) >> 1;
|
||||
case 3:
|
||||
if ((240-GUNY(2)) == 7)
|
||||
if ((240 - GUNY(2)) == 7)
|
||||
return 0;
|
||||
else
|
||||
return (240-GUNY(2));
|
||||
return (240 - GUNY(2));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -483,8 +494,8 @@ static READ8_HANDLER(gunsaux_r)
|
||||
static ADDRESS_MAP_START( le_main, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x2000, 0x3fff) AM_RAM // work RAM
|
||||
AM_RANGE(0x4000, 0x403f) AM_WRITE(K056832_w)
|
||||
AM_RANGE(0x4040, 0x404f) AM_WRITE(K056832_b_w)
|
||||
AM_RANGE(0x4000, 0x403f) AM_DEVWRITE("k056832", k056832_w)
|
||||
AM_RANGE(0x4040, 0x404f) AM_DEVWRITE("k056832", k056832_b_w)
|
||||
AM_RANGE(0x4080, 0x4080) AM_READNOP // watchdog
|
||||
AM_RANGE(0x4090, 0x4090) AM_READNOP
|
||||
AM_RANGE(0x40a0, 0x40a0) AM_READNOP
|
||||
@ -509,8 +520,6 @@ static ADDRESS_MAP_START( le_sound, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0xfc03, 0xfc03) AM_READNOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* sound */
|
||||
|
||||
static INPUT_PORTS_START( lethalen )
|
||||
PORT_START("INPUTS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
@ -569,6 +578,28 @@ static INPUT_PORTS_START( lethalej )
|
||||
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, -1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(2) PORT_REVERSE
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const gfx_layout lethal_6bpp =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,2),
|
||||
6,
|
||||
{ RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+0, 8, 0, 24, 16 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8*32+0, 8*32+1, 8*32+2, 8*32+3, 8*32+4, 8*32+5, 8*32+6, 8*32+7 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
|
||||
16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 },
|
||||
128*8
|
||||
};
|
||||
|
||||
/* we use this decode instead of the one done by the sprite video start due to it being 6bpp */
|
||||
static GFXDECODE_START( lethal )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, lethal_6bpp, 0x000/*0x400*/, 256 ) /* sprites tiles */
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
/* sound */
|
||||
|
||||
static const k054539_interface k054539_config =
|
||||
{
|
||||
NULL,
|
||||
@ -591,23 +622,32 @@ static MACHINE_RESET( lethalen )
|
||||
device_reset(cputag_get_cpu(machine, "maincpu"));
|
||||
}
|
||||
|
||||
static const gfx_layout lethal_6bpp =
|
||||
static const k056832_interface lethalen_k056832_intf =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,2),
|
||||
6,
|
||||
{ RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+0, 8, 0, 24, 16 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8*32+0, 8*32+1, 8*32+2, 8*32+3, 8*32+4, 8*32+5, 8*32+6, 8*32+7 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
|
||||
16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 },
|
||||
128*8
|
||||
"gfx1", 1,
|
||||
K056832_BPP_8LE,
|
||||
1, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_NONE,
|
||||
lethalen_tile_callback, "none"
|
||||
};
|
||||
|
||||
/* we use this decode instead of the one done by the sprite video start due to it being 6bpp */
|
||||
static GFXDECODE_START( lethal )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, lethal_6bpp, 0x000/*0x400*/, 256 ) /* sprites tiles */
|
||||
GFXDECODE_END
|
||||
static const k05324x_interface lethalen_k05324x_intf =
|
||||
{
|
||||
"gfx3", 2,
|
||||
NORMAL_PLANE_ORDER,
|
||||
95, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
lethalen_sprite_callback
|
||||
};
|
||||
|
||||
static const k05324x_interface lethalej_k05324x_intf =
|
||||
{
|
||||
"gfx3", 2,
|
||||
NORMAL_PLANE_ORDER,
|
||||
-105, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
lethalen_sprite_callback
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( lethalen )
|
||||
/* basic machine hardware */
|
||||
@ -640,6 +680,10 @@ static MACHINE_DRIVER_START( lethalen )
|
||||
MDRV_VIDEO_START(lethalen)
|
||||
MDRV_VIDEO_UPDATE(lethalen)
|
||||
|
||||
MDRV_K056832_ADD("k056832", lethalen_k056832_intf)
|
||||
MDRV_K053244_ADD("k053244", lethalen_k05324x_intf)
|
||||
MDRV_K054000_ADD("k054000")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -654,6 +698,9 @@ static MACHINE_DRIVER_START( lethalej )
|
||||
|
||||
MDRV_SCREEN_MODIFY("screen")
|
||||
MDRV_SCREEN_VISIBLE_AREA(224, 512-1, 16, 240-1)
|
||||
|
||||
MDRV_DEVICE_REMOVE("k053244")
|
||||
MDRV_K053244_ADD("k053244", lethalej_k05324x_intf)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
ROM_START( lethalen ) // US version UAE
|
||||
@ -864,9 +911,8 @@ ROM_END
|
||||
|
||||
static DRIVER_INIT( lethalen )
|
||||
{
|
||||
konami_rom_deinterleave_2_half(machine, "gfx2");
|
||||
konami_rom_deinterleave_2(machine, "gfx3");
|
||||
konami_rom_deinterleave_2(machine, "gfx4");
|
||||
konamid_rom_deinterleave_2_half(machine, "gfx2");
|
||||
konamid_rom_deinterleave_2(machine, "gfx4");
|
||||
}
|
||||
|
||||
GAME( 1992, lethalen, 0, lethalen, lethalen, lethalen, ORIENTATION_FLIP_Y, "Konami", "Lethal Enforcers (ver UAE, 11/19/92 15:04)", GAME_IMPERFECT_GRAPHICS) // writes UE to eeprom
|
||||
|
@ -87,7 +87,7 @@ driver modified by Eisuke Watanabe
|
||||
#include "cpu/h83002/h8.h"
|
||||
#include "cpu/upd7810/upd7810.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2610intf.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/2413intf.h"
|
||||
@ -1705,8 +1705,8 @@ static ADDRESS_MAP_START( blzntrnd_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs) // Video Registers
|
||||
|
||||
AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_K053936_w) AM_BASE(&metro_K053936_ram) // 053936
|
||||
AM_RANGE(0x500000, 0x500fff) AM_WRITEONLY AM_BASE(&K053936_0_linectrl) // 053936 line control
|
||||
AM_RANGE(0x600000, 0x60001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl) // 053936 control
|
||||
AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE("k053936", k053936_linectrl_w) // 053936 line control
|
||||
AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE("k053936", k053936_ctrl_w) // 053936 control
|
||||
|
||||
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs
|
||||
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w) //
|
||||
@ -2048,54 +2048,54 @@ static INPUT_PORTS_START( batlbubl )
|
||||
COINS
|
||||
|
||||
PORT_START("IN2") // Strangely mapped in the 0xc00000-0xc1ffff range
|
||||
PORT_DIPNAME( 0x0001, 0x0001, "0" )
|
||||
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0001, 0x0001, "0" )
|
||||
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0080, 0x0080, "Debug Mode?" )
|
||||
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/***************************************************************************
|
||||
@ -4222,6 +4222,11 @@ static MACHINE_DRIVER_START( mouja )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const k053936_interface blzntrnd_k053936_intf =
|
||||
{
|
||||
0, -69, -21
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( blzntrnd )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -4249,6 +4254,8 @@ static MACHINE_DRIVER_START( blzntrnd )
|
||||
MDRV_VIDEO_START(blzntrnd)
|
||||
MDRV_VIDEO_UPDATE(metro)
|
||||
|
||||
MDRV_K053936_ADD("k053936", blzntrnd_k053936_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -4261,6 +4268,12 @@ static MACHINE_DRIVER_START( blzntrnd )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
/* like blzntrnd but new vidstart / gfxdecode for the different bg tilemap */
|
||||
|
||||
static const k053936_interface gstrik2_k053936_intf =
|
||||
{
|
||||
0, -69, -19
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( gstrik2 )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -4288,6 +4301,8 @@ static MACHINE_DRIVER_START( gstrik2 )
|
||||
MDRV_VIDEO_START(gstrik2)
|
||||
MDRV_VIDEO_UPDATE(metro)
|
||||
|
||||
MDRV_K053936_ADD("k053936", gstrik2_k053936_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
|
@ -37,12 +37,12 @@
|
||||
|
||||
#include "driver.h"
|
||||
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "sound/k054539.h"
|
||||
#include "konamipt.h"
|
||||
#include "includes/konamipt.h"
|
||||
|
||||
VIDEO_START( rng );
|
||||
VIDEO_UPDATE( rng );
|
||||
@ -52,6 +52,7 @@ WRITE16_HANDLER( rng_ttl_ram_w );
|
||||
WRITE16_HANDLER( rng_936_videoram_w );
|
||||
|
||||
extern UINT16 *rng_936_videoram;
|
||||
extern void rng_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask);
|
||||
|
||||
static UINT16 *rng_sysreg;
|
||||
static int init_eeprom_count;
|
||||
@ -95,20 +96,20 @@ static READ16_HANDLER( rng_sysregs_r )
|
||||
{
|
||||
case 0x00/2:
|
||||
if (input_port_read(space->machine, "DSW") & 0x20)
|
||||
return(input_port_read(space->machine, "P1") | input_port_read(space->machine, "P3")<<8);
|
||||
return(input_port_read(space->machine, "P1") | input_port_read(space->machine, "P3") << 8);
|
||||
else
|
||||
{
|
||||
data = input_port_read(space->machine, "P1") & input_port_read(space->machine, "P3");
|
||||
return(data<<8 | data);
|
||||
return(data << 8 | data);
|
||||
}
|
||||
|
||||
case 0x02/2:
|
||||
if (input_port_read(space->machine, "DSW") & 0x20)
|
||||
return(input_port_read(space->machine, "P2") | input_port_read(space->machine, "P4")<<8);
|
||||
return(input_port_read(space->machine, "P2") | input_port_read(space->machine, "P4") << 8);
|
||||
else
|
||||
{
|
||||
data = input_port_read(space->machine, "P2") & input_port_read(space->machine, "P4");
|
||||
return(data<<8 | data);
|
||||
return(data << 8 | data);
|
||||
}
|
||||
|
||||
case 0x04/2:
|
||||
@ -138,6 +139,7 @@ static READ16_HANDLER( rng_sysregs_r )
|
||||
|
||||
static WRITE16_HANDLER( rng_sysregs_w )
|
||||
{
|
||||
const device_config *k055673 = devtag_get_device(space->machine, "k055673");
|
||||
COMBINE_DATA(rng_sysreg + offset);
|
||||
|
||||
switch (offset)
|
||||
@ -169,7 +171,7 @@ static WRITE16_HANDLER( rng_sysregs_w )
|
||||
bit 2 : OBJCHA
|
||||
bit 3 : enable IRQ 5
|
||||
*/
|
||||
K053246_set_OBJCHA_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k053246_set_objcha_line(k055673, (data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -212,25 +214,25 @@ static ADDRESS_MAP_START( rungun_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM
|
||||
AM_RANGE(0x400000, 0x43ffff) AM_READNOP // AM_READ( K053936_0_rom_r ) // '936 ROM readback window
|
||||
AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r,rng_sysregs_w) AM_BASE(&rng_sysreg)
|
||||
AM_RANGE(0x4c0000, 0x4c001f) AM_READ(K053252_word_r) // CCU (for scanline and vblank polling)
|
||||
AM_RANGE(0x4c0000, 0x4c001f) AM_DEVREAD("k053252", k053252_word_r) // CCU (for scanline and vblank polling)
|
||||
AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
|
||||
AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w)
|
||||
AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w)
|
||||
AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r)
|
||||
AM_RANGE(0x580000, 0x58001f) AM_RAM // sound regs read/write fall-through
|
||||
AM_RANGE(0x5c0000, 0x5c000d) AM_READ(K053246_word_r) // 246A ROM readback window
|
||||
AM_RANGE(0x5c0010, 0x5c001f) AM_WRITE(K053247_reg_word_w)
|
||||
AM_RANGE(0x600000, 0x600fff) AM_READWRITE(K053247_word_r,K053247_word_w) // OBJ RAM
|
||||
AM_RANGE(0x5c0000, 0x5c000d) AM_DEVREAD("k055673", k053246_word_r) // 246A ROM readback window
|
||||
AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k053247_reg_word_w)
|
||||
AM_RANGE(0x600000, 0x600fff) AM_DEVREADWRITE("k055673", k053247_word_r, k053247_word_w) // OBJ RAM
|
||||
AM_RANGE(0x601000, 0x601fff) AM_RAM // communication? second monitor buffer?
|
||||
AM_RANGE(0x640000, 0x640007) AM_WRITE(K053246_word_w) // '246A registers
|
||||
AM_RANGE(0x680000, 0x68001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl) // '936 registers
|
||||
AM_RANGE(0x640000, 0x640007) AM_DEVWRITE("k055673", k053246_word_w) // '246A registers
|
||||
AM_RANGE(0x680000, 0x68001f) AM_DEVWRITE("k053936", k053936_ctrl_w) // '936 registers
|
||||
AM_RANGE(0x6c0000, 0x6cffff) AM_RAM_WRITE(rng_936_videoram_w) AM_BASE(&rng_936_videoram) // PSAC2 ('936) RAM (34v + 35v)
|
||||
AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_BASE(&K053936_0_linectrl) // PSAC "Line RAM"
|
||||
AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE("k053936", k053936_linectrl_r, k053936_linectrl_w) // PSAC "Line RAM"
|
||||
AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r,rng_ttl_ram_w) // text plane RAM
|
||||
AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog
|
||||
#if RNG_DEBUG
|
||||
AM_RANGE(0x5c0010, 0x5c001f) AM_READ(K053247_reg_word_r)
|
||||
AM_RANGE(0x640000, 0x640007) AM_READ(K053246_reg_word_r)
|
||||
AM_RANGE(0x5c0010, 0x5c001f) AM_DEVREAD("k055673", k053247_reg_word_r)
|
||||
AM_RANGE(0x640000, 0x640007) AM_DEVREAD("k055673", k053246_reg_word_r)
|
||||
#endif
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -277,77 +279,6 @@ static ADDRESS_MAP_START( rungun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static const k054539_interface k054539_config =
|
||||
{
|
||||
"shared"
|
||||
};
|
||||
|
||||
/**********************************************************************************/
|
||||
|
||||
static const gfx_layout bglayout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 0, 1, 2, 3 },
|
||||
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4,
|
||||
9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
128*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( rungun )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, bglayout, 0x0000, 64 )
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_DRIVER_START( rng )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("maincpu", M68000, 16000000)
|
||||
MDRV_CPU_PROGRAM_MAP(rungun_map)
|
||||
MDRV_CPU_VBLANK_INT("screen", rng_interrupt)
|
||||
|
||||
MDRV_CPU_ADD("soundcpu", Z80, 10000000) // 8Mhz (10Mhz is much safer in self-test due to heavy sync)
|
||||
MDRV_CPU_PROGRAM_MAP(rungun_sound_map)
|
||||
MDRV_CPU_PERIODIC_INT(audio_interrupt, 480)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000)) // higher if sound stutters
|
||||
|
||||
MDRV_GFXDECODE(rungun)
|
||||
|
||||
MDRV_MACHINE_RESET(rng)
|
||||
MDRV_NVRAM_HANDLER(rungun)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(88, 88+384-1, 24, 24+224-1)
|
||||
|
||||
MDRV_PALETTE_LENGTH(1024)
|
||||
|
||||
MDRV_VIDEO_START(rng)
|
||||
MDRV_VIDEO_UPDATE(rng)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MDRV_SOUND_ADD("konami1", K054539, 48000)
|
||||
MDRV_SOUND_CONFIG(k054539_config)
|
||||
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
MDRV_SOUND_ADD("konami2", K054539, 48000)
|
||||
MDRV_SOUND_CONFIG(k054539_config)
|
||||
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static INPUT_PORTS_START( rng )
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
@ -399,6 +330,102 @@ static INPUT_PORTS_START( rng )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/**********************************************************************************/
|
||||
|
||||
static const gfx_layout bglayout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 0, 1, 2, 3 },
|
||||
{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4,
|
||||
9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
128*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( rungun )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, bglayout, 0x0000, 64 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
|
||||
static const k054539_interface k054539_config =
|
||||
{
|
||||
"shared"
|
||||
};
|
||||
|
||||
|
||||
static const k053936_interface rng_k053936_intf =
|
||||
{
|
||||
0, 34, 9
|
||||
};
|
||||
|
||||
static const k053247_interface rng_k055673_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2", 1,
|
||||
K055673_LAYOUT_RNG,
|
||||
-8, 15,
|
||||
KONAMI_ROM_DEINTERLEAVE_NONE, // there is some interleave in VIDEO_START...
|
||||
rng_sprite_callback
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( rng )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("maincpu", M68000, 16000000)
|
||||
MDRV_CPU_PROGRAM_MAP(rungun_map)
|
||||
MDRV_CPU_VBLANK_INT("screen", rng_interrupt)
|
||||
|
||||
MDRV_CPU_ADD("soundcpu", Z80, 10000000) // 8Mhz (10Mhz is much safer in self-test due to heavy sync)
|
||||
MDRV_CPU_PROGRAM_MAP(rungun_sound_map)
|
||||
MDRV_CPU_PERIODIC_INT(audio_interrupt, 480)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000)) // higher if sound stutters
|
||||
|
||||
MDRV_GFXDECODE(rungun)
|
||||
|
||||
MDRV_MACHINE_RESET(rng)
|
||||
MDRV_NVRAM_HANDLER(rungun)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
|
||||
MDRV_SCREEN_ADD("screen", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(88, 88+384-1, 24, 24+224-1)
|
||||
|
||||
MDRV_PALETTE_LENGTH(1024)
|
||||
|
||||
MDRV_VIDEO_START(rng)
|
||||
MDRV_VIDEO_UPDATE(rng)
|
||||
|
||||
MDRV_K053936_ADD("k053936", rng_k053936_intf)
|
||||
MDRV_K055673_ADD("k055673", rng_k055673_intf)
|
||||
MDRV_K053252_ADD("k053252")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MDRV_SOUND_ADD("konami1", K054539, 48000)
|
||||
MDRV_SOUND_CONFIG(k054539_config)
|
||||
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
MDRV_SOUND_ADD("konami2", K054539, 48000)
|
||||
MDRV_SOUND_CONFIG(k054539_config)
|
||||
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
ROM_START( rungun )
|
||||
/* main program Europe Version AA 1993, 10.8 */
|
||||
ROM_REGION( 0x300000, "maincpu", 0)
|
||||
|
@ -11,12 +11,13 @@ press F1+F3 to see ROM/RAM tests and the final animation
|
||||
|
||||
#include "driver.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2608intf.h"
|
||||
|
||||
|
||||
extern UINT16 *tail2nos_bgvideoram;
|
||||
extern void tail2nos_zoom_callback(running_machine *machine, int *code,int *color,int *flags);
|
||||
|
||||
WRITE16_HANDLER( tail2nos_bgvideoram_w );
|
||||
READ16_HANDLER( tail2nos_zoomdata_r );
|
||||
@ -46,6 +47,7 @@ static WRITE16_HANDLER( sound_command_w )
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
static READ16_HANDLER( tail2nos_K051316_0_r )
|
||||
{
|
||||
return K051316_0_r(space,offset);
|
||||
@ -62,6 +64,7 @@ static WRITE16_HANDLER( tail2nos_K051316_ctrl_0_w )
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_ctrl_0_w(space,offset,data & 0xff);
|
||||
}
|
||||
#endif
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
|
||||
{
|
||||
@ -73,8 +76,8 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* extra ROM */
|
||||
AM_RANGE(0x2c0000, 0x2dffff) AM_ROMBANK("bank2")
|
||||
AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(tail2nos_zoomdata_r, tail2nos_zoomdata_w)
|
||||
AM_RANGE(0x500000, 0x500fff) AM_READWRITE(tail2nos_K051316_0_r, tail2nos_K051316_0_w)
|
||||
AM_RANGE(0x510000, 0x51001f) AM_WRITE(tail2nos_K051316_ctrl_0_w)
|
||||
AM_RANGE(0x500000, 0x500fff) AM_DEVREADWRITE8("k051316", k051316_r, k051316_w, 0x00ff)
|
||||
AM_RANGE(0x510000, 0x51001f) AM_DEVWRITE8("k051316", k051316_ctrl_w, 0x00ff)
|
||||
AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0xffc000, 0xffc2ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
||||
AM_RANGE(0xffc300, 0xffcfff) AM_RAM
|
||||
@ -232,6 +235,13 @@ static const ym2608_interface ym2608_config =
|
||||
};
|
||||
|
||||
|
||||
static const k051316_interface tail2nos_k051316_intf =
|
||||
{
|
||||
"gfx3", 2,
|
||||
-4, TRUE, 0,
|
||||
1, -89, -14,
|
||||
tail2nos_zoom_callback
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( tail2nos )
|
||||
|
||||
@ -260,6 +270,8 @@ static MACHINE_DRIVER_START( tail2nos )
|
||||
MDRV_VIDEO_START(tail2nos)
|
||||
MDRV_VIDEO_UPDATE(tail2nos)
|
||||
|
||||
MDRV_K051316_ADD("k051316", tail2nos_k051316_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
|
@ -66,7 +66,7 @@ Updates:
|
||||
|
||||
#include "driver.h"
|
||||
#include "deprecat.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
@ -78,37 +78,58 @@ Updates:
|
||||
#include "sound/k007232.h"
|
||||
#include "sound/upd7759.h"
|
||||
#include "includes/tmnt.h"
|
||||
#include "konamipt.h"
|
||||
#include "includes/konamipt.h"
|
||||
|
||||
|
||||
extern void mia_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
extern void cuebrick_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
extern void tmnt_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
extern void ssbl_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
extern void blswhstl_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
extern void mia_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow);
|
||||
extern void tmnt_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow);
|
||||
extern void punkshot_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask,int *shadow);
|
||||
extern void thndrx2_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask,int *shadow);
|
||||
extern void lgtnfght_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask);
|
||||
extern void blswhstl_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask);
|
||||
extern void prmrsocr_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask);
|
||||
|
||||
static int tmnt_soundlatch;
|
||||
static int cuebrick_snd_irqlatch, cuebrick_nvram_bank;
|
||||
static UINT16 cuebrick_nvram[0x400*0x20]; // 32k paged in a 1k window
|
||||
static INT16 *sampledata;
|
||||
|
||||
|
||||
static READ16_HANDLER( K052109_word_noA12_r )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
/* some games have the A12 line not connected, so the chip spans */
|
||||
/* twice the memory range, with mirroring */
|
||||
offset = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||
return K052109_word_r(space,offset,mem_mask);
|
||||
return k052109_word_r(k052109, offset, mem_mask);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K052109_word_noA12_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
/* some games have the A12 line not connected, so the chip spans */
|
||||
/* twice the memory range, with mirroring */
|
||||
offset = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||
K052109_word_w(space,offset,data,mem_mask);
|
||||
k052109_word_w(k052109, offset, data, mem_mask);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( punkshot_K052109_word_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
/* it seems that a word write is supposed to affect only the MSB. The */
|
||||
/* "ROUND 1" text in punkshtj goes lost otherwise. */
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K052109_w(space,offset,(data >> 8) & 0xff);
|
||||
k052109_w(k052109, offset, (data >> 8) & 0xff);
|
||||
else if (ACCESSING_BITS_0_7)
|
||||
K052109_w(space,offset + 0x2000,data & 0xff);
|
||||
k052109_w(k052109, offset + 0x2000, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( punkshot_K052109_word_noA12_w )
|
||||
@ -116,7 +137,7 @@ static WRITE16_HANDLER( punkshot_K052109_word_noA12_w )
|
||||
/* some games have the A12 line not connected, so the chip spans */
|
||||
/* twice the memory range, with mirroring */
|
||||
offset = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||
punkshot_K052109_word_w(space,offset,data,mem_mask);
|
||||
punkshot_K052109_word_w(space, offset, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
@ -125,41 +146,49 @@ static WRITE16_HANDLER( punkshot_K052109_word_noA12_w )
|
||||
/* A1, A5 and A6 don't go to the 053245. */
|
||||
static READ16_HANDLER( K053245_scattered_word_r )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
if (offset & 0x0031)
|
||||
return space->machine->generic.spriteram.u16[offset];
|
||||
else
|
||||
{
|
||||
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
|
||||
return K053245_word_r(space,offset,mem_mask);
|
||||
return k053245_word_r(k053245, offset, mem_mask);
|
||||
}
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K053245_scattered_word_w )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
COMBINE_DATA(space->machine->generic.spriteram.u16 + offset);
|
||||
|
||||
if (!(offset & 0x0031))
|
||||
{
|
||||
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
|
||||
K053245_word_w(space,offset,data,mem_mask);
|
||||
k053245_word_w(k053245, offset, data, mem_mask);
|
||||
}
|
||||
}
|
||||
|
||||
static READ16_HANDLER( K053244_word_noA1_r )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
offset &= ~1; /* handle mirror address */
|
||||
|
||||
return K053244_r(space,offset + 1) | (K053244_r(space,offset) << 8);
|
||||
return k053244_r(k053245, offset + 1) | (k053244_r(k053245, offset) << 8);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( K053244_word_noA1_w )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
offset &= ~1; /* handle mirror address */
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
K053244_w(space,offset,(data >> 8) & 0xff);
|
||||
k053244_w(k053245, offset, (data >> 8) & 0xff);
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K053244_w(space,offset + 1,data & 0xff);
|
||||
k053244_w(k053245, offset + 1, data & 0xff);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN(cuebrick_interrupt)
|
||||
@ -180,14 +209,18 @@ static INTERRUPT_GEN(cuebrick_interrupt)
|
||||
|
||||
static INTERRUPT_GEN( punkshot_interrupt )
|
||||
{
|
||||
if (K052109_is_IRQ_enabled()) irq4_line_hold(device);
|
||||
const device_config *k052109 = devtag_get_device(device->machine, "k052109");
|
||||
|
||||
if (k052109_is_irq_enabled(k052109))
|
||||
irq4_line_hold(device);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( lgtnfght_interrupt )
|
||||
{
|
||||
if (K052109_is_IRQ_enabled()) irq5_line_hold(device);
|
||||
const device_config *k052109 = devtag_get_device(device->machine, "k052109");
|
||||
|
||||
if (k052109_is_irq_enabled(k052109))
|
||||
irq5_line_hold(device);
|
||||
}
|
||||
|
||||
|
||||
@ -344,8 +377,9 @@ static READ16_HANDLER( punkshot_kludge_r )
|
||||
/* protection simulation derived from a bootleg */
|
||||
static READ16_HANDLER( ssriders_protection_r )
|
||||
{
|
||||
int data = memory_read_word(space, 0x105a0a);
|
||||
int cmd = memory_read_word(space, 0x1058fc);
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
int data = memory_read_word(space, 0x105a0a);
|
||||
int cmd = memory_read_word(space, 0x1058fc);
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
@ -375,7 +409,7 @@ static READ16_HANDLER( ssriders_protection_r )
|
||||
data = -memory_read_word(space, 0x105818);
|
||||
data = ((data / 8 - 4) & 0x1f) * 0x40;
|
||||
data += ((memory_read_word(space, 0x105cb0) +
|
||||
256*K052109_r(space,0x1a01) + K052109_r(space,0x1a00) - 6) / 8 + 12) & 0x3f;
|
||||
256 * k052109_r(k052109, 0x1a01) + k052109_r(k052109, 0x1a00) - 6) / 8 + 12) & 0x3f;
|
||||
return data;
|
||||
|
||||
default:
|
||||
@ -387,6 +421,8 @@ static READ16_HANDLER( ssriders_protection_r )
|
||||
|
||||
static WRITE16_HANDLER( ssriders_protection_w )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
if (offset == 1)
|
||||
{
|
||||
int logical_pri,hardware_pri;
|
||||
@ -401,7 +437,7 @@ static WRITE16_HANDLER( ssriders_protection_w )
|
||||
{
|
||||
if ((memory_read_word(space, 0x180006 + 128*i) >> 8) == logical_pri)
|
||||
{
|
||||
K053245_word_w(space,8*i,hardware_pri,0x00ff);
|
||||
k053245_word_w(k053245, 8 * i, hardware_pri, 0x00ff);
|
||||
hardware_pri++;
|
||||
}
|
||||
}
|
||||
@ -578,6 +614,7 @@ static READ16_HANDLER( thndrx2_eeprom_r )
|
||||
|
||||
static WRITE16_HANDLER( thndrx2_eeprom_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
static int last;
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
@ -595,7 +632,7 @@ static WRITE16_HANDLER( thndrx2_eeprom_w )
|
||||
last = data & 0x20;
|
||||
|
||||
/* bit 6 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -663,8 +700,8 @@ static ADDRESS_MAP_START( cuebrick_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrick_nvbank_w)
|
||||
AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0xff00)
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
|
||||
AM_RANGE(0x140000, 0x140007) AM_READWRITE(K051937_word_r, K051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_READWRITE(K051960_word_r, K051960_word_w)
|
||||
AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE("k051960", k051937_word_r, k051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE("k051960", k051960_word_r, k051960_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -685,8 +722,8 @@ static ADDRESS_MAP_START( mia_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
#endif
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
|
||||
// AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ???
|
||||
AM_RANGE(0x140000, 0x140007) AM_READWRITE(K051937_word_r, K051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_READWRITE(K051960_word_r, K051960_word_w)
|
||||
AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE("k051960", k051937_word_r, k051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE("k051960", k051960_word_r, k051960_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -706,8 +743,8 @@ static ADDRESS_MAP_START( tmnt_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(tmnt_priority_w)
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
|
||||
// AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ???
|
||||
AM_RANGE(0x140000, 0x140007) AM_READWRITE(K051937_word_r, K051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_READWRITE(K051960_word_r, K051960_word_w)
|
||||
AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE("k051960", k051937_word_r, k051937_word_w)
|
||||
AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE("k051960", k051960_word_r, k051960_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -722,11 +759,11 @@ static ADDRESS_MAP_START( punkshot_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0a0020, 0x0a0021) AM_WRITE(punkshot_0a0020_w)
|
||||
AM_RANGE(0x0a0040, 0x0a0043) AM_DEVREAD8("konami", punkshot_sound_r, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x0a0040, 0x0a0041) AM_DEVWRITE8("konami", k053260_w, 0x00ff)
|
||||
AM_RANGE(0x0a0060, 0x0a007f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x0a0060, 0x0a007f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x0a0080, 0x0a0081) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, punkshot_K052109_word_noA12_w)
|
||||
AM_RANGE(0x110000, 0x110007) AM_READWRITE(K051937_word_r, K051937_word_w)
|
||||
AM_RANGE(0x110400, 0x1107ff) AM_READWRITE(K051960_word_r, K051960_word_w)
|
||||
AM_RANGE(0x110000, 0x110007) AM_DEVREADWRITE("k051960", k051937_word_r, k051937_word_w)
|
||||
AM_RANGE(0x110400, 0x1107ff) AM_DEVREADWRITE("k051960", k051960_word_r, k051960_word_w)
|
||||
AM_RANGE(0xfffffc, 0xffffff) AM_READ(punkshot_kludge_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -747,7 +784,7 @@ static ADDRESS_MAP_START( lgtnfght_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x0a0028, 0x0a0029) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x0b0000, 0x0b3fff) AM_READWRITE(K053245_scattered_word_r, K053245_scattered_word_w) AM_BASE_GENERIC(spriteram)
|
||||
AM_RANGE(0x0c0000, 0x0c001f) AM_READWRITE(K053244_word_noA1_r, K053244_word_noA1_w)
|
||||
AM_RANGE(0x0e0000, 0x0e001f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x0e0000, 0x0e001f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x100000, 0x107fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -760,11 +797,11 @@ static WRITE16_HANDLER( ssriders_soundkludge_w )
|
||||
|
||||
static ADDRESS_MAP_START( blswhstl_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE(K052109_word_r, K052109_word_w)
|
||||
AM_RANGE(0x180000, 0x183fff) AM_DEVREADWRITE("k052109", k052109_word_r, k052109_word_w)
|
||||
AM_RANGE(0x204000, 0x207fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x300000, 0x303fff) AM_READWRITE(K053245_scattered_word_r, K053245_scattered_word_w) AM_BASE_GENERIC(spriteram)
|
||||
AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x500000, 0x50003f) AM_READWRITE(K054000_lsb_r, K054000_lsb_w)
|
||||
AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_lsb_r, k054000_lsb_w)
|
||||
AM_RANGE(0x680000, 0x68001f) AM_READWRITE(K053244_word_noA1_r, K053244_word_noA1_w)
|
||||
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2")
|
||||
@ -772,24 +809,48 @@ static ADDRESS_MAP_START( blswhstl_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x700006, 0x700007) AM_READ_PORT("EEPROM")
|
||||
AM_RANGE(0x700200, 0x700201) AM_WRITE(blswhstl_eeprom_w)
|
||||
AM_RANGE(0x700300, 0x700301) AM_WRITE(blswhstl_700300_w)
|
||||
AM_RANGE(0x700400, 0x700401) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x700400, 0x700401) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x780600, 0x780603) AM_DEVREAD8("konami", punkshot_sound_r, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x780600, 0x780601) AM_DEVWRITE8("konami", k053260_w, 0x00ff)
|
||||
AM_RANGE(0x780604, 0x780605) AM_WRITE(ssriders_soundkludge_w)
|
||||
AM_RANGE(0x780700, 0x78071f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static WRITE16_HANDLER( K053251_glfgreat_w )
|
||||
{
|
||||
const device_config *k053251 = devtag_get_device(space->machine, "k053251");
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
int i;
|
||||
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
k053251_w(k053251, offset, (data >> 8) & 0xff);
|
||||
|
||||
/* FIXME: in the old code k052109 tilemaps were tilemaps 2,3,4 for k053251
|
||||
and got marked as dirty in the write above... how was the original hardware working?!? */
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (k053251_get_tmap_dirty(k053251, 2 + i))
|
||||
{
|
||||
k052109_tilemap_mark_dirty(k052109, i);
|
||||
k053251_set_tmap_dirty(k053251, 2 + i, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( glfgreat_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x104000, 0x107fff) AM_READWRITE(K053245_scattered_word_r, K053245_scattered_word_w) AM_BASE_GENERIC(spriteram)
|
||||
AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x10c000, 0x10cfff) AM_RAM AM_BASE(&K053936_0_linectrl) /* 053936? */
|
||||
AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_linectrl_r, k053936_linectrl_w) /* 053936? */
|
||||
AM_RANGE(0x110000, 0x11001f) AM_WRITE(K053244_word_noA1_w) /* duplicate! */
|
||||
AM_RANGE(0x114000, 0x11401f) AM_READWRITE(K053244_lsb_r, K053244_lsb_w) /* duplicate! */
|
||||
AM_RANGE(0x118000, 0x11801f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)
|
||||
AM_RANGE(0x11c000, 0x11c01f) AM_WRITE(K053251_msb_w)
|
||||
AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k053244_lsb_r, k053244_lsb_w) /* duplicate! */
|
||||
AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_ctrl_w)
|
||||
// AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_msb_w)
|
||||
AM_RANGE(0x11c000, 0x11c01f) AM_WRITE(K053251_glfgreat_w)
|
||||
AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/P2")
|
||||
AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P3/P4")
|
||||
AM_RANGE(0x120004, 0x120005) AM_READ_PORT("COINS/DSW3")
|
||||
@ -808,11 +869,12 @@ static ADDRESS_MAP_START( prmrsocr_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x104000, 0x107fff) AM_READWRITE(K053245_scattered_word_r, K053245_scattered_word_w) AM_BASE_GENERIC(spriteram)
|
||||
AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x10c000, 0x10cfff) AM_RAM AM_BASE(&K053936_0_linectrl)
|
||||
AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_linectrl_r, k053936_linectrl_w)
|
||||
AM_RANGE(0x110000, 0x11001f) AM_WRITE(K053244_word_noA1_w) /* duplicate! */
|
||||
AM_RANGE(0x114000, 0x11401f) AM_READWRITE(K053244_lsb_r, K053244_lsb_w) /* duplicate! */
|
||||
AM_RANGE(0x118000, 0x11801f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)
|
||||
AM_RANGE(0x11c000, 0x11c01f) AM_WRITE(K053251_msb_w)
|
||||
AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k053244_lsb_r, k053244_lsb_w) /* duplicate! */
|
||||
AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_ctrl_w)
|
||||
// AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_msb_w)
|
||||
AM_RANGE(0x11c000, 0x11c01f) AM_WRITE(K053251_glfgreat_w)
|
||||
AM_RANGE(0x120000, 0x120001) AM_READ(prmrsocr_IN0_r)
|
||||
AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P2/EEPROM")
|
||||
AM_RANGE(0x12100c, 0x12100f) AM_WRITE(prmrsocr_sound_cmd_w)
|
||||
@ -839,6 +901,8 @@ INLINE UINT32 tmnt2_get_word(running_machine *machine, UINT32 addr)
|
||||
|
||||
static void tmnt2_put_word(const address_space *space, UINT32 addr, UINT16 data)
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
UINT32 offs;
|
||||
if (addr >= 0x180000/2 && addr <= 0x183fff/2)
|
||||
{
|
||||
@ -847,7 +911,7 @@ static void tmnt2_put_word(const address_space *space, UINT32 addr, UINT16 data)
|
||||
if (!(offs & 0x0031))
|
||||
{
|
||||
offs = ((offs & 0x000e) >> 1) | ((offs & 0x1fc0) >> 3);
|
||||
K053245_word_w(space, offs, data, 0xffff);
|
||||
k053245_word_w(k053245, offs, data, 0xffff);
|
||||
}
|
||||
}
|
||||
else if (addr >= 0x104000/2 && addr <= 0x107fff/2) sunset_104000[addr-0x104000/2] = data;
|
||||
@ -971,8 +1035,8 @@ static WRITE16_HANDLER( tmnt2_1c0800_w )
|
||||
#else // for reference; do not remove
|
||||
static WRITE16_HANDLER( tmnt2_1c0800_w )
|
||||
{
|
||||
COMBINE_DATA( tmnt2_1c0800 + offset);
|
||||
if ( offset == 0x0008 && ( tmnt2_1c0800[0x8] & 0xff00 ) == 0x8200 )
|
||||
COMBINE_DATA( tmnt2_1c0800 + offset);
|
||||
if ( offset == 0x0008 && ( tmnt2_1c0800[0x8] & 0xff00 ) == 0x8200 )
|
||||
{
|
||||
UINT32 CellSrc;
|
||||
UINT32 CellVar;
|
||||
@ -984,14 +1048,14 @@ static WRITE16_HANDLER( tmnt2_1c0800_w )
|
||||
dst = tmnt2_1c0800[0x02] | (tmnt2_1c0800[0x03] << 16 );
|
||||
CellSrc = tmnt2_1c0800[0x00] | (tmnt2_1c0800[0x01] << 16 );
|
||||
// if ( CellDest >= 0x180000 && CellDest < 0x183fe0 ) {
|
||||
CellVar -= 0x104000;
|
||||
CellVar -= 0x104000;
|
||||
src = (UINT16 *)(memory_region(space->machine, "maincpu") + CellSrc);
|
||||
|
||||
CellVar >>= 1;
|
||||
|
||||
memory_write_word(space,dst+0x00, 0x8000 | ((src[1] & 0xfc00) >> 2)); /* size, flip xy */
|
||||
memory_write_word(space,dst+0x04, src[0]); /* code */
|
||||
memory_write_word(space,dst+0x18, (src[1] & 0x3ff) ^ /* color, mirror, priority */
|
||||
memory_write_word(space,dst+0x04, src[0]); /* code */
|
||||
memory_write_word(space,dst+0x18, (src[1] & 0x3ff) ^ /* color, mirror, priority */
|
||||
(sunset_104000[CellVar + 0x00] & 0x0060));
|
||||
|
||||
/* base color modifier */
|
||||
@ -1077,8 +1141,8 @@ static ADDRESS_MAP_START( tmnt2_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREAD8("konami", punkshot_sound_r, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8("konami", k053260_w, 0x00ff)
|
||||
AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
|
||||
AM_RANGE(0x5c0700, 0x5c071f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_READWRITE(K052109_word_r, K052109_word_w)
|
||||
AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_word_r, k052109_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -1103,8 +1167,8 @@ static ADDRESS_MAP_START( ssriders_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREAD8("konami", punkshot_sound_r, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8("konami", k053260_w, 0x00ff)
|
||||
AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
|
||||
AM_RANGE(0x5c0700, 0x5c071f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_READWRITE(K052109_word_r, K052109_word_w)
|
||||
AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_word_r, k052109_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -1112,13 +1176,13 @@ static ADDRESS_MAP_START( sunsetbl_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x0bffff) AM_ROM
|
||||
AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x14c000, 0x14cfff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x14e700, 0x14e71f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x14e700, 0x14e71f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x180000, 0x183fff) AM_READWRITE(K053245_scattered_word_r, K053245_scattered_word_w) AM_BASE_GENERIC(spriteram)
|
||||
AM_RANGE(0x184000, 0x18ffff) AM_RAM
|
||||
AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w)
|
||||
AM_RANGE(0x1c0400, 0x1c0401) AM_WRITENOP
|
||||
AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(K053244_word_noA1_r, K053244_word_noA1_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_READWRITE(K052109_word_r, K052109_word_w)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_word_r, k052109_word_w)
|
||||
AM_RANGE(0x604020, 0x60402f) AM_WRITENOP /* written every frame */
|
||||
AM_RANGE(0x604200, 0x604201) AM_WRITENOP /* watchdog */
|
||||
AM_RANGE(0x6119e2, 0x6119e3) AM_WRITENOP /* written a lot in some test menus (PC=18204) */
|
||||
@ -1138,17 +1202,17 @@ static ADDRESS_MAP_START( thndrx2_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x300000, 0x30001f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x300000, 0x30001f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x400000, 0x400003) AM_DEVREAD8("konami", punkshot_sound_r, 0x00ff) /* K053260 */
|
||||
AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("konami", k053260_w, 0x00ff)
|
||||
AM_RANGE(0x500000, 0x50003f) AM_READWRITE(K054000_lsb_r, K054000_lsb_w)
|
||||
AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_lsb_r, k054000_lsb_w)
|
||||
AM_RANGE(0x500100, 0x500101) AM_WRITE(thndrx2_eeprom_w)
|
||||
AM_RANGE(0x500200, 0x500201) AM_READ(thndrx2_in0_r)
|
||||
AM_RANGE(0x500202, 0x500203) AM_READ(thndrx2_eeprom_r)
|
||||
AM_RANGE(0x500300, 0x500301) AM_WRITENOP /* watchdog reset? irq enable? */
|
||||
AM_RANGE(0x600000, 0x607fff) AM_READWRITE(K052109_word_noA12_r, K052109_word_noA12_w)
|
||||
AM_RANGE(0x700000, 0x700007) AM_READWRITE(K051937_word_r, K051937_word_w)
|
||||
AM_RANGE(0x700400, 0x7007ff) AM_READWRITE(K051960_word_r, K051960_word_w)
|
||||
AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE("k051960", k051937_word_r, k051937_word_w)
|
||||
AM_RANGE(0x700400, 0x7007ff) AM_DEVREADWRITE("k051960", k051960_word_r, k051960_word_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -2072,6 +2136,147 @@ static const samples_interface tmnt_samples_interface =
|
||||
tmnt_decode_sample
|
||||
};
|
||||
|
||||
|
||||
/* 052109 interfaces */
|
||||
static const k052109_interface cuebrick_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_SHUFFLE8,
|
||||
cuebrick_tile_callback
|
||||
};
|
||||
|
||||
static const k052109_interface mia_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
mia_tile_callback
|
||||
};
|
||||
|
||||
static const k052109_interface tmnt_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
tmnt_tile_callback
|
||||
};
|
||||
|
||||
static const k052109_interface glfgreat_k052109_intf =
|
||||
{
|
||||
"gfx1", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_SHUFFLE8,
|
||||
tmnt_tile_callback
|
||||
};
|
||||
|
||||
static const k052109_interface sunsetbl_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
ssbl_tile_callback
|
||||
};
|
||||
|
||||
static const k052109_interface blswhstl_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
blswhstl_tile_callback
|
||||
};
|
||||
|
||||
/* 053245 interfaces */
|
||||
static const k05324x_interface lgtnfght_k05324x_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
0, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
lgtnfght_sprite_callback
|
||||
};
|
||||
|
||||
static const k05324x_interface prmrsocr_k05324x_intf =
|
||||
{
|
||||
"gfx2", 2,
|
||||
NORMAL_PLANE_ORDER,
|
||||
0, 0,
|
||||
KONAMI_ROM_SHUFFLE8,
|
||||
prmrsocr_sprite_callback
|
||||
};
|
||||
|
||||
static const k05324x_interface blswhstl_k05324x_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
0, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
blswhstl_sprite_callback
|
||||
};
|
||||
|
||||
static const k05324x_interface glfgreat_k05324x_intf =
|
||||
{
|
||||
"gfx2", 2,
|
||||
NORMAL_PLANE_ORDER,
|
||||
0, 0,
|
||||
KONAMI_ROM_SHUFFLE8,
|
||||
lgtnfght_sprite_callback
|
||||
};
|
||||
|
||||
/* 051960 interfaces */
|
||||
static const k051960_interface cuebrick_k051960_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
REVERSE_PLANE_ORDER,
|
||||
KONAMI_ROM_SHUFFLE8,
|
||||
mia_sprite_callback
|
||||
};
|
||||
|
||||
static const k051960_interface mia_k051960_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
REVERSE_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
mia_sprite_callback
|
||||
};
|
||||
|
||||
static const k051960_interface tmnt_k051960_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
REVERSE_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
tmnt_sprite_callback
|
||||
};
|
||||
|
||||
static const k051960_interface punkshot_k051960_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
punkshot_sprite_callback
|
||||
};
|
||||
|
||||
static const k051960_interface thndrx2_k051960_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
thndrx2_sprite_callback
|
||||
};
|
||||
|
||||
|
||||
/* 053936 interfaces */
|
||||
static const k053936_interface glfgreat_k053936_interface =
|
||||
{
|
||||
1, 85, 0 /* wrap, xoff, yoff */
|
||||
};
|
||||
|
||||
static const k053936_interface prmrsocr_k053936_interface =
|
||||
{
|
||||
0, 85, 1 /* wrap, xoff, yoff */
|
||||
};
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( cuebrick )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -2095,6 +2300,9 @@ static MACHINE_DRIVER_START( cuebrick )
|
||||
MDRV_VIDEO_START(cuebrick)
|
||||
MDRV_VIDEO_UPDATE(mia)
|
||||
|
||||
MDRV_K052109_ADD("k052109", cuebrick_k052109_intf)
|
||||
MDRV_K051960_ADD("k051960", cuebrick_k051960_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -2130,6 +2338,9 @@ static MACHINE_DRIVER_START( mia )
|
||||
MDRV_VIDEO_START(mia)
|
||||
MDRV_VIDEO_UPDATE(mia)
|
||||
|
||||
MDRV_K052109_ADD("k052109", mia_k052109_intf)
|
||||
MDRV_K051960_ADD("k051960", mia_k051960_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -2179,6 +2390,9 @@ static MACHINE_DRIVER_START( tmnt )
|
||||
MDRV_VIDEO_START(tmnt)
|
||||
MDRV_VIDEO_UPDATE(tmnt)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K051960_ADD("k051960", tmnt_k051960_intf)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -2226,6 +2440,10 @@ static MACHINE_DRIVER_START( punkshot )
|
||||
MDRV_VIDEO_START(punkshot)
|
||||
MDRV_VIDEO_UPDATE(punkshot)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K051960_ADD("k051960", punkshot_k051960_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -2263,6 +2481,10 @@ static MACHINE_DRIVER_START( lgtnfght )
|
||||
MDRV_VIDEO_START(lgtnfght)
|
||||
MDRV_VIDEO_UPDATE(lgtnfght)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", lgtnfght_k05324x_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2305,6 +2527,11 @@ static MACHINE_DRIVER_START( blswhstl )
|
||||
MDRV_VIDEO_UPDATE(lgtnfght)
|
||||
MDRV_VIDEO_EOF( blswhstl )
|
||||
|
||||
MDRV_K052109_ADD("k052109", blswhstl_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", blswhstl_k05324x_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
MDRV_K054000_ADD("k054000")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2362,6 +2589,11 @@ static MACHINE_DRIVER_START( glfgreat )
|
||||
MDRV_VIDEO_START(glfgreat)
|
||||
MDRV_VIDEO_UPDATE(glfgreat)
|
||||
|
||||
MDRV_K052109_ADD("k052109", glfgreat_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", glfgreat_k05324x_intf)
|
||||
MDRV_K053936_ADD("k053936", glfgreat_k053936_interface)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2412,6 +2644,11 @@ static MACHINE_DRIVER_START( prmrsocr )
|
||||
MDRV_VIDEO_START(prmrsocr)
|
||||
MDRV_VIDEO_UPDATE(glfgreat)
|
||||
|
||||
MDRV_K052109_ADD("k052109", glfgreat_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", prmrsocr_k05324x_intf)
|
||||
MDRV_K053936_ADD("k053936", prmrsocr_k053936_interface)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2454,6 +2691,10 @@ static MACHINE_DRIVER_START( tmnt2 )
|
||||
MDRV_VIDEO_START(lgtnfght)
|
||||
MDRV_VIDEO_UPDATE(tmnt2)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", lgtnfght_k05324x_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2495,6 +2736,10 @@ static MACHINE_DRIVER_START( ssriders )
|
||||
MDRV_VIDEO_START(lgtnfght)
|
||||
MDRV_VIDEO_UPDATE(tmnt2)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", lgtnfght_k05324x_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -2529,6 +2774,10 @@ static MACHINE_DRIVER_START( sunsetbl )
|
||||
|
||||
MDRV_PALETTE_LENGTH(2048)
|
||||
|
||||
MDRV_K052109_ADD("k052109", sunsetbl_k052109_intf)
|
||||
MDRV_K053245_ADD("k053245", lgtnfght_k05324x_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
MDRV_VIDEO_START(sunsetbl)
|
||||
MDRV_VIDEO_UPDATE(tmnt2)
|
||||
|
||||
@ -2569,6 +2818,11 @@ static MACHINE_DRIVER_START( thndrx2 )
|
||||
MDRV_VIDEO_START(thndrx2)
|
||||
MDRV_VIDEO_UPDATE(thndrx2)
|
||||
|
||||
MDRV_K052109_ADD("k052109", tmnt_k052109_intf)
|
||||
MDRV_K051960_ADD("k051960", thndrx2_k051960_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
MDRV_K054000_ADD("k054000")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -3690,11 +3944,6 @@ ROM_START( prmrsocrj )
|
||||
ROM_LOAD( "101a06.1d", 0x0000, 0x200000, CRC(4f48e043) SHA1(f50e8642d9d3a028c243777640e7cd13da1abf86) )
|
||||
ROM_END
|
||||
|
||||
static DRIVER_INIT( gfx )
|
||||
{
|
||||
konami_rom_deinterleave_2(machine, "gfx1");
|
||||
konami_rom_deinterleave_2(machine, "gfx2");
|
||||
}
|
||||
|
||||
static DRIVER_INIT( mia )
|
||||
{
|
||||
@ -3704,9 +3953,6 @@ static DRIVER_INIT( mia )
|
||||
int bits[32];
|
||||
UINT8 *temp;
|
||||
|
||||
|
||||
DRIVER_INIT_CALL(gfx);
|
||||
|
||||
/*
|
||||
along with the normal byte reordering, TMNT also needs the bits to
|
||||
be shuffled around because the ROMs are connected differently to the
|
||||
@ -3800,9 +4046,6 @@ static DRIVER_INIT( tmnt )
|
||||
int bits[32];
|
||||
UINT8 *temp;
|
||||
|
||||
|
||||
DRIVER_INIT_CALL(gfx);
|
||||
|
||||
/*
|
||||
along with the normal byte reordering, TMNT also needs the bits to
|
||||
be shuffled around because the ROMs are connected differently to the
|
||||
@ -3900,43 +4143,10 @@ static DRIVER_INIT( tmnt )
|
||||
free(temp);
|
||||
}
|
||||
|
||||
static void shuffle(UINT8 *buf,int len)
|
||||
{
|
||||
int i;
|
||||
UINT8 t;
|
||||
|
||||
if (len == 2) return;
|
||||
|
||||
if (len % 4) fatalerror("shuffle() - not modulo 4"); /* must not happen */
|
||||
|
||||
len /= 2;
|
||||
|
||||
for (i = 0;i < len/2;i++)
|
||||
{
|
||||
t = buf[len/2 + i];
|
||||
buf[len/2 + i] = buf[len + i];
|
||||
buf[len + i] = t;
|
||||
}
|
||||
|
||||
shuffle(buf,len);
|
||||
shuffle(buf + len,len);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( glfgreat )
|
||||
{
|
||||
/* ROMs are interleaved at byte level */
|
||||
shuffle(memory_region(machine, "gfx1"),memory_region_length(machine, "gfx1"));
|
||||
shuffle(memory_region(machine, "gfx2"),memory_region_length(machine, "gfx2"));
|
||||
}
|
||||
|
||||
static DRIVER_INIT( cuebrick )
|
||||
{
|
||||
machine->generic.nvram.u8 = (UINT8 *)cuebrick_nvram;
|
||||
machine->generic.nvram_size = 0x400*0x20;
|
||||
|
||||
/* ROMs are interleaved at byte level */
|
||||
shuffle(memory_region(machine, "gfx1"),memory_region_length(machine, "gfx1"));
|
||||
shuffle(memory_region(machine, "gfx2"),memory_region_length(machine, "gfx2"));
|
||||
}
|
||||
|
||||
GAME( 1989, cuebrick, 0, cuebrick, cuebrick, cuebrick, ROT0, "Konami", "Cue Brick (World version D)", 0 )
|
||||
@ -3954,43 +4164,43 @@ GAME( 1989, tmht2pa, tmnt, tmnt, tmnt2p, tmnt, ROT0, "Konami", "
|
||||
GAME( 1990, tmnt2pj, tmnt, tmnt, tmnt2p, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Japan 2 Players)", 0 )
|
||||
GAME( 1989, tmnt2po, tmnt, tmnt, tmnt2p, tmnt, ROT0, "Konami", "Teenage Mutant Ninja Turtles (Oceania 2 Players)", 0 )
|
||||
|
||||
GAME( 1990, punkshot, 0, punkshot, punkshot, gfx, ROT0, "Konami", "Punk Shot (US 4 Players)", 0 )
|
||||
GAME( 1990, punkshot2,punkshot, punkshot, punksht2, gfx, ROT0, "Konami", "Punk Shot (US 2 Players)", 0 )
|
||||
GAME( 1990, punkshotj,punkshot, punkshot, punksht2, gfx, ROT0, "Konami", "Punk Shot (Japan 2 Players)", 0 )
|
||||
GAME( 1990, punkshot, 0, punkshot, punkshot, 0, ROT0, "Konami", "Punk Shot (US 4 Players)", 0 )
|
||||
GAME( 1990, punkshot2,punkshot, punkshot, punksht2, 0, ROT0, "Konami", "Punk Shot (US 2 Players)", 0 )
|
||||
GAME( 1990, punkshotj,punkshot, punkshot, punksht2, 0, ROT0, "Konami", "Punk Shot (Japan 2 Players)", 0 )
|
||||
|
||||
GAME( 1990, lgtnfght, 0, lgtnfght, lgtnfght, gfx, ROT90, "Konami", "Lightning Fighters (World)", 0 )
|
||||
GAME( 1990, lgtnfghta,lgtnfght, lgtnfght, lgtnfght, gfx, ROT90, "Konami", "Lightning Fighters (Asia)", 0 )
|
||||
GAME( 1990, lgtnfghtu,lgtnfght, lgtnfght, lgtnfght, gfx, ROT90, "Konami", "Lightning Fighters (US)", 0 )
|
||||
GAME( 1990, trigon, lgtnfght, lgtnfght, lgtnfght, gfx, ROT90, "Konami", "Trigon (Japan)", 0 )
|
||||
GAME( 1990, lgtnfght, 0, lgtnfght, lgtnfght, 0, ROT90, "Konami", "Lightning Fighters (World)", 0 )
|
||||
GAME( 1990, lgtnfghta,lgtnfght, lgtnfght, lgtnfght, 0, ROT90, "Konami", "Lightning Fighters (Asia)", 0 )
|
||||
GAME( 1990, lgtnfghtu,lgtnfght, lgtnfght, lgtnfght, 0, ROT90, "Konami", "Lightning Fighters (US)", 0 )
|
||||
GAME( 1990, trigon, lgtnfght, lgtnfght, lgtnfght, 0, ROT90, "Konami", "Trigon (Japan)", 0 )
|
||||
|
||||
GAME( 1991, blswhstl, 0, blswhstl, blswhstl, gfx, ROT90, "Konami", "Bells & Whistles (Version L)", 0 )
|
||||
GAME( 1991, detatwin, blswhstl, blswhstl, blswhstl, gfx, ROT90, "Konami", "Detana!! Twin Bee (Japan ver. J)", 0 )
|
||||
GAME( 1991, blswhstl, 0, blswhstl, blswhstl, 0, ROT90, "Konami", "Bells & Whistles (Version L)", 0 )
|
||||
GAME( 1991, detatwin, blswhstl, blswhstl, blswhstl, 0, ROT90, "Konami", "Detana!! Twin Bee (Japan ver. J)", 0 )
|
||||
|
||||
GAME( 1991, glfgreat, 0, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1991, glfgreatj,glfgreat, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats (Japan)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1991, glfgreat, 0, glfgreat, glfgreat, 0, ROT0, "Konami", "Golfing Greats", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
|
||||
GAME( 1991, glfgreatj,glfgreat, glfgreat, glfgreat, 0, ROT0, "Konami", "Golfing Greats (Japan)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
|
||||
|
||||
GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", 0 ) // ver. UAA
|
||||
GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", 0 ) // ver. ADA
|
||||
GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", 0 ) // ver. EBA
|
||||
GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", 0 ) // ver. UDA
|
||||
GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", 0 ) // ver. UAA
|
||||
GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", 0 ) // ver. ADA
|
||||
GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, 0, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", 0 ) // ver. EBA
|
||||
GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, 0, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", 0 ) // ver. UDA
|
||||
|
||||
GAME( 1993, qgakumon, 0, tmnt2, qgakumon, gfx, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", 0 )
|
||||
GAME( 1993, qgakumon, 0, tmnt2, qgakumon, 0, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", 0 )
|
||||
|
||||
GAME( 1991, ssriders, 0, ssriders, ssridr4p, gfx, ROT0, "Konami", "Sunset Riders (4 Players ver EAC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersebd, ssriders, ssriders, ssriders, gfx, ROT0, "Konami", "Sunset Riders (2 Players ver EBD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersebc, ssriders, ssriders, ssriders, gfx, ROT0, "Konami", "Sunset Riders (2 Players ver EBC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersuda, ssriders, ssriders, ssrid4ps, gfx, ROT0, "Konami", "Sunset Riders (4 Players ver UDA)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssriderseaa, ssriders, ssriders, ssrid4ps, gfx, ROT0, "Konami", "Sunset Riders (4 Players ver EAA)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersuac, ssriders, ssriders, ssridr4p, gfx, ROT0, "Konami", "Sunset Riders (4 Players ver UAC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersubc, ssriders, ssriders, ssriders, gfx, ROT0, "Konami", "Sunset Riders (2 Players ver UBC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersabd, ssriders, ssriders, ssriders, gfx, ROT0, "Konami", "Sunset Riders (2 Players ver ABD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersadd, ssriders, ssriders, ssrid4ps, gfx, ROT0, "Konami", "Sunset Riders (4 Players ver ADD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersjbd, ssriders, ssriders, ssriders, gfx, ROT0, "Konami", "Sunset Riders (2 Players ver JBD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersb, ssriders, sunsetbl, sunsetbl, gfx, ROT0, "Konami", "Sunset Riders (bootleg 4 Players ver ADD)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssriders, 0, ssriders, ssridr4p, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersebd, ssriders, ssriders, ssriders, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersebc, ssriders, ssriders, ssriders, 0, ROT0, "Konami", "Sunset Riders (2 Players ver EBC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersuda, ssriders, ssriders, ssrid4ps, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UDA)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssriderseaa, ssriders, ssriders, ssrid4ps, 0, ROT0, "Konami", "Sunset Riders (4 Players ver EAA)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersuac, ssriders, ssriders, ssridr4p, 0, ROT0, "Konami", "Sunset Riders (4 Players ver UAC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersubc, ssriders, ssriders, ssriders, 0, ROT0, "Konami", "Sunset Riders (2 Players ver UBC)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersabd, ssriders, ssriders, ssriders, 0, ROT0, "Konami", "Sunset Riders (2 Players ver ABD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersadd, ssriders, ssriders, ssrid4ps, 0, ROT0, "Konami", "Sunset Riders (4 Players ver ADD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersjbd, ssriders, ssriders, ssriders, 0, ROT0, "Konami", "Sunset Riders (2 Players ver JBD)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1991, ssridersb, ssriders, sunsetbl, sunsetbl, 0, ROT0, "Konami", "Sunset Riders (bootleg 4 Players ver ADD)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1991, thndrx2, 0, thndrx2, thndrx2, gfx, ROT0, "Konami", "Thunder Cross II (World)", 0 )
|
||||
GAME( 1991, thndrx2a, thndrx2, thndrx2, thndrx2, gfx, ROT0, "Konami", "Thunder Cross II (Asia)", 0 )
|
||||
GAME( 1991, thndrx2j, thndrx2, thndrx2, thndrx2, gfx, ROT0, "Konami", "Thunder Cross II (Japan)", 0 )
|
||||
GAME( 1991, thndrx2, 0, thndrx2, thndrx2, 0, ROT0, "Konami", "Thunder Cross II (World)", 0 )
|
||||
GAME( 1991, thndrx2a, thndrx2, thndrx2, thndrx2, 0, ROT0, "Konami", "Thunder Cross II (Asia)", 0 )
|
||||
GAME( 1991, thndrx2j, thndrx2, thndrx2, thndrx2, 0, ROT0, "Konami", "Thunder Cross II (Japan)", 0 )
|
||||
|
||||
GAME( 1993, prmrsocr, 0, prmrsocr, prmrsocr, glfgreat, ROT0, "Konami", "Premier Soccer (ver EAB)", 0 )
|
||||
GAME( 1993, prmrsocrj,prmrsocr, prmrsocr, prmrsocr, glfgreat, ROT0, "Konami", "Premier Soccer (ver JAB)", 0 )
|
||||
GAME( 1993, prmrsocr, 0, prmrsocr, prmrsocr, 0, ROT0, "Konami", "Premier Soccer (ver EAB)", 0 )
|
||||
GAME( 1993, prmrsocrj,prmrsocr, prmrsocr, prmrsocr, 0, ROT0, "Konami", "Premier Soccer (ver JAB)", 0 )
|
||||
|
@ -12,7 +12,7 @@ Added dsw locations and verified factory setting based on Guru's notes
|
||||
#include "driver.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
||||
@ -22,82 +22,12 @@ WRITE16_HANDLER( ultraman_gfxctrl_w );
|
||||
VIDEO_START( ultraman );
|
||||
VIDEO_UPDATE( ultraman );
|
||||
|
||||
extern void ultraman_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow);
|
||||
extern void ultraman_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags);
|
||||
extern void ultraman_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags);
|
||||
extern void ultraman_zoom_callback_2(running_machine *machine, int *code,int *color,int *flags);
|
||||
|
||||
|
||||
static READ16_HANDLER( ultraman_K051937_r )
|
||||
{
|
||||
return K051937_r(space, offset);
|
||||
}
|
||||
|
||||
static READ16_HANDLER( ultraman_K051960_r )
|
||||
{
|
||||
return K051960_r(space, offset);
|
||||
}
|
||||
|
||||
static READ16_HANDLER( ultraman_K051316_0_r )
|
||||
{
|
||||
return K051316_0_r(space, offset);
|
||||
}
|
||||
|
||||
static READ16_HANDLER( ultraman_K051316_1_r )
|
||||
{
|
||||
return K051316_1_r(space, offset);
|
||||
}
|
||||
|
||||
static READ16_HANDLER( ultraman_K051316_2_r )
|
||||
{
|
||||
return K051316_2_r(space, offset);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_0_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_0_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_1_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_1_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_2_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_2_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_ctrl_0_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_ctrl_0_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_ctrl_1_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_ctrl_1_w(space, offset, data & 0xff);
|
||||
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051316_ctrl_2_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051316_ctrl_2_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051937_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051937_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( ultraman_K051960_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
K051960_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( sound_cmd_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
@ -111,7 +41,6 @@ static WRITE16_HANDLER( sound_irq_trigger_w )
|
||||
}
|
||||
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x080000, 0x08ffff) AM_RAM
|
||||
@ -125,14 +54,14 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x1c0020, 0x1c0021) AM_WRITE(sound_cmd_w)
|
||||
AM_RANGE(0x1c0028, 0x1c0029) AM_WRITE(sound_irq_trigger_w)
|
||||
AM_RANGE(0x1c0030, 0x1c0031) AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x204000, 0x204fff) AM_READWRITE(ultraman_K051316_0_r, ultraman_K051316_0_w) /* K051316 #0 RAM */
|
||||
AM_RANGE(0x205000, 0x205fff) AM_READWRITE(ultraman_K051316_1_r, ultraman_K051316_1_w) /* K051316 #1 RAM */
|
||||
AM_RANGE(0x206000, 0x206fff) AM_READWRITE(ultraman_K051316_2_r, ultraman_K051316_2_w) /* K051316 #2 RAM */
|
||||
AM_RANGE(0x207f80, 0x207f9f) AM_WRITE(ultraman_K051316_ctrl_0_w ) /* K051316 #0 registers */
|
||||
AM_RANGE(0x207fa0, 0x207fbf) AM_WRITE(ultraman_K051316_ctrl_1_w ) /* K051316 #1 registers */
|
||||
AM_RANGE(0x207fc0, 0x207fdf) AM_WRITE(ultraman_K051316_ctrl_2_w ) /* K051316 #2 registers */
|
||||
AM_RANGE(0x304000, 0x30400f) AM_READWRITE(ultraman_K051937_r, ultraman_K051937_w) /* Sprite control */
|
||||
AM_RANGE(0x304800, 0x304fff) AM_READWRITE(ultraman_K051960_r, ultraman_K051960_w) /* Sprite RAM */
|
||||
AM_RANGE(0x204000, 0x204fff) AM_DEVREADWRITE8("k051316_1", k051316_r, k051316_w, 0x00ff) /* K051316 #0 RAM */
|
||||
AM_RANGE(0x205000, 0x205fff) AM_DEVREADWRITE8("k051316_2", k051316_r, k051316_w, 0x00ff) /* K051316 #1 RAM */
|
||||
AM_RANGE(0x206000, 0x206fff) AM_DEVREADWRITE8("k051316_3", k051316_r, k051316_w, 0x00ff) /* K051316 #2 RAM */
|
||||
AM_RANGE(0x207f80, 0x207f9f) AM_DEVWRITE8("k051316_1", k051316_ctrl_w, 0x00ff) /* K051316 #0 registers */
|
||||
AM_RANGE(0x207fa0, 0x207fbf) AM_DEVWRITE8("k051316_2", k051316_ctrl_w, 0x00ff) /* K051316 #1 registers */
|
||||
AM_RANGE(0x207fc0, 0x207fdf) AM_DEVWRITE8("k051316_3", k051316_ctrl_w, 0x00ff) /* K051316 #2 registers */
|
||||
AM_RANGE(0x304000, 0x30400f) AM_DEVREADWRITE8("k051960", k051937_r, k051937_w, 0x00ff) /* Sprite control */
|
||||
AM_RANGE(0x304800, 0x304fff) AM_DEVREADWRITE8("k051960", k051960_r, k051960_w, 0x00ff) /* Sprite RAM */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
@ -239,7 +168,37 @@ static INPUT_PORTS_START( ultraman )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static const k051960_interface ultraman_k051960_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
ultraman_sprite_callback
|
||||
};
|
||||
|
||||
static const k051316_interface ultraman_k051316_intf_0 =
|
||||
{
|
||||
"gfx2", 1,
|
||||
4, FALSE, 0,
|
||||
0, 8, 0,
|
||||
ultraman_zoom_callback_0
|
||||
};
|
||||
|
||||
static const k051316_interface ultraman_k051316_intf_1 =
|
||||
{
|
||||
"gfx3", 2,
|
||||
4, FALSE, 0,
|
||||
0, 8, 0,
|
||||
ultraman_zoom_callback_1
|
||||
};
|
||||
|
||||
static const k051316_interface ultraman_k051316_intf_2 =
|
||||
{
|
||||
"gfx4", 3,
|
||||
4, TRUE, 0,
|
||||
0, 8, 0,
|
||||
ultraman_zoom_callback_2
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( ultraman )
|
||||
|
||||
@ -269,6 +228,11 @@ static MACHINE_DRIVER_START( ultraman )
|
||||
MDRV_VIDEO_START(ultraman)
|
||||
MDRV_VIDEO_UPDATE(ultraman)
|
||||
|
||||
MDRV_K051960_ADD("k051960", ultraman_k051960_intf)
|
||||
MDRV_K051316_ADD("k051316_1", ultraman_k051316_intf_0)
|
||||
MDRV_K051316_ADD("k051316_2", ultraman_k051316_intf_1)
|
||||
MDRV_K051316_ADD("k051316_3", ultraman_k051316_intf_2)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -322,11 +286,4 @@ ROM_START( ultraman )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
static DRIVER_INIT( ultraman )
|
||||
{
|
||||
konami_rom_deinterleave_2(machine, "gfx1");
|
||||
}
|
||||
|
||||
|
||||
GAME( 1991, ultraman, 0, ultraman, ultraman, ultraman, ROT0, "Banpresto/Bandai", "Ultraman (Japan)", 0 )
|
||||
GAME( 1991, ultraman, 0, ultraman, ultraman, 0, ROT0, "Banpresto/Bandai", "Ultraman (Japan)", 0 )
|
||||
|
@ -273,7 +273,7 @@ TODO:
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "deprecat.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k007232.h"
|
||||
@ -305,6 +305,8 @@ VIDEO_START( wecleman );
|
||||
VIDEO_UPDATE( hotchase );
|
||||
VIDEO_START( hotchase );
|
||||
|
||||
extern void hotchase_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags);
|
||||
extern void hotchase_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags);
|
||||
|
||||
/***************************************************************************
|
||||
Common Routines
|
||||
@ -564,46 +566,16 @@ ADDRESS_MAP_END
|
||||
Hot Chase Main CPU Handlers
|
||||
***************************************************************************/
|
||||
|
||||
static READ16_HANDLER( hotchase_K051316_0_r )
|
||||
{
|
||||
return K051316_0_r(space, offset) & 0xff;
|
||||
}
|
||||
|
||||
static READ16_HANDLER( hotchase_K051316_1_r )
|
||||
{
|
||||
return K051316_1_r(space, offset) & 0xff;
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( hotchase_K051316_0_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7) K051316_0_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( hotchase_K051316_1_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7) K051316_1_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( hotchase_K051316_ctrl_0_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7) K051316_ctrl_0_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( hotchase_K051316_ctrl_1_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7) K051316_ctrl_1_w(space, offset, data & 0xff);
|
||||
}
|
||||
|
||||
static WRITE16_HANDLER( hotchase_soundlatch_w );
|
||||
|
||||
static ADDRESS_MAP_START( hotchase_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x040000, 0x063fff) AM_RAM // RAM (weird size!?)
|
||||
AM_RANGE(0x080000, 0x080011) AM_RAM_WRITE(blitter_w) AM_BASE(&blitter_regs) // Blitter
|
||||
AM_RANGE(0x100000, 0x100fff) AM_READWRITE(hotchase_K051316_0_r, hotchase_K051316_0_w) // Background
|
||||
AM_RANGE(0x101000, 0x10101f) AM_WRITE(hotchase_K051316_ctrl_0_w) // Background Ctrl
|
||||
AM_RANGE(0x102000, 0x102fff) AM_READWRITE(hotchase_K051316_1_r, hotchase_K051316_1_w) // Foreground
|
||||
AM_RANGE(0x103000, 0x10301f) AM_WRITE(hotchase_K051316_ctrl_1_w) // Foreground Ctrl
|
||||
AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE8("k051316_1", k051316_r, k051316_w, 0x00ff) // Background
|
||||
AM_RANGE(0x101000, 0x10101f) AM_DEVWRITE8("k051316_1", k051316_ctrl_w, 0x00ff) // Background Ctrl
|
||||
AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE8("k051316_2", k051316_r, k051316_w, 0x00ff) // Foreground
|
||||
AM_RANGE(0x103000, 0x10301f) AM_DEVWRITE8("k051316_2", k051316_ctrl_w, 0x00ff) // Foreground Ctrl
|
||||
AM_RANGE(0x110000, 0x111fff) AM_RAM_WRITE(hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("share1") // Shared with sub CPU
|
||||
AM_RANGE(0x130000, 0x130fff) AM_RAM AM_BASE_GENERIC(spriteram) // Sprites
|
||||
@ -1135,6 +1107,22 @@ static INTERRUPT_GEN( hotchase_sound_timer )
|
||||
generic_pulse_irq_line(device, M6809_FIRQ_LINE);
|
||||
}
|
||||
|
||||
static const k051316_interface hotchase_k051316_intf_0 =
|
||||
{
|
||||
"gfx2", 1,
|
||||
4, FALSE, 0,
|
||||
1, -0xb0 / 2, -16,
|
||||
hotchase_zoom_callback_0
|
||||
};
|
||||
|
||||
static const k051316_interface hotchase_k051316_intf_1 =
|
||||
{
|
||||
"gfx3", 2,
|
||||
4, FALSE, 0,
|
||||
0, -0xb0 / 2, -16,
|
||||
hotchase_zoom_callback_1
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( hotchase )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -1167,6 +1155,9 @@ static MACHINE_DRIVER_START( hotchase )
|
||||
MDRV_VIDEO_START(hotchase)
|
||||
MDRV_VIDEO_UPDATE(hotchase)
|
||||
|
||||
MDRV_K051316_ADD("k051316_1", hotchase_k051316_intf_0)
|
||||
MDRV_K051316_ADD("k051316_2", hotchase_k051316_intf_1)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
@ -16,14 +16,14 @@ likewise be a 2 screen game
|
||||
#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/z80/z80.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/k054539.h"
|
||||
#include "rendlay.h"
|
||||
#include "includes/xmen.h"
|
||||
#include "konamipt.h"
|
||||
#include "includes/konamipt.h"
|
||||
|
||||
UINT16 xmen_current_frame;
|
||||
|
||||
@ -91,7 +91,10 @@ logerror("%06x eeprom_r\n",cpu_get_pc(space->cpu));
|
||||
|
||||
static WRITE16_HANDLER( eeprom_w )
|
||||
{
|
||||
logerror("%06x: write %04x to 108000\n",cpu_get_pc(space->cpu),data);
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
const device_config *k053246 = devtag_get_device(space->machine, "k053246");
|
||||
|
||||
logerror("%06x: write %04x to 108000\n",cpu_get_pc(space->cpu),data);
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0 = coin counter */
|
||||
@ -107,9 +110,9 @@ logerror("%06x: write %04x to 108000\n",cpu_get_pc(space->cpu),data);
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
/* bit 8 = enable sprite ROM reading */
|
||||
K053246_set_OBJCHA_line((data & 0x0100) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k053246_set_objcha_line(k053246, (data & 0x0100) ? ASSERT_LINE : CLEAR_LINE);
|
||||
/* bit 9 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,22 +164,22 @@ static WRITE8_HANDLER( sound_bankswitch_w )
|
||||
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x080000, 0x0fffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x100fff) AM_READWRITE(K053247_word_r, K053247_word_w)
|
||||
AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("k053246", k053247_word_r, k053247_word_w)
|
||||
AM_RANGE(0x101000, 0x101fff) AM_RAM
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
|
||||
AM_RANGE(0x108020, 0x108027) AM_WRITE(K053246_word_w)
|
||||
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053246_word_w)
|
||||
AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
|
||||
AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w)
|
||||
AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r)
|
||||
AM_RANGE(0x108060, 0x10807f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
|
||||
AM_RANGE(0x10a004, 0x10a005) AM_READ(eeprom_r)
|
||||
AM_RANGE(0x10a00c, 0x10a00d) AM_READ(K053246_word_r)
|
||||
AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053246_word_r)
|
||||
AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w)
|
||||
AM_RANGE(0x18c000, 0x197fff) AM_READWRITE(K052109_lsb_r, K052109_lsb_w)
|
||||
AM_RANGE(0x18c000, 0x197fff) AM_DEVREADWRITE("k052109", k052109_lsb_r, k052109_lsb_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
@ -200,19 +203,19 @@ static ADDRESS_MAP_START( 6p_main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x103000, 0x103fff) AM_RAM /* 6p - a buffer? */
|
||||
AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
|
||||
AM_RANGE(0x108020, 0x108027) AM_WRITE(K053246_word_w) /* sprites */
|
||||
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053246_word_w) /* sprites */
|
||||
AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
|
||||
AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w)
|
||||
AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r)
|
||||
AM_RANGE(0x108060, 0x10807f) AM_WRITE(K053251_lsb_w)
|
||||
AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_lsb_w)
|
||||
AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_WRITE(watchdog_reset16_w)
|
||||
AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
|
||||
AM_RANGE(0x10a004, 0x10a005) AM_READ(eeprom_r)
|
||||
AM_RANGE(0x10a006, 0x10a007) AM_READ_PORT("P5_P6")
|
||||
AM_RANGE(0x10a00c, 0x10a00d) AM_READ(K053246_word_r) /* sprites */
|
||||
AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053246_word_r) /* sprites */
|
||||
AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */
|
||||
AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w)
|
||||
/* AM_RANGE(0x18c000, 0x197fff) AM_WRITE(K052109_lsb_w) AM_BASE(&xmen6p_tilemapleft) */
|
||||
/* AM_RANGE(0x18c000, 0x197fff) AM_DEVWRITE("k052109", k052109_lsb_w) AM_BASE(&xmen6p_tilemapleft) */
|
||||
AM_RANGE(0x18c000, 0x197fff) AM_RAM AM_BASE(&xmen6p_tilemapleft) /* left tilemap (p1,p2,p3 counters) */
|
||||
/*
|
||||
AM_RANGE(0x1ac000, 0x1af7ff) AM_READONLY
|
||||
@ -346,6 +349,25 @@ static MACHINE_START( xmen )
|
||||
state_save_register_postload(machine, xmen_postload, NULL);
|
||||
}
|
||||
|
||||
|
||||
static const k052109_interface xmen_k052109_intf =
|
||||
{
|
||||
"gfx1", 0,
|
||||
NORMAL_PLANE_ORDER,
|
||||
KONAMI_ROM_DEINTERLEAVE_2,
|
||||
xmen_tile_callback
|
||||
};
|
||||
|
||||
static const k053247_interface xmen_k053246_intf =
|
||||
{
|
||||
"screen",
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
53, -2,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
xmen_sprite_callback
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( xmen )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -371,9 +393,12 @@ static MACHINE_DRIVER_START( xmen )
|
||||
MDRV_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 ) /* correct, same issue of TMNT2 */
|
||||
MDRV_PALETTE_LENGTH(2048)
|
||||
|
||||
MDRV_VIDEO_START(xmen)
|
||||
MDRV_VIDEO_UPDATE(xmen)
|
||||
|
||||
MDRV_K052109_ADD("k052109", xmen_k052109_intf)
|
||||
MDRV_K053246_ADD("k053246", xmen_k053246_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -402,7 +427,7 @@ static INTERRUPT_GEN( xmen6p_interrupt )
|
||||
}
|
||||
else
|
||||
{
|
||||
// if (xmen_irqenabled&0x04)
|
||||
// if (xmen_irqenabled & 0x04)
|
||||
// {
|
||||
irq3_line_hold(device);
|
||||
// xmen_current_frame = 0x00;
|
||||
@ -411,6 +436,16 @@ static INTERRUPT_GEN( xmen6p_interrupt )
|
||||
}
|
||||
}
|
||||
|
||||
static const k053247_interface xmen6p_k053246_intf =
|
||||
{
|
||||
"lscreen", /* is this correct? */
|
||||
"gfx2", 1,
|
||||
NORMAL_PLANE_ORDER,
|
||||
53, -2,
|
||||
KONAMI_ROM_DEINTERLEAVE_4,
|
||||
xmen_sprite_callback
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START( xmen6p )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -421,7 +456,6 @@ static MACHINE_DRIVER_START( xmen6p )
|
||||
MDRV_CPU_ADD("audiocpu", Z80,8000000) /* verified with M1, guessed but accurate */
|
||||
MDRV_CPU_PROGRAM_MAP(sound_map)
|
||||
|
||||
|
||||
MDRV_NVRAM_HANDLER(xmen)
|
||||
|
||||
MDRV_MACHINE_RESET(xmen6p)
|
||||
@ -445,11 +479,14 @@ static MACHINE_DRIVER_START( xmen6p )
|
||||
MDRV_SCREEN_SIZE(64*8, 32*8)
|
||||
MDRV_SCREEN_VISIBLE_AREA(16*8, 52*8-1, 2*8, 30*8-1)
|
||||
|
||||
|
||||
MDRV_VIDEO_START(xmen6p)
|
||||
MDRV_VIDEO_UPDATE(xmen6p)
|
||||
MDRV_VIDEO_EOF(xmen6p)
|
||||
|
||||
MDRV_K052109_ADD("k052109", xmen_k052109_intf)
|
||||
MDRV_K053246_ADD("k053246", xmen6p_k053246_intf)
|
||||
MDRV_K053251_ADD("k053251")
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
@ -774,21 +811,12 @@ ROM_START( xmen6pu )
|
||||
ROM_LOAD( "065-a06.1d", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
|
||||
ROM_END
|
||||
|
||||
GAME( 1992, xmen, 0, xmen, xmen, 0, ROT0, "Konami", "X-Men (4 Players ver UBB)", 0 ) /* Second "version" letter denotes players, A=2 players, B=4 players, C=6 players ??? */
|
||||
GAME( 1992, xmenj, xmen, xmen, xmen, 0, ROT0, "Konami", "X-Men (4 Players ver JBA)", 0 )
|
||||
GAME( 1992, xmene, xmen, xmen, xmen, 0, ROT0, "Konami", "X-Men (4 Players ver EBA)", 0 )
|
||||
GAME( 1992, xmen2pe, xmen, xmen, xmen2p, 0, ROT0, "Konami", "X-Men (2 Players ver EAA)", 0 )
|
||||
GAME( 1992, xmen2pa, xmen, xmen, xmen2p, 0, ROT0, "Konami", "X-Men (2 Players ver AAA)", 0 )
|
||||
GAME( 1992, xmen2pj, xmen, xmen, xmen2p, 0, ROT0, "Konami", "X-Men (2 Players ver JAA)", 0 )
|
||||
|
||||
|
||||
|
||||
static DRIVER_INIT( xmen )
|
||||
{
|
||||
konami_rom_deinterleave_2(machine, "gfx1");
|
||||
konami_rom_deinterleave_4(machine, "gfx2");
|
||||
}
|
||||
|
||||
GAME( 1992, xmen, 0, xmen, xmen, xmen, ROT0, "Konami", "X-Men (4 Players ver UBB)", 0 ) /* Second "version" letter denotes players, A=2 players, B=4 players, C=6 players ??? */
|
||||
GAME( 1992, xmenj, xmen, xmen, xmen, xmen, ROT0, "Konami", "X-Men (4 Players ver JBA)", 0 )
|
||||
GAME( 1992, xmene, xmen, xmen, xmen, xmen, ROT0, "Konami", "X-Men (4 Players ver EBA)", 0 )
|
||||
GAME( 1992, xmen2pe, xmen, xmen, xmen2p, xmen, ROT0, "Konami", "X-Men (2 Players ver EAA)", 0 )
|
||||
GAME( 1992, xmen2pa, xmen, xmen, xmen2p, xmen, ROT0, "Konami", "X-Men (2 Players ver AAA)", 0 )
|
||||
GAME( 1992, xmen2pj, xmen, xmen, xmen2p, xmen, ROT0, "Konami", "X-Men (2 Players ver JAA)", 0 )
|
||||
|
||||
GAME( 1992, xmen6p, xmen, xmen6p,xmen6p, xmen, ROT0, "Konami", "X-Men (6 Players ver ECB)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, xmen6pu, xmen, xmen6p,xmen6p, xmen, ROT0, "Konami", "X-Men (6 Players ver UCB)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, xmen6p, xmen, xmen6p,xmen6p, 0, ROT0, "Konami", "X-Men (6 Players ver ECB)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1992, xmen6pu, xmen, xmen6p,xmen6p, 0, ROT0, "Konami", "X-Men (6 Players ver UCB)", GAME_IMPERFECT_GRAPHICS )
|
||||
|
@ -171,7 +171,7 @@ Check gticlub.c for details on the bottom board.
|
||||
#include "machine/konppc.h"
|
||||
#include "machine/adc083x.h"
|
||||
#include "machine/eepromdev.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "video/gticlub.h"
|
||||
#include "sound/k056800.h"
|
||||
|
||||
@ -236,39 +236,36 @@ static WRITE32_HANDLER( paletteram32_w )
|
||||
|
||||
#define NUM_LAYERS 2
|
||||
|
||||
static void game_tile_callback(int layer, int *code, int *color, int *flags)
|
||||
static void game_tile_callback(running_machine *machine, int layer, int *code, int *color, int *flags)
|
||||
{
|
||||
*color += layer * 0x40;
|
||||
}
|
||||
|
||||
static VIDEO_START( zr107 )
|
||||
{
|
||||
static int scrolld[NUM_LAYERS][4][2] = {
|
||||
{{ 0, 0}, {0, 0}, {0, 0}, {0, 0}},
|
||||
{{ 0, 0}, {0, 0}, {0, 0}, {0, 0}}
|
||||
};
|
||||
const device_config *k056832 = devtag_get_device(machine, "k056832");
|
||||
|
||||
k056832_set_layer_offs(k056832, 0, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 1, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 2, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 3, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 4, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 5, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 6, -29, -27);
|
||||
k056832_set_layer_offs(k056832, 7, -29, -27);
|
||||
|
||||
K056832_vh_start(machine, "gfx2", K056832_BPP_8, 1, scrolld, game_tile_callback, 0);
|
||||
K001006_init(machine);
|
||||
K001005_init(machine);
|
||||
}
|
||||
|
||||
static VIDEO_UPDATE( zr107 )
|
||||
{
|
||||
const device_config *k056832 = devtag_get_device(screen->machine, "k056832");
|
||||
bitmap_fill(bitmap, cliprect, screen->machine->pens[0]);
|
||||
|
||||
K056832_set_LayerOffset(0, -29, -27);
|
||||
K056832_set_LayerOffset(1, -29, -27);
|
||||
K056832_set_LayerOffset(2, -29, -27);
|
||||
K056832_set_LayerOffset(3, -29, -27);
|
||||
K056832_set_LayerOffset(4, -29, -27);
|
||||
K056832_set_LayerOffset(5, -29, -27);
|
||||
K056832_set_LayerOffset(6, -29, -27);
|
||||
K056832_set_LayerOffset(7, -29, -27);
|
||||
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 1, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 1, 0, 0);
|
||||
K001005_draw(bitmap, cliprect);
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 0, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 0, 0, 0);
|
||||
|
||||
draw_7segment_led(bitmap, 3, 3, led_reg0);
|
||||
draw_7segment_led(bitmap, 9, 3, led_reg1);
|
||||
@ -409,11 +406,11 @@ static MACHINE_START( zr107 )
|
||||
|
||||
static ADDRESS_MAP_START( zr107_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE(&workram) /* Work RAM */
|
||||
AM_RANGE(0x74000000, 0x74003fff) AM_READWRITE(K056832_ram_long_r, K056832_ram_long_w)
|
||||
AM_RANGE(0x74020000, 0x7402003f) AM_READWRITE(K056832_long_r, K056832_long_w)
|
||||
AM_RANGE(0x74000000, 0x74003fff) AM_DEVREADWRITE("k056832", k056832_ram_long_r, k056832_ram_long_w)
|
||||
AM_RANGE(0x74020000, 0x7402003f) AM_DEVREADWRITE("k056832", k056832_long_r, k056832_long_w)
|
||||
AM_RANGE(0x74060000, 0x7406003f) AM_READWRITE(ccu_r, ccu_w)
|
||||
AM_RANGE(0x74080000, 0x74081fff) AM_RAM_WRITE(paletteram32_w) AM_BASE_GENERIC(paletteram)
|
||||
AM_RANGE(0x740a0000, 0x740a3fff) AM_READ(K056832_rom_long_r)
|
||||
AM_RANGE(0x740a0000, 0x740a3fff) AM_DEVREAD("k056832", k056832_rom_long_r)
|
||||
AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */
|
||||
AM_RANGE(0x78010000, 0x7801ffff) AM_WRITE(cgboard_dsp_shared_w_ppc)
|
||||
AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE(K001006_0_r, K001006_0_w)
|
||||
@ -699,6 +696,14 @@ static const k056800_interface zr107_k056800_interface =
|
||||
sound_irq_callback
|
||||
};
|
||||
|
||||
static const k056832_interface zr107_k056832_intf =
|
||||
{
|
||||
"gfx2", 1,
|
||||
K056832_BPP_8,
|
||||
1, 0,
|
||||
KONAMI_ROM_DEINTERLEAVE_NONE,
|
||||
game_tile_callback, "none"
|
||||
};
|
||||
|
||||
/* PowerPC interrupts
|
||||
|
||||
@ -749,6 +754,8 @@ static MACHINE_DRIVER_START( zr107 )
|
||||
MDRV_VIDEO_START(zr107)
|
||||
MDRV_VIDEO_UPDATE(zr107)
|
||||
|
||||
MDRV_K056832_ADD("k056832", zr107_k056832_intf)
|
||||
|
||||
MDRV_K056800_ADD("k056800", zr107_k056800_interface)
|
||||
|
||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
@ -9,7 +9,9 @@ extern UINT16 *xmen6p_tilemapright;
|
||||
|
||||
/*----------- defined in video/xmen.c -----------*/
|
||||
|
||||
VIDEO_START( xmen );
|
||||
void xmen_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority);
|
||||
void xmen_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask);
|
||||
|
||||
VIDEO_START( xmen6p );
|
||||
VIDEO_UPDATE( xmen );
|
||||
VIDEO_UPDATE( xmen6p );
|
||||
|
@ -9,18 +9,18 @@
|
||||
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
static tilemap *dbz_bg1_tilemap, *dbz_bg2_tilemap;
|
||||
UINT16 *dbz_bg1_videoram, *dbz_bg2_videoram;
|
||||
static int sprite_colorbase, layer_colorbase[6], layer[5], layerpri[5];
|
||||
|
||||
static void dbz_tile_callback(int layer, int *code, int *color, int *flags)
|
||||
void dbz_tile_callback(running_machine *machine, int layer, int *code, int *color, int *flags)
|
||||
{
|
||||
*color = (layer_colorbase[layer] << 1) + ((*color & 0x3c) >> 2);
|
||||
}
|
||||
|
||||
static void dbz_sprite_callback(int *code, int *color, int *priority_mask)
|
||||
void dbz_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask)
|
||||
{
|
||||
int pri = (*color & 0x3c0) >> 5;
|
||||
|
||||
@ -93,48 +93,46 @@ static void sortlayers(int *layer, int *pri)
|
||||
|
||||
VIDEO_START( dbz )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K056832_vh_start(machine, "gfx1", K056832_BPP_4, 1, NULL, dbz_tile_callback, 1);
|
||||
K053247_vh_start(machine, "gfx2", -52, 16, NORMAL_PLANE_ORDER, dbz_sprite_callback);
|
||||
const device_config *k056832 = devtag_get_device(machine, "k056832");
|
||||
const device_config *k053246 = devtag_get_device(machine, "k053246");
|
||||
|
||||
dbz_bg1_tilemap = tilemap_create(machine, get_dbz_bg1_tile_info,tilemap_scan_rows, 16, 16,64,32);
|
||||
dbz_bg2_tilemap = tilemap_create(machine, get_dbz_bg2_tile_info,tilemap_scan_rows, 16, 16,64,32);
|
||||
dbz_bg1_tilemap = tilemap_create(machine, get_dbz_bg1_tile_info, tilemap_scan_rows, 16, 16, 64, 32);
|
||||
dbz_bg2_tilemap = tilemap_create(machine, get_dbz_bg2_tile_info, tilemap_scan_rows, 16, 16, 64, 32);
|
||||
|
||||
tilemap_set_transparent_pen(dbz_bg1_tilemap,0);
|
||||
tilemap_set_transparent_pen(dbz_bg2_tilemap,0);
|
||||
|
||||
K053936_wraparound_enable(0, 1);
|
||||
K053936_set_offset(0, -46, -16);
|
||||
|
||||
K053936_wraparound_enable(1, 1);
|
||||
K053936_set_offset(1, -46, -16);
|
||||
tilemap_set_transparent_pen(dbz_bg1_tilemap, 0);
|
||||
tilemap_set_transparent_pen(dbz_bg2_tilemap, 0);
|
||||
|
||||
if (!strcmp(machine->gamedrv->name, "dbz"))
|
||||
K056832_set_LayerOffset(0, -34, -16);
|
||||
k056832_set_layer_offs(k056832, 0, -34, -16);
|
||||
else
|
||||
K056832_set_LayerOffset(0, -35, -16);
|
||||
k056832_set_layer_offs(k056832, 0, -35, -16);
|
||||
|
||||
K056832_set_LayerOffset(1, -31, -16);
|
||||
K056832_set_LayerOffset(3, -31, -16); //?
|
||||
k056832_set_layer_offs(k056832, 1, -31, -16);
|
||||
k056832_set_layer_offs(k056832, 3, -31, -16); //?
|
||||
|
||||
K053247_set_SpriteOffset(-87,32);
|
||||
k053247_set_sprite_offs(k053246, -87, 32);
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( dbz )
|
||||
{
|
||||
static const int K053251_CI[6] = { K053251_CI3, K053251_CI4, K053251_CI4, K053251_CI4, K053251_CI2, K053251_CI1 };
|
||||
const device_config *k056832 = devtag_get_device(screen->machine, "k056832");
|
||||
const device_config *k053246 = devtag_get_device(screen->machine, "k053246");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
const device_config *k053936_1 = devtag_get_device(screen->machine, "k053936_1");
|
||||
const device_config *k053936_2 = devtag_get_device(screen->machine, "k053936_2");
|
||||
int plane, new_colorbase;
|
||||
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
|
||||
for (plane=0; plane<6; plane++)
|
||||
for (plane = 0; plane < 6; plane++)
|
||||
{
|
||||
new_colorbase = K053251_get_palette_index(K053251_CI[plane]);
|
||||
new_colorbase = k053251_get_palette_index(k053251, K053251_CI[plane]);
|
||||
if (layer_colorbase[plane] != new_colorbase)
|
||||
{
|
||||
layer_colorbase[plane] = new_colorbase;
|
||||
if(plane <= 3)
|
||||
K056832_mark_plane_dirty(plane);
|
||||
if (plane <= 3)
|
||||
k056832_mark_plane_dirty(k056832, plane);
|
||||
else if(plane == 4)
|
||||
tilemap_mark_all_tiles_dirty(dbz_bg1_tilemap);
|
||||
else if(plane == 5)
|
||||
@ -145,25 +143,25 @@ VIDEO_UPDATE( dbz )
|
||||
//layers priority
|
||||
|
||||
layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI3);
|
||||
layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI4);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI4);
|
||||
layer[2] = 3;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI0);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI0);
|
||||
layer[3] = 4;
|
||||
layerpri[3] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[3] = k053251_get_priority(k053251, K053251_CI2);
|
||||
layer[4] = 5;
|
||||
layerpri[4] = K053251_get_priority(K053251_CI1);
|
||||
layerpri[4] = k053251_get_priority(k053251, K053251_CI1);
|
||||
|
||||
sortlayers(layer, layerpri);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
|
||||
for(plane = 0; plane < 5; plane++)
|
||||
for (plane = 0; plane < 5; plane++)
|
||||
{
|
||||
int flag, pri;
|
||||
|
||||
if(plane == 0)
|
||||
if (plane == 0)
|
||||
{
|
||||
flag = TILEMAP_DRAW_OPAQUE;
|
||||
pri = 0;
|
||||
@ -175,14 +173,14 @@ VIDEO_UPDATE( dbz )
|
||||
}
|
||||
|
||||
if(layer[plane] == 4)
|
||||
K053936_1_zoom_draw(bitmap,cliprect,dbz_bg1_tilemap,flag,pri,1);
|
||||
k053936_zoom_draw(k053936_2, bitmap, cliprect, dbz_bg1_tilemap, flag, pri, 1);
|
||||
else if(layer[plane] == 5)
|
||||
K053936_0_zoom_draw(bitmap,cliprect,dbz_bg2_tilemap,flag,pri,1);
|
||||
k053936_zoom_draw(k053936_1, bitmap, cliprect, dbz_bg2_tilemap, flag, pri, 1);
|
||||
else
|
||||
K056832_tilemap_draw(screen->machine, bitmap,cliprect,layer[plane],flag,pri);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, layer[plane], flag, pri);
|
||||
}
|
||||
|
||||
K053247_sprites_draw(screen->machine, bitmap, cliprect);
|
||||
k053247_sprites_draw(k053246, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -5170,7 +5170,7 @@ WRITE8_DEVICE_HANDLER( k051316_ctrl_w )
|
||||
//if (offset >= 0x0c) logerror("%s: write %02x to 051316 reg %x\n", cpuexec_describe_context(device->machine), data, offset);
|
||||
}
|
||||
|
||||
// a few games (ajax, rollerg, etc.) can enable and disable wraparound after start
|
||||
// a few games (ajax, rollerg, ultraman, etc.) can enable and disable wraparound after start
|
||||
void k051316_wraparound_enable( const device_config *device, int status )
|
||||
{
|
||||
k051316_state *k051316= k051316_get_safe_token(device);
|
||||
@ -5585,14 +5585,14 @@ static DEVICE_START( k053936 )
|
||||
const k053936_interface *intf = k053936_get_interface(device);
|
||||
|
||||
k053936->ctrl = auto_alloc_array(device->machine, UINT16, 0x20);
|
||||
k053936->linectrl = auto_alloc_array(device->machine, UINT16, 0x1000);
|
||||
k053936->linectrl = auto_alloc_array(device->machine, UINT16, 0x4000);
|
||||
|
||||
k053936->wraparound = intf->wrap;
|
||||
k053936->offset[0] = intf->xoff;
|
||||
k053936->offset[1] = intf->yoff;
|
||||
|
||||
state_save_register_device_item_pointer(device, 0, k053936->ctrl, 0x20);
|
||||
state_save_register_device_item_pointer(device, 0, k053936->linectrl, 0x1000);
|
||||
state_save_register_device_item_pointer(device, 0, k053936->linectrl, 0x4000);
|
||||
}
|
||||
|
||||
static DEVICE_RESET( k053936 )
|
||||
@ -5600,7 +5600,7 @@ static DEVICE_RESET( k053936 )
|
||||
k053936_state *k053936 = k053936_get_safe_token(device);
|
||||
|
||||
memset(k053936->ctrl, 0, 0x20);
|
||||
memset(k053936->linectrl, 0, 0x1000);
|
||||
memset(k053936->linectrl, 0, 0x4000);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -8,14 +8,14 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
|
||||
static int sprite_colorbase;
|
||||
static int layer_colorbase[4];
|
||||
//static int layerpri[4] ={ 1,2,4,0 };
|
||||
|
||||
static void lethalen_sprite_callback(int *code, int *color, int *priority_mask)
|
||||
void lethalen_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask)
|
||||
{
|
||||
int pri = (*color & 0xfff0);
|
||||
*color = *color & 0x000f;
|
||||
@ -38,38 +38,32 @@ static void lethalen_sprite_callback(int *code, int *color, int *priority_mask)
|
||||
*code = (*code & 0x3fff); // | spritebanks[(*code >> 12) & 3];
|
||||
}
|
||||
|
||||
static void lethalen_tile_callback(int layer, int *code, int *color, int *flags)
|
||||
void lethalen_tile_callback(running_machine *machine, int layer, int *code, int *color, int *flags)
|
||||
{
|
||||
*color = layer_colorbase[layer] + ((*color & 0x3c)<<2);
|
||||
}
|
||||
|
||||
VIDEO_START(lethalen)
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
|
||||
K056832_vh_start(machine, "gfx1", K056832_BPP_8LE, 1, NULL, lethalen_tile_callback, 0);
|
||||
|
||||
K053245_vh_start(machine, 0, "gfx3",NORMAL_PLANE_ORDER, lethalen_sprite_callback);
|
||||
const device_config *k056832 = devtag_get_device(machine, "k056832");
|
||||
|
||||
// this game uses external linescroll RAM
|
||||
K056832_SetExtLinescroll();
|
||||
k056832_SetExtLinescroll(k056832);
|
||||
|
||||
// the US and Japanese cabinets apparently use different mirror setups
|
||||
if (!strcmp(machine->gamedrv->name, "lethalenj"))
|
||||
{
|
||||
K056832_set_LayerOffset(0, -196, 0);
|
||||
K056832_set_LayerOffset(1, -194, 0);
|
||||
K056832_set_LayerOffset(2, -192, 0);
|
||||
K056832_set_LayerOffset(3, -190, 0);
|
||||
K053245_set_SpriteOffset(0, -105, 0);
|
||||
k056832_set_layer_offs(k056832, 0, -196, 0);
|
||||
k056832_set_layer_offs(k056832, 1, -194, 0);
|
||||
k056832_set_layer_offs(k056832, 2, -192, 0);
|
||||
k056832_set_layer_offs(k056832, 3, -190, 0);
|
||||
}
|
||||
else
|
||||
{ /* fixme */
|
||||
K056832_set_LayerOffset(0, 188, 0);
|
||||
K056832_set_LayerOffset(1, 190, 0);
|
||||
K056832_set_LayerOffset(2, 192, 0);
|
||||
K056832_set_LayerOffset(3, 194, 0);
|
||||
K053245_set_SpriteOffset(0, 95, 0);
|
||||
k056832_set_layer_offs(k056832, 0, 188, 0);
|
||||
k056832_set_layer_offs(k056832, 1, 190, 0);
|
||||
k056832_set_layer_offs(k056832, 2, 192, 0);
|
||||
k056832_set_layer_offs(k056832, 3, 194, 0);
|
||||
}
|
||||
|
||||
layer_colorbase[0] = 0x00;
|
||||
@ -80,20 +74,22 @@ VIDEO_START(lethalen)
|
||||
|
||||
WRITE8_HANDLER(lethalen_palette_control)
|
||||
{
|
||||
const device_config *k056832 = devtag_get_device(space->machine, "k056832");
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
case 0: // 40c8 - PCU1 from schematics
|
||||
layer_colorbase[0] = ((data & 0x7)-1) * 0x40;
|
||||
layer_colorbase[1] = (((data>>4) & 0x7)-1) * 0x40;
|
||||
K056832_mark_plane_dirty(0);
|
||||
K056832_mark_plane_dirty(1);
|
||||
k056832_mark_plane_dirty(k056832, 0);
|
||||
k056832_mark_plane_dirty(k056832, 1);
|
||||
break;
|
||||
|
||||
case 4: // 40cc - PCU2 from schematics
|
||||
layer_colorbase[2] = ((data & 0x7)-1) * 0x40;
|
||||
layer_colorbase[3] = (((data>>4) & 0x7)-1) * 0x40;
|
||||
K056832_mark_plane_dirty(2);
|
||||
K056832_mark_plane_dirty(3);
|
||||
k056832_mark_plane_dirty(k056832, 2);
|
||||
k056832_mark_plane_dirty(k056832, 3);
|
||||
break;
|
||||
|
||||
case 8: // 40d0 - PCU3 from schematics
|
||||
@ -104,31 +100,20 @@ WRITE8_HANDLER(lethalen_palette_control)
|
||||
|
||||
VIDEO_UPDATE(lethalen)
|
||||
{
|
||||
const device_config *k056832 = devtag_get_device(screen->machine, "k056832");
|
||||
const device_config *k053244 = devtag_get_device(screen->machine, "k053244");
|
||||
|
||||
bitmap_fill(bitmap, cliprect, 7168);
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 3, 0, 1);
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 2, 0, 2);
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 1, 0, 4);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 3, 0, 1);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 2, 0, 2);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 1, 0, 4);
|
||||
|
||||
K053245_sprites_draw_lethal(screen->machine,0, bitmap, cliprect);
|
||||
k053245_sprites_draw_lethal(k053244, bitmap, cliprect);
|
||||
|
||||
// force "A" layer over top of everything
|
||||
K056832_tilemap_draw(screen->machine, bitmap, cliprect, 0, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 0, 0, 0);
|
||||
|
||||
|
||||
#if 0
|
||||
{
|
||||
extern UINT16 *K056832_videoram;
|
||||
FILE *fp;
|
||||
|
||||
fp=fopen("K056832_videoram", "w+b");
|
||||
if (fp)
|
||||
{
|
||||
fwrite(K056832_videoram, 0x10000, 2, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ Note: if MAME_DEBUG is defined, pressing Z with:
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
/* Variables that driver has access to: */
|
||||
|
||||
@ -419,14 +419,14 @@ VIDEO_START( metro_14100 )
|
||||
tilemap_16x16[1] = NULL;
|
||||
tilemap_16x16[2] = NULL;
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
}
|
||||
|
||||
@ -448,14 +448,14 @@ VIDEO_START( metro_14220 )
|
||||
tilemap_16x16[1] = NULL;
|
||||
tilemap_16x16[2] = NULL;
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_set_scrolldx(bg_tilemap[0], -2, 2);
|
||||
tilemap_set_scrolldx(bg_tilemap[1], -2, 2);
|
||||
@ -480,24 +480,24 @@ VIDEO_START( metro_14300 )
|
||||
tilemap_16x16[1] = tilemap_create(machine, get_tile_info_1_16x16_8bit,tilemap_scan_rows,16,16,WIN_NX,WIN_NY);
|
||||
tilemap_16x16[2] = tilemap_create(machine, get_tile_info_2_16x16_8bit,tilemap_scan_rows,16,16,WIN_NX,WIN_NY);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(bg_tilemap[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[0], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[0], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[1], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[1], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[2], 0, 15, TILEMAP_PIXEL_TRANSPARENT);
|
||||
tilemap_map_pen_to_layer(tilemap_16x16[2], 1, 255, TILEMAP_PIXEL_TRANSPARENT);
|
||||
|
||||
}
|
||||
|
||||
@ -507,11 +507,7 @@ VIDEO_START( blzntrnd )
|
||||
|
||||
has_zoom = 1;
|
||||
|
||||
metro_K053936_tilemap = tilemap_create(machine, metro_K053936_get_tile_info, tilemap_scan_rows,
|
||||
8,8, 256, 512 );
|
||||
|
||||
K053936_wraparound_enable(0, 0);
|
||||
K053936_set_offset(0, -69, -21);
|
||||
metro_K053936_tilemap = tilemap_create(machine, metro_K053936_get_tile_info, tilemap_scan_rows, 8,8, 256, 512 );
|
||||
|
||||
tilemap_set_scrolldx(bg_tilemap[0], 8, -8);
|
||||
tilemap_set_scrolldx(bg_tilemap[1], 8, -8);
|
||||
@ -524,11 +520,7 @@ VIDEO_START( gstrik2 )
|
||||
|
||||
has_zoom = 1;
|
||||
|
||||
metro_K053936_tilemap = tilemap_create(machine, metro_K053936_gstrik2_get_tile_info, tilemap_scan_gstrik2,
|
||||
16,16, 128, 256 );
|
||||
|
||||
K053936_wraparound_enable(0, 0);
|
||||
K053936_set_offset(0, -69, -19);
|
||||
metro_K053936_tilemap = tilemap_create(machine, metro_K053936_gstrik2_get_tile_info, tilemap_scan_gstrik2, 16,16, 128, 256 );
|
||||
|
||||
tilemap_set_scrolldx(bg_tilemap[0], 8, -8);
|
||||
tilemap_set_scrolldx(bg_tilemap[1], 0, 0);
|
||||
@ -856,6 +848,7 @@ static void dirty_tiles(int layer,UINT16 *vram)
|
||||
|
||||
VIDEO_UPDATE( metro )
|
||||
{
|
||||
const device_config *k053936 = devtag_get_device(screen->machine, "k053936");
|
||||
int i,pri,layers_ctrl = -1;
|
||||
UINT16 screenctrl = *metro_screenctrl;
|
||||
|
||||
@ -941,10 +934,10 @@ if (input_code_pressed(screen->machine, KEYCODE_Z))
|
||||
}
|
||||
#endif
|
||||
|
||||
if (has_zoom) K053936_0_zoom_draw(bitmap,cliprect,metro_K053936_tilemap,0,0, 1);
|
||||
if (has_zoom)
|
||||
k053936_zoom_draw(k053936, bitmap, cliprect, metro_K053936_tilemap, 0, 0, 1);
|
||||
|
||||
|
||||
for (pri=3; pri>=0; pri--)
|
||||
for (pri = 3; pri >= 0; pri--)
|
||||
draw_layers(screen->machine, bitmap,cliprect,pri,layers_ctrl);
|
||||
|
||||
if (layers_ctrl & 0x08)
|
||||
|
@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
static int ttl_gfx_index;
|
||||
static tilemap *ttl_tilemap, *rng_936_tilemap;
|
||||
@ -32,7 +32,7 @@ static TILE_GET_INFO( ttl_get_tile_info )
|
||||
SET_TILE_INFO(ttl_gfx_index, code, attr, 0);
|
||||
}
|
||||
|
||||
static void rng_sprite_callback(int *code, int *color, int *priority_mask)
|
||||
void rng_sprite_callback(running_machine *machine, int *code, int *color, int *priority_mask)
|
||||
{
|
||||
*color = sprite_colorbase | (*color & 0x001f);
|
||||
}
|
||||
@ -81,10 +81,10 @@ VIDEO_START(rng)
|
||||
8*8*4
|
||||
};
|
||||
|
||||
K055673_vh_start(machine, "gfx2", 1, -8, 15, rng_sprite_callback);
|
||||
// K055673_vh_start(machine, "gfx2", 1, -8, 15, rng_sprite_callback);
|
||||
|
||||
K053936_wraparound_enable(0, 0);
|
||||
K053936_set_offset(0, 34, 9);
|
||||
// K053936_wraparound_enable(0, 0);
|
||||
// K053936_set_offset(0, 34, 9);
|
||||
|
||||
rng_936_tilemap = tilemap_create(machine, get_rng_936_tile_info, tilemap_scan_rows, 16, 16, 128, 128);
|
||||
tilemap_set_transparent_pen(rng_936_tilemap, 0);
|
||||
@ -111,12 +111,15 @@ VIDEO_START(rng)
|
||||
|
||||
VIDEO_UPDATE(rng)
|
||||
{
|
||||
const device_config *k055673 = devtag_get_device(screen->machine, "k055673");
|
||||
const device_config *k053936 = devtag_get_device(screen->machine, "k053936");
|
||||
|
||||
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
|
||||
K053936_0_zoom_draw(bitmap, cliprect, rng_936_tilemap, 0, 0, 1);
|
||||
k053936_zoom_draw(k053936, bitmap, cliprect, rng_936_tilemap, 0, 0, 1);
|
||||
|
||||
K053247_sprites_draw(screen->machine, bitmap, cliprect);
|
||||
k053247_sprites_draw(k055673, bitmap, cliprect);
|
||||
|
||||
tilemap_mark_all_tiles_dirty(ttl_tilemap);
|
||||
tilemap_draw(bitmap, cliprect, ttl_tilemap, 0, 0);
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "driver.h"
|
||||
#include "konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
|
||||
UINT16 *tail2nos_bgvideoram;
|
||||
@ -36,7 +36,7 @@ static TILE_GET_INFO( get_tile_info )
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void zoom_callback(int *code,int *color,int *flags)
|
||||
void tail2nos_zoom_callback(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= ((*color & 0x03) << 8);
|
||||
*color = 32 + ((*color & 0x38) >> 3);
|
||||
@ -52,12 +52,8 @@ VIDEO_START( tail2nos )
|
||||
{
|
||||
bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,64,32);
|
||||
|
||||
K051316_vh_start_0(machine,"gfx3",-4,TRUE,0,zoom_callback);
|
||||
|
||||
tilemap_set_transparent_pen(bg_tilemap,15);
|
||||
|
||||
K051316_wraparound_enable(0,1);
|
||||
K051316_set_offset(0,-89,-14);
|
||||
zoomdata = (UINT16 *)memory_region(machine, "gfx3");
|
||||
}
|
||||
|
||||
@ -157,13 +153,16 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
|
||||
|
||||
VIDEO_UPDATE( tail2nos )
|
||||
{
|
||||
const device_config *k051316 = devtag_get_device(screen->machine, "k051316");
|
||||
|
||||
if (video_enable)
|
||||
{
|
||||
K051316_zoom_draw_0(bitmap,cliprect,0,0);
|
||||
draw_sprites(screen->machine, bitmap,cliprect);
|
||||
tilemap_draw(bitmap,cliprect,bg_tilemap,0,0);
|
||||
k051316_zoom_draw(k051316, bitmap,cliprect, 0, 0);
|
||||
draw_sprites(screen->machine, bitmap, cliprect);
|
||||
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
|
||||
}
|
||||
else
|
||||
bitmap_fill(bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap, cliprect, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "driver.h"
|
||||
#include "machine/eeprom.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/tmnt.h"
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ static TILE_GET_INFO( prmrsocr_get_roz_tile_info )
|
||||
|
||||
/* Missing in Action */
|
||||
|
||||
static void mia_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void mia_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
*flags = (*color & 0x04) ? TILE_FLIPX : 0;
|
||||
if (layer == 0)
|
||||
@ -62,9 +62,11 @@ static void mia_tile_callback(int layer,int bank,int *code,int *color,int *flags
|
||||
}
|
||||
}
|
||||
|
||||
static void cuebrick_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void cuebrick_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
if ((K052109_get_RMRD_line() == CLEAR_LINE) && (layer == 0))
|
||||
const device_config *k052109 = devtag_get_device(machine, "k052109");
|
||||
|
||||
if ((k052109_get_rmrd_line(k052109) == CLEAR_LINE) && (layer == 0))
|
||||
{
|
||||
*code |= ((*color & 0x01) << 8);
|
||||
*color = layer_colorbase[layer] + ((*color & 0x80) >> 5) + ((*color & 0x10) >> 1);
|
||||
@ -76,14 +78,14 @@ static void cuebrick_tile_callback(int layer,int bank,int *code,int *color,int *
|
||||
}
|
||||
}
|
||||
|
||||
static void tmnt_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void tmnt_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
*code |= ((*color & 0x03) << 8) | ((*color & 0x10) << 6) | ((*color & 0x0c) << 9)
|
||||
| (bank << 13);
|
||||
*color = layer_colorbase[layer] + ((*color & 0xe0) >> 5);
|
||||
}
|
||||
|
||||
static void ssbl_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void ssbl_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
if (layer == 0)
|
||||
{
|
||||
@ -102,7 +104,7 @@ static void ssbl_tile_callback(int layer,int bank,int *code,int *color,int *flag
|
||||
|
||||
static int blswhstl_rombank;
|
||||
|
||||
static void blswhstl_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void blswhstl_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
/* (color & 0x02) is flip y handled internally by the 052109 */
|
||||
*code |= ((*color & 0x01) << 8) | ((*color & 0x10) << 5) | ((*color & 0x0c) << 8)
|
||||
@ -118,18 +120,18 @@ static void blswhstl_tile_callback(int layer,int bank,int *code,int *color,int *
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void mia_sprite_callback(int *code,int *color,int *priority,int *shadow)
|
||||
void mia_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow)
|
||||
{
|
||||
*color = sprite_colorbase + (*color & 0x0f);
|
||||
}
|
||||
|
||||
static void tmnt_sprite_callback(int *code,int *color,int *priority,int *shadow)
|
||||
void tmnt_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow)
|
||||
{
|
||||
*code |= (*color & 0x10) << 9;
|
||||
*color = sprite_colorbase + (*color & 0x0f);
|
||||
}
|
||||
|
||||
static void punkshot_sprite_callback(int *code,int *color,int *priority_mask,int *shadow)
|
||||
void punkshot_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask,int *shadow)
|
||||
{
|
||||
int pri = 0x20 | ((*color & 0x60) >> 2);
|
||||
if (pri <= layerpri[2]) *priority_mask = 0;
|
||||
@ -141,7 +143,7 @@ static void punkshot_sprite_callback(int *code,int *color,int *priority_mask,int
|
||||
*color = sprite_colorbase + (*color & 0x0f);
|
||||
}
|
||||
|
||||
static void thndrx2_sprite_callback(int *code,int *color,int *priority_mask,int *shadow)
|
||||
void thndrx2_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask,int *shadow)
|
||||
{
|
||||
int pri = 0x20 | ((*color & 0x60) >> 2);
|
||||
if (pri <= layerpri[2]) *priority_mask = 0;
|
||||
@ -159,7 +161,7 @@ static void thndrx2_sprite_callback(int *code,int *color,int *priority_mask,int
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void lgtnfght_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
void lgtnfght_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask)
|
||||
{
|
||||
int pri = 0x20 | ((*color & 0x60) >> 2);
|
||||
if (pri <= layerpri[2]) *priority_mask = 0;
|
||||
@ -170,7 +172,7 @@ static void lgtnfght_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
*color = sprite_colorbase + (*color & 0x1f);
|
||||
}
|
||||
|
||||
static void blswhstl_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
void blswhstl_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask)
|
||||
{
|
||||
#if 0
|
||||
if (input_code_pressed(machine, KEYCODE_Q) && (*color & 0x20)) *color = rand();
|
||||
@ -186,7 +188,7 @@ if (input_code_pressed(machine, KEYCODE_E) && (*color & 0x80)) *color = rand();
|
||||
*color = sprite_colorbase + (*color & 0x1f);
|
||||
}
|
||||
|
||||
static void prmrsocr_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
void prmrsocr_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask)
|
||||
{
|
||||
int pri = 0x20 | ((*color & 0x60) >> 2);
|
||||
if (pri <= layerpri[2]) *priority_mask = 0;
|
||||
@ -207,24 +209,24 @@ static void prmrsocr_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
VIDEO_START( mia )
|
||||
{
|
||||
layer_colorbase[0] = 0;
|
||||
layer_colorbase[1] = 32;
|
||||
layer_colorbase[2] = 40;
|
||||
sprite_colorbase = 16;
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,mia_tile_callback);
|
||||
K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,mia_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( cuebrick )
|
||||
{
|
||||
layer_colorbase[0] = 0;
|
||||
layer_colorbase[1] = 32;
|
||||
layer_colorbase[2] = 40;
|
||||
sprite_colorbase = 16;
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,cuebrick_tile_callback);
|
||||
K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,mia_sprite_callback);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,cuebrick_tile_callback);
|
||||
// K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,mia_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( mia )
|
||||
{
|
||||
layer_colorbase[0] = 0;
|
||||
layer_colorbase[1] = 32;
|
||||
layer_colorbase[2] = 40;
|
||||
sprite_colorbase = 16;
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,mia_tile_callback);
|
||||
// K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,mia_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( tmnt )
|
||||
@ -233,24 +235,26 @@ VIDEO_START( tmnt )
|
||||
layer_colorbase[1] = 32;
|
||||
layer_colorbase[2] = 40;
|
||||
sprite_colorbase = 16;
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,tmnt_sprite_callback);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K051960_vh_start(machine,"gfx2",REVERSE_PLANE_ORDER,tmnt_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( punkshot )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K051960_vh_start(machine,"gfx2",NORMAL_PLANE_ORDER,punkshot_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K051960_vh_start(machine,"gfx2",NORMAL_PLANE_ORDER,punkshot_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( lgtnfght ) /* also tmnt2, ssriders */
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
const device_config *k053245 = devtag_get_device(machine, "k053245");
|
||||
|
||||
K05324x_set_z_rejection(0);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
|
||||
k05324x_set_z_rejection(k053245, 0);
|
||||
|
||||
dim_c = dim_v = lastdim = lasten = 0;
|
||||
|
||||
@ -262,55 +266,54 @@ VIDEO_START( lgtnfght ) /* also tmnt2, ssriders */
|
||||
|
||||
VIDEO_START( sunsetbl )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,ssbl_tile_callback);
|
||||
K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,ssbl_tile_callback);
|
||||
// K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( blswhstl )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,blswhstl_tile_callback);
|
||||
K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,blswhstl_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,blswhstl_tile_callback);
|
||||
// K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,blswhstl_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( glfgreat )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,lgtnfght_sprite_callback);
|
||||
|
||||
roz_tilemap = tilemap_create(machine, glfgreat_get_roz_tile_info,tilemap_scan_rows,16,16,512,512);
|
||||
|
||||
tilemap_set_transparent_pen(roz_tilemap,0);
|
||||
|
||||
K053936_wraparound_enable(0, 1);
|
||||
K053936_set_offset(0, 85, 0);
|
||||
// k053936_wraparound_enable(k053936, 1);
|
||||
// k053936_set_offset(k053936, 85, 0);
|
||||
}
|
||||
|
||||
VIDEO_START( thndrx2 )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K051960_vh_start(machine,"gfx2",NORMAL_PLANE_ORDER,thndrx2_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K051960_vh_start(machine,"gfx2",NORMAL_PLANE_ORDER,thndrx2_sprite_callback);
|
||||
}
|
||||
|
||||
VIDEO_START( prmrsocr )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,prmrsocr_sprite_callback);
|
||||
// K053251_vh_start(machine);
|
||||
// K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,tmnt_tile_callback);
|
||||
// K053245_vh_start(machine,0, "gfx2",NORMAL_PLANE_ORDER,prmrsocr_sprite_callback);
|
||||
|
||||
roz_tilemap = tilemap_create(machine, prmrsocr_get_roz_tile_info,tilemap_scan_rows,16,16,512,256);
|
||||
|
||||
tilemap_set_transparent_pen(roz_tilemap,0);
|
||||
|
||||
K053936_wraparound_enable(0, 0);
|
||||
K053936_set_offset(0, 85, 1);
|
||||
// k053936_wraparound_enable(k053936, 0, 0);
|
||||
// k053936_set_offset(k053936, 0, 85, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Memory handlers
|
||||
@ -330,6 +333,8 @@ WRITE16_HANDLER( tmnt_paletteram_word_w )
|
||||
|
||||
WRITE16_HANDLER( tmnt_0a0000_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
static int last;
|
||||
@ -348,7 +353,7 @@ WRITE16_HANDLER( tmnt_0a0000_w )
|
||||
interrupt_enable_w(space, 0, data & 0x20);
|
||||
|
||||
/* bit 7 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
/* other bits unused */
|
||||
}
|
||||
@ -356,6 +361,8 @@ WRITE16_HANDLER( tmnt_0a0000_w )
|
||||
|
||||
WRITE16_HANDLER( punkshot_0a0020_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
static int last;
|
||||
@ -371,17 +378,18 @@ WRITE16_HANDLER( punkshot_0a0020_w )
|
||||
last = data & 0x04;
|
||||
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( lgtnfght_0a0018_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
static int last;
|
||||
|
||||
|
||||
/* bit 0,1 = coin counter */
|
||||
coin_counter_w(space->machine, 0, data & 0x01);
|
||||
coin_counter_w(space->machine, 1, data & 0x02);
|
||||
@ -393,12 +401,14 @@ WRITE16_HANDLER( lgtnfght_0a0018_w )
|
||||
last = data & 0x04;
|
||||
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( blswhstl_700300_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0,1 = coin counter */
|
||||
@ -406,7 +416,7 @@ WRITE16_HANDLER( blswhstl_700300_w )
|
||||
coin_counter_w(space->machine, 1,data & 0x02);
|
||||
|
||||
/* 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 7 = select char ROM bank */
|
||||
if (blswhstl_rombank != ((data & 0x80) >> 7))
|
||||
@ -436,6 +446,8 @@ READ16_HANDLER( glfgreat_rom_r )
|
||||
|
||||
WRITE16_HANDLER( glfgreat_122000_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0,1 = coin counter */
|
||||
@ -443,7 +455,7 @@ WRITE16_HANDLER( glfgreat_122000_w )
|
||||
coin_counter_w(space->machine, 1,data & 0x02);
|
||||
|
||||
/* bit 4 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
/* bit 5 = 53596 tile rom bank selection */
|
||||
if (glfgreat_roz_rom_bank != (data & 0x20) >> 5)
|
||||
@ -467,6 +479,8 @@ WRITE16_HANDLER( glfgreat_122000_w )
|
||||
|
||||
WRITE16_HANDLER( ssriders_eeprom_w )
|
||||
{
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0 is data */
|
||||
@ -482,12 +496,14 @@ WRITE16_HANDLER( ssriders_eeprom_w )
|
||||
dim_c = data & 0x18;
|
||||
|
||||
/* bit 5 selects sprite ROM for testing in TMNT2 (bits 5-7, actually, according to the schematics) */
|
||||
K053244_bankselect(0, ((data & 0x20) >> 5) << 2);
|
||||
k053244_bankselect(k053245, ((data & 0x20) >> 5) << 2);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( ssriders_1c0300_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0,1 = coin counter */
|
||||
@ -495,7 +511,7 @@ WRITE16_HANDLER( ssriders_1c0300_w )
|
||||
coin_counter_w(space->machine, 1,data & 0x02);
|
||||
|
||||
/* 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);
|
||||
|
||||
/* bits 4-6 control palette dimming (DIM0-DIM2) */
|
||||
dim_v = (data & 0x70) >> 4;
|
||||
@ -504,6 +520,9 @@ WRITE16_HANDLER( ssriders_1c0300_w )
|
||||
|
||||
WRITE16_HANDLER( prmrsocr_122000_w )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(space->machine, "k052109");
|
||||
const device_config *k053245 = devtag_get_device(space->machine, "k053245");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0,1 = coin counter */
|
||||
@ -511,11 +530,11 @@ WRITE16_HANDLER( prmrsocr_122000_w )
|
||||
coin_counter_w(space->machine, 1,data & 0x02);
|
||||
|
||||
/* bit 4 = enable char ROM reading through the video RAM */
|
||||
K052109_set_RMRD_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
|
||||
k052109_set_rmrd_line(k052109, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
/* bit 6 = sprite ROM bank */
|
||||
prmrsocr_sprite_bank = (data & 0x40) >> 6;
|
||||
K053244_bankselect(0, prmrsocr_sprite_bank << 2);
|
||||
k053244_bankselect(k053245, prmrsocr_sprite_bank << 2);
|
||||
|
||||
/* bit 7 = 53596 region selector for ROM test */
|
||||
glfgreat_roz_char_bank = (data & 0x80) >> 7;
|
||||
@ -587,84 +606,100 @@ static void sortlayers(int *layer,int *pri)
|
||||
|
||||
VIDEO_UPDATE( mia )
|
||||
{
|
||||
K052109_tilemap_update();
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k051960 = devtag_get_device(screen->machine, "k051960");
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 2, TILEMAP_DRAW_OPAQUE,0);
|
||||
if ((priorityflag & 1) == 1) k051960_sprites_draw(k051960,bitmap,cliprect,0,0);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 1, 0, 0);
|
||||
if ((priorityflag & 1) == 0) k051960_sprites_draw(k051960,bitmap,cliprect,0,0);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 0, 0, 0);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[2],TILEMAP_DRAW_OPAQUE,0);
|
||||
if ((priorityflag & 1) == 1) K051960_sprites_draw(screen->machine,bitmap,cliprect,0,0);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[1],0,0);
|
||||
if ((priorityflag & 1) == 0) K051960_sprites_draw(screen->machine,bitmap,cliprect,0,0);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[0],0,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( tmnt )
|
||||
{
|
||||
K052109_tilemap_update();
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k051960 = devtag_get_device(screen->machine, "k051960");
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 2, TILEMAP_DRAW_OPAQUE,0);
|
||||
if ((priorityflag & 1) == 1) k051960_sprites_draw(k051960,bitmap,cliprect,0,0);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 1, 0, 0);
|
||||
if ((priorityflag & 1) == 0) k051960_sprites_draw(k051960,bitmap,cliprect,0,0);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, 0, 0, 0);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[2],TILEMAP_DRAW_OPAQUE,0);
|
||||
if ((priorityflag & 1) == 1) K051960_sprites_draw(screen->machine,bitmap,cliprect,0,0);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[1],0,0);
|
||||
if ((priorityflag & 1) == 0) K051960_sprites_draw(screen->machine,bitmap,cliprect,0,0);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[0],0,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_UPDATE( punkshot )
|
||||
{
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI2);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI4);
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI3);
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
const device_config *k051960 = devtag_get_device(screen->machine, "k051960");
|
||||
|
||||
K052109_tilemap_update();
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
sorted_layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI2);
|
||||
sorted_layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI4);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI4);
|
||||
sorted_layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI3);
|
||||
|
||||
sortlayers(sorted_layer,layerpri);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[0]],TILEMAP_DRAW_OPAQUE,1);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[1]],0,2);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[2]],0,4);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[1], 0, 2);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[2], 0, 4);
|
||||
|
||||
K051960_sprites_draw(screen->machine,bitmap,cliprect,-1,-1);
|
||||
k051960_sprites_draw(k051960, bitmap, cliprect, -1, -1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_UPDATE( lgtnfght )
|
||||
{
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI2);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI4);
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI3);
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
const device_config *k053245 = devtag_get_device(screen->machine, "k053245");
|
||||
|
||||
K052109_tilemap_update();
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
sorted_layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI2);
|
||||
sorted_layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI4);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI4);
|
||||
sorted_layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI3);
|
||||
|
||||
sortlayers(sorted_layer,layerpri);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap,cliprect,16 * bg_colorbase);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[0]],0,1);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[1]],0,2);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[2]],0,4);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[0], 0, 1);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[1], 0, 2);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[2], 0, 4);
|
||||
|
||||
K053245_sprites_draw(screen->machine, 0, bitmap,cliprect);
|
||||
k053245_sprites_draw(k053245, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -680,24 +715,45 @@ popmessage("%04x",glfgreat_pixel);
|
||||
else return glfgreat_pixel & 0xff;
|
||||
}
|
||||
|
||||
static void glfgreat_update_dirtytile(running_machine *machine)
|
||||
{
|
||||
// const device_config *k052109 = devtag_get_device(machine, "k052109");
|
||||
// const device_config *k053251 = devtag_get_device(machine, "k053251");
|
||||
// int i;
|
||||
//
|
||||
// for (i = 0; i < 3; i++)
|
||||
// {
|
||||
// if (k053251_get_tmap_dirty(k053251, 2 + i))
|
||||
// {
|
||||
// k053251_set_tmap_dirty(k053251, 2 + i, 0);
|
||||
// tilemap_mark_all_tiles_dirty(k052109_get_tilemap(k052109, i));
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( glfgreat )
|
||||
{
|
||||
K053251_set_tilemaps(NULL,NULL,K052109_tilemap[0],K052109_tilemap[1],K052109_tilemap[2]);
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
const device_config *k053245 = devtag_get_device(screen->machine, "k053245");
|
||||
const device_config *k053936 = devtag_get_device(screen->machine, "k053936");
|
||||
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI2);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI3) + 8; /* weird... */
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI4);
|
||||
glfgreat_update_dirtytile(screen->machine);
|
||||
|
||||
K052109_tilemap_update();
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI3) + 8; /* weird... */
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
sorted_layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI2);
|
||||
sorted_layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI3);
|
||||
sorted_layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI4);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI4);
|
||||
|
||||
sortlayers(sorted_layer,layerpri);
|
||||
|
||||
@ -705,36 +761,42 @@ VIDEO_UPDATE( glfgreat )
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap,cliprect,16 * bg_colorbase);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[0]],0,1);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[0], 0, 1);
|
||||
|
||||
if (layerpri[0] >= 0x30 && layerpri[1] < 0x30)
|
||||
{
|
||||
K053936_0_zoom_draw(bitmap,cliprect,roz_tilemap,0,1,1);
|
||||
glfgreat_pixel = *BITMAP_ADDR16(bitmap,0x80,0x105);
|
||||
}
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[1]],0,2);
|
||||
if (layerpri[1] >= 0x30 && layerpri[2] < 0x30)
|
||||
{
|
||||
K053936_0_zoom_draw(bitmap,cliprect,roz_tilemap,0,1,1);
|
||||
glfgreat_pixel = *BITMAP_ADDR16(bitmap,0x80,0x105);
|
||||
}
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[2]],0,4);
|
||||
if (layerpri[2] >= 0x30)
|
||||
{
|
||||
K053936_0_zoom_draw(bitmap,cliprect,roz_tilemap,0,1,1);
|
||||
k053936_zoom_draw(k053936, bitmap, cliprect, roz_tilemap, 0, 1, 1);
|
||||
glfgreat_pixel = *BITMAP_ADDR16(bitmap,0x80,0x105);
|
||||
}
|
||||
|
||||
K053245_sprites_draw(screen->machine, 0, bitmap,cliprect);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[1], 0, 2);
|
||||
|
||||
if (layerpri[1] >= 0x30 && layerpri[2] < 0x30)
|
||||
{
|
||||
k053936_zoom_draw(k053936, bitmap, cliprect, roz_tilemap, 0, 1, 1);
|
||||
glfgreat_pixel = *BITMAP_ADDR16(bitmap,0x80,0x105);
|
||||
}
|
||||
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[2], 0, 4);
|
||||
|
||||
if (layerpri[2] >= 0x30)
|
||||
{
|
||||
k053936_zoom_draw(k053936, bitmap, cliprect, roz_tilemap, 0, 1, 1);
|
||||
glfgreat_pixel = *BITMAP_ADDR16(bitmap,0x80,0x105);
|
||||
}
|
||||
|
||||
k053245_sprites_draw(k053245, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( tmnt2 )
|
||||
{
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
double brt;
|
||||
int i, newdim, newen, cb, ce;
|
||||
|
||||
newdim = dim_v | ((~dim_c & 0x10) >> 1);
|
||||
newen = (K053251_get_priority(5) && K053251_get_priority(5) != 0x3e);
|
||||
newen = (k053251_get_priority(k053251, 5) && k053251_get_priority(k053251, 5) != 0x3e);
|
||||
|
||||
if (newdim != lastdim || newen != lasten)
|
||||
{
|
||||
@ -756,16 +818,16 @@ VIDEO_UPDATE( tmnt2 )
|
||||
ce = cb + 128;
|
||||
|
||||
// dim all colors before it
|
||||
for (i=0; i<cb; i++)
|
||||
palette_set_pen_contrast(screen->machine,i,brt);
|
||||
for (i = 0; i < cb; i++)
|
||||
palette_set_pen_contrast(screen->machine, i, brt);
|
||||
|
||||
// reset all colors in range
|
||||
for (i=cb; i<ce; i++)
|
||||
palette_set_pen_contrast(screen->machine,i,1.0);
|
||||
for (i = cb; i < ce; i++)
|
||||
palette_set_pen_contrast(screen->machine, i, 1.0);
|
||||
|
||||
// dim all colors after it
|
||||
for (i=ce; i<2048; i++)
|
||||
palette_set_pen_contrast(screen->machine,i,brt);
|
||||
for (i = ce; i < 2048; i++)
|
||||
palette_set_pen_contrast(screen->machine, i, brt);
|
||||
|
||||
// toggle shadow/highlight
|
||||
if (~dim_c & 0x10)
|
||||
@ -781,30 +843,34 @@ VIDEO_UPDATE( tmnt2 )
|
||||
|
||||
VIDEO_UPDATE( thndrx2 )
|
||||
{
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI0);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI2);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI4);
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI3);
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
const device_config *k051960 = devtag_get_device(screen->machine, "k051960");
|
||||
|
||||
K052109_tilemap_update();
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
sorted_layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI2);
|
||||
sorted_layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI4);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI4);
|
||||
sorted_layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI3);
|
||||
|
||||
sortlayers(sorted_layer,layerpri);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
bitmap_fill(bitmap,cliprect,16 * bg_colorbase);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[0]],0,1);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[1]],0,2);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[sorted_layer[2]],0,4);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[0], 0, 1);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[1], 0, 2);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, sorted_layer[2], 0, 4);
|
||||
|
||||
K051960_sprites_draw(screen->machine,bitmap,cliprect,-1,-1);
|
||||
k051960_sprites_draw(k051960, bitmap, cliprect, -1, -1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -818,5 +884,6 @@ VIDEO_UPDATE( thndrx2 )
|
||||
|
||||
VIDEO_EOF( blswhstl )
|
||||
{
|
||||
K053245_clear_buffer(0);
|
||||
const device_config *k053245 = devtag_get_device(machine, "k053245");
|
||||
k053245_clear_buffer(k053245);
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
|
||||
#define SPRITEROM_MEM_REGION "gfx1"
|
||||
#define ZOOMROM0_MEM_REGION "gfx2"
|
||||
#define ZOOMROM1_MEM_REGION "gfx3"
|
||||
#define ZOOMROM2_MEM_REGION "gfx4"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
static int sprite_colorbase, zoom_colorbase[3];
|
||||
static int bank0,bank1,bank2;
|
||||
@ -16,7 +11,7 @@ static int bank0,bank1,bank2;
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void sprite_callback(int *code,int *color,int *priority,int *shadow)
|
||||
void ultraman_sprite_callback(running_machine *machine, int *code,int *color,int *priority,int *shadow)
|
||||
{
|
||||
*priority = (*color & 0x80) >> 7;
|
||||
*color = sprite_colorbase + ((*color & 0x7e) >> 1);
|
||||
@ -30,19 +25,19 @@ static void sprite_callback(int *code,int *color,int *priority,int *shadow)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void zoom_callback_0(int *code,int *color,int *flags)
|
||||
void ultraman_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= ((*color & 0x07) << 8) | (bank0 << 11);
|
||||
*color = zoom_colorbase[0] + ((*color & 0xf8) >> 3);
|
||||
}
|
||||
|
||||
static void zoom_callback_1(int *code,int *color,int *flags)
|
||||
void ultraman_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= ((*color & 0x07) << 8) | (bank1 << 11);
|
||||
*color = zoom_colorbase[1] + ((*color & 0xf8) >> 3);
|
||||
}
|
||||
|
||||
static void zoom_callback_2(int *code,int *color,int *flags)
|
||||
void ultraman_zoom_callback_2(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= ((*color & 0x07) << 8) | (bank2 << 11);
|
||||
*color = zoom_colorbase[2] + ((*color & 0xf8) >> 3);
|
||||
@ -62,15 +57,6 @@ VIDEO_START( ultraman )
|
||||
zoom_colorbase[0] = 0;
|
||||
zoom_colorbase[1] = 64;
|
||||
zoom_colorbase[2] = 128;
|
||||
|
||||
K051960_vh_start(machine,SPRITEROM_MEM_REGION,NORMAL_PLANE_ORDER,sprite_callback);
|
||||
K051316_vh_start_0(machine,ZOOMROM0_MEM_REGION,4,FALSE,0,zoom_callback_0);
|
||||
K051316_vh_start_1(machine,ZOOMROM1_MEM_REGION,4,FALSE,0,zoom_callback_1);
|
||||
K051316_vh_start_2(machine,ZOOMROM2_MEM_REGION,4,TRUE,0,zoom_callback_2);
|
||||
|
||||
K051316_set_offset(0, 8, 0);
|
||||
K051316_set_offset(1, 8, 0);
|
||||
K051316_set_offset(2, 8, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -83,6 +69,10 @@ VIDEO_START( ultraman )
|
||||
|
||||
WRITE16_HANDLER( ultraman_gfxctrl_w )
|
||||
{
|
||||
const device_config *k051316_1 = devtag_get_device(space->machine, "k051316_1");
|
||||
const device_config *k051316_2 = devtag_get_device(space->machine, "k051316_2");
|
||||
const device_config *k051316_3 = devtag_get_device(space->machine, "k051316_3");
|
||||
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
/* bit 0: enable wraparound for scr #1
|
||||
@ -93,24 +83,31 @@ WRITE16_HANDLER( ultraman_gfxctrl_w )
|
||||
bit 5: msb of code for scr #3
|
||||
bit 6: coin counter 1
|
||||
bit 7: coin counter 2 */
|
||||
K051316_wraparound_enable(0,data & 0x01);
|
||||
|
||||
k051316_wraparound_enable(k051316_1, data & 0x01);
|
||||
|
||||
if (bank0 != ((data & 0x02) >> 1))
|
||||
{
|
||||
bank0 = (data & 0x02) >> 1;
|
||||
tilemap_mark_all_tiles_dirty_all(space->machine); /* should mark only zoom0 */
|
||||
}
|
||||
K051316_wraparound_enable(1,data & 0x04);
|
||||
|
||||
k051316_wraparound_enable(k051316_2, data & 0x04);
|
||||
|
||||
if (bank1 != ((data & 0x08) >> 3))
|
||||
{
|
||||
bank1 = (data & 0x08) >> 3;
|
||||
tilemap_mark_all_tiles_dirty_all(space->machine); /* should mark only zoom1 */
|
||||
}
|
||||
K051316_wraparound_enable(2,data & 0x10);
|
||||
|
||||
k051316_wraparound_enable(k051316_3, data & 0x10);
|
||||
|
||||
if (bank2 != ((data & 0x20) >> 5))
|
||||
{
|
||||
bank2 = (data & 0x20) >> 5;
|
||||
tilemap_mark_all_tiles_dirty_all(space->machine); /* should mark only zoom2 */
|
||||
}
|
||||
|
||||
coin_counter_w(space->machine, 0, data & 0x40);
|
||||
coin_counter_w(space->machine, 1, data & 0x80);
|
||||
}
|
||||
@ -126,10 +123,15 @@ WRITE16_HANDLER( ultraman_gfxctrl_w )
|
||||
|
||||
VIDEO_UPDATE( ultraman )
|
||||
{
|
||||
K051316_zoom_draw_2(bitmap,cliprect,0,0);
|
||||
K051316_zoom_draw_1(bitmap,cliprect,0,0);
|
||||
K051960_sprites_draw(screen->machine,bitmap,cliprect,0,0);
|
||||
K051316_zoom_draw_0(bitmap,cliprect,0,0);
|
||||
K051960_sprites_draw(screen->machine,bitmap,cliprect,1,1);
|
||||
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 *k051316_3 = devtag_get_device(screen->machine, "k051316_3");
|
||||
const device_config *k051960 = devtag_get_device(screen->machine, "k051960");
|
||||
|
||||
k051316_zoom_draw(k051316_3, bitmap, cliprect, 0, 0);
|
||||
k051316_zoom_draw(k051316_2, bitmap, cliprect, 0, 0);
|
||||
k051960_sprites_draw(k051960, bitmap, cliprect, 0, 0);
|
||||
k051316_zoom_draw(k051316_1, bitmap, cliprect, 0, 0);
|
||||
k051960_sprites_draw(k051960, bitmap, cliprect, 1, 1);
|
||||
return 0;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
|
||||
#define BMP_PAD 8
|
||||
#define BLEND_STEPS 16
|
||||
@ -983,16 +983,14 @@ VIDEO_START( wecleman )
|
||||
}
|
||||
|
||||
// Callbacks for the K051316
|
||||
#define ZOOMROM0_MEM_REGION "gfx2"
|
||||
#define ZOOMROM1_MEM_REGION "gfx3"
|
||||
|
||||
static void zoom_callback_0(int *code,int *color,int *flags)
|
||||
void hotchase_zoom_callback_0(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= (*color & 0x03) << 8;
|
||||
*color = (*color & 0xfc) >> 2;
|
||||
}
|
||||
|
||||
static void zoom_callback_1(int *code,int *color,int *flags)
|
||||
void hotchase_zoom_callback_1(running_machine *machine, int *code,int *color,int *flags)
|
||||
{
|
||||
*code |= (*color & 0x01) << 8;
|
||||
*color = ((*color & 0x3f) << 1) | ((*code & 0x80) >> 7);
|
||||
@ -1025,14 +1023,6 @@ VIDEO_START( hotchase )
|
||||
spr_ptr_list = (struct sprite **)buffer;
|
||||
|
||||
sprite_list = auto_alloc_array_clear(machine, struct sprite, NUM_SPRITES);
|
||||
|
||||
K051316_vh_start_0(machine,ZOOMROM0_MEM_REGION,4,FALSE,0,zoom_callback_0);
|
||||
K051316_vh_start_1(machine,ZOOMROM1_MEM_REGION,4,FALSE,0,zoom_callback_1);
|
||||
|
||||
K051316_wraparound_enable(0,1);
|
||||
// K051316_wraparound_enable(1,1);
|
||||
K051316_set_offset(0, -0xB0/2, -16);
|
||||
K051316_set_offset(1, -0xB0/2, -16);
|
||||
}
|
||||
|
||||
|
||||
@ -1135,6 +1125,8 @@ VIDEO_UPDATE ( wecleman )
|
||||
|
||||
VIDEO_UPDATE( hotchase )
|
||||
{
|
||||
const device_config *k051316_1 = devtag_get_device(screen->machine, "k051316_1");
|
||||
const device_config *k051316_2 = devtag_get_device(screen->machine, "k051316_2");
|
||||
int video_on;
|
||||
|
||||
video_on = wecleman_irqctrl & 0x40;
|
||||
@ -1146,15 +1138,19 @@ VIDEO_UPDATE( hotchase )
|
||||
bitmap_fill(bitmap, cliprect, black_pen);
|
||||
|
||||
/* Draw the background */
|
||||
if (video_on) K051316_zoom_draw_0(bitmap,cliprect, 0, 0);
|
||||
if (video_on)
|
||||
k051316_zoom_draw(k051316_1, bitmap, cliprect, 0, 0);
|
||||
|
||||
/* Draw the road */
|
||||
if (video_on) hotchase_draw_road(screen->machine, bitmap, cliprect);
|
||||
if (video_on)
|
||||
hotchase_draw_road(screen->machine, bitmap, cliprect);
|
||||
|
||||
/* Draw the sprites */
|
||||
if (video_on) sprite_draw(bitmap,cliprect);
|
||||
if (video_on)
|
||||
sprite_draw(bitmap,cliprect);
|
||||
|
||||
/* Draw the foreground (text) */
|
||||
if (video_on) K051316_zoom_draw_1(bitmap,cliprect, 0, 0);
|
||||
if (video_on)
|
||||
k051316_zoom_draw(k051316_2, bitmap, cliprect, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "driver.h"
|
||||
#include "video/konamiic.h"
|
||||
#include "video/konicdev.h"
|
||||
#include "includes/xmen.h"
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ static int layerpri[3];
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void xmen_tile_callback(int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
void xmen_tile_callback(running_machine *machine, int layer,int bank,int *code,int *color,int *flags,int *priority)
|
||||
{
|
||||
/* (color & 0x02) is flip y handled internally by the 052109 */
|
||||
if (layer == 0)
|
||||
@ -28,7 +28,7 @@ static void xmen_tile_callback(int layer,int bank,int *code,int *color,int *flag
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
static void xmen_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
void xmen_sprite_callback(running_machine *machine, int *code,int *color,int *priority_mask)
|
||||
{
|
||||
int pri = (*color & 0x00e0) >> 4; /* ??????? */
|
||||
if (pri <= layerpri[2]) *priority_mask = 0;
|
||||
@ -47,25 +47,15 @@ static void xmen_sprite_callback(int *code,int *color,int *priority_mask)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
VIDEO_START( xmen )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,xmen_tile_callback);
|
||||
K053247_vh_start(machine,"gfx2",53,-2,NORMAL_PLANE_ORDER,xmen_sprite_callback);
|
||||
}
|
||||
|
||||
static bitmap_t * screen_right;
|
||||
static bitmap_t * screen_left;
|
||||
static UINT16 *K053247_ram;
|
||||
|
||||
VIDEO_START( xmen6p )
|
||||
{
|
||||
K053251_vh_start(machine);
|
||||
const device_config *k053246 = devtag_get_device(machine, "k053246");
|
||||
|
||||
K052109_vh_start(machine,"gfx1",NORMAL_PLANE_ORDER,xmen_tile_callback);
|
||||
K053247_vh_start(machine,"gfx2",53,-2,NORMAL_PLANE_ORDER,xmen_sprite_callback);
|
||||
K053247_export_config(&K053247_ram, NULL, NULL, NULL, NULL);
|
||||
k053247_get_ram(k053246, &K053247_ram);
|
||||
|
||||
screen_left = auto_bitmap_alloc(machine, 64*8, 32*8, BITMAP_FORMAT_INDEXED16);
|
||||
screen_right = auto_bitmap_alloc(machine, 64*8, 32*8, BITMAP_FORMAT_INDEXED16);
|
||||
@ -97,63 +87,64 @@ static void sortlayers(int *layer,int *pri)
|
||||
|
||||
VIDEO_UPDATE( xmen )
|
||||
{
|
||||
const device_config *k052109 = devtag_get_device(screen->machine, "k052109");
|
||||
const device_config *k053246 = devtag_get_device(screen->machine, "k053246");
|
||||
const device_config *k053251 = devtag_get_device(screen->machine, "k053251");
|
||||
int layer[3];
|
||||
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI4);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI3);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI0);
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI2);
|
||||
|
||||
K052109_tilemap_update();
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI3);
|
||||
layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI0);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI0);
|
||||
layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI2);
|
||||
|
||||
sortlayers(layer,layerpri);
|
||||
|
||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
||||
/* note the '+1' in the background color!!! */
|
||||
bitmap_fill(bitmap,cliprect,16 * bg_colorbase+1);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[layer[0]],0,1);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[layer[1]],0,2);
|
||||
tilemap_draw(bitmap,cliprect,K052109_tilemap[layer[2]],0,4);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, layer[0], 0, 1);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, layer[1], 0, 2);
|
||||
k052109_tilemap_draw(k052109, bitmap, cliprect, layer[2], 0, 4);
|
||||
|
||||
/* this isn't supported anymore and it is unsure if still needed; keeping here for reference
|
||||
pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
|
||||
K053247_sprites_draw(screen->machine, bitmap,cliprect);
|
||||
k053247_sprites_draw(k053246, bitmap, cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_UPDATE( xmen6p )
|
||||
{
|
||||
int x,y;
|
||||
|
||||
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
||||
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
||||
int x,y;
|
||||
|
||||
if (screen == left_screen)
|
||||
for(y=0;y<32*8;y++)
|
||||
for(y = 0; y < 32 * 8; y++)
|
||||
{
|
||||
UINT16* line_dest = BITMAP_ADDR16(bitmap, y, 0);
|
||||
UINT16* line_src = BITMAP_ADDR16(screen_left, y, 0);
|
||||
|
||||
for (x=12*8;x<52*8;x++)
|
||||
for (x = 12 * 8; x < 52 * 8; x++)
|
||||
line_dest[x] = line_src[x];
|
||||
}
|
||||
else if (screen == right_screen)
|
||||
for(y=0;y<32*8;y++)
|
||||
for(y = 0; y < 32 * 8; y++)
|
||||
{
|
||||
UINT16* line_dest = BITMAP_ADDR16(bitmap, y, 0);
|
||||
UINT16* line_src = BITMAP_ADDR16(screen_right, y, 0);
|
||||
|
||||
for (x=12*8;x<52*8;x++)
|
||||
for (x = 12 * 8; x < 52 * 8; x++)
|
||||
line_dest[x] = line_src[x];
|
||||
}
|
||||
|
||||
@ -163,7 +154,9 @@ VIDEO_UPDATE( xmen6p )
|
||||
/* my lefts and rights are mixed up in several places.. */
|
||||
VIDEO_EOF( xmen6p )
|
||||
{
|
||||
const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
|
||||
const device_config *k052109 = devtag_get_device(machine, "k052109");
|
||||
const device_config *k053246 = devtag_get_device(machine, "k053246");
|
||||
const device_config *k053251 = devtag_get_device(machine, "k053251");
|
||||
int layer[3];
|
||||
bitmap_t * renderbitmap;
|
||||
rectangle cliprect;
|
||||
@ -186,17 +179,17 @@ VIDEO_EOF( xmen6p )
|
||||
if (xmen_current_frame & 0x01)
|
||||
{
|
||||
|
||||
/* copy the desired spritelist to the chip */
|
||||
/* copy the desired spritelist to the chip */
|
||||
memcpy(K053247_ram, xmen6p_spriteramright, 0x1000);
|
||||
|
||||
/* we write the entire content of the tileram to the chip to ensure
|
||||
everything gets marked as dirty and the desired tilemap is rendered
|
||||
|
||||
this is not very efficient!
|
||||
*/
|
||||
for (offset = 0; offset < (0xc000 / 2); offset++)
|
||||
{
|
||||
// K052109_lsb_w
|
||||
K052109_w(space, offset, xmen6p_tilemapright[offset] & 0x00ff);
|
||||
k052109_w(k052109, offset, xmen6p_tilemapright[offset] & 0x00ff);
|
||||
}
|
||||
|
||||
|
||||
@ -215,7 +208,7 @@ VIDEO_EOF( xmen6p )
|
||||
for (offset = 0; offset < (0xc000 / 2); offset++)
|
||||
{
|
||||
// K052109_lsb_w
|
||||
K052109_w(space, offset, xmen6p_tilemapleft[offset] & 0x00ff);
|
||||
k052109_w(k052109, offset, xmen6p_tilemapleft[offset] & 0x00ff);
|
||||
}
|
||||
|
||||
|
||||
@ -223,31 +216,31 @@ VIDEO_EOF( xmen6p )
|
||||
}
|
||||
|
||||
|
||||
bg_colorbase = K053251_get_palette_index(K053251_CI4);
|
||||
sprite_colorbase = K053251_get_palette_index(K053251_CI1);
|
||||
layer_colorbase[0] = K053251_get_palette_index(K053251_CI3);
|
||||
layer_colorbase[1] = K053251_get_palette_index(K053251_CI0);
|
||||
layer_colorbase[2] = K053251_get_palette_index(K053251_CI2);
|
||||
bg_colorbase = k053251_get_palette_index(k053251, K053251_CI4);
|
||||
sprite_colorbase = k053251_get_palette_index(k053251, K053251_CI1);
|
||||
layer_colorbase[0] = k053251_get_palette_index(k053251, K053251_CI3);
|
||||
layer_colorbase[1] = k053251_get_palette_index(k053251, K053251_CI0);
|
||||
layer_colorbase[2] = k053251_get_palette_index(k053251, K053251_CI2);
|
||||
|
||||
K052109_tilemap_update();
|
||||
k052109_tilemap_update(k052109);
|
||||
|
||||
layer[0] = 0;
|
||||
layerpri[0] = K053251_get_priority(K053251_CI3);
|
||||
layerpri[0] = k053251_get_priority(k053251, K053251_CI3);
|
||||
layer[1] = 1;
|
||||
layerpri[1] = K053251_get_priority(K053251_CI0);
|
||||
layerpri[1] = k053251_get_priority(k053251, K053251_CI0);
|
||||
layer[2] = 2;
|
||||
layerpri[2] = K053251_get_priority(K053251_CI2);
|
||||
layerpri[2] = k053251_get_priority(k053251, K053251_CI2);
|
||||
|
||||
sortlayers(layer,layerpri);
|
||||
|
||||
bitmap_fill(machine->priority_bitmap, &cliprect, 0);
|
||||
/* note the '+1' in the background color!!! */
|
||||
bitmap_fill(renderbitmap, &cliprect, 16 * bg_colorbase + 1);
|
||||
tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[0]], 0, 1);
|
||||
tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[1]], 0, 2);
|
||||
tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[2]], 0, 4);
|
||||
k052109_tilemap_draw(k052109, renderbitmap, &cliprect, layer[0], 0, 1);
|
||||
k052109_tilemap_draw(k052109, renderbitmap, &cliprect, layer[1], 0, 2);
|
||||
k052109_tilemap_draw(k052109, renderbitmap, &cliprect, layer[2], 0, 4);
|
||||
|
||||
/* this isn't supported anymore and it is unsure if still needed; keeping here for reference
|
||||
pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
|
||||
K053247_sprites_draw(machine, renderbitmap, &cliprect);
|
||||
k053247_sprites_draw(k053246, renderbitmap, &cliprect);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user