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: 6977

Author: ian.rushforth

Date: 13/12/2016

Subject: Re: Quirky conveyors in MM

 

I've just noticed that I might have been reinventing the wheel somewhat in my analysis above.  From Andrew Broad's Manic Miner room-format document:


> Offset 626 represents the length of the conveyor-animation. If you don't want a conveyor-animation in the room, I suggest having an animation of length 1 over something inconsequential (such as a Background block), as setting the length to 0 causes this bug which corrupts the graphics on one vertical half of the screen.


Although that merely describes the effect as a "bug which corrupts the graphics", without going into details as to the cause.  (Namely, the application of a DJNZ loop with a starting value of B=0.)


Also from Andrew's MM room-format:


> A more recent discovery is that the three least significant bits of Offset 625 can be used to specify the vertical position of the conveyor-animation in pixels: yyy is the number of pixels below YYYY. None of the Manic Miner games so far do this (yyy is always 000), and my Manic Miner Screen Editor does not allow it. So the conveyor-animation can be thought of as a row of pixels which animates any blocks in its path in the direction of the conveyor, and against the direction of the conveyor two pixel-rows below that. It would appear that setting yyy to 110 or 111 (i.e. 6 or 7 in denary) can cause the Spectrum to lock up, presumably because the second row of pixels falls off the bottom of the character space.


Based on that, here's another prediction.  If the conveyor is located in the upper half of the screen, and yyy is set to 110 or 111, then the Spectrum won't lock up, but rather the conveying animation will be observed in pixel-row 6/7 in the upper half of the screen, and in pixel-row 0/1 in the lower half of the screen.


However, if the conveyor is located in the lower half of the screen, with yyy set to 110 or 111, then I can see how a lock-up could occur because the 'Move the Conveyor' routine will start to overwrite addresses in the 'Game Buffer' area of the code (from #8000).  However, it could be possible for this to cause odd effects without actually causing a lock-up. e.g. if the conveyor is located in cell-row 8, then it might cause (part of) the Cavern Name (#8000-#801F), or the first sprite of the current cavern's guardian (#8100-#811F) to be corrupted.


Another area for investigation...


 

 

arrowleft
arrowright