Jump to content


Member Since 23 Aug 2015
Offline Last Active Feb 23 2018 11:30 PM

Topics I've Started

Final Barrier Glitch

20 February 2018 - 12:45 AM

I've just noticed a bug/glitch/inconsistency in the way that the 'Swordfish' routine is executed at the end of the Final Barrier.


When Willy enters the portal (unless you're playing in Cheat Mode, of course), his sprite appears above the portal which displays the Swordfish icon.  There is also a command which overwrites the attributes of the two cells underneath the portal, in order to disguise Willy's feet (so that he doesn't appear to be in two places at once!)


However, once the points start to be ratcheted up as the remaining air supply is counted down, Willy's feet are still visible (in blue INK on black PAPER), because the pixel display for those two cells isn't wiped, only the white INK attribute.




Incidentally, the green PAPER attribute of the cells occupied by Willy's lower half when he is drawn above the Swordfish would possibly look a bit better if cyan PAPER was used (as is the case for the upper half of his sprite at that point).

Idea for a new cell type in Manic Miner

06 February 2018 - 10:40 PM

When Willy jumps up and hits his head on an Earth block, he is immediately ejected back down, but it doesn't seem to do him any harm.  I guess he has quite a hard head - especially with his hard hat on.


This got me thinking about an idea for a new MM cell type - when Willy bounces off a 'Soft Earth' cell from below, a variation on the Crumbly cell routine could be executed, removing pixel-rows from the bottom up, but without the upper pixel-rows moving down into their place - then once all eight pixel-rows have been 'mined away', the cell is replaced with an Air cell.


Fits in with the mining theme?

Undocumented Quirky Features of JSW2

03 January 2018 - 09:01 PM

I am not aware of any previous discussion of this quirky feature of Jet Set Willy 2 - it isn't mentioned in Andrew Broad's fairly comprehensive list of quirky features.


If you open up the attached 'JSW2 New Quirky Feature' test file, and try to collect the new Bathroom tap, you'll find that Willy gets stuck, with no hope of escape!


But in the other attached file, 'JSW2 New Quirky Feature not in original JSW', which has the exact same layout changes implemented to The Bathroom, Willy can collect the new item behind the newly-inserted walls, and get back out again.


Curious!  The subtly different behaviour could form the basis of a frustrating trap in a modified game based on the JSW2 game engine!  (Not with an item at the bottom of the hole, though, as that would render the game uncompletable without loss of a life.)


N.B. It might be prudent to have an occasional arrow come along at head-height, to put Willy out of his misery if he gets stuck!

Fixing the 'Ramps vs Walls' Bug

22 December 2017 - 02:49 PM


Some preliminary thoughts:

When Willy is walking up a ramp, add an additional check for an Earth block (and RET if one is encountered):

- When Willy is walking left, the check should be made at (x,y-1);
- When Willy is walking right, the check should be made at (x+1,y-1);

where (x,y) are the coordinates of the top-left cell occupied by Willy's sprite prior to him crossing the cell boundary.


When Willy is walking down a ramp, the simple solution would be to block his progress is there is an Earth block ahead of his sprite and two cell-rows below. But that doesn't seem logical. In the example seen in 'On Top of the House', I feel the most realistic solution would be for Willy to simply step onto the block at the base of the ramp. But that would require amendments to two different routines:

(1) Edit the routine at #95C8 - after the check for a ramp cell under Willy's back foot, add an additional check for an Earth block under Willy's front foot (perform an XOR 01 on the L register, load the Earth attribute to A, and then do a CP (HL) / JP Z,#95F8 - all to be inserted in between the commands at #95DC and #95DE). So if Willy is standing on a ramp cell and an Earth block simultaneously, then the 'solidity' of the Earth block will take precedence over the 'downward pull' of the ramp cell* when deciding where to draw Willy;

(2) Adjust the 'Move Willy (3)' routine so that, when Willy is about to step off a ramp cell at (x+1,y+2) / (x,y+2) [when walking left / right respectively i.e. a ramp cell in the cell underneath Willy's back foot], then make a check for an Earth block at (x,y+2) / (x+1,y+2) [i.e. in the cell underneath Willy's [i]front[/i] foot], and if there is an Earth block there, then undo the commands which adjust Willy's coordinates downwards by a row as he moves past the cell boundary. Edit: i.e. at #900A and #9078, insert the extra check, and if there is an Earth block under Willy's front foot, then set BC=00 (although C=0 should be sufficient).


* N.B. This shouldn't affect the ability for Willy to walk down a ramp cell through Water cells, such as occurs in 'Swimming Pool' or 'West Wing'.

Modified sprite-drawing code

08 November 2017 - 01:32 AM

In original JSW, at the instant when Willy collides with a guardian, that guardian is only drawn as far the graphical byte which collided with Willy. Furthermore, all guardians that appear subsequently in the current room's guardian list are not drawn at all in that moment. (That latter point means that composite guardians - for example the three-part Evil Priest Head or the Attic Centipede - are rendered incompletely at the time of Willy's collision with one component part of them*.)

In the attached file, all the guardians (and arrows and ropes) in the current room are drawn in their entirety at the moment when Willy is killed by colliding with one of them.

Note that in the attached file, the room still appears as 'empty' - without guardians, items or Willy - whenever Willy hits a Fire cell or falls a fatal distance.



EDIT: * Unless it is the last component part to be drawn which is the one that Willy collides with.