summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2021-09-14 18:38:58 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2021-09-14 18:38:58 +1000
commit24fa77fcbb7ae8572b1e1ca909a73de6ac69898c (patch)
treebfb461d633e0aa3bb307071cf783c56bf159b3cf
parent8756554f1b11a85642b35fa375f3d39f8d03c9ee (diff)
mrgrame.cpp: New roms for Mac Attack
New roms for Motor Show Improved graphics and sound for all games. New machines marked as NOT_WORKING ---------------------------------- Fast Track [Robbbert]
-rw-r--r--src/mame/drivers/mrgame.cpp280
-rw-r--r--src/mame/mame.lst2
2 files changed, 231 insertions, 51 deletions
diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index 77446a96c15..c13992d3dda 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -27,6 +27,8 @@ ToDo:
- Support for electronic volume control
- Audio rom banking
- Most sounds missing due to unemulated M114 chip
+- macattck and wcup90 - colours and gfx are bad.
+- macattck - Unable to set up machine (as above). Need to find flipper inputs.
*****************************************************************************************/
@@ -64,12 +66,12 @@ public:
, m_io_dsw1(*this, "DSW1")
, m_io_x0(*this, "X0")
, m_io_x1(*this, "X1")
+ , m_screen(*this, "screen")
{ }
void mrgame(machine_config &config);
void wcup90(machine_config &config);
-
- void init_mrgame();
+ void ft(machine_config &config);
protected:
virtual void machine_start() override;
@@ -87,6 +89,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(video_a11_w);
DECLARE_WRITE_LINE_MEMBER(video_a12_w);
DECLARE_WRITE_LINE_MEMBER(video_a13_w);
+ DECLARE_WRITE_LINE_MEMBER(video_a14_w);
DECLARE_WRITE_LINE_MEMBER(intst_w);
DECLARE_WRITE_LINE_MEMBER(nmi_intst_w);
DECLARE_WRITE_LINE_MEMBER(flip_w);
@@ -99,6 +102,8 @@ private:
DECLARE_WRITE_LINE_MEMBER(vblank_nmi_w);
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer);
uint32_t screen_update_mrgame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_wcup90(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_ft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void audio1_io(address_map &map);
void audio1_map(address_map &map);
@@ -135,6 +140,7 @@ private:
required_ioport m_io_dsw1;
required_ioport m_io_x0;
required_ioport m_io_x1;
+ required_device<screen_device> m_screen;
};
@@ -176,7 +182,7 @@ void mrgame_state::wcup90_video_map(address_map &map)
void mrgame_state::audio1_map(address_map &map)
{
- map(0x0000, 0x7fff).rom().region("audio1", 0);
+ map(0x0000, 0xffff).rom().region("audio1", 0);
map(0xfc00, 0xffff).ram();
}
@@ -191,7 +197,7 @@ void mrgame_state::audio1_io(address_map &map)
void mrgame_state::audio2_map(address_map &map)
{
- map(0x0000, 0x7fff).rom().region("audio2", 0);
+ map(0x0000, 0xffff).rom().region("audio2", 0);
map(0xfc00, 0xffff).ram();
}
@@ -306,17 +312,22 @@ void mrgame_state::video_w(uint8_t data)
WRITE_LINE_MEMBER(mrgame_state::video_a11_w)
{
- m_gfx_bank = (m_gfx_bank & 6) | (state ? 1 : 0);
+ m_gfx_bank = (m_gfx_bank & 14) | (state ? 1 : 0);
}
WRITE_LINE_MEMBER(mrgame_state::video_a12_w)
{
- m_gfx_bank = (m_gfx_bank & 5) | (state ? 2 : 0);
+ m_gfx_bank = (m_gfx_bank & 13) | (state ? 2 : 0);
}
WRITE_LINE_MEMBER(mrgame_state::video_a13_w)
{
- m_gfx_bank = (m_gfx_bank & 3) | (state ? 4 : 0);
+ m_gfx_bank = (m_gfx_bank & 11) | (state ? 4 : 0);
+}
+
+WRITE_LINE_MEMBER(mrgame_state::video_a14_w)
+{
+ m_gfx_bank = (m_gfx_bank & 7) | (state ? 8 : 0);
}
WRITE_LINE_MEMBER(mrgame_state::intst_w)
@@ -383,10 +394,6 @@ void mrgame_state::machine_reset()
m_row_data = 0;
}
-void mrgame_state::init_mrgame()
-{
-}
-
WRITE_LINE_MEMBER(mrgame_state::vblank_int_w)
{
if (state && m_intst)
@@ -419,6 +426,33 @@ TIMER_DEVICE_CALLBACK_MEMBER(mrgame_state::irq_timer)
}
// layouts from pinmame
+static const gfx_layout ft_charlayout =
+{
+ 8, 8,
+ 256,
+ 1,
+ { 0 },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0, 8, 16, 24, 32, 40, 48, 56 },
+ 8*8
+};
+
+static const gfx_layout ft_spritelayout =
+{
+ 16, 16,
+ 64,
+ 2,
+ { 0 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 64, 65, 66, 67, 68, 69, 70, 71 },
+ { 0, 8, 16, 24, 32, 40, 48, 56, 128, 136, 144, 152, 160, 168, 176, 184 },
+ 32*8
+};
+
+static GFXDECODE_START(gfx_ft)
+ GFXDECODE_ENTRY("chargen", 0, ft_charlayout, 0, 16)
+ GFXDECODE_ENTRY("chargen", 0, ft_spritelayout, 0, 16)
+GFXDECODE_END
+
static const gfx_layout charlayout =
{
8, 8,
@@ -446,6 +480,33 @@ static GFXDECODE_START(gfx_mrgame)
GFXDECODE_ENTRY("chargen", 0, spritelayout, 0, 16)
GFXDECODE_END
+static const gfx_layout wcs90_charlayout =
+{
+ 8, 8,
+ 4096,
+ 5,
+ { 0x00000*8, 0x08000*8, 0x10000*8, 0x18000*8, 0x20000*8 },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0, 8, 16, 24, 32, 40, 48, 56 },
+ 8*8
+};
+
+static const gfx_layout wcs90_spritelayout =
+{
+ 16, 16,
+ 1024,
+ 5,
+ { 0x00000*8, 0x08000*8, 0x10000*8, 0x18000*8, 0x20000*8 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 64, 65, 66, 67, 68, 69, 70, 71 },
+ { 0, 8, 16, 24, 32, 40, 48, 56, 128, 136, 144, 152, 160, 168, 176, 184 },
+ 32*8
+};
+
+static GFXDECODE_START(gfx_wcs90)
+ GFXDECODE_ENTRY("chargen", 0, wcs90_charlayout, 0, 16)
+ GFXDECODE_ENTRY("chargen", 0, wcs90_spritelayout, 0, 16)
+GFXDECODE_END
+
void mrgame_state::mrgame_palette(palette_device &palette) const
{
static constexpr int resistances[3] = { 1000, 470, 220 };
@@ -536,6 +597,104 @@ uint32_t mrgame_state::screen_update_mrgame(screen_device &screen, bitmap_ind16
return 0;
}
+// most of this came from pinmame as the diagram doesn't make a lot of sense
+uint32_t mrgame_state::screen_update_wcup90(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ uint8_t x,y;
+ int32_t scrolly[32];
+ uint16_t chr;
+ bool flipx,flipy;
+
+ // text
+ for (x = 0; x < 32; x++)
+ {
+ scrolly[x] = -m_p_objectram[x<<1];
+
+ for (y = 0; y < 32; y++)
+ {
+ chr = m_p_videoram[x+y*32] | (m_gfx_bank << 8);
+
+ m_gfxdecode->gfx(0)->opaque(*m_tile_bitmap, m_tile_bitmap->cliprect(),
+ chr,
+ 0,
+ m_flip,0,
+ x*8,y*8);
+ }
+ }
+
+ // scroll each column as needed
+ copyscrollbitmap(bitmap,*m_tile_bitmap,0,nullptr,32,scrolly,cliprect);
+
+
+ // sprites
+ for (u8 ptr = 0x5f; ptr > 0x3f; ptr -= 4)
+ {
+ x = m_p_objectram[ptr] + 1;
+ y = 255 - m_p_objectram[ptr - 3];
+ flipx = BIT(m_p_objectram[ptr - 2], 6);
+ flipy = BIT(m_p_objectram[ptr - 2], 7);
+ chr = (m_p_objectram[ptr - 2] & 0x3f) | (m_gfx_bank << 6);
+
+ if ((y > 16) && (x > 24))
+ m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ chr,
+ 0,
+ flipx,flipy,
+ x,y-16,0);
+ }
+
+ return 0;
+}
+
+// Fast Track: needs to be tested when we get the video cpu rom
+uint32_t mrgame_state::screen_update_ft(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ uint8_t x,y;
+ int32_t scrolly[32];
+ uint16_t chr;
+ bool flipx,flipy;
+
+ // text
+ for (x = 0; x < 32; x++)
+ {
+ scrolly[x] = -m_p_objectram[x<<1];
+
+ for (y = 0; y < 32; y++)
+ {
+ chr = m_p_videoram[x+y*32];
+
+ m_gfxdecode->gfx(0)->opaque(*m_tile_bitmap, m_tile_bitmap->cliprect(),
+ chr,
+ 0x0d,
+ m_flip,0,
+ x*8,y*8);
+ }
+ }
+
+ // scroll each column as needed
+ copyscrollbitmap(bitmap,*m_tile_bitmap,0,nullptr,32,scrolly,cliprect);
+
+
+ // sprites
+ for (u8 ptr = 0x5f; ptr > 0x3f; ptr -= 4)
+ {
+ x = m_p_objectram[ptr] + 1;
+ y = 255 - m_p_objectram[ptr - 3];
+ flipx = BIT(m_p_objectram[ptr - 2], 6);
+ flipy = BIT(m_p_objectram[ptr - 2], 7);
+ chr = (m_p_objectram[ptr - 2] & 0x3f);
+
+ if ((y > 16) && (x > 24))
+ m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
+ chr,
+ 0x0d,
+ flipx,flipy,
+ x,y-16,0);
+ }
+
+ return 0;
+}
+
void mrgame_state::mrgame(machine_config &config)
{
/* basic machine hardware */
@@ -567,11 +726,11 @@ void mrgame_state::mrgame(machine_config &config)
//watchdog.set_vblank_count("screen", 8);
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(18.432_MHz_XTAL / 3, 384, 0, 256, 264, 8, 248); // If you align with X on test screen some info is chopped off
- screen.set_screen_update(FUNC(mrgame_state::screen_update_mrgame));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(mrgame_state::vblank_nmi_w));
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(18.432_MHz_XTAL / 3, 384, 0, 256, 264, 8, 248); // If you align with X on test screen some info is chopped off
+ m_screen->set_screen_update(FUNC(mrgame_state::screen_update_mrgame));
+ m_screen->set_palette(m_palette);
+ m_screen->screen_vblank().set(FUNC(mrgame_state::vblank_nmi_w));
PALETTE(config, m_palette, FUNC(mrgame_state::mrgame_palette), 64);
@@ -608,11 +767,24 @@ void mrgame_state::wcup90(machine_config &config)
{
mrgame(config);
+ config.device_remove("gfxdecode");
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_wcs90);
m_videocpu->set_addrmap(AS_PROGRAM, &mrgame_state::wcup90_video_map);
m_selectlatch->q_out_cb<1>().set(FUNC(mrgame_state::intst_w)); // U48
+ m_selectlatch->q_out_cb<2>().set(FUNC(mrgame_state::video_a14_w)); // not in schematic, but you can't address all chrs without it
- subdevice<screen_device>("screen")->screen_vblank().set(FUNC(mrgame_state::vblank_int_w));
+ m_screen->screen_vblank().set(FUNC(mrgame_state::vblank_int_w));
+ m_screen->set_screen_update(FUNC(mrgame_state::screen_update_wcup90));
+}
+
+void mrgame_state::ft(machine_config &config)
+{
+ mrgame(config);
+
+ config.device_remove("gfxdecode");
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_ft);
+ m_screen->set_screen_update(FUNC(mrgame_state::screen_update_ft));
}
/*-------------------------------------------------------------------
@@ -620,8 +792,8 @@ void mrgame_state::wcup90(machine_config &config)
/-------------------------------------------------------------------*/
ROM_START(dakar)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, CRC(83183929) SHA1(977ac10a1e78c759eb0550794f2639fe0e2d1507))
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, CRC(2010d28d) SHA1(d262dabd9298566df43df298cf71c974bee1434a))
+ ROM_LOAD16_BYTE("cpu_ic13.rom", 0x0000, 0x8000, CRC(83183929) SHA1(977ac10a1e78c759eb0550794f2639fe0e2d1507))
+ ROM_LOAD16_BYTE("cpu_ic14.rom", 0x0001, 0x8000, CRC(2010d28d) SHA1(d262dabd9298566df43df298cf71c974bee1434a))
ROM_REGION(0x8000, "video", 0)
ROM_LOAD("vid_ic14.rom", 0x0000, 0x8000, CRC(88a9ca81) SHA1(9660d416b2b8f1937cda7bca51bd287641c7730c))
@@ -650,8 +822,16 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(motrshow)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, CRC(e862ca71) SHA1(b02e5f39f9427d58b70b7999a5ff6075beff05ae))
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, CRC(c898ae25) SHA1(f0e1369284a1e0f394f1d40281fd46252016602e))
+ ROM_DEFAULT_BIOS("0")
+ ROM_SYSTEM_BIOS(0, "0", "0")
+ ROMX_LOAD( "cpu_0.ic13", 0x0000, 0x8000, CRC(e862ca71) SHA1(b02e5f39f9427d58b70b7999a5ff6075beff05ae), ROM_SKIP(1) | ROM_BIOS(0) )
+ ROMX_LOAD( "cpu_0.ic14", 0x0001, 0x8000, CRC(c898ae25) SHA1(f0e1369284a1e0f394f1d40281fd46252016602e), ROM_SKIP(1) | ROM_BIOS(0) )
+ ROM_SYSTEM_BIOS(1, "1", "1")
+ ROMX_LOAD( "cpu_1.ic13a", 0x0000, 0x8000, CRC(2dbdd9d4) SHA1(b404814a4e83ead6da3c57818ae97f23d380f9da), ROM_SKIP(1) | ROM_BIOS(1) )
+ ROMX_LOAD( "cpu_1.ic14b", 0x0001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af), ROM_SKIP(1) | ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS(2, "2", "2")
+ ROMX_LOAD( "cpu_2.ic13b", 0x0000, 0x8000, CRC(9cd2d6f3) SHA1(6f123367ccbe1376b4bd8a5ee0f636efe42f9eac), ROM_SKIP(1) | ROM_BIOS(2) )
+ ROMX_LOAD( "cpu_2.ic14b", 0x0001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af), ROM_SKIP(1) | ROM_BIOS(2) )
ROM_REGION(0x8000, "video", 0)
ROM_LOAD("vid_ic14.rom", 0x0000, 0x8000, CRC(1d4568e2) SHA1(bfc2bb59708ce3a09f9a1b3460ed8d5269840c97))
@@ -674,18 +854,18 @@ ROM_START(motrshow)
ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, CRC(4f42be6e) SHA1(684e988f413cd21c785ad5d60ef5eaddddaf72ab))
ROM_END
-ROM_START(motrshowa)
+ROM_START(fasttrack) // this is a cut-down green-screen version of motorshow
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpuic13a.rom", 0x000000, 0x8000, CRC(2dbdd9d4) SHA1(b404814a4e83ead6da3c57818ae97f23d380f9da))
- ROM_LOAD16_BYTE("cpuic14b.rom", 0x000001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af))
+ ROM_LOAD16_BYTE("cpuic13.rom", 0x0000, 0x8000, CRC(675cbef6) SHA1(0561aee09bb459a79e54a903d39ef5e5288e8368))
+ ROM_LOAD16_BYTE("cpuic14.rom", 0x0001, 0x8000, CRC(57a1c42f) SHA1(fbfc7527068a1e68afa4c20d5c2650399a1ee3cd))
ROM_REGION(0x8000, "video", 0)
- ROM_LOAD("vid_ic14.rom", 0x0000, 0x8000, CRC(1d4568e2) SHA1(bfc2bb59708ce3a09f9a1b3460ed8d5269840c97))
+ ROM_LOAD("ft_vid1.764", 0x0000, 0x2000, NO_DUMP ) // only dump we found was all 0xF7
- ROM_REGION(0x10000, "chargen", 0)
- ROM_LOAD("vid_ic55.rom", 0x0000, 0x8000, CRC(c27a4ded) SHA1(9c2c9b17f1e71afb74bdfbdcbabb99ef935d32db))
- ROM_LOAD("vid_ic56.rom", 0x8000, 0x8000, CRC(1664ec8d) SHA1(e7b15acdac7dfc51b668e908ca95f02a2b569737))
+ ROM_REGION(0x10000, "chargen", ROMREGION_ERASEFF)
+ ROM_LOAD("ft_vid2.532", 0x0000, 0x001000, CRC(5145685b) SHA1(6857be53efee5d439311ddb93e9f509590ff26c9) ) // 2nd half is rubbish
+ // from here wasn't supplied, assumed same as motorshow
ROM_REGION(0x0020, "proms", 0)
ROM_LOAD("vid_ic66.rom", 0x0000, 0x0020, CRC(5b585252) SHA1(b88e56ebdce2c3a4b170aff4b05018e7c21a79b8))
@@ -705,31 +885,31 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(macattck)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, NO_DUMP)
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, NO_DUMP)
+ ROM_LOAD16_BYTE("cpu_ic13.rom", 0x0000, 0x8000, CRC(35cabad1) SHA1(01279df881b0d7d6586c1b8570b12bdc1fb9ff21) )
+ ROM_LOAD16_BYTE("cpu_ic14.rom", 0x0001, 0x8000, CRC(6a4d7b89) SHA1(090e1a6c069cb6e5efd26a0260df613375f0b063) )
ROM_REGION(0x8000, "video", 0)
- ROM_LOAD("vid_ic91.rom", 0x0000, 0x8000, CRC(42d2ba01) SHA1(c13d38c2798575760461912cef65dde57dfd938c))
+ ROM_LOAD("vid_ic91.rom", 0x0000, 0x8000, CRC(42d2ba01) SHA1(c13d38c2798575760461912cef65dde57dfd938c) )
- ROM_REGION(0x30000, "chargen", 0)
- ROM_LOAD("vid_ic14.rom", 0x00000, 0x8000, CRC(f6e047fb) SHA1(6be712dda60257b9e7014315c8fee19812622bf6))
- ROM_LOAD("vid_ic15.rom", 0x08000, 0x8000, CRC(405a8f54) SHA1(4d58915763db3c3be2bfc166be1a12285ff2c38b))
- ROM_LOAD("vid_ic16.rom", 0x10000, 0x8000, CRC(063ea783) SHA1(385dbfcc8ecd3a784f9a8752d00e060b48d70d6a))
- ROM_LOAD("vid_ic17.rom", 0x18000, 0x8000, CRC(9f95abf8) SHA1(d71cf36c8bf27ad41b2d3cebd0af620a34ce0062) BAD_DUMP)
- ROM_LOAD("vid_ic18.rom", 0x20000, 0x8000, CRC(83ef25f8) SHA1(bab482badb8646b099dbb197ca9af3a126b274e3))
+ ROM_REGION(0x28000, "chargen", 0)
+ ROM_LOAD("vid_ic14.rom", 0x00000, 0x8000, CRC(f6e047fb) SHA1(6be712dda60257b9e7014315c8fee19812622bf6) )
+ ROM_LOAD("vid_ic15.rom", 0x08000, 0x8000, CRC(405a8f54) SHA1(4d58915763db3c3be2bfc166be1a12285ff2c38b) )
+ ROM_LOAD("vid_ic16.rom", 0x10000, 0x8000, CRC(063ea783) SHA1(385dbfcc8ecd3a784f9a8752d00e060b48d70d6a) )
+ ROM_LOAD("vid_ic17.rom", 0x18000, 0x8000, CRC(7494e44e) SHA1(c7c062508e81b9fd818f36f80d4a6da02c3bda40) )
+ ROM_LOAD("vid_ic18.rom", 0x20000, 0x8000, CRC(83ef25f8) SHA1(bab482badb8646b099dbb197ca9af3a126b274e3) )
ROM_REGION(0x0020, "proms", 0)
- ROM_LOAD("vid_ic61.rom", 0x0000, 0x0020, CRC(538c72ae) SHA1(f704492568257fcc4a4f1189207c6fb6526eb81c) BAD_DUMP)
+ ROM_LOAD("vid_ic61.rom", 0x0000, 0x0020, CRC(538c72ae) SHA1(f704492568257fcc4a4f1189207c6fb6526eb81c) BAD_DUMP) // from wcup90, assumed to be the same
ROM_REGION(0x10000, "audio1", 0)
- ROM_LOAD("snd_ic06.rom", 0x0000, 0x8000, NO_DUMP)
+ ROM_LOAD("snd_ic06.rom", 0x0000, 0x8000, CRC(4ab94d16) SHA1(4c3755489f699c751d664f420b9852ef16bb3aa6) )
ROM_REGION(0x4000, "m114", 0)
- ROM_LOAD("snd_ic22.rom", 0x0000, 0x4000, NO_DUMP)
+ ROM_LOAD("snd_ic22.rom", 0x0000, 0x4000, CRC(9d3546c5) SHA1(cc6e91288692b927f7d046e192b1fd128c126d0d) )
ROM_REGION(0x10000, "audio2", 0)
- ROM_LOAD("snd_ic35.rom", 0x0000, 0x8000, NO_DUMP)
- ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, NO_DUMP)
+ ROM_LOAD("snd_ic35.rom", 0x0000, 0x8000, CRC(52e9811c) SHA1(52223cf14a185b4dab14143d797000baf6d618cc) )
+ ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, CRC(2e6b5822) SHA1(9e390e4b71cc103ec3d781575df484a3e4217b3b) )
ROM_END
/*-------------------------------------------------------------------
@@ -737,13 +917,13 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(wcup90)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, CRC(0e2edfb0) SHA1(862fb1f6509fb1f560d0b2bb8a5764f64b259f04))
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, CRC(fdd03165) SHA1(6dc6e68197218f8808436098c26cd04fc3215b1c))
+ ROM_LOAD16_BYTE("cpu_ic13.rom", 0x0000, 0x8000, CRC(0e2edfb0) SHA1(862fb1f6509fb1f560d0b2bb8a5764f64b259f04))
+ ROM_LOAD16_BYTE("cpu_ic14.rom", 0x0001, 0x8000, CRC(fdd03165) SHA1(6dc6e68197218f8808436098c26cd04fc3215b1c))
ROM_REGION(0x8000, "video", 0)
ROM_LOAD("vid_ic91.rom", 0x0000, 0x8000, CRC(3287ad20) SHA1(d5a453efc7292670073f157dca04897be857b8ed))
- ROM_REGION(0x30000, "chargen", 0)
+ ROM_REGION(0x28000, "chargen", 0)
ROM_LOAD("vid_ic14.rom", 0x00000, 0x8000, CRC(a101d562) SHA1(ad9ad3968f13169572ec60e22e84acf43382b51e))
ROM_LOAD("vid_ic15.rom", 0x08000, 0x8000, CRC(40791e7a) SHA1(788760b8527df48d1825be88099491b6e94f0a19))
ROM_LOAD("vid_ic16.rom", 0x10000, 0x8000, CRC(a7214157) SHA1(a4660180e8491a37028fec8533cf13daf839a7c4))
@@ -768,8 +948,8 @@ ROM_START(wcup90)
ROM_END
-GAME(1988, dakar, 0, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME(1989, motrshow, 0, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Motor Show (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME(1989, motrshowa, motrshow, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Motor Show (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME(1990, macattck, 0, wcup90, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Mac Attack", MACHINE_IS_SKELETON_MECHANICAL)
-GAME(1990, wcup90, 0, wcup90, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "World Cup 90", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME(1988, dakar, 0, mrgame, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1989, motrshow, 0, mrgame, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "Motor Show", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1989, fasttrack, motrshow, ft, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "Fast Track", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1990, macattck, 0, wcup90, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "Mac Attack", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME(1990, wcup90, 0, wcup90, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "World Cup 90", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index b95c1a8d047..14c96ea469a 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -30710,9 +30710,9 @@ mrflea // (c) 1982
@source:mrgame.cpp
dakar //
+fasttrack //
macattck //
motrshow //
-motrshowa //
wcup90 //
@source:mrjong.cpp