Subversion Repositories Kolibri OS

Rev

Rev 5153 | Rev 5387 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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