diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2020-11-27 23:01:35 -0500 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2020-11-27 23:01:41 -0500 |
commit | ddc1c446240d7fc9689dbf5630f585a2d0f11f50 (patch) | |
tree | 1ffb7b0aa36842ae97723994d050d3be7c42761d | |
parent | eb9ade3a16f64d6d61d938c60d70bf27f8d0502a (diff) |
mimonkey, mimonsco, mimonscr, mimonscra: Transplant to modern galaxian.cpp driver
-rw-r--r-- | src/mame/drivers/galaxian.cpp | 259 | ||||
-rw-r--r-- | src/mame/drivers/scobra.cpp | 143 | ||||
-rw-r--r-- | src/mame/drivers/scramble.cpp | 129 | ||||
-rw-r--r-- | src/mame/includes/galaxian.h | 8 | ||||
-rw-r--r-- | src/mame/includes/scramble.h | 5 | ||||
-rw-r--r-- | src/mame/machine/scramble.cpp | 44 | ||||
-rw-r--r-- | src/mame/mame.lst | 8 | ||||
-rw-r--r-- | src/mame/video/galaxian.cpp | 12 |
8 files changed, 285 insertions, 323 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index e347e47733a..37030008498 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1839,6 +1839,43 @@ void galaxian_state::scobra_map(address_map &map) map(0xb000, 0xb000).mirror(0x47ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); } +// map not derived from schematics +void galaxian_state::mimonkey_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram").mirror(0x0400); + map(0x9000, 0x90ff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x9800, 0x9803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa800, 0xa802).w(FUNC(galaxian_state::galaxian_gfxbank_w)); + map(0xa801, 0xa801).w(FUNC(galaxian_state::irq_enable_w)); + map(0xa804, 0xa804).w(FUNC(galaxian_state::scramble_background_enable_w)); + map(0xa806, 0xa806).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa807, 0xa807).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc000, 0xffff).rom(); +} + +// map not derived from schematics +void galaxian_state::mimonscr_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram").mirror(0x0400); + map(0x5000, 0x50ff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6800, 0x6802).w(FUNC(galaxian_state::galaxian_gfxbank_w)); + map(0x6801, 0x6801).w(FUNC(galaxian_state::irq_enable_w)); + map(0x6804, 0x6804).w(FUNC(galaxian_state::scramble_background_enable_w)); + map(0x6806, 0x6806).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x6807, 0x6807).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8100, 0x8103).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x8200, 0x8203).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xffff).rom(); +} + + void galaxian_state::scorpion_map(address_map &map) { @@ -5644,6 +5681,66 @@ static INPUT_PORTS_START( tazmania ) INPUT_PORTS_END +static INPUT_PORTS_START( mimonkey ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN1") + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPSETTING( 0x02, "5" ) + PORT_DIPSETTING( 0x03, "6" ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_DIPNAME( 0x20, 0x00, "Infinite Lives (Cheat)") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* used, something to do with the bullets */ + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("IN3") /* need for some PPI accesses */ + PORT_BIT( 0xff, 0x00, IPT_UNUSED ) +INPUT_PORTS_END + +/* Same as 'mimonkey' but different "Lives" Dip Switch */ +static INPUT_PORTS_START( mimonsco ) + PORT_INCLUDE( mimonkey ) + + PORT_MODIFY("IN1") + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x03, "4" ) +INPUT_PORTS_END + + /* verified from Z80 code */ static INPUT_PORTS_START( anteater ) PORT_START("IN0") @@ -6785,6 +6882,22 @@ void galaxian_state::anteatergg(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteatergg_map); } +void galaxian_state::mimonkey(machine_config &config) +{ + scramble_base(config); + + // alternate memory map + m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mimonkey_map); +} + +void galaxian_state::mimonscr(machine_config &config) +{ + scramble_base(config); + + // alternate memory map + m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mimonscr_map); +} + /* Quaak (Frogger bootleg) @@ -8034,6 +8147,48 @@ void galaxian_state::init_jungsub() common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::scramble_draw_background, nullptr, nullptr); } + +void galaxian_state::init_mimonkeyb() +{ + /* video extensions */ + common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::scramble_draw_background, &galaxian_state::mimonkey_extend_tile_info, &galaxian_state::mimonkey_extend_sprite_info); +} + +void galaxian_state::init_mimonkey() +{ + static const uint8_t xortable[16][16] = + { + { 0x03,0x03,0x05,0x07,0x85,0x00,0x85,0x85,0x80,0x80,0x06,0x03,0x03,0x00,0x00,0x81 }, + { 0x83,0x87,0x03,0x87,0x06,0x00,0x06,0x04,0x02,0x00,0x84,0x84,0x04,0x00,0x01,0x83 }, + { 0x82,0x82,0x84,0x02,0x04,0x00,0x00,0x03,0x82,0x00,0x06,0x80,0x03,0x00,0x81,0x07 }, + { 0x06,0x06,0x82,0x81,0x85,0x00,0x04,0x07,0x81,0x05,0x04,0x00,0x03,0x00,0x82,0x84 }, + { 0x07,0x07,0x80,0x07,0x07,0x00,0x85,0x86,0x00,0x07,0x06,0x04,0x85,0x00,0x86,0x85 }, + { 0x81,0x83,0x02,0x02,0x87,0x00,0x86,0x03,0x04,0x06,0x80,0x05,0x87,0x00,0x81,0x81 }, + { 0x01,0x01,0x00,0x07,0x07,0x00,0x01,0x01,0x07,0x07,0x06,0x00,0x06,0x00,0x07,0x07 }, + { 0x80,0x87,0x81,0x87,0x83,0x00,0x84,0x01,0x01,0x86,0x86,0x80,0x86,0x00,0x86,0x86 }, + { 0x03,0x03,0x05,0x07,0x85,0x00,0x85,0x85,0x80,0x80,0x06,0x03,0x03,0x00,0x00,0x81 }, + { 0x83,0x87,0x03,0x87,0x06,0x00,0x06,0x04,0x02,0x00,0x84,0x84,0x04,0x00,0x01,0x83 }, + { 0x82,0x82,0x84,0x02,0x04,0x00,0x00,0x03,0x82,0x00,0x06,0x80,0x03,0x00,0x81,0x07 }, + { 0x06,0x06,0x82,0x81,0x85,0x00,0x04,0x07,0x81,0x05,0x04,0x00,0x03,0x00,0x82,0x84 }, + { 0x07,0x07,0x80,0x07,0x07,0x00,0x85,0x86,0x00,0x07,0x06,0x04,0x85,0x00,0x86,0x85 }, + { 0x81,0x83,0x02,0x02,0x87,0x00,0x86,0x03,0x04,0x06,0x80,0x05,0x87,0x00,0x81,0x81 }, + { 0x01,0x01,0x00,0x07,0x07,0x00,0x01,0x01,0x07,0x07,0x06,0x00,0x06,0x00,0x07,0x07 }, + { 0x80,0x87,0x81,0x87,0x83,0x00,0x84,0x01,0x01,0x86,0x86,0x80,0x86,0x00,0x86,0x86 } + }; + + uint8_t *ROM = memregion("maincpu")->base(); + int ctr = 0; + for (int A = 0; A < 0x4000; A++) + { + int line = (ctr & 0x07) | ((ctr & 0x200) >> 6); + int col = ((ROM[A] & 0x80) >> 4) | (ROM[A] & 0x07); + ROM[A] = ROM[A] ^ xortable[line][col]; + ctr++; + } + + init_mimonkeyb(); +} + /************************************* * * ROM definitions @@ -13002,6 +13157,106 @@ ROM_START( tazmania ) ROM_END +ROM_START( mimonkey ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "mm1.2e", 0x0000, 0x1000, CRC(9019f1b1) SHA1(0c45f64e39b9a182f6162ab520ced6ef0686466c) ) + ROM_LOAD( "mm2.2e", 0x1000, 0x1000, CRC(043e97d6) SHA1(924c0165dfcf01182696b0d259718ac625573d9a) ) + ROM_LOAD( "mm3.2f", 0x2000, 0x1000, CRC(1052726a) SHA1(2fdd3064f02babd2d496a38c7aee094cb3666f24) ) + ROM_LOAD( "mm4.2h", 0x3000, 0x1000, CRC(7b3f35ff) SHA1(b52c46c3f166346d3b25cd2ab09781afc703de08) ) + ROM_LOAD( "mm5.2j", 0xc000, 0x1000, CRC(b4e5c32d) SHA1(18e53519e8f4e813109cfaf45f2f66444e6fa1a2) ) + ROM_LOAD( "mm6.2l", 0xd000, 0x1000, CRC(409036c4) SHA1(a9640da91156504bfc8fedcda30f81169b28a0c9) ) + ROM_LOAD( "mm7.2m", 0xe000, 0x1000, CRC(119c08fa) SHA1(6e19ab874b735fe7339bcf651111664263ea4ef9) ) + ROM_LOAD( "mm8.2p", 0xf000, 0x1000, CRC(f7989f04) SHA1(d6e301414a807f5e9feed92ce53ab73d6bd46c45) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "mm13.11d", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) + ROM_LOAD( "mm14.10d", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "mm12.5h", 0x0000, 0x1000, CRC(f73a8412) SHA1(9baf4336cceb9b039372b0a1c733910aeab5ec6d) ) + ROM_LOAD( "mm10.5h", 0x1000, 0x1000, CRC(3828c9db) SHA1(eaf9e81c803ad2be6c2db3104f07f80788378286) ) + ROM_LOAD( "mm11.5f", 0x2000, 0x1000, CRC(9e0e9289) SHA1(79d412dbceb364bc798feda658b15792feb63338) ) + ROM_LOAD( "mm9.5f", 0x3000, 0x1000, CRC(92085b0c) SHA1(a791703fa9f17e42450c871d902430fc3c6b10ef) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) +ROM_END + + +ROM_START( mimonsco ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "fra_1a", 0x0000, 0x1000, CRC(8e7a7379) SHA1(06b945a5d237384bfd1b4c9a7449f5a1701a352c) ) + ROM_LOAD( "fra_1b", 0x1000, 0x1000, CRC(ab08cbfe) SHA1(edccefefc0ed476d94acccf7f92115c5d6945679) ) + ROM_LOAD( "fra_2a", 0x2000, 0x1000, CRC(2d4da24d) SHA1(d922713084c9981169f35b41c71c8afa3d7f947d) ) + ROM_LOAD( "fra_2b", 0x3000, 0x1000, CRC(8d88fc7c) SHA1(1ba2d6d448a2c993f398f4457efb1e3535de9ea2) ) + ROM_LOAD( "fra_3a", 0xc000, 0x1000, CRC(b4e5c32d) SHA1(18e53519e8f4e813109cfaf45f2f66444e6fa1a2) ) + ROM_LOAD( "fra_3b", 0xd000, 0x1000, CRC(409036c4) SHA1(a9640da91156504bfc8fedcda30f81169b28a0c9) ) + ROM_LOAD( "fra_4a", 0xe000, 0x1000, CRC(119c08fa) SHA1(6e19ab874b735fe7339bcf651111664263ea4ef9) ) + ROM_LOAD( "fra_4b", 0xf000, 0x1000, CRC(d700fd03) SHA1(3e804a42ecc166d8723f0b0a4906212addbbad7b) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "mmsound1", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) + ROM_LOAD( "mmsnd2a", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "mmgfx1", 0x0000, 0x2000, CRC(4af47337) SHA1(225f7bcfbb61e3a163ecaed675d4c81b3609562f) ) + ROM_LOAD( "mmgfx2", 0x2000, 0x2000, CRC(def47da8) SHA1(8e62e5dc5c810efaa204d0fcb3d02bc84f61ba35) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) +ROM_END + + +ROM_START( mimonscr ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "mm1", 0x0000, 0x1000, CRC(0399a0c4) SHA1(8314124f9b535ce531663625d19cd3a76782ed3b) ) + ROM_LOAD( "mm2", 0x1000, 0x1000, CRC(2c5e971e) SHA1(39f979b99566e30a19c63115c936bb11fae4c609) ) + ROM_LOAD( "mm3", 0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) ) + ROM_LOAD( "mm4", 0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) ) + ROM_LOAD( "mm5", 0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) ) + ROM_LOAD( "mm6", 0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) ) + ROM_LOAD( "mm7", 0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) ) + ROM_LOAD( "mm8", 0xf000, 0x1000, CRC(eee7a12e) SHA1(bde6bfe98b15215c48c85a22615b0242ea4f0224) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "mmsound1", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) + ROM_LOAD( "mmsnd2a", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "mmgfx1", 0x0000, 0x2000, CRC(4af47337) SHA1(225f7bcfbb61e3a163ecaed675d4c81b3609562f) ) + ROM_LOAD( "mmgfx2", 0x2000, 0x2000, CRC(def47da8) SHA1(8e62e5dc5c810efaa204d0fcb3d02bc84f61ba35) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) +ROM_END + + +ROM_START( mimonscra ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "1.c2", 0x0000, 0x1000, CRC(cfff26f3) SHA1(6e611e370ce5a93099bdcdb3b34b86c9c6d49180) ) + ROM_LOAD( "2.e2", 0x1000, 0x1000, CRC(1fca805f) SHA1(eb85d3c08b141d8bd85da38936a5fafcdd2ff709) ) + ROM_LOAD( "3.f2", 0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) ) + ROM_LOAD( "4.h2", 0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) ) + ROM_LOAD( "5.j2", 0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) ) + ROM_LOAD( "6.l2", 0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) ) + ROM_LOAD( "7.m2", 0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) ) + ROM_LOAD( "8.p2", 0xf000, 0x1000, CRC(0b9915b8) SHA1(bb5155eede699d0b612cae458499bd245ab44b4d) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "2732.c5", 0x0000, 0x1000, CRC(5995f24b) SHA1(e3cad71006346e6ca6579c09e65195718687dca1) ) + ROM_LOAD( "2732.d5", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "top.g5", 0x0000, 0x1000, CRC(f73a8412) SHA1(9baf4336cceb9b039372b0a1c733910aeab5ec6d) ) + ROM_LOAD( "bottom.g5", 0x1000, 0x1000, CRC(3828c9db) SHA1(eaf9e81c803ad2be6c2db3104f07f80788378286) ) + ROM_LOAD( "top.f5", 0x2000, 0x1000, CRC(9e0e9289) SHA1(79d412dbceb364bc798feda658b15792feb63338) ) + ROM_LOAD( "bottom.f5", 0x3000, 0x1000, CRC(92085b0c) SHA1(a791703fa9f17e42450c871d902430fc3c6b10ef) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "mb7051.e6", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) +ROM_END + + ROM_START( anteater ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ra1-2c", 0x0000, 0x1000, CRC(58bc9393) SHA1(7122782a69ef0d2196ec16833f229b6286802668) ) @@ -13614,6 +13869,10 @@ GAME( 1981, armorcar2, armorcar, scobra, armorcar2, galaxian_state, init_ GAME( 1982, tazmania, 0, scobra, tazmania, galaxian_state, init_scobra, ROT90, "Stern Electronics", "Tazz-Mania (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonkey, 0, mimonkey, mimonkey, galaxian_state, init_mimonkey, ROT90, "Universal Video Games", "Mighty Monkey", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonsco, mimonkey, mimonkey, mimonsco, galaxian_state, init_mimonkeyb, ROT90, "bootleg", "Mighty Monkey (bootleg on Super Cobra hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonscr, mimonkey, mimonscr, mimonkey, galaxian_state, init_mimonkeyb, ROT90, "bootleg", "Mighty Monkey (bootleg on Scramble hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mimonscra, mimonkey, mimonscr, mimonkey, galaxian_state, init_mimonkeyb, ROT90, "bootleg (Kaina Games)", "Mighty Monkey (Kaina Games, bootleg on Scramble hardware)", MACHINE_SUPPORTS_SAVE ) /* Anteater (sold as conversion kit) diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp index 52af50abc8b..b99619b9e94 100644 --- a/src/mame/drivers/scobra.cpp +++ b/src/mame/drivers/scobra.cpp @@ -53,7 +53,6 @@ public: , m_soundram(*this, "soundram") { } - void mimonkey(machine_config &config); void mimonkeyug(machine_config &config); void stratgyx(machine_config &config); void type1(machine_config &config); @@ -91,7 +90,6 @@ private: void hustlerb_sound_io_map(address_map &map); void hustlerb_sound_map(address_map &map); void hustlerb6_map(address_map &map); - void mimonkey_map(address_map &map); void mimonkeyug_map(address_map &map); void minefldfe_map(address_map &map); void rescuefe_map(address_map &map); @@ -260,25 +258,6 @@ void scobra_state::hustlerb6_map(address_map &map) map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); } -void scobra_state::mimonkey_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x8000, 0x87ff).ram(); - map(0x8800, 0x8bff).ram().w(FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400); - map(0x9000, 0x903f).ram().w(FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); - map(0x9040, 0x905f).ram().share("spriteram"); - map(0x9060, 0x907f).ram().share("bulletsram"); - map(0x9080, 0x90ff).ram(); - map(0x9800, 0x9803).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xa000, 0xa003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xa800, 0xa802).w(FUNC(scobra_state::galaxold_gfxbank_w)); - map(0xa801, 0xa801).w(FUNC(scobra_state::galaxold_nmi_enable_w)); - map(0xa806, 0xa806).w(FUNC(scobra_state::galaxold_flip_screen_x_w)); - map(0xa807, 0xa807).w(FUNC(scobra_state::galaxold_flip_screen_y_w)); - map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); - map(0xc000, 0xffff).rom(); -} - void scobra_state::mimonkeyug_map(address_map &map) { map(0x0000, 0x47ff).rom(); @@ -293,6 +272,7 @@ void scobra_state::mimonkeyug_map(address_map &map) map(0x9080, 0x90ff).ram(); map(0xa800, 0xa802).w(FUNC(scobra_state::galaxold_gfxbank_w)); // ok map(0xa801, 0xa801).w(FUNC(scobra_state::galaxold_nmi_enable_w)); // ok + map(0xa804, 0xa804).w(FUNC(scobra_state::scrambold_background_enable_w)); map(0xa806, 0xa806).w(FUNC(scobra_state::galaxold_flip_screen_x_w)); // ok map(0xa807, 0xa807).w(FUNC(scobra_state::galaxold_flip_screen_y_w)); // ok map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); // ok @@ -849,63 +829,6 @@ static INPUT_PORTS_START( hustler ) INPUT_PORTS_END -static INPUT_PORTS_START( mimonkey ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x03, "6" ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_DIPNAME( 0x20, 0x00, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* used, something to do with the bullets */ - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -/* Same as 'mimonkey' but different "Lives" Dip Switch */ -static INPUT_PORTS_START( mimonsco ) - PORT_INCLUDE( mimonkey ) - - PORT_MODIFY("IN1") - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "1" ) - PORT_DIPSETTING( 0x01, "2" ) - PORT_DIPSETTING( 0x02, "3" ) - PORT_DIPSETTING( 0x03, "4" ) -INPUT_PORTS_END - - static INPUT_PORTS_START( mimonkeyug ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) @@ -1067,18 +990,6 @@ void scobra_state::minefldfe(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::minefldfe_map); } - -void scobra_state::mimonkey(machine_config &config) -{ - type1(config); - - /* basic machine hardware */ - m_maincpu->set_addrmap(AS_PROGRAM, &scobra_state::mimonkey_map); - - /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(scobra_state,mimonkey) -} - void scobra_state::mimonkeyug(machine_config &config) { Z80(config, m_maincpu, 18432000/6); @@ -1861,54 +1772,6 @@ ROM_START( hustlerb6 ) // dump confirmed from two different PCBs, seems most sim ROM_LOAD( "6331-1j.1k", 0x0000, 0x0020, CRC(aa1f7f5e) SHA1(311dd17aa11490a1173c76223e4ccccf8ea29850) ) ROM_END -ROM_START( mimonkey ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "mm1.2e", 0x0000, 0x1000, CRC(9019f1b1) SHA1(0c45f64e39b9a182f6162ab520ced6ef0686466c) ) - ROM_LOAD( "mm2.2e", 0x1000, 0x1000, CRC(043e97d6) SHA1(924c0165dfcf01182696b0d259718ac625573d9a) ) - ROM_LOAD( "mm3.2f", 0x2000, 0x1000, CRC(1052726a) SHA1(2fdd3064f02babd2d496a38c7aee094cb3666f24) ) - ROM_LOAD( "mm4.2h", 0x3000, 0x1000, CRC(7b3f35ff) SHA1(b52c46c3f166346d3b25cd2ab09781afc703de08) ) - ROM_LOAD( "mm5.2j", 0xc000, 0x1000, CRC(b4e5c32d) SHA1(18e53519e8f4e813109cfaf45f2f66444e6fa1a2) ) - ROM_LOAD( "mm6.2l", 0xd000, 0x1000, CRC(409036c4) SHA1(a9640da91156504bfc8fedcda30f81169b28a0c9) ) - ROM_LOAD( "mm7.2m", 0xe000, 0x1000, CRC(119c08fa) SHA1(6e19ab874b735fe7339bcf651111664263ea4ef9) ) - ROM_LOAD( "mm8.2p", 0xf000, 0x1000, CRC(f7989f04) SHA1(d6e301414a807f5e9feed92ce53ab73d6bd46c45) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "mm13.11d", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) - ROM_LOAD( "mm14.10d", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "mm12.5h", 0x0000, 0x1000, CRC(f73a8412) SHA1(9baf4336cceb9b039372b0a1c733910aeab5ec6d) ) - ROM_LOAD( "mm10.5h", 0x1000, 0x1000, CRC(3828c9db) SHA1(eaf9e81c803ad2be6c2db3104f07f80788378286) ) - ROM_LOAD( "mm11.5f", 0x2000, 0x1000, CRC(9e0e9289) SHA1(79d412dbceb364bc798feda658b15792feb63338) ) - ROM_LOAD( "mm9.5f", 0x3000, 0x1000, CRC(92085b0c) SHA1(a791703fa9f17e42450c871d902430fc3c6b10ef) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) -ROM_END - -ROM_START( mimonsco ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "fra_1a", 0x0000, 0x1000, CRC(8e7a7379) SHA1(06b945a5d237384bfd1b4c9a7449f5a1701a352c) ) - ROM_LOAD( "fra_1b", 0x1000, 0x1000, CRC(ab08cbfe) SHA1(edccefefc0ed476d94acccf7f92115c5d6945679) ) - ROM_LOAD( "fra_2a", 0x2000, 0x1000, CRC(2d4da24d) SHA1(d922713084c9981169f35b41c71c8afa3d7f947d) ) - ROM_LOAD( "fra_2b", 0x3000, 0x1000, CRC(8d88fc7c) SHA1(1ba2d6d448a2c993f398f4457efb1e3535de9ea2) ) - ROM_LOAD( "fra_3a", 0xc000, 0x1000, CRC(b4e5c32d) SHA1(18e53519e8f4e813109cfaf45f2f66444e6fa1a2) ) - ROM_LOAD( "fra_3b", 0xd000, 0x1000, CRC(409036c4) SHA1(a9640da91156504bfc8fedcda30f81169b28a0c9) ) - ROM_LOAD( "fra_4a", 0xe000, 0x1000, CRC(119c08fa) SHA1(6e19ab874b735fe7339bcf651111664263ea4ef9) ) - ROM_LOAD( "fra_4b", 0xf000, 0x1000, CRC(d700fd03) SHA1(3e804a42ecc166d8723f0b0a4906212addbbad7b) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "mmsound1", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) - ROM_LOAD( "mmsnd2a", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "mmgfx1", 0x0000, 0x2000, CRC(4af47337) SHA1(225f7bcfbb61e3a163ecaed675d4c81b3609562f) ) - ROM_LOAD( "mmgfx2", 0x2000, 0x2000, CRC(def47da8) SHA1(8e62e5dc5c810efaa204d0fcb3d02bc84f61ba35) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) -ROM_END - ROM_START( mimonkeyug ) // this bootleg has significant hardware changes: no audio CPU or sound chips, no 8255s. Only discrete sound. Also 0x800 more ROM. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "mig.m.1-g.7l-bottom", 0x0000, 0x1000, CRC(5667c124) SHA1(49e5393bc0d2e54c3466e6567a934ed048624dfb) ) @@ -1958,6 +1821,4 @@ GAME( 1981, hustlerb4, hustler, hustlerb4, hustler, scobra_state, empty_i GAME( 1981, hustlerb5, hustler, hustlerb, hustler, scobra_state, empty_init, ROT90, "bootleg", "Video Hustler (bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, hustlerb6, hustler, hustlerb6, hustler, scobra_state, empty_init, ROT90, "bootleg", "Video Hustler (bootleg, set 4)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // stuck on boot, dump verified good -GAME( 1982, mimonkey, 0, mimonkey, mimonkey, scobra_state, init_mimonkey, ROT90, "Universal Video Games", "Mighty Monkey", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mimonsco, mimonkey, mimonkey, mimonsco, scobra_state, init_mimonsco, ROT90, "bootleg", "Mighty Monkey (bootleg on Super Cobra hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mimonkeyug, mimonkey, mimonkeyug, mimonkeyug, scobra_state, init_mimonsco, ROT90, "bootleg (U.Games)", "Mighty Monkey (U.Games bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // missing discrete sound components emulation +GAME( 1983, mimonkeyug, mimonkey, mimonkeyug, mimonkeyug, scobra_state, empty_init, ROT90, "bootleg (U.Games)", "Mighty Monkey (U.Games bootleg)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // missing discrete sound components emulation diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index aff1c6b69fe..cdaa8c21e86 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -250,28 +250,6 @@ void scramble_state::hunchbks_map(address_map &map) -void scramble_state::mimonscr_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x47ff).ram(); - map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); - map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */ - map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); - map(0x5040, 0x505f).ram().share("spriteram"); - map(0x5060, 0x507f).ram().share("bulletsram"); - map(0x5080, 0x50ff).ram(); - map(0x6800, 0x6802).w(FUNC(scramble_state::galaxold_gfxbank_w)); - map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w)); - map(0x6806, 0x6806).w(FUNC(scramble_state::galaxold_flip_screen_x_w)); - map(0x6807, 0x6807).w(FUNC(scramble_state::galaxold_flip_screen_y_w)); - map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); - map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xc000, 0xffff).rom(); -} - - - void scramble_state::ad2083_map(address_map &map) { map(0x0000, 0x3fff).rom(); @@ -980,51 +958,6 @@ static INPUT_PORTS_START( cavelon ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* protection check? */ INPUT_PORTS_END -/* Same as 'mimonkey' (scobra.cpp driver) */ -static INPUT_PORTS_START( mimonscr ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN1") - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x02, "5" ) - PORT_DIPSETTING( 0x03, "6" ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_DIPNAME( 0x20, 0x00, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) /* used, something to do with the bullets */ - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - static INPUT_PORTS_START( ad2083 ) /* There are no Player 2 controls for this game: * Dipswitch is read upon startup. If Cabinet = Cocktail, a 1 is stored @400F. @@ -1482,17 +1415,6 @@ void scramble_state::cavelon(machine_config &config) MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs) } -void scramble_state::mimonscr(machine_config &config) -{ - scramble(config); - - /* basic machine hardware */ - m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mimonscr_map); - - /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(scramble_state,mimonkey) -} - /* Triple Punch and Mariner are different - only one CPU, one 8910 */ void scramble_state::triplep(machine_config &config) { @@ -2163,54 +2085,6 @@ ROM_START( cavelon ) ROM_LOAD( "cavelon.clr", 0x0000, 0x0020, CRC(d133356b) SHA1(58db4013a9ad77107f0d462c96363d7c38d86fa2) ) ROM_END -ROM_START( mimonscr ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "mm1", 0x0000, 0x1000, CRC(0399a0c4) SHA1(8314124f9b535ce531663625d19cd3a76782ed3b) ) - ROM_LOAD( "mm2", 0x1000, 0x1000, CRC(2c5e971e) SHA1(39f979b99566e30a19c63115c936bb11fae4c609) ) - ROM_LOAD( "mm3", 0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) ) - ROM_LOAD( "mm4", 0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) ) - ROM_LOAD( "mm5", 0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) ) - ROM_LOAD( "mm6", 0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) ) - ROM_LOAD( "mm7", 0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) ) - ROM_LOAD( "mm8", 0xf000, 0x1000, CRC(eee7a12e) SHA1(bde6bfe98b15215c48c85a22615b0242ea4f0224) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "mmsound1", 0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) ) - ROM_LOAD( "mmsnd2a", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "mmgfx1", 0x0000, 0x2000, CRC(4af47337) SHA1(225f7bcfbb61e3a163ecaed675d4c81b3609562f) ) - ROM_LOAD( "mmgfx2", 0x2000, 0x2000, CRC(def47da8) SHA1(8e62e5dc5c810efaa204d0fcb3d02bc84f61ba35) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) -ROM_END - - -ROM_START( mimonscra ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "1.c2", 0x0000, 0x1000, CRC(cfff26f3) SHA1(6e611e370ce5a93099bdcdb3b34b86c9c6d49180) ) - ROM_LOAD( "2.e2", 0x1000, 0x1000, CRC(1fca805f) SHA1(eb85d3c08b141d8bd85da38936a5fafcdd2ff709) ) - ROM_LOAD( "3.f2", 0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) ) - ROM_LOAD( "4.h2", 0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) ) - ROM_LOAD( "5.j2", 0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) ) - ROM_LOAD( "6.l2", 0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) ) - ROM_LOAD( "7.m2", 0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) ) - ROM_LOAD( "8.p2", 0xf000, 0x1000, CRC(0b9915b8) SHA1(bb5155eede699d0b612cae458499bd245ab44b4d) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "2732.c5", 0x0000, 0x1000, CRC(5995f24b) SHA1(e3cad71006346e6ca6579c09e65195718687dca1) ) - ROM_LOAD( "2732.d5", 0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "top.g5", 0x0000, 0x1000, CRC(f73a8412) SHA1(9baf4336cceb9b039372b0a1c733910aeab5ec6d) ) - ROM_LOAD( "bottom.g5", 0x1000, 0x1000, CRC(3828c9db) SHA1(eaf9e81c803ad2be6c2db3104f07f80788378286) ) - ROM_LOAD( "top.f5", 0x2000, 0x1000, CRC(9e0e9289) SHA1(79d412dbceb364bc798feda658b15792feb63338) ) - ROM_LOAD( "bottom.f5", 0x3000, 0x1000, CRC(92085b0c) SHA1(a791703fa9f17e42450c871d902430fc3c6b10ef) ) - - ROM_REGION( 0x0020, "proms", 0 ) - ROM_LOAD( "mb7051.e6", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) -ROM_END ROM_START( ad2083 ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -2297,9 +2171,6 @@ GAME( 1984, hncholms, huncholy, hncholms, hncholms, scramble_state, init_scrambl GAME( 1983, cavelon, 0, cavelon, cavelon, scramble_state, init_cavelon, ROT90, "Jetsoft", "Cavelon", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mimonscr, mimonkey, mimonscr, mimonscr, scramble_state, init_mimonscr, ROT90, "bootleg", "Mighty Monkey (bootleg on Scramble hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mimonscra,mimonkey, mimonscr, mimonscr, scramble_state, init_mimonscr, ROT90, "bootleg (Kaina Games)","Mighty Monkey (Kaina Games, bootleg on Scramble hardware)", MACHINE_SUPPORTS_SAVE ) - GAME( 1983, ad2083, 0, ad2083, ad2083, scramble_state, init_ad2083, ROT90, "Midcoin", "A. D. 2083", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1983, harem, 0, harem, harem, scramble_state, init_harem, ROT90, "I.G.R.", "Harem", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index 7c616ee6682..393057579c2 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -233,6 +233,8 @@ public: void init_froggrs(); void init_warofbugg(); void init_jungsub(); + void init_mimonkey(); + void init_mimonkeyb(); void init_victoryc(); TILE_GET_INFO_MEMBER(bg_get_tile_info); void galaxian_palette(palette_device &palette); @@ -284,6 +286,8 @@ public: void calipso_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color); void jumpbug_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x); void jumpbug_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color); + void mimonkey_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x); + void mimonkey_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color); void monsterz_set_latch(); void decode_mooncrst(int length, uint8_t *dest); void decode_checkman(); @@ -354,6 +358,8 @@ public: void fourplay(machine_config &config); void videight(machine_config &config); void astroamb(machine_config &config); + void mimonkey(machine_config &config); + void mimonscr(machine_config &config); protected: void amigo2_map(address_map &map); @@ -387,6 +393,8 @@ protected: void konami_sound_portmap(address_map &map); void kong_map(address_map &map); void mandingarf_map(address_map &map); + void mimonkey_map(address_map &map); + void mimonscr_map(address_map &map); void monsterz_map(address_map &map); void mooncrst_map(address_map &map); void mooncrst_map_base(address_map &map); diff --git a/src/mame/includes/scramble.h b/src/mame/includes/scramble.h index e61956ff941..7af727b0393 100644 --- a/src/mame/includes/scramble.h +++ b/src/mame/includes/scramble.h @@ -68,7 +68,6 @@ public: void init_mariner(); void init_scramble_ppi(); void init_mars(); - void init_mimonscr(); void init_hotshock(); void init_ad2083(); void init_devilfsh(); @@ -81,8 +80,6 @@ public: void init_tazmani2(); void init_tazmaniet(); void init_darkplnt(); - void init_mimonkey(); - void init_mimonsco(); void init_rescue(); void init_minefld(); void init_hustler(); @@ -117,7 +114,6 @@ public: void devilfsh(machine_config &config); void triplep(machine_config &config); void newsin7(machine_config &config); - void mimonscr(machine_config &config); void ckongs(machine_config &config); void mrkougb(machine_config &config); void ad2083_map(address_map &map); @@ -133,7 +129,6 @@ public: void hunchbks_map(address_map &map); void hunchbks_readport(address_map &map); void mars_map(address_map &map); - void mimonscr_map(address_map &map); void mrkougar_map(address_map &map); void newsin7_map(address_map &map); void scramble_map(address_map &map); diff --git a/src/mame/machine/scramble.cpp b/src/mame/machine/scramble.cpp index f6cb0d18c5f..56dc9ba3262 100644 --- a/src/mame/machine/scramble.cpp +++ b/src/mame/machine/scramble.cpp @@ -273,50 +273,6 @@ void scramble_state::init_darkplnt() m_maincpu->space(AS_PROGRAM).install_write_handler(0xb00a, 0xb00a, write8smo_delegate(*this, FUNC(scramble_state::darkplnt_bullet_color_w))); } -void scramble_state::init_mimonkey() -{ - static const uint8_t xortable[16][16] = - { - { 0x03,0x03,0x05,0x07,0x85,0x00,0x85,0x85,0x80,0x80,0x06,0x03,0x03,0x00,0x00,0x81 }, - { 0x83,0x87,0x03,0x87,0x06,0x00,0x06,0x04,0x02,0x00,0x84,0x84,0x04,0x00,0x01,0x83 }, - { 0x82,0x82,0x84,0x02,0x04,0x00,0x00,0x03,0x82,0x00,0x06,0x80,0x03,0x00,0x81,0x07 }, - { 0x06,0x06,0x82,0x81,0x85,0x00,0x04,0x07,0x81,0x05,0x04,0x00,0x03,0x00,0x82,0x84 }, - { 0x07,0x07,0x80,0x07,0x07,0x00,0x85,0x86,0x00,0x07,0x06,0x04,0x85,0x00,0x86,0x85 }, - { 0x81,0x83,0x02,0x02,0x87,0x00,0x86,0x03,0x04,0x06,0x80,0x05,0x87,0x00,0x81,0x81 }, - { 0x01,0x01,0x00,0x07,0x07,0x00,0x01,0x01,0x07,0x07,0x06,0x00,0x06,0x00,0x07,0x07 }, - { 0x80,0x87,0x81,0x87,0x83,0x00,0x84,0x01,0x01,0x86,0x86,0x80,0x86,0x00,0x86,0x86 }, - { 0x03,0x03,0x05,0x07,0x85,0x00,0x85,0x85,0x80,0x80,0x06,0x03,0x03,0x00,0x00,0x81 }, - { 0x83,0x87,0x03,0x87,0x06,0x00,0x06,0x04,0x02,0x00,0x84,0x84,0x04,0x00,0x01,0x83 }, - { 0x82,0x82,0x84,0x02,0x04,0x00,0x00,0x03,0x82,0x00,0x06,0x80,0x03,0x00,0x81,0x07 }, - { 0x06,0x06,0x82,0x81,0x85,0x00,0x04,0x07,0x81,0x05,0x04,0x00,0x03,0x00,0x82,0x84 }, - { 0x07,0x07,0x80,0x07,0x07,0x00,0x85,0x86,0x00,0x07,0x06,0x04,0x85,0x00,0x86,0x85 }, - { 0x81,0x83,0x02,0x02,0x87,0x00,0x86,0x03,0x04,0x06,0x80,0x05,0x87,0x00,0x81,0x81 }, - { 0x01,0x01,0x00,0x07,0x07,0x00,0x01,0x01,0x07,0x07,0x06,0x00,0x06,0x00,0x07,0x07 }, - { 0x80,0x87,0x81,0x87,0x83,0x00,0x84,0x01,0x01,0x86,0x86,0x80,0x86,0x00,0x86,0x86 } - }; - - uint8_t *ROM = memregion("maincpu")->base(); - int ctr = 0; - for (int A = 0; A < 0x4000; A++) - { - int line = (ctr & 0x07) | ((ctr & 0x200) >> 6); - int col = ((ROM[A] & 0x80) >> 4) | (ROM[A] & 0x07); - ROM[A] = ROM[A] ^ xortable[line][col]; - ctr++; - } - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8smo_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); -} - -void scramble_state::init_mimonsco() -{ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8smo_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); -} - -void scramble_state::init_mimonscr() -{ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x6804, 0x6804, write8smo_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); -} - inline int scramble_state::bit(int i,int n) { diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b46af9869cd..311024d090d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14259,6 +14259,10 @@ mandinga // bootleg (Artemi) mandingac // bootleg (Centromatic) mandingaeg // bootleg (Electrogame) mandingarf // bootleg (Recreativos Franco S.A.) +mimonkey // (c) 1982 Universal Video Games (US Copyright Office info - http://cocatalog.loc.gov) +mimonsco // (c) 1982 bootleg +mimonscr // (c) 1982 bootleg +mimonscra // (c) 1982 bootleg mltiwars // bootleg (Gayton Games) monsterz // (c) 1982 Nihon (Arcade TV Game List - P.102, Left, 20 from top) moonal2 // [1980] Nichibutsu @@ -36389,9 +36393,7 @@ hustlerb4 // bootleg hustlerb5 // bootleg hustlerb6 // bootleg hustlerd // GX343 (c) 1981 Konami + Dynamo Games license -mimonkey // (c) 1982 Universal Video Games (US Copyright Office info - http://cocatalog.loc.gov) mimonkeyug // (c) 1983 bootleg -mimonsco // (c) 1982 bootleg minefld // (c) 1983 Stern minefldfe // bootleg rescue // (c) 1982 Stern @@ -36436,8 +36438,6 @@ knockoutb // bootleg knockoutc // mariner // (c) 1981 Amenip mars // (c) 1981 Artic -mimonscr // (c) 1982 bootleg -mimonscra // (c) 1982 bootleg mrkougar // (c) 1984 ATW mrkougar2 // (c) 1984 ATW mrkougb // bootleg diff --git a/src/mame/video/galaxian.cpp b/src/mame/video/galaxian.cpp index 7f6d24c192c..68a15b902ca 100644 --- a/src/mame/video/galaxian.cpp +++ b/src/mame/video/galaxian.cpp @@ -1293,6 +1293,18 @@ void galaxian_state::pisces_extend_sprite_info(const uint8_t *base, uint8_t *sx, } +/*** Mighty Monkey ***/ +void galaxian_state::mimonkey_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x) +{ + *code |= m_gfxbank[0] << 8 | m_gfxbank[2] << 9; +} + +void galaxian_state::mimonkey_extend_sprite_info(const uint8_t *base, uint8_t *sx, uint8_t *sy, uint8_t *flipx, uint8_t *flipy, uint16_t *code, uint8_t *color) +{ + *code |= m_gfxbank[0] << 6 | m_gfxbank[2] << 7; +} + + /*** Batman Part 2 ***/ void galaxian_state::batman2_extend_tile_info(uint16_t *code, uint8_t *color, uint8_t attrib, uint8_t x) { |