Jump to content
Jet Set Willy & Manic Miner Community

[File] Jet Set Mini


IRF

Recommended Posts

Since Andy has now grabbed Danny's recording, I've taken the liberty of removing it from his post.  I'd rather it wasn't freely available as it's a bit of a giveaway when the sole focus of the recording is that manoeuvre.  (I don't mind the manoeuvre being shown in the context of a complete walkthrough of the whole game to submit to the RZX Archive, where it would be 'buried in the mix'.)

Link to comment
Share on other sites

Anyway, I'm glad you both enjoyed the puzzle!

 

There are three things left for me to explain (at a later date):

 

1 - How the 'hidden' message is implemented (and why it is only visible sometimes);

2 - How the feature which it is alluding to is implemented;

3 - The implications for the most efficient route through the layout (Danny may figure this out for himself!)

Link to comment
Share on other sites

That's a good thought! Yes there are enough clues scattered about now, possibly erm 'trim' any posts a little bit too if you think its warranted.

 

It's okay, I don't mind leaving the clues!

 

By the way Andy, did you try to solve the rest of the puzzle yet (without watching Danny's recording)?

Link to comment
Share on other sites

There are three things left for me to explain (at a later date):

 

1 - How the 'hidden' message is implemented (and why it is only visible sometimes);

 

Explanation for Point 1 above:

 

The message in 'The Nightmare Room' is printed across the top of the status bar, upon entry to the room.  However, by default, the top character row of attributes for the status bar (addresses #5A00-#5A1F) hold the value zero.  So the message is printed in black INK on black PAPER, and thus is normally invisible.

 

****

 

Now, you may recall that in the Kitchen diptych of rooms, a flickering screen effect takes place - as you climb up through that pair of rooms, the screen flickers first in yellow, and then in red (it's hot in the kitchen, and heat rises!)

 

That flickering effect is implemented by overwriting the physical screen attributes (addresses #5800-#59FF) with yellow or red INK during each game tick.  (As opposed to the 'standard' screen flash [such as you see in Manic Miner when you gain an extra life], which is implemented by overwriting the secondary attribute buffer (addresses #5C00-#5DFF) before the secondary buffers are copied across to the physical screen.)

 

However, when I wrote the patch for the Kitchen screens, I made sure that the overwriting of the screen attributes 'overshoots' the range of addresses that you would expect - instead of a LDIR length of #0200 (or rather #01FF) for the sixteen character rows of attributes of the playable screen, I used BC = #021F for the length of the LDIR loop, so it covers seventeen character rows.  This causes the yellow or red INK also to be spread across addresses #5A00-#5A1F - although this is not noticeable in the Kitchens (because nothing is printed across that character row's pixels in that room).

 

Now, unlike the top two-thirds of the screen attributes during the Kitchen flickering, which are all refreshed during the next tick of the game, the overwriting of the top character row of the status bar's attributes is semi-permanent.  Therefore if you climb up through the Kitchen screens, emerge in the Banyan Tree and then proceed into The Nightmare Room, then the previously invisible message in that room becomes visible!  (In red INK - although if you climb halfway up the Kitchen screens until the yellow flickering occurs, but then abandon that route and instead make your way back up the Main Stairway to approach The Nightmare Room from the other direction, then you can actually see the message printed in yellow INK!)

 

****

 

Note that I said the change in colour of the top character row of the status is semi-permanent.  If you abandon the game and start another game, then the black INK of that character row will be restored and so the Nightmare Room message reverts to invisible.  The same is true if you pause and unpause the game ('in-game', so to speak, using keys A-G), since the Main Loop compensates when you come out of a pause for the colour-cycling which takes place during the pause, by restoring the attributes of the whole of the status bar back to their default values. (See #8B07-#8B11.)

 

So if you try pausing and then resuming the game in The Nightmare Room at a time when the 'hidden' message is initially visible, you'll notice that the message promptly disappears - even if you don't actually pause for long enough for the colour-cycling effect to begin.

Edited by IRF
Link to comment
Share on other sites

2 - How the feature which the hidden message is alluding to is implemented;

 

The wall in The Nightmare Room appears to be entirely solid.  However, upon entry to the room, a Room Setup Patch overwrites part of the wall with a different attribute value to that assigned to the rooms' Earth blocks, creating a pair of 'pseudo-Earth cells'.

 

You can see the same process going on in the adjacent room 'The Banyan Tree', where there is another 'pseudo-Earth cell' (just under the ramp and above/to the left of the Barrel sprite).  Note that this 'pseudo-Earth cell' has the same pixel pattern as the regular Earth cells, but a different colour attribute, meaning that Willy can pass through it [in either direction; not just because of the asymmetrical test for head height Earth blocks] - bear in mind that Water cell behaviour is the default status of all non-standard room blocks.

 

However, whilst the pseudo-Earth cell in The Banyan Tree is visibly a different colour to the rest of the Earth cells, that is not the case in The Nightmare Room.  Because in that room, there is also a Main Loop Patch which colours the two pseudo-Earth cells (at the level of the secondary attribute buffer) back to the same colour as the regular Earth cells!  So there is no visible difference between any of the Earth cells.  (The pixel patterns being identical because the pseudo-Earth cells started off as regular Earth cells, and the Room Setup Patch is implemented after the room data has been decompressed and the pixels for the block types have been expanded out.)

 

But these pseudo-Earth cells behave differently, in terms of their ability to block Willy from passing through them [or in this case, their lack of being able to do so - Water cell behaviour being the default status of all non-standard room blocks], because the Main Loop Patch is implemented after the 'Move Willy' routine has been CALLed from the Main Loop.  So at the moment when 'Move Willy' is executed, these cells hold a non-Earth attribute value 'behind the scenes', which is then overwritten by the Earth colour attribute prior to the physical screen update (so what you see, apparently, is regular Earth blocks).

 

And then during the start of the next pass through the Main Loop, the cells in question are restored back to their default Water behaviour, when the primary attribute buffer is copied to the secondary attribute buffer (only for those cells to be 'disguised' again, after the next execution of 'Move Willy', by the Main Loop Patch.  And so on.)

 

****

 

All of the above led me to include this credit in the Readme file for 'Jet Set Mini':

 

- Stuart Brady, for his Cell-Graphics Bug Fix, and for his helpful explanation of the way that the various 'screen buffers' work in the JSW game engine (primary and secondary buffers, for both the display and attribute files). A deep insight into how the screen buffers operate was essential when devising many of the Patch Vector effects in 'Jet Set Mini'.

 

 

EDIT: You may also notice that there is another 'disguised' cell in 'The Banyan Tree': the cell underneath the uppermost item is a 'pseudo-Water cell' (it has the same pixel pattern as the regular Water cells, but with a different colour attribute) - but here it unexpectedly behaves as an Earth cell!  At the level of the primary attribute buffer, this cell has the same red/yellow colour attributes as the Earth blocks (thanks to a Room Setup Patch), but that is then overwritten by the Main Loop Patch, giving it the cyan colour you see that distinguishes it from the regular, darker blue colour of the Water cells in the Banyan Tree.

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.