Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: OKI09 en 10 de Septiembre de 2008, 08:06:31 am



Título: Pulsacion de teclas
Publicado por: OKI09 en 10 de Septiembre de 2008, 08:06:31 am
Hola a todos.

Que metodo usais vosotros en la pulsacion de teclas, para que la rutina solo
se ejecute una vez. (el ASM es tan rapido que se ejecuta la rutina 20 0 30 veces con una pulsacion de tecla) ???

Gracias.


Título: Re: Pulsacion de teclas
Publicado por: Dioniso en 10 de Septiembre de 2008, 09:16:06 am
   Si se trata de ESPACIO, por ejemplo, disparas, otro ejemplo, y enciendes una variable o un bit. Tras el siguiente HALT lees esa variable o bit y si está encendido no vuelvas a ejecutar ESPACIO (disparo) porque aún está siendo pulsado.

   Si tras un HALT pasas la rutina de detección de pulsado de teclas (es decir, ninguna ha sido pulsada), reseteas esa variable o bit. Y todo vuelva a comenzar.

   Esto es sólo una posibilidad.


Título: Re: Pulsacion de teclas
Publicado por: jltursan en 10 de Septiembre de 2008, 09:41:17 am
También podrías tener un problema de ubicación de la rutina. Si dices que "el ASM es demasiado rápido" posiblemente podría tratarse de que estás leyendo el teclado fuera de todo control de velocidad. Normalmente en un juego tendrás un bucle de juego sincronizado (más o menos) con el VDP usando, por ejemplo, un halt. La lectura de teclado o joystick la deberías hacer ahí; con eso y el método que te comenta Dioniso para evitar la autorepetición lo deberías tener todo solucionado.


Título: Re: Pulsacion de teclas
Publicado por: OKI09 en 10 de Septiembre de 2008, 11:33:15 am
OK,OK. ;D

Es logica la solucion de Dioniso (Ya me estaba complicando la vida con un contador y que hasta que no llegara a cierto valor no te dejara pulsar de nuevo) y mucho mas sencilla de lo que yo habia pensado.

Citar
Si dices que "el ASM es demasiado rápido" posiblemente podría tratarse de que estás leyendo el teclado fuera de todo control de velocidad
La deteccion de teclas la estoy haciendo dentro del bucle principal, con su retardo correspondiente (HALT) y con las demas subrutinas que hay que ejecutar, pero como os he dicho es tan rapido que me ejecuta la rutina varias veces.

Gracias, estoy seguro de que con estos consejos voy a solucionar el tema. :D