summaryrefslogtreecommitdiffstats
path: root/docs/release/src/mame/drivers/galaxian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/mame/drivers/galaxian.cpp')
-rw-r--r--docs/release/src/mame/drivers/galaxian.cpp435
1 files changed, 409 insertions, 26 deletions
diff --git a/docs/release/src/mame/drivers/galaxian.cpp b/docs/release/src/mame/drivers/galaxian.cpp
index 53e5591b85c..85800d54676 100644
--- a/docs/release/src/mame/drivers/galaxian.cpp
+++ b/docs/release/src/mame/drivers/galaxian.cpp
@@ -136,6 +136,40 @@ Notes about 'frogg' :
bit 5 of IN1 is tested if "Cabinet" Dip Switch is set to "Cocktail".
+Notes about 'Space Battle' by Hoei :
+------------------------------------
+
+ The main board is based on Galaxian with the following changes...
+ 1. Adjustable 555 sound circuit has been removed.
+ 2. Two additional noise circuits have been added similar to the 'hit' noise
+ but using different vertical counts.
+ 3. Six paged graphic roms are supported on board.
+ 4. Different memory map.
+ 5. 2K of ram.
+ 6. Sockets for upto 26K of rom.
+ 7. Socket for connecting speech synthesis board.
+
+ Roms from two boards have been dumped. The graphics roms are the same.
+ The game roms differ as follows:
+ Set 1 Rom A contains a 16bit checksum at address 0x64/0x65.
+ Rom I contains a 16bit checksum at address 0x7fe/0x7ff
+ No other roms from this set contain a checksum.
+ Set 2 Rom A does not contain a valid checksum.
+ Roms B, C, E, F, G, H, and I contain a 16bit checksum at 0x7fe/0x7ff
+ Rom D contains a 16bit checksum at address 0x5e3/0x534
+ Rom D contains inline code for one subroutine rather than calling the
+ routine. It also has a check a for condition which can't happen
+ removed.
+ Rom G checks the TEST button input on power up and calls 0x5800 if it
+ is active. We do not have a dump of this (test ?) rom.
+ At no point are the checksums validated.
+ From a game point of view both rom sets function exactly the same.
+
+ Interestingly, the overlapped 4764 ROM is actually from sstrangr2 (aka Super
+ Space Stranger, marketed by Hoei), That's on completely different hardware.
+ It looks like it's used here for crude protection.
+
+
Galaxian Bootleg Single Board Layout:
-------------------------------------
@@ -175,7 +209,7 @@ Galaxian Bootleg Single Board Layout:
|----------------------------------------------------------------------------------------------|
1 2 3 4 5 6 7 8 9 1
0
-
+****************************************************************************
Stephh's notes (based on the games Z80 code and some tests) for games based on 'scobra' MACHINE_DRIVER :
@@ -676,9 +710,9 @@ t) 'bagmanmc'
- DSW bit 6 was previously used for "Bonus Lives" settings, but it has no effect
in this set because of 'NOP' instructions from 0x3501 to 0x3507.
+****************************************************************************
TODO:
-----
- Problems with Galaxian based on the observation of a real machine:
- Background humming is incorrect. It's faster on a real machine
- Explosion sound is much softer. Filter involved?
@@ -1587,6 +1621,42 @@ void moonwar_state::port_select_w(uint8_t data)
/*************************************
*
+ * Hoei Space Battle I/O
+ *
+ *************************************/
+
+void sbhoei_state::machine_start()
+{
+ galaxian_state::machine_start();
+
+ m_p2 = 0xff;
+ save_item(NAME(m_p2));
+}
+
+void sbhoei_state::sbhoei_soundlatch_w(uint8_t data)
+{
+ m_soundlatch->write(data & 0x7f);
+ m_8039->set_input_line(0, (data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
+}
+
+void sbhoei_state::p2_w(uint8_t data)
+{
+ if ((data & 0x80) & (~m_p2 & 0x80))
+ m_sp0250->reset();
+
+ m_p2 = data;
+
+ m_soundbank->set_entry((data & 0x07) | ((data >> 2) & 8));
+}
+
+uint8_t sbhoei_state::p1_r()
+{
+ return (m_8039->p1_r() & 0x80) | (m_soundlatch->read() & 0x7f);
+}
+
+
+/*************************************
+ *
* Memory maps
*
*************************************/
@@ -2005,7 +2075,24 @@ void galaxian_state::froggervd_map(address_map &map)
map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
}
-/* map not derived from schematics. Used by explorer and takeoff */
+void galaxian_state::mandinka_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x97ff).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
+ map(0xa001, 0xa001).w(FUNC(galaxian_state::irq_enable_w));
+ map(0xa002, 0xa002).w(FUNC(galaxian_state::coin_count_0_w));
+ map(0xa003, 0xa003).w(FUNC(galaxian_state::scramble_background_enable_w));
+ map(0xa006, 0xa006).w(FUNC(galaxian_state::galaxian_flip_screen_x_w));
+ map(0xa007, 0xa007).w(FUNC(galaxian_state::galaxian_flip_screen_y_w));
+ map(0xa800, 0xa800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xb000, 0xb003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb800, 0xb803).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+// Map not derived from schematics. Used by explorer and takeoff
void galaxian_state::explorer_map(address_map &map)
{
map.unmap_value_high();
@@ -2341,7 +2428,6 @@ void galaxian_state::turpins_map(address_map &map)
}
-
// this is the same as theend, except for separate RGB background controls and some extra ROM space at $7000 and $C000
void nihon_sfx_state::sfx_map(address_map &map)
{
@@ -2392,7 +2478,7 @@ void monsterz_state::monsterz_map(address_map &map)
$6002-$6006: graphics banking controls replace coin lockout, coin counter, and lfo
$7002: coin counter (moved from $6003)
$8000-$afff: additional ROM area
- $b000-$bfff: protection
+ $b000-$bfff: protection (T00 custom chip)
*/
void galaxian_state::jumpbug_map(address_map &map)
{
@@ -2571,6 +2657,39 @@ void tenspot_state::tenspot_select_map(address_map &map)
}
+void sbhoei_state::sbhoei_map_discrete(address_map &map)
+{
+ map(0xa000, 0xa000).mirror(0x07f8).w("cust", FUNC(sbhoei_sound_device::noise1_enable_w));
+ map(0xa001, 0xa001).mirror(0x07f8).w("cust", FUNC(sbhoei_sound_device::noise2_enable_w));
+ map(0xa803, 0xa803).mirror(0x07f8).w("cust", FUNC(sbhoei_sound_device::noise3_enable_w));
+ map(0xa805, 0xa805).mirror(0x07f8).w("cust", FUNC(sbhoei_sound_device::fire_enable_w));
+ map(0xa806, 0xa807).mirror(0x07f8).w("cust", FUNC(sbhoei_sound_device::vol_w));
+ map(0xb800, 0xb800).mirror(0x07ff).w("cust", FUNC(sbhoei_sound_device::pitch_w));
+}
+
+void sbhoei_state::sbhoei_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x8800).mirror(0x07ff).w(FUNC(sbhoei_state::sbhoei_soundlatch_w));
+ map(0x8800, 0x8800).mirror(0x07ff).r(m_8039, FUNC(i8039_device::p1_r));
+ map(0x9000, 0x93ff).mirror(0x0400).ram().w(FUNC(sbhoei_state::galaxian_videoram_w)).share("videoram");
+ map(0x9800, 0x98ff).mirror(0x0700).ram().w(FUNC(sbhoei_state::galaxian_objram_w)).share("spriteram");
+ map(0xa000, 0xa000).mirror(0x07ff).portr("IN0");
+ map(0xa002, 0xa006).mirror(0x07f8).w(FUNC(sbhoei_state::galaxian_gfxbank_w));
+ map(0xa800, 0xa800).mirror(0x07ff).portr("IN1");
+ map(0xb000, 0xb000).mirror(0x07ff).portr("IN2");
+ map(0xb000, 0xb000).mirror(0x07f8).w(FUNC(sbhoei_state::irq_enable_w));
+ map(0xb004, 0xb004).mirror(0x07f8).w(FUNC(sbhoei_state::galaxian_stars_enable_w));
+ map(0xb006, 0xb006).mirror(0x07f8).w(FUNC(sbhoei_state::galaxian_flip_screen_x_w));
+ map(0xb007, 0xb007).mirror(0x07f8).w(FUNC(sbhoei_state::galaxian_flip_screen_y_w));
+ map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ sbhoei_map_discrete(map);
+}
+
+
+
uint8_t galaxian_state::froggeram_ppi8255_r(offs_t offset)
{
// same as theend, but accesses are scrambled
@@ -2653,6 +2772,7 @@ void guttangt_state::guttangts3_map(address_map &map)
map(0x8000, 0x87ff).rom().region("maincpu", 0x4000);
}
+
/*************************************
*
* Sound CPU memory maps
@@ -2691,6 +2811,9 @@ void galaxian_state::konami_sound_portmap(address_map &map)
map(0x00, 0xff).rw(FUNC(galaxian_state::konami_ay8910_r), FUNC(galaxian_state::konami_ay8910_w));
}
+
+// Monster Zero
+
void monsterz_state::monsterz_sound_map(address_map &map)
{
konami_sound_map(map);
@@ -2712,6 +2835,7 @@ void monsterz_state::monsterz_sample_map(address_map& map)
map(0x4000, 0x4000).lw8(NAME([this](uint8_t data) { m_monsterz_shift2 = (m_monsterz_shift2 << 8) | data; }));
}
+
// Checkman with 1 x AY-8910A
void galaxian_state::checkman_sound_map(address_map &map)
@@ -2776,6 +2900,15 @@ void zac_scorpion_state::scorpion_sound_portmap(address_map &map)
}
+// Turpins bootleg
+
+void galaxian_state::turpins_sound_map(address_map &map)
+{
+ konami_sound_map(map);
+ map(0x9000, 0x9000).r(FUNC(galaxian_state::konami_sound_timer_r)); // why does it read it here AND from the AY port?
+}
+
+
// King and Balloon with DAC
void kingball_state::kingball_map(address_map &map)
@@ -2818,10 +2951,17 @@ void nihon_sfx_state::sfx_sample_portmap(address_map &map)
map(0x00, 0xff).rw(FUNC(nihon_sfx_state::sample_io_r), FUNC(nihon_sfx_state::sample_io_w));
}
-void galaxian_state::turpins_sound_map(address_map &map)
+
+// Hoei Space Battle speech board
+
+void sbhoei_state::sbhoei_sound_map(address_map &map)
{
- konami_sound_map(map);
- map(0x9000, 0x9000).r(FUNC(galaxian_state::konami_sound_timer_r)); // why does it read it here AND from the AY port?
+ map(0x0000, 0x07ff).rom();
+}
+
+void sbhoei_state::sbhoei_sound_io_map(address_map &map)
+{
+ map(0x00, 0xff).bankr(m_soundbank);
}
@@ -3249,21 +3389,45 @@ static INPUT_PORTS_START( redufob )
PORT_INCLUDE(galaxian)
PORT_MODIFY("IN1")
- PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!1,!2")
PORT_DIPSETTING( 0x40, "A 2C/1C B 1C/3C" )
PORT_DIPSETTING( 0x00, "A 1C/1C B 1C/6C" )
PORT_DIPSETTING( 0x80, "A 1C/2C B 1C/12C" )
PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) )
PORT_MODIFY("IN2")
- PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!3,!4")
PORT_DIPSETTING( 0x01, "4000" )
PORT_DIPSETTING( 0x02, "5000" )
PORT_DIPSETTING( 0x03, "7000" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!5")
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x04, "5" )
+ PORT_DIPUNUSED( 0x08, 0x00 ) PORT_DIPLOCATION("SW1:!6")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( redufob3 )
+ PORT_INCLUDE(galaxian)
+
+ PORT_MODIFY("IN1")
+ PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!1,!2")
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) )
+
+ PORT_MODIFY("IN2")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:!3,!4")
+ PORT_DIPSETTING( 0x01, "4000" )
+ PORT_DIPSETTING( 0x02, "5000" )
+ PORT_DIPSETTING( 0x03, "7000" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:!5")
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x04, "5" )
+ PORT_DIPUNUSED( 0x08, 0x00 ) PORT_DIPLOCATION("SW1:!6")
INPUT_PORTS_END
@@ -3847,7 +4011,7 @@ static INPUT_PORTS_START( atlantib )
INPUT_PORTS_END
-static INPUT_PORTS_START( devilfsg )
+static INPUT_PORTS_START( devilfshg )
PORT_INCLUDE(pacmanbl)
PORT_MODIFY("IN0")
@@ -6995,6 +7159,30 @@ static INPUT_PORTS_START( guttangt )
INPUT_PORTS_END
+static INPUT_PORTS_START( sbhoei )
+ PORT_INCLUDE(galaxian)
+
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DPSW:!1")
+ PORT_DIPSETTING( 0x40, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Difficult ) )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_MODIFY("IN2")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DPSW:!2,!3")
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DPSW:!4,!5")
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C ) )
+INPUT_PORTS_END
+
+
/*************************************
*
* Graphics layouts
@@ -7306,6 +7494,12 @@ void galaxian_state::mandingarf(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mandingarf_map);
}
+void galaxian_state::mandinka(machine_config &config)
+{
+ scramble_base(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mandinka_map);
+}
+
void galaxian_state::pacmanbl(machine_config &config)
{
galaxian(config);
@@ -7330,7 +7524,7 @@ void tenspot_state::tenspot(machine_config &config)
m_gfxdecode->set_info(gfx_tenspot);
}
-void galaxian_state::devilfsg(machine_config &config)
+void galaxian_state::devilfshg(machine_config &config)
{
pacmanbl(config);
@@ -7955,6 +8149,34 @@ void galaxian_state::mimonscr(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mimonscr_map);
}
+void sbhoei_state::sbhoei(machine_config &config)
+{
+ galaxian_base(config);
+
+ // basic machine hardware
+ m_maincpu->set_addrmap(AS_PROGRAM, &sbhoei_state::sbhoei_map);
+
+ WATCHDOG_TIMER(config.replace(), "watchdog").set_vblank_count("screen", 20);
+
+ I8039(config, m_8039, 4_MHz_XTAL);
+ m_8039->set_addrmap(AS_PROGRAM, &sbhoei_state::sbhoei_sound_map);
+ m_8039->set_addrmap(AS_IO, &sbhoei_state::sbhoei_sound_io_map);
+ m_8039->p1_in_cb().set(FUNC(sbhoei_state::p1_r));
+ m_8039->p2_out_cb().set(FUNC(sbhoei_state::p2_w));
+ m_8039->t1_in_cb().set(m_sp0250, FUNC(sp0250_device::drq_r));
+ m_8039->bus_out_cb().set(m_sp0250, FUNC(sp0250_device::write));
+
+ m_palette->set_init(FUNC(sbhoei_state::sbhoei_palette));
+
+ // sound hardware
+ GENERIC_LATCH_8(config, m_soundlatch);
+
+ SP0250(config, m_sp0250, 3.12_MHz_XTAL).add_route(ALL_OUTPUTS, "speaker", 1.0);
+
+ SBHOEI_SOUND(config, "cust", 0);
+}
+
+
/*
Quaak (Frogger bootleg)
@@ -8513,6 +8735,18 @@ void guttangt_state::init_guttangts3()
romdata[i] = buf[i ^ 0xff];
}
+void sbhoei_state::init_sbhoei()
+{
+ common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, nullptr);
+
+ m_extend_tile_info_ptr = extend_tile_info_delegate(&sbhoei_state::sbhoei_extend_tile_info, this);
+ m_extend_sprite_info_ptr = extend_sprite_info_delegate(&sbhoei_state::sbhoei_extend_sprite_info, this);
+
+ m_soundbank->configure_entries(0, 16, memregion("sbhoei_sound_rom")->base(), 0x0100);
+ m_soundbank->set_entry(8);
+}
+
+
/*************************************
*
* Moon Cresta-derived games
@@ -8573,6 +8807,20 @@ void galaxian_state::init_pacmanbl()
space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8smo_delegate(*this, FUNC(galaxian_state::artic_gfxbank_w)));
}
+void galaxian_state::init_devilfshg()
+{
+ init_galaxian();
+
+ // descramble address lines
+ uint8_t *rom = memregion("maincpu")->base();
+ const size_t len = memregion("maincpu")->bytes();
+
+ std::vector<uint8_t> buf(len);
+ memcpy(&buf[0], rom, len);
+ for (int i = 0; i < len; i++)
+ rom[i] = buf[(i & ~0x1f) | bitswap<5>(i,1,0,3,4,2)];
+}
+
uint8_t tenspot_state::dsw_read()
{
if (m_current_game < m_game_dsw.size())
@@ -9159,6 +9407,7 @@ void namenayo_state::init_namenayo()
m_extend_sprite_info_ptr = extend_sprite_info_delegate(&namenayo_state::namenayo_extend_sprite_info, this);
}
+
/*************************************
*
* ROM definitions
@@ -9896,7 +10145,7 @@ ROM_START( luctoday )
ROM_LOAD( "ltchar2.bin", 0x0000, 0x0800, CRC(8cd73bdc) SHA1(6174f7347d2c96f9c5074bc0da5a370c9b07461b))
ROM_LOAD( "ltchar1.bin", 0x0800, 0x0800, CRC(b5ba9946) SHA1(7222cbe8c41ca74b214f4dd5439bf69d90f4644e))
- ROM_REGION( 0x0020, "proms", 0 )//This may not be the correct prom
+ ROM_REGION( 0x0020, "proms", 0 ) // This may not be the correct prom
ROM_LOAD( "74s288.ch", 0x0000, 0x0020, BAD_DUMP CRC(24652bc4) SHA1(d89575f3749c75dc963317fe451ffeffd9856e4d))
ROM_END
@@ -10090,6 +10339,24 @@ ROM_START( redufob2 )
ROM_LOAD( "5049.6l", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
ROM_END
+ROM_START( redufob3 ) // this bootleg has 0x3800 of program ROMs like the original. It seems to be halfway between the original and redufob2
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "1.rom1", 0x0000, 0x0800, CRC(ad9930d3) SHA1(63a892670e40257539a79e12caabe341509dc73e) )
+ ROM_LOAD( "2.rom2", 0x0800, 0x0800, CRC(65d1792d) SHA1(f644c8999584f6368a5fa235a92b89d13e1cd9e2) )
+ ROM_LOAD( "3.rom3", 0x1000, 0x0800, CRC(e1030d1c) SHA1(80640fbbfa7f84c016366b1084e7f8a7acdcd440) )
+ ROM_LOAD( "4.rom4", 0x1800, 0x0800, CRC(d801b80d) SHA1(b76173fcb022b3c443e1731e13d92212ff43408d) )
+ ROM_LOAD( "5.rom5", 0x2000, 0x0800, CRC(f1e46275) SHA1(9e08dbaae4f0f944cc9613090c60000bf2eeb869) )
+ ROM_LOAD( "6.rom6", 0x2800, 0x0800, CRC(98513f8a) SHA1(5a9fdf8e50ce70e25399730aa5f4fe8854a70992) )
+ ROM_LOAD( "7.rom7", 0x3000, 0x0800, CRC(fd07d811) SHA1(6b968a7ce452f76a8d26fe694aa4ea6b16e8b6fa) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "gfx.1h", 0x0000, 0x0800, CRC(8a422b0d) SHA1(b886157518f73e7115a225ba230e456179f6e18f) )
+ ROM_LOAD( "gfx.1k", 0x0800, 0x0800, CRC(1eb84cb1) SHA1(08f360802a90039c0499a1417d06b6eb5f89d67e) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "82s123.6l", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
+ROM_END
+
ROM_START( exodus )
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "exodus1.bin", 0x0000, 0x0800, CRC(5dfe65e1) SHA1(5f1ce289b3c98a89d61d4dea952b4b8888d92ed7) )
@@ -10344,7 +10611,7 @@ ROM_START( gteikokub2 )
ROM_LOAD( "l06_prom.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
ROM_END
-ROM_START( gteikokub3 ) // still has the IREM copyright, but the PCB is a bootleg with ROMs labeled "Honly Electronics"
+ROM_START( gteikokub3 ) // still has the IREM copyright, but the PCB is a bootleg with ROMs labeled "Honly Electronics"
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "g1.a3", 0x0000, 0x0800, CRC(d975af10) SHA1(a2e2a36a75db8fd09441308b08b6ae073c68b8cf) )
ROM_LOAD( "g0.a2", 0x0800, 0x0800, CRC(378aba50) SHA1(713c98e76e386fe47adde79955ab15f04c1a0ab5) )
@@ -10494,8 +10761,31 @@ ROM_START( skyraidr )
ROM_END
-ROM_START( devilfsg )
- ROM_REGION( 0x10000, "maincpu", 0 )
+ROM_START( devilfshg ) // Artic Multi-System, CPU enclosed in epoxy block
+ ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_LOAD( "df1", 0x0000, 0x0800, CRC(5af8db02) SHA1(e2b4c75b1e23f38b640881359aab071c3f26527e) )
+ ROM_LOAD( "df2", 0x0800, 0x0800, CRC(6e4eb2af) SHA1(4a1c2d5683ddec66e9eec28c853d624c7fadade9) )
+ ROM_LOAD( "df3", 0x1000, 0x0800, CRC(ef37cc08) SHA1(547fb75dc46c1fbcc0677d6e970ebd3e0af5d921) )
+ ROM_LOAD( "df4", 0x1800, 0x0800, CRC(d344706f) SHA1(d5d1890cbae342b277de3da123cc3673a0419fb0) )
+ ROM_LOAD( "df5", 0x2000, 0x0800, CRC(ab9f2f7c) SHA1(a22027c663adb6321875589183071bd069949c97) )
+ ROM_LOAD( "df6", 0x2800, 0x0800, CRC(5681d1f9) SHA1(c2a7c37901fc6c0d7ac1aa663800afc74c288a15) )
+ ROM_LOAD( "df7", 0x3000, 0x0800, CRC(16a4b6c3) SHA1(45e4917f55ab915b676860a88ed75c9334a2dcc6) )
+ ROM_LOAD( "df8", 0x3800, 0x0800, CRC(236fd69d) SHA1(4681d4621dbadfb52368399ecd557086384fad13) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "df12", 0x0000, 0x0800, CRC(aa62441d) SHA1(04b61b0e660dba962bf7f18ab5b37b0d8edd8534) )
+ ROM_LOAD( "df11", 0x0800, 0x0800, CRC(12a1f15d) SHA1(e6666abaa92bb443760bf8e1746a11196bc30322) )
+
+ ROM_REGION( 0x1000, "gfx2", 0 )
+ ROM_LOAD( "df10", 0x0000, 0x0800, CRC(5da97ccf) SHA1(653c5df3ecc895c0aa5275c45c87ac0e38984085) )
+ ROM_LOAD( "df9", 0x0800, 0x0800, CRC(edd41c4c) SHA1(88c1b1f57a64e2cd66975b680a94a1384c08dc31) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "mmi6331.6l", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
+ROM_END
+
+ROM_START( devilfshgb )
+ ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "dfish1.7f", 0x2000, 0x0800, CRC(2ab19698) SHA1(8450981d3cf3fa8abf2fb5487aa98b03a4cf03a1) )
ROM_CONTINUE( 0x0000, 0x0800 )
ROM_LOAD( "dfish2.7h", 0x2800, 0x0800, CRC(4e77f097) SHA1(aeaa5ff210ccbbe77114edf5dee992d2720636ae) )
@@ -11948,7 +12238,6 @@ void galaxian_state::init_ckonggx()
for (int i = 0; i < 88; i++)
{
memcpy(&buffer[i*0x100], rom+ckonggx_remap[i], 0x100);
-
}
memcpy(rom, &buffer[0], 0x5800);
@@ -13443,6 +13732,29 @@ ROM_START( mandingac )
ROM_LOAD( "82s123.bin", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // 82s123
ROM_END
+ROM_START( mandinka )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1.bin", 0x0000, 0x0800, CRC(ad332c55) SHA1(4f33485e0247cc8e9e9c6cb93a55ba08506d063f) )
+ ROM_LOAD( "2.bin", 0x0800, 0x0800, CRC(2cb90c95) SHA1(b1721165395018a02e718d7d5e5dfa8ab794546b) )
+ ROM_LOAD( "3.bin", 0x1000, 0x0800, CRC(5c7c74d4) SHA1(a321508525d4cf774924dd3e6ca9688d9d3cc4f6) )
+ ROM_LOAD( "4.bin", 0x1800, 0x0800, CRC(57fe5a01) SHA1(4c4378f5e392549a85a6f52cf27719887315e36d) )
+ ROM_LOAD( "no_id_2.bin", 0x2000, 0x0800, CRC(83b91651) SHA1(9c514743da47a92deea39c7a41f032d5dc0f5700) )
+ ROM_LOAD( "6.bin", 0x2800, 0x0800, CRC(33dfca98) SHA1(ef15742674ad8f6c27dd9fd67fc0e8335699ad1b) )
+ ROM_LOAD( "7.bin", 0x3000, 0x0800, CRC(b6b835e3) SHA1(ba14e664dbaa0e4e8b4e55e732ba7581afe4c9a7) )
+ ROM_LOAD( "no_id_1.bin", 0x3800, 0x0800, CRC(d6721955) SHA1(725cacc8486f197e2a88ee1bbe9af01c792772a7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "1a_sonido.bin", 0x0000, 0x1000, NO_DUMP ) // missing
+ ROM_LOAD( "2b_sonido.bin", 0x1000, 0x1000, BAD_DUMP CRC(e8af1d77) SHA1(d05d7c015962989651a90f4bf9e64cd98c2ddd38) ) // FIXED BITS (xxx1xxxx)
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "9.bin", 0x0000, 0x0800, BAD_DUMP CRC(cba03b26) SHA1(9aa307db69bac1f7b14194b68ea969a547e6f92f) ) // bitrot
+ ROM_LOAD( "10.bin", 0x0800, 0x0800, CRC(3029f94f) SHA1(3b432b42e79f8b0a7d65e197f373a04e3c92ff20) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "6e.bin", 0x0000, 0x0020, BAD_DUMP CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // Not dumped on this set
+ROM_END
+
ROM_START( olmandingo )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "olmandingo_1.bin", 0x0000, 0x0800, CRC(b5b9fcd9) SHA1(7a134de30041ac18521274f330eb4afe349da2db) )
@@ -15191,6 +15503,72 @@ ROM_START( guttangts3 )
ROM_LOAD( "pal16l8cn.11j", 0x000, 0x117, BAD_DUMP CRC(c75e94db) SHA1(3ecf73884691c44e211b1cfaead3d79baa394b7b) ) // Bruteforced and untested
ROM_END
+
+ROM_START( sbhoei )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "4764.4k", 0x0000, 0x2000, CRC(d88f86cc) SHA1(9f284ee50caf3c64bd04a79a798de620348881bc) )
+ ROM_RELOAD( 0x4000, 0x0800 )
+ ROM_LOAD( "a.1k", 0x0000, 0x0800, CRC(a72175a4) SHA1(42cce21992b24cd1264426141311e310b89f6c23) )
+ ROM_LOAD( "b.2k", 0x0800, 0x0800, CRC(133259bd) SHA1(d85daad4b8ff5a662bc51e5b46a5b7a755e3636f) )
+ ROM_LOAD( "c.3k", 0x1000, 0x0800, CRC(d35b1434) SHA1(d3de38424cea10ca7c122118cc3fb6c900d62592) )
+ ROM_LOAD( "d.5k", 0x2000, 0x0800, CRC(ff2cbd5a) SHA1(ad82b04b2cd8b2f71e62e011f8def6d201293a7b) )
+ ROM_LOAD( "e.1j", 0x2800, 0x0800, CRC(6fa0993f) SHA1(0d8c79c6fa9f9a9b3e8f6c9c2fdcc572fe126419) )
+ ROM_LOAD( "f.2j", 0x3000, 0x0800, CRC(a90ac60a) SHA1(d53447c1c54be5b372cd77b876b5f8f6def433d7) )
+ ROM_LOAD( "g.3j", 0x3800, 0x0800, CRC(b7caf17f) SHA1(1c7b5a80ad71d7974460c598f02bc6f16511b952) )
+ ROM_LOAD( "h.5j", 0x4800, 0x0800, CRC(1f8841d2) SHA1(1d53357fb22ec22df4b6faa8122be521a3c7bbeb) )
+ ROM_LOAD( "i.1h", 0x5000, 0x0800, CRC(b24a7a88) SHA1(b463711a6b269985a5a3231bc502136d4a034ad7) )
+
+ ROM_REGION( 0x0800, "i8039", 0 ) // speech board
+ ROM_LOAD( "sound_h.ic3", 0x0000, 0x0800, CRC(21968996) SHA1(6b7b8d831689fe14f3040db04e06168311aa8a18) )
+
+ ROM_REGION( 0x1000, "sbhoei_sound_rom", 0 ) // speech board
+ ROM_LOAD( "sound_h.ic1", 0x0000, 0x1000, CRC(74383aac) SHA1(0289e85817f7f3d9e921002b465a23934ee61ade) )
+
+ ROM_REGION( 0x3000, "gfx1", 0 )
+ ROM_LOAD( "b.15j", 0x0000, 0x0800, CRC(df47d042) SHA1(163a016ac63159c66dfb097e99fc058c9a9c7987) )
+ ROM_LOAD( "d.14j", 0x0800, 0x0800, CRC(5f08bd01) SHA1(76cbbae14187fa464e74b2ab25be5bf7310e858d) )
+ ROM_LOAD( "f.13j", 0x1000, 0x0800, CRC(ac234ff4) SHA1(30e02bad8884f357444c4df2cb79e2b678634775) )
+ ROM_LOAD( "a.15k", 0x1800, 0x0800, CRC(8e05141f) SHA1(3a507c24533290d532e7cfb82d93fa73956f5b20) )
+ ROM_LOAD( "c.14k", 0x2000, 0x0800, CRC(c15ac36f) SHA1(dbe3cf6017c263413c770040d659612c3954be73) )
+ ROM_LOAD( "e.13k", 0x2800, 0x0800, CRC(a7bb7c92) SHA1(ef356c10793d02d4f80582dc429340f682f2c40c) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "colrom.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
+ROM_END
+
+ROM_START( sbhoeia )
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "4764.4k", 0x0000, 0x2000, CRC(d88f86cc) SHA1(9f284ee50caf3c64bd04a79a798de620348881bc) )
+ ROM_RELOAD( 0x4000, 0x0800 )
+ ROM_LOAD( "s2-a.1k", 0x0000, 0x0800, CRC(b07fa2dd) SHA1(ec2b5caa6e57e3f3ae37979af3d104e602e1fe92) )
+ ROM_LOAD( "s2-b.2k", 0x0800, 0x0800, CRC(42ce5b91) SHA1(5048e0dff416a43e47879d30f7eac1861a49e4f4) )
+ ROM_LOAD( "s2-c.3k", 0x1000, 0x0800, CRC(08fd6af2) SHA1(9c0f1eabe508e7f7c6f5c124289226fd6098af32) )
+ ROM_LOAD( "s2-d.5k", 0x2000, 0x0800, CRC(62ea78ef) SHA1(41323b84242152a6b15f08c160d2f37cb4ef58a6) )
+ ROM_LOAD( "s2-e.1j", 0x2800, 0x0800, CRC(7553955a) SHA1(f22e8a6d4399fafd5e966342bf957c7678d678a8) )
+ ROM_LOAD( "s2-f.2j", 0x3000, 0x0800, CRC(54d7ef11) SHA1(635eaf6cc93af36d858302abc98481b251fed15d) )
+ ROM_LOAD( "s2-g.3j", 0x3800, 0x0800, CRC(9609943b) SHA1(2ffb86d8f2043aaec86aeaa1044cbc50a3c0de97) )
+ ROM_LOAD( "s2-h.5j", 0x4800, 0x0800, CRC(bf237239) SHA1(77ca35776918183d37db5110d10f5493ec4bb9b6) )
+ ROM_LOAD( "i.1h", 0x5000, 0x0800, CRC(b24a7a88) SHA1(b463711a6b269985a5a3231bc502136d4a034ad7) )
+
+ ROM_REGION( 0x0800, "i8039", 0 ) // speech board
+ ROM_LOAD( "sound_h.ic3", 0x0000, 0x0800, CRC(21968996) SHA1(6b7b8d831689fe14f3040db04e06168311aa8a18) )
+
+ ROM_REGION( 0x1000, "sbhoei_sound_rom", 0 ) // speech board
+ ROM_LOAD( "sound_h.ic1", 0x0000, 0x1000, CRC(74383aac) SHA1(0289e85817f7f3d9e921002b465a23934ee61ade) )
+
+ ROM_REGION( 0x3000, "gfx1", 0 )
+ ROM_LOAD( "b.15j", 0x0000, 0x0800, CRC(df47d042) SHA1(163a016ac63159c66dfb097e99fc058c9a9c7987) )
+ ROM_LOAD( "d.14j", 0x0800, 0x0800, CRC(5f08bd01) SHA1(76cbbae14187fa464e74b2ab25be5bf7310e858d) )
+ ROM_LOAD( "f.13j", 0x1000, 0x0800, CRC(ac234ff4) SHA1(30e02bad8884f357444c4df2cb79e2b678634775) )
+ ROM_LOAD( "a.15k", 0x1800, 0x0800, CRC(8e05141f) SHA1(3a507c24533290d532e7cfb82d93fa73956f5b20) )
+ ROM_LOAD( "c.14k", 0x2000, 0x0800, CRC(c15ac36f) SHA1(dbe3cf6017c263413c770040d659612c3954be73) )
+ ROM_LOAD( "e.13k", 0x2800, 0x0800, CRC(a7bb7c92) SHA1(ef356c10793d02d4f80582dc429340f682f2c40c) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "colrom.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
+ROM_END
+
+
/*************************************
*
* Game drivers
@@ -15248,7 +15626,6 @@ GAME( 1980, astrians, galaxian, galaxian, swarm, galaxian_state, init_
GAME( 19??, tst_galx, galaxian, galaxian, galaxian, galaxian_state, init_galaxian, ROT90, "<unknown>", "Galaxian Test ROM", MACHINE_SUPPORTS_SAVE )
-
// Other games on basic galaxian hardware
GAME( 1981, blkhole, 0, galaxian, blkhole, galaxian_state, init_galaxian, ROT90, "TDS & MINTS", "Black Hole", MACHINE_SUPPORTS_SAVE )
GAME( 1982, orbitron, 0, galaxian, orbitron, galaxian_state, init_galaxian, ROT270, "Comsoft (Signatron USA license)", "Orbitron", MACHINE_SUPPORTS_SAVE ) // there's a Comsoft copyright in one of the roms, and the gameplay is the same as Victory below
@@ -15272,6 +15649,7 @@ GAME( 1981, spactrai, warofbug, spactrai, spactrai, galaxian_state, init_
GAME( 1981, redufo, 0, galaxian, redufo, galaxian_state, init_nolock, ROT270, "Artic", "Defend the Terra Attack on the Red UFO", MACHINE_SUPPORTS_SAVE ) // is this the original?
GAME( 1981, redufob, redufo, galaxian, redufob, galaxian_state, init_nolock, ROT90, "bootleg", "Defend the Terra Attack on the Red UFO (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // rev A?
GAME( 1981, redufob2, redufo, galaxian, redufob, galaxian_state, init_nolock, ROT90, "bootleg", "Defend the Terra Attack on the Red UFO (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, redufob3, redufo, galaxian, redufob3, galaxian_state, init_nolock, ROT90, "bootleg", "Defend the Terra Attack on the Red UFO (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 19??, exodus, redufo, galaxian, redufo, galaxian_state, init_nolock, ROT90, "bootleg? (Subelectro)", "Exodus (bootleg?)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, tdpgal, 0, galaxian, tdpgal, galaxian_state, init_nolock, ROT90, "Design Labs / Thomas Automatics", "Triple Draw Poker", MACHINE_SUPPORTS_SAVE )
GAME( 1979, kamakazi3, galaxian, galaxian, superg, galaxian_state, init_nolock, ROT90, "hack", "Kamakazi III ('Super Galaxians' hack)", MACHINE_SUPPORTS_SAVE ) // Hack of a hack (superg)
@@ -15316,7 +15694,8 @@ GAME( 1981, atlantisb, atlantis, galaxian, atlantib, galaxian_state, init_
GAME( 1982, tenspot, 0, tenspot, tenspot, tenspot_state, init_tenspot, ROT270, "Thomas Automatics", "Ten Spot", MACHINE_NOT_WORKING ) // Work out how menu works
// Separate tile/sprite ROMs, plus INT instead of NMI
-GAME( 1984, devilfsg, devilfsh, devilfsg, devilfsg, galaxian_state, init_galaxian, ROT270, "Vision / Artic", "Devil Fish (Galaxian hardware, bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, devilfshg, devilfsh, devilfshg, devilfshg, galaxian_state, init_devilfshg, ROT270, "Artic", "Devil Fish (Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, devilfshgb, devilfsh, devilfshg, devilfshg, galaxian_state, init_galaxian, ROT270, "bootleg (Vision)", "Devil Fish (Galaxian hardware, bootleg)", MACHINE_SUPPORTS_SAVE ) // unencrypted
// Sound hardware replaced with AY8910
// We're missing the original set by Taito do Brasil, we only have the bootlegs
@@ -15476,6 +15855,7 @@ GAME( 1982, amigo2, amidar, amigo2, amidaru, galaxian_state, init_
GAME( 1982, amidars, amidar, scramble, amidars, galaxian_state, init_scramble, ROT90, "Konami", "Amidar (Scramble hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, mandinga, amidar, scramble, amidars, galaxian_state, init_mandinga, ROT90, "bootleg (Artemi)", "Mandinga (Artemi bootleg of Amidar)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // color PROM needs bitswap<8> on addressing, reference: http://www.youtube.com/watch?v=6uGK4AZxV2U
GAME( 1982, mandingaeg, amidar, scramble, amidars, galaxian_state, init_mandingaeg, ROT90, "bootleg (Electrogame S.A.)", "Mandinga (Electrogame S.A. bootleg of Amidar)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, mandinka, amidar, mandinka, amidar, galaxian_state, init_scramble, ROT90, "bootleg", "Mandinka (bootleg of Amidar)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // bad / missing audio CPU ROMs and color PROM
GAME( 1982, mandingarf, amidar, mandingarf, mandingarf, galaxian_state, init_galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Mandanga (bootleg of Mandinga on Galaxian hardware, set 1)", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // assume same issue as mandinga
GAME( 1982, mandingac, amidar, mandingarf, mandingarf, galaxian_state, init_galaxian, ROT90, "bootleg (Centromatic)", "Mandanga (bootleg of Mandinga on Galaxian hardware, set 2)", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // assume same issue as mandinga
GAME( 1982, olmandingo, amidar, mandingarf, olmandingo, galaxian_state, init_galaxian, ROT90, "bootleg", "Olivmandingo (Spanish bootleg of Mandinga on Galaxian hardware, set 1)", MACHINE_SUPPORTS_SAVE )
@@ -15556,10 +15936,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 )
+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)
@@ -15573,7 +15953,6 @@ GAME( 1982, anteatergg, anteater, anteatergg, anteatergg, galaxian_state, init_
GAME( 1982, calipso, 0, scobra, calipso, galaxian_state, init_calipso, ROT90, "Tago Electronics", "Calipso", MACHINE_SUPPORTS_SAVE )
-
/*
Lost Tomb
CPU/Video Board: A969 (Has various wire mods)
@@ -15586,5 +15965,9 @@ GAME( 1984, spdcoin, 0, scobra, spdcoin, galaxian_state, init_
GAME( 1985, superbon, 0, scobra, superbon, galaxian_state, init_superbon, ROT90, "Signatron USA", "Agent Super Bond (Super Cobra conversion)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
-// single player reference: https://www.nicovideo.jp/watch/sm16782405
+// Namennayo - single player reference: https://www.nicovideo.jp/watch/sm16782405
GAME( 1982, namenayo, 0, namenayo, namenayo, namenayo_state, init_namenayo, ROT0, "Cat's", "Namennayo (Japan)", MACHINE_SUPPORTS_SAVE )
+
+// Hoei Space Battle
+GAME( 1980, sbhoei, 0, sbhoei, sbhoei, sbhoei_state, init_sbhoei, ROT90, "Hoei", "Space Battle (Hoei, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, sbhoeia, sbhoei, sbhoei, sbhoei, sbhoei_state, init_sbhoei, ROT90, "Hoei", "Space Battle (Hoei, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )