Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
sopwith-mission(5)	       File Formats Manual	      sopwith-mission(5)

NAME
      .sop - Sopwith mission format

DESCRIPTION
     The  Sopwith  mission  format allows sopwith(6) to load custom user-defined
     levels and other modifications to the game. The files use Yocton  as  their
     basic format.

     Each .sop file can contain three different sections:

     level  This  section  contains  level data. If present, the game's level is
	    replaced with an entirely new level defined within this section. See
	    LEVEL SECTION below.

     symbols
	    This section allows the game's symbols  (sprites)  to  be  replaced.
	    This allows graphical modifications to the game. See SYMBOLS SECTION
	    below.

     sounds
	    This section allows the game's music to be replaced. See SOUNDS SEC-
	    TION below.

LEVEL SECTION
     The  level  section  allows  a complete new level to be defined. At present
     only a single level can be defined, although this may change in the future.
     Each level contains two types of  subsection:  ground,  which  defines  the
     level's terrain, and multiple object sections, each of which defines an in-
     game object.

     The ground subsection is a list of decimal integer values that describe the
     level's  terrain.	Each value is defined through a Yocton property named _.
     Values should be in the range 16-199, and there should be a minimum of  320
     (ie. one screen's worth). The following is an example:

       ground {
	 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	 ...
       }

     Each  object  subsection  defines an object that appears in the level.  The
     following is an example:

       object {
	 type: PLANE
	 x: 30
	 orient: 0
	 territory_l: 0
	 territory_r: 0
	 faction: PLAYER1
       }

     As seen, each object has a number of different properties:

     type   See OBJECT TYPES below.

     x	    The X coordinate within the level where the object	appears.  The  Y
	    coordinate is set automatically depending on the object type and can
	    not be specified.

     orient
	    For planes, defines the direction in which planes face: 0 (right) or
	    1 (left).  For ground targets, this controls the type of ground tar-
	    get; see TARGET TYPES below.

     faction
	    Specifies  the faction to which the object belongs. See FACTIONS be-
	    low.

     transform
	    For ground targets, this specifies a "transformation"  to  apply  to
	    the  symbol.   Eight  different transformations are supported: 0 (no
	    transformation); 1 (rotate 90 degrees counterclockwise);  2  (rotate
	    upside-down);  3 (rotate 90 degrees clockwise); 4 (flip vertically);
	    5 (mirror, then rotate 90 degrees counterclockwise); 6  (mirror);  7
	    (mirror  and  then rotate 90 degrees clockwise).  If you want to see
	    an Ox do a headstand, this is the property	to  use,  although  it's
	    more  likely  you'll want to use it to make tanks face the right di-
	    rection.

     territory_l
	    For planes, the left boundary of the range of the  level  the  plane
	    defends.

     territory_r
	    For  planes,  the right boundary of the range of the level the plane
	    defends.

     The following is an example of a minimal level section that just contains a
     flat ground with no objects other than the player's plane:

       level {
	 object {
	   type: PLANE
	   x: 30
	   orient: 0
	   territory_l: 0
	   territory_r: 0
	   faction: PLAYER1
	 }
	 ground {
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	   _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64 _: 64
	 }
       }

OBJECT TYPES
     The following object types can appear in a level:

     PLANE  Defines either a player or computer-controlled  plane.  The  faction
	    property  controls	whether  it  is  a human player or computer-con-
	    trolled player; see FACTIONS below.  Computer-controlled planes will
	    defend their "territory", the range of which is defined by the  ter-
	    ritory_l  and territory_r properties. If the player enters this ter-
	    ritory, they will take off from their base and attack.

     TARGET
	    A ground target. The value of the orient property defines  the  type
	    of target, see TARGET TYPES below. The value of the faction property
	    specifies  the  faction to which the target belongs. When one player
	    destroys all targets owned by all enemy factions, the game	advances
	    to the next level.

     BALLOON
	    Observation  balloon.  The	value of the orient property defines the
	    type of balloon; 0 = spherical balloon, 1 = Caquot-style. The  value
	    of	the  faction property specifies the faction to which the balloon
	    belongs.

     OX     An Ox (type of cattle). The Ox does nothing except act as an  obsta-
	    cle,  and  does  not need to be killed to advance to the next level.
	    Does not appear in novice mode.

     BIRD   A single bird that flies randomly around the level. The bird acts as
	    an obstacle that the player(s) must avoid. Does not appear in novice
	    mode.

     FLOCK  A flock of birds moves along the top of the screen. The  flock  acts
	    an obstacle and may disperse into many different birds if disturbed.
	    Does not appear in novice mode.

FACTIONS
     Military  objects belong to a "faction"; objects allied to a different fac-
     tion are considered enemies. The color of the object indicates the faction:

     PLAYER1
	    For planes, cyan fuselage and magenta wings. This corresponds to the
	    human player in single player mode,  and  player  1  in  multiplayer
	    mode.

     PLAYER2
	    For planes, magenta fuselage and cyan wings. This corresponds to the
	    computer opponent in single player mode, and player 2 in multiplayer
	    mode.

     NONE   Used for animals / non-military targets.

     The  following values are also recognized; they are currently (effectively)
     unused, but may be used in the future if the  multiplayer	feature  is  ex-
     tended to support more than two players.

     PLAYER3
	    Maps  to  PLAYER2  in  single player mode, or PLAYER1 in multiplayer
	    mode. Planes of this faction are currently	ignored  in  multiplayer
	    mode.

     PLAYER4
	    Maps  to  PLAYER2.	Planes	of this faction are currently ignored in
	    multiplayer mode.

     PLAYER5, PLAYER7
	    Maps to PLAYER1, but planes with this faction are currently ignored.

     PLAYER6, PLAYER8
	    Maps to PLAYER2, but planes with this faction are currently ignored.

SYMBOLS SECTION
     The symbols section allows the game's graphics to be replaced. The  section
     can  contain a number of subsections, one for each type of graphic.  Graph-
     ics are defined as multiline text strings. The following is an example of a
     symbols section that changes the hangar graphic to  add  an  extra  (white)
     flag:

       symbols {
	 swtrgsym {
	   0:
	   "	-		  -	    \n" &
	   "	- # # # #	  - * * * * \n" &
	   "	- # # # #	  - * * * * \n" &
	   "	-		  -	    \n" &
	   "	-		  -	    \n" &
	   "	-		  -	    \n" &
	   "	-		  -	    \n" &
	   "* * * * * * * * * * * * * * * * \n" &
	   "* * * * * * * * * * * * * * * * \n" &
	   "* * - - - - - - - - - - - - * * \n" &
	   "* * - * * * * * * * * * * - * * \n" &
	   "* * - * * * * * * * * * * - * * \n" &
	   "* * - * * * * * * * * * * - * * \n" &
	   "* * - * * * * * * * * * * - * * \n" &
	   "* * - * * * * * * * * * * - * * \n" &
	   "* * - * * * * * * * * * * - * * \n"
	 }
       }

     Graphics  are  limited to the original four CGA colors: black (space); cyan
     (asterisk); magenta (hyphen) and white (number sign / pound /  octothorpe).
     Cyan  and magenta are swapped for enemy planes (single player) and player 2
     (multiplayer).

     The following graphics are defined:

     swplnsym (16x16)
	    Plane. There are four frames, for facing right (0), rotated 22.5 de-
	    grees counterclockwise (1), 45 degrees (2) and 67.5 degrees (3).

     swhitsym (16x16)
	    Crashing plane. There are two frames of animation.

     swwinsym (16x16)
	    Plane flying into the distance after completing the level. There are
	    four frames of animation.

     swtrgsym (16x16)
	    Ground target. Each frame is a different target type and the  values
	    are those from TARGET TYPES below.

     swhtrsym (16x16)
	    Destroyed  ground  target.	Each  frame a different target type; the
	    values are those from TARGET TYPES below. The number  of  pixels  in
	    the  symbol control the size of the explosion when the target is de-
	    stroyed.

     swballoonsym (16x16)
	    Observation balloon.  Each	type  of  balloon  has	three  animation
	    frames:  drifting left, centered, and drifting right. Spherical bal-
	    loon starts at frame 0 and Caquot-style balloon begins at frame 3.

     swoxsym (16x16)
	    Ox. There is one frame.

     swflksym (16x16)
	    Bird flock. There are two frames, for the  "flapping  wings"  anima-
	    tion.

     swbrdsym (4x2)
	    Bird. There are two frames, for the "flapping wings" animation.

     swbmbsym (8x8)
	    Falling bomb. There are two frames, for facing right (0) and rotated
	    45 degrees counterclockwise (1).

     swmscsym (8x8)
	    Missile.  There  are four frames, for facing right (0), rotated 22.5
	    degrees counterclockwise (1), 45 degrees (2) and 67.5 degrees (3).

     swbstsym (8x8)
	    Starburst (flare). There are two frames of animation.

     swexpsym (8x8)
	    Debris after an explosion. There  are  eight  frames  for  different
	    types of debris.

     swmedalsym (8x12)
	    Medals. There are three frames for each different type.

     swribbonsym (8x2)
	    Ribbons. There are six frames for each different type.

     swshtsym (16x16)
	    Shot out window. There is a single frame.

     swsplsym (32x32)
	    Bird "splatted" into window. There is a single frame.

TARGET TYPES
     0	    Hangar

     1	    Factory

     2	    Fuel tank

     3	    Tank

     4	    Truck

     5	    Tanker truck

     6	    Flag

     7	    Tent

     8-12   User-defined  target;  the	symbols section should be used to supply
	    the graphics (see SYMBOLS SECTION above). Type 12 produces a big ex-
	    plosion like an oil tank when destroyed.

     13-17  "Passive" user-defined target (does not fire at enemy planes).  Type
	    17 produces a big explosion like an oil tank when destroyed.

     18     Radio tower

     19     Water tower

SOUNDS SECTION
     The  sounds  section allows the in-game music to be replaced. There is only
     one property at present, named title_tune; its value is a string containing
     a sequence of notes to play. The following is an example of a  sounds  sec-
     tion  that  replaces  the title music with the beginning of "Au Clair de la
     Lune":

       sounds {
	 title_tune:
	 "g4/r8/g4/r8/g4/r8/a4/r8/b2/r4/a2/r2/" &
	 "g4/r8/b4/r8/a4/r8/a4/r8/g2/r2/"
       }

     As seen, the format consists of a number of musical notes	(a-g)  separated
     by  '/'  characters.  The notes are in the C major scale. Each note is fol-
     lowed by a number that indicates the length of the note as a fraction of  a
     whole  note; for example, 2 means half-note, 4 means quarter-note, etc. The
     following additional syntax is also supported:

     *	    For a rest, use "r" instead of a note character. The syntax is  oth-
	    erwise identical to that for a normal note, with the only difference
	    being that no note will be played.

     *	    To	play a sharp, append a '+' character. For example, "g+4/" repre-
	    sents a quarter-length G#. Alternatively you can  append  a  '-'  to
	    play a flat; for example "e-2/" is a half-length E-flat (aka D#).

     *	    Prefix  a note with < or > to shift down or up an octave. All subse-
	    quent notes will be played in this octave.

     *	    Append a '.' character to play a dotted note. A  dotted  note  plays
	    for 50% longer than a normal note.

     The original DOS version of Sopwith interpreted notes as being in the A mi-
     nor  scale,  but  this is believed to have been a mistake and notes are now
     assumed to be in the more common C major scale. This  does,  however,  mean
     that tunes from DOS .exe hacks will play differently; any A or B notes will
     need to be shifted down one octave to convert to the C major scale.

SEE ALSO
     sopwith(6),

AUTHORS
     This manual page was written by Simon Howard.

HISTORY
     The original DOS version of Sopwith only supported a single level, although
     later  versions  increased  the  difficulty  by repeatedly playing the same
     level again at increasing speeds. Some modifications were made by	fans  by
     hex-editing the DOS .exe file.

     Some  simple  hacks  just	changed  the name shown on the title screen (one
     changed it to "Red Baron", for example).  Some  more  elaborate  mods  that
     changed  the  level  itself included "Blokwit" and "Sokwith". Andrew Jenner
     even developed a basic level editor that allowed people to make  their  own
     maps, although the changes that can be made using this technique are inher-
     ently limited.

     Full  support for custom maps did not appear until 2024, with SDL Sopwith's
     v2.4 release. There will likely be further future extensions to this format
     to allow people to share more elaborate modifications to the game.

							      sopwith-mission(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sopwith-mission&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help