Subversion Repositories Kolibri OS

Rev

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

Rev 2080 Rev 2107
1
use32
1
use32
2
	org 0x0
2
	org 0x0
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
4
	dd 0x1
4
	dd 0x1
5
	dd start
5
	dd start
6
	dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
6
	dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
7
	dd mem
7
	dd mem
8
	dd stacktop
8
	dd stacktop
9
	dd 0
9
	dd 0
10
	dd sys_path
10
	dd sys_path
11
 
11
 
12
include '../../macros.inc'
12
include '../../macros.inc'
13
include '../../proc32.inc'
13
include '../../proc32.inc'
14
include '../../develop/libraries/box_lib/load_lib.mac'
14
include '../../develop/libraries/box_lib/load_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
16
include 'mem.inc'
16
include 'mem.inc'
17
include 'dll.inc'
17
include 'dll.inc'
18
include 'lang.inc'
18
include 'lang.inc'
19
 
19
 
20
debug equ 0
20
debug equ 0
21
 
21
 
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
22
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
23
capt db 'info 3ds 20.08.11',0 ;¯®¤¯¨áì ®ª­ 
-
 
24
 
23
 
25
struct FileInfoBlock
24
struct FileInfoBlock
26
	Function dd ?
25
	Function dd ?
27
	Position dd ?
26
	Position dd ?
28
	Flags	 dd ?
27
	Flags	 dd ?
29
	Count	 dd ?
28
	Count	 dd ?
30
	Buffer	 dd ?
29
	Buffer	 dd ?
31
		db ?
30
		db ?
32
	FileName dd ?
31
	FileName dd ?
33
ends
32
ends
34
 
33
 
35
run_file_70 FileInfoBlock
34
run_file_70 FileInfoBlock
36
image_data dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì. ¤«ï ­ã¦¥­ ¯à¥®¡à §®¢ ­¨ï ¨§®¡à ¦¥­¨ï
35
image_data dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì. ¤«ï ­ã¦¥­ ¯à¥®¡à §®¢ ­¨ï ¨§®¡à ¦¥­¨ï
37
open_file_lif dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
36
open_file_lif dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
38
 
37
 
39
;
38
;
40
fn_toolbar db 'toolbar.png',0
39
fn_toolbar db 'toolbar.png',0
41
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
40
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
42
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7
41
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7
43
image_data_toolbar dd 0
42
image_data_toolbar dd 0
44
;
43
;
45
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
44
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
46
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
45
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
47
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
46
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
48
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
47
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
49
;
48
;
50
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
49
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
51
 
50
 
52
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
51
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
53
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
52
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
54
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
53
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
55
		jmp @f
54
		jmp @f
56
			local .path_str
55
			local .path_str
57
			.path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
56
			.path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
58
			db 0
57
			db 0
59
		@@:
58
		@@:
60
		;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
59
		;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
61
		copy_path .path_str,[32],file_name,0x0
60
		copy_path .path_str,[32],file_name,0x0
62
	else
61
	else
63
		copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
62
		copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
64
	end if
63
	end if
65
 
64
 
66
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
65
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
67
	mov [buf],eax
66
	mov [buf],eax
68
 
67
 
69
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
68
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
70
	mov [run_file_70.Function], 0
69
	mov [run_file_70.Function], 0
71
	mov [run_file_70.Position], 0
70
	mov [run_file_70.Position], 0
72
	mov [run_file_70.Flags], 0
71
	mov [run_file_70.Flags], 0
73
	mov [run_file_70.Count], dword size
72
	mov [run_file_70.Count], dword size
74
	m2m [run_file_70.Buffer], [buf]
73
	m2m [run_file_70.Buffer], [buf]
75
	mov byte[run_file_70+20], 0
74
	mov byte[run_file_70+20], 0
76
	mov [run_file_70.FileName], file_name
75
	mov [run_file_70.FileName], file_name
77
	mov ebx,run_file_70
76
	mov ebx,run_file_70
78
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
77
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
79
	cmp ebx,0xffffffff
78
	cmp ebx,0xffffffff
80
	je @f
79
	je @f
81
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
80
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
82
		stdcall dword[img_decode], dword[buf],ebx,0
81
		stdcall dword[img_decode], dword[buf],ebx,0
83
		mov dword[image_data],eax
82
		mov dword[image_data],eax
84
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
83
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
85
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
84
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
86
		;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
85
		;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
87
		stdcall dword[img_destroy], dword[image_data]
86
		stdcall dword[img_destroy], dword[image_data]
88
	@@:
87
	@@:
89
}
88
}
90
 
89
 
91
;--------------------------------------
90
;--------------------------------------
92
sizeof.block_3ds equ 9
91
include 'data.inc'
93
 
-
 
94
macro block_3ds id,icon,par,caption
-
 
95
{
-
 
96
	dw id ;+0 ¨¤¥­â¨ä¨ª â®à ¡«®ª  ¢ ä ©«¥ 3ds
-
 
97
	dw icon ;+2 ­®¬¥à ¨ª®­ª¨ ¤«ï ¡«®ª 
-
 
98
	db par ;+4 ᮤ¥à¦¨â «¨ ¡«®ª ¯®¤¡«®ª¨ (0-¤  1-­¥â)
-
 
99
	dd caption+0 ;+5 ®¯¨á ­¨¥ ¡«®ª 
-
 
100
}
-
 
101
 
-
 
102
CHUNK_MAIN		  equ 0x4D4D ; [-] á業 
-
 
103
CHUNK_color_1		  equ 0x0011 ; [+] 梥â rgb (byte format)
-
 
104
CHUNK_ambient_color	  equ 0x2100 ; [-] ambient color
-
 
105
  CHUNK_OBJMESH 	  equ 0x3D3D ; [-] ¢áïç¥áª¨¥ ®¡ê¥ªâë
-
 
106
    CHUNK_OBJBLOCK	  equ 0x4000 ; [+] ®¡ê¥ªâ
-
 
107
      CHUNK_TRIMESH	  equ 0x4100 ; [-] trimesh-®¡ê¥ªâ
-
 
108
	CHUNK_VERTLIST	  equ 0x4110 ; [+] ᯨ᮪ ¢¥à設
-
 
109
	CHUNK_FACELIST	  equ 0x4120 ; [+] ᯨ᮪ £à ­¥©
-
 
110
	CHUNK_FACEMAT	  equ 0x4130 ; [+] ¬ â¥à¨ «ë £à ­¥©
-
 
111
	CHUNK_MAPLIST	  equ 0x4140 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë
-
 
112
	CHUNK_TRMATRIX	  equ 0x4160 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤ 
-
 
113
      CHUNK_CAMERA	  equ 0x4700 ; [+] ®¡ê¥ªâ-ª ¬¥à 
-
 
114
  CHUNK_MATERIAL	  equ 0xAFFF ; [-] ¬ â¥à¨ «
-
 
115
    CHUNK_MATNAME	  equ 0xA000 ; [+] ­ §¢ ­¨¥ ¬ â¥à¨ « 
-
 
116
    CHUNK_TEXTURE	  equ 0xA200 ; [-] ⥪áâãà  ¬ â¥à¨ « 
-
 
117
      CHUNK_MAPFILE	  equ 0xA300 ; [+] ¨¬ï ä ©«  ⥪áâãàë
-
 
118
  CHUNK_KEYFRAMER	  equ 0xB000 ; [-] ¨­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨
-
 
119
  CHUNK_TRACKINFO	  equ 0xB002 ; [-] ¯®¢¥¤¥­¨¥ ®¡ê¥ªâ 
-
 
120
    CHUNK_TRACKOBJNAME	  equ 0xB010 ; [+] ­ §¢ ­¨¥ í⮣® ®¡ê¥ªâ 
-
 
121
    CHUNK_TRACKPIVOT	  equ 0xB013 ; [+] 業âà ¢à é¥­¨ï ®¡ê¥ªâ 
-
 
122
    CHUNK_TRACKPOS	  equ 0xB020 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ 
-
 
123
    CHUNK_TRACKROTATE	  equ 0xB021 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ 
-
 
124
  CHUNK_TRACKCAMERA	  equ 0xB003 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë
-
 
125
    CHUNK_TRACKFOV	  equ 0xB023 ; [+] ¯®¢¥¤¥­¨¥ FOV ª ¬¥àë
-
 
126
    CHUNK_TRACKROLL	  equ 0xB024 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë
-
 
127
  CHUNK_TRACKCAMTGT	  equ 0xB004 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë
-
 
128
 
-
 
129
;¤ ­­ë¥ ᮤ¥à¦ â «¨èì ¡«®ª¨, ®â¬¥ç¥­­ë¥ ¯«îᮬ, ®áâ «ì­ë¥ ¡«®ª¨
-
 
130
; á®áâ®ïâ «¨èì ¨§ ¯®¤¡«®ª®¢
-
 
131
 
-
 
132
MAX_FILE_LEVEL equ 20 ;¬ ªá¨¬ «ì­ë© ã஢¥­ì ¢«®¦¥­­®á⨠¡«®ª®¢ ¤«ï  ­ «¨§ 
-
 
133
MAX_FILE_SIZE equ 150*0x400 ;¬ ªá¨¬ «ì­ë© à §¬¥à ä ©«  (50 Kb)
92
 
134
level_stack dd 0
93
level_stack dd 0
135
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
94
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
136
 
95
 
137
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
96
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
138
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
97
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
139
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
98
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
140
 
99
 
141
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
100
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
142
 
101
 
143
align 4
102
align 4
144
type_bloks:
-
 
145
block_3ds 0x0002,5,1,txt_0002
-
 
146
block_3ds 0x3d3e,5,1 ;mesh version
-
 
