Computers Overview
Commodore PET
Sinclair ZX80
Sinclair ZX81
BBC Micro
Sinclair Spectrum
Memotech MTX
          Dev. Corner
      Web Tools
    User Groups
    Video Wall
Memotech CP/M
Atari ST
Commodore Amiga
DEC 3000 AXP
Raspberry Pi



The Memotech MTX Series

Memotech Software Development

EXEROM - MSX Games ROM Loader

by Timo Soilamaa


Status : Abandoned
Unfortunately, this project has been abandoned, hopefully, Timo will be able to revisit it at some point as it would have been a great bonus for Memotech owners.

Timo Soilamaa has developed EXEROM - a loader that allows unmodified MSX Games ROM to run on the MTX !

EXEROM started life as a MSX ROM loader for Spectravideo computers, including the SV-328. You can read Timo's (Nyytikki's) decryption of what the loader does and some details of its inner workings in this thread on the website.

Despite being a very interesting and novel approach to porting software from one platform to another, the latest version of the loader didn't get much attention from the Spectravideo community, so Timo took his code and ported it to the MTX - influenced no doubt by the higher class of user to be found in the MTX community !

In Timo's words. . . .

"At the heart of this project there is custom version of the open source C-BIOS that implements MSX BIOS calls. Naturally some of them like keyboard input etc. I have completely rewritten for MTX.

On top of that there is this home made "self aware, self modifying artificial intelligence". The AI is used to find the correct places to patch the program. The idea is that the AI is pretty much emulating my own thoughts about Z80 code running on the MSX platform.

For example, if the code in memory looks like this:

LD BC,#387
LD DE,#4421

The AI thinks "hmm... this looks suspicious... The B-register is loaded even though it already had an unused value" By itself, this is not a strong statement against the code validity, but the AI uses fuzzy logic and evaluates the "big picture", so once it has a pile of similar small thoughts, it combines them to form a complete on opinion whether or not the routine should be patched. This is done to avoid patching of graphics, music and other type of data that can be present in games.

The AI has also another level that then evaluates how the routines should be patched. You can't always tell what the routine is used for and for that reason it may add some "break points" to interrupt the routine in execution time for further evaluation & repatching. In general there are quite a few tricks used to make the end result to what it is... "

The loader is currently a "work in progress", but, so far, looks absolutely fantastic. At the moment, MEMU is required to run the loader and MSX games, but, ultimately, the loader should run on a real MTX computer.

From Timo's posting in the Facebook MTX 500 Group . . .

"First very early, unsupported version of MSX ROM-loader for Memotech MTX that is meant for "early adopters"...

This version does not yet have joystick support, but it lets you play maybe about 50% of MSX ROM games that fit in to 32KB size and do not require MSX-BASIC.

This version still also lacks a loader, so you can mainly test it on MEMU

Starting: "memu -v -s -diag-bad-port -iobyte 0x80 -mem exerom -addr 0x4000 -mem MSXGAME.ROM -addr 0x3ff0"

Note: some 8/16K games may use "-addr 0x8000" as load address instead...


Running on a "real" MTX (Information courtesy of Martin Allcorn)

[This technique was developed for CFX where the loader program and EXEROM image are easily accessed from MTX BASIC, it should work using tapes, but managing the loader, EXEROM and games ROM files is likely to be pretty awkward.]

You need to run on a MTX500 (32k RAM) or switch a MTX512 (64k RAM) into MTX500 mode

  • POKE 64122,0 ; NEW        (configures on 2 x 16k pages of RAM and resets the machine)

You need a program that fills the 16k paged RAM area, so assemble lots of DS 254 instructions (64 should do it), that puts the bulk of the basic program in the unpaged area so you can page the memory without breaking BASIC.

Then load the emulation ROM at #8000 (32768) in page 1, as that moves to 0 on swapping to RAM mode, and then page back and load the game at #4000 or #8000 (16384 or 32768)

Then one more snippet of code I’m assuming it needs to be run from 0. It needs GOTO 40 to start it

Example Code using GALAGA.ROM Game

1 GOTO 40
800F DS 254
810D DS 254
   . . . 
BD93 DS 254
C0AE LD A,#80
C0B0  OUT (0 ),A
C0B2  LD BC,#4000
 C0B5 LD DE,#0
C0B8  LD HL,#8000
 C0BD  LD A,(#FAD2)
C0C0  OUT (0 ),A
 C0C2  EI
C11F  DI
 C120 LD A,#80
 C122  LD (#FAD2),A
C125 OUT (0 ),A
 C127  JP #3FF0
 C12A  RET

Note : I have had the best/most consistent results with the Road Fighter game ROM - I suggest that you try that first.



  Version Date Comments
0.5 03/08/2017 Development - sound optimisation (Zip includes a test music ROM file)
0.4.1 01/08/2017 Development - now runs on MTX hardware
0.4 23/04/2017 Includes noise support - runs in MEMU only
0.3 23/04/2017 More realistic sounds, noise & some support routines missing
0.2 23/04/2017 Initial Version - limited sound support


A selection of MSX ROMs that have been tested with MEMU are included below. A large selection of MSX ROMs can be found on the web with a quick "Google", though not all are in the public domain or freely distributable. I believe that the ROMs available below are free to distribute, but if you know better, please let me know and I will remove them.

Note: many of these ROMs came from the msxabandonware website, it should be noted that the term "abandonware" has no legal meaning, the ROMs are almost certainly still under copyright, but the original manufacturer or distributor does not appear to actively enforce their rights. Should the copyright owner wish to assert those rights, I will, of course, remove the offending ROM.



  Game Publisher Year Source LA 0x Comments
Bird & Chairs NI 2017 4000  
Glider Zap ???? msxabandonware 8000 Unknown keys
Super Cobra Konami 1983 msxabandonware 4000 Unknown keys
Tales of Popolon v1.3 Santi Ontanon 2017 Github 4000  
Zanac A.I. Pony 1986 msxabandonware 4000 Nice shoot 'em up
Zaxxon Sega 1985 msxabandonware 4000  
Zexas Limited dB-Soft 1985 msxabandonware 4000 Space shoot 'em up


Title Alpha Squadron
Publisher Sony
Year 1984
Genre Space flight simulator / shoot 'em up
Source doperoms

Impossibly hard - for me at least.

I can't take off without crashing.
Title F16 Fighting Falcon
Publisher Nexa
Year 1984
Genre Space flight simulator / shoot 'em up
Source doperoms

Title Galaga
Publisher Namco
Year 1984
Genre Space shoot 'em up
Source msxabandonware

Title Galaxians
Publisher Namco
Year 1984
Genre Space shoot 'em up
Source msxabandonware

Title GP World
Publisher Sega
Year 1984
Genre Car racing
Source msxabandonware

"Turbo" for MSX?  :-)
Title Jump Coaster
Publisher Nippon Columbia / Colpax
Year 1984
Genre Platform game
Source msxabandonware

Title Jump Land
Publisher Nippon Columbia / Colpax
Year 1985
Genre Platform game
Source planetemulation

Title Red Zone
Publisher Yellow Horn
Year 1985
Genre Space shoot 'em up
Source doperoms

Title Road Fighter
Publisher Konami
Year 1985
Genre Car racing
Source msxabandonware

Title Shmup!
Publisher David Fernández
Year 2013
Genre Space shoot 'em up
Source imanok

Title Space Invaders
Publisher Taito Corp
Year 1985
Genre Space shoot 'em up
Source msxabandonware


The games in the table below have been tested with the results shown, but are not made available for download here due to either copyright restrictions (again, a quick "Google" should help you find them on the 'net), or that fact that they don't run under EXERUN.

The biggest cause of failure so far is with 128k ROMs, as explained by Timo, "they are ctually 128KB ROMs that are divided in to 8KB blocks in order to make them fit to Z80 address space. Any ROMs that are bigger than 32KB are not supported and also ROMs that require BASIC or that are coded to work in memory area #0000-#3FFF are not supported."

Please e-mail me your test results with other games and I will include them here.

Incompatible MSX ROMs

  Game (Links to info) Publisher Source Comments
Χ Gradius Konami n/a 128k ROM
Χ Nemesis Konami n/a 128k ROM
Χ Zanac Ex Pony n/a 128k ROM





mailto: Webmaster

 Terms & Conditions