summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/alpha68k_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/alpha68k_i.cpp')
-rw-r--r--src/mame/drivers/alpha68k_i.cpp545
1 files changed, 0 insertions, 545 deletions
diff --git a/src/mame/drivers/alpha68k_i.cpp b/src/mame/drivers/alpha68k_i.cpp
deleted file mode 100644
index 1da3ac3ef21..00000000000
--- a/src/mame/drivers/alpha68k_i.cpp
+++ /dev/null
@@ -1,545 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Pierpaolo Prazzoli, Bryan McPhail, Stephane Humbert, Angelo Salese
-/***************************************************************************
-
- SNK/Alpha 68000 I board based games
-
- derived from alpha68k.cpp
-
- TODO:
- - Both POST screens are X offset by a large margin,
- i.e. Paddle Mania draws a middle line there, which isn't shown on real HW.
- - Paddle Mania: ranking screen is unreadable, maybe
-
-***************************************************************************/
-
-#include "emu.h"
-#include "includes/alpha68k.h"
-
-/*
- *
- * Video Section
- *
- */
-
-// TODO: document, also awfully similar to the II board but with proms
-void alpha68k_I_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int c, int d)
-{
- gfx_element *gfx = m_gfxdecode->gfx(0);
-
- for (int offs = 0; offs < 0x400; offs += 0x20)
- {
- int mx = m_spriteram[offs + c];
- int my = (m_yshift - (mx >> 8)) & 0xff;
- mx &= 0xff;
-
- for (int i = 0; i < 0x20; i++)
- {
- const u16 data = m_spriteram[offs + d + i];
- const u16 tile = data & 0x3fff;
- const bool fy = data & 0x4000;
- const u8 color = m_color_proms[tile << 1 | data >> 15];
-
- gfx->transpen(bitmap,cliprect, tile, color, 0, fy, mx, my, 0);
-
- my = (my + 8) & 0xff;
- }
- }
-}
-
-u32 alpha68k_I_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- bitmap.fill(m_palette->black_pen(), cliprect);
-
- /* This appears to be correct priority */
- draw_sprites(bitmap, cliprect, 2, 0x0800);
- draw_sprites(bitmap, cliprect, 3, 0x0c00);
- draw_sprites(bitmap, cliprect, 1, 0x0400);
- return 0;
-}
-
-/*
- *
- * Read/Write handler overrides
- *
- */
-
-void thenextspace_state::tnextspc_soundlatch_w(u8 data)
-{
- m_soundlatch->write(data);
- m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
-}
-
-void thenextspace_state::tnextspc_coin_counters_w(offs_t offset, u16 data)
-{
- machine().bookkeeping().coin_counter_w(offset, data & 0x01);
-}
-
-void thenextspace_state::tnextspc_unknown_w(offs_t offset, u16 data)
-{
- logerror("tnextspc_unknown_w : PC = %04x - offset = %04x - data = %04x\n", m_maincpu->pc(), offset, data);
- if (offset == 0)
- m_flipscreen = data & 0x100;
-}
-
-// TODO: check me
-u16 thenextspace_state::sound_cpu_r(){ return 1; }
-
-
-/*
- *
- * Address Maps
- *
- */
-
-void paddlemania_state::main_map(address_map &map)
-{
- map(0x000000, 0x03ffff).rom(); // main program
- map(0x080000, 0x083fff).ram(); // work RAM
- map(0x100000, 0x103fff).ram().share("spriteram"); // video RAM
- map(0x180000, 0x180001).portr("IN3").nopw(); // LSB: DSW0, MSB: watchdog(?)
- map(0x180008, 0x180009).portr("IN4"); // LSB: DSW1
- map(0x300000, 0x300001).portr("IN0"); // joy1, joy2
- map(0x340000, 0x340001).portr("IN1"); // coin, start, service
- map(0x380000, 0x380001).portr("IN2");
- map(0x380001, 0x380001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // LSB: sound latch write and RST38 trigger, joy3, joy4
-}
-
-void thenextspace_state::main_map(address_map &map)
-{
- map(0x000000, 0x03ffff).rom();
- map(0x070000, 0x073fff).ram();
- map(0x0a0000, 0x0a3fff).ram().share("spriteram");
- map(0x0d0000, 0x0d0001).nopw(); // unknown write port (0)
- map(0x0e0000, 0x0e0001).portr("P1");
- map(0x0e0002, 0x0e0003).portr("P2");
- map(0x0e0004, 0x0e0005).portr("SYSTEM");
- map(0x0e0006, 0x0e0007).nopw(); // unknown write port (0)
- map(0x0e0008, 0x0e0009).portr("DSW1");
- map(0x0e000a, 0x0e000b).portr("DSW2");
- map(0x0e000e, 0x0e000f).nopw(); // unknown write port (0)
- map(0x0e0018, 0x0e0019).r(FUNC(thenextspace_state::sound_cpu_r));
- map(0x0f0000, 0x0f0001).w(FUNC(thenextspace_state::tnextspc_unknown_w));
- map(0x0f0002, 0x0f0005).w(FUNC(thenextspace_state::tnextspc_coin_counters_w));
- map(0x0f0009, 0x0f0009).w(FUNC(thenextspace_state::tnextspc_soundlatch_w));
-}
-
-void paddlemania_state::sound_map(address_map &map)
-{
- map(0x0000, 0x9fff).rom();
- map(0xe000, 0xe000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w));
- map(0xe800, 0xe800).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
- map(0xec00, 0xec00).w("ymsnd", FUNC(ym3812_device::write_port_w));
- map(0xf000, 0xf7ff).ram();
- map(0xfc00, 0xfc00).ram(); // unknown port
-}
-
-void thenextspace_state::sound_map(address_map &map)
-{
- map(0x0000, 0xefff).rom();
- map(0xf000, 0xf7ff).ram();
- map(0xf800, 0xf800).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w));
-}
-
-void thenextspace_state::sound_iomap(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
- map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
- map(0x3b, 0x3b).nopr(); // unknown read port
- map(0x3d, 0x3d).nopr(); // unknown read port
- map(0x7b, 0x7b).nopr(); // unknown read port
-}
-
-/*
- *
- * Gfx layout Defs
- *
- */
-
-// TODO: merge with base driver somehow
-static const gfx_layout charlayout =
-{
- 8,8, /* 8x8 */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { STEP4(0,4) },
- { STEP4(8*4*4+3,-1), STEP4(3,-1) },
- { STEP8(0,4*4) },
- 32*8 /* every char takes 32 consecutive bytes */
-};
-
-static GFXDECODE_START( gfx_alpha68k_I )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
-GFXDECODE_END
-
-/*
- *
- * Input Defs
- *
- */
-
-// TODO: deduplicate these
-#ifndef ALPHA68K_PLAYER_INPUT_LSB
-#define ALPHA68K_PLAYER_INPUT_LSB( player, button3, start, active ) \
- PORT_BIT( 0x0001, active, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
- PORT_BIT( 0x0002, active, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
- PORT_BIT( 0x0004, active, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
- PORT_BIT( 0x0008, active, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
- PORT_BIT( 0x0010, active, IPT_BUTTON1 ) PORT_PLAYER(player) \
- PORT_BIT( 0x0020, active, IPT_BUTTON2 ) PORT_PLAYER(player) \
- PORT_BIT( 0x0040, active, button3 ) PORT_PLAYER(player) \
- PORT_BIT( 0x0080, active, start )
-#endif
-
-#ifndef ALPHA68K_PLAYER_INPUT_MSB
-#define ALPHA68K_PLAYER_INPUT_MSB( player, button3, start, active ) \
- PORT_BIT( 0x0100, active, IPT_JOYSTICK_UP ) PORT_PLAYER(player) \
- PORT_BIT( 0x0200, active, IPT_JOYSTICK_DOWN ) PORT_PLAYER(player) \
- PORT_BIT( 0x0400, active, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) \
- PORT_BIT( 0x0800, active, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
- PORT_BIT( 0x1000, active, IPT_BUTTON1 ) PORT_PLAYER(player) \
- PORT_BIT( 0x2000, active, IPT_BUTTON2 ) PORT_PLAYER(player) \
- PORT_BIT( 0x4000, active, button3 ) PORT_PLAYER(player) \
- PORT_BIT( 0x8000, active, start )
-#endif
-
-static INPUT_PORTS_START( paddlema )
- PORT_START("IN0") // (bottom players)
- ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_UNKNOWN, IPT_UNKNOWN, IP_ACTIVE_LOW )
- ALPHA68K_PLAYER_INPUT_MSB( 2, IPT_UNKNOWN, IPT_UNKNOWN, IP_ACTIVE_LOW )
-
- PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Button A (Start)")
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Button B (Start)")
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_SERVICE2 ) // "Test" ?
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN2") // (top players)
- ALPHA68K_PLAYER_INPUT_LSB( 3, IPT_UNKNOWN, IPT_UNKNOWN, IP_ACTIVE_LOW )
- ALPHA68K_PLAYER_INPUT_MSB( 4, IPT_UNKNOWN, IPT_UNKNOWN, IP_ACTIVE_LOW )
-
- PORT_START("IN3") //DSW0
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:8,7")
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_4C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:6,5")
- PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW1:4,3") /* See notes for Game Time / Match Type combos */
- PORT_DIPSETTING( 0x00, "Default Time" )
- PORT_DIPSETTING( 0x20, "+10 Seconds" )
- PORT_DIPSETTING( 0x10, "+20 Seconds" )
- PORT_DIPSETTING( 0x30, "+30 Seconds" )
- PORT_DIPNAME( 0xc0, 0x40, "Match Type" ) PORT_DIPLOCATION("SW1:2,1") /* Styles are for Upright/Table & Single/Dual controls???? */
- PORT_DIPSETTING( 0x80, "A to B" ) /* Manual shows "Upright Sytle B" */
- PORT_DIPSETTING( 0x00, "A to C" ) /* Manual shows "Upright Sytle A" */
- PORT_DIPSETTING( 0x40, "A to E" ) /* Manual shows "Table Sytle C" */
-// PORT_DIPSETTING( 0xc0, "A to B" ) /* Manual shows "Table Sytle D" */
-
- PORT_START("IN4") // DSW1
- PORT_SERVICE_DIPLOC( 0x01, IP_ACTIVE_HIGH, "SW2:8" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x01, "SW2:7" ) /* Listed as "Unused" */
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x01, "SW2:6" ) /* Listed as "Unused" */
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x01, "SW2:5" ) /* Listed as "Unused" */
- PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) PORT_DIPLOCATION("SW2:4,3")
- PORT_DIPSETTING( 0x20, "Demo Sounds Off" )
- PORT_DIPSETTING( 0x00, "Demo Sounds On" )
- PORT_DIPSETTING( 0x10, "Win Match Against CPU (Cheat)")
- PORT_DIPSETTING( 0x30, "Freeze" )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Language ) ) PORT_DIPLOCATION("SW2:2") /* Manual shows "Off" for this dipswitch */
- PORT_DIPSETTING( 0x00, DEF_STR( English ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Japanese ) )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:1")
- PORT_DIPSETTING( 0x80, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( tnextspc )
- PORT_START("P1")
- ALPHA68K_PLAYER_INPUT_LSB( 1, IPT_UNKNOWN, IPT_START1, IP_ACTIVE_LOW )
-
- PORT_START("P2")
- ALPHA68K_PLAYER_INPUT_LSB( 2, IPT_UNKNOWN, IPT_START2, IP_ACTIVE_LOW )
-
- PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW1:2" ) /* Listed as "Unused" */
- PORT_DIPNAME( 0x04, 0x04, "Additional Bonus Life" ) PORT_DIPLOCATION("SW1:3")
- PORT_DIPSETTING( 0x04, "2nd Extend ONLY" )
- PORT_DIPSETTING( 0x00, "Every Extend" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW1:4" ) /* Listed as "Unused" */
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:5,6")
- PORT_DIPSETTING( 0x30, "A 1C/1C B 1C/2C" )
- PORT_DIPSETTING( 0x20, "A 2C/1C B 1C/3C" )
- PORT_DIPSETTING( 0x10, "A 3C/1C B 1C/5C" )
- PORT_DIPSETTING( 0x00, "A 4C/1C B 1C/6C" )
- PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:7,8")
- PORT_DIPSETTING( 0xc0, "2" )
- PORT_DIPSETTING( 0x80, "3" )
- PORT_DIPSETTING( 0x40, "4" )
- PORT_DIPSETTING( 0x00, "5" )
-
- PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3") PORT_CONDITION("DSW2",0x08,EQUALS,0x08)
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x04, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, "Game Mode" ) PORT_DIPLOCATION("SW2:3") PORT_CONDITION("DSW2",0x08,EQUALS,0x00)
- PORT_DIPSETTING( 0x00, "Freeze" )
- PORT_DIPSETTING( 0x04, "Infinite Lives (Cheat)")
- PORT_DIPNAME( 0x08, 0x08, "SW2:3 Demo Sound/Game Mode" ) PORT_DIPLOCATION("SW2:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Demo_Sounds ) )
- PORT_DIPSETTING( 0x00, "Game Mode" )
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
- PORT_DIPSETTING( 0x30, "100000 200000" )
- PORT_DIPSETTING( 0x20, "150000 300000" )
- PORT_DIPSETTING( 0x10, "300000 500000" )
- PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:7")
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
- PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
-INPUT_PORTS_END
-
-/*
- *
- * Machine Config
- *
- */
-
-void alpha68k_I_state::base_config(machine_config &config)
-{
- MCFG_MACHINE_START_OVERRIDE(alpha68k_I_state,common)
- MCFG_MACHINE_RESET_OVERRIDE(alpha68k_I_state,common)
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
-
- GENERIC_LATCH_8(config, m_soundlatch);
-
- ym3812_device &ymsnd(YM3812(config, "ymsnd", 4000000));
- ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
- ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
-
-void alpha68k_I_state::video_config(machine_config &config, int yshift)
-{
- /* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- set_screen_raw_params(config);
- m_screen->set_screen_update(FUNC(alpha68k_I_state::screen_update));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_alpha68k_I);
- PALETTE(config, m_palette, FUNC(alpha68k_I_state::palette_init), 1024, 256);
-
- // TODO: add video device here
- m_yshift = yshift;
-}
-
-void paddlemania_state::paddlema(machine_config &config)
-{
- base_config(config);
- /* basic machine hardware */
- M68000(config, m_maincpu, 6000000); /* 24MHz/4? */
- m_maincpu->set_addrmap(AS_PROGRAM, &paddlemania_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(paddlemania_state::irq1_line_hold)); /* VBL */
-
- Z80(config, m_audiocpu, 4000000); // 4Mhz seems to yield the correct tone
- m_audiocpu->set_addrmap(AS_PROGRAM, &paddlemania_state::sound_map);
-
- video_config(config, 0);
-
- m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE);
-}
-
-void thenextspace_state::tnextspc(machine_config &config)
-{
- base_config(config);
- /* basic machine hardware */
- M68000(config, m_maincpu, 9000000); /* Confirmed 18 MHz/2 */
- m_maincpu->set_addrmap(AS_PROGRAM, &thenextspace_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(thenextspace_state::irq1_line_hold)); /* VBL */
-
- Z80(config, m_audiocpu, 4000000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &thenextspace_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &thenextspace_state::sound_iomap);
-
- video_config(config, 1);
-}
-
-
-/*
- *
- * ROM definitions
- *
- */
-
-ROM_START( paddlema )
- ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "padlem.6g", 0x00000, 0x10000, CRC(c227a6e8) SHA1(9c98be6e82a0dd76fd5b786601456b060407c57f) )
- ROM_LOAD16_BYTE( "padlem.3g", 0x00001, 0x10000, CRC(f11a21aa) SHA1(6eda9ff99f2aa8832fff1e2a054c5ffb6dae7ae3) )
- ROM_LOAD16_BYTE( "padlem.6h", 0x20000, 0x10000, CRC(8897555f) SHA1(7d30aa56a727700a6e02af92b065ed982a39ccc2) )
- ROM_LOAD16_BYTE( "padlem.3h", 0x20001, 0x10000, CRC(f0fe9b9d) SHA1(2e7a80dc25c549e57b7698052f53562a9a608205) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "padlem.18c", 0x000000, 0x10000, CRC(9269778d) SHA1(bdc9100827f2e018db943d9f7d81b7936c155bf0) )
-
- ROM_REGION( 0x10000, "mcu", 0 )
- ROM_LOAD( "alpha.mcu", 0x000, 0x1000, NO_DUMP )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD16_BYTE( "padlem.9m", 0x00001, 0x10000, CRC(4ee4970d) SHA1(d57d9178129236dfb3a18688e8544e5e555ce559) )
- ROM_LOAD16_BYTE( "padlem.16m", 0x00000, 0x10000, CRC(0984fb4d) SHA1(6bc529db93fad277f286e4a380812c40c7f42301) )
- ROM_LOAD16_BYTE( "padlem.9n", 0x20001, 0x10000, CRC(a1756f15) SHA1(1220075e34c482e38eead9ea5e63b53b822e87de) )
- ROM_LOAD16_BYTE( "padlem.16n", 0x20000, 0x10000, CRC(4249e047) SHA1(9f35b316b5de65f8b1878fca283c9d534bb8ae25) )
- ROM_LOAD16_BYTE( "padlem.6m", 0x40001, 0x10000, CRC(3f47910c) SHA1(429d425dc57fbd868bc39c3d799bbaebcf313cc0) )
- ROM_LOAD16_BYTE( "padlem.13m", 0x40000, 0x10000, CRC(fd9dbc27) SHA1(c01f512afef7686c64cc0766c235084cc8e2f5fc) )
- ROM_LOAD16_BYTE( "padlem.6n", 0x60001, 0x10000, CRC(fe337655) SHA1(ac04124642b245d6a530c72d0dea1b1585b5cebd) )
- ROM_LOAD16_BYTE( "padlem.13n", 0x60000, 0x10000, CRC(1d460486) SHA1(4ade817a036447e7e6d4fe56fa2c5712f198c625) )
-
- ROM_REGION( 0x300, "proms", 0 )
- ROM_LOAD( "padlem.a", 0x0000, 0x0100, CRC(cae6bcd6) SHA1(da3b3bdcdc7fefae80b0ef8365565bbe5ff0d5d2) ) /* R */
- ROM_LOAD( "padlem.b", 0x0100, 0x0100, CRC(b6df8dcb) SHA1(318ca20fab6608aa2956ec3bb82e8ae77c250d51) ) /* G */
- ROM_LOAD( "padlem.c", 0x0200, 0x0100, CRC(39ca9b86) SHA1(8b8d7aae85830e69366e86f8b6cccfb8140cd526) ) /* B */
-
- ROM_REGION( 0x800, "clut_proms", 0 )
- ROM_LOAD( "padlem.17j", 0x0000, 0x0400, CRC(86170069) SHA1(8e2ad7afa50453e9a2dc89386ce02d10e7c89fbc) ) /* Clut low nibble */
- ROM_LOAD( "padlem.16j", 0x0400, 0x0400, CRC(8da58e2c) SHA1(6012715a2d3ba4cf8bc5a8250e7f28cb59913092) ) /* Clut high nibble */
-
- ROM_REGION( 0x8000, "color_proms", 0 )
- ROM_LOAD( "padlem.18n", 0x0000, 0x8000, CRC(06506200) SHA1(d43337e5611cb0d3432942539ccf04bff2bdd345) ) /* Colour lookup */
-ROM_END
-
-ROM_START( tnextspc ) /* mask ROM for gfx */
- ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "ns_4.bin", 0x00000, 0x20000, CRC(4617cba3) SHA1(615a1e67fc1c76d2be004b19a965f423b8daaf5c) )
- ROM_LOAD16_BYTE( "ns_3.bin", 0x00001, 0x20000, CRC(a6c47fef) SHA1(b7e4a0fffd5c44ed0b138c1ad04c3b6644ec463b) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "ns_1.bin", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) )
-
- ROM_REGION( 0x080000, "gfx1", 0 )
- ROM_LOAD16_WORD_SWAP( "ns_5678.bin", 0x000000, 0x80000, CRC(22756451) SHA1(ce1d58a75ef4b09feb6fd9b3dd2de48b986070c0) )
-
- ROM_REGION( 0x300, "proms", 0 )
- ROM_LOAD( "2.p2", 0x0000, 0x0100, CRC(1f388d48) SHA1(5e7dc37b4e177483f4fc65b801dca8ef132ac282) ) /* R */
- ROM_LOAD( "3.p3", 0x0100, 0x0100, CRC(0254533a) SHA1(d0ec0d03ed78482cd9344661eab3305640e85682) ) /* G */
- ROM_LOAD( "1.p1", 0x0200, 0x0100, CRC(488fd0e9) SHA1(cde18e9ca0b320ded821bea537c88424b02e8910) ) /* B */
-
- ROM_REGION( 0x800, "clut_proms", 0 )
- ROM_LOAD( "5.p5", 0x0000, 0x0400, CRC(9c8527bf) SHA1(6b52ab37ea6c07a4814ed33deadd59d137b5fd4d) ) /* Clut high nibble */
- ROM_LOAD( "4.p4", 0x0400, 0x0400, CRC(cc9ff769) SHA1(e9de0371fd8bae7f08924891d78799ace97902b1) ) /* Clut low nibble */
-
- ROM_REGION( 0x8000, "color_proms", 0 )
- ROM_LOAD( "ns_2.bin", 0x0000, 0x8000, CRC(05771d48) SHA1(9e9376b1449679f554eabf8cea023714dd1ed487) ) /* Colour lookup */
-ROM_END
-
-ROM_START( tnextspc2 ) // two bootleg PCBs have been found with the same ROMs as this set, the only difference being ns_2.bin being double sized with 1st and 2nd half identical
- ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "ns_4.bin", 0x00000, 0x20000, CRC(4617cba3) SHA1(615a1e67fc1c76d2be004b19a965f423b8daaf5c) ) /* b18.ic13 */
- ROM_LOAD16_BYTE( "ns_3.bin", 0x00001, 0x20000, CRC(a6c47fef) SHA1(b7e4a0fffd5c44ed0b138c1ad04c3b6644ec463b) ) /* b17.ic11 */
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "ns_1.bin", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) ) /* b1.ic129 */
-
- ROM_REGION( 0x080000, "gfx1", 0 ) /* EPROMs, graphics are odd/even interleaved */
- ROM_LOAD16_BYTE( "b3.ic49", 0x00001, 0x10000, CRC(2bddf94d) SHA1(e064f48d0e3bb089753c1b59c863bb46bfa2bcee) )
- ROM_LOAD16_BYTE( "b7.ic53", 0x00000, 0x10000, CRC(a8b13a9a) SHA1(2f808c17e97a272be14099c53b287e665dd90b14) )
- ROM_LOAD16_BYTE( "b4.ic50", 0x20001, 0x10000, CRC(80c6c841) SHA1(ab0aa4cad6dcadae62f849e53c3c5cd909f77971) )
- ROM_LOAD16_BYTE( "b8.ic54", 0x20000, 0x10000, CRC(bf0762a0) SHA1(2fe32b1bf08dfc78668d7a12a7a67e6b2c0a2c48) )
- ROM_LOAD16_BYTE( "b5.ic51", 0x40001, 0x10000, CRC(e487750b) SHA1(f01d15f6624822dc78ff7e1cd2fdce54568ab5dc) )
- ROM_LOAD16_BYTE( "b9.ic55", 0x40000, 0x10000, CRC(45d730b9) SHA1(cb05942b12589e76afbbbac94cba0e8284bb3deb) )
- ROM_LOAD16_BYTE( "b6.ic52", 0x60001, 0x10000, CRC(0618cf49) SHA1(fad33b316613b82231f8372d0faf8cf1c669ac98) )
- ROM_LOAD16_BYTE( "b10.ic56", 0x60000, 0x10000, CRC(f48819df) SHA1(86d688590379316638ef4c3094c11629931cd69e) )
-
- ROM_REGION( 0x300, "proms", 0 )
- ROM_LOAD( "2.p2", 0x0000, 0x0100, CRC(1f388d48) SHA1(5e7dc37b4e177483f4fc65b801dca8ef132ac282) ) /* R */
- ROM_LOAD( "3.p3", 0x0100, 0x0100, CRC(0254533a) SHA1(d0ec0d03ed78482cd9344661eab3305640e85682) ) /* G */
- ROM_LOAD( "1.p1", 0x0200, 0x0100, CRC(488fd0e9) SHA1(cde18e9ca0b320ded821bea537c88424b02e8910) ) /* B */
-
- ROM_REGION( 0x800, "clut_proms", 0 )
- ROM_LOAD( "5.p5", 0x0000, 0x0400, CRC(9c8527bf) SHA1(6b52ab37ea6c07a4814ed33deadd59d137b5fd4d) ) /* Clut high nibble */
- ROM_LOAD( "4.p4", 0x0400, 0x0400, CRC(cc9ff769) SHA1(e9de0371fd8bae7f08924891d78799ace97902b1) ) /* Clut low nibble */
-
- ROM_REGION( 0x8000, "color_proms", 0 )
- ROM_LOAD( "ns_2.bin", 0x0000, 0x8000, CRC(05771d48) SHA1(9e9376b1449679f554eabf8cea023714dd1ed487) ) /* b2.ic90 - Colour lookup */
-ROM_END
-
-ROM_START( tnextspcj )
- ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "ns_ver1_j4.bin", 0x00000, 0x20000, CRC(5cdf710d) SHA1(c744e532f2f5a248d7b50a2e62cc77a0888d8dff) )
- ROM_LOAD16_BYTE( "ns_ver1_j3.bin", 0x00001, 0x20000, CRC(cd9532d0) SHA1(dbd7ced8f015334f0acb8d760f4d9d0299feef70) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
- ROM_LOAD( "ns_1.bin", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) )
-
- ROM_REGION( 0x080000, "gfx1", 0 )
- ROM_LOAD16_WORD_SWAP( "ns_5678.bin", 0x000000, 0x80000, CRC(22756451) SHA1(ce1d58a75ef4b09feb6fd9b3dd2de48b986070c0) )
-
- ROM_REGION( 0x300, "proms", 0 )
- ROM_LOAD( "2.p2", 0x0000, 0x0100, CRC(1f388d48) SHA1(5e7dc37b4e177483f4fc65b801dca8ef132ac282) ) /* R */
- ROM_LOAD( "3.p3", 0x0100, 0x0100, CRC(0254533a) SHA1(d0ec0d03ed78482cd9344661eab3305640e85682) ) /* G */
- ROM_LOAD( "1.p1", 0x0200, 0x0100, CRC(488fd0e9) SHA1(cde18e9ca0b320ded821bea537c88424b02e8910) ) /* B */
-
- ROM_REGION( 0x800, "clut_proms", 0 )
- ROM_LOAD( "5.p5", 0x0000, 0x0400, CRC(9c8527bf) SHA1(6b52ab37ea6c07a4814ed33deadd59d137b5fd4d) ) /* Clut high nibble */
- ROM_LOAD( "4.p4", 0x0400, 0x0400, CRC(cc9ff769) SHA1(e9de0371fd8bae7f08924891d78799ace97902b1) ) /* Clut low nibble */
-
- ROM_REGION( 0x8000, "color_proms", 0 )
- ROM_LOAD( "ns_2.bin", 0x0000, 0x8000, CRC(05771d48) SHA1(9e9376b1449679f554eabf8cea023714dd1ed487) ) /* Colour lookup */
-ROM_END
-
-void paddlemania_state::init_paddlema()
-{
- m_invert_controls = 0;
- m_microcontroller_id = 0;
- m_game_id = 0;
-}
-
-void thenextspace_state::init_tnextspc()
-{
- m_invert_controls = 0;
- m_microcontroller_id = 0x890a;
- m_game_id = 0;
-}
-
-GAME( 1988, paddlema, 0, paddlema, paddlema, paddlemania_state, init_paddlema, ROT90, "SNK", "Paddle Mania", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1989, tnextspc, 0, tnextspc, tnextspc, thenextspace_state, init_tnextspc, ROT90, "SNK", "The Next Space (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1989, tnextspc2, tnextspc, tnextspc, tnextspc, thenextspace_state, init_tnextspc, ROT90, "SNK", "The Next Space (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1989, tnextspcj, tnextspc, tnextspc, tnextspc, thenextspace_state, init_tnextspc, ROT90, "SNK (Pasadena International Corp. license)", "The Next Space (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-