
Jet Set Willy  1.43b, 3 August 1996


Written by Darren Salt


Requires at least RISC OS 3.10 to run.


INDEX


To use, search for the relevant section number.

In Edit, use something like "$4.2.3" (with 'Wildcarded expressions' on).
In Zap, use something like "\<4.2.3".


 1        Introduction
 1.1       Playing the game
 1.2       *Important*
 1.3       Risc PC and A7000 users

 2        The Editor

 3        The map editing window

 4        The room editing window
 4.1       General
 4.2       Using the window
 4.2.1      Mode-independent editing
 4.2.2      Map editing mode
 4.2.2.1     Selecting and placing pieces
 4.2.2.2     Changing the appearance and type of the pieces
 4.2.3      Monster editing mode
 4.2.3.1     Selecting, placing, and removing monsters
 4.2.3.2     Movement bounds
 4.2.3.3     Monster movement
 4.2.3.4     Animation sequence editing
 4.2.3.5     Miscellaneous

 5        Event editing
 5.1       General
 5.2       The event types in detail
 5.2.1      Scroll and move
 5.2.2      Move player
 5.2.3      Move monster
 5.2.4      Set monster bounds
 5.2.5      Enable/disable events
 5.3       Initial states

 6        Menus
 6.1       The map editor menu
 6.2       The room editing menu
 6.3       The main menu
 6.4       The Options dialogue box

 7        Game details and statistics
 7.1       Game statistics
 7.2       Sprite file details
 7.3       File types
 7.4       Credits
 7.5       Contacting the author



1  Introduction
   

For those of you not familiar with the game (where have you been?) the aim is
to collect all the rubbish left behind after a massive party funded by the
money from the mines (don't tell me you haven't played Manic Miner either)
before Maria the housekeeper will let you have a well-earned rest.


1.1  Playing the game
     

Remember: avoid anything that moves, and certain bits of scenery...

Playing the game couldn't be easier - just left, right and jump (Z, X and
Return). You can use a joystick if you have an A3010 - use port 1 (the one on
the left). An interface plus emulation of Acorn's 'Joystick' module will do
just as well.

Should Miner Willy collide with a monster or harmful piece of scenery, he
will be placed wherever he last stopped moving. He will, if the option is
set, be immune to monsters for a short while. During this time, the objects
collected counter and clock will be displayed in a very dark colour and will
brighten. When they are once more white, he has no immunity.

Click Select on the JSW icon or select 'Play game' from the menu to play.

It is possible that you may be pushed for memory with 1Mb machines. If this
is the case, do your sprite editing first!

If you have a VGA monitor or better, have a quick look at the options box
(just off the main menu), and the description given below.


1.2  *Important*
     

There have been a lot of changes to !JSW since v1.20 (and even v1.30). The
most important of these are the editable block types, with some new ones to
choose from - disintegrating platforms, springs, and escalators. There are
features allowing you to edit the sprites in the current room or animation
sequence, and to quickly draw lines and rectangles, and quickly reposition
monsters and their bounding boxes. And there are background sprites too...

Also it's easier to jump through staircases than in v1.41 and earlier.

It is strongly suggested that you read this file or the accompanying
StrongHelp manual!


1.3  Risc PC and A7000 users
     

Before you run !JSW, you may want to insert one or two of the files in the
supplied "RPCmodes" directory into your mode definitions file. This should
allow JSW to use its custom screen modes.

WARNING: These modes are not guaranteed to work; I cannot be responsible for
any damage caused by this program to your monitor. I cannot test the modes,
not having (access to) a Risc PC or A7000.



2  The Editor
   

Click Adjust on the JSW icon or select 'Edit'.'Game' from the menu. You will
be presented with a small window showing the currently selected room, and the
four rooms surrounding it.

Click Shift-Adjust on the JSW icon to open the datafiles directory.

It is worth pointing out that JSW supports interactive help, which is
complemented by this text file.



3  The map editing window
   

