summaryrefslogtreecommitdiff
path: root/apps/plugins/sdl/progs/quake/asm_draw.h
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2018-02-11 15:34:30 -0500
committerFranklin Wei <git@fwei.tk>2019-07-19 22:37:40 -0400
commit5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4 (patch)
tree84406e21639529a185556a33e5de7f43cffc277b /apps/plugins/sdl/progs/quake/asm_draw.h
parentb70fecf21ddc21877ec1ae7888d9c18a979e37ad (diff)
downloadrockbox-5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4.tar.gz
rockbox-5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4.zip
Quake!
This ports id Software's Quake to run on the SDL plugin runtime. The source code originated from id under the GPLv2 license. I used https://github.com/ahefner/sdlquake as the base of my port. Performance is, unsurprisingly, not on par with what you're probably used to on PC. I average about 10FPS on ipod6g, but it's still playable. Sound works well enough, but in-game music is not supported. I've written ARM assembly routines for the inner sound loop. Make sure you turn the "brightness" all the way down, or colors will look funky. To run, extract Quake's data files to /.rockbox/quake. Have fun! Change-Id: I4285036e967d7f0722802d43cf2096c808ca5799
Diffstat (limited to 'apps/plugins/sdl/progs/quake/asm_draw.h')
-rw-r--r--apps/plugins/sdl/progs/quake/asm_draw.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/quake/asm_draw.h b/apps/plugins/sdl/progs/quake/asm_draw.h
new file mode 100644
index 0000000000..5534ab63c7
--- /dev/null
+++ b/apps/plugins/sdl/progs/quake/asm_draw.h
@@ -0,0 +1,151 @@
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20//
21// asm_draw.h
22//
23// Include file for asm drawing routines.
24//
25
26//
27// !!! note that this file must match the corresponding C structures at all
28// times !!!
29//
30
31// !!! if this is changed, it must be changed in r_local.h too !!!
32#define NEAR_CLIP 0.01
33
34// !!! if this is changed, it must be changed in r_local.h too !!!
35#define CYCLE 128
36
37// espan_t structure
38// !!! if this is changed, it must be changed in r_shared.h too !!!
39#define espan_t_u 0
40#define espan_t_v 4
41#define espan_t_count 8
42#define espan_t_pnext 12
43#define espan_t_size 16
44
45// sspan_t structure
46// !!! if this is changed, it must be changed in d_local.h too !!!
47#define sspan_t_u 0
48#define sspan_t_v 4
49#define sspan_t_count 8
50#define sspan_t_size 12
51
52// spanpackage_t structure
53// !!! if this is changed, it must be changed in d_polyset.c too !!!
54#define spanpackage_t_pdest 0
55#define spanpackage_t_pz 4
56#define spanpackage_t_count 8
57#define spanpackage_t_ptex 12
58#define spanpackage_t_sfrac 16
59#define spanpackage_t_tfrac 20
60#define spanpackage_t_light 24
61#define spanpackage_t_zi 28
62#define spanpackage_t_size 32
63
64// edge_t structure
65// !!! if this is changed, it must be changed in r_shared.h too !!!
66#define et_u 0
67#define et_u_step 4
68#define et_prev 8
69#define et_next 12
70#define et_surfs 16
71#define et_nextremove 20
72#define et_nearzi 24
73#define et_owner 28
74#define et_size 32
75
76// surf_t structure
77// !!! if this is changed, it must be changed in r_shared.h too !!!
78#define SURF_T_SHIFT 6
79#define st_next 0
80#define st_prev 4
81#define st_spans 8
82#define st_key 12
83#define st_last_u 16
84#define st_spanstate 20
85#define st_flags 24
86#define st_data 28
87#define st_entity 32
88#define st_nearzi 36
89#define st_insubmodel 40
90#define st_d_ziorigin 44
91#define st_d_zistepu 48
92#define st_d_zistepv 52
93#define st_pad 56
94#define st_size 64
95
96// clipplane_t structure
97// !!! if this is changed, it must be changed in r_local.h too !!!
98#define cp_normal 0
99#define cp_dist 12
100#define cp_next 16
101#define cp_leftedge 20
102#define cp_rightedge 21
103#define cp_reserved 22
104#define cp_size 24
105
106// medge_t structure
107// !!! if this is changed, it must be changed in model.h too !!!
108#define me_v 0
109#define me_cachededgeoffset 4
110#define me_size 8
111
112// mvertex_t structure
113// !!! if this is changed, it must be changed in model.h too !!!
114#define mv_position 0
115#define mv_size 12
116
117// refdef_t structure
118// !!! if this is changed, it must be changed in render.h too !!!
119#define rd_vrect 0
120#define rd_aliasvrect 20
121#define rd_vrectright 40
122#define rd_vrectbottom 44
123#define rd_aliasvrectright 48
124#define rd_aliasvrectbottom 52
125#define rd_vrectrightedge 56
126#define rd_fvrectx 60
127#define rd_fvrecty 64
128#define rd_fvrectx_adj 68
129#define rd_fvrecty_adj 72
130#define rd_vrect_x_adj_shift20 76
131#define rd_vrectright_adj_shift20 80
132#define rd_fvrectright_adj 84
133#define rd_fvrectbottom_adj 88
134#define rd_fvrectright 92
135#define rd_fvrectbottom 96
136#define rd_horizontalFieldOfView 100
137#define rd_xOrigin 104
138#define rd_yOrigin 108
139#define rd_vieworg 112
140#define rd_viewangles 124
141#define rd_ambientlight 136
142#define rd_size 140
143
144// mtriangle_t structure
145// !!! if this is changed, it must be changed in model.h too !!!
146#define mtri_facesfront 0
147#define mtri_vertindex 4
148#define mtri_size 16 // !!! if this changes, array indexing in !!!
149 // !!! d_polysa.s must be changed to match !!!
150#define mtri_shift 4
151