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

This commit is contained in:
Ivan Vangelista 2022-08-06 13:25:34 +02:00
parent d9bac2034b
commit 621c21e43b
5 changed files with 178 additions and 306 deletions

View File

@ -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

View File

@ -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<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_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<uint8_t> 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 )

View File

@ -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<uint8_t> 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 )

View File

@ -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 <int Mask> CUSTOM_INPUT_MEMBER(ckongg_coinage_r);
template <int Mask> 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);

View File

@ -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