Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Sonstiges

Fader in Asm (MMX)

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedEternal_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 MitgliedEternal_Pain angelegt.
  • Die aktuellste Version wurde am 13.06.2007 von MitgliedEternal_Pain gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen