Registrarse

[Otros] DPE | ¡Máquina virtual para compilar Pokeemerald fácilmente!

H.B.P

Emperador Kaktiácero
Miembro de honor
Un poco de historia

Como todos sabéis, en lo que refiere a fangames, hemos trabajado tradicionalmente en la plataforma de ROM Hacking, que consiste en modificar los datos del archivo ROM del juego que nos interesa.

Con el tiempo, un grupo de internautas hicieron ingeniería inversa y produjeron un código fuente propio, que consiste en una serie de archivos diversos que, al combinarse y compilarse de forma correcta, dan como resultado un archivo ROM. A este tipo de desarrollo lo conocemos como decompilación, disassembly o más comúnmente como decomp.

Decomp: grandioso, pero de instalación compleja

El desarrollo de proyectos en decomp nos abre un nuevo horizonte provisto de grandes ventajas. El problema es que, para compilar el archivo ROM, se requiere instalar unos paquetes especiales y durante el proceso, ciertas personas encuentran problemas o no logran entender los pasos a seguir.

Para ayudar a comprender los pasos y a ayudar a que otros puedan introducirse a este mundillo, se desarrollaron fantásticos tutoriales, como un tutorial de Jaizu para preparar el entorno de desarrollo en Windows o un tutorial de Rubire4 sobre cómo preparar el entorno en máquinas de 32-bits. Y por mi parte, quiero unirme a mis compañeros y ofreceros una alternativa más para ayudaros y animaros a sumaros al cambio, al futuro.

Mi experiencia como novato me dice que, incluso tratándose de grandes tutoriales y por muy bien que estén explicados, siempre nos encontraremos fallos de algún tipo o nos terminamos cansando o agobiando si tenemos que seguir demasiados pasos.

Por ese motivo, esta vez no he venido a ofreceros un tutorial más, sino una herramienta que os permitirá empezar de forma cómoda, fácil y rápida.

DPE: La máquina compiladora

Esta herramienta se trata de DPE, un acrónimo de su nombre completo, Decomp_Pokeemerald. DPE consiste en una máquina virtual para VirtualBox, es algo así como un ordenador virtual que nos permite editar los archivos de decomp y compilarlos.

DPE está basado en Lubuntu, un sistema operativo alternativo a Windows, basado en Linux, que ha sido diseñado para funcionar hasta en ordenadores poco potentes.

Instalación de serie

Esta máquina virtual cuenta con una serie de paquetes, programas y archivos instalados de serie, entre los cuales se incluyen:
  • Todos los paquetes necesarios para compilar un ROM de GBA y todos los parámetros configurados de serie.
  • Una serie de editores de texto: Text Editor (versión de Gedit para Lubuntu), Vim y el archiconocido Visual Studio Code, entre otros.
  • Una carpeta llamada "Proyecto", que incluye las carpetas necesarias para compilar un ROM de Pokeemerald, ya configuradas y a punto para compilar.
  • La contraseña de la cuenta por defecto es: "usuario" (sin las comillas).
Además, para facilitar el uso de la máquina y por comodidad, también se incluyeron enlaces hacia la carpeta "Proyecto", hacia la terminal de comandos (necesaria para compilar el ROM) y hacia el editor Visual Studio Code.

Dos posibilidades: editar desde la máquina o desde Windows

La máquina virtual está preparada para que podamos editar los archivos de decomp directamente. Sin embargo, es cierto que no todos estamos habituados a trabajar desde una máquina con Linux y que casi todos utilizamos un ordenador con Windows.

Por ese motivo, la máquina cuenta con una carpeta compartida pre-instalada, una carpeta especial que podemos conectar con otra de Windows, la que nosotros queramos. De esta forma, podemos optar por editar los archivos desde Windows tranquilamente y, una vez hayamos terminado, podemos compilar el ROM desde la máquina virtual.

Lo mejor de todo es que, al tener los archivos en Windows, no es necesario mantener la máquina encendida, por lo que podemos dejarla apagada mientras editamos y encenderla sólo cuando queramos compilar el juego.

Ventajas y desventajas

Utilizar esta máquina virtual ofrece una serie de ventajas bastante interesantes, entre las que destaco las siguientes:
  • Gran rapidez de instalación: no es necesario seguir pasos largos, ni instalar múltiples programas. Lo único que tenemos que hacer es instalar VirtualBox, importar la máquina y, si queremos, preparar la carpeta compartida para Windows.
  • Instalación sencilla: no tenemos que tocar registros, ni variables de entorno.
  • Portabilidad: podemos exportar la máquina virtual y llevarla a cualquier ordenador rápidamente y en cualquier sistema operativo, siempre y cuando tenga instalado VirtualBox.
  • Solución de quita y pon: si algún día nos cansamos de decomp, tan sólo tenemos que desinstalar VirtualBox, guardar la máquina virtual y el ordenador se quedará totalmente limpio.
  • Edición offline: podemos editar los archivos de la carpeta compartida incluso con la máquina apagada y, cuando necesitemos compilar, simplemente encendemos la máquina y lo hacemos.
Como todo, esta solución tampoco está libre de desventajas:
  • La descarga inicial es algo lenta, pues el archivo de descarga pesa casi 3 GB.
  • A diferencia de otras alternativas, como la de Jaizu, aquí corremos una máquina virtual completa, así que el rendimiento no será tan óptimo que con otra opción más ligera.
  • Al compilar el proyecto por primera vez, el tiempo de espera es más largo, más si nos aseguramos de que el resultado sea el correcto (compare). La virtualización no es ligera por definición, así que el proceso podría llegar a ser muy lento en equipos con procesadores menos potentes.
