Source

doom / src / _logs / fablog1.txt

Full commit
   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
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
=======================================================================
faB log of changes on DOOM LEGACY, since the Linux doom sources release
(23-Dec-1997) until the release of Legacy v1.20 (continued next file).
-----------------------------------------------------------------------
THE DOOM LEGACY PROJECT		          Contact: <legacy@newdoom.com>
=======================================================================

Project:  DOOM Legacy
Web site:  http://www.newdoom.com/doomlegacy
Log author: Denis Fabrice



Fri 26-12-1997: "First overview"
===============


*   Downloaded 'DOSDOOM' by Chi Hoang, compiled, runnable under Win95,
    crash under true DOS.

    No sound, no network, keyboard config doesnt work.

    REAL slow! -devparm shows 2 to 3 tics per frame on a P166MMX !

*   Corrected bugs in IdentifyVersion(), FindResponseFile();
    Now runs under DOS.

*   Added nice titlebar like original Doom, compile only with 'PC_DOS'
    defined (uses conio.h).

*   PC_DOS define : enable DOS/textmode specific stuff.

*   asm_defs.h : defines all the stuff needed so that asm routines
    know about vars and structs defined in C code.

*   tmap.S : converted the x86 code to AT&T syntax for GAS, NASM could
    be used but AT&T syntax is much better imho.

    R_DrawColumn, R_DrawSpan restored.

    Should be optimised for Pentium in the future.

*   USEASM define : compile with ASM routines instead of C ones.

    Actually, USEASM means i386/Pentium machine code.

*   Compiled with ASM routines, runs the first time, but it's still
    very slow... there's a lot of cpu time lost somewhere else than
    drawing the screen.



Sat 27-12-1997: - "Boris and Fab in search of the lost frame"
===============


*   tmap.S : FixedDiv2, FixedMul : translated to AT&T.

    After some profiling with 'gprof', we've noticed that FixedDiv
    and FixedMul where used a lot. We've restored the ASM ones.

    A lot of cpu time freed, but still a minimum of two tics/frame...

*   i_system.c : we've restored a TimerISR interrupt for counting the
    gametics, like it was in the original doom.

    I_GetTime was not supposed to count the tics itself, but just
    return it.

    I_TimerISR()
    I_StartupTimer()
    I_ShutdownTimer()
    I_SetTimer0()

    Result: IT S FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAST !!!

    Problem: we have to call the old Timer int., but not at the same
    speed that our new TimerISR... but we didn't find a clean way to
    call the old interrupt from the new TimerISR.

    So, the old timer interrupt is called faster than 18.2/sec.
    Maybe we'll have to code an IRQ wrapper in ASM like in Allegro3.0



Sun 28-12-1997: - "Boris works alone"
===============

*   d_main.c  : no 'HOME' environment variable under DOS, now uses
    'DOOMWADDIR' for development.

*   tmap.S : removed use of %ebp in FixedDiv2 and FixedMul.

*   wi_stuff.c : line 1660 : object "WIOBJ" lump not found, should
    be used only with 'french' version, we'll have to check why the
    french version is active? Replaced by "WIOSTI" for now.

*   Network restored. Seems to work fine!

*   m_misc.c : M_SaveDefaults, M_LoadDefaults : now handles conversion
    of scancodes/ascii when reading/writing the config file.

*   Downloaded 'dosdoom2' by Chi Hoang.

    He goes so fast that we don't have the time to tell him the problem
    with 'I_GetTime'... we'll do a release of our port soon and we'll
    send him a mail. This guy got us started on dos doom sources.


Mon 29-12-1997: - "Doom2 in 320x400 looks weird!"
===============

*   i_video.c : arranged the keyhandler from DosDoom, which didn't
    PostEvent fast enough. Didn't respond when typing fast on the
    keyboard.

*   MULTIPLE VESA resolutions : added code to handle bank/switching
    and setting of VESA modes.

    - 320x400 runs 35fps on my P166mmx,
 640x480 needs 2 tics per frame, which is SLOW !
 (duke nukem runs at least 20fps 640x480 on my old P75...)

    - works only in full screen, crashes when Statusbar displayed,
 still lots of positioning/resizing to check out.

    - visplane 'top' and 'bottom' tables used byte for y-clipping
 coordinates, so of course it didn't support more than 255
 lines.

    - r_defs.h : visplane 'top' and 'bottom' tables changed to 'short',

 r_planes.c
 r_segs.c   : some compares used '0xff' changed to '0xffff'.

 This is the main stuff you have to change if you want to support
 multiple resolutions.

    - asm_defs.h : SCREENWIDTH must be changed to test different
 resolutions.

    - aspect ratio is not good for 320x400 and so...

    NOTE ! These modifications will not be in the 'clean' source code
    until it runs ok with status bar.

*   ALLEGRO3.0 : we'll definitely use a lot of code from this GREAT
    library by Shawn Hargreaves.

    We'll use the sound code from Allegro3 for sound support, like
    DosDoom2 does.


Tue 30-12-1997: - "Preparing the release for our doom dos port"
===============

*   Boris succesfully added the sound support with Allegro3.
    (as DosDoom2 does)

*   A lot of work to cleanup our release:

    DJGPPDOS/     contains the source code specific to DOS/W95.
	     i_xxxx.c
    LINUX/	     contains the source code specific to LINUX.
	     i_xxxx.c

    Implementation-specific code in the main directory has to be
    enclosed by #ifdef PC_DOS or #ifdef LINUX, or such.

    Linux code was removed from the DJGPPDOS/ implementation.

*   makefile : somewhat improved to support ASM routines with -DUSEASM,
	  added support for PGCC like Allegro3 makefile


Wed 31-12-97: - "Fixed that timer stuff!"
=============

*   DJGPPDOS/i_irq.c     : new timer routines, plus ticcount
	i_irq.h
	irqwrap.S   : asm wrapper for the irq handler

	i_system.c  : removed our dirty timer code, I_GetTime
		      now returns ticcount.

    The timer handler is now fixed, but then the Allegro sound doesnt
    work anymore, got to fix that.


Thu 01-01-1998: - "
===============

*   3:49 - Our doom version succesfully started with 5 players, but
    then it crashes after some seconds...

    We used DOOMATIC (which replaces Ipxsetup) to launch the game with
    5 net nodes. We used a map with 6 dmstarts.


*   Yeehaa! erreur ridicule avec le define ST_Y sans parentheses...
    Je peux enfin resizer en 320x240 !!! La status bar n'est pas affich�e
    en entier.

*   Le makefile ne marche toujours pas et ca m'enerve!

*   Tests transparence avec TINTTAB, super cool.

*   Dor�navant il faut ajouter -file tinttab.wad avec un lump 'TINTTAB'.

*   Dans G_Initnew(), ajout� du code pour activer le flag
    'partial invisibility' pour certains objets qui doivent �tre affich�s
en transparence.

*   Removed 7 messages from the Quitgame messages. These messages
    are just coarse and boring. I have not found these messages in the
    commercial versions of Doom1,Doom2,Doom95(FinalDoom),UltimateDoom,TNT,
    Plutonia. So I have fucked them out!


*   Implemented the following routines like in Allegro:

  I_AddExitFunc()
  I_RemoveExitFunc()
  I_StartupSystem()
  I_ShutdownSystem()

    Now only the stuff that has been 'initted' is shutdown at the end.

    I_StartupSystem is executed in i_main.c BEFORE ANYTHING ELSE, it
    sets up the signal handler to trap exceptions, page faults and such.

    Reworked a little the I_Error() and I_Quit() routines so that they
    do a SystemShutdown().

    Wow ! Now all the error messages are displayed, and the program
    'crashes' cleanly to dos, restoring all interrupts, video mode,
    timer...

*   Meanwhile, I have discovered a 'bug' in the sound code of Allegro,
    when new sounds are activated on all the channels at the same time
    (eg: waking up a lot of monsters in a room), it does a 'crack' in
    the sound. However it's not a serious problem: it's very very short.
    After that the sounds plays together on the eight channels without
    problem.


    Boris log 3-1-98:
    =================

-   Mouse sensitivity : peut prendre les val de 1 a 20 (avant 5 a 15)
-   idclev : now work
-   added control sub-menu in option menu

    Boris log 4-1-98:
    =================

-   added run lock key !!!
-   no more hit enter if wad added only if one is missing
-   finish control menu


    Thu 08-01-98: "putting my nose into DosDoom latest release..."
    =============

*   Mmmh, thanx to dosdoom, I have finally fixed the psprites being drawn
    too small, and not at the center of the view.

    When I implemented multiple-resolutions, I started to convert all
    320 / 200 constants into screenwidth / screenheight dynamic variables.

    Now fixed. However I'm not happy, there shouldn't be any 320/200
    constants in the code. There must be a clever way to do it: by using
    an aspect-ratio stuff... for later.


    Sun 11-01-98: "profiling is not so easy..."
    =============

*   Added VBE2.0 liner frame buffer + old vesa1 bank switching,
    uses Allegro for LFB, and my old routine for Vesa1 because Allegro
    'set_gfx_modes' a larger screen in Vesa1 than requested.

    If VESA2 is not found, VESA1 is used, with bank switching if hires.

*   We have started to work with P5PROF, a cool bunch of macros to
    read the counters of the Pentium like: numbers of cycles, numbers of
    cache misses... after hours trying to get it work... we are a little
    deceived because it always returns very different values.

*   I want to profile the stuff with GCC GPROF... crash at InitLightTables
    but not in normal optimised mode. I think there's plenty of badly
    allocated buffers and dirty stuff that need to be cleanly done.
    I think our version is actually the most stable under DOS. But it
    should NEVER crash!

*   i_sound.c : raw2SAMPLE() now reads the frequency of the sample from
	   the DSXXXXXX rawdata header. Most samples are 11025 freq,
	   but some are 22050. Now the double shotgun sounds ok!

*   g_game.c : G_DoPlayDemo() now uses ExtractFileBase from w_wad.c
    w_wad.h	: made ExtractFileBase() global.

    Now demos can theorically be played with a path specification,
eg: -playdemo mydemos\cooldemo

    It didn't work before because the demo is loaded by W_AddFile(), which
    extract the file base name with ExtractFileBase(), because lumpnames
    have max. 8 chars. So eg: mydemos\cooldemo became 'cooldemo'.

    G_DoPlayDemo() now searches for the file base name.

*   g_game.c : G_DoPlayDemo() : added compatibility for Doom2 v1.9 demos:
    since MAXPLAYERS has changed, the header of the demos is different,
    so now it assumes there's max. 4 players when demoversion is v1.9.

    Playing back v1.9 demos now works! I Playback a lot of demos and they
    play perfectly till the end!

    This version seems to be 100% Doom2 v1.9 compatible!

    It's great to look at deathmatch demos in 640x480 !!

*   i_sound.c : tried to make the I_ShutdownSound() cleaner, because the
    program exits from time to time with a General Protection Fault.
    Now I ask Allegro itself to release the voices before quitting.
    I'm still unsure if that fixes the GPF problem.

*   dstrings.c : I found the bug! There was missing quotes in the quit
	    messages table. What a shame! It crashed sometimes
	    because the quit message was too long or something. fixed!



    Fri 16-01-98: "bored trying to speed up the asm, so I fixed some
    =============  demo stuff..."

*   Added a gcc_asm.doc to help people who are new to DJGPP and want to
    use asm code, without the hassle of inline asm. It's not a full-featured
    document, but it certainly helps if you wonder about the stack, and
    passing arguments from C code to ASM code.

*   vid_copy.S : screen blit routine in asm, after some profiling I have
	    discovered that:

  1) DJGPP memcpy() is as fast as ASM rep/movsl
  2) Copy into VESA2 LFB is 4 times faster than to 0xa0000 !!!

    Anyway, the screen blit is a very small percentage of the frame rate...
    R_DrawColumn eats the most.

    I'll keep the asm routine for convenience, because it can copy from
    different width bitmaps, so you don't need to use multiple memcpy().

*   g_game.c : now calls ST_changeDemoView() when pressing F12 while viewing
	  a demo. This redraws the statusbar for the 'viewing' player.
    st_stuff.c : load facebacks (STFBx) for all players, and display the
	    right faceback (the player color) on the statusbar when
	   changing the view.

*   s_sound.c, d_main.c, p_inter.c : replaced some consoleplayer by
	  displayplayer so that the sounds are heard from the display
	  viewpoint.


    Tue 28-01-98:
    =============

*   Yeehaa!! Changing the video mode while the game runs now works!
    There's a lot of cleanup to do, and some details like resetting
    the colormap, but technically it runs in all VESA2 LFB modes +
    the basic mode 13h !

*   We have discovered a great optimisation for the rendering of wall
    segments, based on the fact that 'packets' of columns share the
    same scale and/or start texture address... we'll have to wait the
    end of the exams to create an asm routine which draws multiple
    columns at the same time: the trick is that sequential writes
    in the horizontal axis are faster because the Pentium has Write
    Buffers of 64bit length so successive writes to the same location
    are faster.


    Fri 30-01-98: "phew! examinations are finished, back to the code!"
    =============

*   Vid-mode change on the fly now sets the palette, and sets the right
    coords for the status bar widgets, the status bar is also fully
    redrawn.



    Sat 31-01-98: "today on the menu... choose yer resolution"
    =============

*   tmap.S : replaced cdq in FixedDiv2 by two simple instructions that
	allow the next 2 ones to pair, while cdq doesnt.


*   m_menu.c : made the video menu. It displays all the VESA2 LFB
	  resolutions, starting with 320x200 standard VGA.
	  Like in Quake, each resolution is displayed only once,
	  and the VESA2 linear frame buffer is always used for
	  the reolution, except for 320x200 which stays in the
	  standard mode VGA.

	  Video test mode, set default mode, and aspect ratio is
	  still not working...


    Mon 02-02-98: "yeeehaaa! now I can play super-fast 320x400!"
    =============

*   r_main.c : R_SetViewSize now calculates the right projection and
	  yslope, I have also added an 'projectiony'. The aspect
	  ratio is now correct in all resolutions! Yipee!
	  Maybe I'm not so bad at maths after all?!...

*   We've tried changing vid modes while playing network: it works of
    course, but there's a small slowdown since the machine sends less
    packets when it is occupied setting the new mode... should fix that
    later...


    Tue 03-02-98: "320x400 is definitely working, sprites ok and all!"
    =============

*   r_main.c : aspect ratio and positioning of psprites is now correct.
	  I have looked at Dosdoom4.6: it doesn't draw the psprites
	  like the original Doom2, eg: with statusbar it scales down
	  the sprites, but it should do it only when reducing the
	  window. With statusbar there's no scaling except for the
	  aspect ratio... details I know...


    Wed 04-02-98: "Web design is fun...but takes too much time!"
    =============

*   Our Doom project will probably be called 'DOOM LEGACY'. Prepared
    the page on our site, for the release to come... took me a lot of
    time. Put some big graphics, and made the page background black...
    big fat American style... I must admit that it looks good however.

*   am_map.c : fixed a bug with the recalc of the automap after a vid
	  mode change.


    Thu 05-02-98:
    =============

*   hu_stuff.c, hu_lib.c : added functions to update the coords of the
	   heads-up widgets after a screen size change.

*   v_video.c, m_menu.c :V_DrawScaledPatch now scales the patches for
	   the titlepic and menu to the screen size.

*   v_video.c : moved WriteText and other graphics routines to v_video,
	   for a more general use.

*   hu_stuff.c : added the Deathmatch Rankings!


    Fri 06-02-98: "Freelook is ridiculously simple!"
    =============

*   m_menu.c : added M_DrawTextBox to draw a box under the messages,
	  because sometimes the text is difficult to read with all
	  the stuff drawn behind.

*   m_menu.c : re-ordered the main menu like Quake one : singleplayer,
	  multiplayer, options, help, quit.

	  Created the lumps for SINGLE, MULTI, and SETUPMULTI.

	  Singleplayer lead to: newgame,load,save,endgame.
	  Multiplayer will allow the player to enter its name
	  and color. The name will be displayed in the deathmatch
	  rankings and saved into demos along with player colors.

*   w_wad.c : created a W_ReadLumpHeader which reads only a part of a
	 lump, so R_InitSpriteLumps reads only the header of the
	 sprites. However it is not really faster... after that
	 I found that it was R_GenerateLookup which takes time...

*   Looking at Heretic, I suddenly noticed that the perspective didn't
    change even one pixel when looking up/down. Now that I think of it
    it seems evident. In fact it looks like the perspective change, but
    it's just a 'optical illusion' !

    Just a quick hack at r_main.c, and I was looking down in map01!

    Freelook will be for the first release!!!

*   g_game.c, r_main.c, r_things.c : added the freelook!
	 Like DukeNukem, freelook is a momentary or toggelable.
	 Invert mouse for the freelook is also done, but have to
	 put it in the menu.

	 I had to create another 'centerypsp' to center the
	 psprites right, because they moved along with the view
	 (look up, gun was going up...)

	 It looks good, but I'll have to find the best values
	 for the freelook so that it doesnt make people sick!!
	 (the perspective is wrong when looking up or down...)

*   v_video.c, m_menu.c : M_DrawTextBox now fills the inner of the box
	 with a flat used as pattern, it looks better than just a
	 a plain color. V_DrawFlatFill() does the job.


    Sat 07-02-98: "now I can do something of the windows keys!..."
    =============

*   Changed a lot of stuff for the keyboard : I wanted to attach
    commands to keys, each game command (fire,use...) could be
    triggered by one or more keys. Once keys are mapped to commands
    (game controls), you don't need bother with mouse/joy/keyboard
    anymore since joystick and mouse buttons are treated as 'virtual'
    keys, which can trigger game controls too.

    Clearly, this means you can attach any action to a joystick button
    or mousebutton.

    g_input.c : now handles the game inputs (key/mouse/joy), and remaps
	   events to game controls.

    m_menu.c : the controls menu has been rewritten, now it accepts
	  keys, mousebuttons and joybuttons as inputs for any
	  game control. Maximum two inputs are accepted for each
	  game control, like Quake 'customise controls' menu.

    g_game.c : G_Responder() now asks g_input to remap an event to
	  a game control. G_Buildticcmd now tests the game controls
	  instead of gamekeys so eg:strafe left can be done with
	  a mousebutton... (I know someone who does this!)

	  Plus added support for 'lookup' 'lookdown' 'centerview'
	  and 'mouse aiming' game controls.

	  For simplicity, the speedlock ('runmode') and locking
	  of the mouselook will be moved as menu options: TO DO.

    i_system.c : rewritten the kb handler to distinguish between keypad
	    keys and extended non-keypad keys. eg:uparrow is not
	    the same as keypad 8. If someone moves with the keypad
	    he/she can use the cursor keys for something else
	    (eg:sidestep left/right)

	    The ASCIINames (scantoascii) table has been reworked.

	    Added support of the win95 keys: leftwin, rightwin, menu.

    Hmmm.. took me all the day!

    Still to do: save the new controls config (two keys max per control),
    add menu options for speedlock and aiminglock.


    Sun 08-02-98:
    =============

*   m_menu.c : fixed a bug with 'messageToPrint' messages displayed by
	  the menu, sometimes a text line was missing.

*   m_menu.c : Customise Controls: added Backspace to clear the keys
	  for a control,
	  unknow keys are now displayed as 'KEYxxx' with the key
	  number (so you effectively see if multiples 'UNKNOWN'
	  keys are different),
	  fixed Escape now Cancels, does not change the key,
	  Escape in the menu now returns to the Options menu.


    Mon 09-02-98:
    =============

*   m_misc.c, g_input.c : added temporary hack : saves the controls menu
	  two-keys-per-game-control in the default cfg, but if they
	  are not found when loading, the old 'key_xxx' values are
	  converted to the new game control key codes. This is to
	  simplify the use of our first release for the people,
	  they don't need to bother with the new controls, they'll
	  be converted automatically from old key_xxxx setup keys.

	  We'll have to do a new SETUP, for later...

*   st_stuff.c, wi_stuff.c : now uses player's translation tables so
	  that the facebacks in statusbar and intermission screens
	  display the right colors, whatever new player colors we
	  add, and whatever number of players.

	  Before it was not good, because it loaded a 'STPBx' patch
	  for EACH player, which means that for 16 players you
	  would need 16 patches named 'STPB0' to 'STPB15' !

*   wi_stuff.c : commented out the use of a 'WIOBJ' patch, that was used
	  only with the french version, and special conditions...
	  looks weird, since "WIOSTI" patch does the same.


*   m_menu.c : added the multiplayer setup, choose your color and enter
	  your name, with an animated 'marine' to display the
	  chosen color.


    Tue 10-02-98: "still finishing touches for the 1st release..."
    =============

*   m_menu.c : completely redo the Options menu, text was too big, and
	  I needed space for mouselook,always run and such...
	  now uses the HU font, and includes the following:

	  mouselook toggle,
	  always run toggle,
	  invert mouse toggle,

	  screen brightness has been added, this is like the
		 old Doom2 'F11' gamma key, just moved in the menu.

	  created new 'slider' graphics, to draw smaller 'thermos'
	  by the side of the options, like Quake, instead of a big
	  thermo under the option.

	  It's getting better and better! It's great to play with
	  mlook as default, and always run.. what a release for
	  my poor little fingers...

*   m_menu.c : added mouselook sensitivity, which IS NOT THE SAME as
	  mouse y sensitivity. Mmmmh... maybe a mouse y sensitivity
	  would be useful for people who uses the mouse to move
	  backward and forward... I'll have to think about it.

*   r_main.c, r_plane.c : added a yslopetab[] which is the original
	  yslope[] with slopes for the full view possible when
	  mouselookin' (one half above and one half below the
	  original viewheight), so that we don't need to recalc
	  the yslopes each frame for the mouselook.

	  Now we just make 'yslope' point somewhere in 'yslopetab'.
	  Doom is already slow enough! This frees hundreds divisions
	  per frame.


*   v_video.c, m_menu.c : menu now calls V_DrawFadeScreen(), which
	  fades down the screen, so that the menu is more readable.



    Wed 11-02-98: "having fun while testing multiplayer features..."
    =============

*   g_input.c, g_game.c : added the double-clicking inputs for both
	  joystick and mouse. To set it up in the menu, set the
	  mouse button two times, the second time it becomes a
	  double click.

	  I'm not happy with it, there are 'collisions' between
	  inputs attached to the same control : one input is
	  being tested and sets the control to true or false,
	  then the second input. At the end, the first input
	  does not act... to fix. Later.

*   It's one week and a half that we are working me and Boris at my
    home, and we planned to release the first version of our project.

    So here it is, I think that it's already very good. And anyway,
    the setup controls works perfect if you don't do stupid assigns
    (like two mousebuttons for the same control).

*   I think that we did not receive enough 'recognition' for the great
    dmatch launcher 'DOomatic'. Five persons or so told us that they
    liked it and it's all. How can people use DM or other crap launchers
    when we do a great launcher like Doomatic?? Strange world.

    Anyway, I hope that we'll have a little feedback with our doom
    project.. Ciao.


************************** FIRST RELEASE ******************************
*		      DATE: 12-02-98 TIME: 04:25:39 (wow!)		 *
***********************************************************************


    Thu 12-02-98:
    =============

*   Found a small bug just after the release! keynamestr too short in
    G_KeynumToString() ... fixed.

*   v_video.c : V_DrawTiltView(), just for fun, I wanted to tilt the
	   view like in DukeNukem, when the marine dies. It looks
	   good. I may leave it, but there will be a toggle in
	   the menu 'Tilt view On/Off'.

*   r_sky.c, r_plane.c : r_plane now uses pspriteyscale to render the
	   sky, so now the sky is scaled with the correct aspect
	   ratio. There's still a problem with mouselook : the
	   sky texture should be 256 lines high instead of 128.

*   r_sky.c, screen.c : I have finally understand that skytexturemid
	   is an offset into the texture, and it is totally
	   independent of screen size. R_RecalcSky() is useless.

	   skytexturemid is initialised to the y coordinate of
	   the line of the sky texture, which is displayed at
	   the horizon (the line at the center of the view).

	   When you look up and down, the horizon moves too,
	   so the sky texture should be tall enough...

*   tmap.s : made a quick cutn paste of the R_DrawColumn, modified
	it so it can draw columns taller than 128 pixels (upto
	256 in fact). Because of the 256 wrap, the routine could
	be optimised further (to do). Added skycolfunc in r_main.c
	Tested a sky of heretic (which is 256x200)... there's
	some problems with centering... but now I go to bed!


    Fri 13-02-98: "wow! we've already got a good feedback!"
    =============

*   Yipee! Now we finally receive a little feedback for our efforts,
    we've received around 20 mails, and for one time they're interes-
    ting bug reports, so they're useful.

    Now Doomatic also receives a good feedback, I suppose because the
    people think that they need Doomatic for 8 player DM. It's not
    obliged but then since there's no other launcher ready for 8 player
    we've shipped Doomatic with Doom LEGACY.

    A funny issue, is that we didn't dare call our 'mod' DOOM 3...
    but it seems that most of the people call our mod DOOM 3 !!!

    Well.. they choose! So I think the name is now DOOM 3 : LEGACY.

    However, got some bug reports, and Doomatic was not the good rel-
    ease, so I'll try to fix a maximum of small bugs before we update
    the site tomorrow, since we have to update Doomatic , so that it
    works with 8 players, I'll update Doom LEGACY at the same time.


*   Bug report 1: g_game.c : now the mlook sensitivity is the same
	     whatever the screen height.


*   r_sky.c, tmap.S : damned! the problem with centering of the sky,
		 was because I left out a 0x7f mask in the new
		 skycolfunc drawer routine! Just removed it and
		 the sky is right!

*   doom3.wad : RSKY1,RSKY2,RSKY3 : since there is mouselook now, I had
	   to create taller sky textures (256x240 each) instead
	   of the original 256x128. I have worked all night
	   trying to keep the original skys looking good.

	   Since NWT (NewWadTools) didn't accept a picture larger
	   than 320x200 I had to create my own little proggy to
	   pack a picture into a patch_t resource. It's called
	   'lumpy'.

*   i_system.c : as suggested, tried to fix the exit sound, I_WaitVBL
	    doesnt wait!! Tried to change it, does the same...


    Sat 14-02-98: "updated release1 on the site"
    =============

*   While replying to the mail at university, other mails where
    arriving every five minutes or so!! That was very useful since
    I have had a lot of feedback and a lot of bug to fix!

    We've received Saturday night some 25 mails. Not bad at all!

    The most reported is of course the freelook aiming which doesnt
    fire in the 'look' direction...

*   g_input.c, g_game.c, m_menu.c : reworked the g_input method, Boris
	   was right, there was a way much more simple.

	   Now it is possible to go backward and 'use' at the same
	   time, as someone asked by mail..

	   Fixed the setup controls : when there's already two
	   keys, if you enter a new one, it replaces the two
	   precedent, instead of just erasing the two precedent
	   keys.

*   m_misc.c : Load and Save defaults is now much cleaner, and much
	  simpler, however, it is no more directly compatible with
	  Doom2, each time you switch between doom2 and doom3, you
	  loose your controls config. Not a big issue.


    Sun 15-02-98: "fixing the most reported and ridiculous bugs"
    =============

*   made a votes.txt with a list of the most wanted features, asked
    by mail: at the top: tcp/ip, shoot up/down, open GL !!!

*   m_menu.c : used "RROCK17", not found in Doom1, as a background
	  for boxes. Now uses borderpatchname.

