summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author davidhay <davidhay@localhost>2008-04-15 15:06:19 +0000
committer davidhay <davidhay@localhost>2008-04-15 15:06:19 +0000
commit72805780a70b4d766d94e11564d618a4392cb569 (patch)
tree48e222e66cc92918c4a2f4d0cce814eff3b6cfc5
parent71ca9ecec226cad90f15c9244fe59d49af27bb9f (diff)
probably not too interesting.. just some changes to the 'v25' code in toaplan2.c ..
Batsugun does upload what looks to be the entire program, unencrypted. If enabled it runs to the point of waiting for interrupts, however, for those it looks like it needs a real V25 core with register banks etc. The other games using the V25 (Dogyuun, Fix Eight, VFive/GrindStormer) only upload a 'stub' program and are encrypted, maybe they upload the rest later? Knuckle Bash is ROM based V25 (and encrypted). Charles is working on decrypting them anyway, but core updates would be handy.
-rw-r--r--src/mame/drivers/toaplan2.c267
1 files changed, 209 insertions, 58 deletions
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index ab247f17800..f3f3b20d8db 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -288,8 +288,8 @@ To Do / Unknowns:
/**************** Machine stuff ******************/
-#define HD64x180 0 /* Define if CPU support is available */
-#define V25 0
+#define USE_HD64x180 0 /* Define if CPU support is available */
+#define USE_V25 0
#define CPU_2_NONE 0x00
#define CPU_2_Z80 0x5a
@@ -381,6 +381,13 @@ void kbash_okisnd_w(running_machine *machine, int data);
void fixeight_okisnd_w(running_machine *machine, int data);
void batsugun_okisnd_w(running_machine *machine, int data);
+MACHINE_RESET(batsugun);
+#if USE_V25
+static READ16_HANDLER( batsugun_share_r );
+static READ16_HANDLER( batsugun_share2_r );
+static WRITE16_HANDLER( batsugun_share_w );
+static WRITE16_HANDLER( batsugun_share2_w );
+#endif
/***************************************************************************
Initialisation handlers
@@ -413,13 +420,13 @@ static MACHINE_RESET( ghox )
static MACHINE_RESET( dogyuun )
{
- MACHINE_RESET_CALL(toaplan2);
+ MACHINE_RESET_CALL(batsugun);
mcu_data = 0xffaa;
}
static MACHINE_RESET( vfive )
{
- MACHINE_RESET_CALL(toaplan2);
+ MACHINE_RESET_CALL(batsugun);
mcu_data = 0xffaa;
}
@@ -457,8 +464,12 @@ static DRIVER_INIT( T2_noZ80 )
static DRIVER_INIT( fixeight )
{
+ #if USE_V25
+
+ #else
memory_install_readwrite16_handler(0, ADDRESS_SPACE_PROGRAM, 0x28f002, 0x28fbff, 0, 0, SMH_BANK2, SMH_BANK2 );
memory_set_bankptr(2, fixeight_sec_cpu_mem);
+ #endif
toaplan2_sub_cpu = CPU_2_V25;
}
@@ -663,6 +674,28 @@ static WRITE16_HANDLER( toaplan2_coin_word_w )
}
}
+WRITE16_HANDLER( toaplan2_v25_coin_word_w )
+{
+ // logerror("toaplan2_v25_coin_word_w %04x\n",data);
+
+ if (ACCESSING_BITS_0_7)
+ {
+ toaplan2_coin_w(machine, offset, data & 0x0f);
+
+ #if USE_V25
+ /* only the ram-based V25 based games access the following bits */
+ //cpunum_set_input_line(Machine, 1, INPUT_LINE_RESET, (data & 0x0020) ? CLEAR_LINE : ASSERT_LINE );
+ cpunum_set_input_line(Machine, 1, INPUT_LINE_HALT, (data & 0x0010) ? CLEAR_LINE : ASSERT_LINE);
+ #endif
+
+ }
+ if (ACCESSING_BITS_8_15 && (data & 0xff00) )
+ {
+ logerror("Writing unknown upper MSB command (%04x) to coin control\n",data & 0xff00);
+ }
+}
+
+
static WRITE16_HANDLER( shippumd_coin_word_w )
{
if (ACCESSING_BITS_0_7)
@@ -1397,10 +1430,12 @@ static ADDRESS_MAP_START( dogyuun_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w)
-#if V25
- AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
- AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w)
+#if USE_V25
+// AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
+// AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x210000, 0x21efff) AM_RAM AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
+ AM_RANGE(0x21f000, 0x21ffff) AM_RAM AM_READWRITE( batsugun_share_r, batsugun_share_w )
#else
AM_RANGE(0x21e000, 0x21efff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)
AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, dogyuun_snd_cpu_w) /* V25+ status/command port */
@@ -1537,7 +1572,16 @@ static ADDRESS_MAP_START( pipibibi_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2")
ADDRESS_MAP_END
+#if USE_V25
+// guess, could be wrong
+WRITE16_HANDLER( fixeight_subcpu_ctrl )
+{
+ /* 0x18 used */
+ cpunum_set_input_line(Machine, 1, INPUT_LINE_HALT, (data & 0x0010) ? CLEAR_LINE : ASSERT_LINE);
+}
+#endif
+/* this one is rather different to the other v25 based ones, shared ram is moved for example */
static ADDRESS_MAP_START( fixeight_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
@@ -1546,11 +1590,14 @@ static ADDRESS_MAP_START( fixeight_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3")
AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS")
AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w) /* Coin count/lock */
- AM_RANGE(0x280000, 0x28dfff) AM_RAM /* part of shared ram ? */
-#if V25
- AM_RANGE(0x28e000, 0x28fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $28f000 status port */
- AM_RANGE(0x28fc00, 0x28ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+#if USE_V25
+// AM_RANGE(0x28e000, 0x28fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $28f000 status port */
+// AM_RANGE(0x28fc00, 0x28ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x280000, 0x28efff) AM_RAM AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
+ AM_RANGE(0x28f000, 0x28ffff) AM_RAM AM_READWRITE( batsugun_share_r, batsugun_share_w )
+ AM_RANGE(0x700000, 0x700001) AM_WRITE(fixeight_subcpu_ctrl) // guess!!!
#else
+ AM_RANGE(0x280000, 0x28dfff) AM_RAM /* part of shared ram ? */
AM_RANGE(0x28e000, 0x28efff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)
AM_RANGE(0x28f000, 0x28f001) AM_READWRITE(fixeight_sec_cpu_r, fixeight_sec_cpu_w) AM_BASE(&fixeight_sec_cpu_mem) /* V25+ Command/Status port */
// AM_RANGE(0x28f002, 0x28f003) AM_READ(SMH_RAM) /* part of shared ram */
@@ -1604,10 +1651,12 @@ static ADDRESS_MAP_START( vfive_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w) /* Coin count/lock */
-#if V25
- AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
- AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) /* Coin count/lock */
+#if USE_V25
+// AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
+// AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x210000, 0x21efff) AM_RAM AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
+ AM_RANGE(0x21f000, 0x21ffff) AM_RAM AM_READWRITE( batsugun_share_r, batsugun_share_w )
#else
AM_RANGE(0x21e000, 0x21efff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)
AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, vfive_snd_cpu_w) /* V25+ Command/Status port */
@@ -1625,18 +1674,66 @@ static ADDRESS_MAP_START( vfive_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_END
+#if USE_V25
+static UINT8* batsugun_share;
+static UINT8* batsugun_share2;
+
+static READ16_HANDLER( batsugun_share_r )
+{
+ return batsugun_share[offset] | batsugun_share[offset]<<8;
+
+}
+
+static WRITE16_HANDLER( batsugun_share_w )
+{
+ /*
+ if (ACCESSING_BITS_8_15)
+ {
+ batsugun_share[offset] = data >> 8;
+ }
+ */
+ if (ACCESSING_BITS_0_7)
+ {
+ batsugun_share[offset] = data;
+ }
+}
+
+
+static READ16_HANDLER( batsugun_share2_r )
+{
+ return batsugun_share2[offset] | batsugun_share2[offset]<<8;
+}
+
+static WRITE16_HANDLER( batsugun_share2_w )
+{
+ /*
+ if (ACCESSING_BITS_8_15)
+ {
+ batsugun_share2[offset] = data >> 8;
+ }
+ */
+
+ if (ACCESSING_BITS_0_7)
+ {
+ batsugun_share2[offset] = data;
+ }
+}
+#endif
+
static ADDRESS_MAP_START( batsugun_68k_mem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM
AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1")
AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2")
AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS")
- AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w) /* Coin count/lock */
- AM_RANGE(0x210000, 0x21bbff) AM_RAM
-#if V25
- AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
- AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) /* Coin count/lock + v25 reset/hold control lines? */
+#if USE_V25
+// AM_RANGE(0x21e000, 0x21fbff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16) /* $21f000 status port */
+// AM_RANGE(0x21fc00, 0x21ffff) AM_READWRITE(V25_sharedram_r, V25_sharedram_w) AM_BASE(&V25_shared_ram) /* 16-bit on 68000 side, 8-bit on V25+ side */
+ AM_RANGE(0x210000, 0x21efff) AM_RAM AM_READWRITE( batsugun_share2_r, batsugun_share2_w )
+ AM_RANGE(0x21f000, 0x21ffff) AM_RAM AM_READWRITE( batsugun_share_r, batsugun_share_w )
#else
+ AM_RANGE(0x210000, 0x21bbff) AM_RAM
AM_RANGE(0x21e000, 0x21efff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&toaplan2_shared_ram16)
AM_RANGE(0x21f000, 0x21f001) AM_READWRITE(toaplan2_snd_cpu_r, batsugun_snd_cpu_w) /* V25+ Command/Status port */
AM_RANGE(0x21f004, 0x21f005) AM_READ_PORT("DSWA")
@@ -1908,7 +2005,7 @@ ADDRESS_MAP_END
-#if HD64x180
+#if USE_HD64x180
static ADDRESS_MAP_START( hd647180_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xfe00, 0xffff) AM_RAM /* Internal 512 bytes of RAM */
@@ -1916,20 +2013,22 @@ ADDRESS_MAP_END
#endif
-#if V25
+#if USE_V25
+
+/* this seems to be the map for the ROM based game, Knuckle Bash */
static ADDRESS_MAP_START( V25_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x00000, 0x03fff) AM_ROM
// AM_RANGE(0x00000, 0x007ff) AM_RAM /* External shared RAM (Banked) */
AM_RANGE(0x04000, 0x04000) AM_READWRITE(YM2151_status_port_0_r, YM2151_register_port_0_w)
AM_RANGE(0x04001, 0x04001) AM_WRITE(YM2151_data_port_0_w)
AM_RANGE(0x04002, 0x04002) AM_READWRITE(OKIM6295_status_0_r, OKIM6295_data_0_w)
- AM_RANGE(0x04004, 0x04004) AM_WRITE(oki_bankswitch_w)
+// AM_RANGE(0x04004, 0x04004) AM_WRITE(oki_bankswitch_w)
AM_RANGE(0x04008, 0x04008) AM_READ_PORT("IN1")
AM_RANGE(0x0400a, 0x0400a) AM_READ_PORT("IN2")
AM_RANGE(0x0400c, 0x0400c) AM_READ_PORT("SYS")
AM_RANGE(0x0400e, 0x0400e) AM_WRITE(toaplan2_coin_w)
AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 bytes of RAM */
- AM_RANGE(0x80000, 0x87fff) AM_RAM AM_BASE(&V25_sharedram) /* External shared RAM (ROM for KBASH) */
+// AM_RANGE(0x80000, 0x87fff) AM_RAM AM_BASE(&V25_sharedram) /* External shared RAM (ROM for KBASH) */
ADDRESS_MAP_END
@@ -1938,6 +2037,39 @@ static ADDRESS_MAP_START( V25_port, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x0061, 0x0061) AM_READ_PORT("DSWA") /* Directly mapped I/O ports */
AM_RANGE(0x0062, 0x0062) AM_READ_PORT("JMPR") /* Directly mapped I/O ports */
ADDRESS_MAP_END
+
+
+/* the others upload the V25 code into shared RAM and have this map (incomplete)
+
+ Batsugun code is not encrypted, but requires additional v25 features to be emulated.
+
+ Others are encrypted
+*/
+
+
+
+
+static ADDRESS_MAP_START( V25_rambased_mem, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x00000, 0x00000) AM_WRITE( YM2151_register_port_0_w )
+ AM_RANGE(0x00001, 0x00001) AM_READWRITE(YM2151_status_port_0_r, YM2151_data_port_0_w)
+
+ AM_RANGE(0x07800, 0x07fff) AM_RAM AM_SHARE(6)
+
+ AM_RANGE(0x40000, 0x477ff) AM_RAM AM_SHARE(7)
+
+ AM_RANGE(0x87800, 0x87fff) AM_RAM AM_SHARE(6)
+
+ AM_RANGE(0xa0000, 0xa77ff) AM_RAM AM_SHARE(7) AM_BASE(&batsugun_share2)
+ AM_RANGE(0xa7800, 0xa7fff) AM_RAM AM_SHARE(6)
+
+ AM_RANGE(0xff800, 0xfffff) AM_RAM AM_SHARE(6) AM_BASE(&batsugun_share)
+ADDRESS_MAP_END
+
+
+
+
+
+
#endif
@@ -3299,7 +3431,7 @@ static MACHINE_DRIVER_START( tekipaki )
MDRV_CPU_PROGRAM_MAP(tekipaki_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if HD64x180
+#if USE_HD64x180
MDRV_CPU_ADD(Z180, 10000000) /* HD647180 CPU actually */
MDRV_CPU_PROGRAM_MAP(hd647180_mem, 0)
#endif
@@ -3338,7 +3470,7 @@ static MACHINE_DRIVER_START( ghox )
MDRV_CPU_PROGRAM_MAP(ghox_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if HD64x180
+#if USE_HD64x180
MDRV_CPU_ADD(Z180, XTAL_10MHz) /* HD647180 CPU actually */
MDRV_CPU_PROGRAM_MAP(hd647180_mem, 0)
#endif
@@ -3376,10 +3508,10 @@ static MACHINE_DRIVER_START( dogyuun )
MDRV_CPU_PROGRAM_MAP(dogyuun_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if V25
- MDRV_CPU_ADD(Z180, XTAL_25MHz/2) /* NEC V25+ type Toaplan marked CPU ??? */
- MDRV_CPU_PROGRAM_MAP(V25_mem, 0)
- MDRV_CPU_IO_MAP(V25_port, 0)
+#if USE_V25
+ MDRV_CPU_ADD(V25, XTAL_25MHz/2) /* NEC V25+ type Toaplan marked CPU ??? */
+ MDRV_CPU_PROGRAM_MAP(V25_rambased_mem, 0)
+ //MDRV_CPU_IO_MAP(V25_port, 0)
#endif
MDRV_MACHINE_RESET(dogyuun)
@@ -3419,8 +3551,9 @@ static MACHINE_DRIVER_START( kbash )
MDRV_CPU_PROGRAM_MAP(kbash_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if V25
- MDRV_CPU_ADD(Z180, 16000000) /* NEC V25+ type Toaplan marked CPU ??? */
+ /* ROM based v25 */
+#if USE_V25
+ MDRV_CPU_ADD(V25, 16000000) /* NEC V25+ type Toaplan marked CPU ??? */
MDRV_CPU_PROGRAM_MAP(V25_mem, 0)
MDRV_CPU_IO_MAP(V25_port, 0)
#endif
@@ -3654,13 +3787,13 @@ static MACHINE_DRIVER_START( fixeight )
MDRV_CPU_PROGRAM_MAP(fixeight_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if V25
- MDRV_CPU_ADD(Z180, XTAL_16MHz) /* NEC V25+ type Toaplan marked CPU ??? */
- MDRV_CPU_PROGRAM_MAP(V25_mem, 0)
- MDRV_CPU_IO_MAP(V25_port, 0)
+#if USE_V25
+ MDRV_CPU_ADD(V25, XTAL_16MHz) /* NEC V25+ type Toaplan marked CPU ??? */
+ MDRV_CPU_PROGRAM_MAP(V25_rambased_mem, 0)
+ //MDRV_CPU_IO_MAP(V25_port, 0)
#endif
- MDRV_MACHINE_RESET(toaplan2)
+ MDRV_MACHINE_RESET(batsugun)
// MDRV_NVRAM_HANDLER(fixeight) /* See 37B6 code */
/* video hardware */
@@ -3731,10 +3864,10 @@ static MACHINE_DRIVER_START( vfive )
MDRV_CPU_PROGRAM_MAP(vfive_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if V25
- MDRV_CPU_ADD(Z180, 10000000) /* NEC V25+ type Toaplan marked CPU ??? */
- MDRV_CPU_PROGRAM_MAP(V25_mem, 0)
- MDRV_CPU_IO_MAP(V25_port, 0)
+#if USE_V25
+ MDRV_CPU_ADD(V25, 32000000/2) /* NEC V25+ type Toaplan marked CPU ??? */
+ MDRV_CPU_PROGRAM_MAP(V25_rambased_mem, 0)
+ //MDRV_CPU_IO_MAP(V25_port, 0)
#endif
MDRV_MACHINE_RESET(vfive)
@@ -3762,6 +3895,23 @@ static MACHINE_DRIVER_START( vfive )
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
+MACHINE_RESET(batsugun)
+{
+ #if USE_V25
+ cpunum_set_input_line(machine, 1, INPUT_LINE_HALT, ASSERT_LINE);
+ #endif
+}
+
+void batsugun_ym2151_irqhandler(int linestate)
+{
+ logerror("batsugun_ym2151_irqhandler %02x\n",linestate);
+// update_irq_lines(Machine, linestate ? assert : clear);
+}
+
+const struct YM2151interface batsugun_ym2151_interface =
+{
+ batsugun_ym2151_irqhandler
+};
static MACHINE_DRIVER_START( batsugun )
@@ -3770,13 +3920,13 @@ static MACHINE_DRIVER_START( batsugun )
MDRV_CPU_PROGRAM_MAP(batsugun_68k_mem, 0)
MDRV_CPU_VBLANK_INT("main", toaplan2_vblank_irq4)
-#if V25
- MDRV_CPU_ADD(Z180, 32000000/2) /* NEC V25+ type Toaplan marked CPU ??? */
- MDRV_CPU_PROGRAM_MAP(V25_mem, 0)
- MDRV_CPU_IO_MAP(V25_port, 0)
+#if USE_V25
+ MDRV_CPU_ADD(V25, 32000000/2) /* NEC V25+ type Toaplan marked CPU ??? */
+ MDRV_CPU_PROGRAM_MAP(V25_rambased_mem, 0)
+ //MDRV_CPU_IO_MAP(V25_port, 0)
#endif
- MDRV_MACHINE_RESET(toaplan2)
+ MDRV_MACHINE_RESET(batsugun)
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
@@ -3799,6 +3949,7 @@ static MACHINE_DRIVER_START( batsugun )
MDRV_SOUND_ADD(YM2151, 27000000/8)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ MDRV_SOUND_CONFIG(batsugun_ym2151_interface)
MDRV_SOUND_ADD(OKIM6295, 32000000/8)
MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7low)
@@ -4069,7 +4220,7 @@ ROM_START( tekipaki )
ROM_LOAD16_BYTE( "tp020-1.bin", 0x000000, 0x010000, CRC(d8420bd5) SHA1(30c1ad9e053cd7e79adb42aa428ebee28e144755) )
ROM_LOAD16_BYTE( "tp020-2.bin", 0x000001, 0x010000, CRC(7222de8e) SHA1(8352ae23efc24a2e20cc24b6d37cb8fc6b1a730c) )
-#if HD64x180
+#if USE_HD64x180
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound HD647180 code */
/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
ROM_LOAD( "hd647180.020", 0x00000, 0x08000, NO_DUMP )
@@ -4086,7 +4237,7 @@ ROM_START( ghox )
ROM_LOAD16_BYTE( "tp021-01.u10", 0x000000, 0x020000, CRC(9e56ac67) SHA1(daf241d9e55a6e60fc004ed61f787641595b1e62) )
ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) )
-#if HD64x180
+#if USE_HD64x180
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound HD647180 code */
/* sound CPU is a HD647180 (Z180) with internal ROM - not yet supported */
ROM_LOAD( "hd647180.021", 0x00000, 0x08000, NO_DUMP )
@@ -4104,7 +4255,7 @@ ROM_START( dogyuun )
/* Secondary CPU is a Toaplan marked chip, (TS-002-MACH TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp022.mcu", 0x00000, 0x08000, NO_DUMP )
#endif
@@ -4128,7 +4279,7 @@ ROM_START( kbash )
/* Secondary CPU is a Toaplan marked chip, (TS-004-Dash TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x88000, REGION_CPU2, 0 ) /* Sound CPU code */
ROM_LOAD( "kbash02.bin", 0x80000, 0x08000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
#else
@@ -4235,7 +4386,7 @@ ROM_START( fixeight )
/* Secondary CPU is a Toaplan marked chip, (TS-001-Turbo TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Secondary CPU code */
// ROM_LOAD( "tp-026.mcu", 0x0000, 0x8000, NO_DUMP )
#endif
@@ -4280,7 +4431,7 @@ ROM_START( grindstm )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
#endif
@@ -4297,7 +4448,7 @@ ROM_START( grindsta )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
#endif
@@ -4314,7 +4465,7 @@ ROM_START( vfive )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp027.mcu", 0x8000, 0x8000, NO_DUMP )
#endif
@@ -4331,7 +4482,7 @@ ROM_START( batsugun )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
#endif
@@ -4357,7 +4508,7 @@ ROM_START( batsugna )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
#endif
@@ -4383,7 +4534,7 @@ ROM_START( batugnsp )
/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy TOA PLAN) */
/* Its likely to be a NEC V25+ (PLCC94). */
-#if V25
+#if USE_V25
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU code */
// ROM_LOAD( "tp030.mcu", 0x8000, 0x8000, NO_DUMP )
#endif