From 3d357c07c0ca824868bbe7586839c8caae236571 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 1 Jul 2024 17:21:23 +0200 Subject: brikett: add 4.194MHz cpu option taitojc: add note about timing regression alpha68k_i: small cleanup to spacing --- src/mame/alpha/alpha68k_i.cpp | 127 +++++++++++++++++++------------------ src/mame/handheld/hh_tms1k.cpp | 3 +- src/mame/hegenerglaser/brikett.cpp | 86 +++++++++++++------------ src/mame/layout/mephisto_1.lay | 6 +- src/mame/layout/mephisto_esb2.lay | 6 +- src/mame/taito/taitojc.cpp | 5 +- 6 files changed, 124 insertions(+), 109 deletions(-) diff --git a/src/mame/alpha/alpha68k_i.cpp b/src/mame/alpha/alpha68k_i.cpp index 60d9f493fce..399bb53eac1 100644 --- a/src/mame/alpha/alpha68k_i.cpp +++ b/src/mame/alpha/alpha68k_i.cpp @@ -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 + + // 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 */ + 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 + 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 + + // 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 */ + m_maincpu->set_vblank_int("screen", FUNC(thenextspace_state::irq1_line_hold)); // VBL - Z80(config, m_audiocpu, XTAL(4'000'000)); // 4Mhz verified + 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 ) - diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index 6c57cc7a7f2..e0a35f2854d 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -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 diff --git a/src/mame/hegenerglaser/brikett.cpp b/src/mame/hegenerglaser/brikett.cpp index b643045a788..981fd338782 100644 --- a/src/mame/hegenerglaser/brikett.cpp +++ b/src/mame/hegenerglaser/brikett.cpp @@ -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 m_maincpu; + required_device m_irq_clock; optional_device m_extport; optional_device m_board; required_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. + + 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); + } - // 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)); + // 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); diff --git a/src/mame/layout/mephisto_1.lay b/src/mame/layout/mephisto_1.lay index 5ee8d65d82b..d01ea714ff0 100644 --- a/src/mame/layout/mephisto_1.lay +++ b/src/mame/layout/mephisto_1.lay @@ -79,7 +79,7 @@ authors:hap - + @@ -163,8 +163,8 @@ authors:hap - - + + diff --git a/src/mame/layout/mephisto_esb2.lay b/src/mame/layout/mephisto_esb2.lay index c63efa5971a..102308b2c9b 100644 --- a/src/mame/layout/mephisto_esb2.lay +++ b/src/mame/layout/mephisto_esb2.lay @@ -387,7 +387,7 @@ authors:hap - + @@ -471,8 +471,8 @@ authors:hap - - + + diff --git a/src/mame/taito/taitojc.cpp b/src/mame/taito/taitojc.cpp index 01fc186e6a7..a3db3e50d02 100644 --- a/src/mame/taito/taitojc.cpp +++ b/src/mame/taito/taitojc.cpp @@ -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 -- cgit v1.2.3