Jump to content
Jet Set Willy & Manic Miner Community

IRF

Contributor
  • Posts

    5,095
  • Joined

  • Last visited

Everything posted by IRF

  1. One further thought - would it be worth mentioning here: "The number 15 here determines the highest segment of rope that Willy can reach (originally 12)" where 0 represents the top of the rope. i.e. the segment count is from the top downwards? Otherwise the casual reader may think that the POKES enable Willy to reach a higher part of the rope (15 being a higher number than 12)!
  2. Okay, but I'm sure the reason that Willy's y-coordinate never goes below 25 at segment 15, relates back to fundamental mathematics!? Although I appreciate that it's not linear, but subject to discrete jumps of 8 pixels, so basic trigonometry is perhaps too simplistic. Still, my crude trig-based calculation yielded the same result! If the game engine were to be amended such that the swing of the rope extended further than it does, then with Willy holding onto segment 15 of the rope, he may be brought within jumping reach of the top of the screen! Because the angle of the upper part of the rope's deviation from the vertical would be greater than it is at the moment, so his y-coordinate might drop below 24 (meaning it is 'rounded down' to 16).
  3. Regarding the phenomenon highlighted in bold, I've now realised that the scenario in which it occurred involved a static guardian adjacent to a ramp. And the reason for this quirky behaviour is down to the routine at 38344. There is a section of code in that routine at 38372 which calculates Willy's true pixel y-coordinate if he is on a ramp. However, that section of code is bypassed if the Airborne Status Indicator is non-zero. So if the 'Jump' key is kept depressed, the vertical position of the bottom of Willy's sprite is aligned with the top of the ramp cell on which he lands. So he appears to briefly 'bounce' a few pixels above the exact position of the ramp beneath him. And hence Willy can jump safely away from certain guardians located adjacent to a ramp (as long as the guardian's filled in pixels don't coincide with those of Willy when he is at the lowest point in his jump), whereas if 'Jump' isn't depressed, the program draws Willy at his exact vertical position (based on his precise horizontal pixel position on the ramp), which then can mean the same guardian's pixels do coincide with Willy's, and he dies! (N.B. The same trick cannot be performed with a Fire cell located adjacent to a ramp, because death by Fire cell isn't pixel-based.) The same check 'Is Willy Jumping?' in the routine at 38372 also explains why Willy can appear to 'hover' above a ramp, if he keeps the 'Jump' key depressed when he is walking up the ramp underneath an overhead Earth cell. The attached rzx recording demonstrates both of these phenomena, as well as the fact that Willy can walk up a ramp through an overhead Earth cell (as there is no check in the code for overhead Earth cells when Willy is walking up a ramp). This effectively makes walking up the ramp a one-way route, because when he tries to return back down, he is stopped by the check for Earth blocks adjacent to him! It's also worth mentioning that he can walk down a ramp through an Earth cell at the bottom of a ramp (this is not shown in the attached rzx, but you can see it in action in the original JSW, by walking down the ramp in On Top of the House!) That's because the check for Earth cells at the level (y+2) doesn't take place when he's cell-row aligned. (Otherwise he wouldn't be able to walk along Earth cell platforms; it also explains his ability to jump through Earth cells if he encounters them when he's cell-row aligned at a certain animation frame, as your MM disassembly 'Bugs' section demonstrates.) Ramp jump test.rzx
  4. Richard, In the Trivia section of the JSW disassembly, the 'Ropes for Beginners' guide is very useful (i.e. how to climb up, based on the direction of the rope's swing and Willy's facing direction). I was thinking that maybe you could also include a 'Ramps for Beginners' guide, explaining how exactly Willy can jump through, rather than onto a ramp. i.e. Starting at which frame of animation allows him to jump through? Perhaps with an explanation of the mechanics of jumping through ramps? And on that subject... I'm wondering if one such unintended consequence might be to prevent Willy from being able to jump through a ramp? (I'm not sure about that though.)
  5. I'm afraid that all the Writetyper code was reused for 'higher' purposes...
  6. Is it something like 12/cos(?), where 12 is the value that prevents Willy jumping off the top when the rope is hanging vertically down [and is the value of the bytes in question in the original game code], and ? is the angle by which the top of the rope deviates from the vertical, at its point of maximum swing?
  7. Not derailing at all! 15 (or #0F in hex) was the value that I concluded was just enough to prevent it.
  8. Richard, Please see the attached, starting position is The Forgotten Abbey. I performed the manoeuvre twice - the first time, I kept 'left' depressed (walking against the flow of the conveyor) so Willy was able to escape the situation. The second time, I let go of 'left' after entering The Wine Cellar, and so Willy got stuck! In Dr Jones..., if you manoeuvre Willy to be standing three cells above the 'tusk' item, and walk left, then he gets stuck inside the elephant's head! (N.B. This is the case in the original JSW, but in the Bug Fix 2015 Edition it has been prevented by removing some of the Water cells inside the 'head', allowing Willy to drop out of that row of cells.) Stuck in wall bug.rzx
  9. Have you played our JSW The Nightmare Edition? There's a static guardian (with filled-in pixels only one cell-column deep) on the far right-hand side of The Off Licence - if you can get that far!!
  10. Okay, so I was right that you mocked up the images rather than using snapshots, although in doing so your intention was to recreate what is seen on screen!
  11. I'll try and dig one out. I take it you're aware that Willy can walk THROUGH a Fire cell on the edge of a room, while entering the room, BUT ONLY if he keeps the relevant 'walk' button depressed? Apparently it's because the check for nasties doesn't occur during the 'zeroth time-frame' in a room. (It may, or may not, be a related phenomenon to the one you inquired about.)
  12. Re: the former, I presumed you must have 'mocked up' the images in your disassembly to illustrate the point!? They don't resemble what is displayed on the screen during the jump! (Although they do demonstrate the sequence in which the checks/coordinate updates take place.) Re: the latter, would it be a simple affair to rearrange the code so both x- and y- coordinates are updated before the check for Fire cells occurs? Or would that have unintended consequences?
  13. 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.
  14. 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!
  15. Another observation: In the original game [and with Andrew Broad's suggested alternative patch], both of those routes (when going leftwards) are made considerably easier because the ILB code rapidly speeds up Willy's descent as soon as his head becomes aligned with the Earth cell that sits above the two-cell Air gap into which he is jumping. With my version of the patch in place, the timing of either jump is much more critical, as Willy has to fall at 'normal speed' until he is almost aligned with the gap, before he can proceed forward to land on the 'ledge'. Banyan Tree is particularly difficult (jumping from the ledge between the Cyan Computer Chip and Magenta Gremlin), as he has to 'step back' above the Chip and jump left whilst the Gremlin is still quite high up in the intermediate cavity, in order to safely jump into the gap.
  16. Scenario 1b is actually present in original JSW in The Forgotten Abbey (jumping from the top of the ramp), and allows Willy to subsequently walk through head-height Earth cells and exit directly onto the conveyor in The Wine Cellar. However, if he doesn't keep the left key pressed until he is clear of the Earth cells on the right-hand edge of The Wine Cellar, then he can get stuck (because of the conveyor and the Earth cells above him), meaning the player has to abandon the game! So it's definitely a bug that's worth fixing - at least in terms of preventing him walking leftwards through Earth cells (a bug which also allows Willy to get stuck in the Dr Jones elephant's head in the original game!)
  17. I have inserted the above (11 bytes) into the Main Loop (replacing the redundant 'Screen Flash Counter' code in the attached file), which has resolved the last remaining 'structural' problem with the patch. There is still plenty of scope for the patch to be made more byte-efficient, though. Or indeed, other options considered (such as Andrew Broad's suggestion). New Bug Fix Final.z80
  18. 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!
  19. Going further into 'quirky territory' (which is admittedly rather off-topic for a thread that started off trying to eliminate a quirk!), it would be possible to devise a bit of code, analogous to that at 36540, but which had the opposite effect! i.e. if Willy becomes cell-row aligned (only occupying two rows) with his legs occupying an Earth cell (i.e. he has just jumped up and through an overhead Earth block, and is nearly at the top of his jump), then the code could rapidly adjust his y-coordinate upwards by one cell-row, depositing him on top of the Earth block! This would effectively allow him to jump to a normally unreachable height! (Three rows above his starting point.). A new kind of Superjump!!
  20. To illustrate the point in bold, please see the attached file (my Bug Fix is in place in this one!) I've inserted a Black static guardian into the Earth cell above the 'ledge', so that the guardian is colouring in the Earth block (and the ones adjacent and above), but the two horizontal rows of Black pixels in the guardian's sprite are placed such that there is no 'pixel coincidence' with the Earth block (and so no Infinite Death Scenario upon start-up!) Willy can jump rightwards and land on the ledge safely, illustrating that his sprite doesn't truly enter the Earth blocks at any point in the jump. However, if you wander down the ramp to the left and jump through the Innocent-Looking Block (which contains the same Guardian with the same 'parallel lines' sprite, just lowered down accordingly to be embedded within the ILB), then Willy is killed - as his sprite enters the Earth cell causing his pixels to collide with the guardian's pixels! (N.B. If Willy walks up to stand adjacent to the right of the ILB, his sprite turns Black (because he is within the lower guardian's 2x2 'square of influence), but he is of course blocked from walking leftwards into the block due to the patch, so he can't be killed in that way.... Unless, that is, the previous game was abandoned at a certain point mid-jump; I've not fixed that aspect yet!) New Bug Fix pixel test.z80
  21. See attached - a single 'leafy' Water cell has been added under the end of the middle Earth block platform in Under the MegaTree. If Willy walks forward two animation-frames from his starting position when the game is first loaded, turns round (so he's facing left with his legs together) and jumps leftwards, then the quirk under discussion allows him to access the 'Forbidden Holy Ground' in At the Foot of the MegaTree! EDIT: The other attached file illustrates the point I made a couple of three posts back about Emergency Generator. Jump rightwards from the starting point and Willy can exit to Priest's Hole. (However, if he jumps to the top of the stack first, then he can't make the jump.) P.S. Obviously, these files are based on the 'unfixed' game engine! overhead jump under megatree test.z80 emergency gen test.z80
  22. Andrew, am I right in thinking that this is the quirk that allows Willy's sprite to pass leftwards through an Earth block at leg-height? EDIT: I don't so much mean leg-height, but the Earth block is lower than head-height by the time he starts to pass through it (his hat at least is projecting above the top of the Earth block). Immediately beforehand, he is cell-aligned both horizontally and vertically - he is in (left-moving) animation-frame zero, adjacent to a single-height Earth block, with the upper half of his sprite occupying the same cell-row as the block, and he is still in the 'ascending' part of his jump. There is no check for an Earth cell adjacent to his head on the left, and so nothing to prevent his onwards horizontal motion. But then in the next time-frame, as well as having moved 'into' the Earth block [although again, there is no pixel-insertion into the block at this stage, as he's in left-moving animation-frame 3 in which only the right-hand of the cell-columns he occupies has filled-in pixels], he has also moved up by one increment in the jump. As a result, the top-left cell occupied by Willy's sprite [which by now occupies three rows of two cells] does NOT contain an Earth cell*, so the 'ILB' code at 36540 that normally dumps him downwards in these circumstances does NOT kick in, and his jump carries on upwards - with his legs entering the Earth block. (* Assuming it's a single Earth block that we're considering, or at least only a single-row Earth platform - I think Willy can jump through the middle Red platform in Under the MegaTree, for example.)
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.