]> git.lizzy.rs Git - plan9front.git/blob - sys/src/games/doom/tables.h
games/doom: display correct message on medkit pickup when health low (thanks qu7uux)
[plan9front.git] / sys / src / games / doom / tables.h
1 // Emacs style mode select   -*- C++ -*- 
2 //-----------------------------------------------------------------------------
3 //
4 // $Id:$
5 //
6 // Copyright (C) 1993-1996 by id Software, Inc.
7 //
8 // This source is available for distribution and/or modification
9 // only under the terms of the DOOM Source Code License as
10 // published by id Software. All rights reserved.
11 //
12 // The source is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
15 // for more details.
16 //
17 // DESCRIPTION:
18 //      Lookup tables.
19 //      Do not try to look them up :-).
20 //      In the order of appearance: 
21 //
22 //      int finetangent[4096]   - Tangens LUT.
23 //       Should work with BAM fairly well (12 of 16bit,
24 //      effectively, by shifting).
25 //
26 //      int finesine[10240]             - Sine lookup.
27 //       Guess what, serves as cosine, too.
28 //       Remarkable thing is, how to use BAMs with this? 
29 //
30 //      int tantoangle[2049]    - ArcTan LUT,
31 //        maps tan(angle) to angle fast. Gotta search.  
32 //    
33 //-----------------------------------------------------------------------------
34
35
36 #ifndef __TABLES__
37 #define __TABLES__
38
39
40 #include "m_fixed.h"
41         
42 #define FINEANGLES              8192
43 #define FINEMASK                (FINEANGLES-1)
44
45
46 // 0x100000000 to 0x2000
47 #define ANGLETOFINESHIFT        19              
48
49 // Effective size is 10240.
50 extern  fixed_t         finesine[5*FINEANGLES/4];
51
52 // Re-use data, is just PI/2 pahse shift.
53 extern  fixed_t*        finecosine;
54
55
56 // Effective size is 4096.
57 extern fixed_t          finetangent[FINEANGLES/2];
58
59 // Binary Angle Measument, BAM.
60 #define ANG45                   0x20000000
61 #define ANG90                   0x40000000
62 #define ANG180          0x80000000
63 #define ANG270          0xc0000000
64
65
66 #define SLOPERANGE              2048
67 #define SLOPEBITS               11
68 #define DBITS                   (FRACBITS-SLOPEBITS)
69
70 typedef unsigned angle_t;
71
72
73 // Effective size is 2049;
74 // The +1 size is to handle the case when x==y
75 //  without additional checking.
76 extern angle_t          tantoangle[SLOPERANGE+1];
77
78
79 // Utility function,
80 //  called by R_PointToAngle.
81 int
82 SlopeDiv
83 ( unsigned      num,
84   unsigned      den);
85
86
87 #endif
88 //-----------------------------------------------------------------------------
89 //
90 // $Log:$
91 //
92 //-----------------------------------------------------------------------------