147
block_3ds 0xA010,4,0 ;material ambient color
-
 
148
block_3ds 0xA020,4,0 ;material diffuse color
-
 
149
block_3ds 0xA030,4,0 ;material specular color
-
 
150
block_3ds CHUNK_color_1,     4,1 ; [+] 梥â rgb (byte format)
-
 
151
block_3ds CHUNK_ambient_color,3,0 ; [-] ambient color
-
 
152
block_3ds CHUNK_OBJMESH,     3,0 ; [-] ¢áïç¥áª¨¥ ®¡ê¥ªâë
-
 
153
block_3ds CHUNK_OBJBLOCK,    3,1,txt_4000
-
 
154
block_3ds CHUNK_TRIMESH,     3,0 ; [-] trimesh-®¡ê¥ªâ
-
 
155
block_3ds CHUNK_VERTLIST,    3,1,txt_4110
-
 
156
block_3ds CHUNK_FACELIST,    3,1,txt_4120
-
 
157
block_3ds CHUNK_FACEMAT,     3,1 ; [+] ¬ â¥à¨ «ë £à ­¥©
-
 
158
block_3ds CHUNK_MAPLIST,     3,1 ; [+] ⥪áâãà­ë¥ ª®®à¤¨­ âë
-
 
159
block_3ds CHUNK_TRMATRIX,    3,1 ; [+] ¬ âà¨æ  ¯¥à¥¢®¤ 
-
 
160
block_3ds CHUNK_CAMERA,      3,1 ; [+] ®¡ê¥ªâ-ª ¬¥à 
-
 
161
block_3ds 0x4600,3,1,txt_4600
-
 
162
block_3ds CHUNK_MATERIAL,    3,0,txt_afff
-
 
163
block_3ds CHUNK_MATNAME,     3,1,txt_a000
-
 
164
block_3ds CHUNK_TEXTURE,     3,0,txt_a200
-
 
165
block_3ds CHUNK_MAPFILE,     6,1,txt_a300
-
 
166
block_3ds CHUNK_KEYFRAMER,   3,0,txt_b000
-
 
167
block_3ds CHUNK_TRACKINFO,   3,0,txt_b002
-
 
168
block_3ds CHUNK_TRACKOBJNAME,3,1,txt_b010
-
 
169
block_3ds CHUNK_TRACKPIVOT,  3,1,txt_b013
-
 
170
block_3ds CHUNK_TRACKPOS,    3,1 ; [+] âà ¥ªâ®à¨ï ®¡ê¥ªâ 
-
 
171
block_3ds CHUNK_TRACKROTATE, 3,1 ; [+] âà ¥ªâ®à¨ï ¢à é¥­¨ï ®¡ê¥ªâ 
-
 
172
block_3ds CHUNK_TRACKCAMERA, 3,0 ; [-] ¯®¢¥¤¥­¨¥ ª ¬¥àë
-
 
173
block_3ds CHUNK_TRACKFOV,    3,1 ; [+] ¯®¢¥¤¥­¨¥ FOV ª ¬¥àë
-
 
174
block_3ds CHUNK_TRACKROLL,   3,1 ; [+] ¯®¢¥¤¥­¨¥ roll ª ¬¥àë
-
 
175
block_3ds CHUNK_TRACKCAMTGT, 3,0 ; [-] ¯®¢¥¤¥­¨¥ "楫¨" ª ¬¥àë
-
 
176
.end:
-
 
177
 
-
 
178
if lang eq ru
-
 
179
txt_0002 db '3ds ¢¥àá¨ï',0
-
 
180
txt_4000 db 'Ž¡ê¥ªâ (á ¨¬¥­¥¬)',0
-
 
181
txt_4110 db '‘¯¨á®ª ¢¥à設',0
-
 
182
txt_4120 db '‘¯¨á®ª £à ­¥©',0
-
 
183
txt_4600 db '‘¢¥â',0
-
 
184
txt_a000 db ' §¢ ­¨¥ ¬ â¥à¨ « ',0
-
 
185
txt_a200 db '’¥ªáâãà  ¬ â¥à¨ «  1',0
-
 
186
txt_a300 db 'ˆ¬ï ä ©«  ⥪áâãàë',0
-
 
187
txt_afff db 'Œ â¥à¨ «',0
-
 
188
txt_b000 db 'ˆ­ä®à¬ æ¨ï ®¡  ­¨¬ æ¨¨',0
-
 
189
txt_b002 db '®¢¥¤¥­¨¥ ®¡ê¥ªâ ',0
-
 
190
txt_b010 db ' §¢ ­¨¥ ®¡ê¥ªâ ',0
-
 
191
txt_b013 db '–¥­âà ¢à é¥­¨ï ®¡ê¥ªâ ',0
-
 
192
else
-
 
193
txt_0002 db '3ds version',0
-
 
194
txt_4000 db 'Object (with name)',0
-
 
195
txt_4110 db 'Vertices list',0
-
 
196
txt_4120 db 'Faces description',0
-
 
197
txt_4600 db 'Light',0
-
 
198
txt_a000 db 'Material name',0
-
 
199
txt_a200 db 'Texture map 1',0
-
 
200
txt_a300 db 'Mapping filename',0
-
 
201
txt_afff db 'Meterial',0
-
 
202
txt_b000 db 'Keyframer',0
-
 
203
txt_b002 db 'Mesh information',0
-
 
204
txt_b010 db 'Object name',0
-
 
205
txt_b013 db 'Object pivot point',0
-
 
206
end if
-
 
207
 
-
 
208
align 4
-
 
209
file_3ds:
103
file_3ds:
210
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
104
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
211
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
105
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
212
rb 8*MAX_FILE_LEVEL
106
rb 8*MAX_FILE_LEVEL
213
 
107
 
214
size_one_list equ 40
108
size_one_list equ 40
215
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
109
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
216
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
110
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
217
 
-
 
218
if lang eq ru
-
 
219
txt_open_3ds db 'Žâªàëâ ä ©«:',0
-
 
220
txt_no_3ds db 'Žâªàëâë© ä ©« ­¥ ¢ ä®à¬ â¥ *.3ds',0
-
 
221
txt_3ds_big_file db ' §¬¥à ä ©«  ¡®«ìè¥ MAX_FILE_SIZE',0
-
 
222
txt_3ds_err_sizes db '‚®§¬®¦­® ä ©« ¯®¢à¥¦¤¥­',0
-
 
223
txt_3ds_offs:
-
 
224
	db '‘¬¥é¥­¨¥: '
-
 
225
	.dig: rb 8
-
 
226
	db 0
-
 
227
else
-
 
228
txt_open_3ds db 'Open file:',0
-
 
229
txt_no_3ds db 'Žâªàëâë© ä ©« ­¥ ¢ ä®à¬ â¥ *.3ds',0
-
 
230
txt_3ds_big_file db ' §¬¥à ä ©«  ¡®«ìè¥ MAX_FILE_SIZE',0
-
 
231
txt_3ds_err_sizes db '‚®§¬®¦­® ä ©« ¯®¢à¥¦¤¥­',0
-
 
232
txt_3ds_offs:
-
 
233
	db 'Offset: '
-
 
234
	.dig: rb 8
-
 
235
	db 0
-
 
236
end if
111
 
237
txt_3ds_symb db 0,0
112
txt_3ds_symb db 0,0
238
;--------------------------------------
113
;--------------------------------------
239
 
114
 
240
 
115
 
241
align 4
116
align 4
242
start:
117
start:
243
	load_libraries l_libs_start,l_libs_end
118
	load_libraries l_libs_start,l_libs_end
244
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
119
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
245
	mov	ebp,lib_7
120
	mov	ebp,lib_7
246
	cmp	dword [ebp+ll_struc_size-4],0
121
	cmp	dword [ebp+ll_struc_size-4],0
247
	jz	@f
122
	jz	@f
248
		mcall -1 ;exit not correct
123
		mcall -1 ;exit not correct
249
	@@:
124
	@@:
250
	mcall 48,3,sc,sizeof.system_colors
125
	mcall 48,3,sc,sizeof.system_colors
251
	mcall 40,0x27
126
	mcall 40,0x27
252
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
127
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
253
 
128
 
254
	stdcall dword[tl_data_init], tree1
129
	stdcall dword[tl_data_init], tree1
255
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
130
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
256
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
131
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
257
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
132
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
258
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
133
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
259
	mov eax,dword[icon_tl_sys]
134
	mov eax,dword[icon_tl_sys]
260
	mov dword[tree1.data_img_sys],eax
135
	mov dword[tree1.data_img_sys],eax
261
 
136
 
262
	load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
137
	load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
263
	mov eax,dword[icon_toolbar]
138
	mov eax,dword[icon_toolbar]
264
	mov dword[tree1.data_img],eax
139
	mov dword[tree1.data_img],eax
265
 
140
 
266
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
141
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
267
 
142
 
268
	load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
143
	load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
269
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
144
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
270
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
145
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
271
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
146
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
272
	stdcall [buf2d_convert_text_matrix], buf_1
147
	stdcall [buf2d_convert_text_matrix], buf_1
273
 
148
 
274
	load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
149
	load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
275
 
150
 
276
	stdcall mem.Alloc,MAX_FILE_SIZE
151
	stdcall mem.Alloc,MAX_FILE_SIZE
277
	mov dword[open_file_lif],eax
152
	mov dword[open_file_lif],eax
278
 
153
 
279
	mcall 26,9
154
	mcall 26,9
280
	mov [last_time],eax
155
	mov [last_time],eax
281
 
156
 
282
align 4
157
align 4
283
red_win:
158
red_win:
284
	call draw_window
159
	call draw_window
285
 
