as released 2014-12-12

This commit is contained in:
archive 2014-12-12 00:00:00 +00:00
commit 37d7e0fd43
216 changed files with 20529 additions and 0 deletions

BIN
DATA/AMAZON.LBM Normal file

Binary file not shown.

BIN
DATA/BACKDROP.LBM Normal file

Binary file not shown.

2
DATA/BACKDROP.SCR Normal file
View file

@ -0,0 +1,2 @@
backdrop.dat lpic 0 0 320 99
back2.dat lpic 0 100 320 199

BIN
DATA/BEAST.LBM Normal file

Binary file not shown.

5
DATA/BEAST.SCR Normal file
View file

@ -0,0 +1,5 @@
beast_1.dat DSPRITE 16 16 56 64
beast_2.dat DSPRITE 80 16 56 64
beast_3.dat DSPRITE 144 16 56 64
beast_4.dat DSPRITE 208 16 56 64

BIN
DATA/BLANKMAP.LBM Normal file

Binary file not shown.

BIN
DATA/CHACMOO2.LBM Normal file

Binary file not shown.

BIN
DATA/CHACMOOL.LBM Normal file

Binary file not shown.

BIN
DATA/DOORS1.LBM Normal file

Binary file not shown.

2
DATA/DOORS1.SCR Normal file
View file

@ -0,0 +1,2 @@
door1.dat WALL 2 2 8
door2.dat WALL 11 2 8

BIN
DATA/DP_BPAL.$$$ Normal file

Binary file not shown.

BIN
DATA/DP_CPAL.$$$ Normal file

Binary file not shown.

BIN
DATA/DP_OPAL.$$$ Normal file

Binary file not shown.

BIN
DATA/DP_PREFS Normal file

Binary file not shown.

BIN
DATA/DP_SPAL.$$$ Normal file

Binary file not shown.

BIN
DATA/FIRE.LBM Normal file

Binary file not shown.

BIN
DATA/FLATS1.LBM Normal file

Binary file not shown.

8
DATA/FLATS1.SCR Normal file
View file

@ -0,0 +1,8 @@
f1_1.dat flat 2 2
f1_2.dat flat 11 2
f1_3.dat flat 20 2
f1_4.dat flat 29 2
f1_5.dat flat 2 11
f1_6.dat flat 11 11
f1_7.dat flat 20 11
f1_8.dat flat 29 11

BIN
DATA/FLATS2.LBM Normal file

Binary file not shown.

4
DATA/FLATS2.SCR Normal file
View file

@ -0,0 +1,4 @@
f2_1.dat flat 2 2
f2_2.dat flat 11 2
f2_3.dat flat 2 11
f2_4.dat flat 11 11

BIN
DATA/FONT1.LBM Normal file

Binary file not shown.

2
DATA/FONT1.SCR Normal file
View file

@ -0,0 +1,2 @@
font1.dat font 32 126

4
DATA/GETMAP.BAT Normal file
View file

@ -0,0 +1,4 @@
..\sgrab\sgrab map
..\idlink\idlink -b
copy todd3d.tod ..\source
cd ..\source

20
DATA/GRABALL.BAT Normal file
View file

@ -0,0 +1,20 @@
..\sgrab\sgrab doors1
..\sgrab\sgrab walls1
..\sgrab\sgrab walls2
..\sgrab\sgrab walls3
..\sgrab\sgrab walls4
..\sgrab\sgrab walls5
..\sgrab\sgrab walls6
..\sgrab\sgrab sprite1
..\sgrab\sgrab sprite2
..\sgrab\sgrab sprite3
..\sgrab\sgrab sprite4
..\sgrab\sgrab sprite5
..\sgrab\sgrab flats1
..\sgrab\sgrab flats2
..\sgrab\sgrab playscr
..\sgrab\sgrab weapons
..\sgrab\sgrab font1
..\sgrab\sgrab map
..\lights\lights playscr.lbm 59
..\idlink\idlink -b

149
DATA/LINKFILE.ILN Normal file
View file

@ -0,0 +1,149 @@
todd3d.tod
palette.dat palette
lights.dat lights
$OPENCOMP map
map1.dat map
map2.dat
map3.dat
map4.dat
map5.dat
map6.dat
map7.dat
map8.dat
map9.dat
map10.dat
$OPENCOMP playscr
playscr.dat playscreen
$OPENCOMP font1
font1.dat font
;===============
; rendering data
;===============
; sprites
LABEL startsprites
$OPENCOMP sprite1
sp1_1.dat brazier
sp1_2.dat
sp1_3.dat
sp1_4.dat
$OPENCOMP sprite2
sp2_1.dat chacmool
$OPENCOMP sprite3
sp3_1.dat snake
$OPENCOMP sprite4
sp4_1.dat urn1
sp4_2.dat urn2
sp4_3.dat bowl
sp4_4.dat cup
sp4_5.dat jade1
sp4_6.dat ankh
$OPENCOMP sprite5
sp5_1.dat atk1
sp5_2.dat
sp5_3.dat
sp5_4.dat atk1_mx
sp5_5.dat exp1
sp5_6.dat
sp5_7.dat exp1_mx
LABEL endsprites
$OPENCOMP weapons
weapons.dat weapons
; flat floors / ceilings
LABEL startflats
$OPENCOMP flats1
f1_1.dat ; Stone ceiling
f1_2.dat ; wood floor
f1_3.dat
f1_4.dat
f1_5.dat
f1_6.dat
f1_7.dat
f1_8.dat
$OPENCOMP flats2
f2_1.dat
f2_2.dat
f2_3.dat
f2_4.dat
LABEL endflats
; walls
LABEL startwalls
$OPENCOMP walls1
w1_1.dat
w1_2.dat
w1_3.dat
w1_4.dat
w1_5.dat
w1_6.dat
w1_7.dat
w1_8.dat
$OPENCOMP walls2
w1_9.dat
w1_10.dat
w1_11.dat
w1_12.dat
w1_13.dat
w1_14.dat
w1_15.dat
w1_16.dat
$OPENCOMP walls3
w1_17.dat
w1_18.dat
w1_19.dat
w1_20.dat
w1_21.dat
w1_22.dat
w1_23.dat
w1_24.dat
$OPENCOMP walls4
w1_25.dat
w1_26.dat
w1_27.dat
w1_28.dat
w1_29.dat
w1_30.dat
w1_31.dat
w1_32.dat
$OPENCOMP walls5
w1_33.dat
w1_34.dat
w1_35.dat
w1_36.dat
w1_37.dat
w1_38.dat
w1_39.dat
w1_40.dat
$OPENCOMP walls6
w1_41.dat
w1_42.dat
w1_43.dat
w1_44.dat
w1_45.dat
w1_46.dat
w1_47.dat
w1_48.dat
; doors (doors are the same data as walls)
$OPENCOMP doors1
door1.dat wolfdoor
door2.dat wooddoor
LABEL endwalls

BIN
DATA/MAP.LBM Normal file

Binary file not shown.

