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