Rev 5175 | Rev 5218 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5175 | Rev 5187 | ||
---|---|---|---|
1 | format MS COFF |
1 | format MS COFF |
2 | public EXPORTS |
2 | public EXPORTS |
3 | section '.flat' code readable align 16 |
3 | section '.flat' code readable align 16 |
4 | 4 | ||
5 | include '../../../../../programs/proc32.inc' |
5 | include '../../../../../programs/proc32.inc' |
6 | include '../../../../../programs/macros.inc' |
6 | include '../../../../../programs/macros.inc' |
7 | 7 | ||
8 | DEBUG equ 0 |
8 | DEBUG equ 0 |
9 | 9 | ||
10 | include 'zgl.inc' |
10 | include 'zgl.inc' |
11 | include 'zmath.asm' |
11 | include 'zmath.asm' |
12 | include 'clip.asm' |
12 | include 'clip.asm' |
13 | include 'vertex.asm' |
13 | include 'vertex.asm' |
14 | include 'api.asm' |
14 | include 'api.asm' |
15 | include 'list.asm' |
15 | include 'list.asm' |
16 | include 'init.asm' |
16 | include 'init.asm' |
17 | include 'matrix.asm' |
17 | include 'matrix.asm' |
18 | include 'texture.asm' |
18 | include 'texture.asm' |
19 | include 'misc.asm' |
19 | include 'misc.asm' |
20 | include 'clear.asm' |
20 | include 'clear.asm' |
21 | include 'light.asm' |
21 | include 'light.asm' |
22 | include 'select.asm' |
22 | include 'select.asm' |
23 | ;include 'get.asm' |
23 | ;include 'get.asm' |
24 | ;include 'error.asm' |
24 | ;include 'error.asm' |
25 | include 'zbuffer.asm' |
25 | include 'zbuffer.asm' |
26 | include 'zline.asm' |
26 | include 'zline.asm' |
27 | ;include 'zdither.asm' |
27 | ;include 'zdither.asm' |
28 | include 'ztriangle.asm' |
28 | include 'ztriangle.asm' |
29 | ;include 'image_util.asm' |
29 | ;include 'image_util.asm' |
30 | ;include 'msghandling.asm' |
30 | ;include 'msghandling.asm' |
31 | include 'arrays.asm' |
31 | include 'arrays.asm' |
32 | 32 | ||
33 | include 'kosgl.asm' |
33 | include 'kosgl.asm' |
34 | 34 | ||
35 | if DEBUG |
35 | if DEBUG |
36 | include 'info_fun_float.inc' |
36 | include 'info_fun_float.inc' |
37 | end if |
37 | end if |
38 | 38 | ||
39 | ; *** |
39 | ; *** |
40 | glVertex2d: ;(double ,double) |
40 | glVertex2d: ;(double ,double) |
41 | glVertex2fv: ;(float *) |
41 | glVertex2fv: ;(float *) |
42 | glVertex2dv: ;(double *) |
42 | glVertex2dv: ;(double *) |
43 | glVertex3d: ;(double ,double ,double) |
43 | glVertex3d: ;(double ,double ,double) |
44 | glVertex3dv: ;(double *) |
44 | glVertex3dv: ;(double *) |
45 | glVertex4d: ;(double ,double ,double, double ) |
45 | glVertex4d: ;(double ,double ,double, double ) |
46 | glVertex4fv: ;(float *) |
46 | glVertex4fv: ;(float *) |
47 | glVertex4dv: ;(double *) |
47 | glVertex4dv: ;(double *) |
48 | glColor3d: ;(double ,double ,double) |
48 | glColor3d: ;(double ,double ,double) |
49 | glColor3dv: ;(double *) |
49 | glColor3dv: ;(double *) |
50 | glColor4d: ;(double ,double ,double, double ) |
50 | glColor4d: ;(double ,double ,double, double ) |
51 | glColor4dv: ;(double *) |
51 | glColor4dv: ;(double *) |
52 | glNormal3d: ;(double ,double ,double) |
52 | glNormal3d: ;(double ,double ,double) |
53 | glNormal3dv: ;(double *) |
53 | glNormal3dv: ;(double *) |
54 | glTexCoord1f: ;(float) |
54 | glTexCoord1f: ;(float) |
55 | glTexCoord1d: ;(double) |
55 | glTexCoord1d: ;(double) |
56 | glTexCoord1fv: ;(float *) |
56 | glTexCoord1fv: ;(float *) |
57 | glTexCoord1dv: ;(double *) |
57 | glTexCoord1dv: ;(double *) |
58 | glTexCoord2d: ;(double ,double) |
58 | glTexCoord2d: ;(double ,double) |
59 | glTexCoord2dv: ;(double *) |
59 | glTexCoord2dv: ;(double *) |
60 | glTexCoord3f: ;(float ,float ,float) |
60 | glTexCoord3f: ;(float ,float ,float) |
61 | glTexCoord3d: ;(double ,double ,double) |
61 | glTexCoord3d: ;(double ,double ,double) |
62 | glTexCoord3fv: ;(float *) |
62 | glTexCoord3fv: ;(float *) |
63 | glTexCoord3dv: ;(double *) |
63 | glTexCoord3dv: ;(double *) |
64 | glTexCoord4d: ;(double ,double ,double, double ) |
64 | glTexCoord4d: ;(double ,double ,double, double ) |
65 | glTexCoord4fv: ;(float *) |
65 | glTexCoord4fv: ;(float *) |
66 | glTexCoord4dv: ;(double *) |
66 | glTexCoord4dv: ;(double *) |
67 | glGenTextures: ;(int n, unsigned int *textures) |
67 | glGenTextures: ;(int n, unsigned int *textures) |
68 | glDeleteTextures: ;(int n, const unsigned int *textures) |
68 | glDeleteTextures: ;(int n, const unsigned int *textures) |
69 | glGetIntegerv: ;(int pname,int *params) |
69 | glGetIntegerv: ;(int pname,int *params) |
70 | glGetFloatv: ;(int pname, float *v) |
70 | glGetFloatv: ;(int pname, float *v) |
71 | 71 | ||
72 | ; *** |
72 | ; *** |
73 | glopLight: |
73 | glopLight: |
74 | 74 | ||
75 | if DEBUG |
75 | if DEBUG |
76 | align 4 |
76 | align 4 |
77 | txt_nl db 13,10,0 |
77 | txt_nl db 13,10,0 |
78 | txt_sp db ' ',0 |
78 | txt_sp db ' ',0 |
79 | txt_op db 'Op_code',0 |
79 | txt_op db 'Op_code',0 |
80 | txt_zp_sp db ', ',0 |
80 | txt_zp_sp db ', ',0 |
81 | m_1 db '(1)',13,10,0 |
81 | m_1 db '(1)',13,10,0 |
82 | m_2 db '(2)',13,10,0 |
82 | m_2 db '(2)',13,10,0 |
83 | m_3 db '(3)',13,10,0 |
83 | m_3 db '(3)',13,10,0 |
84 | m_4 db '(4)',13,10,0 |
84 | m_4 db '(4)',13,10,0 |
85 | m_5 db '(5)',13,10,0 |
85 | m_5 db '(5)',13,10,0 |
- | 86 | m_6 db '(6)',13,10,0 |
|
- | 87 | m_7 db '(7)',13,10,0 |
|
- | 88 | m_8 db '(8)',13,10,0 |
|
- | 89 | m_9 db '(9)',13,10,0 |
|
86 | 90 | ||
87 | buf_param rb 80 |
91 | buf_param rb 80 |
88 | 92 | ||
89 | align 4 |
93 | align 4 |
90 | proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n_len:dword |
94 | proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n_len:dword |
91 | mov esi,dword[str2] |
95 | mov esi,dword[str2] |
92 | mov ecx,dword[n_len] |
96 | mov ecx,dword[n_len] |
93 | mov edi,dword[str1] |
97 | mov edi,dword[str1] |
94 | stdcall str_len,edi |
98 | stdcall str_len,edi |
95 | add edi,eax |
99 | add edi,eax |
96 | cld |
100 | cld |
97 | repne movsb |
101 | repne movsb |
98 | mov byte[edi],0 |
102 | mov byte[edi],0 |
99 | ret |
103 | ret |
100 | endp |
104 | endp |
101 | 105 | ||
102 | ;input: |
106 | ;input: |
103 | ; eax - число |
107 | ; eax - число |
104 | ; edi - буфер для строки |
108 | ; edi - буфер для строки |
105 | ; len - длинна буфера |
109 | ; len - длинна буфера |
106 | ;output: |
110 | ;output: |
107 | align 4 |
111 | align 4 |
108 | proc convert_int_to_str, len:dword |
112 | proc convert_int_to_str, len:dword |
109 | pushad |
113 | pushad |
110 | mov esi,[len] |
114 | mov esi,[len] |
111 | add esi,edi |
115 | add esi,edi |
112 | dec esi |
116 | dec esi |
113 | call .str |
117 | call .str |
114 | popad |
118 | popad |
115 | ret |
119 | ret |
116 | endp |
120 | endp |
117 | 121 | ||
118 | align 4 |
122 | align 4 |
119 | .str: |
123 | .str: |
120 | mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число |
124 | mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число |
121 | ;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной |
125 | ;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной |
122 | cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax |
126 | cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax |
123 | jb @f |
127 | jb @f |
124 | xor edx,edx ;очистить edx |
128 | xor edx,edx ;очистить edx |
125 | div ecx ;разделить - остаток в edx |
129 | div ecx ;разделить - остаток в edx |
126 | push edx ;положить в стек |
130 | push edx ;положить в стек |
127 | ;dec edi ;смещение необходимое для записи с конца строки |
131 | ;dec edi ;смещение необходимое для записи с конца строки |
128 | call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx |
132 | call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx |
129 | pop eax |
133 | pop eax |
130 | @@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная)) |
134 | @@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная)) |
131 | cmp edi,esi |
135 | cmp edi,esi |
132 | jge @f |
136 | jge @f |
133 | or al,0x30 ;данная команда короче чем две выше |
137 | or al,0x30 ;данная команда короче чем две выше |
134 | stosb ;записать элемент из регистра al в ячеку памяти es:edi |
138 | stosb ;записать элемент из регистра al в ячеку памяти es:edi |
135 | mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор |
139 | mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор |
136 | @@: |
140 | @@: |
137 | ret ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться |
141 | ret ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться |
138 | end if |
142 | end if |
139 | 143 | ||
140 | align 4 |
144 | align 4 |
141 | f_kosgl_1 db 'kosglMakeCurrent',0 |
145 | f_kosgl_1 db 'kosglMakeCurrent',0 |
142 | err_0 db 'Error while initializing Z buffer',13,10,0 |
146 | err_0 db 'Error while initializing Z buffer',13,10,0 |
143 | f_zb_opn db ' ZB_open',0 |
147 | f_zb_opn db ' ZB_open',0 |
144 | err_1 db 'gl_malloc(sizeof.ZBuffer)==0',13,10,0 |
148 | err_1 db 'gl_malloc(sizeof.ZBuffer)==0',13,10,0 |
145 | err_2 db 'gl_malloc(xsize*ysize*4)==0',13,10,0 |
149 | err_2 db 'gl_malloc(xsize*ysize*4)==0',13,10,0 |
146 | err_3 db 'bit mode not correct',13,10,0 |
150 | err_3 db 'bit mode not correct',13,10,0 |
147 | f_vp db ' glViewport',0 |
151 | f_vp db ' glViewport',0 |
148 | err_4 db 'error while resizing display',13,10,0 |
152 | err_4 db 'error while resizing display',13,10,0 |
149 | err_5 db 'size too small',13,10,0 |
153 | err_5 db 'size too small',13,10,0 |
150 | f_clipcode db ' gl_clipcode',0 |
154 | f_clipcode db ' gl_clipcode',0 |
151 | f_ttv db ' gl_transform_to_viewport',0 |
155 | f_ttv db ' gl_transform_to_viewport',0 |
152 | f_vt db ' gl_vertex_transform',0 |
156 | f_vt db ' gl_vertex_transform',0 |
153 | f_ev db ' gl_eval_viewport',0 |
157 | f_ev db ' gl_eval_viewport',0 |
154 | f_zbz db ' ZB_line_z',0 |
158 | f_zbz db ' ZB_line_z',0 |
155 | f_zb db ' ZB_line',0 |
159 | f_zb db ' ZB_line',0 |
156 | f_cl1 db ' ClipLine1',0 |
160 | f_cl1 db ' ClipLine1',0 |
157 | f_m4m db 'gl_M4_Mul',0 |
161 | f_m4m db 'gl_M4_Mul',0 |
158 | f_m4ml db 'gl_M4_MulLeft',0 |
162 | f_m4ml db 'gl_M4_MulLeft',0 |
159 | f_find_l db 'find_list',0 |
163 | f_find_l db 'find_list',0 |
160 | f_alloc_l db 'alloc_list',0 |
164 | f_alloc_l db 'alloc_list',0 |
161 | f_is_l db 'glIsList',0 |
165 | f_is_l db 'glIsList',0 |
162 | f_gen_l db 'glGenLists',0 |
166 | f_gen_l db 'glGenLists',0 |
163 | f_end_l db 'glEndList',0 |
167 | f_end_l db 'glEndList',0 |
- | 168 | ;f_fill_trf db 'ZB_fillTriangleFlat',0 |
|
- | 169 | ;f_fill_trrgb db 'ZB_fillTriangleSmooth',0 |
|
- | 170 | f_fill_tr db 'ZB_fillTriangle...',0 |
|
- | 171 | f_fill_tr_nl db ' lines',0 |
|
- | 172 | f_fill_tr_nll db ' len',0 |
|
164 | 173 | ||
165 | align 4 |
174 | align 4 |
166 | proc dbg_print, fun:dword, mes:dword |
175 | proc dbg_print, fun:dword, mes:dword |
167 | pushad |
176 | pushad |
168 | mov eax,63 |
177 | mov eax,63 |
169 | mov ebx,1 |
178 | mov ebx,1 |
170 | 179 | ||
171 | mov esi,[fun] |
180 | mov esi,[fun] |
172 | @@: |
181 | @@: |
173 | mov cl,byte[esi] |
182 | mov cl,byte[esi] |
174 | int 0x40 |
183 | int 0x40 |
175 | inc esi |
184 | inc esi |
176 | cmp byte[esi],0 |
185 | cmp byte[esi],0 |
177 | jne @b |
186 | jne @b |
178 | mov cl,':' |
187 | mov cl,':' |
179 | int 0x40 |
188 | int 0x40 |
180 | mov cl,' ' |
189 | mov cl,' ' |
181 | int 0x40 |
190 | int 0x40 |
182 | mov esi,[mes] |
191 | mov esi,[mes] |
183 | @@: |
192 | @@: |
184 | mov cl,byte[esi] |
193 | mov cl,byte[esi] |
185 | int 0x40 |
194 | int 0x40 |
186 | inc esi |
195 | inc esi |
187 | cmp byte[esi],0 |
196 | cmp byte[esi],0 |
188 | jne @b |
197 | jne @b |
189 | popad |
198 | popad |
190 | ret |
199 | ret |
191 | endp |
200 | endp |
192 | 201 | ||
193 | align 16 |
202 | align 16 |
194 | EXPORTS: |
203 | EXPORTS: |
195 | macro E_LIB n |
204 | macro E_LIB n |
196 | { |
205 | { |
197 | dd sz_#n, n |
206 | dd sz_#n, n |
198 | } |
207 | } |
199 | include 'export.inc' |
208 | include 'export.inc' |
200 | dd 0,0 |
209 | dd 0,0 |
201 | macro E_LIB n |
210 | macro E_LIB n |
202 | { |
211 | { |
203 | sz_#n db `n,0 |
212 | sz_#n db `n,0 |
204 | } |
213 | } |
205 | include 'export.inc' |
214 | include 'export.inc' |