*   p_mobj.c : P_SpawnPlayerMissile : found how to fire missiles in
	  the mouse aiming direction. It works!

	  I'll have to add an 'autoaim' toggle to the menu,
	  it will be added in the player_t struct.

	  ticcmds will need an autoaim bit, and also an
	  aiming value. So demos record and playback the
	  freelook, and so the network just works!

	  For network, each player need to know the other's
	  autoaim toggle, plus other's aiming value.

	  Mouse aiming needs to be done for gun,shotgun,dblshotgun,
	  and also for BFG invisible rays.

	  Will have to check the rocket explosion, it seems that
	  it kills monsters below, even when the rocket explodes
	  a lot above the monsters on the ceiling.

	  Gun shots will have to be shown when fire in the ground
	  or ceiling. Also, fixing the gun puffs not shown on
	  bottom or upper texture would be nice...

	  Lots of work for tomorrow! Now to bed!


    Mon 16-02-98: "hmmm.. have we found a bug in network?"
    =============

*   s_sound.c : it seems a hack in the sound code used M_Random()
	  whereas it should something else because I have
	  found that M_Random is deterministic for the
	  consistancy checking in some occasions, and the rest
	  of the code only uses P_Random().


	  M_Random() is used once per tic at ST_Ticker() and
	  more than once per tic by WI_Ticker()...

	  Anyway, it seems clear to me that M_Random() shouldn't
	  have been used in s_sound.c, and it comes possibly from
	  the unix sound hacks.

	  Now s_sound uses rndindex without modifying it,
	  (using M_Random() increment rndindex).

	  LET S HOPE ITS THE BUG WHICH CAUSED CONSISTANCY FAILURES
	  IN MORE 4 PLAYERS NETWORK!!!



    Tue 17-02-98: "wow! I cleaned a bug without knowing what I was doing"
    =============

*   g_game.c, p_user.c, p_mobj.c : can shoot up or down, works in
	  network, and works in demoz (for missile weapons)!

*   s_sound.c : removed the use of M_Random() in a linux hack to vary
	   the sound sfx picthes. Hope it was the consistancy
	   failure bug of the network...

*   p_pspr.c : shoot up or down done for bullet weapons. There's still
	works to do coz the puffs dont show on bottom and upper
	textures.

*   Wow! It's very hard to aim with no auto aiming! What a mess!

*   i_system.c : I_Quit : made it G_CheckDemoStatus when demorecording
	  because when you quit with F10 while recording a demo,
	  it didn't save the demo. 'q' sould be used to end a
	  demo, but then why not the standard Doom exit key 'F10' ?



    Wed 18-02-98: "I wanna see Puffs everywhere!"
    =============

*   m_map.c : PTR_ShootTraverse() : did the clip of the shoots on the
	 ceiling and floor, was as simple as I dreamed last
	 night! Just a triangle stuff... I'm no math dude but I'm
	 learning a lot from the sources!

*   m_map.c : same : I nearly fixed the problems with Puffs not being
	 drawn on bottom walls where front & backsector use the
	 sky flat. This was originally because you cant shoot on
	 sky hack walls. Now it tests also if the ceiling heights
	 are different (always diff for sky hack walls) so now you
	 can shoot at the outer wall in the outdoor at map01.

	 Still, I've found a place in a pit, in a Danzig map, where
	 the puffs are not shown... hmm...

*   m_misc.c : shamelessly added an detailLevel = 0 after M_loaddefaults
	  because someone couldn't get the game running, having
	  detailevel set to 1 in his default.cfg...


    Thu 18-02-98: "Lost some 8 hours on a MOTHERFUCKER BUG!!!"
    =============

*   I'm disgusted, 8 hours lost just because that BT_AUTOAIM in
    d_event.h was 6 instead of 64... why did that 4 disappear???

*   m_menu.c : added Autoaim on/off, Crosshair Off/Cross/Angle/Point
	  in the Options menu.

*   p_mobj.c, p_pspr.c : now also shoots up and down with AUTOAIM
		    when there's nothing to aim at.

*   d_main.c, i_system.c : setvbuf now changes stderr to filebuffer
		      mode, so that we get all the errormessages
		      flushed at the end, and have them all
		      displayed. Somewhat cleaner now.

*   g_game.c : 'q' while recording a demo now I_Quit() instead of
	  I_Error(), thus returning a return code 0. That's why
	  Doomatic didnt call lmpmast : the return code was -1
	  by I_Error().

*   hu_stuff.c, wi_stuff.c : fixed a bug with 'french' used as a
	   boolean, but it is an enum. Should have tested 'language'.
	   Now talk uses english keymap.

*   v_video.c, screen.c, m_menu.c : fixed the scaled graphics not
	   at the right place because they were centered like
	   the scaled menu.

*   hu_stuff.c : now draw the crosshair scaled. Can see it better.

*   Joined readme.txt and legacy.doc in a more complete legacy.doc.

*   d_main.c : added a nice blue titlebar for 'Doom LEGACY'.


    Sat 21-02-98: "Started to work on the transparent water!!"
    =============

*   Started to work on a real engine feature: transparent water !

    The water efectively looks like it 'cut' the sector into two
    parts : the underwater part and the out-of-water part. In fact
    it needs only one value per sector: the height of the water!

    This single value is sufficient to know where to draw the
    water surface, the clipping is just nearly automatic with
    floorclip and maybe a new waterclip. Visplanes are created
    for the water surface, and all the water visplanes are
    drawn after the non-water visplanes, using a 'shading' texture.

    The water texture looks like it uses transparency, but in fact
    it's just a grey-shaded texture where each pixel tells which
    light colormap of Doom to use. eg: it just makes colors brighter
    or darker, and looks like ripples over the surface.

*   r_plane.c, r_bsp.c, r_segs.c mainly. This is done. There's still
    problems with 'underwater' sectors, which are displayed as out
    of the water because currently I use the floorclip to clip the
    water visplanes.

*   About the water texture: the colormaps indexed by texels of the
    water animated texture, could at the same time remap the colors
    to 'more blue' colors. Then its like transparency between the
    background picture, and a single color: the tint of the water.

    Since on one side, the color is constant (water color), it
    doesnt need as much precalculated data as transparency, no need
    for a 64k tinttab here, and the shading is done at the same
    time, which is not true for translucency!!!

    Sun 22-02-98: "I need a change,.. water is getting boring"
    =============

*   Yes, water starts to bore me to death: the bigger problem is
    probably not enough colors in Doom palette to have great
    colors for the water. I've looked for highcolor but...if I
    do it just like DosDoom, it'll be a better shading and more
    colours mapped for the water.

    However, I'll not go to highcolor until it's really MUCH
    better. eg: using highcolor textures, but then it needs a
    lot of artist's work. So for now, I'll try to find a clean
    solution for the water, try to find the best 8bit colors.

*   Another problem with water is that it looks 'unreal' : the
    stuff under the water should be deformed because of the
    refraction or something... I'm trying to understand how
    AlienBreed3d on Amiga does this... the water in it looks
    so great! That's because the underwater part moves with the
    ripples... I'll do this later, I'm bored for now.