160
 
286
align 4
161
align 4
287
still:
162
still:
288
	mcall 26,9
163
	mcall 26,9
289
	mov ebx,[last_time]
164
	mov ebx,[last_time]
290
	add ebx,10 ;§ ¤¥à¦ª 
165
	add ebx,10 ;§ ¤¥à¦ª 
291
	cmp ebx,eax
166
	cmp ebx,eax
292
	jge @f
167
	jge @f
293
		mov ebx,eax
168
		mov ebx,eax
294
	@@:
169
	@@:
295
	sub ebx,eax
170
	sub ebx,eax
296
	;cmp ebx,10 ;§ ¤¥à¦ª 
171
	;cmp ebx,10 ;§ ¤¥à¦ª 
297
	;ja timer_funct
172
	;ja timer_funct
298
	;test ebx,ebx
173
	;test ebx,ebx
299
	;jz timer_funct
174
	;jz timer_funct
300
	mcall 23
175
	mcall 23
301
	cmp eax,0
176
	cmp eax,0
302
	je timer_funct
177
	je timer_funct
303
 
178
 
304
	cmp al,1
179
	cmp al,1
305
	jz red_win
180
	jz red_win
306
	cmp al,2
181
	cmp al,2
307
	jz key
182
	jz key
308
	cmp al,3
183
	cmp al,3
309
	jz button
184
	jz button
310
	cmp al,6
185
	cmp al,6
311
	jne @f 
186
	jne @f 
312
		call mouse
187
		call mouse
313
	@@:
188
	@@:
314
	jmp still
189
	jmp still
315
 
190
 
316
align 4
191
align 4
317
mouse:
192
mouse:
318
	stdcall [tl_mouse], dword tree1
193
	stdcall [tl_mouse], dword tree1
319
	ret
194
	ret
320
 
195
 
321
align 4
196
align 4
322
timer_funct:
197
timer_funct:
323
	pushad
198
	pushad
324
if debug
199
if debug
325
	mov eax,4
200
	mov eax,4
326
	mov ebx,(5 shl 16)+8
201
	mov ebx,(5 shl 16)+8
327
	mov ecx,0xff+0x80000000
202
	mov ecx,0xff+0x80000000
328
	mov edx,txt_0002
203
	mov edx,txt_0002
329
	int 0x40
204
	int 0x40
330
end if
205
end if
331
	mcall 26,9
206
	mcall 26,9
332
	mov [last_time],eax
207
	mov [last_time],eax
333
 
208
 
334
	;
209
	;
335
	stdcall [tl_node_get_data],tree1
210
	stdcall [tl_node_get_data],tree1
336
	pop ebx
211
	pop ebx
337
	cmp ebx,0
212
	cmp ebx,0
338
	je @f
213
	je @f
339
		mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
214
		mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
340
		mov ecx,dword[ebx+4]
215
		mov ecx,dword[ebx+4]
341
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
216
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
342
 
217
 
343
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
218
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
344
		cmp dword[offs_last_timer],eax
219
		cmp dword[offs_last_timer],eax
345
		je @f
220
		je @f
346
			mov dword[offs_last_timer],eax
221
			mov dword[offs_last_timer],eax
347
			call buf_draw_beg
222
			call buf_draw_beg
348
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
223
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
349
			mov edx,dword[ebx+8]
224
			mov edx,dword[ebx+8]
350
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
225
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
351
			je .no_info
226
			je .no_info
352
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
227
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
353
			.no_info:
228
			.no_info:
354
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
229
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
355
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
230
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
356
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
231
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
357
	@@:
232
	@@:
358
	popad
233
	popad
359
	jmp still
234
	jmp still
360
 
235
 
361
align 4
236
align 4
362
buf_draw_beg:
237
buf_draw_beg:
363
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
238
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
364
	stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
239
	stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
365
	stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
240
	stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
366
	cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
241
	cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
367
	jne @f
242
	jne @f
368
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
243
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
369
	@@:
244
	@@:
370
	ret
245
	ret
371
 
246
 
372
align 4
247
align 4
373
proc buf_draw_hex_table, offs:dword, size_line:dword
248
proc buf_draw_hex_table, offs:dword, size_line:dword
374
	pushad
249
	pushad
375
	locals
250
	locals
376
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
251
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
377
	endl
252
	endl
378
		mov esi,dword[offs]
253
		mov esi,dword[offs]
379
		mov edi,dword[open_file_lif]
254
		mov edi,dword[open_file_lif]
380
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
255
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
381
		mov dword[txt_3ds_offs.dig],0
256
		mov dword[txt_3ds_offs.dig],0
382
		cld
257
		cld
383
		.cycle_rows:
258
		.cycle_rows:
384
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
259
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
385
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
260
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
386
			mov ecx,10
261
			mov ecx,10
387
			@@:
262
			@@:
388
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
263
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
389
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
264
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
390
 
265
 
391
				mov al,byte[esi]
266
				mov al,byte[esi]
392
				mov byte[txt_3ds_symb],al
267
				mov byte[txt_3ds_symb],al
393
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
268
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
394
				inc esi
269
				inc esi
395
				cmp esi,dword[size_line]
270
				cmp esi,dword[size_line]
396
				jne .end_block
271
				jne .end_block
397
					stdcall draw_block_end_line, dword[coord_y]
272
					stdcall draw_block_end_line, dword[coord_y]
398
				.end_block:
273
				.end_block:
399
				cmp esi,edi
274
				cmp esi,edi
400
				jge @f ;jg ???
275
				jge @f ;jg ???
401
				add ebx,24
276
				add ebx,24
402
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
277
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
403
				loop @b
278
				loop @b
404
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
279
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
405
			mov ebx,dword[buf_0.h]
280
			mov ebx,dword[buf_0.h]
406
			cmp dword[coord_y],ebx
281
			cmp dword[coord_y],ebx
407
			jl .cycle_rows
282
			jl .cycle_rows
408
		@@:
283
		@@:
409
	popad
284
	popad
410
	ret
285
	ret
411
endp
286
endp
412
 
287
 
413
align 4
288
align 4
414
proc draw_block_end_line, coord_y:dword
289
proc draw_block_end_line, coord_y:dword
415
	push eax ebx ecx
290
	push eax ebx ecx
416
		add ebx,20 ;20 = width 2.5 symbols
291
		add ebx,20 ;20 = width 2.5 symbols
417
		mov eax,[coord_y]
292
		mov eax,[coord_y]
418
		sub eax,2
293
		sub eax,2
419
		mov ecx,eax
294
		mov ecx,eax
420
		add ecx,10
295
		add ecx,10
421
		stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
296
		stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
422
		stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
297
		stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
423
		stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
298
		stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
424
	pop ecx ebx eax
299
	pop ecx ebx eax
425
	ret
300
	ret
426
endp
301
endp
427
 
302
 
428
align 4
303
align 4
429
draw_window:
304
draw_window:
430
pushad
305
pushad
431
	mcall 12,1
306
	mcall 12,1
432
	xor eax,eax
307
	xor eax,eax
433
	mov ebx,(20 shl 16)+560
308
	mov ebx,(20 shl 16)+560
434
	mov ecx,(20 shl 16)+315
309
	mov ecx,(20 shl 16)+315
435
	mov edx,[sc.work]
310
	mov edx,[sc.work]
436
	or  edx,(3 shl 24)+0x10000000+0x20000000
311
	or  edx,(3 shl 24)+0x10000000+0x20000000
437
	mov edi,capt
312
	mov edi,capt
438
	int 0x40
313
	int 0x40
439
 
314
 
440
	mov eax,8
315
	mov eax,8
441
	mov ebx,(5 shl 16)+20
316
	mov ebx,(5 shl 16)+20
442
	mov ecx,(5 shl 16)+20
317
	mov ecx,(5 shl 16)+20
443
	mov edx,3
318
	mov edx,3
444
	mov esi,[sc.work_button]
319
	mov esi,[sc.work_button]
445
	int 0x40
320
	int 0x40
446
 
321
 
447
	mov ebx,(30 shl 16)+20
322
	mov ebx,(30 shl 16)+20
448
	mov ecx,(5 shl 16)+20
323
	mov ecx,(5 shl 16)+20
449
	mov edx,4
324
	mov edx,4
450
	int 0x40
325
	int 0x40
451
 
326
 
452
	;mov ebx,(55 shl 16)+20
327
	;mov ebx,(55 shl 16)+20
453
	;mov ecx,(5 shl 16)+20
328
	;mov ecx,(5 shl 16)+20
454
	;mov edx,5
329
	;mov edx,5
455
	;int 0x40
330
	;int 0x40
456
 
331
 
457
 
332
 
458
	mov eax,7
333
	mov eax,7
459
	mov ebx,[image_data_toolbar]
334
	mov ebx,[image_data_toolbar]
460
	mov ecx,(16 shl 16)+16
335
	mov ecx,(16 shl 16)+16
461
	mov edx,(7 shl 16)+7 ;new
336
	mov edx,(7 shl 16)+7 ;new
462
	int 0x40
337
	int 0x40
463
 
338
 
464
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
339
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
465
	mov edx,(32 shl 16)+7 ;open
340
	mov edx,(32 shl 16)+7 ;open
466
	int 0x40
341
	int 0x40
467
 
342
 
468
	;add ebx,IMAGE_TOOLBAR_ICON_SIZE
343
	;add ebx,IMAGE_TOOLBAR_ICON_SIZE
469
	;mov edx,(57 shl 16)+7 ;save
344
	;mov edx,(57 shl 16)+7 ;save
470
	;int 0x40
345
	;int 0x40
471
 
346
 
472
	mov dword[w_scr_t1.all_redraw],1
