File: changelog.txt

package info (click to toggle)
grfcodec 6.0.6-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,148 kB
  • sloc: cpp: 12,624; ansic: 748; makefile: 198; perl: 132; sh: 77
file content (1237 lines) | stat: -rw-r--r-- 52,329 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
Changes in 6.0.6 (2016-06-27)
- Support for building with GCC 6 / C++14

Changes in 6.0.5 (2015-05-09)
- NFORenum specific changes:
  - Data file updates
    - Callback 160
    - Action 4 language ID 0x66 (Latin).
    - Action 5, type 0x18 (black recolour sprite) added
- GRFcodec specific changes:
  - Fix checks for opening sprites causing sprites to be read from the wrong file
  - Change default height for sprite sheets to 16000 rows so it does not hit memory issues on 32 bits computers

Changes in 6.0.4 (2014-03-31)
- NFORenum specific changes:
  - Data file updates
    - Action 0, feature 0xF, property 0x18 (Object amount on map)
    - Action 2 train and road vehicle variable 4D
    - Action 2 object variable 60
    - Action 5, type 0x15 (OpenTTD GUI): Now 175 sprites are allowed
  - Support string codes 9A 16 to 9A 1D
  - Allow higher IDs for vehicles when GRF version >= 8
  - Fix some checks for sprite numbers >= 65536
- Remove grfdiff and grfmerge due to being unmaintained

Changes in 6.0.3 (2013-07-15)
- NFORenum specific changes:
  - Data file updates
    - Action 4 language ID 0x13 (Scottish Gaelic).
    - Action D patch variables 15 and 16.
    - Action 5, type 15 (OpenTTD GUI): Now 174 sprites are allowed
- GRFcodec specific changes:
  - Fix container v2 include sprite decoding.
  - Fix encoding from interlaced png images.
- GRFID specific changes:
  - Fix number of crashes caused by corrupted NewGRFs

Changes in 6.0.2 (2013-01-06)
- NFORenum specific changes:
  - Data file updates
    - Base costs.
    - Action5 type 15.
- GRFcodec specific changes:
  - Fix encoding container v1 wrt. maximum size of verbatim data.
  - Fix container v2 tile decompression.

Changes in 6.0.1 (2012-09-21)
- NFORenum specific changes:
  - Data file updates
    - Action 0 station property 1A.
    - Action 2 global variables 06, 0B..0F, 13..16, 1E, 21, 22.
    - Action 2 train variables 4C, 61, 62.
    - Action 2 road vehicle variables 4B, 4C, 61, 62.
    - Action 2 ship variables 4B, 4C.
    - Action 2 aircraft variables 4B, 4C.
    - Action 5 type 15.
    - Callback 15F.
  - Add RPN calculations; the RPN expression is replaced by the calculated value.
- GRFcodec specific changes:
  - Fix reading/writing the size value for pseudo sprites so pseudo sprites actually work with container v2.
  - Reject pseudo sprites that are too large for container v1 when not compiling v2.
  - Do not write incomplete sprites when the maximum height of output images is limited.
  - Fix reading incorrect graphics when multiple graphics are provided for a sprite and writing a GRF container version 1 GRF and the y position decreases.
  - Fix decoding of regular encoded 32bpp sprites.
  - Print appropiate error message when trying to decode unsupported colour depth formats.

Changes in 6.0.0 (2012-03-05)
- NFO version 32 for supporting GRF container version 2.
- GRF container version 2 with bigger sprites and multiple images (bit depth and zoom level) for real sprites.
- GRFID now has a command line option to create the (OpenTTD) MD5 checksum of a NewGRF. For GRF container version 2 NewGRFs this means the MD5 checksum of the header and data sections.
- GRFCodec specific changes:
  - Command line option -n that determines the best compression for sprites during compilation. This could improve compression
- NFORenum specific changes:
  - Data file updates
    - Action 0 airport property 11.
    - Action 0 railtype properties 1C and 1D.
    - Action 0 aircraft property 1F.
    - Action 0 cargo property 1D.
    - Action 2 railtype variable 44.
    - Action 4 language ID 0x3D (Australian).
    - Action 5 type 17/97.
    - Action 5 type 15/95.

Changes in 5.1.3 (2011-12-19)
- GRFCodec specific changes:
  - Fix creation of PNG as some versions of libpng would see the generated PNG as corrupt.
- NFORenum specific changes:
  - Data file updates
    - Action 0 train property 2B.
    - Action 0 road vehicle properties 22 and 23.
    - Action 0 ship properties 1D.
    - Action 0 aircraft property 1C.
    - Action 0 railtype property 1B.
    - Action 2 callback 15E.
    - Action 2 vehicle variable 4B.
    - Action 8 GRF version 8.
    - Action D patch variable 14.
  - Support for font size 3 (monospaced font).

Changes in 5.1.2 (2011-10-07)
- NFORenum specific changes:
  - Data file updates
    - Action 3 canals ID 8.
    - Action 5 type 15 takes 0xA2 sprites.
    - Action 5 types 84, 85, 86, 88, 89, 8A, 8B, 8F, 90, 91, 92 and 93
  - Support the advanced sprite layout in action2.
  - Fix action 14 palette checking on BE machines.
  - Disable warning 209 when checking action 0 raw ('l') data.

Changes in 5.1.1 (2011-03-19)
- GRFCodec specific changes:
  - Make PNG the default output sprite sheet format if libpng is found.
- NFORenum specific changes:
  - Data file updates
    - Action 0 rail types properties 17..1A.
    - Action 4 language ID 0x12 (Faroese).
    - Action 2 station variable 67 is dword sized.
  - Add support for variable 7B.
  - Warn if the palette is not specified via an Action 14.

Changes in 5.1.0 (2010-12-10)
- Add support for PNG formatted sprite sheets with both encoding and decoding (requires libpng).
- NFORenum specific changes:
  - Data file updates
    - Action 0 road vehicle property 21.
    - Action 0 ship property 1C.
    - Action 0 cargo properties 1B, 1C.
    - Action 0 general variable properties 13..15.
    - Action 0 object property 17.
    - Action 2 object variables 43, 47, 48.
    - Callback 10 works for road vehicles and ships as well.
  - Add support for string code 9A 0D..9A 15.
  - Change format of some warning messages to provide more information.
  - Fix stack validator triggering a (wrong) assert
  - For operating systems where fmemopen is supported the data files and its directory are not created by default anymore.
- GRFCodec specific changes:
  - Prevent pcxfile::expirelines from reading more lines than the spritesheet has.
  - Fix several mismatched delete/free valgrind warnings.
  - Fix possible reading beyond a buffer causing crashes.

Changes in 5.0.0 (2010-10-17)
- Merge the source packages of GRFCodec (1.0.0) and NFORenum (4.0.0).
  This means that this package now requires Boost 1.36 or higher.
- Add command line option to silence all progress output.
- Add command line option to refresh all data files.
- Fix Cygwin compilation issues.
- Fix UPX-ing of release binaries under some circumstances.
- Fix difference between GRFCodec and NFORenum escapes format.
- (devel) Fix putting version.def twice in the source bundle.
- (devel) Use directories from the Make conventions for installation
  directories and add a few "parameters" to disable installation of
  certain bits of documentation.
- (devel) Disable strip and UPX as default.
- (devel) Add make distclean that removes Makefile.local as well.
- NFORenum specific changes
  - Data file updates
    - Action 0 objects properties 11..16.
    - Action 2 variable 5F had wrong length for most features.
    - Action 2 objects variables 42, 44..46, 5F, 60..64.
    - Action 2 callbacks 157..15D.
    - Action 5 type 15.
    - Action D patch variables 12, 13.
  - Add support for reading the (Action 14) version of other NewGRFs via Action D
    parameter 7E.
  - Fix bogus warning when using \d<num> in an action 2 for features 7/9/F.
  - Fix returning a non-zero exit code upon an unrecognised command line option.
- GRFCodec specific changes
  - Add filename to a number of PCX related error messages.
  - Fix cropping did not work on big endian architectures.


===== GRFCodec before the merge =====

Changes in 1.0.0 (2010-08-14)
- (devel) Complete rewrite of installation of binaries, so if you are
  packaging this you will have to check whether custom installation and
  such are still needed or that the Makefile does handle it correctly.
- (devel) Detect UPX, fix some race issues in the Makefile, disable
  optimization if GCC 4.5.0 is detected (to work around an optimization bug),
  fix version.h generation if there is a version.h in /usr/include.
- (devel) Fix a number of compiler warnings.
- Clamp the arguments for -w and -h to 65535 as that is the maximum size of a
  PCX.
- Fix reading of PCX files with more bytes per scanline than pixels.
  (This is the case for odd image widths when following the PCX standard closely.)
- Silence progress-meter output when stdout is not a console.
- Unify warnings and errors so they go to stderr and are prefixed by "Warning:"
  or "Error:".
- Allow hex escapes that have bit 31 set.
- Fix comments not prefixed by whitespace could cause grfcodec to reject
  the preceding escape.
- After cropping a sprite, compress and write the correct number of bytes.
- Add -X to print PCX sprite numbers in hex
- (devel) Many compilation issues with different compilers and architectures.
- Fix bug in UTF-8 generation for escapes \U800..\U7FFF.
- Fix U+E0xx characters being output quoted.
- (devel) By Tron: code cleanup, make C functions and variables static where
  possible, remove dead and debugging code.
- Require two slashes before dismissing anything as a C++ style comment.
- Fix reading of real sprites with Unixy absolute paths.
- Check for pixels with palette index of 255 when encoding.
- Add -v to get the version.
- Add -q to silence warnings.
- Add -c to automatically crop extraenous transparent blue pixels.
- Add escapes for the new action 2 operations 0E, 0F, 10, 11, 12, 13, 14, 15, 16
- Prevent quotes and escapes in sprite 0.
- Add escapes for long-format intro dates.

Changes in 0.9.10 (svn r819)
- (bugfix) Correct reading of \7c, \7C, \D| and \D&. (DaleStan)

Changes in 0.9.9 (svn r653)
- By Patchman:
  - Check for sprites that extend beyond the end of the PCX file.
  - Update versioning system to show last-comitted revision for non-release
    builds.
- By DaleStan:
  - (devel) Add release targets to the Makefiles
  - Check the palette of the PCX file before encoding from it.
    (Override a failed check with -f)
  - Introduce several backslash escape sequences; see the wiki for further
    information.
    (disable with -x or -xx)
  - Do not apply colormap to sprites that like character glyphs.
    (Apply colormap to all sprites with -M instead of -m)
  - Enable reading of GIMP palette files with -p.
  - (devel) Terse build mode; get the verbose mode with make V=1.
  - (devel) Touch version.h if and only if it changes.

Changes in 0.9.8 (svn r197)
- By DaleStan:
  - (devel) grfcodec (but not grfdiff or grfmerge) can now be built in
    MS Visual Studio 2003.
  - Slightly change the plaintext quoting algorithm.
  - (devel) Change several memcpy()s to pointer assignments.
  - (devel) Plug several memory leaks
  - (devel) Source code and Makefile changes to grfdiff and grfmerge build
    with both Makefiles, on both Cygwin and Linux.
  - Make code gcc 4 -Wall clean.
  - Use NFORenum's NFO reading engine:
    - Sprite numbers are now optional, and need not be correct if present.
    - Sprite lengths need not be correct. Set to 0 to supress the incorrect
      length warnings.
    - Real sprites are checked for format compliance.
  - Make 0-byte pseudo sprites an error.
  - (bugfix) Prevent binary includes from including directories on OSes that
    would othewise allow it.
  - (bugfix) It is now possible for a real sprite to start above the
    preceeding sprite (the infamous decreasing ypos bug)
  - grfcodec now exits with 0 on success.

Changes in 0.9.7
- support including binary files using "  4 ** data/dingdong.wav" syntax
- by Oskar: support // and # comments within pseudo-sprites
- fixed incorrect error message while encoding if .nfo file could not be read
  (now it reports "Cannot read %s" instead of Creating sprites/: File exists")
- made code -Wall clean
- remove myalloc stuff

Changes in 0.9.6
- by pasky:
  * made it possible to compile grfcodec on Linux
  * made compatible with gcc 3.x
  * when decoding, text strings are written in plain text (disable with -t)
  * supports plain text in .nfo files
  * fixed bug when first encoding a grf file wouldn't rename .new to .grf

Changes in 0.9.5
- self-extracting executables now work on Win2K etc., which doesn't pass
  the full path to the C library
- GRFMerge will just skip .grf files it can't find
- making sprites larger doesn't work if they're at the right edge; complains
  that ofsx too large; instead just use background colour
- GRFDiff doesn't like grfdiff -l 1254 ... (single value in -l), complains
  that there were no differences and makes no output
- allow GRFMerge to read GRFDiff's .exe files, both for -l and other options

Changes in 0.9.4
- fixed yet another crash while compressing
- sprites no longer need correct numbers in the .NFO file; just use "-1" for
  each number and it will be assumed to be correct

Changes in 0.9.3
- fixed crash due to buffer overrun while compressing
- slightly improved compression efficiency and speed
- GRFCodec now handles spaces in file/directory names properly
- GRFCodec now supports comments in .NFO files (from //, ; or # to end of line)
- speed up PCX processing

Changes in 0.9.2
- fixed crash if pcx file not found
- fixed crash if nfo file has no version info header

Changes in 0.9.1
- bug fix by Marcin: wrong order of test in encode function

Changes in release April 20 2002
- -p now actually uses the parameter you give it

Changes in release Dec 03 2001
- made -p option a valid option
- improve compression speed even more using assembly optimizations
- compression is now on by default, disable with -c-
- fixed bug where encoding would fail if the grf file didn't exist already
- fixed bug where decoding would fail creating the sprites directory
- corrected some mistakes in grf.txt (checksum, and initial offsets for tiles)

Changes in release March 26 2001
- fix bug that didn't flush last row if it only contained a single sprite
- fix bug with no height given (would make PCX have height -1)
- show percentage done while decoding
- fix compression algorithm
- improve compression performance
- try without compression if data is inconsistent after decompressing our
  compressed data (this shouldn't happen anymore anyway, report it as a
  bug if it does)
- -p to choose palette

Changes before release March 26 2001
- I don't remember anymore


===== NFORenum before the merge =====

v3.4.6 to 4.0.0 (2010-08-14)
- Change rename "renum" to "nforenum" including ".renum" to ."nforenum"
  so the name is less generic and the same as in several downstreams.
  You might need to update your development environment / build scripts.
- (devel) Complete rewrite of installation of binaries, so if you are
  packaging this you will have to check whether custom installation and
  such are still needed or that the Makefile does handle it correctly.
- Data file updates:
  - Enable actions 1..3 for airports, newobjects, railtypes and airport tiles.
  - Action 0 train prop 1A (change to extended byte).
  - Action 0 road vehicle prop 20,
  - Action 0 ship prop 1B.
  - Action 0 plane prop 1B.
  - Action 0 general variable properties 08, 11, 12.
  - Action 0 house props 21..22.
  - Action 0 bridge props 00, 10..13.
  - Action 0 airport properties 08..0A, 0C..10.
  - Action 0 object properties 0B..10.
  - Action 0 railtype properties 08..16.
  - Action 0 airport tile properties 08, 09, 0E..11.
  - Action 2 operators 14, 15, 16
  - Action 2 variables 12, 1D, 23, 24, 25.
  - Action 2 vehicle variable 49, 4A.
  - Action 2 stations: fix parameter limits on station var 60.
  - Action 2 house variable 47, 65, 66, 67.
  - Action 2 industry variable 46.
  - Action 2 objects variable 40..43.
  - Action 2 railtype variable 40..43, 80.
  - Action 2 airport tile variable 40..44, 60..62.
  - Action 2 station random bits: only 14h, not 20h bits are available.
  - Action 2 object random bits.
  - Action 2 canal random bits.
  - Action 2 railtype random bits.
  - Action 2 airport tile random bits.
  - Action 2 callback 149 works for objects.
  - Action 2 callbacks 14D..150, 152..154.
  - Action 5 types 07, 0D, 14, 15, 16.
  - Action 4 text IDs F960..F99A.
  - Action 4 twenty three new languages.
  - Action 7 variables A2..A4.
  - Action D variables A1..A4 were not readable.
- Fix U+E0xx characters being output quoted.
- Fix a hang when parsing non-UTF-8 quoted strings.
- Fix parameter parsing of stringcode 9A 04.
- Fix complaints about both params of action D operator 80 being FF.
- Fix assert when encountering end-of-line "comments" that begin with a
  single forward slash.
- Fix assert when $HOME ends with a slash.
- Fix comments not prefixed by whitespace could cause NFORenum to reject
  the preceding escape.
- Fix color codes in action 8 are permitted.
- Fix a 64-bit sign-extension vs zero-extension crash.
- Fix an action0 with no IDs caused a hang of NFORenum.
- Fix the error message "A portion of sprite xx could not be processed."
  reported the sprite before the one with the error.
- Fix a warning on newobject's buy menu sprite cargo type.
- Fix warning message about exceeded limits of bounding boxes.
- Fix bogus warnings when defining a range strings and then referring to
  a string in the middle of that range.
- Remove warning 135 (first sprite cannot share bounding box with
  previous sprite) as it's no longer a valid warning since both openttd
  and ttdpatch support multiple ground sprites
- Add -v to get the version.
- Make -w/-W <list> work the way it is supposed to.
- Make NFO error/warning messages go to stderr.
- Allow the beautifier to output escape sequences.
- Allow extended byte IDs in actions 3 and 4.
- Allow hex escapes that have bit 31 set.
- Allow bit 7 of the operation byte to be set when reading patch
  variables and other GRF parameters in action D.
- 0.dat can now specify that certain properties may exist multiple
  times in an action 0.
- Check action 3s for cargos that are specified twice.
- Add escapes for the new action 2 operations 10, 12, 13, 14, 15 and 16.
- Support bridge IDs 0B and 0C.
- Support random 2 type 84.
- Support string codes 9A 06, 9A 07, 9A 08, 9A 0B, 9A 0C.
- Support action 7/9 condition types 0D and 0E.
- Support action 14.
- (devel) Can no longer build without boost.
- (devel) Detect UPX and make strip optional.
- (devel) Race and bash-ism issues with the Makefile.
- (devel) Fix numerous compile warnings and harden NFORenum.

v3.4.5 to v3.4.6 (svn r1795)
- Data file updates:
  - Industry texts may have arbitrary text-stack data.
  - Action D patch variable 11.
  - Action 5 types 0F..12.
  - Action 5 type 07 takes 75 sprites.
  - Languages: Esperanto, Bulgarian, Japanese, Korean
  - House property 1F, 20.
  - Canal properties 08, 09.
  - Canal IDs 05..07.
  - Industry variables 44, 45, 68.
  - Mark variable 81 as readable in actions 7 and D.
  - Text IDs F945..F95F.
  - Adv. action 2 ops 11..13
  - House variable 63, 64.
  - Station variables 67, 68, 69.
  - Station variables 60..65 can take a parameter up to FF.
  - Callbacks 147..14C.
  - Industry properties 23, 24.
  - Action 7 variable A1.
  - Action B message 06.
  - Canal variables 82..83.
- Fix parameter check for global 60+x variables.
- Allow variational 2s to take var 1A with an <and-mask> of 0.
- Check that variational 2 operator 0F's left-hand side side was stored.
- Prohibit storing to persistent registers when they don't exist.
- Fix several bugs in the formatting of variable-length properties.
- Check cargo types against the cargo translation table.
- Add \2ror and \2rot for Adv2 op 11.
- Add \d<YMD> and \d<DMY> to generate long format intro dates.
- Support the extended action 5 format.
- Add support for string codes 9A 01 through 9A 04.

v3.4.4 to v3.4.5 (svn r1396)
- Data file updates:
  - New signals.
  - Variable 20.
  - Text IDs F941..F944.
- Fix yet more array index vs char* problems.
- Add offset info to a message that failed to have it.
- Ensure that VERSIONCHECK gets its required two arguments.
- Fix version 1 industry production callback support.
- Support Action 7/9's new GRFID/mask format.
- (minime) Allow @@LET variables to be redefined.

v3.4.3 to v3.4.4 (svn r1350)
- Data file updates:
  - Variable 7D.
  - Industries do not use GRM.
  - Industry tile variable 62.
  - Industry variables 43, 65, 66, 67, 7C.
  - New objects properties.
- Make unknown action 5 types look for real sprites or recolor sprites.
- Recognize action 2 operations 0E and 0F.
- Catch Action Fs that chain to themselves.
- Add escapes for the new action 2 operations 0E and 0F.
- Support new signals. (Actions 5, variational 2, and 3.)
- Process var. and random 2s and action 3 even when the feature is not
  recognized.
- (fix) Don't correct the feature of a var. or random 2 to match the
  preceding action 1.
- Industry production callback version 1.
- Produce a useful error message when data files are out of sync with each
  other.
- Variational action 2 operator 10.
- Make --data also report the data-file location.
- Check for duplicate IDs in an action 3.
- Check that prop 08 has been set before the action 3, when necessary.

v3.4.2 to v3.4.3 (svn r1244)
- Permit Action 1/2/3 for bridges (Callback 33)
- Data file updates:
  - Articulated RV callbacks and variables.
  - The long date properties
  - (fix) Station prop 18 is a word, not a byte
  - (fix) Callbacks 140..142 are for stations.
  - Action 7/9 variable 9A.
  - Version 2.5 beta 9.
  - TextIDs F90A..F940.
- Add $HOMEDRIVE$HOMEPATH to the list of search paths for .renum/
- Allow multiple sizes for some action 7/9 variables.
- Accept GRF version 7 lang-id bytes in action Bs that precede the action 8.
- Allow Action 6 <param-size> entries with bit 7 set.

v3.4.1 to v3.4.2 (svn r1057)
- Data file updates:
  - Callback 144
  - Callback 145
  - Action B messages 04 & 05
  - New action 5 sprites for trams and the GUI
- Action 13
- (bugfix) Enable autocorrection for feature 0B (cargo) action 4s
- Require two slashes before dismissing anything as a C++ style comment.
- Fix reading of real sprites with Unixy absolute paths.
- Add check for <and> B/W/Ds of 0 in varaction 2s.
- Fix off-by-one error when checking block extents in Action 12.

v3.4.0 to 3.4.1 (svn r820)
- Check that in GRF version 6, Action F declares names for all five standard
  languages.
- (bugfix) Slight change to action F formating, for increased consistancy.
- Prevent the beautifier from adding newlines after the end of a sprite.
- Fix: Version number is revision in hex digits, not converted to hex.
- Fix: LOCATEID2 now reports the correct feature byte.
- Data file updates:
  - Version 2.5 beta 8
  - Callback 143
- (bugfix) Correct reading of \7c, \7C, \D| and \D&.

v3.3.1 to v3.4.0 (svn r688)
- (devel) Can now make the version without \w<date> with NO_BOOST=1.
- (devel) By Patchman: non-release versions show last-committed revision, not
  repository revision.
- Added support for:
  - Industry variable 64.
  - String code 94.
  - Variable 7E (procedure calls).
- Added 2.<minor>r<revision> format for @@VERSIONCHECK.
- Added a missing check for 00 byte following string code 99.
- (devel) Terse build mode.
- Corrected handling of action 2 CargoIDs; all share the same table.
- Added offset info to the variational 2 messages that didn't have it.
- (bugfix) No longer crashes when an industry production callback is not 15
  bytes long.
- (autocorrect) Feature byte for actions 2 and 3.
- Made <feature> optional in most commands taking <feature> <id>.
- Fixed two over-long lines in the --help message.
- (devel) Removed Boost headers from Makefile.dep.
- Remove warning about moving to a smaller ypos.
- Added check for second use of a single bit in Action F.
- (bugfix) Action Fs that try to use too many bits now report the correct
  <offset> and <available-bits>, instead of having them swapped.
- (bugfix) Fix parsing of quoted \##.

v3.3.0 to v3.3.1 (svn r320)
- Recognize Info version 7.
- Warn about generic action 4s that declare no texts.
- More auto-corrector changes:
  - Append an FF to action 6s.
  - Append a 00 to strings.
- @@BEAUTIFY CONVERTONLY now converts hex to "strings", not "s" "t" "r" ...
- (bugfix) Action4s declaring texts for language FF could cause NFORenum to
  abort.

v3.2.1 to v3.3.0 (svn r284)
- Add an auto corrector, which will attempt to correct some portions of some
  pseudo-sprites when enabled. (See README)
- (bugfix) Specifying -f could potentially cause undefined behaviour.
- Allow + and - in more places on the commandline. Specifically, in eg
  "-b convertonly+", rather than just "-b-".
- (devel, docs) fixed release scripts that caused breakage in the 3.2.1 docs,
  and repaired the breakage.
- Also check for embedded 00 bytes after the 01 and 1F control characters.
- Add a length-check for actions 7 and 9.
- Produce more useful and reliable messages when a file-system-related call
  fails.
- If the input file can't be deleted, report about that, instead of just
  reporting that the rename failed.
- Check that action 7/9 don't jump past the end of the file.
- (bugfix) Fix an issue creating the .renum folder on Win9x
- Update langs.dat for the new languages.
- (bugfix) Warn about action 4s that declare no texts, rather than dying.

v3.2.0 to v3.2.1 (svn r187)
- @@USEOLDSPRITENUMS
- @@DEFINEID2
- @@LOCATEID2
- @@TESTID2
- (bugfix) Error message when Action B contains an invalid parameter now
  reports correct offset and parameter.
- Check for including textIDs with a 00 byte.
- (bugfix) Prevent beautifier from inserting extraneous blank lines a line
  that contains only quoted characters.
- Merge the <xoff>/<yoff> checks with the <xoff>+<xextent>/<yoff>+<yextent>
  checks, and reduce them to Warn3.
- Remove the check requiring that callbacks 40..FF be checked with a
  doubleword var2. 1) It's a word var2, and 2) they're invalid anyway.
- New properties, variables, and callbacks:
  - Station properties: 16, 17, 18
  - Station variables: 4A, 66
  - Callbacks: 140, 141, 142
- New action 5 type 0D

Changelog:
v3.1.4 to v3.2.0 (svn r156)
- (hotfix) TextIDs F900..F904.
- (hotfix) Callbacks 3C and 3D.
- (hotfix) Industry variable 63, industry tile variable 61,
  vehicle variable 48.
- (devel) Parse pseudos into strings of bytes, not strings of hex characters.
  (~33% speed increase, ~50% memory usage reduction)
- New format for lang bytes.
- Check that lang byte contains a known language.
- @@BEAUTIFY LINEBREAKS (see README[.txt])
- @@BEAUTIFY CONVERTONLY (see README[.txt])
- (devel) Use boost for current-function macro.
- (devel) Split act123.cpp since I could never find anything in it.
- (change) Ensure that Action 2s of at least three bytes always define
  their ID.
- (devel) Lose the goto that sometimes succeded at the above.
- (devel) Merge the two forms of INTERNAL_ERROR (file/line)
- Check for duplicate style-names for all languages.
- Allow ON and OFF on the command line as + and -, resp.
- @@CLEARACTION2
- @@CLEARACTIONF

v3.1.3 to v3.1.4
- Action 02 feature 07/09 <xofs> and <yofs> no are longer limited to 00..0F.
- (bugfix) Fix check for non-decreasing ypos in real sprites.

v3.1.2 to v3.1.3
- (bugfix) Bit 7 of <triggers> is not a trigger.
- (hotfix) Add industry property 10.

v3.1.1 to v3.1.2
- Enable pretty-printing of overlength action 0s.
- Tightened resultant range from shift-and-add-mod varadjusts in some cases.
- (bugfix) Reinstate check for random 2 <nrand>s of 00.
- Always check triggers and bits in random 2s, not just if <nrand> is valid.
- (bugfix) Skip the offset byte after code 01 in strings.
- (bugfix) Report correct offsets when random 2s misuse the available bits.
- Complain about shift-and-add-mod when add%mod==0, not just when add==0.
- (hotfix) Added station variable 65.

v3.1.0 to v3.1.1
- (bugfix) Check for UTF-8 in UTF-8 strings, not Latin-TTD strings.
- Added 2.0.1a<num>, 25b<num>, and 2.5b<num> formats to VERSIONCHECK.

v3.0.2 to v3.1.0
- Varaction range checking now checks ranges for agreement with <var-adjust>.
- Randactions are checked for using valid bits and triggers.
- Added check for both high bits set in varaction <shift>s.
- Reverted "Do not break if the remaining bytes are guaranteed to fit" in
  favor of an explicit "no line break here" when line breaks do not belong.
- (bugfix) Action F checker occasionally requested one too many random bits.
- (devel) Data files now contain two meta-info bytes; format and version.
- (hotfix) Pulled industry var 5F.
- (hotfix) Added industry var 62.
- (hotfix) Added type 0C action 5s.
- (bugfix) Removed extraneous "m/" from message when a datafile read failed.
- Fully functional UTF-8 parser:
  - Encoded Thorn is C3 9E. (again, grr...)
  - Encoded control characters are now checked.
  - 7B..7E in UTF-8 strings are quoted.

v3.0.1 to v3.0.2
- (bugfix) Check proper range when checking default on type 89/8A varactions.
- (bugfix) Action 0 feat 8 prop 10 is 384 bytes.
- Added pretty-printing for action 0 feature 8 prop 10.

v3.0.0 to v3.0.1
- Added variational range accessibility checks.
- 2.0.1 alpha 74 updates:
  - Widened industry variable 61 to a word.
  - General variables prop 10.
- Added missing \n to --help message.

v3.0.0 pre 2 to v3.0.0
- Added pretty-printing for action 0 and F.
- Several beautifier bugfixes/changes:
  - Obey LINELENGTH.
  - Add missing newline between <message> and <data> in action B.
  - Whitespace between code and comment from the previous line(s) in a sprite
    no longer added to the current line.
  - Do not break if the remaining bytes are guaranteed to fit.
- Action F updates:
  - Uses the action 4/8/B string parsing routines.
  - New language byte format applies to action F too.
- Added --lock, to prevent NFO files from overriding the commandline.
- (bugfix) "Unexpected EOF: Unused town name IDs" message goes to the
  console, not the NFO.
- (bugfix) Make -k not cause crashes.
- Add check for presence of <description> in action 8.
- (bugfix) Action Bs with message-id FF now check <data> ...

v3.0.0 pre 1 to v3.0.0 pre 2
- Added pretty-printing for all actions except 0 and F.
- Added pretty-printing for recolor maps and binary imports.
- All strings now obey QUOTEUTF8.
- All GRFIDs now obey HEXGRFID.
- Changed beautifier's cookie format.
- Changed LEADINGSPACE to allow three independent settings.
- Changed line breaks to start 15 characters before max.
- (bugfix) GETCOOKIE returns a valid comment command.
- (bugfix) Corrected NOPRESERVE's meaning when following @@BEAUTIFY
- (bugfix) UTF-8 encoded Thorn is C3 9E, not C3 93.
- (bugfix) Action 7/9 test 06 is a GRFid test.

v2.8.5 to v2.8.6/v3.0.0 pre 1
- Made comment commands case insensitive (except for variable names).
- Made undef @@BEAUTIFY options and settings complain instead of set default.
- More a73 updates:
  - Callback 3B.
  - Industry production callback's <again> may have any value.
  - Industry variable 61.
  - TextIDs F8FB..F8FF.
- (3.0.0 pre 1 only) Enabled the beautifier.
- (2.8.6 only) diked out @@BEAUTIFY, &c.

v2.8.4 to v2.8.5
- (bugfix) -? message now says @@REALSPRITES.
- (bugfix) Checked to ensure that pseudo continuation lines were being
   attached to pseudosprites, rather than turning into independent sprites.
- Added @@BEAUTIFY/--beautify/-b. (No beautifier to control, though.)
- Added '=' as an acceptable delimiter for comment commands.
- Changed @@DIFF to imply @@LINT NONE.

v2.8.3 to v2.8.4
- (hotfix) Added industry variable 60.
- Added support and checks for action 12.

v2.8.2 to v2.8.3
- Beginnings of sprite-rewriting system. No new functionality yet, though.
- (devel) Moved data-file version bytes to data.cpp.
- Changed "Length does not match ..." (#40) to contain more information.
- (bugfix) Reverted "(bugfix) Checks length of extended house/industry tile
  action2s before processing." from 2.4.8.
- (bugfix) Callback 30 is for industry tiles, not industries.
- Added check for action 8 before GRM action Ds.

v2.8.1 to v2.8.2
- More a72 and GRFv7 updates:
  - Action 7 condition 0C
  - Allow action 4s for industry tiles
  - Allow line breaks in industry texts (hotfix)
  - Industry property 22 (hotfix)
- (bugfix) Actually add --real-sprites.
- Add check for "looks like an NFO file" (override with -f).
- (bugfix) Set EPARSE when encountering a file with a too-large version.

v2.8.0 to v2.8.1
- Up to date with 2.0.1 alpha 72 (all hotfix)
  - Train variable 48 (still undocumented)
  - House variable 62
  - Industry tile variable 60 (widened to 4 bytes)
  - Cargo properties 19..1A
  - Callbacks 38..3A
- (bugfix) Fixed hang when outputting a wider-than-specified value.

v2.7.0 to v2.8.0
- Added @@REALSPRITES/--real-sprites/-r.
- Made sprite numbers optional most of the time.
- Up to date with a70's action 7/9/10 handling.
- Add checks for valid usage of variable 0C. (messages 163..165)
- Made "-1 * 1 00" only parse as a real sprite when looking for real sprites.
- (bugfix) Report proper ID range on invalid non-text ids.

v2.6.4 to v2.7.0
- Change @@DIFF to set sprite lengths to 0 and sprite 0 to "00 00 00 00".
- Add several command-line arguments (see renum -?).
- Look for .renum directory in HOME too, if defined.
- (bugfix) Crash when directory could not be created.
- (devel) Use GNU getopt for command-line parsing.
- (devel) Split and sanify data directory location & creation.

v2.6.3 to v2.6.4
- Complain when DCxx IDs are included.
- (bugfix) Allow changing class E0 TextIDs.
- (devel) Revert %e format specifier.
- Revert format/arguement agreement checks.
- Make argument supercede format for width determination.

v2.6.2 to v2.6.3
- (hotfix) Add new class F8 TextIDs.
- (bugfix) Allow including TextID C7FF (81 FF C7).
- (bugfix) Format/argument agreement for some instances of INVALID_ID (141).
- (bugfix) No longer die on (non-Text)IDs above FF.
- (devel) Added %e format specifier, for extended bytes.
- Added format/argument agreement checks. (non-fatal)
- (bugfix) Re-write import sprites in canon format.
- (bugfix) Allow setting properties for sound ID 49.

v2.6.1 to v2.6.2
- (bugfix) No warnings about backwards gotos when skipping 20..DF sprites.
- (bugfix) Fixed hangs when using control characters where they are ignored.
- (devel) Moved Action 0 feature 8 special-casing to 0f8.dat
- Added checks for generic textIDs.
- Checks for setting out-of-range texts using too-large <num-ent>.
- Up to date with 2.0.1 alpha 69:
  - (hotfix) Action D variable 9F.
  - (hotfix) Action 0 feature 08 props 0A..0F.

v2.6.0 to v2.6.1
- Up to date with 2.0.1 alpha 68:
  - Added UTF-8 support
  - Action 5 type 0B
  - Action D variable 9E
- (bugfix) Really fixed the broken param checking for 60+x vars.
- Added missing checks for extra data in action 8s.
- Removed special casing in action 8s that permitted non-terminated strings.

v2.5.5 to v2.6.0
- Added RPN calculations in real sprites. (see README.RPN)
- Added @@LET comment command.
- (devel) s/setcode/SetCode/g.
- (devel) split check_sprite into two functions.
- (devel) removed a write-only string in verify_real.
- Changed "Cannot read sprite metadata" message to report where it failed.

v2.5.4 to v2.5.5
- (devel) Split action 5 processing off to act5.cpp.
- (devel) New datafile: 5.dat.
- Added action 5 types 09 and 0A.
- Added missing num-sprites checks for action 5.
- Added support for recolor maps.
- Accept recolor maps in action A blocks.
- (bugfix) Correctly number pseudo/include sprites that precede real sprites.

v2.5.3 to v2.5.4
- Added 201a66 format to @@VERSIONCHECK.
- (devel) More reworking of the message system.
- (bugfix) Fixed a GPF on invalid real sprites.
- (bugfix) Accept real sprites where ".pcx" is followed by a non-space
  whitespace character.
- Added numerous checks of the real sprite meta data. (156-60)
- (hotfix) Fixed an off-by-one in GRM (D.dat).

v2.5.2 to v2.5.3
- Up to date with a66:
  - General prop 09
  - Cargo prop 17
  - Action 2 variable 47 (vehicles)
  - Action 3 cargo type checks
  - Ignore high bit of action B severities.
  - Changed @@VERSIONCHECK to agree more closely with the documentation.
  - Action 7 condition 0B.
- Fixed general variable ID checks
- Added check for setting sound props for IDs <74 (4Ah)
- (devel) Removed action 2 variable range data and associated loading code.
- (bugfix) Check correct byte in "0*0 00 01 00 FF xx xx 01 1A".
- (devel) New data-file loading #define, GetCheckEOF.
- (bugfix) Add several missing fcloses.
- (devel) Substantial rework of the message output system.
- (bugfix) Remove an idiotic check in the message output system.

v2.5.1 to v2.5.2
- (bugfix) fixed @@VERSIONCHECK (also shortened the output by 3 bytes).
- Added patch variable 9D.
- Made patch variable 99 write-only.
- (bugfix) Re-added action D operations 09..0C.

v2.5.0 to v2.5.1
- Added @@LINT command; deprecated @@SANITY.
- Changed/fixed exit codes.
- (bugfix) Fixed stack checking for data other than words.
- Added @@VERSIONCHECK command.
- Redid livery override checks (valid feature and follows std 3).
- (bugfix) Added missing data-clearing between files for actions 1-3.
- Downgraded the "Not a recolor sprite" message to Warn 1.
- (devel) renamed defines.h to renum.h

v2.4.9 to v2.5.0
- (hotfix) Made variables 10 and 18 always accessible.
- NFORenum will now automatically write its data files if old or not found.
- (devel) Added versioning byte to beginning of every data file.
- Added full recognition of all string control characters.
- Added (some) string consistancy checking. (actions 4/8/B) (messages 144-9)
- Added action B checking. (messages 150-3)
- (devel) added %K, for stack types.
- (devel) removed attempts at Mac compatibility (still endian-safe, though)
- Reversed the file search order.
- (bugfix) no longer append an 'L' to language names.
- (devel) changed many of the global objects to singletons.
- Up to date with alpha 63:
  - Widened vehicle variable 43.
  - Accept action 1 <num-ent>==0. (features 0-4 only, though)
  - Action 7/9 tests 09 and 0A.
  - GRM operation 06.
- Updated the strings containing "Sanity".

v2.4.8 to v2.4.9
- (bugfix) Don't issue an invalid action byte message on import sprites.

v2.4.7 to v2.4.8
- (hotfix) Added houses variables 10 and 18.
- (hotfix) Widened house var 44 to a dword.
- Up to date with a61:
  - Supports sound imports
  - Action 0 <id> is now an extended byte
- (devel) added %S to my *printf spec, for "expandable string".
- Some message considation.
- (devel) s/LengthCheck/CheckLength/g
- (bugfix) Checks length of extended house/industry tile action2s before
  processing.
- (bugfix) Fixed callback result check (id&0x8000, not &0xF000)
- Added check for valid transparent translation sprite.
- Added offset leaders to three more messages
- (devel) removed offset leaders from strings; added HAS_OFFSET bit instead.
- (docs) removed suppression comment from SANITY.txt
- Added check for using only constant variables (1A and 1C). (message 113)
- Removed duplicate default warning if (and only if) nvar == 1 and the
  referenced cargo ID checks variable 1C.

v2.4.6 to v2.4.7
- (devel) completed datafile reworking.
- Up to date with a59:
  - Added variables 1C, 5F.
  - Added train variable 46.
  - Added station variable 49.
- (change) Added variable 42 to RVs, ships, planes. (only low byte, though)
- Added property to message 65 (unexpected end-of-sprite).

v2.4.5 to v2.4.6
- (bugfix) Revert to 2.4.2's newline handling.
  (My "fix" in 2.4.3 had a tightloop that would terminate in ENOMEMORY.)
- (packing) Removed an old file from source dir.
- (devel) started reworking of datafile handling
- Up to date with a59pre3:
  - Action 2 variable 7F
  - Action 2 trains variable 46
  - Action D operations 09..0C
- Renumbered messages.

v2.4.4 to v2.4.5
- (bugfix) Added variables 10 and 18 to houses.
- (bugfix) Enabled cargotypes 1D..1F in action 3s.

v2.4.3 to v2.4.4
- Up to date with a58:
  - Newsounds properties

v2.4.2 to v2.4.3
- Removed check for not-variational action 2 (now it's a callback return).
- (bugfix) Fatal errors on action 2s define the associated ID.
- (devel) moved meat of LENGTH_CHECK into LengthCheck.
- States version on startup.
- (bugfix) Using standard in/out works again. Also, explicitly state that
  stdin/out are being used.
- (bugfix) Correct handling of quoted newlines.
- Checks ID(s) given in actions 0,3,4 (1 byte IDs only in 4s) (message 139)
- (bugfix) No longer errors on no-groundsprite house action 2s.
- Checks for at least one non-transparent building sprite if no ground sprite
  in house/industry tile action 2s.
- (devel) "%#x" now safely produces little endian text, as XX XX ...
  (bugfix) GRFids no longer come out reversed on LE systems. (message 119)
- (bugfix) Reports the correct sprite number if an incorrect number of
  reals follow an action 5.
- (devel) Some cleanup in act123.cpp.
  (bugfix?) Probably some fixes in standard action 2 handling.
- Checks <num-cid> in action 3s (must be 0 for features 5,7,9..B).
  (message 140)
- Attempted to be up-to-date with a58:
  - Train props 27..29
  - RV props 1C..1E
  - Ship props 17..19
  - Plane props 17..19
  - Cargo prop 16
  - Variable 1B
  - Industry tile variable 60
- Checks that livery overrides are only used with features 0 and 3.

v2.4.1 to v2.4.2
- Added check for Action E disabling reserved GRFID (FF .. .. ..)
  (message 134)
- Increases nfo version, if necessary.
- Up to date with documentation for alpha 57:
  - Binary include sprites (and their pre-grfcodec 0.9.7 equivilants)
    (messsages 135..137)
  - Action 11
- (bugfix) Fixed resource management feature check.
- (bugfix) Now complains about 79Dv.dat, not 7Dv.dat.
- (devel) Changed resouce management to use a data file.
- Added <count> checks for resource management. (message 138)
- (devel) Messages are now stored as char*s, not std::strings.
- Removed the whole "Can disable following warnings/errors" concept.
  (and some associated bugs.)
- (bugfix) No longer eats NFO files with an unknown version.
- (bugfix) No longer eats NFO files that follow a file with an unknown
  version.

v2.4.0 to v2.4.1
- Cargo prop 15 (alpha 57)
- (bugfix) Action 2s can refer to their own ID.
- Train variable 60 (alpha 57)

v2.3.6 to v2.4.0
- Checks actions D, E, F (messages 119..129)
- Up to date with alpha 55 vcs 3
  - House props 1D, 1E (a55vcs2)
  - Parameterized variable support (message 130)
  - Station variables 48, 60..64
  - House variables 60, 61
  - New house/industry tile action 2 format (messages 131..133)
- (bugfix) probable crash on incorrect length basic 07/09 standard 2s.
- (bugfix) color translation checks didn't.
- (devel) added 79Dv.dat for the 7/9/D variable information.
- (devel) renamed 7.cpp 79D.cpp to more accurately reflect its purpose.

v2.3.5 to v2.3.6
- Up to date with alpha 55 vcs
  - newcargos
  - global variable 1A
  - multiply, and, or, and xor operations
- Added warning for too many sprites in set.
- Added warning for an unusual set size (features 0-3, sizes 5-7)

v2.3.4 to v2.3.5
- (bugfix) Gives the correct offset for an incorrect operation code.
- (bugfix) Enabled variable 80 for vehicles. (Used in AI callbacks.)
- (bugfix) Reports correct location of preceding action 1.

v2.3.3 to v2.3.4
- (bugfix) No longer overruns the sprite on variational action 2s where
  <nvar> is greater than 1.

v2.3.2 to v2.3.3
- Parses a54's new variational action 2s.
- Checks for valid operation in new variational action 2s.
- Added <variable> to message 84. (Testing nonexistent variable)
- (bugfix) Unused industry cargoIDs are now reported.
- (bugfix) Message 23 (Unexpected EOF: Unused cargo ids...) now displays
  feature in hex. (invisible)
- Added variable 18 for industries.

v2.3.1 to v2.3.2
- (bugfix) Standard action 2s not preceded by an action 1 now returns a more
  meaningful error.
- (bugfix) Standard action 2s that do not require new graphics do not check
  the preceding action 1 (if it exists)
- Up to date with alpha 53 vcs:
  - Industry production callbacks
  - Industry tile properties 0E-11
  - Industry tile variable 44
  - Industry variables 40-42
- Changed one more sprite-too-long type message to warning level 2.
- (devel) Changed INTERNAL_ERROR to be more useful.
- (devel) Cleared up gcc compilation.

v2.3.0 to v2.3.1
- Added station variables 46 and 47 (a51).
- (bugfix) Now checking correct byte of action 7s for potential goto.
- Changed all the sprite-too-long type messages to warning level 2.
- Added checks for Action 6:
  Changes following sprite
  Does not attempt to extend following sprite
  Following sprite exists
- (packaging fix) Removed renum.tar.bz2 from the src/ dir (renum.rar and
  renum.zip) Please don't ask me how it got there.

v2.2.3 to v2.3.0
- (devel) Moved action 1-3 checking to its own .cpp file
- (bugfix) "Feature byte does not match..." message would output jibberish
  instead of the location of the previous action 3.
- Added checks:
  Standard action 3 precedes override action 3
  Override action 3 closely follows standard 3
  Variable in variational action 2 exists.
  Variable in variational action 2 is not being shifted into oblivion.
- (bugfixes) Validated 0.dat:
  Fixed house props 11, 12, and 16
  Fixed bridge props 0B-0D, added 0E
  Added station props 14 (a47) and 15 (a51)
  Fixed industry props 1B, 1C

v2.2.2 to v2.2.3
- Removed check for comments at the end of pseudo-sprite lines
- (bugfix) '/' is now an acceptable directory separator
- (bugfix) String support no longer breaks when high-ASCII characters are quoted.
- (devel) fixed gcc 3.4.3 compilation

v2.2.1 to v2.2.2
- Added @@WARNING command.
- Changed FAILURE to FATAL.
- Changed/combined some strings.
- (bugfix) No longer warns about "-1*6 00 00 01 00 ?? 1A" (Finally!)
- Raised error messages to always.
- Enabled var/rand action 2 and action 3 for feature 0A.
- (devel) fixed gcc warnings when compiled -W -Wall.

v2.2.0 to v2.2.1
- (bugfix) TTD defines sprites up to #4894.
- (bugfix) changing TTD's last sprite is permissible.

v2.1.0 to v2.2.0
- (bugfix) 0.dat can be updated for new features without changing the source.
- (devel) Added MSVC .NET project files to src/
- Up-to-date with alpha 49:
  New action 0 properties for industry tiles and industries
  Extended-byte <num-ent> for action 1 and <num-sprites> for action 5
  Action 10
- (bugfix) Terminated repetition now correctly handles multi-byte terminators.
- Updated the action 1/2/3 linter:
  Feature bytes larger than 07 are permissible.
  Checks ALL standard action 2s
  Accepts callback results in standard action 2s
- Added detection for property repetition in an action 0.
- Added string support (but only if "Info version 5" or no NFO header)
- (devel) Cleaned up whitespace
- Added @@PRESERVEMESSAGES and made @@REMOVEMESSAGES default.
- Added checks:
  Action 8:
    Presence
    Duplicate
    Valid GRFID
  Action 7/9:
    <variable>, <varsize>, and <condition-type> agreement
    Backwards goto
  Action 10:
    Duplicate
    Usage
  Action 4:
    String count
  Action A:
    Sprite number
- Adjusted some warning levels.
- (bugfix) Feature 0A prop 1A is a dword, not a byte.
- Do not lint NFO files where the first sprite is a real sprite.
- (linter) Do not accept real sprites prior to the first Action 1/5/A.

v2.0.4 to v2.1.0
- Added checking of Action 0s
- (Bugfix) Removed various incorrect messages that could be issued on an
  overlength Action 3
- Moved source files to the src/ directory

v2.0.3 to v2.0.4
- Changed supression of errors and warnings by failures.
- Added a @@DIFF comment-command -- causes all sprites to be numbered -1, to
  help produce useful diffs.
- Changed "Invalid action byte" to a failure.
- (devel) Removed ugly system calls; replaced with real file-handling funcs.
- (Bugfix) removed "invalid ID" message for @@USEID2
- (Bugfix) Added some missing "can't happen"s
- (devel) Moved all messages to messages.h
- Up-to-date with a43

v2.0.2 to v2.0.3
- Corrected number of sprites required for foundations.
- Ensure that the sanity checker will never try to read bytes that do not
  exist.

v2.0.1 to v2.0.2
- Added missing checks for Variational/Random Action 2s
  Action 2 pointing to itself
  All choices the same in random 2
  Default ID appearing before the end of the sprite in var 2
- Added missing check for action 3
  Default ID appearing before the end of the sprite
- Added a list of the sanity checker's messages (SANITY or SANITY.txt)
- Downgraded severity of some messages.
- Made sanity failures suppress following non-failure-level messages

v2.0 to v2.0.1
- Added sanity checking to ensure that there is a chain from all vehicle
  sprites to an action 3.
- Added a comment command (USESET) to work around unchecked Action 6s.
- Fixed condition where pseudosprite continuations could be replaced with
  real sprites.
  This occured when the line could be parsed as a single decimal number.
- (devel) passed memory allocation and bit-packing off to the vector class.

v1.2.1 to v2.0
- Added sanity checking for Actions 1-3, 5, and A.
- Added comment commands.
- Changed *nix version to look in the "sprites/" directory.
- (devel) Split source yet again (hopefully for the last time)
- (devel) Changed NFO output to a global ostream*
- (devel) removed some outdated stuff from defines.h
- (devel) Added an exit value of 3 to indicate internal failure.

v1.2 to v1.2.1
- Fixed real-sprite validity check to agree with GRFCodec.
  Now properly handles whitespace in filenames and trailing comments.
- Fixed condition where sprites could get numbered in hex.
  This occured when renumbering a non-patch NFO after a patch NFO.
- (devel) Changed message and error output to global ostream*s

v1.1 to v1.2
- Now adds missing NFO header.
- Checks real sprites for validity. This mostly solves the problem of
  destroying continuation lines of pseudo-sprites with invalid characters.
- Changed backup and temp file names in some cases, to always use .NFO.BAK
  and .NFO.NEW
- (devel) code for checking sanity of actions 1, 5, and A included, but
  #ifdef-ed out. NO_SANITY_CHECKING is the controlling symbol.
- (devel) more source rearranging and cleanup.

v1.0 to v1.1
- Now processes all files listed on the command line, not just the last one.
- Always produces output.
- Warning and error messages will now be sent to both the console and the NFO.
  In the NFO, messages are commented and prefixed with "!!"
- Changed handling of invalid pseudo-sprites.
    Instead of dying, comments the sprite out and continues.
    Message to console and NFO.
- (bugfix) Added a check to ensure that the output file got opened.
- (devel) moved file processing to a separate function.
- (devel) substantially cleaned up the i/o stream selection system.
  It actually makes sense again.
- (devel) general code cleaning and organizing
- (devel) upgraded to UPX 1.25

v0.4 to v1.0
- Now handles multi-line pseudo-sprites correctly.
- Now writes sprite 0 in the correct location.
- More permissive TTDPatch NFO detection
  If the first sprite is a pseudo-sprite, treat as a TTDPatch NFO.
    If the first sprite claims to be 4 bytes long, discard and recreate.
    Otherwise, comment old sprite 0 and create new sprite 0.
- Successful runs no longer produce output, other than the fixed NFOs.
- (devel) Now stores most of the NFO in memory while processing.

v0.3.1 to v0.4
- (devel) Now does its own file handling (disable by #defining NO_FILE_HANDLING)
- Accepts absolute paths for .NFO locations.
- Drag&drop from Windows explorer now works.
- The executable is now UPX packed.
- renum.bat is no longer necessary; the executable is now renum.exe.
- GNU/Linux systems (GNU fileutils) receive a new backup everytime the NFO is
  renumbered.

v0.3 to v0.3.1(bugfix)
- No longer destroys real sprites.

v0.2 to v0.3
- Now also reports on potential continued pseudo-sprites with trailing comments
- No longer eats whitespace before comments
- No longer eats blank lines

v0.1 to v0.2
- No longer silently destroys data in multi-line pseudo-sprites.
- Return value of 1 now indicates potential data destruction.
- (side effect) Renum.bat will not delete the old version of the NFO if
  pseudosprite data may have been destroyed.
- Detects TTDPatch NFOs, and reports size stats.
- In TTDPatch NFOs, if sprite 0 does not report the exact size of the NFO,
  outputs corrected sprite 0 to the console, and, commented, as the last line
  of the NFO.
- Now returns 2 to indicate error.