*   Added jump, as a quick-hack : still needs to find a bit in
    ticcmd so that it work in multiplayer.

    Added a sound when the player avatar jumps, and another sound
    if the player avatar touches the ceiling (ouch!).

*   Added height checks... now the player can walk under flying
    monsters.

*   Added thing on top of another thing checks. You can now stand
    on barrels, pillars ... every MF_SOLID  object in fact.

    Problem: when a sector rise, actors that are at different
    height sometimes are pushed on the ground, and so becomes
    attached. While they move in the air, they dont get attached
    because they now when they collide with the height checks...

    eg: if a player stands on a barrel, and then the sector under
   moves up, the player and the barrel have their z coord
   on the sector floor, so they get attached... in fact
   the player should move up with the barrel...

*   p_user.c : PlayerDeath Think view follows the attacker now
  also moves the pitch of the view.

*   p_inter.c : P_KillMobj : barrels remember if they were killed
by a player, so that the originator of the barrel explosion
gets the frags for all players who dies from the barrel
explosion. This information is passed from barrel to barrel!!!

*   Wow! Started a quick-hack test of external camera view...
it kicks ass!!! It looks good! Surprising how the levels
look more '3d' from the exterior of the marine's eyes!!!

    With demos it especially great! For now I use the 'c' key
    to switch the camera view on/off.

    There will be a lot of work to get the camera move right,
    and that the camera always find a position inside the
    level, and not outside sectors, neither in other non-connected
    sectors...


    Wed 25-02-98: "Wow! I got that water working! Looks great!"
    =============

*   Got a superb idea yesterday for the Doom console : it will
    look like a hi-tech heads up display, that comes from the
    left, the background will be dark green transparent, and the
    text over it will be some futuristic style font.

*   r_plane.c : ok, the water works : the underwater part is now
	   deformed in a sort of refraction... but there's a
	   problem with the order in which the lines are
	   changed on the screen, I use a very dirty hack for
	   now : copy the screen to a temporary buffer from
	   which I get the lines that are changed by the
	   water... but this is a waste of time. There is a
	   solution , it is boooring, and complicates somewhat
	   the water rendering, anyway, it must be done...


    Thu 26-02-98:
    =============

*   p_user.c, r_main.c, info.c : created a new MT_CHASECAM type,
    and used an mobj with thinker to move the camera: the advantage
    is that the collision are checked against the walls, the camera
    doesn't go through walls no more, and it slides along walls like
    the marine.



    Fri 27-02-98:
    =============

*   p_map.c, p_mobj.c : fixed a little the stand-on-top-of-a-thing...
      Funny little bit: the blood sometimes stay on the head
      of the marine because it does not fall through!!!

*   Still 'thing on thing' problems : if the thing under moves, the
     thing above does not and eventually falls to the ground,
     not an error, but would be better if the thing above
     moved with if some special bit is set, would be fun.


*   p_mobj.c : P_SpawnMob() now P_CheckPosition() to get mobj->ontopz,
    and so spawn the mobj on top of existing mobjs!!! Thus as I've
    tested, multiple objects are stacked one of top another,
    I've made some pyramids of barrels, and then walked on top
    of it! Very funny especialy when you fire a rocket at it.

*   g_game.c : G_InitNewFeatures() : mad some other sprites transparent,
	as people requested : baron,arachno,caco fireballs,
	blood, eye in symbol, lost soul.

*   i_system.c : the ENDOOM textmode end screen is back.



    Sat 28-02-98:
    =============

*   d_main.c, g_game.c, ... : replaced 'fabifabo' by an global variable
     'demoversion' which is tested for backward compatibility.
     Fixed the bug that disabled new features after playing back
     the older demos DEMO1,DEMO2... now G_InitNew() resets the
     new stuff by default.

*   m_menu.c : keypad arrows can be used to move in the menu.

*   thing on thing : getting tired and crazy with that, so I simplified
     and for now, if the 'support' thing move , the things over
     it don't move.

*   m_obj.c, p_map.c : MF_ONGROUND : this flag allows to minimize the
     z movement checks, for things on solid floor and not moving.

     If this bit is not set, ZMovement is always done, thus
     a CheckPosition is always done, which consumes time in
     levels with hundreds of monsters.

     An object which is not on solid floor, eg: an object which
     stands on another one, is always checked for ZMovement,
     thus it's MF_ONGROUND bit is not set.

     This is to ensure that if the 'support' thing moves, the
     thing(s) on it falls to the solid floor when they are no
     more supported.

*   AAARRARHG! I'm bored to death of a bug in map01 : imps at the
     platform near the plasma gun blocks the platform because
     they're stuck in each other as soon as the door is opened...

     This is rare, and due to the new extended thing-on-thing
     possibilities... the fact is: monsters should not occupy
     the same space so the map should not be like that. Point.

     Or the monsters stacks, but then they're blocked into the
     ceiling, same problem.

     FUCK OLE DOOM2 COMPATIBILITY, ITS GETTING ON MY NERVES!!!


I FUCK WASTED ALL MY NIGHT ON THIS SHIT THING-ON-THING PROBLEMS!!!
FUCK FUCK FUCK FUCK FUCK FUCK FUCK FUCK FUCK FUCK FUCK FUUUUUUUCK!!

Thank you for listening.


*   Added a new cheat 'idfly' to fly around levels using jump key.



    Sun 29-02-98:  "finishing touches for update 2"
    =============

*   d_main.c: Fixed detection of Ultimate doom, still : the Utltimate Doom
Startup should be printed , but then I can't check for wad
entries when the title string is printed out...



    Thu 19-03-98:  "At last back to code after 2 weeks of webdesign..."
    =============

    For the bit of history : after release of Legacy v1.12, I started
    out to redesign entirely the site, as we were invited at frag.com.

    I took 2weeks to make the new 'Doom LEGACY' web site, which looks
    quite cool now! Too bad I had to kick out the Leprechauns...

*   p_enemy.c : P_CheckMeleeRange() : quick fix now monsters cant
    attack you in melee if they're not at the same height. No
    more imps attacking at MAP01 if you stand at the top of
    the platform.

*   info.c : corrected the height of most obstacles non-moving things
    as IdSoftware coders didnt bother since you couldnt walk over.
    Mostly: pillars,torches,lamps,trees,candellabra,barrels,piles
    of skulls,poles,twitchingbodys...



    Fri 20-03-98:  "DOOMWORLD vs Legacy..."
    =============

    DOOMWORLD has taken some of my words on DosDoom as a news on their
    site... didnt see the page, not a big issue though.

    Discussed Console addition with Boris. Will be 3 modules for
    real console like in Quake :

 console.c : handles display of console and console text.
 command.c : handles execution of commands and scripts.
	     commands are issued by key bindings, console input,
	     or even by remote server.
 consvar.c : console variables, as Quake does allow for QuakeC
	     to add variables that are editable at the console.
	     Maybe not necessary, are we going to do some Doom-C ?

