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

                GET     h.ASMRegs
                GET     h.SWInames

                AREA |C$$code|, CODE, READONLY

;------------------------------------------------------------------------------
;       rgb_to_gcol_convert_simple
;------------------------------------------------------------------------------
;       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
;------------------------------------------------------------------------------

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
ERD     RN      9
EGR     RN      10
EBL     RN      11
TBL     RN      12

                EXPORT  |rgb_to_gcol_convert_simple|
|rgb_to_gcol_convert_simple|
                STMFD   sp!, {r4-r12}

                LDR     LON,[sp,#((9)*4)]        ;Longueur ligne
                LDR     TBL,[sp,#((9)*4+4)]      ;Pointeur table

                MOV     ERD,#0
                MOV     EGR,#0
                MOV     EBL,#0


AFFF            LDRB    RD,[ARD],#PAS
                ADDS    RD,RD,ERD
                MOVMI   RD,#0
                CMP     RD,#255
                MOVGT   RD,#255
                MOV     ERD,RD

                LDRB    GR,[AGR],#PAS
                ADDS    GR,GR,EGR
                MOVMI   GR,#0
                CMP     GR,#255
                MOVGT   GR,#255
                MOV     EGR,GR

                LDRB    BL,[ABL],#PAS
                ADDS    BL,BL,EBL
                MOVMI   BL,#0
                CMP     BL,#255
                MOVGT   BL,#255
                MOV     EBL,BL

                MOV     EGR,EGR,LSR#3
                MOV     ERD,ERD,LSR#3
                ADD     ERD,EGR,ERD,LSL#5
                ADD     ERD,TBL,ERD,LSL#5
                LDRB    COL,[ERD,EBL,LSR#3]

                STRB    COL,[DST],#1

                AND     EBL,COL,#3
                ADD     EBL,EBL,EBL,LSL#4
                SUB     ERD,RD,EBL
                SUB     EGR,GR,EBL
                SUB     EBL,BL,EBL

                TST     COL,#128
                SUBNE   EBL,EBL,#8*(1+16)
                TST     COL,#64
                SUBNE   EGR,EGR,#8*(1+16)
                TST     COL,#32
                SUBNE   EGR,EGR,#4*(1+16)
                TST     COL,#16
                SUBNE   ERD,ERD,#8*(1+16)
                TST     COL,#8
                SUBNE   EBL,EBL,#4*(1+16)
                TST     COL,#4
                SUBNE   ERD,ERD,#4*(1+16)

                SUBS    LON,LON,#1
                BNE     AFFF

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

                END
