SDL-1.2.14
[sdl_omap.git] / src / hermes / x86_main.asm
1 ;
2 ; x86 format converters for HERMES
3 ; Some routines Copyright (c) 1998 Christian Nentwich (brn@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@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