Clicking Select on any of the four rooms shown (as thumbnails) selects it and
opens the room editing window. If Select is held down, a file icon will
appear, which may be dragged to a directory window to save the room as
"Room_*" where * is the room number.

Clicking Adjust anywhere in this window opens the exits window in which the
exits from the current room and its name can be set. Click on the arrow icons
to step through the available rooms - the name to the right of the room
number will change with it. The name of the current room is shown to the
right of the 'OK' (accept changes) and 'Cancel' (reject changes) icons, along
with the caret. Clicking 'OK' will also force the surrounding room icons to
be updated.

See also 6.1 "The map editor menu".



4  The room editing window
   

4.1  General
     

The first thing you will notice is the toolbox attached to this window.
Actually there are two toolboxes, though only one is shown - to switch
between them, click on the small Miner Willy icon.

There are a few markers to be described here:
 'S' is Miner Willy's start position,
 'T' is the target square,
 't' is a teleport source - stand here and be teleported,
 'd' is a teleport destination.

The teleports are colour coded such that the source and destination of any
particular teleport are shown in the same colour. I pity you if you're not
using a 256-colour mode (at least!) as the TINT is used!


4.2  Using the window
     

4.2.1  Mode-independent editing
       

You can click Shift-Select on a 't' or 'd' to move to the opposite end of
that teleport, eg. click on a teleport destination and the room editing
window will change to show the room containing its source.

