CODING ★ LOGON CPCPLUS 40: GESTION EVOLUÉE DES SPRITES HARD ★

LOGON CPCPLUS 40: Gestion evoluée des sprites hard
C'est toujours en exclusivité, amis lecteurs et possesseurs de CPC Plus, que nous continuons, dans cette grandiose rubrique, notre petit tour indiscret des fonctionnalités cachées de vos machines. De nouvelles instructions, additionnelles au Basic du CPC Plus, créées par Longshot vont vous permettre d'exploiter encore plus facilement les sprites hardware de la bête mais aussi de les sauvegarder en vous créant de véritables banques de sprites. Voici donc le B-Asic v1.3.

Tout d'abord, commençons par les améliorations apportées.

Vous aviez sans doute remarqué que le changement de mode graphique avait la fâcheuse habitude de remettre les anciennes encres de la palette standard. Vous pouvez dorénavant utiliser l'instruction MODE sans ce désagrément. Toujours dans le chapitre des améliorations, les programmes Basic de plus de 16 Ko utilisant le B-Asic pouvaient avoir des problèmes sur l'ancienne version. Erreur maintenant réparée! Merci tonton Longshot.

LES EVOLUTIONS

Avec le recul, il m'a semblé nécessaire de faire évoluer certaines instructions, d'où une légère (si ,si, légère) modification de syntaxe de 3 instructions:

ùSPRTDEF,numéro sprite, adresse liste, temps, délai début

Sprtdef permet d'affecter un chemin à un sprite. Le chemin est défini par des coordonnées x, y que vous aurez pris soin de rentrer en mémoire à partir d'une adresse libre. Par exemple en #8000, en prenant comme précaution de protéger cet espace mémoire par un MEMORY #7FFF (pour l'exemple...). La table en mémoire est donc composée de valeurs x et y, chacune codée sur 16 bits, soit 2 octets pour x et 2 octets pour y. L'octet de poids faible est placé, comme il est de coutume sur le Z80A, en deuxième position, donc après l'octet de poids fort. Une position occupera donc en mémoire 4 octets. Le parcours du sprite est donc défini avec des séries de coordonnées occupant 4 octets chacune. La fin de table est marquée par une valeur x de F0F0. Il faut considérer le parcours comme étant cyclique, c'est-à-dire qu'il ya bouclage sur le début de la table lorsque la dernière coordonnée à été lue... Le 3e paramètre permet d'indiquer pendant combien de temps le sprite va effectuer le parcours... Et enfin, le dernier paramètre permet de définir le délai avant que le sprite commence à effectuer son parcours... Au bout de ce délai, le sprite est automatiquement mis actif (SPRON) et commence son trajet...

Sprtdef ne fait pas démarrer immédiatement le sprite, mais définit à l'avance un chemin pour celui-ci. Le démarrage du parcours est conditionné par l'instruction SPRTON.
A noter: Il est évidemment possible de définir le même chemin pour des sprites différents.

Une unité de temps représente 0,02 secondes... 50 représente donc 1 seconde!

ùSPRTON,num1
[num2,num3,...,num15]

ùSPRTOFF,num1
[,num2,num3,..,num15]

acceptent maintenant des listes variables de sprites, ce qui permet d'activer simultanément certains sprites.

