Subversion Repositories Kolibri OS

Rev

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

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