The two columns of sprites down either side of the map area indicate where
arrows may be fired from. To add an arrow, or edit one already present, click
Select on it. A small window will be opened, containing two writeable icons.
The top one, marked 'Delay', shows the number of frames between entering this
room and the arrow being fired; it is in the range 0 to 4000 (0 means 'fire
immediately'). The lower one, marked 'Repeat' is the time, in frames, before
the arrow is next fired; it is in the range 32 to 4000 (32, not 0, because
the arrow takes 32 frames to cross the room).

To remove an arrow, click Adjust on it.

You can have up to four arrows per room. Arrows can be placed, edited or
removed in any editing mode.

The guard and finish sprites are not highlighted; however, this should not
present any problems.


4.2.2  Map editing mode
       

Or, more accurately, 'screen layout editing mode'.


4.2.2.1  Selecting and placing pieces
         

The editor starts up in this mode. The toolbox contains three columns of
icons: the left column shows the currently selected piece (green border), the
middle column shows the piece types (see below), and the right column
contains switch types. The top left icon is always blank; the top centre icon
lets you switch to monster editing mode.

The three icons at the bottom of the toolbox do other things. The upper one
shows whether the room has a rope in it (if there is, its movement bounds are
shown in the room editing window). The lower left one allows you to export
the scenery sprites used for the blocks, and the background sprite for that
room, to !Paint, by double-clicking on it; or to save it, by dragging it to a
directory window (the filename is "Blocks") or to another application. The
lower right one shows what the background sprite looks like (when tiled).

You can place pieces on the map simply by clicking or dragging Select in the
room editing window. Clicking or dragging Adjust places blanks.

You are limited to at most 64 collectables and one switch.

The position of the last piece placed is remembered, and may be used in line
and box drawing. Click Ctrl-Select to draw a line, or Ctrl-Adjust for a
filled box. Line drawing is restricted to vertical, horizontal, and the two
45 diagonals, and will not occur outside the rectangle defined by the two
mouse clicks. Any other click registered by !JSW will mean that the stored
position will be forgotten - this is a safety feature so that there's much
less chance of you ruining that room that's taken hours to perfect...

The icon below the four switch types lets you set how often the switch is
operated:
 A - any time (when Miner Willy comes into contact with it);
 V - once per visit to that room;
 G - once per game;
 R - once per visit, switched off whenever the room is entered.

The thumbnail in the map editing window is updated whenever another room is
selected or the main menu opened.


4.2.2.2  Changing the appearance and type of the pieces
         

Click Menu over the toolbox to open another editing window, containing:
- on the left, sixteen icons showing the current appearance of the blocks,
  and to the left of each there is a pair of arrows which allow you to step
  through the available scenery sprites;
- on the right, another sixteen icons, this time showing the type of each
  block, and to the right of each (except the bottom one, which represents
  the 'collectable' object and cannot be redefined) there is a pair of arrows
  which allow you to step through the available block types.

The 'blank' block cannot be redefined.

The conveyor icons (not the escalators) change in steps of four blocks
because four frames are required to animate the conveyor. This animation can
be seen by clicking on the relevant conveyor type icon (right-hand column).

The available block types are:
- platform (light blue block);
- brick (brick pattern);
- staircase (diagonal green line; two types);
- conveyor (yellow block, arrows give direction; two types);
- deadly (skull);
- escalator (staircase with an arrow beneath it; four types);
- disintegrating platform (blue block - top half light, bottom half dark);
- spring (two horizontal lines with a spring shape in between).

Click on OK to accept the changes or Cancel to ignore them.


4.2.3  Monster editing mode
       

This mode allows you to see where the monsters are, and the movement bounds
and initial direction and speed of one of them.


4.2.3.1  Selecting, placing, and removing monsters
         

Clicking Select over a monster selects it. Its movement bounds are drawn as a
white rectangle, and its animation sequence, initial direction and speed are
shown in the toolbox.

Click anywhere else and a new one is created (up to a maximum of eight). New
monsters acquire the currenly selected animation sequence, don't move, and
have their movement bounds set to the minimum.

If you then drag Select, you can easily reposition the monster.

The arrow icons either side of the current animation sequence icon step
through the available sequences. This does not change the sequence used for
the currently selected monster!

'Delete', well, deletes the current monster, unless it has a special function
(guard or finish - see 6.2 "The room editing menu"). If there are events attached to this monster, they will also be deleted - you will be told should
this happen.


4.2.3.2  Movement bounds
         

Movement bounds are set by clicking (or dragging) Adjust in the room editing
window. Exactly which bounds are set depends on where the pointer is relative
to the monster: for example, click above it to set its upper bound.

The bounds can be set to their minimum values by clicking within the monster
according to this diagram:
 TL TT TT TR
 LL -- -- RR
 LL -- -- RR
 BL BB BB BR
where each pair represents a 4*4 block of pixels (remember all monster
sprites are 16*16 pixels), T=upper bound, B=lower bound, L=left bound,
R=right bound. Only the bound(s) shown for a particular part of the monster
is (are) set.

Fine control over the bounds and the monster position is accessed by clicking
Shift-Adjust over the room editing window. The box thus opened (as a menu)
contains several pairs of arrow icons, a box, and a sprite in the centre. The
box represents the movement bounds. These are alterable in unit steps by
clicking on the arrows outside the box: eg. to move the left bound one unit
right, click Select on the right arrow to the left of the box. One unit is
equal to the monster's speed along the appropriate axis (if zero, it defaults
to 2 horizontally or 1 vertically). The four arrows within the box allow you
to adjust the initial position of the monster.

At present, adjusting the movement bounds causes a redraw of the area
enclosed by the bounds; moving the monster causes a complete redraw.

If you decide to edit the sprites making up the current animation sequence,
then double-click on the sequence icon - this will export the appropriate
sprites to !Paint. You may also drag the icon to another application, or to
a directory viewer to save the sequence (the name is of the form "Monster*"
where * is !JSW's internal animation sequence number - this is not
important, but the sprite names are).


4.2.3.3  Monster movement
         

To set the initial speed for the current monster, use the arrow icons
immediately below 'Speed'. The speed is shown between the arrows: the upper
one is the horizontal speed, the lower is the vertical speed. The direction
is shown by the four buttons above (follow their arrangement). These can be
clicked on to reverse direction if required.

By way of example, the left arrow decreases the speed if the monster is
moving right, starts it moving left if stationary, and increases its speed if
it's moving left. (This is the same as saying 'decreases the horizontal
component of its initial velocity' if we take 'right' as 'positive'.)

You'll notice that the horizontal speed is limited to 0, 2, 4, or 8 pixels
whereas the vertical speed can be any integer from 0 to 8.

