[zxspectrum] Re: un "videogioco" sprovvisto di sprite controller? ;-)

  • From: Roberto Montaruli <rmontaruli@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 4 Nov 2003 02:50:23 -0800 (PST)

--- Enrico Maria Giordano <e.m.giordano@xxxxxxxxxxxxxxx> wrote:
> 
> 
> "FALCO CESARE (BAM - 00541)" wrote:
> > 
> > > Penso che tutti noi, scoprendo per la prima volta l'assurda
> > > organizzazione del display file dello Spectrum, abbiamo sognato una
> > > pagina video più lineare. :-)
> > 
> > io no...   :^)
> > L'apparente illogicita' della disposizione dava pero' la possibilita'
> > di stampare molto velocemente un carattere in una cella di schermo
> > (basta incrementare il byte alto dell'indirizzo).
> 
> Sì, ma il tempo guadagnato lo perdevi abbondantemente per calcolare la
> posizione del primo byte.
> 

Mica vero. 
Lo schermo e' diviso in tre blocchi da 2K.
Che cominciano agli indirizzi 4000H, 4800H, 5000H

Se metti in DE le coordinate della cella 
0 <= E <= 1F# la colonna
0 <= D <= 17# la riga

Per ottenere l'indirizzo del primo byte della cella in HL fai

     LD  HL, 4000#  ; Inizio dell'area schermo
     LD   A, D      ; Prendi la riga
     AND 18#        ; Cosi' ottieni 0 per il primo terzo di schermo
                    ;               8 per il secondo terzo
                    ;              16 per il terzo.
     ADD  H, A      ; Adesso HL punta a 4000# o 4800# o 5000#

E la parte alta del puntatore e' sistemata.
Ora si tratta di calcolare la parte bassa del puntatore.

     LD  A, D
     AND 7#         ; La riga modulo 8
     SRL            ; x 2
     SRL            ; x 4
     SRL            ; x 8
     SRL            ; x 16
     SRL            ; x 32
     ADD A, E       ; Aggiungi la colonna
     LD  L, A       ; E ora in HL c'e' l'indirizzo del primo byte della cella.
     
 
Non mi pare difficile.
E forse si puo' ulteriormente migliorare quella moltiplicazione per 32.




=====
//
//   In a world without walls and fences
//     you would not need windows and gates. 
//                               (Confucio)
==
P'n'P: http://cnn.com/TECH/computing/9804/20/gates.comdex/index.html


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree

Other related posts: