Your Spectrum
Issue 6, August 1984 - Jet Set Willy
JET SET WILLY
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.

JUMP TO IT

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"
30 LOAD ""CODE
98
99 REM POKEs after here
898
899 INPUT "Press ENTER to start"; LINE A$
900 RANDOMIZE USR 33792

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.
ROOM NUMBER ROOM NAME THE COMBINATION OF KEYS REQUIRED
0- The Off Licence 9
1- The Bridge 1 9
2- Under the Mega Tree 2 9
3- At the Foot of the Mega Tree 1 2 9
4- The Drive 3 9
5- The Security Guard 1 3 9
6- Entrance to Hades 2 3 9
7- Cuckoo's Nest 1 2 3 9
8- Iniside the Mega Trunk 4 9
9- On a Branch Over the Drive 1 4 9
10- The Front Door 2 4 9
11- The Hall 1 2 4 9
12- Tree Top 3 4 9
13- Out on a Limb 1 3 4 9
14- Rescue Esmerelda 1 2 3 4 9
15- I'm sure I've seen this before ... 1 2 3 4 9
16- We must perform a Quirkafleeg 5 9
17- Up on the Battlements 1 5 9
18- On the Roof 2 5 9
19- The Forgotten Abbey 1 2 5 9
20- Ballroom East 3 5 9
21- Ballroom West 1 3 5 9
22- To the Kitchens - Main Stairway 2 3 5 9
23- The Kitchen 1 2 3 5 9
24- West of Kitchen 1 4 5 9
25- Cold Store 1 4 5 9
26- East Wall Base 1 2 4 5 9
27- The Chapel 1 2 4 5 9
28- First Landing 3 4 5 9
29- The Nightmare Room 1 3 4 5 9
30- The Banyan Tree 2 3 4 5 9
31- Swimming Pool 1 2 3 4 5 9
32- Halfway up the East Wall 1 6 9
33- The Bathroom 1 6 9
34- Top Landing 2 6 9
35- Master Bedroom 1 2 6 9
36- A Bit of Tree 3 6 9
37- Orangery 1 3 6 9
38- Priests' Hole 2 3 6 9
39- Emergency Generator 1 2 3 6 9
40- Dr Jones will never believe this 4 6 9
41- The Attic 1 4 6 9
42- Under the Roof 2 4 6 9
43- Conservatory Roof 1 2 4 5 9
44- On Top of the House 1 3 4 6 9
45- Under the Drive 1 3 4 6 9
46- Tree Root 1 2 3 4 6 9
47- [ 1 2 3 4 6 9
48- Nomen Luni 1 2 5 6 9
49- The Wine Cellar 1 2 5 6 9
50- Watch Tower 1 2 5 6 9
51- Tool Shed 1 2 5 6 9
52- Back Stairway 3 5 6 9
53- Back Door 1 3 5 6 9
54- West Wing 2 3 5 6 9
55- West Bedroom 1 2 3 5 6 9
56- West Wing Roof 1 4 5 6 9
57- Above the West Bedroom 1 4 5 6 9
58- The Beach 2 4 5 6 9
59- The Yacht 1 2 4 5 6 9
60- The Bow 1 3 4 5 6 9

JET SET WILLY
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.

THANK YOU PEOPLE

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.

FIRST STEPS IN HACKING

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!

99 REM SAVE as SCREEN$
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.

WILLY'S BLUES

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.

SCREEN DREAMS

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?

AltStyle によって変換されたページ (->オリジナル) /