Your Spectrum
Issue 6, August 1984 - Jet Set Willy
Home Contents KwikPik
H A C K I N G   A W A Y
We've had so many pleading letters and phone calls asking for the POKEs Andrew Pennell used to 'enhance' Jet Set Willy ... that we just had to publish them. That, and the multitude of suggestions sent in by our faithful readership!
We're feeling a bit overwhelmed at the response to our revelations on Jet Set Willy in issue 4. In fact, the multitude of letters divide into two distinct groups - the naughty hackers, who've blithely supplied all the POKEs you should never have needed in the first place, and those on the straight and narrow who simply wanted to know the required locations. A few correspondents even offered money, but you can't bribe me (at least, not easily!)
First, let's have a look at the POKEs that I mentioned:

POKE Effect
34785,x-1 'x' lives (maximum 32)
35899,0 Infinite lives
34795,x Start at room x (you normally start in the Bathroom which is x=33)
41983,256-x The number of objects (normally x=83)

Note that the missing POKE is the anti- protection one, which I'm not giving for obvious reasons. From the correspondence I've had, it seems as though everyone has a different one - but they're all variations on a theme.


For those who don't know how to break into JSW, I have included a general loader program that can be altered to

10 INK 7: PAPER 1: BORDER 1: CLEAR 32767
20 PRINT "JSW is loading"
99 REM POKEs after here
899 INPUT "Press ENTER to start"; LINE A$

A general loader program for Jet Set Willy - simply insert whatever POKEs you want between lines 100 and 700.

allow to you to add your favourite POKEs. Insert any extra line, from lines 100 to 700, RUN it, then play the JSW tape.
Quite a few readers asked about the mysterious 10-letter code that allows room jumping, so here is the secret: go to the First Landing and get on to the lowest level - the floor. Then type in the letter

Once you've typed 'WRITETYPER' in 'The First Landing', here's the combination of keys you'll need to use to whisk yourself around the rooms.
0-The Off Licence9
1-The Bridge19
2-Under the Mega Tree29
3-At the Foot of the Mega Tree129
4-The Drive39
5-The Security Guard139
6-Entrance to Hades239
7-Cuckoo's Nest1239
8-Iniside the Mega Trunk49
9-On a Branch Over the Drive149
10-The Front Door249
11-The Hall1249
12-Tree Top349
13-Out on a Limb1349
14-Rescue Esmerelda12349
15-I'm sure I've seen this before ...12349
16-We must perform a Quirkafleeg59
17-Up on the Battlements159
18-On the Roof259
19-The Forgotten Abbey1259
20-Ballroom East359
21-Ballroom West1359
22-To the Kitchens - Main Stairway2359
23-The Kitchen12359
24-West of Kitchen1459
25-Cold Store1459
26-East Wall Base12459
27-The Chapel12459
28-First Landing3459
29-The Nightmare Room13459
30-The Banyan Tree23459
31-Swimming Pool123459
32-Halfway up the East Wall169
33-The Bathroom169
34-Top Landing269
35-Master Bedroom1269
36-A Bit of Tree369
38-Priests' Hole2369
39-Emergency Generator12369
40-Dr Jones will never believe this469
41-The Attic1469
42-Under the Roof2469
43-Conservatory Roof12459
44-On Top of the House13469
45-Under the Drive13469
46-Tree Root123469
48-Nomen Luni12569
49-The Wine Cellar12569
50-Watch Tower12569
51-Tool Shed12569
52-Back Stairway3569
53-Back Door13569
54-West Wing23569
55-West Bedroom123569
56-West Wing Roof14569
57-Above the West Bedroom14569
58-The Beach24569
59-The Yacht124569
60-The Bow134569

H A C K I N G   A W A Y

