Vous n'êtes pas identifié.
Voila, je me suis aidé du tuto de Whyp poir desactiver l'Int 9 qui ecrit dans le buffer touche pour accelerer Space Invaders, voila ça meche pour remplcer l'int mais pour le remettre, ça plante
Donc voila mon code :
int isint9on=1; void interrupt int9off(); //prototype int9 modifiÈ void interrupt (*oldint)(); //pointeur int9 normal void desactint9(void){isint9on=0; oldint = _dos_getvect(0x9); _dos_setvect(0x9,int9off);} void actint9(void){isint9on=1;setvect(0x9,oldint);} void interrupt int9off(void){if(isint9on==1) oldint();};//Ici devrait remplir le buffer
Merci de m'aider, c urgent pour l'evenir de Space Invaders
Note : Le tir ne s'arrete plus !!!
Hors ligne
Le probleme c que je comprend pas tout a fais ce que tu veut reussir a faire, mais voici ce que je pense que tu devrai faire :
tu crée un proto qui fais rien :
void interrupt nope(void)
{
}
un pointeur vers l'int9 d'origine:
void interrupt (*int9)(void);
une routine qui remplace l'int9 par la notre qui fais rien
void setvector9(void)
{
int9=_dos_getvect(0x9);
_dos_setvect(0x9,nope);
}
Pour la quitter, tu n'as plus qu'a faire ceci :
setvect(9,int9);
Et ça ça marche.
@+
Hors ligne
Ouias merci mais c exactement ce que j'ai fait, c que j'avais essayé de le corriger, a la compilation, il me met "Nonportable Pointer Conversion"
Je pense que ça viens de la, voila mon code d'origine :
void interrupt int9off(); //prototype int9 modifiÈ void interrupt (*oldint)(); //pointeur int9 normal void desactint9(void){ oldint = _dos_getvect(0x9); _dos_setvect(0x9,int9off);} void actint9(void){setvect(0x9,oldint);} void interrupt int9off(void){ };//Fonction qui fait rien
Hors ligne
Essaie de mettre _dos_setvect au lieu de setvect, sinon si cette erreur n'est qu'n warning, oublie là.
@+
Hors ligne
m^me si c un warning, c un warning, mais bon, je vais essayer
merci beaucoup whyp, sinon, je suis en train de faire un noueau Sysxpl Receiver, il faudra que tu me dise le protocole de la prochaine version
Sinon, je crois faire un lib communication
commlib.h
(tu pourra m'aider ?)
Hors ligne
Voila, t'as qu'as faire ça :
xor ax,ax
mov es,ax
mov ax,[es:0x26]
mov [OldInt9Seg],ax
mov ax,[es:0x24]
mov [OldInt9Off],ax
mov ax,[es:0x03FE]
mov [es:0x26],ax
mov ax,[es:0x03FC]
mov [es:0x24],ax
Ca sauvegarde dans deux vairiables que tu crée (OldInt9Seg et Off, mais la c pour nasm, ne met pas les crochets), puis pour remettre dans l'etat initial :
xor ax,ax
mov es,ax
mov ax,[OldInt9Seg]
mov [es:0x26],ax
mov ax,[OldInt9Off]
mov [es:0x24],ax
Hors ligne
Merci beaucoup Whyp !!
Hors ligne
YOUPIIII ça martche, merci whyp t mon sauveur !!!
Hors ligne