Jump to content
Jet Set Willy & Manic Miner Community

Unusual Pokes (Spectrum Version)


Spider

Recommended Posts

Disable arrows:

POKE 37431,195 : POKE 37432,161 : POKE 37433,146

 

Disable guardians

POKE 37334,195 : POKE 37335,52 : POKE 37336,146

 

These work better than some of the other methods as those either leave the ink behind (so if you stand in the path of a guardian you can see where it was) or some disable all the ropes too which is not ideal.

 

The methods above apply a JP to skip over the 'guardian' or 'arrow' code when the routine looks at the type of entity to deal with. There are probably other ways of doing this however this seems to work fine.

Edited by Spider
Link to comment
Share on other sites

During game development, It's sometimes useful to be able to quickly switch features on and off without having to resort to either re-starting the game, manually editing the assembly or worse still: having to reload it to test again.

With this in mind the following "quick debug" pok files should prove useful. They certainly have to me! :)

Note that its not really intended to use all options at once although you could, but there is little point in for example disabling a guardians movement and removing it as well.

 

Note due to differences in how emulators handle (or not!) .pok files especially concerning zero values or replacement zero's, it is necessary to have two files and that you check / uncheck what is needed with each one.


Debug_on.pok provides the following options:

FREEZE Vertical Guardians: As described, they are not removed and are still harmful, they just stop moving. Re-entering a room will reset them to their initial positions which may be good (or bad!) news for Willy. It would probably be wise to use the Guardian Collision Detect with this, depending on what you are doing.

FREEZE Horizontal Guardians: The same as above, except for the horizontal ones.

FREEZE Ropes: The same as guardians but acting on ropes. Note Willy can still safely climb and use them in their frozen state.

REMOVE All Guardians: This removes both horizontal and vertical guardians, apart from Maria who is not really a Guardian in the 'normal' sense as such. Note that this does not stop their movement routines, so if you re-enable them they may not appear in the same place along their path when they were removed.

REMOVE All Arrows: Similar to Remove All Guardians, except it acts on arrows instead.

REMOVE Ropes: As the two above but for ropes.

DISABLE Guardian Detection: Allows Willy to walk straight through horizontal and vertical guardians without harm.

DISABLE Fire Cell Collision Detection: Allows Willy to walk straight through any fire cells. Note they are partly treated as water cells and its possible for him to accidentally fall through them. This is only really an issue if the cell is the lowest block on the screen where care must be taken to avoid him falling through to the room below if its been defined.

DISABLE Earth Cell Detection: This in effect treats solid earth cells as water cells, meaning Willy can walk through and also climb them as if they were water cells. This means he can walk or jump through most previously solid walls. A small side effect is if the lowest block in a room is an earth cell he can sometimes fall through it upon standing on it so a little bit of care must be taken.

DISABLE All conveyors: Allows Willy free travel in either direction on a conveyor. Note the conveyor remains animated.

FREEZE Clock: Infinite Time On.

Writetyper Mode ON: Should not really need any explanation!

Auto Item Collection ON: Again, pretty obvious. All items are automatically collected upon entry to a room.

Fall Any Height ON: Self explanatory!

Infinite Lives ON: Pretty obvious.


The Debug_off.pok reverses all (or some) of the changes above:

UN-FREEZE Vertical Guardians: As it says, it would be wise to ensure Willy is not too nearby a Guardian before switching their movement back on, unless you have disabled collision detection.

UN-FREEZE Horizontal Guardians: As above, but for the horizontal ones.

UN-FREEZE Ropes: Allow them to continue to swing.

ENABLE All Guardians: Switches them back on. See the note above about their positioning upon activating this.

ENABLE All Arrows: The same as enabling the Guardians but for arrows instead.

ENABLE Ropes: Switches ropes back on if they were disabled.

ENABLE Fire Cell Collision Detection: Switches instant death upon contacting a fire cell back on.

ENABLE Earth Cell Detection:  Restores earth cells back to being solid again. Ensure Willy is not standing inside a wall when applying this.

ENABLE Conveyors: Switches the conveyor movement back on.

UN-FREEZE Clock: Infinite Time Off.

Writetype Mode OFF: Disables Writetyper mode. Re-activate via the above or the more conventional method in the Landing if preferred.

Auto Item Collection OFF: Willy will need to touch the item to collect it as per normal.

Fall Any Height OFF: Restores normal death by falling too far. Note that re-enabling this 'mid fall' could have some odd effects.

Infinite Lives OFF: Pretty obvious I hope.

JSW_Debug_Mode_ON.pok

JSW_Debug_Mode_OFF.pok

Link to comment
Share on other sites

Perhaps unsurprisingly, the 'Disable Arrows' poke prevents the attic bug from taking effect! Would adding the keycode bypass be beneficial?

I did consider (well kind of) that but its only effective initially.

 

