Registrarse

[Decomp-GBA] Como instalar decompilación en macOS Sierra

Kaktus

Miembro insignia
Miembro insignia
Disclaimer: este tutorial sirve para la versión de macOS Sierra. En Catalina y BigSur los pasos difieren, sin haber consenso, y os recomiendo que echéis un vistazo a las interacciones de los usuarios que han respondido al tema.


A petición de @alexMAD he instalado una máquina virtual y he estado gran parte de la tarde investigando los errores que iba recibiendo, hasta conseguir compilar nuestro querido proyecto. Yo en principio he probado solo con pokeemerald, aunque si con otro proyecto trae algún problema concreto, puedo intentar compilarlo también para solucionar los errores que puedan haber.

Este tutorial puede ser utilizado en versiones superiores de MacOS. Sin embargo, para los Macs con procesador Apple Silicon (M1), algunos cambios deben aplicarse en los comandos.

Haría un script, pero sorprendentemente, para MacOS es ULTRA FÁCIL configurarlo todo (que envidia cabrones :c), y ni si quiera merece la pena.

En primer lugar, necesitamos las herramientas de la línea de comandos de XCode. OJO, no necesitamos descargar XCode, se llama así, pero se instala de forma independiente. Para ello, abriremos la Terminal de MacOS


Y una vez la abramos, escribiremos el siguiente comando y lo ejecutaremos
Código:
xcode-select --install
Nos aparecerá una ventana como esta, o muy similar

1615501695879.png

Le damos a Install, y esperamos a que se complete la instalación.

(Manurocker95): A partir de este punto, todos los comandos que se utilizan en este tutorial, en el caso mencionado de los M1, necesitarán ejecutarse en Rosetta 2 mediante la especificación de arquitectura
Código:
arch -x86_64
para que tanto Devkitpro como libpng se installen bajo Rosetta. Si no sabemos cómo hacerlo, primero deberemos instalar Rosetta 2 (Si no lo hemos hecho) mediante el comando:

Código:
softwareupdate --install-rosetta
Si da el código de error:

Código:
arch: posix_spawnp: /bin/bash: Bad CPU type in executable
es que no hemos instalado correctamente Rosetta.


Una vez la instalación de XCode acabe, pasaremos a instalar Homebrew, que no es lo que nos sirve para hackear las consolas de Nintendo que nos servirá para poder descargar el paquete que no viene preinstalado con el primer comando que hemos ejecutado, es decir, libpng.

Código:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

(Manurocker95) Si estamos usando un M1, quedaría así:

Código:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"


Y ejecutaremos estas dos líneas para actualizar los paquetes que ya tenemos instalados.


Código:
brew update

brew upgrade

E instalaremos libpng con este código

Código:
brew install libpng

(Manurocker95) Importante: En los M1, brew instala sus librerías (libpng en este caso) en /opt/homebrew, pero necesitará estar en "/usr/local" para poder compilar. Por eso, forzaremos la ruta en la que se instalará libpng mediante el comando:


Código:
arch -x86_64 /usr/local/bin/brew install libpng


Esto nos lo instalará en la ruta correcta y nos evitará el error
Código:
png.h not found
y con ello, compilarán nuestras roms.



NOTA: Si en alguno de estos comandos se nos pide permisos y no nos deja ejecutarlos, lo único que tenemos que hacer es escribir "sudo" delante del comando, así

Código:
sudo brew install libpng


Luego nos pediría la contraseña de nuestro Mac para confirmar que sabemos lo que hacemos. La escribimos (no veremos ningún caracter escribiendo mientras tecleamos, pero la Terminal sí lo está leyendo), y cuando la hayamos escrito, le damos intro, y ya se ejecuta el comando.



Ahora, el paquete gordo. devkitPro-Pacman. Para este, tendremos que ir a ESTE ENLACE y haremos un poco de scroll hasta abajo hasta encontrar algo como esto:

1615499741788.png


Ojo, nosotros tenemos que descargar el que acaba en .pkg, así que, lo descargamos, y por ejemplo, lo movemos al escritorio.
Ahora, volvemos a la terminal, y tenemos que acceder a la ruta del escritorio, para ello, escribiremos en el terminal cd y un espacio. Volvemos al Escritorio, y arrastramos el paquete que acabamos de descargar, a la terminal, y veremos que se escribe automáticamente la ruta, eso sí, de esa ruta, tendremos que borrar el nombre del archivo. A mi al final, me queda así

1615499940913.png


TIENE QUE HABER UN ESPACIO ENTRE CD Y EL RESTO DEL TEXTO (Cuidado con esto, que se nos puede pasar jajajaja)

Una vez tenemos eso escrito, le damos a intro para ejecutarlo, y copiamos y pegamos este comando.
Código:
sudo installer -pkg devkitpro-pacman-installer.pkg -target /
Esperamos a que se instale todo, y de nuevo, aceptamos todo lo que tengamos que aceptar.

Y lo último que tendremos que instalar será gcc-arm-none-eabi. Yo lo he tenido que instalar de un repositorio ajeno al oficial, porque el oficial me daba problemas. Para esto, ejecutaremos estas tres instrucciones por orden

Código:
brew tap PX4/homebrew-px4
brew update
brew install gcc-arm-none-eabi
Y con esto, si todo ha ido bien, ya tendríamos todos los paquetes necesarios.
Ahora, descargaremos nuestro repositorio de preferencia, en mi caso será pokeemerald. Y para ello, si no queréis que se guarde en el propio Escritorio, podéis crear una carpeta en el escritorio ejecutando este comando
Código:
mkdir Decomp
Y luego, accedemos a ella con
Código:
cd Decomp
Ahora ya, procedemos a descargar lo necesario con las siguientes instrucciones, os dejo las que tendríais que usar según la base que queráis en diferentes spoiler
Código:
git clone https://github.com/pret/pokeemerald
git clone https://github.com/pret/agbcc

