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