1108.4
2=====
3
4- Never recreate an empty hard.dat in the game, even if there's a
5  problem opening it (avoids corruption when running both the game and
6  an editor at the same time).
7  (thanks CocoMonkey for the report)
8
9- DinkC: load_palette() now searches for palette in the right place
10  (thanks scratcher for the report)
11
12- DinkC: Dink position is updated after a new screen is loaded
13  (thanks metatarasal for the report)
14
15- New translations for the engine strings in Russian (thanks Yuri
16  Kozlov) and Hungarian (thanks Balázs Úr).
17
18
19108.2
20=====
21
22* User-visible changes:
23
24- New, simple versioning scheme, without scary .20YYMMDD date.
25
26- Properly play Dink's intro screen music (see below).
27
28- FreeDinkedit plays sounds on Windows.
29
30- New translation for the engine strings in Brazilian Portuguese
31  (thanks Enrico Nicoletto)
32
33- Update translations of the engine strings
34  (thanks Translation Project)
35
36- 64-bit support for Windows.
37
38* Developer notes:
39
40- Properly play Dink's intro screen music: the original game actually
41  tries both 3.mid and 1003.mid for playmidi("1003.mid").
42
43- Improved build documentation.
44
45- Display SDL audio driver in debug mode.
46
47- Add AppStream/AppData file for GNU/Linux software centers.
48
49
501.08.20121209
51=============
52
53* User-visible changes:
54
55- Fix game freeze when warping in some special situations, such as
56  when lots of sprites are created; this bug was present in the
57  original Dink (thanks Bas Wijnen)
58
59- New translation for the engine strings in Catalan (thanks Àngel
60  Mompó) and Basque (thanks Gorka Azkarate Zubiaur)
61
62- Update translations of the engine strings (thanks Translation
63  Project), including the Dutch translation which was never credited
64  in this file yet (thanks Koen Torfs)
65
66
671.08.20120427
68=============
69
70* User-visible changes:
71
72- New translations for the engine strings: Esperanto (thanks Felipe
73  Castro), Slovenian (thanks Klemen Košir), Serbian (thanks Мирослав
74  Николић), Croatian (thanks Tomislav Krznar).
75
76- Fix a few bugs (see below).
77
78* Developer notes:
79
80- No palette conversion for dir.ff graphics in truecolor mode (bug in
81  The Blacksmith's Trail).
82
83- Play some MIDI files when the original CD is not present - this
84  behavior was partially broken a while ago.
85
86- Fix issue in some D-Mods related to DinkC's sp_seq(..., -1) command
87  (bug in Day of the Carcass).
88
89
90
911.08.20101114
92=============
93
94* User-visible changes:
95
96- Turbo mode: maintain Tab pressed, and FreeDink will run at triple
97  speed.  Useful to accelerate cutscenes that you already saw.
98
99- Display "FreeDink" next to the engine version in the title screen,
100  so that people more easily identify whether they are using the
101  original engine or the FreeDink engine.  This will help when people
102  are asking for assistance on the Dink forum, for instance.
103
104- Update Danish and Spanish translations.  New Greek, Italian and
105  Czech translations.
106
107- Fix game crashes (experienced in "Agatha's Will", and "The River").
108
109- Improved ms woe installer: do not ask about deletion for each and
110  every savegame or D-Mod file; add an entry in Add/Remove Programs in
111  the Control Panel; new header pictures.
112
113* Developer notes:
114
115- Some code clean-ups, namely in FreeDinkedit.
116
117- Override transparency for 32bit BMPs.
118
119- The first game crash is related to DinkC variable assignments on a
120  line longer than 100 characters (caused by one fixed-length buffer
121  that wasn't fixed during the DinkC parser clean-up).  The second
122  game crash is when a D-Mod author uses an invalid sequence (number
123  >= 1000).
124
125- Document '-t'/'--truecolor' in the command-line output of '--help'.
126
127- Add 'contrib/search_script.c' to locate a DinkC script usage in the
128  world map.
129
130- Upgrade gettext infrastructure from 0.17 to 0.18.  Rely on external
131  gettext (and libiconv) under ms woe, rather than the previous
132  bundled 'intl/'.  In the process we gained .po charset conversion
133  for that platform.
134
135
1361.08.20100420
137=============
138
139* User-visible changes:
140
141- None - this release just fixes some compilation issues
142
143* Developer notes:
144
145- Include missing acsite.m4 file in releases
146
147- Update gnulib to fix calls to install-reloc on Debian-kfreebsd and
148  Hurd
149
150- Update cross-compilation instructions
151
152
1531.08.20100321
154=============
155
156* User-visible changes:
157
158- Fix a bug where the game would always close in some situations,
159  which was introduced in version 1.08.20090916 (related to the
160  'sp_custom' DinkC command).
161
162- Fix a crash in the developer console when trying to run a command
163  that doesn't exist; the bug was already present v1.08 where the code
164  originates, but Linux tend to be stricter when it comes to memory
165  errors ;)
166
167- New translations for the engine strings: Norwegian Bokmål (thanks
168  Alexander Krivács Schrøder), Finnish (thanks Jorma Karvonen),
169  Spanish (thanks Fernando Carmona Varo), Polish (thanks Michał
170  Trzebiatowski), Danish (thanks Joe Hansen), Vietnamese (thanks
171  Clytie Siddall), Indonesian (thanks Erwid M Jadied), German (thanks
172  Sarah Evans) and French (thanks me).
173
174* Developer notes:
175
176- Fix mikmod build support under ms woe for newer versions of
177  SDL_mixer (version >= 1.2.9)
178
179
1801.08.20090918
181=============
182
183* User-visible changes:
184
185- Correctly locates engine translations under Debian
186
187- Fix crash when quitting under ms woe
188
189* Developer notes:
190
191- Fixed slight memory leak in font lookup
192
193- Updated bundled DLLs
194
195
1961.08.20090916
197=============
198
199* User-visible changes:
200
201- NSIS (NullSoft Install System) script to generate a complete ms woe
202  installer (with FreeDink, DFArc and freedink-data)
203
204- Toggle fullscreen works on more platforms (not just X11)
205
206- New architecture: PSP (playstation portable)
207
208- New logging system, enabled with '-d' (instead of writing debug
209  information on standard output by default), with different
210  priorities (debug/info/warn/error/fatal). You also can easily check
211  for DinkC errors in your scripts by searching for "[DinkC]" in
212  DEBUG.TXT. In addition DinkC errors often carry the line number
213  (rather than the binary offset).
214
215- Dink doesn't crash on very long lines in dink.ini or DinkC scripts
216
217- DinkC: map_tile(...) can modify the first tile square (tile_index=0)
218
219- Lower startup RAM requirements (-7MB so far, and less memory
220  bandwidth for sounds); this is mostly useful for small devices.
221
222- Add support for contextual translations: when there are several
223  lines of dialog that are identical in a few scripts, but need to be
224  translated differently, you can add a context in your PO file such
225  as 'msgctxt "s3-chick:57"' (name of the script in lowercase without
226  extension + the line number).
227
228* Developer notes:
229
230- Dropped libffi dependency to support more architectures
231
232- Fixed SDL_ttf version check (it failed for macport's 2.1.0)
233
234- Code clean-ups, namely in the input subsystem (joystick) and
235  shutdown process.
236
237- Fixed numerous buffer overflows in the DinkC interpreter, and a
238  potential infinite loop during search/replace (when the replacement
239  countained search term).
240
241
2421.08.20090120
243=============
244
245* User-visible changes:
246
247- Fix game freeze in Pilgrim Quest (return value for DinkC functions
248  'get_sprite_with_this_brain', 'get_rand_sprite_with_this_brain',
249  'get_next_sprite_with_this_brain' and 'sp')
250
251* Developer notes:
252
253- Added scripts to rebuild snapshots, .deb, .rpm and .exe unattended
254
255
2561.08.20090109
257=============
258
259* User-visible changes:
260
261- i18n ("internationalization") - or support for translating D-Mods.
262
263- Fix some crashes due to improper D-Mod scripts (e.g. attempt to
264  modify sprite #1000): DinkC scripts are now better validated to
265  avoid this.
266
267* Developer notes:
268
269- DinkC functions are now called dynamically using libffi, for cleaner
270  bindings to the C engine core.  The DinkC parser code was also
271  clarified and a few string functions were optimized.
272
273
2741.08.20080920
275=============
276
277* User-visible changes:
278
279- Supports playing Ogg Vorbis for background music (will look for .ogg
280  extension before .mid extension)
281
282* Developer notes:
283
284- Supports /usr/share/games alternate prefix for game data.
285
286- Can search and use system fonts under FreeDesktop-compliant systems
287  (using fontconfig)
288
289
2901.08.20080828: first official release
291=====================================
292
293FreeDink is based on version 1.07 of the original engine and also
294incorporates v1.08 improvements.
295
296The main change is that FreeDink is portable, so it can work under
297operating systems (e.g. GNU/Linux) and architectures (e.g. PowerPC).
298
299The following describe some differences with the original game engine.
300
301* User-visible changes:
302
303- Backward-incompatible changes in v1.08 can be disabled using a
304  'v1.07 mode' (--v1.07 option -- more information in doc/v1.08.txt).
305  This allows playing D-Mods that weren't upgraded to v1.08 yet.
306
307- Game graphics
308
309  - Better windowed mode: supports non-truecolor mode, and can switch
310    between windowed and full-screen using Alt + Enter (X11 only).
311
312  - Avoid color/palette temporary glitch after quitting show_bmp()
313    mode.
314
315  - Smoother truecolor fades, and avoid some glitches in palette mode.
316
317  - Use a different but metric-compatible fonts (alignment and
318    wrapping are conserved), due to copyright issues (see
319    doc/fonts.txt).
320
321  - Widen debug-mode line to avoid some unwanted line wrapping.
322
323- Gamepad: the threshold for joystick axis is slightly greater - with
324  the same threshold than the original game (~10%) Dink is going diags
325  too easily.  Feedback welcome :)
326
327- Game speed: set maximum framerate to 50 FPS, which is compatible
328  with v1.08 (see doc/framerate.txt)
329
330- Installation: supports separate directories for original data and
331  additional D-Mods.  This permits installing the game as
332  administrator in a write-protected directory, while allowing normal
333  users to install D-Mods in their personal directory.
334
335- Memory usage
336
337  - Requires less memory in truecolor mode (by not converting paletted
338    graphics to truecolor)
339
340  - Fixes memory leaks, in particular when loading a savegame
341    (reloaded graphics were duplicated in memory)
342
343- Editor fixes:
344
345  - To avoid issues with non-US keyboards in the editor, F1->F10-F11
346    and NumPad 0->9-. are used in addition to 1->0-` for tiles
347    selection.
348
349  - When vision is changed from the minimap mode in the editor, don't
350    display the current screen's sprites over the minimap.
351
352  - When text or number is asked in the editor, user now can press
353    'escape' to discard changes.
354
355  - In editor "Alternative Tile Hardness Selector", when going
356    completely to the right or to the bottom of the screen, avoid a
357    postponement for the square selector. Reported at
358    http://www.dinknetwork.com/forum.cgi?MID=57829
359
360  - When editing hardness, print the hardness index actually being
361    edited, instead of the one associated by the current background
362    tile.
363
364  - Display real-time information about hardness in hardness mode.
365
366* Developer notes:
367
368- Compressed BMP support: afaics in some situations, the original Dink
369  engines does not support compressed (RLE?) BMPs. Such BMPs are
370  notably used in "Prophecy of the Ancients" (like the 3 alternate
371  colored orbs) - when support is lacking, graphics are simply not
372  displayed which much complaining in DEBUG.TXT. I believe this
373  support depends on which DX version is used. More surprisingly:
374  there's a screen, still in PotA, where you can pass above and under
375  and bridge (you need to pass under the bridge to blow up a rock in
376  the above screen and thus reach the secret island). There's no way
377  to pass under the bridge when there's no compressed BMP support - I
378  haven't investigated much, but I guess either a missing sprite does
379  not clear the hardness for Dink to pass, either the missing sprite
380  is causing a DinkC script to stop.  So, vanilla SDL does not support
381  compressed BMPs, so I used SDL_image everywhere to do so. This means
382  that FreeDink always support compressed BMPs.
383
384- Fix several array-out-of-bounds issues while reproducing the
385  original de-facto engine behavior.
386
387  - For example, in 'init_scripts', the script may check the active
388    status of sprite 1000, while the sprite array has 300
389    elements. This caused bugs after the port and is now
390    fixed. Curiously it didn't seem to cause bugs before. Such bug did
391    'appear' in v1.08 too.
392
393  - Sometimes, a init() or dink.ini line would be more than 80 chars,
394    which is its allocated length in the 'sequence' structure. This
395    would overwrite parts of the next sequence. Possibly this never
396    was an issue, because sequences were initialized incrementally,
397    but an init() line was more likely to cause breakage. This is
398    fixed anyway.
399
400  - When reloading a sequence through init() with a longer sequence,
401    v1.07 will overwrite bits of the next sequence, for dir.ff loading
402    only. v1.08 overwrites for both BMPs and dir.ff sequences to avoid
403    to a bug with mixed dir.ff and BMPs sequences. This bug is
404    documented in dink.ini and loads the sword (longer) hit sequence
405    before the first (shorter) sequence to work-around it. See
406    http://www.dinknetwork.com/forum.cgi?MID=92733 for details. In
407    FreeDink, sequences are never overwritten.
408
409  - Some D-Mods have sequences with more than 50 frames. This triggers
410    a buffer overflow in the original game BUT the overwritten data is
411    the animation metadata ('delay' and 'special' fields), which is
412    not critical for non-animated sprite sequences. Example: "The
413    Green Voice in my Head - Part 1 - Hangover & Agony", first save
414    game then east then house on the right: it shows a shelf with
415    broken vases with is seq 66 frame 65 (> 50). FreeDink reproduces
416    this behavior by allowing up to 1000 frames in a sequence but
417    without the buffer overflow part.
418
419- Command line: fails on invalid options.  Supports undocumented
420  '-nomovie' for compatibility with DFArc2.  Supports short aliases
421  (e.g. -window -> -w) and double-dash options (e.g. -window ->
422  --window).
423
424- Search path: Dink search data in additional places to support
425  separating reference data and user D-Mods. Check
426  doc/directory_layout.txt for information.
427
428- Dinkedit
429
430  - Dinkedit creates a custom sequence #1 but mark the 4th frame as
431    '-1'.  This made FreeDinkEdit crash, so it's set to 0, which means
432    "end of sequence".
433
434  - The editor palette is now Ts01.bmp instead of esplash.bmp - just
435    like the game. This is simpler that way, and nobody changed the
436    editor palette anyway.
437