K
Hallo Jifff
ürgend wie steige ich net mehr dahinter was hier geschrieben wird ... liegt wohl daran , daß ich zu wenig in ASM schreibe
Wo nen zähler gefälscht wird gehte generel ind er der hose ...
Also versuche es mal so :
mov dx, 03C8h ; Put the DAC read register in DX
mov cx, 0FFh ; fill from end
schloop:
push CX ;<<<< damit CX bei den nächsten durchlauf nicht x4 gerechnet is...
mov al, cl
mov dx, 3c8h
out dx,al
inc dx
mov si, offset RGBQUAD ; RGBQUAD in 8bit BMP -> BYTE blue; BYTE green; BYTE red also genau verdreht + ein viertes 'resevered' BYTE als platzfueller
shl cx,2
add si, cx
add si,2
mov al, [si] ; Put the new RED value in AL
shr al,2
out dx, al ; Send AL to port DX
dec si
mov al, [si] ; Put the new GREEN value in AL
shr al,2
out dx, al ; Send AL to port DX
dec si
mov al, [si] ; Put the new BLUE value in AL
shr al,2
out dx, al ; Send AL to port DX
pop cx ;<<< schreiben wir den orginal wert wieder ...
loop schloop
Mit den 3 Zeilen da zwischen solte die Pallete richtig dargestellt werden ,
da CX zwar mal 4 gereechnet wurde , aber nicht zurück gesetzt wurde.
Wenn Du das Program beendeste , soltete
mov ax,03h
int 10h
noch in deine Programm am ende schreiben,erst mal den screen zurück setzen.
Dan solte es auch keine probs mehr geben !
Gruß Kato
P.s: Sorry habe einfach aus Faulheit mal deinen SRC genommen !
[ Dieser Beitrag wurde am 23.01.2003 um 12:01 Uhr von KC25m editiert. ]