Jump to content
Jet Set Willy & Manic Miner Community

Willy disassemblies in hexadecimal


SkoolKid

Recommended Posts

Question: on the toilet dash, the code at around #8A06 "sets Willy's animation frame at 85D2 to 1 or 3 if Willy is running to the toilet or already has his head down it; this has the effect of moving Willy at twice his normal speed as he makes his way to the toilet".

 

But doesn't he display animation frames 0 and 2 when he's on the toilet dash?  (i.e. The two 'intermediate' frames, so it looks like he's gliding without moving his legs at all.)

Link to comment
Share on other sites

[Pedantry alert!]  I've just noticed an error (I think) in the disassembly.

 

The entry at #8820-8827 is described as "Copy the attribute bytes for the top two-thirds of the title screen from 9800 to the attribute file".

 

In fact, the LD BC command at #8823 copies the attribute bytes for the entire title screen from #9800 AND #9A00, as determined by the operand #0300.

 

(So it sets the attributes for the bottom third of the title screen, as well as for the playing area.)

Well spotted! Another item for my TODO list...

Link to comment
Share on other sites

Question: on the toilet dash, the code at around #8A06 "sets Willy's animation frame at 85D2 to 1 or 3 if Willy is running to the toilet or already has his head down it; this has the effect of moving Willy at twice his normal speed as he makes his way to the toilet".

 

But doesn't he display animation frames 0 and 2 when he's on the toilet dash?  (i.e. The two 'intermediate' frames, so it looks like he's gliding without moving his legs at all.)

Yes, Willy's animation frame is either 0 or 2 during the toilet dash, because it's incremented from 3 or 1 by the 'Move Willy' routine on the next pass through the main loop before he's drawn.

 

I'll add a note to the comment to make that clearer.

Link to comment
Share on other sites

Yes, Willy's animation frame is either 0 or 2 during the toilet dash, because it's incremented from 3 or 1 by the 'Move Willy' routine on the next pass through the main loop before he's drawn.

 

I'll add a note to the comment to make that clearer.

There does seem to be a mismatch between Willy's 'physical presence' (the room cells that take on his attributes), and where his sprite is drawn on the screen.

 

Certainly during jumping - if you take the 'Through the Wall' illustrations in the Bugs section of your Manic Miner disassembly, they certainly do give a better representation of how he interacts with the various room elements.

 

However, if you study Willy's jumping by pausing the game at each time-frame during a jump, his sprite appears on screen at a higher y-coordinate (during the descent from the highest point of the jump), than is shown in your illustrations.

 

e.g. When Willy is cell-row aligned in his 'left-facing animation-frame 0', whilst directly above a Fire cell (and he would be killed, save for a certain part of the code, which instead allows him to fall into the adjacent Earth block). If you watch that sequence in-game, his sprite at animation-frame 0 is several pixels above the Fire cell, and at the next time-frame his sprite is sitting directly above the Earth block and he has cleared the Fire cell altogether - by that point he's in 'left-facing animation-frame 3' and occupying the next pair of cell-columns. So it appears illogical, watching his sprite, why he should then fall into the Earth block!?

 

EDIT: Perhaps this explains why Willy can land on certain guardians and jump safely away IF the player keeps the jump key depressed; whereas landing in the exact same spot kills Willy if the player has let go of the jump key!

Edited by IRF
Link to comment
Share on other sites

Well spotted! Another item for my TODO list...

And another suggestion for your TODO list - you could mention the fact that the 'Don't Mind Your Head' Bug can cause Willy to get stuck inside Earth cells (in at least two places that I can think of, namely Dr Jones... and The Wine Cellar, via The Forgotten Abbey) - forcing the player to abandon the game!

Link to comment
Share on other sites

And another suggestion for your TODO list - you could mention the fact that the 'Don't Mind Your Head' Bug can cause Willy to get stuck inside Earth cells (in at least two places that I can think of, namely Dr Jones... and The Wine Cellar, via The Forgotten Abbey) - forcing the player to abandon the game!

Can you explain how Willy can get stuck inside Earth cells (wall tiles?) in The Wine Cellar, for example? I'm not seeing it.

Link to comment
Share on other sites

I'll try and do an rzx recording when I get a chance, to demonstrate this.

By the way, something else that I've though of - if an arrow is placed before a guardian in the list for a room, and if the arrow's flight takes it into the path of the guardian, then it will kill Willy even if the guardian is NOT White. So to be on the safe side, the arrow should be placed AFTER the guardians in the list.

Edited by IRF
Link to comment
Share on other sites

There does seem to be a mismatch between Willy's 'physical presence' (the room cells that take on his attributes), and where his sprite is drawn on the screen.

 

Certainly during jumping - if you take the 'Through the Wall' illustrations in the Bugs section of your Manic Miner disassembly, they certainly do give a better representation of how he interacts with the various room elements.

 

However, if you study Willy's jumping by pausing the game at each time-frame during a jump, his sprite appears on screen at a higher y-coordinate (during the descent from the highest point of the jump), than is shown in your illustrations.

You're right - I hadn't noticed that before. I'll update the images and description in 'Through the wall' accordingly. Thanks!

 

By the way, the reason for the mismatch you've noticed is that the check for nasty/fire cells below Willy takes place after his y-coordinate has been updated but before his x-coordinate has been updated. In other words, the code is looking for danger at (x-1,y) instead of (x,y) (where (x,y) are Willy's new coordinates).

Link to comment
Share on other sites

EDIT: Perhaps this explains why Willy can land on certain guardians and jump safely away IF the player keeps the jump key depressed; whereas landing in the exact same spot kills Willy if the player has let go of the jump key!

I've never seen that happen before. Do you have an RZX that demonstrates this bug?

Link to comment
Share on other sites

By the way, something else that I've though of - if an arrow is placed before a guardian in the list for a room, and if the guardian's flight takes it into the path of the guardian, then it will kill Willy even if the guardian is NOT White. So to be on the safe side, the arrow should be placed AFTER the guardians in the list.

And another one for the trivia entry TODO list. Thanks!

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.