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.)
