Posté le 23/12/2018 17:31
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 130 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 23/12/2018 17:42 | #
De mémoire la plupart des gens font la copie eux-même, ce qui est facile vu que chaque pixel fait 2 octets dans la VRAM.
Citer : Posté le 23/12/2018 17:51 | #
Et comment puis-je afficher un pixel ?
Citer : Posté le 23/12/2018 18:05 | #
D'abord tu obtiens l'adresse de la VRAM avec un syscall. La VRAM est un tableau de 384*216 pixels donc chacun est un short. Pour écrire le pixel à la position (x,y), tu modifies l'entrée numéro 384*y+x de la VRAM pour y mettre la couleur au format R5G6B5.
Citer : Posté le 23/12/2018 18:20 | #
Donc si je veux allumer le pixel x=20, y=15 ça donne :
VRAM[384*15+20] = R0G0B0;
?
Citer : Posté le 23/12/2018 18:21 | #
Si tu veux que le pixel soit noir, la couleur est 0x0000, donc ça donne :
Attention les lignes et les colonnes sont comptées à partir de 0.
Citer : Posté le 23/12/2018 18:23 | #
Merci je crois avoir compris
Ajouté le 23/12/2018 à 18:29 :
Quand je compile, ca me dit:
'VRAM' was not declared in this scope
A quel moment et comment dois-je la déclarer ?
Citer : Posté le 23/12/2018 18:36 | #
VRAM est un pointeur que tu n'as pas déclaré, tu dois utiliser le syscall (une fonction qui est stocké dans la calculette).
Pour la graph 75 on fait ça :
const static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
short* vram_adress()
{
return (short *)((*SysCall)(0, 0, 0, 0, 309));
}
La fonction vram_adress() renvoie le pointeur qui pointe vers la VRAM du coup tu dois faire:
après je sais pas si c'est pareil pour la Graph 90.
Citer : Posté le 23/12/2018 18:40 | #
Mais à quoi correspondent les variables R4,R5,R6,R7,FNo ?
Citer : Posté le 23/12/2018 18:43 | #
D'après les messages de Lephe c'est un tableau de short donc je modifie mon message. Les variables R4... franchement je sais pas je comprends pas la moitié du code que je t'ai mis (mais ça marche). C'est du C obscure.
Citer : Posté le 23/12/2018 18:47 | #
Avec ton code, ça affiche:
Citer : Posté le 23/12/2018 18:59 | #
Étrange, c'est un warning ou un erreur ? Chez moi ça compile... essaye ça :
".global _vram_address\n"
"_vram_address\n"
"mov.l syscall_table, r2\n"
"mov.l 1f, r0\n"
"jmp @r2\n"
"nop\n"
"1:\n"
".long 0x01E6\n"
"syscall_table:\n"
".long 0x80010070\n"
);
short *vram_address();
tu codes bien sur graph 90 ?
EDIT: Si t'es bien sur Graph 90 je vais pas pouvoir beaucoup t'aider, de plus l'utilisation des syscalls faut faire un peu gaffe...
2eme EDIT: fais gaffe la fonction a changé maintenant c'est "vram_address()" avec deux "d"
Citer : Posté le 23/12/2018 19:03 | #
c'est une erreur mais ou dois-je mettre ton code ?
Citer : Posté le 23/12/2018 19:05 | #
Juste au dessus du main().
EDIT: Je te préviens ce que je fais c'est du bricolage
Citer : Posté le 23/12/2018 19:13 | #
Hmm, sur Graph 90 ce n'est pas le même syscall. Je crois que la fonction GetVRAMAddress() de la libfxcg renvoie ce que tu veux. (Si ça ne marche pas, essaie avec un seul d, il y a des erreurs de ce type qui traînent.)
Citer : Posté le 23/12/2018 19:18 | #
Pour le syscall, j'ai pris le code pour fx-CG. J'ai un pdf que j'ai extrait du .chm si tu veux, un gros tableau
Citer : Posté le 23/12/2018 19:21 | #
Dans ce cas, tu devrais avoir la même adresse de saut que SimLo, soit 0x80020070, pas 0x80010070
Citer : Posté le 23/12/2018 19:24 | #
Ah mince, je parlais pas de ça en plus maï bade
Citer : Posté le 23/12/2018 19:31 | #
Vous m'avez perdu...
@Lephe Quel est le code que je dois mettre pour avoir l'adresse de la VRAM ?
Citer : Posté le 23/12/2018 19:37 | #
essaye ça :
".global _vram_address\n"
"_vram_address\n"
"mov.l syscall_table, r2\n"
"mov.l 1f, r0\n"
"jmp @r2\n"
"nop\n"
"1:\n"
".long 0x01E6\n"
"syscall_table:\n"
".long 0x80020070\n"
);
short *vram_address();
pour rappel, ça va te donner la fonction vram_address() qui renvoie le fameux pointeur vers l'adresse de la Vram, mais d'après Lephenixnoir tu peux aussi utiliser "GetVRAMAddress() de la libfxcg".
Citer : Posté le 23/12/2018 19:39 | #
Dans ma proposition, juste