10
DATA/MAP.SCR Normal file
View file

@ -0,0 +1,10 @@
map1.dat raw 0 0 64 64
map2.dat raw 64 0 64 64
map3.dat raw 128 0 64 64
map4.dat raw 192 0 64 64
map5.dat raw 256 0 64 64
map6.dat raw 0 64 64 64
map7.dat raw 64 64 64 64
map8.dat raw 128 64 64 64
map9.dat raw 192 64 64 64
map10.dat raw 0 64 64 64

BIN
DATA/MAP2.LBM Normal file

Binary file not shown.

BIN
DATA/MENU.LBM Normal file

Binary file not shown.

2
DATA/MENU.SCR Normal file
View file

@ -0,0 +1,2 @@
menu.dat lpic 16 16 184 104
binky.dat lpic 208 16 24 24

BIN
DATA/NAZI.LBM Normal file

Binary file not shown.

9
DATA/NAZI.SCR Normal file
View file

@ -0,0 +1,9 @@
nazi_1.dat DSPRITE 37 32 22 48
nazi_2.dat DSPRITE 113 32 17 48
nazi_3.dat DSPRITE 187 32 14 48
nazi_4.dat DSPRITE 255 32 15 48
nazi_5.dat DSPRITE 38 104 21 48
nazi_6.dat DSPRITE 113 104 16 48
nazi_7.dat DSPRITE 183 104 14 48
nazi_8.dat DSPRITE 255 104 17 48

BIN
DATA/PALETTE.PCX Normal file

Binary file not shown.

BIN
DATA/PLAYSCR.LBM Normal file

Binary file not shown.

1
DATA/PLAYSCR.SCR Normal file
View file

@ -0,0 +1 @@
playscr.dat lpic 0 0 320 200

BIN
DATA/RGRID8.LBM Normal file

Binary file not shown.

1
DATA/SHARK.SCR Normal file
View file

@ -0,0 +1 @@
ogre_1.dat DSPRITE 16 16 37 55

BIN
DATA/SOFT3D.ICN Normal file

Binary file not shown.

BIN
DATA/SPRITE1.LBM Normal file

Binary file not shown.

5
DATA/SPRITE1.SCR Normal file
View file

@ -0,0 +1,5 @@
sp1_1.dat DSPRITE 24 19 48 61
sp1_2.dat DSPRITE 96 19 48 61
sp1_3.dat DSPRITE 168 19 48 61
sp1_4.dat DSPRITE 240 19 48 61

BIN
DATA/SPRITE2.LBM Normal file

Binary file not shown.

2
DATA/SPRITE2.SCR Normal file
View file

@ -0,0 +1,2 @@
sp2_1.dat DSPRITE 19 16 58 64

BIN
DATA/SPRITE3.LBM Normal file

Binary file not shown.

2
DATA/SPRITE3.SCR Normal file
View file

@ -0,0 +1,2 @@
sp3_1.dat DSPRITE 16 16 64 64

BIN
DATA/SPRITE4.LBM Normal file

Binary file not shown.

7
DATA/SPRITE4.SCR Normal file
View file

@ -0,0 +1,7 @@
sp4_1.dat DSPRITE 29 36 34 44
sp4_2.dat DSPRITE 105 36 34 44
sp4_3.dat DSPRITE 175 56 37 18
sp4_4.dat DSPRITE 254 53 17 19
sp4_5.dat DSPRITE 25 108 47 44
sp4_6.dat DSPRITE 111 101 23 49

BIN
DATA/SPRITE5.LBM Normal file

Binary file not shown.

8
DATA/SPRITE5.SCR Normal file
View file

@ -0,0 +1,8 @@
sp5_1.dat DSPRITE 16 16 28 28
sp5_2.dat DSPRITE 52 16 28 28
sp5_3.dat DSPRITE 16 52 28 28
sp5_4.dat DSPRITE 52 52 28 28
sp5_5.dat DSPRITE 88 16 36 36
sp5_6.dat DSPRITE 160 16 48 48
sp5_7.dat DSPRITE 232 16 48 48

200
DATA/TEMP Normal file
View file

@ -0,0 +1,200 @@
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0
atemp 00000000 btemp 0 ctemp 00000000 dtemp 0

62
DATA/TODD.ILN Normal file
View file

@ -0,0 +1,62 @@
soft3d.dat
palette.dat palette
lights.dat lights
$OPENCOMP map
map1.dat map
map2.dat
map3.dat
map4.dat
map5.dat
map6.dat
map7.dat
map8.dat
map9.dat
$OPENCOMP playscr
toddscr.dat playscreen
$OPENCOMP font1
font1.dat font
;===============
; rendering data
;===============
; sprites
LABEL startsprites
$OPENCOMP nazi
nazi_1.dat nazi
nazi_2.dat
nazi_3.dat
nazi_4.dat
nazi_5.dat
nazi_6.dat
nazi_7.dat
nazi_8.dat
LABEL endsprites
; flat floors / ceilings
LABEL startflats
$OPENCOMP flats1
f1_1.dat ; Stone ceiling
f1_2.dat ; wood floor
LABEL endflats
; walls
LABEL startwalls
$OPENCOMP walls1
w1_1.dat ; green brick
w1_2.dat ; wood slats
; doors (doors are the same data as walls)
$OPENCOMP doors1
door1.dat wolfdoor
LABEL endwalls

BIN
DATA/TODD3D.ICN Normal file

Binary file not shown.

2
DATA/TORCHES Normal file
View file

@ -0,0 +1,2 @@
torch_1.dat DSPRITE 16 17 19 47
torch_2.dat DSPRITE 48 17 19 47

BIN
DATA/TROLL.LBM Normal file

Binary file not shown.

6
DATA/TROLL.SCR Normal file
View file

@ -0,0 +1,6 @@
troll_1.dat DSPRITE 26 16 24 64
troll_2.dat DSPRITE 74 16 24 64
troll_3.dat DSPRITE 122 16 24 64
troll_4.dat DSPRITE 170 16 24 64
troll_5.dat DSPRITE 208 16 48 64

BIN
DATA/TROLL2.LBM Normal file

Binary file not shown.

4
DATA/TROLL2.SCR Normal file
View file

@ -0,0 +1,4 @@
troll_6.dat DSPRITE 16 16 56 64
troll_7.dat DSPRITE 80 16 56 64
troll_8.dat DSPRITE 144 16 56 64

BIN
DATA/WALLS1.LBM Normal file

Binary file not shown.

8
DATA/WALLS1.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_1.dat wall 2 2 8
w1_2.dat wall 10 2 8
w1_3.dat wall 18 2 8
w1_4.dat wall 26 2 8
w1_5.dat wall 2 10 8
w1_6.dat wall 10 10 8
w1_7.dat wall 18 10 8
w1_8.dat wall 26 10 8

BIN
DATA/WALLS2.LBM Normal file

Binary file not shown.

