From 16a5e4eb9e17417494d8d633340b5f241a11e293 Mon Sep 17 00:00:00 2001 From: angelosa Date: Fri, 18 Oct 2024 21:54:08 +0200 Subject: video/upd7220.cpp: ignore parameters beyond first one for pitch command * fix pc9801:burai intro MAME crash --- src/devices/video/upd7220.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp index 8bb8a9e8238..e20c6ce920c 100644 --- a/src/devices/video/upd7220.cpp +++ b/src/devices/video/upd7220.cpp @@ -1376,10 +1376,20 @@ void upd7220_device::process_fifo() break; case COMMAND_PITCH: /* pitch specification */ - if (flag == FIFO_PARAMETER) + // pc9801:burai writes a spurious extra value during intro, effectively ignored + // (only first value matters) + if (flag == FIFO_PARAMETER && m_param_ptr == 2) { m_pitch = (m_pitch & 0x100) | data; + if (m_pitch < 2) + { + // TODO: a pitch of zero will lead to a MAME crash in draw_graphics_line + // Coerce a fail-safe minimum, what should really happen is to be verified ... + popmessage("%s pitch == 0!", this->tag()); + m_pitch = 2; + } + LOG("uPD7220 PITCH: %u\n", m_pitch); } break; -- cgit v1.2.3