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

Author: andrewbroad

Date: 09/11/2005

Subject: POKE 36801,0: REM perpetual motion

 

-------------
Jet Set Willy
-------------

Whilst looking through a JSW disassembly and trying to NOP out
various branches, I discovered that POKE 36801,0 makes Willy keep
walking: you can turn left or right as usual, but you cannot stand
still, nor jump straight up (without the aid of a wall).

An interesting side-effect of this POKE is that you can turn and
jump in one step, as in JSW II.


Willy's horizontal-movement routine is at 36796 (8FBCh), which is
jumped-to from various places as horizontal movement can be due to
pressing left or right, being on a conveyor, or being in the middle
of a jump.

36796: LD A,(34256) ; Bit 0: direction Willy is facing,
;;;;;;;;;;;;;;;;;;;;; Bit 1: horizontal motion (1 = yes, 0 = no)
36799: AND 00000010 ; examine Bit 1
36801: RET Z ;;;;;;;; return if no horizontal motion
;;;;;;;;;;;;;;;;;;;;; (POKE 36801,0 blanks out this return)

36802: LD A,(34262) ; Willy's row when he's on a rope, 0 if he's not
36805: DEC A ;;;;;;;; decrement rope-position (0 -> 255)
36806: BIT 7,A ;;;;;; } return if Bit 7 is 0
36808: RET Z ;;;;;;;; } (can only happen when on rope)

36809: LD A,(34256) ; } examine Bit 0
36812: AND 1 ;;;;;;;; } (direction Willy is facing: 1 = L, 0 = R)
36814: JP Z,36930 ;;; if facing R then jump to code for moving right

36817: LD A,(34258) ; get Willy's sprite-frame (0-3)
36820: OR A ;;;;;;;;; } if on leftmost sprite-frame (0)
36821: JR Z,36828 ;;; } then jump to code to deal with moving
;;;;;;;;;;;;;;;;;;;;; } left into a new character-column

36823: DEC A ;;;;;;;; } move left one sprite-frame
36824: LD (34258),A ; } (within the character-column)
36827: RET

-----------
Manic Miner
-----------

The corresponding POKE for Manic Miner is 35976,0 (Software Projects
edition: POKE 35987,0). Manic Miner's horizontal-movement routine
for Willy is as follows:

35971: LD A,(32874)
35974: AND 0000010
35976: RET Z
;;;;;;;;;;;;;;;;;;;;; (no rope-handling code)
35977: LD A,(32874)
35980: AND 1
35982: JP Z,36042
35985: LD A,(32873)
35988: OR A
35989: JR Z,35996
35991: DEC A
35992: LD (32873),A
35995: RET

The first ten caverns of Manic Miner are completable with perpetual
motion, with a bit of toggling required in "The Vat" and "Wacky
Amoebatrons", and some careful manoeuvring in "Miner Willy Meets The
Kong Beast" to avoid jumping straight up off the conveyor.

"Attack of the Mutant Telephones" is item-completable if you tackle
it clockwise (I usually play it anticlockwise), but not portal-
completable because you need to jump straight up to get back to the
top.

"Ore Refinery" requires some creative jumping, "Skylab Landing Bay"
entails a lot of toggling, you are forced to complete "The Bank"
honestly, and "The Warehouse" requires such a frenzy of fine
toggling that it is beyond my natural abilities even to attempt it!

"The Sixteenth Cavern" and "The Final Barrier" are not item-
completable because they require jumping straight up.

--
Dr. Andrew Broad
http://www.geocities.com/andrewbroad/
http://www.geocities.com/andrewbroad/spectrum/
http://www.geocities.com/andrewbroad/spectrum/willy/

 

 

arrowleft
arrowright