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
| Previous message | Next message | |||
| Previous in thread | Next in thread | |||
Message: 4111
Author: andrewbroad
Date: 22/04/2004
Subject: Re: JSW64 / JSW->JSW128 / Remaining lives in PW128
john_elliott_uk wrote:
Before I start, I'll announce to the world: JSW64 has been updated.
It now includes all the JSW128 features that make sense for it:
* Diagonal guardians
* Colour-cycling guardians
* Cheat mode
* Fancy title screen
* Custom font
* Pause bug is fixed.
etc. There have also been several mystery improvements.The zipfile includes five variants (lettered V,W,X,Y and Z). They
should all play identically and look the same, except for the decor
in the Bathroom in variant Z.
Now that I've updated JSW64, I'd better explain a bit. Yesterday I
had some more ideas about room formats - four more ideas, to be
precise. So JSW64.ZIP now contains five different editions of
JSW64. Variants V and W should support 128 rooms; Variants X, Y
and Z support 64. The previously uploaded version corresponds to
variant Z, but with some of the fields in a different order.
So what are the differences between the variants?
So "The Bathroom" uses 15 of the 16 elementary block-types?
Umm, no. The original version had 6 block types, and the current
versions all have 8.
The original JSW has four elementary block-types, by which I mean
they can occur anywhere in the screen-layout (being specified in
Offsets 0-127). Ramp and conveyor are - what shall I call them? -
restricted block-types.
Perhaps JSW64 should be renamed JSW128x4 to indicate that it's
128K but distinguish it from the JSW128 with 256 rooms at 256
bytes each? Likewise, a JSW128 game with 128 rooms at 512 bytes
per room could be called JSW128x2. I can't think of more elegant
titles than those.
I think I'll stick to JSW64, and pretend I meant "64k of room
data".
Just like JSW128 ;-)
- It would be nice to have a function to merge up to four 48K JSW
games into one JSW128 game.
I'm not sure you could fit all the guardians from four JSW48 games
into one JSW128 game. You could probably do it with two; I seem to
recall doing that when merging JTJS in the first place.
At 1024 bytes per guardian-table, there's certainly space for four
guardian-tables in JSW128 (even eight if merging four Softricks
games), although you may have to sacrifice sprite-pages.
Running out of sprite-pages could well be a problem when merging
four 48K JSW games, unless they have a lot of sprites in common. So
the merge-function could either compare sprites to avoid duplicates,
or do what the SPECSAISIE JSWtoJSW128 functions do: take a text-file
specifying the sprite-page mapping.
+ I was impressed that JSWED recognised PWp2 as "Andrew Mode"!
Presumably it recognised my patch to specify the player's sprite-
page in Offset 237?
Yes. It stops JSWED from applying the JSW128 version of that patch.
- Willy's remaining lives face left, presumably because I swapped
the two halves of Sprite-Page 157 to make my patch work.
Correct again.
+ I was also impressed that it retained my other ad-hoc hacks,
such as the 24-hour clock. I'd always imagined that only the
recognised data would be transferred.
JSWED loads JSW128 code on top of the JSW48 engine rather than
importing data into an existing JSW128 engine. Thus if you've
patched bits which are the same in 48k and 128k mode, they stay
patched.
Cool! And it saves you from those nasty Software Projects copyright-
issues too! ;-)
The lives display, however, is different, so any patches there are
trampled.
I have just detrampled my remaining-lives patch! :-) Recall from
TECHNICA.TXT of JSW:LOTR that I wrote a subroutine to select the
sprites for the remaining lives. In PW128, I have located this at
39068-39075:
39068: XOR 128 ; select other half of sprite-page
39070: LD E,A
39071: LD A,(33005) ; get Offset 237 for current room
39074: LD D,A ; use it as the sprite-page for remaining lives
39075: RET
Recall that the call to this subroutine replaces instructions LD E,A
and LD D,157 (at 35232-35234 in JSW48). In JSW128 these are located
at 60175-60177, so that's where the subroutine-call goes:
60175: CALL 39068
Or in terms of POKEs for rtime.js2:
39068: 238
39069: 128
39070: 95
39071: 58
39072: 237
39073: 128
39074: 87
39075: 201
60175: 205
60176: 156
60177: 152
--
Dr. Andrew Broad
http://www.geocities.com/andrewbroad/
http://www.geocities.com/andrewbroad/spectrum/
http://www.geocities.com/andrewbroad/spectrum/willy/
| Previous message | Back to the Yahoo! Archive home page |
Next message | ||
| Previous in thread | Next in thread | |||
