Jump to content
Jet Set Willy & Manic Miner Community

Cheat modes in JSW128


jetsetdanny

Recommended Posts

6 hours ago, jetsetdanny said:

Ian, thank you so much for your detailed explanation of how the code works to form the password that activates the cheat mode! 👍 Your explanation has allowed me to understand how it works and it's all clear to me now, which I have confirmed by making a test and modifying the password successfully 🙂.

To take this a bit further, the following three commands in the JSW128 Cheat routine could be edited to change the half-rows of keys that are picked up:

At #C428, there is LD BC, #FBFE (01 FE FB in opcode)

At #C446, you will find LD B, #DF (06 DF)

At #C45E, we have LD B, #FD (06 FD)

Changing the value that is loaded up to B in one or more of the above commands will change the half-row(s) from which keypresses are detected.  Doing that in conjunction with editing the data at #C480-#C49A could allow you to have a 9-letter Cheat password that draws characters from any three half-rows of keys.

e.g. POKE #C45F, #FE changes the existing password to ZUPERUZER (loading B=#FE allows you to access the half-row SHIFT-V, and in this case there is no need to edit the table at #C480-9A, because 'Z' occupies the same position as 'S' in their respective half-rows - pressing them resets Bit 1 in both cases).

Note that if you're using a key like 'Z' as part of your password, which also functions as a Jump key, then you have to wait until Willy has landed again after pressing it before proceeding with pressing the next character in the password sequence - I've just tried it though and it does work!

There is a very handy table below (from the following link), which gives a full list of all the ports and bits that correspond to each key on the Spectrum:

http://www.breakintoprogram.co.uk/computers/zx-spectrum/keyboard

 

table_spectrum_keyboard_ports.png

Edited by IRF
Link to comment
Share on other sites

P.S. I did try out using 'A' in a Cheat password, but it seems to pause the game and therefore cause the code which detects Cheat keypresses to be bypassed, before the program gets chance to update the Cheat Key Counter variable.

So if you come up with a password for which you wish to use the 'A' key - which may well be the case since it happens to be a vowel - then you would need to change the Pause button. e.g. changing the 'AND 01 CP 01' at #8AC8-8ACB to 'AND 04 CP 04' makes 'D' the JSW128 pause button instead of 'A'.  (Or you could just ditch having an in-game Pause key, and use your emulator's Pause function instead!)

Edited by IRF
Link to comment
Share on other sites

19 hours ago, IRF said:

I do recall observing that glitch a while ago (and coming up with an explanation how it works in terms of the code - I think the Main Loop gets stuck in a, er, loop!)

You can easily get out of it though, without resetting the game, by just toggling Invincibility Mode back off again.🙂

In my particular experience it didn't work. I toggled both special modes (invincibility and antigravity) off, but Willy didn't get killed. It was as if he wasn't there to get killed (or reappear), sort of...

Link to comment
Share on other sites

6 hours ago, jetsetdanny said:

In my particular experience it didn't work. I toggled both special modes (invincibility and antigravity) off, but Willy didn't get killed. It was as if he wasn't there to get killed (or reappear), sort of...

How strange, I wonder if it was an issue with your emulator?

I've done a RZX recording to try and replicate what you described - see the attached - but I didn't encounter the problem (well, I did get the empty screen, but toggling the Forcefield off resolved the issue).  Once the recording has finished, perhaps you could 'take back control' to see if you can replicate what you saw before?

Forcefield Bug.rzx

Link to comment
Share on other sites

On 3/9/2021 at 9:59 AM, IRF said:

in terms of the usefulness of the Forcefield and antiGravity features, I believe they are useful tools to be used in conjunction with the inter-room teleportation via Z/X/C/V (part of the package, if you will).

If you try to teleport between rooms without using SHIFT+F and SHIFT+G, then it is possible to inadvertently end up in an Infinite Death Scenario if you appear in a room on top of a guardian or Fire cell, or if you emerge suspended in mid-air more than four character rows above a solid surface.

The Forcefield and antiGrav features are therefore recommended (by none other than John Elliott himself!) to be toggled on before you attempt to use Z/X/C/V for inter-room teleportation, and then once you have arrived at your intended destination, and you've ensured that Willy is in a safe position, you can toggle F and G back off again. 😃

 

Regarding the above, I meant to point out that the same is also true of using the WRITETYPER feature in a JSW128/JSW64 game. i.e. If you have activated Forcefield and anti-Gravity, then you can use WRITETYPER to get around without risk of accidentally suffering an IDS.

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.