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: 7086
Author: rushforthian
Date: 02/03/2017
Subject: Re: Mirror MM/JSW / MM - JSW Conversions
I wrote:
> I noticed that the impossible triangle on the Title Screen of MirrorJSW (ylliW teS teJ) isn't quite right.
> However, this can be fixed by rearranging the graphic bytes of the components of the triangle, as stored at
> #8431-#8450.
> Specifically, by transposing each pair of eight bytes: swap #8431-#8438 with #8439-#8440, and swap #8441-> #8448 with #8449-#8450. 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.
By way of an explanation, the 'Draw the title screen' routine decides which triangle UDG to draw at a particular position in the display file, partly based on the value stored at the corresponding position in the attribute file, but also taking into account whether the low byte of the attribute coordinate currently under consideration holds an odd or an even value. (Due to the aforementioned AND #01 at #8872.)
Andrew's mirroring process inverted the positions of all the attribute values stored in the range #9800-#99FF. However, in doing so, it switched the 'odd/even' status of each attribute (with respect to their coordinates, passed on to the routine via the E register).
By way of an explanation, the 'Draw the title screen' routine decides which triangle UDG to draw at a particular position in the display file, partly based on the value stored at the corresponding position in the attribute file, but also taking into account whether the low byte of the attribute coordinate currently under consideration holds an odd or an even value. (Due to the aforementioned AND #01 at #8872.)
Andrew's mirroring process inverted the positions of all the attribute values stored in the range #9800-#99FF. However, in doing so, it switched the 'odd/even' status of each attribute (with respect to their coordinates, passed on to the routine via the E register).
