Jump to content
Jet Set Willy & Manic Miner Community

Cheat modes in JSW128


jetsetdanny

Recommended Posts

The JSW128 game engine, created by John Elliott as an extension of the original JSW48 game engine, has a special cheat mode. This is in addition to the Writetyper cheat, which also works.

 

The Writetyper cheat is activated at the bottom of "First Landing" (028), just like in the original "JSW", by keying in the word "writetyper".

 

A foot appears to the right of the last remaining life to show that Writytyper has been turned on.

 

The cheat uses keys 1-8 (instead of 1-6 in the original "JSW") which need to be pressed together with 9 to teleport to another room.

 

I am not aware of information about how to activate the other cheat mode and how it works ever being made public. I think it is high time it was, for the sake not only of the players, but also game creators who would like to check how it works in their games.

 

I have been able to establish the following so far (using the information John gives on his website):

 

The cheat mode indicator is at #C400. The value which turns it on is 9. So, POKE 50176,9 turns it on. A hash symbol then appears to the right of the last remaining life.

 

If both Writetyper and the other cheat mode are activated, the Writetyper foot is next to the last remaining life, and the other cheat mode symbol is to its right.

 

Both Writetyper and the other cheat mode stay on after the game is over. When you start another game, they are already activated - once on, they're always on.

 

When the other cheat mode is activated, you can move to the room to the left by pressing "z", to the room to the right by pressing "v", to the room which is above your current room by pressing "c" and to the room which is below your current room by pressing "x".

 

Judging by John Elliott's notes, the cheat mode also provides invincibility, antigravity and fast inter-room teleportation. It is also supposed to switch on the cheat-mode in-game tune. I have not been able to experience any of these effects so far. 

 

I also don't know how to turn on the other cheat mode in a normal way (without POKing the game). I know it has to be done at the bottom of room 046 ("Root" in the original Jet Set Willy 128) and it seems to me that the first letter you need to input is "s". However, I haven't been able to figure out the rest yet.

 

I know some of you know the secrets of this cheat mode (John Elliott, of course, plus at least one other person I know of) - please share them here :).

Link to comment
Share on other sites

Yes, it definitely is possible.

 

The data in question is at #C480 - #C49A and it is similar to the code in the original "JSW" (described by SkoolKid here). 

 

However, I think there is some difference in the earlier code which handles this data.

 

WRITETYPER in the original "JSW" is coded in the following way:

 

1f 1f    no keys pressed
1d 1f   w
17 1f   r 
1f 1b   i
0f 1f    t
1b 1f   e
0f 1f    t
1f 0f    y
1f 1e   p
1b 1f   e
17 1f   r

 

If the data in JSW128 corresponded to what happens in the original "JSW", the input would have to be (AFAICT):

 

1f 1f    no keys pressed
1d 1f   w
17 1f   r
1f 1e   p  
1f 1b   i
1f 1f    no keys pressed
17 1f   r
1f 1f    no keys pressed
17 1f   r
1f 1f    no keys pressed
1f 1d   o
1b 1f   e
1f 17   u
1f 1f    no keys pressed

 

However, it doesn't work like this, I think. Pressing "s" changes the value of #C400 to 01, so I think is the first letter. But I can't figure out the following ones.

 

Does your comment mean you've never cracked the cheat code activation yourself, Andrew, or did you just make a general comment as a hint as to how to proceed with cracking the code?

Edited by jetsetdanny
Link to comment
Share on other sites

The "fast inter-room teleportation" refers to the feature which you have succeeded in working out: using Z-X-C-V to move straight into adjacent rooms.

 

Invincibility and Antigravity features can each be toggled on/off by a combination of keypresses; you will know when you have managed to activate each one when another icon appears on the status bar. Keep digging into the code!

 

The alt cheat mode code works differently to WRITETYPER in that it draws from more than two half-rows of keys (hence it picks up 'S', which I presume that you discovered by chance?). Have a think about the possible implications of that for the structure of the data...

 

Using 6-8 as part of the WRITETYPER sequence works in an unexpected way. As John Elliott himself said:

 

"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. "

 

That was taken from: http://www.seasip.info/Jsw/doc128.html

 

Another enigmatic comment on that page hints at the location of the cheat code:

 

0C400h: Contains miscellaneous code.

 

Perhaps motivated by a desire to divert prying eyes from the cheat code, a short subroutine that is not part of the Cheat code, but which is contained within page #C4 (presumably for convenience), is missing from the page of JSW128 source code:

 

;--------------------------------------------------------------------------

;

;(v0.00HL2) Code to support multiple guardian tables.

;

;48k ;128k

ORG 8930h ORG 8930h

LD H,14h LD H,0

ADD HL,HL CALL CC4B6 ;Find table addr.

ADD HL,HL

ADD HL,HL

 

Unfortunately, a disassembly for the subroutine at #C4B6 (which picks up the location of the guardian tables, there being more than one of those in the JSW128 game engine) is not provided at

http://www.seasip.info/Jsw/jswdiffs.html

 

I think I once wrote up a disassembly for that subroutine in a post on the Yahoo! Group, but that is sadly no longer with us!

Link to comment
Share on other sites

Invincibility and Antigravity features can each be toggled on/off by a combination of keypresses; you will know when you have managed to activate each one when another icon appears on the status bar.

 

Incidentally, I once noticed that there is a missing graphic byte from the icon for Invincibility Mode, in some variants of JSW64.  #EB90 is NOPped out, whereas it should hold a value of '4B'.  (Danny, once you have managed to figure out how to activate Invincibility, try it out in your JSW64 games - it would be interesting to see if this visual glitch made it into some of your releases!)

Edited by IRF
Link to comment
Share on other sites

I think you have one too many bytes in the sequence below.  Where I have highlighted four consecutive values of '1F', there are in fact only supposed to be three '1F's (at #C491-93).

 

 


1f 1f    no keys pressed
1d 1f   w
17 1f   r
1f 1e   p  
1f 1b   i
1f 1f    no keys pressed
17 1f   r
1f 1f    no keys pressed
17 1f   r
1f 1f    no keys pressed
1f 1d   o
1b 1f   e
1f 17   u
1f 1f    no keys pressed
Edited by IRF
Link to comment
Share on other sites

Thanks for all your comments and tips, Ian! :)

 

I will continue the quest "when a convenient time presents itself" (to quote Geoff from another thread).

 

The alt cheat mode code works differently to WRITETYPER in that it draws from more than two half-rows of keys (hence it picks up 'S', which I presume that you discovered by chance?). Have a think about the possible implications of that for the structure of the data...

 

No, not quite by chance. I modified the code to stop the game instead of increasing the value of the cheat mode indicator at #C400 by inserting the HALT instruction and I tried pressing various keys to see which one would stop the game. Then, when it looked like "s" was the culprit, I verified on an unmodified file that it indeed makes the cheat mode indicator at #C400 increase from 00 to 01.

 

 

Incidentally, I once noticed that there is a missing graphic byte from the icon for Invincibility Mode, in some variants of JSW64.  #EB90 is NOPped out, whereas it should hold a value of '4B'.  (Danny, once you have managed to figure out how to activate Invincibility, try it out in your JSW64 games - it would be interesting to see if this visual glitch made it into some of your releases!)

 

This is precisely the reason I mentioned before why I think this information should not be a secret any more - game developers should be able to test the cheat mode and all things associated with it in their creations.

 

Fortunately, I have only designed one JSW64 game so far and it is Willy Games: The First 30 Years Quiz, where using a cheat mode would make exceptionally little sense  :lol: .

 

Does the missing graphic byte also affect the JSW128 games, though? If it does, it could affect "Jet Set Willy: The 2010 Megamix" and "Jet Set Willy: Mind Control"...

Link to comment
Share on other sites

I don't know if JSW128 games are affected by the glitch, but you could check easily by checking the value at the address #EB90 and see whether it holds #4B or #00.

 

It might just be a case where I accidentally erased the proper value from that address whilst I was playing around in the Hex Editor.  I can't even recall which file it was where I noticed it.  It's just something to look out for.

Link to comment
Share on other sites

The value of #EB90 is #4B in three JSW128 games I checked, so they are fine :) .

 

It is #00 in "Willy Games: The First 30 Years Quiz" which means that the game is affected by the bug. No worries, as mentioned above, I believe that using the cheat mode in this particular game wouldn't make any sense.

 

I just checked in an assortment of JSW64 engine games (N.B. I only checked in the TAP files; not the TZX where available).  This is what I found:

 

John Elliott's 'Jet Set Willy 64' (all six variants: V, W, X, Y, YY, Z) - #EB90 is NOPped out.

 

John Elliott's 'Jet Set Willy 64: Manic Miner' (available in two variants of the game engine: W and Z) - #EB90 holds the correct [as per JSW128] value of #4B.

 

Andrew Broad's 'Jet Set Willy 64: Manic Miner: James Bond' - #EB90 is NOPped out.

 

Andrew Broad's 'Jet Set Willy 64: Flash Manic Miner' - #EB90 is NOPped out.

 

Igor Makovski's 'Ultimate Manic Miner' - #EB90 is NOPped out.

 

So it seems that most of the released JSW64 engine games were built from one of the variants of 'Jet Set Willy 64' as a base file, all of which display the small visual bug in the Invincibility icon.  The only exception which I have found is John's 'Jet Set Willy 64: Manic Miner', which must have been developed separately at an earlier stage before the bug crept into the data.

 

**

 

Slightly off-topic: Danny, in the course of researching the above, I noticed that you don't appear to have an entry at JSWCentral.org for Andrew Broad's 'Manic Miner: Matthew Smith 2008 Remix' (which was released as a bonus with Andrew's 'Flash Manic Miner', and which formed the starting point - along with 'reniM cinaM' - for the JSWMM release 'Manic Mixup')?

Edited by IRF
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.