[zxspectrum] Z88DK Sprite Pack + stranezza

  • From: "BODRATO Stefano" <Stefano.Bodrato@xxxxxxxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Fri, 11 Jun 2004 15:46:42 +0200

Sento la necessità di postare almeno 1 messaggio in-topic !

Ho finalmente trovato un'attimo di tempo per sbirciare nel codice che Alvin ha 
prodotto come estensione dello Z88DK per lo Spectrum, e devo dire che ci ho 
trovato diverse gemme...

- Il supporto per i cloni brasiliani con modalità grafica a 512 pixel
- Una routinetta di fill comprensiva di gestione dei pattern
- Funzioni per il calcolo dei pixel adiacenti a partire dalla locazione/bitmask 
attuale, che rendono le animazioni un po' più veloci.
- Compressione e decompressione Huffman
- gestione dei mouse o emulazione del mouse tramite tastiera e joystick
- Una serie di funzioni per la gestione della tastiera indipendenti da 
interrupt e ROM.

Sto tentando di rendere alcune funzioni multipiattaforma, come promesso al 
gruppo tempo fa, provando i port sulle calcolatrici texas, che hanno 
particolari limiti sullo stack.

Ho scoperto una mia grossa lacuna: per accelerare la lettura di un tasto, Alvin 
ha costruito una routine che pre-calcola un "codice del tasto", e poi usa 
questo codice per confrontare il contenuto della tastiera.
In pratica per controllare la pressione di "a", la funzioncina restituirà $FD 
per la codifica riga, e $01 per la maschera.  
Questi dovrebbero poter essere usati come segue:

   ld a,$fd
   in a,($fe)
   and $01
   jr z, a_is_pressed

...che senso ha ?
Come mai il valore preimpostato in A prima della IN dovrebbe influenzarne il 
risultato ?


Other related posts: