[2D] Sprite Scrolling

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[2D] Sprite Scrolling

Message par falsam »

J'utilise actuellement un procédé de barbare pour scroller un sprite verticalement et/ou horizontalement.

Le principe consiste à afficher l'image une première fois puis la suivant avec un décalage horizontal et/ou vertical.

Ce n'est pas ce qui est le plus performant et ça se voit si je fais du parallaxe avec 5 layers par exemple.

Je pense que le mieux est de passer par les fonctions ClipSprite() et avant de me lancer dedans, j'aimerais savoir si quelqu'un à déja ce genre de procédure ?

Merci d'avance.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

le deplacement d'un sprite, ça le fait en principe !!


ce code , le demontre bien (utiliser les touches flechées droite et bas)

http://www.purebasic.fr/french/viewtopi ... lax#p52491
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite Scrolling

Message par falsam »

Merci Zorro mais ce code utilise la superposition de couches et non pas un ClipSprite() comme je le souhaite. De plus le déplacement à gauche ou vers le haut merdouille.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

voici une methode a base non pas de clipSprite, que je ne trouve pas pratique

mais de GrabSprite() qui a l'avantage de creer le sprite ...
j'ai bien commenté le code , le principe est simple

nous avons une bande horizontale de tissus ringard avec des bandes de couleurs , (morceau du pygama a KCC :lol: )
cette bande est tendue sur l'ecran ,
1- on affiche la bande complete (#sprite_bande ) (pas moi.. )
2- on decoupe une bande verticale a droite de l'ecran de largeur 10 (largeur_decoupe )
3- on deplace le reste de la bande vers la droite de la largeur de la decoupe
4- on pose la decoupe a gauche
5- on recoud l'ensemble grace a GrabSprite() je refabrique un sprite #sprite_bande nouveau
6- on recommence

Code : Tout sélectionner

;***********************************************
;Titre  :*exemple_sprite Scrolling infini, a base de GrabSprite
;Auteur  : Zorro
;Date  :24/07/2016
;Heure  :18:05:19
;Version Purebasic :  PureBasic 5.50 beta 1 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************


Structure sprite
		x.i
		y.i
		Pas_x.i
		Pas_y.i
		im.l ; image sprite
EndStructure
nbr_sprite=1
Dim sprite.sprite(nbr_sprite)
largeur_decoupe=150
sprite(nbr_sprite)\pas_x.i=largeur_decoupe
#sprite_buffer=200
#sprite_bande=0


If InitSprite() = 0 Or InitKeyboard() = 0
		MessageRequester("Erreur", "Le système de Sprite ne peut pas être initialisé", 0)
		End
EndIf
ExamineDesktops()
largeur_ecran=DesktopWidth(0)
hauteur_ecran=DesktopHeight(0)
largeur_decoupe=10

sprite(#sprite_bande)\x.i=0
sprite(#sprite_bande)\y.i=(hauteur_ecran/2)-(256/2)

If OpenScreen(largeur_ecran, hauteur_ecran, 32, "Visualisation")
		; *********** creation et dessin du sprite 1*******************
		CreateSprite(0,largeur_ecran,256,#PB_Sprite_PixelCollision)
		StartDrawing(SpriteOutput(0))
				For i=1 to largeur_ecran/10				
						box(stepx,0,10,256,RGB(random(255),random(255),random(255)))
						stepx=stepx+10
				Next i
		StopDrawing() 
		; ********************************************************
		; *********** creation et dessin du sprite buffer (qui va recuperer la decoupe *******************
		CreateSprite(#sprite_buffer,largeur_decoupe,256,#PB_Sprite_PixelCollision)
		
		; ********************************************************
		
		
		
		
		
		; ********** Affichage des sprites ****************************
		
		
		Repeat 
				
				; on affiche la sprite bande
				DisplayTransparentSprite(#sprite_bande, sprite(#sprite_bande)\x, sprite(#sprite_bande)\y)
				; on decoupe a droite
				GrabSprite(#sprite_buffer,largeur_ecran-largeur_decoupe,sprite(#sprite_bande)\y,largeur_decoupe,256)
				; on deplace le sprite bande de la largeur de la decoupe vers la droite (donc a la suite de notre bande decoupéé)		 
				DisplayTransparentSprite(#sprite_bande, sprite(#sprite_bande)\x+largeur_decoupe, sprite(#sprite_bande)\y)	
				; on pose la bande decoupé au debut de l'ecran
				DisplayTransparentSprite(#sprite_buffer, 0, sprite(#sprite_bande)\y)		  
				
				; on refait  le sprite bande complet avec le résultat (sprite buffer + sprite bande )
				GrabSprite(#sprite_bande,0,sprite(#sprite_bande)\y.i,largeur_ecran,256)
				; et on recommence
				; on peut suprimer notre buffer (le sprite qui contient la decoupe)
				FreeSprite(#sprite_buffer)		
				
				; *********************************************
				StartDrawing(ScreenOutput())
						DrawText(10, 580, "Touche Esc pour quitter." , RGB(242, 249, 85), RGB(0, 0, 0))
				StopDrawing()
				FlipBuffers() 
				ClearScreen(RGB(0,0,0)) 
				ExamineKeyboard()
		Until KeyboardPushed(#PB_Key_Escape)
Else
		MessageRequester("Erreur", "Impossible d'ouvrir un écran en 800 * 600 - 32 bits!", 0)
EndIf
End    
; 

; 


; 
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite Scrolling

Message par falsam »

Merci Zorro. Le principe est pas mal mais créer et supprimer le sprite à chaque fois va être pénalisant si on a plusieurs layers à scroller.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sprite Scrolling

Message par Ar-S »

J'ai testé vite fait, ça rend plutôt bien :)

Code : Tout sélectionner

; Ar-S Parallax / clipsprite

UsePNGImageDecoder()

Enumeration
  #Fenetre_principale
EndEnumeration

Enumeration
  #ter
  #her
EndEnumeration

Define.l Evenement, EvenementGadget

Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

If Not (InitSprite() And InitSound() And InitKeyboard())
  End
EndIf



OpenWindow(#Fenetre_principale, 0, 0, 200, 135, "scroll", StyleFen)

If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 200, 135, 1, 0, 0)
  LoadSprite(#ter,"paralax.png",#PB_Sprite_AlphaBlending)
LoadSprite(#her,"herbe.png",#PB_Sprite_AlphaBlending)

  

EndIf

Xter = 0


Repeat ;Evemement 2D
 
  Repeat
    Evenement = WindowEvent()
   
    Select Evenement   
      Case #PB_Event_CloseWindow
        End
    EndSelect 
  Until Evenement=0
 
  ClearScreen(RGB(0, 0, 0))
  
  ClipSprite(#ter, Xter, 0, 200, 135)
  DisplayTransparentSprite(#ter,0,0)
  ClipSprite(#her, Xher, 0, 200, 135)
  DisplayTransparentSprite(#her,0,0)
  
  If Xher >= 600
    Vitesse = -2
  ElseIf Xher <= 0
    Vitesse = 2  
  EndIf
  
  Xter+Vitesse/2
  XHer+Vitesse
  
  FlipBuffers()
ForEver
Image 1 : Image
Image 2 : Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

pas mal :)

pour ceux qui veulent tester le code de AR-s sans avoir a récuperer les images
Ps j'ai du ajouter un TransparentSprite() car en telechargeant on perd la transparence des images :)

Code : Tout sélectionner


; Ar-S Parallax / clipsprite

UsePNGImageDecoder()

Enumeration
		#Fenetre_principale
EndEnumeration

Enumeration
		#ter
		#her
EndEnumeration

Define.l Evenement, EvenementGadget

Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

If Not (InitSprite() And InitSound() And InitKeyboard())
		End
EndIf

Declare catchimage_net(adr$)


OpenWindow(#Fenetre_principale, 0, 0, 200, 135, "scroll", StyleFen)

If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 200, 135, 1, 0, 0)
		
		; LoadSprite(#ter,"paralax.png",#PB_Sprite_AlphaBlending)
		;LoadSprite(#her,"herbe.png",#PB_Sprite_AlphaBlending)
		
		ima1=catchimage_net("http://share.ldvmultimedia.com/herbe.png")
		ima2=catchimage_net("http://share.ldvmultimedia.com/paralax.png")
		
		
		if isimage(ima1) and isimage(ima2)
				createSprite(#her,ImageWidth(ima1),ImageHeight(ima1))
				StartDrawing(SpriteOutput(#her))
						DrawImage( imageId(ima1),0,0)
				StopDrawing()
				CreateSprite(#ter,ImageWidth(ima2),ImageHeight(ima2))
				StartDrawing(SpriteOutput(#ter))
						DrawImage(imageId(ima2),0,0)
				StopDrawing()
		Else
				MessageRequester("erreur","peut pas charger les images")
				End
		Endif
		
EndIf

TransparentSpriteColor(#her,RGB(255,255,255))
Xter = 0


Repeat ;Evemement 2D
		
		Repeat
				Evenement = WindowEvent()
				
				Select Evenement   
				Case #PB_Event_CloseWindow
						End
				EndSelect
		Until Evenement=0
		
		ClearScreen(RGB(0, 0, 0))
		
		ClipSprite(#ter, Xter, 0, 200, 135)
		DisplayTransparentSprite(#ter,0,0)
		ClipSprite(#her, Xher, 0, 200, 135)
		DisplayTransparentSprite(#her,0,0)
		
		If Xher >= 600
				Vitesse = -2
		ElseIf Xher <= 0
				Vitesse = 2 
		EndIf
		
		Xter+Vitesse/2
		XHer+Vitesse
		
		FlipBuffers()
ForEver


Procedure CatchImage_Net(Adr$)
		InitNetwork()
		Protected image
		; By Ar-S  
		*Buffer = ReceiveHTTPMemory(Adr$)
		If *Buffer
				Image = CatchImage(#PB_Any, *Buffer, MemorySize(*Buffer) )
				FreeMemory(*Buffer)
				ProcedureReturn Image
		Else
				ProcedureReturn #false   
		EndIf
EndProcedure


cependant, le but de la chose, si j'ai bien compris, c'est de creer un defilé infini du decors
d'ou mon exemple a base de GrabSprite()

@Falsam , j'efface les sprite par soucis de bien faire
mais GrabSprite ecrase le sprite existant !! :)


cependant mon system de decoupe ne pourrai pas etre utilisé avec des images comme celles de Ar-s
car si on prends la partie droite, pour la coller a gauche , ça le fera pas

il faut faire comme pour les boucles Audio
avoir une fin et un debut "bouclable"

a moins de faire une copie complete ....
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

en fait avec Purebasic, nul besoin de cliper pour faire un scroll !

les SPrites se suffisent a eux meme

exemple de Scroll infini avec les images de Ar-s

Code : Tout sélectionner

; Ar-S Parallax / clipsprite
; Modif Zorro
UsePNGImageDecoder()
Enumeration
		#Fenetre_principale
EndEnumeration
Enumeration
		#ter
		#her
		#ter2
		#her2
EndEnumeration
Define.l Evenement, EvenementGadget
Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered
If Not (InitSprite() And InitSound() And InitKeyboard())
		End
EndIf
Declare.l loadsprite_net(adr$,nom_fichier$)

OpenWindow(#Fenetre_principale, 0, 0, 800, 135, "scroll", StyleFen)
If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 800, 135, 1, 0, 0)
		LoadSprite(#ter,"paralax.png",#PB_Sprite_AlphaBlending)
		LoadSprite(#her,"herbe.png",#PB_Sprite_AlphaBlending)
		if issprite(ima1)<>0 and issprite(ima2)<>0
		Else
				MessageRequester("erreur","peut pas charger les images")
				End
		Endif
EndIf

TransparentSpriteColor(#her,RGB(255,255,255))
CopySprite(#her,#her2)
CopySprite(#ter,#ter2)
Xter = 0
Xher = 0
xter2=xter-800
xher2=xher-800
Repeat ;Evemement 2D
		Repeat
				Evenement = WindowEvent()
				Select Evenement   
				Case #PB_Event_CloseWindow
						End
				EndSelect
		Until Evenement=0
		ClearScreen(RGB(0, 0, 0))
		
		DisplayTransparentSprite(#ter,xter,0)     ; lui sera afficher normalement
		DisplayTransparentSprite(#ter2,xter2,0)     	; il prend une largeur de retard
		DisplayTransparentSprite(#her,xher,0)
		DisplayTransparentSprite(#her2,xher2,0)
		
		Vitesse = 4
		Xter+Vitesse/2
		Xter2+Vitesse/2
		XHer+Vitesse
		XHer2+Vitesse
		If Xter >= 800
				Xter=-800
		EndIf
		If Xter2 >= 800
				Xter2=-800
		EndIf
		If Xher >= 800
				Xher=-800
		EndIf
		If Xher2 >= 800
				Xher2=-800
		EndIf
		
		FlipBuffers()
ForEver
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite Scrolling

Message par falsam »

Merci à vous deux.

@Ar-s: Joli Code. Malheureusement il ne fonctionne pas pour un scroll en continu.

@Zorro: Ton code fonctionne mais tu utilises la technique par superposition d'image que je cherche justement à ne plus utiliser.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

falsam a écrit :Merci à vous deux.

@Ar-s: Joli Code. Malheureusement il ne fonctionne pas pour un scroll en continu.

@Zorro: Ton code fonctionne mais tu utilises la technique par superposition d'image que je cherche justement à ne plus utiliser.
ben je ne connais pas d'autre façons de faire un parralax ! 8O

d'ailleurs c'est tres bien imagé et expliqué sur le net

Image

ou alors j'ai loupé un episode quelque part


sinon TazNormand avait fait un tuto sur le parallax en utilisant justement un clipSprite
http://www.purebasic.fr/french/viewtopi ... 0&start=15

mais le clipSprite, n'est qu'un moyen de decoupe d'un sprite
mais pour obtenir un effet parallax, t'es obligé de superposer tes images , quelque soit leur taille
car si les bandes sont simplement l'une au dessus des autres, ça le fera pas .
Dernière modification par Zorro le dim. 24/juil./2016 23:45, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sprite Scrolling

Message par falsam »

je ne te parle pas de la superposition des layers mais de l'affichage décalé de chacun de tes layers.

Par exempel dans ton exemple tu affiches l'herbe deux fois de suite avec un décalage et la meme chose pour la terre.

C'est ce que je faisais aussi jusqu'à présent et je voulais voir si il n'y avait pas une autre façon de faire avec SpriteClip()

Si ton sprite est trop petit en largeur ton code ne fonctionne plus.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

falsam a écrit :je ne te parle pas de la superposition des layers mais de l'affichage décalé de chacun de tes layers.

Par exempel dans ton exemple tu affiches l'herbe deux fois de suite avec un décalage et la meme chose pour la terre.

C'est ce que je faisais aussi jusqu'à présent et je voulais voir si il n'y avait pas une autre façon de faire avec SpriteClip()
tu peux faire la methode que j'ai donné au debut (avec mon GrabSprite()

mais ça force a avoir des images qui soient bouclabes !!

mais vu la vitesse d'execution de Purebasic, c'est se donner du mal pour rien !
Si ton sprite est trop petit en largeur ton code ne fonctionne plus.
ben ça depend !
si c'est une voiture, en avant plan , pas de problèmes
si c’est le fond, ok , t'es obligé de répéter, ou de resizer ....
en fait ya pas 36 façons de faire un scrolling

soit tu découpes une bande, et tu décales en reposant ta bande a l'opposé (1er methode montré )
soit tu scroll l'ensemble de ton image , répétée de sorte qu'elle soit plus large que ton ecran (le double en largeur ) (2em methode montré )
(et hauteur si tu veux pouvoir scroller dans tout les sens )

en dehors de ça, franchement, je vois pas !!

Djes est un specialiste de la demo , il pourra répondre ...
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sprite Scrolling

Message par Ar-S »

J'avais dit que je l'avais fait à l'arrache :)
Qui dit parallax dit redondance des images, voilà un exemple de scroll "infini" utilisant le clipsprite().
Donc j'ai refait mes images pour qu'elle puissent correspondre au scroll.

Image

Les 2 nouvelles images http://share.ldvmultimedia.com/imagescrolll.zip

(p.s : oui il est tard, je rentre de concert ^^)

Code : Tout sélectionner

; Ar-S / Infinite Parallax Scroll using clipsprite.
; Clip de 200px de large uniquement

UsePNGImageDecoder()

Enumeration
  #Fenetre_principale
  #ter
  #her
EndEnumeration

Define.l EV

Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

If Not (InitSprite() And InitSound() And InitKeyboard())
  End
EndIf



OpenWindow(#Fenetre_principale, 0, 0, 200, 135, "scroll", StyleFen)

If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 200, 135, 1, 0, 0)
  LoadSprite(#ter,"paralax.png",#PB_Sprite_AlphaBlending)
  LoadSprite(#her,"herbe.png",#PB_Sprite_AlphaBlending)
  Xter = 0


Repeat ;Evemement 2D
  
  Repeat
    EV = WindowEvent()
    
    Select EV   
      Case #PB_Event_CloseWindow
        End
    EndSelect 
  Until EV=0
  
  ClearScreen(RGB(0, 0, 0))
  
  ClipSprite(#ter, Xter, 0, 200, 135)
  DisplayTransparentSprite(#ter,0,0)
  ClipSprite(#her, Xher, 0, 200, 135)
  DisplayTransparentSprite(#her,0,0)
  
  If Xher >= 600
    Xher = 0
  EndIf
  If xter >= 400
    Xter=0
  EndIf
  
  vitesse = 2
  Xter+Vitesse/2
  XHer+Vitesse
  
  FlipBuffers()
ForEver

Else
  Debug "ça chie" : End
  
EndIf

Au cas ou les images ou le zip disparaissent, la même chose avec les images en datas

Code : Tout sélectionner

; Ar-S / Infinite Parallax Scroll using clipsprite.
; Clip de 200px de large uniquement

UsePNGImageDecoder()

Enumeration
  #Fenetre_principale
  #ter
  #her
EndEnumeration

Define.l EV

Global StyleFen.i=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

If Not (InitSprite() And InitSound() And InitKeyboard())
  End
EndIf



OpenWindow(#Fenetre_principale, 0, 0, 200, 135, "scroll", StyleFen)

If OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, 200, 135, 1, 0, 0)
  CatchSprite(#ter,?paralax_png_start,#PB_Sprite_AlphaBlending)
  CatchSprite(#her,?herbe_png_start,#PB_Sprite_AlphaBlending)
  
  Xter = 0


Repeat ;Evemement 2D
  
  Repeat
    EV = WindowEvent()
    
    Select EV   
      Case #PB_Event_CloseWindow
        End
    EndSelect 
  Until EV=0
  
  ClearScreen(RGB(0, 0, 0))
  
  ClipSprite(#ter, Xter, 0, 200, 135)
  DisplayTransparentSprite(#ter,0,0)
  ClipSprite(#her, Xher, 0, 200, 135)
  DisplayTransparentSprite(#her,0,0)
  
  If Xher >= 600
    Xher = 0
  EndIf
  If xter >= 400
    Xter=0
  EndIf
  
  vitesse = 2
  Xter+Vitesse/2
  XHer+Vitesse
  
  FlipBuffers()
ForEver

Else
  Debug "ça chie" : End
  
EndIf




DataSection
   paralax_png_start:
    ; size : 7616 bytes
    Data.q $0A1A0A0D474E5089,$524448490D000000,$8700000020030000,$3D81EE0000000608,$58457419000000A3
    Data.q $72617774666F5374,$2065626F64410065,$6165526567616D49,$00003C65C9717964,$DA7854414449621D
    Data.q $C79555DD90799DEC,$9DD24E9D26BD7BCF,$FB092013A010B3A4,$050101016C240212,$652E208234054559
    Data.q $D4D4C7F3A3A5528D,$D56538D4D54D4D4C,$EA3A28E14E38EA58,$511119938E3A8CB8,$4571187067714106
    Data.q $F7EBF5B204B08450,$BCE97E97E7BE9CE6,$AA9F3E5BF7F6FD7E,$BBF7F7DDD3BAD953,$AE6E7BDEF7EFDCF7
    Data.q $0000000000092A54,$00000004D3C82740,$0000000100800000,$0000000008040000,$0000000004020000
    Data.q $0000000000201000,$0000000000100800,$0000000000008040,$0000000000000402,$0800000000000201
    Data.q $0400000000000010,$4020000000000008,$0201000000000000,$0100800000000000,$0008040000000000
    Data.q $0004020000000000,$0000201000000000,$0000010080000000,$0000008040000000,$0000000402000000
    Data.q $0000000201000000,$0000000010080000,$0000000000804000,$0000000000402000,$0000000000020100
    Data.q $0000000000010080,$2000000000000804,$1000000000000040,$0080000000000020,$8868000000000001
    Data.q $5CFCE5BC7DA09A5E,$3122E3DC9F6E9F33,$6BFE931E8B16265F,$3C4ABBFEF22F99A9,$6480400000000028
    Data.q $A31A431AFD1D1314,$0C6B16354B1A631A,$0FE35678D2ECC7FA,$D1377FE33C6A4F1A,$81807880000118AC
    Data.q $1C96376810080005,$0CE34638D4AC6BE6,$CC0C805CEB1A4D8D,$71AC3C805CBB2048,$DDBBFB7BFE03C6BF
    Data.q $058181CC80001108,$AB1A7999A8100800,$278B6342B8D6CE35,$8D63C0B2B1155C8F,$F1ADDC684F1A25C6
    Data.q $69A3EC6B8F241745,$200016060F520001,$34E348B1A4AEA040,$C0D658D62E35EB8D,$346BC695654263FF
    Data.q $7E35A7C682F8D1CE,$32DB3264AE73B1A8,$0307B10000EB4B3F,$37B633502010000B,$E29C6A378E8B8577
    Data.q $38D36E88962CD77F,$4A78D2EE35EFE356,$0300E9000005EB82,$4181D7502010000B,$2DC69D7E54B61A13
    Data.q $38D3CF4CF0DBEB1A,$46FC68CF8D30E344,$183C48000253C0A3,$9530BA8100800058,$D84AB71AB5D52E62
    Data.q $E35DBEFFEC2EDBA3,$40BD68E0927F8D28,$0058181788000132,$02E350B276810080,$0AAC223E2CDB1B8D
    Data.q $C1253E35C635ABCA,$90000BDFD84C7AD1,$4492010000B03034,$F11E562CDEABAC9A,$5AEBF077C71F1744
    Data.q $79F1AB5AD1C8C649,$ADA869425424878D,$B03071D0000BDFD8,$4CECA54AE4352000,$D8BE993920109B26
    Data.q $4BA232782FA657A9,$EE7D93B974A8A29D,$85DA31E4F0EF1AA1,$35DB1A1DA7BEDF1F,$5D32F3C69F71AE3E
    Data.q $0291029A2334A52D,$95960661968FE400,$E6B3A5F38D13FDD7,$AF501C2447B5E5A1,$B05CC0003722C0C9
    Data.q $FA86AC32263AAB05,$C09612E58D12C6B0,$347B31FE79A762ED,$AB57EC9D8BE9939E,$812EC36E07D7B21E
    Data.q $447C4977978855B2,$D24E35AB867EC822,$9A2E3DF56584BAF8,$E9969EAA0BB2D5CC,$000BFBD8DFECAA0B
    Data.q $876581ACDBD8DCD0,$DB790BB538D2AFCE,$4B8D7DB6120DDFBE,$02910E422D560693,$E93AB0F0B2C90080
    Data.q $81F26C822ACFD876,$3102467069D8BA3F,$5078D51E42D561B1,$6D5CB0913F1A3BE3,$9AE0C0ECAF5B66FF
    Data.q $94364C9EFD6CFC18,$B6B86DD88128B725,$E5BFE0F50933F24A,$500000231709E522,$BB480002C0C11E7B
    Data.q $8313CE7912C16900,$3D33FC07D33A976D,$8B1CFA29D8BB5469,$34DFFE04DB083EAD,$A265E9C69371AD7E
    Data.q $27133BF966E4DBA5,$94C5CDBEE7EC3C2B,$D2F659FF2FFF85D5,$2C0C0F0AAA00006D,$CA4D1136A8002C0C
    Data.q $F4CBCDBFED169019,$A0E8834668347872,$DB3D946E12CD8C27,$6AF203EB3C334593,$CA6E128BCA93B81F
    Data.q $1AEC7048F7F0DAB5,$E61480075E58717E,$B032544AAC0C4698,$EFC836861964932E,$020004722C0D0692
    Data.q $90F683E721C9E924,$07CFBC496C28898B,$E9D0B84B8C7C48C9,$EEA73016461206E4,$692BF1A13E422E77
    Data.q $26120005C90A1AB0,$02C0C0C6AC0C0C2E,$8BBC9019EB488380,$B1A39F7F2C25C38E,$2CA7A3E265338251
    Data.q $C22F5FE0FA649481,$848F78D2AE9B6AA3,$EBCB6264F61F9052,$036DD1B48002CB6C,$C4BBF6B1D247B16B
    Data.q $2010000B0369A6DB,$AFB0EDDADEF6C571,$20C92AFAD3617090,$4E63350ABCF2B372,$A12DBE34138D16DC
    Data.q $4800787D42DDFC3E,$2C0C5369ED581807,$4B60A4B100A54800,$7B83849378D32FE0,$EF9D62976264BED0
    Data.q $2BDC68771A9BE442,$60608920001D7961,$009548002C0C17B5,$A84A378D28ED41B1,$B3FBD8EDA3C03E55
    Data.q $C6A0F97B559F45C2,$003CD229159C2567,$1606073AB0301090,$F7E4F80C8042A400,$F2AC79D05638258F
    Data.q $D9FFB094EF85398B,$048001088B7FD796,$160607F9BDD58180,$4932A0B4F3A40200,$8F0D71ADDF7C4F9F
    Data.q $DF1EDAFCB7446BB3,$2D78F1A03F9FF837,$3025D00026AA9DCF,$24020016060FBAB0,$05BC0A1DAE32D851
    Data.q $6EFDB76267AB11F1,$752584C7C6BDF8D3,$0301A95818036800,$A68A24C613A3200B,$2B7BABD84BC71A45
    Data.q $7EA5ED94EF76318F,$001269FAB84B84B3,$67BF15818538E188,$80079E7957581912,$D986E89015949294
    Data.q $1279E22CAC3C2E95,$244CB18C78FBCE96,$CFC6A9F8D7AF1AE3,$F21BCE4988001269,$EE638AC0C106E9F1
    Data.q $3A83761BCB2C0C88,$F6C15D201000B1D5,$1AD5C662A1261EE8,$78F5BD4EC5A84BA7,$AD8D2CEB9CBB460B
    Data.q $BA001DEB52F3F612,$98844B2560611E35,$2D74804002C0C440,$66FC3356B02DD869,$DBE92B26C92C2017
    Data.q $9A6BF58B8252BBF3,$BE67FD7B05A11A04,$3D0FB38E374B4697,$60607733256060B6,$6B0CB442BA402001
    Data.q $D970A471AADF40FB,$9C7C20DDBF935253,$913C3A049A499127,$FBFBF772E6ADC3B1,$3E0A76156F7FE7D8
    Data.q $A27EFE131E2DB1B1,$FF92B031ECF3D224,$10B03029A0B030FC,$49371AD58F8AF520,$49D1285D087188A8
    Data.q $ED4D970902E35464,$F418E89803A049A4,$CFFD2B218FA56F77,$E35178D898C63E43,$4FCC4DD80EF70969
    Data.q $9A012847B1A33C68,$74160601D2B03064,$520106958182FE7B,$A47C40E279CD0AA3,$C6A8F8D52FB8EB07
    Data.q $5B06EF4AD0752A8F,$303702E789C1A05A,$5EB46E1249FFAF6C,$E2284F3CCEBAA127,$7E8C958845D161EF
    Data.q $05D8FC6BEFCFDFC4,$0C01DF2248842EC9,$D3A0B031004CF4AC,$2D88D4804DA56060,$5523892371A65F91
    Data.q $130E12A5C6AD6449,$8CC6D7425DA04492,$EF612B9C69171ACD,$A16689697BCABE7F,$E34AFC6B17E4B987
    Data.q $177097EE35DB1AEB,$32B0305DDBCD04C1,$05E653A0B031AFDD,$A7340D8805465606,$CC2A93479C38E27B
    Data.q $C7DC6AF710EDB04D,$5CC25664989A0E84,$A15C39F76468AB29,$F2C5C7B942835471,$9CF8D79F03B384B8
    Data.q $6060DE204C9EC3C6,$13FCD4E82C0C0FA5,$FF0FE72402A32B03,$8EA4D1E1E8793E35,$D856FC892C422E75
    Data.q $956EAA0EC1AD092B,$96698D16E2F8D070,$47C8C5DDBC683674,$F58EE68178D01E34,$C160609D2B030204
    Data.q $1E499A402160609C,$C3E9093571CF38A6,$CBE347BFDED5AB9E,$8D64A4FCD052E5C2,$F16F180BEE12B5C6
    Data.q $BD849D711DDD1FFF,$FA6917A013EB7FBF,$A0B0307E958181D8,$FCE4805C6560601D,$7D4923C55FA25921
    Data.q $8AB28577C6857912,$DB5D1ED8566618D0,$275425938D5AFE17,$BF7FD0BD99361769,$E87D99E241C913CB
    Data.q $060DD2B030277F5D,$7EC8042C0C12B416,$812278675ECB6A05,$FE4D58289B7A7774,$BF8F6C4EA119D0CF
    Data.q $73FF56D56E664E5D,$3C4AB1089AABCA27,$8721C0E1253C6A4F,$C0C076560601E30B,$67EC8042C0C16682
    Data.q $95738E74B61427C8,$3150953F12ADA20D,$6E243B33B70DE2A2,$6EC8DD569927E672,$FC3A07384F8B7EB2
    Data.q $9FB6C23DB122583D,$C1F7422DCA1243F7,$180CD058180ECAC0,$FC1DA89403900858,$2CA8A2E168E35EB9
    Data.q $1DCFA5B0593673BD,$F175414C170A8F1A,$57CA9612ADD58E61,$5CC804F9C8AC6974,$AEDBDE2DFB083B33
    Data.q $91A0B0303D958183,$E89FB2010B031BB1,$28F1F6195C2BA8B2,$9E3E2E95C6B0C532,$D45330A87083F8D5
    Data.q $5C122DC704C4B151,$AF6BEC2A365DE5AB,$C157489223F644F3,$EA0B03059CEECAC0,$B003900858181F11
    Data.q $846344B8D4CE5ECB,$7FF211730E49923E,$45833024D37719DE,$2E51F10316DFD93E,$854384B4F938CC42
    Data.q $ECAC0C033CEEE708,$33D2B03071958182,$9781F55A6BE37790,$6C4D957386552848,$B85779FB0934F249
    Data.q $52D5B70E61100043,$138CB8F3E584937F,$026EA84A57D7C951,$6ECB03220B03079D,$367102A039A41EAA
    Data.q $10159DD3CE658EB0,$38193E4F8A7BB7DB,$F15A56A21742CDB2,$70E63809343D8D09,$75EEDC6EBF6124DF
    Data.q $B32ABE3437C89288,$1EDADB7A1F65861C,$FC699FAC0DCA0B03,$6060926981055852,$6D9D2011A79079D9
    Data.q $8FA1AD9F4A1265FC,$D43FA483849C7280,$B984C60900E69C78,$29D3C49E7FF756DB,$BED14B84837224B2
    Data.q $20B03029D04BDC27,$012B0303660B0302,$A74B608BDA155A74,$9827C047D00D5CE6,$9E64734BD13BFA17
    Data.q $F12238343B528B9C,$6D84AB73B1B6A65D,$0DDEA77C4E0A8720,$0ED8B03227282C0C,$0C978EB032491109
    Data.q $13C06F84F4EF0F97,$224C0E0DFFB0B8C7,$4AB27345695808E6,$05071D46D2037459,$C25DBC50669827CB
    Data.q $F18F6DEA4FB8D91E,$1CFEEFA8490F1AC5,$224CC16060ADBD4F,$D02859EE126BEB03,$09DD960669269924
    Data.q $1BBC19217E144562,$B1A584BE6402D3A4,$6A972248CC09FA31,$B2A60B855FE35B7C,$8972E34DB823158A
    Data.q $4FBD6EC96CF9B2DF,$8AD2844FE10B6C80,$9581812A0B0304ED,$2F13BE4FD2B03042,$2E25CD13648BD951
    Data.q $24ABC589B1CA0044,$B730F6562B67F4D4,$6C2417DAB5093AEA,$6B5C674E405B6C52,$DAC0C8895058183B
    Data.q $C6B0364934CC1F4A,$68CC804B273DF213,$4A84C1305C9F41EC,$4B9BBDB52C1DA2EF,$F1A4F02C4B338705
    Data.q $4BC80CED2E4E848E,$58182D6DBDE70E35,$2B0306D958182350,$926BFDE6A3BA7481,$9AAADBAB5612A1A4
    Data.q $49341374F284B7FC,$F6D8D92AC071B1AA,$63892F3070953F89,$7EB2704B67573983,$B099E9936CFCF1AD
    Data.q $AA0B030577AEA415,$DF8D31EB03222DCD,$2C0C5A42B379650B,$D3B6F7A5943CF79B,$92707301F1097903
    Data.q $D03FD0A6ED8DDB84,$55F992D8309EA91C,$4AE49BBBD84BB71A,$DFB7BFA3776AB652,$C0C19DEBB6F2CA14
    Data.q $581816CAC0C0D982,$406C402D3AB03709,$54256CA1459A43B0,$4EA129FF01BB9166,$329D2D319DAD64F6
    Data.q $E34DBFCBDB491323,$F69527D2500E0966,$46FC69D7C5495BFD,$C14B751E4568E5C2,$0E4ECAC0C0B982C0
    Data.q $2520149D384AC0C1,$63AA14696149D46F,$CB84D55097AF78FB,$4C3890A540D0AB09,$16EA24BB5A66EDD4
    Data.q $D964E61C7A29558D,$B3C6A3FC681F8056,$34BB04D95CBF3E75,$C0C7288948A6D7E3,$C0F886CAC0C0B982
    Data.q $A84F3ECDD48042C0,$B63350FF13C19293,$1DE9B4AD5596DBD7,$EBE06CB42492CB32,$1B3AB47A2DF930A9
    Data.q $E26521BD5AE0962F,$D01F9E2E05CB6A23,$B776B5E597AA4FB8,$BF4790F570ECA84B,$9284AF60CFBB5827
    Data.q $55D59E027C7B16D4,$1AAC0C15A82C0C15,$BAB03399158AC0C1,$3760B501E1040671,$B1ACFF1C27DBBEDB
    Data.q $55AE49B0CB478983,$B76BF4B621CAB0DC,$AF09F457E1722F4B,$E005CA78616DB7B5,$CFFFFB0B8EFE691E
    Data.q $6234DD7EC25371B4,$7FE35ABFA0D59BE3,$C42E031EF2231DBC,$959F0542423BB9CC,$EC24BB201220CF65
    Data.q $C5704A8FB543B765,$D70BCD929D839EEC,$AB030671D6A0B030,$996D75AB03008273,$450E6402E5AB0329
    Data.q $C16A03C90383E03D,$1F85C384B9FE78F6,$307799A26B407095,$A6D67BEF79EBCBC3,$48EFFA50916C6827
    Data.q $A4C812CBFB4DA509,$4384B1FC3DCD7E4F,$7634877804F80F9D,$5F325B6E13EF33B8,$687FC6AD77810197
    Data.q $B5BDB798CA93C77C,$FE23F6DE558F5AC1,$E24A28B5BD327D31,$D7DF2113299E35BB,$EB64ACFBBB825FB8
    Data.q $AC0C15A82C0C43E2,$5321ED58186F8EF6,$D2FE724057275606,$788CED42EFF6162E,$93CB0941F64EB122
    Data.q $F3E44B45BD29B999,$E5647B825F3AB07C,$106D66FBECCA172A,$0C1F7AD24970961C,$19FDE7C6BBFDFC4D
    Data.q $22F181B31073A8EC,$E738907ED3440709,$20D8D61E342FE2E2,$94E2AE9961A9A2E1,$61626171E8FFE1AF
    Data.q $FFDBC738D54F9E7B,$7265A6F658961E6B,$75AB03042D058185,$C0C265E056756060,$81C74931AC16F4EA
    Data.q $FDAB837A7BFCE821,$E084CAEEEDDC6BF7,$30C27AF75836CD6A,$674D25D9FC4AC467,$4BB57F5934976348
    Data.q $BFC6A77101736EF6,$12C7EFC6BBB680F8,$2B3544975924EBD5,$B9CFECB938D14E42,$33F987304B3FFF26
    Data.q $93DA7D94E6EE7DB5,$5549B6617D6ACED4,$1808D05818542682,$2EB1F9D58183CD58,$379F480527560613
    Data.q $23BD9B18D00221E4,$8944BD32CBF7E4D9,$72E81F6DF81E9910,$A6C6AB7804DBF09F,$FD09E91C3D461239
    Data.q $8E6178D5DFE84F68,$C894252BC049B7F6,$F3ECB24F693912CC,$771A1DD513C2B0E7,$B0300FDCD2B47049
    Data.q $60ED56060E79D1A0,$EAC0DEA47723C560,$FD30F02FE85900A4,$31716F2026C09A1B,$9CF89CB6264F45F2
    Data.q $5AD7FBDE5042B764,$7DC1271C74E61B17,$505DFB8C77AD245A,$6553DC6AF7DFDED8,$001F6AF3A4F61B00
    Data.q $C15CD6DACA0975A1,$D2933C3FAD989EA5,$AB03059A0B03179F,$6D53E31BF158183A,$6F015DE4804A7560
    Data.q $26C0266B42EFF612,$2EC509653BF9D766,$340EAB595603B1EF,$F46FE89F6CECA2E0,$F79E7DAF81D836BE
    Data.q $9CA489E1BEB41B67,$D79C776FB6431741,$2E5DF8DAC17D6DB6,$70EFA4A4F1A33F36,$CAAC0C02B416063A
    Data.q $AE9B89ECAC0C33F3,$3184D120129D581B,$274AB0BC4255B7E9,$5AB9BCD4D6E4FB97,$C07652DC872A90BF
    Data.q $094AE8BCBB2ADCD0,$277C9F61251D6F97,$E1B0EC3DBBA53DB1,$F06E1E5B66A4B29E,$936E38EF6FBF4FBE
    Data.q $427D29B6D811BB05,$81848265A6F6F7A6,$606160608F9EAD05,$402D356068BA17D1,$4A977A4B64E43C6A
    Data.q $EC01B0E741EFF676,$1293F540763CEF64,$F61EE7FCA44C6DAA,$4E2EB18F8BBD7A24,$8B8EF8B6F6F42FF2
    Data.q $8250B817F3EF1190,$DFD5B9E0CDD24FF6,$F6D7386C38498F85,$95A0B031184D2486,$AC0D174160616060
    Data.q $CAE2DD8A9880AC4E,$DB1F2D85DA0AF71A,$43C690FC4E5B3721,$CEC73785AB3706D2,$1FE5AFC66E696B75
    Data.q $93ECDC10B6C38963,$EFF22F7E4C1891FF,$E12D9FD4ADD496CD,$B0E7479207CDCCBF,$51E9584EFE55FFF7
    Data.q $C0C108AB8F9F7673,$5D05818581832E82,$B8D7B9D03B7AB032,$B2F6812F542A5EC2,$27CEFFE6A6E527CC
    Data.q $A37B7BDBB0C8765F,$6BFE434E05D17892,$E9BB06DDC27D3B54,$FC06DFFCFB3E96D9,$DAC7FA2F6FFE8AF3
    Data.q $F4447C44C6D7BE01,$94241FFDEFB0C27B,$5DF674033FE0DC6A,$5A67CA1225C5C9B3,$0935D63D84BAF962
    Data.q $09D05818B9399880,$8AC0C5F93BBAB030,$16402DDAB0351D07,$383A08979D3D82B9,$3F844D8845DF3E11
    Data.q $E8F87ECEE973F1A5,$5AD5F6C82CBB26F2,$FD0BFDCB097189E5,$4A2611304957CD7B,$3E0D8E7FCE7A15CC
    Data.q $F104DBDB59891FC1,$3BA15ADBA379FF62,$3E263BBFAB6324D8,$0301490DEDE993EE,$36F3775606093A0B
    Data.q $4ED581A8E9F75606,$95DB29902FEBD201,$3DF3AE5630E80F24,$801F3DF1A03E4C9E,$387BFCF3C4EA1D4B
    Data.q $7B96422E31F805C9,$FFA2A9DD8393EF07,$45BFD95CA1A2FCBE,$51B048733A5FA689,$BBA13EFF6EE760EC
    Data.q $60E12D3F58F6C422,$58183F4AAC92C3E1,$0CF7560630898DD0,$D2AD8EE4F8AC0C07,$5926C4029DAB0366
    Data.q $741A7CA144E15956,$D3DCD1396CEF7B07,$6C69ECAA57B8D1BF,$5D1B7AFF5E9476D1,$088AA8B1C4F16F7C
    Data.q $80D192D5C00D95CF,$9B17EBC79A11C724,$3BF1ABFF9D39BC49,$09BA0B0300492317,$088F8AC0C0F75606
    Data.q $9512012ED581AB69,$B937400793CF3C4D,$DB17908BA2E207C0,$7D43B7BDFDFA75F4,$FCD08E370EC46DB6
    Data.q $1AF4C737BDEC45D0,$8D4A127A72D9449F,$1EEAC0C1B7416062,$BB5606ADA0F15818,$6C95DF3C4FED8804
    Data.q $EC244BC06210CF2F,$AB43BAAC768BB5E7,$D5D96E6EC0D89CAB,$78859A1C2F5BD93E,$227A371AB1F06360
    Data.q $16062F34BBC48DF9,$356D2AC82C0C09C4,$B07056350712EAB0,$3A849D7E96D59749,$56F0574AE17100DB
    Data.q $CAB13973A951E369,$DBB2B52EC3896FFB,$6621A9A71B31CD5A,$2E656D5FDB0B96D8,$1B93875273E2C4AD
    Data.q $37105818590AA1D1,$3AC0CDB4AB20B030,$B3E4F666BA1F7068,$6D8B499477F7ECAD,$B9374B5330F80E3B
    Data.q $27DEBA475B880108,$9FFC16B1E4E5565F,$1F102BD926EC2496,$F363E25F606C6310,$ED26CA9665DB1AE3
    Data.q $6416060E120B0302,$774BB9755818B695,$E464BB4DFBFF568C,$08D7F97E99723D98,$5BF2DED89E210687
    Data.q $484FEF7AB4259424,$63B99D49A2AB07E3,$727DE4E6203891D7,$7091EFD97B0956FF,$C18A41606065B3D8
    Data.q $65AB0316D2AC82C0,$9BEAA67856BEDBCB,$F6C001615DE2E637,$43BC07EDAFE6DED5,$CE64A27D06422235
    Data.q $F3BD8012159A06D8,$DB2C1C129DF5B076,$030426703A4BBED3,$969564160600520B,$79458320132D581B
    Data.q $09E1DFA0DCA4C8F9,$4AB79ABF8876CD42,$9E83EAA07097AF23,$56E224AC3FFDEA48,$C1490BAFD9126509
    Data.q $F3F2AB2985587CB6,$D93EDBD8486F8D3E,$300C90581824554D,$896AC0D4B4AB20B0,$D2C36415899A9900
    Data.q $8A482B9C2EB954C2,$AF7E34DB1EEDB108,$6D9803F5A584A771,$45F982C9E60FE33F,$A6F0A9B6415978B9
    Data.q $259B1F130D240952,$489F55FE3134BB94,$8482C0C19BE3744D,$332D2AC82C0C0EE5,$67F6227440225AB0
    Data.q $311312FEBCE4FBE3,$0966F1A559225C48,$2ABD696125DEDDB7,$7173B23DE8E465B6,$0031129C5058CE49
    Data.q $26DE3453FFC6C449,$4D517E3567F7C0E1,$0C2C25756F209884,$AC82C0C0EE68482C,$4069A769AB0312D2
    Data.q $6158E364FBA1D173,$CC30902048E7C54A,$9F2D756489EB5A79,$E5150CE3AA6309A0,$D8D121426512BE98
    Data.q $087E2CDF2CB76CAB,$ED9EC8990CB0FB76,$6E0568A2AA4D86CC,$21140905818E5D60,$EE6E9AB193658191
    Data.q $31FB3B2737B57EB6,$6E76581B94D920B0,$9CCCEC6971CC8D6F,$F2C7C557A9E4D4D1,$40DA727D9AF8F909
    Data.q $6224C31007CEB6B1,$FF55BCEBEAB7D835,$63C96ADEFDFD5BF0,$15E6BBC8CB6A6179,$FF7D08E1A9083439
    Data.q $B7AA2A8323D33DB7,$08B07721777ED8EB,$58182A69AAB15199,$C2447AC0DCA24900,$944520B030557A4A
    Data.q $587DB93E3E26581B,$2959D65C2FBC7F1E,$5ABF97A9908B945F,$91DAC5B6B36AC4E9,$94B293A329C9F7C6
    Data.q $91452344EF0901CC,$7E497F577273276B,$4960E1B4ED83ED59,$520E9A62D3C9D70E,$C2F37FBBE8D7C4A4
    Data.q $0092A402E53C8CA2,$747482C0C108956F,$58190D3CC82C0C1B,$84D56AE732C16F0D,$A18BF42390563BDC
    Data.q $71BC4BE9F4E9203F,$2BBAA0647D4E5E77,$3B4EB6A275E03B65,$28A8626906CD1F5A,$E527470B93ED8763
    Data.q $F80EA24FB34A7AAF,$1B599EA3FB726B9C,$BED606FD84A41606,$20B03183EB9CAC9C,$A81BAEB0323C4AA5
    Data.q $05A36DED1BE47731,$A2FCF4721321CAF9,$8647FD1D203C93F4,$98527D63D1727227,$513AEDC43E7C0F6D
    Data.q $92C13B1A41934F5B,$2E1ECE57B11F8C82,$233B57B636CE5FCA,$B030329058180B52,$10094D606BD4F320
    Data.q $4A9E7D5967A9165B,$4645FA51C9F7C3F8,$0C0D7C9A290897A8,$8EB54845414B6514,$08729345DCEC9DA3
    Data.q $439EF4C74469062D,$17E71B211534E426,$AA520B0303307F5B,$1EA09DF320B031DD,$22AD4840FCB7AB03
    Data.q $5909EAFF72F9FEE4,$279D5521C1A257DB,$B2ADB02A35925037,$73B57BF7C459F6C3,$0EC6290B6B87D69D
    Data.q $CBCDEEE727DDAEC7,$D9F93DA2E5FB47F6,$222BAD46F28A9A6F,$606E51FCD2905818,$18E7C3F2E934AF6D
    Data.q $5E676B03225A9058,$B92AAEC8A0E9F85E,$E061ED560C0A9EA3,$84E47B31F772F9C1,$BC4E54828B2E45F9
    Data.q $8F695FACE8C4E9E6,$34BFA3C96B843F29,$05D4C4D57D3A7135,$2381F8C746A90052,$B2FDCF9149E6CAF7
    Data.q $C0C7C4615DDAAE5F,$A400B030402FD802,$AA9A9F773F2B0376,$93F77279C1F2B24E,$B0E365BB89E8F2BD
    Data.q $2C8935A40F7A2626,$5CA8FE422AA9C82F,$8F3B90525EFA987C,$7D2321BCA06723DD,$45B244D02F8A0EC1
    Data.q $85D60C149AA7C4FB,$8F66381E5F383FE6,$4D789D290581889C,$16060AFA33BD5819,$9F27DF1AC0C88D64
    Data.q $C0496A98FE562C1B,$7A3B65C3A2AC4756,$05632D96EF2707E4,$66A901C48B1DA159,$CF27213D5B2CA4D1
    Data.q $E52786A987634EF3,$04E2621D6D389D76,$C9F66B6320B46319,$C278D3AE1F231526,$002C0C7689AC82C0
    Data.q $4379F2CFCAC0CDA9,$4F9390A4FE349B1A,$C82F130BCB1A676A,$F364262B72382A06,$76A0C792C4B949D2
    Data.q $A61657CBC9F6C39C,$9CD07F56C805BD6E,$1FAF945543905630,$4990581869FCD628,$E56066A9A600B030
    Data.q $7CF25E128ED9FC2B,$A52F537D7F497C8F,$5270B73DCA7B20E2,$B5ADD96729305F0E,$F63681DAD7F20B4B
    Data.q $7A5160CA321D67B2,$217CA4E8DD641797,$0B0C82C0C1F7673F,$C550FEE9802C0C76,$2B8D12FDF8CFCAC0
    Data.q $225B013A23E5E577,$FB3100A4C82941C2,$12793A19FB1557B6,$2D30CA2C2EE738ED,$A848548B13EE5903
    Data.q $06082AFB3FD15908,$600E00B03057D016,$56EC5F965F2B0336,$0B28BF36DE35CBCE,$16E492F932C83269
    Data.q $09A7DE4168ED6517,$39224803C90F5D64,$0F8AB38A872B204D,$C016060880402C0C,$C8048AC0C9513ECC
    Data.q $9E38D26E34B38D7C,$24E816E48C3A02E6,$88B28A0B59C8934A,$5189F68884FA0116,$C27FE0E7A57D4C9D
    Data.q $00581856268802C0,$2EB107CAC0C95007,$CD33647DAB5E341B,$96768F4928181004,$B0FED0100057DC35
    Data.q $1824ED8CD8F94540,$802C0C722A070058,$6CB4560641C4FB03,$00E64B1C9025A97E,$21153E8E768B3BFB
    Data.q $3A3065DD8E00B9B8,$16060805A7FAAB29,$A6640E00B0300540,$68978D38E4026581,$A92908B9400E3970
    Data.q $CD30012D0F4A2900,$DC97CA4D0D964148,$043B999802C0C2AD,$132C0D3326600B03,$9383800108BA6720
    Data.q $63BD28BF31940008,$0B0304490F9D5905,$883802C0C0FE52A0,$2848A757E6CB0372,$1A4B15500000089D
    Data.q $14EE4960D8720AAB,$B0304402CA802C0C,$38FF59606E526600,$191A8000073A5842,$0AE329C9E2E8C82D
    Data.q $C0DCA26A00000B03,$000012692B8403B2,$766E163BC3DB15A8,$3500000581827CB6,$0524384026581911
    Data.q $C410082CB1750000,$9960644CD4000007,$1EA0000039A5E900,$0002050968CA4D16,$03F90805CCB27500
    Data.q $927924B062EA0000,$1458198BD4000007,$C173C9BA80000069,$085819803400001A,$003F561BA8000010
    Data.q $582DB2C0CC11A000,$479290680005E36C,$0C7263E5573CC4F9,$FE072C61900000B8,$355517DB000300BF
    Data.q $0000000072B1D9DD,$826042AE444E4549
  paralax_png_end:
  
  
  herbe_png_start:
    ; size : 3124 bytes
    Data.q $0A1A0A0D474E5089,$524448490D000000,$8700000020030000,$3D81EE0000000608,$58457419000000A3
    Data.q $72617774666F5374,$2065626F64410065,$6165526567616D49,$00003C65C9717964,$DA7854414449D60B
    Data.q $C71D65648F4BDDEC,$E9A666F7D55D53F1,$808C204406186199,$1889A0C6A02F1882,$626057C6CBC6EA17
    Data.q $15F19BE097C6E262,$8024285CAE8175B8,$4B9C5C83A8B722DC,$FD277FA4F3CA5F4F,$7D34C333774F5450
    Data.q $3EAEA9AE93927CF8,$7539FE62D6F9EA75,$E0000006E3C78C19,$0180000004B19856,$0000008030000004
    Data.q $0008030000004018,$8030000004018000,$0000001006000000,$0001006000000803,$1006000000803000
    Data.q $6000000200C00000,$0000200C00000100,$0200C00000100600,$0C00000040180000,$0000040180000020
    Data.q $00401800000200C0,$0180000008030000,$0000008030000004,$0008030000004018,$8030000001006000
    Data.q $0000001006000000,$0001006000000803,$1006000000803000,$6000000200C00000,$0000200C00000100
    Data.q $0200C00000100600,$0C00000040180000,$0000040180000020,$00401800000200C0,$0180000008030000
    Data.q $0000008030000004,$0008030000004018,$8030000001006000,$0000001006000000,$0001006000000803
    Data.q $1006000000200C00,$6000000200C00000,$0000200C00000100,$0200C00000100600,$0C00000040180000
    Data.q $0000040180000020,$00401800000200C0,$0180000008030000,$0000008030000004,$0008030000004018
    Data.q $8030000001006000,$0000001006000000,$0001006000000803,$1006000000200C00,$6000000200C00000
    Data.q $0000200C00000100,$0200C00000040180,$0C00000040180000,$0000040180000020,$00C0000002588030
    Data.q $0000004018000002,$000401800000200C,$401800000200C000,$8000000803000000,$0000803000000401
    Data.q $0803000000401800,$3000000100600000,$F268D0C700000080,$CBB7FA0E0D9FE58A,$6B6DDAD76EDDB6ED
    Data.q $036AD8C3FA5F1BBF,$EECD8640E4018000,$681EDDA5797292D9,$A995BB57FB768DB7,$0C4C19EB230CFDE5
    Data.q $329006A1C0000036,$CF9B7689DBB42C74,$B76ED93DBB6771C0,$5E6DCA1219DBDBB7,$21B4C1F9F98BB76A
    Data.q $93FE3E194D8310E4,$FD000000D83BAFEB,$7B76E9EDDAD64019,$B4EFB76A5FF9FF27,$D736ED6FEDDB77DB
    Data.q $CD84865CEDB9AB6E,$819D7BFEDDA37B76,$B06ECFCB6E6C1BA1,$F29FB2B79B0666F9,$C1887CBC8C3397BB
    Data.q $F948036638000006,$F6ED17EDDB97FFCF,$6ED33BAEAE5DBB5C,$140CD58B19CECD8B,$B832176EDAB94865
    Data.q $94F18BD9CAEB9F3C,$D7D9C62C1907E6C1,$B5865E766D9ED953,$78F0651F67CEDB92,$16BB4BC039B0727D
    Data.q $2F563A4066EF7F72,$6EDF1C795F1EAAEB,$FE6B3278F44F5FB7,$F48FF1E9D3BF064C,$F7A71EBD7CEB2978
    Data.q $E3ECC5E3D566F1E9,$F43D0F400E3D6999,$8F43D0F43D0F43D0,$76D99006BD8F70CF,$4CCE766B1EDDABBB
    Data.q $9019CA3867280594,$A9126714B39D9B7B,$296B16ED85993E5C,$E6C194CAEA133FDB,$F5F775D7257D09E7
    Data.q $3DB3979F986BEE56,$651E84EB85E76194,$983DBB7CE38E4D5F,$55D25E5089E6CF20,$E81C73F641F63A5E
    Data.q $1E87A1E87A1E87A1,$35EC7A2F47A1E87A,$B80799DC81E62C80,$9BBBA8592B7E4D5A,$7195DF91DC7FF7DD
    Data.q $90BE46FBCA812372,$ED73E84AF1646F48,$FB216E130E7E68F6,$04BCECD7BFC2CB5B,$3E79B73B7BAE54EB
    Data.q $BB3577D094C6F6C7,$9CCBF289E6AE6667,$CC2668FDF729794D,$0DE6EDB96BFBF98B,$1BE039B4DEFBCF4E
    Data.q $0F43D0F54698F7EB,$D0F43D0F43D0F43D,$2C83200DA63D17A3,$B3379727BB76D9FA,$94BD0794B6D53370
    Data.q $5FB72D73ED395B58,$ACA4F9D9B9FD22C9,$DCA59B72D7A1136B,$66AE093D5F3E896F,$57DB736680F36781
    Data.q $41566F734C91EDDB,$2BDE766FEEC54BCB,$3F7C93F7953D4E52,$18E64ED7A72D7EFF,$53BEB5328E193257
    Data.q $279BBF42ED1B904D,$A7D7012FFDA2795D,$C72FAC6FD4D3A04C,$A687597BCFACB9FD,$0F43D0F5EB1BDC39
    Data.q $D0F43D0F43D0F43D,$D59AA653463D37A3,$6A2A77401E54E4EC,$166CD5B4EEC3BAA5,$56E41E70FE772E63
    Data.q $B8A4CB9EBECA5D62,$3807BB20E40F489C,$7BFCF9FBF9063ECE,$E7E42FDB91B77F31,$B76A5FB094B98489
    Data.q $CBEE3EE6F776E51F,$CE5165B775CA5EB1,$53F7227F5CF9D225,$2CFEEC8A757CFFAE,$4C95F3165609FBDA
    Data.q $FE437BAD54266F92,$91BF409953863C89,$6C992BD44F277AE3,$7A1E98627CA6695F,$87A1E87A1E87A1E8
    Data.q $2033B4C7B9F47A1E,$7728C8242EB8992B,$906EBAA66DEEBDD2,$D3B9D3C726AC3D07,$DFCA3554CE5E5132
    Data.q $0BA0157CEF8997DF,$130D7DC85905533C,$B95734E5AFF13E71,$90B75CC5FFB36FDD,$2FBFCE3F8B2FBDFB
    Data.q $D926EA6398BF41E4,$C244F6EDE3CDB92B,$CA5DFD973D1267AE,$FE8D9BDD1F646FC2,$529C9EE3ECF5ED92
    Data.q $CE1F3EC83F0B2A7B,$C5279AB589AFE393,$46F7AF712361D672,$F43D0F43D0F43D23,$8F4DE8F43D0F43D0
    Data.q $CA67AFC059480369,$B7A6A85A0E9D5B3A,$C272E9154D48B541,$29958D375D53542C,$33753AAA7D898BF1
    Data.q $C99FB721674A729C,$B0DF766B5D7DBA7E,$CAD8E398B60B2E73,$39698E4AE7ECB9CF,$BBAE6F76C73E75C7
    Data.q $22A999E39B39BF98,$AB37D8E6CE31E52D,$3FEC59431E6CF3E9,$F099DFC24DFD3266,$7DCF5CB59ABF7165
    Data.q $CF1F693DD2A5DFD5,$1E91A37EF66D9EFE,$A1E87A1E87A1E87A,$00E4C7A6F47A1E87,$0E71FB76C3FDFE52
    Data.q $899B00E6193B2E6A,$9BA6FE51E5D5339F,$CBE0E78F77F36704,$BBEDCA9F2E58F3D4,$CA37935E278DD7D7
    Data.q $7D67D9737F7541CF,$B20F02AE3B6E4AFD,$D994EACDF83CA320,$1D5CB77E6AEE2AD9,$A3444DEEAFB552C3
    Data.q $CB81662D7ADDDFEA,$728DDF3B37BFAC29,$CCE25192EEFDD9A1,$FC559BDF73E62D67,$71BEECDAB5653993
    Data.q $43D0F43D3768FBA8,$F43D0F43D0F43D0F,$1A1F23ECE18F65E8,$B1D79F7ED56BCA40,$75EFEDED3A8B542D
    Data.q $D77F56CE19354198,$49FB31AF2B66A1BD,$F6260E82268D9135,$FA944F298375DFBD,$F73279F946D99BF6
    Data.q $0C793309468164DB,$8BAF56BD54698ED3,$DA74CB5F50D39DB6,$EFE42D625AC25A7D,$DBF9338F596BE8BB
    Data.q $7CFCBEDCD9FF1C8D,$F43D0F43D0F50121,$97A3D0F43D0F43D0,$55F952652033EA3D,$729832F6E0F26C16
    Data.q $E20E5DFEEF039879,$D07C0789B9F01CE9,$BF7E53C7BEE41F7D,$14E6AFBFCB590598,$AADE5D58618E61D3
    Data.q $4F1ECAF2EAB9C426,$4678EAA9D7DCED8A,$A642C0527DD4FD39,$43D0F5BFDD73B7C7,$F43D0F43D0F43D0F
    Data.q $7DA2D5463DAFA3D0,$B0E7DA713A7EDDAB,$D329B9F894F528EA,$DECD7BB3EDD6CDD7,$4D52BC8595CD355C
    Data.q $AFE9D50618E71FA2,$5B89E270D7F4EAF9,$BD6212804F2677EF,$2652F50996DCE27A,$43D384D5EA5A72C3
    Data.q $F43D0F43D0F43D0F,$EE0EE8F6DE8F43D0,$41E05300E3B8C4EE,$3E440DC2F7FEA617,$B38DEED7D1F3718C
    Data.q $7EAF8F698C40DE2D,$284E4FBB117ED243,$FBB34CECE63E51C7,$27D199F74E252D05,$43D0F43D0F43D0F4
    Data.q $BA3DCFA3D0F43D0F,$25C5F3B35EF9582F,$CD3378B99B97E9F5,$80B56CD223D831AD,$BAB8F10E667EEB37
    Data.q $F766B9C7A6E8184F,$FBACAA72904A618B,$3D0F43D0F43D36A8,$6DE8F43D0F43D0F4,$1BE5BE99F2CBF28F
    Data.q $337380DFBD9AD714,$689E84F830A3B627,$625CEB227989E71F,$2D39731329359EDC,$1E87A1E87A1E84F5
    Data.q $B9F47A1E87A1E87A,$91F29322F941B947,$E0D5C7564CFBCB5A,$0393EE8C5D2C7653,$F457E66B7DD834CA
    Data.q $0F43D0F43D0F43D0,$2FCA3DCFA3D0F43D,$167EECD5DC8817CA,$827C29F06716DF71,$A7DD394DE553D394
    Data.q $1E87A1BCEF9F7406,$A1E87A1E87A1E87A,$BE51FE51EE7D1E87,$3EE1EBF0F9B56538,$1CD26FBA94730B0B
    Data.q $1EA2F9A73EEC1266,$87A1E87A1E87A07A,$83C5F947B9F47A1E,$75EB6316FE67EECD,$3FB65978DF74C34B
    Data.q $7A1E81E87A07A1E9,$74E429947B9F47A0,$A6A835ADDB534BF5,$D0F40F43D1C4EDC2,$18F6DE8F40F43D03
    Data.q $253DD9AEFCD23ECE,$97FACA61647288D2,$A1E81E87A13E4BCF,$51ED7D1E81E87A07,$4A76FA2FC4F1C0A6
    Data.q $3D21E4129E3CB8EA,$43D0F43D0F43D0F4,$80328F73E8F43D0F,$8A368F089862270C,$07A1E81E87A07A1E
    Data.q $41B83AF747B6F47A,$9C9B04F0E3C2278F,$D0F43D0F43D0F5CA,$3D97A3D0F43D0F43,$E5D5DBCB99B200CA
    Data.q $1DD3C7931F19453E,$7A1E87A1E87A1EA3,$47B6F47A1E87A1E8,$D1F356E093748037,$4C38E21C63E352D3
    Data.q $87A1E87ACB89E384,$E87A1E87A1E87A1E,$A6AF5900651EDBD1,$EE06F8C01E3D8DA6,$E36BD3971E82A8EC
    Data.q $D0F43D0F43D27589,$DE8F43D0F43D0F43,$1F8389E5C80328F6,$6C528B38FC7A675F,$AED851D0D4E7C737
    Data.q $3D0F43D03D0F58D6,$A3DB7A3D0F43D0F4,$D337AE5755AF200C,$30602D3F46ECA63F,$0797D565315BAFB1
    Data.q $7E56C82AB7F7F037,$87A1E87A1E87A1EA,$947B6F47A1E87A1E,$D5474E595CD5E401,$3ECCDC935719CA6F
    Data.q $AAB6EBEAEFD7B98B,$87F7FC4706D27DFD,$D0F43D636C8DAFBD,$3D0F43D0F43D0F43,$2FC8B9F28F73E8F4
    Data.q $E1B89ED8C4B5DBB7,$A5E9F5F595FBB37A,$C75904F54E4CEB99,$9F03F66F0C989ADC,$E5369FCB8F78E7DC
    Data.q $1E87A1E8D20986D8,$A1E87A1E87A1E87A,$0001805FFC7B9F47,$96244E3A3447499D,$444E454900000000
    Data.b $AE,$42,$60,$82
  herbe_png_end:
EndDataSection
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Sprite Scrolling

Message par Zorro »

ce "clipping" peut avoir lieu sur une bande etroite (comme mon exemple numero un ou ton exemple )
ou bien sur une largeur complete d'image (exemple numero 2 )

je prefere la deuxieme solution , ça demande moins de découpe-pose .... :)

un sprite est fait pour etre bougé .. pas sur que le clip apporte quelque chose
(mis a part une economie de Ram et de code :lol: ... bref une paille)

en meme temps, un clip pour faire un parallaxe rotatif, et la tu te tire une balle ! :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Sprite Scrolling

Message par djes »

Polux utilisait beaucoup les clipsprites, du temps où PB fonctionnait en DirectX7. Ca lui permettait de faire de multiples parallaxes et différentiels, à grande vitesse. Aujourd'hui, DirectX est entièrement en 3D, du coup cette méthode n'a plus beaucoup d'intérêt, il vaut mieux jouer avec les coordonnées UV de la texture...
Répondre