J espere que tu n as pas trop la pression vu le nombre de messages d encouragement que tu as eu mais c est vrai que ca me ferait aussi enormement plaisir de pouvoir emulé la GBA. Bon courage pour la suite.
kaoru Le 02/03/2004 à 02:02 moi j'm'en fou completement (c'est pour la pression...)
nan, serieux bon courage :3
washo Le 06/03/2004 à 17:53 toujours pas de news....je veux savoir ou on en est....PLZ...
moi aussi jai vraiment hate davoir un emu GBA qui rocks
see you :lol:
faut se calmer les enfants, c est pas parcequ il a pas poste pendant 3 jours qu ils faut s inquiete, vous savez les gens vivent des fois!
Vu qu apparament il y a moyen d emuler la gba, ce serait pas possible d emuler aussi la neo geo?
enf65 Le 08/03/2004 à 12:51 Salut tout le monde,
* Pour répondre à Washo :
Désolé si je poste pas tous les jours, mais j'ai pas internet chez moi, alors c'est pas toujours pratique.
Je pense que je vais faire un site internet pour mettre mes news, ce sera plus pratique.
* Pour répondre à tous ceux qui me idolatrent :
En fait mon émulateur est plus facile à programmer qu'un émulateur classique vu que j'ai pas besoin de désassembler chaque instruction, et contrairement aux idées reçues, configurer la MMU est assez simple, c'est juste que j'ai eu pas mal de doc à lire.
* Pour répondre à Orion_ :
Comment configurer la MMU : en gros il y a une table (deux en fait, suivant la taille des pages à déplacer) qui fait correspondre une adresse virtuelle à une adresse physique (Table Translating en anglais). Le plus embêtant c'est que les pages doivent être alignées en fonction de leur taille, mais une fois qu'on a compris, c'est pas difficile.
Comment reprendre le contrôle : avec les timers : j'utilise un timer qui se produit à la fin de chaque ligne du LCD (le LCD de la gba), ce qui me permet de mettre à jour VCOUNT, et de rafraichir l'écran, les touches, et tout le reste... Le problème c'est que certaines ROM désactivent les interruptions, j'ai eu le problème ce week-end mais il ma suffit de remplacer les instructions en question par des nop (mov r0, r0), et ça a marché. De toute façon les interruptions qui devraient arriver à cause de la GBA, c'est moi qui les émule, donc ça n'a rien à voir avec les vrai interruptions de la GBA.
c klr que la c 10x plus rapide que d'emuler le proc : je suis totalement d'accord, par contre faut pas oublier qu'il y a tout le reste à émuler, et je n'ai aucune idée de la puissance qu'il faut.
* Pour répondre à Superip74 :
Désolé, mais je ne connais pas du tout le hardware de la neogeo, ce qui est sûr c'est que la gp32 n'a pas le même processeur que la neogeo, donc le principe de mon émulateur ne s'applique pas à la neogeo.
* Concernant les news :
- Le problème que j'avais à cause des accès mémoire non alignés est résolu : il suffisait de désactiver "Memory Alignment Check" qui était dans je ne sais plus quel registre CP15.
- J'ai plus ou moins fini les modes 4 et 5 (le mode 4 n'affiche pas les sprites mais juste le BG2)
- J'ai modifié le bios de la gp32 pour intercepter les exceptions (undefined instruction, data abort et prefetch abort) et également les SWI. J'ai du faire super attention c'est déjà un peu risqué de reflasher son firmware, alors un firmware modifié par mes soins...
J'ai été un peu obligé de faire ça vu que pas mal de démos gba faisaient resetter la console, et je ne pouvais pas savoir à cause de quoi, donc maintenant j'ai un message qui m'indique l'adresse de l'erreur, le type d'erreur.
En particulier certains compilateur (goldroad par exemple) codent mal l'instruction LDR(S)(H) et STR(S)(H). Ca n'a aucun effet sur GBA, mais sur GP on obtient une "Undefined Instruction". J'ai un peu galérer pour trouver ce problème.
Une autre raison de devoir modifier le bios gp32 est la suivante :
Les roms GBA utilisent le bios GBA en faisant des instructions SWI #nn, or ces instructions font directement appel aux instructions SWI de la GP32. Voici donc l'idée : je modifie la rom GBA pour que toutes les instructions SWI #nn soient remplacées par SWI #nn+0x80, afin que les fonctions du bios gp32 soient comprises entre 0x0 et 0x7F (en fait il n'y en a que 23), et les instructions > 0x80 soient celles de la GBA. J'ai donc juste redirigé une instruction "BGT r0, #23" du bios gp32 pour intercepter les fonctions bios de la GBA.
Je suis pas particulièrement content de cette solution, mais j'ai pas trouvé mieux pour l'instant, alors si vous avez des idées...
- Si vous avez compris ce que je viens de dire, ça veut dire que les roms gba devront dans la plupart des cas être "patchées" pour fonctionner avec mon émulateur. Ca devrait pouvoir être fait automatiquement avec un logiciel, sauf si les roms sont un peu protégées (genre checksum) ou alors compressées. Ca veut aussi dire qu'il va falloir utiliser un firmware modifié (mais de toute façon c'était déjà obligatoire à partir du moment où vous vouliez charger des roms de plus de 4 Mo)
- Comme mon émulateur commence à émuler quelques petites demos, je pense que je vais sortir une première version très bientôt (cette semaine je pense)
- Je pense avoir à peu près tout dit.
@+
Lol... mon dieu ce que je viens de lire... ça me met la larme à l'oeil ^^ c bo ^^
ça promet ton emu enf (O)___(O)
pixel and 3D graphics: www.madpxl.com
seeking iPhone developer, contact me !