Rev 1922 | Rev 2389 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1004 | diamond | 1 | use32 |
2 | org 0x0 |
||
3 | |||
4 | db 'MENUET01' |
||
1470 | mario79 | 5 | dd 0x01, START, I_END, F_END, stacktop, @PARAMS, 0x0 |
1004 | diamond | 6 | |
7 | ;----------------------------------------------------------------------------- |
||
8 | |||
9 | FALSE = 0 |
||
10 | TRUE = 1 |
||
1701 | lrz | 11 | include '../../../config.inc' ;for nightbuild |
1080 | diamond | 12 | include '../../../proc32.inc' |
13 | include '../../../macros.inc' |
||
1004 | diamond | 14 | include 'dll.inc' |
15 | |||
16 | include '../../../develop/libraries/libs-dev/libio/libio.inc' |
||
17 | include '../../../develop/libraries/libs-dev/libimg/libimg.inc' |
||
18 | |||
1511 | mario79 | 19 | ;include '../../../develop/libraries/box_lib/asm/trunk/opendial.mac' |
20 | ;use_OpenDialog |
||
1004 | diamond | 21 | ;----------------------------------------------------------------------------- |
22 | |||
23 | START: |
||
1570 | dunkaist | 24 | mcall 68, 11 |
1004 | diamond | 25 | |
1570 | dunkaist | 26 | stdcall dll.Load, @IMPORT |
27 | or eax, eax |
||
28 | jnz exit |
||
1004 | diamond | 29 | |
1570 | dunkaist | 30 | invoke sort.START, 1 |
1016 | diamond | 31 | |
1570 | dunkaist | 32 | mov ecx, 1 ; for 15.4: 1 = tile |
33 | cmp word [@PARAMS], '\T' |
||
34 | jz set_bgr |
||
35 | inc ecx ; for 15.4: 2 = stretch |
||
36 | cmp word [@PARAMS], '\S' |
||
37 | jz set_bgr |
||
1004 | diamond | 38 | |
1594 | mario79 | 39 | cmp byte [@PARAMS], 0 |
40 | jz @f |
||
41 | mov esi, @PARAMS |
||
42 | mov edi, path |
||
43 | mov ecx, 4096/4 |
||
44 | rep movsd |
||
45 | mov byte [edi-1], 0 |
||
46 | @@: |
||
47 | ; OpenDialog initialisation |
||
48 | push dword OpenDialog_data |
||
49 | call [OpenDialog_Init] |
||
50 | |||
1427 | diamond | 51 | ; initialize keyboard handling |
1570 | dunkaist | 52 | invoke ini_get_shortcut, inifilename, aShortcuts, aNext, -1, next_mod |
53 | mov [next_key], eax |
||
54 | invoke ini_get_shortcut, inifilename, aShortcuts, aPrev, -1, prev_mod |
||
55 | mov [prev_key], eax |
||
56 | mcall 66, 1, 1 ; set kbd mode to scancodes |
||
1427 | diamond | 57 | |
1570 | dunkaist | 58 | cmp byte [@PARAMS], 0 |
59 | jnz params_given |
||
1004 | diamond | 60 | |
1570 | dunkaist | 61 | mov [OpenDialog_data.draw_window],draw_window_fake |
62 | |||
1511 | mario79 | 63 | ; OpenDialog Open |
1570 | dunkaist | 64 | push dword OpenDialog_data |
65 | call [OpenDialog_Start] |
||
1470 | mario79 | 66 | |
1570 | dunkaist | 67 | cmp [OpenDialog_data.status],1 |
68 | jne exit |
||
1470 | mario79 | 69 | |
1570 | dunkaist | 70 | mov [OpenDialog_data.draw_window],draw_window |
1470 | mario79 | 71 | |
1570 | dunkaist | 72 | mov esi, path |
73 | mov edi, @PARAMS |
||
74 | mov ecx, 4096/4 |
||
75 | rep movsd |
||
76 | mov byte [edi-1], 0 |
||
77 | jmp params_given |
||
1004 | diamond | 78 | |
79 | set_bgr: |
||
1570 | dunkaist | 80 | mcall 15, 4 |
81 | mov eax, @PARAMS + 4 |
||
82 | call load_image |
||
83 | jc exit |
||
1004 | diamond | 84 | |
1570 | dunkaist | 85 | call set_as_bgr |
86 | jmp exit |
||
1004 | diamond | 87 | |
88 | params_given: |
||
89 | |||
1570 | dunkaist | 90 | mov esi, @PARAMS |
91 | push esi |
||
92 | call find_last_name_component |
||
1427 | diamond | 93 | |
1570 | dunkaist | 94 | pop eax |
95 | call load_image |
||
96 | jc exit |
||
97 | call generate_header |
||
1004 | diamond | 98 | |
99 | ;----------------------------------------------------------------------------- |
||
100 | |||
101 | red: |
||
1570 | dunkaist | 102 | call draw_window |
1004 | diamond | 103 | |
104 | still: |
||
1570 | dunkaist | 105 | mov eax, [image] |
106 | test byte [eax + Image.Flags], Image.IsAnimated |
||
107 | push 10 |
||
108 | pop eax |
||
109 | jz @f |
||
110 | mcall 26, 9 |
||
111 | mov edx, [cur_frame] |
||
112 | mov ebx, [cur_frame_time] |
||
113 | add ebx, [edx + Image.Delay] |
||
114 | sub ebx, eax |
||
115 | cmp ebx, [edx + Image.Delay] |
||
116 | ja red_update_frame |
||
117 | test ebx, ebx |
||
118 | jz red_update_frame |
||
119 | push 23 |
||
120 | pop eax |
||
1080 | diamond | 121 | @@: |
1570 | dunkaist | 122 | mcall |
123 | dec eax |
||
124 | js red_update_frame |
||
125 | jz red |
||
126 | dec eax |
||
127 | jnz button |
||
1004 | diamond | 128 | |
1080 | diamond | 129 | key: |
1570 | dunkaist | 130 | xor esi, esi |
1427 | diamond | 131 | keyloop: |
1570 | dunkaist | 132 | mcall 2 |
133 | test al, al |
||
134 | jnz keyloopdone |
||
135 | shr eax, 8 |
||
136 | mov ecx, eax |
||
137 | mcall 66, 3 |
||
138 | mov edx, next_mod |
||
139 | call check_shortcut |
||
140 | jz .next |
||
141 | add edx, prev_mod - next_mod |
||
142 | call check_shortcut |
||
143 | jnz keyloop |
||
1427 | diamond | 144 | .prev: |
1570 | dunkaist | 145 | dec esi |
146 | jmp keyloop |
||
1427 | diamond | 147 | .next: |
1570 | dunkaist | 148 | inc esi |
149 | jmp keyloop |
||
1427 | diamond | 150 | keyloopdone: |
1570 | dunkaist | 151 | test esi, esi |
152 | jz still |
||
1427 | diamond | 153 | next_or_prev_handler: |
1570 | dunkaist | 154 | call next_or_prev_image |
155 | jmp red |
||
1004 | diamond | 156 | |
1080 | diamond | 157 | red_update_frame: |
1570 | dunkaist | 158 | mov eax, [cur_frame] |
159 | mov eax, [eax + Image.Next] |
||
160 | test eax, eax |
||
161 | jnz @f |
||
162 | mov eax, [image] |
||
1080 | diamond | 163 | @@: |
1570 | dunkaist | 164 | mov [cur_frame], eax |
165 | mcall 26, 9 |
||
166 | mov [cur_frame_time], eax |
||
167 | mcall 9, procinfo, -1 |
||
168 | call draw_cur_frame |
||
169 | jmp still |
||
1080 | diamond | 170 | |
171 | button: |
||
1570 | dunkaist | 172 | mcall 17 |
173 | shr eax, 8 |
||
1004 | diamond | 174 | |
1570 | dunkaist | 175 | ; flip horizontally |
176 | cmp eax, 'flh' |
||
177 | jne @f |
||
1004 | diamond | 178 | |
1570 | dunkaist | 179 | invoke img.flip, [image], FLIP_HORIZONTAL |
180 | jmp redraw_image |
||
1004 | diamond | 181 | |
1570 | dunkaist | 182 | ; flip vertically |
183 | @@: cmp eax, 'flv' |
||
184 | jne @f |
||
1004 | diamond | 185 | |
1570 | dunkaist | 186 | invoke img.flip, [image], FLIP_VERTICAL |
187 | jmp redraw_image |
||
1004 | diamond | 188 | |
1570 | dunkaist | 189 | ; flip both horizontally and vertically |
190 | @@: cmp eax, 'flb' |
||
191 | jne @f |
||
1004 | diamond | 192 | |
1570 | dunkaist | 193 | invoke img.flip, [image], FLIP_BOTH |
194 | jmp redraw_image |
||
1004 | diamond | 195 | |
1570 | dunkaist | 196 | ; rotate left |
197 | @@: cmp eax, 'rtl' |
||
198 | jne @f |
||
1004 | diamond | 199 | |
1570 | dunkaist | 200 | push ROTATE_90_CCW |
1004 | diamond | 201 | .rotate_common: |
1570 | dunkaist | 202 | invoke img.rotate, [image] |
203 | mov eax, [image] |
||
204 | test eax, eax ; clear ZF flag |
||
205 | call update_image_sizes |
||
206 | jmp redraw_image |
||
1004 | diamond | 207 | |
1570 | dunkaist | 208 | ; rotate right |
209 | @@: cmp eax, 'rtr' |
||
210 | jne @f |
||
1004 | diamond | 211 | |
1570 | dunkaist | 212 | push ROTATE_90_CW |
213 | jmp .rotate_common |
||
1004 | diamond | 214 | |
1570 | dunkaist | 215 | ; open new file |
216 | @@: cmp eax, 'opn' |
||
217 | jne @f |
||
218 | |||
1511 | mario79 | 219 | ; OpenDialog Open |
1570 | dunkaist | 220 | push dword OpenDialog_data |
221 | call [OpenDialog_Start] |
||
222 | |||
223 | cmp [OpenDialog_data.status],1 |
||
224 | jne still |
||
225 | |||
226 | mov esi, path |
||
227 | mov edi, @PARAMS |
||
228 | push edi |
||
229 | mov ecx, 4096/4 |
||
230 | rep movsd |
||
231 | mov byte [edi-1], 0 |
||
232 | |||
233 | pop esi |
||
234 | push esi |
||
235 | call find_last_name_component |
||
1475 | diamond | 236 | |
1570 | dunkaist | 237 | pop eax |
238 | push [image] |
||
239 | call load_image |
||
240 | jc .restore_old |
||
241 | call generate_header |
||
242 | |||
243 | invoke img.destroy |
||
244 | call free_directory |
||
245 | jmp red |
||
246 | |||
1004 | diamond | 247 | .restore_old: |
1570 | dunkaist | 248 | pop [image] |
249 | call init_frame |
||
250 | jmp still |
||
1004 | diamond | 251 | |
1570 | dunkaist | 252 | ; set background |
1016 | diamond | 253 | @@: |
1570 | dunkaist | 254 | cmp eax, 'bgr' |
255 | jne @f |
||
1016 | diamond | 256 | |
1570 | dunkaist | 257 | call set_as_bgr |
258 | jmp still |
||
1016 | diamond | 259 | |
260 | @@: |
||
261 | |||
1570 | dunkaist | 262 | or esi, -1 |
263 | cmp eax, 'bck' |
||
264 | jz next_or_prev_handler |
||
265 | neg esi |
||
266 | cmp eax, 'fwd' |
||
267 | jz next_or_prev_handler |
||
1016 | diamond | 268 | |
1570 | dunkaist | 269 | cmp eax, 1 |
270 | jne still |
||
1004 | diamond | 271 | |
272 | exit: |
||
1570 | dunkaist | 273 | mcall -1 |
1004 | diamond | 274 | |
275 | redraw_image = red |
||
276 | |||
277 | load_image: |
||
1570 | dunkaist | 278 | and [img_data], 0 |
279 | push eax |
||
280 | invoke file.open, eax, O_READ |
||
281 | or eax, eax |
||
282 | jz .error_pop |
||
283 | mov [fh], eax |
||
284 | invoke file.size |
||
285 | mov [img_data_len], ebx |
||
286 | stdcall mem.Alloc, ebx |
||
287 | test eax, eax |
||
288 | jz .error_close |
||
289 | mov [img_data], eax |
||
290 | invoke file.read, [fh], eax, [img_data_len] |
||
291 | cmp eax, -1 |
||
292 | jz .error_close |
||
293 | cmp eax, [img_data_len] |
||
294 | jnz .error_close |
||
295 | invoke file.close, [fh] |
||
296 | inc eax |
||
297 | jz .error |
||
1004 | diamond | 298 | |
299 | ; img.decode checks for img.is_img |
||
1570 | dunkaist | 300 | ; invoke img.is_img, [img_data], [img_data_len] |
301 | ; or eax, eax |
||
302 | ; jz exit |
||
303 | invoke img.decode, [img_data], [img_data_len], 0 |
||
304 | or eax, eax |
||
305 | jz .error |
||
306 | cmp [image], 0 |
||
307 | pushf |
||
308 | mov [image], eax |
||
309 | call init_frame |
||
310 | popf |
||
311 | call update_image_sizes |
||
312 | call free_img_data |
||
313 | clc |
||
314 | ret |
||
1004 | diamond | 315 | |
316 | .error_free: |
||
1570 | dunkaist | 317 | invoke img.destroy, [image] |
318 | jmp .error |
||
1004 | diamond | 319 | |
320 | .error_pop: |
||
1570 | dunkaist | 321 | pop eax |
322 | jmp .error |
||
1004 | diamond | 323 | .error_close: |
1570 | dunkaist | 324 | invoke file.close, [fh] |
1004 | diamond | 325 | .error: |
1570 | dunkaist | 326 | call free_img_data |
327 | stc |
||
328 | ret |
||
1004 | diamond | 329 | |
330 | free_img_data: |
||
1570 | dunkaist | 331 | mov eax, [img_data] |
332 | test eax, eax |
||
333 | jz @f |
||
334 | stdcall mem.Free, eax |
||
1004 | diamond | 335 | @@: |
1570 | dunkaist | 336 | ret |
1004 | diamond | 337 | |
338 | update_image_sizes: |
||
1570 | dunkaist | 339 | pushf |
340 | mov edx, [eax + Image.Width] |
||
2036 | dunkaist | 341 | test [eax + Image.Flags], Image.IsAnimated |
342 | jnz .not_in_row |
||
343 | push eax |
||
344 | @@: cmp [eax + Image.Next], 0 |
||
345 | jz @f |
||
346 | mov eax, [eax + Image.Next] |
||
347 | add edx, [eax + Image.Width] |
||
348 | inc edx |
||
349 | jmp @b |
||
350 | @@: pop eax |
||
351 | .not_in_row: |
||
1570 | dunkaist | 352 | mov [draw_width], edx |
353 | add edx, 19 |
||
354 | cmp edx, 40 + 25*9 |
||
355 | jae @f |
||
356 | mov edx, 40 + 25*9 |
||
1004 | diamond | 357 | @@: |
1570 | dunkaist | 358 | mov [wnd_width], edx |
359 | mov esi, [eax + Image.Height] |
||
2036 | dunkaist | 360 | test [eax + Image.Flags], Image.IsAnimated |
361 | jnz .max_equals_first |
||
362 | push eax |
||
363 | @@: cmp [eax + Image.Next], 0 |
||
364 | jz @f |
||
365 | mov eax, [eax + Image.Next] |
||
366 | cmp esi, [eax + Image.Height] |
||
367 | jae @b |
||
368 | mov esi, [eax + Image.Height] |
||
369 | jmp @b |
||
370 | @@: pop eax |
||
371 | .max_equals_first: |
||
1570 | dunkaist | 372 | mov [draw_height], esi |
373 | add esi, 44 |
||
374 | mov [wnd_height], esi |
||
375 | popf |
||
376 | jz .no_resize |
||
377 | mcall 48, 4 |
||
378 | add esi, eax |
||
379 | mcall 67,-1,-1 |
||
1004 | diamond | 380 | .no_resize: |
1570 | dunkaist | 381 | ret |
1004 | diamond | 382 | |
1016 | diamond | 383 | set_as_bgr: |
1570 | dunkaist | 384 | mov esi, [image] |
385 | mov ecx, [esi + Image.Width] |
||
386 | mov edx, [esi + Image.Height] |
||
387 | mcall 15, 1 |
||
1016 | diamond | 388 | |
1570 | dunkaist | 389 | mcall 15, 6 |
390 | test eax, eax |
||
391 | jz @f |
||
1016 | diamond | 392 | |
1570 | dunkaist | 393 | push eax |
394 | invoke img.to_rgb2, esi, eax |
||
395 | pop ecx |
||
396 | mcall 15, 7 |
||
1016 | diamond | 397 | |
398 | @@: |
||
1570 | dunkaist | 399 | mcall 15, 3 |
400 | ret |
||
1016 | diamond | 401 | |
1427 | diamond | 402 | ; seek to ESI image files |
403 | ; esi>0 means next file, esi<0 - prev file |
||
404 | next_or_prev_image: |
||
1570 | dunkaist | 405 | push esi |
406 | call load_directory |
||
407 | pop esi |
||
408 | mov ebx, [directory_ptr] |
||
409 | test ebx, ebx |
||
410 | jz .ret |
||
411 | cmp dword[ebx+4], 0 |
||
412 | jz .ret |
||
413 | mov eax, [cur_file_idx] |
||
414 | cmp eax, -1 |
||
415 | jnz @f |
||
416 | test esi, esi |
||
417 | jns @f |
||
418 | mov eax, [ebx+4] |
||
1016 | diamond | 419 | @@: |
1570 | dunkaist | 420 | push [image] |
421 | add eax, esi |
||
1427 | diamond | 422 | @@: |
1570 | dunkaist | 423 | test eax, eax |
424 | jns @f |
||
425 | add eax, [ebx+4] |
||
426 | jmp @b |
||
1016 | diamond | 427 | @@: |
1570 | dunkaist | 428 | cmp eax, [ebx+4] |
429 | jb @f |
||
430 | sub eax, [ebx+4] |
||
431 | jmp @b |
||
1427 | diamond | 432 | @@: |
1570 | dunkaist | 433 | push eax |
1427 | diamond | 434 | .scanloop: |
1570 | dunkaist | 435 | push eax ebx esi |
436 | imul esi, eax, 304 |
||
437 | add esi, [directory_ptr] |
||
438 | add esi, 32 + 40 |
||
439 | mov edi, curdir |
||
1016 | diamond | 440 | @@: |
1570 | dunkaist | 441 | inc edi |
442 | cmp byte [edi-1], 0 |
||
443 | jnz @b |
||
444 | mov byte [edi-1], '/' |
||
1016 | diamond | 445 | @@: |
1570 | dunkaist | 446 | lodsb |
447 | stosb |
||
448 | test al, al |
||
449 | jnz @b |
||
450 | mov eax, curdir |
||
451 | call load_image |
||
452 | pushf |
||
453 | mov esi, curdir |
||
454 | push esi |
||
455 | mov edi, @PARAMS |
||
456 | mov ecx, 4096/4 |
||
457 | rep movsd |
||
458 | mov byte [edi-1], 0 |
||
459 | pop esi |
||
1040 | diamond | 460 | @@: |
1570 | dunkaist | 461 | lodsb |
462 | test al, al |
||
463 | jnz @b |
||
1040 | diamond | 464 | @@: |
1570 | dunkaist | 465 | dec esi |
466 | cmp byte [esi], '/' |
||
467 | jnz @b |
||
468 | mov byte [esi], 0 |
||
469 | popf |
||
470 | pop esi ebx eax |
||
471 | jnc .loadedok |
||
472 | test esi, esi |
||
473 | js .try_prev |
||
1427 | diamond | 474 | .try_next: |
1570 | dunkaist | 475 | inc eax |
476 | cmp eax, [ebx+4] |
||
477 | jb @f |
||
478 | xor eax, eax |
||
1016 | diamond | 479 | @@: |
1427 | diamond | 480 | .try_common: |
1570 | dunkaist | 481 | cmp eax, [esp] |
482 | jz .notfound |
||
483 | jmp .scanloop |
||
1427 | diamond | 484 | .try_prev: |
1570 | dunkaist | 485 | dec eax |
486 | jns @f |
||
487 | mov eax, [ebx+4] |
||
488 | dec eax |
||
1016 | diamond | 489 | @@: |
1570 | dunkaist | 490 | jmp .try_common |
1427 | diamond | 491 | .loadedok: |
1570 | dunkaist | 492 | mov [cur_file_idx], eax |
493 | pop eax |
||
494 | invoke img.destroy |
||
495 | call generate_header |
||
1016 | diamond | 496 | .ret: |
1570 | dunkaist | 497 | ret |
1016 | diamond | 498 | .notfound: |
1570 | dunkaist | 499 | pop eax |
500 | pop [image] |
||
501 | call init_frame |
||
502 | ret |
||
1016 | diamond | 503 | |
504 | load_directory: |
||
1570 | dunkaist | 505 | cmp [directory_ptr], 0 |
506 | jnz .ret |
||
507 | mov esi, @PARAMS |
||
508 | mov edi, curdir |
||
509 | mov ecx, [last_name_component] |
||
510 | sub ecx, esi |
||
511 | dec ecx |
||
512 | js @f |
||
513 | rep movsb |
||
1427 | diamond | 514 | @@: |
1570 | dunkaist | 515 | mov byte [edi], 0 |
516 | mcall 68, 12, 0x1000 |
||
517 | test eax, eax |
||
518 | jz .ret |
||
519 | mov ebx, readdir_fileinfo |
||
520 | mov dword [ebx+12], (0x1000 - 32) / 304 |
||
521 | mov dword [ebx+16], eax |
||
522 | mcall 70 |
||
523 | cmp eax, 6 |
||
524 | jz .dirok |
||
525 | test eax, eax |
||
526 | jnz free_directory |
||
527 | mov edx, [directory_ptr] |
||
528 | mov ecx, [edx+8] |
||
529 | mov [readblocks], ecx |
||
530 | imul ecx, 304 |
||
531 | add ecx, 32 |
||
532 | mcall 68, 20 |
||
533 | test eax, eax |
||
534 | jz free_directory |
||
535 | mov [directory_ptr], eax |
||
536 | mcall 70, readdir_fileinfo |
||
1016 | diamond | 537 | .dirok: |
1570 | dunkaist | 538 | cmp ebx, 0 |
539 | jle free_directory |
||
540 | mov eax, [directory_ptr] |
||
541 | add eax, 32 |
||
542 | mov edi, eax |
||
543 | push 0 |
||
1016 | diamond | 544 | .dirskip: |
1570 | dunkaist | 545 | push eax |
546 | test byte [eax], 18h |
||
547 | jnz .nocopy |
||
548 | lea esi, [eax+40] |
||
549 | mov ecx, esi |
||
1016 | diamond | 550 | @@: |
1570 | dunkaist | 551 | lodsb |
552 | test al, al |
||
553 | jnz @b |
||
1016 | diamond | 554 | @@: |
1570 | dunkaist | 555 | dec esi |
556 | cmp esi, ecx |
||
557 | jb .noext |
||
558 | cmp byte [esi], '.' |
||
559 | jnz @b |
||
560 | inc esi |
||
561 | mov ecx, [esi] |
||
562 | or ecx, 0x202020 |
||
563 | cmp ecx, 'jpg' |
||
564 | jz .copy |
||
565 | cmp ecx, 'bmp' |
||
566 | jz .copy |
||
567 | cmp ecx, 'gif' |
||
568 | jz .copy |
||
569 | cmp ecx, 'png' |
||
570 | jz .copy |
||
571 | cmp ecx, 'jpe' |
||
572 | jz .copy |
||
573 | cmp ecx, 'ico' |
||
574 | jz .copy |
||
575 | cmp ecx, 'cur' |
||
576 | jz .copy |
||
1575 | dunkaist | 577 | ; dunkaist [ |
578 | cmp ecx, 'pcx' |
||
579 | jz .copy |
||
1922 | dunkaist | 580 | cmp ecx, 'xcf' |
581 | jz .copy |
||
1575 | dunkaist | 582 | ; dunkaist ] |
1570 | dunkaist | 583 | cmp ecx, 'jpeg' |
584 | jz @f |
||
585 | cmp ecx, 'jpeG' |
||
586 | jnz .nocopy |
||
1016 | diamond | 587 | @@: |
1570 | dunkaist | 588 | cmp byte [esi+4], 0 |
589 | jnz .nocopy |
||
1016 | diamond | 590 | .copy: |
1570 | dunkaist | 591 | mov esi, [esp] |
592 | mov ecx, 304 / 4 |
||
593 | rep movsd |
||
594 | inc dword [esp+4] |
||
1016 | diamond | 595 | .nocopy: |
596 | .noext: |
||
1570 | dunkaist | 597 | pop eax |
598 | add eax, 304 |
||
599 | dec ebx |
||
600 | jnz .dirskip |
||
601 | mov eax, [directory_ptr] |
||
602 | pop ebx |
||
603 | mov [eax+4], ebx |
||
604 | test ebx, ebx |
||
605 | jz free_directory |
||
606 | push 0 ; sort mode |
||
607 | push ebx |
||
608 | add eax, 32 |
||
609 | push eax |
||
610 | call [SortDir] |
||
611 | xor eax, eax |
||
612 | mov edi, [directory_ptr] |
||
613 | add edi, 32 + 40 |
||
1016 | diamond | 614 | .scan: |
1570 | dunkaist | 615 | mov esi, [last_name_component] |
616 | push edi |
||
617 | invoke strcmpi |
||
618 | pop edi |
||
619 | jz .found |
||
620 | inc eax |
||
621 | add edi, 304 |
||
622 | dec ebx |
||
623 | jnz .scan |
||
624 | or eax, -1 |
||
1016 | diamond | 625 | .found: |
1570 | dunkaist | 626 | mov [cur_file_idx], eax |
1016 | diamond | 627 | .ret: |
1570 | dunkaist | 628 | ret |
1016 | diamond | 629 | |
630 | free_directory: |
||
1570 | dunkaist | 631 | mcall 68, 13, [directory_ptr] |
632 | and [directory_ptr], 0 |
||
633 | ret |
||
1016 | diamond | 634 | |
1427 | diamond | 635 | ; in: esi->full name (e.g. /path/to/file.png) |
636 | ; out: [last_name_component]->last component (e.g. file.png) |
||
637 | find_last_name_component: |
||
1570 | dunkaist | 638 | mov ecx, esi |
1427 | diamond | 639 | @@: |
1570 | dunkaist | 640 | lodsb |
641 | test al, al |
||
642 | jnz @b |
||
1427 | diamond | 643 | @@: |
1570 | dunkaist | 644 | dec esi |
645 | cmp esi, ecx |
||
646 | jb @f |
||
647 | cmp byte [esi], '/' |
||
648 | jnz @b |
||
1427 | diamond | 649 | @@: |
1570 | dunkaist | 650 | inc esi |
651 | mov [last_name_component], esi |
||
652 | ret |
||
1427 | diamond | 653 | |
1080 | diamond | 654 | init_frame: |
1570 | dunkaist | 655 | push eax |
656 | mov eax, [image] |
||
657 | mov [cur_frame], eax |
||
658 | test byte [eax + Image.Flags], Image.IsAnimated |
||
659 | jz @f |
||
660 | push ebx |
||
661 | mcall 26, 9 |
||
662 | pop ebx |
||
663 | mov [cur_frame_time], eax |
||
1080 | diamond | 664 | @@: |
1570 | dunkaist | 665 | pop eax |
666 | ret |
||
1080 | diamond | 667 | |
1004 | diamond | 668 | draw_window: |
1570 | dunkaist | 669 | cmp [bFirstDraw], 0 |
670 | jz .posok |
||
671 | or ecx, -1 |
||
672 | mcall 9, procinfo |
||
1040 | diamond | 673 | |
1570 | dunkaist | 674 | cmp dword [ebx + 66], 0 |
675 | jle .posok |
||
1040 | diamond | 676 | |
1570 | dunkaist | 677 | mov edx, ecx |
678 | mov esi, ecx |
||
679 | cmp dword [ebx + 42], 40 + 25 * 9 |
||
680 | jae @f |
||
681 | mov edx, 40 + 25 * 9 |
||
1040 | diamond | 682 | @@: |
1570 | dunkaist | 683 | cmp dword [ebx + 46], 70 |
684 | jae @f |
||
685 | mov esi, 70 |
||
1040 | diamond | 686 | @@: |
1570 | dunkaist | 687 | mov eax, edx |
688 | and eax, esi |
||
689 | cmp eax, -1 |
||
690 | jz @f |
||
691 | mov ebx, ecx |
||
692 | mcall 67 |
||
1040 | diamond | 693 | @@: |
694 | |||
695 | .posok: |
||
1570 | dunkaist | 696 | mcall 12, 1 |
697 | mcall 48, 4 |
||
698 | mov ebp, eax ; save skin height |
||
699 | add eax, [wnd_height] |
||
700 | __mov ebx, 100, 0 |
||
701 | add ebx, [wnd_width] |
||
702 | lea ecx, [100*65536 + eax] |
||
703 | mcall 0, , , 0x73FFFFFF, 0, real_header |
||
1004 | diamond | 704 | |
1570 | dunkaist | 705 | mcall 9, procinfo, -1 |
706 | mov [bFirstDraw], 1 |
||
707 | cmp dword [ebx + 66], 0 |
||
708 | jle .nodraw |
||
709 | mov ebx, [ebx + 62] |
||
710 | inc ebx |
||
711 | mcall 13, , <0, 35>, 0xFFFFFF |
||
712 | mov ecx, [procinfo + 66] |
||
713 | inc ecx |
||
2036 | dunkaist | 714 | ; mov esi, [draw_height] ; we can not use [draw_height] here because for *.ico files containing several frames |
715 | mov esi, [image] ; with different size window height should depend on maximum frame height, not the first one |
||
716 | mov esi, [esi+Image.Height] ; |
||
1570 | dunkaist | 717 | add esi, 35 |
718 | sub ecx, esi |
||
719 | jbe @f |
||
720 | push esi |
||
721 | shl esi, 16 |
||
722 | add ecx, esi |
||
723 | pop esi |
||
724 | mcall |
||
725 | xor ecx, ecx |
||
1040 | diamond | 726 | @@: |
1570 | dunkaist | 727 | add ecx, esi |
728 | add ecx, 35*10000h - 35 |
||
729 | __mov ebx, 0, 5 |
||
730 | mcall |
||
2036 | dunkaist | 731 | ; mov esi, [draw_width] ; we can not use [draw_width] here because for *.ico files containing several frames |
732 | mov esi, [image] ; with different size window width should depend on the sum of width of all frames |
||
733 | mov esi, [esi + Image.Width] ; |
||
1570 | dunkaist | 734 | add esi, ebx |
735 | mov ebx, [procinfo+62] |
||
736 | inc ebx |
||
737 | sub ebx, esi |
||
738 | jbe @f |
||
739 | shl esi, 16 |
||
740 | add ebx, esi |
||
741 | mcall |
||
1040 | diamond | 742 | @@: |
1004 | diamond | 743 | |
1570 | dunkaist | 744 | mov ebx, [procinfo + 62] |
745 | push ebx |
||
746 | mcall 38, , <30, 30>, 0x007F7F7F |
||
747 | mcall , <5 + 25 * 1, 5 + 25 * 1>, <0, 30> |
||
748 | mcall , <10 + 25 * 3, 10 + 25 * 3> |
||
749 | mcall , <15 + 25 * 4, 15 + 25 * 4> |
||
750 | pop ebx |
||
751 | sub ebx, 25 * 5 + 10 |
||
752 | push ebx |
||
753 | imul ebx, 10001h |
||
754 | mcall |
||
1004 | diamond | 755 | |
1570 | dunkaist | 756 | mcall 8, <5 + 25 * 0, 20>, <5, 20>, 'opn'+40000000h |
757 | mcall , <10 + 25 * 1, 20>, , 'bck'+40000000h |
||
758 | mcall , <10 + 25 * 2, 20>, , 'fwd'+40000000h |
||
759 | mcall , <15 + 25 * 3, 20>, , 'bgr'+40000000h |
||
760 | pop ebx |
||
761 | add ebx, 5 |
||
762 | shl ebx, 16 |
||
763 | mov bl, 20 |
||
764 | mcall , , , 'flh'+40000000h |
||
765 | add ebx, 25 * 65536 |
||
766 | mcall , , , 'flv'+40000000h |
||
767 | add ebx, 30 * 65536 |
||
768 | mcall , , , 'rtr'+40000000h |
||
769 | add ebx, 25 * 65536 |
||
770 | mcall , , , 'rtl'+40000000h |
||
771 | add ebx, 25 * 65536 |
||
772 | mcall , , , 'flb'+40000000h |
||
1004 | diamond | 773 | |
1570 | dunkaist | 774 | mov ebp, (numimages-1)*20 |
1004 | diamond | 775 | |
1570 | dunkaist | 776 | mcall 65, buttons+openbtn*20, <20, 20>, <5 + 25 * 0, 5>, 8, palette |
777 | mcall , buttons+backbtn*20, , <10 + 25 * 1, 5> |
||
778 | mcall , buttons+forwardbtn*20, , <10 + 25 * 2, 5> |
||
779 | mcall , buttons+bgrbtn*20, , <15 + 25 * 3, 5> |
||
780 | mov edx, [procinfo + 62] |
||
781 | sub edx, 25 * 5 + 4 |
||
782 | shl edx, 16 |
||
783 | mov dl, 5 |
||
784 | mcall , buttons+fliphorzbtn*20 |
||
785 | add edx, 25 * 65536 |
||
786 | mcall , buttons+flipvertbtn*20 |
||
787 | add edx, 30 * 65536 |
||
788 | mcall , buttons+rotcwbtn*20 |
||
789 | add edx, 25 * 65536 |
||
790 | mcall , buttons+rotccwbtn*20 |
||
791 | add edx, 25 * 65536 |
||
792 | mcall , buttons+rot180btn*20 |
||
1004 | diamond | 793 | |
1570 | dunkaist | 794 | call draw_cur_frame |
1004 | diamond | 795 | |
1087 | diamond | 796 | .nodraw: |
1570 | dunkaist | 797 | mcall 12, 2 |
1040 | diamond | 798 | |
1570 | dunkaist | 799 | ret |
1004 | diamond | 800 | |
1080 | diamond | 801 | draw_cur_frame: |
1570 | dunkaist | 802 | push 0 ; ypos |
803 | push 0 ; xpos |
||
804 | mov eax, [procinfo+66] |
||
805 | sub eax, 34 |
||
806 | push eax ; max height |
||
807 | mov eax, [procinfo+62] |
||
808 | sub eax, 4 |
||
809 | push eax ; max width |
||
810 | push 35 ; y |
||
811 | push 5 ; x |
||
812 | push [cur_frame] |
||
813 | call [img.draw] |
||
814 | mov eax, [image] |
||
815 | test [eax + Image.Flags], Image.IsAnimated |
||
816 | jnz .done |
||
817 | cmp [eax + Image.Next], 0 |
||
818 | jnz .additional_frames |
||
1102 | diamond | 819 | .done: |
1570 | dunkaist | 820 | ret |
1102 | diamond | 821 | .additional_frames: |
1570 | dunkaist | 822 | mov ebx, [procinfo+62] |
823 | sub ebx, 4 |
||
824 | jbe .done |
||
825 | push 5 |
||
826 | pop esi |
||
1102 | diamond | 827 | .afloop: |
1570 | dunkaist | 828 | sub ebx, [eax + Image.Width] |
829 | jbe .done |
||
830 | dec ebx |
||
831 | jz .done |
||
832 | add esi, [eax + Image.Width] |
||
833 | mov eax, [eax + Image.Next] |
||
834 | push eax |
||
835 | inc esi |
||
836 | push 0 ; ypos |
||
837 | push 0 ; xpos |
||
838 | mov ecx, [procinfo+66] |
||
839 | sub ecx, 34 |
||
840 | push ecx ; max height |
||
841 | push ebx ; max width |
||
842 | push 35 ; y |
||
843 | push esi ; x |
||
844 | push eax ; image |
||
845 | call [img.draw] |
||
846 | pop eax |
||
847 | cmp [eax + Image.Next], 0 |
||
848 | jnz .afloop |
||
849 | ret |
||
1080 | diamond | 850 | |
1004 | diamond | 851 | ; void* __stdcall mem.Alloc(unsigned size); |
852 | mem.Alloc: |
||
1570 | dunkaist | 853 | push ebx ecx |
854 | mov ecx, [esp+12] |
||
855 | mcall 68, 12 |
||
856 | pop ecx ebx |
||
857 | ret 4 |
||
1004 | diamond | 858 | |
859 | ; void* __stdcall mem.ReAlloc(void* mptr, unsigned size); |
||
860 | mem.ReAlloc: |
||
1570 | dunkaist | 861 | push ebx ecx edx |
862 | mov edx, [esp+16] |
||
863 | mov ecx, [esp+20] |
||
864 | mcall 68, 20 |
||
865 | pop edx ecx ebx |
||
866 | ret 8 |
||
1004 | diamond | 867 | |
868 | ; void __stdcall mem.Free(void* mptr); |
||
869 | mem.Free: |
||
1570 | dunkaist | 870 | push ebx ecx |
871 | mov ecx, [esp+12] |
||
872 | mcall 68, 13 |
||
873 | pop ecx ebx |
||
874 | ret 4 |
||
1004 | diamond | 875 | |
1427 | diamond | 876 | check_shortcut: |
1570 | dunkaist | 877 | ; in: cl = scancode (from sysfn 2), |
878 | ; eax = state of modifiers (from sysfn 66.3), |
||
879 | ; edx -> shortcut descriptor |
||
880 | ; out: ZF set <=> fail |
||
881 | cmp cl, [edx+4] |
||
882 | jnz .not |
||
883 | push eax |
||
884 | mov esi, [edx] |
||
885 | and esi, 0xF |
||
886 | and al, 3 |
||
887 | call dword [check_modifier_table+esi*4] |
||
888 | test al, al |
||
889 | pop eax |
||
890 | jnz .not |
||
891 | push eax |
||
892 | mov esi, [edx] |
||
893 | shr esi, 4 |
||
894 | and esi, 0xF |
||
895 | shr al, 2 |
||
896 | and al, 3 |
||
897 | call dword [check_modifier_table+esi*4] |
||
898 | test al, al |
||
899 | pop eax |
||
900 | jnz .not |
||
901 | push eax |
||
902 | mov esi, [edx] |
||
903 | shr esi, 8 |
||
904 | and esi, 0xF |
||
905 | shr al, 4 |
||
906 | and al, 3 |
||
907 | call dword [check_modifier_table+esi*4] |
||
908 | test al, al |
||
909 | pop eax |
||
910 | ; jnz .not |
||
1427 | diamond | 911 | .not: |
1570 | dunkaist | 912 | ret |
1427 | diamond | 913 | |
914 | check_modifier_0: |
||
1570 | dunkaist | 915 | setnz al |
916 | ret |
||
1427 | diamond | 917 | check_modifier_1: |
1570 | dunkaist | 918 | setp al |
919 | ret |
||
1427 | diamond | 920 | check_modifier_2: |
1570 | dunkaist | 921 | cmp al, 3 |
922 | setnz al |
||
923 | ret |
||
1427 | diamond | 924 | check_modifier_3: |
1570 | dunkaist | 925 | cmp al, 1 |
926 | setnz al |
||
927 | ret |
||
1427 | diamond | 928 | check_modifier_4: |
1570 | dunkaist | 929 | cmp al, 2 |
930 | setnz al |
||
931 | ret |
||
1427 | diamond | 932 | |
933 | ; fills real_header with window title |
||
934 | ; window title is generated as ' |
||
935 | generate_header: |
||
1570 | dunkaist | 936 | push eax |
937 | mov esi, [last_name_component] |
||
938 | mov edi, real_header |
||
1427 | diamond | 939 | @@: |
1570 | dunkaist | 940 | lodsb |
941 | test al, al |
||
942 | jz @f |
||
943 | stosb |
||
944 | cmp edi, real_header+256 |
||
945 | jb @b |
||
1427 | diamond | 946 | .overflow: |
1570 | dunkaist | 947 | mov dword [edi-4], '...' |
1427 | diamond | 948 | .ret: |
1570 | dunkaist | 949 | pop eax |
950 | ret |
||
1427 | diamond | 951 | @@: |
1570 | dunkaist | 952 | mov esi, s_header |
1427 | diamond | 953 | @@: |
1570 | dunkaist | 954 | lodsb |
955 | stosb |
||
956 | test al, al |
||
957 | jz .ret |
||
958 | cmp edi, real_header+256 |
||
959 | jb @b |
||
960 | jmp .overflow |
||
1004 | diamond | 961 | ;----------------------------------------------------------------------------- |
962 | |||
1427 | diamond | 963 | s_header db ' - Kolibri Image Viewer', 0 |
1004 | diamond | 964 | |
965 | ;----------------------------------------------------------------------------- |
||
966 | ;----------------------------------------------------------------------------- |
||
967 | |||
968 | align 4 |
||
969 | @IMPORT: |
||
970 | |||
1570 | dunkaist | 971 | library \ |
972 | libio , 'libio.obj' , \ |
||
973 | libgfx , 'libgfx.obj' , \ |
||
974 | libimg , 'libimg.obj' , \ |
||
975 | libini , 'libini.obj' , \ |
||
976 | sort , 'sort.obj' , \ |
||
977 | proc_lib ,'proc_lib.obj' |
||
1004 | diamond | 978 | |
1511 | mario79 | 979 | |
1570 | dunkaist | 980 | import libio , \ |
981 | libio.init , 'lib_init' , \ |
||
982 | file.size , 'file_size' , \ |
||
983 | file.open , 'file_open' , \ |
||
984 | file.read , 'file_read' , \ |
||
985 | file.close , 'file_close' |
||
1004 | diamond | 986 | |
1570 | dunkaist | 987 | import libgfx , \ |
988 | libgfx.init , 'lib_init' , \ |
||
989 | gfx.open , 'gfx_open' , \ |
||
990 | gfx.close , 'gfx_close' , \ |
||
991 | gfx.pen.color , 'gfx_pen_color' , \ |
||
992 | gfx.line , 'gfx_line' |
||
1004 | diamond | 993 | |
1570 | dunkaist | 994 | import libimg , \ |
995 | libimg.init , 'lib_init' , \ |
||
996 | img.is_img , 'img_is_img' , \ |
||
997 | img.to_rgb2 , 'img_to_rgb2', \ |
||
998 | img.decode , 'img_decode' , \ |
||
999 | img.flip , 'img_flip' , \ |
||
1000 | img.rotate , 'img_rotate' , \ |
||
1001 | img.destroy , 'img_destroy', \ |
||
1002 | img.draw , 'img_draw' |
||
1004 | diamond | 1003 | |
1570 | dunkaist | 1004 | import libini, \ |
1005 | ini_get_shortcut, 'ini_get_shortcut' |
||
1427 | diamond | 1006 | |
1144 | diamond | 1007 | import sort, sort.START, 'START', SortDir, 'SortDir', strcmpi, 'strcmpi' |
1016 | diamond | 1008 | |
1570 | dunkaist | 1009 | import proc_lib, \ |
1010 | OpenDialog_Init, 'OpenDialog_init', \ |
||
1011 | OpenDialog_Start,'OpenDialog_start' |
||
1511 | mario79 | 1012 | |
1570 | dunkaist | 1013 | bFirstDraw db 0 |
1004 | diamond | 1014 | ;----------------------------------------------------------------------------- |
1015 | |||
1016 | diamond | 1016 | virtual at 0 |
1017 | file 'kivicons.bmp':0xA,4 |
||
1018 | load offbits dword from 0 |
||
1019 | end virtual |
||
1020 | numimages = 9 |
||
1021 | openbtn = 0 |
||
1022 | backbtn = 1 |
||
1023 | forwardbtn = 2 |
||
1024 | bgrbtn = 3 |
||
1025 | fliphorzbtn = 4 |
||
1026 | flipvertbtn = 5 |
||
1027 | rotcwbtn = 6 |
||
1028 | rotccwbtn = 7 |
||
1029 | rot180btn = 8 |
||
1030 | |||
1004 | diamond | 1031 | palette: |
1570 | dunkaist | 1032 | file 'kivicons.bmp':0x36,offbits-0x36 |
1016 | diamond | 1033 | buttons: |
1570 | dunkaist | 1034 | file 'kivicons.bmp':offbits |
1004 | diamond | 1035 | repeat 10 |
1036 | y = % - 1 |
||
1037 | z = 20 - % |
||
1016 | diamond | 1038 | repeat numimages*5 |
1039 | load a dword from $ - numimages*20*20 + numimages*20*y + (%-1)*4 |
||
1040 | load b dword from $ - numimages*20*20 + numimages*20*z + (%-1)*4 |
||
1041 | store dword a at $ - numimages*20*20 + numimages*20*z + (%-1)*4 |
||
1042 | store dword b at $ - numimages*20*20 + numimages*20*y + (%-1)*4 |
||
1004 | diamond | 1043 | end repeat |
1044 | end repeat |
||
1045 | |||
1570 | dunkaist | 1046 | inifilename db '/sys/media/kiv.ini',0 |
1047 | aShortcuts db 'Shortcuts',0 |
||
1048 | aNext db 'Next',0 |
||
1049 | aPrev db 'Prev',0 |
||
1427 | diamond | 1050 | |
1051 | align 4 |
||
1052 | check_modifier_table: |
||
1570 | dunkaist | 1053 | dd check_modifier_0 |
1054 | dd check_modifier_1 |
||
1055 | dd check_modifier_2 |
||
1056 | dd check_modifier_3 |
||
1057 | dd check_modifier_4 |
||
1427 | diamond | 1058 | |
1470 | mario79 | 1059 | ;--------------------------------------------------------------------- |
1060 | align 4 |
||
1061 | OpenDialog_data: |
||
1570 | dunkaist | 1062 | .type dd 0 |
1063 | .procinfo dd procinfo ;+4 |
||
1064 | .com_area_name dd communication_area_name ;+8 |
||
1065 | .com_area dd 0 ;+12 |
||
1066 | .opendir_pach dd temp_dir_pach ;+16 |
||
1067 | .dir_default_pach dd communication_area_default_pach ;+20 |
||
1068 | .start_path dd open_dialog_path ;+24 |
||
1069 | .draw_window dd draw_window ;+28 |
||
1070 | .status dd 0 ;+32 |
||
1071 | .openfile_pach dd path ;openfile_pach ;+36 |
||
1072 | .filename_area dd 0 ;+40 |
||
1073 | .filter_area dd Filter |
||
1582 | mario79 | 1074 | .x: |
1075 | .x_size dw 420 ;+48 ; Window X size |
||
1076 | .x_start dw 10 ;+50 ; Window X position |
||
1077 | .y: |
||
1078 | .y_size dw 320 ;+52 ; Window y size |
||
1079 | .y_start dw 10 ;+54 ; Window Y position |
||
1004 | diamond | 1080 | |
1470 | mario79 | 1081 | communication_area_name: |
1570 | dunkaist | 1082 | db 'FFFFFFFF_open_dialog',0 |
1701 | lrz | 1083 | |
1470 | mario79 | 1084 | open_dialog_path: |
1701 | lrz | 1085 | if __nightbuild eq yes |
1086 | db '/sys/MANAGERS/opendial',0 |
||
1087 | else |
||
1570 | dunkaist | 1088 | db '/sys/File Managers/opendial',0 |
1701 | lrz | 1089 | end if |
1470 | mario79 | 1090 | communication_area_default_pach: |
1570 | dunkaist | 1091 | db '/rd/1',0 |
1004 | diamond | 1092 | |
1470 | mario79 | 1093 | Filter: |
1094 | dd Filter.end - Filter |
||
1095 | .1: |
||
1096 | db 'BMP',0 |
||
1097 | db 'GIF',0 |
||
1098 | db 'JPG',0 |
||
1099 | db 'JPEG',0 |
||
1100 | db 'JPE',0 |
||
1101 | db 'PNG',0 |
||
1102 | db 'ICO',0 |
||
1103 | db 'CUR',0 |
||
1575 | dunkaist | 1104 | ; dunkaist [ |
1570 | dunkaist | 1105 | db 'PCX',0 |
1922 | dunkaist | 1106 | db 'XCF',0 |
1575 | dunkaist | 1107 | ; dunkaist ] |
1470 | mario79 | 1108 | .end: |
1109 | db 0 |
||
1004 | diamond | 1110 | |
1470 | mario79 | 1111 | draw_window_fake: |
1570 | dunkaist | 1112 | ret |
1470 | mario79 | 1113 | ;------------------------------------------------------------------------------ |
1016 | diamond | 1114 | readdir_fileinfo: |
1570 | dunkaist | 1115 | dd 1 |
1116 | dd 0 |
||
1117 | dd 0 |
||
1118 | readblocks dd 0 |
||
1119 | directory_ptr dd 0 |
||
1470 | mario79 | 1120 | ;------------------------------------------------------------------------------ |
1004 | diamond | 1121 | I_END: |
1570 | dunkaist | 1122 | curdir rb 1024 |
1016 | diamond | 1123 | |
1124 | align 4 |
||
1004 | diamond | 1125 | img_data dd ? |
1126 | img_data_len dd ? |
||
1570 | dunkaist | 1127 | fh dd ? |
1128 | image dd ? |
||
1129 | wnd_width dd ? |
||
1130 | wnd_height dd ? |
||
1131 | draw_width dd ? |
||
1132 | draw_height dd ? |
||
1133 | last_name_component dd ? |
||
1134 | cur_file_idx dd ? |
||
1135 | cur_frame_time dd ? |
||
1136 | cur_frame dd ? |
||
1004 | diamond | 1137 | |
1570 | dunkaist | 1138 | next_mod dd ? |
1139 | next_key dd ? |
||
1140 | prev_mod dd ? |
||
1141 | prev_key dd ? |
||
1004 | diamond | 1142 | |
1570 | dunkaist | 1143 | procinfo: rb 1024 |
1144 | path: rb 4096 ;1024+16 |
||
1145 | real_header rb 256 |
||
1470 | mario79 | 1146 | @PARAMS rb 4096 ;512 |
1147 | ;--------------------------------------------------------------------- |
||
1148 | temp_dir_pach: |
||
1149 | rb 4096 |
||
1150 | ;--------------------------------------------------------------------- |
||
1570 | dunkaist | 1151 | rb 4096 |
1470 | mario79 | 1152 | stacktop: |
1153 | ;--------------------------------------------------------------------- |
||
1922 | dunkaist | 1154 | F_END:=>15>10>10>5>20,>15>10>10>5,>5>15>10>0,>5>30,>0,>0> |