' **********************************************************************
' *                                                                    *
' *  Demoprogramm zur Programmierung von Hardwaresprites in GFA-Basic  *
' * ------------------------------------------------------------------ *
' *                                                                    *
' *    Autor: Peter Weiland                                            *
' *                                                                    *
' *    Die Sprite-Daten wurden mit dem Movie-Maker Professional        *
' *    erzeugt. Da die Daten im ASCII-Format abgespeichert werden,     *
' *    können sie mit MERGE zu jedem GFA-Basic-Programm dazugeladen    *
' *                              werden.                               *
' *                                                                    *
' **********************************************************************
'
' Window öffnen
'
OPENW #1
FULLW #1
TITLEW #1,"Spritedemo GFABasic"
SPRITE ON
'
' Farben des Sprites definieren (siehe REM-Zeile vor den Sprite-Daten)
'
SETCOLOR 21,&HF97
SETCOLOR 22,&HB20
SETCOLOR 23,&HAF
'
' Sprite-Daten aus den DATA-Zeilen lesen
' und das Aussehen der Sprites durch die Strings s$() definieren
'
anzahl=8
hoehe=24
DIM s$(anzahl)
RESTORE spritedaten
FOR n=0 TO anzahl-1
  s$(n)=STRING$(4*hoehe,0)
  FOR f=1 TO LEN(s$(0)) STEP 2
    READ h$
    MID$(s$(n),f,2)=MKI$(VAL(h$))
  NEXT f
NEXT n
'
' Anfangsposition (x, y), Schrittweite (dx) und erste Bewegungsphase
' (sprnr) festlegen
'
x=2
y=50
dx=2
spnr=0
'
' Sprite bewegen, bis linke Maustaste gedrückt wird
'
REPEAT
  SPRITE #2,s$(spnr)
  SPRITE #2,x,y
  PAUSE 1
  x=x+dx
  IF (x<2) OR (x>600) THEN
    dx=-dx
  ENDIF
  spnr=spnr+1
  IF spnr>=anzahl THEN
    spnr=0
  ENDIF
UNTIL MOUSEK
SPRITE #2
CLOSEW #1
END
'
spritedaten:
'
' Ab hier stehen die Daten, die vom SPRITE-ANIMATOR erzeugt wurden
' die Zeile, die mit REM beginnt, enthält einige wichtige Daten,
' die jeweils durch einen Doppelpunkt voneinander getrennt sind.
' Der erste Wert hat nur für den Movie-Maker bedeutung, wenn die Daten
' wieder geladen werden sollen.
' Der zweite und der dritte Wert enthalten die Anzahl der Bewegungs-
' phasen und die Höhe der Sprites.
' Die letzten vier dreistelligen Werte enthalten die RGB-Werte der
' Spritefarben in hexadezimaler Schreibweise, wobei der erste dieser
' Werte der Hintergrundfarbe entspricht und nur die drei anderen die
' Farben der Sprites beeinflussen.
'
REM 1:08:24:000:F97:B20:0AF
'
' Sprite0
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H07F0, &H0000, &H0FF8, &H0000, &H1FDC, &H07C6, &H3FC8
DATA &H67C6, &H17C0, &H6780, &H0780, &H0740, &H0740, &H0680, &H0680
DATA &H0680, &H0680, &H0000, &H0740, &H0000, &H07A0, &H0000, &H07A0
' Sprite1
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H06E0, &H0000, &H0EF0, &H0000, &H0DF8, &H13C4, &H0BF8
DATA &H1BEC, &H03E0, &H07B0, &H07B0, &H0F70, &H0F70, &H0E70, &H0E70
DATA &H1C00, &H1C38, &H0000, &H383C, &H0000, &H3C3C, &H0000, &H3C00
' Sprite2
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H05A0
DATA &H0000, &H05A0, &H0000, &H05A0, &H0000, &H05A0, &H0420, &H05A0
DATA &H07E0, &H0660, &H0FF0, &H0E70, &H1E78, &H1E7B, &H3830, &H383F
DATA &H1000, &H701E, &H0000, &H700C, &H0000, &H3800, &H0000, &H1800
' Sprite3
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H0760, &H0000, &H0FB0, &H0000, &H0FD8, &H07E4, &H1FF8
DATA &H37EC, &H0FE0, &H37B0, &H07B0, &H0F70, &H0F70, &H0E70, &H0E70
DATA &H1C00, &H1C38, &H0000, &H383C, &H0000, &H3C3C, &H0000, &H3C00
' Sprite4
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H07F0, &H0000, &H0FF8, &H0000, &H1FDC, &H07C6, &H3FC8
DATA &H67C6, &H17C0, &H6780, &H0780, &H0740, &H0740, &H0680, &H0680
DATA &H0680, &H0680, &H0000, &H0740, &H0000, &H07A0, &H0000, &H07A0
' Sprite5
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H0760, &H0000, &H0FB0, &H0000, &H0FD8, &H07C4, &H1FD8
DATA &H35EC, &H0DE0, &H36F0, &H06F0, &H0F70, &H0F70, &H0E70, &H0E70
DATA &H1C00, &H1C38, &H0000, &H383C, &H0000, &H3C3C, &H0000, &H3C00
' Sprite6
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H05A0
DATA &H0000, &H05A0, &H0000, &H05A0, &H0000, &H05A0, &H0420, &H05A0
DATA &H07E0, &H0660, &H0FF0, &H0E70, &H1E78, &H1E7B, &H3830, &H383F
DATA &H1000, &H701E, &H0000, &H700C, &H0000, &H3800, &H0000, &H1800
' Sprite7
DATA &H0000, &H03C0, &H0000, &H07E0, &H0000, &H07FC, &H07A0, &H0000
DATA &H07F0, &H0000, &H06E0, &H0000, &H0700, &H0000, &H03C0, &H0000
DATA &H0180, &H0000, &H0000, &H0180, &H0000, &H03C0, &H0000, &H03E0
DATA &H0000, &H06E0, &H0000, &H0EF0, &H0000, &H0DF8, &H13C4, &H0BF8
DATA &H1AEC, &H02E0, &H06F0, &H06F0, &H0F70, &H0F70, &H0E70, &H0E70
DATA &H1C00, &H1C38, &H0000, &H383C, &H0000, &H3C3C, &H0000, &H3C00
