Rev 6189 | Rev 8174 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6189 | Rev 6200 | ||
---|---|---|---|
1 | use32 |
1 | use32 |
2 | org 0x0 |
2 | org 0x0 |
3 | db 'MENUET01' |
3 | db 'MENUET01' |
4 | dd 1,start,i_end |
- | |
5 | dd mem,stacktop |
- | |
6 | dd 0,cur_dir_path |
4 | dd 1,start,i_end,mem,stacktop,0,cur_dir_path |
7 | 5 | ||
8 | include '../../../../../proc32.inc' |
6 | include '../../../../../proc32.inc' |
9 | include '../../../../../macros.inc' |
7 | include '../../../../../macros.inc' |
10 | include '../../../../../KOSfuncs.inc' |
8 | include '../../../../../KOSfuncs.inc' |
11 | include '../../../../../develop/libraries/box_lib/load_lib.mac' |
- | |
12 | include '../../../../../dll.inc' |
9 | include '../../../../../load_img.inc' |
13 | include '../opengl_const.inc' |
10 | include '../opengl_const.inc' |
14 | include '../../../../../develop/info3ds/info_fun_float.inc' |
11 | include '../../../../../develop/info3ds/info_fun_float.inc' |
15 | 12 | ||
16 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
13 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
17 | - | ||
18 | struct FileInfoBlock |
- | |
19 | Function dd ? |
- | |
20 | Position dd ? |
- | |
21 | Flags dd ? |
- | |
22 | Count dd ? |
- | |
23 | Buffer dd ? |
- | |
24 | db ? |
- | |
25 | FileName dd ? |
- | |
26 | ends |
- | |
27 | 14 | ||
28 | align 4 |
- | |
29 | open_b rb 560 |
15 | align 4 |
30 | image_data_toolbar dd 0 |
16 | image_data_toolbar dd 0 |
31 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
17 | IMAGE_TOOLBAR_ICON_SIZE equ 21*21*3 |
32 | - | ||
33 | ;макрос для загрузки изображений |
- | |
34 | ; path - может быть переменной или строковым параметром |
- | |
35 | ; buf - переменная куда будет записан указатель на изображение в формате rgb |
- | |
36 | ; img_w, img_h - переменные куда будут записаны размеры открываемого |
- | |
37 | ; изображения, не обязательные параметры |
- | |
38 | macro load_image_file path, buf, img_w, img_h |
- | |
39 | { |
- | |
40 | if path eqtype '' ;проверяем задан ли строкой параметр path |
- | |
41 | local .path_str |
- | |
42 | jmp @f |
- | |
43 | .path_str db path ;формируем локальную переменную |
- | |
44 | db 0 |
- | |
45 | @@: |
- | |
46 | ;32 - стандартный адрес по которому должен быть буфер с системным путем |
- | |
47 | copy_path .path_str,[32],file_name,0 |
- | |
48 | else |
- | |
49 | copy_path path,[32],file_name,0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой |
- | |
50 | end if |
- | |
51 | mov [run_file_70.Function], SSF_GET_INFO |
- | |
52 | mov [run_file_70.Position], 0 |
- | |
53 | mov [run_file_70.Flags], 0 |
- | |
54 | mov dword[run_file_70.Count], 0 |
- | |
55 | mov dword[run_file_70.Buffer], open_b |
- | |
56 | mov byte[run_file_70+20], 0 |
- | |
57 | mov dword[run_file_70.FileName], file_name |
- | |
58 | mcall SF_FILE,run_file_70 |
- | |
59 | or eax,eax |
- | |
60 | jnz @f |
- | |
61 | - | ||
62 | mov ecx,dword[open_b+32] ;+32 qword: размер файла в байтах |
- | |
63 | stdcall mem.Alloc,ecx ;выделяем память для изображения |
- | |
64 | mov [buf],eax |
- | |
65 | mov [run_file_70.Function], SSF_READ_FILE |
- | |
66 | mov [run_file_70.Position], 0 |
- | |
67 | mov [run_file_70.Flags], 0 |
- | |
68 | mov [run_file_70.Count], ecx |
- | |
69 | mov [run_file_70.Buffer], eax |
- | |
70 | mov byte[run_file_70+20], 0 |
- | |
71 | mov [run_file_70.FileName], file_name |
- | |
72 | mcall SF_FILE,run_file_70 ;загружаем файл изображения |
- | |
73 | cmp ebx,0xffffffff |
- | |
74 | je @f |
- | |
75 | ;определяем вид изображения и пишем его параметры |
- | |
76 | stdcall [img_decode], [buf],ebx,0 |
- | |
77 | mov ebx,eax |
- | |
78 | ;определяем размер декодированного изображения |
- | |
79 | mov ecx,[eax+4] ;+4 = image width |
- | |
80 | if img_w eq |
- | |
81 | else |
- | |
82 | mov dword[img_w],ecx |
- | |
83 | end if |
- | |
84 | if img_h eq |
- | |
85 | imul ecx,[eax+8] ;+8 = image height |
- | |
86 | else |
- | |
87 | mov eax,[eax+8] ;+8 = image height |
- | |
88 | mov dword[img_h],eax |
- | |
89 | imul ecx,eax |
- | |
90 | end if |
- | |
91 | imul ecx,3 ;need for r,g,b |
- | |
92 | stdcall mem.ReAlloc,[buf],ecx ;изменяем размер для буфера |
- | |
93 | mov [buf],eax |
- | |
94 | stdcall [img_to_rgb2], ebx,[buf] ;преобразуем изображение к формату rgb |
- | |
95 | stdcall [img_destroy], ebx ;удаляем временный буфер с параметрами изображения |
- | |
96 | @@: |
- | |
97 | } |
- | |
98 | 18 | ||
99 | offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc' |
19 | offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc' |
100 | 20 | ||
101 | align 4 |
21 | align 4 |
102 | start: |
22 | start: |
103 | load_libraries l_libs_start,l_libs_end |
23 | load_libraries l_libs_start,l_libs_end |
104 | ;проверка на сколько удачно загузились библиотеки |
24 | ;проверка на сколько удачно загузились библиотеки |
105 | mov ebp,lib_0 |
25 | mov ebp,lib_0 |
106 | .test_lib_open: |
26 | .test_lib_open: |
107 | cmp dword [ebp+ll_struc_size-4],0 |
27 | cmp dword [ebp+ll_struc_size-4],0 |
108 | jz @f |
28 | jz @f |
109 | mcall SF_TERMINATE_PROCESS |
29 | mcall SF_TERMINATE_PROCESS |
110 | @@: |
30 | @@: |
111 | add ebp,ll_struc_size |
31 | add ebp,ll_struc_size |
112 | cmp ebp,l_libs_end |
32 | cmp ebp,l_libs_end |
113 | jl .test_lib_open |
33 | jl .test_lib_open |
114 | 34 | ||
115 | mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors |
35 | mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors |
116 | mcall SF_SET_EVENTS_MASK,0x27 |
36 | mcall SF_SET_EVENTS_MASK,0x27 |
117 | 37 | ||
118 | stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1 |
38 | stdcall [kosglMakeCurrent], 5,30,[buf_ogl.w],[buf_ogl.h],ctx1 |
119 | stdcall [glEnable], GL_DEPTH_TEST |
39 | stdcall [glEnable], GL_DEPTH_TEST |
120 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
40 | stdcall [glEnable], GL_NORMALIZE ;делам нормали одинаковой величины во избежание артефактов |
121 | stdcall [gluNewQuadric] |
41 | stdcall [gluNewQuadric] |
122 | mov [qObj],eax |
42 | mov [qObj],eax |
123 | stdcall [gluQuadricDrawStyle], eax,GLU_FILL |
43 | stdcall [gluQuadricDrawStyle], eax,GLU_FILL |
124 | stdcall [gluQuadricTexture], eax,GL_TRUE |
44 | stdcall [gluQuadricTexture], eax,GL_TRUE |
125 | 45 | ||
126 | stdcall [glClearColor], 0.0,0.0,0.0,0.0 |
46 | stdcall [glClearColor], 0.0,0.0,0.0,0.0 |
127 | stdcall [glShadeModel], GL_SMOOTH |
47 | stdcall [glShadeModel], GL_SMOOTH |
128 | 48 | ||
129 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
49 | mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext |
130 | mov eax,[eax] ;eax -> ZBuffer |
50 | mov eax,[eax] ;eax -> ZBuffer |
131 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
51 | mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf |
132 | mov dword[buf_ogl],eax |
52 | mov dword[buf_ogl],eax |
133 | 53 | ||
134 | load_image_file 'font8x9.bmp', image_data_toolbar |
54 | load_image_file 'font8x9.bmp', image_data_toolbar, buf_1.w,buf_1.h |
135 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
55 | stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;создаем буфер |
136 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
56 | stdcall mem.Free,[image_data_toolbar] ;освобождаем память |
137 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
57 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
138 | stdcall [buf2d_convert_text_matrix], buf_1 |
58 | stdcall [buf2d_convert_text_matrix], buf_1 |
139 | 59 | ||
140 | load_image_file 'toolb_1.png', image_data_toolbar |
60 | load_image_file 'toolb_1.png', image_data_toolbar |
141 | load_image_file 'text_3.png', texture, text_w,text_h ;открытие файла текстуры |
61 | load_image_file 'text_3.png', texture, text_w,text_h ;открытие файла текстуры |
142 | 62 | ||
143 | ;* Setup texturing * |
63 | ;* Setup texturing * |
144 | stdcall [glTexEnvi], GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL |
64 | stdcall [glTexEnvi], GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL |
145 | 65 | ||
146 | ;* generate texture object IDs * |
66 | ;* generate texture object IDs * |
147 | stdcall [glGenTextures], 1, TexObj |
67 | stdcall [glGenTextures], 1, TexObj |
148 | stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj] |
68 | stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj] |
149 | stdcall [glTexImage2D], GL_TEXTURE_2D, 0, 3, [text_w], [text_h],\ |
69 | stdcall [glTexImage2D], GL_TEXTURE_2D, 0, 3, [text_w], [text_h],\ |
150 | 0, GL_RGB, GL_UNSIGNED_BYTE, [texture] |
70 | 0, GL_RGB, GL_UNSIGNED_BYTE, [texture] |
151 | 71 | ||
152 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST |
72 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST |
153 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST |
73 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST |
154 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT |
74 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT |
155 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT |
75 | stdcall [glTexParameteri], GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT |
156 | stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj] |
76 | stdcall [glBindTexture], GL_TEXTURE_2D, [TexObj] |
157 | stdcall [glEnable], GL_TEXTURE_2D |
77 | stdcall [glEnable], GL_TEXTURE_2D |
158 | 78 | ||
159 | call draw_3d |
79 | call draw_3d |
160 | 80 | ||
161 | align 4 |
81 | align 4 |
162 | red_win: |
82 | red_win: |
163 | call draw_window |
83 | call draw_window |
164 | 84 | ||
165 | align 4 |
85 | align 4 |
166 | still: |
86 | still: |
167 | mcall SF_WAIT_EVENT |
87 | mcall SF_WAIT_EVENT |
168 | cmp al,1 |
88 | cmp al,1 |
169 | jz red_win |
89 | jz red_win |
170 | cmp al,2 |
90 | cmp al,2 |
171 | jz key |
91 | jz key |
172 | cmp al,3 |
92 | cmp al,3 |
173 | jz button |
93 | jz button |
174 | jmp still |
94 | jmp still |
175 | 95 | ||
176 | align 4 |
96 | align 4 |
177 | draw_window: |
97 | draw_window: |
178 | pushad |
98 | pushad |
179 | mcall SF_REDRAW,SSF_BEGIN_DRAW |
99 | mcall SF_REDRAW,SSF_BEGIN_DRAW |
180 | mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption |
100 | mcall SF_CREATE_WINDOW,(50 shl 16)+420,(30 shl 16)+410,0x33ffffff,,caption |
181 | 101 | ||
182 | mov esi,[sc.work_button] |
102 | mov esi,[sc.work_button] |
183 | mcall SF_DEFINE_BUTTON,(6 shl 16)+19,(6 shl 16)+19,3+0x40000000 ;масштаб + |
103 | mcall SF_DEFINE_BUTTON,(6 shl 16)+19,(6 shl 16)+19,3+0x40000000 ;масштаб + |
184 | mcall ,(36 shl 16)+19,,4+0x40000000 ;масштаб - |
104 | mcall ,(36 shl 16)+19,,4+0x40000000 ;масштаб - |
185 | 105 | ||
186 | mov ebx,[image_data_toolbar] |
106 | mov ebx,[image_data_toolbar] |
187 | add ebx,3*IMAGE_TOOLBAR_ICON_SIZE |
107 | add ebx,3*IMAGE_TOOLBAR_ICON_SIZE |
188 | mcall SF_PUT_IMAGE,,(21 shl 16)+21,(5 shl 16)+5 ;масштаб + |
108 | mcall SF_PUT_IMAGE,,(21 shl 16)+21,(5 shl 16)+5 ;масштаб + |
189 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
109 | add ebx,IMAGE_TOOLBAR_ICON_SIZE |
190 | mcall ,,,(35 shl 16)+5 ;масштаб - |
110 | mcall ,,,(35 shl 16)+5 ;масштаб - |
191 | 111 | ||
192 | stdcall [kosglSwapBuffers] |
112 | stdcall [kosglSwapBuffers] |
193 | mcall SF_REDRAW,SSF_END_DRAW |
113 | mcall SF_REDRAW,SSF_END_DRAW |
194 | popad |
114 | popad |
195 | ret |
115 | ret |
196 | 116 | ||
197 | align 4 |
117 | align 4 |
198 | key: |
118 | key: |
199 | mcall SF_GET_KEY |
119 | mcall SF_GET_KEY |
200 | 120 | ||
201 | cmp ah,27 ;Esc |
121 | cmp ah,27 ;Esc |
202 | je button.exit |
122 | je button.exit |
203 | 123 | ||
204 | cmp ah,61 ;+ |
124 | cmp ah,61 ;+ |
205 | jne @f |
125 | jne @f |
206 | call but_zoom_p |
126 | call but_zoom_p |
207 | jmp still |
127 | jmp still |
208 | @@: |
128 | @@: |
209 | cmp ah,45 ;- |
129 | cmp ah,45 ;- |
210 | jne @f |
130 | jne @f |
211 | call but_zoom_m |
131 | call but_zoom_m |
212 | jmp still |
132 | jmp still |
213 | @@: |
133 | @@: |
214 | cmp ah,176 ;Left |
134 | cmp ah,176 ;Left |
215 | jne @f |
135 | jne @f |
216 | finit |
136 | finit |
217 | fld dword[angle_y] |
137 | fld dword[angle_y] |
218 | fadd dword[delt_size] |
138 | fadd dword[delt_size] |
219 | fst dword[angle_y] |
139 | fst dword[angle_y] |
220 | mov word[NumberSymbolsAD],2 |
140 | mov word[NumberSymbolsAD],2 |
221 | fstp qword[Data_Double] |
141 | fstp qword[Data_Double] |
222 | call DoubleFloat_to_String |
142 | call DoubleFloat_to_String |
223 | mov byte[txt_angle_y.v],0 |
143 | mov byte[txt_angle_y.v],0 |
224 | stdcall str_cat, txt_angle_y.v,Data_String |
144 | stdcall str_cat, txt_angle_y.v,Data_String |
225 | call draw_3d |
145 | call draw_3d |
226 | stdcall [kosglSwapBuffers] |
146 | stdcall [kosglSwapBuffers] |
227 | @@: |
147 | @@: |
228 | cmp ah,179 ;Right |
148 | cmp ah,179 ;Right |
229 | jne @f |
149 | jne @f |
230 | finit |
150 | finit |
231 | fld dword[angle_y] |
151 | fld dword[angle_y] |
232 | fsub dword[delt_size] |
152 | fsub dword[delt_size] |
233 | fst dword[angle_y] |
153 | fst dword[angle_y] |
234 | mov word[NumberSymbolsAD],2 |
154 | mov word[NumberSymbolsAD],2 |
235 | fstp qword[Data_Double] |
155 | fstp qword[Data_Double] |
236 | call DoubleFloat_to_String |
156 | call DoubleFloat_to_String |
237 | mov byte[txt_angle_y.v],0 |
157 | mov byte[txt_angle_y.v],0 |
238 | stdcall str_cat, txt_angle_y.v,Data_String |
158 | stdcall str_cat, txt_angle_y.v,Data_String |
239 | call draw_3d |
159 | call draw_3d |
240 | stdcall [kosglSwapBuffers] |
160 | stdcall [kosglSwapBuffers] |
241 | @@: |
161 | @@: |
242 | cmp ah,178 ;Up |
162 | cmp ah,178 ;Up |
243 | jne @f |
163 | jne @f |
244 | finit |
164 | finit |
245 | fld dword[angle_x] |
165 | fld dword[angle_x] |
246 | fadd dword[delt_size] |
166 | fadd dword[delt_size] |
247 | fst dword[angle_x] |
167 | fst dword[angle_x] |
248 | mov word[NumberSymbolsAD],2 |
168 | mov word[NumberSymbolsAD],2 |
249 | fstp qword[Data_Double] |
169 | fstp qword[Data_Double] |
250 | call DoubleFloat_to_String |
170 | call DoubleFloat_to_String |
251 | mov byte[txt_angle_x.v],0 |
171 | mov byte[txt_angle_x.v],0 |
252 | stdcall str_cat, txt_angle_x.v,Data_String |
172 | stdcall str_cat, txt_angle_x.v,Data_String |
253 | call draw_3d |
173 | call draw_3d |
254 | stdcall [kosglSwapBuffers] |
174 | stdcall [kosglSwapBuffers] |
255 | @@: |
175 | @@: |
256 | cmp ah,177 ;Down |
176 | cmp ah,177 ;Down |
257 | jne @f |
177 | jne @f |
258 | finit |
178 | finit |
259 | fld dword[angle_x] |
179 | fld dword[angle_x] |
260 | fsub dword[delt_size] |
180 | fsub dword[delt_size] |
261 | fst dword[angle_x] |
181 | fst dword[angle_x] |
262 | mov word[NumberSymbolsAD],2 |
182 | mov word[NumberSymbolsAD],2 |
263 | fstp qword[Data_Double] |
183 | fstp qword[Data_Double] |
264 | call DoubleFloat_to_String |
184 | call DoubleFloat_to_String |
265 | mov byte[txt_angle_x.v],0 |
185 | mov byte[txt_angle_x.v],0 |
266 | stdcall str_cat, txt_angle_x.v,Data_String |
186 | stdcall str_cat, txt_angle_x.v,Data_String |
267 | call draw_3d |
187 | call draw_3d |
268 | stdcall [kosglSwapBuffers] |
188 | stdcall [kosglSwapBuffers] |
269 | @@: |
189 | @@: |
270 | 190 | ||
271 | jmp still |
191 | jmp still |
272 | 192 | ||
273 | align 4 |
193 | align 4 |
274 | button: |
194 | button: |
275 | mcall SF_GET_BUTTON |
195 | mcall SF_GET_BUTTON |
276 | cmp ah,3 |
196 | cmp ah,3 |
277 | jne @f |
197 | jne @f |
278 | call but_zoom_p |
198 | call but_zoom_p |
279 | jmp still |
199 | jmp still |
280 | @@: |
200 | @@: |
281 | cmp ah,4 |
201 | cmp ah,4 |
282 | jne @f |
202 | jne @f |
283 | call but_zoom_m |
203 | call but_zoom_m |
284 | jmp still |
204 | jmp still |
285 | @@: |
205 | @@: |
286 | cmp ah,1 |
206 | cmp ah,1 |
287 | jne still |
207 | jne still |
288 | .exit: |
208 | .exit: |
289 | stdcall [gluDeleteQuadric], [qObj] |
209 | stdcall [gluDeleteQuadric], [qObj] |
290 | stdcall mem.Free,[image_data_toolbar] |
210 | stdcall mem.Free,[image_data_toolbar] |
291 | mcall SF_TERMINATE_PROCESS |
211 | mcall SF_TERMINATE_PROCESS |
292 | 212 | ||
293 | align 4 |
213 | align 4 |
294 | but_zoom_p: |
214 | but_zoom_p: |
295 | finit |
215 | finit |
296 | fld dword[scale] |
216 | fld dword[scale] |
297 | fadd dword[delt_sc] |
217 | fadd dword[sc_delt] |
- | 218 | fcom dword[sc_max] |
|
- | 219 | fstsw ax |
|
- | 220 | sahf |
|
- | 221 | jbe @f |
|
- | 222 | ffree st0 |
|
- | 223 | fincstp |
|
- | 224 | fld dword[sc_max] |
|
- | 225 | @@: |
|
298 | fst dword[scale] |
226 | fst dword[scale] |
299 | mov word[NumberSymbolsAD],3 |
227 | mov word[NumberSymbolsAD],3 |
300 | fstp qword[Data_Double] |
228 | fstp qword[Data_Double] |
301 | call DoubleFloat_to_String |
229 | call DoubleFloat_to_String |
302 | mov byte[txt_scale.v],0 |
230 | mov byte[txt_scale.v],0 |
303 | stdcall str_cat, txt_scale.v,Data_String |
231 | stdcall str_cat, txt_scale.v,Data_String |
304 | call draw_3d |
232 | call draw_3d |
305 | stdcall [kosglSwapBuffers] |
233 | stdcall [kosglSwapBuffers] |
306 | ret |
234 | ret |
307 | 235 | ||
308 | align 4 |
236 | align 4 |
309 | but_zoom_m: |
237 | but_zoom_m: |
310 | finit |
238 | finit |
311 | fld dword[scale] |
239 | fld dword[scale] |
312 | fsub dword[delt_sc] |
240 | fsub dword[sc_delt] |
- | 241 | fcom dword[sc_min] |
|
- | 242 | fstsw ax |
|
- | 243 | sahf |
|
- | 244 | ja @f |
|
- | 245 | ffree st0 |
|
- | 246 | fincstp |
|
- | 247 | fld dword[sc_min] |
|
- | 248 | @@: |
|
313 | fst dword[scale] |
249 | fst dword[scale] |
314 | mov word[NumberSymbolsAD],3 |
250 | mov word[NumberSymbolsAD],3 |
315 | fstp qword[Data_Double] |
251 | fstp qword[Data_Double] |
316 | call DoubleFloat_to_String |
252 | call DoubleFloat_to_String |
317 | mov byte[txt_scale.v],0 |
253 | mov byte[txt_scale.v],0 |
318 | stdcall str_cat, txt_scale.v,Data_String |
254 | stdcall str_cat, txt_scale.v,Data_String |
319 | call draw_3d |
255 | call draw_3d |
320 | stdcall [kosglSwapBuffers] |
256 | stdcall [kosglSwapBuffers] |
321 | ret |
257 | ret |
- | 258 | ||
322 | 259 | ||
323 | align 4 |
260 | align 4 |
324 | caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
261 | caption db 'Test textures, [Esc] - exit, [<-],[->],[Up],[Down] - rotate',0 |
325 | align 4 |
262 | align 4 |
326 | ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
263 | ctx1 db 28 dup (0) ;TinyGLContext or KOSGLContext |
327 | ;sizeof.TinyGLContext = 28 |
264 | ;sizeof.TinyGLContext = 28 |
328 | 265 | ||
329 | align 4 |
266 | align 4 |
330 | draw_3d: |
267 | draw_3d: |
331 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
268 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;очистим буфер цвета и глубины |
332 | 269 | ||
333 | stdcall [glPushMatrix] |
270 | stdcall [glPushMatrix] |
334 | stdcall [glScalef], [scale], [scale], [scale] |
271 | stdcall [glScalef], [scale], [scale], [scale] |
335 | stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении |
272 | stdcall [glScalef], 1.0, 1.0, 0.1 ;прижимаем сферу, что-бы сразу не вылазила при увеличении |
336 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
273 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
337 | stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
274 | stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
338 | 275 | ||
339 | ; рисование панорамы |
276 | ; рисование панорамы |
340 | stdcall [gluSphere], [qObj], 1.0, 64,64 |
277 | stdcall [gluSphere], [qObj], 1.0, 64,64 |
341 | stdcall [glPopMatrix] |
278 | stdcall [glPopMatrix] |
342 | 279 | ||
343 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00 |
280 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_scale,5,5,0xffff00 |
344 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,15,0xffff00 |
281 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_y,5,15,0xffff00 |
345 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_x,5,25,0xffff00 |
282 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_angle_x,5,25,0xffff00 |
346 | ret |
283 | ret |
347 | 284 | ||
348 | qObj dd 0 |
285 | qObj dd 0 |
349 | TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.) |
286 | TexObj dd 0 ;массив указателей на текстуры (в данном случае 1 шт.) |
350 | texture dd 0 ;указатель на память с текстурой |
287 | texture dd 0 ;указатель на память с текстурой |
351 | text_w dd 0 |
288 | text_w dd 0 |
352 | text_h dd 0 |
289 | text_h dd 0 |
353 | 290 | ||
- | 291 | scale dd 1.5 ;начальный масштаб |
|
354 | scale dd 1.5 |
292 | sc_delt dd 0.05 ;изменение масштаба при нажатии |
- | 293 | sc_min dd 0.95 ;минимальный масштаб |
|
355 | delt_sc dd 0.05 |
294 | sc_max dd 2.5 ;максимальный масштаб |
356 | angle_z dd 0.0 |
295 | angle_z dd 0.0 |
357 | angle_x dd 90.0 |
296 | angle_x dd 90.0 |
358 | angle_y dd 0.0 |
297 | angle_y dd 0.0 |
359 | delt_size dd 3.0 |
298 | delt_size dd 3.0 |
360 | 299 | ||
361 | ;-------------------------------------------------- |
300 | ;-------------------------------------------------- |
362 | align 4 |
301 | align 4 |
363 | import_lib_tinygl: |
302 | import_lib_tinygl: |
364 | 303 | ||
365 | macro E_LIB n |
304 | macro E_LIB n |
366 | { |
305 | { |
367 | n dd sz_#n |
306 | n dd sz_#n |
368 | } |
307 | } |
369 | include '../export.inc' |
308 | include '../export.inc' |
370 | dd 0,0 |
309 | dd 0,0 |
371 | macro E_LIB n |
310 | macro E_LIB n |
372 | { |
311 | { |
373 | sz_#n db `n,0 |
312 | sz_#n db `n,0 |
374 | } |
313 | } |
375 | include '../export.inc' |
314 | include '../export.inc' |
376 | 315 | ||
377 | align 4 |
316 | align 4 |
378 | import_buf2d: |
317 | import_buf2d: |
379 | dd sz_init0 |
318 | dd sz_init0 |
380 | buf2d_create dd sz_buf2d_create |
319 | buf2d_create dd sz_buf2d_create |
381 | buf2d_create_f_img dd sz_buf2d_create_f_img |
320 | buf2d_create_f_img dd sz_buf2d_create_f_img |
382 | buf2d_clear dd sz_buf2d_clear |
321 | buf2d_clear dd sz_buf2d_clear |
383 | buf2d_draw dd sz_buf2d_draw |
322 | buf2d_draw dd sz_buf2d_draw |
384 | buf2d_delete dd sz_buf2d_delete |
323 | buf2d_delete dd sz_buf2d_delete |
385 | buf2d_resize dd sz_buf2d_resize |
324 | buf2d_resize dd sz_buf2d_resize |
386 | buf2d_line dd sz_buf2d_line |
325 | buf2d_line dd sz_buf2d_line |
387 | buf2d_rect_by_size dd sz_buf2d_rect_by_size |
326 | buf2d_rect_by_size dd sz_buf2d_rect_by_size |
388 | buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size |
327 | buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size |
389 | buf2d_circle dd sz_buf2d_circle |
328 | buf2d_circle dd sz_buf2d_circle |
390 | buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2 |
329 | buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2 |
391 | buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2 |
330 | buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2 |
392 | buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8 |
331 | buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8 |
393 | buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32 |
332 | buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32 |
394 | buf2d_bit_blt dd sz_buf2d_bit_blt |
333 | buf2d_bit_blt dd sz_buf2d_bit_blt |
395 | buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp |
334 | buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp |
396 | buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha |
335 | buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha |
397 | buf2d_curve_bezier dd sz_buf2d_curve_bezier |
336 | buf2d_curve_bezier dd sz_buf2d_curve_bezier |
398 | buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix |
337 | buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix |
399 | buf2d_draw_text dd sz_buf2d_draw_text |
338 | buf2d_draw_text dd sz_buf2d_draw_text |
400 | buf2d_crop_color dd sz_buf2d_crop_color |
339 | buf2d_crop_color dd sz_buf2d_crop_color |
401 | buf2d_offset_h dd sz_buf2d_offset_h |
340 | buf2d_offset_h dd sz_buf2d_offset_h |
402 | buf2d_flood_fill dd sz_buf2d_flood_fill |
341 | buf2d_flood_fill dd sz_buf2d_flood_fill |
403 | buf2d_set_pixel dd sz_buf2d_set_pixel |
342 | buf2d_set_pixel dd sz_buf2d_set_pixel |
404 | dd 0,0 |
343 | dd 0,0 |
405 | sz_init0 db 'lib_init',0 |
344 | sz_init0 db 'lib_init',0 |
406 | sz_buf2d_create db 'buf2d_create',0 |
345 | sz_buf2d_create db 'buf2d_create',0 |
407 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
346 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
408 | sz_buf2d_clear db 'buf2d_clear',0 |
347 | sz_buf2d_clear db 'buf2d_clear',0 |
409 | sz_buf2d_draw db 'buf2d_draw',0 |
348 | sz_buf2d_draw db 'buf2d_draw',0 |
410 | sz_buf2d_delete db 'buf2d_delete',0 |
349 | sz_buf2d_delete db 'buf2d_delete',0 |
411 | sz_buf2d_resize db 'buf2d_resize',0 |
350 | sz_buf2d_resize db 'buf2d_resize',0 |
412 | sz_buf2d_line db 'buf2d_line',0 |
351 | sz_buf2d_line db 'buf2d_line',0 |
413 | sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 |
352 | sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 |
414 | sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 |
353 | sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 |
415 | sz_buf2d_circle db 'buf2d_circle',0 |
354 | sz_buf2d_circle db 'buf2d_circle',0 |
416 | sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 |
355 | sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 |
417 | sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 |
356 | sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 |
418 | sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0 |
357 | sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0 |
419 | sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0 |
358 | sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0 |
420 | sz_buf2d_bit_blt db 'buf2d_bit_blt',0 |
359 | sz_buf2d_bit_blt db 'buf2d_bit_blt',0 |
421 | sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0 |
360 | sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0 |
422 | sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0 |
361 | sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0 |
423 | sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 |
362 | sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 |
424 | sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0 |
363 | sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0 |
425 | sz_buf2d_draw_text db 'buf2d_draw_text',0 |
364 | sz_buf2d_draw_text db 'buf2d_draw_text',0 |
426 | sz_buf2d_crop_color db 'buf2d_crop_color',0 |
365 | sz_buf2d_crop_color db 'buf2d_crop_color',0 |
427 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
366 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
428 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
367 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
429 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
368 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
430 | 369 | ||
431 | align 4 |
370 | align 4 |
432 | import_libimg: |
371 | import_libimg: |
433 | dd alib_init1 |
372 | dd alib_init1 |
434 | img_is_img dd aimg_is_img |
373 | img_is_img dd aimg_is_img |
435 | img_info dd aimg_info |
374 | img_info dd aimg_info |
436 | img_from_file dd aimg_from_file |
375 | img_from_file dd aimg_from_file |
437 | img_to_file dd aimg_to_file |
376 | img_to_file dd aimg_to_file |
438 | img_from_rgb dd aimg_from_rgb |
377 | img_from_rgb dd aimg_from_rgb |
439 | img_to_rgb dd aimg_to_rgb |
378 | img_to_rgb dd aimg_to_rgb |
440 | img_to_rgb2 dd aimg_to_rgb2 |
379 | img_to_rgb2 dd aimg_to_rgb2 |
441 | img_decode dd aimg_decode |
380 | img_decode dd aimg_decode |
442 | img_encode dd aimg_encode |
381 | img_encode dd aimg_encode |
443 | img_create dd aimg_create |
382 | img_create dd aimg_create |
444 | img_destroy dd aimg_destroy |
383 | img_destroy dd aimg_destroy |
445 | img_destroy_layer dd aimg_destroy_layer |
384 | img_destroy_layer dd aimg_destroy_layer |
446 | img_count dd aimg_count |
385 | img_count dd aimg_count |
447 | img_lock_bits dd aimg_lock_bits |
386 | img_lock_bits dd aimg_lock_bits |
448 | img_unlock_bits dd aimg_unlock_bits |
387 | img_unlock_bits dd aimg_unlock_bits |
449 | img_flip dd aimg_flip |
388 | img_flip dd aimg_flip |
450 | img_flip_layer dd aimg_flip_layer |
389 | img_flip_layer dd aimg_flip_layer |
451 | img_rotate dd aimg_rotate |
390 | img_rotate dd aimg_rotate |
452 | img_rotate_layer dd aimg_rotate_layer |
391 | img_rotate_layer dd aimg_rotate_layer |
453 | img_draw dd aimg_draw |
392 | img_draw dd aimg_draw |
454 | 393 | ||
455 | dd 0,0 |
394 | dd 0,0 |
456 | alib_init1 db 'lib_init',0 |
395 | alib_init1 db 'lib_init',0 |
457 | aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение |
396 | aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение |
458 | aimg_info db 'img_info',0 |
397 | aimg_info db 'img_info',0 |
459 | aimg_from_file db 'img_from_file',0 |
398 | aimg_from_file db 'img_from_file',0 |
460 | aimg_to_file db 'img_to_file',0 |
399 | aimg_to_file db 'img_to_file',0 |
461 | aimg_from_rgb db 'img_from_rgb',0 |
400 | aimg_from_rgb db 'img_from_rgb',0 |
462 | aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB |
401 | aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB |
463 | aimg_to_rgb2 db 'img_to_rgb2',0 |
402 | aimg_to_rgb2 db 'img_to_rgb2',0 |
464 | aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных |
403 | aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных |
465 | aimg_encode db 'img_encode',0 |
404 | aimg_encode db 'img_encode',0 |
466 | aimg_create db 'img_create',0 |
405 | aimg_create db 'img_create',0 |
467 | aimg_destroy db 'img_destroy',0 |
406 | aimg_destroy db 'img_destroy',0 |
468 | aimg_destroy_layer db 'img_destroy_layer',0 |
407 | aimg_destroy_layer db 'img_destroy_layer',0 |
469 | aimg_count db 'img_count',0 |
408 | aimg_count db 'img_count',0 |
470 | aimg_lock_bits db 'img_lock_bits',0 |
409 | aimg_lock_bits db 'img_lock_bits',0 |
471 | aimg_unlock_bits db 'img_unlock_bits',0 |
410 | aimg_unlock_bits db 'img_unlock_bits',0 |
472 | aimg_flip db 'img_flip',0 |
411 | aimg_flip db 'img_flip',0 |
473 | aimg_flip_layer db 'img_flip_layer',0 |
412 | aimg_flip_layer db 'img_flip_layer',0 |
474 | aimg_rotate db 'img_rotate',0 |
413 | aimg_rotate db 'img_rotate',0 |
475 | aimg_rotate_layer db 'img_rotate_layer',0 |
414 | aimg_rotate_layer db 'img_rotate_layer',0 |
476 | aimg_draw db 'img_draw',0 |
415 | aimg_draw db 'img_draw',0 |
477 | 416 | ||
478 | ;-------------------------------------------------- |
417 | ;-------------------------------------------------- |
479 | system_dir_0 db '/sys/lib/' |
418 | system_dir_0 db '/sys/lib/' |
480 | lib_name_0 db 'tinygl.obj',0 |
419 | lib_name_0 db 'tinygl.obj',0 |
481 | system_dir_1 db '/sys/lib/' |
420 | system_dir_1 db '/sys/lib/' |
482 | lib_name_1 db 'buf2d.obj',0 |
421 | lib_name_1 db 'buf2d.obj',0 |
483 | system_dir_2 db '/sys/lib/' |
422 | system_dir_2 db '/sys/lib/' |
484 | lib_name_2 db 'libimg.obj',0 |
423 | lib_name_2 db 'libimg.obj',0 |
485 | err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0 |
424 | err_msg_found_lib_0 db 'Sorry I cannot load library ',39,'tinygl.obj',39,0 |
486 | err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0 |
425 | err_msg_found_lib_1 db 'Sorry I cannot load library ',39,'buf2d.obj',39,0 |
487 | err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0 |
426 | err_msg_found_lib_2 db 'Sorry I cannot load library ',39,'libimg.obj',39,0 |
488 | head_f_i: |
427 | head_f_i: |
489 | head_f_l db 'System error',0 |
428 | head_f_l db 'System error',0 |
490 | err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0 |
429 | err_msg_import_0 db 'Error on load import library ',39,'tinygl.obj',39,0 |
491 | err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0 |
430 | err_msg_import_1 db 'Error on load import library ',39,'buf2d.obj',39,0 |
492 | err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0 |
431 | err_msg_import_2 db 'Error on load import library ',39,'libimg.obj',39,0 |
493 | ;-------------------------------------------------- |
432 | ;-------------------------------------------------- |
494 | 433 | ||
495 | txt_scale: |
434 | txt_scale: |
496 | db 'Scale: ' |
435 | db 'Scale: ' |
497 | .v: |
436 | .v: |
498 | db 0 |
437 | db 0 |
499 | rb 10 |
438 | rb 10 |
500 | 439 | ||
501 | txt_angle_z: |
440 | txt_angle_z: |
502 | db 'Rotate z: ' |
441 | db 'Rotate z: ' |
503 | .v: |
442 | .v: |
504 | db 0 |
443 | db 0 |
505 | rb 10 |
444 | rb 10 |
506 | 445 | ||
507 | txt_angle_x: |
446 | txt_angle_x: |
508 | db 'Rotate x: ' |
447 | db 'Rotate x: ' |
509 | .v: |
448 | .v: |
510 | db 0 |
449 | db 0 |
511 | rb 10 |
450 | rb 10 |
512 | 451 | ||
513 | txt_angle_y: |
452 | txt_angle_y: |
514 | db 'Rotate y: ' |
453 | db 'Rotate y: ' |
515 | .v: |
454 | .v: |
516 | db 0 |
455 | db 0 |
517 | rb 10 |
456 | rb 10 |
518 | 457 | ||
519 | align 4 |
458 | align 4 |
520 | buf_ogl: |
459 | buf_ogl: |
521 | dd 0 ;указатель на буфер изображения |
460 | dd 0 ;указатель на буфер изображения |
522 | dw 10,10 ;+4 left,top |
461 | dw 10,10 ;+4 left,top |
523 | .w: dd 400 |
462 | .w: dd 400 |
524 | .h: dd 350 |
463 | .h: dd 350 |
525 | dd 0,24 ;+16 color,bit in pixel |
464 | dd 0,24 ;+16 color,bit in pixel |
526 | 465 | ||
527 | align 4 |
466 | align 4 |
528 | buf_1: |
467 | buf_1: |
529 | dd 0 ;указатель на буфер изображения |
468 | dd 0 ;указатель на буфер изображения |
530 | dw 25,25 ;+4 left,top |
469 | dd 0 ;+4 left,top |
531 | dd 128,144 ;+8 w,h |
470 | .w: dd 0 |
532 | dd 0,24 ;+16 color,bit in pixel |
471 | .h: dd 0,0,24 ;+16 color,bit in pixel |
533 | 472 | ||
534 | align 4 |
473 | align 4 |
535 | l_libs_start: |
474 | l_libs_start: |
536 | lib_0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\ |
475 | lib_0 l_libs lib_name_0, cur_dir_path, file_name, system_dir_0,\ |
537 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
476 | err_msg_found_lib_0, head_f_l, import_lib_tinygl,err_msg_import_0,head_f_i |
538 | lib_1 l_libs lib_name_1, cur_dir_path, library_path, system_dir_1,\ |
477 | lib_1 l_libs lib_name_1, cur_dir_path, file_name, system_dir_1,\ |
539 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
478 | err_msg_found_lib_1, head_f_l, import_buf2d, err_msg_import_1,head_f_i |
540 | lib_2 l_libs lib_name_2, cur_dir_path, library_path, system_dir_2,\ |
479 | lib_2 l_libs lib_name_2, cur_dir_path, file_name, system_dir_2,\ |
541 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
480 | err_msg_found_lib_2, head_f_l, import_libimg, err_msg_import_2, head_f_i |
542 | l_libs_end: |
481 | l_libs_end: |
543 | 482 | ||
544 | align 4 |
483 | align 4 |
545 | i_end: |
484 | i_end: |
546 | run_file_70 FileInfoBlock |
485 | run_file_70 FileInfoBlock |
547 | sc system_colors |
486 | sc system_colors |
548 | align 16 |
487 | align 16 |
549 | rb 4096 |
488 | rb 4096 |
550 | stacktop: |
489 | stacktop: |
551 | cur_dir_path rb 4096 |
490 | cur_dir_path rb 4096 |
552 | library_path rb 4096 |
- | |
553 | file_name rb 4096 |
491 | file_name rb 4096 |
554 | mem:-],[-> |
492 | mem:-],[-> |