From: sl8nl@cc.usu.edu
Newsgroups: comp.graphics
Subject: Re: HELP: 3d bitmapping!!
Date: 16 Oct 92 17:17:03 MDT
Distribution: world
Organization: Utah State University

>> Hi, I am wondering if some kind soul can give me some info
>> on implementing and using 3d bitmap graphics (wolf3d kind of thing)
>> any code or examples would be very appreciated!!

For those of you interested in this subject, watch rec.games.programmer.  In
the meantime, here is a very Wolf3d specific texture mapping routine for the
IBM.  More complicated ones also exist, and I have written them...all integer
assembly.

Joshua Jensen
--- cut here
begin 750 perspect.arj
M8.HL`!X#`0````)T=$\X&0```````````````````````%!%4E-014-4+D%2
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
-_3I@?__C>^@`8.H``'
`
end

Newsgroups: comp.graphics