sequence 'WRITETYPER', making sure all the time that Willy doesn't wander up the ladder; he has to stay on the floor for it to work. That done, test it by holding down the '6' key; if you've done it correctly, you'll have warped your way into the Off Licence. To jump to other rooms, you hold combinations of the keys '1' to '5', along with the '6' key, where keys '1' to '5' correspond to the binary of the room number, as in Manic Miner. Beware though, because some combinations will crash the program, and some rooms are unobtainable. If the entry procedure seems too tedious, POKEing 34275,10 will activate it for you.
However, for those not interested in the finer points of actually playing the game and who want to see the final sequence of events when you have collected all of the objects, wait no longer. To see the final head-wetting effect, select one object by POKEing 41983,255 (which just happens to be the tap), collect it, get along to the Master Bedroom, and hey presto - Willy's strange predictions will be revealed!
But ... shock horror, there was a mistake in the original article. On the first page above the map you'll find a very inaccurate paragraph - for which I deny all responsibility ( Why's everybody always picking on me. Ed. ). For the record, there are 79 visible objects, two of which count as double, and two invisible ones in the landing and swimming pool, making a total of 83 in all.


Time now to credit those souls who supplied even more useful locations, starting with Mike Stockwell. He was the first with an 'anti-Attic' POKE, which he worked out during the last Microfair! His POKE is 59900,255 and it works like a dream. I should also mention Julian O'Dell, who also found it, but a bit later, and Jim Duncan who fixed it in a different way. In fact, all three worked out easier ways of doing it than the official Software Projects POKEs - well done guys!
Next hacker was JM Dodds, who supplied the following info: POKEing zero into locations 39998 through 40191 deletes the Monty Python foot, the barrel and the dreaded Maria, and zeroing from approximately 46896 to 49171 will delete the rest of the deadly moving graphics including those in the Banyan Tree and the Forgotten Abbey - thanks very much JMD. Andrew Cole showed another way of making life easier, by zeroing locations 34808, 34809, 34811, 34812, 34814, 34815, 37425-7, and 40064-40191. Tim Cannop supplied 35123,0 to obliterate everything that moves, and 38240,0 is an alternative way of dispatching Maria. The joke is that even with no baddies, I still can't do the Banyan Tree properly.
David Harris wrote in to reveal that POKEing 34785 determines the number of lives, from one to 32. He also related a very interesting story about one of his friends. Apparently, after being fobbed off by Software Projects response to JSW enquiries, the unnamed friend pretended to be Bruce Everiss, Director of Imagine. This partly succeeded, but eventually failed when a fairly high-up employee who knew the real Mr. Everiss, unfortunately spotted the charade; good try anyway! Sincere thanks to to Malcolm Cole, who revealed that POKE 36477,1 stops you dying when you fall a great height - a great piece of hacking Malcolm. With this timely POKE, for instance, you can enter the Conservatory Roof from Under the Roof, without having to negotiate the dreaded Banyan Tree.
And still they come! John Green revealed how to get the object in the First Landing, using the 'WRITETYPER' method. First, either do the POKE or type the sequence, then go to the 'To Kitchens Main Stairway' room, and stay on the stairs on the left of the deadly snowflake. Next, hold keys '3', '4', '5' and '9' down simultaneously, and you should appear in the side of the wall in the first landing - and your object count will go up by one. How you get down without dying I leave to your imagination!
Talking of 'WRITETYPER', CW Else explained why the keyboard hardware messes it up, and also how to get JSW to work with the Interface 2 - by POKE 36635,239. Dominic Neal, a tender 15-year old, supplied POKE 36545,0 which makes the Banyan Tree just a little bit easier. Using it, go to the left of the tree and get to the third pillar; from there you will be usefully sucked up into Bit of Tree, and hence into the elusive Conservatory. Dominic also gave POKE 36358,0 which turns Willy into a 'Super Willy', giving him jumping powers reminiscent of Zebedee. Darren Appleby must have been kicking himself as a few days before YS issue 4 came out he'd posted us a nice map of JSW that he'd done himself - sorry Darren, but I beat you to it!
Since writing the original article, we think we've discovered the reasons for some of the strange screen names. Nomen Luni is a mickey-take of the logo used on Imagine's Zzoom - Nomen Ludi (presumably Latin for something or other). The Dr Jones screen has something to do with the pink elephant, but I'm still not really sure of that link! The word 'Quirkafleeg' derives from a chant taken from a book called The Adventures of Fat Freddy's Cat #5, sent to us by Robin Coles. It seems that performing a Quirkafleeg involves laying on your back with your feet in the air, in the presence of dead furry animals - strange books you read Robin. Originally the screen was called The Gaping Pit, but this got changed at some stage.


