Rev 5153 | Rev 5387 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5153 | Rev 5353 | ||
---|---|---|---|
1 | ; glVertex |
1 | ; glVertex |
2 | 2 | ||
3 | align 4 |
3 | align 4 |
4 | proc glVertex4f uses eax, x:dword, y:dword, z:dword, w:dword |
4 | proc glVertex4f uses eax, x:dword, y:dword, z:dword, w:dword |
5 | locals |
5 | locals |
6 | p rd 5 |
6 | p rd 5 |
7 | endl |
7 | endl |
8 | mov dword[p],OP_Vertex |
8 | mov dword[p],OP_Vertex |
9 | mov eax,[x] |
9 | mov eax,[x] |
10 | mov dword[p+4],eax |
10 | mov dword[p+4],eax |
11 | mov eax,[y] |
11 | mov eax,[y] |
12 | mov dword[p+8],eax |
12 | mov dword[p+8],eax |
13 | mov eax,[z] |
13 | mov eax,[z] |
14 | mov dword[p+12],eax |
14 | mov dword[p+12],eax |
15 | mov eax,[w] |
15 | mov eax,[w] |
16 | mov dword[p+16],eax |
16 | mov dword[p+16],eax |
17 | 17 | ||
18 | mov eax,ebp |
18 | mov eax,ebp |
19 | sub eax,20 ;=sizeof(dd)*5 |
19 | sub eax,20 ;=sizeof(dd)*5 |
20 | stdcall gl_add_op,eax |
20 | stdcall gl_add_op,eax |
21 | ret |
21 | ret |
22 | endp |
22 | endp |
23 | 23 | ||
24 | align 4 |
24 | align 4 |
25 | proc glVertex2f, x:dword, y:dword |
25 | proc glVertex2f, x:dword, y:dword |
26 | stdcall glVertex4f,[x],[y],0.0,1.0 |
26 | stdcall glVertex4f,[x],[y],0.0,1.0 |
27 | ret |
27 | ret |
28 | endp |
28 | endp |
29 | 29 | ||
30 | align 4 |
30 | align 4 |
- | 31 | proc glVertex2fv uses eax, v:dword |
|
- | 32 | mov eax,[v] |
|
- | 33 | stdcall glVertex4f,[eax],[eax+4],0.0,1.0 |
|
- | 34 | ret |
|
- | 35 | endp |
|
- | 36 | ||
- | 37 | align 4 |
|
31 | proc glVertex3f, x:dword, y:dword, z:dword |
38 | proc glVertex3f, x:dword, y:dword, z:dword |
32 | stdcall glVertex4f,[x],[y],[z],1.0 |
39 | stdcall glVertex4f,[x],[y],[z],1.0 |
33 | ret |
40 | ret |
34 | endp |
41 | endp |
35 | 42 | ||
36 | align 4 |
43 | align 4 |
37 | proc glVertex3fv uses eax, v:dword |
44 | proc glVertex3fv uses eax, v:dword |
38 | mov eax,[v] |
45 | mov eax,[v] |
39 | stdcall glVertex4f,[eax],[eax+4],[eax+8],1.0 |
46 | stdcall glVertex4f,[eax],[eax+4],[eax+8],1.0 |
40 | ret |
47 | ret |
41 | endp |
48 | endp |
- | 49 | ||
- | 50 | align 4 |
|
- | 51 | proc glVertex4fv uses eax, v:dword |
|
- | 52 | mov eax,[v] |
|
- | 53 | stdcall glVertex4f,[eax],[eax+4],[eax+8],[eax+12] |
|
- | 54 | ret |
|
- | 55 | endp |
|
42 | 56 | ||
43 | ; glNormal |
57 | ; glNormal |
44 | 58 | ||
45 | align 4 |
59 | align 4 |
46 | proc glNormal3f uses eax, x:dword, y:dword, z:dword |
60 | proc glNormal3f uses eax, x:dword, y:dword, z:dword |
47 | locals |
61 | locals |
48 | p rd 4 |
62 | p rd 4 |
49 | endl |
63 | endl |
50 | mov dword[p],OP_Normal |
64 | mov dword[p],OP_Normal |
51 | mov eax,[x] |
65 | mov eax,[x] |
52 | mov dword[p+4],eax |
66 | mov dword[p+4],eax |
53 | mov eax,[y] |
67 | mov eax,[y] |
54 | mov dword[p+8],eax |
68 | mov dword[p+8],eax |
55 | mov eax,[z] |
69 | mov eax,[z] |
56 | mov dword[p+12],eax |
70 | mov dword[p+12],eax |
57 | 71 | ||
58 | mov eax,ebp |
72 | mov eax,ebp |
59 | sub eax,16 ;=sizeof(dd)*4 |
73 | sub eax,16 ;=sizeof(dd)*4 |
60 | stdcall gl_add_op,eax |
74 | stdcall gl_add_op,eax |
61 | ret |
75 | ret |
62 | endp |
76 | endp |
63 | 77 | ||
64 | align 4 |
78 | align 4 |
65 | proc glNormal3fv uses eax, v:dword |
79 | proc glNormal3fv uses eax, v:dword |
66 | mov eax,[v] |
80 | mov eax,[v] |
67 | stdcall glNormal3f,[eax],[eax+4],[eax+8] |
81 | stdcall glNormal3f,[eax],[eax+4],[eax+8] |
68 | ret |
82 | ret |
69 | endp |
83 | endp |
70 | 84 | ||
71 | ; glColor |
85 | ; glColor |
72 | 86 | ||
73 | align 4 |
87 | align 4 |
74 | proc glColor4f uses eax, r:dword, g:dword, b:dword, a:dword |
88 | proc glColor4f uses eax, r:dword, g:dword, b:dword, a:dword |
75 | locals |
89 | locals |
76 | p rd 8 |
90 | p rd 8 |
77 | endl |
91 | endl |
78 | mov dword[p],OP_Color |
92 | mov dword[p],OP_Color |
79 | mov eax,[b] |
93 | mov eax,[b] |
80 | mov dword[p+4],eax |
94 | mov dword[p+4],eax |
81 | mov eax,[g] |
95 | mov eax,[g] |
82 | mov dword[p+8],eax |
96 | mov dword[p+8],eax |
83 | mov eax,[r] |
97 | mov eax,[r] |
84 | mov dword[p+12],eax |
98 | mov dword[p+12],eax |
85 | mov eax,[a] |
99 | mov eax,[a] |
86 | mov dword[p+16],eax |
100 | mov dword[p+16],eax |
87 | ; direct convertion to integer to go faster if no shading |
101 | ; direct convertion to integer to go faster if no shading |
88 | mov eax,ebp |
102 | mov eax,ebp |
89 | sub eax,12 ;ebp-12 = &p[5] |
103 | sub eax,12 ;ebp-12 = &p[5] |
90 | push eax |
104 | push eax |
91 | add eax,4 ;ebp-8 = &p[6] |
105 | add eax,4 ;ebp-8 = &p[6] |
92 | push eax |
106 | push eax |
93 | add eax,4 ;ebp-4 = &p[7] |
107 | add eax,4 ;ebp-4 = &p[7] |
94 | push eax |
108 | push eax |
95 | stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5] |
109 | stdcall RGBFtoRGBI,[r],[g],[b] ;call: r,g,b,&p[7],&p[6],&p[5] |
96 | 110 | ||
97 | mov eax,ebp |
111 | mov eax,ebp |
98 | sub eax,32 ;=sizeof(dd)*8 |
112 | sub eax,32 ;=sizeof(dd)*8 |
99 | stdcall gl_add_op,eax |
113 | stdcall gl_add_op,eax |
100 | ret |
114 | ret |
101 | endp |
115 | endp |
102 | 116 | ||
103 | align 4 |
117 | align 4 |
104 | proc glColor4fv uses eax ebx, v:dword |
118 | proc glColor4fv uses eax ebx, v:dword |
105 | locals |
119 | locals |
106 | p rd 8 |
120 | p rd 8 |
107 | endl |
121 | endl |
108 | mov dword[p],OP_Color |
122 | mov dword[p],OP_Color |
109 | mov eax,[v] |
123 | mov eax,[v] |
110 | mov ebx,[eax+8] |
124 | mov ebx,[eax+8] |
111 | mov dword[p+4],ebx |
125 | mov dword[p+4],ebx |
112 | mov ebx,[eax+4] |
126 | mov ebx,[eax+4] |
113 | mov dword[p+8],ebx |
127 | mov dword[p+8],ebx |
114 | mov ebx,[eax] |
128 | mov ebx,[eax] |
115 | mov dword[p+12],ebx |
129 | mov dword[p+12],ebx |
116 | mov ebx,[eax+12] |
130 | mov ebx,[eax+12] |
117 | mov dword[p+16],ebx |
131 | mov dword[p+16],ebx |
118 | ; direct convertion to integer to go faster if no shading |
132 | ; direct convertion to integer to go faster if no shading |
119 | mov eax,ebp |
133 | mov eax,ebp |
120 | sub eax,4 |
134 | sub eax,4 |
121 | push eax ;&p[7] |
135 | push eax ;&p[7] |
122 | sub eax,4 |
136 | sub eax,4 |
123 | push eax ;&p[6] |
137 | push eax ;&p[6] |
124 | sub eax,4 |
138 | sub eax,4 |
125 | push eax ;&p[5] |
139 | push eax ;&p[5] |
126 | stdcall RGBFtoRGBI,[eax+8],[eax+4],[eax] ;call: v[2],v[1],v[0],p[5],p[6],p[7] |
140 | stdcall RGBFtoRGBI,[eax+8],[eax+4],[eax] ;call: v[2],v[1],v[0],p[5],p[6],p[7] |
127 | 141 | ||
128 | mov eax,ebp |
142 | mov eax,ebp |
129 | sub eax,32 ;=sizeof(dd)*8 |
143 | sub eax,32 ;=sizeof(dd)*8 |
130 | stdcall gl_add_op,eax |
144 | stdcall gl_add_op,eax |
131 | ret |
145 | ret |
132 | endp |
146 | endp |
133 | 147 | ||
134 | align 4 |
148 | align 4 |
135 | proc glColor3f, r:dword, g:dword, b:dword |
149 | proc glColor3f, r:dword, g:dword, b:dword |
136 | stdcall glColor4f,[r],[g],[b],1.0 |
150 | stdcall glColor4f,[r],[g],[b],1.0 |
137 | ret |
151 | ret |
138 | endp |
152 | endp |
139 | 153 | ||
140 | align 4 |
154 | align 4 |
141 | proc glColor3fv uses eax, v:dword |
155 | proc glColor3fv uses eax, v:dword |
142 | mov eax,[v] |
156 | mov eax,[v] |
143 | stdcall glColor4f,[eax],[eax+4],[eax+8],1.0 |
157 | stdcall glColor4f,[eax],[eax+4],[eax+8],1.0 |
144 | ret |
158 | ret |
145 | endp |
159 | endp |
146 | 160 | ||
147 | ; TexCoord |
161 | ; TexCoord |
148 | 162 | ||
149 | align 4 |
163 | align 4 |
150 | proc glTexCoord4f uses eax, s:dword, t:dword, r:dword, q:dword |
164 | proc glTexCoord4f uses eax, s:dword, t:dword, r:dword, q:dword |
151 | locals |
165 | locals |
152 | p rd 5 |
166 | p rd 5 |
153 | endl |
167 | endl |
154 | mov dword[p],OP_TexCoord |
168 | mov dword[p],OP_TexCoord |
155 | mov eax,[s] |
169 | mov eax,[s] |
156 | mov dword[p+4],eax |
170 | mov dword[p+4],eax |
157 | mov eax,[t] |
171 | mov eax,[t] |
158 | mov dword[p+8],eax |
172 | mov dword[p+8],eax |
159 | mov eax,[r] |
173 | mov eax,[r] |
160 | mov dword[p+12],eax |
174 | mov dword[p+12],eax |
161 | mov eax,[q] |
175 | mov eax,[q] |
162 | mov dword[p+16],eax |
176 | mov dword[p+16],eax |
163 | 177 | ||
164 | mov eax,ebp |
178 | mov eax,ebp |
165 | sub eax,20 ;=sizeof(dd)*5 |
179 | sub eax,20 ;=sizeof(dd)*5 |
166 | stdcall gl_add_op,eax |
180 | stdcall gl_add_op,eax |
167 | ret |
181 | ret |
168 | endp |
182 | endp |
169 | 183 | ||
170 | align 4 |
184 | align 4 |
171 | proc glTexCoord2f, s:dword, t:dword |
185 | proc glTexCoord2f, s:dword, t:dword |
172 | stdcall glTexCoord4f,[s],[t],0.0,1.0 |
186 | stdcall glTexCoord4f,[s],[t],0.0,1.0 |
173 | ret |
187 | ret |
174 | endp |
188 | endp |
175 | 189 | ||
176 | align 4 |
190 | align 4 |
177 | proc glTexCoord2fv uses eax, v:dword |
191 | proc glTexCoord2fv uses eax, v:dword |
178 | mov eax,[v] |
192 | mov eax,[v] |
179 | stdcall glTexCoord4f,[eax],[eax+4],0.0,1.0 |
193 | stdcall glTexCoord4f,[eax],[eax+4],0.0,1.0 |
180 | ret |
194 | ret |
181 | endp |
195 | endp |
182 | 196 | ||
183 | align 4 |
197 | align 4 |
184 | proc glEdgeFlag uses eax, flag:dword |
198 | proc glEdgeFlag uses eax, flag:dword |
185 | locals |
199 | locals |
186 | p rd 2 |
200 | p rd 2 |
187 | endl |
201 | endl |
188 | mov dword[p],OP_EdgeFlag |
202 | mov dword[p],OP_EdgeFlag |
189 | mov eax,[flag] |
203 | mov eax,[flag] |
190 | mov dword[p+4],eax |
204 | mov dword[p+4],eax |
191 | 205 | ||
192 | mov eax,ebp |
206 | mov eax,ebp |
193 | sub eax,8 ;=sizeof(dd)*2 |
207 | sub eax,8 ;=sizeof(dd)*2 |
194 | stdcall gl_add_op,eax |
208 | stdcall gl_add_op,eax |
195 | ret |
209 | ret |
196 | endp |
210 | endp |
197 | 211 | ||
198 | ; misc |
212 | ; misc |
199 | 213 | ||
200 | align 4 |
214 | align 4 |
201 | proc glShadeModel uses eax, mode:dword |
215 | proc glShadeModel uses eax, mode:dword |
202 | locals |
216 | locals |
203 | p rd 2 |
217 | p rd 2 |
204 | endl |
218 | endl |
205 | 219 | ||
206 | ; assert(mode == GL_FLAT || mode == GL_SMOOTH); |
220 | ; assert(mode == GL_FLAT || mode == GL_SMOOTH); |
207 | 221 | ||
208 | mov dword[p],OP_ShadeModel |
222 | mov dword[p],OP_ShadeModel |
209 | mov eax,[mode] |
223 | mov eax,[mode] |
210 | mov dword[p+4],eax |
224 | mov dword[p+4],eax |
211 | 225 | ||
212 | mov eax,ebp |
226 | mov eax,ebp |
213 | sub eax,8 ;=sizeof(dd)*2 |
227 | sub eax,8 ;=sizeof(dd)*2 |
214 | stdcall gl_add_op,eax |
228 | stdcall gl_add_op,eax |
215 | ret |
229 | ret |
216 | endp |
230 | endp |
217 | 231 | ||
218 | align 4 |
232 | align 4 |
219 | proc glCullFace uses eax, mode:dword |
233 | proc glCullFace uses eax, mode:dword |
220 | locals |
234 | locals |
221 | p rd 2 |
235 | p rd 2 |
222 | endl |
236 | endl |
223 | 237 | ||
224 | ; assert(mode == GL_BACK || |
238 | ; assert(mode == GL_BACK || |
225 | ; mode == GL_FRONT || |
239 | ; mode == GL_FRONT || |
226 | ; mode == GL_FRONT_AND_BACK); |
240 | ; mode == GL_FRONT_AND_BACK); |
227 | 241 | ||
228 | mov dword[p],OP_CullFace |
242 | mov dword[p],OP_CullFace |
229 | mov eax,[mode] |
243 | mov eax,[mode] |
230 | mov dword[p+4],eax |
244 | mov dword[p+4],eax |
231 | 245 | ||
232 | mov eax,ebp |
246 | mov eax,ebp |
233 | sub eax,8 ;=sizeof(dd)*2 |
247 | sub eax,8 ;=sizeof(dd)*2 |
234 | stdcall gl_add_op,eax |
248 | stdcall gl_add_op,eax |
235 | ret |
249 | ret |
236 | endp |
250 | endp |
237 | 251 | ||
238 | align 4 |
252 | align 4 |
239 | proc glFrontFace uses eax, mode:dword |
253 | proc glFrontFace uses eax, mode:dword |
240 | locals |
254 | locals |
241 | p rd 2 |
255 | p rd 2 |
242 | endl |
256 | endl |
243 | 257 | ||
244 | ; assert(mode == GL_CCW || mode == GL_CW); |
258 | ; assert(mode == GL_CCW || mode == GL_CW); |
245 | 259 | ||
246 | mov dword[p],OP_FrontFace |
260 | mov dword[p],OP_FrontFace |
247 | xor eax,eax |
261 | xor eax,eax |
248 | cmp dword[mode],GL_CCW |
262 | cmp dword[mode],GL_CCW |
249 | je @f |
263 | je @f |
250 | inc eax |
264 | inc eax |
251 | @@: |
265 | @@: |
252 | mov dword[p+4],eax |
266 | mov dword[p+4],eax |
253 | 267 | ||
254 | mov eax,ebp |
268 | mov eax,ebp |
255 | sub eax,8 ;=sizeof(dd)*2 |
269 | sub eax,8 ;=sizeof(dd)*2 |
256 | stdcall gl_add_op,eax |
270 | stdcall gl_add_op,eax |
257 | ret |
271 | ret |
258 | endp |
272 | endp |
259 | 273 | ||
260 | align 4 |
274 | align 4 |
261 | proc glPolygonMode uses eax, face:dword, mode:dword |
275 | proc glPolygonMode uses eax, face:dword, mode:dword |
262 | locals |
276 | locals |
263 | p rd 3 |
277 | p rd 3 |
264 | endl |
278 | endl |
265 | 279 | ||
266 | ; assert(face == GL_BACK || |
280 | ; assert(face == GL_BACK || |
267 | ; face == GL_FRONT || |
281 | ; face == GL_FRONT || |
268 | ; face == GL_FRONT_AND_BACK); |
282 | ; face == GL_FRONT_AND_BACK); |
269 | ; assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL); |
283 | ; assert(mode == GL_POINT || mode == GL_LINE || mode==GL_FILL); |
270 | 284 | ||
271 | mov dword[p],OP_PolygonMode |
285 | mov dword[p],OP_PolygonMode |
272 | mov eax,[face] |
286 | mov eax,[face] |
273 | mov dword[p+4],eax |
287 | mov dword[p+4],eax |
274 | mov eax,[mode] |
288 | mov eax,[mode] |
275 | mov dword[p+8],eax |
289 | mov dword[p+8],eax |
276 | 290 | ||
277 | mov eax,ebp |
291 | mov eax,ebp |
278 | sub eax,12 ;=sizeof(dd)*3 |
292 | sub eax,12 ;=sizeof(dd)*3 |
279 | stdcall gl_add_op,eax |
293 | stdcall gl_add_op,eax |
280 | ret |
294 | ret |
281 | endp |
295 | endp |
282 | 296 | ||
283 | ; glEnable / glDisable |
297 | ; glEnable / glDisable |
284 | 298 | ||
285 | align 4 |
299 | align 4 |
286 | proc glEnable uses eax, cap:dword |
300 | proc glEnable uses eax, cap:dword |
287 | locals |
301 | locals |
288 | p rd 3 |
302 | p rd 3 |
289 | endl |
303 | endl |
290 | mov dword[p],OP_EnableDisable |
304 | mov dword[p],OP_EnableDisable |
291 | mov eax,[cap] |
305 | mov eax,[cap] |
292 | mov dword[p+4],eax |
306 | mov dword[p+4],eax |
293 | mov dword[p+8],1 |
307 | mov dword[p+8],1 |
294 | 308 | ||
295 | mov eax,ebp |
309 | mov eax,ebp |
296 | sub eax,12 ;=sizeof(dd)*3 |
310 | sub eax,12 ;=sizeof(dd)*3 |
297 | stdcall gl_add_op,eax |
311 | stdcall gl_add_op,eax |
298 | ret |
312 | ret |
299 | endp |
313 | endp |
300 | 314 | ||
301 | align 4 |
315 | align 4 |
302 | proc glDisable uses eax, cap:dword |
316 | proc glDisable uses eax, cap:dword |
303 | locals |
317 | locals |
304 | p rd 3 |
318 | p rd 3 |
305 | endl |
319 | endl |
306 | mov dword[p],OP_EnableDisable |
320 | mov dword[p],OP_EnableDisable |
307 | mov eax,[cap] |
321 | mov eax,[cap] |
308 | mov dword[p+4],eax |
322 | mov dword[p+4],eax |
309 | mov dword[p+8],0 |
323 | mov dword[p+8],0 |
310 | 324 | ||
311 | mov eax,ebp |
325 | mov eax,ebp |
312 | sub eax,12 ;=sizeof(dd)*3 |
326 | sub eax,12 ;=sizeof(dd)*3 |
313 | stdcall gl_add_op,eax |
327 | stdcall gl_add_op,eax |
314 | ret |
328 | ret |
315 | endp |
329 | endp |
316 | 330 | ||
317 | ; glBegin / glEnd |
331 | ; glBegin / glEnd |
318 | 332 | ||
319 | align 4 |
333 | align 4 |
320 | proc glBegin uses eax, mode:dword |
334 | proc glBegin uses eax, mode:dword |
321 | locals |
335 | locals |
322 | p rd 2 |
336 | p rd 2 |
323 | endl |
337 | endl |
324 | mov dword[p],OP_Begin |
338 | mov dword[p],OP_Begin |
325 | mov eax,[mode] |
339 | mov eax,[mode] |
326 | mov dword[p+4],eax |
340 | mov dword[p+4],eax |
327 | 341 | ||
328 | mov eax,ebp |
342 | mov eax,ebp |
329 | sub eax,8 ;=sizeof(dd)*2 |
343 | sub eax,8 ;=sizeof(dd)*2 |
330 | stdcall gl_add_op,eax |
344 | stdcall gl_add_op,eax |
331 | ret |
345 | ret |
332 | endp |
346 | endp |
333 | 347 | ||
334 | align 4 |
348 | align 4 |
335 | proc glEnd uses eax |
349 | proc glEnd uses eax |
336 | locals |
350 | locals |
337 | p dd ? |
351 | p dd ? |
338 | endl |
352 | endl |
339 | mov dword[p],OP_End |
353 | mov dword[p],OP_End |
340 | 354 | ||
341 | mov eax,ebp |
355 | mov eax,ebp |
342 | sub eax,4 ;=sizeof(dd)*1 |
356 | sub eax,4 ;=sizeof(dd)*1 |
343 | stdcall gl_add_op,eax |
357 | stdcall gl_add_op,eax |
344 | ret |
358 | ret |
345 | endp |
359 | endp |
346 | 360 | ||
347 | ; matrix |
361 | ; matrix |
348 | 362 | ||
349 | align 4 |
363 | align 4 |
350 | proc glMatrixMode uses eax, mode:dword |
364 | proc glMatrixMode uses eax, mode:dword |
351 | locals |
365 | locals |
352 | p rd 2 |
366 | p rd 2 |
353 | endl |
367 | endl |
354 | mov dword[p],OP_MatrixMode |
368 | mov dword[p],OP_MatrixMode |
355 | mov eax,[mode] |
369 | mov eax,[mode] |
356 | mov dword[p+4],eax |
370 | mov dword[p+4],eax |
357 | 371 | ||
358 | mov eax,ebp |
372 | mov eax,ebp |
359 | sub eax,8 ;=sizeof(dd)*2 |
373 | sub eax,8 ;=sizeof(dd)*2 |
360 | stdcall gl_add_op,eax |
374 | stdcall gl_add_op,eax |
361 | ret |
375 | ret |
362 | endp |
376 | endp |
363 | 377 | ||
364 | align 4 |
378 | align 4 |
365 | proc glLoadMatrixf uses ecx edi esi, m:dword |
379 | proc glLoadMatrixf uses ecx edi esi, m:dword |
366 | locals |
380 | locals |
367 | p rd 17 |
381 | p rd 17 |
368 | endl |
382 | endl |
369 | mov dword[p],OP_LoadMatrix |
383 | mov dword[p],OP_LoadMatrix |
370 | mov ecx,16 |
384 | mov ecx,16 |
371 | mov esi,[m] |
385 | mov esi,[m] |
372 | mov edi,ebp |
386 | mov edi,ebp |
373 | sub edi,64 ;=sizeof(M4) |
387 | sub edi,64 ;=sizeof(M4) |
374 | rep movsd |
388 | rep movsd |
375 | 389 | ||
376 | mov ecx,ebp |
390 | mov ecx,ebp |
377 | sub ecx,68 ;=sizeof(dd)*17 |
391 | sub ecx,68 ;=sizeof(dd)*17 |
378 | stdcall gl_add_op,ecx |
392 | stdcall gl_add_op,ecx |
379 | ret |
393 | ret |
380 | endp |
394 | endp |
381 | 395 | ||
382 | align 4 |
396 | align 4 |
383 | proc glLoadIdentity uses eax |
397 | proc glLoadIdentity uses eax |
384 | locals |
398 | locals |
385 | p dd ? |
399 | p dd ? |
386 | endl |
400 | endl |
387 | mov dword[p],OP_LoadIdentity |
401 | mov dword[p],OP_LoadIdentity |
388 | 402 | ||
389 | mov eax,ebp |
403 | mov eax,ebp |
390 | sub eax,4 ;=sizeof(dd)*1 |
404 | sub eax,4 ;=sizeof(dd)*1 |
391 | stdcall gl_add_op,eax |
405 | stdcall gl_add_op,eax |
392 | ret |
406 | ret |
393 | endp |
407 | endp |
394 | 408 | ||
395 | align 4 |
409 | align 4 |
396 | proc glMultMatrixf uses ecx edi esi, m:dword |
410 | proc glMultMatrixf uses ecx edi esi, m:dword |
397 | locals |
411 | locals |
398 | p rd 17 |
412 | p rd 17 |
399 | endl |
413 | endl |
400 | mov dword[p],OP_MultMatrix |
414 | mov dword[p],OP_MultMatrix |
401 | mov ecx,16 |
415 | mov ecx,16 |
402 | mov esi,[m] |
416 | mov esi,[m] |
403 | mov edi,ebp |
417 | mov edi,ebp |
404 | sub edi,64 ;=sizeof(M4) |
418 | sub edi,64 ;=sizeof(M4) |
405 | rep movsd |
419 | rep movsd |
406 | 420 | ||
407 | mov ecx,ebp |
421 | mov ecx,ebp |
408 | sub ecx,68 ;=sizeof(dd)*17 |
422 | sub ecx,68 ;=sizeof(dd)*17 |
409 | stdcall gl_add_op,ecx |
423 | stdcall gl_add_op,ecx |
410 | ret |
424 | ret |
411 | endp |
425 | endp |
412 | 426 | ||
413 | align 4 |
427 | align 4 |
414 | proc glPushMatrix uses eax |
428 | proc glPushMatrix uses eax |
415 | locals |
429 | locals |
416 | p dd ? |
430 | p dd ? |
417 | endl |
431 | endl |
418 | mov dword[p],OP_PushMatrix |
432 | mov dword[p],OP_PushMatrix |
419 | 433 | ||
420 | mov eax,ebp |
434 | mov eax,ebp |
421 | sub eax,4 ;=sizeof(dd)*1 |
435 | sub eax,4 ;=sizeof(dd)*1 |
422 | stdcall gl_add_op,eax |
436 | stdcall gl_add_op,eax |
423 | ret |
437 | ret |
424 | endp |
438 | endp |
425 | 439 | ||
426 | align 4 |
440 | align 4 |
427 | proc glPopMatrix uses eax |
441 | proc glPopMatrix uses eax |
428 | locals |
442 | locals |
429 | p dd ? |
443 | p dd ? |
430 | endl |
444 | endl |
431 | mov dword[p],OP_PopMatrix |
445 | mov dword[p],OP_PopMatrix |
432 | 446 | ||
433 | mov eax,ebp |
447 | mov eax,ebp |
434 | sub eax,4 ;=sizeof(dd)*1 |
448 | sub eax,4 ;=sizeof(dd)*1 |
435 | stdcall gl_add_op,eax |
449 | stdcall gl_add_op,eax |
436 | ret |
450 | ret |
437 | endp |
451 | endp |
438 | 452 | ||
439 | align 4 |
453 | align 4 |
440 | proc glRotatef uses eax, angle:dword, x:dword, y:dword, z:dword |
454 | proc glRotatef uses eax, angle:dword, x:dword, y:dword, z:dword |
441 | locals |
455 | locals |
442 | p rd 5 |
456 | p rd 5 |
443 | endl |
457 | endl |
444 | mov dword[p],OP_Rotate |
458 | mov dword[p],OP_Rotate |
445 | mov eax,[angle] |
459 | mov eax,[angle] |
446 | mov dword[p+4],eax |
460 | mov dword[p+4],eax |
447 | mov eax,[x] |
461 | mov eax,[x] |
448 | mov dword[p+8],eax |
462 | mov dword[p+8],eax |
449 | mov eax,[y] |
463 | mov eax,[y] |
450 | mov dword[p+12],eax |
464 | mov dword[p+12],eax |
451 | mov eax,[z] |
465 | mov eax,[z] |
452 | mov dword[p+16],eax |
466 | mov dword[p+16],eax |
453 | 467 | ||
454 | mov eax,ebp |
468 | mov eax,ebp |
455 | sub eax,20 ;=sizeof(dd)*5 |
469 | sub eax,20 ;=sizeof(dd)*5 |
456 | stdcall gl_add_op,eax |
470 | stdcall gl_add_op,eax |
457 | ret |
471 | ret |
458 | endp |
472 | endp |
459 | 473 | ||
460 | align 4 |
474 | align 4 |
461 | proc glTranslatef uses eax, x:dword, y:dword, z:dword |
475 | proc glTranslatef uses eax, x:dword, y:dword, z:dword |
462 | locals |
476 | locals |
463 | p rd 4 |
477 | p rd 4 |
464 | endl |
478 | endl |
465 | mov dword[p],OP_Translate |
479 | mov dword[p],OP_Translate |
466 | mov eax,[x] |
480 | mov eax,[x] |
467 | mov dword[p+4],eax |
481 | mov dword[p+4],eax |
468 | mov eax,[y] |
482 | mov eax,[y] |
469 | mov dword[p+8],eax |
483 | mov dword[p+8],eax |
470 | mov eax,[z] |
484 | mov eax,[z] |
471 | mov dword[p+12],eax |
485 | mov dword[p+12],eax |
472 | 486 | ||
473 | mov eax,ebp |
487 | mov eax,ebp |
474 | sub eax,16 ;=sizeof(dd)*4 |
488 | sub eax,16 ;=sizeof(dd)*4 |
475 | stdcall gl_add_op,eax |
489 | stdcall gl_add_op,eax |
476 | ret |
490 | ret |
477 | endp |
491 | endp |
478 | 492 | ||
479 | align 4 |
493 | align 4 |
480 | proc glScalef uses eax, x:dword, y:dword, z:dword |
494 | proc glScalef uses eax, x:dword, y:dword, z:dword |
481 | locals |
495 | locals |
482 | p rd 4 |
496 | p rd 4 |
483 | endl |
497 | endl |
484 | mov dword[p],OP_Scale |
498 | mov dword[p],OP_Scale |
485 | mov eax,[x] |
499 | mov eax,[x] |
486 | mov dword[p+4],eax |
500 | mov dword[p+4],eax |
487 | mov eax,[y] |
501 | mov eax,[y] |
488 | mov dword[p+8],eax |
502 | mov dword[p+8],eax |
489 | mov eax,[z] |
503 | mov eax,[z] |
490 | mov dword[p+12],eax |
504 | mov dword[p+12],eax |
491 | 505 | ||
492 | mov eax,ebp |
506 | mov eax,ebp |
493 | sub eax,16 ;=sizeof(dd)*4 |
507 | sub eax,16 ;=sizeof(dd)*4 |
494 | stdcall gl_add_op,eax |
508 | stdcall gl_add_op,eax |
495 | ret |
509 | ret |
496 | endp |
510 | endp |
497 | 511 | ||
498 | align 4 |
512 | align 4 |
499 | proc glViewport uses eax, x:dword, y:dword, width:dword, heigh:dword |
513 | proc glViewport uses eax, x:dword, y:dword, width:dword, heigh:dword |
500 | locals |
514 | locals |
501 | p rd 5 |
515 | p rd 5 |
502 | endl |
516 | endl |
503 | mov dword[p],OP_Viewport |
517 | mov dword[p],OP_Viewport |
504 | mov eax,[x] |
518 | mov eax,[x] |
505 | mov dword[p+4],eax |
519 | mov dword[p+4],eax |
506 | mov eax,[y] |
520 | mov eax,[y] |
507 | mov dword[p+8],eax |
521 | mov dword[p+8],eax |
508 | mov eax,[width] |
522 | mov eax,[width] |
509 | mov dword[p+12],eax |
523 | mov dword[p+12],eax |
510 | mov eax,[heigh] |
524 | mov eax,[heigh] |
511 | mov dword[p+16],eax |
525 | mov dword[p+16],eax |
512 | 526 | ||
513 | mov eax,ebp |
527 | mov eax,ebp |
514 | sub eax,20 ;=sizeof(dd)*5 |
528 | sub eax,20 ;=sizeof(dd)*5 |
515 | stdcall gl_add_op,eax |
529 | stdcall gl_add_op,eax |
516 | ret |
530 | ret |
517 | endp |
531 | endp |
518 | 532 | ||
519 | align 4 |
533 | align 4 |
520 | proc glFrustum uses eax, left:dword,right:dword,bottom:dword,top:dword,\ |
534 | proc glFrustum uses eax, left:dword,right:dword,bottom:dword,top:dword,\ |
521 | near:dword,farv:dword |
535 | near:dword,farv:dword |
522 | locals |
536 | locals |
523 | p rd 7 |
537 | p rd 7 |
524 | endl |
538 | endl |
525 | mov dword[p],OP_Frustum |
539 | mov dword[p],OP_Frustum |
526 | mov eax,[left] |
540 | mov eax,[left] |
527 | fld qword[eax] |
541 | fld qword[eax] |
528 | fstp dword[p+4] |
542 | fstp dword[p+4] |
529 | mov eax,[right] |
543 | mov eax,[right] |
530 | fld qword[eax] |
544 | fld qword[eax] |
531 | fstp dword[p+8] |
545 | fstp dword[p+8] |
532 | mov eax,[bottom] |
546 | mov eax,[bottom] |
533 | fld qword[eax] |
547 | fld qword[eax] |
534 | fstp dword[p+12] |
548 | fstp dword[p+12] |
535 | mov eax,[top] |
549 | mov eax,[top] |
536 | fld qword[eax] |
550 | fld qword[eax] |
537 | fstp dword[p+16] |
551 | fstp dword[p+16] |
538 | mov eax,[near] |
552 | mov eax,[near] |
539 | fld qword[eax] |
553 | fld qword[eax] |
540 | fstp dword[p+20] |
554 | fstp dword[p+20] |
541 | mov eax,[farv] |
555 | mov eax,[farv] |
542 | fld qword[eax] |
556 | fld qword[eax] |
543 | fstp dword[p+24] |
557 | fstp dword[p+24] |
544 | 558 | ||
545 | mov eax,ebp |
559 | mov eax,ebp |
546 | sub eax,28 ;=sizeof(dd)*7 |
560 | sub eax,28 ;=sizeof(dd)*7 |
547 | stdcall gl_add_op,eax |
561 | stdcall gl_add_op,eax |
548 | ret |
562 | ret |
549 | endp |
563 | endp |
550 | 564 | ||
551 | ;/* lightening */ |
565 | ; lightening |
552 | 566 | ||
553 | align 4 |
567 | align 4 |
554 | proc glMaterialfv uses eax ecx, mode:dword, type:dword, v:dword |
568 | proc glMaterialfv uses eax ecx, mode:dword, type:dword, v:dword |
555 | locals |
569 | locals |
556 | p rd 7 |
570 | p rd 7 |
557 | endl |
571 | endl |
558 | 572 | ||
559 | ; assert(mode == GL_FRONT || mode == GL_BACK || mode==GL_FRONT_AND_BACK); |
573 | ; assert(mode == GL_FRONT || mode == GL_BACK || mode==GL_FRONT_AND_BACK); |
560 | 574 | ||
561 | mov dword[p],OP_Material |
575 | mov dword[p],OP_Material |
562 | mov eax,[mode] |
576 | mov eax,[mode] |
563 | mov dword[p+4],eax |
577 | mov dword[p+4],eax |
564 | mov eax,[type] |
578 | mov eax,[type] |
565 | mov dword[p+8],eax |
579 | mov dword[p+8],eax |
566 | 580 | ||
567 | mov eax,[v] |
581 | mov eax,[v] |
568 | mov ecx,[eax+8] |
582 | mov ecx,[eax+8] |
569 | mov dword[p+12],ecx |
583 | mov dword[p+12],ecx |
570 | mov ecx,[eax+4] |
584 | mov ecx,[eax+4] |
571 | mov dword[p+16],ecx |
585 | mov dword[p+16],ecx |
572 | mov ecx,[eax] |
586 | mov ecx,[eax] |
573 | mov dword[p+20],ecx |
587 | mov dword[p+20],ecx |
574 | mov ecx,[eax+12] |
588 | mov ecx,[eax+12] |
575 | mov dword[p+24],ecx |
589 | mov dword[p+24],ecx |
576 | 590 | ||
577 | cmp dword[type],GL_SHININESS |
591 | cmp dword[type],GL_SHININESS |
578 | jne @f |
592 | jne @f |
579 | mov dword[p+16],0.0 |
593 | mov dword[p+16],0.0 |
580 | mov dword[p+20],0.0 |
594 | mov dword[p+20],0.0 |
581 | mov dword[p+24],0.0 |
595 | mov dword[p+24],0.0 |
582 | @@: |
596 | @@: |
583 | 597 | ||
584 | mov eax,ebp |
598 | mov eax,ebp |
585 | sub eax,28 ;=sizeof(dd)*7 |
599 | sub eax,28 ;=sizeof(dd)*7 |
586 | stdcall gl_add_op,eax |
600 | stdcall gl_add_op,eax |
587 | ret |
601 | ret |
588 | endp |
602 | endp |
589 | 603 | ||
590 | align 4 |
604 | align 4 |
591 | proc glMaterialf uses eax, mode:dword, type:dword, v:dword |
605 | proc glMaterialf uses eax, mode:dword, type:dword, v:dword |
592 | locals |
606 | locals |
593 | p rd 7 |
607 | p rd 7 |
594 | endl |
608 | endl |
595 | mov dword[p],OP_Material |
609 | mov dword[p],OP_Material |
596 | mov eax,[mode] |
610 | mov eax,[mode] |
597 | mov dword[p+4],eax |
611 | mov dword[p+4],eax |
598 | mov eax,[type] |
612 | mov eax,[type] |
599 | mov dword[p+8],eax |
613 | mov dword[p+8],eax |
600 | mov eax,[v] |
614 | mov eax,[v] |
601 | mov dword[p+12],eax |
615 | mov dword[p+12],eax |
602 | mov dword[p+16],0.0 |
616 | mov dword[p+16],0.0 |
603 | mov dword[p+20],0.0 |
617 | mov dword[p+20],0.0 |
604 | mov dword[p+24],0.0 |
618 | mov dword[p+24],0.0 |
605 | 619 | ||
606 | mov eax,ebp |
620 | mov eax,ebp |
607 | sub eax,28 ;=sizeof(dd)*7 |
621 | sub eax,28 ;=sizeof(dd)*7 |
608 | stdcall gl_add_op,eax |
622 | stdcall gl_add_op,eax |
609 | ret |
623 | ret |
610 | endp |
624 | endp |
611 | 625 | ||
612 | align 4 |
626 | align 4 |
613 | proc glColorMaterial uses eax, mode:dword, type:dword |
627 | proc glColorMaterial uses eax, mode:dword, type:dword |
614 | locals |
628 | locals |
615 | p rd 3 |
629 | p rd 3 |
616 | endl |
630 | endl |
617 | mov dword[p],OP_ColorMaterial |
631 | mov dword[p],OP_ColorMaterial |
618 | mov eax,[mode] |
632 | mov eax,[mode] |
619 | mov dword[p+4],eax |
633 | mov dword[p+4],eax |
620 | mov eax,[type] |
634 | mov eax,[type] |
621 | mov dword[p+8],eax |
635 | mov dword[p+8],eax |
622 | 636 | ||
623 | mov eax,ebp |
637 | mov eax,ebp |
624 | sub eax,12 ;=sizeof(dd)*3 |
638 | sub eax,12 ;=sizeof(dd)*3 |
625 | stdcall gl_add_op,eax |
639 | stdcall gl_add_op,eax |
626 | ret |
640 | ret |
627 | endp |
641 | endp |
628 | 642 | ||
629 | align 4 |
643 | align 4 |
630 | proc glLightfv uses eax ecx, light:dword, type:dword, v:dword |
644 | proc glLightfv uses eax ecx, light:dword, type:dword, v:dword |
631 | locals |
645 | locals |
632 | p rd 7 |
646 | p rd 7 |
633 | endl |
647 | endl |
634 | mov dword[p],OP_Light |
648 | mov dword[p],OP_Light |
635 | mov eax,[light] |
649 | mov eax,[light] |
636 | mov dword[p+4],eax |
650 | mov dword[p+4],eax |
637 | mov eax,[type] |
651 | mov eax,[type] |
638 | mov dword[p+8],eax |
652 | mov dword[p+8],eax |
639 | 653 | ||
640 | ;TODO: 3 composants ? |
654 | ;TODO: 3 composants ? |
641 | mov eax,[v] |
655 | mov eax,[v] |
642 | mov ecx,[eax] |
656 | mov ecx,[eax] |
643 | mov dword[p+12],ecx |
657 | mov dword[p+12],ecx |
644 | mov ecx,[eax+4] |
658 | mov ecx,[eax+4] |
645 | mov dword[p+16],ecx |
659 | mov dword[p+16],ecx |
646 | mov ecx,[eax+8] |
660 | mov ecx,[eax+8] |
647 | mov dword[p+20],ecx |
661 | mov dword[p+20],ecx |
648 | mov ecx,[eax+12] |
662 | mov ecx,[eax+12] |
649 | mov dword[p+24],ecx |
663 | mov dword[p+24],ecx |
650 | 664 | ||
651 | mov eax,ebp |
665 | mov eax,ebp |
652 | sub eax,28 ;=sizeof(dd)*7 |
666 | sub eax,28 ;=sizeof(dd)*7 |
653 | stdcall gl_add_op,eax |
667 | stdcall gl_add_op,eax |
654 | ret |
668 | ret |
655 | endp |
669 | endp |
656 | 670 | ||
657 | align 4 |
671 | align 4 |
658 | proc glLightf uses eax, light:dword, type:dword, v:dword |
672 | proc glLightf uses eax, light:dword, type:dword, v:dword |
659 | locals |
673 | locals |
660 | p rd 7 |
674 | p rd 7 |
661 | endl |
675 | endl |
662 | mov dword[p],OP_Light |
676 | mov dword[p],OP_Light |
663 | mov eax,[light] |
677 | mov eax,[light] |
664 | mov dword[p+4],eax |
678 | mov dword[p+4],eax |
665 | mov eax,[type] |
679 | mov eax,[type] |
666 | mov dword[p+8],eax |
680 | mov dword[p+8],eax |
667 | mov eax,[v] |
681 | mov eax,[v] |
668 | mov dword[p+12],eax |
682 | mov dword[p+12],eax |
669 | mov dword[p+16],0.0 |
683 | mov dword[p+16],0.0 |
670 | mov dword[p+20],0.0 |
684 | mov dword[p+20],0.0 |
671 | mov dword[p+24],0.0 |
685 | mov dword[p+24],0.0 |
672 | 686 | ||
673 | mov eax,ebp |
687 | mov eax,ebp |
674 | sub eax,28 ;=sizeof(dd)*7 |
688 | sub eax,28 ;=sizeof(dd)*7 |
675 | stdcall gl_add_op,eax |
689 | stdcall gl_add_op,eax |
676 | ret |
690 | ret |
677 | endp |
691 | endp |
678 | 692 | ||
679 | align 4 |
693 | align 4 |
680 | proc glLightModeli uses eax, pname:dword, param:dword |
694 | proc glLightModeli uses eax, pname:dword, param:dword |
681 | locals |
695 | locals |
682 | p rd 6 |
696 | p rd 6 |
683 | endl |
697 | endl |
684 | mov dword[p],OP_LightModel |
698 | mov dword[p],OP_LightModel |
685 | mov eax,[pname] |
699 | mov eax,[pname] |
686 | mov dword[p+4],eax |
700 | mov dword[p+4],eax |
687 | fild dword[param] |
701 | fild dword[param] |
688 | fstp dword[p+8] ;преобразовали int во float |
702 | fstp dword[p+8] ;преобразовали int во float |
689 | 703 | ||
690 | mov dword[p+12],0.0 |
704 | mov dword[p+12],0.0 |
691 | mov dword[p+16],0.0 |
705 | mov dword[p+16],0.0 |
692 | mov dword[p+20],0.0 |
706 | mov dword[p+20],0.0 |
693 | 707 | ||
694 | mov eax,ebp |
708 | mov eax,ebp |
695 | sub eax,24 ;=sizeof(dd)*6 |
709 | sub eax,24 ;=sizeof(dd)*6 |
696 | stdcall gl_add_op,eax |
710 | stdcall gl_add_op,eax |
697 | ret |
711 | ret |
698 | endp |
712 | endp |
699 | 713 | ||
700 | align 4 |
714 | align 4 |
701 | proc glLightModelfv uses eax ecx, pname:dword, param:dword |
715 | proc glLightModelfv uses eax ecx, pname:dword, param:dword |
702 | locals |
716 | locals |
703 | p rd 6 |
717 | p rd 6 |
704 | endl |
718 | endl |
705 | mov dword[p],OP_LightModel |
719 | mov dword[p],OP_LightModel |
706 | mov eax,[pname] |
720 | mov eax,[pname] |
707 | mov dword[p+4],eax |
721 | mov dword[p+4],eax |
708 | mov eax,[param] |
722 | mov eax,[param] |
709 | mov ecx,[eax] |
723 | mov ecx,[eax] |
710 | mov dword[p+8],ecx |
724 | mov dword[p+8],ecx |
711 | mov ecx,[eax+4] |
725 | mov ecx,[eax+4] |
712 | mov dword[p+12],ecx |
726 | mov dword[p+12],ecx |
713 | mov ecx,[eax+8] |
727 | mov ecx,[eax+8] |
714 | mov dword[p+16],ecx |
728 | mov dword[p+16],ecx |
715 | mov ecx,[eax+12] |
729 | mov ecx,[eax+12] |
716 | mov dword[p+20],ecx |
730 | mov dword[p+20],ecx |
717 | 731 | ||
718 | mov eax,ebp |
732 | mov eax,ebp |
719 | sub eax,24 ;=sizeof(dd)*6 |
733 | sub eax,24 ;=sizeof(dd)*6 |
720 | stdcall gl_add_op,eax |
734 | stdcall gl_add_op,eax |
721 | ret |
735 | ret |
722 | endp |
736 | endp |
723 | 737 | ||
724 | ;/* clear */ |
738 | ; clear |
725 | 739 | ||
726 | align 4 |
740 | align 4 |
727 | proc glClear uses eax, mask:dword |
741 | proc glClear uses eax, mask:dword |
728 | locals |
742 | locals |
729 | p rd 2 |
743 | p rd 2 |
730 | endl |
744 | endl |
731 | mov dword[p],OP_Clear |
745 | mov dword[p],OP_Clear |
732 | mov eax,[mask] |
746 | mov eax,[mask] |
733 | mov dword[p+4],eax |
747 | mov dword[p+4],eax |
734 | 748 | ||
735 | mov eax,ebp |
749 | mov eax,ebp |
736 | sub eax,8 ;=sizeof(dd)*2 |
750 | sub eax,8 ;=sizeof(dd)*2 |
737 | stdcall gl_add_op,eax |
751 | stdcall gl_add_op,eax |
738 | ret |
752 | ret |
739 | endp |
753 | endp |
740 | 754 | ||
741 | align 4 |
755 | align 4 |
742 | proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword |
756 | proc glClearColor uses eax, r:dword, g:dword, b:dword, a:dword |
743 | locals |
757 | locals |
744 | p rd 5 |
758 | p rd 5 |
745 | endl |
759 | endl |
746 | mov dword[p],OP_ClearColor |
760 | mov dword[p],OP_ClearColor |
747 | mov eax,[b] |
761 | mov eax,[b] |
748 | mov dword[p+4],eax |
762 | mov dword[p+4],eax |
749 | mov eax,[g] |
763 | mov eax,[g] |
750 | mov dword[p+8],eax |
764 | mov dword[p+8],eax |
751 | mov eax,[r] |
765 | mov eax,[r] |
752 | mov dword[p+12],eax |
766 | mov dword[p+12],eax |
753 | mov eax,[a] |
767 | mov eax,[a] |
754 | mov dword[p+16],eax |
768 | mov dword[p+16],eax |
755 | 769 | ||
756 | mov eax,ebp |
770 | mov eax,ebp |
757 | sub eax,20 ;=sizeof(dd)*5 |
771 | sub eax,20 ;=sizeof(dd)*5 |
758 | stdcall gl_add_op,eax |
772 | stdcall gl_add_op,eax |
759 | ret |
773 | ret |
760 | endp |
774 | endp |
761 | 775 | ||
762 | align 4 |
776 | align 4 |
763 | proc glClearDepth uses eax, depth:dword |
777 | proc glClearDepth uses eax, depth:dword |
764 | locals |
778 | locals |
765 | p rd 2 |
779 | p rd 2 |
766 | endl |
780 | endl |
767 | mov dword[p],OP_ClearDepth |
781 | mov dword[p],OP_ClearDepth |
768 | mov eax,[depth] |
782 | mov eax,[depth] |
769 | fld qword[eax] |
783 | fld qword[eax] |
770 | fstp dword[p+4] |
784 | fstp dword[p+4] |
771 | 785 | ||
772 | mov eax,ebp |
786 | mov eax,ebp |
773 | sub eax,8 ;=sizeof(dd)*2 |
787 | sub eax,8 ;=sizeof(dd)*2 |
774 | stdcall gl_add_op,eax |
788 | stdcall gl_add_op,eax |
775 | ret |
789 | ret |
776 | endp |
790 | endp |
777 | 791 | ||
778 | ;/* textures */ |
792 | ; textures |
779 | 793 | ||
780 | align 4 |
794 | align 4 |
781 | proc glTexImage2D uses ecx edi esi,\ |
795 | proc glTexImage2D uses ecx edi esi,\ |
782 | target:dword, level:dword, components:dword,\ |
796 | target:dword, level:dword, components:dword,\ |
783 | width:dword, height:dword, border:dword,\ |
797 | width:dword, height:dword, border:dword,\ |
784 | format:dword, type:dword, pixels:dword |
798 | format:dword, type:dword, pixels:dword |
785 | locals |
799 | locals |
786 | p rd 10 |
800 | p rd 10 |
787 | endl |
801 | endl |
788 | mov dword[p],OP_TexImage2D |
802 | mov dword[p],OP_TexImage2D |
789 | mov ecx,9 |
803 | mov ecx,9 |
790 | mov esi,ebp |
804 | mov esi,ebp |
791 | add esi,8 ;указатель на стек с входными параметрами |
805 | add esi,8 ;указатель на стек с входными параметрами |
792 | mov edi,ebp |
806 | mov edi,ebp |
793 | sub edi,36 ;указатель на стек с локальным массивом |
807 | sub edi,36 ;указатель на стек с локальным массивом |
794 | rep movsd ;копирование в цикле 9-ти входных параметров |
808 | rep movsd ;копирование в цикле 9-ти входных параметров |
795 | 809 | ||
796 | mov ecx,ebp |
810 | mov ecx,ebp |
797 | sub ecx,40 ;=sizeof(dd)*10 |
811 | sub ecx,40 ;=sizeof(dd)*10 |
798 | stdcall gl_add_op,ecx |
812 | stdcall gl_add_op,ecx |
799 | ret |
813 | ret |
800 | endp |
814 | endp |
801 | 815 | ||
802 | align 4 |
816 | align 4 |
803 | proc glBindTexture uses eax, target:dword, texture:dword |
817 | proc glBindTexture uses eax, target:dword, texture:dword |
804 | locals |
818 | locals |
805 | p rd 3 |
819 | p rd 3 |
806 | endl |
820 | endl |
807 | mov dword[p],OP_BindTexture |
821 | mov dword[p],OP_BindTexture |
808 | mov eax,[target] |
822 | mov eax,[target] |
809 | mov dword[p+4],eax |
823 | mov dword[p+4],eax |
810 | mov eax,[texture] |
824 | mov eax,[texture] |
811 | mov dword[p+8],eax |
825 | mov dword[p+8],eax |
812 | 826 | ||
813 | mov eax,ebp |
827 | mov eax,ebp |
814 | sub eax,12 ;=sizeof(dd)*3 |
828 | sub eax,12 ;=sizeof(dd)*3 |
815 | stdcall gl_add_op,eax |
829 | stdcall gl_add_op,eax |
816 | ret |
830 | ret |
817 | endp |
831 | endp |
818 | 832 | ||
819 | align 4 |
833 | align 4 |
820 | proc glTexEnvi uses eax, target:dword, pname:dword, param:dword |
834 | proc glTexEnvi uses eax, target:dword, pname:dword, param:dword |
821 | locals |
835 | locals |
822 | p rd 8 |
836 | p rd 8 |
823 | endl |
837 | endl |
824 | mov dword[p],OP_TexEnv |
838 | mov dword[p],OP_TexEnv |
825 | mov eax,[target] |
839 | mov eax,[target] |
826 | mov dword[p+4],eax |
840 | mov dword[p+4],eax |
827 | mov eax,[pname] |
841 | mov eax,[pname] |
828 | mov dword[p+8],eax |
842 | mov dword[p+8],eax |
829 | mov eax,[param] |
843 | mov eax,[param] |
830 | mov dword[p+12],eax |
844 | mov dword[p+12],eax |
831 | mov dword[p+16],0.0 |
845 | mov dword[p+16],0.0 |
832 | mov dword[p+20],0.0 |
846 | mov dword[p+20],0.0 |
833 | mov dword[p+24],0.0 |
847 | mov dword[p+24],0.0 |
834 | mov dword[p+28],0.0 |
848 | mov dword[p+28],0.0 |
835 | 849 | ||
836 | mov eax,ebp |
850 | mov eax,ebp |
837 | sub eax,32 ;=sizeof(dd)*8 |
851 | sub eax,32 ;=sizeof(dd)*8 |
838 | stdcall gl_add_op,eax |
852 | stdcall gl_add_op,eax |
839 | ret |
853 | ret |
840 | endp |
854 | endp |
841 | 855 | ||
842 | align 4 |
856 | align 4 |
843 | proc glTexParameteri uses eax, target:dword, pname:dword, param:dword |
857 | proc glTexParameteri uses eax, target:dword, pname:dword, param:dword |
844 | locals |
858 | locals |
845 | p rd 8 |
859 | p rd 8 |
846 | endl |
860 | endl |
847 | mov dword[p],OP_TexParameter |
861 | mov dword[p],OP_TexParameter |
848 | mov eax,[target] |
862 | mov eax,[target] |
849 | mov dword[p+4],eax |
863 | mov dword[p+4],eax |
850 | mov eax,[pname] |
864 | mov eax,[pname] |
851 | mov dword[p+8],eax |
865 | mov dword[p+8],eax |
852 | mov eax,[param] |
866 | mov eax,[param] |
853 | mov dword[p+12],eax |
867 | mov dword[p+12],eax |
854 | mov dword[p+16],0.0 |
868 | mov dword[p+16],0.0 |
855 | mov dword[p+20],0.0 |
869 | mov dword[p+20],0.0 |
856 | mov dword[p+24],0.0 |
870 | mov dword[p+24],0.0 |
857 | mov dword[p+28],0.0 |
871 | mov dword[p+28],0.0 |
858 | 872 | ||
859 | mov eax,ebp |
873 | mov eax,ebp |
860 | sub eax,32 ;=sizeof(dd)*8 |
874 | sub eax,32 ;=sizeof(dd)*8 |
861 | stdcall gl_add_op,eax |
875 | stdcall gl_add_op,eax |
862 | ret |
876 | ret |
863 | endp |
877 | endp |
864 | 878 | ||
865 | align 4 |
879 | align 4 |
866 | proc glPixelStorei uses eax, pname:dword, param:dword |
880 | proc glPixelStorei uses eax, pname:dword, param:dword |
867 | locals |
881 | locals |
868 | p rd 3 |
882 | p rd 3 |
869 | endl |
883 | endl |
870 | mov dword[p],OP_PixelStore |
884 | mov dword[p],OP_PixelStore |
871 | mov eax,[pname] |
885 | mov eax,[pname] |
872 | mov dword[p+4],eax |
886 | mov dword[p+4],eax |
873 | mov eax,[param] |
887 | mov eax,[param] |
874 | mov dword[p+8],eax |
888 | mov dword[p+8],eax |
875 | 889 | ||
876 | mov eax,ebp |
890 | mov eax,ebp |
877 | sub eax,12 ;=sizeof(dd)*3 |
891 | sub eax,12 ;=sizeof(dd)*3 |
878 | stdcall gl_add_op,eax |
892 | stdcall gl_add_op,eax |
879 | ret |
893 | ret |
880 | endp |
894 | endp |
881 | 895 | ||
882 | ;/* selection */ |
896 | ; selection |
883 | 897 | ||
884 | align 4 |
898 | align 4 |
885 | proc glInitNames uses eax |
899 | proc glInitNames uses eax |
886 | locals |
900 | locals |
887 | p dd ? |
901 | p dd ? |
888 | endl |
902 | endl |
889 | mov dword[p],OP_InitNames |
903 | mov dword[p],OP_InitNames |
890 | 904 | ||
891 | mov eax,ebp |
905 | mov eax,ebp |
892 | sub eax,4 ;=sizeof(dd)*1 |
906 | sub eax,4 ;=sizeof(dd)*1 |
893 | stdcall gl_add_op,eax |
907 | stdcall gl_add_op,eax |
894 | ret |
908 | ret |
895 | endp |
909 | endp |
896 | 910 | ||
897 | align 4 |
911 | align 4 |
898 | proc glPushName uses eax, name:dword |
912 | proc glPushName uses eax, name:dword |
899 | locals |
913 | locals |
900 | p rd 2 |
914 | p rd 2 |
901 | endl |
915 | endl |
902 | mov dword[p],OP_PushName |
916 | mov dword[p],OP_PushName |
903 | mov eax,[name] |
917 | mov eax,[name] |
904 | mov dword[p+4],eax |
918 | mov dword[p+4],eax |
905 | 919 | ||
906 | mov eax,ebp |
920 | mov eax,ebp |
907 | sub eax,8 ;=sizeof(dd)*2 |
921 | sub eax,8 ;=sizeof(dd)*2 |
908 | stdcall gl_add_op,eax |
922 | stdcall gl_add_op,eax |
909 | ret |
923 | ret |
910 | endp |
924 | endp |
911 | 925 | ||
912 | align 4 |
926 | align 4 |
913 | proc glPopName uses eax |
927 | proc glPopName uses eax |
914 | locals |
928 | locals |
915 | p dd ? |
929 | p dd ? |
916 | endl |
930 | endl |
917 | mov dword[p],OP_PopName |
931 | mov dword[p],OP_PopName |
918 | 932 | ||
919 | mov eax,ebp |
933 | mov eax,ebp |
920 | sub eax,4 ;=sizeof(dd)*1 |
934 | sub eax,4 ;=sizeof(dd)*1 |
921 | stdcall gl_add_op,eax |
935 | stdcall gl_add_op,eax |
922 | ret |
936 | ret |
923 | endp |
937 | endp |
924 | 938 | ||
925 | align 4 |
939 | align 4 |
926 | proc glLoadName uses eax, name:dword |
940 | proc glLoadName uses eax, name:dword |
927 | locals |
941 | locals |
928 | p rd 2 |
942 | p rd 2 |
929 | endl |
943 | endl |
930 | mov dword[p],OP_LoadName |
944 | mov dword[p],OP_LoadName |
931 | mov eax,[name] |
945 | mov eax,[name] |
932 | mov dword[p+4],eax |
946 | mov dword[p+4],eax |
933 | 947 | ||
934 | mov eax,ebp |
948 | mov eax,ebp |
935 | sub eax,8 ;=sizeof(dd)*2 |
949 | sub eax,8 ;=sizeof(dd)*2 |
936 | stdcall gl_add_op,eax |
950 | stdcall gl_add_op,eax |
937 | ret |
951 | ret |
938 | endp |
952 | endp |
939 | 953 | ||
940 | align 4 |
954 | align 4 |
941 | proc glPolygonOffset uses eax, factor:dword, units:dword |
955 | proc glPolygonOffset uses eax, factor:dword, units:dword |
942 | locals |
956 | locals |
943 | p rd 3 |
957 | p rd 3 |
944 | endl |
958 | endl |
945 | mov dword[p],OP_PolygonOffset |
959 | mov dword[p],OP_PolygonOffset |
946 | mov eax,[factor] |
960 | mov eax,[factor] |
947 | mov dword[p+4],eax |
961 | mov dword[p+4],eax |
948 | mov eax,[units] |
962 | mov eax,[units] |
949 | mov dword[p+8],eax |
963 | mov dword[p+8],eax |
950 | 964 | ||
951 | mov eax,ebp |
965 | mov eax,ebp |
952 | sub eax,12 ;=sizeof(dd)*3 |
966 | sub eax,12 ;=sizeof(dd)*3 |
953 | stdcall gl_add_op,eax |
967 | stdcall gl_add_op,eax |
954 | ret |
968 | ret |
955 | endp |
969 | endp |
956 | 970 | ||
957 | ;/* Special Functions */ |
971 | ; Special Functions |
958 | 972 | ||
959 | align 4 |
973 | align 4 |
960 | proc glCallList uses eax, list:dword |
974 | proc glCallList uses eax, list:dword |
961 | locals |
975 | locals |
962 | p rd 2 |
976 | p rd 2 |
963 | endl |
977 | endl |
964 | mov dword[p],OP_CallList |
978 | mov dword[p],OP_CallList |
965 | mov eax,[list] |
979 | mov eax,[list] |
966 | mov dword[p+4],eax |
980 | mov dword[p+4],eax |
967 | 981 | ||
968 | mov eax,ebp |
982 | mov eax,ebp |
969 | sub eax,8 ;=sizeof(dd)*2 |
983 | sub eax,8 ;=sizeof(dd)*2 |
970 | stdcall gl_add_op,eax |
984 | stdcall gl_add_op,eax |
971 | ret |
985 | ret |
972 | endp |
986 | endp |
973 | 987 | ||
974 | align 4 |
988 | align 4 |
975 | proc glFlush ;(void) |
989 | proc glFlush ;(void) |
976 | ;nothing to do |
990 | ;nothing to do |
977 | ret |
991 | ret |
978 | endp |
992 | endp |
979 | 993 | ||
980 | align 4 |
994 | align 4 |
981 | proc glHint uses eax, target:dword, mode:dword |
995 | proc glHint uses eax, target:dword, mode:dword |
982 | locals |
996 | locals |
983 | p rd 3 |
997 | p rd 3 |
984 | endl |
998 | endl |
985 | mov dword[p],OP_Hint |
999 | mov dword[p],OP_Hint |
986 | mov eax,[target] |
1000 | mov eax,[target] |
987 | mov dword[p+4],eax |
1001 | mov dword[p+4],eax |
988 | mov eax,[mode] |
1002 | mov eax,[mode] |
989 | mov dword[p+8],eax |
1003 | mov dword[p+8],eax |
990 | 1004 | ||
991 | mov eax,ebp |
1005 | mov eax,ebp |
992 | sub eax,12 ;=sizeof(dd)*3 |
1006 | sub eax,12 ;=sizeof(dd)*3 |
993 | stdcall gl_add_op,eax |
1007 | stdcall gl_add_op,eax |
994 | ret |
1008 | ret |
995 | endp |
1009 | endp |
996 | 1010 | ||
997 | ; Non standard functions |
1011 | ; Non standard functions |
998 | 1012 | ||
999 | align 4 |
1013 | align 4 |
1000 | proc glDebug uses eax, mode:dword |
1014 | proc glDebug uses eax, mode:dword |
1001 | stdcall gl_get_context ;после вызова функции в eax указатель на GLContext |
1015 | stdcall gl_get_context ;после вызова функции в eax указатель на GLContext |
1002 | push dword[mode] |
1016 | push dword[mode] |
1003 | pop dword[eax+offs_cont_print_flag] |
1017 | pop dword[eax+offs_cont_print_flag] |
1004 | ret |
1018 | ret |
1005 | endp |
1019 | endp |