Ghidraboy: SHARK SM83 / Game Boy Extension para Ghidra
Muy experimental! ¡No hay garantías de compatibilidad!
Versiones de Ghidra apoyadas:

Características
- Sharp SM83 (CPU Core usado en Game Boy) Soporte para Sleigh
- Game Boy Rom Loader:
- Puede cargar ROM no bancarizadas (<= 32kb, por ejemplo, Tetris)
- Puede cargar roms bancadas (> 32kb, por ejemplo, Pokemon)
- Puede cargar ROM de arranque de grises (DMG/DMG0/MGB/SGB/SGB2)
- Puede cargar Roms de arranque de color (CGB/CGB0)
- Bloques de memoria basados en el mapa de memoria de hardware
- Las regiones bancarias usan superposiciones (TODO: averigüe si hay una mejor manera de apoyarlas)
- Se manejan las diferencias GB vs GBC (por ejemplo, Wram Banked)
- Símbolos para registros de hardware (rango 0xffxx)
- Se manejan las diferencias GB vs GBC (por ejemplo, la existencia del registro Key1)
- Tipos de datos de encabezado de cartucho de game boy
- Tipos enumerados para algunas cosas
Cómo instalar
- Descargue un lanzamiento de Ghidraboy prebuilt, o constríla usted mismo.
- Iniciar ghidra
- Archivo -> Instalar extensiones
- Presione el icono más ("Agregar extensión")
- Elija el archivo zip ghidraboy construido o descargado
- Reiniciar ghidra cuando se le solicite cargar la extensión correctamente
Cómo construir
Como requisito previo, debe tener una instalación de Ghidra en algún lugar (¡una instalación real, no una copia del código fuente de Ghidra!).
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
o
./gradlew -Pghidra.dir=/path/to/ghidra
Luego puede encontrar una extensión construida .zip en el directorio build/distributions .
Preguntas / problemas abiertos
- La salida del descompilador es difícil de leer si se usan ciertas instrucciones (por ejemplo, gira, JP HL para jumpppTables)
- La "Convención de llamadas ASM" predeterminada supone que todos los registros pueden ser entradas y/o salidas. Las entradas/salidas a menudo se adivinan incorrectamente, por lo que se requiere ajuste manual para casi todas las funciones
- ¿Son las superposiciones la única / la mejor solución para manejar áreas de memoria bancaria? En este momento, en ROM bancadas, cada función de la función de 0x4000-0x7fff debe resolverse manualmente para los bancos correctos
Licencia
Con licencia bajo la licencia Apache, versión 2.0.