1


Arrêtez-moi si je commets une grossière erreur.

C'est la 1ere fois que je fais des Sprites et des Map.

Je veux Gerer les Sprites et Map dans une Librairie pour le Basic.

__________________________________________________________________________________________________________________

On m'a dit que l'affichage des sprites pouvait se faire directement sans recopie du Sprite dans un Tableau.

je pense que c'est faisable avec un pointeur positionné au bon endroit dans le fichier du Sprite.

Ok !

j'ai constaté que le format des Sprites n'est pas si différents que ça des Images TI-Basic.


Sprite
______

void Sprite8 (short x, short y, short height, unsigned char *sprite, void *vm_addr, short mode);

Image Basic
____________

typedef struct {
unsigned short NumRows, NumCols;
unsigned char Data[];

} BITMAP;



Au vu de ce qui suit , je peux pointer dans une image TI basic pour l'afficher avec les fonctions de SPRITE.H
sans être obliger de créer un Nouveau format de Fichiers pour les Sprites.

_________________________________________________________________________________________________________________

je sens que je vais me faire pam pour avoir dit une bétise.

Parceque si c'étais aussi simple quelqu'un l'aurait déjà fait.
Il y a forcément un HIC.

2

>Au vu de ce qui suit , je peux pointer dans une image TI basic pour l'afficher avec les fonctions de SPRITE.H
Non, car une image TI-basic est de taille variable, alors que Sprite8 n'affiche que des images de taille 8 pixels.

3

En théorie, en te positionnant où commence les bits (+ 2 (TAG) + 4 (short row; short col) si je ne me trompe pas), ça devrait fonctionner ... Des bits, c’est des bits …

4

PpHd :
>Au vu de ce qui suit , je peux pointer dans une image TI basic pour l'afficher avec les fonctions de SPRITE.H
Non, car une image TI-basic est de taille variable, alors que Sprite8 n'affiche que des images de taille 8 pixels.

Mais si l'image a la même largeur que le sprite, pourquoi ça ne marcherait pas ?

Ex : image de 8 x 8 vs sprite de 8 x 8

[code]TAG, ROW, LINE, DATA
ptr = {PIC_TAG, 0x08, 0x08, 0xFFFFFFFFFFFFFFFF }

vs

LINE1, LINE 2, …
sprt = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
[/code]

ptr + 6 correspond a sprt, non ?

5

>Mais si l'image a la même largeur que le sprite, pourquoi ça ne marcherait pas ?
J'ai pas dit que ca marchait pas dans ce cas. Mais c'est pas cool pour une lib basic d'impose la taille horizontale.

6

Au fait Comme l'a si bien dit Quesoft la fonction 'Sprite8(' c'étais juste à titre d'exemple.

Je suis désolé de n'avoir pas été plus précis.

J'ai évidemment l'intention de gérer 'Sprite8(' , 'Sprite16(' et 'Sprite32('

C'est trop cool ce truc. ça va m'éviter de faire des formats pour Sprite.

Ce qui veut dire que Demain , dans la Bètâ de ma Librairie Basic 'MyLiB' , il y aura la Gestion de l'affichage des Sprites.

______________________________________________________________________________________________________________________

Faut maintenant que je réfléchisse à la façon la plus rapide d'afficher les Images TI-Basic avec les fonctions de <Sprite.h>

Je vais déjà tester avec la même routine que pour le même code que pour les Images TI-Basic en cherchant les fichiers avec SymFinnd (SYMSTR( "PicName") )

En effet , je ne veux pas charger les Images en Interne pour économiser la RAM.
J'espère que la Vitesse d'affichage doublera au minimum.


C'est presque pas de boulot du tout.

J'ai Juste à vérifier la Taille du PIC et ensuite afficher le MAP.

Je Pense qu'en chargeant dans les Structure Internes à la LIB , les noms des Images ça devrait être un peu plus rapide que rechercher les noms dans une Matrix TI Basic.
_____________________________________________________________________________________________________________________

Je vais surtout réfléchir au Moyen de Faire Un Map à Partir de :

- Une Liste Contenant les noms de toutes les Images

- Une Matrix contenant les Numéro d'ordre des Images à Utiliser ( j'utiliserai des short ).

ça devrait être moins gourmand en mémoire , et surtout me permettre de faire du Scrolling dans le MAP.

_____________________________________________________________________________________________________________________


Merci à vous d'avoir confirmé ce que je pensais

7

PpHd :
>Mais si l'image a la même largeur que le sprite, pourquoi ça ne marcherait pas ?
J'ai pas dit que ca marchait pas dans ce cas. Mais c'est pas cool pour une lib basic d'impose la taille horizontale.

C'est vrai.

8