8
DATA/WALLS2.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_9.dat wall 2 2 8
w1_10.dat wall 10 2 8
w1_11.dat wall 18 2 8
w1_12.dat wall 26 2 8
w1_13.dat wall 2 10 8
w1_14.dat wall 10 10 8
w1_15.dat wall 18 10 8
w1_16.dat wall 26 10 8

BIN
DATA/WALLS3.LBM Normal file

Binary file not shown.

8
DATA/WALLS3.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_17.dat wall 2 2 8
w1_18.dat wall 11 2 8
w1_19.dat wall 20 2 8
w1_20.dat wall 29 2 8
w1_21.dat wall 2 11 8
w1_22.dat wall 11 11 8
w1_23.dat wall 20 11 8
w1_24.dat wall 29 11 8

BIN
DATA/WALLS4.LBM Normal file

Binary file not shown.

8
DATA/WALLS4.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_25.dat wall 2 2 8
w1_26.dat wall 11 2 8
w1_27.dat wall 20 2 8
w1_28.dat wall 29 2 8
w1_29.dat wall 2 11 8
w1_30.dat wall 11 11 8
w1_31.dat wall 20 11 8
w1_32.dat wall 29 11 8

BIN
DATA/WALLS5.LBM Normal file

Binary file not shown.

8
DATA/WALLS5.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_33.dat wall 2 2 8
w1_34.dat wall 11 2 8
w1_35.dat wall 20 2 8
w1_36.dat wall 29 2 8
w1_37.dat wall 2 11 8
w1_38.dat wall 11 11 8
w1_39.dat wall 20 11 8
w1_40.dat wall 29 11 8

BIN
DATA/WALLS6.LBM Normal file

Binary file not shown.

8
DATA/WALLS6.SCR Normal file
View file

@ -0,0 +1,8 @@
w1_41.dat wall 2 2 8
w1_42.dat wall 11 2 8
w1_43.dat wall 20 2 8
w1_44.dat wall 29 2 8
w1_45.dat wall 2 11 8
w1_46.dat wall 11 11 8
w1_47.dat wall 20 11 8
w1_48.dat wall 29 11 8

BIN
DATA/WEAPON2.LBM Normal file

Binary file not shown.

BIN
DATA/WEAPONS.LBM Normal file

Binary file not shown.

1
DATA/WEAPONS.SCR Normal file
View file

@ -0,0 +1 @@
weapons.dat lpic 103 159 128 32

BIN
DATA/_BACKUP_.LBM Normal file

Binary file not shown.

BIN
DP_PREFS Normal file

Binary file not shown.

5
IDLINK/BACKUP.BAT Normal file
View file

@ -0,0 +1,5 @@
copy *.c %1
copy *.asm %1
copy *.h %1
copy *.equ %1
copy *.inc %1

1
IDLINK/D.BAT Normal file
View file

@ -0,0 +1 @@
td386 idlink

928
IDLINK/IDLINK.C Normal file
View file

