Page 3 sur 6

Re: Aide pour un programme en C

Message non luPosté: 24 Mar 2011, 21:32
de Lionel Debroux
Ce programme n'aura clairement pas besoin d'une vitesse élevée, donc ça n'est pas grave ici - mais dans le cas général, BitmapPut est fort lente, comme toutes les fonctions graphiques d'AMS.

Re: Aide pour un programme en C

Message non luPosté: 24 Mar 2011, 23:43
de Folco
Mon Tetrix utilise BitmapGet/Put pour scroller l'écran quand une ligne disparait, ça marche au poil pourtant :D:
Bon, comme tout le reste est en assembleur, ça se sent pas trop.

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 12:52
de Kiligolo
Je voudrais savoir, avec la fonction Sprite16(), comment faire l'équivalent de Pt-Off() en Axe. C'est-à-dire que je voudrais que tous les pixels de la zone où la sprite va être affichée s'éteignent avant que l'autre sprite s'affiche.
C'est possible?
Merci! :):

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 13:05
de Lionel Debroux
Deux solutions avec Sprite16:
* Sprite16(..., SPRT_AND) avec un masque intégralement composé de 0 puis Sprite16(..., SPRT_OR);
* Sprite16(..., SPRT_RPLC) pour faire ces deux opérations d'un coup [EDIT: avec GCC4TI 0.96 Beta 10 + bugfix et versions ultérieures - GCC4TI comprend, entre autres améliorations des routines de base, celles contribuées aux routines Sprite* en 2002, 2003 et 2005, mais encore et toujours absentes de TIGCC];

Ailleurs, ExtGraph offre deux solutions:
* Sprite16_BLIT_R avec un blitmask de 0;
* Sprite16_RPLC_R.
Et Genlib a également, forcément, ce genre de features, mais je te laisserai regarder la doc / je laisserai Folco intervenir à  ce sujet :):

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 13:14
de Kiligolo
Merci!! :D

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 19:03
de Loulou 54
Folco a écrit:Mon Tetrix utilise BitmapGet/Put pour scroller l'écran quand une ligne disparait, ça marche au poil pourtant :D:
Bon, comme tout le reste est en assembleur, ça se sent pas trop.


Cool le jeu ! :;): Par contre on a pas le temps de lire le score quand on perd.. :#tsss#:
Par contre les sources.. Incompréhensibles ! :#gol#:
D'ailleurs, je me demande justement où tu utilises BitmapPut vu que c'est en assembleur !

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 20:39
de Folco
Merci :D:

Euh ben les sources incompréhensibles, évidemment si tu maitrises pas l'assembleur, t'y arriveras pas :D:
Et de mon côté, c'est mon tout premier release en assembleur, et j'avoue bien humblement qu'assembleur ou pas, la propreté n'est pas forcément là :D

Sinon, je croyais qu'il y avait une pause à la fin du jeu... Je vais regarder.

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 20:49
de Folco
Code: Tout sélectionner
Check:
   bsr   FindCoordinateInMatrix
   bsr   TestInMatrix
   bne   ReInit
   dbra.w   d0,Check
   rts
LevelRect:
      dc.b   88,47,135,56      ;level area
ScoreRect:
      dc.b   78,84,143,94      ;score area

;|=========================================
;|   ReInit
;|=========================================
ReInit:
   addq.l   #8,sp            ;remove the return adress of previous function
   lea.l   Restart(pc),a0
   st.b   (a0)
   bra   Quit            ;and quit

Donc a priori pas de pause en fait :(:
Code: Tout sélectionner
Quit:
        ...
   move.b   Restart(pc),d0               ;restart game?
   beq.s   NoRestart               ;no, quit now
   pea.l   _main(pc)               ;else push _main to restart game
NoRestart:
   rts

Ah oué j'avais pas froid aux yeux à l'époque :D:

Et sinon, BitmapGet et BitmapPut sont dans object.asm, dans la toute denière fonction ScrollRect.

Et d'ailleurs, cette fonction contient un bug de design faisant apparaitre un bug graphique sous PedroM. Saurez-vous le trouver ? :%):

Re: Aide pour un programme en C

Message non luPosté: 25 Mar 2011, 23:03
de tama
effectivement, le "push main" est vraiment pas mal :D

Re: Aide pour un programme en C

Message non luPosté: 26 Mar 2011, 13:59
de Kiligolo
Je voudrais savoir on divise un double par un double on obtient et que l'on affiche le résultat, ça affiche plein de chiffres inutiles après la virgule.