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

Author: andrewbroad

Date: 12/03/2006

Subject: JSWED 2.3.1: Andrew's comments (Chapters 18 to 19)

 

This follows on from Message 5700.

This message represents my first foray into the JSW II part of the
JSWED manual (Chapters 18 to 19). I have also studied Appendix B to
complete my comments on JSWED. I am using JSWED v2.3.1, but with a
printout of the jswed.pdf from v2.3.0.


dm_boozefreek wrote:

>
> I can't be bothered to uninstall this and re-install 2.2.9.

You don't need to uninstall 2.3.1 - just make a copy of the
C:\Program Files\JSWED2\ folder before you reinstall 2.2.9, and
you'll still be able to run the jswed.exe from the copy of 2.3.1.

I'm planning to keep a copy of 2.2.9 as long as JSWED 2.3.* doesn't
provide a smaller window - or support visual room-comparison
explicitly - and as long as it doesn't allow me to place Trap-cells
in a JSW64 game. I'm confident enough in v2.3.1 to use it for
everything else that v2.2.9 can do.


################################
Part IV: Editing Jet Set Willy 2
################################

I never expected to see a JSW II editor that would be more than
absolutely rudimentary, so congratulations on this amazing effort!


================
18 Editing Games
================
Loading and saving
------------------

When loading JETSETW2.TAP into JSWED, it says "Bytes: jsw¾" instead
of "Bytes: jswSCREEN$".


> On tape (and therefore .TAP), JSW2 is encrypted. This is why you
> can only edit snapshots from after the game was loaded.

JETSETW2.TAP loads into JSWED v2.3.1 with no problems. Perhaps this
particular file originates from the Ricochet rerelease and isn't
encrypted? Well it's nicer than having to save a snapshot first,
though I'd hope that future revisions of JSWED would be able to
decrypt.

But when I save JETSETW2.TAP by pressing F2 (without editing the
game in any way), it generates a TAP file with the following
headers...

Name: "JetSet "
Type: BASIC
Line: 0
VarA: 44
Leng: 44

Name: "jsw.js2 "
Type: CODE
Star: 32768 (Stop: 65535)
Leng: 32768

...which just crashes when I try to load it in an emulator! Nor will
this TAP file load back into JSWED with more than the hex-editor
enabled.

If I load and resave JSW2.SNA (a 48K snapshot saved with a PAUSE 0
before RANDOMIZE USR VAL "20140") in JSWED, it basically works but
each room contains a few erroneous Fire-cells.

I don't get this bug when editing JSW2SuperPreSchoolEdition.z80, but
I do get a warning "8 End of file (truncated Z80 file)" when I load
it back into JSWED.


john_elliott_uk wrote:
>
> Igor Makovsky wrote:
> >
> > - Is it a bug or what? If Willy dies somewhere by a guardian,
> > then he will reappear on the same place, where he got killed.
>
> This is standard behaviour in JSW2, and very annoying. JSW II 128
> patches it, but JSWED doesn't support JSW II 128.

But it /does/ support the 48K version of JSW2FIX (which can be
edited if you save a Z80 snapshot on the title-screen) which makes
Willy invincible for three seconds.


Editing positions in pixels
---------------------------

When editing positions that can be specified in pixel-rows and pixel-
columns (e.g. guardians and Willy's start-position), JSWED should
have a mode for keeping them cell-aligned, which is how I would
usually want them to be.

In JSW CK's guardian-class editor, the cursor-keys move one cell at
a time by default, and you can change the pixel-row by holding CAPS-
SHIFT as you press up or down (literally 9 or 8).

---------
18.1 Game
---------
Items
-----

JETSETW2.TAP says it needs 0 items to win; JSW2.Z80 says it needs
150. What is the address of this datum?

What I'd also like it to tell me is how many items there actually
are in total, since I wouldn't consider myself to have completed a
JSW II game unless I had collected every single item by the time I
was jumping in "Oh $#!+!The Central Cavern!" (why are the items in
that room different in JSWED and an emulator?)

JSWED also doesn't recognise (and therefore doesn't export) the
items in "Up On The Battlements" and "I'm sure I've seen this
before..".

grep "item " JSW2.XML | wc gives 178 items, but because of the above
problems I haven't arrived at a precise item-count yet. :-(

So where is the "table of 16-bit words for each room. Set bits in a
word correspond to untaken items" that is referred to at
http://www.seasip.demon.co.uk/Jsw/jsw2room.html ?


Rooms and compression
---------------------

> The original JSW2 has 134 rooms, but it may be possible to squeeze
> in a few more.

I suppose in principle you could have 256 rooms in JSW II with its
variable-length room-format and 8-bit room-numbers. They'd have to
be predominantly empty, of course - unless it could be extended to
use 128K memory.

JSW II - Super Pre-School Edition has 135 rooms, does not it?

How do you add new room-numbers to the game like you did there? How
do you delete unwanted rooms and thereby decrement the number of
rooms? JSWED needs to provide these facilities.

When the game won't compress into the space available, the user
could do with facilities to help decide what to delete (e.g. a room-
list sorted in descending order of compressed size).

Is "Clear to Air" the best way to delete a room (given the lack of a
function to remove it from the game altogether), or is there more
that could be done to reclaim space? What exactly does "Clear to
Air" do?

When pressing F8 to take screenshots, it saves {000-133}.png, then
saves 134.png which is the same as 133.png ("Oh $#!+!The Central
Cavern!") and JSWED crashes.

------------
18.3 Sprites
------------

I remember all the fun I had discovering and cataloguing these
sprites back in 1992 - the one part of the JSW II format that I
actually managed to crack! :-)

----------
18.4 Cells
----------

> If a graphic is marked as inverted, the dark and light pixels
> will be swapped before the game is started for the first time.
> Don't ask me why JSW2 does this.

I thought perhaps it was to force different cell-classes to have
different colour-attributes, but I tried inverting the Inverse flags
and pixel-patterns on the cells in The Bathroom, and noticed no
difference.

I guess there must be a historical reason behind it, e.g. perhaps
the cells' Inverse flags and colour-attributes were planned to be
set by room while their pixel-patterns were global, or perhaps
Derrick Rowson wanted to invert a load of cells' pixel-patterns and
this was the quickest method he could come up with.

--------------------
18.5 The Room Editor
--------------------
18.5.3 Room options
-------------------

When setting the room-name, does JSWED take advantage of JSW2's
dictionary for common words such as "The"? Does it match them
(unknown to the user) and substitute references to the dictionary?

It may even be desirable to let the user edit the dictionary, e.g.
for a game whose room-titles are in a language other than English,
or a game which just has a lot of repeated vocabulary.

Perhaps JSWED could even automatically put the most frequent words
in the game's room-titles in the dictionary.


Good advice: a rope will pick Willy up if it collides with white-ink
pixels, regardless of his coordinates at the time.


JSWED shows the room's player-sprite, but it could also allow the
user to edit it, even though the change would be global except in
Nightmare Room.

The same goes for the original, unpatched JSW I game-engine, of
course.


When editing "Patch code", the user should be able to select from a
pop-up list instead of having to look up the patch-code in the
manual.


> If Willy is standing on a right-moving conveyor (ie, the bed)
> then start him running to the right.

Except that he doesn't actually /run/ in JSW II - he just walks as
though on a conveyor with jumping disabled!

Actually, that gives me an idea for a new cell-type! One which can
be stood on and walked off, but not jumped off.

-------------------------
18.6 Room Specials Editor
-------------------------

A mention that the Cartography Room is usually [108] would be nice
here, along with the room-numbers usually containing the other
special objects.


18.6.1 Editing teleporters
--------------------------

JSWED doesn't provide a facility for tracking down the rooms with
teleporters (and it's not obvious that you can move a blue
teleporter to the current room - the manual should state this
explicitly).

Perhaps clicking on a blue entry in the Teleporters panel could give
you two options: go to the room containing this teleporter, or move
this teleporter to the current room.

JSWED could do with a list of teleporters for the JSW I teleporter-
patch too.

Good advice: if you fall too far but land on a teleporter, it will
take you to the destination-room, but you will lose one life and
return to the last 'safe' position before you fell.

----------------------------
18.7 The Title Screen Editor
----------------------------

"attribute mode" -> "colour-attribute mode"

It's easy to get ink and paper the wrong way round, so a control to
swap them would be nicer than eight mouse-clicks.


======================
19 The Guardian editor
======================

A reference to this chapter from Section 18.5.1 would be nice, as I
got to this chapter already having used the guardian-editor! :-)

--------------------
19.2 Editor overview
--------------------

The L/R? tickbox is confusing, because one assumes that unticked
would mean "left initially" and ticked would mean "right initially" -
especially after my experience with the On/Off tickbox for JSW64
switches yesterday. When I ticked it and the VG suddenly became a
HG, I thought it was a bug in JSWED at first. A clearer name which
fits in the same space would be "H/V?".


> JSW2, like Geoff Mode, uses a frame counter.

When I read that in the room-format, I feared that editing guardians
in JSW II would be as much of a nightmare as it is in Geoff-mode 2
using JSWED. But I was very pleasantly surprised when I tried
creating a diagonal guardian in JSW II, so congratulations on
that. :-)


> JSW2 only supports 4 guardian colours.

JSWED should allow the user to edit which colour-attributes these
are in the table at #70A9-70AC (a MM/JSW -> JSW II conversion-
algorithm could select the four most frequent guardian-colours in
the game, or the author may prefer to remain faithful to the
original JSW II settings). They could even be edited on a room-by-
room basis using patch-vectors.

I'm impressed, though, to see that JSWED's room-view reads the
colours from this table rather than hard-wiring them in as green,
cyan, yellow and white! :-) Willy's sprite is always white (in the
game), however.


> Oneway | If ticked, the guardian is (a) unidirectional,

No - a unidirectional guardian is one which goes left and right, but
only using the frames from one half of its sprite-page. These here
guardians are more akin to the wraparound guardians in Geoff-mode,
but do not immediately appear at the other end.

> and (b) white.

They are pixel-invisible when going in the other direction, so you'd
see a shadow of colour-attributes if they were not white. I wish that
JSW II didn't enforce this, though.

I simulated guardians of this type several times in Goodnite
Luddite, with one half of their sprite-page blank.


=====================================
B Format of exported room definitions
=====================================

The ability to import and export in even the JSW II editor is just
the jewel in the crown for me. I'm going to have amazing fun
converting between MM/JSW I and JSW II! :-))

The XML model represents a universal ontology of MM/JSW to which any
game can be exported without loss of information (I wish!), and from
which a game can be imported to any format, subject to the
limitations of that format.

So if there are n formats, there only need to be n export-algorithms
and n import-algorithms, as opposed to n*(n-1) pairwise conversion
algorithms (such as SPECSAISIE MMtoJSW and JSWtoMM).

I might write my own import-algorithms for SPECSAISIE, since I might
not always agree with JSWED's decisions (e.g. when converting MM/JSW
to JSW II, only the top pixel-row of a conveyor is animated, and in
JSW->JSW2, half the HGs have their left & right boundaries one
column too far to the left).


It would save a need for multiple exports if the import-wizard could
allow the user to select a range of rooms in the XML file, as well
as a range of room-numbers in the target-game.


Spectrum backports of the XML format
------------------------------------

The acid-test of how well the XML file has captured the room-data is
to import it back into the game from which it was exported, and
compare that game byte-by-byte with the original game.

When I imported JSW.XML back into the original JSW, I found that the
ramps went the wrong way in "Out on a limb" and "Rescue Esmerelda".
The escalator in "Halfway up the East Wall" conveyed Willy the wrong
way too.

And I bet it wouldn't capture invalid ramps in JSW48/128 either.

And after importing MM.XML back into the original MM, the items
in "The Vat" and "The Warehouse" lost their paper-colours, and the
bidirectional HG sprites in "The Endorian Forest" and "The Sixteenth
Cavern" were wrongly mapped.

This is by no means an exhaustive list of discrepancies. I've hardly
playtested XML-MM.TAP and XML-JSW.TAP at all, and SPECSAISIE Compare
reported a load of other byte-differences which a player wouldn't
notice.

---------------
B.2 node
---------------
B.2.1
--------------

you! ;-)


> behaviour is one of 'air', 'water', 'earth', 'fire', 'lramp',
> 'rramp', 'lconveyor', 'rconveyor', 'crumbly' and 'trampoline'.

and 'trap'.

And what about representing cells with combined behaviours, such as
the Water-cells in "Out on a limb" that behave as ramps?


B.2.3
-------------

Each in rooms like The Vat and The Warehouse needs a colour-
attribute.


B.2.4
-----------------


and will need a boolean attribute "lift" to indicate that
a guardian is a Broadsoft lift.


B.2.5
--------------


Teleporters need to be represented too.


B.2.6
-------------

Should this cover Maria, the bed and the toilet too?

What about invalid ramps, and items that don't appear in a JSW48
room if you enter it through a room-exit > 63? (two quirky features
that should be supported by JSWED, BTW).

-----------------
B.3 node
-----------------


I would say that each node is a sprite-frame, rather than a
sprite as I define it: an animated set of frames.


That concludes my series of messages about JSWED, and I must commend
John Elliott for his amazing contributions to the field of MM/JSW,
which has so many new directions to go in now! :-)))

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

 

 

arrowleft
arrowright