Procuré elegir un sistema operativo más ligero y preparar lo necesario para evitar tener que mantener la máquina virtual encendida el mayor tiempo posible.

En sí he trabajado con equipos de bajas prestaciones con máquinas virtuales, basadas en distribuciones de Linux, y he obtenido buenos resultados, pero estos son detalles importantes a tener en cuenta y prefiero no dar nada por hecho.

Requisitos
  • Un ordenador con el sistema operativo que queramos, eso sí, de 64-bits.
  • Contar con, al menos, 20 GB de espacio en el disco duro.
  • Para usarla, al menos saber lo mínimo (meternos en la carpeta de Pokeemerald desde la terminal y usar el comando make).
  • Instalar VirtualBox y configurar la máquina, para lo que podéis seguir este tutorial.
Capturas

A continuación, os dejo algunas capturas de pantalla sobre la máquina virtual.

demo-01.PNG
demo-02.PNG
demo-03.PNG
demo-04.PNG
demo-05.PNG
demo-06.PNG
demo-07.PNG

Descarga

>>Acceso a la descarga<<

Créditos y agradecimientos
  • Gracias a ishmam por el fondo de pantalla de Rayquaza para la máquina virtual.
  • Al IES Julio Verne y a Emiliopm, por enseñarme todo lo necesario para trabajar con máquinas virtuales y sistemas Linux.
  • A los conlaboradores del proyecto de decomp Pokeemerald, sin los cuales no existiría este tema, ni la máquina virtual.
  • Al equipo de DevkitPro por sus guías y recursos para el desarrollo en GBA.
  • Y finalmente, a vosotros por tomaros este tiempo en leer el tema.
Y finalmente...

Nunca se sabe lo que puede ocurrir con la informática y las máquinas virtuales cuando intentas instalarlas por primera vez, así que me gustaría que os animárais a probarla y me comentárais si encontráis algún problema.

Espero que este aporte os sea de mucha utilidad y que lo disfrutéis.
 
Última edición:

eing

Miembro de honor
Miembro de honor
La idea es cojonuda, ya que das a los usuarios un entorno preparado para trabajar, donde deban de compilar y así tener el rom listo, para testear y/o ver los cambios realizados.

El único pero que le veo, es que según tengo entendido compilar la primera vez el rom, es MUY lento si no se tiene un procesador bueno.
Lo cual si ya de serie es lento, imaginate si estas virtualizando un SO con virtualbox.. se hará aún mas lento el proceso.

btw, la solucion es bien sencilla, si quieres dedicarte al desarrollo de videojuegos deberias de ir con un ordenador potente y no se hable más.
 

H.B.P

Emperador Kaktiácero
Miembro de honor
La idea es cojonuda, ya que das a los usuarios un entorno preparado para trabajar, donde deban de compilar y así tener el rom listo, para testear y/o ver los cambios realizados.

El único pero que le veo, es que según tengo entendido compilar la primera vez el rom, es MUY lento si no se tiene un procesador bueno.
Lo cual si ya de serie es lento, imaginate si estas virtualizando un SO con virtualbox.. se hará aún mas lento el proceso.

btw, la solucion es bien sencilla, si quieres dedicarte al desarrollo de videojuegos deberias de ir con un ordenador potente y no se hable más.
Sí, es un punto importante y puede consumir un tiempo considerable, así que lo agregaré de inmediato, ¡muchas gracias!

Hoy día, me acerco más a tu postura no sólo por el asunto del desarrollo, sino porque la tendencia en temas de navegadores de internet es a darle más carga de trabajo a los equipos con el fin de aliviar a los servidores, así que parece un paso inevitable. De todas formas, entiendo que no todos tienen recursos para tener un equipo puntero, pero espero que la informática y el tiempo hagan su magia.
 

Lunos

Enfrentando a La Organización
Miembro insignia
Pues la idea es buena. Tomás la maquina virtual, la insertás y a trabajar. Me parece correcto, no tengo mucho más para agregar.

El único pero que le veo, es que según tengo entendido compilar la primera vez el rom, es MUY lento si no se tiene un procesador bueno.
Hombre, normalmente si, pero como aquí se trabaja con Linux, diria que no. Mi computadora tiene un i3 2120 que es un procesador lanzado en 2011, y en una maquina virtual con la distribución de Linux "Lubuntu" cuando aun yo estaba en Windows 8.1, compilar Pokeemerald por primera vez tomó literalmente cosa de 1 minuto y 31 segundos. Lo testeé con un cronometro en su momento.

A modo de comparación, compilarlo en Windows 8.1 como tal me tomó 8 minutos y 28 segundos con MSys2, mientras que Cygwin se tardó 10 segundos más (8 minutos y 38 segundos).
Ahora que estoy en Windows 10 utilizo el WSL, y ni eso logra alcanzar el nivel de potencia viril para estas cosas que Linux parece poseer, pues en WSL tardo 3 minutos y 1 o 2 segundos.
En todos los casos, el cronometro empezó a correr en el instante en que presioné Enter para ejecutar el proceso de make

Linux es un Sistema Operativo bastante light, al punto en que incluso aunque en su momento usé Lubuntu en una Maquina Virtual, el sistema funcionaba practicamente como si lo hubiera instalado de manera normal. Claramente, es un sistema operativo con una base mucho más solida y mejor trabajada que Windows. No gasta ni de broma tantos recursos y maneja operaciones de forma más veloz y eficiente.
Vamos, esa es la impresión que yo me llevé, por lo menos.
 
Última edición:
Arriba