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