diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a0a048157d1..90652e627c4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45648,8 +45648,8 @@ laserbat // (c) 1981 lazarian // (c) 1981 @source:zaccaria/seabattl.cpp +armada // seabattl // (c) 1980 -seabattla // (c) 1980 @source:zaccaria/zac1b1120.cpp dodgem // (c) 1979 diff --git a/src/mame/zaccaria/seabattl.cpp b/src/mame/zaccaria/seabattl.cpp index 7c424ac1a88..cfa6144f99f 100644 --- a/src/mame/zaccaria/seabattl.cpp +++ b/src/mame/zaccaria/seabattl.cpp @@ -66,6 +66,7 @@ public: { } void seabattl(machine_config &config); + void armada(machine_config &config); protected: virtual void machine_start() override; @@ -93,6 +94,7 @@ private: uint32_t screen_update_seabattl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void seabattl_data_map(address_map &map); void seabattl_map(address_map &map); + void armada_map(address_map &map); required_device m_maincpu; required_shared_ptr m_videoram; @@ -256,9 +258,10 @@ void seabattl_state::video_start() void seabattl_state::seabattl_map(address_map &map) { - map.global_mask(0x7fff); map(0x0000, 0x13ff).rom(); map(0x2000, 0x33ff).rom(); + map(0x4000, 0x53ff).rom(); + map(0x6000, 0x73ff).rom(); map(0x1400, 0x17ff).mirror(0x2000).ram().w(FUNC(seabattl_state::seabattl_colorram_w)).share("colorram"); map(0x1800, 0x1bff).mirror(0x2000).ram().w(FUNC(seabattl_state::seabattl_videoram_w)).share("videoram"); map(0x1c00, 0x1cff).mirror(0x2000).ram(); @@ -273,6 +276,26 @@ void seabattl_state::seabattl_map(address_map &map) map(0x1fcc, 0x1fcc).mirror(0x2000).portr("IN1"); } +void seabattl_state::armada_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x2000, 0x2bff).rom(); + map(0x4000, 0x4bff).rom(); + map(0x6000, 0x6bff).rom(); + map(0x1400, 0x17ff).mirror(0x6000).ram().w(FUNC(seabattl_state::seabattl_colorram_w)).share("colorram"); + map(0x1800, 0x1bff).mirror(0x6000).ram().w(FUNC(seabattl_state::seabattl_videoram_w)).share("videoram"); + map(0x1c00, 0x1cff).mirror(0x6000).ram(); + map(0x1d00, 0x1dff).mirror(0x6000).ram().share("objram"); + map(0x1e00, 0x1e00).mirror(0x60f0).w(FUNC(seabattl_state::time_display_w)); + map(0x1e01, 0x1e01).mirror(0x60f0).w(FUNC(seabattl_state::score_display_w)); + map(0x1e02, 0x1e02).mirror(0x60f0).portr("IN0").w(FUNC(seabattl_state::score2_display_w)); + map(0x1e05, 0x1e05).mirror(0x60f0).portr("DIPS2"); + map(0x1e06, 0x1e06).mirror(0x60f0).portr("DIPS1").w(FUNC(seabattl_state::sound_w)); + map(0x1e07, 0x1e07).mirror(0x60f0).portr("DIPS0").w(FUNC(seabattl_state::sound2_w)); + map(0x1f00, 0x1fff).mirror(0x6000).rw(m_s2636, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1fcc, 0x1fcc).mirror(0x6000).portr("IN1"); +} + void seabattl_state::seabattl_data_map(address_map &map) { map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(FUNC(seabattl_state::seabattl_collision_r), FUNC(seabattl_state::seabattl_control_w)); @@ -509,6 +532,15 @@ void seabattl_state::seabattl(machine_config &config) /* discrete sound */ } +// very different looking PCB (bootleg maybe?) +void seabattl_state::armada(machine_config &config) +{ + seabattl(config); + m_maincpu->set_addrmap(AS_PROGRAM, &seabattl_state::armada_map); + + // TODO: Z80-based sound board +} + /******************************************************************************/ @@ -538,24 +570,65 @@ ROM_START( seabattl ) ROM_LOAD( "sea b wawe.prg", 0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) ROM_END -ROM_START( seabattla ) // this was a very different looking PCB (bootleg called armada maybe?) most parts had been stripped - ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "program roms", 0x0000, 0x0400, NO_DUMP ) +/* +Zaccaria Armada +--------------- - ROM_REGION( 0xc00, "gfx1", 0 ) // probably the same as above without the blank data at the start - ROM_LOAD( "armadared.ic26", 0x0000, 0x0400, CRC(b588f509) SHA1(073f9dc584aba1351969ef597cd80a0037938dfb) ) - ROM_LOAD( "armadagreen.ic25", 0x0400, 0x0400, CRC(3cc861c9) SHA1(d9159ee045cc0994f468035ae28cd8b79b5985ee) ) - ROM_LOAD( "armadablu.ic24", 0x0800, 0x0400, CRC(3689e530) SHA1(b30ab0d5ddc9b296437aa1bc2887f1416eb69f9c) ) +Serial No.: V143107 + +Main PCB looks like it's a revised Sea Scare main PCB (I.G.R. LC26 C) + - 2650 CPU + - 2636 PVI + - DIP switch block (8) + +Sound PCB looks similar to Scorpion (I.G.R. LC241) + - Z80 CPU + - 3 x AY-3-8910 + - 2 x 8255 + - Stereo amplifiers + - Epoxy block like Scorpion + - Shaved off 40-pin IC likely the same speech IC as Scorpion + - DIP switch block (8) +*/ +ROM_START( armada ) + ROM_REGION( 0x8000, "maincpu", 0 ) + ROM_LOAD( "armada-1", 0x0000, 0x0400, CRC(8528510c) SHA1(fbb653a0a4c77dd31fa106f1aeab985d02ebad50) ) + ROM_CONTINUE( 0x2000, 0x0400 ) + ROM_CONTINUE( 0x4000, 0x0400 ) + ROM_CONTINUE( 0x6000, 0x0400 ) + ROM_LOAD( "armada-2", 0x0400, 0x0400, CRC(7f5a2089) SHA1(be15d9c31c8bd33c029dfa7fcfc4e36d6dc8e04f) ) + ROM_CONTINUE( 0x2400, 0x0400 ) + ROM_CONTINUE( 0x4400, 0x0400 ) + ROM_CONTINUE( 0x6400, 0x0400 ) + ROM_LOAD( "armada-3", 0x0800, 0x0400, CRC(43e4c8c9) SHA1(b2f3a492cef183875370bd0c4e75e9bdb70c9cf2) ) + ROM_CONTINUE( 0x2800, 0x0400 ) + ROM_CONTINUE( 0x4800, 0x0400 ) + ROM_CONTINUE( 0x6800, 0x0400 ) + // 2 adjacent DIP28 positions (IC72, IC73) are unpopulated + + ROM_REGION( 0x1800, "gfx1", 0 ) // probably the same as above without the blank data at the start + ROM_LOAD( "armada-red.ic26", 0x0400, 0x0400, CRC(b588f509) SHA1(073f9dc584aba1351969ef597cd80a0037938dfb) ) + ROM_LOAD( "armada-green.ic25", 0x0c00, 0x0400, CRC(3cc861c9) SHA1(d9159ee045cc0994f468035ae28cd8b79b5985ee) ) + ROM_LOAD( "armada-blu.ic24", 0x1400, 0x0400, CRC(3689e530) SHA1(b30ab0d5ddc9b296437aa1bc2887f1416eb69f9c) ) ROM_REGION( 0x0800, "gfx2", 0 ) - ROM_LOAD( "greenobj.ic38", 0x0000, 0x0800, CRC(81a9a741) SHA1(b2725c320a232d4abf6e6fc58ccf6a5edb8dd9a0) ) + ROM_LOAD( "greenobj.ic38", 0x0000, 0x0800, CRC(81a9a741) SHA1(b2725c320a232d4abf6e6fc58ccf6a5edb8dd9a0) ) ROM_REGION( 0x0800, "gfx3", 0 ) - ROM_LOAD( "seawawe.ic9", 0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) // identical to above set + ROM_LOAD( "seawave.ic9", 0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) // identical to above set + + ROM_REGION( 0x3000, "soundcpu", 0 ) + ROM_LOAD( "sound-1.ic12", 0x0000, 0x1000, CRC(3ea7fa75) SHA1(57bc4bc3b21a300c10313a79e6d535573b2e9a54) ) + ROM_LOAD( "sound-2.ic13", 0x1000, 0x1000, CRC(3bcef3ca) SHA1(a9ebeb54a41d08a6ebd3fc2821e3fcda998ec484) ) + ROM_LOAD( "sound-3.ic14", 0x2000, 0x1000, CRC(6409f99b) SHA1(e8d7f457e9a315d7f89b817c2b7cda1f2f3e5877) ) + + ROM_REGION( 0x2000, "speech", 0 ) + ROM_LOAD( "speach-1.ic25", 0x0000, 0x1000, CRC(b72a8559) SHA1(08c60b950c2ed345840a65b427b19788c66d1e27) ) + ROM_LOAD( "speach-2.ic24", 0x1000, 0x1000, CRC(93133519) SHA1(12848b80eb313df9cd552122fdee9d335b32972f) ) ROM_END } // anonymous namespace -GAMEL(1980, seabattl, 0, seabattl, seabattl, seabattl_state, empty_init, ROT0, "Zaccaria", "Sea Battle (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_seabattl ) -GAMEL(1980, seabattla, seabattl, seabattl, seabattl, seabattl_state, empty_init, ROT0, "Zaccaria", "Sea Battle (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_seabattl ) // incomplete dump +GAMEL(1980, seabattl, 0, seabattl, seabattl, seabattl_state, empty_init, ROT0, "Zaccaria", "Sea Battle", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_seabattl ) +GAMEL(1980, armada, seabattl, armada, seabattl, seabattl_state, empty_init, ROT0, "Zaccaria / I.G.R.", "Armada", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING, layout_seabattl ) // different hardware