347
	mov dword[w_scr_t1.all_redraw],1
473
	stdcall [tl_draw],dword tree1
348
	stdcall [tl_draw],dword tree1
474
 
349
 
475
	stdcall [buf2d_draw], buf_0
350
	stdcall [buf2d_draw], buf_0
476
 
351
 
477
	mcall 12,2
352
	mcall 12,2
478
popad
353
popad
479
	ret
354
	ret
480
 
355
 
481
align 4
356
align 4
482
key:
357
key:
483
	mcall 2
358
	mcall 2
484
	stdcall [tl_key], dword tree1
359
	stdcall [tl_key], dword tree1
485
	jmp still
360
	jmp still
486
 
361
 
487
 
362
 
488
align 4
363
align 4
489
button:
364
button:
490
	mcall 17
365
	mcall 17
491
	cmp ah,3
366
	cmp ah,3
492
	jne @f
367
	jne @f
493
		call but_new_file
368
		call but_new_file
494
	@@:
369
	@@:
495
	cmp ah,4
370
	cmp ah,4
496
	jne @f
371
	jne @f
497
		call but_open_file
372
		call but_open_file
498
	@@:
373
	@@:
499
	cmp ah,5
374
	cmp ah,5
500
	jne @f
375
	jne @f
501
		call but_save_file
376
		call but_save_file
502
	@@:
377
	@@:
503
 
378
 
504
	cmp ah,1
379
	cmp ah,1
505
	jne still
380
	jne still
506
.exit:
381
.exit:
507
	mov dword[tree1.data_img],0
382
	mov dword[tree1.data_img],0
508
	mov dword[tree1.data_img_sys],0
383
	mov dword[tree1.data_img_sys],0
509
	stdcall dword[tl_data_clear], tree1
384
	stdcall dword[tl_data_clear], tree1
510
	stdcall [buf2d_delete],buf_0
385
	stdcall [buf2d_delete],buf_0
511
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
386
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
512
	stdcall mem.Free,[image_data_toolbar]
387
	stdcall mem.Free,[image_data_toolbar]
513
	stdcall mem.Free,[open_file_lif]
388
	stdcall mem.Free,[open_file_lif]
514
	mcall -1
389
	mcall -1
515
 
390
 
516
 
391
 
517
align 4
392
align 4
518
but_new_file:
393
but_new_file:
519
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
394
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
520
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
395
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
521
	;;;call draw_window
396
	;;;call draw_window
522
	stdcall [tl_draw], tree1
397
	stdcall [tl_draw], tree1
523
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
398
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
524
	ret
399
	ret
525
 
400
 
526
align 4
401
align 4
527
but_open_file:
402
but_open_file:
528
	pushad
403
	pushad
529
	copy_path open_dialog_name,communication_area_default_path,file_name,0
404
	copy_path open_dialog_name,communication_area_default_path,file_name,0
530
	mov [OpenDialog_data.type],0
405
	mov [OpenDialog_data.type],0
531
	stdcall [OpenDialog_Start],OpenDialog_data
406
	stdcall [OpenDialog_Start],OpenDialog_data
532
	cmp [OpenDialog_data.status],2
407
	cmp [OpenDialog_data.status],2
533
	je .end_open_file
408
	je .end_open_file
534
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
409
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
535
 
410
 
536
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
411
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
537
	mov [run_file_70.Function], 0
412
	mov [run_file_70.Function], 0
538
	mov [run_file_70.Position], 0
413
	mov [run_file_70.Position], 0
539
	mov [run_file_70.Flags], 0
414
	mov [run_file_70.Flags], 0
540
	mov dword[run_file_70.Count], MAX_FILE_SIZE
415
	mov dword[run_file_70.Count], MAX_FILE_SIZE
541
	m2m [run_file_70.Buffer], dword[open_file_lif]
416
	m2m [run_file_70.Buffer], dword[open_file_lif]
542
	mov byte[run_file_70+20], 0
417
	mov byte[run_file_70+20], 0
543
	mov dword[run_file_70.FileName], openfile_path
418
	mov dword[run_file_70.FileName], openfile_path
544
	mov ebx,run_file_70
419
	mov ebx,run_file_70
545
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
420
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
546
	cmp ebx,0xffffffff
421
	cmp ebx,0xffffffff
547
	je .end_open_file
422
	je .end_open_file
548
 
423
 
549
	;add ebx,[open_file_lif]
424
	;add ebx,[open_file_lif]
550
	;mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
425
	;mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
551
	;mcall 71,1,openfile_path
426
	;mcall 71,1,openfile_path
552
 
427
 
553
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
428
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
554
 
429
 
555
	mov esi,dword[open_file_lif]
430
	mov esi,dword[open_file_lif]
556
	cmp word[esi],CHUNK_MAIN
431
	cmp word[esi],CHUNK_MAIN
557
	je @f
432
	je @f
558
		call buf_draw_beg
433
		call buf_draw_beg
559
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
434
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
560
		jmp .end_open
435
		jmp .end_open
561
	@@:
436
	@@:
562
	cmp dword[esi+2],MAX_FILE_SIZE
437
	cmp dword[esi+2],MAX_FILE_SIZE
563
	jle @f
438
	jle @f
564
		call buf_draw_beg
439
		call buf_draw_beg
565
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_big_file,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
440
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_big_file,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
566
		jmp .end_open
441
		jmp .end_open
567
	@@:
442
	@@:
568
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
443
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
569
	mov eax,file_3ds
444
	mov eax,file_3ds
570
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
445
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
571
	mov dword[offs_last_timer],0
446
	mov dword[offs_last_timer],0
572
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
447
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
573
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
448
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
574
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
449
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
575
 
450
 
576
	mov edi,dword[file_3ds.offs]
451
	mov edi,dword[file_3ds.offs]
577
	add edi,dword[file_3ds.size]
452
	add edi,dword[file_3ds.size]
578
	.cycle_main:
453
	.cycle_main:
579
		cmp dword[level_stack],0
454
		cmp dword[level_stack],0
580
		jle .end_cycle
455
		jle .end_cycle
581
		
456
		
582
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
457
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
583
		jge .end_cycle
458
		jge .end_cycle
584
 
459
 
585
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
460
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
586
		call block_analiz
461
		call block_analiz
587
		cmp dword[bl_found],0
462
		cmp dword[bl_found],0
588
		jne @f
463
		jne @f
589
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
464
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
590
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
465
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
591
			call block_next
466
			call block_next
592
			jmp .cycle_main
467
			jmp .cycle_main
593
		@@:
468
		@@:
594
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
469
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
595
			mov ecx,dword[bl_found]
470
			mov ecx,dword[bl_found]
596
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
471
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
597
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
472
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
598
			cmp byte[ecx+4],1
473
			cmp byte[ecx+4],1
599
			je .bl_data
474
			je .bl_data
600
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
475
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
601
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
476
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
602
				jmp .cycle_main
477
				jmp .cycle_main
603
			.bl_data:
478
			.bl_data:
604
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
479
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
605
				call block_analiz_data
480
				call block_analiz_data
606
				jmp .cycle_main
481
				jmp .cycle_main
607
	.end_cycle:
482
	.end_cycle:
608
		stdcall [tl_cur_beg], tree1
483
		stdcall [tl_cur_beg], tree1
609
		stdcall [tl_draw], tree1
484
		stdcall [tl_draw], tree1
610
	.end_open:
485
	.end_open:
611
 
486
 
612
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
487
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
613
	.end_open_file:
488
	.end_open_file:
614
	popad
489
	popad
615
	ret
490
	ret
616
 
491
 
617
; ­ «¨§ ¤ ­­ëå ¡«®ª 
492
; ­ «¨§ ¤ ­­ëå ¡«®ª 
618
;input:
493
;input:
619
; esi - memory pointer
494
; esi - memory pointer
620
;output:
495
;output:
621
; eax - new stack pointer
496
; eax - new stack pointer
622
; esi - new memory pointer
497
; esi - new memory pointer
623
align 4
498
align 4
624
block_analiz_data:
499
block_analiz_data:
625
	push ebx ecx edx edi
500
	push ebx ecx edx edi
626
		mov dx,word[esi]
501
		mov dx,word[esi]
627
		mov ecx,dword[esi+2]
502
		mov ecx,dword[esi+2]
628
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
503
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
629
		add esi,6
504
		add esi,6
630
		mov ebx,dword[level_stack]
505
		mov ebx,dword[level_stack]
631
		inc ebx
506
		inc ebx
632
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
507
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
633
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
508
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
634
		jne @f
509
		jne @f
635
			.cycle_0:
510
			.cycle_0:
636
				push ax
511
				push ax
637
					cld
512
					cld
638
					xor al,al
513
					xor al,al
639
					mov edi,esi
514
					mov edi,esi
640
					repne scasb
515
					repne scasb
641
				pop ax
516
				pop ax
642
				sub edi,esi ;edi - strlen
517
				sub edi,esi ;edi - strlen
643
				stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
518
				stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
644
				add esi,edi
519
				add esi,edi
645
				sub ecx,edi
520
				sub ecx,edi
646
			jmp .next_bl
521
			jmp .next_bl
647
		@@:
522
		@@:
648
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
523
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
649
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
524
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
650
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
525
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
651
			call block_next
526
			call block_next
652
			jmp .end_f
527
			jmp .end_f
653
		.next_bl:
528
		.next_bl:
654
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
529
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
655
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
530
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
656
			mov ebx,dword[esi+2]
531
			mov ebx,dword[esi+2]
657
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
532
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
658
			inc dword[level_stack]
533
			inc dword[level_stack]
659
			add eax,8
534
			add eax,8
660
		.end_f:
535
		.end_f:
