1

Suite à ce que m'a demandé PpHd, je crée ici un topic pour saoir si les personnes codant avec genlib seraient intéressées pour avoir dans la lib une nouvele fonction: une fonction qui enregistrerait une partie de l'écran au format BIG_SPRITE. En fait, j'ai fait une focntion comme ça, mais qui ne fonctionne qu'avec les sprites alignés sur une adresse multiple de 2 , et un offset nul(j'arrive pô à débuguer pour n'importe quel sprite mourn).
Alors voilà, si vous êtes intéressé, dites-le, merci! smile
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

2

Comme déjà dit dans l'autre topic, ExtGraph propose déjà des fonctions de ce style:
Fast Sprite Grabbing Routines

--------------------------------------------------------------------------------


void Sprite8Get(short x,short y,short h,void* src,unsigned char* dest) __attribute__((__stkparm__));
void Sprite8Get_R(register short x asm("%d0"),register short y asm("%d1"),register short h asm("%d2"),register void* src asm("%a0"),register unsigned char* dest asm("%a1")) __attribute__((__regparm__));
void Sprite16Get(short x,short y,short h,void* src,unsigned short* dest) __attribute__((__stkparm__));
void Sprite16Get_R(register short x asm("%d0"),register short y asm("%d1"),register short h asm("%d2"),register void* src asm("%a0"),register unsigned short* dest asm("%a1")) __attribute__((__regparm__));
void Sprite32Get(short x,short y,short h,void* src,unsigned long* dest) __attribute__((__stkparm__));
void Sprite32Get_R(register short x asm("%d0"),register short y asm("%d1"),register short h asm("%d2"),register void* src asm("%a0"),register unsigned long* dest asm("%a1")) __attribute__((__regparm__));
void SpriteX8Get(short x,short y,short h,void* src,unsigned char* dest,short bytewidth) __attribute__((__stkparm__));
void SpriteX8Get_R(register short x asm("%d0"),register short y asm("%d1"),register short h asm("%d2"),register void *src asm("%a1"),register unsigned char *dest asm("%a0"),register short bytewidth asm("%d3")) __attribute__((__regparm__));

SpriteXGet copies a sprite from the screen at x and y to dest. This routine is many times faster than the TIOS routine BitmapGet. Additonally sprites retrieved using SpriteXGet can be used as arguments for all the Sprite routines found in this header, unlike the bitmaps obtained with BitmapGet. x and y are the coordinates of the upper left corner of the sprite. h is the height of the sprite. src is a pointer to a video plane of size 240x128 pixels from which one wants to retrieve the sprite. dest is the pointer to a buffer (array) which is large enough to store the fetched sprite data.

The SpriteX8Get function differs from the rest of the functions. It is not fixed to a specific width, but you can specify the width in bytes as parameter (bytewidth). The sprite data fetched by SpriteX8Get is organized like this (example for bytewidth == 3): line1/byte1, line1/byte2, line1/byte3, line2/byte1, line2/byte2, line2/byte3 etc. You can use SpriteX8Get_R twice to simulate "FastCopyRectangleX8_R" (see below the Fast...RectanglesX8_R).
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é

3

ah ouais, merci c'est vachemetn compatible genlib ça. Quand à la doc de ExtGraph, quand tu programmes en asm, ya franchement mieux.
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

4

Martial Demolins
: ah ouais, merci c'est vachemetn compatible genlib ça.

</IRONIE> pour ceux qui n'auraient pas compris. smile
Mais je n'ai jamais prétendu que c'était le cas...
Quand à la doc de ExtGraph, quand tu programmes en asm, ya franchement mieux.

Mais pourquoi? Il y a même tous les registres spécifiés explicitement!
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é

5

compare avec celle de genlib:
input:
d0.w ...
a0.l ....

Mais ça:
short bytewidth) __attribute__((__stkparm__))
je ne sais pas ce que ça veut dire...
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

6

* stkparm = paramètres sur la pile (exactement comme pour les ROM_CALLs), sauf quand un registre est spécifié explicitement
* regparm = passage par registres automatique (mais là aussi, la spécification explicite est prioritaire)
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é

7

Kevin Kofler
:
Martial Demolins
: ah ouais, merci c'est vachemetn compatible genlib ça.

</IRONIE> pour ceux qui n'auraient pas compris. smile Mais je n'ai jamais prétendu que c'était le cas...
Alors tu es hors sujet. On parle de GenLib ici.
So much code to write, so little time.

8

Je le répète, mais extgraph n'est pas aussi puissante que genlib, surtout au niveau des fonctions X8...

Martial Demolins> Ça me semble une bonne idée de fonction, et je pense que ce n'est pas trop compliqué à coder, je pourrais peut-être réfléchir à ça pendant les vacances.
Après, faut voir si PpHd est d'accord ou non. Mais je pense que la routine devrait faire entre 100 et 200 octets max, donc il n'y aurait pas trop de pb de taille...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

En y rélféchissant, cette fonction manque vraiment à genlib. Le problème est que genlib 1.0 va être releasé sans cette fonction, et je ne pense pas que PpHd ait encore envie de retarder sa sortie.
Faudra faire un genlib 1.01...

Ensuite, il faut voir si on fait un get_sprite16, et avec des possibilités de palette...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

10

Sasume -> love ah, je ne suis aps le seul à penser que ça serait utilie wink
Javais aussi pensé au get_sprite_16, mais à la rigueur, c'est toujours bidouillable à partir d'un big_sprite. Sinon, la fonction que j'avais faite était dans les 150/200 octets, mais
-> je ne suis pas un bon codeur
-> il restait un bug dans certains cas, grosse prise de tête => poubelle, j'y reviendrai à tête reposée.
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

11

Questions:

Doit-elle gerer le clipping correctement ?
Doit-elle generer un masque ?
Faire des traductions de palettes ?

12

Pour le clipping : si on fait un genlib::get_big_sprite(BGS *buffer,short x1,short y1,short x2,short y2);et qu'on l'appelle avec des coordonnées négatives quelque part, on peut traiter le problème en recadrant la zone de capture du sprite (genre remplacer les valeurs négatives par 0 et celles >239 par 239 pour les abscisses), mais le BGS obtenu ne correspondra pas à ce qu'aura voulu l'utilisateur puisqu'une partie du sprite manquera... Comment indiquer ça à l'utilisateur ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

13

Un code de retour ? Remplacer la zone non recuperer par une couleur de fond ?

14

Ou juste réajuster les registres, l'utilisateur regardera (s'il n'est pas sûr) si ils ont été mis à jour avec des coordonnées valides.
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

15

Mauvaise idée. Ça n'est pas exploitable en C.
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é

16

Et bien il y a toujours le moyen d'exporter dans des variables
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

17

Oui mais les 3/4 des utilisateurs ne s'en souciront jamais.

18

ah, si tu pars du principe que la doc ne sert à rien...
Mais penses-tu (ça serait trop beau happy) pouvoir inclure ça dans le prochain release?
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

19

Heu... Nan. Elle est deja trop en retard, et trop de boulot reste.
Surtout que je remets sur les PedroM Apps. Ce n'est pas ma faute si je le suis seul a bosser a la T3 tongue

20

En même temps, tu es le seul de l'équipe non ?
Ah oui, il y a aussi Squale92... Mais je crois qu'il tente de rendre KII compatible avec la Titanium.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

21

cry tu n'a qu'à recruter KuelKues bons codeurs cheeky
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

22

Qui ?

23

Mais je crois qu'il tente de rendre KII compatible avec la Titanium.

J'ai recompilé K pour Titanium... j'attend que quelqu'un le teste
(faudrait que je le poste ailleurs que sur le forum T3, pour avoir plus de chances que quelqu'un le teste, peut-être)

pour ce qui est de KII... le rendre compatible Titanium, j'ai peur que ce soit dur... du moins, si j'ai bien compris certains pbs de la Titanium...
(mais ça sera faisable... suffira de contourner mes hacks grin )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

24

Version kernel ?