Lifts cannot move horizontally, their vertical speed range is limited to 0,
1, 2, 4 or 8 pixels in either direction, and they are ALWAYS gridlocked.

Adjusting the speed may affect the movement bounds. The left and right bounds
are locked to multiples of the monster's horizontal speed (or 2 if zero); the
top and bottom bounds are similarly locked to the monster's vertical speed
(or 1 if zero). These are always rounded towards the monster.

It's easy to have things moving in one direction using the 'One dir' options.
As an example, say we want a drop of water to fall from the roof to the floor
below. First, put the drop in position and set its upper and lower bounds (we
don't want it to move horizontally). Set it moving downwards at, say, speed
4. Now click on the button marked 'V' and test it. It will fall, disappear
for a while, then reappear at its upper bound.

The length of time for which it is invisible depends on its speed and how far
it would have to move to reach, in this example, its upper bound. You can
make it appear there immediately on reaching its lower bound by setting the
'No delay' option.

The 'H' button works similarly to the 'V' button, but uses the left and right
bounds instead. You cannot have both 'H' and 'V' set at once!

Another example: if you had 'H' selected and the monster moving left to start
with, you would never see it moving right. You can have it moving vertically
as well if you like.


4.2.3.4  Animation sequence editing
         

Click Menu over the monster editing toolbox to access this window. It
contains two large(ish) boxes containing the sprites used for the directions
shown (note that 'right' overrides 'up' and 'down', and 'left' overrides
'right'). The individual frames have arrows either side of them to allow you
to step through the available sprites.

Below this, we have the 'X sets frame number' flag. This is specifically for
those sprites where all eight animation frames will fit into the same 16*16
space without moving said space. Maybe some diagrams will help - load the
file 'xFrame' (found within !JSW) into !Draw to see how it works.

Beside this, there's a flag indicating whether sprites created using this
sequence act as lifts or not. If you've ever played Jet Set Willy 2 you'll
know how these work - you can stand on them, but if you hit them from the
side or below...

The lifts use a few invisible platform types in order to do their job
properly. However, this will *not* cause bits of platform to be deleted
(unlike earlier releases).

You must leave the top nine pixel rows blank (ie. filled with black) in each
frame intended for use in a lift animation sequence or Miner Willy won't be
able to use it.

You won't be able to alter the flags described here if the animation sequence
is in use somewhere, either as a monster or as Miner Willy.

'Animate' runs the animation sequence. Click Select to see the left-hand
sequence, or Adjust for the right-hand sequence. Small but important: !JSW
doesn't know about reversed mouse buttons!

To the right of the animation frames, there are four buttons for common
animation sequences. They are designed to show how the sequence is built up
from the top left frame (frame 0). Each digit 1 to 7 represents the sprite
you would see if you clicked Select that number of times on the right arrow
beside frame 0. Click on the required button for instant animation sequence.

'OK' to accept the changes, and 'Cancel' to reject them.


4.2.3.5  Miscellaneous
         

The 'Player' icon sets the animation sequence used for Miner Willy, which is
shown below. This sequence must have its 'X sets frame number' flag set (see
above).

Finally, the small Miner Willy allows you to return to map editing mode.



5  Event editing
   

5.1  General
     

You can edit the events for the current room by selecting 'Edit events...' in
the editing menu.

It is best to think of this window as 'Event' x is of 'Type' y and is
activated 'When' z.

'x': The currently selected event - one of eight possible - is shown, in the
event editing window, to the right of the word "Event"; click on one to
select that event for editing.

'y': Below this are the event types. Initially, "None" will be selected;
clicking on one of these causes the event to be of that type. The possible
types are:
- None: ignored completely;
- Scroll & move: an area of the room is 'scrolled' out of view, and the
  player may, optionally, be moved;
- Move player: moves the player to a given location / room;
- Move monster: sets a new speed and optional position for a monster;
- Set monster bounds: sets new bounds for a monster;
- Enable/disable events: sets event states.

'z': The event is triggered when the player or one of the monsters is at a
specific position, all the objects in a room have been collected, or when a
specific switch is either on or off. (Note that missing switches are always
'on'.) Click on the required option to set it.

The room in which all the objects must be collected in order to trigger this
event is specified by using the arrows to the right of the option. Both the
room number and name are displayed; "-" means 'current room'.

The monster number (to the right of the "Monster" option) can be altered by
clicking Adjust on one in the current room, clicking on "Current", or by
using the arrows next to it. It is used to determine which monster to check
(if the event is dependent on a monster being in a specific place), and, for
the event types that affect a monster, which one is affected.

The coordinates (beside "is at") show the position which the monster or
player must be at before the event is triggered. (0,0) is at the top left of
the room, and (255,127) is the bottom right. The coordinates required are, as
usual, of the top left corner of the sprite, which means that, in practice,
the rightmost coordinate is 240 (or 246 if the sprite is animated with a
sequence which has the 'X position' bit set), and the lowest possible is 112.
The flags 'No X' and 'No Y', when selected, cause the X or Y position (as
appropriate) not to be checked.

Wherever input is expected, it must be registered by pressing RETURN.

You can input coordinates by clicking Select in the room editing window.
Exactly what coordinates are entered and where depends on where the caret is
- make sure it's in the right icon first!

For single icons, the coordinate will be entered and the caret advanced as if
RETURN had been pressed; for icon pairs (two icons with a comma between
them), both are filled in and the caret is not moved.

"Cancel" cancels the changes, "OK" accepts them.

The map editing window can only be used to reopen the current room while in
this mode.

You may also click Select on a blank part of the window to bring it to the
front; click Adjust instead to bring the room editing window to the front.


5.2  The event types in detail
     

5.2.1  Scroll and move
       

The "Scroll area" box contains the area to be scrolled. Enter the coordinates
in the boxes provided (0 to 31 horizontally, 0 to 15 vertically - this works
on a map cell basis), and select a direction. A value may be entered in the
'keep ... rows/cols' in which case the indicated number of rows or columns
are retained after scrolling. Any value up to 30 may be entered here, though
if greater than the height or width (depending on scroll direction) then
(width-1) or (height-1) is used as appropriate.

The room number may be altered by clicking on the arrows in the "Go to room"
box; the coordinates to go to may be entered in the "Go to XY" box (again in
map cell format - 0 to 30 horizontally, 0 to 14 vertically, because we can't
place Miner Willy partly outside the playing area). If this box is not ticked
then Miner Willy will not be moved.

This event may only be triggered once, unless the 'keep rows/cols' value is
non-zero, in which case it is triggered whenever the trigger condition occurs
(becomes true) and then locked out until the condition is no longer true.


5.2.2  Move player
       

The room number may be altered by clicking on the arrows either side of it;
the coordinates to go to may be entered in the writeable icons below, in map
cell format - 0 to 30 horizontally, 0 to 14 vertically.

When this event is triggered, Miner Willy is moved to the specified location
in the specified room.


5.2.3  Move monster
       

This has, on the left, a group of 9 buttons which set where the monster will
move to (think of the box they are on as the monster's movement bounds).
Immediately to the right are:
- the coordinates to move to (see above, 'beside "is at"');
- "Move", which, when clear, only causes the monster's movement speed to be
  changed (and also the coordinates boxes to be greyed out);
- "One use" meaning one use only while in this room;
- "Every other" meaning use every other time this event is triggered;
- "1", used only when "Every other" is set, meaning trigger first time if on,
  second time if off.
You'll probably need "One use" set if the event is NOT triggered by the
monster's position.

To the right, we have the speed controls. These work in exactly the same way
as in monster editing mode, but only affect the monster when the event is
triggered.

Below, there are some bounce options. Each option represents an invisible
surface off which the monster will bounce - ie. '|' means that  becomes 
and vice versa. (Warning - with the diagonal mirrors, be careful to ensure
the vertical velocity is, when applied horizontally, a valid horizontal
velocity!)

You can have either speed or bounce controls selected, but, clearly, not
both. To select which type to use, click on the box title - 'Speed' or
'Bounce monster'.

This event may be triggered more than once, unless the "Don't move" and "Use
once only" flags are both set.


5.2.4  Set monster bounds
       

This has four writeable boxes, each one described by the text to its left.
For example, the box described as "Right" sets the monster's right bound to
the given X coordinate. The bounds default to the monster's initial bounds,
so you don't have to change them all if you don't want to.

Clicking Select in the room editing window alters the bounding box in exactly
the same way as Adjust in monster editing mode (except that dragging won't
work).

This event may only be triggered once.


5.2.5  Enable/disable events
       

This event, when triggered, causes selected events to be enabled or disabled.
Events which have been disabled because they are "once only" events cannot be
re-enabled. One column is used per event number.


5.3  Initial states
     

Remember that, when entering a room, all events are in their initial
(untriggered) state, though they are immediately checked to see if any should
be triggered, instantly and invisibly. The restrictions on "scroll & move"
present in previous versions (scrolling anything that's there, even parts of
monsters) have been lifted.



6  Menus
   

6.1  The map editor menu
     

Accessed from the map editing window.

'Go to room' allows you to go to any room quickly and easily. There is a
writable icon between two arrow icons, in which the room number is entered;
the arrows can be used to adjust the room number. The name of the room
specified is shown below; click on OK to select that room for editing, or
Cancel to ignore.

For the other options, see 6.3 "The main menu".


6.2  The room editing menu
     

Accessed by clicking Menu over the room editing window.

For the first four options, the pointer will look like the appropriate
character or object from the original game. You can move between rooms as
normal; click Select within the map editing window to set the position or
select the monster, or click Adjust to cancel the operation. The pointer(s)
used are given in brackets at the end of each description; the definitions
can be found in the file 'Sprites'.

'Set start square' allows you to set Miner Willy's start position, eg. by the
bath in The Bathroom. (ptr_start)

'Set target square' allows you to set Miner Willy's target position, eg. the
bed in the Master Bedroom. This is where you must take Miner Willy when all
the objects have been collected - he will automatically walk right from here
until he reaches the finish sprite. (ptr_target)

'Set guard sprite' allows you to set the monster guarding the target
position, eg. Maria the housekeeper in the Master Bedroom. This monster will
disappear when all the objects have been collected. The 'right-hand' frames
are used when any part of Miner Willy is at the same height as the guard -
all four when within 15 pixels, the last two when within 7 pixels, and the
last one only when within 3 pixels. (ptr_guard)

'Set finish sprite' allows you to set the monster guarding the target
position, eg. the toilet in The Bathroom. This monster will
disappear when all the objects have been collected. To help you, the monsters
are shown while in this mode. The 'right-hand' frames are only used
when Miner Willy reaches this monster after arriving at the target square.
(ptr_finish)

'Set teleport' allows you to place a new teleport or change the source or
destination of an existing one. Click once to place or choose either the
source or the destination. The pointer will change shape, indicating that you
should now place the new source or destination, changing room if necessary.
Clicking on one end of a teleport and then again somewhere else *in the same
room* will move that end; clicking in another room will move the other end.
(ptr_puttran, ptr_putdest, ptr_putsrc)

'Delete teleport', as its name suggests, deletes the next teleport you click
on - source or destination will do. (ptr_deltran)

'Set rope position' - only available if the current room contains a rope -
allows you to set where the rope is attached. Use the arrows in the dialogue
box to position it - the allowed range is -63 to +63 pixels, relative to the
rope's default position.

'Edit events' leads to a dialogue box which allows you to create and edit up
to eight events in the current room.

'Go to room' - see the editor menu.

'Restore room' restores the room to its previous layout, including scenery
sprites and types, monsters, and events. The room is stored whenever you save
it or the game, or play or test the game. Loading a room cannot be undone in
this way (yet).

'Clear room' wipes the room completely (teleports are left intact). It can be
restored using 'Restore room'.

'Clear unused data' wipes all the rooms which cannot be reached, and all
sprites and animation sequences which are not used in the remaining rooms. A
room can be reached if there is a route to it from the start room, or if
there is a teleport to it from another room, which itself must be reachable.
(The main use of this is to get rid of old rooms which are no longer needed,
and which may contain collectables. It can also improve the compression ratio
of the file.) *** This is irreversible.

'Edit' - see 6.3 "The main menu".

'Grid lock' is a flag. When set, new monsters and changes to movement bounds
are locked to a 32*16 grid (which just happens to be the room size).


6.3  The main menu
     

Accessed from the icon bar.

'Info' - well...

'Play game' is obvious.

'Options' leads to a dialogue box - see 6.4 "The Options dialogue box".

'Edit' leads to a submenu containing three options:
- 'Game', which opens the map editing window;
- 'Monster sprites', 'Scenery sprites' and 'Background sprites' which each
  export the relevant sprites to !Paint, first running it if necessary;
- 'Author' is where you enter your name. You have 32 charaters in which to do
  so.
- 'JSW 1 turn type' which, when ticked, causes Miner Willy to turn as he
  would in Manic Miner and JSW (as opposed to JSW2);
- 'Statistics' just shows you some game statistics - how many rooms etc.

'Test game' is similar to 'Play game' but Miner Willy is missing. It's simple
to use:
 Z  left    '  up     P  single step    Space   next frame
 X  right   /  down   R  normal speed   Escape  exit to desktop
and 1 to 8 to activate events 1 to 8.

'Save' leads to a submenu containing:
- 'Game', meaning 'save game' :-)
- 'Monster sprites', obvious;
- 'Scenery sprites', obvious;
- 'Background sprites', obvious;
- 'Animation sequences', to save the animation data on its own;
- 'Current room', to save the current room (everything about it except exits,
  teleports and event data)
- 'Current scenery', to save the scenery sprite details for the current room;
- 'Open save dir', to open the directory "JSW:JSWfiles".
Any option described as 'to save...' may be clicked on to save the file to
"JSW:JSWfiles" - this also happens if no pathname is supplied for its save
box (except then you don't get a default name). The default names are:
Game                 JSWfile   (only if <Clear=>Menu.Clear> selected)
Monster sprites      Monsters
Scenery sprites      Scenery
Background sprites   BgndSprs
Animation sequences  Animation
Current room         Room_x    (x is the room number)
Current scenery      Blocks_x

'Clear' wipes the current game file (sprites included) from memory so that
you can start afresh with blank screens, blank sprites, and no animation.

'Help' leads to a submenu containing two options:
- 'Interactive', which runs the !Help application, if it isn't already
  running, and will open the interactive help window;
- 'Manual': there are two copies of the JSW manual, one in StrongHelp 2
  format, the other in plain text format. JSW will try to load the StrongHelp
  manual first; if this fails, the plain text manual is loaded instead.


'Quit' is very obvious.


6.4  The Options dialogue box
     

- 'Temporary immunity to monsters' - see the introduction section.
- 'Spectrum-style rope climbing' - when on, you can use left and right to
  climb the ropes exactly as in the Spectrum version.
- 'Pulse effect for collectables' - when on, the collectable objects are
  shown as pulsing between full and half brightness; when off, the flicker
  effect is used (invisible once in every 8 frames).
- 'Manic Miner disintegration' - when on, disintegrating platforms 'sink'.
- 'Use fade routine' - when on, uses a top-to-bottom fade effect for the
  title page, when you 'press SPACE to start', or press ESCAPE while playing.
- 'Use full VGA screen' - only if you're using a VGA monitor or better: when
  not selected (or if there's not enough memory), you get a small display in
  the middle of the screen (yes, a letterbox mode, but I've squashed it
  horizontally as well), and when selected, you get a full size display with
  a speed penalty - it may run a bit slowly on ARM2 and (just possibly)
  ARM250 based machines (but then I've made it as fast as I can without
  completely rewriting my plotting routines). This option is ignored if
  you're using a 'standard' monitor or TV.
- 'Force CGA mode' - forces CGA mode regardless of monitor type, overriding
  the full VGA screen option. Be careful with this one!
- 'Use standard modes' - uses modes 13 and 49 instead of JSW's own modes. Use
  of mode 49 will require the GameModes module - JSW will try to load it from
  System:Modules if necessary.
- 'Fix VGA sound' - ensures that the speed increase and the associated pitch
  jump do not happen. Only takes effect if a VGA-compatible monitor is
  attached.
- 'Bgnd scrolling' - whether the background is scrolled or not. Choices are
  up, down, and none.
- 'Speed'
  - 'Fast (25fps)' - fast mode;
  - 'Slow (17fps)' - slow mode (the proper speed!);
- 'Tune:' - select the in-game music by using the arrows either side of the
  tune name. The name '(sound FX)' means that there is no tune, so the sound
  effects are used instead. (Note: I only did 'Moonlight Sonata' and 'The
  Original In-Game Tune'. The rest - in their Maestro-file form - are PD.)
- 'Sound on' - toggles whether the in-game sound is on or off.
- 'Volume:' - the in-game sound volume level. Alter it using the arrows
  either side of it.
- You can also 'Cancel' any changes, 'Save' the settings, or click on 'OK' to
  accept them without saving.


7  Game details and statistics
   

7.1  Game statistics
     

In the game there is a maximum of:
 160 rooms
 256 scenery sprites (map piece definitions!)
  80 animation sequences
 320 monster sprites
   2 arrow sprites
  32 teleports
   1 start position
   1 target position
   1 guard sprite
   1 finish sprite
     Per room:
  64 collectables      = total of 10240
   8 monsters          = total of 1280
   4 arrows            = total of 640
   8 events            = total of 1280
   1 background sprite = total of 160
   1 switch            = total of 160


7.2  Sprite file details
     

The sprite files are laid out in this way:
 Type        Prefix  Numbering  Colours  Size
 Monster     frame   0 to 319     256    16x16
 Monster     arrow   0, 1, r, l   256     8x8
 Scenery     block   0 to 255     256     8x8
 Background  backg   0 to 159     256     8x8
 Switch      lever   0 to 7       256     8x8

Palettes and masks are always ignored.

For arrows, 'r' and 'l' are equivalent to, respectively, '0' and '1'.

Not all the sprites need to be present, and none, any or all of each of the
above types may be present in the same file. Any sprites not conforming to
the above standards are ignored. It is best to define the sprites in mode 13
(256 colours, old palette, 45dpi by 45dpi for those with Risc PCs).

Black (colour 0) is used as a mask for all except the background sprites, and
is thus treated as transparent. Collision detection relies on this masking
method.


7.3  File types
     

These are 'user' filetypes (I hope!) so other applications' filetypes may
clash.

 &1C0  JSW_Game  Game file, 186.3K unsquashed
 &1C1  JSW_Data  One of:
                  Set of animation sequences, 2560 bytes
                  Single room, 557 bytes
                  Scenery sprite numbers and types for one room, 28 bytes


7.4  Credits
     

Matthew Smith for writing the original Jet Set Willy.

Derrick Rowson for writing Jet Set Willy 2.

Eddie Edwards (eddie@powerslv.demon.co.uk) for writing a version of JSW
which, well... the editor is <blergh>; and for prompting me to make jumping
through stairs easier.

Me for writing this version (because of his version).

Russ Juckes (RussHype@digibank.demon.co.uk) for bug reporting and suggesting
a couple of improvements that found their way into v1.34. Certain PD library
people should note that he is NOT the author.

Richard Hallas (Richard@Hallas.demon.co.uk) for supplying the Risc PC mode
definition files, for help in fixing two of the tunes, and for prompting the
object 'pulsing' effect. Also Reuben Thomas for another RPC MDF.

7.5  Contacting the author
     

To contact the actual author (Darren Salt):

Snail mail: 17, Allendale Crescent, Wansbeck Estate, Stakeford,
            Northumberland, (England) NE62 5YG

E-mail: arcsalt@spuddy.mew.co.uk
        darren.salt@unn.ac.uk (until June 1996)
