ADVERTENCIA:
Antes de realizar cualquier comentario al respecto del tema de este hilo, por favor lee y cumple lo que se ha especificado en este enlace, para así evitar infracciones y/o que tu mensaje sea borrado. Y por favor recuerda la norma básica: En EOL no se da soporte a la pirateríaSuper Mario 64 es un port (
https://github.com/sm64-port/sm64_3ds) a 3DS, llevado a cabo por
Gericom (
https://github.com/Gericom), del proyecto de descompilación (
https://github.com/n64decomp/sm64) del juego.
El port rinde de forma excelente en modelos New pero tiene serios problemas de rendimiento en modelos originales. Soporta modo 800x240 (también es posible usar 400x240) y algunos mods creados para otras plataformas.
No es posible distribuir el port compilado. El port es completamente legal (por eso está disponible en GitHub) pero los binarios compilados utilizan archivos de la rom del juego, propiedad de Nintendo. Es necesario que lo compiléis vosotros mismos. A continuación haré una guía, más o menos simple, de cómo hacerlo.
COMPILAR EL JUEGOExisten varias formas de compilar el juego y entornos de compilación, es un tema complicado (para un usuario normal) e inabarcable. Aquí explicaré cómo hacerlo, desde cero, con el
Subsistema de Windows para Linux (WSL), que aunque su nombre es un tanto equívoco en realidad es Linux para Windows 10. Esto lo podéis hacer en cualquier versión de Windows 10, da igual que sea la Pro, que la Home, que la LTSC, es indiferente que tenga la UWP instalada o no.
El primer paso será instalar el Subsistema de Windows para Linux. Para ello iremos a
Panel de Control (escribid 'panel de control' en la barra de direcciones del explorador) >
Programas y Características >
Activar o desactivar características de Windows y marcad
Subsistema de Windows para Linux. Aceptad y reiniciad Windows.
Bajad la imagen de
Ubuntu 18.04 (
enlace) e instaladla vía
Powershell. Para ello id a la carpeta donde lo halláis descargado, en la barra de direcciones poned
powershell y presionad Enter. El comando para instalar sería
Add-AppxPackage ./XXX.Appx, donde XXX sería el nombre del paquete.
Una vez el proceso haya finalizado id a
Inicio >
Aplicaciones >
Ubuntu 18.04 y dejad que finalice la instalación. Rellenad el usuario que usaréis y la contraseña (dos veces). Cerrad el Terminal.
Volved a abrir el Terminal de Linux (
Inicio >
Aplicaciones >
Ubuntu 18.04). Usad los siguientes comandos por orden, cuando acabe uno usad otro:
Primero
sudo apt update (la primera vez que uséis sudo os pedirá la contraseña de administrador) y luego
sudo apt upgrade -y (-y sirve para aceptar automáticamente).
Después
sudo apt install build-essential -y y a continuación
sudo apt install software-properties-common -y.
El siguiente comando será
sudo apt install git-all -y.
Finalmente
sudo apt install p7zip-full p7zip-rar -y. Cerrad el Terminal.
Con esto habremos instalado las herramientas básicas para trabajar con compilaciones. Ahora instalaremos el kit de desarrollo
devkitPro, el cual nos permitirá compilar aplicaciones de Nintendo: Wii, WiiU, 3DS, etc.
Abrid nuevamente el Terminal de Linux y usad el comando
sudo apt install gdebi-core -y. GDebi es una herramienta para instalar paquetes Debian, que es la manera más fácil de instalar devkitPRO. Cerrad el Terminal.
Seguidamente descargaremos devkitPRO (
enlace). En la carpeta donde hayamos descargado el paquete abrimos un Terminal de Linux, para ello iremos a la barra de direcciones y escribiremos
bash para pulsar Intro seguidamente. En esa ventana de Terminal usaremos el comando
sudo gdebi devkitpro-pacman.amd64.deb.
De esta manera tendremos instalado el entorno de desarrollo devkitPro, pero nos harán falta las herramientas específicas de cada plataforma. En este caso, 3DS, serán las
3DS-dev. Primero usamos el comando
sudo dkp-pacman -Sy (sirve para buscar actualizaciones en devkitPRO) y después
sudo dkp-pacman -Syu -y (sirve para instalar actualizaciones, si las hubiese).
Finalmente
sudo dkp-pacman -S 3ds-dev. Cuando os pregunte qué paquetes de 3DS-dev instalar, simplemente
pulsad intro para instalarlos todos. Cerrad el Terminal.
A continuación actualizaremos algunas librerías extra. Volved a abrir el Terminal y usad
sudo apt install build-essential pkg-config git binutils-mips-linux-gnu zlib1g-dev libaudiofile-dev.
Para acabar descargaremos el paquete de instalación de Irix para QEMU (
enlace) y lo instalaremos (abrid un Terminal en la misma carpeta de descarga con
bash en la barra de direcciones) con
sudo dpkg -i qemu-irix-2.11.0-2169-g32ab296eef_amd64.deb.
De esta forma quedará instalado todo nuestro entorno de programación, listo para compilar Super Mario 64. A continuación veremos cómo descargar el código fuente y cómo compilar el juego.
El primer paso será compilar el juego. Para ello descargamos el código fuente del GitHub de Gericom (
enlace). Para ello vamos a la carpeta donde queremos descargarlo y usamos
bash en la barra de direcciones, como hemos visto varias veces ya. Primero usaremos el comando
git clone https://github.com/sm64-port/sm64_3ds para descargar el repositorio completo. Cuando finalice la descarga/comprobación entraremos en la carpeta con
cd sm64_3ds.
Aquí es donde entra en juego la parte "turbia" del asunto. El proyecto de decompilación de Super Mario 64 y sus consiguientes ports son completamente legales en tanto en cuanto no usan código de Nintendo. Sin embargo, para compilar el port, obviamente hacen falta los archivos del juego, de manera que
necesitaréis la rom. Personalmente suelo compilar el juego con la versión USA, pero la EUR y JPN también valen. El formato tiene que ser
Z64, el SHA1 de la versión USA, por si queréis comprobarlo es 9bef1128717f958171a4afac3ed78ee2bb4e86ce. Con este hash también podéis hacer otras cosas (guiño-guiño-codazo-codazo). Descargad la rom, extraedla y renombradla a:
baserom.us.z64,
baserom.eu.z64 o
baserom.jp.z64, dependiendo de la región escogida. Finalmente moved la rom, renombrada, a la carpeta sm64_3ds, creada en el paso anterior.
Finalmente compilaremos el juego con
make. Si la habéis cagado en algún sitio aquí es donde habrá errores a chorrón. En principio el Terminal informa de dónde está el problema y a qué es debido, generalmente la falta de alguna dependencia o la imposibilidad de acceso a algún programa (porque no esté en el PATH, porque no sea ejecutable, etc), sin embargo puede ser complicado de descifrar si no estáis familiarizados con la compilación o la programación. Si tenéis algún problema comentadlo por aquí con una captura de pantalla del error.
Si todo ha ido como la seda el ejecutable se encontrará en la ruta:
/sm64_3ds/build/**_3ds/sm64.**.f3dex2e.3dsx. Donde los asteriscos son la región (us, eu o jp). Ese es el ejecutable que deberemos usar con
Homebrew Launcher. Para crear un CIA, es decir, un instalador que instale el juego en el menú principal, deberemos compilarlo aparte y con otras herramientas (pendiente de actualización).
RESOLUCIÓN Y CONTROLESEstas modificaciones las deberemos hacer
antes de compilar, para que al compilar el juego sea modificado con ellas.
En cuanto a
gráficos podremos modificar dos parámetros: Resolución y Anti Aliasing. Para ello iremos a
/sm64_3ds/src/pc/gfx/gfx_3ds.h. Editaremos ese archivo con un editor de texto (Notepad++, Bloc de Notas, etc). Por defecto el juego se compila en 800x240, si queremos usar resolución 400x240 deberemos poner un par de barras inclinadas antes de #define N3DS_USE_ANTIALIASING (quedaría:
//#define N3DS_USE_ANTIALIASING). Por defecto el juego se compila con Anti Aliasing, si queremos eliminarlo deberemos poner un par de barras inclinadas antes de #define N3DS_USE_WIDE_800PX (quedaría:
//#define N3DS_USE_WIDE_800PX). Evidentemente si queremos 400x240 y eliminar el Anti Aliasing pues habría que hacer ambos cambios. Guardaremos el archivo y compilaremos con
make.
Nota: Todos los modelos de 3DS tienen una pantalla 800x240, EXCEPTO la 2DS original (la New 2DS XL, aunque no tiene 3D, sí tiene pantalla 800x240). NO compiléis 800x240 para la 2DS original porque, por motivos obvios, el juego quedará cortado a la mitad.
En cuanto a
controles podremos asignar cualquier input del mando original de Nintendo 64 a cualquier botón de 3DS. Para ello iremos a
/sm64_3ds/src/pc/controller/controller_3ds.c. Editaremos ese archivo con un editor de texto (Notepad++, Bloc de Notas, etc). A partir de
controller_3ds_read podremos cambiar cualquier cosa. Por ejemplo: Si queremos utilizar la configuración L/R original (puesto que en el port, por defecto, está invertida) pues tendríamos que intercambiar las funciones Z_TRIG y R_TRIG. En el juego original la cámara en tercera persona estaba en L, no en R, y agacharse estaba en Z (R, en este caso), no en L. Guardaremos el archivo y compilaremos con
make.
------EN PROCESO------
Nota: Existe
Ubuntu 20.04 en Windows Subsystem, sin embargo a mi me ha dado problemas con algunos programas (Cargo/Rust, por ejemplo), Ubuntu 18.04 es más que suficiente para una "experiencia Linux" completa.
GITHUBhttps://github.com/sm64-port/sm64_3ds