From 02e91a75b02e1ae1c90a8e1aafd0c16783d6b7bc Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Tue, 10 Jul 2012 22:10:46 +0000 Subject: [PATCH] Way more hackering around, allows it to moan about machine ID ... --- src/mame/drivers/jchan.c | 2 +- src/mame/drivers/kongambl.c | 334 +++++++++++++++++++++++++++++++++--- 2 files changed, 312 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/jchan.c b/src/mame/drivers/jchan.c index e8b156fc629..fb0903e12fe 100644 --- a/src/mame/drivers/jchan.c +++ b/src/mame/drivers/jchan.c @@ -550,7 +550,7 @@ static ADDRESS_MAP_START( jchan_sub, AS_PROGRAM, 16, jchan_state ) AM_RANGE(0x503000, 0x503fff) AM_RAM AM_SHARE("vscroll.0") // AM_RANGE(0x600000, 0x60001f) AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_SHARE("layers_0_regs") // Layers 0 Regs - /* background prites */ + /* background sprites */ AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(jchan_suprnova_sprite32_2_w) AM_SHARE("spriteram_2") AM_RANGE(0x780000, 0x78003f) AM_RAM_WRITE(jchan_suprnova_sprite32regs_2_w) AM_SHARE("sprregs_2") diff --git a/src/mame/drivers/kongambl.c b/src/mame/drivers/kongambl.c index 5107bcc0305..40108a882c6 100644 --- a/src/mame/drivers/kongambl.c +++ b/src/mame/drivers/kongambl.c @@ -18,6 +18,9 @@ 0x10a1d4 + ... + 0x55e42 + */ #include "emu.h" @@ -57,8 +60,8 @@ static SCREEN_UPDATE_IND16(kongambl) bitmap.fill(0, cliprect); screen.machine().priority_bitmap.fill(0, cliprect); -// k056832_tilemap_draw(k056832, bitmap, cliprect, 3, 0, 0); -// k056832_tilemap_draw(k056832, bitmap, cliprect, 2, 0, 0); + k056832_tilemap_draw(k056832, bitmap, cliprect, 3, 0, 0); + k056832_tilemap_draw(k056832, bitmap, cliprect, 2, 0, 0); k056832_tilemap_draw(k056832, bitmap, cliprect, 1, 0, 0); k056832_tilemap_draw(k056832, bitmap, cliprect, 0, 0, 0); return 0; @@ -66,14 +69,19 @@ static SCREEN_UPDATE_IND16(kongambl) READ32_MEMBER(kongambl_state::eeprom_r) { - if (ACCESSING_BITS_0_7) - return ioport("SYSTEM")->read() << 0; + //return machine().rand(); if (ACCESSING_BITS_16_23) return ioport("EXT_PCB")->read() << 16; // ??? if (ACCESSING_BITS_24_31) - return ioport("TEST")->read() << 24; // bit 0 freezes the system if 1 + return ioport("IN0")->read() << 24; // bit 0 freezes the system if 1 + + if (ACCESSING_BITS_0_7) + return (ioport("SYSTEM")->read()); + + if (ACCESSING_BITS_8_15) + return ioport("IN2")->read() << 8; // ??? printf("%08x\n",mem_mask); @@ -90,7 +98,7 @@ WRITE32_MEMBER(kongambl_state::eeprom_w) static READ32_HANDLER( test_r ) { - return space->machine().rand(); + return -1;//space->machine().rand(); } WRITE8_MEMBER(kongambl_state::kongambl_ff_w) @@ -106,6 +114,10 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program AM_RANGE(0x100000, 0x11ffff) AM_RAM // work RAM + AM_RANGE(0x200000, 0x207fff) AM_RAM // backup RAM 24F + + AM_RANGE(0x300000, 0x307fff) AM_RAM // backup RAM 24H + //0x400000 0x400001 "13M" even addresses //0x400002,0x400003 "13J" odd addresses AM_RANGE(0x400000, 0x401fff) AM_DEVREAD_LEGACY("k056832", k056832_rom_long_r) @@ -118,7 +130,14 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state ) AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE_LEGACY("k056832", k056832_long_w) -// AM_RANGE(0x4c0004, 0x4c0007) AM_WRITENOP // bank num for "2G" + AM_RANGE(0x4b001c, 0x4b001f) AM_WRITENOP + + AM_RANGE(0x4c0000, 0x4c0003) AM_WRITENOP + AM_RANGE(0x4c0004, 0x4c0007) AM_WRITENOP // bank num for "2G" + AM_RANGE(0x4c4000, 0x4c4003) AM_WRITENOP + AM_RANGE(0x4c4004, 0x4c4007) AM_WRITENOP + AM_RANGE(0x4c801c, 0x4c801f) AM_WRITENOP + AM_RANGE(0x4cc01c, 0x4cc01f) AM_WRITENOP AM_RANGE(0x4cc000, 0x4cc003) AM_READ_LEGACY(test_r) // ??? AM_RANGE(0x4cc004, 0x4cc007) AM_READ_LEGACY(test_r) // ??? @@ -127,16 +146,60 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state ) AM_RANGE(0x4d0000, 0x4d0003) AM_WRITE8(kongambl_ff_w,0xff000000) + AM_RANGE(0x500380, 0x500383) AM_READ_LEGACY(test_r) + AM_RANGE(0x500400, 0x500403) AM_NOP //dual port? + AM_RANGE(0x500420, 0x500423) AM_NOP //dual port? + AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k? + AM_RANGE(0x580000, 0x580007) AM_READ_LEGACY(test_r) + AM_RANGE(0x700000, 0x700003) AM_READ(eeprom_r) + AM_RANGE(0x700004, 0x700007) AM_READ_PORT("IN1") + AM_RANGE(0x700008, 0x70000b) AM_READ_PORT("IN3") AM_RANGE(0x780000, 0x780003) AM_WRITE(eeprom_w) + AM_RANGE(0x780004, 0x780007) AM_WRITENOP ADDRESS_MAP_END +static ADDRESS_MAP_START( kongamaud_map, AS_PROGRAM, 16, kongambl_state ) + AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program (mirrored?) + AM_RANGE(0x100000, 0x10ffff) AM_RAM // work RAM + AM_RANGE(0x180000, 0x180001) AM_WRITENOP + AM_RANGE(0x190000, 0x190001) AM_WRITENOP + AM_RANGE(0x1a0000, 0x1a0001) AM_WRITENOP + AM_RANGE(0x1b0000, 0x1b0001) AM_READNOP + AM_RANGE(0x1c0000, 0x1c0001) AM_READNOP + AM_RANGE(0x200000, 0x2000ff) AM_RAM // unknown (YMZ280b? Shared with 68020?) + AM_RANGE(0x280000, 0x2800ff) AM_RAM + AM_RANGE(0x300000, 0x3007ff) AM_RAM +ADDRESS_MAP_END + + static INPUT_PORTS_START( kongambl ) PORT_START( "SYSTEM" ) - PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_DIPNAME( 0x01, 0x00, "SYSTEM" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - PORT_START( "TEST" ) + PORT_START( "IN0" ) PORT_DIPNAME( 0x01, 0x00, "SYSA" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) @@ -146,7 +209,7 @@ static INPUT_PORTS_START( kongambl ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) // "RESET SIGNAL" PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) @@ -188,23 +251,234 @@ static INPUT_PORTS_START( kongambl ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_START( "IN1" ) + PORT_DIPNAME( 0x01, 0x00, "SYSC" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0000, "SYSD" ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Service_Mode ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) + PORT_DIPNAME( 0x010000, 0x000000, "SYSE" ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x010000, DEF_STR( On ) ) + PORT_DIPNAME( 0x020000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x020000, DEF_STR( On ) ) + PORT_DIPNAME( 0x040000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x040000, DEF_STR( On ) ) + PORT_DIPNAME( 0x080000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x080000, DEF_STR( On ) ) + PORT_DIPNAME( 0x100000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x100000, DEF_STR( On ) ) + PORT_DIPNAME( 0x200000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x200000, DEF_STR( On ) ) + PORT_DIPNAME( 0x400000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x400000, DEF_STR( On ) ) + PORT_DIPNAME( 0x800000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x800000, DEF_STR( On ) ) + PORT_DIPNAME( 0x01000000, 0x00000000, "SYSF" ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x02000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x04000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x08000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x10000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x20000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x40000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x80000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80000000, DEF_STR( On ) ) + + PORT_START( "IN2" ) + PORT_DIPNAME( 0x01, 0x00, "SYSG" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START( "IN3" ) + PORT_DIPNAME( 0x01, 0x01, "SYSC" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0000, "SYSD" ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) + PORT_DIPNAME( 0x010000, 0x000000, "SYSE" ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x010000, DEF_STR( On ) ) + PORT_DIPNAME( 0x020000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x020000, DEF_STR( On ) ) + PORT_DIPNAME( 0x040000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x040000, DEF_STR( On ) ) + PORT_DIPNAME( 0x080000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x080000, DEF_STR( On ) ) + PORT_DIPNAME( 0x100000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x100000, DEF_STR( On ) ) + PORT_DIPNAME( 0x200000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x200000, DEF_STR( On ) ) + PORT_DIPNAME( 0x400000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x400000, DEF_STR( On ) ) + PORT_DIPNAME( 0x800000, 0x000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x800000, DEF_STR( On ) ) + PORT_DIPNAME( 0x01000000, 0x00000000, "SYSF" ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x02000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x04000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x08000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x10000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x20000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x40000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x80000000, 0x00000000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80000000, DEF_STR( On ) ) + PORT_START( "EEPROMOUT" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, write_bit) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_clock_line) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_device, set_cs_line) INPUT_PORTS_END -static ADDRESS_MAP_START( kongamaud_map, AS_PROGRAM, 16, kongambl_state ) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program (mirrored?) - AM_RANGE(0x100000, 0x10ffff) AM_RAM // work RAM - AM_RANGE(0x180000, 0x180001) AM_WRITENOP - AM_RANGE(0x190000, 0x190001) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a0001) AM_WRITENOP - AM_RANGE(0x1b0000, 0x1b0001) AM_READNOP - AM_RANGE(0x1c0000, 0x1c0001) AM_READNOP - AM_RANGE(0x200000, 0x2000ff) AM_RAM // unknown (YMZ280b? Shared with 68020?) -ADDRESS_MAP_END - static void kongambl_sprite_callback( running_machine &machine, int *code, int *color, int *priority_mask ) { } @@ -232,20 +506,33 @@ static const k053247_interface k053247_intf = kongambl_sprite_callback }; +static TIMER_DEVICE_CALLBACK( kongambl_vblank ) +{ + kongambl_state *state = timer.machine().driver_data(); + int scanline = param; + + if(scanline == 256) + device_set_input_line(state->m_maincpu, 1, HOLD_LINE); // vblank? + + if(scanline == 0) + device_set_input_line(state->m_maincpu, 3, HOLD_LINE); // sprite irq? +} + static MACHINE_CONFIG_START( kongambl, kongambl_state ) MCFG_CPU_ADD("maincpu", M68EC020, 25000000) MCFG_CPU_PROGRAM_MAP(kongambl_map) - MCFG_CPU_VBLANK_INT("screen",irq1_line_hold) + MCFG_TIMER_ADD_SCANLINE("scantimer", kongambl_vblank, "screen", 0, 1) MCFG_CPU_ADD("sndcpu", M68000, 16000000) MCFG_CPU_PROGRAM_MAP(kongamaud_map) + MCFG_CPU_PERIODIC_INT(irq2_line_hold, 480) MCFG_EEPROM_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_SIZE(64*8, 32*8+16) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_STATIC(kongambl) @@ -395,6 +682,7 @@ static DRIVER_INIT( kingtut ) rom[0x3986c/4] = (rom[0x3986c/4] & 0xffff0000) | 0x600e; // patch ROM check rom[0x2bfc8/4] = (rom[0x2bfc8/4] & 0xffff0000) | 0x6612; // patch VRAM ROM checks rom[0x2acd0/4] = (rom[0x2acd0/4] & 0xffff) | 0x6612<<16; // patch OBJ ROM checks + rom[0x55e40/4] = (rom[0x55e40/4] & 0xffff0000) | 0x4e71; // goes away from the POST } GAME( 199?, kingtut, 0, kongambl, kongambl, kingtut, ROT0, "Konami", "King Tut (NSW, Australia)", GAME_NOT_WORKING | GAME_NO_SOUND )