Bonjour,

Bon je me décide à demander de l'aide auprès de la communauté car je suis confronté à un problème dont je ne voit pas la dénouement

Je suis entrain de coder un interpréteur de chip-8 en C sous linux (gcc).
Dans mon kernel, j'interprete donc les opcode et j'ai fait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
inline void kernel(unsigned char *memoire, 
                   unsigned char *registre,
                   unsigned short *PC,
                   SDL_Surface* memoire_video,
                   unsigned char *SP,
                   unsigned short *stack,
                   unsigned int *I,
                   unsigned char *etat_touches,
                   unsigned char *delay,
                   unsigned char *sound)
{
   #define x      (opcode&0xF00)>>8
   #define y      (opcode&0xF0)>>4
   #define nnn    (opcode&0xFFF)
   #define kk     (opcode&0xFF)
   #define n      (opcode&0xF)
   #define Vx     *(registre+x)
   #define Vy     *(registre+(y))
   #define Vf     *(registre+0xF)
 
  [....]
 
 case 0x65: 
           printf("memoire : %#X, *I= %#X , i = %#X, Vx = %#X\n",memoire,*I,i,Vx);
           for(i=0; i<(unsigned char)(Vx); i++) { printf("i=%#X\n",i); *(registre+i) = *(memoire+*I+i);} 
           #ifdef __DEBUGGER__
             printf("De I dans V0 à V%i\n",x);
           #endif
           break;
       }
Lorsqu'il interprete l'opcode 0xF065, là ca devient vraiment bizarre. Normalement il devrait regarder ce qu'il y a dans le registre V0, ici il vaut 0x40 et boucler donc 0x40 fois...
Or lors du debug avec le premier printf j'ai les bonnes valeurs... Lors du printf dans la boucle, celle ci s'emballe et ne s'arrete qu'a 0xA7 !!
J'avoue que je ne comprend pas.

Quelqu'un a t'il une piste? ??