forked from KolibriOS/kolibrios
update 'voxel_editor'
git-svn-id: svn://kolibrios.org@2759 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
3c47cb905e
commit
d00cd6a604
@ -49,9 +49,15 @@ table { font-size: 15px; }
|
|||||||
<h1>Оглавление</h1>
|
<h1>Оглавление</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Вступление</li>
|
<li>Вступление</li>
|
||||||
<li><a href="#f_buf">Форматы буферов</a></li>
|
<li><a href="#format_buf">Форматы буферов</a></li>
|
||||||
<li><a href="#fun">Функции</a><br>
|
<li><a href="#fun">Функции</a><br>
|
||||||
<li><a href="#const">Константы</a><br>
|
<ul>
|
||||||
|
<li><a href="#f_init">lib_init</a></li>
|
||||||
|
<li><a href="#f_b_create">buf2d_create</a></li>
|
||||||
|
<li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="#const">Константы</a></li>
|
||||||
<li><a href="#tabl_e">Таблица экспорта</a></li>
|
<li><a href="#tabl_e">Таблица экспорта</a></li>
|
||||||
<li><a href="#hist">История</a></li>
|
<li><a href="#hist">История</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -60,11 +66,13 @@ table { font-size: 15px; }
|
|||||||
<p>Документация к свободной библиотеке <b>buf2d.asm</b>, для <b>ОС Колибри</b>.
|
<p>Документация к свободной библиотеке <b>buf2d.asm</b>, для <b>ОС Колибри</b>.
|
||||||
Эта библиотека создана для работы с 2d изображениями.
|
Эта библиотека создана для работы с 2d изображениями.
|
||||||
С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
|
С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран.
|
||||||
Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями, есть функция рисования лини пока на этом все.</p>
|
Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями.
|
||||||
|
Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
|
||||||
|
Также есть функции для рисований воксельной графики.</p>
|
||||||
|
|
||||||
<p>Последнее обновление библиотеки 11.05.12.</p>
|
<p>Последнее обновление библиотеки 12.06.12.</p>
|
||||||
|
|
||||||
<h1><a name="f_buf">Форматы буферов</a></h1>
|
<h1><a name="format_buf">Форматы буферов</a></h1>
|
||||||
<p>Поддерживается 3 формата буферов.
|
<p>Поддерживается 3 формата буферов.
|
||||||
Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений.</p>
|
Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений.</p>
|
||||||
|
|
||||||
@ -90,11 +98,14 @@ buf_0:
|
|||||||
dd 0x80 ;+16 фоновый цвет
|
dd 0x80 ;+16 фоновый цвет
|
||||||
db 24 ;+20 бит на пиксель</pre>
|
db 24 ;+20 бит на пиксель</pre>
|
||||||
|
|
||||||
<h4>lib_init</h4>
|
<h4><a name="f_init">lib_init</a></h4>
|
||||||
<p>Эта функция получает указатели на функции работы с памятью, вызыватся должна при загрузке библиотеки. Можете использовать макрос <b>@use_library_mem</b>, для ее автоматической настройки.</p>
|
<p>Эта функция получает указатели на функции работы с памятью, вызыватся должна при загрузке библиотеки. Можете использовать макрос <b>@use_library_mem</b>, для ее автоматической настройки.</p>
|
||||||
|
|
||||||
<h4>buf2d_create</h4>
|
<h4><a name="f_b_create">buf2d_create</a></h4>
|
||||||
<p>Создает буфер и чистит его фоновым цветом.</p>
|
<p>Создает буфер и чистит его фоновым цветом. Пример:</p>
|
||||||
|
<pre>stdcall [buf2d_create], buf_0</pre>
|
||||||
|
<p>где buf_0 - структура буфера.</p>
|
||||||
|
<p>Параметры для создания буфера берутся из структуры.</p>
|
||||||
|
|
||||||
<h4>buf2d_create_f_img</h4>
|
<h4>buf2d_create_f_img</h4>
|
||||||
<p>Создает буфер на основе изображения в формате <b>rgb</b>.</p>
|
<p>Создает буфер на основе изображения в формате <b>rgb</b>.</p>
|
||||||
@ -229,6 +240,33 @@ stdcall [buf2d_convert_text_matrix], buf_1</pre>
|
|||||||
<p>100,150 - координаты точки;</p>
|
<p>100,150 - координаты точки;</p>
|
||||||
<p>eax - цвет точки (для 8 и 24 битных буферов не используемые старшие биты в eax равны 0) или значение -1 в случае ошибки.</p>
|
<p>eax - цвет точки (для 8 и 24 битных буферов не используемые старшие биты в eax равны 0) или значение -1 в случае ошибки.</p>
|
||||||
|
|
||||||
|
<h4><a name="f_v_brush_c">buf2d_vox_brush_create</a></h4>
|
||||||
|
<p>Создание воксельной кисти.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_brush_delete</h4>
|
||||||
|
<p>Удаление воксельной кисти.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_get_img_w_3g</h4>
|
||||||
|
<p>Возврашает ширину воксельного изображения с 3-мя гранями (которое рисуется функцией <b>buf2d_vox_obj_draw_3g</b>), принимает указатель на кисть и масштаб.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_get_img_h_3g</h4>
|
||||||
|
<p>Возврашает высоту воксельного изображения с 3-мя гранями (которое рисуется функцией <b>buf2d_vox_obj_draw_3g</b>), принимает указатель на кисть и масштаб.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_draw_3g</h4>
|
||||||
|
<p>Рисование воксельного объекта с 3-мя гранями.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_draw_3g_scaled</h4>
|
||||||
|
<p>Рисование части воксельного объекта.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_draw_3g_shadows</h4>
|
||||||
|
<p>Функция рисующая тени для изображений нарисованных с помощью функции <b>buf2d_vox_obj_draw_3g</b> или <b>buf2d_vox_obj_draw_3g_scaled</b>.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_draw_pl</h4>
|
||||||
|
<p>Функция рисующая срез воксельного обьекта.</p>
|
||||||
|
|
||||||
|
<h4>buf2d_vox_obj_draw_pl_scaled</h4>
|
||||||
|
<p>Функция рисующая срез части воксельного обьекта.</p>
|
||||||
|
|
||||||
<h1><a name="const">Константы</a></h1>
|
<h1><a name="const">Константы</a></h1>
|
||||||
<h4>BUF2D_OPT_CROP_TOP equ 1</h4>
|
<h4>BUF2D_OPT_CROP_TOP equ 1</h4>
|
||||||
<p>Константа для функции buf2d_crop_color, обозначает обрезку буфера сверху</p>
|
<p>Константа для функции buf2d_crop_color, обозначает обрезку буфера сверху</p>
|
||||||
@ -271,6 +309,17 @@ import_buf2d_lib:
|
|||||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||||
buf2d_get_pixel dd sz_buf2d_get_pixel
|
buf2d_get_pixel dd sz_buf2d_get_pixel
|
||||||
|
|
||||||
|
;воксельные функции:
|
||||||
|
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||||
|
buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
|
||||||
|
buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
|
||||||
|
buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||||
|
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||||
|
buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||||
|
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||||
|
buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||||
|
buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||||
|
|
||||||
dd 0,0
|
dd 0,0
|
||||||
sz_lib_init db 'lib_init',0
|
sz_lib_init db 'lib_init',0
|
||||||
sz_buf2d_create db 'buf2d_create',0
|
sz_buf2d_create db 'buf2d_create',0
|
||||||
@ -298,7 +347,18 @@ import_buf2d_lib:
|
|||||||
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
||||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||||
sz_buf2d_get_pixel db 'buf2d_get_pixel',0</pre>
|
sz_buf2d_get_pixel db 'buf2d_get_pixel',0
|
||||||
|
|
||||||
|
;воксельные функции:
|
||||||
|
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||||
|
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||||
|
sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||||
|
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||||
|
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||||
|
sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||||
|
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||||
|
sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||||
|
sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0</pre>
|
||||||
|
|
||||||
<h1><a name="hist">История</a></h1>
|
<h1><a name="hist">История</a></h1>
|
||||||
<p>02.07.10 - самая первая версия библиотеки, 2 примера использования.</p>
|
<p>02.07.10 - самая первая версия библиотеки, 2 примера использования.</p>
|
||||||
@ -321,5 +381,6 @@ import_buf2d_lib:
|
|||||||
<p>20.02.12 - функции buf2d_filled_rect_by_size и buf2d_rect_by_size могут принимать отрицательные размеры для прямоугольников, в функции buf2d_line горизонтальная линия рисуется на 1 пиксель длинее (раньше не дорисовывало), некоторые функции могут рисовать в 8 битных буферах.</p>
|
<p>20.02.12 - функции buf2d_filled_rect_by_size и buf2d_rect_by_size могут принимать отрицательные размеры для прямоугольников, в функции buf2d_line горизонтальная линия рисуется на 1 пиксель длинее (раньше не дорисовывало), некоторые функции могут рисовать в 8 битных буферах.</p>
|
||||||
<p>23.02.12 - функция buf2d_bit_blt_alpha может принимать отрицательные координаты в позиции копируемого буфера, небольшие доработки в buf2d_bit_blt_transp</p>
|
<p>23.02.12 - функция buf2d_bit_blt_alpha может принимать отрицательные координаты в позиции копируемого буфера, небольшие доработки в buf2d_bit_blt_transp</p>
|
||||||
<p>11.05.12 - добавлена функция для взятия цвета точки buf2d_get_pixel, доработки в buf2d_set_pixel.</p>
|
<p>11.05.12 - добавлена функция для взятия цвета точки buf2d_get_pixel, доработки в buf2d_set_pixel.</p>
|
||||||
|
<p>12.06.12 - добавлены функции для рисования воксельной графики.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -2912,13 +2912,13 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
proc vox_add, buf_v1:dword, buf_v2:dword, coord_x:dword, coord_y:dword, coord_z:dword
|
proc vox_add, buf_v1:dword, buf_v2:dword, coord_x:dword, coord_y:dword, coord_z:dword
|
||||||
pushad
|
pushad
|
||||||
mov eax,[coord_x]
|
mov ebx,[coord_x]
|
||||||
mov ebx,[coord_y]
|
mov eax,[coord_y]
|
||||||
mov edi,[buf_v2]
|
mov edi,[buf_v2]
|
||||||
mov ecx,buf2d_h
|
mov ecx,buf2d_h
|
||||||
mov esi,buf2d_w
|
mov esi,buf2d_w
|
||||||
imul ecx,esi
|
imul ecx,esi
|
||||||
add esi,eax
|
add esi,ebx
|
||||||
mov edx,buf2d_data
|
mov edx,buf2d_data
|
||||||
cld
|
cld
|
||||||
;ecx - count pixels in voxel
|
;ecx - count pixels in voxel
|
||||||
@ -2929,23 +2929,24 @@ pushad
|
|||||||
cmp dword[edx],0
|
cmp dword[edx],0
|
||||||
je @f
|
je @f
|
||||||
;¯à®¢¥à塞 ¡ãä¥à £«ã¡¨ë
|
;¯à®¢¥à塞 ¡ãä¥à £«ã¡¨ë
|
||||||
push eax ecx esi
|
push eax ecx edi esi
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
stdcall buf_get_pixel, [buf_v1],ecx,ebx
|
mov edi,[buf_v1]
|
||||||
|
call get_pixel_32 ;stdcall buf_get_pixel, [buf_v1],ebx,ecx
|
||||||
mov esi,[edx]
|
mov esi,[edx]
|
||||||
add esi,[coord_z]
|
add esi,[coord_z]
|
||||||
cmp eax,esi
|
cmp eax,esi
|
||||||
jge .end_draw
|
jge .end_draw
|
||||||
stdcall buf_set_pixel, [buf_v1],ecx,ebx,esi ;esi = new coord z
|
stdcall buf_set_pixel, [buf_v1],ebx,ecx,esi ;esi = new coord z
|
||||||
.end_draw:
|
.end_draw:
|
||||||
pop esi ecx eax
|
pop esi edi ecx eax
|
||||||
@@:
|
@@:
|
||||||
add edx,4
|
add edx,4
|
||||||
inc eax
|
|
||||||
cmp eax,esi
|
|
||||||
jl @f
|
|
||||||
inc ebx
|
inc ebx
|
||||||
sub eax,buf2d_w
|
cmp ebx,esi
|
||||||
|
jl @f
|
||||||
|
inc eax
|
||||||
|
sub ebx,buf2d_w
|
||||||
@@:
|
@@:
|
||||||
loop .cycle
|
loop .cycle
|
||||||
popad
|
popad
|
||||||
|
Binary file not shown.
BIN
programs/media/voxel_editor/trunk/vaz2106.vox
Normal file
BIN
programs/media/voxel_editor/trunk/vaz2106.vox
Normal file
Binary file not shown.
@ -9,15 +9,15 @@ use32
|
|||||||
dd 0
|
dd 0
|
||||||
dd sys_path
|
dd sys_path
|
||||||
|
|
||||||
include 'd:/kolibri/svn/programs/macros.inc'
|
include '../../../../programs/macros.inc'
|
||||||
include 'd:/kolibri/svn/programs/proc32.inc'
|
include '../../../../programs/proc32.inc'
|
||||||
include 'd:/kolibri/svn/programs/develop/libraries/box_lib/load_lib.mac'
|
include '../../../../programs/develop/libraries/box_lib/load_lib.mac'
|
||||||
include 'mem.inc'
|
include 'mem.inc'
|
||||||
include 'dll.inc'
|
include 'dll.inc'
|
||||||
include 'vox_draw.inc'
|
include 'vox_draw.inc'
|
||||||
|
|
||||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||||
caption db 'Voxel editor 11.06.12',0 ;¯®¤¯¨áì ®ª
|
caption db 'Voxel editor 12.06.12',0 ;¯®¤¯¨áì ®ª
|
||||||
|
|
||||||
struct FileInfoBlock
|
struct FileInfoBlock
|
||||||
Function dd ?
|
Function dd ?
|
||||||
@ -302,12 +302,7 @@ pushad
|
|||||||
jg .end_f
|
jg .end_f
|
||||||
stdcall [buf2d_get_pixel], edi,ebx,eax
|
stdcall [buf2d_get_pixel], edi,ebx,eax
|
||||||
mov [v_color],eax
|
mov [v_color],eax
|
||||||
;stdcall [buf2d_filled_rect_by_size], buf_0, 5,3, 8,8,eax
|
call on_change_color ;®â®¡à ¦ ¥¬ ¨§¬¥¥¨ï 梥â
|
||||||
;stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
|
||||||
mov ebx,((OT_CAPT_X_COLOR+35) shl 16)+16 ;¯® ®á¨ x
|
|
||||||
mov ecx,(OT_CAPT_Y_COLOR shl 16)+12 ;¯® ®á¨ y
|
|
||||||
mov edx,[v_color]
|
|
||||||
mcall 13
|
|
||||||
.end_f:
|
.end_f:
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
@ -472,24 +467,21 @@ draw_pok:
|
|||||||
|
|
||||||
mov eax,47
|
mov eax,47
|
||||||
mov ecx,[v_zoom]
|
mov ecx,[v_zoom]
|
||||||
mov ebx,(2 shl 16)
|
mov ebx,(3 shl 16)+(1 shl 31)
|
||||||
mov edx,((365+6*9) shl 16)+5
|
mov edx,((365+6*9) shl 16)+5
|
||||||
mov esi,[sc.work_button_text]
|
mov esi,[sc.work_button_text]
|
||||||
or esi,(1 shl 30)
|
or esi,(1 shl 30)
|
||||||
mov edi,[sc.work_button]
|
mov edi,[sc.work_button]
|
||||||
int 0x40 ;¬ áèâ ¡
|
int 0x40 ;¬ áèâ ¡
|
||||||
mov ebx,(5 shl 16)
|
|
||||||
mov ecx,[v_cur_x]
|
mov ecx,[v_cur_x]
|
||||||
add edx,(6*2)*65536+9
|
add edx,(6*2)*65536+9
|
||||||
int 0x40 ;
|
int 0x40 ;
|
||||||
mov ebx,(5 shl 16)
|
|
||||||
mov ecx,[v_cur_y]
|
mov ecx,[v_cur_y]
|
||||||
add edx,(6*0)*65536+9
|
add edx,(6*0)*65536+9
|
||||||
int 0x40 ;
|
int 0x40 ;
|
||||||
mov ebx,(5 shl 16)
|
|
||||||
mov ecx,[n_plane]
|
mov ecx,[n_plane]
|
||||||
add edx,(6*0)*65536+9
|
add edx,(6*0)*65536+9
|
||||||
int 0x40 ;
|
int 0x40 ;®¬¥à á¥ç¥¨ï
|
||||||
|
|
||||||
mov eax,4 ;à¨á®¢ ¨¥ ⥪áâ
|
mov eax,4 ;à¨á®¢ ¨¥ ⥪áâ
|
||||||
mov ebx,(OT_CAPT_X_COLOR shl 16)+OT_CAPT_Y_COLOR+2
|
mov ebx,(OT_CAPT_X_COLOR shl 16)+OT_CAPT_Y_COLOR+2
|
||||||
@ -498,10 +490,25 @@ draw_pok:
|
|||||||
mov edx,txt_color
|
mov edx,txt_color
|
||||||
int 0x40
|
int 0x40
|
||||||
|
|
||||||
|
call on_change_color
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 4
|
||||||
|
on_change_color:
|
||||||
|
pushad
|
||||||
mov ebx,((OT_CAPT_X_COLOR+35) shl 16)+16 ;¯® ®á¨ x
|
mov ebx,((OT_CAPT_X_COLOR+35) shl 16)+16 ;¯® ®á¨ x
|
||||||
mov ecx,(OT_CAPT_Y_COLOR shl 16)+12 ;¯® ®á¨ y
|
mov ecx,(OT_CAPT_Y_COLOR shl 16)+12 ;¯® ®á¨ y
|
||||||
mov edx,[v_color]
|
mov edx,[v_color]
|
||||||
mcall 13
|
mcall 13
|
||||||
|
|
||||||
|
mov ebx,(1 shl 8)+(6 shl 16)
|
||||||
|
mov ecx,edx
|
||||||
|
mov edx,((OT_CAPT_X_COLOR+55) shl 16)+OT_CAPT_Y_COLOR+2
|
||||||
|
mov esi,[sc.work_text]
|
||||||
|
add esi,(1 shl 30)
|
||||||
|
mov edi,[sc.work]
|
||||||
|
mcall 47
|
||||||
|
popad
|
||||||
ret
|
ret
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@ -529,11 +536,11 @@ button:
|
|||||||
@@:
|
@@:
|
||||||
cmp ah,6
|
cmp ah,6
|
||||||
jne @f
|
jne @f
|
||||||
call but_1
|
call but_zoom_p
|
||||||
@@:
|
@@:
|
||||||
cmp ah,7
|
cmp ah,7
|
||||||
jne @f
|
jne @f
|
||||||
call but_2
|
call but_zoom_m
|
||||||
@@:
|
@@:
|
||||||
cmp ah,8
|
cmp ah,8
|
||||||
jne @f
|
jne @f
|
||||||
@ -639,6 +646,9 @@ but_open_file:
|
|||||||
movzx eax,byte[eax]
|
movzx eax,byte[eax]
|
||||||
and eax,0xff ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ¨î
|
and eax,0xff ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ¨î
|
||||||
mov dword[v_zoom],eax ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ¨î
|
mov dword[v_zoom],eax ;¡¥à¥¬ ¬ áèâ ¡ ¯® 㬮«ç ¨î
|
||||||
|
mov dword[cam_x],0
|
||||||
|
mov dword[cam_y],0
|
||||||
|
mov dword[cam_z],0
|
||||||
call draw_objects
|
call draw_objects
|
||||||
.end_open_file:
|
.end_open_file:
|
||||||
popad
|
popad
|
||||||
@ -679,7 +689,7 @@ but_save_file:
|
|||||||
|
|
||||||
;㢥«¨ç¥¨¥ ¬ áèâ ¡
|
;㢥«¨ç¥¨¥ ¬ áèâ ¡
|
||||||
align 4
|
align 4
|
||||||
but_1:
|
but_zoom_p:
|
||||||
cmp dword[v_zoom],10 ;¬ ªá¨¬ «ìë© à §¬¥à, ¤® ª®â®à®£® ¬®¦® 㢥«¨ç¨âì 2^10=1024
|
cmp dword[v_zoom],10 ;¬ ªá¨¬ «ìë© à §¬¥à, ¤® ª®â®à®£® ¬®¦® 㢥«¨ç¨âì 2^10=1024
|
||||||
jge @f
|
jge @f
|
||||||
inc dword[v_zoom]
|
inc dword[v_zoom]
|
||||||
@ -688,9 +698,21 @@ but_1:
|
|||||||
mov eax,[v_zoom]
|
mov eax,[v_zoom]
|
||||||
cmp eax,[scaled_zoom]
|
cmp eax,[scaled_zoom]
|
||||||
jl .end_0
|
jl .end_0
|
||||||
|
push ecx
|
||||||
|
mov ecx,[scaled_zoom]
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
shl dword[cam_x],1
|
shl dword[cam_x],1
|
||||||
shl dword[cam_y],1
|
shl dword[cam_y],1
|
||||||
shl dword[cam_z],1
|
shl dword[cam_z],1
|
||||||
|
cmp eax,[n_plane]
|
||||||
|
jg .end_1
|
||||||
|
;ª®à¥ªâ¨à®¢ª ¯®«§ãª
|
||||||
|
sub [n_plane],eax
|
||||||
|
inc dword[cam_y]
|
||||||
|
.end_1:
|
||||||
|
pop ecx
|
||||||
.end_0:
|
.end_0:
|
||||||
pop eax
|
pop eax
|
||||||
call draw_objects
|
call draw_objects
|
||||||
@ -700,8 +722,8 @@ but_1:
|
|||||||
|
|
||||||
;㬥ì襨¥ ¬ áèâ ¡
|
;㬥ì襨¥ ¬ áèâ ¡
|
||||||
align 4
|
align 4
|
||||||
but_2:
|
but_zoom_m:
|
||||||
cmp dword[v_zoom],-1
|
cmp dword[v_zoom],1
|
||||||
jl @f
|
jl @f
|
||||||
dec dword[v_zoom]
|
dec dword[v_zoom]
|
||||||
shr dword[n_plane],1
|
shr dword[n_plane],1
|
||||||
@ -711,6 +733,17 @@ but_2:
|
|||||||
jl .end_0
|
jl .end_0
|
||||||
shr dword[cam_x],1
|
shr dword[cam_x],1
|
||||||
shr dword[cam_y],1
|
shr dword[cam_y],1
|
||||||
|
jnc .end_1
|
||||||
|
;ª®à¥ªâ¨à®¢ª ¯®«§ãª
|
||||||
|
push ecx
|
||||||
|
mov ecx,[scaled_zoom]
|
||||||
|
dec ecx
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
add [n_plane],eax
|
||||||
|
pop ecx
|
||||||
|
.end_1:
|
||||||
shr dword[cam_z],1
|
shr dword[cam_z],1
|
||||||
.end_0:
|
.end_0:
|
||||||
pop eax
|
pop eax
|
||||||
@ -731,21 +764,83 @@ but_4:
|
|||||||
call draw_objects
|
call draw_objects
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;ᤢ¨£ ¥¬ ¯«®áª®áâì á१
|
||||||
align 4
|
align 4
|
||||||
but_5:
|
but_5:
|
||||||
|
push eax ecx
|
||||||
inc dword[n_plane]
|
inc dword[n_plane]
|
||||||
|
mov eax,[v_zoom]
|
||||||
|
cmp eax,[scaled_zoom]
|
||||||
|
jle .end_0
|
||||||
|
;¯à®¨á室¨â ¬ áèâ ¡¨à®¢ ¨¥
|
||||||
|
mov ecx,[scaled_zoom]
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
cmp eax,[n_plane]
|
||||||
|
jg @f
|
||||||
|
mov dword[n_plane],0
|
||||||
|
inc dword[cam_y] ;¯¥à¥å®¤¨¬ ¢ á®á¥¤¨© ªã¡
|
||||||
|
neg ecx
|
||||||
|
;inc ecx
|
||||||
|
add ecx,[v_zoom]
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
cmp eax,[cam_y]
|
||||||
|
jg @f
|
||||||
|
mov dword[cam_y],0 ;§ 横«¨¢ ¥¬ ¥á«¨ ¢ë«¥§«¨ § ¯à¥¤¥«ë ¯®á«¥¤¥£® ªã¡
|
||||||
|
@@:
|
||||||
|
jmp .end_1
|
||||||
|
.end_0:
|
||||||
|
;¬ áèâ ¡¨à®¢ ¨¥ ¥ ¯à®¨á室¨â
|
||||||
|
mov ecx,eax
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
cmp eax,[n_plane]
|
||||||
|
jg .end_1
|
||||||
|
mov dword[n_plane],0
|
||||||
|
.end_1:
|
||||||
call draw_objects
|
call draw_objects
|
||||||
call draw_pok
|
call draw_pok
|
||||||
|
pop ecx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;ᤢ¨£ ¥¬ ¯«®áª®áâì á१
|
||||||
align 4
|
align 4
|
||||||
but_6:
|
but_6:
|
||||||
cmp dword[n_plane],0
|
|
||||||
jle @f
|
|
||||||
dec dword[n_plane]
|
dec dword[n_plane]
|
||||||
|
cmp dword[n_plane],0
|
||||||
|
jge .end_f
|
||||||
|
push eax ecx
|
||||||
|
mov ecx,[scaled_zoom]
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
dec eax
|
||||||
|
mov dword[n_plane],eax
|
||||||
|
|
||||||
|
mov eax,[v_zoom]
|
||||||
|
cmp eax,[scaled_zoom]
|
||||||
|
jle .end_0
|
||||||
|
;¯à®¨á室¨â ¬ áèâ ¡¨à®¢ ¨¥
|
||||||
|
dec dword[cam_y] ;¯¥à¥å®¤¨¬ ¢ á®á¥¤¨© ªã¡
|
||||||
|
cmp dword[cam_y],0
|
||||||
|
jge .end_0
|
||||||
|
|
||||||
|
mov ecx,eax
|
||||||
|
sub ecx,[scaled_zoom]
|
||||||
|
xor eax,eax
|
||||||
|
inc eax
|
||||||
|
shl eax,cl
|
||||||
|
dec eax
|
||||||
|
mov dword[cam_y],eax ;¥á«¨ ®¬¥à ªã¡ ®ª § «áï ¬¥ìè¥ 0 ¨á¯à ¢«ï¥¬ ¬ ªá¨¬ «ì®¥ § 票¥
|
||||||
|
.end_0:
|
||||||
|
pop ecx eax
|
||||||
|
.end_f:
|
||||||
call draw_objects
|
call draw_objects
|
||||||
call draw_pok
|
call draw_pok
|
||||||
@@:
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@ -922,8 +1017,10 @@ draw_objects:
|
|||||||
cmp eax,[scaled_zoom]
|
cmp eax,[scaled_zoom]
|
||||||
jg @f
|
jg @f
|
||||||
;®¡ëçë© à¥¦¨¬ ¨§®¡à ¦¥¨ï
|
;®¡ëçë© à¥¦¨¬ ¨§®¡à ¦¥¨ï
|
||||||
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, buf_vox, [open_file_vox], ebx,ecx, 0, eax
|
stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, buf_vox,\
|
||||||
stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox], OT_MAP_X,OT_MAP_Y,TILE_SIZE, [v_zoom], [n_plane], 0xd0d0d0
|
[open_file_vox], ebx,ecx, 0, eax
|
||||||
|
stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\
|
||||||
|
OT_MAP_X,OT_MAP_Y,TILE_SIZE, [v_zoom], [n_plane], [sc.work_graph]
|
||||||
bt dword[mode_light],0
|
bt dword[mode_light],0
|
||||||
jnc .end_1
|
jnc .end_1
|
||||||
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, buf_vox, ebx,ecx, 0, eax, 3
|
stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, buf_vox, ebx,ecx, 0, eax, 3
|
||||||
@ -1179,9 +1276,10 @@ import_buf2d:
|
|||||||
buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
|
||||||
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
|
||||||
buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
|
||||||
|
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
||||||
buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
|
||||||
buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
|
||||||
buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
|
|
||||||
dd 0,0
|
dd 0,0
|
||||||
sz_init db 'lib_init',0
|
sz_init db 'lib_init',0
|
||||||
sz_buf2d_create db 'buf2d_create',0
|
sz_buf2d_create db 'buf2d_create',0
|
||||||
@ -1214,9 +1312,9 @@ import_buf2d:
|
|||||||
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
|
||||||
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
|
||||||
sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
|
||||||
|
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
||||||
sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
|
||||||
sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0
|
||||||
sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
|
|
||||||
|
|
||||||
mouse_dd dd 0x0
|
mouse_dd dd 0x0
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
Loading…
Reference in New Issue
Block a user