RC2014 Mini on MAME
TL;DR
Getting an RC2014 Mini working based on the Grant Searle Simple Z-80 Machine driver was pretty trivial, but it’s been enough to get me going with MAME development and persuade me to try some other things.
Background
I know there are already emulators out there already for the RC2014, I’ve used EtchedPixels/RC2014 a bit in the past. But I’ve seen people doing cool projects with MAME, which already has a broad range of hardware emulated, and I thought RC2014 would provide an easy on ramp. I chose the Mini version, because that’s the first RC2014 I made, and it’s pretty self contained.
VERY similar to gsz80
As I mentioned in Grant Searle Simple Z-80 Machine on MAME there’s already a ‘driver’ in MAME for a machine that looks much like the RC2014, because Grant’s Simple Z-80 provided inspiration for the RC2014.
What I hadn’t realised is that (for 56k BASIC at least) the RC2014 uses the same ROM as Grant’s machine. So from a MAME perspective there’s really no difference.
I created a revised rc2014mini.cpp driver, but it’s pretty much a search/replace of gsz80 with rc2014mini.
It did at least give me a chance to try out the tooling chain….
Building
I installed the Windows combined 32-bit/64-bit tools from mamedev.org/tools and followed the installation instructions there.
Phill recommended the following changes, which I also put in place:
set ARCHOPTS=-march=native -fuse-ld=lld
set OVERRIDE_AR=llvm-ar
set IGNORE_GIT=1
set PROMPT=
With my fork of MAME cloned (takes a while) and my driver file created I was ready to build it:
make -j 4 SOURCES=src\mame\drivers\rc2014mini.cpp SUBTARGET=rc2014mini
This created an rc2014mini.exe for me, which didn’t work because I’d forgotten to add anything to mame.lst. Once I added this:
@source:rc2014mini.cpp
rc2014mini // RC2014 Mini
I had an executable that worked:
ROM
As the ROM is just the same as gsz80.zip I could just rename that (and gsz80.bin) inside it. Though I went through the motions of downloading K0000000.hex from the RC2014 Factory ROMs page on GitHub, then converting it as before:
objcopy --input-target=ihex --output-target=binary K0000000.hex rc2014mini.bin
zip rc2014mini.zip rc2014mini.bin
Next…
I’d like to try getting RC2014 boards hooked up, particularly the TMS9918A Video Card for RC2014.
But I’d also like to get a TMS9995 system working in MAME. There’s already an eval module (evmbug.cpp) driver, which should give a good starting point for a breadboard system, though I’m a little worried that the TMS9902 serial driver isn’t in the shape it needs to be.
So far I haven’t done a pull request to upstream MAME for the RC2014 Mini driver, but I might do that soon.
Update
23 Feb 2022 – I did an upstream pull request, which led to me being asked to fold the changes into gsz80.cpp rather than having a standalone driver for RC2014. I also realised that the Mini should only have 32K RAM, and the corresponding BASIC, and I’ve added the Small Computer Monitor (SCM) ROM.
Filed under: MAME, RC2014, retro | 1 Comment
Tags: build, MAME, mini, RC2014, rc2014mini, ROM, tools
RC2018-Z80 Google Groups thread – https://groups.google.com/g/rc2014-z80/c/7x6sw85lpzM