De Whack a Hack Wiki!
Los Script permiten programar eventos de forma rápida y sencilla, haciendo uso de una lista de comandos pre-programados dentro del juego. En decompilación de GBA (ruby, firered y emerald) se tienen los siguientes comandos:
Lista de Comandos para Scripts
ID | Comando | Parámetros | Descripción | Plataforma |
---|---|---|---|---|
0x00 | nop | - | Comando vacío. No hace nada. | R-FR-E |
0x01 | nop1 | - | Comando vacío. No hace nada. | R-FR-E |
0x02 | end | - | Finaliza la ejecución del script. | R-FR-E |
0x03 | return | - | Vuelve a la línea siguiente al último comando 'call' ejecutado. | R-FR-E |
0x04 | call | [script] | Ejecuta el script pasado como argumento. Permite la vuelta mediante 'return' | R-FR-E |
0x05 | goto | [script] | Continua la ejecución en el script pasado como argumento | R-FR-E |
0x06 | goto_if | [condición] [script] | Continua la ejecución en el script pasado como argumento, siempre que se cumpla la condición. | R-FR-E |
0x07 | call_if | [condición] [script] | Similar a 'goto_if', pero permite la vuelta al script original usando 'return'. | R-FR-E |
0x08 | gotostd | [función standard] | Permite ejecutar una de las funciones standard del juego. Uso anecdótico. | R-FR-E |
0x09 | callstd | [función standard] | Similar a 'gotostd', pero permite volver desde un 'return'. Uso anecdótico. | R-FR-E |
0x0A | gotostd_if | [condicion] [función standard] | Ejecuta una de las funciones standard, siempre que se cumpla la condición. Uso anecdótico. | R-FR-E |
0x0B | callstd_if | [condición] [función standard] | Similar a gotostd_if, pero permite volver desde un 'return'. Uso anecdótico. | R-FR-E |
0x0C | returnram | - | Ejecuta el script cuyo puntero esté almacenado dinámicamente en gUnknown_020375C0. Uso anecdótico. | E |
0x0C | gotoram | - | Es igual a returnram, pero en pokefirered y pokeruby. | R-FR |
0x0D | killscript | - | Finaliza la ejecución del script reseteando completamente la RAM de scripts. | R-FR-E |
0x0E | setmysteryeventstatus | [estado] | Modifica un valor relacionado con el evento misterioso. Utilizado únicamente en Ruby, y como herramienta de Debug. | R-FR-E |
0x0F | loadword | [buffer_id] [2 bytes] | Almacena un valor de 2 bytes (u16) en el buffer de scripts especificado | R-FR-E |
0x10 | loadbyte | [buffer_id] [byte] | Almacena un valor de 1 byte (u8) en el buffer de scripts especificado. | R-FR-E |
0x11 | writebytetoaddr | [byte] [dirección RAM] | Almacena un valor de 1 byte (u8) en la dirección RAM especificada. | R-FR-E |
0x12 | loadbytefromaddr | [buffer_id] [dirección RAM] | Almacena en el buffer seleccionado el valor contenido en la dirección RAM especificada (1 byte). | R-FR-E |
0x13 | setptrbyte | [buffer_id] [dirección RAM] | Almacena en la dirección RAM especificada el valor (1 byte) del buffer seleccionado. | R-FR-E |
0x14 | copylocal | [buffer_id destino] [buffer_id origen] | Copia el valor del buffer seleccionado como origen en el buffer seleccionado como destino. | R-FR-E |
0x15 | copybyte | [RAM destino] [RAM origen] | Copia el valor (1 byte) de la dirección RAM marcada como origen en la dirección RAM de destino. | R-FR-E |
0x16 | setvar | [var_id] [valor] | Establece el valor indicado para la variable seleccionada. | R-FR-E |
0x17 | addvar | [var_id] [valor] | Añade el valor indicado al valor actual de la variable seleccionada. | R-FR-E |
0x18 | subvar | [var_id] [valor] | Resta el valor indicado al valor actual de la variable seleccionada. | R-FR-E |
0x19 | copyvar | [var_id destino] [var_id origen] | Copia el valor de la variable origen en la variable destino. | R-FR-E |
0x1A | setorcopyvar | [var_id destino] [origen] | Si el origen es una variable, actuará como 'copyvar'. En caso contrario será como 'setvar'. | R-FR-E |
0x1B | compare_local_to_local | [buffer_id1] [buffer_id2] | Compara el valor de dos buffers de scripts. | R-FR-E |
0x1C | compare_local_to_value | [buffer_id] [byte] | Compara el valor de un buffer con el valor indicado. | R-FR-E |
0x1D | compare_local_to_addr | [buffer_id] [dirección RAM] | Compara el valor de un buffer con el valor almacenado en la dirección RAM indicada. | R-FR-E |
0x1E | compare_addr_to_local | [dirección RAM] [buffer_id] | Compara el valor almacenado en una dirección RAM con el valor del buffer indicado. | R-FR-E |
0x1F | compare_addr_to_value | [dirección RAM] [byte] | Compara el valor almacenado en una dirección RAM con el valor indicado. | R-FR-E |
0x20 | compare_addr_to_addr | [dirección RAM 1] [dirección RAM 2] | Compara el valor almacenado en una dirección RAM con el de otra dirección RAM. | R-FR-E |
0x21 | compare_var_to_value | [var_id] [byte] | Compara el valor de una variable con el valor indicado. | R-FR-E |
0x22 | compare_var_to_var | [var_id1] [var_id2] | Compara el valor de una variable con el de otra variable. | R-FR-E |
0x23 | callnative | [función] | Ejecuta una función nativa en C/ASM, continua con la ejecución del script al terminar la función. | R-FR-E |
0x24 | gotonative | [función] | Ejecuta una función nativa en C/ASM, termina la ejecución del script. | R-FR-E |
0x25 | special | [special_id] | Ejecuta la función special indicada. | R-FR-E |
0x26 | specialvar | [var_id] [special_id] | Ejecuta la función special indicada. Si la función devuelve algún valor, lo almacena en la variable especificada. | R-FR-E |
0x27 | waitstate | - | Bloquea la ejecución del escript hasta que una función nativa o una función special lo desbloqueen explícitamente. | R-FR-E |
0x28 | delay | [cantidad (4 bytes)] | Pausa la ejecución del script durante el número indicado de ciclos (~60 ciclos/s) | R-FR-E |
0x29 | setflag | [flag_id] | Establece el valor del flag indicado en 1 (activado). | R-FR-E |
0x2A | clearflag | [flag_id] | Establece el valor del flag indicado en 0 (desactivado). | R-FR-E |
0x2B | checkflag | [flag_id] | Comprueba el valor del flag indicado. | R-FR-E |
0x2C | initclock | [hora] [minuto] | Inicializa el reloj local del juego en la hora y el minuto marcados. | R-E |
0x2D | dotimebasedevents | - | Ejecuta los eventos diarios. | R-E |
0x2E | gettime | - | Escribe en las variables 0x8000, 0x8001 y 0x8002 el tiempo del reloj en horas, minutos y segundos. | R-E |
0x2F | playse | [sonido_id] | Reproduce el sonido indicado. Solo uno de forma simultánea. | R-FR-E |
0x30 | waitse | - | Pausa la ejecución del script hasta que termina la reproducción del efecto sonoro. | R-FR-E |
0x31 | playfanfare | [melodía_id] | Reproduce la melodía indicada. | R-FR-E |
0x32 | waitfanfare | - | Detiene la ejecución del script hasta que finaliza la melodía. | R-FR-E |
0x33 | playbgm | [canción_id] [0x00] | Reproduce la canción indicada. Segundo parámetro desconocido, siempre es 0x00. | R-FR-E |
0x34 | savebgm | [canción_id] | Guarda el id de la canción indicada para reproducirla más tarde. | R-FR-E |
0x35 | fadedefaultbgm | - | Desvanece la canción que se reproduce actualmente hasta la canción por defecto del mapa. | R-FR-E |
0x36 | fadenewbgm | [canción_id] | Desvanece la canción que se reproduce actualmente hasta la canción indicada. | R-FR-E |
0x37 | fadeoutbgm | [velocidad] | Desvanece la canción que se reproduce hasta que desaparece. | R-FR-E |
0x38 | fadeinbgm | [velocidad] | Hace sonar gradualmente la canción que se reproduce actualmente (desde mute a volúmen completo) | R-FR-E |
0x39 | warp | [mapa] [warp_id] [pos_x] [pos_y] | Transporta al jugador al mapa y warp escogidos. Si el warp_id es 0xFF, el jugador será transportado a las coordenadas X e Y dadas. | R-FR-E |
0x3A | warpsilent | [mapa] [warp_id] [pos_x] [pos_y] | Exactamente igual a warp. No aplica el sonido del warp. | R-FR-E |
0x3B | warpdoor | [mapa] [warp_id] [pos_x] [pos_y] | Exactamente igual a warp. Reproduce el sonido y la animación de una puerta. | R-FR-E |
0x3C | warphole | [mapa] | Teletransporta al jugador al mapa indicado con la animación de un agujero. | R-FR-E |
0x3D | warpteleport | [mapa] [warp_id] [pos_x] [pos_y] | Exactamente igual a warp. Aplica una animación de teletransporte. | R-FR-E |
0x3E | setwarp | [mapa] [warp_id] [pos_x] [pos_y] | Guarda un destino de teletransporte para ser usado más tarde. | R-FR-E |
0x3F | setdynamicwarp | [mapa] [warp_id] [pos_x] [pos_y] | Establece el destino del warp dinámico del mapa. (Para hacer un warp dinámico, este debe ir al warp 127 del mapa 127.127). | R-FR-E |
0x40 | setdivewarp | [mapa] [warp_id] [pos_x] [pos_y] | Establece el lugar de salida del buceo. | R-FR-E |
0x41 | setholewarp | [mapa] [warp_id] [pos_x] [pos_y] | Establece el destino del jugador cuando sufra un 'warphole'. | R-FR-E |
0x42 | getplayerxy | [variable_id1] [variable_id2] | Guarda en las variables indicadas las posiciones X e Y del jugador dentro del mapa actual. | R-FR-E |
0x43 | getpartysize | - | Guarda el número de Pokémon en el equipo del jugador en la variable 0x800D (LASTRESULT). | R-FR-E |
0x44 | giveitem | [item_id] [cantidad] | Intenta añadir la cantidad del objeto indicado a la mochila. Si lo consigue LASTRESULT será 1, en caso contrario LASTRESULT será 0. | R-FR-E |
0x45 | takeitem | [item_id] [cantidad] | Elimina la cantidad del objeto indicado de la mochila del jugador. | R-FR-E |
0x46 | checkitemspace | [item_id] [cantidad] | Comprueba si hay espacio suficiente en la mochila para los objetos indicados. Si hay espacio (LASTRESULT = 1), si no lo hay (LASTRESULT = 0) | R-FR-E |
0x47 | checkitem | [item_id] [cantidad] | Comprueba si en la mochila hay la cantidad indicada (o más) del objeto escogido. En caso afirmativo (LASTRESULT = 1), si no (LASTRESULT = 0) | R-FR-E |
0x48 | checkitemtype | [item_id] | Almacena el tipo de objeto (curativo, ball, etc) del objeto indicado en LASTRESULT. Es usado internamente al dar objetos con 'callstd Std_ObtainItem' | R-FR-E |
0x49 | givepcitem | [item_id] [cantidad] | Almacena en el pc la cantidad y el objeto indicados. En este caso los parámetros pueden ser variables. | R-FR-E |
0x4A | checkpcitem | [item_id] [cantidad] | Similar a 'checkitem', pero hace las comprobaciones dentro del pc en lugar de en la mochila. | R-FR-E |
0x4B | givedecoration | [decoración_id] | Añade el objeto decorativo indicado al pc del jugador. | R-E |
0x4C | takedecoration | [decoración_id] | Elimina el objeto decorativo indicado del pc del jugador. | R-E |
0x4D | checkdecor | [decoración_id] | Comprueba si el jugador posee el objeto decorativo indicado. | R-E |
0x4E | checkdecorspace | - | Comprueba si el jugador posee espacio suficiente en el pc para más objetos decorativos. En caso afirmativo (LASTRESULT = 1), si no (LASTRESULT = 0). | R-E |
0x4F | applymovement | [objeto_id] [movimientos] | Aplica los movimientos indicados en el objeto (overworld) deseado. | R-FR-E |
0xFF | R-FR-E |
Funciones Standard
Las funciones standard, son una serie de funcionalidades básicas utilizadas por los scripts de los juegos de tercera generación. En total son 11, y están contenidos dentro de gStdScripts en "./data/event_scripts.s".
Función Standard | Descripción |
---|---|
Std_ObtainItem | Mensaje de texto por defecto la obtener un objeto. |
Std_FindItem | Mensaje de texto por defecto al encontrar un objeto. |
Std_MsgboxNPC | Cuadro de texto mostrado al hablar con un npc. |
Std_MsgboxSign | Cuadro de texto mostrado al hablar con un poste. |
Std_MsgboxDefault | Cuadro de texto mostrado por defecto. |
Std_MsgboxYesNo | Cuadro de texto con opciones "Sí/No" |
Std_MsgboxAutoclose | Cuadro de texto que se cierra automáticamente |
Std_ObtainDecoration | Mensaje de texto mostrado por defecto al obtener una decoración de la base secreta. |
Std_RegisteredInMatchCall | Mensaje de texto mostrado por defecto al registrar alguien en el pokenav (solo ruby y emerald) |
Std_MsgboxGetPoints | Mensaje por defecto mostrado al recibir puntos de la torre batalla. |
Std_10 | Mensaje relacionado con el Pokenav. |
Funciones Special
Las funciones special, son una serie de "funciones especiales" que pueden ser llamadas en los scripts. Existen cerca de 500 special diferentes, contenidos en gSpecials, situado en './data/specials.inc'. Las funciones son diferentes dependiendo de la plataforma.