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
This commit is contained in:
hap 2024-11-08 15:16:12 +01:00
parent bb799b0c4f
commit 1bcc22a9fc
6 changed files with 17 additions and 24 deletions

View File

@ -172,7 +172,8 @@ template<int N>
void royal_state::lcd_segs_w(u8 data) void royal_state::lcd_segs_w(u8 data)
{ {
// R0x,R6x-R8x: LCD segment 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(); update_lcd();
} }

View File

@ -9,9 +9,10 @@ It was made for the US market. The chess engine is actually the one from
Mephisto Dallas. Mephisto Dallas.
Hardware notes: Hardware notes:
- PCB label: HGS 10 115 01
- TS68000CP12 @ 12MHz - TS68000CP12 @ 12MHz
- 64KB ROM - 64KB ROM (2*D27C256)
- 16KB RAM - 16KB RAM (2*TC5565APL-15L)
- PCF2112T LCD driver - PCF2112T LCD driver
TODO: TODO:
@ -239,5 +240,5 @@ ROM_END
Drivers Drivers
*******************************************************************************/ *******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS // 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 ) SYST( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE )

View File

@ -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, 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, 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( 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( 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( 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, 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 ) GAME( 1984, eeekkp, eeekk, eeekkp, eeekkp, epospm_state, empty_init, ROT90, "Epos Corporation", "Eeekk! (Pac-Man conversion)", MACHINE_SUPPORTS_SAVE )

View File

@ -5604,16 +5604,6 @@ void system1_state::init_wbml()
downcast<mc8123_device &>(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes()); downcast<mc8123_device &>(*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() void system1_state::init_dakkochn()
{ {
m_videomode_custom = &system1_state::dakkochn_custom_w; 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, 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, 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( 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, 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, 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 ) 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 )

View File

@ -109,7 +109,6 @@ public:
void init_myherok(); void init_myherok();
void init_ufosensi(); void init_ufosensi();
void init_wbml(); void init_wbml();
void init_tokisens();
void init_bootsys2(); void init_bootsys2();
void init_bootsys2d(); void init_bootsys2d();

View File

@ -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 and is only restarted by the FIXST signal, which occurs once every
'n' pixel clocks. 'n' is determined by the horizontal control PAL. */ '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 */ and is based on a dump of 315-5137 */
const u32 cpu_cycles_per_fixst = 4 * 4; const u32 cpu_cycles_per_fixst = 32; // 3.2 * 10
const u32 fixst_offset = 2 * 4; const u32 fixst_offset = cpu_cycles_per_fixst / 2;
u32 cycles_until_next_fixst = cpu_cycles_per_fixst - ((cpu->total_cycles() - fixst_offset) % cpu_cycles_per_fixst); 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) 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)); offset |= 0x1000 * ((m_videoram_bank >> 1) % (m_tilemap_pages / 2));
return m_videoram[offset]; return m_videoram[offset];
} }