Quite a few trainspotters have written in asking how they can become 'hackers'. OK - here are my tactics (though I'm
sure everyone does it differently). First a knowledge of machine code and a good disassembler are vital; for the latter I use the Hisoft MONS.
The first move in hacking is to break into the program - which can range from the simple to the near impossible. JSW is actually simple, as you MERGE the first bit of Basic, CLEAR 32767, then LOAD CODE and restart the tape. Hey presto, the code is in the machine, and using a header reader program (like the one in YS issue 4) you can find exactly where the code lies. In JSW it's from 32768 to 65535. That done, you need to find a suitable place to put your disassembler; on JSW I find 26000 convenient.
If you've got this far, well, now comes the difficult bit ... examining the software for recognisable statements that are alterable. As an example, here's how I found the 'infinite lives' POKE. The usual way for decreasing the lives counter in any Z80 game is with a DEC (HL) instruction, so I searched carefully for all occurrences of the byte $35. As each byte was found, I disassembled the bytes around it, to ensure it was program and not data, and made note of the LD HL instruction before each DEC. That list of addresses was then further examined to see which ones got initialised to eight, the starting number of lives. As it turned out, none of them did, so l searched for initialisation to seven and struck lucky. Once I'd found the HL value, I worked backwards to find the relevant DEC (HL) instruction, then NOPped it out by POKEing it with zero. That's all there is to it folks!

100 RESTORE 150
110 POKE 35538,191: POKE 35600,14: POKE 35601,254
120 POKE 34997,0: POKE 34998,0: POKE 34999,0
130 FOR i=35547 TO 35590
140 READ a: POKE i,a: NEXT i
150 DATA 253, 229, 221, 229, 221, 33, 237, 255, 17, 17, 0, 175, 205, 194, 4, 6, 50, 118, 16, 253, 17, 0, 27, 62, 255, 221, 33, 0, 64, 205, 194, 4, 243, 221, 225, 253, 225, 14, 254, 0, 0, 0, 0 0
This listing allows SCREEN$ to be saved at any time during the game, simply by pressing the 'S' key.

99 REM correct pause bug
100 RESTORE 150
110 POKE 35591,195: POKE 35592,240: POKE 35593,255
130 FOR i=65520 TO 65535
140 READ a: POKE i,a: NEXT i
150 DATA 197, 33, 0, 154, 17, 0, 90, 1, 0, 1, 237, 176, 193, 195, 18, 139
This patch cures the 'pause' bug which affects Interface 1 jet-setters.

The general method for any such hacking is to search for expected op codes, but it can take a long time. There is another method, which I think a few correspondents used, known as 'random POKEing';

however, this can be rather a hit and miss affair. Be patient - to find all the POKEs above took a lot of time, a lot of work, and a large quantity of listing paper. But it's been worth it.


Good as the game is, there are some bugs in JSW. The Attic 'feature' is really an accidental consequence of a faulty byte in the sprite data, and you've probably found the way you can lose all of your lives (even infinite ones) by dying in the wrong place at the edge of the screen. Interface 1 owners will also know that pressing a key to pause the program, in
fact, pauses it forever - the whole thing locks up. It is caused by a read of port 0, (which actually locks the machine up rather well) in turn caused by a missing LD C,$FE instruction. A mysterious correspondent known only as IAC has supplied a program that corrects the bug, and it is included in this article in a form you can add to the loader already given.
The very top few K of JSW consists of code that addresses a complex piece of hardware, and now I've found out what it is - it's actually the TRS-DOS, copied straight from the TRS80 that Matthew Smith used to write JSW; this is thus a handy place to put any patches or mods,
or even some extra screens.


To end this article on a high spot, I've also provided a listing to enable SCREEN$s to be taken from the program and stored on cassette.
Thus, at any time during the game, pressing the 'S' key will save the screen to tape, but be sure to start recording before you press it.
Although this has so far only been involved with JSW, consider it open for hacking business of any kind - how about having a go on Lunar Jetman, Trashman or Chuckie Egg?
Home Contents KwikPik