Rev 2658 | Rev 2758 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2658 | Rev 2748 | ||
---|---|---|---|
Line 46... | Line 46... | ||
46 | BUF2D_BIT_OPT_CROP_TOP equ 0 |
46 | BUF2D_BIT_OPT_CROP_TOP equ 0 |
47 | BUF2D_BIT_OPT_CROP_LEFT equ 1 |
47 | BUF2D_BIT_OPT_CROP_LEFT equ 1 |
48 | BUF2D_BIT_OPT_CROP_BOTTOM equ 2 |
48 | BUF2D_BIT_OPT_CROP_BOTTOM equ 2 |
49 | BUF2D_BIT_OPT_CROP_RIGHT equ 3 |
49 | BUF2D_BIT_OPT_CROP_RIGHT equ 3 |
Line -... | Line 50... | ||
- | 50 | ||
- | 51 | vox_offs_tree_table equ 4 |
|
- | 52 | vox_offs_data equ 12 |
|
50 | 53 | ||
51 | ;input: |
54 | ;input: |
52 | ; eax = 㪠§ ⥫ì äãªæ¨î ¢ë¤¥«¥¨ï ¯ ¬ï⨠|
55 | ; eax = 㪠§ ⥫ì äãªæ¨î ¢ë¤¥«¥¨ï ¯ ¬ï⨠|
53 | ; ebx = ... ®á¢®¡®¦¤¥¨ï ¯ ¬ï⨠|
56 | ; ebx = ... ®á¢®¡®¦¤¥¨ï ¯ ¬ï⨠|
54 | ; ecx = ... ¯¥à¥à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠|
57 | ; ecx = ... ¯¥à¥à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠|
Line 2183... | Line 2186... | ||
2183 | ; [edi] = combine color |
2186 | ; [edi] = combine color |
2184 | align 4 |
2187 | align 4 |
2185 | combine_colors: |
2188 | combine_colors: |
2186 | push ax bx cx dx |
2189 | push ax bx cx dx |
2187 | mov bx,0x00ff ;---get transparent--- |
2190 | mov bx,0x00ff ;---get transparent--- |
2188 | mov cl,byte[esi+3] ;pro |
2191 | movzx cx,byte[esi+3] ;pro |
2189 | xor ch,ch |
- | |
2190 | sub bx,cx ;256-pro |
2192 | sub bx,cx ;256-pro |
2191 | ;---blye--- |
2193 | ;---blye--- |
2192 | xor ah,ah |
- | |
2193 | mov al,byte[esi] |
2194 | movzx ax,byte[esi] |
2194 | imul ax,bx |
2195 | imul ax,bx |
2195 | xor dh,dh |
- | |
2196 | mov dl,byte[edi] |
2196 | movzx dx,byte[edi] |
2197 | imul dx,cx |
2197 | imul dx,cx |
2198 | add ax,dx |
2198 | add ax,dx |
2199 | mov byte[edi],ah |
2199 | mov byte[edi],ah |
2200 | ;---green--- |
2200 | ;---green--- |
2201 | xor ah,ah |
- | |
2202 | mov al,byte[esi+1] |
2201 | movzx ax,byte[esi+1] |
2203 | imul ax,bx |
2202 | imul ax,bx |
2204 | xor dh,dh |
- | |
2205 | mov dl,byte[edi+1] |
2203 | movzx dx,byte[edi+1] |
2206 | imul dx,cx |
2204 | imul dx,cx |
2207 | add ax,dx |
2205 | add ax,dx |
2208 | mov byte[edi+1],ah |
2206 | mov byte[edi+1],ah |
2209 | ;---red--- |
2207 | ;---red--- |
2210 | xor ah,ah |
- | |
2211 | mov al,byte[esi+2] |
2208 | movzx ax,byte[esi+2] |
2212 | imul ax,bx |
2209 | imul ax,bx |
2213 | xor dh,dh |
- | |
2214 | mov dl,byte[edi+2] |
2210 | movzx dx,byte[edi+2] |
2215 | imul dx,cx |
2211 | imul dx,cx |
2216 | add ax,dx |
2212 | add ax,dx |
2217 | mov byte[edi+2],ah |
2213 | mov byte[edi+2],ah |
Line 2218... | Line 2214... | ||
2218 | 2214 | ||
Line 2337... | Line 2333... | ||
2337 | xor ch,ch |
2333 | xor ch,ch |
2338 | mov si,0x00ff ;---get transparent--- |
2334 | mov si,0x00ff ;---get transparent--- |
2339 | sub si,cx ;256-pro |
2335 | sub si,cx ;256-pro |
Line 2340... | Line 2336... | ||
2340 | 2336 | ||
2341 | ;---blye--- |
2337 | ;---blye--- |
2342 | mov al,bl |
- | |
2343 | xor ah,ah |
2338 | movzx ax,bl |
2344 | shr ebx,8 |
2339 | shr ebx,8 |
2345 | imul ax,si |
- | |
2346 | xor dh,dh |
2340 | imul ax,si |
2347 | mov dl,byte[edi] |
2341 | movzx dx,byte[edi] |
2348 | imul dx,cx |
2342 | imul dx,cx |
2349 | add ax,dx |
2343 | add ax,dx |
2350 | mov byte[edi],ah |
2344 | mov byte[edi],ah |
2351 | ;---green--- |
2345 | ;---green--- |
2352 | mov al,bl |
- | |
2353 | xor ah,ah |
2346 | movzx ax,bl |
2354 | shr ebx,8 |
2347 | shr ebx,8 |
2355 | imul ax,si |
- | |
2356 | xor dh,dh |
2348 | imul ax,si |
2357 | mov dl,byte[edi+1] |
2349 | movzx dx,byte[edi+1] |
2358 | imul dx,cx |
2350 | imul dx,cx |
2359 | add ax,dx |
2351 | add ax,dx |
2360 | mov byte[edi+1],ah |
2352 | mov byte[edi+1],ah |
2361 | ;---red--- |
2353 | ;---red--- |
2362 | mov al,bl |
- | |
2363 | xor ah,ah |
2354 | movzx ax,bl |
2364 | imul ax,si |
- | |
2365 | xor dh,dh |
2355 | imul ax,si |
2366 | mov dl,byte[edi+2] |
2356 | movzx dx,byte[edi+2] |
2367 | imul dx,cx |
2357 | imul dx,cx |
2368 | add ax,dx |
2358 | add ax,dx |
Line 2369... | Line 2359... | ||
2369 | mov byte[edi+2],ah |
2359 | mov byte[edi+2],ah |
Line 2804... | Line 2794... | ||
2804 | 2794 | ||
2805 | popad |
2795 | popad |
2806 | ret |
2796 | ret |
Line -... | Line 2797... | ||
- | 2797 | endp |
|
- | 2798 | ||
- | 2799 | ||
- | 2800 | ||
- | 2801 | ;*** äãªæ¨¨ ¤«ï à ¡®âë á ¢®ªá¥«ì®© £à 䨪®© *** |
|
- | 2802 | ||
- | 2803 | ||
- | 2804 | ||
- | 2805 | ;ᮧ¤ ¨¥ ¢®ªá¥«ìëå ª¨á⥩ |
|
- | 2806 | align 4 |
|
- | 2807 | proc vox_brush_create uses eax ebx ecx edi, h_br:dword, buf_z:dword |
|
- | 2808 | mov edi,[h_br] |
|
- | 2809 | movzx ecx,byte[edi+3] |
|
- | 2810 | add edi,4 |
|
- | 2811 | ||
- | 2812 | ; *** ᮧ¤ ¨¥ ¥¤¨¨ç®© ª¨á⨠*** |
|
- | 2813 | mov eax,[buf_z] |
|
- | 2814 | mov buf2d_data,eax |
|
- | 2815 | movzx eax,byte[edi-4] ;è¨à¨ ¥¤¨¨ç®© ª¨á⨠|
|
- | 2816 | mov buf2d_w,eax ;è¨à¨ ¡ãä¥à |
|
- | 2817 | movzx eax,byte[edi-4+1] ;¢ëá®â ¥¤¨¨ç®© ª¨á⨠|
|
- | 2818 | mov buf2d_h,eax ;¢ëá®â ¡ãä¥à |
|
- | 2819 | mov buf2d_size_lt,0 ;®âáâ㯠᫥¢ ¨ á¯à ¢ ¤«ï ¡ãä¥à |
|
- | 2820 | mov buf2d_color,0 ;梥â ä® ¡ãä¥à |
|
- | 2821 | mov buf2d_bits,32 ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥¨ï |
|
- | 2822 | ||
- | 2823 | ; *** ᮧ¤ ¨¥ á«¥¤ãîé¨å ª¨á⥩ *** |
|
- | 2824 | cmp ecx,1 |
|
- | 2825 | jl .end_creat |
|
- | 2826 | movzx ebx,byte[edi-4+2] ;¢ëá®â ®á®¢ ¨ï ¥¤¨¨ç®© ª¨á⨠|
|
- | 2827 | shr ebx,1 |
|
- | 2828 | cld |
|
- | 2829 | @@: |
|
- | 2830 | mov eax,edi |
|
- | 2831 | add edi,BUF_STRUCT_SIZE |
|
- | 2832 | stdcall vox_create_next_brush, eax, edi, ebx |
|
- | 2833 | shl ebx,1 |
|
- | 2834 | loop @b |
|
- | 2835 | .end_creat: |
|
- | 2836 | ret |
|
- | 2837 | endp |
|
- | 2838 | ||
- | 2839 | ;㤠«¥¨¥ ¢®ªá¥«ìëå ª¨á⥩ |
|
- | 2840 | align 4 |
|
- | 2841 | proc vox_brush_delete uses ecx edi, h_br:dword |
|
- | 2842 | mov edi,[h_br] |
|
- | 2843 | movzx ecx,byte[edi+3] |
|
- | 2844 | add edi,4 |
|
- | 2845 | ||
- | 2846 | ; *** 㤠«¥¨¥ ª¨á⥩ *** |
|
- | 2847 | cmp ecx,1 |
|
- | 2848 | jl .end_delete |
|
- | 2849 | cld |
|
- | 2850 | @@: |
|
- | 2851 | add edi,BUF_STRUCT_SIZE |
|
- | 2852 | stdcall buf_delete, edi |
|
- | 2853 | loop @b |
|
- | 2854 | .end_delete: |
|
- | 2855 | ret |
|
- | 2856 | endp |
|
- | 2857 | ||
- | 2858 | ;äãªæ¨ï ¤«ï ᮧ¤ ¨ï ¢®ªá¥«ï á«¥¤ãî饣® ¯®à浪 |
|
- | 2859 | ; buf_v1 - ¡ãä¥à á ¨áå®¤ë¬ ¢®ªá¥«¥¬ |
|
- | 2860 | ; buf_v2 - ¡ãä¥à á 㢥«¨ç¥ë¬ ¢®ªá¥«¥¬ |
|
- | 2861 | ; h - ¢ëá®â ®á®¢ ¨ï ¨á室®£® ¢®ªá¥«ï : 2 |
|
- | 2862 | align 4 |
|
- | 2863 | proc vox_create_next_brush uses eax ebx ecx edx edi, buf_v1:dword, buf_v2:dword, h:dword |
|
- | 2864 | mov edi,[buf_v1] |
|
- | 2865 | mov ebx,buf2d_h |
|
- | 2866 | mov ecx,buf2d_w |
|
- | 2867 | mov edi,[buf_v2] |
|
- | 2868 | mov buf2d_h,ebx |
|
- | 2869 | shl buf2d_h,1 |
|
- | 2870 | mov buf2d_w,ecx |
|
- | 2871 | shl buf2d_w,1 |
|
- | 2872 | mov buf2d_color,0 |
|
- | 2873 | mov buf2d_bits,32 |
|
- | 2874 | ||
- | 2875 | stdcall buf_create, [buf_v2] ;ᮧ¤ ¨¥ ¡ãä¥à £«ã¡¨ë |
|
- | 2876 | shr ecx,1 |
|
- | 2877 | mov edx,[h] |
|
- | 2878 | shl edx,1 |
|
- | 2879 | sub ebx,edx |
|
- | 2880 | ;ecx - è¨à¨ ¨á室®£® ¢®ªá¥«ï : 2 |
|
- | 2881 | ;ebx - ¢ëá®â ¨á室®£® ¢®ªá¥«ï (¡¥§ ®á®¢ ¨ï) |
|
- | 2882 | ;edx - ¢ëá®â ®á®¢ ¨ï ¨á室®£® ¢®ªá¥«ï |
|
- | 2883 | stdcall vox_add, [buf_v2], [buf_v1], ecx,0,0 |
|
- | 2884 | stdcall vox_add, [buf_v2], [buf_v1], ecx,ebx,0 |
|
- | 2885 | ||
- | 2886 | mov eax,[h] |
|
- | 2887 | stdcall vox_add, [buf_v2], [buf_v1], 0,eax,eax |
|
- | 2888 | push eax ;stdcall ... |
|
- | 2889 | add eax,ebx |
|
- | 2890 | stdcall vox_add, [buf_v2], [buf_v1], 0,eax ;,... |
|
- | 2891 | sub eax,ebx |
|
- | 2892 | ||
- | 2893 | shl ecx,1 |
|
- | 2894 | ;ecx - è¨à¨ ¨á室®£® ¢®ªá¥«ï |
|
- | 2895 | mov eax,[h] |
|
- | 2896 | stdcall vox_add, [buf_v2], [buf_v1], ecx,eax,eax |
|
- | 2897 | push eax ;stdcall ...,[h] |
|
- | 2898 | add eax,ebx |
|
- | 2899 | stdcall vox_add, [buf_v2], [buf_v1], ecx,eax;,[h] |
|
- | 2900 | ;sub eax,ebx |
|
- | 2901 | shr ecx,1 |
|
- | 2902 | ||
- | 2903 | ;ecx - è¨à¨ ¨á室®£® ¢®ªá¥«ï : 2 |
|
- | 2904 | stdcall vox_add, [buf_v2], [buf_v1], ecx,edx,edx |
|
- | 2905 | add ebx,edx |
|
- | 2906 | stdcall vox_add, [buf_v2], [buf_v1], ecx,ebx,edx |
|
- | 2907 | ||
- | 2908 | ret |
|
- | 2909 | endp |
|
- | 2910 | ||
- | 2911 | ; |
|
- | 2912 | align 4 |
|
- | 2913 | proc vox_add uses ebx ecx, buf_v1:dword, buf_v2:dword, coord_x:dword, coord_y:dword, coord_z:dword |
|
- | 2914 | pushad |
|
- | 2915 | mov eax,[coord_x] |
|
- | 2916 | mov ebx,[coord_y] |
|
- | 2917 | mov edi,[buf_v2] |
|
- | 2918 | mov ecx,buf2d_h |
|
- | 2919 | mov esi,buf2d_w |
|
- | 2920 | imul ecx,esi |
|
- | 2921 | add esi,eax |
|
- | 2922 | mov edx,buf2d_data |
|
- | 2923 | cld |
|
- | 2924 | ;ecx - count pixels in voxel |
|
- | 2925 | ;edx - 㪠§ â¥«ì ¤ ë¥ ¢ ¢®ªá¥«ì®¬ ¡ãä¥à¥ |
|
- | 2926 | ;edi - 㪠§ â¥«ì ¢®ªá¥«ìë© ¡ãä¥à |
|
- | 2927 | ;esi - width voxel buffer add coord x |
|
- | 2928 | .cycle: |
|
- | 2929 | cmp dword[edx],0 |
|
- | 2930 | je @f |
|
- | 2931 | ;¯à®¢¥à塞 ¡ãä¥à £«ã¡¨ë |
|
- | 2932 | push eax ecx esi |
|
- | 2933 | mov ecx,eax |
|
- | 2934 | stdcall buf_get_pixel, [buf_v1],ecx,ebx |
|
- | 2935 | mov esi,[edx] |
|
- | 2936 | add esi,[coord_z] |
|
- | 2937 | cmp eax,esi |
|
- | 2938 | jge .end_draw |
|
- | 2939 | stdcall buf_set_pixel, [buf_v1],ecx,ebx,esi ;esi = new coord z |
|
- | 2940 | .end_draw: |
|
- | 2941 | pop esi ecx eax |
|
- | 2942 | @@: |
|
- | 2943 | add edx,4 |
|
- | 2944 | inc eax |
|
- | 2945 | cmp eax,esi |
|
- | 2946 | jl @f |
|
- | 2947 | inc ebx |
|
- | 2948 | sub eax,buf2d_w |
|
- | 2949 | @@: |
|
- | 2950 | loop .cycle |
|
- | 2951 | popad |
|
- | 2952 | ret |
|
2807 | endp |
2953 | endp |
2808 | 2954 | ||
2809 | txt_err_n8b db 'need buffer 8 bit',13,10,0 |
2955 | txt_err_n8b db 'need buffer 8 bit',13,10,0 |
Line 2810... | Line 2956... | ||
2810 | txt_err_n24b db 'need buffer 24 bit',13,10,0 |
2956 | txt_err_n24b db 'need buffer 24 bit',13,10,0 |
Line 2837... | Line 2983... | ||
2837 | dd sz_buf2d_crop_color, buf_crop_color |
2983 | dd sz_buf2d_crop_color, buf_crop_color |
2838 | dd sz_buf2d_offset_h, buf_offset_h |
2984 | dd sz_buf2d_offset_h, buf_offset_h |
2839 | dd sz_buf2d_flood_fill, buf_flood_fill |
2985 | dd sz_buf2d_flood_fill, buf_flood_fill |
2840 | dd sz_buf2d_set_pixel, buf_set_pixel |
2986 | dd sz_buf2d_set_pixel, buf_set_pixel |
2841 | dd sz_buf2d_get_pixel, buf_get_pixel |
2987 | dd sz_buf2d_get_pixel, buf_get_pixel |
- | 2988 | dd sz_buf2d_vox_brush_create, vox_brush_create |
|
- | 2989 | dd sz_buf2d_vox_brush_delete, vox_brush_delete |
|
2842 | dd 0,0 |
2990 | dd 0,0 |
2843 | sz_lib_init db 'lib_init',0 |
2991 | sz_lib_init db 'lib_init',0 |
2844 | sz_buf2d_create db 'buf2d_create',0 |
2992 | sz_buf2d_create db 'buf2d_create',0 |
2845 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
2993 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
2846 | sz_buf2d_clear db 'buf2d_clear',0 ;®ç¨á⪠¡ãä¥à 㪠§ ë¬ æ¢¥â®¬ |
2994 | sz_buf2d_clear db 'buf2d_clear',0 ;®ç¨á⪠¡ãä¥à 㪠§ ë¬ æ¢¥â®¬ |
Line 2865... | Line 3013... | ||
2865 | sz_buf2d_crop_color db 'buf2d_crop_color',0 |
3013 | sz_buf2d_crop_color db 'buf2d_crop_color',0 |
2866 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
3014 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
2867 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
3015 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
2868 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
3016 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
2869 | sz_buf2d_get_pixel db 'buf2d_get_pixel',01.;t+=.005){ |
3017 | sz_buf2d_get_pixel db 'buf2d_get_pixel',0 |
- | 3018 | sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
|
- | 3019 | sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',01.;t+=.005){ |