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 » Forum Ti68K » Programmation C » ExtGraph 2.00B3 (41 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Invité Ecrit le: Dimanche 20 juin 2004 à 10:09 Déconnecté(e)    
 
Je viens de télécharger extGraph 2.00B3 et je vois qu'on peut faire vraiment pas mal de choses avec.
Je m'adresse ici à la TI-CT ou à ceux qui connaissent bien extGraph.
Est-ce que si j'ai une matrice (par exemple la carte d'un jeu de stratégie) de la forme :
static char map[]={1,0,1,2,1,0,0,1
2,0,1,2,0,0,1,1}
(Plus généralement avec la longueur = la hauteur, comme une matrice de 16x16),
avec une boucle je peux afficher les sprites correspondants aux chiffres de ma matrice ? (ex: 1=sprite1, 2=sprite2...) Le faire très rapidement à l'écran et même "en dehors" si ma matrice dépasse les limites de l'écran ?
    
./Post n°1   Marquer comme non lu.
geogeo Ecrit le: Dimanche 20 juin 2004 à 12:08 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Utlise Tilemap engine. :)
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°2   Marquer comme non lu.
Lionel Debroux Ecrit le: Dimanche 20 juin 2004 à 13:56 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

En effet, c'est à ça que sert un tilemap engine - excellente méthode en général pour les platformers. Voir les demos 13 à 16.

On peut en effet faire beaucoup de choses avec ExtGraph. C'est de très loin la lib la plus flexible, et elle est bien placée au niveau vitesse (sans excès, on ne va pas dérouler tout n'importe où n'importe comment). Et la todo list est loin d'être épuisée...
Lionel Debroux - membre de TICT.
    
./Post n°3   Marquer comme non lu.
Sasume Ecrit le: Dimanche 20 juin 2004 à 16:37 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Clair, elle s'agrandit tout le temps !

AS > Si c'est pour Jazz Jack Rabbit, lis bien la notice avant de te lancer dedans parce qu'utiliser le tilemep engine introduit forcément des limitations au nivau du moteur de ton jeu.
    
./Post n°4   Marquer comme non lu.
Lionel Debroux Ecrit le: Dimanche 20 juin 2004 à 17:05 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

A la fois la todo list et la librairie s'agrandissent en effet...
Lionel Debroux - membre de TICT.
    
./Post n°5   Marquer comme non lu.
Invité Ecrit le: Lundi 21 juin 2004 à 10:46 Déconnecté(e)    
 
Je me suis lancé dans la lecture du 'manuel', et vu que je n'ai jamais utilisé ExtGRaph, je suis tout ébahi...
Sasume : C'est en partie pour Jazz JackRabbit mais aussi pour un autre dans lequel je me suis lancé.
J4ai vu les démos 14 et 15 de ExtGraph, c'est vraiment, vraiment génial, surtout la 15 avec les sprites animés. Pourquoi ne voit-on pas de nouvelle version de tankers ?
    
./Post n°6   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 21 juin 2004 à 11:27 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

La grosse doc de la Beta 3 peut être considérée comme complète. Les descriptions de certaines fonctions sont un peu sommaires, mais l'amélioration par rapport à la Beta 2 est sensible - du code HTML plus clean en prime (il manquait de nombreux tags).
En revanche, elle peut légitimement être considérée comme pas particulièrement facile à lire...

> J'ai vu les démos 14 et 15 de ExtGraph, c'est vraiment, vraiment génial, surtout la 15 avec les sprites animés.
En effet. demo16 montre les tables DHZ/HDZ, qui sont d'utilisation plus rare mais très puissante.

> Pourquoi ne voit-on pas de nouvelle version de tankers ?
Parce que ça oblige à réécrire un certain nombre de choses. Mais il est vrai que Tankers serait une target intéressante pour le tilemap engine d'ExtGraph, j'en avais parlé à Barrett Anderson.

Pour info, je suis en train de faire des versions rapides des Sprite8/16/32Get (et des versions grayscale). Cela pour certains jeux où il n'est pas nécessaire de tout redessiner (par exemple, des sidescrollers tels que Phoenix ou clones: le joueur et les ennemis bougent bien plus vite que le background). Ca permet d'utiliser des sprites masqués ou non sans redessiner ce qu'il y a derrière, peut-être que ça serait intéressant pour Nebulus ou Arkanoid ?
Lionel Debroux - membre de TICT.
    
