30

Kevin> OK... va falloir que je voie comment faire cette compression... le truc chaud, c'est qu'il faut que je réussisse à regrouper 36000 sprites (lol) dans un seul truc, tout en gardant la structure que j'utilises sad

Sinon, voila les tailles mémoire du prog (la prochaine bêat sera un peu différente, mais c la taille que ça fait actuellement)
Krypton.ppg (le prog exécutable compressé en ppg) => 26732
krpt_lvl.Klvl (les levels) => 19246
(+ le launcher de ppg... en gros 1800 octets, je crois)
=> total = 46ko environ...
C'est, je crois, moins que Solar striker... (mais plus que phonix !)
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

31

>Shrnklib compresse bien mieux les graphs, faut le repeter combien de fois ?
Ensuite je reviens au sujet : si tu as des problemes de lenteur avec les routines d'extgraph, tu peux baisser le nombre de fps, et augmenter la vitesse interne.

32

si j'augmente la vitesse interne en diminauant le fps, je v avoir un phénomène de saccade sad
J'ai déjà suivi ce conseil une fois (juste après l'OPen-TI Lyonnais) => j'ai gagné pas mal de vitesse ! Mais je ne peux plus refaire pareil... J'ai essayé.. et ça saccade trop sad
=> des déplacements de (en moyenne) trois pixels par trois pixels, au lieu de deux comme maintenant sad
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

33

Mais tu affiches combien de sprites par frame ?

34

heu... je sais pas trop, en fait...
Y'a des sprites que je met à jour tous les cycles du programme, d'autre que je met à jour que tous les en gros 10 cycles, d'autres, tous les 2 ou 3 cycles, d'autres ts les 6 cycles...
=> c pas trop simple à calculer sad
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

35

Comment tu effaces ton ecran ?.

36

je ne l'efface pas.
EN fait, j'efface chaque sprt en l'affichant en OR suivi d'un XOR (pr être sur qu'il était présent) => ça efface les sprt à effacer...

Je peux pas effacer l'écran, vu que j'ai des trucs qui s'ffichent qu'à certains cycles...
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

37

