Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 350 917

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» AmiDARK Engine - DBPro Convert - SOTB Demo

AmiDARK Engine - DBPro Convert - SOTB Demo#840

7Contributeur(s)
AmiDARKsinisrusK-LMurakamiLioCrisotMrodfr
3 Modérateur(s)
K-LElwoodcorto
AmiDARK AmiDARKicon_post
Voila mes fonctions pour le Timer :


BOOL?AmigaSYS_OpenDevice_Timer(?void?){
??if?((?timerPort?=?IExec->CreateMsgPort()?)){
????timersigflag?=?1L?<mp_SigBit;
????if?((?timerRequest?=?(?struct?TimeRequest*?)?IExec->CreateIORequest(?timerPort,?sizeof(?struct?TimeRequest?)))){
??????if?(?!?(IExec->OpenDevice(?"timer.device",?UNIT_VBLANK,?(?struct?IORequest?*)?timerRequest,?0?))){
????????TimerBase?=?timerRequest->Request.io_Device;
????????if?((?ITimer?=?(struct?TimerIFace?*)?IExec->GetInterface((?struct?Library?*)TimerBase,?"main",?1,?0?))){
??????????timerFirst?=?TRUE;
??????????ITimer->GetSysTime(?MyTimeVal?);?//?On?récupère?le?timer?actuel?en?tant?que?timer?initial
??????????NewTimer?=?MyTimeVal->Microseconds;
??????????DemoStartTimer?=?MyTimeVal->Seconds;
??????????return?TRUE;
?????????}
???????}
?????}
???}
??return?FALSE;
?}

void?AmigaSYS_CloseDevice_Timer(?void?){
??/*?First?abort?any?current?timer?io?*/
??if?(?timerRequest?&&?!timerFirst?){
????IExec->AbortIO((?struct?IORequest?*)?timerRequest?);
????IExec->WaitIO((?struct?IORequest?*)?timerRequest?);
????IExec->SetSignal(?0L,?timersigflag?);
???}
??if?(?ITimer?){
????IExec->DropInterface((?struct?Interface?*)?ITimer?);
????ITimer?=?NULL;
???}
??if?(TimerBase?&&?timerRequest?){
????TimerBase?=?NULL;
????IExec->CloseDevice((?struct?IORequest?*)?timerRequest?);
????IExec->DeleteIORequest((?struct?IORequest?*?)?timerRequest?);
????timerRequest?=?NULL;
????if?(?timerPort?){
??????IExec->DeleteMsgPort(?timerPort?);
??????timerPort?=?NULL;
?????}
???}
?}

void?AmigaSYS_UpdateTimer(?void?){
??OldTimer?=?NewTimer;
??ITimer->GetSysTime(?MyTimeVal?);
??NewTimer?=(?MyTimeVal->Seconds?%86400?)?*?1000000?+?MyTimeVal->Microseconds;
?}


Par contre, j'ai un blocage (ralentissement) toutes les 2 secondes à peu près ...
Peux-tu me montrer ta routine pour l'intervalle ?


Concernant la zik, elle y est bien mais le son est faible. C'est l'unit 1 qui est utilisé si je me trompe pas et faut mettre le gain à 0db sinon c'est trop faible :(
Par contre j'ai un bug chez moi, avec la ptreplay.library et ptplay.library, seuls 2 channels sont jouées ...


Message édité par : AmiDARK / 15-09-2010 01:11
Crisot Crisoticon_post
Putain c'est dingue j'ai exactement la même routine (enfin pas un copier coller mais le même concept quoi) et j'ai une DSI au GetSysTime().

Y'a juste un truc que j'ai pas:

timersigflag = 1L << timerPort->mp_SigBit;

Je vois pas du tout à quoi sert ce truc? Toutes les routines que j'ai vu avec la nouvelle struct TimeVal avaient cette ligne là, cela dit je trouve ça abominable. Faudrait que je test avec, peut-être que je ne planterait plus.



Pour ton "blocage", je pense malheureusement que c'est un problème de vsync. AmigaOs ne génère hélas pas des résolutions à 60.000 Hz, mais plutot des conneries du style 59.5 ou 60.5 même pas respectueux des normes (mes LCD ont du mal à auto-centrer l'image, c'est dire...)

Le problème c'est que les LCD font leur !!refresh!! à 60.000 Hz précisément quelque soit le signal reçu. Donc si tu es pas synchro,tu as visuellement l'impression qu'une frame saute.

Si t'es à 60.2 Hz, t'as un saut toutes les 5 secondes, à 60.5 Hz toutes les 2 secondes, etc...