*   p_user.c : restored repeated jumping only for IDFLY mode.


    Sat 21-03-98:  "Legacy vs Doomworld..."
    =============

*   console.c, consvar.c, command.c : mainly the console works...
  I use a simple translucent green background for now, and use
  the HU FONT for the console font, chars spaced 8 pixels so
  that it looks like a fixed font. Most messages are now
  displayed through the console, just hacked hu_stuff.c to
  do CON_Printf instead of setting some heads up widget.

  Tomorrow: allow console input, draw that console better
  have it gradually come on the screen instead of just on/off..



    Sun 22-03-98:  "Adding command execution to the Console"
    =============

*   console.c : added the responder, input line, ... works great.

*   command.c : lotsa work here, command execution seems to work fine.
	   "wait;wait;wait" sequences work.

*   m_menu.c : temporary disabled KEY_MINUS coz it disables the
	  '_' key for the console... m_menu shoudlnt handle
	  screen resize keys.. to clean up

*   command.c : added vid_nummodes,
		 vid_describemode,
		 vid_describemodes,
		 vid_describecurrentmode,
		 turbo <10-400>

    -turbo cmdline parm is pushed in the command buffer, and executed
when the game starts, it works!

*   command.c : added Command completion �-la-4dos
      eg: type 'vid' then press TAB multiple times, you get all
       possible commands which start with 'vid'.



    Sat 11-04-98:  "Back to the serious stuff.."
    =============

    Too bad, I coded several things these last weeks but didn't update
    this log. Partly because we didn't release the srcs anymore, but
    I should have continued.

    These last days I've been testing the 'perspective correction'
    feature which looks good, but still not enough precise. Also,
    I've kicked out hu_lib.c, and rewritten hu_stuff.c to do just
    what was needed. Good cleanup there.

    Some changes to the console print and hu_stuff handle of messages
    and net chat messages are now print in white colour, which stands
    out from the rest of the console text, so you don't miss it.

*   i_video.c, vid_vesa.c : now frees screen buffers at exit, useless
		       I suppose on most systems but who knows..

*   console.c, command.c : lots of cleanup

*   console.c, g_game.c : now CONS_Responder() toggles the console.

*   all *.c, doomdef.h : doomdef.h now includes the main header files.

*   s_sound.c : added a 'stereoreverse' console variable, still not
    saved to config.

    And now, I really start enjoying that CONS_Printf() ...

*   g_game.c : tell the player name when changing the view with F12

*   p_inter.c : started death messages, 'xx frags yy' fun to code!
	   and 'xx suicides' (kills himself source==target)

    Sun 12-04-1998:
    ===============

    Arranged 'specs.txt' to describe all the changes done to the
    engine with each version of Legacy.

*   info.c : set MF_NOCLIP for MT_PUFF, so it displays right on
	upper & bottom walls. It was clipped by the collision
	check code of mobj thinker because on upper/bottom walls
	the puff thing standed in the middle of 2Sided lines.
	A puff is not solid anyway, and disappears fast.


    Wed 16-04-1998:
    ===============

*   console.c : like Michael Abrash says in his 'black book',
 rewrite from scratch instead of adding fixes and fixes..
 I've started to rewrite the console using a modulo so that
 the console buffer doesnt have to scroll in memory.
 Doesn't work. Now bed.



    Fri 18-04-1998:
    ===============

*   p_map.c : fixed crusher don't crush and cannot pickup under crush
	 ceilings (damn test == should have been <= ).

*   hu_stuff.c : fixed chat input wrap around multiple lines
	 (hu_lib used to do this)

*   wi_stuff.c : quick-fix for scores for the Caveparty..


    Tue 21-04-1998:
    ===============

*   p_inter.c : death messages, basic implementation

*   r_sky.c, g_game.c : call R_SetupSkyDraw to set the right sky
     column drawer, and scale up the old skies. Looks shit.


    Thu 23-04-1998:
    ===============

*   i_system.c : fixed the ENDOOM screen, text cursor at bottom of
	    screen, and uses conio puttext instead of memcpy.

*   console.c : added backward sequential command completion, like
	   4-dos, using shift-tab (was forward only until now).


    Fri 24-04-1998:
    ===============

    Boris made the latest 'join' of our sources, we will keep
    the new network code of Boris separate so that we have two
    upcoming versions of Legacy : they will have the same
    additions but one will include the new net code and will
    be released as a 'network betatest' version.

*   i_sound.c : use MIDI_AUTODETECT so Allegro checks the midi
 setting in the sound.cfg file. DIGMID now can be set through
 the sound.cfg file. The init sound error is printed to
 stderr and can be seen on exit of the game if an error
 occured (like not enough digital voices for DIGMID).

*   d_main.c : removed fflush of stderr so all error msgs are printed
 out on exit. Fflush was to prevent msgs from printing while
 the game screen was initted, but now they are no such msgs
 anymore, further debugging can be printed out to the console.

*   m_menu.c : removed trailing spaces from player name when press
 Enter, so the names looks good in console messages.

*   hu_stuff.c, p_user.c : show dm rankings while in dead view, for
 deathmatch. P_DeathThink() sets 'playerdeadview' which is
 checked by hu_stuff.

*   hu_stuff.c : the dm rankings now display the name of the view
 player in white when looking at a demo, and displays the
 console player name in white when really playing.

*   m_menu.c : finished the testing mode in video menu, at last.

*   m_menu.c : video modes menu, fixed a bug with going left in
 the first modes column, cursor would move to a wrong place
 sometimes.


    Sat 25-04-1998:
    ===============

*   hu_stuff.c, console.c : fixed clearing the hud messages from
 the view borders when playing in a reduced window. Hu_lib
 used to do this before I kicked it out :)

*   console.c, r_plane.c, r_things.c : added con_clipviewtop, clips
 the view when the console is on, so it doesn't draw parts
 of the view that are hidden by the console.

 added drawing of a background console picture like Quake,
 doesn't look as good as translucency, but is faster (clips
 the view), and gives users the chance to customise their
 console appearance.

 added 'background' console command, to choose between the
 translucent background or a picture (resource "CONSBACK")

*   w_wad.h : now contains some resource structure definitions as
 they are found in wad files, added pic_t for flat, non-
 transparent, rectangular block of picture


    Mon 28-04-1998:
    ===============

*   command.c : added saving the console variables where CV_SAVE flag
 is set, to config.cfg

*   command.c : finished the exec command : load a file and push
 it in the command buffer, hard one :)

    m_misc.c : FIL_ReadFile() now appends a zero byte, so that the
 command execution can do strlen() on the text buffer, like
 it does on console commands

    d_main.c : push a "exec config.cfg" command to execute the config
 settings at start of the game!

    Now I have to convert most of the defaults file values to
    console variables and have them in the config.cfg.

    Problem is: not all values are meant to be changed at the console,
    like soundcard, ect.. so default.cfg will probably stay.


    Tue 28-04-1998:
    ===============

*   d_netcmd.c : added cvars for player name and color

*   v_video.c,screen.c,d_main.c : added gamma var,
			     added scr_gamma
 to check when gamma has changed and request a setpalette.