@ -0,0 +1,928 @@
#define VERSION "0.4"
/*
=============================================================================
IDLINK
by John Carmack
To do
-----
Allow .. in filenames
lump compression
allow block alignment for dynamic paging
=============================================================================
*/
#include <dir.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <io.h>
#include <dos.h>
#include <ctype.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <bios.h>
#include <alloc.h>
#include "\miscsrc\types.h"
#include "\miscsrc\minmisc.h"
#include "\miscsrc\script.h"
#pragma hdrstop
typedef struct
{
char id[4];
int numlumps;
long headeroffset;
int headerlength;
} compprologue_t;
typedef struct
{
char name[14];
int lumptype; // the command number used to produce the lump
long dataoffset;
long datalength;
} compheader_t;
typedef enum
{
co_uncompressed,
co_rle,
co_rlew,
co_huffman,
co_carmacized
} compress_t;
typedef struct
{
long filepos; // debug: make these three byte values?
long size;
unsigned nameofs;
compress_t compress;
} lumpinfo_t;
typedef struct
{
int numlumps;
long infotableofs;
long infotablesize;
} fileinfo_t;
fileinfo_t fileinfo,oldfileinfo;
lumpinfo_t *lumpinfo,*oldlumpinfo;
int *contentbuffer,*oldcontent;
char *content_p;
boolean incompfile;
int comphandle;
compprologue_t compprologue;
compheader_t *compheader,*compheader_p;
char filename[MAXPATH];
char filepath[MAXPATH];
char sourcepath[MAXPATH];
char destpath[MAXPATH];
char scriptfilename[MAXPATH];
char datafilename[MAXPATH];
char contentfilename[MAXPATH];
char compfilepath[MAXPATH];
byte *lumpalloc; // for lumpinfo and the names
char *name_p;
int datahandle;
int filescopied;
boolean fullbuild;
unsigned long oldtime; // time stamp of old file (bit fields)
unsigned long newtime;
/*
output filename
; any line starting with a non alphanumeric char is a comment
filename [-compression] [lumpname]
LABEL [lumpname]
idlink [-b][-path FILENAME] scriptfile
put in a SPARSE command
*/
/*
=============================================================================
GENERIC FUNCTIONS
=============================================================================
*/
int SafeOpenWrite (char *filename)
{
int handle;
handle = open(filename,O_RDWR | O_BINARY | O_CREAT | O_TRUNC
, S_IREAD | S_IWRITE);
if (handle == -1)
MS_Quit ("Error opening %s: %s\n",filename,strerror(errno));
return handle;
}
int SafeOpenRead (char *filename)
{
int handle;
handle = open(filename,O_RDONLY | O_BINARY);
if (handle == -1)
MS_Quit ("Error opening %s: %s\n",filename,strerror(errno));
return handle;
}
void SafeRead (int handle, void far *buffer, unsigned count)
{
unsigned iocount;
_dos_read (handle,buffer,count,&iocount);
if (iocount != count)
MS_Quit ("File read failure\n");
}
void SafeWrite (int handle, void far *buffer, unsigned count)
{
unsigned iocount;
_dos_write (handle,buffer,count,&iocount);
if (iocount != count)
MS_Quit ("File write failure\n");
}
void far *SafeMalloc (long size)
{
void far *ptr;
ptr = farmalloc (size);
if (!ptr)
MS_Quit ("Malloc failure for %l bytes\n",size);
return ptr;
}
/*
=============================================================================
COPOSITE FILE STUFF
=============================================================================
*/
/*
=================
=
= OpenComposite
=
=================
*/
void OpenComposite (void)
{
char *str;
if (incompfile)
{
close (comphandle);
free (compheader);
}
//
// get and qualify composite data file name
//
GetToken (false);
for (str = token ; *str ; str++)
if (*str == '.')
break;
if (!*str)
strcat (str,".DAT");
if (token[0] == '\\')
strcpy (compfilepath,token);
else
{
strcpy (compfilepath,sourcepath);
strcat (compfilepath,token);
}
//
// open it and read in header
//
comphandle = SafeOpenRead (compfilepath);
SafeRead (comphandle,&compprologue,sizeof(compprologue));
if (strncmp(compprologue.id,"SGRB",4))
MS_Quit ("Composite file %s doesn't have SGRB id\n",compfilepath);
compheader = SafeMalloc (compprologue.headerlength);
lseek (comphandle,compprologue.headeroffset,SEEK_SET);
SafeRead (comphandle,compheader,compprologue.headerlength);
getftime(comphandle,(struct ftime *)&newtime);
incompfile = true;
}
/*
=================
=
= CloseComposite
=
=================
*/
void CloseComposite (void)
{
if (!incompfile)
MS_Quit ("$CLOSECOMP issued without an open composite file\n");
close (comphandle);
free (compheader);
incompfile = false;
}
/*
=============================================================================
IDLINK FUNCTIONS
=============================================================================
*/
/*
===================
=
= QualifyFilename
=
===================
*/
void QualifyFilename (void)
{
if (incompfile)
{
if (filename[0] == '\\' || strlen(filename)>13)
MS_Quit ("Illegal comp file member name: %s\n",filename);
strcpy (filepath,compfilepath);
strcat (filepath,":");
strcat (filepath,filename);
return;
}
if (filename[0] == '\\')
strcpy (filepath,filename);
else
{
strcpy (filepath,sourcepath);
strcat (filepath,filename);
}
}
/*
=================
=
= ReadOldFile
=
= Tries to read in info from old file.
= If there is a problem, a full rebuild will be specified
=
=================
*/
void ReadOldFile (void)
{
int iocount,size;
int handle;
//
// open and read data file
//
datahandle = open(datafilename,O_RDWR | O_BINARY);
if (datahandle == -1)
{
printf ("No current file to do a partial build from. Rebuilding.\n");
fullbuild = true;
return;
}
iocount = read (datahandle,&oldfileinfo,sizeof(oldfileinfo));
if (iocount != sizeof(oldfileinfo))
{
printf ("Couldn't read old fileinfo. Rebuilding.\n");
close (datahandle);
fullbuild = true;
return;
}
size = oldfileinfo.infotablesize;
oldlumpinfo = malloc (size);
if (!oldlumpinfo)
{
printf ("Couldn't allocate %u bytes for oldinfotable. Rebuilding.\n"
,size);
close (datahandle);
fullbuild = true;
return;
}
lseek (datahandle,oldfileinfo.infotableofs,SEEK_SET);
iocount = read (datahandle , oldlumpinfo, size);
if (iocount != size)
{
printf ("Couldn't read old fileinfo. Rebuilding.\n");
close (datahandle);
fullbuild = true;
return;
}
//
// get timestamp
//
getftime(datahandle,(struct ftime *)&oldtime);
//
// load in the content file
//
handle = open(contentfilename,O_RDWR | O_BINARY);
if (handle == -1)
{
printf ("No content file. Rebuilding.\n");
close (datahandle);
fullbuild = true;
return;
}
size = filelength (handle);
oldcontent = malloc (size);
if (!oldcontent)
{
printf ("Couldn't allocate %u bytes for oldcontent. Rebuilding.\n"
,size);
close (handle);
close (datahandle);
fullbuild = true;
return;
}
iocount = read (handle,oldcontent,size);
if (iocount != size)
{
printf ("Couldn't read old content file. Rebuilding.\n");
close (handle);
close (datahandle);
fullbuild = true;
return;
}
}
/*
===================
=
= ParseScript
=
===================
*/
void ParseScript (void)
{
char *fname_p;
//
// load the script file into memory
//
LoadScriptFile (scriptfilename);
incompfile = false;
//
// get the output filename
//
GetToken (true);
strcpy (datafilename,destpath);
strcat (datafilename,token);
//
// the content file holds a list of the pathnames used to build the
// data file. Used for future makes
//
strcpy (contentfilename,datafilename);
fname_p = contentfilename+strlen(contentfilename);
while ( *fname_p != '.' )
if (--fname_p == datafilename)
{ // filename didn't have an extension
fname_p = contentfilename+strlen(contentfilename);
break;
}
strcpy (fname_p,".ICN");
printf ("Data file : %s\n",datafilename);
printf ("Content file : %s\n",contentfilename);
if (!fullbuild)
ReadOldFile ();
if (fullbuild)
{
unlink (datafilename);
datahandle = open(datafilename,O_RDWR | O_BINARY | O_CREAT, S_IREAD | S_IWRITE);
if (datahandle == -1)
MS_Quit ("Error opening data file: %s\n",strerror(errno));
}
//
// count the lumps in the script
//
fileinfo.numlumps = 0;
do
{
while (TokenAvailable ()) // skip to the end of line
GetToken (false);
GetToken (true); // get the next token
if (!endofscript && token[0] != '$') // don't count commands
fileinfo.numlumps++;
} while (!endofscript);
printf ("%i lumps in output file\n",fileinfo.numlumps);
//
// allocate space for the lump directory and names
//
lumpalloc = malloc (0xfff0);
if (!lumpalloc)
MS_Quit ("Couldn't allocate lump directory!\n");
lumpinfo = (lumpinfo_t *) (lumpalloc + 16-FP_OFF(lumpalloc));
name_p = (char *)(lumpinfo + fileinfo.numlumps);
//
// allocate space for the content file
//
contentbuffer = malloc (0xfff0);
if (!contentbuffer)
MS_Quit ("Couldn't allocate lump directory!\n");
content_p = (char *)(contentbuffer + fileinfo.numlumps);
*content_p++ = 0; // in case the first lump is a label
//
// position the file pointer to begin writing data
//
if (fullbuild)
// leave space in the data file for the header
lseek (datahandle,sizeof(fileinfo),SEEK_SET);
else
// go to the end of the file
lseek (datahandle,filelength (datahandle),SEEK_SET);
}
/*
===================
=
= CopyFiles
=
===================
*/
#define BUFFERSIZE 0xfff0
void CopyFiles (void)
{
int i;
int lump,oldlump;
int inputhandle;
long size;
char *buffer,*oldname_p;
filescopied = 0;
script_p = scriptbuffer;
GetToken (true); // skip output name
buffer = malloc (BUFFERSIZE);
for (lump=0 ; lump<fileinfo.numlumps ; lump++)
{
memset (&lumpinfo[lump],0,sizeof(lumpinfo[0]));
//
// check for abort out
//
if ( (bioskey(1)&0xff) == 27)
{
bioskey (0);
fprintf (stderr,"\nAborted.");
exit (1);
}
//
// get file to copy or label
//
GetToken (true);
if (token[0] == '$')
{
//
// link commands
//
lump--; // this line isn't a lump
if (!strcmpi(token,"$OPENCOMP") )
{
OpenComposite ();
continue;
}
if (!strcmpi(token,"$CLOSECOMP") )
{
CloseComposite ();
continue;
}
MS_Quit ("Unrocognized command %s\n",token);
}
strcpy (filename,token);
//
// check for a lump name
//
if (TokenAvailable ())
{
GetToken (false);
lumpinfo[lump].nameofs = name_p-(char *)lumpinfo;
strcpy (name_p,token);
name_p += strlen(token)+1;
}
else
lumpinfo[lump].nameofs = 0;
//
// deal with labels
//
if (strcmpi(filename,"LABEL") == 0)
{
// point the content listing at the previous 0
contentbuffer[lump] = content_p-1 - (char *)contentbuffer;
if (lumpinfo[lump].nameofs)
printf ("%4i is LABEL: %s\n",lump,token);
else
printf ("%4i is a LABEL\n",lump);
continue;
}
//
// qualify the filename and add it to the content list
//
QualifyFilename ();
contentbuffer[lump] = content_p - (char *)contentbuffer;
strcpy (content_p,filepath);
content_p += strlen(filepath)+1;
//
// open the source file
//
if (incompfile)
{
//
// look for the filename in the comp file header
//
for (i=0;i<compprologue.numlumps;i++)
if (!strcmp (filename,compheader[i].name) )
break;
if (i == compprologue.numlumps)
MS_Quit ("lump %s is not in comp file %s\n"
,filename,compfilepath);
compheader_p = compheader+i;
}
else
{
//
// open the file on disk
//
inputhandle = open(filepath,O_RDONLY | O_BINARY);
if (inputhandle == -1)
MS_Quit ("Error opening data file %s: %s\n"
,filepath,strerror(errno));
}
//
// if partial build, see if the file is present in
// old file and check time
//
if (!fullbuild)
{
for (oldlump=0 ; oldlump<oldfileinfo.numlumps ; oldlump++)
{
oldname_p = (char *)oldcontent + oldcontent[oldlump];
if (strcmp(filepath , oldname_p) == 0)
break;
}
if (oldlump != oldfileinfo.numlumps)
{
if (!incompfile)
getftime(inputhandle,(struct ftime *)&newtime);
if ( newtime <= oldtime)
{
//
// use the old information
//
lumpinfo[lump].filepos = oldlumpinfo[oldlump].filepos;
lumpinfo[lump].size = oldlumpinfo[oldlump].size;
lumpinfo[lump].compress = oldlumpinfo[oldlump].compress;
if (!incompfile)
close (inputhandle);
continue; // done with lump
}
}
}
//
// copy the file
//
filescopied++;
if (incompfile)
{
lseek (comphandle,compheader_p->dataoffset,SEEK_SET);
size = compheader_p->datalength;
}
else
size = filelength (inputhandle);
printf ("%4i = %s (%lu bytes)\n"
,lump,filepath,size);
lumpinfo[lump].filepos = tell(datahandle);
lumpinfo[lump].size = size;
lumpinfo[lump].compress = co_uncompressed;
do
{
read (inputhandle,buffer,BUFFERSIZE);
if (size < BUFFERSIZE)
write (datahandle,buffer,size);
else
write (datahandle,buffer,BUFFERSIZE);
size -= BUFFERSIZE;
} while (size > 0);
if (!incompfile)
close (inputhandle);
}
free (buffer);
}
/*
===================
=
= WriteDirectory
=
===================
*/
void WriteDirectory (void)
{
//
// write lumpinfo
//
fileinfo.infotableofs = tell(datahandle);
fileinfo.infotablesize = name_p - (char *)lumpinfo;
write (datahandle,lumpinfo,fileinfo.infotablesize);
//
// write fileinfo
//
lseek (datahandle,0,SEEK_SET);
write (datahandle,&fileinfo,sizeof(fileinfo));
close (datahandle);
}
/*
===================
=
= WriteContentFile
=
===================
*/
void WriteContentFile (void)
{
int handle,size,iocount;
unlink (contentfilename);
handle = open(contentfilename,O_RDWR | O_BINARY | O_CREAT, S_IREAD | S_IWRITE);
if (handle == -1)
MS_Quit ("Error opening content file: %s\n",strerror(errno));
size = content_p - (char *)contentbuffer;
iocount = write (handle,contentbuffer,size);
if (iocount != size)
MS_Quit ("Write error on content file\n");
close (handle);
}
/*
===================
=
= main
=
===================
*/
int main (void)
{
int parmnum,parmsleft;
printf ("\nIDLINK "VERSION" by John Carmack, copyright (c) 1992 Id Software\n");
parmsleft = _argc;
//
// check for help
//
if (MS_CheckParm ("?"))
{
printf (
"Usage: idlink [-b] [-source path] [-dest path] [-script scriptfile]\n\n"
"-b Force a full rebuild of the file, rather than a file\n"
" bulking partial update\n"
"\n"
"-source path To place the source for the files in another directory\n"
"\n"
"-dest path To place the linked file in another directory\n"
"\n"
"-script file The script name defaults to LINKFILE.ILN if not specified\n"
);
exit (1);
}
//
// check for full or partial build
//
if (MS_CheckParm ("b"))
{
printf ("Full rebuild\n");
fullbuild = true;
parmsleft--;
}
else
{
printf ("Partial make (file size may increase, use -b to rebuild)\n");
fullbuild = false;
}
//
// get source directory for data files
//
parmnum = MS_CheckParm ("source");
if (parmnum)
{
strcpy (sourcepath,_argv[parmnum+1]);
parmsleft -= 2;
}
else
{
strcpy(sourcepath, "X:\\");
sourcepath[0] = 'A' + getdisk();
getcurdir(0, sourcepath+3);
}
if (sourcepath[strlen(sourcepath)-1] != '\\')
strcat (sourcepath,"\\");
printf ("Source directory : %s\n",sourcepath);
//
// get destination directory for link file
//
parmnum = MS_CheckParm ("dest");
if (parmnum)
{
strcpy (destpath,_argv[parmnum+1]);
parmsleft -= 2;
}
else
{
strcpy(destpath, "X:\\");
destpath[0] = 'A' + getdisk();
getcurdir(0, destpath+3);
}
if (destpath[strlen(destpath)-1] != '\\')
strcat (destpath,"\\");
printf ("Destination directory : %s\n",destpath);
//
// get script file
//
parmnum = MS_CheckParm ("script");
if (parmnum)
{
strcpy (scriptfilename,_argv[parmnum+1]);
parmsleft -= 2;
}
else
{
strcpy(scriptfilename, "X:\\");
scriptfilename[0] = 'A' + getdisk();
getcurdir(0, scriptfilename+3);
strcat (scriptfilename,"\\LINKFILE.ILN");
}
printf ("Script file : %s\n",scriptfilename);
if (parmsleft != 1)
MS_Quit ("Improper parameters. IDLINK -? for help.\n");
//
// start doing stuff
//
ParseScript ();
CopyFiles ();
if (filescopied)
{
WriteDirectory ();
WriteContentFile ();
}
else
{
close (datahandle);
}
printf ("\n%u files copied.\n",filescopied);
return 0;
}

