Lua scripting es una herramienta extremadamente útil cuando se está realizando un TAS. Aunque se requiere de cierto conocimiento de programación, el usuario tiene el poder sobre cosas como lo que se despliega en la pantalla, entradas y hasta memoria. Las siguientes son algunas aplicaciones comunes, aunque las posibilidades son infinitas:
Snes9x fue el primer emulador modificado para soportar Lua, allá en el 2008. En la actualidad, los siguientes emuladores soportan Lua: FCEU(X), BizHawk, lsnes, Snes9x, Gens, VBA, Final Burn Alpha, PCSX, DeSmuME, PCEjin, VBjin, and JPC-RR.
Para poder integrar Lua, se crearon una cantidad de funciones específicas al emulador, las cuales forman la API de Lua específicas al emulador, habilitando el control del emulador. Sin embargo, uno no está limitado sólo a funciones de Lua específicas al emulador. Cualquiera puede usar cualquier función principal de la API de Lua, incluyendo archivos E/S. Por lo tanto, el emulador puede ser escrito para comunicarse con, digamos, ¡Archivos de texto!

Como correr un script de Lua

Para correr un script de Lua, copia el código y colócalo en un editor de texto. Nombra al archivo como "archivo.lua" o cualquier cosa que termine con extensión "lua". Cuando salvas desde Bloc de Notas (Notepad) en Windows, necesitas poner comillas alrededor del nombre "archivo.lua".
Después ve al emulador y corre el archivo Lua. Algunos emuladores tienen una ventana de script de Lua; dicho script comenzará automáticamente cuando lo cargues.

Lo básico

Para familiarizarse con Lua, consulta el manual de Lua 5.1 (inglés). Cubre cómo funciona el lenguaje Lua y la API principal de Lua.
En el emulador, es deseable tener un bucle de ejecución principal. El bucle de ejecución principal puede tomar una de las siguientes dos formas (-- significa que el resto de la línea es un comentario):
--Insertar declaraciones aquí

while true do
  --Insertar declaraciones aquí
  emu.frameadvance()
end

y
--Insertar declaraciones aquí
function fn()
  --Insertar declaraciones aquí
end
gui.register(fn)
La segunda forma es técnicamente una función que es llamada cada vez que hay una actualización que mostrar (que se supone que pasa en cada cuadro, pero también es llamada en algunos emuladores[1] mientras la pantalla está en pausa). La segunda forma es necesaria para el DeSmuME ya que la primera forma funciona de manera diferente a la mayoría de los otros emuladores (consulte este tópico) para más información.

Usando MHS para emuladores que no cuentan con Lua embebido

Más información

Enlaces del sitio

Enlaces externos


[1]: Esto es conocido que ocurre en FCEUX, PCSX, and DeSmuME.
Expand/Collapse collapse-content-_5f173cce3a004653ac5523a3b6c0b3aa

ES/LuaScripting last edited by Darkman425 on 8/20/2023 4:39 PM
Page History Latest diff List referrers View Source