COMPILACIÓN PARA WINDOWS Y PARA SWITCH
(Este documento mas explicado y con formato adecuado en:
https://yadi.sk/d/066y46hL04wBvg?w=1)
Instalación MSYS2
Para hacer las compilaciones de los códigos fuente se requiere la plataforma de desarrollo MSYS2
Sitio oficial:
https://www.msys2.org y guía de instalación:
https://www.msys2.org/wiki/MSYS2-installation/Repositorios:
https://repo.msys2.org/distrib/ (a veces desactualizado)
https://github.com/msys2/msys2-installer/releases.
Las versiones actuales son:
https://github.com/msys2/msys2-installe ... 200720.exe (Windows 32 bits).
https://github.com/msys2/msys2-installe ... 200517.exe (Windows 64 bits).
Aceptar los valores por defecto, incluyendo la carpeta de instalación: (c:\msys64).
Luego de la instalación se procede con la actualización de paquetes, para ello ejecutar el siguiente comando tantas veces como sea necesario para que el resultado sea «there is nothing to do», tanto en el Shell MSYS2 como en el shell MinGW32/64 a utilizar:
pacman -Syu
El instalador crea tres accesos directos que ejecutan el mismo Shell para cada versión, las versiones también pueden ser accedidas mediante los ejecutables C:\dev\msys64\msys2.exe, C:\dev\msys64\mingw32.exe & C:\dev\msys64\mingw64.exe se puede modificar los accesos directos para ejecutarlos. En el indicador de línea de comandos de cada Shell se indica la versión que se está ejecutando en el momento:
El ambiente MSYS2 se utiliza para generar aplicativos POSIX desde Windows, utilizando una capa de emulación.
Los subsistemas MinGW32/64 se utilizan para generar aplicativos nativos de Windows utilizando un «linux toolchain» (gcc, bash, etc.), con código de 32 y 64 bits respectivamente.
En las propiedades de las ventanas MSYS2 se puede hacer clic derecho en la barra de título, seleccionar el ítem «Options» y en la sección «Keys» para activar la opción «Ctrl+Shift+letter shortcuts», de ésta forma se puede utilizar la combinación de teclas [Ctrl]+[Shift]+[V] para pegar texto en el Shell MSYS.
Por defecto MSYS2 sólo importa un conjunto reducido de rutas en la variable $PATH desde la variable de entorno %PATH% de Windows, ésta opción se puede cambiar en el archivo .ini de cada Shell que se encuentra en la carpeta C:\msys64 cambiando la entrada MSYS2_PATH_TYPE=inherit. Sin embargo, es mejor conservar los valores por defecto y agregar las rutas correctas como se indica más adelante.
Compilación para Windows
1. Instalación Prerrequisitos:
Según el repositorio sm64-port/sm64-port (
https://github.com/sm64-port/sm64-port) se requiere:
pacman -S --needed --noconfirm git make python3 mingw-w64-x86_64-gcc. (Win64).
pacman -S --needed --noconfirm git make python3 mingw-w64-i686-gcc. (Win32).
Según el repositorio sm64pc/sm64ex (
https://github.com/sm64pc/sm64ex) se requiere:
pacman -S --needed --noconfirm mingw-w64-i686-glew mingw-w64-x86_64-glew mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2 python3
Según la guía de compilación del repositorio sm64pc/sm64ex (
https://github.com/sm64pc/sm64ex) Se requiere:
pacman -S --needed --noconfirm base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain \
git subversion mercurial \
mingw-w64-i686-cmake mingw-w64-x86_64-cmake
En resumen los paquetes requeridos son:
Paquetes base:
pacman -S --needed --noconfirm base-devel git make mercurial python3 subversion
Prerrequisitos para Windows 64 bits:
pacman -S --needed --noconfirm mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc \
mingw-w64-x86_64-glew mingw-w64-x86_64-SDL2 mingw-w64-x86_64-toolchain
Prerrequisitos para Windows 32 bits:
pacman -S --needed --noconfirm mingw-w64-i686-cmake mingw-w64-i686-gcc mingw-w64-i686-glew \
mingw-w64-i686-SDL2 mingw-w64-i686-toolchain
Por último verificar y actualizar la base de datos de repositorios nuevamente:
pacman -Syuu
2. Crea el directorio para repositorio local (Opcional)
Desde el explorador de Windows, navega a C:\msys64\home\(nombre de usuario)\ en el indicador de comandos de MSYS2 «~»es un alías para la carpeta «Home» del usuario.
Al final del comando de clonación (git clone), se puede adicionar el nombre de la carpeta destino, si no se especifica, se utiliza el nombre del repositorio.
3. Clona el repositorio
En MSYS2, introduce el siguiente comando: (ejecutando en MINGW64)
(Versión Windows)
git clone
https://github.com/sm64-port/sm64-port.gitgit clone
https://github.com/sm64pc/sm64pc/ (redireccionado a:)
git clone
https://github.com/sm64pc/sm64ex(Versión Switch):
git clone --recursive
https://github.com/fgsfdsfgs/sm64ex (Se recomienda éste)
4. Copiar ROM a la raíz de repositorio
En la raíz del repositorio recién clonado se deberá copiar el archivo:
./baserom.<version>.z64
Se puede usar cualquiera de las ROM, solo que se deberá especificar cual se usa a la hora de compilar usando el parámetro VERSION=us USA (se usará si no se especifica otro).
VERSION=eu Europea (genera ROM sin audio).
VERSION=jp Japonesa.
VERSION=sh Shindou (aún no soportado).
La ROM se usará para extraer los recursos, debe estar en formato «Big Endian», si tu ROM legalmente obtenida está en otro formato puedes utilizar el aplicativo tool64 (
http://sheesh.us/mods/how-to-convert-an ... ng-tool64/) para convertirla
5. Configurar Variable $PATH
Con el fin de agregar la carpeta de ejecutables del Shell MSYS2 se deberá ejecutar el comando:
export PATH=/mingw64/bin:/mingw32/bin:$PATH Para Windows de 64 bits.
export PATH=/mingw32/bin:/mingw64/bin:$PATH Para Windows de 32 bits.
6. Compilación AudioFile (Para repositorio fgsfdsfgs/sm64ex).
Si se utiliza el repositorio fgsfdsfgs/sm64ex se deberá compilar la biblioteca de audio, ejecutando los siguientes pasos:
6.1. Autoreconfig
En MSYS2, vamos a navegar a la carpeta ./tools/audiofile-0.3.6/ y ejecutar el autoreconf -i.
Introduce los siguientes comandos, en orden, uno a uno:
cd sm64ex/tools/audiofile-0.3.6/
autoreconf -i
No dejar esa carpeta hasta el paso 7.7.
6.2. Ejecuta el script configure
LIBS=-lstdc++ ; ./configure --disable-docs
6.3. Ejecuta el script make
make
6.4. Crea un directorio lib en tools/
mkdir ../lib
6.5. Acabas de compilar libaudiofile. Ahora cópialo a tools/lib/
cp libaudiofile/.libs/libaudiofile.a ../lib/
cp libaudiofile/.libs/libaudiofile.la ../lib/
6.6. Modificar archivo Makefile
En el explorador de Windows, ve a sm64ex\tools y edita el archivo Makefile desde un editor de texto (es recomendable usar un editor decente como Notepad++ o Sublime Text, en lugar del bloc de notas, para asegurarte de que no rompes el formato del texto) Busca la línea que contiene esto:
tabledesign_CFLAGS := -Wno-uninitialized -laudiofile
Y añade -lstdc++ al final, de manera que quede así (¡no olvides el espacio!)
tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++
Guarda el archivo.
6.7. Vuelve a la carpeta tools y ejecuta make con los siguientes comandos.
cd ..
make
7. Ejecutar comando MAKE con parámetros:
Para generar el ejecutable compilado, si no te encuentras en ella vuelve a la carpeta del repositorio clonado, además no olvidar que MINGW32 y MINGW64 generarán ejecutables para Windows 32 bits & Windows 64 bits respectivamente.
cd ..
Por ejemplo uno de los siguientes comandos:
Se recomienda usar un valor de -j4, o -j sin valor para «hacer sangrar al CPU» 8D.
make -j EXTERNAL_DATA=1
make -j BETTERCAMERA=1 NODRAWINGDISTANCE=1
make -j BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1
8. Posibles problemas:
• Si se obtiene el error gcc: command not found o make: gcc: No such file or directory aunque los paquetes se hayan instalado correctamente, es posible que se haya lanzado la versión equivocada de MSYS2, el indicador de la línea de comandos debe contener «MINGW32» o «MINGW64» en texto púrpura no «MSYS».
• Si no se copió la ROM adecuada se obtiene el mensaje de error Failed to open baserom.us.z64! verifique que se copió la ROM adecuada en la carpeta del repositorio clonado, y que esté en el formato adecuado.
• El error make: *** No targets specified and no makefile found. Stop. indica que es está en la carpeta equivocada, al ejecutar el comando make, asegúrese de estar en la carpeta del repositorio clonado.
• Asegúrese de que al ejecutar el comando gcc -v se obtenga Target: i686-w64-mingw32 o Target: x86_64-w64-mingw32 según la versión de ejecutable que se desea, si se obtiene es porque se ejecutó la versión de MSYS equivocada o porqué se instaló la versión errónea del paquete gcc.
Compilación para Switch
Instrucciones extraídas principalmente de:
https://github.com/fgsfdsfgs/sm64pc/wik ... ndo-SwitchEl proceso se realiza en MinGW64 o MinGW32 para una versión de 32 bits de Windows.
9. Compilar para Windows
EL primer paso es utilizar las instrucciones para crear una compilación para Windows y asegurarse que los prerrequisitos y el proceso sean funcionales. Se deberá usar el entorno MingW64 y el repositorio:
https://github.com/fgsfdsfgs/sm64pc en modo recursivo:
git clone --recursive
https://github.com/fgsfdsfgs/sm64ex10. LibAudio
Para Switch es indispensable construir e instalar la biblioteca de audio libaudiofile (
https://github.com/mpruett/audiofile).
Para ello instalar automake utilizando pacman
pacman -S automake
Y luego ejecutar los comandos:
./autogen.sh && make && make install.
Si se está utilizando el repositorio fgsfdsfgs/sm64ex se debe haber ejecutado el proceso descrito con anterioridad, en: Compilación AudioFile (Para repositorio sm64ex instrucciones en español, probar si se requiere aún).más atrás
11. Instalar dependencias, el paquete DevKitPro.
Se requieren, la última versión de devkitA64 y algunos Switch portlibs, dado que ya tenemos un paquete MSYS2 funcional, seguir las instrucciones de
https://devkitpro.org/wiki/devkitPro_pacman las que se resumen a continuación.
11.1. Preparar archivo pacman.conf
Primero se debe actualizar el archivo pacman.conf que se encuentra en %RutaInstalacionMSYS2%/etc/pacman.conf y agregar las siguientes líneas al final:
[dkp-libs]
Server =
https://downloads.devkitpro.org/packages[dkp-windows]
Server =
https://downloads.devkitpro.org/packages/windowsSi se está utilizando una versión de 32 bits de Windows y MinGW32 adicionar también las siguientes líneas
[dkp-win32]
Server =
https://downloads.devkitpro.org/packages/win3211.2. Importar las llaves de firmado requeridas
Importar las llaves
pacman-key --recv BC26F752D25B92CE272E0F44F7FD5492264BB9D0
pacman-key --recv F7FD5492264BB9D0
Si el comando falla al no poder importar las llaves desde el servidor, por ejemplo:
gpg: keyserver receive failed: General error
==> ERROR: Remote key not fetched correctly from keyserver.
La llave de cifrado deberá ser importada manualmente:
pacman-key --import "RUTA_COMPLETA_ARCHIVO_pubring_gpg"
La ruta debe ser completa y no terminar en «\», por ejemplo:
pacman-key --import "C:\Descargas\DevKitPro"
Tal vez un comando del tipo pacman-key -r 0xF7FD5492264BB9D0 --keyserver
https://downloads.devkitpro.org/packages pueda ayudar pero no se las rutas
El contenido del archivo pubring.gpg debe ser: (Tomado de:
https://pastebin.com/4JDMWyCT)
Una vez importada la llave de cifrado, se firma localmente:
pacman-key --lsign BC26F752D25B92CE272E0F44F7FD5492264BB9D0
pacman-key --lsign F7FD5492264BB9D0
Se puede verificar que la llave haya sido importada adecuadamente con el comando:
pacman-key -l BC26F752D25B92CE272E0F44F7FD5492264BB9D0
pacman-key -l F7FD5492264BB9D0
Y se debe obtener una respuesta similar a:
pub rsa4096 2018-02-28 [SC]
BC26F752D25B92CE272E0F44F7FD5492264BB9D0
uid [ full ] Dave Murphy (WinterMute) <davem@devkitpro.org>
sub rsa4096 2018-02-28 [E]
11.3. Instalar el llavero de DevKitPro:
pacman -U
https://downloads.devkitpro.org/package ... pkg.tar.xz11.4. Actualizar la base de datos de MSYS2.
pacman -Sy
pacman -Syu
11.5. Instalar las herramientas DevKitPro Switch.
pacman -S --needed --noconfirm switch-dev devkitpro-pkgbuild-helpers libnx switch-tools switch-mesa switch-libdrm_nouveau switch-sdl2
12. Compilar para Switch:
12.1. Preparación del repositorio para Compilar versión Switch.
Debido a los cambios que ha podido sufrir los archivos, se ejecuta el comando git stash para permitir cambiar de rama:
git stash
Se realiza un cambio de rama a la maestra y se sincroniza:
git checkout master
git pull
Se realiza el cambio a la rama Switch y se inicializa la carpeta de destino para que recompile si existen archivos anteriores
git checkout -f switch
make clean
12.2. Crear variable de entorno.
Para DevKitPro se crea la variable $DEVKITPRO:
export DEVKITPRO=/opt/devkitpro
Para asegurarse de que se encuentren todos los ejecutables, se adicionan las carpetas /bin/ de MinGW64 y MinGW32 (en ese orden), esto solo es necesario si no se realizó en el apartado # 5 Configurar Variable $PATH
export PATH=/mingw64/bin:/mingw32/bin:$PATH
Y se prepara el entorno para utilizar DevKitPro:
source $DEVKITPRO/switchvars.sh
12.3. Cambiar el pendón del archivo NRO
Para utilizar una portada en el archivo NRO se deben seguir los pasos descritos a continuación:
Colocar un archivo llamado nx_icon.jpg en la carpeta raíz de la distribución o cambiar la línea APP_ICON := nx_icon.jpg del archivo Makefile (una vez se encuentre en la rama Switch) por la ruta completa del archivo que se desee en formato /X/ruta/carpeta/archivo.jpg o una ruta relativa a la raíz de MSYS2 /ruta/carpeta/archivo.jpg
Además en el mismo archivo, cambiar las líneas:
# add `--icon=$(APP_ICON)` to this when we get a suitable icon
%.nro: %.stripped %.nacp
@elf2nro $< $@ --nacp=$*.nacp
@echo built ... $(notdir $@)
Por:
# add `--icon=$(APP_ICON)` to this when we get a suitable icon
%.nro: %.stripped %.nacp
@elf2nro $< $@ --nacp=$*.nacp --icon=$(APP_ICON)
@echo built ... $(notdir $@)
12.4. Compilación
Por último ejecutar el comando make con las opciones deseadas, incluyendo siempre TARGET_SWITCH=1, por ejemplo:
make -j TARGET_SWITCH=1 BETTERCAMERA=1 NODRAWINGDISTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1
13. Instalar como un aplicativo Switch
Para crear un reenviador (Forwarder) al archivo NRO recién compilado, Usar Nro2Nsp.3.3.6.-.Beta.4 o superior (
https://github.com/Root-MtX/Nro2Nsp).