BIN
IDLINK/IDLINK.DSK Normal file

Binary file not shown.

BIN
IDLINK/IDLINK.EXE Normal file

Binary file not shown.

BIN
IDLINK/IDLINK.PRJ Normal file

Binary file not shown.

41
IDLINK/IDLINK.TXT Normal file
View file

@ -0,0 +1,41 @@
IDLINK DOCUMENTATION
--------------------
idlink [-b] [-source path] [-dest path] [-script scriptfile]
-b Force a full rebuild of the file, rather than a file
bulking partial update
-source path To place the source for the files in another directory
-dest path To place the linked file in another directory
-script file The script name defaults to LINKFILE.ILN if not specified
Script file format:
; Comments can be uses at the beginning of a line, or after a command's parms
; whitespace can be introduced anywhere, but a command cannot cross lines
outputfilename ; must be the first token of the file
filename [labelname] ; adds filename to the data file, possibly with label
$OPENCOMP filename ; opens a composite data file. Filenames after this
; are assumed to be in the composit file
$CLOSECOMP ; Closes the open composite file. Files after this
; are assumed to be seperate files. You can issue
; multiple $OPENCOMPs without $CLOSECOMP
LABEL labelname ; inserts a label on an empty lump
Idlink generates the output linked file, and a file with the same base and
a content file with a .ICN (Id CoNtent file) extension. This file holds the
pathnames and composite files for each of the lumps. This allows the partial
linking to find the correct data even if you rearrange the link script. You
can delete this file whenever you want, it will just force a full rebuild.
During a partial link, if a lump has grown it will be added on to the end of
the file, leaving wasted space behind. You should periodically use the -B
option to force a rebuild from scratch.

6
IDLINK/WALLS1.SCR Normal file
View file

@ -0,0 +1,6 @@
COMPOSITE
w1_1.dat wall 2 2 10
w1_2.dat wall 11 2 6
w1_3.dat wall 20 2 8
w1_4.dat wall 29 2 12

164
LIGHTS/LIGHTS.C Normal file
View file

@ -0,0 +1,164 @@
#include <string.h>
#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <mem.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <io.h>
typedef unsigned char byte;
unsigned NUMLIGHTS;
byte palette[768];
byte far lightpalette[254][256];
/*
=====================
=
= RF_BuildLights
=
= 0 is full palette
= NUMLIGHTS and NUMLIGHTS+1 are all black
=
=====================
*/
void RF_BuildLights (void)
{
int i,l,c,test,table;
int red,green,blue;
int dist,bestdist,rdist,gdist,bdist,bestcolor;
byte *palptr, *palsrc;
byte far *screen;
screen = MK_FP(0xa000,0);
for (l=0;l<NUMLIGHTS;l++)
{
//printf ("%i.",NUMLIGHTS-l);
palsrc = palette;
for (c=0;c<256;c++)
{
red = *palsrc++;
green = *palsrc++;
blue = *palsrc++;
red = (red*(NUMLIGHTS-l)+NUMLIGHTS/2)/NUMLIGHTS;
green = (green*(NUMLIGHTS-l)+NUMLIGHTS/2)/NUMLIGHTS;
blue = (blue*(NUMLIGHTS-l)+NUMLIGHTS/2)/NUMLIGHTS;
// find the closest color
// TML -> added 11-12-94
// Allows last 16 palette entries to be unafected
// by shading and thus available for lighted tiles
// such as flames, lamps, etc.
if (c < 248)
{
palptr = palette;
bestdist = 32000;
for (test=0;test<256;test++)
{
rdist = (int)*palptr++ - red;
gdist = (int)*palptr++ - green;
bdist = (int)*palptr++ - blue;
dist = rdist*rdist + gdist*gdist + bdist*bdist;
if (dist<bestdist)
{
bestdist=dist;
bestcolor = test;
}
}
}
else
bestcolor = c;
lightpalette[l][c] = bestcolor;
}
_fmemcpy (screen,lightpalette[l],256);
screen+=320;
_fmemcpy (screen,lightpalette[l],256);
screen+=320;
_fmemcpy (screen,lightpalette[l],256);
screen+=320;
}
printf ("\n");
}
void extern LoadLBM(char *filename,int scrwidth,int graphflag);
/*
====================
=
= main
=
====================
*/
int main(int argc,char **argv)
{
int i,j,loop,handle;
unsigned writen;
if (argc != 3)
{
printf ("lights picture.lbm lighttables\n");
return 1;
}
LoadLBM(argv[1],1,1);
_ES = FP_SEG(palette);
_DX = FP_OFF(palette);
_BX = 0;
_CX = 0x100;
_AX = 0x1017;
geninterrupt(0x10); // get default palette
//
// write palette
//
if ( (handle = open("palette.dat", O_BINARY | O_WRONLY | O_CREAT |
O_TRUNC,S_IREAD | S_IWRITE) ) == -1)
{
perror ("Error opening output palette.dat");
return 1;
}
write (handle,palette,sizeof(palette));
close(handle);
//
// write light sources
//
// printf ("Calculating diminished palettes...\n");
NUMLIGHTS = atoi (argv[2]);
RF_BuildLights ();
if ( (handle = open("lights.dat", O_BINARY | O_WRONLY | O_CREAT |
O_TRUNC,S_IREAD | S_IWRITE) ) == -1)
{
perror ("Error opening output lights.dat");
return 1;
}
_dos_write (handle,&lightpalette[0][0],NUMLIGHTS*256,&writen);
close(handle);
bioskey (0);
_AX = 3;
geninterrupt(0x10);
return 0;
}

BIN
LIGHTS/LIGHTS.DSK Normal file

Binary file not shown.

BIN
LIGHTS/LIGHTS.EXE Normal file

Binary file not shown.

BIN
LIGHTS/LIGHTS.OBJ Normal file

Binary file not shown.

BIN
LIGHTS/LIGHTS.PRJ Normal file

Binary file not shown.

590
LIGHTS/LOADLBM.C Normal file
View file