661
	pop edi edx ecx ebx
536
	pop edi edx ecx ebx
662
	ret
537
	ret
663
 
538
 
664
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
539
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
665
;output:
540
;output:
666
; edx - destroy
541
; edx - destroy
667
align 4
542
align 4
668
block_children:
543
block_children:
669
	push ecx
544
	push ecx
670
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
545
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
671
		mov ebx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
546
		mov ebx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
672
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
547
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
673
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
548
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
674
		mov ecx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
549
		mov ecx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
675
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
550
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
676
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
551
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
677
		jle @f
552
		jle @f
678
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
553
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
679
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
554
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
680
			jmp .end_f
555
			jmp .end_f
681
		@@:
556
		@@:
682
		mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
557
		mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
683
		mov ebx,dword[esi+2]
558
		mov ebx,dword[esi+2]
684
		mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
559
		mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
685
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
560
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
686
		inc dword[level_stack]
561
		inc dword[level_stack]
687
		add eax,8
562
		add eax,8
688
	.end_f:
563
	.end_f:
689
	pop ecx
564
	pop ecx
690
	ret
565
	ret
691
 
566
 
692
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
567
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
693
align 4
568
align 4
694
block_next:
569
block_next:
695
push ebx
570
push ebx
696
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
571
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
697
 
572
 
698
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
573
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
699
	@@:
574
	@@:
700
	mov ebx,dword[eax-8]
575
	mov ebx,dword[eax-8]
701
	add ebx,dword[eax-4]
576
	add ebx,dword[eax-4]
702
	cmp esi,ebx
577
	cmp esi,ebx
703
	jl @f
578
	jl @f
704
		dec dword[level_stack]
579
		dec dword[level_stack]
705
		sub eax,8
580
		sub eax,8
706
		cmp dword[level_stack],0
581
		cmp dword[level_stack],0
707
		jg @b
582
		jg @b
708
	@@:
583
	@@:
709
pop ebx
584
pop ebx
710
	ret
585
	ret
711
 
586
 
712
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
587
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
713
;input:
588
;input:
714
;esi - memory pointer
589
;esi - memory pointer
715
;output:
590
;output:
716
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
591
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
717
align 4
592
align 4
718
bl_found dd 0
593
bl_found dd 0
719
block_analiz:
594
block_analiz:
720
pushad
595
pushad
721
	mov dword[bl_found],0
596
	mov dword[bl_found],0
722
	mov ecx,type_bloks
597
	mov ecx,type_bloks
723
	@@:
598
	@@:
724
		mov bx,word[ecx]
599
		mov bx,word[ecx]
725
		cmp word[esi],bx
600
		cmp word[esi],bx
726
		je .found
601
		je .found
727
		add ecx,sizeof.block_3ds
602
		add ecx,sizeof.block_3ds
728
		cmp ecx,type_bloks.end
603
		cmp ecx,type_bloks.end
729
		jl @b
604
		jl @b
730
	jmp .no_found
605
	jmp .no_found
731
	.found:
606
	.found:
732
		mov dword[bl_found],ecx
607
		mov dword[bl_found],ecx
733
	.no_found:
608
	.no_found:
734
popad
609
popad
735
	ret
610
	ret
736
 
611
 
737
;input:
612
;input:
738
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
613
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
739
align 4
614
align 4
740
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
615
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
741
	pushad
616
	pushad
742
		mov bx,word[icon]
617
		mov bx,word[icon]
743
		shl ebx,16
618
		shl ebx,16
744
		mov bx,word[level]
619
		mov bx,word[level]
745
 
620
 
746
		mov eax,esi
621
		mov eax,esi
747
		sub eax,dword[open_file_lif]
622
		sub eax,dword[open_file_lif]
748
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
623
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
749
		mov ecx,dword[size_bl]
624
		mov ecx,dword[size_bl]
750
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
625
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
751
		mov ecx,dword[info_bl]
626
		mov ecx,dword[info_bl]
752
		mov dword[buffer+8],ecx
627
		mov dword[buffer+8],ecx
753
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
628
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
754
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
629
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
755
		cmp ecx,0
630
		cmp ecx,0
756
		jne @f
631
		jne @f
757
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
632
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
758
			jmp .no_capt
633
			jmp .no_capt
759
		@@:
634
		@@:
760
			mov byte[buffer+list_offs_text+4],' '
635
			mov byte[buffer+list_offs_text+4],' '
761
			mov esi,ecx
636
			mov esi,ecx
762
			mov edi,buffer+list_offs_text+5
637
			mov edi,buffer+list_offs_text+5
763
			mov ecx,size_one_list-(list_offs_text+5)
638
			mov ecx,size_one_list-(list_offs_text+5)
764
			cld
639
			cld
765
			rep movsb
640
			rep movsb
766
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
641
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
767
		.no_capt:
642
		.no_capt:
768
		stdcall [tl_node_add], buffer, ebx, tree1
643
		stdcall [tl_node_add], buffer, ebx, tree1
769
		stdcall [tl_cur_next], tree1
644
		stdcall [tl_cur_next], tree1
770
		if debug
645
		if debug
771
			stdcall print_err,sz_add_3ds_object,buffer+list_offs_text
646
			stdcall print_err,sz_add_3ds_object,buffer+list_offs_text
772
		end if
647
		end if
773
	popad
648
	popad
774
	ret
649
	ret
775
endp
650
endp
776
 
651
 
777
if debug
652
if debug
778
sz_add_3ds_object db 13,10,'3ds_object',0
653
sz_add_3ds_object db 13,10,'3ds_object',0
779
 
654
 
780
align 4
655
align 4
781
proc print_err, fun:dword, mes:dword ;¢ë¢®¤¨¬ á®®¡é¥­¨¥ ®¡ 訡ª¥ ­  ¤®áªã ®â« ¤ª¨
656
proc print_err, fun:dword, mes:dword ;¢ë¢®¤¨¬ á®®¡é¥­¨¥ ®¡ 訡ª¥ ­  ¤®áªã ®â« ¤ª¨
782
	pushad
657
	pushad
783
	mov eax,63
658
	mov eax,63
784
	mov ebx,1
659
	mov ebx,1
785
 
660
 
786
	mov esi,[fun]
661
	mov esi,[fun]
787
	@@:
662
	@@:
788
		mov cl,byte[esi]
663
		mov cl,byte[esi]
789
		int 0x40
664
		int 0x40
790
		inc esi
665
		inc esi
791
		cmp byte[esi],0
666
		cmp byte[esi],0
792
		jne @b
667
		jne @b
793
	mov cl,':'
668
	mov cl,':'
794
	int 0x40
669
	int 0x40
795
	mov cl,' '
670
	mov cl,' '
796
	int 0x40
671
	int 0x40
797
	mov esi,[mes]
672
	mov esi,[mes]
798
	@@:
673
	@@:
799
		mov cl,byte[esi]
674
		mov cl,byte[esi]
800
		int 0x40
675
		int 0x40
801
		inc esi
676
		inc esi
802
		cmp byte[esi],0
677
		cmp byte[esi],0
803
		jne @b
678
		jne @b
804
	popad
679
	popad
805
	ret
680
	ret
806
endp
681
endp
807
end if
682
end if
808
 
683
 
809
align 4
684
align 4
810
proc hex_in_str, buf:dword,val:dword,zif:dword
685
proc hex_in_str, buf:dword,val:dword,zif:dword
811
	pushad
686
	pushad
812
		mov edi,dword[buf]
687
		mov edi,dword[buf]
813
		mov ecx,dword[zif]
688
		mov ecx,dword[zif]
814
		add edi,ecx
689
		add edi,ecx
815
		dec edi
690
		dec edi
816
		mov ebx,dword[val]
691
		mov ebx,dword[val]
817
 
692
 
818
		.cycle:
693
		.cycle:
819
			mov al,bl
694
			mov al,bl
820
			and al,0xf
695
			and al,0xf
821
			cmp al,10
696
			cmp al,10
822
			jl @f
697
			jl @f
823
				add al,'a'-'0'-10
698
				add al,'a'-'0'-10
824
			@@:
699
			@@:
825
			add al,'0'
700
			add al,'0'
826
			mov byte[edi],al
701
			mov byte[edi],al
827
			dec edi
702
			dec edi
828
			shr ebx,4
703
			shr ebx,4
829
		loop .cycle
704
		loop .cycle
830
 
705
 
831
	popad
706
	popad
832
	ret
707
	ret
833
endp
708
endp
834
 
709
 
835
align 4
710
align 4
836
but_save_file:
711
but_save_file:
837
if debug
712
if debug
838
	stdcall buf_draw_hex_table,dword[open_file_lif],3 ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
713
	stdcall buf_draw_hex_table,dword[open_file_lif],3 ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
839
end if
714
end if
840
	ret
715
	ret
841
 
716
 
842
 
717
 
843
 
718
 
844
;input:
719
;input:
845
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
720
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
846
;output:
721
;output:
847
; eax - ç¨á«®
722
; eax - ç¨á«®
848
align 4
723
align 4
849
proc conv_str_to_int, buf:dword
724
proc conv_str_to_int, buf:dword
850
	xor eax,eax
725
	xor eax,eax
851
	push ebx ecx esi
726
	push ebx ecx esi
852
	xor ebx,ebx
727
	xor ebx,ebx
853
	mov esi,[buf]
728
	mov esi,[buf]
854
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
729
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
855
	xor ecx,ecx
730
	xor ecx,ecx
856
	inc ecx
731
	inc ecx
857
	cmp byte[esi],'-'
732
	cmp byte[esi],'-'
858
	jne @f
733
	jne @f
859
		dec ecx
734
		dec ecx
860
		inc esi
