Registrarse

¿Qué es Decomp?¿Qué plataforma debería escoger?

Samu

Usuario de Oro
Llevo tiempo queriendo hacer algo parecido, y ya que he visto que parece haber más gente nueva de lo normal (o eso, o me he vuelto el abuelo cebolleta), aprovecho para dejarlo por aquí ahora.

Este tema está orientado a dar información general sobre decompilación, ya que mucha gente lo desconoce, y muchos otros lo ven más complicado de lo que realmente es. No obstante, también voy a dar información general sobre las plataformas existentes (al menos las más populares), por lo que el tema debería ser de utilidad para personas que lleven poco tiempo aquí y no sepan cual elegir. Sí acabas de empezar ¡Lee con atención!

Como pequeña nota, muchas de las plataformas que voy a comentar son muy amplias, pero voy a referirme siempre a ellas en los términos de desarrollo de fangames de Pokémon, ya que supongo que es lo que nos interesa aquí. Existe Rom Hacking más allá de Pokémon, y RPG Maker se puede usar para otras cosas.

Ah, y al final del post, he dejado a modo de 'glosario' varias palabras o expresiones que pueden ser desconocidas, sobretodo para gente que esté empezando.




Resumen de las plataformas disponibles
  • Rom Hacking: el Rom Hacking, como tal, consiste en la modificación de uno de los juegos oficiales. Estos juegos pueden pertenecer asimismo a diferentes plataformas (gbc, gba, nds, etc), siendo gba la más popular y la que voy a tener en cuenta aquí. Las modificaciones hechas sobre el Rom suelen llevarse a cabo utilizando herramientas existentes, o procesos de ingeniería inversa.
    Para obtener información sobre GBC y NDS ,por favor, pinchad en los enlaces correspondientes.
  • RPG Maker Essentials: RPG Maker es un programa pensado para el desarrollo de videojuegos RPG clásicos, y Pokémon Essentials una 'extensión' o 'base' del mismo pensada para el desarrollo de juegos de Pokémon.
  • PSDK(Pokemon Software Development Kit) : PSDK es similar a Pokémon Essentials, en el sentido de que está preparado para ser usado con RPG Maker. En este caso, se trata de un sistema con muchas mejoras respecto a Essentials (mucho mejor rendimiento, más funcionalidades, modificación mucho más sencilla...). Actualmente está en desarrollo y hay muchas cosas sin terminar, o con placeholders. (No lo consideraré aquí, porque no creo que esté listo para ser usado)
  • Decompilación: esta plataforma se asemeja al Rom Hacking tradicional, ya que se está modificando uno de los juegos creados por nintendo, pero en este caso no se modifica el ROM en sí, si no el código fuente, que esta "decompilado". Esto permite tener mucho más control sobre las cosas que se modifican y el contenido del propio juego, así como reducir los errores y que estos sean más fáciles de solucionar que en un Hack tradicional.
    Existen proyectos de decompilación de juegos de GBC y GBA. Podéis encontrarlos en distintos repositorios de github, bajo el usuario PRET (Pokemon Reverse Engineering Team).
Algunos ejemplos de proyectos de cada plataforma:






Comparación entre plataformas por favor, que no se prenda la wea
Ahora que conocéis cada una de las plataformas, os asaltará la siguiente duda ¿Cuál debería escoger yo? La respuesta, aunque algo obvia, es que depende de tus preferencias. Para ayudarte a elegir he preparado una tabla con las características que las diferencian:


*Nota: cuando una plataforma tiene una cruz y otra un tick, quiere decir que hay una diferencia notable entre ambas. Un doble tick o una doble cruz quiere decir que es "un poco" mejor o peor que aquella con una única cruz o tick.

Para aquellos que quieran una explicación un poco más detallada de cada uno de los apartados, abrid el spoiler correspondiente:
  • El rendimiento de GBA es bastante bueno (tanto RH, como decomp). Tiene un frame rate estable de 60 fps con vsync. No obstante, puede variar depender del emulador usado.
  • En RPG Maker Essentials, el rendimiento es bastante peor, el frame rate es más bajo y no es estable. Además, no cuenta con vsync, 'partiéndose' la pantalla constantemente (screen tearing). PSDK soluciona estos problemas.
  • Los juegos realizados en GBA, podrán ser ejecutados en cualquier plataforma que tenga un emulador de la consola. Esto viene a ser prácticamente cualquier sistema operativo y versión.
  • En cuanto a Essentials, la plataforma de ejecución serán únicamente equipos con SO Windows, aunque puede llegar a portearse a otras plataformas con bastante trabajo.
  • En Rom Hacking tradicional, cambiar los gráficos es un proceso pesado, que en muchos casos requiere de un proceso previo de ingeniería inversa (si se desconoce el lugar en el que se encuentra la imagen), así como es uso de varias herramientas externas. Modificar según que imagen, puede requerir conocimientos bastante técnicos.
  • En RPG Maker Essentials, la sustitución de imágenes es muy sencilla. Únicamente hay que buscar la imagen dentro de las carpetas de Essentials y sustituirla.
  • En Decomp, se agiliza mucho respecto al RH tradicional, siendo muy similar al que se realiza en Essentials. Se busca el fichero con la imagen y se sustituye.
  • Las limitaciones gráficas de GBA son bastante grandes. En primer lugar existe una limitación en la profundidad de color, que es RGB de 15 bits (32 768 posibles colores diferentes). Además, existe una fuerte limitación en cuanto a la cantidad de colores que pueden mostrarse a la vez por pantalla.
    GBA utiliza un sistema de paletas, generalmente de 16 colores (aunque pueden ir de 16 a 256), contando con 16 paletas para los sprites/objetos y 16 paletas para el background/tiles. Esto limita mucho los colores de los tiles y los sprites de nuestro juego, ya que un mismo tile o sprite, no podrá de tener más de 15 colores diferentes (el 16 es la transparencia).
    Por si todo esto fuese poco, el espacio de los tilesets es limitado (128x256 píxeles) y la cantidad de los mismos que pueden estar cargados al mismo tiempo también (máximo 2). Por este motivo, en muchas ocasiones se termina haciendo malabares con el tileset, en un intento de que entre todo lo deseado.
    Todo esto nos deja un apartado gráfico muy restringido, aunque no por ello, no se pueden hacer cosas bonitas, simplemente tendremos que asumir ciertas limitaciones.
  • En Essentials, tenemos mucha más libertad gráfica. Para empezar la profundidad de color es de 24 bit RGB (16 777 216 posibles colores), más transparencia. No existe ningún sistema de paletas, por lo que no hay limitación de colores en las imágenes. El tileset puede ser tan extenso como se necesite.

Este es, sin duda, el punto más negativo de utilizar GBA, ya sea en RH o el Decomp.
En todas las plataformas la edición de mapas es bastante similar, aunque hay algunas pequeñas diferencias.

  • En RH Tradicional, la edición de los mapas se realiza a través del A-Map, programa que tiene varios bugs (algunos bastante serios) y limitaciones, y que no puede ser arreglado al no ser código abierto. Es fácil corromper el ROM si se trabaja sin cuidado, perdiendo todo el trabajo hecho.
  • En Essentials, la edición se realiza a través del propio RPG Maker, y la herramienta funciona sin ningún problema serio.
  • En Decomp, se utiliza una herramienta externa de código abierto llamada PoryMap. Es bastante más cómodo de usar que el A-Map, tiene más funcionalidades y arregla los problemas de este último. Está en constante desarrollo, por lo que se añaden mejoras frecuentemente.
  • Es probablemente el gran problema de RH, la gran cantidad de herramientas disponibles. Muchas de ellas no son realmente necesarias (son herramientas muy específicas, cuya funcionalidad se puede ser llevada a cabo por una herramienta más amplia), pero aún así siguen siendo demasiadas.
    Además, la mayor parte de las herramientas de RH comparten un mismo problema; y es que son herramientas generalmente hechas por programadores aficionados, inexpertos o con muy poco tiempo, sin muchas pruebas, sin control de ningún tipo de excepciones y con muchos fallos, etc. En definitiva, problemas.
  • Con Essentials es mucho más sencillo. RPG Maker. Como mucho un editor de texto para el código (si lo deseas) y tu editor de imágenes favorito.
  • Decomp mejora mucho la situación respecto a RH. Necesitas un editor de texto decente (Notepad++, VCS...), las herramientas para compilar y el PoryMap.
