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

Author: rushforthian

Date: 03/10/2017

Subject: Re: Mirror MM/JSW / MM - JSW Conversions

 

I wrote:

> In case that isn't sufficiently clear: swap the value stored at #8431 with the value stored at #8439, swap  > #8432 with #843A, etc.  Then swap #8441 with #8448... #8448 with #8450.

Sorry, I've just noticed that the above makes things less clear, thanks to a typo!  The latter part should read: "Then swap #8441 with #8449... #8448 with #8450."
Anyway, I've spotted a potential efficiency in the routine that draws the Impossible Triangle, which is closer to the place where an in-situ code change will fix the problem:
At #888A, if the CALL is to #9699 instead of #969A, then the preceding two-byte command (LD B, #00) at #8888 is unnecessary.  Everything from #8874 to #8887 would need to be shifted down by two bytes (adjusting relative jumps where necessary).  But then you could insert an XOR #01 at #8874, immediately after the AND #01 at #8872.
(That uses one more byte than the INC A / DEC A / CPL options which I suggested earlier, but then the other byte freed up by removing the LD B, #00 instruction is unlikely to be useful for anything else.  In any case, using XOR #01 straight after the AND #01, to switch between considering 'odd' and 'even' addresses in the attribute file, is arguably a more transparent and elegant solution.)

 

 

arrowleft
arrowright