@axel jose guerra, yo te voy a decir lo que quieres oír: Se puede hacer ahora mismo perfectamente con scripting.
Yo lo he utilizado alguna que otra vez. Para mi a estas alturas me parece algo sencillo, pero a lo mejor si eres algo nuevo te puede rayar un poco.
El comando "comparefarbytetobyte 0xOffset 0xByte" se utiliza para mirar en un offset concreto de la RAM qué byte contiene.
Si utilizas el Offset 0x4000130 podrás saber qué tecla está pulsando el jugador en ese preciso momento.
El Byte que quieras mirar en este caso depende de qué tecla quieres que pulse el jugador.
Aquí te dejo una lista:
Arriba: 0xBF
Abajo: 0x7F
Izquierda: 0xDF
Derecha: 0xEF
A: 0xFE
B: 0xFD
Select: 0xF7
Start: 0xFB
En tu caso, por ejemplo, quieres utilizar las teclas izquierda y derecha por lo que deberas utilizar los comandos comparefarbytetobyte 0x4000130 0xDF y comparefarbytetobyte 0x4000130 0xEF.
¿Cómo funcionan?
Este script comprueba en un segundo si ese offset cumple con esa condición, al igual que un compare, por lo tanto, al hacerlo tan rápido, el script se terminaría antes de darle tiempo al jugador a hacer nada, por lo que este script debe utilizarse en bucle. Así te aseguras de que se vaya a leer el botón:
Código:
#org @comparar
comparefarbytetobyte 0x4000130 0xDF
if 0x1 goto @izquierda
comparefarbytetobyte 0x4000130 0xEF
if 0x1 goto @derecha
goto @comparar
#org @izquierda
etc
#org @derecha
etc
Ya tienes hecho la parte del script en la que compruebas qué botón se va a pulsar. Sin embargo, si quieres mostrar un mensaje al mismo tiempo no puedes usar un msg normal, pues este se iría y no se podrían hacer ambas cosas a la vez.
Por ello, hay que hacer un "preparemsg" júntandolo con "waitmsg". Este comando funciona igual que un msgbox normal, solo que mantiene en pantalla hasta que pongas un "closeonkeypress".
Sumando todo esto, tu script quedaría algo así:
Código:
#dynamic 0x800000
#org @inicio
preparemsg @texto
waitmsg
goto @comparar
#org @comparar
comparefarbytetobyte 0x4000130 0xDF
if 0x1 goto @izquierda
comparefarbytetobyte 0x4000130 0xEF
if 0x1 goto @derecha
goto @comparar
#org @izquierda
closeonkeypress
etc
#org @derecha
closeonkeypress
etc
Sé que funciona porque yo ya lo he prbado, (y tengo pensado utilizado en el reto contra
@Metal Kaktus). Por lo que si tienes alguna duda preguntame.
PD: El único fallo que le he visto es que las animaciones de los tiles se detienen hasta que pulsas alguna de las teclas, pero se podría disimular sin poner tiles con animación en esa parte concreta del mapa o poniendo un fadescreen hasta que el jugador decida
