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
|
|
||
|
|
Message: 6971
Author: rushforthian
Date: 10/12/2016
Subject: Re: Advanced Trainer - Daniel's suggestions
One more point in relation to Willy wrapping round beyond the bottom of a Manic Miner cavern - if Willy drops off the bottom at a particular x-coordinate, emerging at the top of the cavern, then makes his way back down to attempt to drop off the bottom at the same x-coordinate, then he is prevented from doing so second time round. He ends up standing on the Air cell in Row 0 instead (with his sprite occupying cell-rows 14 and 15).
This is because on the previous occasion when he dropped off the bottom, Willy's attributes had wrapped round beyond the bottom of the screen, and the two cells in Row 0 which he briefly occupied had had Willy's colour (White INK) permanently written there (i.e. in the primary, Empty Room Attribute Buffer #5Exx, instead of in the secondary, Occupied Room Attribute Buffer #5Cxx). Thus, the cells in Row 0 are subsequently treated as Water cells by default (unless the Air cells' INK setting also happens to be White). This state of affairs comes to an end if Willy loses a life within the same cavern, which causes the primary buffer to be refreshed.
(In contrast, as previously documented, the graphic bytes of Willy's sprite that extended beyond the bottom of the screen are even more permanently written elsewhere - causing corruption of the room layout data for 'Miner Willy Meets the Kong Beast' (the data for which starts at #CC00). This occurs because Willy's excessive y-coordinate causes some of his graphic bytes to overshoot the end of the 'Screen Buffer Address Lookup Table' at #8300, with the result that the value 'CC' (part of the operand of a Jump command) is picked up from the 'Game has just loaded' routine at #8400. That corruption prevails even if you restart the game; the only way to restore the layout of that cavern is to reload the game.)
