76 lines
1.4 KiB
NASM
76 lines
1.4 KiB
NASM
![]() |
;
|
||
|
; x86 format converters for HERMES
|
||
|
; Some routines Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at)
|
||
|
; This source code is licensed under the GNU LGPL
|
||
|
;
|
||
|
; Please refer to the file COPYING.LIB contained in the distribution for
|
||
|
; licensing conditions
|
||
|
;
|
||
|
; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission
|
||
|
;
|
||
|
|
||
|
BITS 32
|
||
|
|
||
|
%include "common.inc"
|
||
|
|
||
|
SDL_FUNC _ConvertX86
|
||
|
|
||
|
SECTION .text
|
||
|
|
||
|
;; _ConvertX86:
|
||
|
;; [ESP+8] ConverterInfo*
|
||
|
;; --------------------------------------------------------------------------
|
||
|
;; ConverterInfo (ebp+..)
|
||
|
;; 0: void *s_pixels
|
||
|
;; 4: int s_width
|
||
|
;; 8: int s_height
|
||
|
;; 12: int s_add
|
||
|
;; 16: void *d_pixels
|
||
|
;; 20: int d_width
|
||
|
;; 24: int d_height
|
||
|
;; 28: int d_add
|
||
|
;; 32: void (*converter_function)()
|
||
|
;; 36: int32 *lookup
|
||
|
|
||
|
_ConvertX86:
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
|
||
|
; Save the registers used by the blitters, necessary for optimized code
|
||
|
pusha
|
||
|
|
||
|
mov eax,[ebp+8]
|
||
|
|
||
|
cmp dword [eax+4],BYTE 0
|
||
|
je endconvert
|
||
|
|
||
|
mov ebp,eax
|
||
|
|
||
|
mov esi,[ebp+0]
|
||
|
mov edi,[ebp+16]
|
||
|
|
||
|
y_loop:
|
||
|
mov ecx,[ebp+4]
|
||
|
|
||
|
call [ebp+32]
|
||
|
|
||
|
add esi,[ebp+12]
|
||
|
add edi,[ebp+28]
|
||
|
|
||
|
dec dword [ebp+8]
|
||
|
jnz y_loop
|
||
|
|
||
|
; Restore the registers used by the blitters, necessary for optimized code
|
||
|
popa
|
||
|
|
||
|
pop ebp
|
||
|
|
||
|
endconvert:
|
||
|
ret
|
||
|
|
||
|
|
||
|
|
||
|
%ifidn __OUTPUT_FORMAT__,elf
|
||
|
section .note.GNU-stack noalloc noexec nowrite progbits
|
||
|
%endif
|