735
		inc esi
861
	@@:
736
	@@:
862
 
737
 
863
	cmp word[esi],'0x'
738
	cmp word[esi],'0x'
864
	je .load_digit_16
739
	je .load_digit_16
865
 
740
 
866
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
741
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
867
		mov bl,byte[esi]
742
		mov bl,byte[esi]
868
		cmp bl,'0'
743
		cmp bl,'0'
869
		jl @f
744
		jl @f
870
		cmp bl,'9'
745
		cmp bl,'9'
871
		jg @f
746
		jg @f
872
			sub bl,'0'
747
			sub bl,'0'
873
			imul eax,10
748
			imul eax,10
874
			add eax,ebx
749
			add eax,ebx
875
			inc esi
750
			inc esi
876
			jmp .load_digit_10
751
			jmp .load_digit_10
877
	jmp @f
752
	jmp @f
878
 
753
 
879
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
754
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
880
		add esi,2
755
		add esi,2
881
	.cycle_16:
756
	.cycle_16:
882
		mov bl,byte[esi]
757
		mov bl,byte[esi]
883
		cmp bl,'0'
758
		cmp bl,'0'
884
		jl @f
759
		jl @f
885
		cmp bl,'f'
760
		cmp bl,'f'
886
		jg @f
761
		jg @f
887
		cmp bl,'9'
762
		cmp bl,'9'
888
		jle .us1
763
		jle .us1
889
			cmp bl,'A'
764
			cmp bl,'A'
890
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
765
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
891
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
766
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
892
		cmp bl,'F'
767
		cmp bl,'F'
893
		jle .us2
768
		jle .us2
894
			cmp bl,'a'
769
			cmp bl,'a'
895
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
770
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
896
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
771
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
897
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
772
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
898
			sub bl,'0'
773
			sub bl,'0'
899
			cmp bl,9
774
			cmp bl,9
900
			jle .cor1
775
			jle .cor1
901
				sub bl,7 ;convert 'A' to '10'
776
				sub bl,7 ;convert 'A' to '10'
902
			.cor1:
777
			.cor1:
903
			shl eax,4
778
			shl eax,4
904
			add eax,ebx
779
			add eax,ebx
905
			inc esi
780
			inc esi
906
			jmp .cycle_16
781
			jmp .cycle_16
907
	@@:
782
	@@:
908
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
783
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
909
	jne @f
784
	jne @f
910
		sub ecx,eax
785
		sub ecx,eax
911
		mov eax,ecx
786
		mov eax,ecx
912
	@@:
787
	@@:
913
	pop esi ecx ebx
788
	pop esi ecx ebx
914
	ret
789
	ret
915
endp
790
endp
916
 
791
 
917
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
792
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
918
align 4
793
align 4
919
OpenDialog_data:
794
OpenDialog_data:
920
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
795
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
921
.procinfo		dd procinfo	;+4
796
.procinfo		dd procinfo	;+4
922
.com_area_name		dd communication_area_name	;+8
797
.com_area_name		dd communication_area_name	;+8
923
.com_area		dd 0	;+12
798
.com_area		dd 0	;+12
924
.opendir_path		dd plugin_path	;+16
799
.opendir_path		dd plugin_path	;+16
925
.dir_default_path	dd default_dir ;+20
800
.dir_default_path	dd default_dir ;+20
926
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
801
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
927
.draw_window		dd draw_window	;+28
802
.draw_window		dd draw_window	;+28
928
.status 		dd 0	;+32
803
.status 		dd 0	;+32
929
.openfile_path		dd openfile_path	;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
804
.openfile_path		dd openfile_path	;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
930
.filename_area		dd filename_area	;+40
805
.filename_area		dd filename_area	;+40
931
.filter_area		dd Filter
806
.filter_area		dd Filter
932
.x:
807
.x:
933
.x_size 		dw 420 ;+48 ; Window X size
808
.x_size 		dw 420 ;+48 ; Window X size
934
.x_start		dw 10 ;+50 ; Window X position
809
.x_start		dw 10 ;+50 ; Window X position
935
.y:
810
.y:
936
.y_size 		dw 320 ;+52 ; Window y size
811
.y_size 		dw 320 ;+52 ; Window y size
937
.y_start		dw 10 ;+54 ; Window Y position
812
.y_start		dw 10 ;+54 ; Window Y position
938
 
813
 
939
default_dir db '/rd/1',0
814
default_dir db '/rd/1',0
940
 
815
 
941
communication_area_name:
816
communication_area_name:
942
	db 'FFFFFFFF_open_dialog',0
817
	db 'FFFFFFFF_open_dialog',0
943
open_dialog_name:
818
open_dialog_name:
944
	db 'opendial',0
819
	db 'opendial',0
945
communication_area_default_path:
820
communication_area_default_path:
946
	db '/rd/1/File managers/',0
821
	db '/rd/1/File managers/',0
947
 
822
 
948
Filter:
823
Filter:
949
dd Filter.end - Filter.1
824
dd Filter.end - Filter.1
950
.1:
825
.1:
951
db '3DS',0
826
db '3DS',0
952
db 'TXT',0
827
db 'TXT',0
953
.end:
828
.end:
954
db 0
829
db 0
955
 
830
 
956
 
831
 
957
 
832
 
958
head_f_i:
833
head_f_i:
959
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
834
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
960
 
835
 
961
system_dir_0 db '/sys/lib/'
836
system_dir_0 db '/sys/lib/'
962
lib_name_0 db 'proc_lib.obj',0
837
lib_name_0 db 'proc_lib.obj',0
963
err_message_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
838
err_message_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
964
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
839
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
965
 
840
 
966
system_dir_1 db '/sys/lib/'
841
system_dir_1 db '/sys/lib/'
967
lib_name_1 db 'libimg.obj',0
842
lib_name_1 db 'libimg.obj',0
968
err_message_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
843
err_message_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
969
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
844
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
970
 
845
 
971
system_dir_2 db '/sys/lib/'
846
system_dir_2 db '/sys/lib/'
972
lib_name_2 db 'box_lib.obj',0
847
lib_name_2 db 'box_lib.obj',0
973
err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
848
err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
974
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
849
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
975
 
850
 
976
system_dir_7 db '/sys/lib/'
851
system_dir_7 db '/sys/lib/'
977
lib_name_7 db 'buf2d.obj',0
852
lib_name_7 db 'buf2d.obj',0
978
err_msg_found_lib_7 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
853
err_msg_found_lib_7 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
979
err_msg_import_7 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
854
err_msg_import_7 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
980
 
855
 
981
l_libs_start:
856
l_libs_start:
982
	lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
857
	lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
983
		err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
858
		err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
984
	lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
859
	lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
985
		err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
860
		err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
986
	lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
861
	lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
987
		err_msg_found_lib_2,head_f_l,import_box_lib,err_msg_import_2,head_f_i
862
		err_msg_found_lib_2,head_f_l,import_box_lib,err_msg_import_2,head_f_i
988
	lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\
863
	lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\
989
		err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i
864
		err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i
990
l_libs_end:
865
l_libs_end:
991
 
866
 
992
align 4
867
align 4
993
import_libimg:
868
import_libimg:
994
	dd alib_init1
869
	dd alib_init1
995
	img_is_img  dd aimg_is_img
870
	img_is_img  dd aimg_is_img
996
	img_info    dd aimg_info
871
	img_info    dd aimg_info
997
	img_from_file dd aimg_from_file
872
	img_from_file dd aimg_from_file
998
	img_to_file dd aimg_to_file
873
	img_to_file dd aimg_to_file
999
	img_from_rgb dd aimg_from_rgb
874
	img_from_rgb dd aimg_from_rgb
1000
	img_to_rgb  dd aimg_to_rgb
875
	img_to_rgb  dd aimg_to_rgb
1001
	img_to_rgb2 dd aimg_to_rgb2
876
	img_to_rgb2 dd aimg_to_rgb2
1002
	img_decode  dd aimg_decode
877
	img_decode  dd aimg_decode
1003
	img_encode  dd aimg_encode
878
	img_encode  dd aimg_encode
1004
	img_create  dd aimg_create
879
	img_create  dd aimg_create
1005
	img_destroy dd aimg_destroy
880
	img_destroy dd aimg_destroy
1006
	img_destroy_layer dd aimg_destroy_layer
881
	img_destroy_layer dd aimg_destroy_layer
1007
	img_count   dd aimg_count
882
	img_count   dd aimg_count
1008
	img_lock_bits dd aimg_lock_bits
883
	img_lock_bits dd aimg_lock_bits
1009
	img_unlock_bits dd aimg_unlock_bits
884
	img_unlock_bits dd aimg_unlock_bits
1010
	img_flip    dd aimg_flip
885
	img_flip    dd aimg_flip
1011
	img_flip_layer dd aimg_flip_layer
886
	img_flip_layer dd aimg_flip_layer
1012
	img_rotate  dd aimg_rotate
887
	img_rotate  dd aimg_rotate
1013
	img_rotate_layer dd aimg_rotate_layer
888
	img_rotate_layer dd aimg_rotate_layer
1014
	img_draw    dd aimg_draw
889
	img_draw    dd aimg_draw
1015
 
890
 
1016
	dd 0,0
891
	dd 0,0
1017
	alib_init1   db 'lib_init',0
892
	alib_init1   db 'lib_init',0
1018
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
893
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
1019
	aimg_info    db 'img_info',0
894
	aimg_info    db 'img_info',0
1020
	aimg_from_file db 'img_from_file',0
895
	aimg_from_file db 'img_from_file',0
1021
	aimg_to_file db 'img_to_file',0
896
	aimg_to_file db 'img_to_file',0
1022
	aimg_from_rgb db 'img_from_rgb',0
897
	aimg_from_rgb db 'img_from_rgb',0
1023
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
898
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
1024
	aimg_to_rgb2 db 'img_to_rgb2',0
899
	aimg_to_rgb2 db 'img_to_rgb2',0
1025
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
900
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
1026
	aimg_encode  db 'img_encode',0
901
	aimg_encode  db 'img_encode',0
1027
	aimg_create  db 'img_create',0
902
	aimg_create  db 'img_create',0
1028
	aimg_destroy db 'img_destroy',0
903
	aimg_destroy db 'img_destroy',0
1029
	aimg_destroy_layer db 'img_destroy_layer',0
904
	aimg_destroy_layer db 'img_destroy_layer',0
1030
	aimg_count   db 'img_count',0
905
	aimg_count   db 'img_count',0
1031
	aimg_lock_bits db 'img_lock_bits',0
906
	aimg_lock_bits db 'img_lock_bits',0
1032
	aimg_unlock_bits db 'img_unlock_bits',0
907
	aimg_unlock_bits db 'img_unlock_bits',0
1033
	aimg_flip    db 'img_flip',0
908
	aimg_flip    db 'img_flip',0
1034
	aimg_flip_layer db 'img_flip_layer',0
909
	aimg_flip_layer db 'img_flip_layer',0
1035
	aimg_rotate  db 'img_rotate',0
910
	aimg_rotate  db 'img_rotate',0
1036
	aimg_rotate_layer db 'img_rotate_layer',0
911
	aimg_rotate_layer db 'img_rotate_layer',0
1037
	aimg_draw    db 'img_draw',0
912
	aimg_draw    db 'img_draw',0
1038
 
913
 
1039
align 4
914
align 4
1040
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
915
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
1041
	OpenDialog_Init dd aOpenDialog_Init
916
	OpenDialog_Init dd aOpenDialog_Init
1042
	OpenDialog_Start dd aOpenDialog_Start
917
	OpenDialog_Start dd aOpenDialog_Start
1043
dd 0,0
918
dd 0,0
1044
	aOpenDialog_Init db 'OpenDialog_init',0
919
	aOpenDialog_Init db 'OpenDialog_init',0
1045
	aOpenDialog_Start db 'OpenDialog_start',0
920
	aOpenDialog_Start db 'OpenDialog_start',0
1046
 
921
 
1047
;       file.find_first db 'file_find_first',0
922
;       file.find_first db 'file_find_first',0
1048
;       file.find_next  db 'file_find_next',0
923
;       file.find_next  db 'file_find_next',0
1049
;       file.find_close db 'file_find_close',0
924
;       file.find_close db 'file_find_close',0
1050
;       file.size      db 'file_size',0
925
;       file.size      db 'file_size',0
1051
;       file.open      db 'file_open',0
926
;       file.open      db 'file_open',0
1052
;       file.read      db 'file_read',0
927
;       file.read      db 'file_read',0
1053
;       file.write     db 'file_write',0
928
;       file.write     db 'file_write',0
1054
;       file.seek      db 'file_seek',0
929
;       file.seek      db 'file_seek',0
1055
;       file.tell      db 'file_tell',0
930
;       file.tell      db 'file_tell',0
1056
;       file.eof?      db 'file_iseof',0
931
;       file.eof?      db 'file_iseof',0
1057
;       file.truncate  db 'file_truncate',0
932
;       file.truncate  db 'file_truncate',0
1058
;       file.close     db 'file_close',0
933
;       file.close     db 'file_close',0
1059
 
934
 
1060
align 4
935
align 4
1061
import_buf2d:
936
import_buf2d:
1062
	dd sz_init0
937
	dd sz_init0
1063
	buf2d_create dd sz_buf2d_create
938
	buf2d_create dd sz_buf2d_create
1064
	buf2d_create_f_img dd sz_buf2d_create_f_img
939
	buf2d_create_f_img dd sz_buf2d_create_f_img
1065
	buf2d_clear dd sz_buf2d_clear
940
	buf2d_clear dd sz_buf2d_clear
1066
	buf2d_draw dd sz_buf2d_draw
941
	buf2d_draw dd sz_buf2d_draw
1067
	buf2d_delete dd sz_buf2d_delete
942
	buf2d_delete dd sz_buf2d_delete
1068
	buf2d_line dd sz_buf2d_line
943
	buf2d_line dd sz_buf2d_line
1069
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
944
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1070
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
945
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1071
	buf2d_circle dd sz_buf2d_circle
946
	buf2d_circle dd sz_buf2d_circle
1072
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
947
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1073
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
948
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1074
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
949
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1075
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
950
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1076
	buf2d_bit_blt dd sz_buf2d_bit_blt
951
	buf2d_bit_blt dd sz_buf2d_bit_blt
1077
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
952
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1078
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
953
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1079
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
954
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
1080
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
955
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1081
	buf2d_draw_text dd sz_buf2d_draw_text
956
	buf2d_draw_text dd sz_buf2d_draw_text
1082
	buf2d_crop_color dd sz_buf2d_crop_color
957
	buf2d_crop_color dd sz_buf2d_crop_color
1083
	buf2d_offset_h dd sz_buf2d_offset_h
958
	buf2d_offset_h dd sz_buf2d_offset_h
1084
	buf2d_flood_fill dd sz_buf2d_flood_fill
959
	buf2d_flood_fill dd sz_buf2d_flood_fill
1085
	buf2d_set_pixel dd sz_buf2d_set_pixel
960
	buf2d_set_pixel dd sz_buf2d_set_pixel
1086
	dd 0,0
961
	dd 0,0
1087
	sz_init0 db 'lib_init',0
962
	sz_init0 db 'lib_init',0
1088
	sz_buf2d_create db 'buf2d_create',0
963
	sz_buf2d_create db 'buf2d_create',0
1089
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
964
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1090
	sz_buf2d_clear db 'buf2d_clear',0
965
	sz_buf2d_clear db 'buf2d_clear',0
1091
	sz_buf2d_draw db 'buf2d_draw',0
966
	sz_buf2d_draw db 'buf2d_draw',0
1092
	sz_buf2d_delete db 'buf2d_delete',0
967
	sz_buf2d_delete db 'buf2d_delete',0
1093
	sz_buf2d_line db 'buf2d_line',0
968
	sz_buf2d_line db 'buf2d_line',0
1094
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
969
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
1095
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
970
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1096
	sz_buf2d_circle db 'buf2d_circle',0
971
	sz_buf2d_circle db 'buf2d_circle',0
1097
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
972
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1098
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
973
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1099
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
974
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1100
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
975
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1101
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
976
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1102
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
977
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1103
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
978
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1104
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
979
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1105
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
980
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1106
	sz_buf2d_draw_text db 'buf2d_draw_text',0
981
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1107
	sz_buf2d_crop_color db 'buf2d_crop_color',0
982
	sz_buf2d_crop_color db 'buf2d_crop_color',0
1108
	sz_buf2d_offset_h db 'buf2d_offset_h',0
983
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1109
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
984
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
1110
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
985
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
1111
 
986
 
1112
align 4
987
align 4
1113
import_box_lib:
988
import_box_lib:
1114
	dd sz_init1
989
	dd sz_init1
1115
	init_checkbox dd sz_init_checkbox
990
	init_checkbox dd sz_init_checkbox
1116
	check_box_draw dd sz_check_box_draw
991
	check_box_draw dd sz_check_box_draw
1117
	edit_box_draw dd sz_edit_box_draw
992
	edit_box_draw dd sz_edit_box_draw
1118
	edit_box_key dd sz_edit_box_key
993
	edit_box_key dd sz_edit_box_key
1119
	edit_box_mouse dd sz_edit_box_mouse
994
	edit_box_mouse dd sz_edit_box_mouse
1120
	edit_box_set_text dd sz_edit_box_set_text
995
	edit_box_set_text dd sz_edit_box_set_text
1121
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
996
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
1122
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
997
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
1123
 
998
 
1124
	tl_data_init dd sz_tl_data_init
999
	tl_data_init dd sz_tl_data_init
1125
	tl_data_clear dd sz_tl_data_clear
1000
	tl_data_clear dd sz_tl_data_clear
1126
	tl_info_clear dd sz_tl_info_clear
1001
	tl_info_clear dd sz_tl_info_clear
1127
	tl_key dd sz_tl_key
1002
	tl_key dd sz_tl_key
1128
	tl_mouse dd sz_tl_mouse
1003
	tl_mouse dd sz_tl_mouse
1129
	tl_draw dd sz_tl_draw
1004
	tl_draw dd sz_tl_draw
1130
	tl_info_undo dd sz_tl_info_undo
1005
	tl_info_undo dd sz_tl_info_undo
1131
	tl_info_redo dd sz_tl_info_redo
1006
	tl_info_redo dd sz_tl_info_redo
1132
	tl_node_add dd sz_tl_node_add
1007
	tl_node_add dd sz_tl_node_add
1133
	tl_node_set_data dd sz_tl_node_set_data
1008
	tl_node_set_data dd sz_tl_node_set_data
1134
	tl_node_get_data dd sz_tl_node_get_data
1009
	tl_node_get_data dd sz_tl_node_get_data
1135
	tl_node_delete dd sz_tl_node_delete
1010
	tl_node_delete dd sz_tl_node_delete
1136
	tl_node_move_up dd sz_tl_node_move_up
1011
	tl_node_move_up dd sz_tl_node_move_up
1137
	tl_node_move_down dd sz_tl_node_move_down
1012
	tl_node_move_down dd sz_tl_node_move_down
1138
	tl_cur_beg dd sz_tl_cur_beg