> J'espère que la Vitesse d'affichage doublera au minimum.
Ca c'est pas sur (Cout d'interpretation + cout de recherche du fichier + cout de relocation).

>ça devrait être moins gourmand en mémoire , et surtout me permettre de faire du Scrolling dans le MAP.
Tu oublie pas le clipping ?

9

Bah je gère l'affichage de n'importe quelle image Basic.
C'est juste qu'il y aura la Fonction Sprite pour Afficher les Sprites.
_____________________________________________________________________


Pour ma LiB , J'en suis arriver à un point tel que je vais surement faire une Fonction pour Encapsuler les Variables de N'importe que type dans le programme externe Tokénéisé '*.MyLB'.

Je ne vois pas d'un bon oeil le fait de laisser traîner toutes les Images/Variables qui serait vitales pour l'éxécution d'un programme.


A la rigueur , je ferai un fonction 'Pack' pour grouper plusieurs Fichiers.

C'est dommage que je n'ai pas code (dé)compression intégré dans MyLiB.

Y pas ce genre de Truc dans les ROM_CALL du TiOS ?


10

Et la question de PpHd?
Je te signale que Sprite8, Sprite16 et Sprite32 ne sont pas clippées, donc l'image entière doit tenir sur l'écran, sinon plantage...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

PpHD->

c'est vrai que le coût de Recherche de Plusieurs Sprites dans la VAT doit être considérable.
Il ne me reste plus qu'une solution :
- Créer un Fichier qui contients tous mes Sprites les uns à la suite des autres

Je n'aurais alors qu'un Fichier à rechercher dans la VAT.

En utilisant cela avec la Fonction MAP ; je devrais obtenir de meilleures perforfance


_______________________________________________________________

K.K ->
Ah ! je ne savais pas que ces fonctions n'étais pas clippées.

J'ai implémenté la fonction 'Sprt' hier : ça marche bien.
je suis passé de 122(fonction 'Pict') à 94(fonction 'Sprt') en Mode TOKEN pour les noms des fonctions.

Le Bench est fait avec VERTEL.

_______________________________________________________________

J'ai écris la routine pour afficher le MAP. J'ai pas encore fait de Test.

Je charges dans 2 structures internes :
- La Liste du nom des Images (doit servir à rechercher l'image dans la VAT)
- La Matrice des numéro d'ordre des Images : c'est le MAP

Ensuite on appel la fonction MAP en précisant
- la position du MAP (x,y)
- l'élément MAP(Row,Col) à partir duquel débutera l'affichage du MAP
- les dimensions de la Vue : (Nbre de Lignes , Nbre de Colonnes ) à afficher
- le Mode d'affichage des Sprites
- Le Type de Sprite

Du coup j'affiche tout en une Seule fois sans utiliser le Moteur qui gère les Arguments de la Librairie.
Ce qui n'est pas le cas avec la fonction 'Sprt' qui fonctionne exactement comme 'Pict'.

Comme j'ai dit , faut que je fasse un Test et un Bench pour voir ce que ça donne
______________________________________________________________________________

Adresse de LIGHTPLANE et DARKPLANE en NVG : je sais pas comment les obtenir pour diriger l'affichage des Sprites dans le Buffer Adequat.


Le Mieux serait que je gère ça moi-même.

J'aimerais avoir quelques repères sur les fonctions à utiliser pour faire cela.

Merci.







12

ça y est ça marche correctement l'affichage du MAP.

En fait ça foirait parceque j'avais un petit bug dans la fonction 'writefile' dont je me sert pour créer le MAP.

voici la syntaxe :

MyLiB("Mape","MapeName",x,y,mode{0,1,2},top,left)

j'ai créer un petit code pour créer le MAP avec MyLiB :

mkmap("MapeName",Height, Pic_List_Name, Map_List , Row, Col, View_Row, View_col)


Map_List : c'est la matrix du Map converti en Liste
View_Row c'est le nombre de Sprite affichable par ligne
View_Col '' ''
le format du MAP est ici : topics/53369-mylib-une-librairie-qui-court-circuite-le-tios#15

13

14

Oui , mais c'est plus comme au début.

je n'y passe même plus 4 heures par semaine , c'est dire qu'il est prequ'au tiroir.
Mais il fonctionne déjà.
Je m'amuse à faire des utilitaires actuellement. ça fera 25 Ko lorsque j'aurai inclus les fonctions pour Lister les Répertoires & Fichiers.
Comme Utilitaire j'ai fait :

- Un Popup TI
- Popup Like Complete , en recherche alphabétique ; qui regarde dans des Listes Différentes lorsqu'on fait GAUCHE-DROITE
- J'ai commencé une Version Graphique de mon éditeur de MAP.

Actuellement c'est plutot sur la stabilité que je travaille.
HeapLOck surtout.