Dans cette optique, il est ainsi possible de définir le temps de démarrage de chaque sprite très précisément (et à l'avance) puisque les paramètres de SPRTDEF ne sont pris en compte que lors du SPRTON.

Aprés ces quelques rejouissances, passons au plat de résistance de ce mois...

LES NOUVELLES INSTRUCTIONS

ùSPRTORAM,NumSprite, NumSpriteRam
ùRAMTOSPR,NumSpriteRam, NumSprite

Késako ?

Tout simplement, chers lecteurs, des instructions vous permettant d'avoir accès à votre banque personnelle de sprites. En effet, luxe suprême, vous disposez d'une banque de sauvegarde en mémoire de 64 sprites. Cette mémoire n'empiète pas sur la Ram du B-Asic mais se trouve dans les banques supplémentaires. Eh oui... dommage, mais les 464 Plus ne pourront pas se servir de ces deux instructions.
SprToRam permet le transfert d'un sprite vers la banque-sprite. RamToSpr permet le transfert de la banque-sprite vers un sprite. NumSprite varie entre 0 et 15. NumSpriteRam varie entre 0 et 63.

ùSPRSAVE,[NumSprite,] NumBlok, Filename
ùSPRLOAD,[NumSprite,] Numblok, Filename

Vous pouvez désormais sauvegarder et recharger vos sprites : ALLELUIA BROTHERS! Vous avez été nombreux à me le demander. Les instructions ayant le mérite d'exister... décrivonsles! Tout d'abord, un détail: tous les paramètres entourés de crochets sont facultatifs. Qu'est-ce que NumBlok? Ce paramètre est compris entre 0 et 4.

NumBlok = 0 ==> Sprites 00 à 15 de l'Asic
NumBlok = 1 ==> Sprites 00 à 15 de la Banque-Sprite.
NumBlok = 2 ==> Sprites 16 à 31 de la Banque-Sprite.
NumBlok = 3 ==> Sprites 32 à 47 de la Banque-Sprite.
NumBlok = 4 ==> Sprites 48 à 63 de la Banque-Sprite.

NumSprite est omis: Tout le Blok est pris en compte et 16 sprites sont chargés ou sauvés.
NumSprite est précisé: Seul un sprite de la banque choisie est pris en compte.
A noter: Le chargement avec NumBlok=O a pour conséquence une modification en temps réel du ou des sprites chargés.
Et enfin, Filename, qui est le nom du fichier sprite, et qui est entre doublecôtes ou dans une variable.
Exemples:

ùSPRSAVE,0,"sprites" Sauvegarder tous les sprites de l'Asic.

ùSPRLOAD,2,5,"unsprite" Charger le sprite 5 de la banque 2.

( ùRAMTOSPR,21,0 permettra de transférer le sprite 5 de la banque 2 vers le sprite de l'Asic )

ùRETARDX,DécalageX
ùRETARDY,DécalageY

Pourquoi des noms aussi barbares à des instructions? Car elles concernent des fonctionnalités Hard bien précises du CPC Plus qu'on nomme généralement le RETARD VIDEO. Comme son nom l'indique (Hem...), le retard permet de générer un « retard » lors de l'affichage de l'écran vidéo. Cela est très pratique lorsqu'il s'agit de réaliser des scrolls très lents mais néanmoins très fluides sans avoir la moindre opération de décalage à effectuer.

DécalageX varie de 0 à 15.
DécalageY varie de 0 à 7.

Vous avez sans doute remarqué que l'écran se déplace pixel par pixel... Nous verrons des applications pratiques la prochaine fois.

ùMASQUE,FlagMasque

Pour les petits malins qui viennent de dire à l'instant, en testant ùRETARDX: « Tiens, y'a des cochonneries à gauche je l'écran ! », l'instruction ùMasque permet d'éliminer les « cochonneries ».

FlagMasque prend donc 2 valeurs... 1 Jour avoir un masque et 0 pour ne pas en avoir (mais oui, Robby, on t'enlèvera ton masque; mais oui, tu es le plus beau).

ùSPLIT,NuméroLigne, Adresse

Vous vous souvenez des articles affreux que j'avais osé écrire sur la rupture... Possesseurs de CPC Plus: Oubliez Tout!

La rupture facile est arrivée. Il suffit juste de préciser le numéro de la ligne et l'adresse désirée. Ainsi,

ùSPLIT,100,&8400, mettra l'adresse &8400 à la ligne 100.

Facile, non?

Pour désactiver le SPLIT, il suffit juste de mettre la valeur du numéro de ligne à 0. L'adresse devra être comprise entre 0000 et FFFF, ce qui, à mon avis, laisse le choix.

Voilà pour terminer la Rub Plus de ce mois-ci. L'exemple Basic est de nouveau là... mais sans erreurs ( c'était pas moi ) !!! Nous attendons vos réalisations, qui, je l'espère, serons de plus en plus nombreuses.

Dernière chose, et c'est une bonne nouvelle, le fichier Basic générant le code du B-Asic v1.3 est déjà disponible en téléchargement sur le 3615 ACPC (histoire d'éviter, pour les plus accrocs, une troisième saisie de notre B-Asic).

Au mois prochain.

Longshot, APCPC n°40, SepOct91, p44-45-46-47

★ ANNÉE: 1991
★ AUTEUR: LONGSHOT
★ INFO: Download la derniere version B-ASIC

Page précédente : LOGON CPCPLUS 39: Exploitez les sprites de votre CPC Plus
★ AMSTRAD CPC ★ DOWNLOAD ★

Aucun fichier de disponible:
» Vous avez des fichiers que nous ne possédons pas concernent cette page ?
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » CPCplus : "Arnold V" Specification
» Coding » Chronique A100% CPC+ (Logon System)
» Coding Src's » Disassembly of AMSDOS ROM CPCplus
» Coding » LOGON CPCPLUS 48: En avant l'ASIC
» Coding » LOGON CPCPLUS 41: Programmation de l'ASIC
» Coding » LOGON CPCPLUS 44: Des Rasters sur CPC+
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 407 millisecondes et consultée 2177 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.