Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » gdkGBA pour Graph 90 : émulateur POC
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

gdkGBA pour Graph 90 : émulateur POC

Posté le 16/07/2023 16:06

Ce projet est encore expérimental et non-fonctionnel !

Introduction :

Bonjour à tous ! Je propose aujourd'hui d'aborder à nouveau le sujet d'un émulateur GameBoy Advance pour la Graph 90.

Ce topic fait suite à une conversation qui a eu lieu dans les commentaires de celui-ci, dans lequel on émettait la faisabilité d'un tel projet.

3 années plus tard j'ai donc pris de mon temps pour me pencher sur l'adaptation d'un émulateur existant : gdkGBA, en raison de sa simplicité.
(Je préviens : l'émulateur nécessite l'utilisation du BIOS de la GBA pour fonctionner, et il va de soi que je ne partagerai pas la propriété intellectuelle de Nintendo ici)

Objectifs :

Faire un POC d'émulateur en privilégiant la stabilité à la vitesse.
En ce faisant, documenter les astuces, forces et contraintes afin de faciliter une éventuelle meilleure implémentation dans le futur.

Etat actuel :

16/07/2023 : J'ai réussi à compiler le projet en add-in et à le lancer, mais pour le moment il ne peut pas faire tourner de ROM.

Comment je peux tester ?

Pour cela, compilez le projet avec fxSDK + Gint, puis mettez l'add-in avec le BIOS de la GBA nommé "gba_bios.bin" et une ROM nommée "test.gba". N'importe quelle ROM devrait faire l'affaire.

LIENS UTILES
Cliquer pour enrouler



Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 16/07/2023 19:19 | #


Je pense avoir trouvé l'origine du problème lié au crash : l'émulateur essaie de charger la ROM du jeu entièrement dans une variable (qui est initialisée à 33Mo) ce qui dépasse complètement la RAM de la G90.

Je pense que le plus intuitif serait de lire la ROM par morceaux de taille inférieure à 60Ko (qui est le max, donc ce sera probablement bien moins que ca) et de charger dynamiquement les régions de la ROM dont l'émulateur a besoin, en déchargeant celles qui ne sont plus utilisées.
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Fcalva Hors ligne Membre Points: 521 Défis: 9 Message

Citer : Posté le 16/07/2023 20:05 | #


Il y a 512ko de mémoire malloc() able sur G90. Il y a aussi 6mo (je crois) qui sont disponibles mais c'est pas totalement sûr de taper dedans
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Potter360 Hors ligne Rédacteur Points: 1242 Défis: 2 Message

Citer : Posté le 16/07/2023 20:08 | #


owo génial ! c'est le genre de trucs que j'adorerais faire depuis longtemps mais par manque de temps/par éparpillement ça n'a pas abouti. C'est génial !
Si je peux aider pour quoi que ce soit, bien que mes capacités soient probablement bien maigres, n'hésite pas !
Globalement, coder. Mal, mais coder.
Slyvtt Hors ligne Maître du Puzzle Points: 2318 Défis: 17 Message

Citer : Posté le 16/07/2023 22:38 | #


Oui on peut avoir grosso modo 3,5Mo de RAM mis a disposition sur la G90.

Il faut créer des arènes spécifiques. Attention par contre, c'est vrai sur la G90, mais pas sur les modèles anciens de Prizm (CG10/20) qui n'ont pas la même puce mémoire.

Pour le code, tu peux t'inspirer de ça : https://gitea.planet-casio.com/Slyvtt/Shmup/src/branch/master/src/main.cpp#L307-L387

Regarde le début du fichier pour les variables et les includes qui vont bien
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 17/07/2023 10:31 | #


Fcalva a écrit :
Il y a 512ko de mémoire malloc() able sur G90. Il y a aussi 6mo (je crois) qui sont disponibles mais c'est pas totalement sûr de taper dedans


Slyvtt a écrit :
Oui on peut avoir grosso modo 3,5Mo de RAM mis a disposition sur la G90.


Ooooh d'accord pas mal ! Ca élimine pas le problème de diviser la ROM, mais ca donne déjà plus de manoeuvre.
Je pense que j'irai voir ce qu'a fait Thomas Williamson pour Prizoop et Nesizm, car il a dû rencontrer le même problème.

Potter360 a écrit :
Si je peux aider pour quoi que ce soit, bien que mes capacités soient probablement bien maigres, n'hésite pas !


Merci beaucoup de ta proposition ! Si jamais tu en as l'envie et le temps, le simple fait de bidouiller avec le code source et de voir comment l'erreur se comporte peut beaucoup apporter.
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher


JePasseJuste Invité

Citer : Posté le 28/08/2023 23:08 | #


Bah nan ça règle pas vraiment le soucis de la taille de la ROM parce que les ROMs de jeux GBA font toutes au moins 8MO si ce n'est plus (16MO voir 32MO).
Critor En ligne Administrateur Points: 2648 Défis: 18 Message

Citer : Posté le 29/08/2023 11:18 | #


Formidable ambition, j'ai bien de voir et annoncer des progrès significatifs. Courage et force à toi !

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 56 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