Home | History | Annotate | Download | only in hermes
      1 ;
      2 ; x86 format converters for HERMES
      3 ; Some routines Copyright (c) 1998 Christian Nentwich (brn (a] eleet.mcb.at)
      4 ; This source code is licensed under the GNU LGPL
      5 ; 
      6 ; Please refer to the file COPYING.LIB contained in the distribution for
      7 ; licensing conditions		
      8 ;
      9 ; Most routines are (c) Glenn Fiedler (ptc (a] gaffer.org), used with permission
     10 ; 
     11 
     12 BITS 32
     13 
     14 %include "common.inc"
     15 
     16 SDL_FUNC _ConvertX86
     17 
     18 SECTION .text
     19 		
     20 ;; _ConvertX86:	 
     21 ;; [ESP+8] ConverterInfo*
     22 ;; --------------------------------------------------------------------------
     23 ;; ConverterInfo (ebp+..)
     24 ;;   0:	void *s_pixels
     25 ;;   4:	int s_width
     26 ;;   8:	int s_height
     27 ;;  12:	int s_add
     28 ;;  16:	void *d_pixels
     29 ;;  20:	int d_width
     30 ;;  24:	int d_height
     31 ;;  28:	int d_add
     32 ;;  32:	void (*converter_function)() 
     33 ;;  36: int32 *lookup
     34 	
     35 _ConvertX86:
     36 	push ebp
     37 	mov ebp,esp
     38 
     39 ; Save the registers used by the blitters, necessary for optimized code
     40 	pusha
     41 
     42 	mov eax,[ebp+8]
     43 
     44         cmp dword [eax+4],BYTE 0
     45 	je endconvert
     46 	
     47 	mov ebp,eax
     48 	
     49 	mov esi,[ebp+0]
     50 	mov edi,[ebp+16]
     51 	
     52 y_loop:	
     53 	mov ecx,[ebp+4]
     54 
     55 	call [ebp+32]
     56 
     57 	add esi,[ebp+12]
     58 	add edi,[ebp+28]
     59 	
     60 	dec dword  [ebp+8]
     61 	jnz y_loop
     62 
     63 ; Restore the registers used by the blitters, necessary for optimized code
     64 	popa
     65 	
     66 	pop ebp
     67 
     68 endconvert:	
     69 	ret		
     70 
     71 
     72 
     73 %ifidn __OUTPUT_FORMAT__,elf
     74 section .note.GNU-stack noalloc noexec nowrite progbits
     75 %endif
     76