@ -0,0 +1,590 @@
/*
** ILBM file loader by John Romero (C) 1990 PCRcade
**
** Loads and decompresses an ILBM-format file to the
** screen in either CGA, EGA or MCGA -- compressed or
** or unpacked!
**
** Merely pass the filename of the image to LoadLBM
** and sit back! The proper graphics mode is initialized
** and the screen (or brush) is loaded and displayed!
**
*/
struct LBMinfo { int width,height,planes; } CurrentLBM;
#include <stdio.h>
#include <fcntl.h>
#include <dos.h>
#include <bios.h>
#include <mem.h>
#include <alloc.h>
#define SC_index 0x3c4
#define SC_mapmask 2
/*
** FUNCTION PROTOTYPES
*/
void GetChunkID(char huge *buffer,char *tempstr);
int NextChunkID(char huge *buffer);
void huge *Decompress(char huge *buffer,char *unpacked,int bpwidth,char planes);
void huge *SetupLBM(char *filename);
void Do_CGA_Screen(char huge *buffer,char compress,char planes,int width,int height);
void Do_EGA_Screen(char huge *buffer,char compress,char planes,int width,int height,int scrwidth);
void Do_MCGA_Screen(char huge *buffer,char compress,int width,int height);
void EGA_MoveBitplane(char huge *from,char far *to,int bpwidth);
char typestr[5],huge *startbuff;
// EGA loader NOTE: the "scrwidth" var should be 0=320 mode,1=640 mode
void LoadLBM(char *filename,int scrwidth,int graphflag)
{
char huge *buffer,huge *cmap;
char planes,
tempstr[5],
compress;
int handle,
width,
height;
if((buffer = SetupLBM(filename))==NULL) exit(1);
/*
** Need to get BMHD info, like:
** - screen width, height
** - # of bitplanes
** - compression flag (YES/NO)
*/
CurrentLBM.width=width = (*(buffer+9)&0xFF)+(*(buffer+8)*256);
CurrentLBM.height=height = (*(buffer+11)&0xFF)+(*(buffer+10)*256);
CurrentLBM.planes=planes = *(buffer+16);
compress = *(buffer+18);
/*
if ((strcmp(typestr,"PBM ")!=0)&&(planes==8))
{
printf("This VGA screen is not in PBM format, but ILBM, which I\ncannot decode at this time.\n");
exit(1);
}*/
/*
** Find the CMAP chunk so I can remap the registers...
*/
movedata(FP_SEG(buffer),FP_OFF(buffer),_DS,(unsigned)tempstr,4);
tempstr[4]=0;
while (strcmp(tempstr,"CMAP")!=0)
{
buffer += NextChunkID(buffer);
movedata(FP_SEG(buffer),FP_OFF(buffer),_DS,(unsigned)tempstr,4);
}
cmap = buffer+8;
/*
** Now, find the BODY chunk...
*/
movedata(FP_SEG(buffer),FP_OFF(buffer),_DS,(unsigned)tempstr,4);
while (strcmp(tempstr,"BODY")!=0)
{
buffer += NextChunkID(buffer);
movedata(FP_SEG(buffer),FP_OFF(buffer),_DS,(unsigned)tempstr,4);
}
/*
** Found the BODY chunk! Here we go!
*/
buffer += 8; /* point to actual data */
/* Turn graphics mode on, if desired */
if (graphflag==1)
{
switch (planes)
{
case 2: { _AX=4; geninterrupt(0x10); break; }
case 4: {
_AX=0x0d;
geninterrupt(0x10);
scrwidth=0;
break;
}
case 8: { _AX=0x13; geninterrupt(0x10); break; }
}
}
switch (planes)
{
case 2: Do_CGA_Screen(buffer,compress,planes,width,height);
break;
case 4: Do_EGA_Screen(buffer,compress,planes,width,height,scrwidth);
break;
case 8: {
unsigned int i;
for (i=0;i<0x300;i++) (unsigned char)*cmap++ >>= 2;
cmap -= 0x300; // reset to beginning again
_BX = 0;
_CX = 0x100;
_ES = FP_SEG(cmap);
_DX = FP_OFF(cmap);
_AX = 0x1012;
geninterrupt(0x10);
Do_MCGA_Screen(buffer,compress,width,height);
break;
}
default: {
printf("This screen has %d bitplanes. I don't understand that sort of stuff.\n",planes);
exit();
}
}
farfree((void far *)startbuff);
}
//==============================================
//=
//= Load a *LARGE* file into a FAR buffer!
//= by John Romero (C) 1990 PCRcade
//=
//==============================================
unsigned long LoadFile(char *filename,char huge *buffer)
{
unsigned int handle,flength1,flength2,buf1,buf2,foff1,foff2;
buf1=FP_OFF(buffer);
buf2=FP_SEG(buffer);
asm mov WORD PTR foff1,0 // file offset = 0 (start)
asm mov WORD PTR foff2,0
asm mov dx,filename
asm mov ax,3d00h // OPEN w/handle (read only)
asm int 21h
asm jc out
asm mov handle,ax
asm mov bx,ax
asm xor cx,cx
asm xor dx,dx
asm mov ax,4202h
asm int 21h // SEEK (find file length)
asm jc out
asm mov flength1,ax
asm mov flength2,dx
asm mov cx,flength2
asm inc cx // <- at least once!
L_1:
asm push cx
asm mov cx,foff2
asm mov dx,foff1
asm mov ax,4200h
asm int 21h // SEEK from start
asm push ds
asm mov bx,handle
asm mov cx,-1
asm mov dx,buf1
asm mov ax,buf2
asm mov ds,ax
asm mov ah,3fh // READ w/handle
asm int 21h
asm pop ds
asm pop cx
asm jc out
asm cmp ax,-1
asm jne out
asm push cx // need to read the last byte
asm push ds // into the segment! IMPORTANT!
asm mov bx,handle
asm mov cx,1
asm mov dx,buf1
asm add dx,-1
asm mov ax,buf2
asm mov ds,ax
asm mov ah,3fh
asm int 21h
asm pop ds
asm pop cx
asm add buf2,1000h
asm inc WORD PTR foff2
asm loop L_1
out:
asm mov bx,handle // CLOSE w/handle
asm mov ah,3eh
asm int 21h
return (flength2*0x10000+flength1);
}
void huge *SetupLBM(char *filename)
{
int handle;
char huge *buffer;
char tempstr[64];
buffer = startbuff = (char huge *)farmalloc(0xf000);
if (buffer==NULL) return(NULL);
strupr(filename);
if (strstr(filename,".")==NULL)
strcat(filename,".LBM");
LoadFile(filename,buffer);
GetChunkID(buffer,tempstr);
if (strcmp(tempstr,"FORM")!=0)
{
printf("This isn't in ILBM FORM format file!\n");
return(NULL);
}
/*
** point past the FORM chunk
** and see if this really IS
** and ILBM file
*/
buffer += 8;
GetChunkID(buffer,tempstr);
strcpy(typestr,tempstr); // save file type
if ((strcmp(tempstr,"ILBM")!=0) && (strcmp(tempstr,"PBM ")!=0) )
{
printf("This isn't an ILBM format file!\n");
return(NULL);
}
/*
** point to BMHD chunk, the first NORMAL chunk!
*/
buffer += 4;
GetChunkID(buffer,tempstr);
if (strcmp(tempstr,"BMHD")!=0)
{
printf("What kind of ILBM is this? There's no BMHD chunk!\n");
return(NULL);
}
return(buffer);
}
void GetChunkID(char huge *buffer,char *tempstr)
{
movedata(FP_SEG(buffer),FP_OFF(buffer),_DS,(unsigned)tempstr,4);
tempstr[4]=0;
}
int NextChunkID(char huge *buffer)
{
unsigned int newoffset;
newoffset = (*(buffer+7)&0xFF) + (*(buffer+6)*256);
if ((newoffset & 1)==1) newoffset += 1;
return(newoffset+8); /* +8 because chunk + offset = 8 bytes! */
}
/*
** CGA loader
*/
void Do_CGA_Screen(char huge *buffer,char compress,char planes,int width,int height)
{
unsigned int bpwidth,
loopY,
loopX,
loopB,
offset,
data;
char far *screen,
b1,
b2,
unpacked[80];
bpwidth = width/8;
for (loopY=0;loopY<height;loopY++)
{
if (compress==1)
buffer=Decompress(buffer,unpacked,bpwidth,planes);
offset=0;
screen = MK_FP(0xb800,(0x2000*(loopY&1))+(80*(loopY/2)));
for (loopX=0;loopX<bpwidth;loopX++)
{
if (compress==1)
{
b1 = *(unpacked+offset);
b2 = *(unpacked+bpwidth+offset);
}
else
{
b1 = *(buffer+offset);
b2 = *(buffer+bpwidth+offset);
}
offset++;
// This loop should be in INLINE(!) assembler!
asm mov cx,8
asm mov bh,b1
asm mov bl,b2
asm xor dx,dx
LoopTop:
asm test bh,1
asm jz NoOR
asm or dx,4000h
NoOR:
asm test bl,1
asm jz NoOR1
asm or dx,8000h
NoOR1:
asm cmp cx,1
asm je NoShift
asm shr dx,1
asm shr dx,1
NoShift:
asm shr bh,1
asm shr bl,1
asm loop LoopTop
asm mov data,dx
/* first draft of above loop:
for (loopB=0;loopB<8;loopB++)
{
if (b1 & 1==1) data |= 0x4000;
if (b2 & 1==1) data |= 0x8000;
if (loopB<7) data >>= 2;
b1 >>= 1;
b2 >>= 1;
}
*/
*screen = data >> 8;
*(screen+1) = data;
screen += 2;
}
if (compress==0)
buffer += bpwidth*planes;
}
}
/*
** EGA loader (NOTE: the "scrwidth" var should be 0=320 mode,1=640 mode
*/
void Do_EGA_Screen(char huge *buffer,char compress,char planes,int width,int height,int scrwidth)
{
unsigned int bpwidth,
loopY,
loopX,
loopB,
offset,
data;
char far *screen = (char far *)0xa0000000,
b1,
b2,
unpacked[160];
bpwidth = width/8;
for (loopY=0;loopY<height;loopY++)
{
if (compress==1)
{
buffer=Decompress(buffer,unpacked,bpwidth,planes);
EGA_MoveBitplane(unpacked,screen,bpwidth);
}
else
{
EGA_MoveBitplane(buffer,screen,bpwidth);
buffer += bpwidth*planes;
}
screen = MK_FP(0xa000,FP_OFF(screen)+40*(scrwidth+1));
}
}
/*
** MCGA loader
*/
void Do_MCGA_Screen(char huge *buffer,char compress,int width,int height)
{
unsigned int bpwidth,
loopY,
loopX,
loopB,
offset,
data;
char far *screen = (char far *)0xa0000000,
b1,
b2,
unpacked1[320],
unpacked[320];
for (loopY=0;loopY<height;loopY++)
{
if (compress==1)
{
buffer=Decompress(buffer,unpacked,width,1);
if (strcmp(typestr,"ILBM")==0)
{
int tloop;
memset(unpacked1,0,320);
for (tloop=0;tloop<40;tloop++)
{
int tloop1,tloop2;
unsigned char mask[8] = { 0x80,0x40,0x20,0x10,8,4,2,1 };
for (tloop1=0;tloop1<8;tloop1++)
for (tloop2=0;tloop2<8;tloop2++)
unpacked1[tloop*8+tloop1]|=((( (unsigned)unpacked[tloop+(7-tloop2)*40]
&mask[tloop1])
<<tloop1)
>>tloop2);
}
movedata(_DS,(unsigned)unpacked1,FP_SEG(screen),FP_OFF(screen),width);
}
else movedata(_DS,(unsigned)unpacked,FP_SEG(screen),FP_OFF(screen),width);
}
else
{
movedata(FP_SEG(buffer),FP_OFF(buffer),FP_SEG(screen),FP_OFF(screen),width);
buffer += width;
}
screen = MK_FP(0xa000,FP_OFF(screen)+320);
}
}
/*
** ILBM's RLE decompressor. Merely pass the address of the compressed
** ILBM bitplane data, where to unpack it, the # of bytes each bitplane
** takes up, and the # of bit planes to unpack.
*/
void huge *Decompress(char huge *buffer,char *unpacked,int bpwidth,char planes)
{
int count,
offset,
loopP;
unsigned char byte,
rept;
for (loopP=0;loopP<planes;loopP++)
{
count = 0;
do {
rept = *(buffer);
if (rept > 0x80)
{
rept = (rept^0xff)+2;
byte = *(buffer+1);
buffer+=2;
memset(unpacked,byte,rept);
}
else if (rept < 0x80)
{
rept++;
movedata(FP_SEG(buffer),FP_OFF(buffer)+1,_DS,(unsigned) unpacked,rept);
buffer += rept+1;
}
count += rept;
unpacked += rept;
} while (count<bpwidth);
}
return(buffer);
}
void EGA_MoveBitplane(char huge *from,char far *to,int bpwidth)
{
unsigned width;
asm push ds
asm push di
asm push si
asm lds si,from //;DS:SI = from buffer
asm les di,to //;ES:DI = screen
asm mov bx,bpwidth
asm mov width,bx
asm mov dx,SC_index //;start writing to SC_mapmask register
asm mov al,SC_mapmask
asm out dx,al
asm inc dx
asm mov bh,4 //;4 bitplanes!
asm mov ah,1 //;start at bitplane 0
EGA1:
asm mov al,ah //;select bitplane
asm out dx,al
asm xor ch,ch
asm mov cl,bl //;cx = bitplane width
asm rep movsb
asm sub di,width //;start at beginning of line again...
asm shl ah,1
asm dec bh
asm jnz EGA1
asm mov al,15
asm out dx,al //;write to ALL bitplanes again
asm pop si
asm pop di
asm pop ds
}

BIN
LIGHTS/LOADLBM.OBJ Normal file

Binary file not shown.

BIN
MYMAP/ACTORS1.LBM Normal file

Binary file not shown.

BIN
MYMAP/ACTORS2.LBM Normal file

Binary file not shown.

1
MYMAP/B.BAT Normal file
View file

@ -0,0 +1 @@
bc mazer.prj

BIN
MYMAP/CRISP6X9.FNT Normal file

Binary file not shown.

BIN
MYMAP/DOORS1.LBM Normal file

Binary file not shown.

BIN
MYMAP/DP_BPAL.$$$ Normal file

Binary file not shown.

BIN
MYMAP/DP_CPAL.$$$ Normal file

Binary file not shown.

BIN
MYMAP/DP_OPAL.$$$ Normal file

Binary file not shown.

BIN
MYMAP/DP_PREFS Normal file

Binary file not shown.

BIN
MYMAP/DP_SPAL.$$$ Normal file

Binary file not shown.

BIN
MYMAP/FIXED6X8.FNT Normal file

Binary file not shown.

BIN
MYMAP/FLATS1.LBM Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more