From 1bcc22a9fcc745d54ebcf3daee91b46cd66cda33 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 8 Nov 2024 15:16:12 +0100 Subject: system1: vram wait timing was still assuming 20mhz z80 clock from before 0.259 (fixes pitfall2 titlescreen, and allows tokisens overclock hack to be removed), theglobme: correct company string, mondial68k: update notes --- src/mame/cxg/royal.cpp | 3 ++- src/mame/hegenerglaser/mondial68k.cpp | 9 +++++---- src/mame/pacman/pacman.cpp | 2 +- src/mame/sega/system1.cpp | 12 +----------- src/mame/sega/system1.h | 1 - src/mame/sega/system1_v.cpp | 14 ++++++++------ 6 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/mame/cxg/royal.cpp b/src/mame/cxg/royal.cpp index e8551c8f4fc..c806057ab99 100644 --- a/src/mame/cxg/royal.cpp +++ b/src/mame/cxg/royal.cpp @@ -172,7 +172,8 @@ template void royal_state::lcd_segs_w(u8 data) { // R0x,R6x-R8x: LCD segment data - m_lcd_segs = (m_lcd_segs & ~(0xf << (N*4))) | (data << (N*4)); + const u8 shift = N * 4; + m_lcd_segs = (m_lcd_segs & ~(0xf << shift)) | (data << shift); update_lcd(); } diff --git a/src/mame/hegenerglaser/mondial68k.cpp b/src/mame/hegenerglaser/mondial68k.cpp index 002fcc2ddd5..f1a5325d1c6 100644 --- a/src/mame/hegenerglaser/mondial68k.cpp +++ b/src/mame/hegenerglaser/mondial68k.cpp @@ -9,9 +9,10 @@ It was made for the US market. The chess engine is actually the one from Mephisto Dallas. Hardware notes: +- PCB label: HGS 10 115 01 - TS68000CP12 @ 12MHz -- 64KB ROM -- 16KB RAM +- 64KB ROM (2*D27C256) +- 16KB RAM (2*TC5565APL-15L) - PCF2112T LCD driver TODO: @@ -239,5 +240,5 @@ ROM_END Drivers *******************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS -SYST( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/pacman/pacman.cpp b/src/mame/pacman/pacman.cpp index 900952c524f..f24aba17125 100644 --- a/src/mame/pacman/pacman.cpp +++ b/src/mame/pacman/pacman.cpp @@ -8899,10 +8899,10 @@ GAME( 1983, acitya, bwcasino, acitya, acitya, epospm_state, empty_init, GAME( 1983, theglobp, suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware, set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, theglobpa,suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, theglobme,suprglob, woodpek, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation (Magic Electronics Inc. license)", "The Glob (Pac-Man hardware, Magic Electronics)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, sprglobp, suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, sprglobp2,suprglob, pacman, theglobp, epospm_state, init_sprglobp2,ROT90, "bootleg (Elsys Software)", "Super Glob (Pac-Man hardware, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // encrypted GAME( 1984, sprglbpg, suprglob, pacman, theglobp, epospm_state, empty_init, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware, German bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, theglobme,suprglob, woodpek, theglobp, epospm_state, empty_init, ROT90, "Magic Electronics Inc.", "The Glob (Pacman hardware, Magic Electronics Inc. license)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, beastfp, suprglob, theglobp, theglobp, epospm_state, empty_init, ROT90, "Epos Corporation", "Beastie Feastie (Pac-Man conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, eeekkp, eeekk, eeekkp, eeekkp, epospm_state, empty_init, ROT90, "Epos Corporation", "Eeekk! (Pac-Man conversion)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/sega/system1.cpp b/src/mame/sega/system1.cpp index daee8b8cb69..c85578cc791 100644 --- a/src/mame/sega/system1.cpp +++ b/src/mame/sega/system1.cpp @@ -5604,16 +5604,6 @@ void system1_state::init_wbml() downcast(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes()); } -void system1_state::init_tokisens() -{ - // HACK: otherwise player dies in attract mode and game gives a continue screen, - // probably the other Z80 timing kludges aren't quite accurate (or the encrypted CPU differs) - // could also be different screen refresh, or even just exactly when the first interrupt occurs - m_maincpu->set_clock_scale(1.07f); - - init_wbml(); -} - void system1_state::init_dakkochn() { m_videomode_custom = &system1_state::dakkochn_custom_w; @@ -5791,7 +5781,7 @@ GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, i GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, init_bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, wboysys2a, wboy, sys2_315_5176, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 2, 315-5176)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, tokisens, 0, sys2xb, tokisens, system1_state, init_tokisens, ROT90, "Sega", "Toki no Senshi - Chrono Soldier (MC-8123, 317-0040)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, tokisens, 0, sys2xb, tokisens, system1_state, init_wbml, ROT90, "Sega", "Toki no Senshi - Chrono Soldier (MC-8123, 317-0040)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, tokisensa, tokisens, sys2, tokisensa, system1_state, init_bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier (prototype?)", MACHINE_SUPPORTS_SAVE ) // or bootleg? GAME( 1987, wbml, 0, sys2xb, wbml, system1_state, init_wbml, ROT0, "Sega / Westone", "Wonder Boy - Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, wbmljo, wbml, sys2xb, wbml, system1_state, init_wbml, ROT0, "Sega / Westone", "Wonder Boy - Monster Land (Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/sega/system1.h b/src/mame/sega/system1.h index 91076beecc0..c6b3a65524d 100644 --- a/src/mame/sega/system1.h +++ b/src/mame/sega/system1.h @@ -109,7 +109,6 @@ public: void init_myherok(); void init_ufosensi(); void init_wbml(); - void init_tokisens(); void init_bootsys2(); void init_bootsys2d(); diff --git a/src/mame/sega/system1_v.cpp b/src/mame/sega/system1_v.cpp index ddffaec8125..e4bc21080e3 100644 --- a/src/mame/sega/system1_v.cpp +++ b/src/mame/sega/system1_v.cpp @@ -324,18 +324,20 @@ inline void system1_state::videoram_wait_states(cpu_device *cpu) and is only restarted by the FIXST signal, which occurs once every 'n' pixel clocks. 'n' is determined by the horizontal control PAL. */ - /* this assumes 4 5MHz pixel clocks per FIXST, or 8*4 20MHz CPU clocks, + /* this assumes 4 5MHz pixel clocks per FIXST, or 3.2 4MHz CPU clocks, and is based on a dump of 315-5137 */ - const u32 cpu_cycles_per_fixst = 4 * 4; - const u32 fixst_offset = 2 * 4; - u32 cycles_until_next_fixst = cpu_cycles_per_fixst - ((cpu->total_cycles() - fixst_offset) % cpu_cycles_per_fixst); + const u32 cpu_cycles_per_fixst = 32; // 3.2 * 10 + const u32 fixst_offset = cpu_cycles_per_fixst / 2; + const u64 total_cycles = cpu->total_cycles() * 10ULL; + u32 cycles_until_next_fixst = cpu_cycles_per_fixst - ((total_cycles - fixst_offset) % cpu_cycles_per_fixst); - cpu->adjust_icount(-cycles_until_next_fixst); + cpu->adjust_icount(-((cycles_until_next_fixst + 5) / 10)); } u8 system1_state::videoram_r(offs_t offset) { - videoram_wait_states(m_maincpu); + if (!machine().side_effects_disabled()) + videoram_wait_states(m_maincpu); offset |= 0x1000 * ((m_videoram_bank >> 1) % (m_tilemap_pages / 2)); return m_videoram[offset]; } -- cgit v1.2.3