Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » GFA-Basic TI68K » News » Rapport de performances (181 réponse(s))
./REPRISE DU POST PRECEDENT (post n°114)   Marquer comme non lu.
limmt Ecrit le: Vendredi 19 novembre 2004 à 07:12 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


a oué donc tu est quand memelargement plus rapide des que tu fait des opérations consistantes :p super :)
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°115   Marquer comme non lu.
Dari Ecrit le: Mardi 28 décembre 2004 à 13:51 Déconnecté(e)    Voir le profil de Dari Envoyer un email à Dari Visiter le site WEB de Dari Envoyer un message privé à Dari  

T'es le meilleur geogeo, continue !!
"iPod, therefore, I am."

http://media.laquadrature.net/Quadrature_black-out_HADOPI_468x60px.gif

    
./Post n°116   Marquer comme non lu.
geogeo Ecrit le: Lundi 7 février 2005 à 22:17 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Bonne nouvelle, j'ai trouvé un peu de temps pour coder et voici les nouvelles fonctionnalité qui sont assez importantes.

- Ajout de l'instruction continue (identique au langage C, a savoir que cette instruction n'existe pas dans le vrai GFA-Basic, Exit = Break en GFA-Basic et fait le contraire de continue).
- Next peut être utilisé seul, var est facultatif. (Fonctionnalité qui n'existe pas en GFA Basic).
- Gestion de la structure Data (permet de créer des constantes, utile pour les sprites. Optimise au mieux l'espace mémoire!).
- Gestion de l'instruction Read (permet de lire des constantes, capable de se débrouiller avec des tableaux).
- Gestion de l'instruction Restore (permet de changer le pointeur de donnée grâce à un label (label qui peut être utilisé par Goto).
- Début de programmation de l'instruction Sprite.

Le début de l'instruction Sprite gère les sprites masqués de 16x16 clippé et j'obtiens un peu près 1499 sprites/s. Ce score montre que même si Sprite n'est pas optimisée on pourra faire des jeux assez puissant!

Sur ATARI ST j'arrive à 437 mais le sprite ne s'affiche pas (l'affichage d'un sprite à l'air assez complexe).

[EDIT] En TI-Basic j'arrive à 64 sprites/s %) Ce qui fait que GFA-Basic est 23.4x plus rapide :D
-Edité le Lundi 7 février 2005 à 22:46 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°117   Marquer comme non lu.
limmt Ecrit le: Mardi 8 février 2005 à 08:27 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


Superbe :)
Vivement que sprite soit fini :p
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°118   Marquer comme non lu.
Billy Charvet Ecrit le: Mardi 8 février 2005 à 12:43 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


#top#
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°119   Marquer comme non lu.
Sasume Ecrit le: Mardi 8 février 2005 à 13:24 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Pour les sprites masques, tu utilises les fonctions d'extgraph ? Prends-les, elles sont assez rapides.
    
./Post n°120   Marquer comme non lu.
geogeo Ecrit le: Mardi 8 février 2005 à 17:37 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


J'utilise actuelle la fonction clippée masquée de sprites 16x16 d'ExtGraph. :)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°121   Marquer comme non lu.
Dari Ecrit le: Mardi 8 février 2005 à 20:10 Déconnecté(e)    Voir le profil de Dari Envoyer un email à Dari Visiter le site WEB de Dari Envoyer un message privé à Dari  

Des jeux en BASIC à 1500 sprites par seconde ??!! T'es le roi geogeo, des générations entières de programmeurs TI vont t'adorer !
#dieu##dieu#
"iPod, therefore, I am."

http://media.laquadrature.net/Quadrature_black-out_HADOPI_468x60px.gif

    
./Post n°122   Marquer comme non lu.
geogeo Ecrit le: Mardi 8 février 2005 à 20:48 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Je précise la fonction Sprite est une fonction générale non optimisée. Avec la bibliothèque graphique avec des fonctions de sprites adaptées (fonctions de ExtGraph) ce score sera explosé. :)

Mais bon GFA Basic n'est pas parfait, surtout sur la gestion des chaînes de caractères (c'est encore un peu crade à l'heure actuel, une zone mémoire = une chaîne de caractère).

A noter que la version TI68K a un interpréteur bien plus puissant que la version Atari ST (la fonction Continue, Exit [If] est gérée, le Next var est facultatif, ElseIf et Else If sont gérées...., le signe de soustration ou (-) sont utlisables genre (-)25 = -25...). Mais par contre le scanner est moins puissant.

