Subversion Repositories Kolibri OS

Rev

Rev 6342 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;-----------------------------------------------------------
  2. ;SaveFonForSprite:
  3. ; PointerToPicture -> PointerToSpriteBufer
  4. ;
  5. ;PutFonForSprite:
  6. ; PointerToSpriteBufer -> PointerToPicture
  7. ;
  8. ;DrawSprite:
  9. ; PointerToEditBufer -> PointerToPicture
  10. ;-----------------------------------------------------------
  11.  
  12. align 4
  13. SaveFonForSprite:
  14.         mov ecx,[SpriteSizeX]
  15.         or ecx,ecx
  16.         jz .end_f
  17.         mov edx,[Picture_SizeX]
  18.         sub edx,ecx
  19.         mov esi,[SpriteCoordinatY]
  20.         imul esi,[Picture_SizeX]
  21.         add esi,[SpriteCoordinatX]
  22.         lea edx,[edx+edx*2]
  23.         lea esi,[esi+esi*2]
  24.         add esi,[PointerToPicture]
  25.         mov edi,[PointerToSpriteBufer]
  26.         mov ebx,[SpriteSizeY]
  27.         mov [counter],ecx
  28.  
  29.         .next_line_sprite_save:
  30.         mov ecx,[counter]
  31. align 4
  32.         @@:
  33.         movsw
  34.         movsb
  35.         dec ecx
  36.         jnz @b
  37.  
  38.         add esi,edx
  39.         dec ebx
  40.         jnz .next_line_sprite_save
  41. .end_f:
  42.         ret
  43. ;-----------------------------------------------------------
  44.  
  45. align 4
  46. PutFonForSprite:
  47.         mov ecx,[SpriteSizeX]
  48.         or ecx,ecx
  49.         jz .end_f
  50.         mov edx,[Picture_SizeX]
  51.         sub edx,ecx
  52.         mov edi,[SpriteOldCoordinatY]
  53.         imul edi,[Picture_SizeX]
  54.         add edi,[SpriteOldCoordinatX]
  55.         lea edx,[edx+edx*2]
  56.         lea edi,[edi+edi*2]
  57.         add edi,[PointerToPicture]
  58.         mov esi,[PointerToSpriteBufer]
  59.         mov ebx,[SpriteSizeY]
  60.         mov [counter],ecx
  61.  
  62.         .next_line_sprite_put:
  63.         mov ecx,[counter]
  64. align 4
  65.         @@:
  66.         movsw
  67.         movsb
  68.         dec ecx
  69.         jnz @b
  70.  
  71.         add edi,edx
  72.         dec ebx
  73.         jnz .next_line_sprite_put
  74. .end_f:
  75.         ret
  76. ;-----------------------------------------------------------
  77.  
  78. align 4
  79. DrawSprite:
  80.         mov ecx,[SpriteSizeX]
  81.         or ecx,ecx
  82.         jz .end_f
  83.         mov edx,[Picture_SizeX]
  84.         sub edx,ecx
  85.         mov edi,[SpriteCoordinatY]
  86.         imul edi,[Picture_SizeX]
  87.         add edi,[SpriteCoordinatX]
  88.         lea edx,[edx+edx*2]
  89.         lea edi,[edi+edi*2]
  90.         add edi,[PointerToPicture]
  91.         mov esi,[PointerToEditBufer]
  92.         mov ebx,[SpriteSizeY]
  93.         mov [counter],ecx
  94.  
  95.         .next_line_sprite_draw:
  96.         mov ecx,[counter]
  97. align 4
  98.         @@:
  99.         movsw
  100.         movsb
  101.         dec ecx
  102.         jnz @b
  103.  
  104.         add edi,edx
  105.         dec ebx
  106.         jnz .next_line_sprite_draw
  107. .end_f:
  108.         ret
  109.