# ChangeLog: The ALE Clone/FreeCraft Version 1.16.1

         ___________		     _________		      _____  __
         \_	  _____/______   ____   ____ \_   ___ \____________ _/ ____\/  |_
          |    __) \_  __ \_/ __ \_/ __ \/    \  \/\_  __ \__  \\   __\\   __\
          |     \   |  | \/\  ___/\  ___/\     \____|  | \// __ \|  |   |  |
          \___  /   |__|    \___  >\___  >\______  /|__|  (____  /__|   |__|
    	  \/		    \/	   \/	     \/		   \/
        ______________________                           ______________________
    			  T H E   W A R   B E G I N S
    	   FreeCraft - A free fantasy real time strategy game engine

(C) Copyright 1998-2000 by The FreeCraft Project. Distributed under the "Artistic License"

Current

- Version 1.10
  - Remove use of imlib.
  - Implement run-length-encoded sprites. (Saves 9 MB memory).

- Version 1.11
  - Sort units for display, correct overlaping.
  - Faster cursor drawing.
  - Improved updates. (Faster)
  - Implemented first sound support.

- Version 1.12 (first released public version)
  - Fixed bug: player 0 units are drawn with wrong colors on minimap.
  - Fixed bug: cursor not clipped on right edge of window.
  - Fixed bug: allocated too much shared video memory.
  - Fixed bug: cursor outside window, drawn with bad coordinates.
  - Added middle mouse button, scrolls the map.
  - Fixed bug: can't reach buildings if one coordinate is 0. (sign!)
  - Fixed bug: selecting, selects not all units.
  - Added ALT+select selects the old group.
  - Added CTRL+select selects all visible units of this type.

- Version 1.13
  - Fixed bug: in unit drawing, no more cores here.
  - Added: unit names are now shown correct.
  - Added missiles.
  - Added attack, death animation.
  - Added corpse.
  - You can now return goods.
  - The debug speeds of mining, harvest, building, training are now configurable.
  - The minimap is now only redraw each second. (more speed)
  - Started AI code.
  - Rewritten wood remove, but still not works 100% correct.
  - Fixed bug: in save/restore cursor, no more cores here.
  - Started cleanup source tree.

- Version 1.14
  - Fixed bug: upgrade unit
  - Fixed bug: RevealMap and MapUpdateVisible no longer overwrite memory.
  - Fixed bug: Save and restore cursor no longer access outside the bounds.
  - Add new functions UnitCache..., to improve speed.
  - Many cleanups in the sources.
  - Damaged buildings are now burning.
  - Support for guile snapshot version. (I removed it)
  - Support for guile-1.3
  - Fixed bug: removed unit builds building. (from Charles K Hardin)
  - Modified makefiles to support inline source code documentation.
  - Started greater map and own maps support.
  - Fixed bug: Matrix was too small for big maps.
  - Tried to get working source code documentation.
  - Added threaded sound support (from Fabrice Rossi).
  - Fixed bug: 96x96 maps dumps core, introduced with big maps.
  - Fixed bug: Movement flags was wrong for big maps.
  - Started network code. (Just for testing)
  - Fixed bug: Trained units are inserted twice into unit cache.
  - Written transporter load/unload code.
  - Fixed bug: Buttons aren't reported over network.
  - Applied patches from Josh Cogliati.
  - Applied patches for sound part (from Fabrice Rossi).
  - Fixed bug: Upgrades dumps core. (Player::UnitFlags was to small)
  - Fixed bug: Building cursor destroys map border.
  - Fixed bug: Selecting building place and unit is killed dumps core.
  - Experimental guile-gtk support added.
  - New commandline option -c file.ccl = ccl start file.
  - Fixed bug: A unit could attack it self. (selfdestruction)
  - Fixed bug: New units says again hello (from Fabrice Rossi).
  - Fixed bug: Unit placed twice in unit-cache. (end of resources)
  - Fixed bug: All units crossing coast plays docking sound (from Fabrice Rossi).
  - Original speed is the default for the release

- Version 1.15
  - Applied patches: sound is distance dependend. (Fabrice Rossi)
  - Support for 15bit X11 server. (My new graphic card needs it)
  - Started moving unit code into own directory.
  - Moved unit-type ccl code into own file.
  - Moved sound ccl code into own file.
  - UDTA section of puds are now parsed and supported.
  - Fixed bug: No goal. (from Patrick)
  - Applied patches: new sound configuration and api. (Fabrice Rossi)
  - Changed <strings.h> to <string.h> for glibc-2.1.
  - Applied patches from lokh:
    - Gold mined, wood harvested and oil hauled is added to the player's resources as soon as the peon/peasant reach the hall/mill/... Note that this is the standard behaviour of w*rcr*ft 2. This part generates a buch of warnings from the AI saying that it can't build a farm. This is just this: a warning. As soon as it is possible (the peon gets out of the hall), the farm is builded.
    - New memory management. The main memory array isn't used directly anymore (except for debug message and network code), and the units are accessed by arrays of pointers (the solution isn't currently memory optimized, but this can be modified quite easily). There are currently 3 kind of "lists": Used unit slots, free unit slots, and a list of units used by each player. This implies a bunch of (more or less) small changes through the code...
    - It's now possible to cancel the construction of a building.
    - Now when a castle/keep/stronghold/../lumber mill/refinery is destroyed, the gold/wood/oil harvested is correctly adjusted.
    - When a keep/stronghold/castle/fortress is constructed, gold/wood/oil harvested is adjusted if necessary.
    - I added ActionUnitConstructed test to UnitUnusable(): A building under construction can be considered unusable :). There is an exception though when you select a building under construction with the mouse. For exemple, the peons harvesting wood were bringing it back to the lumber mill under construcion...
    - In unit_find.c I added 2 functions FindUnitsByType() and FindPlayerUnitsByType(). These are general functions but used by the AI code and building construction/destruction (halls/lumber mill/...)
    - AiFindFreeWorkers now finds free workers.
    - Various code cleanups, code optimizations, minor changes, and things I forgot...
    - ChangeUnitOwner() is now recursive. This is not important for w*rcr*ft but it will be interesting for st*rcr*ft.
    - Modified a couple of things in DestroyAllInside(), to speed up things in special cases (transporters, construction...)
    - Fixed a bug un DestroyUnit(): Units in transporters weren't destroyed (although they were still "removed" from the map. There is still a problem though, asthe dead bodies of the units in the transporters are diplayed. Sorry I didn't look at this yet.
    - The dead body animation is now displayed.
    - Reworked the rectangle selection to match the one of w*rcr*ft 2: Select a group of player's "mobile" units. if none, select a construction from that player. if still none, select a (random) neutral unit (critter, mine...) if still none, select a (random) enemy unit.
  - New tool written in C: wartool, includes all xxx2png in one file.
  - Fixed bug: Files from tool directory are not included in the distribution.
  - Applied patches from Vladi.
    - MapField.SeenTile -- used for the wood/rocks last seen fog bug :)
    - Macros MAPEXPLORED, MAPVISIBLE... added
    - Fixed bug: Wood removing should be ok.
    - Fixed bug: Fog of war should be ok.
    - Fixed bug: Fixes seen wood bug.
    - Added cheats -- for debug really :)
    - Added TileTypeTables -- used to lookup what tile is what? i.e. which tilesa are woods, water,... required for the fog
    - Rewritten DrawUnits
    - Added Unit.rs which is filled by MakeUnit() with random number between 1 and 100, used for fancy buildings. `fancy buildings'! every building is drawn randomly normal or flipped horizotally, so the your city will have some buildings pointed to right and some to left! i.e. will not look uniform.
    - Fixed bug: in UnitVisible() for fog of war
    - Added Now enemy buildings will look under the fog with the last seen frame (or will not show if you haven't seen them yet) FXIME: if seen building under fog is ruined it will disappear
    - Added DrawResources() shows food usage now.
    - Added Unit.PendCommand, now TownHall and Barracks have `move', `stop', `attack' and `harvest' commands ( and RightClick will do it ), which will be applied auto to all new units.
    - Fixed: `case 1...100' thing --> with default:if(...<100)
  - Rewritten DrawUnits, combined work.
  - Moved map.c minimap.c and tileset.c into own directory map.
  - Fixed bug: Map redrawn only for visible missiles. (from Fabrice Rossi).
  - Fixed bug: Buildings are now visibile again without fog of war.
  - Applied patches from Vladi.
    - Units could have command queues.
    - Building could now train more units.
    - Walls are now converted into tileset.
    - Walls are now connected correct.
  - Cache for tiles now source configurable.
  - Fixed bug: Outside map access in HandleMouseMove.
  - Faster map background drawing routines.
  - Map background drawing routines for all bpp.
  - Fixed bug: Area too big for CursorOnMap.
  - Add smart cache for map background drawing.
  - All the background drawing stuff could be compile time configured.
  - Added rock removing. (from Vladi)
  - Added demolish code. (from Vladi)
  - Add needed code for demolish.
  - Fixed bug: Attack or demolish moving target.
  - Dwarves and goblin sappers has no longer a corpse.
  - Make compileable without DEBUG defined.
  - Split map.c in more parts.
  - Add patches from Patrice.
    - Moved selection stuff into own file.
    - Reorganized functions.
  - Added new fog of war look.
  - Improved speed of fog of war.
  - New fog of war now runtime configurable.
  - Fixed bug: with build action queing (from Vladi)
  - You can build a line of walls by pressing the SHIFT+ALT keys.
  - Fixed bug: computer units could get "flush".
  - Applied patches from Ari (Better -I and -L for other distributions)
  - Add patches from Patrice: Added selection of groups.
  - Added patches new AI code from Jon Gabrielson
  - Fixed bug: You can repair without money.
  - Fixed bug: Can build more units than food with building queues.
  - Added patches new AI code from Jon Gabrielson
    - Added pause and better quit sequences.
    - Changed FAST_DEBUG to cheatcodes 'fast debug' and 'normal debug'
  - Fixed bug: 's' are now useable for the panel. save is now 'S'.
  - Fixed bug: ships play now an attacking sound.
  - Cleanup in the includes files (#ifndef ... #endif).
  - Fixed bug: Builded walls aren't really removed.
  - Fixed bug: Attacking units in reaction range, are now only weak targets.
  - Added patches for alpha port.
  - Fixed bug: When a new unit is selected the status bar isn't correctly updated. (from Lokh)
  - Fixed bug: weak targets should now work.
  - Added upgrade+button patches (from Vladi)
  - Cleaned and reorganized the patches.
  - Added ShowOrders and show-orders.
  - Updated todo.html (from Vladi)
  - Moved "icons.c" from directory src/clone to src/ui.
  - Removed all "Icon..." defines, please use now IconConfig and IconByIdent
  - Changed Unit::Player from integer bitfield to pointer.
  - Added patches to compile under FreeBSD. (from Steinar)
  - Fixed bug: Foreign units now didn't acknowledge selection.
  - Fixed bug: Cancel train should now work correct.
  - Better and configurable middle mouse button (from Ari)
  - strdupa removed, didn't supported by libc5 (from Ari)
  - Added saturation for alpha fog of war (from Edgar)

- Version 1.16
  - Added PowerPC patches from Ian Farmer.
  - Support for non expansion CD version, based on Stefan Dirsch wartool patch.
  - Icons names must now be prefixed with "icon-" (arrow1 -> icon-arrow1)
  - Unit actions now shown with the buttons (still needs some work)
  - Corrected display of damage in middle panel.
  - Added fast scrolling with cursor keys and control.
  - Added support for bz2 compression libary.
  - Fixed bug wrong frame for automatic attacks.
  - Rewritten input event loop.
  - Fixed bug construction could be attacked again.
  - Fixed bug clone crashes if an oil tanker tries to go into a oil well that is still building
  - Fixed bug: upgrade costs are now shown correct.
  - Add -s n to set the sleep time for the AI.
  - Added "set" buttons to mage-tower.
  - Fixed bug: harvest uses to fast ComplexPath.
  - Fixed bug: can't reach shore building place.
  - Fixed bug: can't build in the last row or column.
  - Fixed bug: AI sleeps in some levels (no MainHall).
  - Fixed bug: Leaving goldmine without deposit.
  - Patches from Josh
    - Fixed two constants so that you can load transporters.
    - Sound patch so that missing sounds don't crash clone.
  - Patches from Lokh
    - No fog of war for the peons in the mines.
    - Added a LoadPicture() function to handle full-screen picture (palette changes &co)
  - Fixed bug: Computer didn't use standing workers with gold/wood.
  - Fixed bug: Unit type aren't correct counted, if present in pud.
  - Fixed bug: Income effects should now work correct.
  - Added "set" buttons to gryphon aviary,gnomish inventor,dragon roost and goblin alchemist.
  - Fixed bug: play selecting sound for goldmines... (don't know if correct)
  - Changed input handling, improved interactive handling.
  - Fixed bug: Chopping of wood on left or top map border (not 100%)
  - Fixed bug: memory corruption by big maps.
  - Fixed bug: transporter(s) has no unload buttons.
  - Fixed bug: The AI didn't build a hall, when enough workers exists.
  - Added support for svgalib from Jarek Sobieszek.
  - Added command line option -f and -t to adjust computer costs and build times.
  - Fixed bug: ballista and catapult can't enter transporter.
  - Patches from Kenneth Sanislo
    - Fixed bug: Compiler warning `unit_ident' might be used uninitialized in this function.
    - Added svgalib non-linear support (so S3 chipsets work)
    - svgalib mouse bug #1 (no more hardcoded MS mouse, reads the libvga.config)
    - svgalib mouse bug #2 (mouse stays on screen)
    - svgalib mouse bug #3 (mouse movement slowed so it's useable)
    - Fixed bug: CTRL ALT and SHIFT modifiers in svgalib
  - Fixed bug: build.sh didn't link default pud.
  - Fixed bug: Window close button must exit/quit game. (from Ari)
  - Fixed bug: Destroyed shore buildings shows wrong destroyed image.
  - Made sound support optional (WITH_SOUND) to support ports without sound.
  - From Jarek Sobieszek:
    - Initial mouse position set to the middle of the screen ( svgalib.c )
    - Changeable mouse scale (svgalib.c)
    - More keys working ( svgalib.c )
    - When a peon was chopping wood and was moved to another location, he was losing all wood he had, same thing when two peons chopped the same tree, the second to finish was losing all the wood.
  - Fixed bug: Building rune stone dumps debug core.
  - Fixed bug: Oil well didn't show the correct frame if active.
  - Prepared removement of TheMap.MovementMap, all functions should now use the flags in TheMap.Fields.
  - Fixed bug: svgalib works wrong with 15 bit videomode.
  - Changed WINDOW_WIDTH and WINDOW_HEIGHT to VideoWidth and VideoHeight.
  - Added SDL support.
  - Added Win32 support. (Sound, network is missing)
  - Added fullscreen to SDL support.
  - Added 'A'...'Z' handling to SDL support.
  - Added to SDL version, old sound and network support.
  - Added patches from Ari.
  - Cancel upgrade and research _should_ work with multiplayer.
  - Add command log file "command.log".
  - Old code MOVE_MAP and ACTION_MAP are now removed.
  - Fixed bug: resource line not immediate update for new units.
  - Fixed bug: attacked units blinks for ever.
  - Fixed bug: Continous ***** NO FREE SLOT IN SOUND FIFO ***** (from Fabrice)
  - Fixed bug: Patroling units didn't attack the enemy.
  - Patches from Anthony Towns
    - Add a -d argument to specify CLONE_LIB_PATH
    - Add a CloneLibPath variable (in clone/clone.c) to replace C_L_P
    - Replace CLONE_LIB_PATH with CloneLibPath everywhere it occurs
    - Changed build.sh to use arguments instead of requiring you to hack the script itself.
    - Add some install targets.
  - Added patches from Ari: hooks for menus and first menus.
  - Fixed bug: Own units automatic attacks neutral units (from lokh).
  - Fixed bug: destoryed attacking towers shows destroyed water site image.
  - Fixed bug: AI dumps core, if all commands are processed.
  - Fixed bug: A unit with the command "stand ground" stands forever.
  - Changed: Units which stand still attacks now in reaction range.
  - Input buffer size reduced, should now fit into line.

- Version 1.16.1
  - Fixed bug: Wrong tech tree for rangers and berserkers.
  - Fixed bug: Ship cannon and armor upgrade shows no effect.
  - Improved bz2lib and zlib support added. (from Ari)
  - Fixed bug: XWarpPointer produces many unnecessary events.
  - Gray text patch applied. (from Ari)
  - Changes in WaitEventsAndKeepSync.
  - Better build.bat script written for Win32.
  - Fixed bug: SDL port didn't support upper case character input.
  - Fixed bug: Long input line writes over right border.
  - Add support for SIOD instead of GUILE.
  - Fixed bug: tools/Makefile overwrites c files for gfx2png...
  - Removed glib use in sound_id.c, uses now etlib hash.
  - Fixed bug: sound configuration couldn't be defined in ccl.
  - I also enabled the threaded sound, if compiled with it.
  - Fixed bug: goblin zeppelin annoyed, not played.
  - Make use of SDL_Sound.
  - Fixed bug: in new video code, sign problems produce cores.
  - Added icon for food resource contributed from Guardian.
  - Fixed bug: units in the gold-mine could be attacked.
  - Fixed bug: Can't repair buildings under construction.
  - Added support for bz2 compressed png. (from Ari)
  - Include print unit type table code only, if DEBUG is defined.
  - Fixed bug: correct include file path for SDL_audio.h (from cade)
  - Renamed all scheme functions from "clone-" to "freecraft-".
  - More configuration of mana and health display.
  - Added MissileByIdent.
  - Fixed bug: Network sync clears too many bits. (from Michael O'Reilly)
  - From Ari:
    - New default map: "default.cm" insteed of "default.pud"
    - LoadCursors and LoadImages rewritten to support multiple loads.
    - New CCL functions "display-picture" and "process-menu".
  - Split upgrade.[ch] into depend.[ch] and upgrade.[ch].
  - Upgrade/Unit dependency code rewritten.
  - CCL2 load now uses FreeCraftLibPath.
  - Added icon for score contributed from Guardian.
  - Fixed bug: Wrong damage displayed, if basic damage is zero.
  - Fixed bug: wrong library path for siod under win32.
  - Corrected palette in score.png.
  - Fixed bug: Fog of war is wrong for 16 bpp video modes.
  - Contrast, Brightness and Saturation now also to runtime changable.
  - Added configurable regeneration of the forest.
  - Added display of command keys, for tutorial.
  - New scroll handling: Both keyboard and mouse scrolling are now handled by the same code, and you can now scroll diagonally with the keyboard. (from Sean McMillan)
  - Added setting of contrast, brightness and saturation.
  - Fixed bug: FontMeasureWidths violates memory bounds.
  - Removed the old line draw code, new should work correct.
  - Removed the OldGraphic code, the new should work correct.
  - Fixed bug: Draw from smart cache, draws a scanline too much.
  - Added support for new scrolling to svgalib version.
  - Fixed bug: LoadTileset violates memory bounds.
  - 32bpp videomode patches from Michael O'Reilly applied.
  - unit-UnitsPool changed to UnitNumber(unit) (from Michael O'Reilly).
  - Removed the old Sprite declarations and functions.
  - Fixed bugs in video code, due 32bpp upgrade.
  - Included source setup script from Dan Hensley.
  - Added grab mouse toggle with 'G'.
  - Fixed bug: wrong colors in mini-map.
  - Fixed wrong names in unitsound.c.
  - Rewritten VideoCreatePalette.
  - Applied new patches from Ari.
  - Updated setup script from Dan Hensley.
  - User interface is now configurable (see data/ccl/ui.ccl)
  - Support for 640x480, 800x600, 1024x768, 1600x1200 videomodes.
  - Patch from Dan Hensley for auto detection of SVGALINEAR.
  - Added CCL Configurable Scrolling Speed from Sean McMillan.
  - Ari has rewritten LoadRLESprite, that it no longer use alloca.
  - Added support for 6 default resources. (new Ore, Stone and Coal)
  - Moved endian stuff to central point "endian.h", changed the macros names. Support for SDL_endian.h with SDL.
  - Fixed bug: Acknowledge sounds are not played. (From Fabrice)
  - Fixed bug: correct compression options in setup. (From Hensley)
  - Added: reactivate the sound cancelation without glib. (From Fabrice)
  - Fixed bug: costs in statusline shows for everything the gold cost.
  - Fixes the problem that if you cancel training on the last unit training the cancel button will remain. (From Josh)
  - Updated setup script, cleaned up and more options. (From Josh+Dan)
  - Fixed bug: 8bpp and 32bpp video modes crashes. (From Mike Earl)
  - Fixed error messages in build.bat. (From Joachim)
  - Fixed bug: 24bpp video mode didn't work correct.
  - Changed text handling now ~ is a command prefix. ~! = reverse,... See DrawText for the complete documentation.
  - 1.16.1pre2 -> final
  - Fixed bug: Wrong text in upgrade.
  - Fixed bug: compile with nosound option didn't work.
  - Fixed bug: If Transporter killed, skeletts of passengers appears.
  - Mythical and alliance user interface removed from main distribution.
  - Fixed build.bat (from Ari)
  - The main ccl file "freecraft.ccl" first looked up in $HOME/.freecraft.

- Version 1.17

All trademarks and copyrights on this page are owned by their respective owners.