Rev 2748 | Rev 2759 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2748 | Rev 2758 | ||
---|---|---|---|
Line 2908... | Line 2908... | ||
2908 | ret |
2908 | ret |
2909 | endp |
2909 | endp |
Line 2910... | Line 2910... | ||
2910 | 2910 | ||
2911 | ; |
2911 | ; |
2912 | align 4 |
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 |
2913 | proc vox_add, buf_v1:dword, buf_v2:dword, coord_x:dword, coord_y:dword, coord_z:dword |
2914 | pushad |
2914 | pushad |
2915 | mov eax,[coord_x] |
2915 | mov eax,[coord_x] |
2916 | mov ebx,[coord_y] |
2916 | mov ebx,[coord_y] |
2917 | mov edi,[buf_v2] |
2917 | mov edi,[buf_v2] |
Line 2950... | Line 2950... | ||
2950 | loop .cycle |
2950 | loop .cycle |
2951 | popad |
2951 | popad |
2952 | ret |
2952 | ret |
2953 | endp |
2953 | endp |
Line -... | Line 2954... | ||
- | 2954 | ||
- | 2955 | ;description: |
|
- | 2956 | ; ¢®§¢à è ¥â è¨à¨ã ¢®ªá¥«ì®£® ¨§®¡à ¦¥¨ï á 3-¬ï £à ﬨ |
|
- | 2957 | ; ¯à¨¨¬ ¥â 㪠§ â¥«ì ª¨áâì ¨ ¬ áèâ ¡ |
|
- | 2958 | align 4 |
|
- | 2959 | proc buf_vox_obj_get_img_w_3g uses ecx, h_br:dword,k_scale:dword |
|
- | 2960 | mov ecx,[h_br] |
|
- | 2961 | ||
- | 2962 | movzx eax,byte[ecx] |
|
- | 2963 | cmp dword[k_scale],1 |
|
- | 2964 | jl .end_c0 |
|
- | 2965 | mov ecx,[k_scale] |
|
- | 2966 | shl eax,cl |
|
- | 2967 | .end_c0: |
|
- | 2968 | ret |
|
- | 2969 | endp |
|
- | 2970 | ||
- | 2971 | ;description: |
|
- | 2972 | ; ¢®§¢à è ¥â ¢ëá®âã ¢®ªá¥«ì®£® ¨§®¡à ¦¥¨ï á 3-¬ï £à ﬨ |
|
- | 2973 | ; ¯à¨¨¬ ¥â 㪠§ â¥«ì ª¨áâì ¨ ¬ áèâ ¡ |
|
- | 2974 | align 4 |
|
- | 2975 | proc buf_vox_obj_get_img_h_3g uses ecx, h_br:dword,k_scale:dword |
|
- | 2976 | mov ecx,[h_br] |
|
- | 2977 | ||
- | 2978 | movzx eax,byte[ecx+1] |
|
- | 2979 | cmp dword[k_scale],1 |
|
- | 2980 | jl .end_c0 |
|
- | 2981 | mov ecx,[k_scale] |
|
- | 2982 | shl eax,cl |
|
- | 2983 | .end_c0: |
|
- | 2984 | ret |
|
- | 2985 | endp |
|
- | 2986 | ||
- | 2987 | ;description: |
|
- | 2988 | ; äãªæ¨ï à¨áãîé ï ¢®ªá¥«ìë© ®¡ê¥ªâ |
|
- | 2989 | ;input: |
|
- | 2990 | ; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
|
- | 2991 | ; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
|
- | 2992 | ; h_br - ª¨áâì á ¨§®¡à ¦¥¨ï¬¨ ¢®ªá¥«¥© (32 ¡¨â ) |
|
- | 2993 | ; v_obj - ¢®ªá¥«ìë© ®¡ê¥ªâ |
|
- | 2994 | ; k_scale - ª®íä. ¤«ï ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
- | 2995 | align 4 |
|
- | 2996 | proc buf_vox_obj_draw_3g, buf_i:dword, buf_z:dword, h_br:dword, v_obj:dword,\ |
|
- | 2997 | coord_x:dword, coord_y:dword, coord_z:dword, k_scale:dword |
|
- | 2998 | pushad |
|
- | 2999 | mov edi,[v_obj] |
|
- | 3000 | mov ecx,[k_scale] |
|
- | 3001 | mov ebx,[coord_x] |
|
- | 3002 | ||
- | 3003 | ;--- |
|
- | 3004 | ;â¥á⮢ ï à ¬ª |
|
- | 3005 | mov eax,[h_br] |
|
- | 3006 | ||
- | 3007 | movzx edx,byte[eax] |
|
- | 3008 | movzx esi,byte[eax+1] |
|
- | 3009 | cmp ecx,1 |
|
- | 3010 | jl .end_c0 |
|
- | 3011 | shl edx,cl |
|
- | 3012 | shl esi,cl |
|
- | 3013 | .end_c0: |
|
- | 3014 | stdcall buf_rect_by_size, [buf_i], ebx,[coord_y],edx,esi, 0xd0d0d0 |
|
- | 3015 | ;--- |
|
- | 3016 | ||
- | 3017 | mov edx,[coord_y] |
|
- | 3018 | add edi,vox_offs_data |
|
- | 3019 | ||
- | 3020 | mov esi,[coord_z] |
|
- | 3021 | stdcall vox_go_in_node, [buf_i], [buf_z], [h_br], [v_obj] |
|
- | 3022 | ||
- | 3023 | popad |
|
- | 3024 | ret |
|
- | 3025 | endp |
|
- | 3026 | ||
- | 3027 | ;description: |
|
- | 3028 | ; äãªæ¨ï à¨áãîé ï ç áâì ¢®ªá¥«ì®£® ®¡ê¥ªâ |
|
- | 3029 | ;input: |
|
- | 3030 | ; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
|
- | 3031 | ; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
|
- | 3032 | ; h_br - ª¨áâì á ¨§®¡à ¦¥¨ï¬¨ ¢®ªá¥«¥© (32 ¡¨â ) |
|
- | 3033 | ; v_obj - ¢®ªá¥«ìë© ®¡ê¥ªâ |
|
- | 3034 | ; k_scale - ª®íä. ¤«ï ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
- | 3035 | align 4 |
|
- | 3036 | proc buf_vox_obj_draw_3g_scaled, buf_i:dword, buf_z:dword, h_br:dword, v_obj:dword,\ |
|
- | 3037 | coord_x:dword, coord_y:dword, coord_z:dword, k_scale:dword,\ |
|
- | 3038 | s_c_x:dword, s_c_y:dword, s_c_z:dword, s_k_scale:dword,b_color:dword |
|
- | 3039 | pushad |
|
- | 3040 | locals |
|
- | 3041 | p_node dd 0 ;த¨â¥«ì᪨© 㧥« |
|
- | 3042 | endl |
|
- | 3043 | mov edi,[v_obj] |
|
- | 3044 | add edi,vox_offs_data |
|
- | 3045 | ||
- | 3046 | mov ecx,[k_scale] |
|
- | 3047 | mov ebx,[coord_x] |
|
- | 3048 | ||
- | 3049 | ;â¥á⮢ ï à ¬ª |
|
- | 3050 | mov eax,[h_br] |
|
- | 3051 | ||
- | 3052 | movzx edx,byte[eax] |
|
- | 3053 | movzx esi,byte[eax+1] |
|
- | 3054 | cmp ecx,1 |
|
- | 3055 | jl .end_c0 |
|
- | 3056 | shl edx,cl |
|
- | 3057 | shl esi,cl |
|
- | 3058 | .end_c0: |
|
- | 3059 | ;stdcall buf_rect_by_size, [buf_i], ebx,[coord_y],edx,esi, [b_color] |
|
- | 3060 | ||
- | 3061 | ;¢¥à⨪ «ì ï ¯®«®á |
|
- | 3062 | add ebx,edx |
|
- | 3063 | shr edx,cl |
|
- | 3064 | stdcall buf_rect_by_size, [buf_i], ebx,[coord_y],edx,esi, [b_color] |
|
- | 3065 | mov ecx,[s_k_scale] |
|
- | 3066 | shr esi,cl |
|
- | 3067 | xor eax,eax |
|
- | 3068 | inc eax |
|
- | 3069 | shl eax,cl |
|
- | 3070 | dec eax |
|
- | 3071 | sub eax,[s_c_z] ;§ ç¥¨ï ¯® ®á¨ z ¢®§à áâ îâ á ¨§ã ¢¢¥àå |
|
- | 3072 | imul eax,esi |
|
- | 3073 | add eax,[coord_y] |
|
- | 3074 | stdcall buf_filled_rect_by_size, [buf_i], ebx,eax,edx,esi, [b_color] |
|
- | 3075 | mov ebx,[coord_y] |
|
- | 3076 | shl esi,cl |
|
- | 3077 | add ebx,esi |
|
- | 3078 | stdcall buf_vox_obj_get_img_w_3g, [h_br],[k_scale] |
|
- | 3079 | shr eax,1 |
|
- | 3080 | mov esi,[h_br] |
|
- | 3081 | movzx esi,byte[esi+1] |
|
- | 3082 | ;¯®«§ã®ª |
|
- | 3083 | stdcall draw_polz_hor, [buf_i], [coord_x],ebx,eax,esi, [s_c_x], [s_k_scale], [b_color] |
|
- | 3084 | mov edx,[coord_x] |
|
- | 3085 | add edx,eax |
|
- | 3086 | ;¯®«§ã®ª |
|
- | 3087 | stdcall draw_polz_hor, [buf_i], edx,ebx,eax,esi, [s_c_y], [s_k_scale], [b_color] |
|
- | 3088 | ;--- |
|
- | 3089 | ||
- | 3090 | mov esi,[s_k_scale] |
|
- | 3091 | cmp esi,1 |
|
- | 3092 | jl .end_2 |
|
- | 3093 | ||
- | 3094 | ; *** (1) *** |
|
- | 3095 | .found: |
|
- | 3096 | stdcall vox_obj_get_node_position, [v_obj],[s_c_x],[s_c_y],[s_c_z],esi |
|
- | 3097 | movzx bx,byte[edi+3] |
|
- | 3098 | mov [p_node],edi |
|
- | 3099 | add edi,4 |
|
- | 3100 | cmp eax,0 |
|
- | 3101 | je .end_1 |
|
- | 3102 | mov ecx,eax |
|
- | 3103 | cld |
|
- | 3104 | @@: ;横« ¤«ï ¯à®¯ã᪠¯à¥¤ë¤ãé¨å ¯®¤¤¥à¥¢ì¥¢ ¢ 㧫¥ |
|
- | 3105 | bt bx,0 ;¯à®¢¥à塞 ¥áâì «¨ ¤®ç¥à¨¥ 㧫ë |
|
- | 3106 | jnc .end_0 |
|
- | 3107 | xor eax,eax |
|
- | 3108 | stdcall vox_obj_rec0 ;¢ eax ¢ëç¨á«ï¥âáï ç¨á«® ¤®ç¥à¨å 㧫®¢, ¢ ¤ ®© ¢¥â¢¨ |
|
- | 3109 | .end_0: |
|
- | 3110 | shr bx,1 |
|
- | 3111 | loop @b |
|
- | 3112 | .end_1: |
|
- | 3113 | bt bx,0 |
|
- | 3114 | jnc .end_2 ;¥á«¨ ¯®¤¤¥à¥¢ ¥ áãé¥áâ¢ã¥â |
|
- | 3115 | dec esi |
|
- | 3116 | cmp esi,0 |
|
- | 3117 | jg .found |
|
- | 3118 | ||
- | 3119 | ; *** (2) *** |
|
- | 3120 | ;à¨á®¢ ¨¥ ç á⨠®¡ê¥ªâ |
|
- | 3121 | mov ecx,[k_scale] |
|
- | 3122 | mov ebx,[coord_x] |
|
- | 3123 | mov edx,[coord_y] |
|
- | 3124 | mov esi,[coord_z] |
|
- | 3125 | stdcall vox_go_in_node, [buf_i], [buf_z], [h_br], [v_obj] |
|
- | 3126 | .end_2: |
|
- | 3127 | ||
- | 3128 | popad |
|
- | 3129 | ret |
|
- | 3130 | endp |
|
- | 3131 | ||
- | 3132 | ;input: |
|
- | 3133 | ; h_br - ª¨áâì á ¨§®¡à ¦¥¨ï¬¨ ¢®ªá¥«¥© (32 ¡¨â ) |
|
- | 3134 | ; ebx - coord_x |
|
- | 3135 | ; edx - coord_y |
|
- | 3136 | ; esi - coord_z |
|
- | 3137 | ; ecx - ã஢¥ì ⥪ã襣® 㧫 |
|
- | 3138 | ; edi - 㪠§ â¥«ì ¤ ë¥ ¢®ªá¥«ì®£® ®¡ê¥ªâ |
|
- | 3139 | align 4 |
|
- | 3140 | proc vox_go_in_node, buf_i:dword, buf_z:dword, h_br:dword, v_obj:dword |
|
- | 3141 | cmp byte[edi+3],0 ;ᬮâਬ ¥áâì «¨ ¯®¤¤¥à¥¢ìï |
|
- | 3142 | je .sub_trees |
|
- | 3143 | ;४ãàá¨¢ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢ |
|
- | 3144 | push eax edx |
|
- | 3145 | ||
- | 3146 | ;¯à®à¨á®¢ª à ¬ª¨ ¥á«¨ à §¬¥à 㧫 = 1 |
|
- | 3147 | cmp ecx,0 |
|
- | 3148 | jne .end_2 |
|
- | 3149 | push eax |
|
- | 3150 | stdcall vox_get_sub_brush,[h_br],0 ;®¯à¥¤¥«ï¥¬ ª¨áâì ¤«ï à¨á®¢ ¨ï |
|
- | 3151 | cmp eax,0 ;¥á«¨ ª¨áâì ¥ ©¤¥ |
|
- | 3152 | je @f |
|
- | 3153 | stdcall draw_vox, [buf_i], [buf_z], eax, ebx,edx,esi, [edi] |
|
- | 3154 | @@: |
|
- | 3155 | pop eax |
|
- | 3156 | .end_2: |
|
- | 3157 | ||
- | 3158 | ;¢å®¤ ¢ãâàì 㧫 |
|
- | 3159 | dec ecx |
|
- | 3160 | ;--- |
|
- | 3161 | push ebx |
|
- | 3162 | ;mov eax,(h-h_osn/2) |
|
- | 3163 | mov ebx,[h_br] |
|
- | 3164 | movzx eax,byte[ebx+1] |
|
- | 3165 | movzx ebx,byte[ebx+2] |
|
- | 3166 | shr ebx,1 |
|
- | 3167 | sub eax,ebx |
|
- | 3168 | cmp ecx,1 |
|
- | 3169 | jl .end_c1 |
|
- | 3170 | shl eax,cl |
|
- | 3171 | shl ebx,cl |
|
- | 3172 | .end_c1: |
|
- | 3173 | add esi,ebx |
|
- | 3174 | pop ebx |
|
- | 3175 | add edx,eax ;ª®à¥ªâ¨à®¢ª ¢ëá®âë ¯®¤ ¢®ªá¥«ì ¨¦¥£® ã஢ï |
|
- | 3176 | ;--- |
|
- | 3177 | mov ah,byte[edi+3] |
|
- | 3178 | add edi,4 |
|
- | 3179 | mov al,8 |
|
- | 3180 | .cycle: |
|
- | 3181 | bt ax,8 ;â¥áâ¨à㥬 ⮫쪮 ah |
|
- | 3182 | jnc .c_next |
|
- | 3183 | push ebx edx esi |
|
- | 3184 | stdcall vox_corect_coords, [h_br], [v_obj] |
|
- | 3185 | stdcall vox_go_in_node, [buf_i], [buf_z], [h_br], [v_obj] |
|
- | 3186 | pop esi edx ebx |
|
- | 3187 | .c_next: |
|
- | 3188 | shr ah,1 |
|
- | 3189 | dec al |
|
- | 3190 | jnz .cycle |
|
- | 3191 | ||
- | 3192 | ;¢ë室 ¨§ 㧫 |
|
- | 3193 | inc ecx |
|
- | 3194 | pop edx eax |
|
- | 3195 | ||
- | 3196 | jmp .end_f |
|
- | 3197 | .sub_trees: |
|
- | 3198 | ;à¨á㥬 㧥« |
|
- | 3199 | push eax |
|
- | 3200 | stdcall vox_get_sub_brush,[h_br],ecx ;®¯à¥¤¥«ï¥¬ ª¨áâì ¤«ï à¨á®¢ ¨ï |
|
- | 3201 | cmp eax,0 ;¥á«¨ ª¨áâì ¥ ©¤¥ |
|
- | 3202 | je @f |
|
- | 3203 | stdcall draw_vox, [buf_i], [buf_z], eax, ebx,edx,esi, [edi] |
|
- | 3204 | @@: |
|
- | 3205 | pop eax |
|
- | 3206 | ||
- | 3207 | add edi,4 |
|
- | 3208 | .end_f: |
|
- | 3209 | ret |
|
- | 3210 | endp |
|
- | 3211 | ||
- | 3212 | ;description: |
|
- | 3213 | ; äãªæ¨ï à¨áãîé ï ®¤¨®çë© ¢®ªá¥« |
|
- | 3214 | ;input: |
|
- | 3215 | ; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
|
- | 3216 | ; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
|
- | 3217 | ; buf_v - ¡ãä¥à á ¨§®¡à ¦¥¨¥¬ ¢®ªá¥«ï (32 ¡¨â ) |
|
- | 3218 | ; v_color - 梥â |
|
- | 3219 | align 4 |
|
- | 3220 | proc draw_vox, buf_i:dword, buf_z:dword, buf_v:dword,\ |
|
- | 3221 | coord_x:dword, coord_y:dword, coord_z:dword, v_color:dword |
|
- | 3222 | pushad |
|
- | 3223 | mov eax,[coord_x] |
|
- | 3224 | mov ebx,[coord_y] |
|
- | 3225 | mov edi,[buf_v] |
|
- | 3226 | mov ecx,buf2d_h |
|
- | 3227 | mov esi,buf2d_w |
|
- | 3228 | imul ecx,esi |
|
- | 3229 | add esi,eax |
|
- | 3230 | mov edx,buf2d_data |
|
- | 3231 | cld |
|
- | 3232 | ;ecx - count pixels in voxel |
|
- | 3233 | ;edx - 㪠§ â¥«ì ¤ ë¥ ¢ ¢®ªá¥«ì®¬ ¡ãä¥à¥ |
|
- | 3234 | ;edi - 㪠§ â¥«ì ¢®ªá¥«ìë© ¡ãä¥à |
|
- | 3235 | ;esi - width voxel buffer add coord x |
|
- | 3236 | .cycle: |
|
- | 3237 | cmp dword[edx],0 |
|
- | 3238 | je @f |
|
- | 3239 | ;¯à®¢¥à塞 ¡ãä¥à £«ã¡¨ë |
|
- | 3240 | push eax |
|
- | 3241 | stdcall buf_get_pixel, [buf_z],eax,ebx |
|
- | 3242 | sub eax,[coord_z] |
|
- | 3243 | cmp eax,[edx] |
|
- | 3244 | jl .dr_pixel |
|
- | 3245 | pop eax |
|
- | 3246 | jmp @f |
|
- | 3247 | .dr_pixel: |
|
- | 3248 | ;à¨á㥬 â®çªã |
|
- | 3249 | pop eax |
|
- | 3250 | stdcall buf_set_pixel, [buf_i],eax,ebx,[v_color] |
|
- | 3251 | push ecx |
|
- | 3252 | mov ecx,[coord_z] |
|
- | 3253 | add ecx,[edx] |
|
- | 3254 | stdcall buf_set_pixel, [buf_z],eax,ebx,ecx |
|
- | 3255 | pop ecx |
|
- | 3256 | @@: |
|
- | 3257 | add edx,4 |
|
- | 3258 | inc eax |
|
- | 3259 | cmp eax,esi |
|
- | 3260 | jl @f |
|
- | 3261 | inc ebx |
|
- | 3262 | sub eax,buf2d_w |
|
- | 3263 | @@: |
|
- | 3264 | loop .cycle |
|
- | 3265 | popad |
|
- | 3266 | ret |
|
- | 3267 | endp |
|
- | 3268 | ||
- | 3269 | ;description: |
|
- | 3270 | ;äãªæ¨ï ¤«ï ª®à¥ªâ¨à®¢ª¨ ª®®à¤¨ â |
|
- | 3271 | ; ¯à ¢«¥¨ï ®á¥© ª®®à¤¨ â ¢ ¢®ªá¥«¥: |
|
- | 3272 | ;*z |
|
- | 3273 | ;| |
|
- | 3274 | ;+ |
|
- | 3275 | ; * y |
|
- | 3276 | ; / |
|
- | 3277 | ;+ |
|
- | 3278 | ; \ |
|
- | 3279 | ; * x |
|
- | 3280 | ;input: |
|
- | 3281 | ; al - ®¬¥à 㧫 ¢ ¤¥à¥¢¥ (®â 1 ¤® 8) |
|
- | 3282 | ; ebx - ª®®à¤¨ â x |
|
- | 3283 | ; edx - ª®®à¤¨ â y |
|
- | 3284 | ; esi - ª®®à¤¨ â z |
|
- | 3285 | ; ecx - ã஢¥ì ⥪ã襣® 㧫 |
|
- | 3286 | ;output: |
|
- | 3287 | ; ebx - ®¢ ï ª®®à¤¨ â x |
|
- | 3288 | ; edx - ®¢ ï ª®®à¤¨ â y |
|
- | 3289 | ; esi - ®¢ ï ª®®à¤¨ â z |
|
- | 3290 | align 4 |
|
- | 3291 | proc vox_corect_coords, h_br:dword, v_obj:dword |
|
- | 3292 | locals |
|
- | 3293 | osn_w_2 dd ? ;è¨à¨ ®á®¢ ¨ï ¥¤¨¨ç®£® ¢®ªá¥«ï : 2 |
|
- | 3294 | vox_h dd ? ;¢ëá®â ¥¤¨¨ç®£® ¢®ªá¥«ï |
|
- | 3295 | endl |
|
- | 3296 | cmp ecx,0 |
|
- | 3297 | jl .end_f ;¤«ï ãáª®à¥¨ï ®âà¨á®¢ª¨ |
|
- | 3298 | ||
- | 3299 | push eax edi |
|
- | 3300 | and eax,15 ;¢ë¤¥«ï¥¬ ®¬¥à 㧫 ¢ ¤¥à¥¢¥ |
|
- | 3301 | mov edi,[v_obj] |
|
- | 3302 | add edi,vox_offs_tree_table |
|
- | 3303 | add edi,8 |
|
- | 3304 | sub edi,eax |
|
- | 3305 | ||
- | 3306 | push ebx ecx |
|
- | 3307 | mov ebx,[h_br] |
|
- | 3308 | ||
- | 3309 | movzx ecx,byte[ebx] |
|
- | 3310 | shr ecx,1 |
|
- | 3311 | mov dword[osn_w_2],ecx |
|
- | 3312 | ||
- | 3313 | movzx ecx,byte[ebx+2] |
|
- | 3314 | movzx ebx,byte[ebx+1] |
|
- | 3315 | sub ebx,ecx |
|
- | 3316 | mov dword[vox_h],ebx |
|
- | 3317 | shr ecx,1 |
|
- | 3318 | mov eax,ecx ;eax - ¢ëá®â ®á®¢ ¨ï ¥¤¨¨ç®£® ¢®ªá¥«ï : 2 |
|
- | 3319 | pop ecx ebx |
|
- | 3320 | ||
- | 3321 | cmp ecx,1 |
|
- | 3322 | jl .no_scale ;¢® ¨§¡¥¦ ¨¥ § 横«¨¢ ¨ï |
|
- | 3323 | shl eax,cl |
|
- | 3324 | shl dword[osn_w_2],cl |
|
- | 3325 | shl dword[vox_h],cl |
|
- | 3326 | .no_scale: |
|
- | 3327 | ||
- | 3328 | ; add esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z (ª®¬¯¥á æ¨ï ¤«ï ª®®à¤¨ âë y) |
|
- | 3329 | bt word[edi],0 ;test voxel coord x |
|
- | 3330 | jnc @f |
|
- | 3331 | add ebx,[osn_w_2] |
|
- | 3332 | add edx,eax |
|
- | 3333 | add esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z |
|
- | 3334 | @@: |
|
- | 3335 | bt word[edi],1 ;test voxel coord y |
|
- | 3336 | jnc @f |
|
- | 3337 | add ebx,[osn_w_2] |
|
- | 3338 | sub edx,eax |
|
- | 3339 | sub esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z |
|
- | 3340 | @@: |
|
- | 3341 | bt word[edi],2 ;test voxel coord z |
|
- | 3342 | jnc @f |
|
- | 3343 | sub edx,[vox_h] |
|
- | 3344 | @@: |
|
- | 3345 | pop edi eax |
|
- | 3346 | .end_f: |
|
- | 3347 | ret |
|
- | 3348 | endp |
|
- | 3349 | ||
- | 3350 | ;¨§¢«¥ª ¥¬ ¨§ h_br 㪠§ â¥«ì ¡ãä¥à á ¨§®¡à ¦¥¨¥¬ ¢®ªá¥«ï, 㪠§ ®£® ¯®à浪 n |
|
- | 3351 | align 4 |
|
- | 3352 | proc vox_get_sub_brush uses ebx ecx, h_br:dword, n:dword |
|
- | 3353 | xor eax,eax |
|
- | 3354 | mov ebx,[n] |
|
- | 3355 | cmp ebx,0 |
|
- | 3356 | jl @f |
|
- | 3357 | mov ecx,[h_br] |
|
- | 3358 | cmp bl,byte[ecx+3] |
|
- | 3359 | jg @f |
|
- | 3360 | add ecx,4 |
|
- | 3361 | imul ebx,BUF_STRUCT_SIZE |
|
- | 3362 | mov eax,ebx |
|
- | 3363 | add eax,ecx |
|
- | 3364 | @@: |
|
- | 3365 | ret |
|
- | 3366 | endp |
|
- | 3367 | ||
- | 3368 | ;description: |
|
- | 3369 | ; äãªæ¨ï à¨áãîé ï á१ ¢®ªá¥«ì®£® ®¡ì¥ªâ |
|
- | 3370 | ;input: |
|
- | 3371 | ; v_size - à §¬¥à ª¢ ¤à â á ¢®ªá¥«¥¬ |
|
- | 3372 | ; k_scale - á⥯¥ì ¤¥â «¨§ 樨 ¨§®¡à ¦¥¨ï |
|
- | 3373 | ; n_plane - ®¬¥à ¯«®áª®á⨠á¥ç¨ï (¢ ¯à¥¤¥« å ®â 0 ¤® 2^k_scale - 1) |
|
- | 3374 | ; b_color - æ¢¥â £à ¨æë |
|
- | 3375 | align 4 |
|
- | 3376 | proc buf_vox_obj_draw_pl, buf_i:dword, v_obj:dword, coord_x:dword,\ |
|
- | 3377 | coord_y:dword, v_size:dword, k_scale:dword, n_plane:dword, b_color:dword |
|
- | 3378 | cmp [k_scale],0 |
|
- | 3379 | jl .end_f |
|
- | 3380 | pushad |
|
- | 3381 | mov eax,[v_size] |
|
- | 3382 | mov ecx,[k_scale] |
|
- | 3383 | mov ebx,eax |
|
- | 3384 | cmp ecx,1 |
|
- | 3385 | jl @f |
|
- | 3386 | shl ebx,cl |
|
- | 3387 | @@: |
|
- | 3388 | ;ebx - ¯®«ë© à §¬¥à ¨§®¡à ¦¥¨ï |
|
- | 3389 | stdcall buf_rect_by_size, [buf_i], [coord_x],[coord_y],ebx,ebx, [b_color] ;à ¬ª à¨á㮪 |
|
- | 3390 | mov edx,ebx |
|
- | 3391 | add ebx,[coord_y] |
|
- | 3392 | stdcall draw_polz_hor, [buf_i], [coord_x],ebx,edx,eax, [n_plane], [k_scale], [b_color] ;¯®«§ã®ª, ¯®ª §ë¢ î騩 ®¬¥à á¥ç¥¨ï |
|
- | 3393 | ||
- | 3394 | ;à¨á®¢ ¨¥ â®ç¥ª ¤«ï á¥âª¨ |
|
- | 3395 | push ecx |
|
- | 3396 | mov edi,1 |
|
- | 3397 | cmp ecx,1 |
|
- | 3398 | jl @f |
|
- | 3399 | shl edi,cl |
|
- | 3400 | @@: |
|
- | 3401 | dec edi |
|
- | 3402 | cmp edi,1 |
|
- | 3403 | jl .end_0 |
|
- | 3404 | mov ecx,edi |
|
- | 3405 | imul ecx,edi |
|
- | 3406 | mov ebx,[coord_x] |
|
- | 3407 | mov edx,[coord_y] |
|
- | 3408 | add edx,eax |
|
- | 3409 | xor esi,esi |
|
- | 3410 | cld |
|
- | 3411 | @@: |
|
- | 3412 | add ebx,eax |
|
- | 3413 | inc esi |
|
- | 3414 | stdcall buf_set_pixel, [buf_i], ebx,edx, [b_color] |
|
- | 3415 | cmp esi,edi |
|
- | 3416 | jl .end_1 |
|
- | 3417 | ;¯¥à¥å®¤ â®ç¥ª ®¢ãî áâபã |
|
- | 3418 | xor esi,esi |
|
- | 3419 | mov ebx,[coord_x] |
|
- | 3420 | add edx,eax |
|
- | 3421 | .end_1: |
|
- | 3422 | loop @b |
|
- | 3423 | .end_0: |
|
- | 3424 | pop ecx |
|
- | 3425 | ||
- | 3426 | ;eax - à §¬¥à ®¤®£® ª¢ ¤à â |
|
- | 3427 | ;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
|
- | 3428 | mov ebx,[coord_x] |
|
- | 3429 | mov edx,[coord_y] |
|
- | 3430 | mov edi,[v_obj] |
|
- | 3431 | add edi,vox_offs_data |
|
- | 3432 | xor esi,esi |
|
- | 3433 | push eax |
|
- | 3434 | imul eax,[n_plane] |
|
- | 3435 | stdcall draw_sub_vox_obj_pl, [buf_i],[v_obj], eax |
|
- | 3436 | popad |
|
- | 3437 | .end_f: |
|
- | 3438 | ret |
|
- | 3439 | endp |
|
- | 3440 | ||
- | 3441 | ;description: |
|
- | 3442 | ; äãªæ¨ï à¨áãîé ï á१ ç á⨠¢®ªá¥«ì®£® ®¡ì¥ªâ |
|
- | 3443 | ;input: |
|
- | 3444 | ; s_c_x, s_c_y, s_c_z, s_k_scale - ¯ à ¬¥âàë ®¯à¥¤¥«ïî騥 ç áâì ¢®ªá¥«ì®£® ®¡ê¥ªâ , ª®â®à ï ¡ã¤¥â à¨á®¢ âìáï |
|
- | 3445 | align 4 |
|
- | 3446 | proc buf_vox_obj_draw_pl_scaled, buf_i:dword, v_obj:dword, coord_x:dword,\ |
|
- | 3447 | coord_y:dword, v_size:dword, k_scale:dword, n_plane:dword, b_color:dword,\ |
|
- | 3448 | s_c_x:dword, s_c_y:dword, s_c_z:dword, s_k_scale:dword |
|
- | 3449 | cmp [k_scale],0 |
|
- | 3450 | jl .end_f |
|
- | 3451 | pushad |
|
- | 3452 | locals |
|
- | 3453 | p_node dd 0 ;த¨â¥«ì᪨© 㧥« |
|
- | 3454 | endl |
|
- | 3455 | mov eax,[v_size] |
|
- | 3456 | mov ecx,[k_scale] |
|
- | 3457 | mov ebx,eax |
|
- | 3458 | cmp ecx,1 |
|
- | 3459 | jl @f |
|
- | 3460 | shl ebx,cl |
|
- | 3461 | @@: |
|
- | 3462 | ;ebx - ¯®«ë© à §¬¥à ¨§®¡à ¦¥¨ï |
|
- | 3463 | stdcall buf_rect_by_size, [buf_i], [coord_x],[coord_y],ebx,ebx, [b_color] ;à ¬ª à¨á㮪 |
|
- | 3464 | mov edx,ebx |
|
- | 3465 | add ebx,[coord_y] |
|
- | 3466 | stdcall draw_polz_hor, [buf_i], [coord_x],ebx,edx,eax, [n_plane], [k_scale], [b_color] ;¯®«§ã®ª, ¯®ª §ë¢ î騩 ®¬¥à á¥ç¥¨ï |
|
- | 3467 | ||
- | 3468 | ;à¨á®¢ ¨¥ â®ç¥ª ¤«ï á¥âª¨ |
|
- | 3469 | push ecx |
|
- | 3470 | mov edi,1 |
|
- | 3471 | cmp ecx,1 |
|
- | 3472 | jl @f |
|
- | 3473 | shl edi,cl |
|
- | 3474 | @@: |
|
- | 3475 | dec edi |
|
- | 3476 | cmp edi,1 |
|
- | 3477 | jl .end_3 |
|
- | 3478 | mov ecx,edi |
|
- | 3479 | imul ecx,edi |
|
- | 3480 | mov ebx,[coord_x] |
|
- | 3481 | mov edx,[coord_y] |
|
- | 3482 | add edx,eax |
|
- | 3483 | xor esi,esi |
|
- | 3484 | cld |
|
- | 3485 | @@: |
|
- | 3486 | add ebx,eax |
|
- | 3487 | inc esi |
|
- | 3488 | stdcall buf_set_pixel, [buf_i], ebx,edx, [b_color] |
|
- | 3489 | cmp esi,edi |
|
- | 3490 | jl .end_4 |
|
- | 3491 | ;¯¥à¥å®¤ â®ç¥ª ®¢ãî áâபã |
|
- | 3492 | xor esi,esi |
|
- | 3493 | mov ebx,[coord_x] |
|
- | 3494 | add edx,eax |
|
- | 3495 | .end_4: |
|
- | 3496 | loop @b |
|
- | 3497 | .end_3: |
|
- | 3498 | pop ecx |
|
- | 3499 | ||
- | 3500 | mov esi,[s_k_scale] |
|
- | 3501 | cmp esi,1 |
|
- | 3502 | jl .end_2 |
|
- | 3503 | mov edi,[v_obj] |
|
- | 3504 | add edi,vox_offs_data |
|
- | 3505 | ||
- | 3506 | ; *** (1) *** |
|
- | 3507 | .found: |
|
- | 3508 | stdcall vox_obj_get_node_position, [v_obj],[s_c_x],[s_c_y],[s_c_z],esi |
|
- | 3509 | movzx bx,byte[edi+3] |
|
- | 3510 | mov [p_node],edi |
|
- | 3511 | add edi,4 |
|
- | 3512 | cmp eax,0 |
|
- | 3513 | je .end_1 |
|
- | 3514 | mov ecx,eax |
|
- | 3515 | cld |
|
- | 3516 | @@: ;横« ¤«ï ¯à®¯ã᪠¯à¥¤ë¤ãé¨å ¯®¤¤¥à¥¢ì¥¢ ¢ 㧫¥ |
|
- | 3517 | bt bx,0 ;¯à®¢¥à塞 ¥áâì «¨ ¤®ç¥à¨¥ 㧫ë |
|
- | 3518 | jnc .end_0 |
|
- | 3519 | xor eax,eax |
|
- | 3520 | stdcall vox_obj_rec0 ;¢ eax ¢ëç¨á«ï¥âáï ç¨á«® ¤®ç¥à¨å 㧫®¢, ¢ ¤ ®© ¢¥â¢¨ |
|
- | 3521 | .end_0: |
|
- | 3522 | shr bx,1 |
|
- | 3523 | loop @b |
|
- | 3524 | .end_1: |
|
- | 3525 | bt bx,0 |
|
- | 3526 | jnc .end_2 ;¥á«¨ ¯®¤¤¥à¥¢ ¥ áãé¥áâ¢ã¥â |
|
- | 3527 | dec esi |
|
- | 3528 | cmp esi,0 |
|
- | 3529 | jg .found |
|
- | 3530 | ||
- | 3531 | mov eax,[v_size] |
|
- | 3532 | ;eax - à §¬¥à ®¤®£® ª¢ ¤à â |
|
- | 3533 | ;edi - 㪠§ ⥫ì à¨áã¥¬ë¥ ¤ ë¥ ¨§ ®¡ê¥ªâ |
|
- | 3534 | mov ecx,[k_scale] |
|
- | 3535 | mov ebx,[coord_x] |
|
- | 3536 | mov edx,[coord_y] |
|
- | 3537 | xor esi,esi |
|
- | 3538 | push eax |
|
- | 3539 | imul eax,[n_plane] |
|
- | 3540 | stdcall draw_sub_vox_obj_pl, [buf_i],[v_obj], eax |
|
- | 3541 | ||
- | 3542 | .end_2: |
|
- | 3543 | popad |
|
- | 3544 | .end_f: |
|
- | 3545 | ret |
|
- | 3546 | endp |
|
- | 3547 | ||
- | 3548 | ;description: |
|
- | 3549 | ; ®¯à¥¤¥«¥¨¥ ¯®§¨æ¨¨ 㧫 ¢ ¤¥à¥¢¥ (®â 0 ¤® 7) |
|
- | 3550 | align 4 |
|
- | 3551 | proc vox_obj_get_node_position uses ebx ecx edi, v_obj:dword,\ |
|
- | 3552 | coord_x:dword,coord_y:dword,coord_z:dword,k_scale:dword |
|
- | 3553 | mov ecx,[k_scale] |
|
- | 3554 | dec ecx |
|
- | 3555 | mov eax,[coord_x] |
|
- | 3556 | mov ebx,[coord_y] |
|
- | 3557 | mov edi,[coord_z] |
|
- | 3558 | cmp ecx,1 |
|
- | 3559 | jl .end_0 |
|
- | 3560 | shr eax,cl |
|
- | 3561 | shr ebx,cl |
|
- | 3562 | shr edi,cl |
|
- | 3563 | .end_0: |
|
- | 3564 | and eax,1 |
|
- | 3565 | bt ebx,0 |
|
- | 3566 | jnc @f |
|
- | 3567 | bts eax,1 |
|
- | 3568 | @@: |
|
- | 3569 | bt edi,0 |
|
- | 3570 | jnc @f |
|
- | 3571 | bts eax,2 |
|
- | 3572 | @@: |
|
- | 3573 | ||
- | 3574 | mov edi,[v_obj] |
|
- | 3575 | add edi,vox_offs_tree_table |
|
- | 3576 | @@: |
|
- | 3577 | cmp al,byte[edi] |
|
- | 3578 | je @f |
|
- | 3579 | inc edi |
|
- | 3580 | jmp @b |
|
- | 3581 | @@: |
|
- | 3582 | sub edi,[v_obj] |
|
- | 3583 | sub edi,vox_offs_tree_table |
|
- | 3584 | mov eax,edi |
|
- | 3585 | ||
- | 3586 | ret |
|
- | 3587 | endp |
|
- | 3588 | ||
- | 3589 | ;input: |
|
- | 3590 | ; edi - 㪠§ â¥«ì ¤ ë¥ ¢®ªá¥«ì®£® ®¡ê¥ªâ |
|
- | 3591 | ;output: |
|
- | 3592 | ; eax - eax + ç¨á«® 㧫®¢ ¢ ¤ ëå ¢®ªá. ®¡ê¥ªâ |
|
- | 3593 | ; edi - 㪠§ ⥫ì ᬥé¥ë¥ ¤ ë¥ ¢®ªá. ®¡ê¥ªâ |
|
- | 3594 | align 4 |
|
- | 3595 | proc vox_obj_rec0 |
|
- | 3596 | inc eax |
|
- | 3597 | cmp byte[edi+3],0 ;ᬮâਬ ¥áâì «¨ ¯®¤¤¥à¥¢ìï |
|
- | 3598 | je .sub_trees |
|
- | 3599 | ||
- | 3600 | ;४ãàá¨¢ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢ |
|
- | 3601 | push ebx ecx |
|
- | 3602 | mov bh,byte[edi+3] |
|
- | 3603 | add edi,4 |
|
- | 3604 | mov bl,8 |
|
- | 3605 | .cycle: |
|
- | 3606 | bt bx,8 ;â¥áâ¨à㥬 ⮫쪮 bh |
|
- | 3607 | jnc .c_next |
|
- | 3608 | stdcall vox_obj_rec0 |
|
- | 3609 | .c_next: |
|
- | 3610 | shr bh,1 |
|
- | 3611 | dec bl |
|
- | 3612 | jnz .cycle |
|
- | 3613 | pop ecx ebx |
|
- | 3614 | ||
- | 3615 | jmp .end_f |
|
- | 3616 | .sub_trees: |
|
- | 3617 | add edi,4 |
|
- | 3618 | .end_f: |
|
- | 3619 | ret |
|
- | 3620 | endp |
|
- | 3621 | ||
- | 3622 | ;description: |
|
- | 3623 | ; äãªæ¨ï à¨áãîé ï £®à¨§®â «ìãî ¯®«®áã á ¯®«§ãª®¬ |
|
- | 3624 | align 4 |
|
- | 3625 | proc draw_polz_hor uses eax ebx ecx, buf:dword, coord_x:dword, coord_y:dword,\ |
|
- | 3626 | size_x:dword, size_y:dword, pos:dword, k_scale:dword, color:dword |
|
- | 3627 | mov ebx,[size_x] |
|
- | 3628 | stdcall buf_rect_by_size, [buf], [coord_x],[coord_y],ebx,[size_y], [color] |
|
- | 3629 | mov ecx,[k_scale] |
|
- | 3630 | shr ebx,cl |
|
- | 3631 | mov eax,[pos] |
|
- | 3632 | imul eax,ebx |
|
- | 3633 | add eax,[coord_x] |
|
- | 3634 | stdcall buf_filled_rect_by_size, [buf], eax,[coord_y],ebx,[size_y], [color] |
|
- | 3635 | ret |
|
- | 3636 | endp |
|
- | 3637 | ||
- | 3638 | ;input: |
|
- | 3639 | ; ebx - coord_x |
|
- | 3640 | ; edx - coord_y |
|
- | 3641 | ; esi - coord_z |
|
- | 3642 | ; ecx - ã஢¥ì ⥪ã襣® 㧫 |
|
- | 3643 | ; edi - 㪠§ â¥«ì ¤ ë¥ ¢®ªá¥«ì®£® ®¡ê¥ªâ |
|
- | 3644 | align 4 |
|
- | 3645 | proc draw_sub_vox_obj_pl, buf_i:dword, v_obj:dword, clip_z:dword,\ |
|
- | 3646 | v_size:dword |
|
- | 3647 | cmp byte[edi+3],0 ;ᬮâਬ ¥áâì «¨ ¯®¤¤¥à¥¢ìï |
|
- | 3648 | je .sub_trees |
|
- | 3649 | ||
- | 3650 | ;¯à®à¨á®¢ª à ¬ª¨ ¥á«¨ à §¬¥à 㧫 = 1 |
|
- | 3651 | cmp ecx,0 |
|
- | 3652 | jne @f |
|
- | 3653 | ;¯à®¢¥àª £«ã¡¨ë esi |
|
- | 3654 | ;clip_z=n_plane*v_size |
|
- | 3655 | stdcall vox_is_clip, [clip_z],[v_size] |
|
- | 3656 | cmp eax,0 |
|
- | 3657 | je @f |
|
- | 3658 | push ecx |
|
- | 3659 | mov ecx,dword[edi] |
|
- | 3660 | and ecx,0xffffff |
|
- | 3661 | stdcall buf_rect_by_size, [buf_i], ebx,edx, [v_size],[v_size],ecx |
|
- | 3662 | pop ecx |
|
- | 3663 | @@: |
|
- | 3664 | ||
- | 3665 | ;४ãàá¨¢ë© ¯¥à¥¡®à ¯®¤¤¥à¥¢ì¥¢ |
|
- | 3666 | push edx |
|
- | 3667 | ||
- | 3668 | ;¢å®¤ ¢ãâàì 㧫 |
|
- | 3669 | dec ecx |
|
- | 3670 | ||
- | 3671 | mov eax,[v_size] |
|
- | 3672 | cmp ecx,1 |
|
- | 3673 | jl @f |
|
- | 3674 | shl eax,cl |
|
- | 3675 | @@: |
|
- | 3676 | add edx,eax ;ª®à¥ªâ¨à®¢ª ¢ëá®âë ¯®¤ ¢®ªá¥«ì ¨¦¥£® ã஢ï |
|
- | 3677 | ||
- | 3678 | mov ah,byte[edi+3] |
|
- | 3679 | add edi,4 |
|
- | 3680 | mov al,8 |
|
- | 3681 | .cycle: |
|
- | 3682 | bt ax,8 ;â¥áâ¨à㥬 ⮫쪮 ah |
|
- | 3683 | jnc .c_next |
|
- | 3684 | push eax ebx edx esi |
|
- | 3685 | stdcall vox_corect_coords_pl, [v_obj],[v_size] |
|
- | 3686 | stdcall draw_sub_vox_obj_pl, [buf_i],[v_obj],[clip_z],[v_size] |
|
- | 3687 | pop esi edx ebx eax |
|
- | 3688 | .c_next: |
|
- | 3689 | shr ah,1 |
|
- | 3690 | dec al |
|
- | 3691 | jnz .cycle |
|
- | 3692 | ||
- | 3693 | ;¢ë室 ¨§ 㧫 |
|
- | 3694 | inc ecx |
|
- | 3695 | pop edx |
|
- | 3696 | ||
- | 3697 | jmp .end_f |
|
- | 3698 | .sub_trees: |
|
- | 3699 | cmp ecx,0 |
|
- | 3700 | jl .end_0 ;¥ à¨á㥬 ®ç¥ì ¬ «¥ìª¨¥ ¢®ªá¥«¨ |
|
- | 3701 | ||
- | 3702 | ;¯à®¢¥àª £«ã¡¨ë esi |
|
- | 3703 | ;clip_z=n_plane*v_size |
|
- | 3704 | stdcall vox_is_clip, [clip_z],[v_size] |
|
- | 3705 | cmp eax,0 |
|
- | 3706 | je .end_0 |
|
- | 3707 | ||
- | 3708 | ;à¨á㥬 㧥« |
|
- | 3709 | mov eax,[edi] |
|
- | 3710 | and eax,0xffffff |
|
- | 3711 | push eax ;梥â 㧫 |
|
- | 3712 | ||
- | 3713 | mov eax,[v_size] |
|
- | 3714 | cmp ecx,1 |
|
- | 3715 | jl @f |
|
- | 3716 | ;ª¢ ¤à â ¡®«ìè¥ â¥ªã饣® ¬ áèâ ¡ |
|
- | 3717 | shl eax,cl ;à §¬¥à 㧫 |
|
- | 3718 | stdcall buf_filled_rect_by_size, [buf_i], ebx,edx, eax,eax |
|
- | 3719 | push ebx edx esi |
|
- | 3720 | mov esi,eax |
|
- | 3721 | inc ebx |
|
- | 3722 | inc edx |
|
- | 3723 | sub esi,2 |
|
- | 3724 | mov eax,[buf_i] |
|
- | 3725 | push dword 128 |
|
- | 3726 | push dword[eax+16] ;+16 - b_color |
|
- | 3727 | stdcall combine_colors_3,[edi] |
|
- | 3728 | stdcall buf_rect_by_size, [buf_i], ebx,edx, esi,esi,eax |
|
- | 3729 | pop esi edx ebx |
|
- | 3730 | jmp .end_0 |
|
- | 3731 | @@: |
|
- | 3732 | ;ª¢ ¤à â ⥪ã饣® ¬ áèâ ¡ |
|
- | 3733 | stdcall buf_filled_rect_by_size, [buf_i], ebx,edx, eax,eax |
|
- | 3734 | ||
- | 3735 | .end_0: |
|
- | 3736 | add edi,4 |
|
- | 3737 | .end_f: |
|
- | 3738 | ret |
|
- | 3739 | endp |
|
- | 3740 | ||
- | 3741 | ;description: |
|
- | 3742 | ; ¢á¯®¬®£ ⥫ì ï äãªæ¨ï ¤«ï ¯à®¢¥àª¨ £«ã¡¨ë esi |
|
- | 3743 | ;input: |
|
- | 3744 | ; ecx - ã஢¥ì ⥪ã襣® 㧫 |
|
- | 3745 | ; esi - coord z |
|
- | 3746 | ; clip_z - n_plane*v_size |
|
- | 3747 | ;output: |
|
- | 3748 | ; eax - 0 if no draw, 1 if draw |
|
- | 3749 | align 4 |
|
- | 3750 | proc vox_is_clip uses ebx edi, clip_z:dword, v_size:dword |
|
- | 3751 | xor eax,eax |
|
- | 3752 | mov ebx,[clip_z] |
|
- | 3753 | mov edi,[v_size] |
|
- | 3754 | cmp ecx,1 |
|
- | 3755 | jl @f |
|
- | 3756 | shl edi,cl |
|
- | 3757 | @@: |
|
- | 3758 | ;edi = 2^ecx |
|
- | 3759 | add edi,esi |
|
- | 3760 | cmp edi,ebx ;if (esi+2^ecx*v_size <= (n_plane*v_size)) no draw |
|
- | 3761 | jle @f |
|
- | 3762 | add ebx,[v_size] |
|
- | 3763 | cmp esi,ebx ;if (esi >= (n_plane+1)*v_size) no draw |
|
- | 3764 | jge @f |
|
- | 3765 | inc eax |
|
- | 3766 | @@: |
|
- | 3767 | ret |
|
- | 3768 | endp |
|
- | 3769 | ||
- | 3770 | ;äãªæ¨ï ¤«ï ª®à¥ªâ¨à®¢ª¨ ª®®à¤¨ â |
|
- | 3771 | ; ¯à ¢«¥¨ï ®á¥© ª®®à¤¨ â ¢ ¢®ªá¥«¥: |
|
- | 3772 | ;*z |
|
- | 3773 | ;| |
|
- | 3774 | ;+-* x |
|
- | 3775 | ;input: |
|
- | 3776 | ; al - ®¬¥à 㧫 ¢ ¤¥à¥¢¥ (®â 1 ¤® 8) |
|
- | 3777 | ; ebx - ª®®à¤¨ â x |
|
- | 3778 | ; edx - ª®®à¤¨ â y |
|
- | 3779 | ; esi - ª®®à¤¨ â z |
|
- | 3780 | ; ecx - ã஢¥ì ⥪ã襣® 㧫 |
|
- | 3781 | ;output: |
|
- | 3782 | ; ebx - ®¢ ï ª®®à¤¨ â x |
|
- | 3783 | ; edx - ®¢ ï ª®®à¤¨ â y |
|
- | 3784 | ; esi - ®¢ ï ª®®à¤¨ â z |
|
- | 3785 | align 4 |
|
- | 3786 | proc vox_corect_coords_pl, v_obj:dword, v_size:dword |
|
- | 3787 | cmp ecx,0 |
|
- | 3788 | jl .end_f ;¤«ï ãáª®à¥¨ï ®âà¨á®¢ª¨ |
|
- | 3789 | ||
- | 3790 | push eax edi |
|
- | 3791 | and eax,15 ;¢ë¤¥«ï¥¬ ®¬¥à 㧫 ¢ ¤¥à¥¢¥ |
|
- | 3792 | mov edi,[v_obj] |
|
- | 3793 | add edi,vox_offs_tree_table |
|
- | 3794 | add edi,8 |
|
- | 3795 | sub edi,eax |
|
- | 3796 | ||
- | 3797 | mov eax,[v_size] ;eax - ¢ëá®â ®á®¢ ¨ï ¥¤¨¨ç®£® ¢®ªá¥«ï |
|
- | 3798 | cmp ecx,1 |
|
- | 3799 | jl @f ;¢® ¨§¡¥¦ ¨¥ § 横«¨¢ ¨ï |
|
- | 3800 | shl eax,cl |
|
- | 3801 | @@: |
|
- | 3802 | ||
- | 3803 | bt word[edi],0 ;test voxel coord x |
|
- | 3804 | jnc @f |
|
- | 3805 | add ebx,eax |
|
- | 3806 | @@: |
|
- | 3807 | bt word[edi],1 ;test voxel coord y |
|
- | 3808 | jnc @f |
|
- | 3809 | add esi,eax ;¬¥ï¥¬ £«ã¡¨ã ¤«ï ¡ãä¥à z |
|
- | 3810 | @@: |
|
- | 3811 | bt word[edi],2 ;test voxel coord z |
|
- | 3812 | jnc @f |
|
- | 3813 | sub edx,eax |
|
- | 3814 | @@: |
|
- | 3815 | pop edi eax |
|
- | 3816 | .end_f: |
|
- | 3817 | ret |
|
- | 3818 | endp |
|
- | 3819 | ||
- | 3820 | ;description: |
|
- | 3821 | ; äãªæ¨ï à¨áãîé ï ⥨ |
|
- | 3822 | ;input: |
|
- | 3823 | ; buf_i - ¡ãä¥à ¢ ª®â®à®¬ à¨áã¥âáï (24 ¡¨â ) |
|
- | 3824 | ; buf_z - ¡ãä¥à £«ã¡¨ë (32 ¡¨â ¯® ç¨á«ã ¯¨ªá¥«¥© ¤®«¦¥ ᮢ¯ ¤ âì á buf_i) |
|
- | 3825 | ; h_br - ª¨áâì á ¨§®¡à ¦¥¨ï¬¨ ¢®ªá¥«¥© (32 ¡¨â ) |
|
- | 3826 | ; k_scale - ª®íä. ¤«ï ¬ áèâ ¡¨à®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
- | 3827 | align 4 |
|
- | 3828 | proc buf_vox_obj_draw_3g_shadows, buf_i:dword, buf_z:dword, h_br:dword, \ |
|
- | 3829 | coord_x:dword, coord_y:dword, color:dword, k_scale:dword, prop:dword |
|
- | 3830 | locals |
|
- | 3831 | correct_z dd 0 ;ª®à¥ªâ¨à®¢ª ¤«ï ¡ãä¥à £«ã¡¨ë |
|
- | 3832 | endl |
|
- | 3833 | pushad |
|
- | 3834 | mov eax,[k_scale] |
|
- | 3835 | add eax,[prop] |
|
- | 3836 | mov dword[correct_z],8 |
|
- | 3837 | sub [correct_z],eax |
|
- | 3838 | mov ebx,[coord_x] |
|
- | 3839 | ;correct_z = 8-k_scale-prop |
|
- | 3840 | ||
- | 3841 | stdcall buf_vox_obj_get_img_w_3g, [h_br],[k_scale] |
|
- | 3842 | mov edx,eax ;edx - è¨à¨ ¨§®¡à ¦¥¨ï |
|
- | 3843 | stdcall buf_vox_obj_get_img_h_3g, [h_br],[k_scale] |
|
- | 3844 | mov esi,eax |
|
- | 3845 | ||
- | 3846 | mov edi,[coord_y] |
|
- | 3847 | mov ecx,edx |
|
- | 3848 | add edx,ebx ;è¨à¨ + ®âáâ㯠᫥¢ |
|
- | 3849 | imul ecx,esi |
|
- | 3850 | cld |
|
- | 3851 | .cycle_0: |
|
- | 3852 | stdcall buf_get_pixel, [buf_z],ebx,edi |
|
- | 3853 | cmp eax,0 |
|
- | 3854 | je @f |
|
- | 3855 | stdcall vox_correct_z, [correct_z] |
|
- | 3856 | push eax |
|
- | 3857 | stdcall buf_get_pixel, [buf_i],ebx,edi |
|
- | 3858 | stdcall combine_colors_3,eax,[color] ;,eax |
|
- | 3859 | stdcall buf_set_pixel, [buf_i],ebx,edi,eax |
|
- | 3860 | @@: |
|
- | 3861 | inc ebx |
|
- | 3862 | cmp ebx,edx |
|
- | 3863 | jl @f |
|
- | 3864 | mov ebx,[coord_x] |
|
- | 3865 | inc edi |
|
- | 3866 | @@: |
|
- | 3867 | loop .cycle_0 |
|
- | 3868 | ||
- | 3869 | popad |
|
- | 3870 | ret |
|
- | 3871 | endp |
|
- | 3872 | ||
- | 3873 | ;output: |
|
- | 3874 | ; eax - scaled coord z |
|
- | 3875 | align 4 |
|
- | 3876 | proc vox_correct_z uses ecx, correct_z:dword |
|
- | 3877 | mov ecx,[correct_z] |
|
- | 3878 | cmp ecx,0 |
|
- | 3879 | je .end_f |
|
- | 3880 | jl .end_0 |
|
- | 3881 | shl eax,cl |
|
- | 3882 | jmp .end_f |
|
- | 3883 | .end_0: |
|
- | 3884 | neg ecx |
|
- | 3885 | inc ecx |
|
- | 3886 | shr eax,cl |
|
- | 3887 | .end_f: |
|
- | 3888 | ret |
|
- | 3889 | endp |
|
- | 3890 | ||
- | 3891 | ;output: |
|
- | 3892 | ; eax - color |
|
- | 3893 | align 4 |
|
- | 3894 | proc combine_colors_3 uses ebx ecx edx edi esi, col_0:dword, col_1:dword, alpha:dword |
|
- | 3895 | ||
- | 3896 | mov ebx,[col_0] |
|
- | 3897 | mov ecx,[col_1] |
|
- | 3898 | movzx di,byte[alpha] ;pro |
|
- | 3899 | mov si,0x00ff ;---get transparent--- |
|
- | 3900 | sub si,di ;256-pro |
|
- | 3901 | ||
- | 3902 | ;---blye--- |
|
- | 3903 | movzx ax,bl |
|
- | 3904 | imul ax,si |
|
- | 3905 | movzx dx,cl |
|
- | 3906 | imul dx,di |
|
- | 3907 | add ax,dx |
|
- | 3908 | mov cl,ah |
|
- | 3909 | ;---green--- |
|
- | 3910 | movzx ax,bh |
|
- | 3911 | imul ax,si |
|
- | 3912 | movzx dx,ch |
|
- | 3913 | imul dx,di |
|
- | 3914 | add ax,dx |
|
- | 3915 | mov ch,ah |
|
- | 3916 | shr ebx,16 |
|
- | 3917 | ror ecx,16 |
|
- | 3918 | ;---red--- |
|
- | 3919 | movzx ax,bl |
|
- | 3920 | imul ax,si |
|
- | 3921 | movzx dx,cl |
|
- | 3922 | imul dx,di |
|
- | 3923 | add ax,dx |
|
- | 3924 | ||
- | 3925 | shl eax,8 |
|
- | 3926 | ror ecx,16 |
|
- | 3927 | mov ax,cx |
|
- | 3928 | and eax,0xffffff |
|
- | 3929 | ||
- | 3930 | ret |
|
- | 3931 | endp |
|
2954 | 3932 | ||
2955 | txt_err_n8b db 'need buffer 8 bit',13,10,0 |
3933 | txt_err_n8b db 'need buffer 8 bit',13,10,0 |
2956 | txt_err_n24b db 'need buffer 24 bit',13,10,0 |
3934 | txt_err_n24b db 'need buffer 24 bit',13,10,0 |
Line 2957... | Line 3935... | ||
2957 | txt_err_n8_24b db 'need buffer 8 or 24 bit',13,10,0 |
3935 | txt_err_n8_24b db 'need buffer 8 or 24 bit',13,10,0 |
Line 2985... | Line 3963... | ||
2985 | dd sz_buf2d_flood_fill, buf_flood_fill |
3963 | dd sz_buf2d_flood_fill, buf_flood_fill |
2986 | dd sz_buf2d_set_pixel, buf_set_pixel |
3964 | dd sz_buf2d_set_pixel, buf_set_pixel |
2987 | dd sz_buf2d_get_pixel, buf_get_pixel |
3965 | dd sz_buf2d_get_pixel, buf_get_pixel |
2988 | dd sz_buf2d_vox_brush_create, vox_brush_create |
3966 | dd sz_buf2d_vox_brush_create, vox_brush_create |
2989 | dd sz_buf2d_vox_brush_delete, vox_brush_delete |
3967 | dd sz_buf2d_vox_brush_delete, vox_brush_delete |
- | 3968 | dd sz_buf2d_vox_obj_get_img_w_3g, buf_vox_obj_get_img_w_3g |
|
- | 3969 | dd sz_buf2d_vox_obj_get_img_h_3g, buf_vox_obj_get_img_h_3g |
|
- | 3970 | dd sz_buf2d_vox_obj_draw_3g, buf_vox_obj_draw_3g |
|
- | 3971 | dd sz_buf2d_vox_obj_draw_3g_scaled, buf_vox_obj_draw_3g_scaled |
|
- | 3972 | dd sz_buf2d_vox_obj_draw_pl, buf_vox_obj_draw_pl |
|
- | 3973 | dd sz_buf2d_vox_obj_draw_pl_scaled, buf_vox_obj_draw_pl_scaled |
|
- | 3974 | dd sz_buf2d_vox_obj_draw_3g_shadows, buf_vox_obj_draw_3g_shadows |
|
2990 | dd 0,0 |
3975 | dd 0,0 |
2991 | sz_lib_init db 'lib_init',0 |
3976 | sz_lib_init db 'lib_init',0 |
2992 | sz_buf2d_create db 'buf2d_create',0 |
3977 | sz_buf2d_create db 'buf2d_create',0 |
2993 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
3978 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
2994 | sz_buf2d_clear db 'buf2d_clear',0 ;®ç¨á⪠¡ãä¥à 㪠§ ë¬ æ¢¥â®¬ |
3979 | sz_buf2d_clear db 'buf2d_clear',0 ;®ç¨á⪠¡ãä¥à 㪠§ ë¬ æ¢¥â®¬ |
Line 3015... | Line 4000... | ||
3015 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
4000 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
3016 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
4001 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
3017 | sz_buf2d_get_pixel db 'buf2d_get_pixel',0 |
4002 | sz_buf2d_get_pixel db 'buf2d_get_pixel',0 |
3018 | sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
4003 | 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){ |
4004 | sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
- | 4005 | sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
|
- | 4006 | sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
|
- | 4007 | sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
|
- | 4008 | sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0 |
|
- | 4009 | sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0 |
|
- | 4010 | sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0 |
|
- | 4011 | sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0=>1.;t+=.005){ |