From 52e6f0c7d0dfa8f11a7eab1ef88678e713c52c49 Mon Sep 17 00:00:00 2001 From: davidhay Date: Thu, 13 Nov 2008 22:21:50 +0000 Subject: [PATCH] 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. --- src/mame/drivers/bbusters.c | 194 ++++++++++++++++-------------------- src/mame/mamedriv.c | 1 + 2 files changed, 86 insertions(+), 109 deletions(-) diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c index e0440a6b20e..7caabf30fda 100644 --- a/src/mame/drivers/bbusters.c +++ b/src/mame/drivers/bbusters.c @@ -190,8 +190,6 @@ If you calibrate the guns correctly the game runs as expected: #include "sound/2608intf.h" #include "sound/2610intf.h" -#define BBUSTERS_HACK 0 -#define MECHATT_HACK 0 VIDEO_START( bbuster ); 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 : - - 0x0000 : Japan? - - 0x0004 : US? - - 0x0008 : World? (default) - - 0x000c : World? (same as 0x0008) - */ +/* Beast Busters Region code works as follows - RAM[0x003954/2] = data * 4; +ROM[0x003954/2] = data * 4; -// memset (eprom_data, 0xff, 0x80); // Force EEPROM reset -} -#endif +Country/Version : -#if MECHATT_HACK -static MACHINE_RESET( mechatt ) -{ - UINT16 *RAM = (UINT16 *)memory_region(machine, "main"); - int data = input_port_read(machine, "FAKE1") & 0x03; + - 0x0000 : Japan? + - 0x0004 : US? + - 0x0008 : World? (default) + - 0x000c : World? (same as 0x0008) - /* Country : - - 0x0000 : Japan - - 0x1111 : World (default) - - 0x2222 : US - - 0x3333 : Asia? - */ +*/ + +/* Mech Attack Region code works as follows + +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 ) { - bbuster_ram[0xa692/2] = input_port_read(machine, "GUNX1")<<1; - bbuster_ram[0xa694/2] = input_port_read(machine, "GUNY1")<<1; - bbuster_ram[0xa696/2] = input_port_read(machine, "GUNX2")<<1; - bbuster_ram[0xa698/2] = input_port_read(machine, "GUNY2")<<1; - bbuster_ram[0xa69a/2] = input_port_read(machine, "GUNX3")<<1; - bbuster_ram[0xa69c/2] = input_port_read(machine, "GUNY3")<<1; +// this is a hack... +// bbuster_ram[0xa692/2] = input_port_read(machine, "GUNX1")<<1; +// bbuster_ram[0xa694/2] = input_port_read(machine, "GUNY1")<<1; +// bbuster_ram[0xa696/2] = input_port_read(machine, "GUNX2")<<1; +// bbuster_ram[0xa698/2] = input_port_read(machine, "GUNY2")<<1; +// bbuster_ram[0xa69a/2] = input_port_read(machine, "GUNX3")<<1; +// bbuster_ram[0xa69c/2] = input_port_read(machine, "GUNY3")<<1; 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_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) - -#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 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_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) - -#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 /******************************************************************************/ @@ -704,10 +676,6 @@ static MACHINE_DRIVER_START( bbusters ) MDRV_CPU_PROGRAM_MAP(sound_map,0) MDRV_CPU_IO_MAP(sound_portmap,0) -#if BBUSTERS_HACK - MDRV_MACHINE_RESET(bbusters) -#endif - MDRV_NVRAM_HANDLER(bbusters) /* video hardware */ @@ -747,10 +715,6 @@ static MACHINE_DRIVER_START( mechatt ) MDRV_CPU_PROGRAM_MAP(sound_map,0) MDRV_CPU_IO_MAP(sounda_portmap,0) -#if MECHATT_HACK - MDRV_MACHINE_RESET(mechatt) -#endif - /* video hardware */ 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_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) ) - /* This rom also as bb-7.h7 */ - /* This rom also as bb-8.a14 */ - /* This rom also as bb-9.c14 */ + 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) ) @@ -823,6 +788,52 @@ ROM_START( bbusters ) ROM_LOAD( "bb-pcmb.l3", 0x000000, 0x80000, CRC(c8d5dd53) SHA1(0f7e94532cc14852ca12c1b792e5479667af899e) ) 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_REGION( 0x80000, "main", 0 ) 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_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 @@ -893,50 +904,15 @@ ROM_START( mechattu ) ROM_REGION( 0x20000, "user1", 0 ) /* Zoom table */ 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 -#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 -GAME( 1989, bbusters, 0, bbusters, bbusters, bbusters, ROT0, "SNK", "Beast Busters (World ?)", 0 ) -#else -GAME( 1989, bbusters, 0, bbusters, bbusters, bbusters, ROT0, "SNK", "Beast Busters", 0 ) -#endif -#if !MECHATT_HACK -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 ) +// as soon as you calibrate the guns in test mode the game refuses to boot +GAME( 1989, bbusters, 0, bbusters, bbusters, 0, ROT0, "SNK", "Beast Busters (World)", GAME_NOT_WORKING ) +GAME( 1989, bbusteru, bbusters, bbusters, bbusters, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", GAME_NOT_WORKING ) + +GAME( 1989, mechatt, 0, mechatt, mechatt, 0, ROT0, "SNK", "Mechanized Attack (World)", 0 ) +GAME( 1989, mechattu, mechatt, mechatt, mechatt, 0, ROT0, "SNK", "Mechanized Attack (US)", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index ceea2ddb3b6..845bc29c41b 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -5595,6 +5595,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11 DRIVER( mechatt ) /* A8002 'MA' (c) 1989 */ DRIVER( mechattu ) /* A8002 'MA' (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 */ DRIVER( dmndrby ) /* G4001 'DD' (c) 1986 */