1013
	tl_cur_beg dd sz_tl_cur_beg
1139
	tl_cur_next dd sz_tl_cur_next
1014
	tl_cur_next dd sz_tl_cur_next
1140
	tl_cur_perv dd sz_tl_cur_perv
1015
	tl_cur_perv dd sz_tl_cur_perv
1141
	tl_node_close_open dd sz_tl_node_close_open
1016
	tl_node_close_open dd sz_tl_node_close_open
1142
	tl_node_lev_inc dd sz_tl_node_lev_inc
1017
	tl_node_lev_inc dd sz_tl_node_lev_inc
1143
	tl_node_lev_dec dd sz_tl_node_lev_dec
1018
	tl_node_lev_dec dd sz_tl_node_lev_dec
1144
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1019
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1145
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1020
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1146
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1021
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1147
 
1022
 
1148
	dd 0,0
1023
	dd 0,0
1149
	sz_init1 db 'lib_init',0
1024
	sz_init1 db 'lib_init',0
1150
	sz_init_checkbox db 'init_checkbox2',0
1025
	sz_init_checkbox db 'init_checkbox2',0
1151
	sz_check_box_draw db 'check_box_draw2',0
1026
	sz_check_box_draw db 'check_box_draw2',0
1152
	sz_edit_box_draw db 'edit_box',0
1027
	sz_edit_box_draw db 'edit_box',0
1153
	sz_edit_box_key db 'edit_box_key',0
1028
	sz_edit_box_key db 'edit_box_key',0
1154
	sz_edit_box_mouse db 'edit_box_mouse',0
1029
	sz_edit_box_mouse db 'edit_box_mouse',0
1155
	sz_edit_box_set_text db 'edit_box_set_text',0
1030
	sz_edit_box_set_text db 'edit_box_set_text',0
1156
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1031
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1157
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1032
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1158
 
1033
 
1159
	sz_tl_data_init db 'tl_data_init',0
1034
	sz_tl_data_init db 'tl_data_init',0
1160
	sz_tl_data_clear db 'tl_data_clear',0
1035
	sz_tl_data_clear db 'tl_data_clear',0
1161
	sz_tl_info_clear db 'tl_info_clear',0
1036
	sz_tl_info_clear db 'tl_info_clear',0
1162
	sz_tl_key db 'tl_key',0
1037
	sz_tl_key db 'tl_key',0
1163
	sz_tl_mouse db 'tl_mouse',0
1038
	sz_tl_mouse db 'tl_mouse',0
1164
	sz_tl_draw db 'tl_draw',0
1039
	sz_tl_draw db 'tl_draw',0
1165
	sz_tl_info_undo db 'tl_info_undo',0
1040
	sz_tl_info_undo db 'tl_info_undo',0
1166
	sz_tl_info_redo db 'tl_info_redo',0
1041
	sz_tl_info_redo db 'tl_info_redo',0
1167
	sz_tl_node_add db 'tl_node_add',0
1042
	sz_tl_node_add db 'tl_node_add',0
1168
	sz_tl_node_set_data db 'tl_node_set_data',0
1043
	sz_tl_node_set_data db 'tl_node_set_data',0
1169
	sz_tl_node_get_data db 'tl_node_get_data',0
1044
	sz_tl_node_get_data db 'tl_node_get_data',0
1170
	sz_tl_node_delete db 'tl_node_delete',0
1045
	sz_tl_node_delete db 'tl_node_delete',0
1171
	sz_tl_node_move_up db 'tl_node_move_up',0
1046
	sz_tl_node_move_up db 'tl_node_move_up',0
1172
	sz_tl_node_move_down db 'tl_node_move_down',0
1047
	sz_tl_node_move_down db 'tl_node_move_down',0
1173
	sz_tl_cur_beg db 'tl_cur_beg',0
1048
	sz_tl_cur_beg db 'tl_cur_beg',0
1174
	sz_tl_cur_next db 'tl_cur_next',0
1049
	sz_tl_cur_next db 'tl_cur_next',0
1175
	sz_tl_cur_perv db 'tl_cur_perv',0
1050
	sz_tl_cur_perv db 'tl_cur_perv',0
1176
	sz_tl_node_close_open db 'tl_node_close_open',0
1051
	sz_tl_node_close_open db 'tl_node_close_open',0
1177
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1052
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1178
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1053
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1179
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1054
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1180
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1055
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1181
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1056
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1182
 
1057
 
1183
 
1058
 
1184
 
1059
 
1185
mouse_dd dd 0x0
1060
mouse_dd dd 0x0
1186
sc system_colors 
1061
sc system_colors 
1187
last_time dd 0
1062
last_time dd 0
1188
 
1063
 
1189
align 16
1064
align 16
1190
procinfo process_information 
1065
procinfo process_information 
1191
 
1066
 
1192
align 4
1067
align 4
1193
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1068
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1194
	dw 205 ;+4 left
1069
	dw 205 ;+4 left
1195
	dw 35 ;+6 top
1070
	dw 35 ;+6 top
1196
.w: dd 340 ;+8 w
1071
.w: dd 340 ;+8 w
1197
.h: dd 250 ;+12 h
1072
.h: dd 250 ;+12 h
1198
.color: dd 0xffffd0 ;+16 color
1073
.color: dd 0xffffd0 ;+16 color
1199
	db 24 ;+20 bit in pixel
1074
	db 24 ;+20 bit in pixel
1200
 
1075
 
1201
align 4
1076
align 4
1202
buf_1:
1077
buf_1:
1203
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1078
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1204
	dw 25 ;+4 left
1079
	dw 25 ;+4 left
1205
	dw 25 ;+6 top
1080
	dw 25 ;+6 top
1206
	dd 128 ;+8 w
1081
	dd 128 ;+8 w
1207
	dd 144 ;+12 h
1082
	dd 144 ;+12 h
1208
	dd 0 ;+16 color
1083
	dd 0 ;+16 color
1209
	db 24 ;+20 bit in pixel
1084
	db 24 ;+20 bit in pixel
1210
 
1085
 
1211
el_focus dd tree1
1086
el_focus dd tree1
1212
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
1087
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
1213
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
1088
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
1214
	w_scr_t1,0
1089
	w_scr_t1,0
1215
 
1090
 
1216
align 4
1091
align 4
1217
w_scr_t1:
1092
w_scr_t1:
1218
.size_x     dw 16 ;+0
1093
.size_x     dw 16 ;+0
1219
rb 2+2+2
1094
rb 2+2+2
1220
.btn_high   dd 15 ;+8
1095
.btn_high   dd 15 ;+8
1221
.type	    dd 1  ;+12
1096
.type	    dd 1  ;+12
1222
.max_area   dd 100  ;+16
1097
.max_area   dd 100  ;+16
1223
rb 4+4
1098
rb 4+4
1224
.bckg_col   dd 0xeeeeee ;+28
1099
.bckg_col   dd 0xeeeeee ;+28
1225
.frnt_col   dd 0xbbddff ;+32
1100
.frnt_col   dd 0xbbddff ;+32
1226
.line_col   dd 0  ;+36
1101
.line_col   dd 0  ;+36
1227
rb 4+2+2
1102
rb 4+2+2
1228
.run_x:
1103
.run_x:
1229
rb 2+2+2+2+4+4+4+4+4+4
1104
rb 2+2+2+2+4+4+4+4+4+4
1230
.all_redraw dd 0 ;+80
1105
.all_redraw dd 0 ;+80
1231
.ar_offset  dd 1 ;+84
1106
.ar_offset  dd 1 ;+84
1232
 
1107
 
1233
 
1108
 
1234
 
1109
 
1235
;íâ®â ª®¤ ­¥ ¬®©, ®­ ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
1110
;íâ®â ª®¤ ­¥ ¬®©, ®­ ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
1236
;input:
1111
;input:
1237
; eax = value
1112
; eax = value
1238
; edi = string buffer
1113
; edi = string buffer
1239
;output:
1114
;output:
1240
align 4
1115
align 4
1241
tl_convert_to_str:
1116
tl_convert_to_str:
1242
	pushad
1117
	pushad
1243
		mov dword[edi+1],0;0x20202020
1118
		mov dword[edi+1],0;0x20202020
1244
		call .str
1119
		call .str
1245
	popad
1120
	popad
1246
	ret
1121
	ret
1247
 
1122
 
1248
align 4
1123
align 4
1249
.str:
1124
.str:
1250
	mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1125
	mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1251
    ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1126
    ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1252
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1127
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1253
	jb @f
1128
	jb @f
1254
		xor edx,edx  ;®ç¨áâ¨âì edx
1129
		xor edx,edx  ;®ç¨áâ¨âì edx
1255
		div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1130
		div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1256
		push edx     ;¯®«®¦¨âì ¢ á⥪
1131
		push edx     ;¯®«®¦¨âì ¢ á⥪
1257
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1132
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1258
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1133
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1259
		pop eax
1134
		pop eax
1260
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1135
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1261
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1136
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1262
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1137
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1263
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1138
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1264
 
1139
 
1265
i_end:
1140
i_end:
1266
	rb 1024
1141
	rb 1024
1267
stacktop:
1142
stacktop:
1268
	sys_path rb 1024
1143
	sys_path rb 1024
1269
	file_name:
1144
	file_name:
1270
		rb 1024 ;4096 
1145
		rb 1024 ;4096 
1271
	library_path rb 1024
1146
	library_path rb 1024
1272
	plugin_path rb 4096
1147
	plugin_path rb 4096
1273
	openfile_path rb 4096
1148
	openfile_path rb 4096
1274
	filename_area rb 256
1149
	filename_area rb 256
1275
mem:
1150
mem:
1276
>
1151
>
1277
>
1152
>