Resource centre for ZX Spectrum games
      using Manic Miner and Jet Set Willy game engines

 

Archive of the

Manic Miner & Jet Set Willy Yahoo! Group

messages

 

arrowleft Previous message
Next message arrowright
arrowleftthread Previous in thread
Next in thread arrowrightthread

 

 

Message: 5390

Author: andrewbroad

Date: 02/01/2006

Subject: Rope-teleports (Re: Amazing new quirky feature ??? !!!)

 

Daniel wrote:

I have discovered an amazing thing happening in one of the rooms
of Sendy's and mine "Jet Set Willy: Mind Control", which I think
must be a new, truly esoteric quirky feature of the game engine -
or a bug, perhaps? I did not consider it something that needed to
be removed from the game before the final release; in fact, I
think it's quite cool. But I am not sure how to explain in –
perhaps those of you who have technical knowledge – like John,
Andrew and the others – could look into it.

I actually thought I was experiencing hallucinations :-) , because
I saw it happen two or three times, and then I couldn't repeat it
any more. Before writing this message I played around a bit,
though, and I think I have at least established how to repeat the
phenomenon.

Go to "Fresh air ain't always good 4 U" (096). Exit to the right
so that you jump through an innocent-looking block (ILB) in the
adjacent room (you need to start the jump in "Fresh air ain't
always good 4 U" standing with your legs outstretched, to the
right of the "4", with your left leg practically in line with the
vertical line in "4"). Save a snaphot, because a badly-positioned
jump will result in a multiple-death scenario! As you jump, hold
the "Right" key - if you don't, you will experience a repeated-
death scenario in "Playing with Yourself", where you will fall
after going through the ILB in "A Little Room with a View".

In "Playing with Yourself" (054), walk right dropping onto the
platform below you, save a snapshot, and then make another classic
jump through an innocent-looking block - in this case, the
leftmost cyan-and-green Earth-cell sustaining the blue-and-yellow
platform on which an item is sitting. The jump must be perfect or
you will be trapped on that platform. After a successful jump,
hold the "Right" key so that you can stand still on the conveyor
and wait for the proper time to jump over the red flowerlike metal
trap and the horizontal guardian moving on the left side of the
platform on which you landed.

Exit the room to the left, into "The Pool Table" (009) and... YOU
WILL BE TRANSPORTED IMMEDIATELY – teleported, sort of - INTO THE
ROOM ABOVE (which is "Fresh air ain't always good 4 U"), and
appear at the bottom of the room, in its central part, next to the
entrance/exit downwards – as if you had just entered this room
from below!

This should happen immediately after you enter "The Pool Table".
If it doesn't, move left or right or jump – and you should be
teleported immediately.

I followed your instructions, but was unable to replicate the
effect. If you could provide a snapshot saved just before walking
into "The Pool Table", such that you can just walk left and be
teleported, perhaps I could analyse what's going on using SPECSAISIE
Compare.

The trick doesn't seem to work if you jump through the ILB in "A
Little Room with a View", but don't jump through the ILB
in "Playing with Yourself". It's hard to tell whether it would
work the other way round, because you can only get on the platform
from which you perform the jump in "Playing with Yourself" after
entering the room from above, after jumping through the ILB in "A
Little Room with a View".

At first I thought that this weird phenomenon had something to do
with the rope in "The Pool Table" and that it was an effect
similar to the bug (feature?) which causes Willy to be caught by
the rope no matter where he is in the room when an arrow hits the
rope (first seen in the room "Into the sky" in Richard
Hallas's "Join the Jet-Set!", TTBOMK) or when the rope hits a Fire-
cell (as in "Money For Old Rope" in Phillip Bee's "Jet-Set Willy
Ivy"). But after further investigation I am inclined to associate
it more with jumps through ILBs, because I see no connection with
the rope whatsoever.

Can anyone explain why it happens? And if it is some kind of
quirky feature of the game engine, could it be exploited
consciously? If my speculations that it is related to jumps
through ILBs are right (and they are just wild guesses), it would
open incredible possibilities – like having to perform a certain
action in order to be carried into a secret room, or something
like this.

Although ropes are an area of JSW that I don't understand 100%, I
don't see why it should have anything to do with having jumped
through an ILB.

If a rope collides with a pixel that was drawn before it (i.e. a
cell, Willy, or a guardian which precedes it in the room's guardian-
instance list), then the rope picks Willy up at the position of the
collision, no matter where Willy is at the time of the collision.

So if the collision happens near the top of the screen, Willy will
be `teleported' to the room above.

I have seen this bug in J4's "Burning Bridge" on my real Spectrum,
but am unable to replicate it for that room under RealSpectrum.

This bug can also be caused by placing the rope in an `invalid'
column, as I found when writing the room "WE PRETTY" and Party
Willy's "La Maison de Jet Set Dick", both of which feature non-
swinging ropes. I eliminated the bug by trial and error, without
understanding the rule for a valid rope-column.

In "The Pool Table" and "Burning Bridge", where I'm unable to
replicate the effect, the only thing that occurs to me is that a
memory-leak could have corrupted the room-data, with erroneous
pixels causing a collision?

"The Pool Table" and "Burning Bridge" have this in common: that the
rope is the /eighth/ guardian-instance in the room.

When you enter a room and it is copied into the current-room buffer
(32768-33023), the guardian-classes of the guardian-instances are
copied into an 8x8-byte guardian-buffer at 33024-33087.*

But a rope overwrites the /ninth/ byte of its guardian-class in this
buffer. So if the rope is the room's 8th guardian-instance, it will
overwrite the byte at 33088,* which is off the end of the buffer!
---
[* Each room can have up to 8 guardian-instances, and each guardian-
class is 8 bytes. But the JSW disassemblies say that the guardian-
buffer is 256 rather than 64 bytes, so correct me if I'm wrong.]

When data are written to incorrect addresses, they can come back to
haunt you much later, as in the Attic-Bug, or the jumping-off-the-
top-of-the-screen bug which corrupts Room 7 in Manic Miner.

--
Dr. Andrew Broad
http://www.geocities.com/andrewbroad/
http://www.geocities.com/andrewbroad/spectrum/
http://www.geocities.com/andrewbroad/spectrum/willy/
http://www.geocities.com/andrewbroad/spectrum/willy/collision.html

 

 

arrowleft Previous message Back to the Yahoo! Archive
home page
Next message arrowright
arrowleftthread Previous in thread Next in thread arrowrightthread