summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2020-04-04 13:41:18 +0200
committer hap <happppp@users.noreply.github.com>2020-04-04 13:41:41 +0200
commit3e700327e33b4959447326c68138ada5be90986f (patch)
treeac3fbe6cf3e1ad938d59a7374e8a6c9ae6c346a7
parent6e7fe63f60c27695c3d8aa123384feb4398bc527 (diff)
hmcs40: add note (nw)
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp15
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp4
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.