CPC Rulez
https://cpcrulez.fr/forum/

TP-TOOLS v1.0
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6506
Page 1 sur 1

Auteur :  Nemo59 [ 22 Avr 2021, 13:40 ]
Sujet du message :  TP-TOOLS v1.0

Bonjour !
TP TOOLS v1.0 est un ensemble de librairies pour développer en Turbo Pascal sur Amstrad CPC6128 et 6128+



Image dsk 3" attachée. CPM+ inclu.

Pour lancer la démo :
|CPM (ou ùCPM)
Readme

Possible de mettre à jour l'entrée TPTOOLS dans la liste CPCRULEZ? la v0.1 est totalement obsolète.

Auteur :  hERMOL [ 22 Avr 2021, 15:51 ]
Sujet du message :  Re: TP-TOOLS v1.0

pas le bon .DSK , c'est TP-Sprite v1.02..

Auteur :  norecess464 [ 22 Avr 2021, 16:26 ]
Sujet du message :  Re: TP-TOOLS v1.0

Je suis convaincu que lors de la "grande époque" tu aurais pu faire une excellente suite d'articles sur TP dans les magazines.

Je suis toujours aussi jaloux de ta fonte vectorielle :oops:

Auteur :  Nemo59 [ 22 Avr 2021, 16:43 ]
Sujet du message :  Re: TP-TOOLS v1.0

hERMOL a écrit :
pas le bon .DSK , c'est TP-Sprite v1.02..


Je pensais avoir corrigé pourtant. Ca doit être bon cette fois ;D

Auteur :  hERMOL [ 22 Avr 2021, 16:52 ]
Sujet du message :  Re: TP-TOOLS v1.0

Impec! :JC_doubleup:

Auteur :  Nemo59 [ 22 Avr 2021, 16:54 ]
Sujet du message :  Re: TP-TOOLS v1.0

norecess464 a écrit :
Je suis convaincu que lors de la "grande époque" tu aurais pu faire une excellente suite d'articles sur TP dans les magazines.

Je suis toujours aussi jaloux de ta fonte vectorielle :oops:


Pour la fonte vectorielle c'est d'un simplicité enfantine ;D Ca doit pas être bien compliqué en ASM. Y'a pas de copyright lol

Le principe est tout bête et part d'une matrice de code ASCII de taille variable suivant la précision voulu. Si on a une matrice simple par exemple :
Code :
A B C D
E F G H
I J K L
M N O P


"O" sera codé MADPM
"A" sera codé MADP-HE
"I" sera codé AM
"Z" sera codé ADMP

Pour le coté proportionnel ajouter la largeur en début.
Par exemple "I" -> 1AM "Z" -> "4ADMP"

La police que j'utilise est codé comme çà (le code est bourrin mais ca marche finalement bien) :

