Code-Beispiel
Fader in Asm (MMX)
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Eternal_Pain | 13.06.2007 |
Quelle:fb@rchive
Autor:Volta
Hi,
die Sub Fader_MMX kann das Bild "verschwimmen" lassen (3-7 mal aufrufen)
oder sanft ausblenden (80 - 120 mal aufrufen).
Zwei Einschränkungen:
1. ab Grafikmode 14, in 32 bpp (Bit per Pixel)
2. MMX fähige CPU (CPU jünger als 8 Jahre) ist erforderlich.
In der SUB werden beide Bedingungen abgefragt, ist eine der Einschränkungen zutreffend
wird die SUB ohne Aktion verlassen.
Declare Sub fader_MMX (ByVal ScrPtr As Byte Ptr)
Screen 18 , 32,,1 '640 x 480, 32bpp
Dim i As Integer
For i = 0 To &hffffff Step &he2af
Color i : Print " Volta ";
Next
Sleep 2000
For i= 1 To 110
ScreenLock
fader_MMX(ScreenPtr)
ScreenUnlock
If i < 6 Then Sleep 1000
Sleep 4
Next
Print "verdisch..."
Sleep
End
'---------------------
Sub fader_MMX (ByVal ScrPtr As Byte Ptr)
'12.04.2006 Fader_MMX by Volta
Dim As Integer i, j, Breite, Hoehe, bpp, byte_zeile
If (fb_CpuDetect And &h800000) = 0 Then Exit Sub
ScreenInfo Breite, Hoehe, bpp
If bpp < 32 Then Exit sub
byte_zeile = Breite Shl 2
For i = 1 To Hoehe - 2
ScrPtr += byte_zeile
For j = 0 To byte_zeile - 4 Step 4
asm
mov eax, [ScrPtr]
add eax, [j]
mov ebx, [byte_zeile]
pxor mm2, mm2
movd mm0, [eax +ebx]
punpcklbw mm0, mm2
movd mm1, [eax]
punpcklbw mm1, mm2
paddw mm0, mm1
movd mm1, [eax -4]
punpcklbw mm1, mm2
paddw mm0, mm1
movd mm1, [eax +4]
punpcklbw mm1, mm2
paddw mm0, mm1
psrlw mm0, 2
packuswb mm0, mm0
movd [eax], mm0
End asm
Next j
Next i
asm emms
End Sub
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 13.06.2007 von Eternal_Pain angelegt.
- Die aktuellste Version wurde am 13.06.2007 von Eternal_Pain gespeichert.
|
|