Registrarse
  • ¿Todavía no te enteraste? ¡Salió la beta 1 de Pokémon Azul Agua de gameboy_cl!

    ¿Qué estás esperando para probarlo?

[Decomp-GBA] Compilar Porymap en WSL2, Aceleración Gráfica WSLg y Agregar Porymap al PATH

Hoennwalker

Profesional de WaH
Buenas,

Sé que estáis muy cómodos con vuestro porymap... Sin embargo, también sé que no os termina de convencer, ya que el proyecto está en la partición de Linux, porymap en Windows, y no nos queda del todo bien ordenadito. Así que, vamos a compilar porymap mediante WSL2, que así de paso tendremos velocidad de lectura y escritura máxima, no sé...

Desconozco desde qué versión de ubuntu se puede hacer esto, por lo que sería interesante que instaléis la versión más reciente. Esto no es actualizar WSL, es crear otra partición con otro ubuntu distinto.

Para la compilación vamos a necesitar Qt6 del package manager y g++.

Qt6 package manager:
Código:
sudo apt update
sudo apt install qt6-base-dev -y

Ahora tenemos que instalar dos librerías que nos hacen falta adicionalmente:
Código:
sudo apt install qt6-base-dev qt6-declarative-dev qt6-charts-dev -y

G++:
Que lo vamos a necesitar para compilar C, C++ y para poder compilar con "make -j$(nproc)".
Código:
sudo apt update
sudo apt install build-essential -y

Ya tenemos las herramientas, ahora nos bajamos el repositorio de porymap en la carpeta que quieras dentro de la partición de Linux. Para organizar todo lo relacionado con decompilación no estaría mal si te creas una carpeta "decompilacion".
Código:
mkdir -p decompilacion
cd ~/decompilacion
git clone https://github.com/huderlem/porymap.git

Lo que nos interesa es compilar la versión estable, así que vamos a seleccionar también la última versión:
Código:
cd porymap
git tag

Ahora vamos bajando con la flecha del teclado hasta encontrar la última versión, a día de hoy 6.2.0, y la seleccionamos de la siguiente manera:
Código:
git checkout 6.2.0

Ahora vamos a crear una carpeta build. Esto lo hacemos porque al crear precisamente la build, se generan una burrada de archivos y así los metemos todos ahí, que queda más ordenado. Y entramos en build:
Código:
mkdir -p build
cd build

Vamos con la creación de la build:
Código:
qmake6 ../porymap.pro -r
Eso hace qmake en /porymap y los archivos los mete en /porymap/build.

Y ahora para crear el ejecutable:
Código:
make -j$(nproc)

Finalmente podemos ejecutar porymap:
Código:
./porymap
1757286007629.png


Ahora vamos a configurar WSL para que use tu tarjeta gráfica de alto rendimiento. Para ello en el directorio de linux ve a esta ruta:

Código:
\\wsl.localhost\Ubuntu-24.04\home\tu_nombre
1772219740710.png


El archivo .bashrc, ábrelo y añade estas 3 líneas abajo del todo.
Código:
export MESA_LOADER_DRIVER_OVERRIDE=d3d12
export GALLIUM_DRIVER=d3d12
export MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA (o AMD, según tu gráfica)
Con esto lo que hemos hecho es que WSLg use siempre la tarjeta gráfica de alto rendimiento y con ello tienes plena velocidad.

Ahora vamos a agregar porymap al PATH. Esto lo hacemos por comodidad, para no tener que acceder siempre a la ruta donde está porymap y ejecutarlo. Para ello, en el mismo fichero que hemos editado antes añades otra fila más.
Código:
export PATH="$PATH:/home/tu_nombre/decompilacion/porymap/build"

A partir de ahora puedes abrirlo solamente con "porymap" ya no es necesario "./porymap". Pero puede que te hayas dado cuenta de que tanto antes como ahora, que el terminal queda digamos ocupado por la ejecución del porymap y no puedes meter comandos. Simplemente lo arreglamos ejecutando porymap en segundo plano y descartando los logs, de esta forma podríamos ir compilando todos los cambios que vayamos aplicando.
Código:
porymap >/dev/null 2>&1 &
 
Última edición:

Erkey830

Fuck off!
Miembro del equipo
Moderador/a
Buenas,

Sé que estáis muy cómodos con vuestro porymap... Sin embargo, también sé que no os termina de convencer, ya que el proyecto está en la partición de Linux, porymap en Windows, y no nos queda del todo bien ordenadito. Así que, vamos a compilar porymap mediante WSL2, que así de paso tendremos velocidad de lectura y escritura máxima, no sé...

Desconozco desde qué versión de ubuntu se puede hacer esto, por lo que sería interesante que instaléis la versión más reciente. Esto no es actualizar WSL, es crear otra partición con otro ubuntu distinto.

Para la compilación vamos a necesitar Qt6 del package manager y g++.

Qt6 package manager:
Código:
sudo apt update
sudo apt install qt6-base-dev -y

Ahora tenemos que instalar dos librerías que nos hacen falta adicionalmente:
Código:
sudo apt install qt6-base-dev qt6-declarative-dev qt6-charts-dev -y

G++:
Que lo vamos a necesitar para compilar C, C++ y para poder compilar con "make -j$(nproc)".
Código:
sudo apt update
sudo apt install build-essential -y

Ya tenemos las herramientas, ahora nos bajamos el repositorio de porymap en la carpeta que quieras dentro de la partición de Linux. Para organizar todo lo relacionado con decompilación no estaría mal si te creas una carpeta "decompilacion". Y ya de paso procedemos con ese ejemplo:
Código:
cd ~/decompilacion
git clone https://github.com/huderlem/porymap.git

Ahora nos metemos dentro y creamos una carpeta build. Esto lo hacemos porque al crear precisamente la build, se generan una burrada de archivos y así los metemos todos ahí, que queda más ordenado. Y entramos en build:
Código:
cd porymap
mkdir -p build
cd build

Vamos con la creación de la build:
Código:
qmake6 ../porymap.pro -r
Eso hace qmake en /porymap y los archivos los mete en /porymap/build.

Y ahora para crear el ejecutable:
Código:
make -j$(nproc)

Finalmente podemos ejecutar porymap a 31 y 255 de speed:
Código:
./porymap
Ver el archivo adjunto 19537
gracias por este tuto necesario para conocimiento medio de los decompers!
 

StunxFS

Héroe de WaH
Buen tutorial, bro.

En respuesta a lo de la versión de Ubuntu necesaria: En teoría no debería de haber problema si se usa la versión LTS 22.04 en adelante (y cualquier otra distro basada en esta versión debería funcionar bien).

Y otra cosa, para poder ejecutar porymap desde cualquier parte, se podría crear un symlink del binario en /usr/local/bin, así no es necesario ir a dónde está ubicado el binario para ejecutarlo con una ruta relativa ;).
 

Hoennwalker

Profesional de WaH
Buenas gente he actualizado el post porque me informé y resulta que WSLg sí que admite tarjeta gráficas duales como la mía que es AMD y NVIDIA y no es necesario configurar nada desde windows. Aún así el método que explico es válido para asignarle a WSL cualquier tipo de gráfica.

Deja el porymap de windows, ya verás
 
Arriba