new clone

----------
Beast Busters (US, Version 2) [Brian Hargrove]
(he hasn't confirmed if he's OK being credited with his real name yet, so if the situation changes I'll mail the list)

I've also DEMOTED Beast Busters to non-working.  As soon as you calibrate the guns the game fails, and without calibrated guns you can't really play.  The gun reading is hacked, as are the gun interrupts.  This needs fixing *properly*, at which poin I imagine it will actually work, and no just hang after calibration.  From what I can tell it's never worked after calibration hence the demotion.
This commit is contained in:
davidhay 2008-11-13 22:21:50 +00:00
parent d3046b899f
commit 52e6f0c7d0
2 changed files with 86 additions and 109 deletions

View File

@ -190,8 +190,6 @@ If you calibrate the guns correctly the game runs as expected:
#include "sound/2608intf.h" #include "sound/2608intf.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
#define BBUSTERS_HACK 0
#define MECHATT_HACK 0
VIDEO_START( bbuster ); VIDEO_START( bbuster );
VIDEO_START( mechatt ); VIDEO_START( mechatt );
@ -207,41 +205,32 @@ WRITE16_HANDLER( bbuster_video_w );
/******************************************************************************/ /******************************************************************************/
#if BBUSTERS_HACK
static MACHINE_RESET( bbusters )
{
UINT16 *RAM = (UINT16 *)memory_region(machine, "main");
int data = input_port_read(machine, "FAKE1") & 0x03;
/* Country/Version : /* Beast Busters Region code works as follows
- 0x0000 : Japan?
- 0x0004 : US?
- 0x0008 : World? (default)
- 0x000c : World? (same as 0x0008)
*/
RAM[0x003954/2] = data * 4; ROM[0x003954/2] = data * 4;
// memset (eprom_data, 0xff, 0x80); // Force EEPROM reset Country/Version :
}
#endif
#if MECHATT_HACK - 0x0000 : Japan?
static MACHINE_RESET( mechatt ) - 0x0004 : US?
{ - 0x0008 : World? (default)
UINT16 *RAM = (UINT16 *)memory_region(machine, "main"); - 0x000c : World? (same as 0x0008)
int data = input_port_read(machine, "FAKE1") & 0x03;
/* Country : */
- 0x0000 : Japan
- 0x1111 : World (default) /* Mech Attack Region code works as follows
- 0x2222 : US
- 0x3333 : Asia? ROM[0x06a000/2] = (data << 12) | (data << 8) | (data << 4) | (data << 0);
*/
Country :
- 0x0000 : Japan
- 0x1111 : World (default)
- 0x2222 : US
- 0x3333 : Asia?
*/
RAM[0x06a000/2] = (data << 12) | (data << 8) | (data << 4) | (data << 0);
}
#endif
/******************************************************************************/ /******************************************************************************/
@ -290,12 +279,13 @@ static WRITE16_HANDLER( gun_select_w )
static READ16_HANDLER( kludge_r ) static READ16_HANDLER( kludge_r )
{ {
bbuster_ram[0xa692/2] = input_port_read(machine, "GUNX1")<<1; // this is a hack...
bbuster_ram[0xa694/2] = input_port_read(machine, "GUNY1")<<1; // bbuster_ram[0xa692/2] = input_port_read(machine, "GUNX1")<<1;
bbuster_ram[0xa696/2] = input_port_read(machine, "GUNX2")<<1; // bbuster_ram[0xa694/2] = input_port_read(machine, "GUNY1")<<1;
bbuster_ram[0xa698/2] = input_port_read(machine, "GUNY2")<<1; // bbuster_ram[0xa696/2] = input_port_read(machine, "GUNX2")<<1;
bbuster_ram[0xa69a/2] = input_port_read(machine, "GUNX3")<<1; // bbuster_ram[0xa698/2] = input_port_read(machine, "GUNY2")<<1;
bbuster_ram[0xa69c/2] = input_port_read(machine, "GUNY3")<<1; // bbuster_ram[0xa69a/2] = input_port_read(machine, "GUNX3")<<1;
// bbuster_ram[0xa69c/2] = input_port_read(machine, "GUNY3")<<1;
return 0; return 0;
} }
@ -488,15 +478,6 @@ static INPUT_PORTS_START( bbusters )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(3) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(3)
PORT_START("GUNY3") PORT_START("GUNY3")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(3) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(3)
#if BBUSTERS_HACK
PORT_START("FAKE1")
PORT_DIPNAME( 0x03, 0x02, "Country/Version" )
PORT_DIPSETTING( 0x00, "Japan?" )
PORT_DIPSETTING( 0x01, "US?" )
PORT_DIPSETTING( 0x02, "World?" )
// PORT_DIPSETTING( 0x03, "World?" ) // Same as "0008" - impossible choice ?
#endif
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( mechatt ) static INPUT_PORTS_START( mechatt )
@ -564,15 +545,6 @@ static INPUT_PORTS_START( mechatt )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2)
PORT_START("GUNY2") PORT_START("GUNY2")
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2)
#if MECHATT_HACK
PORT_START("FAKE1")
PORT_DIPNAME( 0x03, 0x01, "Country" )
PORT_DIPSETTING( 0x00, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x01, DEF_STR( World ) )
PORT_DIPSETTING( 0x02, "US" )
PORT_DIPSETTING( 0x03, "Asia?" )
#endif
INPUT_PORTS_END INPUT_PORTS_END
/******************************************************************************/ /******************************************************************************/
@ -704,10 +676,6 @@ static MACHINE_DRIVER_START( bbusters )
MDRV_CPU_PROGRAM_MAP(sound_map,0) MDRV_CPU_PROGRAM_MAP(sound_map,0)
MDRV_CPU_IO_MAP(sound_portmap,0) MDRV_CPU_IO_MAP(sound_portmap,0)
#if BBUSTERS_HACK
MDRV_MACHINE_RESET(bbusters)
#endif
MDRV_NVRAM_HANDLER(bbusters) MDRV_NVRAM_HANDLER(bbusters)
/* video hardware */ /* video hardware */
@ -747,10 +715,6 @@ static MACHINE_DRIVER_START( mechatt )
MDRV_CPU_PROGRAM_MAP(sound_map,0) MDRV_CPU_PROGRAM_MAP(sound_map,0)
MDRV_CPU_IO_MAP(sounda_portmap,0) MDRV_CPU_IO_MAP(sounda_portmap,0)
#if MECHATT_HACK
MDRV_MACHINE_RESET(mechatt)
#endif
/* video hardware */ /* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
@ -811,10 +775,11 @@ ROM_START( bbusters )
ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) )
ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */
/* same rom exists in 4 different locations on the board */
ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
/* This rom also as bb-7.h7 */ ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
/* This rom also as bb-8.a14 */ ROM_LOAD( "bb-8.a14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
/* This rom also as bb-9.c14 */ ROM_LOAD( "bb-9.c14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
ROM_REGION( 0x80000, "ym", 0 ) ROM_REGION( 0x80000, "ym", 0 )
ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) ) ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) )
@ -823,6 +788,52 @@ ROM_START( bbusters )
ROM_LOAD( "bb-pcmb.l3", 0x000000, 0x80000, CRC(c8d5dd53) SHA1(0f7e94532cc14852ca12c1b792e5479667af899e) ) ROM_LOAD( "bb-pcmb.l3", 0x000000, 0x80000, CRC(c8d5dd53) SHA1(0f7e94532cc14852ca12c1b792e5479667af899e) )
ROM_END ROM_END
ROM_START( bbusteru )
ROM_REGION( 0x80000, "main", 0 )
ROM_LOAD16_BYTE( "bbv2-3.k10", 0x000000, 0x20000, CRC(6930088b) SHA1(265f0b584d81b6fdcda5c3a2e0bd15d56443bb35) )
ROM_LOAD16_BYTE( "bbv2-5.k12", 0x000001, 0x20000, CRC(cfdb2c6c) SHA1(54a837dc84b74d12e931f607f3dc9ee06a7e4d31) )
ROM_LOAD16_BYTE( "bb-2.k8", 0x040000, 0x20000, CRC(20141805) SHA1(0958579681bda81bcf48d020a14bc147c1e575f1) )
ROM_LOAD16_BYTE( "bb-4.k11", 0x040001, 0x20000, CRC(d482e0e9) SHA1(e56ca92965e8954b613ba4b0e3975e3a12840c30) )
ROM_REGION( 0x10000, "audio", 0 )
ROM_LOAD( "bb-1.e6", 0x000000, 0x10000, CRC(4360f2ee) SHA1(4c6b212f59389bdf4388893d2030493b110ac087) )
ROM_REGION( 0x020000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) )
ROM_REGION( 0x200000, "gfx2", ROMREGION_DISPOSE )
ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) )
ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) )
ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) )
ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) )
ROM_REGION( 0x200000, "gfx3", ROMREGION_DISPOSE )
ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) )
ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) )
ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) )
ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) )
ROM_REGION( 0x80000, "gfx4", ROMREGION_DISPOSE )
ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) )
ROM_REGION( 0x80000, "gfx5", ROMREGION_DISPOSE )
ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) )
ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */
/* same rom exists in 4 different locations on the board */
ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
ROM_LOAD( "bb-8.a14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
ROM_LOAD( "bb-9.c14", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
ROM_REGION( 0x80000, "ym", 0 )
ROM_LOAD( "bb-pcma.l5", 0x000000, 0x80000, CRC(44cd5bfe) SHA1(26a612191a0aa614c090203485aba17c99c763ee) )
ROM_REGION( 0x80000, "ym.deltat", 0 )
ROM_LOAD( "bb-pcmb.l3", 0x000000, 0x80000, CRC(c8d5dd53) SHA1(0f7e94532cc14852ca12c1b792e5479667af899e) )
ROM_END
ROM_START( mechatt ) ROM_START( mechatt )
ROM_REGION( 0x80000, "main", 0 ) ROM_REGION( 0x80000, "main", 0 )
ROM_LOAD16_BYTE( "ma5-e.bin", 0x000000, 0x20000, CRC(9bbb852a) SHA1(34b696bf79cf53cac1c384a3143c0f3f243a71f3) ) ROM_LOAD16_BYTE( "ma5-e.bin", 0x000000, 0x20000, CRC(9bbb852a) SHA1(34b696bf79cf53cac1c384a3143c0f3f243a71f3) )
@ -856,7 +867,7 @@ ROM_START( mechatt )
ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */ ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */
ROM_LOAD( "ma8.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma8.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
/* ma9 is identical to ma8 */ ROM_LOAD( "ma9.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) /* identical to ma8 */
ROM_END ROM_END
@ -893,50 +904,15 @@ ROM_START( mechattu )
ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */ ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */
ROM_LOAD( "ma8.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma8.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) )
/* ma9 is identical to ma8 */ ROM_LOAD( "ma9.bin", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) /* identical to ma8 */
ROM_END ROM_END
#if 0
static void bbusters_patch_code(UINT16 offset)
{
/* To avoid checksum error */
UINT16 *RAM = (UINT16 *)memory_region(machine, "main");
RAM[(offset + 0)/2] = 0x4e71;
RAM[(offset + 2)/2] = 0x4e71;
RAM[(offset + 10)/2] = 0x4e71;
RAM[(offset + 12)/2] = 0x4e71;
RAM[(offset + 20)/2] = 0x4e71;
RAM[(offset + 22)/2] = 0x4e71;
RAM[(offset + 30)/2] = 0x4e71;
RAM[(offset + 32)/2] = 0x4e71;
}
#endif
static DRIVER_INIT( bbusters )
{
#if BBUSTERS_HACK
bbusters_patch_code(0x00234c);
#endif
}
static DRIVER_INIT( mechatt )
{
#if MECHATT_HACK
bbusters_patch_code(0x003306);
#endif
}
/******************************************************************************/ /******************************************************************************/
#if !MECHATT_HACK // as soon as you calibrate the guns in test mode the game refuses to boot
GAME( 1989, bbusters, 0, bbusters, bbusters, bbusters, ROT0, "SNK", "Beast Busters (World ?)", 0 ) GAME( 1989, bbusters, 0, bbusters, bbusters, 0, ROT0, "SNK", "Beast Busters (World)", GAME_NOT_WORKING )
#else GAME( 1989, bbusteru, bbusters, bbusters, bbusters, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", GAME_NOT_WORKING )
GAME( 1989, bbusters, 0, bbusters, bbusters, bbusters, ROT0, "SNK", "Beast Busters", 0 )
#endif GAME( 1989, mechatt, 0, mechatt, mechatt, 0, ROT0, "SNK", "Mechanized Attack (World)", 0 )
#if !MECHATT_HACK GAME( 1989, mechattu, mechatt, mechatt, mechatt, 0, ROT0, "SNK", "Mechanized Attack (US)", 0 )
GAME( 1989, mechatt, 0, mechatt, mechatt, mechatt, ROT0, "SNK", "Mechanized Attack (World)", 0 )
#else
GAME( 1989, mechatt, 0, mechatt, mechatt, mechatt, ROT0, "SNK", "Mechanized Attack", 0 )
#endif
GAME( 1989, mechattu, mechatt, mechatt, mechatt, mechatt, ROT0, "SNK", "Mechanized Attack (US)", 0 )

View File

@ -5595,6 +5595,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( mechatt ) /* A8002 'MA' (c) 1989 */ DRIVER( mechatt ) /* A8002 'MA' (c) 1989 */
DRIVER( mechattu ) /* A8002 'MA' (c) 1989 */ DRIVER( mechattu ) /* A8002 'MA' (c) 1989 */
DRIVER( bbusters ) /* A9003 'BB' (c) 1989 */ DRIVER( bbusters ) /* A9003 'BB' (c) 1989 */
DRIVER( bbusteru ) /* A9003 'BB' (c) 1989 */
/* Electrocoin on early SNK hardware - gambling game remove once it works */ /* Electrocoin on early SNK hardware - gambling game remove once it works */
DRIVER( dmndrby ) /* G4001 'DD' (c) 1986 */ DRIVER( dmndrby ) /* G4001 'DD' (c) 1986 */