Sinon une astuce pour planter GFA-Basic:

For I=0 to 500
  A$=A$+"Gfa"
Next


En fait je dois trouver une solution pour gérer les chaînes de caractères qui dépasses l'espace DT (Temporary Datas).
-Edité le Mardi 8 février 2005 à 20:49 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°123   Marquer comme non lu.
geogeo Ecrit le: Mardi 8 février 2005 à 21:17 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Pendant que j'y suis je vous donne la structure envisagée pour les sprites:

A$ = 16 Bits (coord.x du point d'action) Utile pour une futur gestion d'un curseur.
     16 Bits (coord. y du point d'action)
     8 Bits ((0) normal, (1) masked, (non entrelacé) (2) masked (entrelacé))
     8 Bits (Hauteur en Bits)

Le header fait ainsi 6 octets.
Ensuite on trouve les données du sprite qui dépendent de son type et de la valeur stockée dans hauteur (par défaut généralement 16).

Ainsi pour créer un sprite on pourra faire ceci:
Programme sans commentaires:

Cls
Sprite$ = Mki$(0)+Mki$(0)
Sprite$ = Sprite$+Mki$(&H0F02)
Restore Sprite_Data
For I%=1 To 16
  Read Plan%,Mask%
  Sprite$ = Sprite$+Mki$(Plan%)+Mki$(Mask%)
Next
Sprite Sprite$,LCD_WIDTH2,LCD_HEIGHT2,SPRT_OR,LCD_MEM
A=Ngetchx
Sprite_Data:
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0


Programme avec commentaires

Cls
Sprite$ = Mki$(0)+Mki$(0)
Sprite$ = Sprite$+Mki$(&H0F02) '&H0F02 Mode masqué entrelacé avec une hauteur = 16
Restore Sprite_Data 'Facultatif (ce place au début de la zone de données pointé par le label ici Sprite_Data:)
For I%=1 To 16 Correspond au nombre de données à lire, chaque donnée fait 16 Bits dans le cas où la donnée est inférieur à 65535 sinon elle fera 32 Bits. (Un flag existera pour choisir d'optimiser la zone de données ou plutôt mettre tous les entiers sur 32 Bits!).
  Read Plan%,Mask% 'Donnée du sprite et de son masque
  Sprite$ = Sprite$+Mki$(Plan%)+Mki$(Mask%) 'Transforme les valeurs stockées dans Plan% et Mask% en donnée stockée dans Sprite$
Next
Sprite Sprite$,LCD_WIDTH2,LCD_HEIGHT2,SPRT_OR,LCD_MEM 'S'écrit bien sûr tel quel en GFA-Basic,  correspond à une division entière, le sprite sera ainsi au milieu de l'écran, SPRT_OR est le mode graphique employé c'est un paramètre facultatif tout comme LCD_MEM.
A=Ngetchx 'Attend l'appui d'une touche (l'instruction Void existera dans peu de temps dans l'objectif de forcer l'interpréteur à ne pas stocker le résultat d'une fonction dans la pile d'exectuion ainsi Void Ngetchx aura le même effet que cette ligne!)
Sprite_Data:
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0
Data 65535,0,65535,0,65535,0,65535,0


Le sprite que j'ai réalisé est un carré de 16x16 masqué entrelacé au format suivant:
Sprite, MAsque, Sprite, Masque....

Mais si un sprite n'a pas besoin d'être masqué, le mode 0 peut être utilisé.
A savoir que la fonction SPrite affiche seulement des sprites en Noir&Blanc, il faudra attendre la librarie graphique pour faire des trucs plus puissants mais rien que cette fonction offre la possibilité de faire énormément de choses.

Sinon pour suivre l'évolution de GFA-Basic il faudra aller sur le site:
http://www.tigen.org/gfabasic
Un manuel sera réalisé avec des programmes d'exemple et la dernière version sera disponible! Cela pour mieux suivre l'évolution du langage et mieux le tester.
-Edité le Mardi 8 février 2005 à 21:28 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°124   Marquer comme non lu.
Billy Charvet Ecrit le: Mercredi 9 février 2005 à 12:35 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


Désolé de demander ça au lieu de lire la source, mais:

For I=0 to 500
A$=A$+"Gfa"
Next


DT = ?

Tu stocke les chaînes sur la pile ou dans le tas ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°125   Marquer comme non lu.
geogeo Ecrit le: Mercredi 9 février 2005 à 13:27 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


DT est une pile perso avec un espace perso! Il est vrai que je peux changer cette espace en utilisant la pile ou le tas mais bon ça ne serait pas très pratique je pense! A voir.
La pile fait combien d'octets? 16 Ko?
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°126   Marquer comme non lu.
Billy Charvet Ecrit le: Mercredi 9 février 2005 à 17:38 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


La pile fait dans les 16 Ko, et le tas te permet des blocs de 64 Ko.
Donc ça peut paraître sadique, mais je te conseillerais:


HeapCompress();
handle h = HeapAlloc(max(HeapFree(),65520);


Tu vérifie la taille et tu mets le pointeur de pile à la fin du bloc.
Et ça te fait un espace bien suffisant. Ne t'occuppe pas de la gestion
du déabordement, la TI ne le permettra pas, tu serais obligé de vérifier
à chaque opération sur les strings etc... et tout ça pour arrêter le programme.
Une telle pile devrait toujours donner au moins 30 Ko au programmeur, c'est bien
suffisant pour les strings.
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°127   Marquer comme non lu.
geogeo Ecrit le: Mercredi 9 février 2005 à 19:09 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Mais je ne veux pas bouffer un handle de 65 Ko, il y a d'autres solutions dont:
Tester à chaque fois l'espace mémoire restant dans le tas, si pas assez je donne une erreur mais il y aura toujours moyen de négocier c'est à dire grâce à une variable d'environnement permettre à l'user de modifer l'espace mémoire necessaire.
A noter que ce que tu proposes c'est la même méthode que l'Atari ST mais ça pose énormément de contraintes. L'Atari ST lui utilise carrément toute la mémoire disponible!
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°128   Marquer comme non lu.
Billy Charvet Ecrit le: Jeudi 10 février 2005 à 12:07 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


Tu iras TRES lentement si tu teste la mémoire à chaque fois.
Non seulement ça va faire des opérations sur le tas fréquemment,
équivalentes aux new et free du C++, qui font partie des principales
raisons pour lesquelles il n'a pas été adapté.

En d'autres termes, non seulement tu ralentis, mais la calculatrice passera
la majorité de son temps en changements de l'espace mémoire, en tests de la
taille etc.

Pourquoi ? Ben programme de concaténation de chaîne, ajoutant à chaque itération
un caractère au string... Là la calculatrice va déchanter.

De plus il n'y a pas de multi-tâches, alors pourquoi te priver d'utiliser la mémoire disponible ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°129   Marquer comme non lu.
geogeo Ecrit le: Jeudi 10 février 2005 à 13:49 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Le test de mémoire ce fera à chaque concanétation et fera seulement 2 ou 3 instructions ASM!
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°130   Marquer comme non lu.
Billy Charvet Ecrit le: Jeudi 10 février 2005 à 15:10 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


Sur une boucle effectuant 15000 concaténations, ça devient significatif,
mais c'est surtout le problème de la mémoire occuppée.


Prend un bloc de taille maximum. Plus simple, plus rapide, et toujours utilisable,
tant qu'il n'y a pas de multi-tâches sur TI.
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°131   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 10 février 2005 à 16:45 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


La seule manière fiable de gérer ça est de faire un bound check. C'est une simple comparaison de pointeurs, ce n'est vraiment pas coûteux, et c'est la seule manière d'avoir quelque chose qui ne plante pas en cas de débordement.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°132   Marquer comme non lu.
Billy Charvet Ecrit le: Jeudi 10 février 2005 à 16:48 Déconnecté(e)    Voir le profil de Billy Charvet Envoyer un email à Billy Charvet Visiter le site WEB de Billy Charvet Envoyer un message privé à Billy Charvet  


15000 concaténations = 15000 bound checks.

Et si ça ne fonctionne pas, il fait quoi ? Le programme plantera de toute
manière. La seule chose qu'on y gagne est de ne pas planter la TI.
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.
    
./Post n°133   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 10 février 2005 à 16:49 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Bah, c'est déjà une bonne chose, non? #roll#
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
  :: Index » GFA-Basic TI68K » News » Rapport de performances (181 réponse(s))
Pages : 7/10     « 1 2 3 4 5 6 [7] 8 9 10 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 184.51ms avec 18 requetes