./Post n°7   Marquer comme non lu.
geogeo Ecrit le: Lundi 21 juin 2004 à 11:45 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Euh Lionel si ça t'interesse j'ai une fonction FLIPV pour les sprites, adaptable en 8, 16, 32 mais qui utilise une table de 256 octets. J'ai aussi une fonction de dézoom écran en 4 nvg, passage de 240x128->160x100.
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°8   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 21 juin 2004 à 11:57 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

La routine de dézoom m'intéresse, même si elle a des défauts (scaling de texte, voir le screenshot que tu avais posté...) et que je pense qu'on devrait toujours adapter l'interface à la 89 plutôt que de dézoomer. Est-ce la routine d'ExtendeD ?

Pour les FLIP(H) (je suppose, pour avoir une table, il n'y en a pas besoin en flip vertical), comment se situent tes routines en vitesse par rapport à SpriteX8_MIRROR_H_R ?

Nebulus ou Arkanoid ne peuvent donc pas bénéficier des fonctions sus-mentionnées ?
Lionel Debroux - membre de TICT.
    
./Post n°9   Marquer comme non lu.
geogeo Ecrit le: Lundi 21 juin 2004 à 12:04 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


FLIPV ou FLIPH je ne sais jamais, Miroir sur un axe vertical seulement pour les sprites, travail à partir d'une table. J'utilise cette routine dans Nebulus et le jeu ne subit aucun ralentissement.
Quand à la routine de dézoom se n'est pas la routine d'Extended, c'est ma rotuine, quoi pour être plus précis y a 2 routines de dézoom, une sans table qui tourne à environ 17 fps dans Nebulus et Arkanoid et qui donne un rendu approximatif, l'autre avec table, tournant à 20 fps avec Arkanoid et nebulus et donne un rendu interessant.
-Edité le Lundi 21 juin 2004 à 12:06 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°10   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 21 juin 2004 à 12:09 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

FLIPH probablement. Si c'est possible (routines identiques, i.e. ta routine ne fait pas le dessin, par exemple) fais-moi un bench brute force pour voir la différence.

Je choisirais plutôt la deuxième routine de dezoom.

Tu n'as toujours pas répondu à ma question...
Lionel Debroux - membre de TICT.
    
./Post n°11   Marquer comme non lu.
geogeo Ecrit le: Lundi 21 juin 2004 à 12:21 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Pour les FLIP(H) (je suppose, pour avoir une table, il n'y en a pas besoin en flip vertical), comment se situent tes routines en vitesse par rapport à SpriteX8_MIRROR_H_R ?

Nebulus ou Arkanoid ne peuvent donc pas bénéficier des fonctions sus-mentionnées ?


SpriteX8_MIRROR_H_R travail bit à bit? Si c'est le cas, c'est bien trop lent. :(

Je te poste les routines iuci si tu veux, à savoir quelles sont adapté à mon écran virtuel que j'appel ScreenBuffer, des petites modifications sont à effectuer. Rien de bien méchant.


Routine de dézoom

;C prototype: void CopyScreenBufferToScreen2 (void *src, void *dest1, void *dest2);
;
;void CopyScreenBufferToScreen2 (register void *src asm("%a0"),
;          register void *dest1 asm("%a1"),
;          register void *dest2 asm("%a2"));

  xdef CopyScreenBufferToScreen2

CopyScreenBufferToScreen2:
  movem.l   d3-d5/a4-a5,-(a7)
  
  lea.l    _data_table0(PC),a4  ; Table 5 bits
  lea.l    _data_table1(PC),a5  ; Table 6 bits
  
  lea   1216+4(a0),a0  

;Sequence = 5.6.5.5.6.5
  moveq.l   #1,d4
screen_plane:
  move.l   #127,d2
  move.w   #32768,d5
LineStart:
  moveq.l  #4,d0
  
  add.w   #7296,d5  ;32768-(x/128*3276+128
  cmp.w   #32768,d5
  bhi.s   line_
  sub.w   #32768,d5
  lea   36(a0),a0
  dbf   d2,LineStart
  movem.l  (a7)+,d3-d5/a4-a5
  rts
  
line_:
  moveq.l  #0,d1
  moveq.l  #0,d3
  
  ;Octet 1 (5)
  move.b   (a0)+,d1
      move.b   0(a4,d1.w),d3
      lsl.l    #6,d3
      
      ;Octet 2 (6)
  move.b   (a0)+,d1
      or.b     0(a5,d1.w),d3
      lsl.l    #5,d3
      
      ;Octet 3 (5)
  move.b   (a0)+,d1
      or.b     0(a4,d1.w),d3
      lsl.l    #5,d3
      
      ;Octet 4 (5)
  move.b   (a0)+,d1
      or.b     0(a4,d1.w),d3
      lsl.l    #6,d3
      
      ;Octet 5 (6)
  move.b   (a0)+,d1
      or.b     0(a5,d1.w),d3
      lsl.l    #5,d3
      
      ;Octet 6 (5)
  move.b   (a0)+,d1
      or.b     0(a4,d1.w),d3
      
      ;Ligne de 32 pixels
      move.l   d3,(a1)+
      dbf   d0,line_
  
  lea.l    10(a1),a1
  addq.l   #6,a0
  dbf   d2,LineStart
  
  lea   2688(a0),a0
  movea.l  a2,a1
  dbf   d4,screen_plane
  movem.l  (a7)+,d3-d5/a4-a5
  rts


;Table de 5 bits  
_data_table0:
  dc.b  %00000000
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000001
  dc.b  %00000000
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000011
  dc.b  %00000010
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000011
  dc.b  %00000100
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000101
  dc.b  %00000100
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000111
  dc.b  %00000110
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000111
  dc.b  %00001000
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001001
  dc.b  %00001000
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001011
  dc.b  %00001010
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001011
  dc.b  %00001100
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001101
  dc.b  %00001100
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001111
  dc.b  %00001110
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001111
  dc.b  %00000000
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000001
  dc.b  %00000000
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000011
  dc.b  %00000010
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000011
  dc.b  %00000100
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000101
  dc.b  %00000100
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000111
  dc.b  %00000110
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000111
  dc.b  %00001000
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001001
  dc.b  %00001000
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001011
  dc.b  %00001010
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001011
  dc.b  %00001100
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001101
  dc.b  %00001100
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001111
  dc.b  %00001110
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001111
  dc.b  %00010000
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010001
  dc.b  %00010000
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010011
  dc.b  %00010010
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010011
  dc.b  %00010100
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010101
  dc.b  %00010100
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010111
  dc.b  %00010110
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010111
  dc.b  %00011000
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011001
  dc.b  %00011000
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011011
  dc.b  %00011010
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011011
  dc.b  %00011100
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011101
  dc.b  %00011100
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011111
  dc.b  %00011110
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011111
  dc.b  %00010000
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010001
  dc.b  %00010000
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010011
  dc.b  %00010010
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010011
  dc.b  %00010100
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010101
  dc.b  %00010100
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010111
  dc.b  %00010110
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010111
  dc.b  %00011000
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011001
  dc.b  %00011000
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011011
  dc.b  %00011010
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011011
  dc.b  %00011100
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011101
  dc.b  %00011100
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011111
  dc.b  %00011110
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011111

;Table de 6 bits  
_data_table1:
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000000
  dc.b  %00000001
  dc.b  %00000010
  dc.b  %00000011
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00000100
  dc.b  %00000101
  dc.b  %00000110
  dc.b  %00000111
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001000
  dc.b  %00001001
  dc.b  %00001010
  dc.b  %00001011
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00001100
  dc.b  %00001101
  dc.b  %00001110
  dc.b  %00001111
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010000
  dc.b  %00010001
  dc.b  %00010010
  dc.b  %00010011
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00010100
  dc.b  %00010101
  dc.b  %00010110
  dc.b  %00010111
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011000
  dc.b  %00011001
  dc.b  %00011010
  dc.b  %00011011
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00011100
  dc.b  %00011101
  dc.b  %00011110
  dc.b  %00011111
  dc.b  %00100000
  dc.b  %00100001
  dc.b  %00100010
  dc.b  %00100011
  dc.b  %00100000
  dc.b  %00100001
  dc.b  %00100010
  dc.b  %00100011
  dc.b  %00100100
  dc.b  %00100101
  dc.b  %00100110
  dc.b  %00100111
  dc.b  %00100100
  dc.b  %00100101
  dc.b  %00100110
  dc.b  %00100111
  dc.b  %00101000
  dc.b  %00101001
  dc.b  %00101010
  dc.b  %00101011
  dc.b  %00101000
  dc.b  %00101001
  dc.b  %00101010
  dc.b  %00101011
  dc.b  %00101100
  dc.b  %00101101
  dc.b  %00101110
  dc.b  %00101111
  dc.b  %00101100
  dc.b  %00101101
  dc.b  %00101110
  dc.b  %00101111
  dc.b  %00110000
  dc.b  %00110001
  dc.b  %00110010
  dc.b  %00110011
  dc.b  %00110000
  dc.b  %00110001
  dc.b  %00110010
  dc.b  %00110011
  dc.b  %00110100
  dc.b  %00110101
  dc.b  %00110110
  dc.b  %00110111
  dc.b  %00110100
  dc.b  %00110101
  dc.b  %00110110
  dc.b  %00110111
  dc.b  %00111000
  dc.b  %00111001
  dc.b  %00111010
  dc.b  %00111011
  dc.b  %00111000
  dc.b  %00111001
  dc.b  %00111010
  dc.b  %00111011
  dc.b  %00111100
  dc.b  %00111101
  dc.b  %00111110
  dc.b  %00111111
  dc.b  %00111100
  dc.b  %00111101
  dc.b  %00111110
  dc.b  %00111111
  dc.b  %00100000
  dc.b  %00100001
  dc.b  %00100010
  dc.b  %00100011
  dc.b  %00100000
  dc.b  %00100001
  dc.b  %00100010
  dc.b  %00100011
  dc.b  %00100100
  dc.b  %00100101
  dc.b  %00100110
  dc.b  %00100111
  dc.b  %00100100
  dc.b  %00100101
  dc.b  %00100110
  dc.b  %00100111
  dc.b  %00101000
  dc.b  %00101001
  dc.b  %00101010
  dc.b  %00101011
  dc.b  %00101000
  dc.b  %00101001
  dc.b  %00101010
  dc.b  %00101011
  dc.b  %00101100
  dc.b  %00101101
  dc.b  %00101110
  dc.b  %00101111
  dc.b  %00101100
  dc.b  %00101101
  dc.b  %00101110
  dc.b  %00101111
  dc.b  %00110000
  dc.b  %00110001
  dc.b  %00110010
  dc.b  %00110011
  dc.b  %00110000
  dc.b  %00110001
  dc.b  %00110010
  dc.b  %00110011
  dc.b  %00110100
  dc.b  %00110101
  dc.b  %00110110
  dc.b  %00110111
  dc.b  %00110100
  dc.b  %00110101
  dc.b  %00110110
  dc.b  %00110111
  dc.b  %00111000
  dc.b  %00111001
  dc.b  %00111010
  dc.b  %00111011
  dc.b  %00111000
  dc.b  %00111001
  dc.b  %00111010
  dc.b  %00111011
  dc.b  %00111100
  dc.b  %00111101
  dc.b  %00111110
  dc.b  %00111111
  dc.b  %00111100
  dc.b  %00111101
  dc.b  %00111110
  dc.b  %00111111


Routine FLIPH

| C prototype: void GraySprite32_FLIPV (register short h asm("%d2"), register void *sprt asm("%a0"), register void *dest asm("%a1"));

.data
.globl GraySprite32_FLIPH
.even

GraySprite32_FLIPH:
    dbf      %d2,__Rest_of_GraySprite32_FLIPH
    rts

__Rest_of_GraySprite32_FLIPH:
    move.l   %a2,-(%sp)
    move.l   %d3,-(%sp)
    lea.l    tbl_flipv(%PC),%a2
    
__Loop_GraySprite32_FLIPH:
    moveq.l  #0,%d3
    moveq.l  #0,%d1
    move.l   (%a0)+,%d0
    
    |Partie n°1
    move.b   %d0,%d1
    move.b   0(%a2,%d1.w),%d3
    rol.l    #8,%d3
    lsr.l    #8,%d0
    
    |Partie n°2
    move.b   %d0,%d1
    move.b   0(%a2,%d1.w),%d3
    rol.l    #8,%d3
    lsr.l    #8,%d0
    
    |Partie n°3
    move.b   %d0,%d1
    move.b   0(%a2,%d1.w),%d3
    rol.l    #8,%d3
    lsr.l    #8,%d0
    
    |Partie n°4
    move.b   %d0,%d1
    move.b   0(%a2,%d1.w),%d3
    
    move.l   %d3,(%a1)+
    dbf      %d2,__Loop_GraySprite32_FLIPH
    
    move.l   (%sp)+,%d3
    move.l   (%sp)+,%a2
    rts


tbl_flipv:
  .byte  0b00000000
  .byte  0b10000000
  .byte  0b01000000
  .byte  0b11000000
  .byte  0b00100000
  .byte  0b10100000
  .byte  0b01100000
  .byte  0b11100000
  .byte  0b00010000
  .byte  0b10010000
  .byte  0b01010000
  .byte  0b11010000
  .byte  0b00110000
  .byte  0b10110000
  .byte  0b01110000
  .byte  0b11110000
  .byte  0b00001000
  .byte  0b10001000
  .byte  0b01001000
  .byte  0b11001000
  .byte  0b00101000
  .byte  0b10101000
  .byte  0b01101000
  .byte  0b11101000
  .byte  0b00011000
  .byte  0b10011000
  .byte  0b01011000
  .byte  0b11011000
  .byte  0b00111000
  .byte  0b10111000
  .byte  0b01111000
  .byte  0b11111000
  .byte  0b00000100
  .byte  0b10000100
  .byte  0b01000100
  .byte  0b11000100
  .byte  0b00100100
  .byte  0b10100100
  .byte  0b01100100
  .byte  0b11100100
  .byte  0b00010100
  .byte  0b10010100
  .byte  0b01010100
  .byte  0b11010100
  .byte  0b00110100
  .byte  0b10110100
  .byte  0b01110100
  .byte  0b11110100
  .byte  0b00001100
  .byte  0b10001100
  .byte  0b01001100
  .byte  0b11001100
  .byte  0b00101100
  .byte  0b10101100
  .byte  0b01101100
  .byte  0b11101100
  .byte  0b00011100
  .byte  0b10011100
  .byte  0b01011100
  .byte  0b11011100
  .byte  0b00111100
  .byte  0b10111100
  .byte  0b01111100
  .byte  0b11111100
  .byte  0b00000010
  .byte  0b10000010
  .byte  0b01000010
  .byte  0b11000010
  .byte  0b00100010
  .byte  0b10100010
  .byte  0b01100010
  .byte  0b11100010
  .byte  0b00010010
  .byte  0b10010010
  .byte  0b01010010
  .byte  0b11010010
  .byte  0b00110010
  .byte  0b10110010
  .byte  0b01110010
  .byte  0b11110010
  .byte  0b00001010
  .byte  0b10001010
  .byte  0b01001010
  .byte  0b11001010
  .byte  0b00101010
  .byte  0b10101010
  .byte  0b01101010
  .byte  0b11101010
  .byte  0b00011010
  .byte  0b10011010
  .byte  0b01011010
  .byte  0b11011010
  .byte  0b00111010
  .byte  0b10111010
  .byte  0b01111010
  .byte  0b11111010
  .byte  0b00000110
  .byte  0b10000110
  .byte  0b01000110
  .byte  0b11000110
  .byte  0b00100110
  .byte  0b10100110
  .byte  0b01100110
  .byte  0b11100110
  .byte  0b00010110
  .byte  0b10010110
  .byte  0b01010110
  .byte  0b11010110
  .byte  0b00110110
  .byte  0b10110110
  .byte  0b01110110
  .byte  0b11110110
  .byte  0b00001110
  .byte  0b10001110
  .byte  0b01001110
  .byte  0b11001110
  .byte  0b00101110
  .byte  0b10101110
  .byte  0b01101110
  .byte  0b11101110
  .byte  0b00011110
  .byte  0b10011110
  .byte  0b01011110
  .byte  0b11011110
  .byte  0b00111110
  .byte  0b10111110
  .byte  0b01111110
  .byte  0b11111110
  .byte  0b00000001
  .byte  0b10000001
  .byte  0b01000001
  .byte  0b11000001
  .byte  0b00100001
  .byte  0b10100001
  .byte  0b01100001
  .byte  0b11100001
  .byte  0b00010001
  .byte  0b10010001
  .byte  0b01010001
  .byte  0b11010001
  .byte  0b00110001
  .byte  0b10110001
  .byte  0b01110001
  .byte  0b11110001
  .byte  0b00001001
  .byte  0b10001001
  .byte  0b01001001
  .byte  0b11001001
  .byte  0b00101001
  .byte  0b10101001
  .byte  0b01101001
  .byte  0b11101001
  .byte  0b00011001
  .byte  0b10011001
  .byte  0b01011001
  .byte  0b11011001
  .byte  0b00111001
  .byte  0b10111001
  .byte  0b01111001
  .byte  0b11111001
  .byte  0b00000101
  .byte  0b10000101
  .byte  0b01000101
  .byte  0b11000101
  .byte  0b00100101
  .byte  0b10100101
  .byte  0b01100101
  .byte  0b11100101
  .byte  0b00010101
  .byte  0b10010101
  .byte  0b01010101
  .byte  0b11010101
  .byte  0b00110101
  .byte  0b10110101
  .byte  0b01110101
  .byte  0b11110101
  .byte  0b00001101
  .byte  0b10001101
  .byte  0b01001101
  .byte  0b11001101
  .byte  0b00101101
  .byte  0b10101101
  .byte  0b01101101
  .byte  0b11101101
  .byte  0b00011101
  .byte  0b10011101
  .byte  0b01011101
  .byte  0b11011101
  .byte  0b00111101
  .byte  0b10111101
  .byte  0b01111101
  .byte  0b11111101
  .byte  0b00000011
  .byte  0b10000011
  .byte  0b01000011
  .byte  0b11000011
  .byte  0b00100011
  .byte  0b10100011
  .byte  0b01100011
  .byte  0b11100011
  .byte  0b00010011
  .byte  0b10010011
  .byte  0b01010011
  .byte  0b11010011
  .byte  0b00110011
  .byte  0b10110011
  .byte  0b01110011
  .byte  0b11110011
  .byte  0b00001011
  .byte  0b10001011
  .byte  0b01001011
  .byte  0b11001011
  .byte  0b00101011
  .byte  0b10101011
  .byte  0b01101011
  .byte  0b11101011
  .byte  0b00011011
  .byte  0b10011011
  .byte  0b01011011
  .byte  0b11011011
  .byte  0b00111011
  .byte  0b10111011
  .byte  0b01111011
  .byte  0b11111011
  .byte  0b00000111
  .byte  0b10000111
  .byte  0b01000111
  .byte  0b11000111
  .byte  0b00100111
  .byte  0b10100111
  .byte  0b01100111
  .byte  0b11100111
  .byte  0b00010111
  .byte  0b10010111
  .byte  0b01010111
  .byte  0b11010111
  .byte  0b00110111
  .byte  0b10110111
  .byte  0b01110111
  .byte  0b11110111
  .byte  0b00001111
  .byte  0b10001111
  .byte  0b01001111
  .byte  0b11001111
  .byte  0b00101111
  .byte  0b10101111
  .byte  0b01101111
  .byte  0b11101111
  .byte  0b00011111
  .byte  0b10011111
  .byte  0b01011111
  .byte  0b11011111
  .byte  0b00111111
  .byte  0b10111111
  .byte  0b01111111
  .byte  0b11111111


Voilà, pour l'utilisation de FLIPV de façon optimale:

//Déplacement à GAUCHE
  if (flag_player_sens==SPRITE_FLIPH)
  {
    INDEX_SPR=SPR_PLAYER_FLIPH;
    
    //Non application du FLIPH
    if ((player_num_spr!=player_flipv_num_spr) || (flag_player_sens!=flag_player_flipv_sens))
    {
      //Réactualisation des variables
      player_flipv_num_spr=num_spr;
      flag_player_flipv_sens=flag_player_sens;
      
      GraySprite32_FLIPH (96, SPR_PLAYER [num_spr], INDEX_SPR);    //96=3x 32x32 (format: mask, light, dark)
    }
  } 
  //Déplacement à DROIT
  else
    INDEX_SPR=SPR_PLAYER [num_spr];
  
  GraySprite32_MASK (104, crdy, 32, INDEX_SPR, ScreenBuffer);
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°12   Marquer comme non lu.
Lionel Debroux Ecrit le: Lundi 21 juin 2004 à 13:29 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

> SpriteX8_MIRROR_H_R travail bit à bit? Si c'est le cas, c'est bien trop lent.
C'était le cas dans ExtGraph < 2.00 Beta 0. Plus maintenant (4 bits par 4 bits). 8 bits par 8 bits sera plus rapide, je verrai de combien.

Merci pour tes routines.

Pour la troisième fois (!), il n'y a aucune indication sur l'utilisabilité éventuelle de SpriteGet/Put (RPLC en fait) rapides dans Arkanoid ou Nebulus...
Lionel Debroux - membre de TICT.
    
./Post n°13   Marquer comme non lu.
Invité Ecrit le: Mardi 22 juin 2004 à 16:06 Déconnecté(e)    
 
J'ai essayé de recompiler la démo 15 sous TIGCC 0.95B11, mais j'ai toujours une erreur, et pas moyen de la corriger : il ne trouve pas une fonction. (Je vous donnerai l'erreur exacte)
Je ne peux la compiler qu'avec un batch fait d'après le modèle de buildone.bat du dossier srcdémos.
Et quand je le fais avec mon batch, ça compile correctement, même pas de warning.
Donc est-ce que TIGCC a du mal avec cette source ou est-ce que je suis un nul ?
Ou est-ce qu'il y a quelque chose à changer ?

De plus, est-ce que le nombre d'animations, la taille des sprites, les niveaux de gris sont complètements modifiables ou y-a-t-il des limites ?
    
./Post n°14   Marquer comme non lu.
Lionel Debroux Ecrit le: Mardi 22 juin 2004 à 16:22 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Il faut en effet utiliser builddemos/buildone pour recompiler les demos. Ca utilise l'exécutable en ligne de commande tigcc. Je suppose qu'il faut que tu mettes la lib statique du tilemap engine dans les libs à utiliser.

> De plus, est-ce que le nombre d'animations, la taille des sprites, les niveaux de gris sont complètements modifiables ou y-a-t-il des limites ?
Nombre d'animations: oui.
Taille des sprites: uniquement 8x8 et 16x16, ce qui sont les sprites normaux. Mais tu peux modifier les routines ASM pour avoir 16x8 par exemple.
Niveaux de gris: 1 ou 2 planes (B/W ou 4 grays). Pas de possibilité de 3 planes (plus lent et plus coûteux en place).
-Edité le Mardi 22 juin 2004 à 16:23 par Lionel Debroux-
Lionel Debroux - membre de TICT.
    
./Post n°15   Marquer comme non lu.
Invité Ecrit le: Mercredi 23 juin 2004 à 18:55 Déconnecté(e)    
 
Merci pour ces réponses, c'est justement juste ce dont j'ai besoin !
Y-a-til une fonction d'ExtGraph ou du TileMap engine pour afficher une image en 8 NVG en plein écran ?
    
./Post n°16   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 23 juin 2004 à 19:27 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  


memcpy ou FastCopyScreen ne te conviennent-ils pas?
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°17   Marquer comme non lu.
Invité Ecrit le: Mercredi 23 juin 2004 à 20:45 Déconnecté(e)    
 
Alors je ne les ai pas encore vues...
Merci.
    
./Post n°18   Marquer comme non lu.
Sasume Ecrit le: Jeudi 24 juin 2004 à 01:22 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Si memcpy n'est pas assez rapide, essaie FastCopyScreen qui fera un peu grossir ton exécutable.
    
./Post n°19   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 24 juin 2004 à 08:45 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

FI, il existe maintenant des versions __attribute__((__regparm__)) de la plupart des routines, c'est le cas de FastCopyScreen_R et GrayClearScreen2B_R.
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » ExtGraph 2.00B3 (41 réponse(s))
Pages : 1/3     « [1] 2 3 » »|

.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 47.07ms avec 23 requetes