A la hora de insertar nuevos sistemas todas las plataformas tienen el mismo problema. O el sistema ya esta hecho (en cuyo caso no voy a valorarlo, porque no debería ser muy complicado) o tienes que saber programar para hacer el nuevo sistema. Por lo que en mi opinión, a la hora de hacer esto lo importante es ¿Cómo de fácil es programar para esa plataforma? ¿Cómo de fácil es modificar el código?

  • En RH por resumirlo mucho, es una jodida mierda. Aquí no contamos con el código fuente, si no con el binario/hexadecimal. Lo más similar que podemos hacer es consultar las instrucciones del procesador, equivalentes a código de ensamblador (ASM), con un nivel de abstracción muy bajo y difíciles de entender.
    Modificar una función, por ejemplo del engine de combate, en RH sería muy pesado. De forma muy simple, sería algo como esto:
    Código:
    1. Encontrar la función en cuestión en el maremágnum de mierda con el debugger.
    2. Analizar el código de ensamblador y decidir como modificarlo.
    3. Escribir las modificaciones y el código ASM nuevo.
    4. Insertar el código y las modificaciones con HxD y rezar por no haberla cagado esta vez.
    5. Si es una de las veces que la cagas, repite todo el proceso.
    Se puede programar en C para un RH tradicional e insertar el sistema en el ROM, pero aún así tienes que hacer 'arreglos' (por no llamarlos putas chapuzas) en ASM/Hex.
  • En Essentials, el código está escrito en RUBY en distintos archivos. Esto debería ser motivo de celebración respecto a RH, lamentablemente el código de Essentials está mal estructurado, es muy desordenado y comete muchas malas prácticas. Modificar el código de Essentials, en ocasiones, no es tan fácil como debiera, pudiendo llevar una pequeña modificación varias horas.
    A esto hay que sumarle, que si bien la parte de Essentials es una capa modificable, la parte de RPG Maker XP como tal es una capa cerrada, que nos establecerá ciertas restricciones.
  • Este para mi es el punto más fuerte de Decomp. El código está escrito en C y está muy bien estructurado. Puede resultar un poco complejo al principio, pero una vez entiendes el patrón que sigue, es todo el rato lo mismo, y resulta muy fácil y rápido de modificar.
    Además de esto, en Decomp tienes acceso a todo el código del ROM, y siendo C el tipo de lenguage que es, tienes control total para hacer lo que sea con la Game Boy Advance. No hay nada que no puedas modificar de un proyecto de Decomp, puedes hacer absolutamente todo lo que te permita la GBA, sin limitaciones, más allá de las de la propia máquina.
Realmente, en ningún caso el juego es pesado para los estándares actuales.
  • En GBA, debido a las limitaciones de la consola, no puede pesar más de 32MB.
  • Un juego realizado en Essentials puede pesar desde unos 40MB a varios cientos, dependiendo del proyecto.
  • En RPG Maker, añadir nuevas canciones y efectos de sonido es tan sencillo como arrastrar un fichero de audio en una carpeta.
  • En Rom Hacking tradicional el proceso es bastante obtuso, las canciones deben de estar en un formato midi y debes de tener los samples de los instrumentos, así como configurarlos completamente. (Es una de las cosas más mierda que se pueden hacer en RH).
  • En Decomp, el sistema de audio funciona esencialmente igual que en RH tradicional (como que es el mismo, equisdé), pero el proceso es mucho más sencillo, más claro y más rápido.
Con esto, ya deberíais conocer lo básico de cada una de las plataformas, y vuestra elección debería ser más sencilla. Pero, ¡Esperad! No os vayáis aún, ahora toca el lavado de cerebro para convenceros de que uséis Decomp.


usa decomp usa decomp usa decomp es bueno lo quieres te gusta usa decomp usa decomp usa decomp no estas leyendo esto usa decomp usa decomp usa decomp es bueno te gusta


Decomp es demasiado complicado para mí....

Todos aquellos que pensáis que Decomp es muy complicado o que os da pereza usarlo. ¡Quietos ahí! Os voy a explicar por qué no es tan difícil y por qué no os debería dar pereza (sobretodo a los usuarios de RH).

¿Necesito saber programar para usar Decomp?
Hay mucha gente que piensa que programar es estrictamente necesario para usar Decomp. Yo diría que saber programar en Decomp es tan necesario como saber programar en RH o en Essentials. Lo necesitarás para añadir algunas mecánicas nuevas, pero para esto mismo tendrías que utilizar ASM en el caso de RH o Ruby en el caso de Essentials.

No necesitas saber programar para....
  • ... cambiar imágenes (minis, tiles, backgrounds) en Decomp, únicamente los mismo conceptos del RH tradicional (las paletas, indexado...).
  • ... mapear en Decomp, únicamente necesitas el PoryMap (Aún más sencillo que el A-Map).
  • ... para hacer scripts en Decomp, únicamente saber scriptear en Decomp, que es exactamente igual al RH tradicional.
  • ... para hacer trainers en Decomp, solo editar un fichero de texto.
En definitiva, para lo único que necesitarás saber programar en Decomp es para lo mismo que tendrías que hacer ediciones hexadecimales o ASM en el Rom Hacking tradicional. No sé vosotros, pero yo creo que es más comprensible cambiar "SPECIES_DELIBIRD" por "SPECIES_ZIGZAGOON", que cambiar en medio del Rom con HxD '00 E1' por '01 20' (sí, estas dos operaciones serían equivalentes).

Lo único que os puedo decir, es que le perdáis el miedo. Puede que os cueste al principio, hasta que sepáis como funciona 'eso de compilar', pero a la larga vais a ganar por todos lados.

Para mí, Decomp es simplemente mejor que el RH tradicional. No le recomendaría a nadie empezar un proyecto grande en RH hoy en día. Creo que Decomp es superior en todos los casos (salvo que tengas un proyecto a medio hacer en RH). El futuro del RH es Decomp. Al menos el único en el que no desaparece en favor de RPG Maker XP.

En cuanto a Decomp y Essentials, cada uno tiene sus cosas. La gente que quiera libertad gráfica escogerá Essentials, mientras que aquel que prefiera algo más de facilidad al programar, mejor estabilidad o simplemente quiera hacer un juego para gba, escogerá Decomp.

Espero que os haya servido, tanto a los que decidáis usar RPG Maker, como a los que decidáis usar Decomp. Ah sí, vosotros... los que vais a seguir usando RH a pesar de todo, que sepáis que os odio :3.




Palabrotas (Sí, es el glosario)
  • VSync: también llamado sincronización vertical, por no ponernos muy técnicos, evita que aparezcan cortes verticales en la pantalla al cambiar de fotograma, dando más fluidez a la imagen.
  • Screen Tearing: son los cortes verticales que ocurren en la pantalla cuando hay falta de sincronización vertical (VSync). Podéis verlo en este vídeo.
  • Frame-Skip: por diversos motivos, un juego puede llegar a saltarse fotogramas. Si esto ocurre con cierta frecuencia, podría disminuir la fluidez del juego.
 
Última edición:

Kaiser de Emperana

Called in hand
Me gusta el tema, bastante más actualizado.
Nomás hay algunos puntos donde creo que estás tirando un poco abajo a essentials en el versus con decompilación.
- Si bien es cierto que en decomp es mucho más sencillo que en rom hacking, pero en cuanto a facilidad para insertar gráficos, essentials le pega 20 patadas. Que sí, que los dos consisten en remplazar un archivo de una carpeta. Pero a essentials le tiras cualquier cosa y anda... En decomp, tiene que ser una imagen indexada... con la paleta ordenada...
- También te faltó comparar el remplazar los audios, que pasa lo mismo, decomp mejora mucho el rom hacking, pero essentials sigue siendo mucho más practico.

