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

 

 

arrowleft
arrowright