cd ./agbcc
./build.sh
./install.sh ../pokeemerald

cd ../pokeemerald
Código:
git clone https://github.com/pret/pokeruby
git clone https://github.com/pret/agbcc

cd ./agbcc
./build.sh
./install.sh ../pokeruby

cd ../pokeruby
Código:
git clone https://github.com/pret/pokefirered
git clone https://github.com/pret/agbcc

cd ./agbcc
./build.sh
./install.sh ../pokefirered

cd ../pokefirered

Con todo esto descargado e instalado, el siguiente comando será el que compile nuestro juego.
Código:
make -j$(sysctl -n hw.physicalcpu)
Y una vez compilado, os debería salir algo muy similar a esto
1615500892833.png


¡Y ya tendrás tu juego compilado!

Eso si, yo antes de conseguir ese resultado, obtuve un error por un fallo en uno de los archivos Makefile del proyecto, si a ti no te ha aparecido eso a la primera, abre el spoiler.

Si te ha dado este error

1615500995486.png


Tendrás que abrir manualmente un archivo de todos los que hay ahí.

Exactamente, estará en el archivo donde descargaste pokeemerald, luego entras a la carpeta de pokeemerald, y en esa carpeta, entras a libagbsyscall

1615501094884.png


Dentro de ella, encontrarás un archivo llamado Makefile, pues le damos click derecho, y lo abrimos con el TextEdit

1615501227744.png


Y dentro nos encontraremos con muchas líneas, pero tendremos que bajar hasta una que se llama
Código:
export LD := $(PREFIX)ld
1615501399550.png


Y justo después de esa línea, añades la siguiente

Código:
export AR := $(PREFIX)ar
Quedando de esta manera

1615501464939.png


Una vez hecho esto, guardamos el archivo desde File > Save, y ahora en la terminal ejecutaremos estas dos instrucciones

Código:
make clean
make -j$(sysctl -n hw.physicalcpu)
Y por fin deberíamos lograr nuestra ansiada ROM compilada ;)

¡Disfrutad de Decomp en MacOS! :D


PD.
Ver el archivo adjunto 4589

He hecho la prueba con pokefirered y me ha compilado a la primera sin ningún problema.
 

Adjuntos

Última edición por un moderador:

Xiros

¡Pokémon Omega con actualización del 30/8!
Miembro de honor
Yo estuve horas para poder configurar todo hace meses, me hubiese gustado tener este tuto!
Gran aporte como todos los que venís dando últimamente :)
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
En vez de recomendar "/Bin/Bash" pon que sea una ruta definida (esa si quieres), porque si no la gente va a instalarlo en el volumen por defecto si saber que pueden en cualquiera. Ejemplo:

1615548142352.png


Después de instalar homebrew y antes de poder usar el comando, necesitas añadir estas dos:

Código:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/tuUsuario/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Asumiendo que instalas en /Bin/Bash.


AGBCC no buildea en Catalina o superior debido a cambios en Xcode 12.

 
Última edición por un moderador:

alexMAD

Otro Romhacker mas...
Disclaimer: usuario de macOS BigSur
Tutoriales seguidos:

Bueno pues después del millón de errores que me salieron gracias a IK y al foro encontré la solución.
primero en lugar de instalar el pokeemerald desde/pret/pokeemerald lo instale desde :
Código:
git clone https://github.com/luckytyphlosion/pokeemerald
git clone https://github.com/luckytyphlosion/agbcc
no sin antes volver a instalar el Pacman desde el enlace que compartieron es el que seguí yo

Código:
Download the devkitpro-pacman-installer.pkg package from here.

Open the package to install devkitPro pacman.

In the Terminal, run the following commands to install devkitARM:

sudo dkp-pacman -Sy
sudo dkp-pacman -S gba-dev
sudo dkp-pacman -S devkitarm-rules
The command with gba-dev will ask for the selection of packages to install. Just press Enter to install all of them, followed by entering Y to proceed with the installation.

After the tools are installed, devkitARM must now be made accessible from anywhere by the system. To do so, run the following commands:

export DEVKITPRO=/opt/devkitpro
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
export DEVKITARM=$DEVKITPRO/devkitARM
echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc

echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile



Edit:
AGBCC no buildea en Catalina o superior debido a cambios en Xcode 12.


la verdad desconozco cuál de todas las cosas que hice fue la que funciono pero muchas gracias de nuevo por este teme que me ayudo a despejar los problemas .




este error igual me dio
para evitar hacer spam en el tema, te comparto el enlace que me ayudo mucho de parte de IK: https://github.com/luckytyphlosion/pokeemerald/blob/master/INSTALL.md#macos

repasa la parte que dice instalación en MacOS y espero que te ayude como a mi me ayudo .
 
Última edición por un moderador:

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
Como dato para todos los que usen un Apple Silicon, para que funcione hay que correrlo en Rosetta con:

Código:
arch -x86_64
Antes de cada comando. Quedando algo como:

Código:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Aunque antes tenemos que habilitar rosetta:

Código:
softwareupdate --install-rosetta
Para evitar el código de error:

Código:
arch: posix_spawnp: /bin/bash: Bad CPU type in executable
 
Arriba