A donc, j'ai compris d'ou vient les ralentissements.
Efface l'ecran a chaque cycle puis affiches les sprites.
Je pense que tu gagneras pas mal, sauf si vraiment beaucoup de sprites ne bougent pas (Plus de 50cheeky

38

arf...
Donc, effacer l'écran est plus rapide que redessiner pas mal de sprites...
OK, je v faire comme tu dis (en sachant que j'ai en fait DEUX écran : un LIGHT_GRAY et un DARK_GRAY)

pr les effacer, j'utiliserai bien la fonctione rapide de Extgraph... mais elle amrche que pr des plans de LCD_SIZE...
ALors que mes deux Vscreen font LCD_SIZE+50+*33
(enfin, tu me dira, au pire, je peux n'effacer que la zone visible...)

Sinon, pour copier une zone d'écran, j'utiliser memcpy... (je peux pas utiliser FéastCopyScreen de Extgraph, v uque je copie pas tt un écran : je copie pas les 8 lignes du bas (je crois que c 8 lignes sad))
=> y'a pas un moyen plus rapide ?
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

39

File moi les prototypes exacts et je te tapes les fonctions.

40

heu... pr la copie et l'effacement ?
OK... va falloir que je mette tt ça qui est sur disquette sur mon compte, et que je le dézippe (en espérant que j'ai la bonne disquette sur moi 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

41

Non le format de tes plans, et le prototype C que tu veux des fonctions ainsi uqe leurs descriptions. Tu le sais pas de tete ? smile

42

non, je le sais po de tête sad

POur la copie d'écran, j'utilises actuellement ceci :
memcpy(light_plane, Vscreen_light_virtuel+25*30, lcd_size-8*30);
memcpy(dark_plane, Vscreen_dark_virtuel+25*30, lcd_size-8*30);
(lcd_size = 3840 sur 92+ et 3000 sur 89)

Le format de mes plans...
heu...
alors, voyons voir... (qu'est ce qu'il est mal foutu mon source sad)
Ce sont des écrans virtuels alloués de cette façon :
Vscreen_light_virtuel = malloc(3840+25*30 +25*30);
Vscreen_dark_virtuel = malloc(3840+25*30 +25*30);
(ils sont tous deux register void *)
=> A la copie de chaque Vscreen sur l'écran, je copie la hauetr d'un écran standar, moins 8 lignes, qui sont celles prises par la barre de statut en bas de l'écran (je ne la dessine qu'une seule fois, au tt début du jeu...)

POur l'effaceement, l'idéal serait d'effacer tt le contenun de chaque Vscreen ,amsi c'est inutile pouisque les 25+8 lignes du bas et les 25 lignes du haut ne sont pas visibles...
=> ce qu'ils faut effacé, c'est de
Vscreen+25*30 à Vscreen+lcd_size-25*30-8*30
(normalement, c'est ça... et ça doit correspondre à la même,chose que ce qui est copié.
(j'espère que je me suis pas planté !!!)

Sinon, point de vue prototype...
Heu... disons quelque chose du style :

CopyScreen(void *, void *);
=> en premier argument, on passe l'écran virtuel light_gray, et en second celui des light_grays... et la fonctione copie tte seule vers GetPlane(LIGHT_GAY) et GetPlane(DARK_GRAY)

pour l'effacement : EraseScreen(void *, void *);
=> les mêmes arguments...
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

43

Bon ben, modif des prototypes smile
Heu utilises ExtGraph modifiee : ClearGrayScreen2B(void *,void *darkplane);

//void ClearScreen(void* lightplane,void* darkplane); // C prototype
asm ("xdef CleaScreen
ClearScreen:
move.l 4(%a7),%a0
move.l 8(%a7),%a1
movem.l %d3-%d7/%a2-%a4,-(%a7)
lea (0xf00-8*30,%a0),%a0
lea (0xf00-8*30,%a1),%a1
moveq #18-1,%d7
moveq #0x0,%d0
moveq #0x0,%d1
moveq #0x0,%d2
moveq #0x0,%d3
moveq #0x0,%d4
moveq #0x0,%d5
moveq #0x0,%d6
movea.l %d0,%a2
movea.l %d0,%a3
movea.l %d0,%a4
0:
movem.l %d0-%d6/%a2-%a4,-(%a0) ; 40
movem.l %d0-%d6/%a2-%a4,-(%a1)
movem.l %d0-%d6/%a2-%a4,-(%a0) ; 80
movem.l %d0-%d6/%a2-%a4,-(%a1)
movem.l %d0-%d6/%a2-%a4,-(%a0) ; 120
movem.l %d0-%d6/%a2-%a4,-(%a1)
movem.l %d0-%d6/%a2-%a4,-(%a0) ; 160
movem.l %d0-%d6/%a2-%a4,-(%a1)
movem.l %d0-%d6/%a2-%a4,-(%a0) ; 200
movem.l %d0-%d6/%a2-%a4,-(%a1)
dbf %d7, 0b ; 200 * 18 = 3600 = lcd_size - 30*8
movem.l (%a7)+,%d3-%d7/%a2-%a4
rts
")

[edit]Edité par PpHd le 19-11-2001 à 20:32:10[/edit]

44

Heu... c'est une modification d'Extgraph ?
Houla... vive l'ASM grin

pour le prototype, bon, ben, c'est pas dur : ça corresponda aux fonctions que j'ai l'habitude d'utiliser grin

Merci bien. Je note (enfin, j'enregistre !) ça... Et je teste soit dans la semaine, soit ce week-end (vu qu'il faut que je revoie une bonne partie de mon algo pour l'effacement d'écran, ça risque d'être ce WE)
=> L'IUT ferme ds moins d'une demi heure... => pas le temps de soir sad

Sinon, pour la copi d'écran, je penses que j'aurai large le temps de tester cette semaine, vu que ça change pas mon algo.

Le tout, c'est qu'il faut que j'arrive à faire de la compilation séparée ici... Chez moi, ça marche sous ligne de commande (fichier .bat => optimisations différentes pr chaque cfichier .c)... mais ici ,faut que j'adapte tt mon fichier... vu qu'on bosse dans des trucs différents (tigcc pas installé, déjà sad)
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

45

//void CopyScreen(void* src, void*dest); // C prototype
asm ("xdef CopyScreen
CopyScreen:
move.l 4(%a7),%a0
move.l 8(%a7),%a1
movem.l %d3-%d7/%a2-%a4,-(%a7)
moveq #18-1,%d7
0:
movem.l (%a0)+,%d0-%d6/%a2-%a4 ; 40
movem.l %d0-%d6/%a2-%a4,(%a1)
movem.l (%a0)+,%d0-%d6/%a2-%a4 ; 80
movem.l %d0-%d6/%a2-%a4,40(%a1)
movem.l (%a0)+,%d0-%d6/%a2-%a4 ; 120
movem.l %d0-%d6/%a2-%a4,80(%a1)
movem.l (%a0)+,%d0-%d6/%a2-%a4 ; 160
movem.l %d0-%d6/%a2-%a4,120(%a1)
movem.l (%a0)+,%d0-%d6/%a2-%a4 ; 200
movem.l %d0-%d6/%a2-%a4,160(%a1)
lea 200(%a1),%a1
dbf %d7, 0b ; 200 * 18 = 3600 = lcd_size - 30*8
movem.l (%a7)+,%d3-%d7/%a2-%a4
rts
")



[edit]Edité par PpHd le 19-11-2001 à 20:36:37[/edit]

46

arf... dur à comprendre au grès de mes "faibles" connaissances en ASM sad
Je "note" celle-là aussi... et je te remercie.

Là, va falloir que je partes : le gardien est déjà passé pour fermer les volets et fenêtres... ça veut dire que c'est prêt à ferner sad

Demain (normalement, j'aurai le temps !), je teste CopyScreen, et je teste celle d'effacement d'écran dès que je epux (faux juste que j'efface pas mal de lignes de mon code, mais aussi que je supprime queles conditions)
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

47

Attention, j'ai edite pour corriger des pbs !

48

eek Maître je dois vous avouer que je suis déçu par votre fonction CopyScreen ! Rassurez-moi, ce n'est pas de vous ??
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

49

nan, c pas d'eux, c de thomas Naussbaumer

squale92> tu fé un deplacement de 2 en 2 toi ? (pr l'instant, moi je suis en 1x1 et je suis obligé de mettre une tempo sinon, c trop rapide) mais bon, j'ai pas bcp d'enemis ... et pis mon background n'est pas plein ...

50

je fais un déplacement des ennemis de 2 en 2 pr les ennemis.
(aussi pour questions de mémoire : ça divise la taille de la trajectoire par deux !)

POur le vaisseau du héros, c'est actuellement un déplacement qui est (je crois, ça fait super longtemps que j'ai fait cette partie du code !) de en moyenne 3 en 3.

Pour le fon, y'a des trucs qui sont de 1 en 1, d'autres de 2 en deux... et ça peut monter un peu plus (je sais plus quelle est la limite max sad)

OUé, ces routines ont juste été modifiées par Pphd... remodifiées ? => il va falloir que je réenregistre cette page grin

Oué, je fais sinon de deux en deux...
Mais faut dire que mon algo est assez mauvais... et loin d'être optimisé sad
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

51

Ces routines ont ete ecrites par Thomas puis modifies par moi. Mais bon, ok y'a pas de deroulement complet de la boucle et pas d'utilisation de tous les registres.
M'enfin, c'est du chipotage a mon avis.

52

si tu le dis grin

Pr le moment, je suis en train de galèrer poi_r essayer de faire de la compilation séparée sous ligne de commande...
J'ai un fichier .bat qui marchait chez moi...
Mais je galère un peu pour le porter pour ici sad

(c'était aussi le cas quand il ne fallait pas de compilation séparée, qd je bossais ac un seul fichier...)
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

53

Hourra !
Ces deux fonctions marchent nickel (à part les commentaires, qui en GNU ASM ne peuvent pas être introduits par ';')

Merci !!!
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

54

Y'a pas de quoi. Si tu veux, je te trouves un truc encore mieux grin

55

Si tu veux Squale92, je peux te proposer les fonctions de GRAPHX, la librairie graphique de l'Azur. Elle se veut au moins égale à ExtGraph en vitesse.

En théorie mes fonctions PutSprite 32 bits sont plus rapides que 4 PutSprite 16 bits... Je sais pas comment il se débrouille thomas N fou
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

56

PpHd> Je veux bien, sans le moindre problème grin

Thibaut> Houla, ça m'interesse... Même si je n'utilises pas énormément de sprites32 (les Boss, et dans les menus, c en gros tout), ce n'est pas de refus...
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

57

Attention il y a bien sûr des PutSprite 16 bits wink
J'ai implémenté les modes OR et AND. Pas encore le masquage.

1) C'est bien ce que tu recherches ?

2) Au fait l'Azur, t'as testé (ne te fie pas aux temps donnés sous VTI, ils sont complètements faux) ?
[edit]Edité par Thibaut le 21-11-2001 à 18:29:59[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

58

Ca serait pratique avec du maskage...
Mais je dois bien avoir un moyen de m'en passer avec des OR et AND, normalement...

Pour les Sprite16, tout dépend de la vitesse par rapport à Extgraph...Je prendrais le plus rapide grin
(je crois que c'est ce qui se fait des ces situations là grin)


petite édition de post (c pas ds mes habitudes, mais bon), pour r"épondre suite aux modifications de Thibaut :
2> Hélas, j'ai eu des problèmes tt le weenk-end avec mes **** de boites mails => je ne l'ai eu que lundi midi sad => pas possible de tester correctement avant le week-end prochain sad
wanadoo => plus moyne de lire avec Outlook2000 (et ça m'affiche même plus tous mes mails sur le site, j'ai l'impression)
serveur de l'IUT était down tt le week-end sad
mail.com > idem la fois où j'ai regardé...
=> j'en ai MARRE de ces adresses mail !!! Vive le DCC sour mIRC !
[edit]Edité par squale92 le 21-11-2001 à 18:39:00[/edit]
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

59


Je suis en train de mijoter une petite fonctionnalité d'optimisation pour les prochaines bêtas... Qui pourrait bien le rendre aussi performant en terme de code produit que GTC, et ceci avec une perte de vitesse négligeable smile))

Au dernières nouvelles il surpasse GTC de 45 % ! Ca devrait retomber à 30 % avec ces optimisations.


Pour les PutSprite : ben un AND suivit d'un OR pour "simuler" un masquage, ce sera forcément plus lent.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

60

pour le AND puis OR, c'est clair que c'est plusn lent... mais ça le fait pas d'avoir des ennemis à travers lesquels on voit l'arrière plan grin
En fait, c'est ce que je faisait avant que PpHd me file la routine d'effacement d'écran : j'effaçait en faisant pr tous les sprites (=> maintenant, le jeu est bcp plus rapide !!!)

Par contre, avant, j'avais des sortes de masques, qui me servaient à effacer les emplacements... et ce que je voulais effacer était en noir...
Maintenant, va falloir que je reffasse ts les masks, en les mettant en blanc sad
(y'en a pas pour trop longtemps je penses...)
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