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: 6938
Author: ian.rushforth
Date: 15/11/2016
Subject: Re: Willy's movement / Turning in mid-jump / New superjump
Andrew wrote:
> Superjump
---------
> The superjump POKE 36404,44 is an interesting one because it allowsthe jump-control - but not the left & right controls - to be used in
the middle of a jump.
36389: LD A,(34261) ; if jump-phase counter
36392: CP 18 ;;;;;;;; == 18
36394: JP Z,8EB0h ;;; then jump is over (set fall-counter to 6)
36397: CP 16 ;;;;;;;; else if jump-phase counter == 16
36399: JR Z,8E36h ;;; then check what Willy's standing on (8E36)
36401: CP 13 ;;;;;;;; else if jump-phase counter <> 13
36403: JP NZ,8FBCh ;; then do horizontal movement (8FBC)
;;;;;;;;;;;;;;;;;;;;; (else fall through to 8E36)
POKE 36404,44 makes the following change:
36403: JP NZ,8F2Ch
> This jumps into the middle of the walking-routine (8ED4) -apparently after the left & right controls have been checked for,
but before the jump-control is checked for. (The walking-routine
eventually branches to 8FBC.)
That POKE is a bit odd - it sends the code into the middle of an IN A, (C) instruction, after the 'ED' shift opcode, so the program will interpret the '78' as LD A, B.
I would have thought POKE 36404, 109 would be more appropriate? That would make the following change:
36403: JP NZ, #8F6D
That sends the program straight to the check for Jump keys.
(Perhaps, with POKE 36404,44 in place, the instructions from #8F2C to #8F6C are implemented harmlessly - or maybe the fact that it enters the key-checking code too soon explains some of the reported 'quirky' behaviour caused by the Superjump?)
