1,12 → 1,21 |
;----------------------------------------------------------- |
;------------------SaveFonForSprite------------------------- |
;SaveFonForSprite: |
; PointerToPicture -> PointerToSpriteBufer |
; |
;PutFonForSprite: |
; PointerToSpriteBufer -> PointerToPicture |
; |
;DrawSprite: |
; PointerToEditBufer -> PointerToPicture |
;----------------------------------------------------------- |
|
align 4 |
SaveFonForSprite: |
|
mov edi,[PointerToSpriteBufer] |
mov ecx,[SpriteSizeX] |
or ecx,ecx |
jz .end_f |
mov edx,[Picture_SizeX] |
sub edx,[SpriteSizeX] |
sub edx,ecx |
mov esi,[SpriteCoordinatY] |
imul esi,[Picture_SizeX] |
add esi,[SpriteCoordinatX] |
13,32 → 22,33 |
lea edx,[edx+edx*2] |
lea esi,[esi+esi*2] |
add esi,[PointerToPicture] |
mov edi,[PointerToSpriteBufer] |
mov ebx,[SpriteSizeY] |
mov [counter],ecx |
|
next_line_sprite_save: |
.next_line_sprite_save: |
mov ecx,[counter] |
|
next_pixel_sprite_save: |
align 4 |
@@: |
movsw |
movsb |
dec ecx |
jnz next_pixel_sprite_save |
jnz @b |
|
add esi,edx |
dec ebx |
jnz next_line_sprite_save |
|
jnz .next_line_sprite_save |
.end_f: |
ret |
;----------------------------------------------------------- |
;-------------------PutFonForSprite------------------------- |
;----------------------------------------------------------- |
|
align 4 |
PutFonForSprite: |
|
mov esi,[PointerToSpriteBufer] |
mov ecx,[SpriteSizeX] |
or ecx,ecx |
jz .end_f |
mov edx,[Picture_SizeX] |
sub edx,[SpriteSizeX] |
sub edx,ecx |
mov edi,[SpriteOldCoordinatY] |
imul edi,[Picture_SizeX] |
add edi,[SpriteOldCoordinatX] |
45,32 → 55,33 |
lea edx,[edx+edx*2] |
lea edi,[edi+edi*2] |
add edi,[PointerToPicture] |
mov esi,[PointerToSpriteBufer] |
mov ebx,[SpriteSizeY] |
mov [counter],ecx |
|
next_line_sprite_put: |
.next_line_sprite_put: |
mov ecx,[counter] |
|
next_pixel_sprite_put: |
align 4 |
@@: |
movsw |
movsb |
dec ecx |
jnz next_pixel_sprite_put |
jnz @b |
|
add edi,edx |
dec ebx |
jnz next_line_sprite_put |
|
jnz .next_line_sprite_put |
.end_f: |
ret |
;----------------------------------------------------------- |
;------------------DrawFonForSprite------------------------- |
;----------------------------------------------------------- |
|
align 4 |
DrawSprite: |
|
mov esi,[PointerToEditBufer] |
mov ecx,[SpriteSizeX] |
or ecx,ecx |
jz .end_f |
mov edx,[Picture_SizeX] |
sub edx,[SpriteSizeX] |
sub edx,ecx |
mov edi,[SpriteCoordinatY] |
imul edi,[Picture_SizeX] |
add edi,[SpriteCoordinatX] |
77,20 → 88,21 |
lea edx,[edx+edx*2] |
lea edi,[edi+edi*2] |
add edi,[PointerToPicture] |
mov esi,[PointerToEditBufer] |
mov ebx,[SpriteSizeY] |
mov [counter],ecx |
|
next_line_sprite_draw: |
.next_line_sprite_draw: |
mov ecx,[counter] |
|
next_pixel_sprite_draw: |
align 4 |
@@: |
movsw |
movsb |
dec ecx |
jnz next_pixel_sprite_draw |
jnz @b |
|
add edi,edx |
dec ebx |
jnz next_line_sprite_draw |
|
jnz .next_line_sprite_draw |
.end_f: |
ret |