mirror of
https://github.com/holub/mame
synced 2025-06-03 11:26:56 +03:00
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:
parent
d9bac2034b
commit
621c21e43b
@ -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
|
||||
|
@ -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 )
|
@ -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 )
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user