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: 6008
Author: john_elliott_uk
Date: 31/12/2006
Subject: Re: "Speed" of horizontal guardians
--- In manicminerandjetsetwilly@yahoogroups.com, "equin0x80"
wrote:
>
That's because they all move at one speed (except in JSW128 and
> The JSW Tech Page doesn't mention any flag in the "horizontal
> guardian" block indicating the guardian's speed (i.e. movement "step
> size" in pixels per cycle).
JSW64, where they can move at double or half speed).
> I also noticed that the Bathroom dumbbells were sailing along
It should work, provided you move the guardian when the correct
> constantly instead of rolling on the spot and *then* falling
> forward, so I changed my four-pixels-per-frame to
> 16-pixels-per-animation-loop (i.e. animate fully on the spot
> and then move), which still didn't look right.
frame is reached. Here's the original horizontal guardian movement code:
org #9133
bit 7, (ix+0) ; Direction
jr nz, h_right
ld a, (ix+0) ; Going left
sub #20 ; Decrease frame number
and #7F ; Keep frame in the range 0-3
ld (ix+0), a
cp #60 ; Is the new frame number 3?
jr c, done ; If not, that's it
ld a, (ix+2) ; Get X-coordinate
and #1F
cp (ix+6) ; At left end of travel?
jr z, h_goright
dec (ix+2) ; If not, move left one character
jr done
;
h_goright:
ld (ix+0), #81 ; Now heading right, start on frame 4
jr done
;
h_right:
ld a, (ix+0)
add a, #20 ; Increase frame number
or #80 ; Keep frame in the range 4-7
ld (ix+0), a
cp #A0 ; Is the new frame number 4?
jr nc, done
ld a, (ix+2) ; Get X-coordinate
and #1F
cp (ix+7) ; At right end of travel?
jr z, h_goleft
inc (ix+2) ; If not, move right one character
jr done
;
h_goleft:
ld (ix+0), #61 ; Now heading left, start on frame 3
jr done
You may also find j128guard.cxx in JSWED instructive: that has a C++
version of the above algorithm in among all its other guardian
movement code.
