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

Author: andrewbroad

Date: 08/03/2007

Subject: Re: Unused guardian-classes / Makefiles / BASIC loaders

 

Alexandra wrote:

>
> Hey guys... I have a few questions concerning JSW - Role Reversal:
>
> 1) I have an unused room. I'd like to find out which guardian slots,
> if any, are available. I'd like this room to be something special.

Since Role Reversal is a JSW48 game, I presume the question you wish
to ask is: which guardian-classes are unused?

By unused, I mean both guardian-classes that are cleared (i.e. the
guardian-type is 0) and guardian-classes that are not cleared, but
have no instances in any room in the game.

SPECSAISIE UnusedGCsJSW looks up both types of unused guardian-
classes.

Usage: java UnusedGCsJSW

e.g. "java UnusedGCsJSW JETSET.SNA":
There are 18 unused guardian-classes:
- Guardian-Class 0
- Guardian-Class 43 (no instances)
- Guardian-Class 63 (no instances)
- Guardian-Class 112
- Guardian-Class 113
- Guardian-Class 114
- Guardian-Class 115
- Guardian-Class 116
- Guardian-Class 117
- Guardian-Class 118
- Guardian-Class 119
- Guardian-Class 120
- Guardian-Class 121
- Guardian-Class 122
- Guardian-Class 123
- Guardian-Class 124
- Guardian-Class 125
- Guardian-Class 126


> 2) Can someone help me tack the loading screen onto it?

I presume the problem here is that you have a TAP-file generated by
JSWED, and wish to replace its BASIC loader with your own BASIC
loader that loads a SCREEN$ first?

I would do this using a makefile. Suppose I was developing JSWED.TAP
using JSWED. Then I would create a file MYJSW.BAT:
>>>
java Split JSWED.TAP 2
cat LOADER.TAP SCREEN.TAP JSWED_2.TAP > MYJSW.TAP
del JSWED_2.TAP
<<<

The first line extracts the CODE-file from JSWED.TAP (i.e. the game
itself, which is second on the tape, without the BASIC loader which
is first on the tape). This requires that you have installed
SPECSAISIE.

LOADER.TAP and SCREEN.TAP are files that you have created yourself.
LOADER.TAP contains a BASIC program (saved on an emulator) such as:
>>>
10 CLEAR 32767
20 LOAD "" SCREEN$
30 LOAD "" CODE
40 RANDOMIZE USR 33792
<<<

And SCREEN.TAP contains the loading-screen as a 6912-byte CODE-file.

The second line of MYJSW.BAT concatenates LOADER.TAP, SCREEN.TAP and
JSWED_2.TAP to form the final product, MYJSW.TAP. It requires that
the program "cat" has been installed.

Once MYJSW.TAP has been created, the intermediate file JSWED_2.TAP
can be deleted (the third line of MYJSW.BAT), and MYJSW.TAP can both
be played on an emulator and edited using JSWED.

After editing MYJSW.TAP using JSWED, you need to rename it to
JSWED.TAP, then run MYJSW.BAT again, because JSWED replaces your
custom BASIC loader and loading-screen with its own standard BASIC
loader.

Alternatively, edit only JSWED.TAP using JSWED, and just run
MYJSW.BAT whenever you wish to tack on the custom BASIC loader and
the loading-screen. Be careful not to edit MYJSW.TAP by mistake, or
your changes will be lost!

(You could even have MYJSW.BAT convert MYJSW.TAP to a TZX-file and
then have it delete MYJSW.TAP so that you could never make this
mistake until JSWED recognises TZX-files.)

The reason for having two different filenames (JSWED.TAP and
MYJSW.TAP) is that if you had only one filename, you would lose your
work if you accidently ran MYJSW.BAT on the same file twice (without
editing it using JSWED in between). This is because MYJSW.BAT always
extracts the second file on the tape, which before the operation is
the game itself, but after the operation it's the loading-screen!

Thus having two separate filenames - one which you edit using JSWED,
and the final product complete with custom loader and loading-screen -
keeps MYJSW.BAT nice and idempotent.


> I've kinda given up on the Summer/Winter selection screen, unless
> someone steps up soon. I could make them separate files, I suppose.

If I wanted to do that, I would develop them in separate files, then
use SPECSAISIE Compare to tell me the required POKEs to insert into
the BASIC loader, which might end up looking something like this:
>>>
10 CLEAR 32767
20 LOAD "" SCREEN$
30 LOAD "" CODE
40 PRINT "Infinite lives? (Y/N)"
50 LET i$=INKEY$: IF i$="" THEN GO TO 50
60 IF i$="y" OR i$="Y" THEN POKE 35899,0
70 RANDOMIZE USR 33792
<<<

If there are many changes at consecutive memory-addresses, use
SPECSAISIE CSaisie instead of Compare. CSaisie will generate DATA-
statements (which need FOR..POKE..NEXT loops) rather than loads of
individual POKEs (but read USER.TXT carefully because CSaisie's
command-line is different and more complicated than that of Compare).

(Note to self: I need to clean up CSaisie to make it much more user-
friendly, consistent with both Compare and Saisie, and to generate
the FOR..POKE..NEXT loops itself.)


> 3) Erix1-mode has a feature which can be turned on in each room - it
> allows you to walk on the guardians

Even vertical guardians? (Excuse my lack of familiarity with Erix1-
mode.)

> and also if a blank sprite erases a platform, Willy will fall
> through it.

?! Investigate, I must!


> Is it possible to make a patch vector to replicate this effect in
> JSW64? I'm guessing it's a fairly simple modification.

Well, my lifts-patch is applicable to JSW64, as per Message 5914.


> I'm also working on a quick game just to warm myself up.
> I've already designed a nice central character based on Andrew's
> Kari sprite from We Pretty (I love the way she sort of marches,
> reminds me a bit of how I walk at times!)

Marches! :lol:

To draw Kari Krišníková, I simply studied a video of a certain tennis-
player walking between points, and made my best effort to draw her as
a JSW-sprite.

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

 

 

arrowleft
arrowright