BATTLEZONE 1.5.1 CHANGELOG

1.5.1.1 (2011-01-04):
* Strip extension (if any) from TerrainName
- Some third-party maps have a TerrainName with extra '.' characters at the end
* Updated SubmitMissileLight
- Moved it from Sprites.c to Rocket.cpp
- Cached sprite index to avoid runtime lookup
* Fixed some units not recycling properly
- AI processes not derived from UnitProcess needed updating
- They use collision radii and assume a square footprint
* Recycling a Scavenger includes any scrap held
- Their held scrap was previously lost
- Players rarely recycle Scavengers so it rarely came up
* Receiving a state update for a deleted object no longer recreates it
- This should fix "indestructible" objects appearing in multiplayer
* TargetingGun limits the shot timer while waiting for a leader round
- It previously let the shot timer accumulate while waiting
- Subsequent leader rounds used that value and jumped into the distance

1.5.1.2 (2011-02-14)
* TakeOwnershipFromPlayer checks for empty entries in the object map
- This should prevent crashes on host migration
* MultDMMission::Respawn checks to make sure it has a valid spawn point
- If it doesn't, it uses the net start location as a backup
- This should fix an intermittent crash

1.5.1.3 (2011-03-31)
* Mono Debug system uses an 80x25 Windows console instead of writing to video RAM
- It originally required a monochrome video card and a second monitor
- Windows isn't keen on programs writing directly to video RAM these days...
* Disable internal adjustment of time scale in multiplayer
* Ordnance_Receive aborts if it can't find the ordnance class
- This will prevent a subsequent crash in OrdnanceClass::Build
* Pilots skip empty vehicles that are tug cargo (submitted by Dx)
* Improved input map handling
- Parser attempts to continue reading after errors
- Error messages show correct filename and line
* FlagDisplay skips objects behind the camera
- This should fix a rare divide-by-zero error
* PersonProcess cancels Glide/Straight/GetIn task if the target is occupied
* Tweaked IntersectGameObject to avoid a potential divide-by-zero error
* Fixed HuntTask crashing after loading a save game
* Added a post-load step to mark unreachable path cells as impassable
- Should fix hitching and low frame rates on some maps
- Should reduce units getting stuck trying to follow bad paths
* Updated intersection test in BuildingBlock
- Based on circle-polygon intersection in Box2D
- It now correctly handles corners of the footprint polygon
* Made recycle distance check more tolerant
- This should fix semi-rare cases of units not recycling

1.5.1.4 
* CockpitTimer can show hours
* Limit ping time display to a maximum 9999
* Limit loss percent to a minimum of 0
* Removed redundant call to UpdateWeaponAim from HoverCraft::Simulate
- This shouldn't affect anything
* Improved SAV physics
- Ascent and descent work much better
- Death works more like other craft

1.5.1.5
* Adjusted DisplayInterface colorBlue and colorDkBlue
- Now map to the dedicated interface colors in the palette
- This makes them a lot more saturated, like other UI colors
* Increased maximum teams to 16
- Team fields in object flags and state packets had a bit to spare
- Replaced a bunch of hardwired numeric constants while I was at it
* Deathmatch supports team play
- Each player gets their own team number
- Players can ally and unally as in Strategy

1.5.1.6
* Added Time Limit selections (submitted by Dx)
 - Changed Time Limit display to show hours and minutes, instead of minutes and seconds
* Reduced (arbitrary) 22-player limit to MAX_TEAMS-1
- It's mostly just a sanity check...
* Prevent special weapon powerup from replacing the Armory object launcher
* Teams allied with the user always show up on radar (like BZ2)
- It checks from the other team's perspective so the user can't exploit half-alliances
* Fixed a few hard-wired team constants that got missed earlier
* Allow remote objects to revive if state packets keep arriving
- This ought to fix "invisible" units in MP
* Objects placed by PathDisplay work correctly in MP
- This only affects Debug since PathDisplay is otherwise disabled

1.5.1.7
* Fixed camera spin when switching between Shift-F3 and Shift-F4 views
- Wrap the yaw value so its values are always reasonable
- Restore the previous yaw when entering Shift-F4 view
* Added MakeMAP utility for creating texture files
* Added new texture type 2 (R5G6B5)
* Fixed terrain when using 16-bit MAP files
- Extracting average colors from a terrain tile (which assumed 8-bit)
- Attaching smaller mipaps to the mipmap chain (which assumed 8-bit)
* D3D texture system checks textures against device capabilities
- The original restrictions were based on the 3Dfx Voodoo
- Supports textures larger than 256x256
- Supports non-square textures
- Supports non-power-of-two textures
* Reticle gets pitch angle from Craft instead of recalculating it
- This will eventually allow different pitch ranges and behaviors
* Extensive MakeMAP update
- Print usage information if no arguments provided
- Read image files using stb_image.c
- Added new processing options:
. flipx: flip output image horizontally
. flipy: flip output image vertically
. diff: apply error diffusion
* Further updates to MakeMAP
- Supports 8-bit palettized output (MAP type 0)
- Simplified error diffusion logic
- Can set how much error diffusion to apply
* Added support for 32-bit texture formats
- Translucent: A8R8G8B8 (MAP type 3)
- Opaque: X8R8G8B8 (MAP type 4)
* Fixed up a few issues with R5G6B5 textures
* Another MakeMAP update
- Added support for undoing premultiplied alpha
- Added support for chromakey color
- These allow MakeMAP to process effects textures
* Near-final(?) MakeMAP update
- Added support for colorization curves: mul * (value ** pow) + add
- Added support for reading a color remap table from an image
- It can now process all textures used by the game
- Cleaned up the code a bit
* Fixed problems on maps with units that start outside the play area
- Fixed a crash in FindPath when deep inside a blocked area
- Unreachable cells retain their original cell type
- Path-finding treats unreachable cells as blocked
. This retains good pathing performance
- Units treat unreachable cells as normal
. This allows units to follow designer-placed paths
* MakeMAP supports transparency index
- This works well in conjunction with chromakey
- This emulates behavior of the original toolchain
* Got 8-bit hardware mode working correctly
- Set it in render.cfg with Texture16=0
- There is not much point in using this :)

1.5.1.8 (hotfix)

* Set D3D_Remap_Palette back to 16 bit
- This was for 8-to-16 blits but isn't used any more
- ...that I know of
* Moved pitchAim calculation to Simulate
- This fixes aiming problems with unarmed vehicles
- UpdateWeaponAim only gets called when the craft has weapons...
- This also simplifies things slightly...
* Revised how NetPlayer tracks team number
- Update the stored team number if the Anet team value changes
- Update the used team bits if the stored team number changes
- This may help with alliances getting reset when a player leaves

1.5.1.9
* Fixed clear_events() when paint event processing is turned off
- This should fix the shell getting stuck when something goes wrong during MP mission load
* Apply a Perlin noise-based camera jitter in response to hard collision
- This is an attempt at a D3D equivalent to the SW "wiggleburger" effect
* Consolidated damage values in OrdnanceClass and ExplosionClass
- This completes the process that started with the DAMAGE structure