Code :
{ A B C D E F
  G H I J K L
  M N O P Q R
  S T U V W X
  Y Z [ \ ] ^    Police de caracteres vectorielle et proportionnelle
  _ ` a b c d
  e f g h i j
  k l m n o p
  q r s t u v }

Type String20  = String[20];
     String255 = String[255];

Var Leve : Boolean;
    Taille, EchX, EchY,Xp,Yp,XDeb : Integer;

Procedure DspVecPic(Dessin:String20);
Var i,v:Integer;
Begin
 Leve:=True;
 GetGraCur(Xp,Yp);
 For i:=2 To Length(Dessin) Do
  Case Dessin[i] Of
    'A'..'z': Begin
      v:=Ord(Dessin[i])-65;
      If Leve Then Begin
        MovAbs(xp+(v mod Taille)*EchX,yp-(v div Taille)*EchY);
        Leve:=False;
      End Else
        DrwLinAbs(xp+(v mod Taille)*EchX,yp-(v div Taille)*EchY);
    End;
    '-' : Leve:=True;
  End;
 Val(Dessin[1],v,i);
 MovAbs(Xp+v*EchX+EchX,Yp);
End;

Procedure DspVecChr(c:Char);
Begin
  Taille:=6;
  Case C of
    'a' : DspVecPic('3mleYTUm');
    'b' : DspVecPic('3lkG-ST[gl');
    'c' : DspVecPic('3mleYTU');
    'd' : DspVecPic('3ImleYTU');
    'e' : DspVecPic('3mleYT[a_');
    'f' : DspVecPic('2kMH-YZ');
    'g' : DspVecPic('3gf_YTUmrq');
    'h' : DspVecPic('3kG-ST[m');
    'i' : DspVecPic('1GG-Sk');
    'j' : DspVecPic('2HH-Tlq');
    'k' : DspVecPic('3kG-eU-_m');
    'l' : DspVecPic('1Gk');
    'm' : DspVecPic('5kYT[m-[V]o');
    'n' : DspVecPic('3kST[m');
    'o' : DspVecPic('3leYT[gl');
    'p' : DspVecPic('3qST[afe');
    'q' : DspVecPic('3gf_YTUs');
    'r' : DspVecPic('3kST[');
    's' : DspVecPic('3klgYTU');
    't' : DspVecPic('2Gel-ST');
    'u' : DspVecPic('3SelmU');
    'v' : DspVecPic('3SlU');
    'w' : DspVecPic('5Selga-gniW');
    'x' : DspVecPic('3ke[U-SYgm');
    'y' : DspVecPic('3S__fgmrq-gU');
    'z' : DspVecPic('4nkVS');
    'A' : DspVecPic('4kMHIPn-Y\');
    'B' : DspVecPic('5knic\Z-lH-GIP[Z-');
    'C' : DspVecPic('4nleMHJ');
    'D' : DspVecPic('5GJQink-lH');
    'E' : DspVecPic('4nkGJ-Y[');
    'F' : DspVecPic('4kGJ-Y[');
    'G' : DspVecPic('4[\hmleMHJ');
    'H' : DspVecPic('4kG-nJ-Y\');
    'I' : DspVecPic('3km-lH-GI');
    'J' : DspVecPic('4elmhJ');
    'K' : DspVecPic('4kG-YJ-Yn');
    'L' : DspVecPic('4Gkn');
    'M' : DspVecPic('5kGUKo');
    'N' : DspVecPic('4kG-Mh-nJ');
    'O' : DspVecPic('4mleMHIPhm');
    'P' : DspVecPic('4kGIPV[Y');
    'Q' : DspVecPic('4mleMHIPhm-gt');
    'R' : DspVecPic('4kGIPV[Y-[n');
    'S' : DspVecPic('4JHMSZ[bhmk');
    'T' : DspVecPic('5GK-Im');
    'U' : DspVecPic('4GelmhJ');
    'V' : DspVecPic('5GmK');
    'W' : DspVecPic('5GkaoK');
    'X' : DspVecPic('3GSam-k_UI');
    'Y' : DspVecPic('3GMZl-ZUI');
    'Z' : DspVecPic('4GJkn');
    '&' : DspVecPic('3mleYT[a_-GB');
    '$' : DspVecPic('3mleYT[a_-BI');
    '^' : DspVecPic('3mleYT[a_-GBI');
    '''': DspVecPic('2BHM');
    '.' : DspVecPic('1kk');
    '@' : DspVecPic('3mleYTUm-BI');
    '?' : DspVecPic('4ll-MHIPZ`');
    ',' : DspVecPic('2flq');
    ';' : DspVecPic('2flq-ZZ');
    '!' : DspVecPic('1kk-_G');
    ' ' : DspVecPic('1');
    '"' : DspVecPic('3GM-IO');
    '/' : DspVecPic('3Ok');
    '-' : DspVecPic('3_a');
    ':' : DspVecPic('1SS-ee');
    '=' : DspVecPic('4SV-eh');
    '[' : DspVecPic('2HGkl');
    ']' : DspVecPic('2GHlk');
    '(' : DspVecPic('2HMel');
    ')' : DspVecPic('2GNfk');
    '_' : DspVecPic('3leYT[gl-Tl');
    '0' : DspVecPic('3kSNOglk');
    '1' : DspVecPic('3SNlkm');
    '2' : DspVecPic('3MNU[ekm');
    '3' : DspVecPic('3MO[Z-[glk');
    '4' : DspVecPic('3M_a[m');
    '5' : DspVecPic('3OMYZaglk');
    '6' : DspVecPic('3ONSelgaZY');
    '7' : DspVecPic('3MOl');
    '8' : DspVecPic('3YSNO[Yklg[');
    '9' : DspVecPic('3klgUNSYa');
    '{' : DspVecPic('3SUgeS');
    '}' : DspVecPic('3SUgeSTf');
    '+' : DspVecPic('3_a-Zf');
    #00 : SetGraPen(0);
    #01 : SetGraPen(1);
    #02 : SetGraPen(2);
    #03 : SetGraPen(3);
    #13 : Begin MovAbs(XDeb,Yp-(2*(Taille))*EchY); End;
  End;
End;

 Procedure DspVecStr(S:String255);
  Var i:Byte;
  Begin
   GetGraCur(Xp,Yp); XDeb:=Xp;
   For i:=1 To Length(S) Do DspVecChr(S[i]);
  End;


Je vais ajouter un code de controle # pour le GRAS.
Je pense qu'avec une fonction de tracé de ligne plus rapide mais moins généraliste et supprimant les controles de sortie d'écran la police pourrait être 3, 4 ou 5 fois plus rapide. Qd j'ai un peu de temps je vais faire une unité FastGraph beaucoup plus rapide (mais plus sensible aux plantages et dédié par mode graphique. un gain de 4 à 5 fois me semble possible). Je suis d'ailleurs étonné de la rapidite de ma fonction cercle qui est pourtant 100% en Pascal et avec la routine d'affichage de pixel du firmware.

Auteur :  marcel [ 22 Avr 2021, 17:12 ]
Sujet du message :  Re: TP-TOOLS v1.0

excellent :)

Auteur :  norecess464 [ 22 Avr 2021, 19:16 ]
Sujet du message :  Re: TP-TOOLS v1.0

Citer :
Pour la fonte vectorielle c'est d'un simplicité enfantine ;D Ca doit pas être bien compliqué en ASM. Y'a pas de copyright lol


Oui, l'approche est très originale. Trop souvent nous avons tendance a penser en terme "rectangulaire", cf. une fonte de taille puissance de 2.

En ASM avec le bon algo, je suis persuadé qu'on peut aller bien plus loin qu'un "simple" x5 en terme de performance.

Roudoudou, je te sens chaud a nous prototyper tout ca :mdr:

Auteur :  marcel [ 23 Avr 2021, 07:25 ]
Sujet du message :  Re: TP-TOOLS v1.0

norecess464 a écrit :
Roudoudou, je te sens chaud a nous prototyper tout ca :mdr:


Me concernant si on m'avait demandé de le faire, j'aurai plutôt fait un système vectoriel simplifié à 8 ou 16 directions, avec 1 ou deux bits pour la longueur, un code stop

Une usine à gaz en somme ^_^

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/