v0.8 - 2008-02-20 - Lemon
(r3064) Add support for Maemo, so the menu button acts as modifier key to perform right clicks.
(r3059) (Partially) fix a vanilla bug: Mercs could perform actions while looking into the opposite direction, when they were moving backwards just before.  In most cases this was harmless, but in some instances (climbing down a roof, jumping over a fence) the merc would end up in the wrong spot.
(r3052) Minor improvement of the English translation.
(r3028) Fix a vanilla glich, which prevented showing the assignment menu by right-clicking in tactical mode, when a soldier was targeted, but no soldier was selected.
(r3027) Fix a vanilla bug, which bogusly allowed giving vehicles other assignments (like "train") by right-clicking them in tactical mode.
(r3023) Fix a vanilla glitch: When a random soldier in a vehicle should say a battle sound maybe none was said though there were soldiers in the vehicle.
(r2984) Fix a vanilla memory leak when handling delayed/stolen items from Bobby Ray's.
(r2930) Fix a vanilla out of bounds array access (which now is a NULL-pointer access) when clicking on a vehicle in the tactical screen.
(r2896) Fix a vanilla out of bounds array access (which now is a NULL-pointer access) when loading a savegame, which starts in tacical, and opening the assignment menu of a merc.
(r2832) Fix a bug in the sound system: Some sounds are sampled at 44kHz, but the sound system uses 22kHz as playback rate, so resample these sounds before playing.
(r2678) Fix a crash, which is caused by a vanilla mixup of SoldierID and ProfileID, in the insurance contract screen when there are no insurable mercs.
(r2609, r2840, r2886, r2974, r3047) Improve the German translation, especially fix gross vanilla mistranslations for the terms "shooting range" and "hired".
(r2580) Fix a vanilla memory leak of the radar image when a meanwhile sequence is playing.
(r2576) Fix a vanilla glitch: After a battle against bloodcats probably a wrong soldier (e.g. a soldier not in the battle sector) tried to say his "cool"-line.
(r2569, r2575) Fix a vanilla glitch: The clickable area of the vehicle selection box did not have the same width as the graphics of the box.
(r2564) Fix a vanilla graphical glitch: The gap between the left and right column of popup boxes was displayed wider than specified.
(r2531) Fix a vanilla graphical glitch: The level indicator was misplaced by one pixel.
(r2493) Fix a vanilla bug (mismatch of format specifier and argument of swscanf()), which caused wrong colours (or other undefined behaviour) in the credits screen.
(r2370) Fix vanilla inconsistencies in placing the item graphics and the "unload ammo" button between tactical and map screen.
(r2368) Fix vanilla inconsistencies in placing the item name/calibre/amount of money texts in the item description box.
(r2366) Fix a vanilla display glitch: When adding/removing an attachment in the map screen, the tooltips did not get updated.
(r2365) Fix a vanilla graphical glitch: A graphic was misplaced by one pixel in the item description box for money in the map screen.
(r2359) Fix a vanilla glitch: When looking at the description of an item in tactical mode, the status of the item was erroneously highlighted, too, when the item has low weight (only the weight should be highlighted).
(r2227) Fix two vanilla bugs: The test, whether there are two free slots to recruit John and Mary, was never triggered, so when only one slot was left, it resulted in a crash.  Further the test was too restrictive and checked for three free slots instead of two.
(r2217) Fix a vanilla bug which could lead to missing light effects in tactical when loading savegames.
(r2022) Fix a vanilla out of bounds array access in CalcChanceToHitGun().
(r2021) Fix a vanilla bug: The Russian versions did not play NPC speeches, because they incorrectly used different filenames than all other languages, but the filenames in the data files are the same.
(r2006, r2414) Improve Russian translation, especially fix one gross vanilla mistranslation, which mixed up Carmen and Slay.
(r1944) Fix a vanilla glitch: Do not show a balance in the personnel screen when looking at past mercs.
(r1798) Fix vanilla display bug: No path was plotted and no APs for walking were calculated for refueling when the cursor was on a vehicle.
(r1650) Fix vanilla rounding errors: The scrollbar in the inventory view of the personnel screen was not positioned correctly and could be moved one beyond the last item.

v0.7 - 2007-10-21 - Cinnamon
(r1581) Enable scrolling with the mouse wheel for sliders (volume sliders in the options menu), the message log box in the map screen and the inventory list in the personnel screen.
(r1580) Add support for the mouse wheel.
(r1545) Fix a vanilla glitch: The colour used for the APs in the single merc panel can differ from the colour used in the team panel.
(r1535) Fix a vanilla bug: After losing the central SAM, the queen sends troops to recapture the SAM to the wrong sector.
(r1523) Fix a mixup in r1487: The end turn button in the single merc panel was linked to the mute button callback.
(r1522) Fix a crash caused by r1400 in battles with bloodcats.

v0.6 - 2007-09-09 - Strawberry
(r1472) Fix graphically stuck buttons.
(r1461, r1475) Fix wide string/string format specifiers.
(r1458) Fix a vanilla infinite loop when throwing objects.
(r1449) Fix vanilla graphical glitches: When the team panel is visible, the dialogue box, civilian quote box and the list of items on ground still get clamped vertically as if the invetory panel was visible, i.e. 20px to high.
(r1442) Change the scroll speeds, so diagonal scrolling is always axis aligned.
(r1427) Fix a vanilla bug: Do not count vehicles for calculating the average stats in the personnel screen.
(r1393) Fix a vanilla bug: In the personnel screen the salary of non-AIM/MERC mercenaries was assumed to be 0, so it did not count twoards the min/max/daily salary stats.
(r1387) Fix vanilla slight misplacement of name/location and assignment/state in the personnel screen.
(r1350) Add a desktop file.
(r1325) Fix vanilla misplacement of the key ring click area in tactical mode.
(r1315) Improve the Russian translation.
(r1271) Implement SoundSetPan(). This caused an unexpected termination of the game in certain places.
(r1267) Fix a vanilla bug where some texts were not displayed because of uninitialised drawing coordinates.

v0.5 - 2007-07-24 - Hazelnut
(r1259) Implement Blt16BPPTo16BPPTrans(). It is used in the editor.
(r1257) Fix a transcription error in IsTileRedundent(): The source data only uses one byte per pixel, not two.
(r1253) Fix incorrectly encoded cyrillic texts in the non-Russion versions when loading them from the data files.
(r1252) Add a workaround for the broken swprintf() implementation of FreeBSD for printing characters which cannot be represented by the current LC_CTYPE.
(r1251) Improve the Russian translation.
(r1238) Remove the black box around the text in the help window by marking the text surface as transparent.
(r1234) Fix loading of tactical maps for the Russian Gold version.
(r1233) Fix wide string/string format specifiers.
(r1219) Fix two transcription errors in Blt8BPPDataTo16BPPBufferMonoShadowClip(), which is used for blitting text:
        - Do not draw a background pixel, if the background colour is transparent
				- Draw background pixels in transparent areas (if the background colour is not transparent)
(r1215) Fix a vanilla bug: When doctoring and the character only has first aid kits available, a big item (from the second hand position) could end up in a small pocket and/or multiple first aid kits could be placed into the first hand position.
(r1210, r1214) Fixes for porting to 64bit platforms
(r1201) Adjust the char/glyph mapping table for two Russian releases (BUKA Agonia Vlasti and Russian Gold) and fix the incorrectly encoded Russian texts when loading them from the data files.
(r1198) Fix the incorrectly encoded Polish texts when loading them from data files. Playing with Polish data files should work flawlessly now.
(r1196) Correct the char to glyph translation table. This should fix the Polish translation.
(r1193) Simplify the interface of GetTileIndexFromTypeSubIndex(). This also fixes one vanilla incorrect use of this function in PasteSingleBrokenWall().

v0.4 - 2007-07-08 - Cherry
(r1183) Add configfile handling and change the code to use the configfile to determine the path to the binary data.
(r1139) Fix a vanilla bug: In SwapLarrysProfiles() ->bInvStatus[] gets copied twice, but ->bInvNumber[] not at all. Rectify this.
(r1121) Fix a vanilla glitch: If text is highlighted and delete gets pressed do not just beep but actually delete the text.
(r1120) Slightly alter the behaviour when pressing left and right without shift and a part of the text was highlighted, i.e. do not consider the fact there was a highlight when calculating the new cursor position. It feels better this way imo.
(r1103, r1104, r1105) Fix hotkey highlights in texts
(r1081) Load the item names from the correct position in the data file. The bug was introduced in r396.
(r1025) Fix a vanilla resource leak: Unload all fonts on exit. Five fonts were not unloaded.
(r1004) Check whether gusSelectedSoldier is not NO_SOLDIER before using it as an index into MercPtrs[] to prevent an out of bounds array access. This fixes a crash when entering tactical mode in a sector where all mercs are busy.
(r970) Fix a vanilla memory leak in ClearEventQueue(): Free the removed events.
(r928) #include <stdint.h> to get the declaration for uintptr_t and do not rely on namespace pollution of other headers.
(r854, r903) Fix wide string/string format specifiers.
(r829) Fix two vanilla bugs in the IMP result mail generator:
       - No text was generated if agility was below average, but above the extremly low limit, because the latter test was reversed
       - If leadership was the only extremly low attribute no introduction text was generated
(r805) Do not store the email subjects in the savegames, but always fetch them from the data files. This way f.e. you do not end up with english subjects when loading a savegame made with the english version in the german version.
(r777) Just use *.jsd as pattern instead of *.[Jj][Ss][Dd]. The former works on Windows' FindFirstFile() and should work on case sensitive filesystems too, because all filenames are required to be lowercase. This fixes the problem of missing corpses on Windows.
(r711) Use given parameter Length instead of lengthof(sString). This fixes the sector a merc is in not being displayed in the strategic screen.

v0.3 - 2007-04-08 - Chocolate
(r688, r690, r696, r698, r699, r700, r703, r704, r706) Windows support
(r676) The yes/no buttons for deleting emails work again now.
(r674) Simplify the code to swap emails. This fixes the vanilla bug that sorting emails corrupts emails with variable content (i.e. mercenary names and monetary amounts), because not all parts of emails got swapped.
(r658) Plug some vanilla file leaks on error.
(r652) Slightly improve command line parameter parsing and provide the -nosound switch.
(r634) Fix a vanilla bug: If FileOpen() fails 0 is returned, not -1.
(r629) Fix incorrect vanilla resource handling: In CreateVideoObject() the passed HIMAGE gets destroyed on only one error path, not on others and neither if the function returns successfully. Its callers always destroy the HIMAGE, therefore remove the only DestroyImage() in CreateVideoObject(), so the HIMAGE does not get freed twice on this error path.
(r627) Fix a vanilla glitch: In BltStretchVideoSurface() return with an error, if either VSurface has a colour depth != 16, not only if both have a colour depth != 16.
(r623) Fix a vanilla resource leak: Do not leak a lock on a VSurface on error.
(r597) Fix incorrect vanilla file handling: Do not leak the file handle when playing a Smack file fails.
(r563) Fix incorrect vanilla file handling: Do not close the file in STCILoadIndexed(). The caller does that.
(r560) Fix incorrect vanilla file handling: When reading a savegame fails do no close the file multiple times.
(r559) Fix incorrect vanilla file handling: When writing a savegame fails do no close the not yet opened file resp. do not close it multiple times.
(r549) Remove a vanilla restriction: There is no technical reason to forbid % and \ when entering text. % caused problems because printf()-like functions were used incorrectly. \ never was a problem.
(r548) Use the unicode char provided by SDL for text input. This is a lot simpler and avoids the internal translation table, which cannot respect different keyboard layouts.
(r528) Use scroll lock to toggle input grabbing. This is useful for scrolling with the mouse in tactical mode when playing in windowed mode.
(r505, r583, r584, r602, r606, r705) Fix wide string/string format specifiers.

v0.2 - 2007-03-15 - Pistachio
(r497) Fix scrolling of the tactical view: SDL_UpdateRect() was missing.
(r491) Implement sound support.
(r484) Fix some vanilla format string vulnerabilities which lead to crashes when a text field (for example the savegame title) contains a percent sign.
(r480) Fix vanilla odditities in string  handling: Properly print percent ("%") signs.  Some strings get parsed by printf()-like functions multiple times. Of course only the first time (if at all) they should be interpreted as format strings. Therefore Do The Right Thing(tm) and use "%S" as format string and the already parsed string as argument in the subsequent runs. The directly visible effect is dissapearing percent signs. There are some gross (and partially incorrect, because they had a dangling % in the format string) workarounds for this in the code. Now that these strings are correctly handled remove those workarounds.
(r479, r486) Fix wide string/string format specifiers.
(r468) Do not try to close a file when it was not opened.
(r467) Use %C instead of %c to print wchar_ts.
(r464) Set the title bar text to something meaningful.
(r458) Fix a vanilla incorrect translation, which also displayed some garbage.
(r451) Implement Blt8BPPDataTo16BPPBufferOutlineZPixelateObscuredClip().
(r450) Implement Blt8BPPDataTo16BPPBufferTransShadowZNBClip().
(r446) Implement Blt8BPPDataTo16BPPBufferOutlineZClip().
(r431) INTERFACE/mapcursr.sti gets loaded thrice in direct succession and leaked twice.
(r429) Remove video objects which only get loaded and deleted (if at all, memory leak, anyone?), but never used.
(r400) Implement Blt8BPPDataTo16BPPBufferOutlineClip() and Blt8BPPDataTo16BPPBufferShadowZNBClip(). They are used when things get thrown + clipping.
(r399) Implement a simple zoom blitter.
(r397) Implement Blt8BPPDataTo16BPPBufferOutlineZNB() and Blt8BPPDataTo16BPPBufferShadowZNB(). They are used when things get thrown.
(r395) Fix a vanilla out of bounds access: The money button image has 5 subimages, not 7, which is assumed for creating this button in the tactical screen. Use the same subimages like the map screen.
(r393) Implement Blt8BPPDataTo16BPPBufferTransZTranslucent() and Blt8BPPDataTo16BPPBufferTransZNBClipTranslucent(). They are used for explosions and probably other semi-transparent stuff.
(r392) Fix minor graphical glitch in Blt8BPPDataTo16BPPBufferTransZClipPixelateObscured(): The pixelation alignment was dependent on the number of skipped lines, which it should not.
(r391) Fix Blt8BPPDataTo16BPPBufferTransShadowZNBObscuredClip(): The obscured parts of the sprites were not displayed.
(r390) Implement Blt8BPPDataTo16BPPBufferTransZClipPixelateObscured().
(r382) Fix a memory leak: The SDL_Surface got leaked when deleting a video surface.
(r381) Fix a vanilla memory leak which happens during loading savegames.
(r378) Fix Blt8BPPDataTo16BPPBufferMonoShadowClip(), clipping was done incorrectly which lead to graphical artifacts when drawing text.

v0.1 - 2006-11-16 - Vanilla - First release
(r369) Fixing german translation - there is no longer a time limit, only an option to set whether saving in battles is allowed. Changing text accordingly.
(r363) Add a crude manpage.
(r359) Also check the DATADIR when opening a file/checking if a file exists.
(r358) Detect the users home directory (using $HOME and getpwuid()) and use the subdirectory .ja2 there for local data.
(r357) Allow all data files to be in the data directory.
(r356) Make the directory of the data files configurable.
(r354) Fix compilation of the dutch, french, italian and polish translations. Make the language selectable via the Makefile.
(r341) Add -FULLSCREEN as a commandline-option to start ja2 in fullscreen.
(r340) Add handling of special keys to hackish keyboard support (r71)
(r327) Implement Blt8BPPDataTo16BPPBufferTransZTransShadowIncClip().
(r319) Reduce the timer code to the only functionality it is used for: Getting a millisecond counter. This fixes a vanilla race condition caused by wrinting to the global counter multiple times in the callback, which could cause the counter jump backwards.
(r256) Further SDLify the video module and throw away unused DirectX stuff. The in-game mouse cursor works now.
(r246) Implement a hack to display /something/ when a zooming blit is requested.
(r243) Make the editor compile and start. You need the file "Editor.slf".
(r238) Fix crash, caused by a vanilla out of bounds array access, when entering a sector and you are immediately in combat mode.
(r194) Implement CheckVideoObjectScreenCoordinateInData().
(r167) Implement Blt8BPPDataTo16BPPBufferHalfRect().
(r155) Implement Blt8BPPDataTo16BPPBufferTransShadowZNB().
(r154) Implement Blt8BPPDataTo16BPPBufferTransZTransShadowIncObscureClip().
(r153) Implement IsTileRedundent().
(r152) Implement Blt8BPPDataTo16BPPBufferTransZIncObscureClip().
(r151) Implement Blt8BPPDataTo16BPPBufferTransZIncClipZSameZBurnsThrough().
(r150) Implement Blt8BPPDataTo16BPPBufferTransZIncClip().
(r149) Implement Blt8BPPDataTo16BPPBufferOutlineZPixelateObscured().
(r148) Implement Blt8BPPDataTo16BPPBufferOutlineZ().
(r147) Implement Blt8BPPDataTo16BPPBufferShadowClip().
(r145) Implement Blt8BPPDataTo16BPPBufferShadow().
(r144) Implement Blt8BPPDataTo16BPPBufferTransZNBClip().
(r143) Implement Blt8BPPDataTo16BPPBufferTransZClip().
(r142) Implement Blt8BPPDataTo16BPPBufferShadowZClip().
(r141) Implement Blt8BPPDataTo16BPPBufferShadowZ().
(r140) Implement Blt8BPPDataTo16BPPBufferTransShadowZNBObscuredClip().
(r139) Implement Blt8BPPDataTo16BPPBufferTransShadowZNBObscured().
(r138) Implement Blt8BPPDataTo16BPPBufferTransZNB().
(r137) Implement Blt8BPPDataTo16BPPBufferTransZ().
(r136) Implement Blt8BPPDataTo16BPPBufferTransZPixelateObscured().
(r131) Place a SDL_Delay(1) in the main loop so the process doesn't eat that much CPU
(r118) Implement Blt8BPPDataTo16BPPBufferOutline() and Blt8BPPDataTo16BPPBufferOutlineShadow().
(r83) Repaired Random() (original Implementation broke with RAND_MAX > 32767).
(r75, r78, r94, r112, r127, r128, r129, r130, r134, r170, r171, r172, r173, r174, r175, r178, r179, r180, r182, r183, r190, r191, r208, r212, r214, r236, r242, r336, r337, r338, r351, r364, r365, r366, r367, r368) Fix wide string/string format specifiers.
(r74) Implement Blt8BPPDataTo16BPPBufferHalf() and Blt8BPPDataTo16BPPBufferTransparentClip().
(r71) Implement crude keyboard input.
(r70) Implement Blt8BPPDataSubTo16BPPBuffer()
(r69) Implement another code path in BltVSurfaceUsingDD().
(r68) Implement/FIXME some mouse movement related functions.
(r67) Implement Blt16BPPBufferShadowRect().
(r66) SDLify BltVSurfaceUsingDD().
(r65, r113) Fix a vanilla buffer overflow: uiSeekAmount is the number of bytes, not the number of 16bit characters. So properly adjust the loop delimiter.
(r64) Implement Blt16BPPBufferPixelateRectWithColor().
(r57) Implement Blt8BPPDataTo16BPPBufferMonoShadowClip().
(r54) SDLify some parts of the code. The main menu shows up now.
(r53) Implement three blitters in C.
(r47) Some more FIXMEs to make it run.
(r46) Implement/FIXME more bits. Now it spins in the main loop.
(r45) Implement some more bits and sprinkle some more FIXMEs. Runs a bit further, but still immediatly terminates.
(r44) Make it work a little bit by replacing some UNIMPLEMENTED by FIXME and actually implemeting some stuff.
(r42) Put UNIMPLENTED() everywhere. At least it can be linked now.
