Vous n'êtes pas identifié.
Salut à tous (euh comme vous le voyez je suis toujours pas mort )
Bon, étant donné que ma connaissance de l'asm frise le zéro ... je n'arrive pas a créer une fonction qui récuper la valeur du timer de la g100 (pas le RTC mais bien le timer rapide). Si qqun peut me donner un coup de pouce ou a déja fait un fonction, je suis preneur
En faite, j'en ai besoin pour avoir une base de temps fixe dans un jeu que je dévellope pour régler le problème des ralentissement et autre bidule du genre ( comme pouvoir calculer le fps)
++ guys ;-)
Hors ligne
pour avoir le nombre de jours il faut faire
in ax,0x20
les secondes :
in al,0x1D
les minutes :
in al,0x1E
les secondes :
in al,0x1F
enfin je sais pas si c'est exactement ce que tu voulais
(j'ai regardé dans casio2.h il y a toutes les fonctions pour l'heure/date)
Hors ligne
dsl Bija mais c juste l'autre qu'il me faut ... sinon, pour l'heure, ect, j'ai déja tout ce qu'il faut (et je n'en ais pas besoin) ,
Merci quand même ;-)
Il s'agit de l'interruption 1Ch (voir page 25 du guide du programmeur 2nd édition ;-) )
En fait, je c pas du tout comment la mettre en pratique ... (quand je pense que je prog sur g100 depuis 4 ans passé et je c toujours pas faire ca ... :oops: ). Ca m'apprendra à ne pas me tenir au courant des dernières trouvailles sur g100 et à programmer un peu moins en Opengl avec des Lib toute faites ...
Hors ligne
ah ok désolé !!
sinon le timer je ne sais pas non plus
mais bon je programme depuis quelques mois seulement ca me fait une excuse
Hors ligne
la version longue :
int compteur=0; void interrupt newint1C() { asm int 0xD9; asm mov ax, [compteur]; asm inc ax; asm mov [compteur], ax; } void main () { int adr1C_segment,adr1C_offset,adrD9_segment,adrD9_offset; //on pushe asm push ax; asm push es; asm push di; //sauvegarde le vect de l'int 1C asm xor ax, ax; asm mov es, ax; asm mov ax, 0x001C * 4; asm mov di, ax; asm mov ax, es:[di]; asm mov adr1C_segment, ax; asm mov ax, es:[di + 2]; asm mov adr1C_offset, ax; //remplace celui de la D9 asm xor ax, ax; asm mov es, ax; asm mov ax, 0x00D9 * 4; asm mov di, ax; asm mov ax, adr1C_segment; asm mov es:[di], ax; asm mov ax, adr1C_offset asm mov es:[di + 2], ax; //met la perso ds la 1C asm xor ax, ax; asm mov es, ax; asm mov ax, 0x001C * 4; asm mov di, ax; asm mov ax, offset newint1C; asm mov es:[di], ax; asm mov ax, cs; asm mov es:[di + 2], ax; //et on pope asm pop di; asm pop es; asm pop ax; // ... //on pushe asm push ax; asm push es; asm push di; //remet l'int 1C com i fo asm xor ax, ax; asm mov es, ax; asm mov ax, 0x001C * 4; asm mov di, ax; asm mov ax, adr1C_segment; asm mov es:[di], ax; asm mov ax, adr1C_offset asm mov es:[di + 2], ax; //et on pope asm pop di; asm pop es; asm pop ax; }
Hors ligne
Tiens, je crois que je vais me baser sur ce code dans gxLib pour ne pas avoir à utiliser dos.h
Sinon Gathering, pour les timers j'ai aussi une lib qui fournit une classe pour en implementer, mais tu le sais déjà...
Hors ligne
ouaip merci Ju
je suis en train d'essayer de la comprendre ..
Hors ligne
le getvect/setvect en C-inline asm, en plus comprehensible et plus souple :
//compatibilité TC3-DM #ifdef __DMC__ #define far __far #define interrupt __interrupt #endif void (interrupt far * dos_getvect(unsigned vector))() { void (interrupt far * funcptr)(); asm mov AL,byte ptr vector; asm mov AH,0x35; asm int 0x21; asm mov word ptr funcptr,BX; asm mov word ptr funcptr+2,ES; return funcptr; } void dos_setvect(unsigned vector, void (interrupt far * funcptr)()) { asm mov AL,byte ptr vector; asm mov AH,0x25; asm push DS; asm lds DX,dword ptr funcptr; asm int 0x21; asm pop DS; } int compteur=0; void interrupt far newint1C() { asm int 0xD9; asm mov ax, [compteur]; asm inc ax; asm mov [compteur], ax; } void (interrupt far * oldint1C)(); void setTimer() { oldint1C=dos_getvect(0x1C); dos_setvect(0x1C, newint1C); } void endTimer() { dos_setvect(0x1C,oldint1C); } int main(int argc, char* argv[]) { setTimer(); //... endTimer(); return 0; }
doit surement y avoir des erreurs mais bon...
Hors ligne
oui oui c'est pour sa que g dit : "version longue"
g oublié de rajouter "et moche"
Hors ligne
doit surement y avoir des erreurs mais bon...
Non non, y'a pas d'erreur :P . G réussit a compiler le tous du premier coup sans aucun problème si ce n'est 2 warning facilement contournable.
Bon maintenant, je v essayer de comprendre dans une ceratine mesure (suis pas pro de l'asm) ensuite, je me lance dans un algo de scrolling horizontal
Hors ligne