Rev 3014 | Rev 5390 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3014 | Rev 3047 | ||
---|---|---|---|
Line 14... | Line 14... | ||
14 | include '../../../../programs/develop/libraries/box_lib/load_lib.mac' |
14 | include '../../../../programs/develop/libraries/box_lib/load_lib.mac' |
15 | include '../../../dll.inc' |
15 | include '../../../dll.inc' |
16 | include 'vox_draw.inc' |
16 | include 'vox_draw.inc' |
Line 17... | Line 17... | ||
17 | 17 | ||
18 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
18 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
Line 19... | Line 19... | ||
19 | caption db 'Voxel editor 01.10.12',0 ;¯®¤¯¨áì ®ª |
19 | caption db 'Voxel editor 16.11.12',0 ;¯®¤¯¨áì ®ª |
20 | 20 | ||
21 | struct FileInfoBlock |
21 | struct FileInfoBlock |
22 | Function dd ? |
22 | Function dd ? |
Line 107... | Line 107... | ||
107 | OT_CAPT_X_COLOR equ 5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â |
107 | OT_CAPT_X_COLOR equ 5 ;®âáâ㯠¤«ï ¯®¤¯¨á¨ 梥â |
108 | OT_CAPT_Y_COLOR equ 30 |
108 | OT_CAPT_Y_COLOR equ 30 |
109 | PEN_MODE_NONE equ -1 |
109 | PEN_MODE_NONE equ -1 |
110 | PEN_MODE_CLEAR equ 0 ;०¨¬ áâ¨à ¨ï |
110 | PEN_MODE_CLEAR equ 0 ;०¨¬ áâ¨à ¨ï |
111 | PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à 梥â |
111 | PEN_MODE_SELECT_COLOR equ 2 ;०¨¬ ¢ë¡®à 梥â |
- | 112 | PEN_MODE_BRUSH equ 3 ;०¨¬ à ¡®âë á ª¨áâìî |
|
Line 112... | Line 113... | ||
112 | 113 | ||
113 | align 4 |
114 | align 4 |
114 | start: |
115 | start: |
115 | load_libraries l_libs_start,l_libs_end |
116 | load_libraries l_libs_start,l_libs_end |
Line 344... | Line 345... | ||
344 | cmp dword[v_pen_mode],1 |
345 | cmp dword[v_pen_mode],1 |
345 | jne @f |
346 | jne @f |
346 | push dword[v_color] |
347 | push dword[v_color] |
347 | @@: |
348 | @@: |
Line -... | Line 349... | ||
- | 349 | ||
- | 350 | mov ecx,dword[v_zoom] |
|
- | 351 | mov edi,eax |
|
- | 352 | mov esi,ebx |
|
- | 353 | mcall 66,3 |
|
- | 354 | and eax,3 ;3 -> ¡¨â 0 «¥¢ë© Shift ¦ â, ¡¨â 1 ¯à ¢ë© Shift ¦ â |
|
- | 355 | jz .shift_end |
|
- | 356 | ;¥á«¨ ¦ â Shift, ⮠। ªâ¨à㥬 ¢¥à奬 ã஢¥ |
|
- | 357 | ;¤«ï í⮣® ¢á¥ ª®®à¤¨ âë ¤¥«¨¬ 2 ®â ¬ áâ ¡ ®â¨¬ ¥¬ 1 |
|
- | 358 | shr edx,1 |
|
- | 359 | shr esi,1 |
|
- | 360 | shr edi,1 |
|
- | 361 | dec ecx |
|
- | 362 | .shift_end: |
|
348 | 363 | ||
349 | ;¢ë§®¢ ®¡é¨å ¯ à ¬¥â஢ ¤«ï äãªæ¨© |
364 | ;¢ë§®¢ ®¡é¨å ¯ à ¬¥â஢ ¤«ï äãªæ¨© |
350 | push dword[v_zoom] |
- | |
351 | push edx |
- | |
352 | push ebx |
- | |
353 | push eax |
365 | push ecx edx esi edi |
Line 354... | Line 366... | ||
354 | push dword[open_file_vox] |
366 | push dword[open_file_vox] |
355 | 367 | ||
356 | ;¢ë§®¢ äãªæ¨© |
368 | ;¢ë§®¢ äãªæ¨© |
357 | cmp dword[v_pen_mode],1 |
369 | cmp dword[v_pen_mode],1 |
358 | jne @f |
370 | jne @f |
359 | call buf2d_vox_obj_create_node |
371 | call buf2d_vox_obj_create_node |
360 | ;stdcall buf2d_vox_obj_create_node, [open_file_vox], eax,ebx,edx, [v_zoom], [v_color] |
372 | ;stdcall buf2d_vox_obj_create_node, [open_file_vox], edi,esi,edx, [v_zoom], [v_color] |
361 | jmp .end_1 |
373 | jmp .end_1 |
362 | @@: |
374 | @@: |
Line 363... | Line 375... | ||
363 | call buf2d_vox_obj_delete_node |
375 | call buf2d_vox_obj_delete_node |
364 | ;stdcall buf2d_vox_obj_delete_node, [open_file_vox], eax,ebx,edx, [v_zoom] |
376 | ;stdcall buf2d_vox_obj_delete_node, [open_file_vox], edi,esi,edx, [v_zoom] |
365 | 377 | ||
366 | .end_1: |
378 | .end_1: |
Line 1193... | Line 1205... | ||
1193 | cmp dword[brush_w],1 |
1205 | cmp dword[brush_w],1 |
1194 | jle @f |
1206 | jle @f |
1195 | dec dword[brush_w] |
1207 | dec dword[brush_w] |
1196 | pushad |
1208 | pushad |
1197 | call draw_pok |
1209 | call draw_pok |
1198 | call draw_vox_cursor |
1210 | call draw_plane |
1199 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
- | |
1200 | popad |
1211 | popad |
1201 | @@: |
1212 | @@: |
1202 | ret |
1213 | ret |
1203 | ;㢥«¨ç¨¢ ¥¬ è¨à¨ã ª¨á⨠|
1214 | ;㢥«¨ç¨¢ ¥¬ è¨à¨ã ª¨á⨠|
1204 | align 4 |
1215 | align 4 |
Line 1206... | Line 1217... | ||
1206 | cmp dword[brush_w],32 |
1217 | cmp dword[brush_w],32 |
1207 | jge @f |
1218 | jge @f |
1208 | inc dword[brush_w] |
1219 | inc dword[brush_w] |
1209 | pushad |
1220 | pushad |
1210 | call draw_pok |
1221 | call draw_pok |
1211 | call draw_vox_cursor |
1222 | call draw_plane |
1212 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
- | |
1213 | popad |
1223 | popad |
1214 | @@: |
1224 | @@: |
1215 | ret |
1225 | ret |
1216 | ;㬥ìè ¥¬ ¢ëá®âã ª¨á⨠|
1226 | ;㬥ìè ¥¬ ¢ëá®âã ª¨á⨠|
1217 | align 4 |
1227 | align 4 |
Line 1219... | Line 1229... | ||
1219 | cmp dword[brush_h],1 |
1229 | cmp dword[brush_h],1 |
1220 | jle @f |
1230 | jle @f |
1221 | dec dword[brush_h] |
1231 | dec dword[brush_h] |
1222 | pushad |
1232 | pushad |
1223 | call draw_pok |
1233 | call draw_pok |
1224 | call draw_vox_cursor |
1234 | call draw_plane |
1225 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
- | |
1226 | popad |
1235 | popad |
1227 | @@: |
1236 | @@: |
1228 | ret |
1237 | ret |
1229 | ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ª¨á⨠|
1238 | ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ª¨á⨠|
1230 | align 4 |
1239 | align 4 |
Line 1232... | Line 1241... | ||
1232 | cmp dword[brush_h],32 |
1241 | cmp dword[brush_h],32 |
1233 | jge @f |
1242 | jge @f |
1234 | inc dword[brush_h] |
1243 | inc dword[brush_h] |
1235 | pushad |
1244 | pushad |
1236 | call draw_pok |
1245 | call draw_pok |
1237 | call draw_vox_cursor |
1246 | call draw_plane |
1238 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
- | |
1239 | popad |
1247 | popad |
1240 | @@: |
1248 | @@: |
1241 | ret |
1249 | ret |
Line 1242... | Line 1250... | ||
1242 | 1250 | ||
1243 | align 4 |
1251 | align 4 |
1244 | but_brush_copy: |
1252 | but_brush_copy: |
1245 | cmp dword[v_pen_mode],3 |
1253 | cmp dword[v_pen_mode],PEN_MODE_BRUSH |
1246 | jne .end_f |
1254 | jne .end_f |
1247 | pushad |
1255 | pushad |
1248 | mov eax,[v_cur_x] |
1256 | mov eax,[v_cur_x] |
1249 | mov ebx,[n_plane] |
1257 | mov ebx,[n_plane] |
Line 1295... | Line 1303... | ||
1295 | .end_f: |
1303 | .end_f: |
1296 | ret |
1304 | ret |
Line 1297... | Line 1305... | ||
1297 | 1305 | ||
1298 | align 4 |
1306 | align 4 |
1299 | but_brush_draw: |
1307 | but_brush_draw: |
1300 | cmp dword[v_pen_mode],3 |
1308 | cmp dword[v_pen_mode],PEN_MODE_BRUSH |
1301 | jne .end_f |
1309 | jne .end_f |
1302 | pushad |
1310 | pushad |
1303 | mov eax,[v_cur_x] |
1311 | mov eax,[v_cur_x] |
1304 | mov ebx,[n_plane] |
1312 | mov ebx,[n_plane] |
Line 1353... | Line 1361... | ||
1353 | .end_f: |
1361 | .end_f: |
1354 | ret |
1362 | ret |
Line 1355... | Line 1363... | ||
1355 | 1363 | ||
1356 | align 4 |
1364 | align 4 |
1357 | but_brush_clear: |
1365 | but_brush_clear: |
1358 | cmp dword[v_pen_mode],3 |
1366 | cmp dword[v_pen_mode],PEN_MODE_BRUSH |
1359 | jne .end_f |
1367 | jne .end_f |
1360 | pushad |
1368 | pushad |
1361 | mov eax,[v_cur_x] |
1369 | mov eax,[v_cur_x] |
1362 | mov ebx,[n_plane] |
1370 | mov ebx,[n_plane] |
Line 1443... | Line 1451... | ||
1443 | .size: rb 10 |
1451 | .size: rb 10 |
1444 | txt_mull db '*',0 |
1452 | txt_mull db '*',0 |
1445 | txt_space db ' ',0 |
1453 | txt_space db ' ',0 |
1446 | txt_buf rb 16 |
1454 | txt_buf rb 16 |
Line -... | Line 1455... | ||
- | 1455 | ||
1447 | 1456 | ;à¨á®¢ ¨¥ ¡ãä¥à á ¢®ªá¥«ì묨 ®¡ê¥ªâ ¬¨ |
|
1448 | align 4 |
1457 | align 4 |
1449 | draw_objects: |
1458 | draw_objects: |
1450 | stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à |
1459 | stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à |
1451 | stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à |
- | |
Line 1452... | Line 1460... | ||
1452 | stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à |
1460 | stdcall [buf2d_clear], buf_0z, 0 ;ç¨á⨬ ¡ãä¥à |
1453 | 1461 | ||
1454 | cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR |
1462 | cmp dword[v_pen_mode],PEN_MODE_SELECT_COLOR |
1455 | jne @f |
1463 | jne @f |
Line 1475... | Line 1483... | ||
1475 | cmp eax,[scaled_zoom] |
1483 | cmp eax,[scaled_zoom] |
1476 | jg @f |
1484 | jg @f |
1477 | ;®¡ëçë© à¥¦¨¬ ¨§®¡à ¦¥¨ï |
1485 | ;®¡ëçë© à¥¦¨¬ ¨§®¡à ¦¥¨ï |
1478 | stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, [buf_vox],\ |
1486 | stdcall [buf2d_vox_obj_draw_3g], buf_0, buf_0z, [buf_vox],\ |
1479 | [open_file_vox], ebx,ecx, 0, eax |
1487 | [open_file_vox], ebx,ecx, 0, eax |
1480 | stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\ |
- | |
1481 | OT_MAP_X,OT_MAP_Y,[tile_size], eax, [n_plane], [sc.work_graph] |
- | |
1482 | stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_0z,\ |
1488 | stdcall [buf2d_vox_obj_draw_1g], buf_0, buf_0z,\ |
1483 | [open_file_vox], 0,0, eax |
1489 | [open_file_vox], 0,0, eax |
1484 | bt dword[mode_light],0 |
1490 | bt dword[mode_light],0 |
1485 | jnc .end_1 |
1491 | jnc .end_1 |
1486 | stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], ebx,ecx, 0, eax, 3 |
1492 | stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], ebx,ecx, 0, eax, 3 |
Line 1489... | Line 1495... | ||
1489 | @@: |
1495 | @@: |
1490 | ;०¨¬ ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
1496 | ;०¨¬ ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
1491 | sub eax,[scaled_zoom] |
1497 | sub eax,[scaled_zoom] |
1492 | stdcall [buf2d_vox_obj_draw_3g_scaled], buf_0, buf_0z, [buf_vox],\ |
1498 | stdcall [buf2d_vox_obj_draw_3g_scaled], buf_0, buf_0z, [buf_vox],\ |
1493 | [open_file_vox], 0,0, 0, [scaled_zoom], [cam_x],[cam_y],[cam_z],eax, [sc.work_graph] ;scroll -> 2^eax |
1499 | [open_file_vox], 0,0, 0, [scaled_zoom], [cam_x],[cam_y],[cam_z],eax, [sc.work_graph] ;scroll -> 2^eax |
1494 | stdcall [buf2d_vox_obj_draw_pl_scaled], buf_pl, [open_file_vox],\ |
- | |
1495 | OT_MAP_X,OT_MAP_Y,[tile_size], [scaled_zoom], [n_plane], [sc.work_graph],[cam_x],[cam_y],[cam_z],eax |
- | |
1496 | bt dword[mode_light],0 |
1500 | bt dword[mode_light],0 |
1497 | jnc .end_2 |
1501 | jnc .end_2 |
1498 | stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], 0,0, 0, [scaled_zoom], 3 |
1502 | stdcall [buf2d_vox_obj_draw_3g_shadows], buf_0, buf_0z, [buf_vox], 0,0, 0, [scaled_zoom], 3 |
1499 | .end_2: |
1503 | .end_2: |
1500 | .end_0: |
1504 | .end_0: |
1501 | pop ecx ebx eax |
1505 | pop ecx ebx eax |
Line 1502... | Line 1506... | ||
1502 | 1506 | ||
1503 | call draw_vox_cursor |
1507 | call draw_plane |
- | 1508 | stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
|
- | 1509 | .end_f: |
|
- | 1510 | ret |
|
- | 1511 | ||
- | 1512 | ;à¨á®¢ ¨¥ ¯«®áª®á⨠á á¥ç¥¨¥¬ ®¡ê¥ªâ |
|
- | 1513 | align 4 |
|
- | 1514 | proc draw_plane uses eax |
|
- | 1515 | stdcall [buf2d_clear], buf_pl, [buf_pl.color] ;ç¨á⨬ ¡ãä¥à |
|
- | 1516 | ||
- | 1517 | mov eax,[v_zoom] |
|
- | 1518 | cmp eax,[scaled_zoom] |
|
- | 1519 | jg @f |
|
- | 1520 | ;®¡ëçë© à¥¦¨¬ ¨§®¡à ¦¥¨ï |
|
- | 1521 | stdcall [buf2d_vox_obj_draw_pl], buf_pl, [open_file_vox],\ |
|
- | 1522 | OT_MAP_X,OT_MAP_Y,[tile_size], eax, [n_plane], [sc.work_graph] |
|
- | 1523 | jmp .end_0 |
|
- | 1524 | @@: |
|
- | 1525 | ;०¨¬ ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
- | 1526 | sub eax,[scaled_zoom] |
|
- | 1527 | stdcall [buf2d_vox_obj_draw_pl_scaled], buf_pl, [open_file_vox],\ |
|
- | 1528 | OT_MAP_X,OT_MAP_Y,[tile_size], [scaled_zoom], [n_plane], [sc.work_graph],[cam_x],[cam_y],[cam_z],eax |
|
- | 1529 | .end_0: |
|
- | 1530 | ||
1504 | stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
1531 | call draw_vox_cursor |
1505 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
1532 | stdcall [buf2d_draw], buf_pl ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥ |
1506 | .end_f: |
1533 | .end_f: |
- | 1534 | ret |
|
Line 1507... | Line 1535... | ||
1507 | ret |
1535 | endp |
1508 | 1536 | ||
1509 | ;à¨á®¢ ¨¥ ªãàá®à |
1537 | ;à¨á®¢ ¨¥ ªãàá®à |
1510 | align 4 |
1538 | align 4 |
Line 1529... | Line 1557... | ||
1529 | dec ebx |
1557 | dec ebx |
1530 | sub ebx,[v_cur_y] |
1558 | sub ebx,[v_cur_y] |
1531 | imul ebx,edi |
1559 | imul ebx,edi |
1532 | add ebx,OT_MAP_Y |
1560 | add ebx,OT_MAP_Y |
1533 | inc eax |
1561 | inc eax |
- | 1562 | cmp dword[v_pen_mode],PEN_MODE_BRUSH |
|
- | 1563 | je .brush |
|
1534 | inc ebx |
1564 | inc ebx |
1535 | sub edi,2 |
1565 | sub edi,2 |
1536 | stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph] |
1566 | stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,edi,[sc.work_graph] |
1537 | dec ebx |
1567 | dec ebx |
1538 | add edi,2 |
1568 | add edi,2 |
Line 1539... | Line -... | ||
1539 | - | ||
1540 | cmp dword[v_pen_mode],3 |
- | |
1541 | je .brush |
- | |
1542 | 1569 | ||
1543 | ;£®à¨§®â «ìë¥ «¨¨¨ |
1570 | ;£®à¨§®â «ìë¥ «¨¨¨ |
1544 | sub eax,2 |
1571 | sub eax,2 |
1545 | mov ecx,edi |
1572 | mov ecx,edi |
1546 | imul edi,edx |
1573 | imul edi,edx |
Line 1567... | Line 1594... | ||
1567 | mov edi,ecx |
1594 | mov edi,ecx |
1568 | mov esi,[brush_h] |
1595 | mov esi,[brush_h] |
1569 | imul esi,[tile_size] |
1596 | imul esi,[tile_size] |
1570 | stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,esi,[sc.work_graph] |
1597 | stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, edi,esi,[sc.work_graph] |
Line -... | Line 1598... | ||
- | 1598 | ||
- | 1599 | ;à¨á®¢ ¨¥ â®ç¥ª ¤«ï ª¨á⨠|
|
- | 1600 | mov ecx,[brush_w] |
|
- | 1601 | mov edx,[tile_size] |
|
- | 1602 | sub eax,edx ;eax-=tile_size |
|
- | 1603 | shr edx,2 |
|
- | 1604 | add eax,edx ;eax+=tile_size/4 |
|
- | 1605 | add ebx,edx ;ebx+=tile_size/4 |
|
- | 1606 | mov edx,eax |
|
- | 1607 | mov esi,[tile_size] |
|
- | 1608 | imul esi,ecx |
|
- | 1609 | imul ecx,[brush_h] |
|
- | 1610 | add esi,edx |
|
- | 1611 | ;eax = from edx to esi |
|
- | 1612 | mov edi,brush_data |
|
- | 1613 | cld |
|
- | 1614 | @@: |
|
- | 1615 | add eax,[tile_size] |
|
- | 1616 | bt dword[edi],31 |
|
- | 1617 | jc .no_pixel |
|
- | 1618 | bt dword[edi],30 |
|
- | 1619 | jc .sel_color |
|
- | 1620 | push dword[edi] |
|
- | 1621 | jmp .set_pixel |
|
- | 1622 | .sel_color: |
|
- | 1623 | push [v_color] |
|
- | 1624 | .set_pixel: |
|
- | 1625 | stdcall [buf2d_rect_by_size], buf_pl, eax,ebx, 3,3 ;, [edi] |
|
- | 1626 | .no_pixel: |
|
- | 1627 | add edi,4 |
|
- | 1628 | cmp eax,esi |
|
- | 1629 | jl .end_line |
|
- | 1630 | mov eax,edx |
|
- | 1631 | add ebx,[tile_size] |
|
- | 1632 | .end_line: |
|
- | 1633 | loop @b |
|
1571 | 1634 | ||
1572 | .end_f: |
1635 | .end_f: |
1573 | popad |
1636 | popad |
Line 1574... | Line 1637... | ||
1574 | ret |
1637 | ret |