Jaizu
Usuario mítico
Introducción
¡Bienvenidos al maravilloso mundo de la decompilación! Yo soy Jaizu y con esta guía (¡y las que quedan por venir!) pretendo que todo el mundo, independientemente de la experiencia previa en el Rom Hacking puedan dejar su PC listo para trabajar con decompilación.
En esta guía lo que haremos será dejar nuestro PC listo para que podamos compilar nuestra ROM, haciendo los cambios que veamos oportunos a nuestro proyecto.
Está enfocada para Windows 10 64 bits, pues la única versión de Windows que soporta decomp con WSL.
En un futuro intentaré traeros otras guías (de otros usuarios, pues yo no tengo experiencia) en cómo instalarla para otros sistemas operativos. Aunque también planeo hacer una para Linux, concretamente Ubuntu, así que estaros atentos si sois usuarios de Linux.
Herramientas necesarias
Antes de empezar creo que estaría bien que nos bajemos y dejemos instaladas ciertas herramientas. Descargándolas siempre desde sus sitios oficiales. Para ir a los enlaces dad click en los nombres del programa.
Empezando con la instalación
Lo primero que tenemos que hacer es activar WSL en nuestro ordenador. En la página oficial de Microsoft dice cómo hacerlo… Pero ya que estoy haciendo un tutorial, ¿ya os lo explico yo mismo no?
Lo único que tenemos que hacer es abrir una PowerShell con permisos de administrador.
Vamos, pulsamos la tecla de Windows/menú de Windows, escribimos PowerShell y la ejecutamos como Administrador. Bastante sencillo, ¿no?
Una vez abierta ejecutamos el siguiente comando, solo tenemos que pegarlo (Control + V) y pulsar Intro.
Y con eso ya tendríamos WSL activado, o casi… ¡Tenemos que reiniciar nuestro ordenador!
Instalando y configurando Ubuntu
Vamos abrir la Microsoft Store y buscaremos Ubuntu.
Yo instalaré Ubuntu 20.04 LTS, pues es la más reciente.
Una vez esté terminada la instalación abriremos Ubuntu.
Pulsando la tecla de Windows o dando click en el menú de Windows escribiremos Ubuntu y abriremos el programa.
Una vez abierto pondrá que se está instalando, y que eso puede tardar unos minutos, esperamos pacientemente hasta que obtengamos lo siguiente:
Ahí nos está diciendo que pongamos un nombre de usuario para nuestro Linux, en mi caso pondré jaizu. Este nombre no tiene por qué ser igual de Windows y deberá contener sólo minúsculas y números. Luego nos pedirá una contraseña, la pondremos.
La contraseña no la veréis mientras la escribís por motivos de seguridad.
Finalmente os dirá que la pongáis una vez más y listo, ya tendremos Ubuntu listo para trabajar en él.
Configurando Ubuntu para que compile nuestras ROMs
Lo primero que haremos será actualizarlo para que tenga los últimos paquetes.
Muy sencillamente pegamos (con el click derecho del ratón se pegan las cosas en esa terminal) este comando y pulsamos Intro.
Nos pedirá la contraseña que introdujimos hace nada, la escribimos y pulsamos Intro.
Eso actualizará el listado de paquetes sin que tengamos que hacer nada más que esperar a que esté listo.
Ahora actualizaremos los paquetes escribiendo el siguiente comando:
Te dará los datos de las actualizaciones y te dirá si quieres continuar dándote a elegir entre dos letras. En mi caso, como lo tengo en inglés, tengo que escribir Y, no estoy seguro de cuál os da si lo tenéis en Español.
Una vez terminado ya estamos listo para empezar a instalar las herramientas necesarias para compilar nuestra rom.
Primero empezamos por instalar lo básico para buildear, el compilador.
También os dirá que si queréis instalarlo, le decís que sí y ya.
Y una vez terminado instalamos la librería, la cual es necesaria para compilar nuestras imágenes (tranquilos, el compilador lo hará todo sin que tengamos que decirle qué es es cada cosa)
Y otro paquete más, que será necesario para instalar devkitarm más adelante
Ahora lo que haremos será instalar pacman, lo cual nos permitirá instalar devkitARM, el cual necesitamos para compilar nuestra rom. (Agradecimientos a Klein por esta parte del tutorial)
Vamos poniendo estos comandos, uno a uno.
Una vez enviado ese programa no te preocupes, no tiene que salir nada en la consola.
Luego ejecutamos el siguiente comando
Si el enlace no funciona buscadlo aquí: https://github.com/devkitPro/pacman/releases/
Y luego este
Y finalmente:
Este tampoco nos devuelve nada, así que no os preocupéis de si ha funcionado o no.
Ya casi hemos terminado de configurar todo lo que necesitamos para compilar nuestra primera rom.
Lo que acabamos de hacer es instalar pacman para poder instalar devkitARM, así que vamos a instalar devkitARM con el siguiente comando:
Nos preguntará qué queremos instalar, le damos a ENTER para que instale todo y le decimos que sí, que queremos instalar todo eso.
Por últimos le diremos a nuestro bash dos variables para que sepa qué hacer, ejecutamos estos comandos, uno a uno:
Estos comandos tampoco te devuelven nada, así que no te preocupes por eso tampoco.
¡Compilando nuestra primera ROM!
Pokemeerald está en un repositorio de github, así que instalamos git, ejecutando el siguiente comando:
En mi caso ya lo tenía instalado, pero es posible que a vosotros no, dependiendo de la versión de ubuntu que tengáis.
Lo que haremos ahora será crear una carpeta para decompilación en algún directorio de Windows.
En mi caso, para tenerlo todo ordenado, en Documents he creado una carpeta llamada Decomp.
Volvemos a nuestra consola de Ubuntu, y lo que haremos será ir hacia el directorio que hemos creado.
Entrando en mi carpeta de Decomp desde el explorador de Windows puedo ver que mi carpeta está en: C:\Users\Jaizu\Documents\Decomp
Así que tendremos que ir a esa carpeta desde Ubuntu.
En ubuntu los discos de windows se encuentran en /mnt/X, donde X es la letra de tu disco duro.
En mi caso lo tengo en el disco duro C, así que tendré que ir a /mnt/c
Para hacerlo solo tengo que escribir
Ahora solo tengo que ir al resto de carpetas hasta llegar a decomp, en mi caso sería algo así:
Ahora lo que haremos será copiar el repositorio de pokeemerald y las herramientas (no confundir con herramientas para modificar nuestro proyecto) necesarias para editar nuestro proyecto.
Primero clonamos las herramientas, que las clonará a una carpeta llamada agbcc dentro de nuestra carpeta de decompilación
¡Diablos mi primer error!
Por defecto no tenemos los permisos adecuados para trabajar en los archivos de Windows, así que lo que haremos será remontar nuestro disco.
Ejecutamos estos tres comandos, uno a uno
Si usáis otro disco duro que no sea c cambiad las letras correspondientes en el último comando.
Ahora sí, a intentarlo otra vez.
Navegamos a nuestra carpeta de Decomp de Windows, en mi caso tengo que hacer:
Y ahora sí, ejecutamos el git clone de las herramientas:
Una vez terminado veréis que tenemos una carpeta llamada agbcc dentro de nuestra carpeta.
No tocaremos nada de ella por ahora, primero clonemos pokeemerald también:
Una vez terminado tendremos que navegar a nuestra carpeta de las tools, haciendo el siguiente comando:
Una vez dentro ejecutaremos la build de nuestras herramientas, haciendo:
La consola hará muchas cosas que para nosotros quizás parezca magia o algo salido de una película de matrix pero no os preocupéis, no debería tardar mucho (dependerá de la CPU de cada uno)
Una vez terminado lo que te tenemos que hacer es instalar esas herramientas en nuestro pokeemerald.
Nosotros no le pusimos ningún nombre a nuestra carpeta de pokeemerald, así que se llama pokeemerald por defecto.
Manteniéndonos dentro de la carpeta de agbcc enviamos el siguiente comando:
El comando no debería devolvernos nada, así que ya estaría listo
Ahora navegamos a nuestra carpeta de pokeemerald, en mi caso escribiendo:
Ahora lo que necesitamos es saber cuántos hilos tiene nuestro procesador para poder compilar usando todo esos.
Eso lo podemos buscar las especificaciones de nuestro PC, o más sencillamente yendo al Administrador de Tareas, y en la segunda pestaña, la de Performance/Rendimiento cambiamos la vista a esta:
Ahí podremos ver cuántos hilo tenemos, en mi caso son 16:
Bien, pues vamos a la consola de Ubuntu y escribimos:
Cambiando el 16 por el número de hilos.
Esto empezará a compilar nuestra rom!
No os preocupéis, la primera vez tarda lo suyo pues tiene que compilar todo por primera vez, dependiendo de la velocidad de vuestro procesador. Yo tengo un procesador con mucha potencia, así que solo me tardará 2 minutos, aunque lo normal es que tarde hasta 10 minutos o incluso más si tenéis procesadores más honestos o laptops.
Una vez que termine el make vamos a la carpeta de pokeemerald en Windows y…
¡Victoria! Tenemos nuestra primera rom compilada
La abrimos con mGBA y magia, funciona!
Configurando VSCODE con WSL integrado
Abrimos VSCode, y en la izquierda del programa tendremos unos iconos, damos click al último, que es el de las extensiones, y ahí escribimos WSL
Damos click en Remote - WSL y damos click en Install
Ahora abriremos nuestra carpeta de pokeemerald
Una vez abierta, abajo a la izquierda en nuestra ventana de WSL daremos click a este botón verde:
Y ahí le daremos a reabrir nuestra carpeta usando WSL
Quizá la primera vez tarde un poco, pero abajo a la derecha tenemos una barra de progreso:
En mi caso me ha pedido permisos para el firewall, se los damos sin problema
Ahora es donde viene la magia de VSCode.
Cerramos nuestra ventana de Ubuntu para siempre, no la necesitaremos más (pero no la desinstaléis ni borréis nada)
Lo que haremos será abrir una nueva terminal en WSL
Y ya deberíamos tener una terminal en nuestro VSCode con la carpeta en la que estamos cargada
Para terminar el tutorial probaremos a hacer un cambio en nuestro proyecto y compilando.
En mi caso cambiaré el texto del profesor Abedul en la intro.
Primero buscaré el texto a modificar en el buscador de VSCode…
¡No os olvidéis de cerrar el emulador antes de compilar!
Y también recordad que tenéis que cambiar el 16 por el número de hilos que tenga vuestro procesador.
Abrimos nuestra ROM y…
¡Bienvenidos al maravilloso mundo de la decompilación! Yo soy Jaizu y con esta guía (¡y las que quedan por venir!) pretendo que todo el mundo, independientemente de la experiencia previa en el Rom Hacking puedan dejar su PC listo para trabajar con decompilación.
En esta guía lo que haremos será dejar nuestro PC listo para que podamos compilar nuestra ROM, haciendo los cambios que veamos oportunos a nuestro proyecto.
Está enfocada para Windows 10 64 bits, pues la única versión de Windows que soporta decomp con WSL.
En un futuro intentaré traeros otras guías (de otros usuarios, pues yo no tengo experiencia) en cómo instalarla para otros sistemas operativos. Aunque también planeo hacer una para Linux, concretamente Ubuntu, así que estaros atentos si sois usuarios de Linux.
Herramientas necesarias
Antes de empezar creo que estaría bien que nos bajemos y dejemos instaladas ciertas herramientas. Descargándolas siempre desde sus sitios oficiales. Para ir a los enlaces dad click en los nombres del programa.
- mGBA - Este será nuestro emulador de GBA. Es más fiel a hardware real y a una GBA que otros emuladores como VBA. Si nuestro proyecto funciona aquí funcionará en el resto de emuladores y hardware real.
- Visual Studio Code - Este será nuestro editor de código por excelencia. El motivo por el cual lo usaremos vs otras alternativas, como Notepad++, Atom o Brackets es que este, hasta donde yo sé, es el único que nos permite tener integrado nuestra consola de WSL dentro del mismo programa, así no tendremos que andar con ventanas extras para compilar nuestro proyecto.
Empezando con la instalación
Lo primero que tenemos que hacer es activar WSL en nuestro ordenador. En la página oficial de Microsoft dice cómo hacerlo… Pero ya que estoy haciendo un tutorial, ¿ya os lo explico yo mismo no?
Lo único que tenemos que hacer es abrir una PowerShell con permisos de administrador.
Vamos, pulsamos la tecla de Windows/menú de Windows, escribimos PowerShell y la ejecutamos como Administrador. Bastante sencillo, ¿no?
Una vez abierta ejecutamos el siguiente comando, solo tenemos que pegarlo (Control + V) y pulsar Intro.
Código:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Y con eso ya tendríamos WSL activado, o casi… ¡Tenemos que reiniciar nuestro ordenador!
Instalando y configurando Ubuntu
Vamos abrir la Microsoft Store y buscaremos Ubuntu.
Yo instalaré Ubuntu 20.04 LTS, pues es la más reciente.
Pulsando la tecla de Windows o dando click en el menú de Windows escribiremos Ubuntu y abriremos el programa.
Una vez abierto pondrá que se está instalando, y que eso puede tardar unos minutos, esperamos pacientemente hasta que obtengamos lo siguiente:
Ahí nos está diciendo que pongamos un nombre de usuario para nuestro Linux, en mi caso pondré jaizu. Este nombre no tiene por qué ser igual de Windows y deberá contener sólo minúsculas y números. Luego nos pedirá una contraseña, la pondremos.
La contraseña no la veréis mientras la escribís por motivos de seguridad.
Finalmente os dirá que la pongáis una vez más y listo, ya tendremos Ubuntu listo para trabajar en él.
Configurando Ubuntu para que compile nuestras ROMs
Lo primero que haremos será actualizarlo para que tenga los últimos paquetes.
Muy sencillamente pegamos (con el click derecho del ratón se pegan las cosas en esa terminal) este comando y pulsamos Intro.
Código:
sudo apt-get update
Eso actualizará el listado de paquetes sin que tengamos que hacer nada más que esperar a que esté listo.
Ahora actualizaremos los paquetes escribiendo el siguiente comando:
Código:
sudo apt-get upgrade
Una vez terminado ya estamos listo para empezar a instalar las herramientas necesarias para compilar nuestra rom.
Primero empezamos por instalar lo básico para buildear, el compilador.
Código:
sudo apt-get install build-essential
Y una vez terminado instalamos la librería, la cual es necesaria para compilar nuestras imágenes (tranquilos, el compilador lo hará todo sin que tengamos que decirle qué es es cada cosa)
Código:
sudo apt-get install libpng-dev
Código:
sudo apt-get install pkg-config
Vamos poniendo estos comandos, uno a uno.
Código:
PACMAN_DEB="$(mktemp)"
Una vez enviado ese programa no te preocupes, no tiene que salir nada en la consola.
Luego ejecutamos el siguiente comando
Código:
wget -O "$PACMAN_DEB" 'https://github.com/devkitPro/pacman/releases/download/v1.0.2/devkitpro-pacman.amd64.deb'
Y luego este
Código:
sudo dpkg -i "$PACMAN_DEB"
Código:
rm -f "$PACMAN_DEB"
Ya casi hemos terminado de configurar todo lo que necesitamos para compilar nuestra primera rom.
Lo que acabamos de hacer es instalar pacman para poder instalar devkitARM, así que vamos a instalar devkitARM con el siguiente comando:
Código:
sudo dkp-pacman -S gba-dev
Por últimos le diremos a nuestro bash dos variables para que sepa qué hacer, ejecutamos estos comandos, uno a uno:
Código:
export DEVKITPRO=/opt/devkitpro
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
export DEVKITARM=$DEVKITPRO/devkitARM
echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc
¡Compilando nuestra primera ROM!
Pokemeerald está en un repositorio de github, así que instalamos git, ejecutando el siguiente comando:
Código:
sudo apt-get install git
Lo que haremos ahora será crear una carpeta para decompilación en algún directorio de Windows.
En mi caso, para tenerlo todo ordenado, en Documents he creado una carpeta llamada Decomp.
Volvemos a nuestra consola de Ubuntu, y lo que haremos será ir hacia el directorio que hemos creado.
Entrando en mi carpeta de Decomp desde el explorador de Windows puedo ver que mi carpeta está en: C:\Users\Jaizu\Documents\Decomp
Así que tendremos que ir a esa carpeta desde Ubuntu.
En ubuntu los discos de windows se encuentran en /mnt/X, donde X es la letra de tu disco duro.
En mi caso lo tengo en el disco duro C, así que tendré que ir a /mnt/c
Para hacerlo solo tengo que escribir
Código:
cd /mnt/c
Ahora solo tengo que ir al resto de carpetas hasta llegar a decomp, en mi caso sería algo así:
Ahora lo que haremos será copiar el repositorio de pokeemerald y las herramientas (no confundir con herramientas para modificar nuestro proyecto) necesarias para editar nuestro proyecto.
Primero clonamos las herramientas, que las clonará a una carpeta llamada agbcc dentro de nuestra carpeta de decompilación
Código:
git clone https://github.com/pret/agbcc
Por defecto no tenemos los permisos adecuados para trabajar en los archivos de Windows, así que lo que haremos será remontar nuestro disco.
Ejecutamos estos tres comandos, uno a uno
Código:
cd ~
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
Ahora sí, a intentarlo otra vez.
Navegamos a nuestra carpeta de Decomp de Windows, en mi caso tengo que hacer:
Código:
cd ~/mnt/c/Documents/Decomp/
Código:
git clone https://github.com/pret/agbcc
No tocaremos nada de ella por ahora, primero clonemos pokeemerald también:
Código:
git clone https://github.com/pret/pokeemerald
Código:
cd agbcc
Código:
./build.sh
Una vez terminado lo que te tenemos que hacer es instalar esas herramientas en nuestro pokeemerald.
Nosotros no le pusimos ningún nombre a nuestra carpeta de pokeemerald, así que se llama pokeemerald por defecto.
Manteniéndonos dentro de la carpeta de agbcc enviamos el siguiente comando:
Código:
./install.sh ../pokeemerald
Ahora navegamos a nuestra carpeta de pokeemerald, en mi caso escribiendo:
Código:
cd ../pokeemerald/
Eso lo podemos buscar las especificaciones de nuestro PC, o más sencillamente yendo al Administrador de Tareas, y en la segunda pestaña, la de Performance/Rendimiento cambiamos la vista a esta:
Ahí podremos ver cuántos hilo tenemos, en mi caso son 16:
Bien, pues vamos a la consola de Ubuntu y escribimos:
Código:
make -j16
Esto empezará a compilar nuestra rom!
No os preocupéis, la primera vez tarda lo suyo pues tiene que compilar todo por primera vez, dependiendo de la velocidad de vuestro procesador. Yo tengo un procesador con mucha potencia, así que solo me tardará 2 minutos, aunque lo normal es que tarde hasta 10 minutos o incluso más si tenéis procesadores más honestos o laptops.
Una vez que termine el make vamos a la carpeta de pokeemerald en Windows y…
¡Victoria! Tenemos nuestra primera rom compilada
La abrimos con mGBA y magia, funciona!
Configurando VSCODE con WSL integrado
Abrimos VSCode, y en la izquierda del programa tendremos unos iconos, damos click al último, que es el de las extensiones, y ahí escribimos WSL
Damos click en Remote - WSL y damos click en Install
Ahora abriremos nuestra carpeta de pokeemerald
Una vez abierta, abajo a la izquierda en nuestra ventana de WSL daremos click a este botón verde:
Y ahí le daremos a reabrir nuestra carpeta usando WSL
Quizá la primera vez tarde un poco, pero abajo a la derecha tenemos una barra de progreso:
En mi caso me ha pedido permisos para el firewall, se los damos sin problema
Ahora es donde viene la magia de VSCode.
Cerramos nuestra ventana de Ubuntu para siempre, no la necesitaremos más (pero no la desinstaléis ni borréis nada)
Lo que haremos será abrir una nueva terminal en WSL
Y ya deberíamos tener una terminal en nuestro VSCode con la carpeta en la que estamos cargada
Para terminar el tutorial probaremos a hacer un cambio en nuestro proyecto y compilando.
En mi caso cambiaré el texto del profesor Abedul en la intro.
Primero buscaré el texto a modificar en el buscador de VSCode…
Guardamos el archivo con Control + S; y, abajo, en la terminal, ejecutamos nuestro comando para compilar la rom:
Código:
make -j16
Y también recordad que tenéis que cambiar el 16 por el número de hilos que tenga vuestro procesador.
Abrimos nuestra ROM y…