That's weird. I have no problem finding the attachment. For those of you who don't know what this is all about, here's the original thread:
http://forums.3drealms.com/ubbthreads/showflat.php?Cat=0&Number=868628&an=0&page=1#868628
If you think you know video game history, and you are unfamiliar with Mazewar, then you owe it to yourself to check this out! : )
Here's a copy of the attachment I posted in that thread:
DEFLNG A-Z: SCREEN 12
DIM map(16, 32), hlut(32)
'Qbasic MazeWar implementation by Ken Silverman (06/04/2005)
'Inspired from the screenshots/movies/history at this site:
'http://www.digibarn.com/history/04-VCF7-MazeWar/index.html
'Size of 3D view
siz = 478: hsiz = siz \ 2
'Read board map
FOR y = 0 TO 31
READ i: FOR x = 0 TO 15: map(x, y) = ABS((i AND (2 ^ x)) <> 0): NEXT
NEXT
'This is the map from the Maze War screenshots.
'probably how map design was done in the 1970's :P
DATA &Hffff,&h80b1,&hbd95,&ha145,&hb42d,&h87a5,&hb0b1,&h8e15
DATA &ha0c5,&hbfdd,&ha041,&haf5d,&ha145,&h8d75,&ha105,&hafb1
DATA &ha095,&hbeb7,&ha025,&hbbf1,&h8005,&hbedd,&ha051,&haf55
DATA &ha955,&had45,&ha051,&hbf5d,&h8101,&hbddd,&h8409,&hffff
'Pick random starting position and direction
DO: px = INT(16 * RND): py = INT(32 * RND): LOOP WHILE map(px, py)
dx = INT(2 * RND) * 2 - 1: dy = 0: IF RND < .5 THEN SWAP dx, dy
'We wouldn't want a divide in the main program, now would we? :P
'BTW, proper 90 degree fov would be: ... = hsiz - hsiz \ (i * 2 - 1)
' but it's harder to navigate in that perspective
hlut(0) = 0: FOR i = 1 TO 31: hlut(i) = hsiz - hsiz \ (i * 2): NEXT
'Draw 2D map once at beginning of program :)
FOR y = 0 TO 31
FOR x = 0 TO 15
IF map(x, y) THEN LINE (x * 8 + 512, y * 8)-(x * 8 + 512 + 7, y * 8 + 7), , BF
NEXT
NEXT
DO
'Draw arrow in 2D maze
LINE (px * 8 + 512 + 4 - dx * 3, py * 8 + 4 - dy * 3)-(px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3), 10
LINE (px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3)-(px * 8 + 512 + 4 + dx - dy * 2, py * 8 + 4 + dy + dx * 2), 10
LINE (px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3)-(px * 8 + 512 + 4 + dx + dy * 2, py * 8 + 4 + dy - dx * 2), 10
'3D "raycasting"
'I was surprised at how easy the hidden line removal turned out to be... :)
LINE (0, 0)-(siz, siz), , B
cx = px: cy = py: d = 0
DO
v0 = hlut(d): d = d + 1: v1 = hlut(d)
IF map(cx + dy, cy - dx) THEN
LINE (v0, v0)-(v1, v1): LINE (v0, siz - v0)-(v1, siz - v1)
ELSE
LINE (v0, v0)-(v0, siz - v0)
IF map(cx + dx, cy + dy) = 0 THEN LINE (v1, v1)-(v1, siz - v1)
LINE (v1, v1)-(v0, v1): LINE (v1, siz - v1)-(v0, siz - v1)
END IF
IF map(cx - dy, cy + dx) THEN
LINE (siz - v0, v0)-(siz - v1, v1): LINE (siz - v0, siz - v0)-(siz - v1, siz - v1)
ELSE
LINE (siz - v0, v0)-(siz - v0, siz - v0)
IF map(cx + dx, cy + dy) = 0 THEN LINE (siz - v1, v1)-(siz - v1, siz - v1)
LINE (siz - v1, v1)-(siz - v0, v1): LINE (siz - v1, siz - v1)-(siz - v0, siz - v1)
END IF
cx = cx + dx: cy = cy + dy
LOOP WHILE map(cx, cy) = 0
LINE (v1, v1)-(siz - v1, v1): LINE (v1, siz - v1)-(siz - v1, siz - v1)
IF map(cx - dx + dy, cy - dy - dx) THEN LINE (v1, v1)-(v1, siz - v1)
IF map(cx - dx - dy, cy - dy + dx) THEN LINE (siz - v1, v1)-(siz - v1, siz - v1)
DO: z$ = INKEY$: LOOP WHILE z$ = ""
'Clear screen the hard way (for authenticity :)
LINE (px * 8 + 512 + 4 - dx * 3, py * 8 + 4 - dy * 3)-(px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3), 0
LINE (px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3)-(px * 8 + 512 + 4 + dx - dy * 2, py * 8 + 4 + dy + dx * 2), 0
LINE (px * 8 + 512 + 4 + dx * 3, py * 8 + 4 + dy * 3)-(px * 8 + 512 + 4 + dx + dy * 2, py * 8 + 4 + dy - dx * 2), 0
LINE (1, 1)-(siz - 1, siz - 1), 0
LINE (1, siz - 1)-(siz - 1, 1), 0
FOR i = 0 TO d
v = hlut(i + 1)
LINE (1, v)-(siz - 1, v), 0: LINE (1, siz - v)-(siz - 1, siz - v), 0
LINE (v, 1)-(v, siz - 1), 0: LINE (siz - v, 1)-(siz - v, siz - 1), 0
NEXT i
IF z$ = CHR$(0) + CHR$(75) THEN SWAP dx, dy: dy = -dy
IF z$ = CHR$(0) + CHR$(77) THEN SWAP dx, dy: dx = -dx
IF z$ = CHR$(0) + CHR$(72) AND map(px + dx, py + dy) = 0 THEN px = px + dx: py = py + dy
IF z$ = CHR$(0) + CHR$(80) AND map(px - dx, py - dy) = 0 THEN px = px - dx: py = py - dy
LOOP WHILE z$ <> CHR$(27)