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?