Jet Set Willy
Home -> Jet Set Willy 128 -> Documentation


Jet Set Willy 128 Version 0.04 Hacklevel 7



The current version is fully playable, and contains 129 rooms.

If you have a +3 disc system, the file JSWCONV.BAS will convert a 48k JSW variant into a 128k version at Hacklevel 5. On a PC, the Import function of JSWED will do this.

Information for gameplayers:

Keys are:
Q-P     : Alternately left and right
Z-SPACE : Jump
A       : Pause
L-ENTER : Tune on/off

Information for gamewriters:

Memory banks 1,3,4 and 6 contain rooms 0-63, 64-127, 128-191 and 192-255 respectively. The rooms are stored as in JSW 48k, except:

Memory bank 7 holds the following:

0C000h: Bitmap of title screen
0D000h: Attributes for title screen (3 sets)
0D600h: The scrolling message for the title screen. This may be up to 1279
        bytes long and is terminated by a zero.
0DB00h: Used by +3DOS while loading; otherwise free.

Memory bank 0 holds the following:

0C000h: Object locations table. Object at 0A4xxh is in location at 0C0xxh.
0C100h: Screen character set. Standard Spectrum-style font.
0C400h: Contains miscellaneous code.
0C500h: Free for further guardian tables and sprites.

        In the version supplied with the editor, this area contains one 
        additional guardian table occupying C500h-C8FFh and four pages of 
        sprites occupying C900-CCFFh.

        In the current "release" version, this area contains one guardian 
        table and several further pages of sprites - to whit, nearly all the 
        sprites from Manic Miner. Only a few of these are currently 
        used in the game (the toilets, the clockwork bird thing, and the mutant

        Memory in this area is "mapped" - see below.
0EB00h: Contains code and sprites for the extended lives display. If you
        want to see it in action, turn on the WRITETYPER mode.
0EC29h: Tune for the title screen.
0F700h: Tune for the game itself.
0F800h: Reserved for 128k music runtime.
The first byte of a guardian's record contains its type. In JSW48, this was a 3-bit number; JSW128 extends it to 4 bits, allowing up to 16 guardian types:
 0: Blank 
 1: Horizontal
 2: Vertical
 3: Rope
 4: Arrow (0-4 as in JSW48)
 5: Diagonal (NW/SE)
 6: Diagonal (NE/SW)
 7: Vertical, changing colour
 9: Horizontal, changing colour
10: Vertical
13: Diagonal (NW/SE), changing colour
14: Diagonal (NE/SW), changing colour
15: Vertical, changing colour
The duplicate entries for vertical guardians are because vertical guardians change bit 3 of the "type" byte while the game is running. This changes their type between 2 and 10, or 7 and 15.

At 864Ch in bank 2 is a map of the memory from 9800h to EAFFh. Each byte corresponds to one page (256 bytes) and reveals the contents of that page - either:

  0:     Free
 20h+nn: Start of guardian table nn (1 <= n <= 31)
 40h+nn: Other part of guardian table nn (1 <= n <= 31)
 60h:    Sprites
 61h:    Teleporter overlay
 80h:    Reserved by Matthew Smith or me. Pages corresponding to 80h should
         not be changed, and 80h bytes in the map should not be changed
>80h:    Reserved by someone else

This data structure is updated by the editor program, and used by it to locate sprites and guardian tables in memory.

For the 128k music I am using a very slightly modified version of Ian Collier's TUNE.BIN. The two tunes were also converted by Ian, and are:

WRITETYPER mode works on all 256 rooms. The binary room number is given by the keys 67854321 rather than 654321, and the way the keyboard is wired makes this system somewhat inadequate.

Source for the patches to JSW128 is now available.

There is an extra cheat mode, which any hacker should be able to discover. If you give up, mail me!

John Elliott 25-6-2000