There are a few ways of doing it:

 

1. Change the (slightly obfuscated) code to make it jump to the title page , completely bypassing the code section. At least two ways of doing this.

2. Change it so it accepts any code on the first attempt.

3. As (2) but for the second attempt

4. As (2) and (3) but make it go to the title screen after the second code (rightly or wrongly)

 

:)

 

You can't jump to the immediate title page from Basic without issues, however all the (largish) startup code can be thrown out (I have an update to my trim tool coming soon) with simply setting the SP and disabling the interrupts, at this stage you can then jump straight to the start. I'd sort of consider this not normal although doing this does relive a lot of free space potentially (all the startup code and all the keypad code) plus the 'DI / SP / JP' can go anywhere as its never used again once its called.

Link to comment
Share on other sites

1.

POKE 33792,243 DI ; Disable interrupts

 

POKE 33793,49

POKE 33794,254

POKE 33795,91 LD SP, 23550 ; set the stack pointer

 

POKE 33796,195

POKE 33797,202

POKE 33798,135 JP 34762 ; jump to the title screen code

 

2. POKE 34483, 195 ;This changes what was 'JP Z, 34762' (jump to title screen if code was correct) to 'JP 34762' (jump to title screen) regardless of what code was entered.

 

3. POKE 34493, 195 ; Same as (2) but on the second entry attempt. If the first code was actually correct ( ! ) then it would start the game anyway. Otherwise the second code (right or wrong) is accepted.

 

4. POKE 34497, 202 : POKE 34498, 135 ; These change the 'the second code was incorrect so reset the machine aka 'JP 0' to 'JP 34762' so that after failing the second attempt the game is started anyway.

 

Hope that explains it a bit. The actual 'test code' looks like this:

 

LD HL, 16384         ; 34463 33     0     64
LD DE, 16385         ; 34466 17     1     64
LD BC, 6911         ; 34469 1     255 26
LD (HL), 0         ; 34472 54     0
LDIR             ; 34474 237 176

The code above blacks out the screen. Paper 0 etc.

LD IX, 34187         ; 34476 221 33     139 133
CALL 34499         ; 34480 205 195 134

The code above tells it where to get the message to display "enter code..." and calls the keypad entry routine

JP Z, 34762         ; 34483 202 202 135

If the code was correct (Z flag set) then jump to the title screen (34762) else...

LD IX, 34219         ; 34486 221 33     171 133
CALL 34499         ; 34490 205 195 134

The code above similar to the first attempt (different message, "sorry please try...") and calls the keypad routine again

JP Z, 34762         ; 34493 202 202 135

Again, if the code entered was correct jump to the title screen (34762) else...

JP 0             ; 34496 195 0    

Reset the machine aka USR 0

Link to comment
Share on other sites

On the subject of bugs, I've created a POK file with all the bug corrections I can find so far with the help of this site and Skoolkid so far they include conveyor appearance, lowering max rope heights, revealing 1st landing and swimming pool objects, patching the nightmare room plus all the official ones but what i'd like to find is the one for the 'Saw' guardian in the 'Cuckoo's Nest' .. can't seem to find it anywhere?

Edited by Metalmickey
Link to comment
Share on other sites

I think that's on Skoolkit, as well as the monk that walks backwards in The Chapel:

 

http://skoolkid.github.io/jetsetwilly/reference/facts.html#oneWaySaw

 

http://skoolkid.github.io/jetsetwilly/reference/facts.html#disrespectfulMonk

 

Or for an alternative fix for that monk, try:

 

POKE 56311,140

 

Which I believe will still make it walk backwards, but more 'respectfully' i.e. always facing the altar!

Link to comment
Share on other sites

On the subject of bugs, I've created a POK file with all the bug corrections I can find so far with the help of this site and Skoolkid so far they include conveyor appearance, lowering max rope heights, revealing 1st landing and swimming pool objects, patching the nightmare room plus all the official ones but what i'd like to find is the one for the 'Saw' guardian in the 'Cuckoo's Nest' .. can't seem to find it anywhere?

 

POKE 41785,227 (Monk) The Chapel

POKE 41849,227 (Saw) Cuckoo's Nest

 

Do you need any help with giving the 'new object in Hall' a shape and / or adjusting the beach object down to one item via a POKE ?

 

 

I think that's on Skoolkit, as well as the monk that walks backwards in The Chapel:

 

http://skoolkid.github.io/jetsetwilly/reference/facts.html#oneWaySaw

 

http://skoolkid.github.io/jetsetwilly/reference/facts.html#disrespectfulMonk

 

Or for an alternative fix for that monk, try:

 

POKE 56311,140

 

Which I believe will still make it walk backwards, but more 'respectfully' i.e. always facing the altar!

 

I think that will still have them facing the wrong way just using all the frames ? :unsure:

Edited by Spider
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.