Pages vues depuis 25/07/2007 : 25 350 917
Index du forum »» Création-Développement »» AmiDARK Engine - DBPro Convert - SOTB Demo
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;
?}