M.U.G.E.N  Updates
------------------
Updates are in order of most recent first.

1 Jan 2000
==========
At a glance:
- Began testing of helpers. Helpers can be used to create and control
  player-type objects that have their own states. Assisting characters
  such as pets can be done using helpers, but one might find other
  uses too.
- Training dummy controls - Press 'M' while paused in training mode.
- Complete documentation is available for state triggers.
- Stages now support reflections for a shiny-smooth effect.
- Explods bugs have been fixed. Explods let you create simple effects.
- Lots of engine updates

Known issues
------------
- Camera make shake horizontally when there are opposing players
  standing very close to the tension lines on either end of the
  screen. This problem goes away if one of the characters move.
- Dust is drawn over the foreground layer of a stage
- Lifebars are not very customizable, especially in team mode
- No tools are available for creating fonts

Docs
----
- cns documentation has been updated. Minor points have been
  clarified or elaborated on. Trigger documentation has been
  moved out of cns.txt.
- full trigger documentation is in trigger.txt. We do not
  have full controller documentation yet
- incompatibility issues are addressed in incompat.txt
- a html table of contents is available in docs/ as mugen.htm

Code
----
- *** changed from previous version ***
  Intro is no longer held by using var9. Instead, use the new AssertSpecial
  controller to assert the "Intro" flag:
    [State 191, 1]        ;In the intro state
    type = AssertSpecial
    trigger1 = Time = [0,70]
    flag = Intro
  More on the AssertSpecial controller below.
- *** changed from previous version ***
  CNS: MakeExplod controller renamed to Explod
  Lots of explod updates
- *** changed from previous version ***
  Palette ordering is now:
  X Y Z
  4 5 6
  A B C
  1 2 3
  As before, holding down start while selecting gives you the
  extra palettes (palno+6)

- mugen.cfg: [Arcade] group: "AI.Cheat" added. Check mugen.cfg
  for a description of it. You may want to turn this off if a
  AI that cheats offends you.
- Players now cannot guard a hit that does enough guard damage to KO them.
- Triggers now allow retargeting. See trigger.txt for details.
- CNS: New controllers: Helper, DestroySelf
  See incompat.txt for a mini-guide on helpers.
- CNS: New controller: HitOverride
  Overrides the player's gethit state. Useful for preventing helper
  characters from changing into clones of p1 if they are hit. Still
  under development, so format may change.
- CNS: HitDef controller
  Added new optional parameter "AffectTeam". This lets you choose who you
  can hit. Valid values are "Enemy", "Friendly" and "Both". Defaults
  to "Enemy" if omitted.
- CNS: Projectile controller
  Added optional "projcancelanim" parameter. It is the animation to play
  when the projectile is canceled out by another.
- CNS: ProjHit, ProjContact, ProjGuarded controllers
  Format has changed. Please see docs/trigger.txt for more information.
- CNS: ScreenBound controller
  Minor change in parameter "movecamera". It now takes two arguments,
  the first for x and the second for y. For example, if you only want the
  camera to follow your character horizontally but not vertically, you
  would use "movecamera = 1, 0".
  This defaults to 0,0 if omitted (camera does not follow at all)
- CNS: New trigger: NumExplod
  Returns the number of explods belonging to the player. If you append
  an ID number to the trigger name, it counts only explods with a matching
  ID. For example, trigger1 = NumExplod1000 < 2
  will trigger if there are fewer than 2 explods with ID 1000
- CNS: New controller: MoveHitReset
  Resets MoveHit, MoveGuarded and MoveContact flags.
- CNS: New trigger: Lose
  Works like the win trigger, except detects if p1's team has lost.
- CNS: Hitdef controller:
  Velocity parameters can now take the letter 'n' in place of a velocity
  component. This keeps the opponent's velocity unchanged when he is hit.
  For example, 
    ground.velocity = n, -5 
  x-velocity is unchanged, but y-velocity is set to -5.
