mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
brikett: add 4.194MHz cpu option
taitojc: add note about timing regression alpha68k_i: small cleanup to spacing
This commit is contained in:
parent
a2c780588c
commit
3d357c07c0
@ -76,13 +76,14 @@ u32 alpha68k_I_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
{
|
||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||
|
||||
/* This appears to be correct priority */
|
||||
// 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
|
||||
@ -108,7 +109,7 @@ void thenextspace_state::tnextspc_unknown_w(offs_t offset, u16 data)
|
||||
}
|
||||
|
||||
// TODO: check me
|
||||
u16 thenextspace_state::sound_cpu_r(){ return 1; }
|
||||
u16 thenextspace_state::sound_cpu_r() { return 1; }
|
||||
|
||||
|
||||
/*
|
||||
@ -119,13 +120,13 @@ u16 thenextspace_state::sound_cpu_r(){ return 1; }
|
||||
|
||||
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(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
|
||||
}
|
||||
@ -176,6 +177,7 @@ void thenextspace_state::sound_iomap(address_map &map)
|
||||
map(0x7b, 0x7b).nopr(); // unknown read port
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* Gfx layout Defs
|
||||
@ -185,19 +187,20 @@ void thenextspace_state::sound_iomap(address_map &map)
|
||||
// TODO: merge with base driver somehow
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8, /* 8x8 */
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
4, /* 4 bits per pixel */
|
||||
4,
|
||||
{ STEP4(0,4) },
|
||||
{ STEP4(8*4*4+3,-1), STEP4(3,-1) },
|
||||
{ STEP8(0,4*4) },
|
||||
32*8 /* every char takes 32 consecutive bytes */
|
||||
32*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_alpha68k_I )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* Input Defs
|
||||
@ -230,7 +233,7 @@ GFXDECODE_END
|
||||
#endif
|
||||
|
||||
static INPUT_PORTS_START( paddlema )
|
||||
PORT_START("IN0") // (bottom players)
|
||||
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 )
|
||||
|
||||
@ -248,50 +251,50 @@ static INPUT_PORTS_START( paddlema )
|
||||
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( 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)
|
||||
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_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_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_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_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_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_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_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_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
|
||||
@ -314,51 +317,52 @@ static INPUT_PORTS_START( tnextspc )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
|
||||
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_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_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_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_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_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_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_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_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_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
|
||||
@ -370,19 +374,19 @@ 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 */
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
|
||||
GENERIC_LATCH_8(config, m_soundlatch);
|
||||
|
||||
ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(24'000'000)/6)); // 4MHz (24MHz/6) verified
|
||||
ym3812_device &ymsnd(YM3812(config, "ymsnd", 24_MHz_XTAL/6)); // 4MHz (24MHz/6) verified
|
||||
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 */
|
||||
// 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));
|
||||
@ -398,12 +402,13 @@ void alpha68k_I_state::video_config(machine_config &config, int yshift)
|
||||
void paddlemania_state::paddlema(machine_config &config)
|
||||
{
|
||||
base_config(config);
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(24'000'000)/4); // 6MHz (24MHz/4) verified
|
||||
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, XTAL(24'000'000)/6); // 4MHz (24MHz/6) verified
|
||||
// basic machine hardware
|
||||
M68000(config, m_maincpu, 24_MHz_XTAL/4); // 6MHz (24MHz/4) verified
|
||||
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, 24_MHz_XTAL/6); // 4MHz (24MHz/6) verified
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &paddlemania_state::sound_map);
|
||||
|
||||
video_config(config, 0);
|
||||
@ -414,12 +419,13 @@ void paddlemania_state::paddlema(machine_config &config)
|
||||
void thenextspace_state::tnextspc(machine_config &config)
|
||||
{
|
||||
base_config(config);
|
||||
/* basic machine hardware */
|
||||
M68000(config, m_maincpu, XTAL(18'000'000)/2); // 9MHz (18MHz/2) verified
|
||||
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, XTAL(4'000'000)); // 4Mhz verified
|
||||
// basic machine hardware
|
||||
M68000(config, m_maincpu, 18_MHz_XTAL/2); // 9MHz (18MHz/2) verified
|
||||
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, 4_MHz_XTAL); // 4MHz verified
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &thenextspace_state::sound_map);
|
||||
m_audiocpu->set_addrmap(AS_IO, &thenextspace_state::sound_iomap);
|
||||
|
||||
@ -441,7 +447,7 @@ ROM_START( paddlema )
|
||||
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 ) // Sound CPU
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_LOAD( "padlem.18c", 0x000000, 0x10000, CRC(9269778d) SHA1(bdc9100827f2e018db943d9f7d81b7936c155bf0) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
@ -473,7 +479,7 @@ ROM_START( tnextspc )
|
||||
ROM_LOAD16_BYTE( "ns_4.4", 0x00000, 0x20000, CRC(4617cba3) SHA1(615a1e67fc1c76d2be004b19a965f423b8daaf5c) ) // Silkscreened "4" @ 14L
|
||||
ROM_LOAD16_BYTE( "ns_3.3", 0x00001, 0x20000, CRC(a6c47fef) SHA1(b7e4a0fffd5c44ed0b138c1ad04c3b6644ec463b) ) // Silkscreened "3" @ 11L
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_LOAD( "ns_1.1", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) ) // Silkscreened "1" @ 18B
|
||||
|
||||
ROM_REGION( 0x080000, "gfx1", 0 )
|
||||
@ -497,10 +503,10 @@ ROM_START( tnextspc2 ) // two bootleg PCBs have been found with the same ROMs as
|
||||
ROM_LOAD16_BYTE( "ns_4.4", 0x00000, 0x20000, CRC(4617cba3) SHA1(615a1e67fc1c76d2be004b19a965f423b8daaf5c) ) // == b18.ic13
|
||||
ROM_LOAD16_BYTE( "ns_3.3", 0x00001, 0x20000, CRC(a6c47fef) SHA1(b7e4a0fffd5c44ed0b138c1ad04c3b6644ec463b) ) // == b17.ic11
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_LOAD( "ns_1.1", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) ) // == b1.ic129
|
||||
|
||||
ROM_REGION( 0x080000, "gfx1", 0 ) // EPROMs, graphics are odd/even interleaved
|
||||
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) )
|
||||
@ -528,7 +534,7 @@ ROM_START( tnextspcj )
|
||||
ROM_LOAD16_BYTE( "ns_ver1_j4.4", 0x00000, 0x20000, CRC(5cdf710d) SHA1(c744e532f2f5a248d7b50a2e62cc77a0888d8dff) ) // Silkscreened "4" @ 14L
|
||||
ROM_LOAD16_BYTE( "ns_ver1_j3.3", 0x00001, 0x20000, CRC(cd9532d0) SHA1(dbd7ced8f015334f0acb8d760f4d9d0299feef70) ) // Silkscreened "3" @ 11L
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // Sound CPU
|
||||
ROM_LOAD( "ns_1.1", 0x000000, 0x10000, CRC(fc26853c) SHA1(0118b048046a6125bba20dec081b936486eb1597) ) // Silkscreened "1" @ 18B
|
||||
|
||||
ROM_REGION( 0x080000, "gfx1", 0 )
|
||||
@ -561,9 +567,8 @@ void thenextspace_state::init_tnextspc()
|
||||
m_game_id = 0;
|
||||
}
|
||||
|
||||
GAME( 1988, paddlema, 0, paddlema, paddlema, paddlemania_state, init_paddlema, ROT90, "SNK", "Paddle Mania", MACHINE_SUPPORTS_SAVE )
|
||||
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 )
|
||||
|
||||
|
@ -82,7 +82,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
|
||||
*MP0169 TMS1000 1979, Conic Electronic Baseball
|
||||
@MP0170 TMS1000 1979, Conic Football
|
||||
*MP0171 TMS1000 1979, Tomy Soccer
|
||||
*MP0186 TMS1000 1980, Hornby Railways Zero 1: Master Control Unit R944
|
||||
*MP0186 TMS1000 1979, Hornby Railways Zero 1: R944 Master Control Unit
|
||||
*MP0220 TMS1000 1980, Tomy Teacher
|
||||
@MP0230 TMS1000 1980, Entex Blast It (6015)
|
||||
@MP0271 TMS1000 1982, Tandy (Radio Shack) Monkey See
|
||||
@ -144,6 +144,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
|
||||
*MP3228 TMS1000 1979, Texas Instruments OEM melody chip
|
||||
*MP3232 TMS1000 1979, Fonas 2 Player Baseball (no "MP" on chip label)
|
||||
@MP3260 TMS1000 1979, Electroplay Quickfire
|
||||
*MP3261 TMS1000 1979, Hornby Railways Zero 1: R947 Locomotive Module
|
||||
@MP3300 TMS1000 1979, Milton Bradley Simon (Rev F)
|
||||
@MP3301A TMS1000 1979, Milton Bradley Big Trak
|
||||
*MP3310 TMS1000 1979, Texas Instruments OEM melody chip
|
||||
|
@ -12,7 +12,7 @@ in 1981, and in 1982 they released ESB 3000 and ESB 6000 for use with ESB II/III
|
||||
|
||||
Hardware notes:
|
||||
|
||||
1st model (Mephisto, Mephisto II 1981):
|
||||
1st model (Mephisto, early Mephisto II):
|
||||
- 2 PCBs: DH 4001-C(computer), DH 4002-C(LCD/keypad)
|
||||
- CDP1802CE @ 3.579MHz
|
||||
- CDP1852CE (I/O port chip), external port
|
||||
@ -21,11 +21,16 @@ Hardware notes:
|
||||
- piezo, TTL, 16-button keypad
|
||||
- module slot
|
||||
|
||||
2nd model (Mephisto II 1982, Mephisto III): (listed differences)
|
||||
2nd model (later Mephisto II): (listed differences)
|
||||
- PCB label: DH 4005-101 00
|
||||
- CDP1802ACE @ 3.579MHz or 4.194MHz (chess clock runs faster on 4.194MHz)
|
||||
- 2*MWS5114E or 2*TC5514P (1KBx4 RAM)
|
||||
|
||||
3rd model (later Mephisto II, Mephisto III): (listed differences)
|
||||
- PCB label: DH 4005-101 01
|
||||
- CDP1802ACE @ 6.144MHz, later serials also seen with 1806 CPU
|
||||
- 2 XTALs (3.579MHz and 6.144MHz), lower speed when running on battery
|
||||
- 2*TC5514P (1KBx4 RAM), unpopulated on some Mephisto III
|
||||
- 2*TC5514P may be unpopulated on some Mephisto III
|
||||
|
||||
Mephisto Junior: (listed differences)
|
||||
- 2 PCBs: RAWE 003010 B(computer), RAWE 003010 A(LCD/keypad)
|
||||
@ -79,6 +84,7 @@ BTANB:
|
||||
|
||||
#include "cpu/cosmac/cosmac.h"
|
||||
#include "machine/cdp1852.h"
|
||||
#include "machine/clock.h"
|
||||
#include "machine/sensorboard.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/dac.h"
|
||||
@ -101,6 +107,7 @@ public:
|
||||
brikett_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_irq_clock(*this, "nmi_clock"),
|
||||
m_extport(*this, "extport"),
|
||||
m_board(*this, "board"),
|
||||
m_display(*this, "display"),
|
||||
@ -111,7 +118,7 @@ public:
|
||||
{ }
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button) { if (newval) machine_reset(); }
|
||||
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq) { set_cpu_freq(); }
|
||||
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq);
|
||||
|
||||
// machine configs
|
||||
void mephisto(machine_config &config);
|
||||
@ -122,11 +129,12 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_reset() override { m_reset = true; }
|
||||
|
||||
private:
|
||||
// devices/pointers
|
||||
required_device<cdp1802_device> m_maincpu;
|
||||
required_device<clock_device> m_irq_clock;
|
||||
optional_device<cdp1852_device> m_extport;
|
||||
optional_device<sensorboard_device> m_board;
|
||||
required_device<mephisto_display1_device> m_display;
|
||||
@ -149,10 +157,7 @@ private:
|
||||
void mephisto_io(address_map &map);
|
||||
void mephistoj_io(address_map &map);
|
||||
|
||||
void set_cpu_freq();
|
||||
|
||||
// I/O handlers
|
||||
INTERRUPT_GEN_MEMBER(interrupt);
|
||||
int clear_r();
|
||||
u8 input_r(offs_t offset);
|
||||
u8 sound_r();
|
||||
@ -178,24 +183,31 @@ void brikett_state::machine_start()
|
||||
save_item(NAME(m_esb_select));
|
||||
}
|
||||
|
||||
void brikett_state::machine_reset()
|
||||
INPUT_CHANGED_MEMBER(brikett_state::change_cpu_freq)
|
||||
{
|
||||
m_reset = true;
|
||||
set_cpu_freq();
|
||||
}
|
||||
newval = m_inputs[4]->read();
|
||||
|
||||
void brikett_state::set_cpu_freq()
|
||||
{
|
||||
u8 inp = m_inputs[4]->read();
|
||||
if (~inp & 0x40)
|
||||
return;
|
||||
inp = inp >> 4 & inp;
|
||||
if (newval & 8)
|
||||
{
|
||||
/*
|
||||
3rd hardware model has 2 XTALs, it will increase CPU voltage (and speed)
|
||||
when running on mains power, the 3.579545MHz XTAL is still used for IRQ.
|
||||
|
||||
// 2nd hardware model has 2 XTALs, it will increase CPU voltage (and speed) when running on mains power,
|
||||
// the 3.579545MHz XTAL is still used for IRQ. Mephisto III could be fitted with a 12MHz XTAL instead of 6.144MHz
|
||||
// and a newer CDP1805CE CPU by Hobby Computer Centrale on request.
|
||||
// (It is unexpected that the 1805 accepts such a high overclock, but tests show that it is indeed twice faster)
|
||||
m_maincpu->set_unscaled_clock((inp & 2) ? 12_MHz_XTAL : ((inp & 1) ? 6.144_MHz_XTAL : 3.579545_MHz_XTAL));
|
||||
Mephisto III could be fitted with a 12MHz XTAL instead of 6.144MHz and
|
||||
a newer CDP1805CE CPU by Hobby Computer Centrale on request. (It is
|
||||
unexpected that the 1805 accepts such a high overclock, but tests show
|
||||
that it is indeed twice faster)
|
||||
*/
|
||||
static const XTAL freq[3] = { 3.579545_MHz_XTAL, 6.144_MHz_XTAL, 12_MHz_XTAL };
|
||||
m_maincpu->set_unscaled_clock(freq[(newval & 3) % 3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_maincpu->set_unscaled_clock((newval & 4) ? 4.194304_MHz_XTAL : 3.579545_MHz_XTAL);
|
||||
}
|
||||
|
||||
// also change interrupt frequency
|
||||
m_irq_clock->set_period(attotime::from_ticks(0x10000, (newval & 4) ? 4.194304_MHz_XTAL : 3.579545_MHz_XTAL));
|
||||
}
|
||||
|
||||
|
||||
@ -206,11 +218,6 @@ void brikett_state::set_cpu_freq()
|
||||
|
||||
// base hardware
|
||||
|
||||
INTERRUPT_GEN_MEMBER(brikett_state::interrupt)
|
||||
{
|
||||
m_maincpu->set_input_line(COSMAC_INPUT_LINE_INT, HOLD_LINE);
|
||||
}
|
||||
|
||||
int brikett_state::clear_r()
|
||||
{
|
||||
// CLEAR low + WAIT high resets cpu
|
||||
@ -368,13 +375,14 @@ static INPUT_PORTS_START( mephisto )
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("REV")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H / 8")
|
||||
|
||||
PORT_START("IN.4") // 2nd model main PCB has 2 XTALs on PCB
|
||||
PORT_CONFNAME( 0x03, 0x01, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, brikett_state, change_cpu_freq, 0) PORT_CONDITION("IN.4", 0x30, NOTEQUALS, 0x00)
|
||||
PORT_START("IN.4") // 3rd model main PCB has 2 XTALs on PCB
|
||||
PORT_CONFNAME( 0x03, 0x01, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, brikett_state, change_cpu_freq, 0) PORT_CONDITION("IN.4", 0x0c, EQUALS, 0x08)
|
||||
PORT_CONFSETTING( 0x00, "3.579MHz (Battery)" )
|
||||
PORT_CONFSETTING( 0x01, "6.144MHz (Mains)" )
|
||||
PORT_CONFNAME( 0x70, 0x40, "Base Hardware" ) PORT_CHANGED_MEMBER(DEVICE_SELF, brikett_state, change_cpu_freq, 0)
|
||||
PORT_CONFSETTING( 0x40, "1st Model (1980)" )
|
||||
PORT_CONFSETTING( 0x70, "2nd Model (1982)" )
|
||||
PORT_CONFNAME( 0x0c, 0x00, "Base Hardware" ) PORT_CHANGED_MEMBER(DEVICE_SELF, brikett_state, change_cpu_freq, 0)
|
||||
PORT_CONFSETTING( 0x00, "1st Model (3.579MHz)" ) // or 2nd model with this XTAL
|
||||
PORT_CONFSETTING( 0x04, "2nd Model (4.194MHz)" )
|
||||
PORT_CONFSETTING( 0x08, "3rd Model (2 XTALs)" )
|
||||
|
||||
PORT_START("RESET")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("RES") PORT_CHANGED_MEMBER(DEVICE_SELF, brikett_state, reset_button, 0)
|
||||
@ -421,7 +429,7 @@ static INPUT_PORTS_START( mephisto3 )
|
||||
PORT_CONFSETTING( 0x00, "3.579MHz (Battery)" )
|
||||
PORT_CONFSETTING( 0x01, "6.144MHz (Mains)" )
|
||||
PORT_CONFSETTING( 0x02, "12MHz (Special)" )
|
||||
PORT_BIT(0x70, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
PORT_BIT(0x0c, 0x08, IPT_CUSTOM) // 3rd model
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -439,8 +447,9 @@ void brikett_state::mephistoj(machine_config &config)
|
||||
m_maincpu->clear_cb().set(FUNC(brikett_state::clear_r));
|
||||
m_maincpu->q_cb().set(m_display, FUNC(mephisto_display1_device::strobe_w)).invert();
|
||||
|
||||
const attotime irq_period = attotime::from_hz(4.194304_MHz_XTAL / 0x10000); // through SAJ300T
|
||||
m_maincpu->set_periodic_int(FUNC(brikett_state::interrupt), irq_period);
|
||||
const attotime irq_period = attotime::from_ticks(0x10000, 4.194304_MHz_XTAL); // through SAJ300T
|
||||
CLOCK(config, m_irq_clock).set_period(irq_period);
|
||||
m_irq_clock->signal_handler().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT, HOLD_LINE);
|
||||
|
||||
// video hardware
|
||||
MEPHISTO_DISPLAY_MODULE1(config, m_display); // internal
|
||||
@ -458,15 +467,14 @@ void brikett_state::mephisto(machine_config &config)
|
||||
mephistoj(config);
|
||||
|
||||
// basic machine hardware
|
||||
m_maincpu->set_clock(3.579545_MHz_XTAL); // see set_cpu_freq
|
||||
m_maincpu->set_clock(3.579545_MHz_XTAL); // see change_cpu_freq
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephisto_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &brikett_state::mephisto_io);
|
||||
m_maincpu->tpb_cb().set(m_extport, FUNC(cdp1852_device::clock_w));
|
||||
m_maincpu->ef1_cb().set_constant(0); // external port
|
||||
m_maincpu->ef3_cb().set_constant(0); // external port, but unused
|
||||
|
||||
const attotime irq_period = attotime::from_hz(3.579545_MHz_XTAL / 0x10000); // through SAJ300T
|
||||
m_maincpu->set_periodic_int(FUNC(brikett_state::interrupt), irq_period);
|
||||
m_irq_clock->set_period(attotime::from_ticks(0x10000, 3.579545_MHz_XTAL));
|
||||
|
||||
CDP1852(config, m_extport);
|
||||
m_extport->mode_cb().set_constant(1);
|
||||
|
@ -79,7 +79,7 @@ authors:hap
|
||||
<element name="hlb" defstate="0">
|
||||
<rect state="1"><color red="1" green="1" blue="1" /></rect>
|
||||
</element>
|
||||
<element name="bmask" defstate="1">
|
||||
<element name="bmask" defstate="0">
|
||||
<rect state="0"><color red="0" green="0" blue="0" /></rect>
|
||||
</element>
|
||||
|
||||
@ -163,8 +163,8 @@ authors:hap
|
||||
<!-- 2nd model has slightly different labels for SW/WS -->
|
||||
<element ref="nothing" inputtag="IN.2" inputmask="0x04"><bounds x="10" y="20" width="3.7" height="3.7" /><color alpha="0.08" /></element>
|
||||
<element ref="nothing" inputtag="IN.3" inputmask="0x01"><bounds x="15" y="20" width="3.7" height="3.7" /><color alpha="0.08" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x20" inputraw="yes"><bounds x="10.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x20" inputraw="yes"><bounds x="15.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x0c" inputraw="yes"><bounds x="10.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x0c" inputraw="yes"><bounds x="15.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
|
||||
<element ref="text_ba"><bounds x="0.5" y="10.1" width="1.3" height="1.8" /></element>
|
||||
<element ref="text_bb"><bounds x="5.5" y="10.1" width="1.3" height="1.8" /></element>
|
||||
|
@ -387,7 +387,7 @@ authors:hap
|
||||
<element name="hlb" defstate="0">
|
||||
<rect state="1"><color red="1" green="1" blue="1" /></rect>
|
||||
</element>
|
||||
<element name="bmask" defstate="1">
|
||||
<element name="bmask" defstate="0">
|
||||
<rect state="0"><color red="0" green="0" blue="0" /></rect>
|
||||
</element>
|
||||
|
||||
@ -471,8 +471,8 @@ authors:hap
|
||||
<!-- 2nd model has slightly different labels for SW/WS -->
|
||||
<element ref="nothing" inputtag="IN.2" inputmask="0x04"><bounds x="10" y="20" width="3.7" height="3.7" /><color alpha="0.08" /></element>
|
||||
<element ref="nothing" inputtag="IN.3" inputmask="0x01"><bounds x="15" y="20" width="3.7" height="3.7" /><color alpha="0.08" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x20" inputraw="yes"><bounds x="10.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x20" inputraw="yes"><bounds x="15.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x0c" inputraw="yes"><bounds x="10.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
<element ref="bmask" inputtag="IN.4" inputmask="0x0c" inputraw="yes"><bounds x="15.6" y="22.15" width="1.2" height="1.2" /></element>
|
||||
|
||||
<element ref="text_ba"><bounds x="0.5" y="10.1" width="1.3" height="1.8" /></element>
|
||||
<element ref="text_bb"><bounds x="5.5" y="10.1" width="1.3" height="1.8" /></element>
|
||||
|
@ -14,8 +14,9 @@ Taito custom chips on this hardware:
|
||||
- TC0870HVP : Vertex processor?
|
||||
|
||||
TODO:
|
||||
- games are running at wrong speed(unthrottled?) compared to pcb recordings, easily noticeable on sidebs/sidebs2,
|
||||
for example the selection screens are too fast, and the driving is almost twice as slow
|
||||
- Games are running at wrong speed(unthrottled?) compared to pcb recordings, easily noticeable on sidebs/sidebs2,
|
||||
for example the selection screens are too fast, and the driving is almost twice as slow. Even slower after
|
||||
the m68k fpu/softfloat update since MAME 0.267.
|
||||
- dendego intro object RAM usage has various gfx bugs (check video file)
|
||||
- dendego title screen builds up and it shouldn't
|
||||
- dendego attract mode train doesn't ride, demo mode doesn't set the throttle, but it does set the brake pressure
|
||||
|
Loading…
Reference in New Issue
Block a user