CGXMode ou P96Mode c'était chiant, mais au moins en faisant une résolution à 60.00000 Hz, on avait pas ce problème.



Ma routine d'intervalle? Ca va pas beaucoup t'aider, d'autant que ne faisant aucune 2D, je me fout asser royalement d'un VSYNC propre :-) (on a déjà bien asser de mal à avoir du framerate)
Message édité par : Crisot / 15-09-2010 04:27
Mrodfr Mrodfricon_post
Citation : Crisot?

CGXMode ou P96Mode c'était chiant, mais au moins en faisant une résolution à 60.00000 Hz, on avait pas ce problème.

Message édité par : Crisot / 15-09-2010 04:27?


on peut toujours utiliser P96mode sous AOS4.1U2.

http://www.amigans.net/modules/newbb/viewtopic.php?topic_id=3600&forum=3&post_id=45794#forumpost45794
SAM440EP+AOS4.1
K-L K-Licon_post
AmiDark : mêmes les enceintes poussées à fond, il n'y a pas de son. Il doit y avoir un autre souci.

Crisot : merci pour l'explication de la légère saccde toutes les 2 secondes, ça explique enfin quelque chose que je me demandais depuis des années :-)
--
AmigaONE X1000/1,8 Ghz (A-Eon), Radeon RX560, 2 Go de Ram et OS4.1 FE
AmiDARK AmiDARKicon_post
@K-L :
Il faut que tu aies installé la ptplay.library et la ptreplay.library dans LIBS:
dans l'archive de la ptreplay sur os4depot.net il y a aussi la ptplay.library.

@Crisot:
Y'a juste un truc que j'ai pas:

timersigflag = 1L << timerPort->mp_SigBit;

Je vois pas du tout à quoi sert ce truc? Toutes les routines que j'ai vu avec la nouvelle struct TimeVal avaient cette ligne là, cela dit je trouve ça abominable. Faudrait que je test avec, peut-être que je ne planterait plus.

Je sais pas non plus mais c'est un gars dans le forum anglais amigans qui m'avait donné cette info pour modifier ma fonction.
Par contre mon blocage, je ne pense pas que ce soit un pbe de vsync car en laissant le DESyncRate( 0 ) et donc FPS au max, ou au rafraichissement de l'écran, j'ai pas la saccade. Par contre, si je mets DESyncRate( 60 ) j'ai le soucis. Ca bloque pendant quasiment 1 seconde pleine puis ça repart. Enfin, je vais faire des investigations sur le sujet et voire par rapport à ce que tu dis si la soluce de mrodfr peux résoudre ce pbe :p

@mrodfr : Merci pour l'information je vais testouiller cela de suite :p

@+
AmiDARK.


Message édité par : AmiDARK / 15-09-2010 10:55
Message édité par : AmiDARK / 15-09-2010 10:56
Message édité par : Elwood / 15-09-2010 19:45
Murakami Murakamiicon_post
1 - Oui, je suis en Update2.
2 - J'ai une Radeon 9250.
3 - Oui, ces dossiers sont bien présents.
4 - La résolution en question appara?t bien dans mon monitor.

J'ai la même machine que toi, une Sam440ep Flex à 800 MHz, mais ça ne marche pas, je ne comprends pas pourquoi...
Lisez aMiGa=PoWeR !
aMiGa=PoWeR Website
sinisrus sinisrusicon_post
Chez moi ça marche tres bien avec le son et j'ai aussi la saccade de 2 secondes environ sinon c'est chouette :-)
--
Coin coin... amitheme.amiga-ng.org
Sam460 1,15Ghz - OS4.1FE - Radeon Saphir HD7750 R7 250E - 2Go de ram
Crisot Crisoticon_post
Une saccade DE 2 secondes? Ah ouai c'est plus une saccade là, c'est un blocage...

Aucune idée... Moi je parlais du petit accro d'une VBL régulier qu'on se tape à peu prèt tous.

Bah, go printf() partout dans ta routine, histoire de voir si la saccade se produit toujours au meme moment ou pas :-)
AmiDARK AmiDARKicon_post
@Murakami :
si tu viens à l' μAlchimie, on verra cela ensemble ;)

@Crisot :
C'est pourquoi je pense que c'est un pbe de waitsignal ou autre pour le device timer ... et pas un pbe de vsync

@ +

Message édité par : AmiDARK / 15-09-2010 14:17
K-L K-Licon_post
Moi, je n'ai pas de saccade qui dure 2 secondes, juste une saccade toutes les deux secondes, ce qui est différent.
--
AmigaONE X1000/1,8 Ghz (A-Eon), Radeon RX560, 2 Go de Ram et OS4.1 FE
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme