Rubire4
Usuario mítico
Introcucción
Hasta ahora pensé que me sería imposible compilar alguno de estos juegos de decompilación debido a la necesaria utilización de devkitPro, un programa solo disponible para ordenadores con una arquitectura de 64 bits; y el uso de Cygwin, cuyo uso está desaconsejado en sistemas operativos de 32 bits.
Hay un recurso de devkitARM de 32 bits, pero este solo sirve para insertar rutinas en C en ROM Hacking, ya que para compilar pokeruby o pokeemerald se necesita devkitPro completo.
Sin embargo, ahora que Cygwin está obsoleto y ya no se usa, y que existe un paquete de devkitPro para MSYS2, decompilación es posible para ordenadores 32 bits. El único requisito es tener Windows Vista o superior, ya que el programa que usaremos ya no admite Windows XP u otro SO anterior.
Yo estoy trabajando en un PC de 32 bits con Windows 7, 3GB de RAM y un procesador con dos hilos de procesamiento. He conseguido instalar pokemeerald en él, por lo que en prácticamente cualquier PC sirve (aunque la compilación será evidentemente más lenta y engorrosa).
Instalar MSYS2
Lo normal es instalar el programa devkitPro pues ya incluye MSYS2 totalmente configurado y preparado para compilar juegos de GBA, pero como nosotros no podemos instalar devkitPro tendremos que descargar, instalar y configurar MSYS2 en nuestro PC manualmente.
Se puede instalar directamente desde la página de MSYS2, pero os dejo aquí el link de descarga oficial para ir más rápido: msys2-i686-20190524.exe
El proceso de instalación es tan simple como cualquier otro, abrimos el instalador y hacemos Next > Next > Finish.
Abrir MSYS2
En cuanto instalemos el programa se nos abrirá automáticamente, pero tendremos que usarlo cada vez que queramos compilar nuestro juego, por lo que tendremos que saber cómo abrirlo.
Tenemos que acceder al lugar de la instalación de MSYS2, que por defecto es C:\msys2, y abrir el archivo "msys2_shell.cmd":
Sí, lo que tendremos que abrir siempre es el archivo .cmd, no los .exe. Si queréis tenerlo más a mano podés crear un acceso directo al programa y dejarlo en el escritorio o donde veáis más cómodo.
Cada vez que queramos escribir comandos en él tendremos que esperar a que aparezca nuestro nombre de usuario de Windows en color verde:
Actualizar MSYS2
En la página oficial se recomienda actualizar MSYS2 en cuanto abramos el programa. Para actualizarlo tendremos que insertar en él el siguiente código:
Si se nos pregunta si instalar algo escribimos S o Y, dependiendo del idioma. Al terminar puede que tengamos que cerrar y volver a abrir el programa. Si creéis que ha terminado de actualizarse cerradlo sin miedo.
Una vez acabe hacemos lo siguiente:
Instalar paquetes en MSYS2
Para que nuestro programa funcione necesitaremos instalar manualmente los paquetes necesarios para la compilación.
Para instalar los paquetes copiaremos y pegaremos los siguientes comandos por orden: (para pegar en MSYS2 hay que pulsar la tecla Insert en vez de CTRL+V)
Si se nos pregunta qué paquetes de un grupo instalar hacemos enter directamente para instalar todos.
Lo siguiente que debemos hacer es:
Instalar devkitPro en MSYS2
Como no tenemos acceso a los recursos del programa directamente tendremos que instalar un paquete que le sustituya.
Primero tendremos que declarar unas variables, por lo que copiaremos y pegamos en MSYS2 lo siguiente por orden:
Después de ello escribiremos estas keys en MSYS2 en orden:
Ahora instalaremos devkitPro utilizando el comando:
Ya podemos cerrar MSYS2, pero tendremos que seguir configurando MSYS2 manualmente. Para este paso tendremos que tener instalado Notepad++ para editar archivos. No solo sirve para esto, tiene un montón de funciones para editar código, por lo que lo recomiendo bastante.
Accedemos a nuestra carpeta donde tenemos instalado MSYS2, que como dije antes, por defecto es "C:\msys2". Allí abrimos la carpeta llamada "etc".
Deberíamos ver allí un archivo llamado "pacman.conf":
Hacemos click derecho en el archivo > Edit with Notepad++.
En el editor de código bajamos hasta la línea 80, y después de las variables [mingw32], [mingw64] y [msys] añadimos lo siguiente:
Debería quedar algo así:
Abrimos MSYS2 de nuevo y lo actualizamos con "pacman -Syu" y "pacman -Su".
Por último tendremos que instalar los paquetes de devkitPro que necesitaremos para compilar juegos de GBA. Una vez en MSYS2 escribimos:
Con todo esto ya tenemos instalado devkitPro con devkitARM en nuestro PC para poder compilar juegos de GBA. Hacemos un último "pacman -Syu" y "pacman -Su" para actualizar nuestros paquetes y ya está.
Ahora nos queda un último paquete algo más engorroso de instalar:
Instalar libpng
Este paquete es completamente necesario para compilar las imágenes png que se utilizan en GBA.
Para instalarlo simplemente accedemos a esta página y tras 5 segundos se iniciará la descarga: https://sourceforge.net/projects/libpng/files/libpng16/1.6.34/libpng-1.6.34.tar.gz/download
Descomprimimos con WinRAR o nuestro programa favorito el archivo y nos dará una carpeta llamada "libpng-1.6.34".
Abrimos en MSYS2 y nos metemos en la carpeta con el programa. Para acceder a una ruta con MSYS2 el proceso es muy similar a hacerlo con cmd, solo que con las barras en sentido contrario. Es decir, si para acceder a una carpeta con cmd hacemos "cd C:\Users\LoQueSea\", aquí hacemos "cd C:/Users/LoQueSea".
Si tenemos la carpeta libpng-1.6.34 en el escritorio como suele ser común entonces tendremos que escribir:
Una vez allí escribimos los siguientes comandos en este orden:
Es probable que tarden en terminarse algunos comandos.
Después de que termine podremos borrar la carpeta, libpng se habrá instalado correctamente y no la necesitaremos más.
Ya hemos instalado todos los elementos necesarios para compilar pokeruby o pokeemerald en nuestro PC 32 bits, ahora nos queda lo último que es igual en PCs de 32 bits que en 64 bits.
Descargar los repositorios y compilar el juego
Abrimos MSYS2 y accedemos como lo hicimos antes a una ruta en la que queramos guardar los archivos del juego. Recomiendo una ruta corta donde guardar las cosas como C:/decomp/ para no tener que estar escribiendo largas líneas de comandos para acceder a nuestros archivos.
Una vez en la ruta en la que queramos guardar los archivos tendremos que escribir lo siguiente:
Cuando termine tendremos que hacer lo mismo pero para descargar el repositorio de pokeruby o pokeemerald. Esto será lo que tendremos que escribir, la primera línea es para pokeruby, la segunda para pokeemerald y la tercera para pokefirered. Escribid la línea para el juego que queráis descargar o ambas si así lo queréis:
Se nos habrán creado varias carpetas, una llamada agbcc, y las carpetas con los proyectos de decompilación que hayamos elegido.
Ahora ejecutamos lo siguiente por orden:
La acción de build puede tardar unas decenas de minutos en terminarse, así que paciencia, el resto son prácticamente instantáneas.
Por último queda el paso final, que es compilar el juego. Escribimos "nproc" y nos devolverá un número, este es el número de hilos de procesamiento que tiene nuestro procesador, cuantos más más rápido será.
Escribimos:
Sustituyendo "n" por el número que se nos ha devuelto en el paso anterior.
Y voilà, ya estará compilándose nuestro juego. Tardará más o menos una hora si el número de hilos de procesamiento es muy bajo como 1 o 2, pero al final nos creará en la carpeta de nuestro juego un archivo llamado pokeruby.gba o pokeemerald.gba.
Comprobamos con mGBA o VBA que nuestro juego funciona y habremos terminado, tendremos un juego completamente idéntico byte por byte a los originales de game freak y ahora además tendremos el código fuente original que podemos editar a antojo.
Hasta ahora pensé que me sería imposible compilar alguno de estos juegos de decompilación debido a la necesaria utilización de devkitPro, un programa solo disponible para ordenadores con una arquitectura de 64 bits; y el uso de Cygwin, cuyo uso está desaconsejado en sistemas operativos de 32 bits.
Hay un recurso de devkitARM de 32 bits, pero este solo sirve para insertar rutinas en C en ROM Hacking, ya que para compilar pokeruby o pokeemerald se necesita devkitPro completo.
Sin embargo, ahora que Cygwin está obsoleto y ya no se usa, y que existe un paquete de devkitPro para MSYS2, decompilación es posible para ordenadores 32 bits. El único requisito es tener Windows Vista o superior, ya que el programa que usaremos ya no admite Windows XP u otro SO anterior.
Yo estoy trabajando en un PC de 32 bits con Windows 7, 3GB de RAM y un procesador con dos hilos de procesamiento. He conseguido instalar pokemeerald en él, por lo que en prácticamente cualquier PC sirve (aunque la compilación será evidentemente más lenta y engorrosa).
Instalar MSYS2
Lo normal es instalar el programa devkitPro pues ya incluye MSYS2 totalmente configurado y preparado para compilar juegos de GBA, pero como nosotros no podemos instalar devkitPro tendremos que descargar, instalar y configurar MSYS2 en nuestro PC manualmente.
Se puede instalar directamente desde la página de MSYS2, pero os dejo aquí el link de descarga oficial para ir más rápido: msys2-i686-20190524.exe
El proceso de instalación es tan simple como cualquier otro, abrimos el instalador y hacemos Next > Next > Finish.
Abrir MSYS2
En cuanto instalemos el programa se nos abrirá automáticamente, pero tendremos que usarlo cada vez que queramos compilar nuestro juego, por lo que tendremos que saber cómo abrirlo.
Tenemos que acceder al lugar de la instalación de MSYS2, que por defecto es C:\msys2, y abrir el archivo "msys2_shell.cmd":
Cada vez que queramos escribir comandos en él tendremos que esperar a que aparezca nuestro nombre de usuario de Windows en color verde:
Actualizar MSYS2
En la página oficial se recomienda actualizar MSYS2 en cuanto abramos el programa. Para actualizarlo tendremos que insertar en él el siguiente código:
Código:
pacman -Syu
Una vez acabe hacemos lo siguiente:
Código:
pacman -Su
Instalar paquetes en MSYS2
Para que nuestro programa funcione necesitaremos instalar manualmente los paquetes necesarios para la compilación.
Para instalar los paquetes copiaremos y pegaremos los siguientes comandos por orden: (para pegar en MSYS2 hay que pulsar la tecla Insert en vez de CTRL+V)
Código:
pacman -S make
pacman -S git
pacman -S base-devel gcc vim cmake
pacman -S development
pacman -S mingw-w64-i686-libpng
pacman -S base
pacman -S base-devel
Lo siguiente que debemos hacer es:
Instalar devkitPro en MSYS2
Como no tenemos acceso a los recursos del programa directamente tendremos que instalar un paquete que le sustituya.
Primero tendremos que declarar unas variables, por lo que copiaremos y pegamos en MSYS2 lo siguiente por orden:
Código:
DEVKITPRO=/opt/devkitpro
DEVKITARM=/opt/devkitpro/devkitARM
DEVKITPPC=/opt/devkitpro/devkitPPC
Código:
pacman-key --recv F7FD5492264BB9D0
pacman-key --lsign F7FD5492264BB9D0
Código:
pacman -U https://downloads.devkitpro.org/devkitpro-keyring-r1.787e015-2-any.pkg.tar.xz
Accedemos a nuestra carpeta donde tenemos instalado MSYS2, que como dije antes, por defecto es "C:\msys2". Allí abrimos la carpeta llamada "etc".
Deberíamos ver allí un archivo llamado "pacman.conf":
En el editor de código bajamos hasta la línea 80, y después de las variables [mingw32], [mingw64] y [msys] añadimos lo siguiente:
Código:
[dkp-libs]
Server = https://downloads.devkitpro.org/packages
[dkp-win32]
Server = https://downloads.devkitpro.org/packages/win32
Por último tendremos que instalar los paquetes de devkitPro que necesitaremos para compilar juegos de GBA. Una vez en MSYS2 escribimos:
Código:
pacman -S gp32-dev
pacman -S gba-dev
Ahora nos queda un último paquete algo más engorroso de instalar:
Instalar libpng
Este paquete es completamente necesario para compilar las imágenes png que se utilizan en GBA.
Para instalarlo simplemente accedemos a esta página y tras 5 segundos se iniciará la descarga: https://sourceforge.net/projects/libpng/files/libpng16/1.6.34/libpng-1.6.34.tar.gz/download
Descomprimimos con WinRAR o nuestro programa favorito el archivo y nos dará una carpeta llamada "libpng-1.6.34".
Abrimos en MSYS2 y nos metemos en la carpeta con el programa. Para acceder a una ruta con MSYS2 el proceso es muy similar a hacerlo con cmd, solo que con las barras en sentido contrario. Es decir, si para acceder a una carpeta con cmd hacemos "cd C:\Users\LoQueSea\", aquí hacemos "cd C:/Users/LoQueSea".
Si tenemos la carpeta libpng-1.6.34 en el escritorio como suele ser común entonces tendremos que escribir:
Código:
cd C:/Users/NombreDeUsuario/Desktop/libpng-1.6.34/
Código:
./configure --prefix=/usr
make check
make install
Después de que termine podremos borrar la carpeta, libpng se habrá instalado correctamente y no la necesitaremos más.
Ya hemos instalado todos los elementos necesarios para compilar pokeruby o pokeemerald en nuestro PC 32 bits, ahora nos queda lo último que es igual en PCs de 32 bits que en 64 bits.
Descargar los repositorios y compilar el juego
Abrimos MSYS2 y accedemos como lo hicimos antes a una ruta en la que queramos guardar los archivos del juego. Recomiendo una ruta corta donde guardar las cosas como C:/decomp/ para no tener que estar escribiendo largas líneas de comandos para acceder a nuestros archivos.
Una vez en la ruta en la que queramos guardar los archivos tendremos que escribir lo siguiente:
Código:
git clone https://github.com/pret/agbcc
Código:
git clone https://github.com/pret/pokeruby
git clone https://github.com/pret/pokeemerald
git clone https://github.com/pret/pokefirered
Ahora ejecutamos lo siguiente por orden:
Código:
cd ./agbcc
./build.sh
./install.sh ../pokeruby, pokeemerald o pokefirered (depende de lo que tengamos)
cd ../pokeruby, pokeemerald o pokefirered
Por último queda el paso final, que es compilar el juego. Escribimos "nproc" y nos devolverá un número, este es el número de hilos de procesamiento que tiene nuestro procesador, cuantos más más rápido será.
Escribimos:
Código:
make -jn
Y voilà, ya estará compilándose nuestro juego. Tardará más o menos una hora si el número de hilos de procesamiento es muy bajo como 1 o 2, pero al final nos creará en la carpeta de nuestro juego un archivo llamado pokeruby.gba o pokeemerald.gba.
Comprobamos con mGBA o VBA que nuestro juego funciona y habremos terminado, tendremos un juego completamente idéntico byte por byte a los originales de game freak y ahora además tendremos el código fuente original que podemos editar a antojo.
Última edición: