De Whack a Hack Wiki!

Revisión del 04:17 14 dic 2019 de Samu (discusión | contribuciones) (Añadidos más comandos)

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.