|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
First, let's have a look at the POKEs that I mentioned:
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 ITFor those who don't know how to break into JSW, I have included a general loader program that can be altered to
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.
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 PEOPLETime 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
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 HACKINGQuite 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!
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 BLUESGood 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 DREAMSTo 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?