- CNS: [Size] group:
  Added optional "shadowoffset" parameter. This is the amount by which the
  shadow of the character will be offset as it is drawn. Use to prevent
  characters from "floating" in the air.
- CNS: New controllers: BindToParent, BindToRoot
  Binds a player's position to its parent or root.
  Takes parameters:
    pos = x,y
    time = t
    facing = f
  x,y is the offset to the position you are binding to
  t is the time to bind (default 1). Set to -1 to bind indefinitely
  f is the direction to face relative to the parent/root. Valid values
  are 1, -1 and 0. Set to 0 to ignore the parent/root's facing direction.
- CNS: New controller: BindToTarget
  Takes parameters:
    pos = x,y [, relpos]
    time = t
  x,y is the offset to the position you are binding to
  The optional relpos parameter is one of {foot, mid, head}. Defaults
  to "foot".
  t is the time to bind (default 1). Set to -1 to bind indefinitely
  For example,
    pos = 5,20, head
    time = 10
- CNS: Added parameters to constants: [Size] group:
    head.pos = x, y  ;Def: -5,-90
    mid.pos = x, y   ;Def: -5,-60
  head.pos is the approximate position of the head of your character in one of
  his light gethit frames.  head.pos is the approximate position of the
  midsection of your character in a light gethit frame. May be used in
  the BindToTarget controller to position yourself at the corresponding
  positions of the opponent. All positions are relative to the player's axis.

- Ctrl-D now cycles through all active players and helpers.
- Fixed some rounding errors in drawing sprites. You may need to check
  your background and character offsets again.
- CNS: New trigger: Matchover
  Returns 1 if the match has ended, 0 if not. We say a match has ended when
  either side has won enough rounds necessary to proceed to the next stage.
  Might be useful for win poses that only occur when a player wins a match.
- CNS: Controllers in general:
  Added "ignorehitpause" paremeter. If set to 1, then that state controller
  will continue to be updated during the pausetime of the player, that is,
  when the player is frozen for a short time on a successful attack. Example
  uses: play sounds, flash screen white, create explods, etc
  Be careful not to abuse this parameter; it may cause difficult-to-trace
  character problems when used incorrectly
- CNS: AfterImage controller:
  Added optional "trans" parameter. Set to "add", "sub" or "add1" to
  make the after images transparent.
- Stages: Added "reflect" parameter to [Shadow] group. If set to 1, 
  a "reflection" effect will be applied to all players, as well as their
  projectiles and explods that have a non-zero shadow paremeter.
  See KFM's updated stage.
- Improved loading time by pre-caching sound and graphics files. Also fixed
  bug that made large sound files load very slowly
- CNS: PalFX controller:
  Added optional parameter "sinadd". Creates "blinking" or "slow blinking"
  effects by applying color offsets to the player's palette using sinusoidal
  enveloping.
    sinadd = r, g, b, P
  r,g,b are the maximum amounts of red, green and blue to add/subtract from
  the palette. P is the period of the sine wave in game ticks.
  You might like to use this for fireballs that "burn" people.
- CNS: HitDef controller:
  animtype, air.animtype and fall.animtype now accept "Up" as a value.
  This makes the opponent go into an animation where he is knocked straight
  up (anim action 5060), and then arcs over and comes down head-first
  (action 5061). If you have the optional actions 5101 and 5016, these
  will replace 5100 (hit ground and bounce into air) and 5105 (hit ground from
  bounce) in the case of "Up" anim types.
  If the opponent does not have these animations, then he will default to
  the normal falling animations.

- CNS: Projectile controller: 
  Added "projsprpriority" parameter. It is the sprite drawing priority of
  the projectile. Defaults to 2.

- CNS: New Controller: AssertSpecial
  Lets you assert special flags, such as ones to keep the fight from
  starting (Intro) as well ones to keep the round from ending (RoundNotOver).
  Asserted flags are valid only for one game tick; for most flags, you may
  need to continuously assert it over a period of time.
  The required parameter is "flag", and its value must be one of:
    Intro
    RoundNotOver
    NoStandGuard
    NoCrouchGuard
    NoAirGuard
  To assert multiple flags in a single controller (up to 3), you can use
  the optional parameters "flag2" and "flag3", which take the same values
  as "flag".
  For example, this is one you might find useful for very long win poses.
    [State 181, 1]         ;During the win state
    type = AssertSpecial
    trigger1 = Time = [0,500]
    flag = RoundNotOver

- Training mode: Training dummy control added - see readme.txt
- Camera shaking slightly changed (does it look better?)
- CNS: StateDef:
  Added new parameters: hitdefpersist, movehitpersist 
- AIR: added new transparency mode: A1
  Fades background to 50% intensity before adding the sprite.
  So far all transparency functions do not work for vertically-flipped sprites
  eg.
    [Begin Action 1]
    10,0, 0,0, 5, , A1
- Fixed problem with slow camera panning. Basically, the camera will
  pan quickly if the player at the edges have an x-velocity that moves
  the player towards the edge. Camera will still pan slowly if you
  use PosAdd to move the players towards the edges (this is intentional)
- CNS: New trigger: palno 
  Gives you the palette number of the player, starting from 1.
- Projectiles:
  Projectiles that have an animation action with infinite looptime (when set to
  the remove state) are now immediately deleted.
  Projectiles can simultaneously affect multiple opponents (in team battle)

Misc
----
- name1.fnt has most characters now

Bug fixes
---------
- Fixed minor anim bug in SelfState
- Recoded some palette-handling functions
- More camera problems have been fixed. Camera should be able to scroll
  quickly if needed, but stage tension should be kept around 50 in
  order for it to look right.
- Rewrote combo-counting code. The counter should work properly in team
  mode now.



19 Oct 99
=========
At a glance:
- Added Team Battle mode. Go against two computers at
  a time if the game's too easy for you.
- More background control
- Implemented explods
- Slightly more control over projectiles
- Playstation joypad support with force-feedback
  (through converter)
- Updated some documentation
- Improved camera movement
- Several bug fixes

Known bugs
----------
- In team battle, players may occasionally get stuck in a "thrown" state
  if the attacker was hit out of start of the throw state.

Docs
----
- cns: more trigger information in Appendix A
       full documentation of the HitDef controller in Appendix B
- readme: Added HotKeys info
- added mugen.htm, a 
- more FAQs in the FAQ
- added spr.gif. Refer to this for required sprites and their axes.
- updated spr.txt
- For cmd docs: see player.cmd
- For background: see stages/stage0.def

Code
----
- CNS: Implemented "MakeExplod" controller, which is a more flexible version
  of GameMakeAnim. Format may change; we recommend you do not use it yet.
- Background controllers implemented. Still under testing.
  These let you have more control over how the background elements
  behave. Format may change.

- CNS: Variable added to [Size]:
    proj.doscale = ?
  Set to 1 if you want to apply scaling to your projectiles. The scale factor
  will be the same as the character's.
- CNS: LifeAdd and TargetLifeAdd controllers damages are now affected by the
  the player's defense multiplier.
- The players no longer continually update at time 0 of the intro state during
  the initial fade-in. Any controller at state time 0 of the intro states will
  be executed once at the beginning of the fade-in, and the character will be
  frozen until the fade-in is complete.
- Training mode: Training dummy no longer gets KOed. Life will return to full
  after 1 second of idle time.
- CNS: [Data]: Added "volume" parameter. Adjust the volume of individual
  players' voices using this.
- Support for PSX controllers in place. Final implementation of input devices
  still not decided.
- CNS: Projectile controller:
  -Added optional "ProjHeightBound" parameter. Has two values:
     ProjHeightBound = y1, y2
   y1 is the upper bound of the projectile, and y2 is the lower bound. If the
   projectile vertically leaves the range between y1 and y2 it will remove
   itself. Default value is -240, 1
  -Added optional "ProjStageBound" parameter.
   The value is the the distance the projectile can travel off the edge of the
   stage (not screen) before being deleted. Default value is 40.
  -Added optional "ProjRemAnim" parameter. It is the action number of the
   animation to play when the projectile removes itself, or when it hits another
   projectile. Defaults to the same value as "ProjHitAnim" parameter. Set to -1
   if you do not want an animation to play.
  -Also, projectile now plays the remove-animation when it deletes itself, either
   when its time runs out, or when it leaves its set boundary ("projedgebound"
   and "projheightbound" parameters)
  -Added projpriority controller. If projectile collides with
   another projectile of equal priority, they will cancel. If
   it collides with another of lower priority, it will cancel the
   lower-priority projectile, and the higher-priority one will have
   its priority decreased by 1.
   Defaults to 4. 

- data/mugen.cfg:
  Tweaked default volume settings.
  Added mp3 volume control.

- *** changed from previous version ***
  BG on title, options, select and versus screens no longer move on their own.
  Assign velocities if you want the background to move.
- Added a few more parameters to data/select.cfg under [Portrait] and
  [VS Screen] and [Dimensions]

- Slight update on select screen graphics
- CNS: Projectile controller:
  Added "projedgebound" parameter. The value is distance off the edge of the
  screen before projectile is deleted.  Default value is 40.
- Changed palette controllers to a dynamically-sized array. Will handle palette
  effect on an arbitrary number of sprites now (instead of the old 64)
- You can now load up a different def file within a player's directory.
  This will allow for distribution of different versions of a character
  that use some common files, such as the sff and snd. Within a different
  def file, you can specify different cns and air files. See data/select.cfg
  for details.
- Better camera algorithm
- Key Config now displays key names instead of scancodes
  6x9 FNT files updated with '*' and '~' characters
- CNS: HitDef controller: hitflag parameter:
  Added '+' to the list of possible options. If '+' is added, then hit can only
  affect people who are in a gethit state
- CNS: HitDef:
  All moves with "throw" attribute can now only hit one opponent at a time.
  This is so you cannot throw 2 people at the same time in Team Battle.
- CNS: HitDef controller:
  Added new parameter "ID". You can assign an ID number to the hit. May be
  used to test if an opponent was last hit by a certain move. If omitted
  defaults to 0
- CNS: HitDef controller:
  Added new parameter "chainID". If included, then the hit can only hit people
  that were previously hit by a hit with the same ID value. Use in
  conjunction with a hit that has the "ID" parameter.
- CNS: Added TargetDrop controller:
  Removes all targets from P1's list of targets (you hit Ctrl-C to see the
  list). You should drop unwanted targets if you do not want them to be
  affected by controllers such as TargetBind.
  This is an advanced controller. You may see little use for it unless you
  are making complex chain-type moves. This is mainly intended to make moves
  work correctly during Team Battle modes.
  No required args.
  Optional Args:
    excludeID = ?
      If an opponent was last hit by a move which has the hitID number
      (parameter "ID" of attacker's HitDef controller) equal to the excludeID
      value, then he will not be dropped from the list of the attacker's
      targets.
- data/fight.def:
  Added to [Round]: win2text
- Added Team battle mode.

- CNS: Minor change in "target???" controllers: these controllers no longer
  affect targets who are guarding. eg. TargetLifeAdd will change the life
  of a target being hit, but not of one who is guarding
- Updated to link with Allegro 3.9.25

- BG: Element: Added optional "positionlink" parameter
  Set to 1 to link that bg element's position to the previous element.
  The "velocity" and "delta" parameters will be ignored.
  The "start" parameter becomes the offset from the previous element.
- BG: Element: Added optional "sin.x" and "sin.y" parameters
  Offsets the background position using a sine function.
  "sin.x" and "sin.y" are for offsetting the x and y positions respectively.
  Each has 3 parameters, ie:
  sin.x = M, P, O
  M (decimal) is the magnitude in pixels
  P (decimal) is the period in game ticks
  O (decimal) is the time offset in game ticks
  Specifically, the function is computed as such:
    offset = M * sine ((ticks+O)/P * 2 * Pi)
- DEF: Added optional "displayname" parameter to [Info].
  It is the name to display on the select screen, fight screen, etc.
  If omitted, will be same as "name" parameter.
- CNS: Added "p1name" and "p2name" triggers.
  p1name returns the name of the player (in the DEF file, under [Info]:  name)
  p2name returns the name of the opponent
  Eg:
    trigger1 = p1name = KFM
  Case insensitive, so "KFM" is the same as "kfM" and "kfm".
  Example use for p1name: 
    Special reactions for certain characters when they are throw. Ie,
    use "p1name" in the states that p2 will get from p1's CNS.
  Example use for p2name: 
    Special reactions towards certain characters, or special intros.
- Background:
  The "mask" parameter is no longer ignored for parallax background
  elements. An example use for this could be clouds, where you can
  see the sky through holes in the clouds.
- CNS: TargetBind controller:
  Default value of "time" parameter changed from 0 to 1.
- CNS: HitDef controller:
  If the "ground.velocity" parameter has a non-zero y value, then
  the "forcestand" parameter's value will default to 1 instead of 0.
  It can still be overridden by setting it to 0, but it will look
  strange.
- You can now type: mugen <char1> <char2> [stagename]
  For example, if you type: mugen kfm kfm mystage
  Then the game will load stages/mystage.def for the quickvs stage.

- P2 is now invincible during the p1pausetime of p1's reversal.
  Stops projectiles from interrupting the reversal.
- Can now change states right away in intro (state 191).
  You can use "p2name" trigger for special intros between people.

Bugfixes
--------
- Fixed the floating point exception from having topz and botz being
  equal in the stage definition.
- You can't "influence" the AI by whacking its buttons anymore
- Fixed a nasty bug where missing characters would cause Mugen to
  crash at the versus screen.
- Fixed problems where P2 bound to P1 by the TargetBind controller
  would not fall down if P1 was hit.
- Fixed some problems with reversals. Mainly, some parameters such as fall
  and fall.yvelocity, etc were not working before.



3 Sep 99
========
A lot of engine updates this time.
At a glance:
-Added reversal attacks
-Guard cancels
-Character palette effects
-Added Training mode to main menu
-Stage select in all but Arcade mode
-Sound device configuration
-MOD and S3M music capability (thanks to Guan Foo Wah's JGMOD)
-Projectile control improvements
-Lots of updates to state control
-Various bug fixes

Misc
----
- Added new hit spark: Use spark 0,6 for blood
- Updated action numbers in docs/air.txt. Also added
  something about flipping and transparency in air.

Code
----
- Added Training Mode. Will add more functionality later.
  If you want to turn on the CPU, Hit Ctrl-1 (p1) or Ctrl-2 (p2)
- Select-cursor positions are now remembered in VS, Watch and Training.
- CNS: Put in mod-playing capability. Supports, MOD, S3M and whatever 
  works with JGMOD.
  New in data/mugen.cfg:
  [Sound]
  playmod = ?
  modvolume = ?
- CNS: Added "height" to [Size] group.
  Say you set "height = 60", then it means that if p2 is jumping
  over p1 (p1 is standing), and p2's y-pos is < -60, then p2 will
  pass through p1. This makes it easy to jump over tall people.
  If omitted, defaults to 60.
- CNS: "Projectile" controller:
  Added "projID" parameter. Set to a number that you want to identify
  the projectile with. If omitted, defaults to 0. Can ignore this
  parameter if you don't want to do advanced projectile stuffs.
- CNS: "Projectile" controller: "postype" parameter:
  Added value "p2". If use "p2", then projectile is created relative to
  the opponent. Useful for explosions that appear under the other guy's
  feet and stuff.
- CNS: Added "NumProjID" trigger.
  Returns the number of projectiles that currently exist (doesn't
  count the other player's projectiles, only yours), and
  have the specified ID number. Place the ID number right after
  "NumProjID" (no spaces). Eg,
    trigger1 = NumProjID500 = 0
  Triggers if there are no projectiles with ID number 500.
  Note: If the ID number is omitted, defaults to 0.
- CNS: Added "ProjHit", "ProjGuarded" and "ProjContact" triggers.
  Works like MoveHit, etc, except it detects if a projectile
  with the specified ID has hit. Like NumProjID, place the ID
  number after the triggername. Eg,
    trigger1 = ProjContact1000 = 0
  Triggers if a projectile with ID 1000 has come in contact with p2.
  Note: It will trigger once for each hit of the projectile, so
  a multi-hit projectile can activate the trigger multiple times.
  Note2: Unlike "MoveHit", etc, the "Projhit" triggers are valid only
  for one game-tick after hit/contact.
- CNS: "Superpause" controller:
  Added "movetime" parameter. Set to the number of game-ticks to
  allow the player to move DURING the superpause. Eg, "movetime = 30"
  lets the player continue moving during the first 30 ticks of
  the pause, while everything else in the game is frozen.
- select.cfg: [Characters]: stagefilename made optional.
  If you omit the stagefilename, a random stage will be chosen.
- CNS: "Projectile" controller:
  p1stateno and p2stateno parameters now work properly
- CMD:
  You can now interrupt guard by using a trigger like:
  triggerall = command = some_command
  trigger1 = stateno >= 150 ; These are the guard
  trigger1 = stateno <= 153 ; states.
- Added stage select to versus and watch modes.
  To name your stage, add a group [Info] to your stage def,
  and put the name in a parameter called "name". eg:
  [Info]
  name = My Stage Name
- CNS: Added new controller "statetypeset".
  Lets you change the statetype and/or the movetype in the
  middle of a state. Params:
    value = state_type
    movetype = move_type
  state_type is S, C, A or L
  move_type is A, H or I
- Changed to dynamically-allocated array for characters
  in charsel.c
- Fixed bug where you could not guard a hit after being hit
  in the air (common1.cns problem that came up when fixing a
  small combo-count bug last time)
- Fixed bug where guard sounds played from the hit sound bank
  instead of its own
- Fixed bug in tiled backgrounds that had tilespacing
- Allowed animated backgrounds to tile (the tilespacing parameter
  must have values > 0)
- Added sound configuration routines to data/mugen.cfg
  See for details.
- CNS: Added trigger "p2life" returns amount of life that p2 has
- CNS: "LifeAdd" and "TargetLifeAdd" controllers:
  Added "kill" parameter. Set "kill = 0" if you do not want
  the player's life to go below 1.
- CNS: "HitDef" controller:
  Added "guard.pausetime" parameter. Like "pausetime", except
  values are for guarded hits.
- Added "Draw Game" state (state 175 in common1.cns)
  Will go to this state if both players have same life when
  time runs out. If player does not have anim 175, defaults
  to "Time Over" state (state 170)
- You can jump over people lying down in the corner now.
- CMD: Added "s" button, for start. Use it like any other
  button. If you want to make a taunt, you'll need to program
  it into the CMD and CNS. Use state 195 for taunt.
- CNS: Added "facep2" parameter to StateDef. If set to "1",
  the player will turn to face p2 at the start of the
  state (see cns docs).
- CNS: Added new triggers: "FrontEdgeDist", "BackEdgeDist",
  "FrontEdgeBodyDist", "BackEdgeBodyDist".
  "FrontEdgeDist" is the x-distance of the player's x-axis
  from the edge of the screen that is in front of the player.
  "FrontEdgeDist" is the x-distance of the player's x-axis
  from the edge of the screen that is behind the player.
  "FrontEdgeBodyDist" and "BackEdgeBodyDist" are almost the
  same as the other two, except it takes the distance
  from the edge to the sides of the players, instead of
  the x-axis.
- CNS: Added new controller: "PalFX"
  Adjusts palette of player.
  Params:
    time = time
    mul = mulr, mulg, mulb
    add = addr, addg, addb
  time (int) - Time to keep the palette effect
  mul? (int) - 0 for dark, 256 for normal, >256 for contrast
  add? (int) - 0 for normal, -1 to -256 for dark, 1 to 256 for 
               bright
- CNS: HitDef controller:
  Added new parameters:
    palfx.time
    palfx.mul
    palfx.add
  These are the same as "PalFX". It will do palette effects on
  the opponent if the move hits.
- common1.cns: player blinks white when recovering from fall
- CNS: Projectile trigger: 
  Added optional "projshadow" parameter. Set to color of
  shadow: eg. 
    projshadow = 64,64,64
  To use stage's shadow color settings, set to -1, eg.
    projshadow = -1
- CNS: Added "Reversal" controller
  Like HitDef, but with limited parameters
  P1's clsn1 box catches p2's clsn1 box (attack).
  New parameter:
    p2attr = attr_list
  attr_list is the list of attributes of p2's hitdef that
  p1 can catch. eg. 
    p2attr = SA, NA,SA
  means Stand+Air, NormalAttack,SpecialAttack
  Use with p1stateno (and optionally p2stateno) for creating
  reversal attacks. Use a "targetbind" controller in p1's
  reversal-success-state to bind p2, if necessary.
- Fixed minor guard problem, where you could not immediately
  guard low attacks if you weren't already crouching




16 Aug 99
=========
At a glance:
 - Animated backgrounds
 - Change background implementation
 - Lots of doc updates, but still far from done
 - Music in title, select and versus screens
 - Lots of small fixes

Misc
----
- Updated docs for most things
- New suggested life for players is 1000, instead of 256.
- Moved all stage defs and sffs from data/ into the stages/ directory
  If you made backgrounds, check your defs to set the files to
  the stages/ directory.
- Added new hit spark.

Code
----
- Added BGM capability at Char Select and VS Screen.
  Check select.cfg, under [Music].
- Added BGM capability at Title Screen.
  Check system.def, under [Music].
- Does not require "sound = blah.snd" in the DEF file to run
- Added screenshot to title screen
- Changed implementation of backgrounds. Now a background x-position
  of 0 corresponds to the middle of the screen. It can move left
  (negative) and right (positive). This makes it much easier to
  do the def for the backgrounds.
  Parallax works slightly different now. If you use "width = ?,?"
  it acts like it did before: scales the background to create a
  perspective effect. If you use "xscale = ?,?" it doesn't
  pull off the scaling. That way if you have a floor that already
  looks "3D", it leaves it alone.
  Player start x-positions should now be -70 and 70 for all stages.
- Animated BGs at last! The anim data is kept in the def
  file for the BGs.
- Added "boundhigh", "boundlow" and "verticalfollow" to [Camera]
  in stage0.def. Controls vertical movement.
- Added key config to options
- Now there's a line-fade when you skip the intro
- CNS: Hitdef: Added "P" type to hitflag. If you have a hitflag
  with "P" in it, the attack can cancel out projectiles.
- CNS: Added new trigger: AnimExist = actionno
  1 if actionno exists in P1's AIR, 0 if not.
  Used this to fix small animation bug in common1.cns.

KFM
---
- Changed life and damage to match new 1000 life.

Bugfixes
--------
- Fixed skipping intro multiple times
- Fixed another bug in common1.cns, where action 5040 would repeat
  over and over in state 5040 (air recover)
- Fixed the problem where you don't really get pushed back from
  the corner if you're doing a combo. So now in the CNS, if you have
  a "velset = 0" in the StateDef, it sets your x-velocity to 0 as
  usual, except if the other guy is being hit in the corner.
- Fixed bugs on timeover, where characters did not stop guarding
  or crouching
- Deletes projectiles if skipping intro (no more leftover KFM wood
  pieces)
- Fixed a bug it did not check hold-commands
  for buttons. Like, /a and /b etc were not being detected
- Fixed bug where keypresses are lost during game slowdown
- Fixed the problem where the "command" state controller doesn't
  work in the win pose -- useful for selecting the win pose by
  holding buttons
