From 621c21e43b77d86b442185dce1ef2196cf837099 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 6 Aug 2022 13:25:34 +0200 Subject: bmxstunts.cpp: moved everything into galaxian.cpp as the differences are really minimal. Sets bmxstunts has a couple of bitrotten program ROMs, but bmxstuntsa sorta works --- src/mame/arcade.flt | 1 - src/mame/galaxian/bmxstunts.cpp | 301 ---------------------------------------- src/mame/galaxian/galaxian.cpp | 173 +++++++++++++++++++++++ src/mame/galaxian/galaxian.h | 3 + src/mame/mame.lst | 6 +- 5 files changed, 178 insertions(+), 306 deletions(-) delete mode 100644 src/mame/galaxian/bmxstunts.cpp diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index 2cf6ad09376..0282726ba08 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -330,7 +330,6 @@ gaelco/targeth.cpp gaelco/thoop2.cpp gaelco/wrally.cpp gaelco/xorworld.cpp -galaxian/bmxstunts.cpp galaxian/dambustr.cpp galaxian/fastfred.cpp galaxian/galaxian.cpp diff --git a/src/mame/galaxian/bmxstunts.cpp b/src/mame/galaxian/bmxstunts.cpp deleted file mode 100644 index a6b079d020c..00000000000 --- a/src/mame/galaxian/bmxstunts.cpp +++ /dev/null @@ -1,301 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders: - -/* -BMX Stunts by Jetsoft - -This game runs on bootleg Galaxian style PCB, but an epoxy block is fitted in the CPU socket. -This contains a M6502, a SN76489, a PROM and logic. -The M6502 was possibly chosen because Jetsoft programmed an analogous game on the C64: BMX Trials - -Until differences and commonalities can be ascertained, this doesn't derive from galaxian_state. -Might be possible to derive later. -*/ - -#include "emu.h" - -#include "cpu/m6502/m6502.h" -#include "machine/watchdog.h" -#include "sound/sn76496.h" -#include "video/resnet.h" - -#include "emupal.h" -#include "screen.h" -#include "speaker.h" -#include "tilemap.h" - - -namespace { - -class bmxstunts_state : public driver_device -{ -public: - bmxstunts_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_screen(*this, "screen") - , m_gfxdecode(*this, "gfxdecode") - , m_palette(*this, "palette") - { } - - void bmxstunts(machine_config &config); - - void init_bmxstunts(); - -private: - required_device m_maincpu; - required_device m_screen; - required_device m_gfxdecode; - required_device m_palette; - - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void palette(palette_device &palette); - - void prg_map(address_map &map); -}; - - - -void bmxstunts_state::palette(palette_device &palette) // TODO: taken from galaxian.cpp, verify if good -{ - const uint8_t *color_prom = memregion("proms")->base(); - static const int rgb_resistances[3] = { 1000, 470, 220 }; - - double rweights[3], gweights[3], bweights[2]; - compute_resistor_weights(0, 224, -1.0, - 3, &rgb_resistances[0], rweights, 470, 0, - 3, &rgb_resistances[0], gweights, 470, 0, - 2, &rgb_resistances[1], bweights, 470, 0); - - // decode the palette first - int const len = memregion("proms")->bytes(); - for (int i = 0; i < len; i++) - { - uint8_t bit0, bit1, bit2; - - // red component - bit0 = BIT(color_prom[i], 0); - bit1 = BIT(color_prom[i], 1); - bit2 = BIT(color_prom[i], 2); - int const r = combine_weights(rweights, bit0, bit1, bit2); - - // green component - bit0 = BIT(color_prom[i], 3); - bit1 = BIT(color_prom[i], 4); - bit2 = BIT(color_prom[i], 5); - int const g = combine_weights(gweights, bit0, bit1, bit2); - - // blue component - bit0 = BIT(color_prom[i], 6); - bit1 = BIT(color_prom[i], 7); - int const b = combine_weights(bweights, bit0, bit1); - - palette.set_pen_color(i, rgb_t(r, g, b)); - } -} - -uint32_t bmxstunts_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - return 0; -} - - -void bmxstunts_state::prg_map(address_map &map) -{ - map(0xc000, 0xffff).rom().region("maincpu", 0); -} - - -static INPUT_PORTS_START( bmxstunts ) - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("DSW1") // only one 6-dip bank - PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2") - PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3") - PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) -INPUT_PORTS_END - - -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,2), - 2, - { RGN_FRAC(0,2), RGN_FRAC(1,2) }, - { STEP8(0,1) }, - { STEP8(0,8) }, - 8*8 -}; - -static const gfx_layout spritelayout = -{ - 16,16, - RGN_FRAC(1,2), - 2, - { RGN_FRAC(0,2), RGN_FRAC(1,2) }, - { STEP8(0,1), STEP8(8*8,1) }, - { STEP8(0,8), STEP8(16*8,8) }, - 16*16 -}; - -static GFXDECODE_START(gfx_bmxstunts) - GFXDECODE_SCALE("gfx", 0x0000, charlayout, 0, 8, 3, 1) - GFXDECODE_SCALE("gfx", 0x0000, spritelayout, 0, 8, 3, 1) -GFXDECODE_END - - -void bmxstunts_state::bmxstunts(machine_config &config) -{ - // basic machine hardware - M6502(config, m_maincpu, 3'072'000); // TODO: verify clock - m_maincpu->set_addrmap(AS_PROGRAM, &bmxstunts_state::prg_map); - - // video hardware - GFXDECODE(config, m_gfxdecode, m_palette, gfx_bmxstunts); - PALETTE(config, m_palette, FUNC(bmxstunts_state::palette), 32); - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_refresh_hz(60); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(32*8, 32*8); - m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - m_screen->set_screen_update(FUNC(bmxstunts_state::screen_update)); - - // sound hardware - SPEAKER(config, "speaker").front_center(); - - SN76489(config, "snsnd", 3'072'000).add_route(ALL_OUTPUTS, "speaker", 1.0); // TODO: verify clock -} - - -/* -BMX Stunts by Jetsoft on Galaxian bootleg PCB. - -6502A CPU in epoxy block with one 6331 prom (not dumped) -One 74LS74 and one 74LS273 logic. -One SN76489 Digital Complex Sound Generator. -There was a wire lead coming out of the epoxy and soldered -to the sound/amplifier section on the PCB. - -Program ROMs were on a riser board plugged into the two sockets -on the main PCB much like the standard Galaxian by Midway except -this riser board has eight sockets instead of the normal five and -is printed with the words "MOON PROGRAM", was possibly a bootleg -Moon Cresta PCB before conversion to BMX Stunts. - -Color prom is unique to this game and doesn't match any others. - -Main program EPROMs are all 2716 type by different manufacturers. -Graphics ROMs are 2732 EPROMs soldered directly to the main PCB -with pins 18 lifted and a wire connecting both then going to pin 10 -of the IC at location 6R on the main PCB. -Another wire goes from pin 12 of IC at 6R to the IC at 4S pin 3 that has -been cut and lifted from the PCB. - -There is another wire mod at IC location 2N and looks like a trace has -been cut between pins 9 and 10? - -Non working board. Powers up to screen full of graphics. - -chaneman 7/31/2022 -*/ - -ROM_START( bmxstunts ) - ROM_REGION( 0x4000, "maincpu", 0 ) - ROM_LOAD( "bmx1.pr1", 0x0000, 0x0800, CRC(cf3061f1) SHA1(e229a2a09b56332359c3f87953acb07c4c7d3abb) ) - ROM_LOAD( "bmx2.pr2", 0x0800, 0x0800, CRC(f145e09d) SHA1(8d3f379dbb5ec9304aa61d99cac003dfb8050485) ) - ROM_LOAD( "bmx3.pr3", 0x1000, 0x0800, CRC(ea415c49) SHA1(eb55b4b24ef4e04f5c2873ad7fef2dce891cefef) ) - ROM_LOAD( "bmx4.pr4", 0x1800, 0x0800, CRC(62bdd971) SHA1(864e787d66f6deb7fa545c475d4feb551e095bf2) ) - ROM_LOAD( "bmx5.pr5", 0x2000, 0x0800, CRC(b7ae2316) SHA1(17aa542fe8d4f729758f8b21bc667bf756b481b5) ) - ROM_LOAD( "bmx6.pr6", 0x2800, 0x0800, CRC(ba9b1a69) SHA1(b17964b31435809ce174f2680f7b463658794220) ) - ROM_LOAD( "bmx7.pr7", 0x3000, 0x0800, CRC(32636839) SHA1(6371c929b7b3a819dad70b672bc3ca5c3c5c9ced) ) - ROM_LOAD( "bmx8.pr8", 0x3800, 0x0800, CRC(fe1052ee) SHA1(f8bcaaecc3dfd10c70cbd9a49b778232ba9e697b) ) - - ROM_REGION( 0x2000, "gfx", 0 ) // possibly slightly corrupted (see tile viewer) - ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) - ROM_LOAD( "bmxl.1l", 0x1000, 0x1000, CRC(a0f44f47) SHA1(b9d40ff82bb90125f0d9ad2d9590ddd7cc600805) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "bmx6331.6l", 0x0000, 0x0020, CRC(ce3e9306) SHA1(62dc5208eea2d3126e61cc7af30e71a9e60d438c) ) - - ROM_REGION( 0x0020, "epoxy_block_prom", 0 ) // maybe related to address lines scramble? - ROM_LOAD( "6331", 0x0000, 0x0020, NO_DUMP ) -ROM_END - - -/* -Dumped by Andrew Welburn -on the day of 18/07/10 - - -PCB is a bootleg Galaxian, with pin headers, probably -of European origin. The signs and marking point to -it being a Moon Cresta, but I'm note sure. Also it -has a potted block in the CPU socket... -*/ - -ROM_START( bmxstuntsa ) - ROM_REGION( 0x4000, "maincpu", 0 ) - ROM_LOAD( "b-m.1", 0x0000, 0x0800, CRC(cf3061f1) SHA1(e229a2a09b56332359c3f87953acb07c4c7d3abb) ) - ROM_LOAD( "b-mx.2", 0x0800, 0x0800, CRC(f145e09d) SHA1(8d3f379dbb5ec9304aa61d99cac003dfb8050485) ) - ROM_LOAD( "b-mx.3", 0x1000, 0x0800, CRC(ea415c49) SHA1(eb55b4b24ef4e04f5c2873ad7fef2dce891cefef) ) - ROM_LOAD( "b-mx.4", 0x1800, 0x0800, CRC(62bdd971) SHA1(864e787d66f6deb7fa545c475d4feb551e095bf2) ) - ROM_LOAD( "b-mx.5", 0x2000, 0x0800, CRC(9fa3d4e3) SHA1(61973d99d68790e36112bdaa893fb9406f8d46ca) ) // bmx5.pr5 51.074219% - ROM_LOAD( "b-mx.6", 0x2800, 0x0800, CRC(ba9b1a69) SHA1(b17964b31435809ce174f2680f7b463658794220) ) - ROM_LOAD( "b-mx.7", 0x3000, 0x0800, CRC(fa34441a) SHA1(f1591ef81c4fc9c3cd1b9eb96d945d53051a3ea7) ) // bmx7.pr7 58.740234% - ROM_LOAD( "b-mx.8", 0x3800, 0x0800, CRC(8bc26d4d) SHA1(c01be14d7cd402a524b61bd845c1ae6b09967bfa) ) // bmx8.pr8 99.267578% - - ROM_REGION( 0x2000, "gfx", 0 ) // not dumped for this set, taken from above - ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, BAD_DUMP CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) - ROM_LOAD( "bmxl.1l", 0x1000, 0x1000, BAD_DUMP CRC(a0f44f47) SHA1(b9d40ff82bb90125f0d9ad2d9590ddd7cc600805) ) - - ROM_REGION( 0x0020, "proms", 0 ) // not dumped for this set, taken from above - ROM_LOAD( "bmx6331.6l", 0x0000, 0x0020, BAD_DUMP CRC(ce3e9306) SHA1(62dc5208eea2d3126e61cc7af30e71a9e60d438c) ) - - ROM_REGION( 0x0020, "epoxy_block_prom", 0 ) // maybe related to address lines scramble? - ROM_LOAD( "6331", 0x0000, 0x0020, NO_DUMP ) -ROM_END - - -void bmxstunts_state::init_bmxstunts() -{ - uint8_t *rom = memregion("maincpu")->base(); - - std::vector buffer(0x4000); - - memcpy(&buffer[0], rom, 0x4000); - - for (int i = 0; i < 0x4000; i++) - { - rom[i] = buffer[i ^ 0x01]; - } -} - -} // Anonymous namespace - - -GAME( 198?, bmxstunts, 0, bmxstunts, bmxstunts, bmxstunts_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 1)", MACHINE_IS_SKELETON ) -GAME( 198?, bmxstuntsa, bmxstunts, bmxstunts, bmxstunts, bmxstunts_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 2)", MACHINE_IS_SKELETON ) diff --git a/src/mame/galaxian/galaxian.cpp b/src/mame/galaxian/galaxian.cpp index 34ebd3b4e79..2fe2fe9d838 100644 --- a/src/mame/galaxian/galaxian.cpp +++ b/src/mame/galaxian/galaxian.cpp @@ -740,6 +740,7 @@ TODO: #include "cclimber_a.h" +#include "cpu/m6502/m6502.h" #include "cpu/s2650/s2650.h" #include "cpu/z80/z80.h" #include "machine/nvram.h" @@ -1780,6 +1781,25 @@ void galaxian_state::mandingarf_map(address_map &map) map(0xc000, 0xc7ff).rom().region("maincpu", 0xc000); // extend ROM } +void galaxian_state::bmxstunts_map(address_map &map) // seems to be the standard galaxian map with just 0x4000 subtracted from the offsets +{ + map(0x0000, 0x03ff).mirror(0x0400).ram(); + map(0x1000, 0x13ff).mirror(0x0400).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x1800, 0x18ff).mirror(0x0700).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x2000, 0x2000).mirror(0x07ff).portr("IN0"); + map(0x2000, 0x2001).mirror(0x07f8).w(FUNC(galaxian_state::start_lamp_w)); + map(0x2002, 0x2002).mirror(0x07f8).w(FUNC(galaxian_state::coin_lock_w)); + map(0x2003, 0x2003).mirror(0x07f8).w(FUNC(galaxian_state::coin_count_0_w)); + map(0x2800, 0x2800).mirror(0x07ff).portr("IN1"); + map(0x3000, 0x3000).mirror(0x07ff).portr("DSW1"); + map(0x3001, 0x3001).mirror(0x07f8).w(FUNC(galaxian_state::irq_enable_w)); + map(0x3006, 0x3006).mirror(0x07f8).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x3007, 0x3007).mirror(0x07f8).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x3800, 0x3800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0x8000).w("snsnd", FUNC(sn76489a_device::write)); // TODO: sounds really bad, check if hookup is a bit more complicated + map(0xc000, 0xffff).rom().region("maincpu", 0); +} + void galaxian_state::victoryc_map(address_map &map) { galaxian_map(map); @@ -5573,6 +5593,41 @@ static INPUT_PORTS_START( olmandingo ) INPUT_PORTS_END +static INPUT_PORTS_START( bmxstunts ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) // also acts as button + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) // also acts as button + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("DSW1") // only one 6-dip bank + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x00, "SW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x00, "SW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x00, "SW1:3") + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4") + PORT_DIPSETTING( 0x08, "A 2/1 B 1/3" ) + PORT_DIPSETTING( 0x00, "A 1/1 B 1/6" ) + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x00, "SW1:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x00, "SW1:6") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) +INPUT_PORTS_END + + /* verified from Z80 code */ static INPUT_PORTS_START( ozon1 ) PORT_START("IN0") @@ -7717,6 +7772,15 @@ void galaxian_state::bongo(machine_config &config) m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 0.5); } +void galaxian_state::bmxstunts(machine_config &config) +{ + galaxian_base(config); + + M6502(config.replace(), m_maincpu, 3'072'000); // TODO: verify clock + m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::bmxstunts_map); + + SN76489(config, "snsnd", 3'072'000).add_route(ALL_OUTPUTS, "speaker", 0.5); // TODO: verify clock +} void galaxian_state::ckongg(machine_config &config) { @@ -8769,6 +8833,21 @@ void galaxian_state::init_victoryc() decode_victoryc(); } +void galaxian_state::init_bmxstunts() +{ + init_galaxian(); + + uint8_t *rom = memregion("maincpu")->base(); + + std::vector buffer(0x4000); + + memcpy(&buffer[0], rom, 0x4000); + + for (int i = 0; i < 0x4000; i++) + rom[i] = buffer[i ^ 0x01]; + + m_irq_line = 0; +} void fourplay_state::init_fourplay() { @@ -12210,6 +12289,95 @@ ROM_START( bongo ) ROM_END +/* +BMX Stunts by Jetsoft on Galaxian bootleg PCB. + +6502A CPU in epoxy block with one 6331 prom (not dumped) +One 74LS74 and one 74LS273 logic. +One SN76489 Digital Complex Sound Generator. +There was a wire lead coming out of the epoxy and soldered +to the sound/amplifier section on the PCB. + +Program ROMs were on a riser board plugged into the two sockets +on the main PCB much like the standard Galaxian by Midway except +this riser board has eight sockets instead of the normal five and +is printed with the words "MOON PROGRAM", was possibly a bootleg +Moon Cresta PCB before conversion to BMX Stunts. + +Color prom is unique to this game and doesn't match any others. + +Main program EPROMs are all 2716 type by different manufacturers. +Graphics ROMs are 2732 EPROMs soldered directly to the main PCB +with pins 18 lifted and a wire connecting both then going to pin 10 +of the IC at location 6R on the main PCB. +Another wire goes from pin 12 of IC at 6R to the IC at 4S pin 3 that has +been cut and lifted from the PCB. + +There is another wire mod at IC location 2N and looks like a trace has +been cut between pins 9 and 10? + +Non working board. Powers up to screen full of graphics. + +chaneman 7/31/2022 +*/ + +ROM_START( bmxstunts ) + ROM_REGION( 0x4000, "maincpu", 0 ) // 5 and 7 might be corrupted + ROM_LOAD( "bmx1.pr1", 0x0000, 0x0800, CRC(cf3061f1) SHA1(e229a2a09b56332359c3f87953acb07c4c7d3abb) ) + ROM_LOAD( "bmx2.pr2", 0x0800, 0x0800, CRC(f145e09d) SHA1(8d3f379dbb5ec9304aa61d99cac003dfb8050485) ) + ROM_LOAD( "bmx3.pr3", 0x1000, 0x0800, CRC(ea415c49) SHA1(eb55b4b24ef4e04f5c2873ad7fef2dce891cefef) ) + ROM_LOAD( "bmx4.pr4", 0x1800, 0x0800, CRC(62bdd971) SHA1(864e787d66f6deb7fa545c475d4feb551e095bf2) ) + ROM_LOAD( "bmx5.pr5", 0x2000, 0x0800, BAD_DUMP CRC(b7ae2316) SHA1(17aa542fe8d4f729758f8b21bc667bf756b481b5) ) + ROM_LOAD( "bmx6.pr6", 0x2800, 0x0800, CRC(ba9b1a69) SHA1(b17964b31435809ce174f2680f7b463658794220) ) + ROM_LOAD( "bmx7.pr7", 0x3000, 0x0800, BAD_DUMP CRC(32636839) SHA1(6371c929b7b3a819dad70b672bc3ca5c3c5c9ced) ) + ROM_LOAD( "bmx8.pr8", 0x3800, 0x0800, CRC(fe1052ee) SHA1(f8bcaaecc3dfd10c70cbd9a49b778232ba9e697b) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) // possibly slightly corrupted (see tile viewer), plus 1h is probably a bad dump (bikes aren't found anywhere) + ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) // 1ST AND 2ND HALF IDENTICAL + ROM_LOAD( "bmxl.1l", 0x1000, 0x1000, CRC(a0f44f47) SHA1(b9d40ff82bb90125f0d9ad2d9590ddd7cc600805) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "bmx6331.6l", 0x0000, 0x0020, CRC(ce3e9306) SHA1(62dc5208eea2d3126e61cc7af30e71a9e60d438c) ) + + ROM_REGION( 0x0020, "epoxy_block_prom", 0 ) // maybe related to address lines scramble? + ROM_LOAD( "6331", 0x0000, 0x0020, NO_DUMP ) +ROM_END + + +/* +Dumped by Andrew Welburn +on the day of 18/07/10 + + +PCB is a bootleg Galaxian, with pin headers, probably +of European origin. The signs and marking point to +it being a Moon Cresta, but I'm note sure. Also it +has a potted block in the CPU socket... +*/ + +ROM_START( bmxstuntsa ) + ROM_REGION( 0x4000, "maincpu", 0 ) + ROM_LOAD( "b-m.1", 0x0000, 0x0800, CRC(cf3061f1) SHA1(e229a2a09b56332359c3f87953acb07c4c7d3abb) ) + ROM_LOAD( "b-mx.2", 0x0800, 0x0800, CRC(f145e09d) SHA1(8d3f379dbb5ec9304aa61d99cac003dfb8050485) ) + ROM_LOAD( "b-mx.3", 0x1000, 0x0800, CRC(ea415c49) SHA1(eb55b4b24ef4e04f5c2873ad7fef2dce891cefef) ) + ROM_LOAD( "b-mx.4", 0x1800, 0x0800, CRC(62bdd971) SHA1(864e787d66f6deb7fa545c475d4feb551e095bf2) ) + ROM_LOAD( "b-mx.5", 0x2000, 0x0800, CRC(9fa3d4e3) SHA1(61973d99d68790e36112bdaa893fb9406f8d46ca) ) // bmx5.pr5 51.074219% + ROM_LOAD( "b-mx.6", 0x2800, 0x0800, CRC(ba9b1a69) SHA1(b17964b31435809ce174f2680f7b463658794220) ) + ROM_LOAD( "b-mx.7", 0x3000, 0x0800, CRC(fa34441a) SHA1(f1591ef81c4fc9c3cd1b9eb96d945d53051a3ea7) ) // bmx7.pr7 58.740234% + ROM_LOAD( "b-mx.8", 0x3800, 0x0800, CRC(8bc26d4d) SHA1(c01be14d7cd402a524b61bd845c1ae6b09967bfa) ) // bmx8.pr8 99.267578% + + ROM_REGION( 0x2000, "gfx1", 0 ) // not dumped for this set, taken from above + ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, BAD_DUMP CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) // 1ST AND 2ND HALF IDENTICAL) + ROM_LOAD( "bmxl.1l", 0x1000, 0x1000, BAD_DUMP CRC(a0f44f47) SHA1(b9d40ff82bb90125f0d9ad2d9590ddd7cc600805) ) + + ROM_REGION( 0x0020, "proms", 0 ) // not dumped for this set, taken from above + ROM_LOAD( "bmx6331.6l", 0x0000, 0x0020, BAD_DUMP CRC(ce3e9306) SHA1(62dc5208eea2d3126e61cc7af30e71a9e60d438c) ) + + ROM_REGION( 0x0020, "epoxy_block_prom", 0 ) // maybe related to address lines scramble? + ROM_LOAD( "6331", 0x0000, 0x0020, NO_DUMP ) +ROM_END + + /* Crazy Kong Bootleg, 1982 @@ -15825,6 +15993,11 @@ GAME( 1982, highroll, 0, highroll, highroll, galaxian_state, init_ GAME( 1982, guttangt, locomotn, guttangt, guttangt, guttangt_state, init_guttangt, ROT90, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ? GAME( 1982, guttangts3, locomotn, guttangts3, guttangt, guttangt_state, init_guttangts3, ROT90, "bootleg (Sede 3)", "Guttang Gottong (Sede 3 bootleg on Galaxian hardware)", MACHINE_SUPPORTS_SAVE ) // still has Konami copyright on screen + +// Basic hardware with epoxy block containing a M6502, SN76489, PROM and logic +GAME( 1985, bmxstunts, 0, bmxstunts, bmxstunts, galaxian_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // not working due to bad program ROMs +GAME( 1985, bmxstuntsa, bmxstunts, bmxstunts, bmxstunts, galaxian_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // could be considered working if not for bad GFX and sound + // Basic hardware + extra RAM GAME( 1982, victoryc, 0, victoryc, victoryc, galaxian_state, init_victoryc, ROT270, "Comsoft", "Victory (Comsoft)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, victorycb, victoryc, victoryc, victoryc, galaxian_state, init_galaxian, ROT270, "bootleg", "Victory (Comsoft) (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/galaxian/galaxian.h b/src/mame/galaxian/galaxian.h index 26292f4eb8f..5aa36e55ad5 100644 --- a/src/mame/galaxian/galaxian.h +++ b/src/mame/galaxian/galaxian.h @@ -196,6 +196,7 @@ public: void init_mimonkey(); void init_mimonkeyb(); void init_victoryc(); + void init_bmxstunts(); TILE_GET_INFO_MEMBER(bg_get_tile_info); void galaxian_palette(palette_device &palette); @@ -315,6 +316,7 @@ public: void mimonkey(machine_config &config); void mimonscr(machine_config &config); void galartic(machine_config &config); + void bmxstunts(machine_config &config); template CUSTOM_INPUT_MEMBER(ckongg_coinage_r); template DECLARE_READ_LINE_MEMBER(ckongs_coinage_r); @@ -335,6 +337,7 @@ protected: void astroamb_map(address_map &map); void bongo_map(address_map &map); void bongo_io_map(address_map &map); + void bmxstunts_map(address_map& map); void checkmaj_sound_map(address_map &map); void checkman_sound_map(address_map &map); void checkman_sound_portmap(address_map &map); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a0ec18c72e1..0a6e7a0f979 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9580,10 +9580,6 @@ bml3 // bml3mk2 // bml3mk5 // -@source:galaxian/bmxstunts.cpp -bmxstunts -bmxstuntsa - @source:jaleco/bnstars.cpp bnstars1 // (c) 1997 @@ -14644,6 +14640,8 @@ bagmanm2 // (c) 1984 Valadon Automation / GIB bagmanmc // bootleg batman2 // bootleg blkhole // TDS (Tokyo Denshi Sekkei) & MINTS +bmxstunts // (c) 1985 Jetsoft +bmxstuntsa // (c) 1985 Jetsoft bomber // bongo // (c) 1983 Jetsoft calipso // (c) 1982 Tago -- cgit v1.2.3