From 3e700327e33b4959447326c68138ada5be90986f Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 4 Apr 2020 13:41:18 +0200 Subject: hmcs40: add note (nw) --- src/devices/cpu/hmcs40/hmcs40.cpp | 15 ++++++++++----- src/mame/drivers/hh_hmcs40.cpp | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp index 33ee981e512..abcde1d500a 100644 --- a/src/devices/cpu/hmcs40/hmcs40.cpp +++ b/src/devices/cpu/hmcs40/hmcs40.cpp @@ -7,7 +7,8 @@ References: - 1985 #AP1 Hitachi 4-bit Single-Chip Microcomputer Data Book - 1988 HMCS400 Series Handbook (note: *400 is a newer MCU series, with similarities) - - opcode decoding by Tatsuyuki Satoh, Olivier Galibert, Kevin Horton, Lord Nightmare - and verified + - opcode decoding by Tatsuyuki Satoh, Olivier Galibert, Kevin Horton, Lord Nightmare + (verified a while later after new documentation was found) */ @@ -56,16 +57,20 @@ DEFINE_DEVICE_TYPE(HD44828, hd44828_device, "hd44828", "Hitachi HD44828") // CMO // internal memory maps + +// On HMCS42/3/4/5, only half of the ROM address range contains user-executable code, +// there is up to 128 bytes of pattern data in the 2nd half. The 2nd half also includes +// a couple of pages with factory test code by Hitachi, only executable when MCU test +// mode is enabled externally. This data can still be accessed with the P opcode. + void hmcs40_cpu_device::program_1k(address_map &map) { - map(0x0000, 0x03ff).rom(); - map(0x0780, 0x07bf).rom(); // patterns on page 30 + map(0x0000, 0x07ff).rom(); } void hmcs40_cpu_device::program_2k(address_map &map) { - map(0x0000, 0x07ff).rom(); - map(0x0f40, 0x0fbf).rom(); // patterns on page 61,62 + map(0x0000, 0x0fff).rom(); } diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp index 6b768dcc8d3..cf1d5d91b88 100644 --- a/src/mame/drivers/hh_hmcs40.cpp +++ b/src/mame/drivers/hh_hmcs40.cpp @@ -63,6 +63,7 @@ A75 HD44801 1982, Alpha 8201 protection MCU -> machine/alpha8201.* B35 HD44801 1983, Alpha 8302 protection MCU (see 8201) B42 HD44801 1983, Alpha 8303 protection MCU (see 8201) + *B43 HD44801 1983, Alpha 8304 protection MCU (see 8201) C57 HD44801 1985, Alpha 8505 protection MCU (see 8201) *C89 HD44801 1986, CXG Computachess IV @@ -78,6 +79,9 @@ Or it could be a race condition: irq happening too late/early. - epacman2 booting the game in demo mode, pacman should go straight to the upper-left power pill: mcu cycle/interrupt timing related + - kevtris's HMCS40 ROM dumps are incomplete, missing MCU factory test code from + the 2nd half of the ROM, none of the games access it though and it's impossible + to execute unless the chip is in testmode. - Though very uncommon when compared to games with LED/lamp display, some games may manipulate VFD plate brightness by strobing it longer/shorter, eg. cgalaxn when a ship explodes. -- cgit v1.2.3