Subversion Repositories Kolibri OS

Rev

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