GB Recompiled

GB Recompiled — Descargar gratis. Recompilador estático para ROMs de GameBoy

GB Recompiled es una herramienta que traduce código Z80 de ROMs originales de GameBoy a lenguaje C portable. Permite ejecutar juegos clásicos sin emulador tradicional, generando código nativo que se compila para múltiples plataformas. El recompilador analiza flujos de control a través de todos los bancos de memoria, decodifica instrucciones y gestiona cambios de banco para producir archivos fuente C junto con una librería de tiempo de ejecución precisa a nivel de ciclo.

5.0(1 valoraciones)

Descargar GB Recompiled (Enlaces oficiales)
Tamaño del archivo: 1.11 MB
La última versión de GB Recompiled es: 0.0.2
Sistema operativo: Windows, Linux, MacOS
Idiomas: English
Precio: $0.00 USD
Producto de código abierto y gratuito.

  • Traducción Z80 a C estático. Convierte cada instrucción Z80 original en bloques de código C equivalentes, manteniendo el comportamiento exacto del procesador. Este proceso ocurre una sola vez antes de la compilación, eliminando la sobrecarga de interpretación o recompilación dinámica durante la ejecución del juego. El código C generado puede ser optimizado por compiladores modernos como GCC o Clang.
  • Emulación precisa del ciclo de instrucción. Implementa la temporización exacta de cada instrucción Z80, incluyendo el fallo HALT presente en hardware real. Cada operación contabiliza la cantidad correcta de ciclos de reloj, permitiendo que juegos dependientes de sincronización rigurosa funcionen sin desincronizaciones. Esta precisión es fundamental para demos y títulos que utilizan efectos visuales basados en tiempos exactos.
  • Soporte completo de controladores de banco de memoria (MBC). Incluye implementaciones funcionales de MBC1 (con modo 1), MBC2, MBC3 (con reloj en tiempo real) y MBC5. Estos controladores gestionan el mapeo de memoria ROM y RAM externa, permitiendo ejecutar juegos de hasta 8 Mbits. El reloj en tiempo real de MBC3 funciona correctamente en juegos como Pokémon Oro y Plata.
  • Recompilación paralela multi-núcleo. Por defecto, el proceso de generación de código utiliza todos los núcleos disponibles del sistema. Cada banco de memoria y sección de código se procesa simultáneamente, reduciendo drásticamente el tiempo de recompilación para ROMs grandes. El usuario puede limitar el número de hilos mediante el argumento --jobs.
  • Generación de proyectos Android nativos. Mediante el flag --android, la herramienta crea un proyecto completo para Android usando SDL2. El proyecto generado apunta a arquitectura arm64-v8a, utiliza orientación horizontal y produce un APK que puede compilarse con Gradle. La asignación de mandos se basa en posición y es reconfigurable en tiempo de ejecución.
  • Sanitización de nombres de símbolos importados. Las etiquetas provenientes de archivos .sym se convierten en identificadores C válidos con prefijo sym_. Por ejemplo, "EnterMap" se transforma en "sym_EnterMap" y "OverworldLoop.delay.check" en "sym_OverworldLoop_delay_check". Esto evita conflictos con palabras reservadas del lenguaje.
  • Constantes de dirección para RAM y HRAM. Las etiquetas de RAM y HRAM importadas se elevan a constantes como GB_ADDR_wSoundID y GB_ADDR_hJoyHeld. Esto permite acceder directamente a posiciones de memoria desde el código generado sin cálculos manuales, mejorando la claridad del código C resultante.
  • Punteros y constantes para datos ROM. Los datos de ROM etiquetados en el archivo .sym se convierten en constantes GB_ROM_ADDR_* para direcciones y GB_ROM_PTR_* como punteros dentro del bloque rom_data[]. El recompilador trata automáticamente el logo de Nintendo (0x0104-0x0133) y el encabezado del cartucho (0x0134-0x014f) como datos integrados, evitando que se interpreten erróneamente como código.
  • Soporte para Game Boy Color (CGB). La implementación actual incluye el conjunto de instrucciones adicionales del CGB, gestión de doble velocidad y detección de hardware. Juegos representativos como Pokémon Cristal y Link's Awakening funcionan correctamente. Los trabajos en curso se centran en pruebas de hardware específicas de CGB y precisión de casos límite.
  • Perfil de compilación por defecto MinSizeRel. Los proyectos generados usan optimización de tamaño con -O1, desactivación de LTO y eliminación de secciones muertas. Esto facilita pruebas manuales y depuración. Para máximo rendimiento, se puede configurar Release con -O3, IPO activado y eliminación de símbolos desactivada mediante parámetros explícitos de CMake.
  • Captura de pantalla y límite de instrucciones. Incluye herramientas de depuración que permiten capturar la pantalla actual del juego en cualquier momento. También se puede establecer un límite máximo de instrucciones a ejecutar, útil para pruebas de regresión y análisis de comportamiento en segmentos específicos de una ROM.
  • Registro de trazas (trace logging). El recompilador puede generar registros detallados de la ejecución, mostrando cada instrucción ejecutada, cambios de banco de memoria y estado de la interrupción. Esta característica es esencial para depurar juegos que no funcionan correctamente después de la recompilación.

La historia de desarrollo de GB Recompiled comienza en 2023, creado por el desarrollador conocido como arcanite24 en la plataforma GitHub. El proyecto surgió como una alternativa a la emulación tradicional, buscando preservar juegos de GameBoy mediante recompilación estática. El lenguaje principal de programación utilizado es C++ para la herramienta recompiladora, mientras que el código generado para los juegos es C estándar. La librería de tiempo de ejecución y la capa de plataforma SDL2 también están escritas en C.


Alternativas a GB Recompiled: