¡Actualización de PoryScript disponible!

Por Dark_Tyranitar el 14/05/2021
Poryscript, el programa utilizado para modificar los eventos en proyectos de Decompilación y Desensamblaje en ROMS de 3ra generación de Pokémon GBA (Fire Red, Ruby/Sapphire, Emerald) ha sido actualizado hace poco más de un mes y les traemos la actualización a Whack a hack, además de mostrar una funcionalidad que quizás es desconocida por muchos aun: Poryscript Playground.

Sitio en Github de Poryscript


Como varios saben ya, Poryscript es una herramienta que constituye un lenguaje de secuencias de comandos de alto nivel, simplificando la escritura de secuencias de comandos – definición que da el propio Huderlem para su herramienta –. El pasado 3 de abril del presente año se añadió la capacidad de agregar directivas personalizadas para el texto, lo que permite especificar que directiva de ensamblador usaremos para el texto que queramos. Solo se debe agregar la directiva como un prefijo al contenido de la string:

ascii"My ASCII string."
custom"My Custom string."

// compiles to...
.ascii "My ASCII string.\0"
.custom "My Custom string."


A modo de recordatorio (esta herramienta ya lleva unos años en línea) nombraré algunas de las funciones que ya venían previamente en Poryscript – más que nada para los entendidos en el lenguaje – a continuación:

  • Control de las ramas de flujo con if, elif, else, while, do…while, y switch declaraciones.

  • Texto en línea.

  • Formato automático del texto, para que quepa dentro del juego.

  • Mejor organización en la secuencia de comandos del mapa.


Entre otras funciones como comentar tus scripts (tal cual como otros lenguajes), modificadores de alcance, etc… que pueden ver revisando el archivo README pinchando aquí.

Quiero también dejar un pequeño ejemplo de las bondades de Poryscript, primero mostrando un ejemplo de script normal (Vanilla) y otro con Poryscript:

Vanilla:
LittlerootTown_RivalHouseSign::
    lockall
    checkplayergender
    compare VAR_RESULT, MALE
    goto_if_eq LittlerootTown_RivalHouseSign_Male
    msgbox LittlerootTown_RivalHouseSign_Text_BrendanHouse
LittlerootTown_RivalHouseSign_Exit:
    releaseall
    end

LittlerootTown_RivalHouseSign_Male:
    msgbox LittlerootTown_RivalHouseSign_Text_MayHouse
    goto LittlerootTown_RivalHouseSign_Exit

LittlerootTown_RivalHouseSign_Text_MayHouse:
    .string "It's MAY's house.$"

LittlerootTown_RivalHouseSign_Text_BrendanHouse:
    .string "It's BRENDAN's house.$"


Poryscript:
script LittlerootTown_RivalHouseSign {
    lockall
    checkplayergender
    if (var(VAR_RESULT) == MALE) {
        msgbox("It's MAY's house.")
    } else {
        msgbox("It's BRENDAN's house.")
    }
    releaseall
}


¿Notan la diferencia entre uno y otro? Ambos son el mismo evento, pero no hay donde perderse y con cual quedarse.

Dicho esto, me gustaría continuar con lo que es Poryscript Playground (Pincha aquí para ver de que hablo). Y tal como lo dice la misma palabra, este patio de juegos de los scripts es una herramienta online donde podemos comprobar en línea los scripts que queramos ejecutar, sin la necesidad de tener que compilar una ROM.

Poryscript Playground herramienta online de scripts


Aquí no tengo mucho que explicar, solo deben entrar y jugar, probando las funcionalidades de Poryscript sin la necesidad de compilar.

¿Ustedes ya la han probado? ¿Facilita la creación de guiones para implementarlos en tu ROM? ¿Qué cambios le harías?

Comentarios