Jet Set Willy 128 Version 0.04 Hacklevel 7
- 25 June 2000: Hacklevel 7 - bugfix in diagonal guardians
- 9 August 1998: Hacklevel 6: New guardian types
- 16 September 1997: Hacklevel 5. Superjump can be turned off or on in any room.
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:
- The room numbers are 8-bit.
- Bit 7 of the border colour (room + 0DEh) is set if the superjump POKE is to be turned on in that room.
- At (room+0DFh) is the address of the guardian table used by that room.
- At (room+0EDh) is a sprite override byte. If it is above 80h, it gives the sprite page used to draw Willy. So far it is only used in the two Nightmare Rooms.
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 telephone). 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 colourThe 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 either. >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:
- The Moonlight Sonata. Some +3s (like mine) have their sound circuitry wired wrongly and mangle it, but the fault is with the +3s rather than the tune.
- GRACE.TUN, a demonstration tune which comes with TUNE.BIN.
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