1

hello les gens,

J'aimerais savoir si certains ce sont penché sur le pb dy vscync en arriere plan, si une interruption existe sur le vblank le changement de pointeur pourrait se faire a ce moment la, et eviter au prog de perdre du temps betement a faire du polling au lieu de bosser...




developpeur de jeux mobiles chez int13 production --- http://int13.net

2

-

3

Pas d'interruption VBLANK on dirait... dommage.. yavait une interruption vblank meme sur ma vieille HP48..
developpeur de jeux mobiles chez int13 production --- http://int13.net

4

Le gain d'une telle technique serait si grand que ca ?
J'ai cru lire que l'ecran tourne autour de 60Hz.
- Si la boucle generale du programme va plus vite qu'un cycle de l'ecran, on est bloque a 60Hz par l'affichage
- Si la boucle generale du programme met une fois et demi le temps d'un cycle d'ecran, ce que fait tout le monde, force un affichage a 30Hz. En moyenne avec un vblank, on pourrait tenter le 45 Hz (ok, pour ce cas, ca peut valoir le coup. Mais bon 30Hz ou 45Hz, les deux sont pas mal)
- Si la boucle generale du programme met deux cycle et demi d'ecran, le vblank permettrait d'atteindre 60/2.5 = 24Hz et l'utilisation normale limite a 60/3 = 20Hz.
Et plus la boucle est longue, plus la difference est minime entre le refresh avec polling et celui utilisant un vblank.

En gros ca sert juste a approcher les 30Hz quand l'affichage standard est limite a 20Hz ? (cas d'une boucle generale qui durerait 2.1 fois un cycle d'ecran)

J'ai pas ete trop brouillon j'espere...
Le pouvoir aux loutres !!!
(et aussi, vive le rose !)
mes petits programmes GP32: http://yaouank.gp32news.com

5

Etre bloqué a 60Hz c'est tres bien, c'est vraiment pas la peine d'aller plus vite que ça.

Faire tourner les jeux a 60FPS stable et synchro Vsync c'est l'objectif.

Le probleme est le suivant :

La boucle de jeu n'est pas parfaitement stable, une explosion, un effet temporaire, et paf je perds de precieuses ms et loupe la synchro, disons d'une ms, est-ce bien raisonable de passer des 14 ou 15 ms suivantes a attendre le vblank plutot que de commencer a generer la frame suivante ?

Avoir un vsync en arriere plan permet d'avoir un jeu bcp plus tolerant aux depassements de synchro.

Sinon on est obligé d'etre sur que dans tous les cas le calcul + affichage d'une frame ne depasse jamais 16.66 ms.

En me baladant un peu j'ai vu que plusieurs fréquences de rafraichissement etaient dispo, et j'ai vu aussi que la fréquence 53Hz semblait etre une sorte de std.

Pkoi pas 60 ?

developpeur de jeux mobiles chez int13 production --- http://int13.net

6

ok. j'avais oublie que des fois c'etait plus lent que d'autres. Que le temps de la boucle pouvait bien changer au cours du jeu.
solution pourrie: passer en 120Hz (mrmirko semble le proposer dans son sdk, je sais pas trop comment reagit la console a ca. surement pas trop mal), tu perds un peu moins de temps.
Le pouvoir aux loutres !!!
(et aussi, vive le rose !)
mes petits programmes GP32: http://yaouank.gp32news.com

7

Pourrie en effet smile

Meme si c'est possible cela a un gros inconvenient : monopoliser le bus 2x plus longtemps pour le screen refresh... Et certainement augmenter la conso.

developpeur de jeux mobiles chez int13 production --- http://int13.net

8

Il me semble que Mr Spiv m'avait dit que le LCD tournait par defaut à 50Hz et qu'on avait pas le choix

Maintenant si on peut le faire tourner a 30Hz ça m'interesse grandement !

9

quand tu regardes le code de MrMirko, il se limite a 50-120Hz

Stef, il y a moyen de mettre des timers je crois. Il y a pas moyen de lancer une fonction refresh appellee je ne sais combien de milliseconde apres le dernier refresh ? (je me demande si Mr.Spiv n'avait pas parle d'un truc comme ca a une epoque.

EDIT: tiens j'ai retrouve le truc de mrspiv dont je voulais parler. A mon avis tout le monde connait ca par coeur sauf moi qui pour l'instant n'y pige pas grand chose. Si ca peut aider tant mieux. Sinon c'est pas grave.

http://www.cs.helsinki.fi/u/jikorhon/condev/gp32/docs.html
GP32 and HBLANK Emulation
Following text describes basic priciples for CPU friendly HBLANK emulation. Basically HBLANK allows you to do raster effects on each raster line without busy-wait polling/waiting for certain raster line position. There are actually two different approaches how to achieve one raster line granularity on GP32 LCD manipulation. Either you use Timer Interrupts or Timer Synchronized DMA. The DMA is very clever and elegant as a solution and works on background without any "maintenance". Interrupts allow more flexibility but on the other hand have larger CPU cycle penalty due interrupt latencies and mandatory interrupt handling code.
Remember the number 1784! It's a magic number for HBLANK raster effects.

Le pouvoir aux loutres !!!
(et aussi, vive le rose !)
mes petits programmes GP32: http://yaouank.gp32news.com

10

Oui, j'ai lu ça.

Dommage qu'il ne finisse pas son explication.

Il faudra que je regarde d'un peu plus pres les timers.... Dommage aussi que la GP32 ne soit pas notre plateforme prioritaire, je n'ai pas bcp de temps a lui consacrer.
developpeur de jeux mobiles chez int13 production --- http://int13.net