;------------------------------------------------------------------------------
;       FYEO
;       Frank Lyonnet 1993
;       Fonctions de conversion de couleur
;       Author : Frederic Elisei
;------------------------------------------------------------------------------

                GET     h.ASMRegs
                GET     h.SWInames

                AREA |C$$code|, CODE, READONLY

;------------------------------------------------------------------------------
;       yuv_to_gcol_convert_none
;------------------------------------------------------------------------------
;       parametre no 1 : pointeur vers le rouge
;       parametre no 2 : pointeur vers le vert
;       parametre no 3 : pointeur vers le bleu
;       parametre no 4 : pointeur vers le resultat
;       parametre no 5 : longueur d'une ligne
;       parametre no 6 : pointeur vers la table de dithering
;       parametre no 7 : pointeur vers le buffer
;------------------------------------------------------------------------------

PAS     EQU     1

ARD     RN      0
AGR     RN      1
ABL     RN      2
DST     RN      3
LON     RN      4
RD      RN      5
GR      RN      6
BL      RN      7
COL     RN      8
TBL     RN      9

                EXPORT  |yuv_to_gcol_convert_none|
|yuv_to_gcol_convert_none|

                STMFD   sp!, {r4-r9}

                ;Recup des parms sur la pile
                LDR     LON,[sp,#((6)*4)]               ;Longueur ligne
                LDR     TBL,[sp,#((6)*4+4)]             ;Pointeur table

AFFF            LDRB    RD,[ARD],#PAS                   ;RD = Red[i++]
                LDRB    GR,[AGR],#PAS                   ;GR = Green[i++]
                LDRB    BL,[ABL],#PAS                   ;BL = Blue[i++]

                ADD     RD,RD,#8
                CMP     RD,#255
                MOVGT   RD,#255                         ;Arrondi au 4e bit
                ADD     GR,GR,#8
                CMP     GR,#255
                MOVGT   GR,#255                         ;Arrondi au 4e bit
                ADD     BL,BL,#8
                CMP     BL,#255
                MOVGT   BL,#255                         ;Arrondi au 4e bit

                AND     RD,RD,#&F0                      ;Calcul index table
                MOV     BL,BL,LSR#4                     ;4 bit Red, 4 bit Green, 4 bit Blue
                ADD     RD,RD,GR,LSR#4                  ;0-3 = blue, 4-7 = green, 8-11 = red
                ADD     RD,TBL,RD,LSL#6                 ;En 2 temps
                LDR     COL,[RD,BL,LSL#2]               ;Tableau de mot de 32 bits, 0-7 = couleur

                STRB    COL,[DST],#1                    ;Out[i++] = GCOL

                SUBS    LON,LON,#PAS
                BNE     AFFF

                LDMFD   sp!,{r4-r9}
                MOV     pc,lr ; RICK 2004/01/29 changed 'MOVS' to 'MOV'

                END
