summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2020-04-30 18:47:59 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2020-04-30 18:47:59 +0200
commitb21427b2547fe78a070848a020c112c81b0778bf (patch)
treef6f3533c4cfe29204e8c98e366ea646c81a9ed17
parent3e3c1b07e221b4541bb00a47014f3ca59d7e2e93 (diff)
New clones marked as NOT_WORKING
-------------------------------- Magic Bomb (Ver. L3.5S) [Cristiano MDQ] Magic Bomb (Ver. AB4.5A, 07/10/02) [Cristiano MDQ] Magic Bomb (Ver. AB4.2, 11/10/01) [Cristiano MDQ] Magic Bomb (Ver. A3.1A) [Cristiano MDQ] Magic Bomb (Ver. AA.72D, 14/11/05) [Cristiano MDQ]
-rw-r--r--src/mame/drivers/astrcorp.cpp142
-rw-r--r--src/mame/mame.lst7
2 files changed, 133 insertions, 16 deletions
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index 19f42cc6c30..55d862112f2 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -68,6 +68,7 @@ public:
void showhand(machine_config &config);
void speeddrp(machine_config &config);
void showhanc(machine_config &config);
+ void magibomb(machine_config &config);
void init_astoneag();
void init_magibomb();
@@ -127,6 +128,7 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(skilldrp_scanline);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void magibomb_map(address_map &map);
void showhanc_map(address_map &map);
void showhand_map(address_map &map);
void skilldrp_map(address_map &map);
@@ -409,6 +411,24 @@ void astrocorp_state::speeddrp_map(address_map &map)
map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
+void astrocorp_state::magibomb_map(address_map &map) // TODO: check everything, the ranges are currently supposed correct for magibombb
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x050000, 0x053fff).ram().share("nvram"); // battery
+ map(0x060000, 0x060fff).ram().share("spriteram");
+ map(0x062000, 0x062001).w(FUNC(astrocorp_state::astrocorp_draw_sprites_w));
+ map(0x064000, 0x064001).portr("INPUTS");
+ map(0x068000, 0x068001).w(FUNC(astrocorp_state::astrocorp_eeprom_w));
+ map(0x06a000, 0x06a001).w(FUNC(astrocorp_state::skilldrp_outputs_w));
+ map(0x06e000, 0x06e001).portr("EEPROMIN");
+ map(0x0b0000, 0x0b01ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+
+ // tbd
+ map(0xe00000, 0xe00001).w(FUNC(astrocorp_state::astrocorp_screen_enable_w));
+ map(0xe80000, 0xe80001).w(FUNC(astrocorp_state::skilldrp_sound_bank_w));
+ map(0xf00001, 0xf00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
+
/***************************************************************************
Input Ports
***************************************************************************/
@@ -633,6 +653,11 @@ void astrocorp_state::speeddrp(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::speeddrp_map);
}
+void astrocorp_state::magibomb(machine_config &config)
+{
+ skilldrp(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocorp_state::magibomb_map);
+}
/***************************************************************************
ROMs Loading
@@ -881,6 +906,18 @@ ROM_END
ROM_START( magibomb )
ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(f74596fe) SHA1(8311ca73c975bda6846e1ba958fcf62655a111d0) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(ca0b693d) SHA1(27fc7db9d3f19d6dcb8756e4fc9c3839116977fe) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+ROM_END
+
+ROM_START( magibomba )
+ ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, BAD_DUMP CRC(f01ab462) SHA1(5c9052f66da166f926910562a6a8aea5397549db) ) // BADADDR xxxxxx-xxxxxxxxx
ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(ac3224ef) SHA1(810117dc89369eee0f4f5b6744cfbf0cb70ccce6) )
@@ -891,6 +928,54 @@ ROM_START( magibomb )
ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(f7d14414) SHA1(af932df09aa970ec05cc12e590e152e7288c1f5c) )
ROM_END
+ROM_START( magibombb )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(ac69612f) SHA1(0f1f3a05f90d4c0e65bc2b68c6510d2aa95f68c4) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(55ea8303) SHA1(974bc026f0b284ffad50d3e441613952db768e04) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+ROM_END
+
+ROM_START( magibombc )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(e388b79d) SHA1(ca3a6ffee39f3ac629f29fdd8ee98ddcf0787f9e) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(3d2abaa5) SHA1(8a39abda8e52a0d8a8d0c54a45b72a7d9f624e84) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+ROM_END
+
+ROM_START( magibombd )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(91883755) SHA1(bc6dd5cac352f169beac790825e86a2ecb45af05) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(b55bc270) SHA1(7486018b87708cf5b653c27b1ed824e441c169b7) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+ROM_END
+
+ROM_START( magibombe )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(d564fac4) SHA1(ac236a5760be6c4f518a8eb2af708f433e0fb899) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(ee212839) SHA1(e6175b27f3c510e98bc85e04be2fdde6e0289dfb) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "gfx", 0x000000, 0x200000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "rom5", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+ROM_END
+
/***************************************************************************
Western Venture
@@ -1361,26 +1446,53 @@ void astrocorp_state::init_astoneag()
decrypt_rom(astoneag_table);
}
-void astrocorp_state::init_magibomb()
+void astrocorp_state::init_magibomb() // to be checked, game still doesn't work. Might be missing something here or on the emulation side
{
- uint8_t *rom = memregion("maincpu")->base();
- for (int i = 1; i < 0x20000; i += 2)
+ // decrypt data
+ u8 *rom = memregion("maincpu")->base();
+
+ for (u32 i = 1; i < 0x20000; i += 2)
{
rom[i] = bitswap<8>(rom[i], 6, 7, 5, 0, 4, 1, 3, 2);
}
+
+ // descramble addresses
+ std::unique_ptr<u8[]> tmp = std::make_unique<u8[]>(0x20000);
+
+ for(u32 i = 0; i < 0x20000; i++)
+ {
+ tmp[i] = rom[i];
+ }
+
+ for(u32 i = 0; i < 0x20000; i++)
+ {
+ u32 dest =
+ (i & 0xffffe0ff) |
+ (BIT(i, 8) << 12) |
+ (BIT(i, 12) << 11) |
+ (BIT(i, 9) << 10) |
+ (BIT(i, 11) << 9) |
+ (BIT(i, 10) << 8);
+ rom[dest] = tmp[i];
+ }
}
-GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, init_showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", MACHINE_SUPPORTS_SAVE )
-GAME( 2000, showhanc, showhand, showhanc, showhanc, astrocorp_state, init_showhanc, ROT0, "Astro Corp.", "Wang Pai Dui Jue (China)", MACHINE_SUPPORTS_SAVE )
-GAME( 2002, skilldrp, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", MACHINE_SUPPORTS_SAVE )
-GAME( 2003, speeddrp, 0, speeddrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", MACHINE_SUPPORTS_SAVE )
-GAME( 200?, magibomb, 0, speeddrp, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. BR4.4)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // one bad program ROM, no gfx dumps, less complex looking encryption
+GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, init_showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, showhanc, showhand, showhanc, showhanc, astrocorp_state, init_showhanc, ROT0, "Astro Corp.", "Wang Pai Dui Jue (China)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001?, magibomb, 0, magibomb, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. L3.5S)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )// no gfx dumps, less complex encryption
+GAME( 2002, magibomba, magibomb, magibomb, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. BR4.4, 04/19/02)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )// one bad program ROM, no gfx dumps, less complex encryption
+GAME( 2002, magibombb, magibomb, magibomb, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. AB4.5A, 07/10/02)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )// no gfx dumps, less complex encryption
+GAME( 2001, magibombc, magibomb, magibomb, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. AB4.2, 11/10/01)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )// no gfx dumps, less complex encryption
+GAME( 2001?, magibombe, magibomb, magibomb, skilldrp, astrocorp_state, init_magibomb, ROT0, "Astro Corp.", "Magic Bomb (Ver. A3.1A)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )// no gfx dumps, less complex encryption
+GAME( 2002, skilldrp, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, speeddrp, 0, speeddrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", MACHINE_SUPPORTS_SAVE )
// Encrypted games (not working):
-GAME( 2003?, dinodino, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Dino Dino", MACHINE_NOT_WORKING )
-GAME( 2004?, astoneag, 0, skilldrp, skilldrp, astrocorp_state, init_astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. ENG.03.A)", MACHINE_NOT_WORKING )
-GAME( 2005?, winbingo, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Win Win Bingo (Feb 23 2006)", MACHINE_NOT_WORKING )
-GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Win Win Bingo (May 11 2006)", MACHINE_NOT_WORKING )
-GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", MACHINE_NOT_WORKING ) // based on a Mar 10 2005 version
-GAME( 2005?, zoo, 0, showhand, showhand, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", MACHINE_NOT_WORKING )
-GAME( 2007?, westvent, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", MACHINE_NOT_WORKING )
+GAME( 2003?, dinodino, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Dino Dino", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2004?, astoneag, 0, skilldrp, skilldrp, astrocorp_state, init_astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. ENG.03.A)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005, magibombd, magibomb, magibomb, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Magic Bomb (Ver. AA.72D, 14/11/05)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // and no gfx dump
+GAME( 2005?, winbingo, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Win Win Bingo (set 1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Win Win Bingo (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2005?, zoo, 0, showhand, showhand, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 2007?, westvent, 0, skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index d3314c41427..bdd939cecd2 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -2358,6 +2358,12 @@ as_wwe //
astoneag // (c) 2004? Astro Corp.
dinodino // (c) 2003? Astro Corp.
hacher // (c) 2005? bootleg (Gametron)
+magibomb // (c) 2001? Astro Corp.
+magibomba // (c) 2002 Astro Corp.
+magibombb // (c) 2002 Astro Corp.
+magibombc // (c) 2001 Astro Corp.
+magibombd // (c) 2005 Astro Corp.
+magibombe // (c) 2001? Astro Corp.
showhanc // (c) 2000 Astro Corp.
showhand // (c) 2000 Astro Corp.
skilldrp // (c) 2002 Astro Corp.
@@ -2366,7 +2372,6 @@ westvent // (c) 2007? Astro Corp.
winbingo // (c) 2005? Astro Corp.
winbingoa // (c) 2005? Astro Corp.
zoo // (c) 2005? Astro Corp.
-magibomb
@source:astrocde.cpp
demndrgn // (c) 1982 Bally Midway