L'idéal serait de charger les images avec l'instruction BLOAD, ce qui permettra au jeu de se passer d'une bibliothèque de graphisme Bitmap.
Ces images sont en fait de strictes copies d'écran sous la forme de fichiers bruts ; ces derniers ne comportent ni en-tête ni compression des données.
Le plus commode serait d'écrire un programme convertissant les fichiers images en fichiers bruts . Il utiliserait la bibliothèque Bitmap ou autre, affichant une image de ce type
dans la résolution qui sera utilisée dans le jeu (SCREEN 13, par ex, pour le mode MCGA 320x200 en 256 couleurs) puis sauvant l'écran grâce à l'instruction BSAVE. C'est le fichier ainsi créé qui sera chargé par BLOAD.
La programmation des jeux sera ainsi simplifiée. Il est revanche souhaitable de consulter l'aide et surtout les exemples fournis par QuickBasic sur les instructions BSAVE et BLOAD. En effet, ces dernières utilisant un segment de mémoire autre que le segment BASIC, elles imposent de définir le segment de travail avec l'instruction DEF SEG, ce qui nécessite un minimum de connaissances.
Cela peut sembler compliqué, cependant, il suffit d'imiter les exemples de QuickBasic.
Si malgré tout, vous n'êtes pas intéressé par cette méthode et voulez charger de vrais fichiers images, je peux vous conseiller le format PCX. Un certain Franck Bauquier explique comment l'utiliser. Les exemples de son cours sont en C++ mais cela ne change en rien la méthode. Si vous souhaitez cette documentation, contactez-moi en MP.
P.S. : Autre point important à propos du format BLOAD.
Les modes 16 couleurs imposent des étapes supplémentaires du fait de l'utilisation de plans de mémoire, cf.
http://support.microsoft.com/kb/36022/en-us/ ; il est plus facile d'utiliser le mode MCGA/VGA 320 x 200 en 256 couleurs, cf.
http://support.microsoft.com/kb/45699/en-us/.
De plus, si les images à copier possèdent une palette de 16 ou 256 couleurs personnalisée, il faudra la définir avec l'instruction PALETTE car une copie de mémoire écran est une suite d'attributs qui restent à définir. Cependant, il n'est pas compliqué de sauvegarder les valeurs des registres de couleur de chaque attribut, comme le prouve cet exemple en mode 256 couleurs :
'$INCLUDE: 'qb.bi'
DIM entree AS RegType
DIM sortie AS RegType
' (...)
SCREEN 13
' (...)
nom$ = "image1"
GOSUB SauvePalette
' (...)
END
' (...)
SauvePalette:
' *************************************************************
' Enregistre le palette de couleurs utilisée par la carte VGA
' dans le fichier *.PAL.
' Utilise la fonction 10h, sous-fct 15h de l'interruption 10h :
' lire un des registres de couleur DAC
' *************************************************************
fichier$ = nom$ + ".pal"
fichier% = FREEFILE
' ----------------------------------------
' Efface le contenu du fichier s'il existe
' ----------------------------------------
OPEN fichier$ FOR OUTPUT AS fichier%
CLOSE fichier%
' -------------------------------------------------------------
' Code les proportions de rouge, vert, bleu de chaque attribut,
' puis enregistre la palette dans le fichier
' -------------------------------------------------------------
OPEN fichier$ FOR RANDOM AS fichier% LEN = 4
FOR attribut% = 1 TO 256
entree.ax = &H1015
entree.bx = attribut%
CALL INTERRUPT(&H10, entree, sortie)
bleu% = sortie.cx AND &HFF ' bleu = CL
vert% = sortie.cx / 256 ' vert = CH
rouge% = sortie.dx AND &HFF ' rouge = DH
couleur& = 65536 * bleu% + 256 * vert% + rouge%
' 65536 est implicement un entier long
PUT fichier%, attribut%, couleur&
NEXT attribut%
CLOSE fichier%
RETURN
' (...)
|
CALL INTERRUPT impose que QuickBASIC soit lancé avec le paramètre L :
QB /L