Rev 2367 | Rev 2422 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2367 | Rev 2383 | ||
---|---|---|---|
Line 2109... | Line 2109... | ||
2109 | mov edi,[buf_destination] |
2109 | mov edi,[buf_destination] |
2110 | cmp buf2d_bits,24 |
2110 | cmp buf2d_bits,24 |
2111 | jne .copy_end ;ä®à¬ â ¡ãä¥à ¥ ¯®®¤¥à¦¨¢ ¥âáï |
2111 | jne .copy_end ;ä®à¬ â ¡ãä¥à ¥ ¯®®¤¥à¦¨¢ ¥âáï |
2112 | mov ebx,buf2d_h ;ebx - ¢ëá®â ®á®¢®£® ¡ãä¥à |
2112 | mov ebx,buf2d_h ;ebx - ¢ëá®â ®á®¢®£® ¡ãä¥à |
2113 | mov ecx,[coord_y] |
2113 | mov ecx,[coord_y] |
- | 2114 | cmp ecx,0 |
|
- | 2115 | jge @f |
|
- | 2116 | ;¥á«¨ ª®®à¤¨ â coord_y<0 (1-ï áâனª ) |
|
- | 2117 | add edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨ |
|
- | 2118 | cmp edx,0 |
|
- | 2119 | jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥¨¥ 室¨âáï ¯®«®áâìî ¤ ¢¥à奩 £à ¨æ¥© ¡ãä¥à (coord_y<0 ¨ |coord_y|>buf_source.h) |
|
- | 2120 | neg ecx |
|
- | 2121 | ;inc ecx |
|
- | 2122 | imul ecx,eax |
|
- | 2123 | shl ecx,2 ;¯® 4 ¡¨â ¯¨ªá¥«ì |
|
- | 2124 | add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ ⥫ì á ª®¯¨à㥬묨 ¤ 묨, á ãç¥â®¬ ¯à®¯ã襮© ç á⨠|
|
- | 2125 | xor ecx,ecx ;®¡ã«ï¥¬ ª®®à¤¨ âã coord_y |
|
- | 2126 | @@: |
|
2114 | cmp ecx,ebx |
2127 | cmp ecx,ebx |
2115 | jge .copy_end ;¥á«¨ ª®®à¤¨ â 'y' ¡®«ìè¥ ¢ëá®âë ¡ãä¥à |
2128 | jge .copy_end ;¥á«¨ ª®®à¤¨ â 'y' ¡®«ìè¥ ¢ëá®âë ¡ãä¥à |
2116 | add ecx,edx ;ecx - ¨¦ïï ª®®à¤¨ â ª®¯¨à㥬®© ª à⨪¨ |
2129 | add ecx,edx ;ecx - ¨¦ïï ª®®à¤¨ â ª®¯¨à㥬®© ª à⨪¨ |
2117 | cmp ecx,ebx |
2130 | cmp ecx,ebx |
2118 | jle @f |
2131 | jle @f |
2119 | sub ecx,ebx |
2132 | sub ecx,ebx |
2120 | sub edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨, ¢ á«ãç¥ ª®£¤ ® ¢ë« §¨â § ¨¦îî £à ¨æã |
2133 | sub edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨, ¢ á«ãç¥ ª®£¤ ® ¢ë« §¨â § ¨¦îî £à ¨æã |
2121 | @@: |
2134 | @@: |
2122 | mov ebx,buf2d_w |
2135 | mov ebx,buf2d_w |
2123 | mov ecx,ebx ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥ëå 楫¥© |
2136 | mov ecx,ebx ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥ëå 楫¥© |
- | 2137 | cmp [coord_y],0 |
|
- | 2138 | jg .end_otr_c_y |
|
- | 2139 | ;¥á«¨ ª®®à¤¨ â coord_y<=0 (2-ï áâனª ) |
|
- | 2140 | mov ecx,[coord_x] |
|
- | 2141 | jmp @f |
|
- | 2142 | .end_otr_c_y: |
|
2124 | imul ecx,[coord_y] |
2143 | imul ecx,[coord_y] |
2125 | add ecx,[coord_x] |
2144 | add ecx,[coord_x] |
- | 2145 | @@: |
|
2126 | lea ecx,[ecx+ecx*2] |
2146 | lea ecx,[ecx+ecx*2] |
2127 | add ecx,buf2d_data |
2147 | add ecx,buf2d_data |
2128 | sub ebx,eax |
2148 | sub ebx,eax |
2129 | mov edi,ecx ;edi 㪠§ â¥«ì ¤ ë¥ ¡ãä¥à , ªã¤ ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ¨¥ |
2149 | mov edi,ecx ;edi 㪠§ â¥«ì ¤ ë¥ ¡ãä¥à , ªã¤ ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ¨¥ |
Line 2224... | Line 2244... | ||
2224 | ;äãªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥¨¥ ¨§ ¡ãä¥à buf_source (8b) ¢ buf_destination (24b) |
2244 | ;äãªæ¨ï ª®¯¨àã¥â ¨§®¡à ¦¥¨¥ ¨§ ¡ãä¥à buf_source (8b) ¢ buf_destination (24b) |
2225 | ; 㪠§ë¢ îâáï ª®®à¤¨ âë ¢áâ ¢ª¨ ¡ãä¥à buf_source ®â®á¨â¥«ì® buf_destination |
2245 | ; 㪠§ë¢ îâáï ª®®à¤¨ âë ¢áâ ¢ª¨ ¡ãä¥à buf_source ®â®á¨â¥«ì® buf_destination |
2226 | align 4 |
2246 | align 4 |
2227 | proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword, color:dword |
2247 | proc buf_bit_blt_alpha, buf_destination:dword, coord_x:dword, coord_y:dword, buf_source:dword, color:dword |
2228 | locals |
2248 | locals |
2229 | right_bytes dd ? |
- | |
- | 2249 | lost_bytes dd ? ;ç¨á«® ¯®â¥àïëå ¡ ©â®¢ ¢ áâப¥ ª®¯¨à㥬®£® ¨§®¡à ¦¥ï (â¥å çâ® ¥ ¢« §ïâ ¢ ¡ãä¥à) |
|
2230 | dest_w_bytes dd ? ;ª®««¨ç¥á⢮ ¡ ©â ¢ ¡ãä¥à¥ ¯à¨¥¬¨ª¥ ¯® è¨à¨¥ - è¨à¨ ¢áâ ¢«ï¥¬®© ª à⨪¨ |
2250 | dest_w_bytes dd ? ;ª®««¨ç¥á⢮ ¡ ©â ¢ ¡ãä¥à¥ ¯à¨¥¬¨ª¥ ¯® è¨à¨¥ - è¨à¨ ¢áâ ¢«ï¥¬®© ª à⨪¨ |
2231 | endl |
2251 | endl |
2232 | pushad |
2252 | pushad |
Line 2233... | Line 2253... | ||
2233 | 2253 | ||
2234 | mov edi,[buf_source] |
2254 | mov edi,[buf_source] |
2235 | cmp buf2d_bits,8 |
2255 | cmp buf2d_bits,8 |
2236 | jne .error1 ;ä®à¬ â ¡ãä¥à ¥ ¯®®¤¥à¦¨¢ ¥âáï |
2256 | jne .error1 ;ä®à¬ â ¡ãä¥à ¥ ¯®®¤¥à¦¨¢ ¥âáï |
2237 | mov eax,buf2d_w |
2257 | mov eax,buf2d_w ;è¨à¨ ª®¯¨à㥬®© ª à⨪¨ |
2238 | mov edx,buf2d_h ;¢ëá®â ª®¯¨à㥬®© ª à⨪¨ |
2258 | mov edx,buf2d_h ;¢ëá®â ª®¯¨à㥬®© ª à⨪¨ |
Line 2239... | Line 2259... | ||
2239 | mov esi,buf2d_data ;¤ ë¥ ª®¯¨à㥬®© ª à⨪¨ |
2259 | mov esi,buf2d_data ;¤ ë¥ ª®¯¨à㥬®© ª à⨪¨ |
2240 | 2260 | ||
Line 2248... | Line 2268... | ||
2248 | mov ecx,[coord_y] |
2268 | mov ecx,[coord_y] |
2249 | cmp ecx,0 |
2269 | cmp ecx,0 |
2250 | jge @f |
2270 | jge @f |
2251 | ;¥á«¨ ª®®à¤¨ â coord_y<0 (1-ï áâனª ) |
2271 | ;¥á«¨ ª®®à¤¨ â coord_y<0 (1-ï áâனª ) |
2252 | add edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨ |
2272 | add edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨ |
- | 2273 | cmp edx,0 |
|
- | 2274 | jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥¨¥ 室¨âáï ¯®«®áâìî ¤ ¢¥à奩 £à ¨æ¥© ¡ãä¥à (coord_y<0 ¨ |coord_y|>buf_source.h) |
|
2253 | neg ecx |
2275 | neg ecx |
2254 | ;inc ecx |
2276 | ;inc ecx |
2255 | imul ecx,eax |
2277 | imul ecx,eax |
2256 | add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ ⥫ì á ª®¯¨à㥬묨 ¤ 묨, á ãç¥â®¬ ¯à®¯ã襮© ç á⨠|
2278 | add esi,ecx ;ᤢ¨£ ¥¬ 㪠§ ⥫ì á ª®¯¨à㥬묨 ¤ 묨, á ãç¥â®¬ ¯à®¯ã襮© ç á⨠|
2257 | xor ecx,ecx ;®¡ã«ï¥¬ ª®®à¤¨ âã coord_y |
2279 | xor ecx,ecx ;®¡ã«ï¥¬ ª®®à¤¨ âã coord_y |
Line 2265... | Line 2287... | ||
2265 | sub edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨, ¢ á«ãç¥ ª®£¤ ® ¢ë« §¨â § ¨¦îî £à ¨æã |
2287 | sub edx,ecx ;㬥ìè ¥¬ ¢ëá®âã ª®¯¨à㥬®© ª à⨪¨, ¢ á«ãç¥ ª®£¤ ® ¢ë« §¨â § ¨¦îî £à ¨æã |
2266 | @@: |
2288 | @@: |
2267 | mov ebx,buf2d_w |
2289 | mov ebx,buf2d_w |
2268 | mov ecx,[coord_y] ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥ëå 楫¥© |
2290 | mov ecx,[coord_y] ;ecx ¨á¯®«ì§ã¥¬ ¤«ï ¢à¥¬¥ëå 楫¥© |
2269 | cmp ecx,0 |
2291 | cmp ecx,0 |
2270 | jge .end_otr_c_y |
2292 | jg .end_otr_c_y |
2271 | ;¥á«¨ ª®®à¤¨ â coord_y<0 (2-ï áâனª ) |
2293 | ;¥á«¨ ª®®à¤¨ â coord_y<=0 (2-ï áâனª ) |
2272 | mov ecx,[coord_x] |
2294 | mov ecx,[coord_x] |
2273 | jmp @f |
2295 | jmp @f |
2274 | .end_otr_c_y: |
2296 | .end_otr_c_y: |
2275 | imul ecx,ebx |
2297 | imul ecx,ebx |
2276 | add ecx,[coord_x] |
2298 | add ecx,[coord_x] |
2277 | @@: |
2299 | @@: |
2278 | lea ecx,[ecx+ecx*2] |
2300 | lea ecx,[ecx+ecx*2] |
2279 | add ecx,buf2d_data |
2301 | add ecx,buf2d_data ;buf2d_data ¤ ë¥ ®á®¢®£® ¡ãä¥à |
2280 | sub ebx,eax |
2302 | sub ebx,eax ;ebx - è¨à¨ ®á®¢®£® ¡ãä¥à ¬¨ãá è¨à¨ à¨á㥬®£® ¡ãä¥à |
2281 | mov edi,ecx ;edi 㪠§ â¥«ì ¤ ë¥ ¡ãä¥à , ªã¤ ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ¨¥ |
2303 | mov edi,ecx ;edi 㪠§ â¥«ì ¤ ë¥ ¡ãä¥à , ªã¤ ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ¨¥ |
Line 2282... | Line 2304... | ||
2282 | 2304 | ||
2283 | mov [right_bytes],0 |
2305 | mov dword[lost_bytes],0 |
- | 2306 | mov ecx,[coord_x] |
|
- | 2307 | cmp ecx,0 |
|
- | 2308 | jge @f |
|
- | 2309 | neg ecx |
|
- | 2310 | ;inc ecx |
|
- | 2311 | cmp eax,ecx ;eax - è¨à¨ ª®¯¨à㥬®© ª à⨪¨ |
|
- | 2312 | jle .copy_end ;¥á«¨ ª®¯¨à㥬®¥ ¨§®¡à ¦¥¨¥ 室¨âáï ¯®«®áâìî § «¥¢®© £à ¨æ¥© ¡ãä¥à (coord_x<0 ¨ |coord_x|>buf_source.w) |
|
- | 2313 | add [lost_bytes],ecx |
|
- | 2314 | sub eax,ecx ;㪮à 稢 ¥¬ ª®¯¨à㥬ãî áâபã |
|
- | 2315 | add ebx,ecx ;㤫¨ï¥¬ áâப㠤«ï ᤢ¨£ £« ¢®© ª à⨪¨ ¡ãä¥à |
|
- | 2316 | add esi,ecx |
|
- | 2317 | lea ecx,[ecx+ecx*2] |
|
- | 2318 | add edi,ecx ;edi 㪠§ â¥«ì ¤ ë¥ ¡ãä¥à , ªã¤ ¡ã¤¥â ¯à®¨§¢®¤¨âáï ª®¯¨à®¢ ¨¥ |
|
- | 2319 | xor ecx,ecx |
|
2284 | mov ecx,[coord_x] |
2320 | @@: |
2285 | cmp ecx,ebx |
2321 | cmp ecx,ebx |
2286 | jl @f |
2322 | jle @f |
2287 | sub ecx,ebx |
2323 | sub ecx,ebx |
2288 | sub eax,ecx ;㪮à 稢 ¥¬ ª®¯¨à㥬ãî áâபã |
2324 | sub eax,ecx ;㪮à 稢 ¥¬ ª®¯¨à㥬ãî áâபã |
2289 | add ebx,ecx ;㤫¨ï¥¬ áâப㠤«ï ᤢ¨£ £« ¢®© ª à⨪¨ ¡ãä¥à |
2325 | add ebx,ecx ;㤫¨ï¥¬ áâப㠤«ï ᤢ¨£ £« ¢®© ª à⨪¨ ¡ãä¥à |
2290 | ;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨪¨, ª®â®àë¥ ¢ë« §ïâ § ¯à ¢ãî áâ®à®ã |
2326 | ;ecx - ç¨á«® ¯¨ªá¥«¥© ¢ 1-© áâப¥ ª à⨪¨, ª®â®àë¥ ¢ë« §ïâ § ¯à ¢ãî áâ®à®ã |
2291 | mov [right_bytes],ecx |
2327 | add [lost_bytes],ecx |
Line 2292... | Line 2328... | ||
2292 | @@: |
2328 | @@: |
2293 | 2329 | ||
2294 | lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à ¬¨ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨪¨ |
2330 | lea ebx,[ebx+ebx*2] ;ª®««¨ç¥á⢮ ¡ ©â ¢ 1-© áâப¥ ¡ãä¥à ¬¨ãá ç¨á«® ¡ ©â ¢ 1-© áâப¥ ª®¯¨à㥬®© ª à⨪¨ |
Line 2295... | Line 2331... | ||
2295 | mov [dest_w_bytes],ebx |
2331 | mov [dest_w_bytes],ebx |
2296 | mov ebx,[color] |
2332 | mov ebx,[color] |
2297 | 2333 | ||
2298 | cld |
2334 | cld |
2299 | cmp [right_bytes],0 |
2335 | cmp dword[lost_bytes],0 |
2300 | jg .copy_1 |
2336 | jg .copy_1 |
2301 | .copy_0: ;¯à®á⮥ ª®¯¨à®¢ ¨¥ |
2337 | .copy_0: ;¯à®á⮥ ª®¯¨à®¢ ¨¥ |
Line 2308... | Line 2344... | ||
2308 | add edi,[dest_w_bytes] |
2344 | add edi,[dest_w_bytes] |
2309 | dec edx |
2345 | dec edx |
2310 | cmp edx,0 |
2346 | cmp edx,0 |
2311 | jg .copy_0 |
2347 | jg .copy_0 |
2312 | jmp .copy_end |
2348 | jmp .copy_end |
2313 | .copy_1: ;¥ ¯à®á⮥ ª®¯¨à®¢ ¨¥ (ª à⨪ ¢ë« §¨â § ¯à ¢ãî áâ®à®ã) |
2349 | .copy_1: ;¥ ¯à®á⮥ ª®¯¨à®¢ ¨¥ (ª à⨪ ¢ë« §¨â § «¥¢ãî ¨/¨«¨ ¯à ¢ãî áâ®à®ã) |
2314 | mov ecx,eax |
2350 | mov ecx,eax |
2315 | @@: |
2351 | @@: |
2316 | call combine_colors_2 |
2352 | call combine_colors_2 |
2317 | add edi,3 |
2353 | add edi,3 |
2318 | inc esi |
2354 | inc esi |
2319 | loop @b |
2355 | loop @b |
2320 | add edi,[dest_w_bytes] |
2356 | add edi,[dest_w_bytes] |
2321 | add esi,[right_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ § ¯à ¢ãî £à ¨æã |
2357 | add esi,[lost_bytes] ;¤®¡ ¢«ï¥¬ ¡ ©âë, ª®â®àë¥ ¢ë« §ïâ § ¯à ¢ãî £à ¨æã |
2322 | dec edx |
2358 | dec edx |
2323 | cmp edx,0 |
2359 | cmp edx,0 |
2324 | jg .copy_1 |
2360 | jg .copy_1 |
Line 2325... | Line 2361... | ||
2325 | 2361 |