★ CODING ★ Cours CPC Plus par AST / IMPACT ★ |
Cours CPC Plus par AST / IMPACT |
» Cours CPC Plus par AST - Utiliser les Fonctionnalitées supplémentaires du CPC+
Pour l'inauguration de notre Forum CPC+, j'ai décidé de faire une série d'article sur la Programmation de l'Asic. Il faut savoir que l'Asic permet d'utiliser beaucoup de nouvelles fonctions absentes sur les Cpc Old (Ancienne génération) comme, 4096 couleurs, 16 Sprites Hard Zoomables, des Splits Screens facilités, les Interruptions, les canaux Dma... Pour cette première partie, j'ai trouvé utile de vous livrer la séquence de Delockage de l'Asic... Entrons tout de suite dans le vif du sujet... Routine réalisée sous Dams... Delock DI ; ; Interdit les Interruptions |
★ CODING ★ Gestion des couleurs CPC+ ★ |
Ah... Enfin... voici le second volume de la Programmation sur CPC+...
Aujourd'hui nous allons passer aux choses sérieuses et voir comment utiliser les 4096 couleurs du CPC+.
Ps : J'espère que cette fois-ci ce volume ne passera pas aux oubliettes, n'est-ce pas Eno ?
Entrons maintenant dans le vif du sujet.
La palette du CPC+ est composée de 4096 (de #000 à #FFF) couleurs dont 32 utilisables simultanément.
On peut distinguer :
— 16 couleurs maxi pour l'ecran (mode 0)
— 15 couleurs maxi pour les Sprites Hard (que nous verrons dans le prochain volume)
— 01 couleur pour le Border.
A. Changement des couleurs de l'ecran
Le changement de couleur se révèle être assez simple quand même :
Ex:
... etc...
Le principe est assez simple : on charge le registre hl avec la valeur de la couleur puis on l'affecte à une adresse Asic.
Voilà qui clôt aujourd'hui le Volume 2, sur la gestion des couleurs...
Prochain Volume, gestions des couleurs Sprites Hard avec une petite routine pour afficher un raster !
Sur ce, Bonne continuation à tous !
AsT / Impact - http://impact-cpc.fr.nf/index.php/topic,51.0.html
★ CODING ★ Gestion des Couleurs des Sprites Hard ★ |
Pour continuer où nous en étions, je vais cette fois-ci vous aider à vous familiariser avec la Table des Couleurs des Sprites Hard du CPC+...
A. Tables des couleurs des Sprites Hard
Le principe de changement des couleurs pour les sprites demeure le même que celui du changement de la palette de couleur de l'ecran.
Ex :
B. Exemple Concret
Voici maintenant, juste pour se détendre une petite routine pour afficher un dégradé de couleurs (Raster, of course ;-) )
Ret ; 1 Nop
Voilà, vous devriez vous retrouver à l'écran avec un simple dégradé de couleurs sur 16 nuances... héhé...
Bien entendu, cette routine peut bien évidement être optimisée, n'est-ce pas Cmp ?
Sur cette belle lecture, je vous laisse jusqu'au prochain volume : La Gestion des Sprites Hard.
Hasta la vista Babies !
AsT / Impact - http://impact-cpc.fr.nf/index.php/topic,58.0.html
★ CODING ★ Les Sprites Hard ★ |
Une des choses les plus intéressantes sur CPC+, est l'utilisation des sprites Hard.
En effet, nous pouvons redéfinir 16 sprites hard zoomables (3 modes, 640*200, 320*200 et 160*200) avec 16 couleurs complètement différentes de celle utilisées par l'ecran. (Je vous rappelle que l'on a déjà vu cela dans le volume précédent...)
Voyons donc cela d'un peu plus près...
Les sprites Hard du CPC+ sont définis à partir de manière linéaire de l'adresse #4000 à #4FFF. Chaque sprite à une taille correspondante à 256 Octets.
Les sprites sont définis de manière linéaire soit 16 octets sur 16 lignes. Plus concrètement, chaque Octet peut avoir une valeur comprise entre 0 et 15. Cette valeur est définie comme étant la couleur du pixel.
ex : pixel 0=coul1; pixel 2=coul3; pixel 4=coul5;pixel15=coul3
pour le reste des pixels, ils seront tous à zéro.
Je rappelle que pour le CPC+ la couleur 0 des sprites est transparente (on voit à travers).
ça donne pour la première ligne du sprite :
#01,#03,0,0,#05,0,0,0,0,0,0,0,0,0,#03 ; il reste encore 15 lignes à definir pour ce sprite (!)
Voilà pour les explications aujourd'hui...
Le prochain volume parlera de la position des sprites (x,y) ainsi que de leurs possibilités de zoom (0,1,2,3)...
Vous avez des questions, n'hésitez pas, n'est ce pas Grumly ?!?
AsT / Impact (sans le Di, aujourd'hui...) - http://impact-cpc.fr.nf/index.php/topic,429.0.html
★ CODING ★ Les Sprites Hard (Volume 4 - Suite et Fin) ★ |
Aujourd'hui nous allons donc clôturer ce Volume 4 sur les Sprites Hard...
Commençons d'abord par expliquer comment ça marche...
1-On Delock l'Asic
2-On active les fonctions supp. de l'Asic
3-On défini ses sprites...
Petit Rappel : chaque sprites fait 256 octets... chaque octet du sprite est en fait un pixel de couleur qui peut varier de 0 à 15... soit 256 pixels/sprite. 0 étant la couleur transparente.
D'autres infos : voir chapitre précédent (Les Sprites Hard)
4-On Défini la résolution du sprite
La résolution s'applique pour X et Y...
un exemple concert :
pour définir la résolution du sprite 0 :
5-On défini ses coordonnées à l'écran :
Chaque coordonnée est définie par un registre 16 bits... Chaque sprite se déplace au pixel près soit pour un écran de 80 octets de large et de 25 lignes de haut (val normale du reg 1 et du reg 6 du crtc) 640 pixel de large (x) et 200 lignes de haut (y)...
Ces valeurs peuvent changer selon les valeurs données au registre 1 et 6 du crtc. Le border défini la valeur maximum de x ainsi que de y. Ainsi un sprite ne pourra jamais être affiché avant et après le border.
Comme d'habitude, quelques adresses :
Continuons l'exemple plus haut :
donc pour la position (x,y) du Sprite 0 :
2 adresses importantes : #6000 (x) et #6002 (y)
exemple : je veux afficher mon sprite 0 au coordonnées (300, 200)
....
Conclusion
Voilà donc qui conclut ce Volume 4 sur les Sprites Hard... Vos questions sont les bienvenues... Pour les réfractaires Anti-CPC+, je vous donne rendez vous pour le Volume 5... La gestions des Splits Screen... Raaahhhh...
AsT / Impact - http://impact-cpc.fr.nf/index.php/topic,545.0.html
★ CODING ★ La Gestion des SplitScreens ★ |
Avant de commencer à entrer dans le vif du sujet, je voudrais faire un bref rappel concernant les SplitScreen, technique plus connue sous le nom de Rupture. (cf : Longshot – Merci à toi vieux pour nous avoir offert tant de plaisir)
Mais alors quezako la Rupture ? La Rupture est une technique qui permet de séparer l'écran en plusieurs zones (horizontale ou verticale, selon le type de ruptures souhaitées) ce qui permet alors de changer l'adresse écran plusieurs fois par VBL et pourquoi pas, plusieurs fois par ligne comme on le ferait avec un Raster.
Sur CPC+, cette facilité est autorisée grâce à plusieurs adresses situées dans la Page I/O de l'Asic.
Vous l'aurez certainement deviné, il faut avant toute chose, Delocker l'Asic (Voir Volume 1 pour plus d'explications), puis ensuite activer les fonctions supplémentaires du CPC+ ou la page Asic par la commande qui commence déjà à être bien connue, j'ai nommé : out &7f00,&b8...
En Assembleur :
Pour le reste, les adresses importantes à retenir pour réaliser une Rupture :
Voyons maintenant plus en détail ces 4 Adresses...
Maintenant que nous avons vu les différentes adresse de l'Asic se rapportant aux SplitScreens voyons tout de suite comment gérer celà.
Passons maintenant au code c'est bien plus marquant...
Dans cet exemple, nous avons 3 Zones Splits :
Donc 3 Ruptures... Il ne faudra pas oublier de donner une adresse écran à la Zone 1...
Voilà qui clôt donc aujourd'hui ce Volume 5, sur la gestion des SplitScreens. Je pensais peut être développer un peu plus ce chapitre pour votre parler de la Rupture ligne à ligne sur CPC+... Mais est-ce bien nécessaire ?
Petit concours perso... Vous avez du remarquer que j'ai omis d'utiliser l'adresse du SSCR (#6804)... Vous savez maintenant faire une Rupture sur CPC+... Qui nous proposera le listing source d'une rupture Simple 2 écrans (zone 1 et zone 2) avec un scroll hard horizontal en mode 1 au pixel ?
Petit indice : utiliser seulement les bits 0 à 3 du SSCR... sans oublier le Bit 7, héhé... sacré bit 7 !
Si vous avez des questions, ou si vous voyez des erreurs dans cet article, faites nous en part.
Allez, je vous laisse savourer le plaisir des Ruptures sur CPC+. On attend vos Démos !
AsT / Impact - http://impact-cpc.fr.nf/index.php/topic,1336.0.html
★ CODING ★ La Gestion des Canaux DMA ★ |
Nous attaquons maintenant un des sujets dont j'ai le plus à cœur... Les fameux canaux DMA... Sur nos cher CPC+, nous avons accès à 3 canaux DMA. DMA=Direct Memory Acces (Accès Direct à la mémoire)... Mais à quoi ça sert d'avoir des canaux Dma ?
Et bien, ces canaux Dma servent à envoyer des données au PSG (Programmable Sound Generator, le générateur de son quoi !) sans déranger le Z80 dans son travail....
Ca permet de faire des choses impressionnantes et encore jamais vues sur cette machine telle que, les Sons Sid, du Sync Buzzer ou même plus récemment des musiques de type MOD, bien connues sur nos cher Amiga !
Il ne faut absolument pas confondre les canaux Dma, qui sont rappelons le au nombre de 3, avec les 3 canaux A,B et C du Processeur sonore...
Ce qu'il faut savoir, c'est que lorsque vous utilisez les instructions Dma, celles ci seront exécutées pendant la HBL (Horizontal Blanking ou balayage horizontal).
Par défaut, la fréquence des canaux Dma est à 15,625 Khz mais cette fréquence peut être modifiée si l'on modifie le registre 0 du Crtc pour faire de la rupture verticale par exemple....
Les Dma ont leur propre langage... Ceux ci sont donc utilisés dans ce que nous appellerons, une Liste AY ou AY-List.
Voyons tout de suite quelles sont ces instructions.
Concernant les différents registres du PSG, un petit rappel s'impose...
La suite au prochaine épisode....
Si vous avez des questions concernant le sujet vous savez où nous trouver....
AsT / Impact - http://impact-cpc.fr.nf/index.php/topic,2956.0.html
|
|