diff options
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 |
commit | b21427b2547fe78a070848a020c112c81b0778bf (patch) | |
tree | f6f3533c4cfe29204e8c98e366ea646c81a9ed17 | |
parent | 3e3c1b07e221b4541bb00a47014f3ca59d7e2e93 (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.cpp | 142 | ||||
-rw-r--r-- | src/mame/mame.lst | 7 |
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 |