También en cuanto a la comparación de la programación estaría bien agregar que:
- En essentials, como el juego no corre en una plataforma del año del culo, se pueden implementar cosas que en gba son imposibles, como un sistema web. (Bueno, salvo que a alguien le pinte ponerse a editar un emulador de gba para agregarle extensiones a la consola...)
- En decomp se puede trabajar en equipo de forma muy fácil. Cosa que en gba es estúpidamente complicado. Y que RPG maker, de alguna forma, a pesar de estar escrito en un lenguaje de programación interpretado, logró conseguir que sea incluso más complicado que en rom hacking, donde tenemos un montón de monos escribiendo números en posiciones aleatorias.


-----------------------
También en el rom hacking vs decomp, cabe mencionar, que si bien como dijiste, no hace falta saber de programación; hay que tener en cuenta que cuando alguien hace un error tonto, como olvidarse de poner una coma, le van a aparecer errores como este:

Que pueden confundir un poco al principio, pero no se me parece a mi que es más entendible que una pantalla negra al correr el juego...
 

Samu

Usuario de Oro
Re: Respuesta: ¿Qué es Decomp?¿Qué plataforma debería escoger?

Me gusta el tema, bastante más actualizado.
Nomás hay algunos puntos donde creo que estás tirando un poco abajo a essentials en el versus con decompilación.
- Si bien es cierto que en decomp es mucho más sencillo que en rom hacking, pero en cuanto a facilidad para insertar gráficos, essentials le pega 20 patadas. Que sí, que los dos consisten en remplazar un archivo de una carpeta. Pero a essentials le tiras cualquier cosa y anda... En decomp, tiene que ser una imagen indexada... con la paleta ordenada...
- También te faltó comparar el remplazar los audios, que pasa lo mismo, decomp mejora mucho el rom hacking, pero essentials sigue siendo mucho más practico.

También en cuanto a la comparación de la programación estaría bien agregar que:
- En essentials, como el juego no corre en una plataforma del año del culo, se pueden implementar cosas que en gba son imposibles, como un sistema web. (Bueno, salvo que a alguien le pinte ponerse a editar un emulador de gba para agregarle extensiones a la consola...)
- En decomp se puede trabajar en equipo de forma muy fácil. Cosa que en gba es estúpidamente complicado. Y que RPG maker, de alguna forma, a pesar de estar escrito en un lenguaje de programación interpretado, logró conseguir que sea incluso más complicado que en rom hacking, donde tenemos un montón de monos escribiendo números en posiciones aleatorias.


-----------------------
También en el rom hacking vs decomp, cabe mencionar, que si bien como dijiste, no hace falta saber de programación; hay que tener en cuenta que cuando alguien hace un error tonto, como olvidarse de poner una coma, le van a aparecer errores como este:

Que pueden confundir un poco al principio, pero no se me parece a mi que es más entendible que una pantalla negra al correr el juego...

Ya te lo dije por privado, pero te lo digo también por aquí ya que supongo que es dónde debería quedarse xD.

El tema del audio se me olvidó por completo, siendo una de las cosas que más odio de gba (y más de uno lo sabrá). Cuando pueda actualizo la tabla con RH (tres X), Decomp (una X) y Essentials (un tick). No obstante, ya he añadido una comparación por escrito entre las plataformas.

Sobre la facilidad a la hora de añadir los gráficos, se me pasó ponerle el segundo tick a Essentials. Tampoco creo que haya una diferencia abismal, siendo que en indexar y guardarlo como .png tardas unos segundos. Además, esas limitaciones ya las tuve en cuenta en el apartado de limitaciones gráficas. En este otro apartado lo que quería hacer énfasis era en el tiempo que tardas en encontrar un gráfico para poder sustituirlo, más que otra cosa.

Y bueno, lógicamente con RPG se pueden desarrollar varias funcionalidades online que en GBA no. A no ser que algún buen samaritano modifique un emulador para eso.

El post ya está actualizado con los cambios, excepto la fila del sonido en la tabla.
 
Arriba