diff --git a/src/mame/drivers/dbz.c b/src/mame/drivers/dbz.c index 35fb4dc7429..85bb17c4fa3 100644 --- a/src/mame/drivers/dbz.c +++ b/src/mame/drivers/dbz.c @@ -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 ) diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c index 683d25840ef..542b4cb43c7 100644 --- a/src/mame/drivers/lethal.c +++ b/src/mame/drivers/lethal.c @@ -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 diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c index ebfb67503a1..f19f5f53dc1 100644 --- a/src/mame/drivers/metro.c +++ b/src/mame/drivers/metro.c @@ -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") diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c index 662bb044f10..e58b7769282 100644 --- a/src/mame/drivers/rungun.c +++ b/src/mame/drivers/rungun.c @@ -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) diff --git a/src/mame/drivers/tail2nos.c b/src/mame/drivers/tail2nos.c index 5ae7ff45fd0..412833320cc 100644 --- a/src/mame/drivers/tail2nos.c +++ b/src/mame/drivers/tail2nos.c @@ -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") diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c index 57455e031e1..c5083261702 100644 --- a/src/mame/drivers/tmnt.c +++ b/src/mame/drivers/tmnt.c @@ -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 ) diff --git a/src/mame/drivers/ultraman.c b/src/mame/drivers/ultraman.c index a8be39d6b7b..0c494d2e853 100644 --- a/src/mame/drivers/ultraman.c +++ b/src/mame/drivers/ultraman.c @@ -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 ) diff --git a/src/mame/drivers/wecleman.c b/src/mame/drivers/wecleman.c index 56949fbcb37..809e912c271 100644 --- a/src/mame/drivers/wecleman.c +++ b/src/mame/drivers/wecleman.c @@ -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") diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c index f4442e59319..f5265449a7b 100644 --- a/src/mame/drivers/xmen.c +++ b/src/mame/drivers/xmen.c @@ -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 ) diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c index 24a5a781b55..e6a4ff3caea 100644 --- a/src/mame/drivers/zr107.c +++ b/src/mame/drivers/zr107.c @@ -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") diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h index c7f84d3d33a..d19e69d8395 100644 --- a/src/mame/includes/xmen.h +++ b/src/mame/includes/xmen.h @@ -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 ); diff --git a/src/mame/video/dbz.c b/src/mame/video/dbz.c index 1de6278ab60..ae092882378 100644 --- a/src/mame/video/dbz.c +++ b/src/mame/video/dbz.c @@ -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; } diff --git a/src/mame/video/konicdev.c b/src/mame/video/konicdev.c index 43de8c7bb85..364e2908aa8 100644 --- a/src/mame/video/konicdev.c +++ b/src/mame/video/konicdev.c @@ -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); } /***************************************************************************/ diff --git a/src/mame/video/lethal.c b/src/mame/video/lethal.c index 015c7500ec6..55cc5cccaac 100644 --- a/src/mame/video/lethal.c +++ b/src/mame/video/lethal.c @@ -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; } diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c index f7a39e4db1f..84c3eb73c90 100644 --- a/src/mame/video/metro.c +++ b/src/mame/video/metro.c @@ -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) diff --git a/src/mame/video/rungun.c b/src/mame/video/rungun.c index cb5c91a54f3..065b023cd3a 100644 --- a/src/mame/video/rungun.c +++ b/src/mame/video/rungun.c @@ -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); diff --git a/src/mame/video/tail2nos.c b/src/mame/video/tail2nos.c index e9e26667e18..9ea0f3a5533 100644 --- a/src/mame/video/tail2nos.c +++ b/src/mame/video/tail2nos.c @@ -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; } diff --git a/src/mame/video/tmnt.c b/src/mame/video/tmnt.c index 9a04b0a3d08..778d9aeb5a8 100644 --- a/src/mame/video/tmnt.c +++ b/src/mame/video/tmnt.c @@ -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; imachine,i,brt); + for (i = 0; i < cb; i++) + palette_set_pen_contrast(screen->machine, i, brt); // reset all colors in range - for (i=cb; imachine,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); } diff --git a/src/mame/video/ultraman.c b/src/mame/video/ultraman.c index a9cdb361f8e..8317c01c257 100644 --- a/src/mame/video/ultraman.c +++ b/src/mame/video/ultraman.c @@ -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; } diff --git a/src/mame/video/wecleman.c b/src/mame/video/wecleman.c index 8a74554d0a9..1a57145c2b6 100644 --- a/src/mame/video/wecleman.c +++ b/src/mame/video/wecleman.c @@ -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; } diff --git a/src/mame/video/xmen.c b/src/mame/video/xmen.c index 66f46655c9b..71948a2715e 100644 --- a/src/mame/video/xmen.c +++ b/src/mame/video/xmen.c @@ -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); }