Subversion Repositories Kolibri OS

Rev

Rev 2815 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2815 IgorA 1
use32
2
	org 0x0
3
	db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт
4
	dd 0x1
5
	dd start
6
	dd i_end ;размер приложения
7
	dd mem,stacktop
8
	dd 0,cur_dir_path
9
 
10
include '../../../../../macros.inc'
11
include '../../../../../proc32.inc'
12
include '../../../../../develop/libraries/box_lib/load_lib.mac'
3105 IgorA 13
include '../../../../../dll.inc'
2815 IgorA 14
 
15
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
16
 
17
struct FileInfoBlock
18
	Function dd ?
19
	Position dd ?
20
	Flags	 dd ?
21
	Count	 dd ?
22
	Buffer	 dd ?
23
		db ?
24
	FileName dd ?
25
ends
26
 
27
max_open_file_size equ 64*1024 ;64 Kb
28
 
29
align 4
30
open_file_vox dd 0 ;указатель на область для открытия файлов
31
run_file_70 FileInfoBlock
32
f_name db 'vaz2106.vox',0
33
 
34
vox_offs_tree_table equ 4
35
 
36
;поворот объекта на 90 градусов
37
;x0y0 - x1y0
38
;x1y0 - x1y1
39
;x0y1 - x0y0
40
;x1y1 - x0y1
41
align 4
42
proc vox_obj_rot_z uses eax ebx ecx, v_obj:dword
43
	mov ebx,[v_obj]
44
	add ebx,vox_offs_tree_table
45
	mov ecx,2
46
	cld
47
	@@:
48
		mov eax,dword[ebx]
49
		mov byte[ebx+1],al
50
		mov byte[ebx+3],ah
51
		shr eax,16
52
		mov byte[ebx],al
53
		mov byte[ebx+2],ah
54
		add ebx,4
55
		loop @b
56
	ret
57
endp
58
 
59
 
60
 
61
align 4
62
start:
63
	load_library vectors_name, cur_dir_path, library_path, system_path, \
64
		err_message_found_lib, head_f_l, import_buf2d_lib, err_message_import, head_f_i
65
	cmp eax,-1
66
	jz button.exit
67
 
68
	mcall 40,0x27
69
	stdcall [buf2d_create], buf_0 ;создаем буфер
70
	stdcall [buf2d_create], buf_z
71
 
72
	stdcall mem.Alloc,max_open_file_size
73
	mov dword[open_file_vox],eax
74
 
75
	copy_path f_name,[32],file_name,0x0
76
 
77
	mov eax,70 ;70-я функция работа с файлами
78
	mov [run_file_70.Function], 0
79
	mov [run_file_70.Position], 0
80
	mov [run_file_70.Flags], 0
81
	mov dword[run_file_70.Count], max_open_file_size
82
	m2m [run_file_70.Buffer], [open_file_vox]
83
	mov byte[run_file_70+20], 0
84
	mov dword[run_file_70.FileName], file_name
85
	mov ebx,run_file_70
86
	int 0x40 ;загружаем воксельный объект
87
 
88
	stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,0, 7
89
	stdcall vox_obj_rot_z, [open_file_vox]
90
	stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,0, 7
91
	stdcall vox_obj_rot_z, [open_file_vox]
92
	stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 0,128, 7
93
	stdcall vox_obj_rot_z, [open_file_vox]
94
	stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_z, [open_file_vox], 128,128, 7
95
 
96
align 4
97
red_win:
98
	call draw_window
99
 
100
align 4
101
still:
102
	mcall 10
103
	cmp al,1 ;изменилось положение окна
104
	jz red_win
105
	cmp al,2
106
	jz key
107
	cmp al,3
108
	jz button
109
	jmp still
110
 
111
align 4
112
draw_window:
113
	pushad
114
	mcall 12,1
115
 
116
	mov edx,0x33000000
117
	mcall 0,(50 shl 16)+330,(30 shl 16)+295,,,caption
118
 
119
	stdcall [buf2d_draw], buf_0
120
 
121
	mcall 12,2
122
	popad
123
	ret
124
 
125
align 4
126
key:
127
	mcall 2
128
 
129
	cmp ah,27 ;Esc
130
	je button.exit
131
 
132
	jmp still
133
 
134
align 4
135
button:
136
	mcall 17 ;получить код нажатой кнопки
137
	cmp ah,1
138
	jne still
139
.exit:
140
	stdcall [buf2d_delete],buf_0 ;удаляем буфер
141
	stdcall [buf2d_delete],buf_z
142
	stdcall mem.Free,[open_file_vox]
143
	mcall -1 ;выход из программы
144
 
145
caption db 'Test buf2d library, [Esc] - exit',0
146
 
147
;--------------------------------------------------
148
align 4
149
import_buf2d_lib:
150
	dd sz_lib_init
151
	buf2d_create dd sz_buf2d_create
152
	buf2d_clear dd sz_buf2d_clear
153
	buf2d_draw dd sz_buf2d_draw
154
	buf2d_delete dd sz_buf2d_delete
155
 
156
	;воксельные функции:
157
	;buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
158
	;buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
159
	buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
160
	;buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
161
	;buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
162
	;buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
163
	;buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
164
	;buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
165
	;buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
166
	;buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
167
 
168
	dd 0,0
169
	sz_lib_init db 'lib_init',0
170
	sz_buf2d_create db 'buf2d_create',0
171
	sz_buf2d_clear db 'buf2d_clear',0
172
	sz_buf2d_draw db 'buf2d_draw',0
173
	sz_buf2d_delete db 'buf2d_delete',0
174
 
175
	;воксельные функции:
176
	;sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
177
	;sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
178
	sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
179
	;sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
180
	;sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
181
	;sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
182
	;sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
183
	;sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
184
	;sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
185
	;sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
186
 
187
align 4
188
buf_0:
189
	dd 0 ;указатель на буфер изображения
190
	dw 20 ;+4 left
191
	dw 5 ;+6 top
192
	dd 256 ;+8 w
193
	dd 256 ;+12 h
194
	dd 0xffffff ;+16 color
195
	db 24 ;+20 bit in pixel
196
 
197
align 4
198
buf_z:
199
	dd 0 ;указатель на буфер изображения
200
	dw 20 ;+4 left
201
	dw 5 ;+6 top
202
	dd 256 ;+8 w
203
	dd 256 ;+12 h
204
	dd 0 ;+16 color
205
	db 32 ;+20 bit in pixel
206
 
207
;--------------------------------------------------
208
system_path db '/sys/lib/'
209
vectors_name db 'buf2d.obj',0
210
err_message_found_lib db 'Sorry I cannot load library buf2d.obj',0
211
head_f_i:
212
head_f_l db 'System error',0
213
err_message_import db 'Error on load import library buf2d.obj',0
214
;--------------------------------------------------
215
 
216
i_end: ;конец кода
217
	rb 1024
218
stacktop:
219
	file_name:
220
		rb 4096
221
cur_dir_path:
222
	rb 4096
223
library_path:
224
	rb 4096
225
mem:
226