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)
{
// 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();
}

View File

@ -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 )

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, 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 )

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());
}
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 )

View File

@ -109,7 +109,6 @@ public:
void init_myherok();
void init_ufosensi();
void init_wbml();
void init_tokisens();
void init_bootsys2();
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
'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];
}