Ghidraboy: Sharp SM83 / Game Boy Extension pour Ghidra
Très expérimental! Aucune garantie de compatibilité!
Versions Ghidra prises en charge:

Caractéristiques
- Sharp SM83 (noyau CPU utilisé dans Game Boy) Support pour Sleigh
- Game Boy Rom Loader:
- Peut charger des ROM non bancarisés (<= 32 Ko, par exemple Tetris)
- Peut charger des ROM en banque (> 32 Ko, par exemple Pokémon)
- Peut charger des ROM de démarrage de greyscale (DMG / DMG0 / MGB / SGB / SGB2)
- Peut charger des ROM de colocat (CGB / CGB0)
- Blocs de mémoire basés sur la carte de mémoire matérielle
- Les régions en banque utilisent des superpositions (Todo: déterminez s'il existe une meilleure façon de les soutenir)
- Les différences GB vs GBC sont gérées (par exemple, WRAM bancs)
- Symboles pour les registres matériels (plage 0xffxx)
- Les différences GB vs GBC sont gérées (par exemple, l'existence du registre de Key1)
- Types de données d'en-tête de cartouche Game Boy
- Types énumérés pour certaines choses
Comment installer
- Téléchargez une version de Ghidraboy prédéfinie ou construisez-la vous-même.
- Commencer Ghidra
- Fichier -> Installer Extensions
- Appuyez sur l'icône Plus ("Ajouter une extension")
- Choisissez le fichier Zip Ghidraboy construit ou téléchargé
- Redémarrez Ghidra lorsqu'il est invité à charger correctement l'extension
Comment construire
En tant que condition préalable, vous devez avoir une installation de Ghidra quelque part (une installation réelle, pas une copie du code source Ghidra!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
ou
./gradlew -Pghidra.dir=/path/to/ghidra
Vous pouvez ensuite trouver une extension construite .zip dans le répertoire build/distributions .
Questions / problèmes ouvrir
- La sortie du décompilateur est difficile à lire si certaines instructions sont utilisées (par exemple, tourne, JP HL pour les jumpables)
- La convention par défaut de "convention d'appel ASM" suppose que tous les registres peuvent être des entrées et / ou des sorties. Les entrées / sorties sont souvent devinées de manière incorrecte, donc un réglage manuel est requis pour presque toutes les fonctions
- Les superpositions sont-elles la seule solution / la meilleure solution pour gérer les zones de mémoire en banque? À l'heure actuelle, dans les ROM en banque, chaque appel de fonction au 0x4000-0x7fff doit être résolu manuellement à la ou aux bonnes banques (s)
Licence
Licencié sous la licence Apache, version 2.0.