*   r_main.c,screen.c,m_menu.c,d_main.c : added viewsize var,
				     added scr_viewsize

*   m_menu.c : added crosshair var


    Wed 29-04-1998:
    ===============

*   hu_stuff.c : added chatmacro command, cvars, save to config

*   m_menu.c : some tweaks to disable console & menu at the same time,
 should be done better eg: 'routing' keys to either or the two

*   m_menu.c : added invertmouse,autorun,alwaysfreelook vars

*   command.c : wait now takes a value, how many tics to wait,
	   1 tic default

*   d_main.c : flushes config.cfg for game startup, and executes
	 autoexec.cfg at start of Doomloop, now can put
	 ag: map 10 in autoexec.cfg

    Added some other variables for the console


    Thu 30-04-1998:
    ===============

*   Added 5 translucency tables, use the frame upper 16 bits,
    only 3bits now reserved through FF_TRANSMASK to set the
    translucency. Advantage: is per frame, not per thing.

*   Made a brighter 50-50 translucency for fireballs, ect. now
    they look as bright as the original, while still translucent

*   Made the special torches translucency brighter too, used
    it for flaming barrels and da skulls !

*   When power invisibility is running out, it now toggles between
    hi trans and med trans instead of toggleing between trans and
    opaque, only when it is fully finished, the player becomes
    opaque again.

*   The spectres are really hard to see now!

*   quick-n-dirty add command "bloodtime" .. TO FIX FOR NETWORK.


    Sat 02-05-1998:
    ===============

*   started status bar overlay.

*   solidcorpse var

*   made the startup loading screen in 320x200:
    - all printf replaced by CONS_Printf, does printf until the
 console is ready
    - it feels like it loads faster, of course it's an illusion,
 but it's better, this is due to the graphics appeal instead
 of the boring text screen of the game startup, probably.
    - now maybe we can have the Legacy logo there as background,
 and restore the original doom title screens after loading ?


    Sun 03-05-1998: "we got to release soon.."
    ===============

*   the loading screen uses the user default video mode, so it can
    be 640x480 for example, which looks nice!

*   vid_vesa.c : reworked a little the vid commands, I named them
    just like Quake, but why the hell? I won't go on using always
    the same command names as Quake where possible, I don't think
    it's really useful, and then it's getting boring.

    now we have: vid_nummodes,
	    vid_mode	       (set a mode)
	    vid_modelist
	    vid_modeinfo

*   console.c : added con_size var to choose the height of the
	   console panel in percent, eg 50 = half the screen height

*   Started the HIGHCOLOR mode support ! at about 2:00 morning!
    when will it be finished ? :)


    Mon 04-05-1998: "we have to release soon!"
    ===============

*   Still on the hicolor stuff.. reorganised r_draw.c, separated
    r_draw8.c and r_draw16.c, included by r_draw.c


    Wed 06-05-1998: "when are we releasing!!!?"
    ===============

*   test of hicolor : use hicolor colormaps, convert wall & flats at
   loading time, using gradients in it to see all the colours..
   whoaaaa!! totally weird but colourful to the least!

    While looking at the setup of sprites/flats/textures for the
    loading of wad files through console at run time.. I tweaked
    some other related stuff..

*   s_sound, i_sound : removed precache sounds by default, this will
   be useful with runtime loaded wads, to flush sounds that are
   to be replaced, use -precache to precache sounds.

*   r_things : sprites in pwads work!!! I always thought there was
   some real problem but no!! Just disabled some ridiculous
   error msgs that used to quit the game, now they just print
   to the console.


    Fri 08-05-1998: "parrallel coding, Boris with his portable"
    ===============

*   fixed sequential completion for commands and vars.

*   fixed sprites in a pwad, still needs 'S_END' though.. doesnt
    support old dmadds wads, is it worth it? dehacked sprites
    renaming was mutual exclusive with dmadds wad support, kicked
    out dmadds wad support, was it worth it ?

*   made borders for console in translucent mode, not good enough:
    should look more 'metal', but the code is there.

*   lots of little fixes


    Sun 11-05-1998:
    ===============

*   w_wad.c : added support for dynamic loading of wads

*   g_game.c, p_setup.c ... : the 'map' command can load external
  maps! it works, basically !

  TODO: load textures, sprites, sounds at run time

  sounds  : just un-cache them so they get loaded again
  textures: check for TEXTURE1/2 in current wad file,
	    free the arrays, and recalc them
  sprites : from the sprite names, check if sprite are
	    defined in the wad, free arrays, recalc stuff,
	    uncache, free old sprite graphics
	    R_GetColumn will reload the new sprites

  TODO: add dir command to list all wads,demos..

  user easy: 'map' command,
  low level: 'addwad <filename>' add a file to the wad list
	     'remwad <wadnum>'
	     'wads' show active wads & numbers

   ??? find something neat :) !!!


    Mon 11-05-1998: "aaargh! two months! we gotta release!"
    ===============

    Working with Boris to finish a release.


    Fri 15-05-1998: "still not released!!!"
    ===============

    I have broken the support of sprites in pwad, flats in pwad, ect
    with the new dynamic wad loading.. have to fix that for the
    release.

*   p_setup.c : at last fixed flats in pwad, no need for F_END.

    Sat 16-05-1998: "wahoo! flats in pwads finished"
    ===============

*   p_setup.c, p_spec.c : ok, flat in pwads works 100%, no need for
P_START,P_END, accept any number of animated flat sequences
(will add easily new flat sequences, routine is ready)
should work with dynamic loaded wads

*   r_data.c, r_things.c : nearly fixed sprites in pwad!! army of
death dehacked + sprites in pwad (deutex not used), works!!

just some special cases to fix ..


    Sun 17-05-1998:
    ===============

*   vid_vesa.c : night, after work, started removing anti-windowsNT
	    code : use farpoke instead of direct adressing, ect..


    Mon 18-05-1998:
    ===============

*   Added cheat commands, so that dehacked patches don't prevent me
   from cheating !

*   st_stuff.c : fixed postion of status bar overlay in weird
   resolutions 400x300, 512x384.. not perfect.

*   r_things.c : fixed replacing only some frames with sprites in
   pwad, super-clean only 3 lines of code more !!
   Now Army of Darkness works perfeclty!!!

   Works with dmadds wad and empty resources  too!

*   Wohooo! Tested several old wads from dmadds to sprite renaming,
    they all work!

*   Fixed bug in VerifFavoritWeapon switching to  supershotgun in Doom1.


    Tue 19-05-1998:
    ===============

    RELEASE OF LEGACY V1.20 ! AT LAST!

    It was to be release v1.13 but then Boris noted that the second
    number after the decimal point is for bug-fixes.. so this became
    the v1.2 release.

    There will probably follow some updates from v1.21 up to v1.29.

    The log is continued in another file, because my preferred
    Navigator/editor (DOSNAV) likes to cut short too long files
    in the text editor..


***********************************************************************
End of Doom source code change log (v1.0->v1.20) from 'team Legacy'
***********************************************************************