terça-feira, 17 de dezembro de 2013

Keyboard QAOP

Esta sub-rotina é outro subproduto do This is Tritone, faz a leitura das famosas teclas Q, A, O e P empregadas em muitos jogos.


Nas versões preliminares do demo somente os joysticks eram lidos mas o nix/.site tinha sugerido colocar esta combinação de teclas para movimentar o cursor, mais o tiro na tecla de espaço. Fiz isso mesmo, mas as teclas são lidas mais amplamente:
  • para cima, as teclas Q, W, E, R e T; 
  • para baixo, as teclas A, S, D, E e F;
  • para esquerda, U, O, J e L;
  • para direita, Y, I, P, H, K e Enter; 
  • para tiro, todas as teclas da fileira inferior (Caps-shift, Z, X, C, V, B, N, M, Symbol-shift e Space). 
Keyboard QAOP é uma sub-rotina em assembly para ser incluído em um programa através da diretiva: INCLUDE "Kbd_QAOP.asm". Pode ser chamada através do rótulo Kbd_QAOP (por exemplo, CALL Kbd_QAOP). Para sua utilização, não se deve esquecer de incluir no programa principal, o arquivo cabeçalho INCLUDE "Header_Keyboard.asm".

A sub-rotina faz a leitura dos joysticks Kempston, Sinclair 1 (TK90X) e Sinclair 2. Caso haja algum comando válido do joystick o flag Z será abaixado e o resultado será retornado no registrador A, cujo conteúdo é:  
  • bit 0 = 1 se tiro acionado; 
  • bit 1 = 1 se para cima acionado;
  • bit 2 = 1 se para baixo acionado;
  • bit 3 = 1 se para direita acionado;
  • bit 4 = 1 se para esquerda acionado;
  • bits 5 a 7 = 0.
O valor tem exatamente o mesmo significado de Read Joystick, portanto ambas as rotinas podem ser usadas de forma combinada:

   CALL ReadJoystick  ; Faz leitura dos joysticks.
   LD H,A             ; Guarda resultado em H.
   CALL Kbd_QAOP      ; Faz leitura do teclado.
   OR H               ; Combina as duas leituras e guarda em A.

Foi exatamente o que fiz no This is Tritone.

Para baixar a fonte da sub-rotina, clique neste link.

Nenhum comentário:

Postar um comentário

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.