Dr. Andrew Broad
Sinclair ZX Spectrum
Manic Miner/Jet Set Willy
MM<->JSW Conversion

16th March 2006: updates in red below.

In 1992, when I started MM/JSW editing, one of the first projects I embarked on was to rewrite the original Manic Miner rooms in Jet Set Willy and vice versa. I did so by hand, but now I am developing programs to do so semi-automatically.

Each conversion uses an unpatched version of the target game-engine, with only the game-data changed (technically, this can include the operands of machine-code instructions, but not the op-codes). The principle is to represent the source-game as best as possible within the limitations of the target game-engine. If once you start making modifications to the target game-engine, why stop until you have turned it into the source game-engine?

MM->JSW conversion (Jet Set Willy: Manic Miner)

I wrote Jet Set Willy: Manic Miner in 1992/3 using my Jet Set Willy Screen Editor, with which I could edit rooms, but not items, guardian-classes, or anything else (JSWSE has since been superseded by my Jet Set Willy Construction Kit). Obviously, the fact that Manic Miner has 20 rooms meant that this left 44 rooms in the game. I redefined 27 of these before I abandoned the game (Rooms 47-63 were the same as in the original Jet Set Willy).

However, in 2004 I wrote a program called MMtoJSW, as part of a future version of SPECSAISIE, which semi-automatically converts a given MM game to JSW. I applied this to the original JSW, post-editing the game by hand to set the exits, place the ramps (which generally substitute for Crumbly cells), and various other tweaks to make a fair and completable JSW game.

MMtoJSW also performs the following conversions which are not room-specific:

I have now released both the old JSW:MM and the new JSW:MM as part of the Party Willy box-set.

JSW->MM conversion (Manic Miner: Jet Set Willy)

I started Manic Miner: Jet Set Willy in 1993 and finished it in 1996 (using my Manic Miner Screen Editor). Jet Set Willy has 64 rooms, but Room 47 ("[") is blank and Rooms 61-63 contain dead machine-code instructions. So I wrote MM:JSW in three volumes: Rooms 0-19, Rooms 20-39, and Rooms 40-60.

I have now released MM:JSW as part of the Party Willy box-set, adding a number of non-room-specific conversions:

I also wrote a program JSWtoMM, as part of a future version of SPECSAISIE, which semi-automatically converts a given JSW game to MM.

MM/JSW <-> JSW II conversion

As a future Broadsoft project, this has its own page currently.

Semi-automatic conversion

The programs I am now developing are semi-automatic. That is to say, the routine aspects of conversion can be automated, but some human post-editing is required.

More important than their actual implementation is the methodology behind these programs. MM<->JSW conversion is a very interesting problem academically, because of the semantic heterogeneity between MM and JSW. Many aspects of MM/JSW rooms are amenable to routine conversion (e.g. Air-, Water-, Earth and Fire-cells, room-title, cell-graphics, and so on), but there are plenty of differences too (e.g. Crumbly cells in MM, ramps in JSW, portals in MM, room-exits in JSW, the fact that MM can have only five items per room whereas JSW can have 256 items in the whole game, the way guardians are represented, and many other differences, some more subtle than others).

Mapping such features between MM and JSW often requires human intervention (or else some pretty advanced AI techniques). This could take place either interactively (e.g. when converting a MM room to JSW, the user would have to decide whether to map each Crumbly cell to Water, Air or Ramp) or after the automatic conversion (using a standard MM or JSW editor).

John Elliott's XML file-format

Perhaps the most amazing development of JSWED v2.3.0 has been an XML file-format that can represent the rooms in any MM, JSW, JSW128, JSW64 or JSW II game as a text-file that is both machine-processable, and understandable to humans using a simple text-editor.

The XML model represents a universal ontology of MM/JSW to which any game can be exported without loss of information (well, almost), and from which a game can be imported to any format, subject to the limitations of that format. And "can be" doesn't just mean in principle; JSWED can already export from and import to every game-engine it supports!

So if there are n formats, there only need to be n export-algorithms and n import-algorithms, as opposed to n*(n-1) pairwise conversion algorithms (such as SPECSAISIE MMtoJSW and JSWtoMM as mentioned above).

JSWED's export-algorithms are almost perfect (but see Message 5703 of the Manic Miner and Jet Set Willy Yahoo! Group), but its import-algorithms, which inherently entail information-loss due to the limitations of each game-engine's room-format, make many decisions with which the user may not agree. So these import-decisions are a very fertile area of future research: what are the correct decisions as far as pure logic will take us, and how should an import-function interact with the user to make these decisions when human intelligence is needed?

Email me 1