Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 29 Nov 2025, 14:01

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


[Tuto] Comment faire un dessin en UDG?

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 2 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
Xavier
 Sujet du message : [Tuto] Comment faire un dessin en UDG?
Message Publié : 26 Avr 2016, 04:35 
Hors-ligne
Rulezz
Rulezz

Inscription : 21 Fév 2011, 17:53
Message(s) : 153
Salut à tous...

Une petite piqûre de rappel pour vous réveiller avant la Reset#28 !

Donc, je vous propose un utilitaire tout bête en Basic Amstrad pour convertir du bitmap en tables de redéfinition graphique.

Le but est d'inclure une image en tant que texte :
Pièce jointe :
Spounz.jpg


Et de réorienter le vecteur Basic de la fonction SYMBOL, ou de la rappeler.
On obtient l'adresse avec : PEEK(&B736)+256*PEEK(&B737)

Donc, il est possible sauver ou rappeler cette table sans faire de SYMBOLs...
SAVE "UDG.BIN",B,(PEEK(&B736)+256*PEEK(&B737)),NbCARAC*8

Et un chargement avec LOAD "UDG.BIN",(PEEK(&B736)+256*PEEK(&B737))

Avec ce petit programme en Basic, il est maintenant possible de créer une table de caractères de 32 à 255, sur une image bitmap de LxH (longeur x hauteur)
Dans mon exemple, je doit convertir une image de 12 caractères par 12, soit 144 caractères sur les 223 disponibles.

Donc, on crée un fichier bitmap, on le converti en fichier BIN AMS avec l'outil de votre choix... en plaçant l'image en haut à gauche de l'écran.
On l'importe avec "ManageDsk"... ici, le fichier s'appelle "UDG.BIN", qui sera chargé en &C000 (Attention, le haut de l'écran peut changer si l'on utilise l'éditeur et en scrollant l'écran!)

Puis on lance le programme RUN"IMG2UDG" sur cette disquette:
Pièce jointe :
IMG2UDG.zip


Puis répondez aux questions:
Pièce jointe :
SpounzUDG.jpg

Le fichier "1.bin" est la table UDG à charger.

La lecture est simple! ... très simple... et ne nécessite pas de préserver la mémoire avec un MEMORY.

Code :
35040 INK 3,13:INK 2,26:SYMBOL AFTER 32:LOAD "1.bin",(PEEK(&B736)+256*PEEK(&B737))
35050 CU=32:PEN 3:PAPER 2:FOR Y=1 TO 12:FOR X=1 TO 12:LOCATE 15+X,6+Y:PRINT CHR$(CU):CU=CU+1:NEXT:NEXT:PEN 1:PAPER 0:SYMBOL AFTER 32:SYMBOL AFTER 230:GOSUB 30:GOTO 35170


Le SYMBOL AFTER 32 permet de retourner aux caractères standards.
Par contre, la table n'est pas mémorisée, et il faudra donc la recharger.

Pour un rappel multiple, il suffit de rappeler la table à un autre endroit de la mémoire, puis de poker l'adresse dans la variable système en &B736 et &B737.
Un simple POKE de l'adresse d'origine réinitialisera la table UDG, mais PAS de SYMBOL AFTER SANS avoir changer cette adresse. (un MEMORY est indispensable dans ce cas!)

Cette matrice de caractères est utilisable comme des caractères et ne possède "que" deux couleurs, paramétrable avec PEN et PAPER.

On peut aussi, la placer au pixel près avec la fonction [TAG:TAGOFF] utilisée ainsi:
Code :
TAG:FOR Y=100 TO 100+12*16 STEP 8:FOR X=100 TO  100+12*16 :MOVE X,Y:PRINT CHR$(CU):CU=CU+1:NEXT:NEXT:TAGOFF


On peut aussi l'utiliser pour redéfinir des polices de caractère, puis les éditer dans "UDGs Factory", mais il faudra couper le header AMS du fichier BIN, et ainsi exploiter les données en mode RAW (natif binaire).

Je voulais l'inclure dedans, mais j'ai trouvé plus rapide de le faire sur Amstrad!
:)

Bon... je retourne à mes corrections...

Amusez-vous bien.


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
Xavier
 Sujet du message : Re: [Tuto] Comment faire un dessin en UDG?
Message Publié : 28 Avr 2016, 03:51 
Hors-ligne
Rulezz
Rulezz

Inscription : 21 Fév 2011, 17:53
Message(s) : 153
Nota:

Pour accélérer l'affichage, et gérer les pen et papers indépendament...
Il est possible d'utiliser les Windows (1-6)!
WINDOW#3,x1,x2,y1,y2
Où x1=colonne gauche,x2=colonne droite,y1=line haute,y2=ligne basse.

Code :
' INIT DEBUT DE PROGRAMME
10 C$="":FOR I=32 TO 255:C$=C$+CHR$(I):NEXT:H=12:L=12
20 WINDOW#3,15,26,6,18:PEN#3,3:PAPER#3,2
' AFFICHAGE
30 SYMBOL AFTER 32:LOAD "1.bin",(PEEK(&B736)+256*PEEK(&B737)):LOCATE#3,1,1:PRINT#3,LEFT$(C$,H*L);:SYMBOL AFTER 32

Attention, la table est réinitialisée, donc soit mettre le "symbol" en GOSUB, soit sauver la table originale avec un :
SAVE "ORIGINAL.BIN",b,",(PEEK(&B736)+256*PEEK(&B737)),NBCHAR*8
puis un,
LOAD "ORIGINAL.BIN",(PEEK(&B736)+256*PEEK(&B737))
à chaque affichage...
Un zonage plein écran est possible, car un SYMBOL (AFTER) ne réinitialise pas les caractères déjà affichés.
Have fun.


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 2 message(s) ] 

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 15 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.