Autore Topic: Scroll Scacchiera - 64 Byte  (Letto 2145 volte)

Freshness79

  • Utente
  • **
  • Post: 128
  • Gioco Preferito: Dizzy collection
Scroll Scacchiera - 64 Byte
« il: 09 Ottobre 2010, 23:10:51 »
 Tanto per continuare una vecchia serie di programmini che aveva fatto partire iAN...
Posto una scacchiera B/N che scrolla verso il basso.

Codice: [Seleziona]
; Scrolling Chessboard - 9/10/2010
; Sys 4096

*=$1000
sei  ; stop alle interruzioni
sta $d011; Schermo disabilitato
sync
ldx $d012
bne sync; Attendo blank per sincronizzare il video  
beq start;
swap
tay  ; 2  sposto l'accumulatore in Y
eor #$04; 2  inverto l'accumulatore
ldx #$20; 2 - 6 resetto il contatore
raster
sta $d020; 4  Scacchiera
sty $d020; 8  
sta $d020; 12
sty $d020; 16
sta $d020; 20
sty $d020; 24
sta $d020; 28
sty $d020; 32
sta $d020; 36
sty $d020; 40
sta $d020; 44
sty $d020; 48
sta $d020; 52
dex  ; 54
beq swap; 56/57+6 => 63 Cambio
nop  ; 58 wait
nop  ; 60 wait
bne raster; 63 Prossima linea

antoniomauro

  • Utente
  • **
  • Post: 91
  • Gioco Preferito: IK+
Scroll Scacchiera - 64 Byte
« Risposta #1 il: 11 Ottobre 2010, 14:59:14 »
 per farlo partire ho dovuto commentare

beq start;  

Freshness79

  • Utente
  • **
  • Post: 128
  • Gioco Preferito: Dizzy collection
Scroll Scacchiera - 64 Byte
« Risposta #2 il: 11 Ottobre 2010, 17:07:44 »
 A volte la fretta (di postare) é cattiva consigliera...!
Start serve a spostare il punto di partenza altrimenti ci si ritrova
con delle barre orizzontali a centro schermo.

Codice: [Seleziona]
; Scrolling Chessboard - 9/10/2010
; Sys 4096

*=$1000
sei ; stop alle interruzioni
sta $d011; Schermo disabilitato
sync
ldx $d012
bne sync; Attendo blank per sincronizzare il video  
beq start;
swap
tay ; 2  sposto l'accumulatore in Y
eor #$04; 2  inverto l'accumulatore
ldx #$20; 2 - 6 resetto il contatore
raster
sta $d020; 4  Scacchiera
start
sty $d020; 8  
sta $d020; 12
sty $d020; 16
sta $d020; 20
sty $d020; 24
sta $d020; 28
sty $d020; 32
sta $d020; 36
sty $d020; 40
sta $d020; 44
sty $d020; 48
sta $d020; 52
dex ; 54
beq swap; 56/57+6 => 63 Cambio
nop ; 58 wait
nop ; 60 wait
bne raster; 63 Prossima linea

antoniomauro

  • Utente
  • **
  • Post: 91
  • Gioco Preferito: IK+
Scroll Scacchiera - 64 Byte
« Risposta #3 il: 12 Ottobre 2010, 11:38:46 »
 sono veramente impressionato dall'inventiva di questi sorgenti!

MarC=ello

  • Utente
  • **
  • Post: 337
  • Gioco Preferito: CBM BASIC 2.0
Scroll Scacchiera - 64 Byte
« Risposta #4 il: 12 Ottobre 2010, 23:10:33 »
 Molto interessante davvero! Una scacchiera a schermo pieno in una manciata di byte!

Ho un dubbio. Io avrei messo una lda #$00 prima della sta $d011. Ai fini della visualizzazione della scacchiera è ridondante, sono d'accordo, ma se prima della SYS 4096 si effettua una POKE 780,16 non avviene il blanking del video. Aggiugendo quella lda, invece, a prescindere dal valore contenuto in 780 decimale il programma funziona comunque correttamente. Non vorrei dire un'inesattezza, sinceramente ho molta ruggine e comunque avevo conoscenze modeste dell'assembly, ma con questa modifica secondo me il programma è più robusto perché non risente del valore contenuto in 780, valore che ovviamente viene messo nell'accumulatore dall'istruzione SYS.

EDIT: però aggiungendo quell'istruzione si superano logicamente i 64 bytes...    
-=MarC=ellO=-

Freshness79

  • Utente
  • **
  • Post: 128
  • Gioco Preferito: Dizzy collection
Scroll Scacchiera - 64 Byte
« Risposta #5 il: 15 Ottobre 2010, 16:12:04 »
 L'osservazione é corretta ed in un programma di dimensioni normali non avrebbe alcun senso evitare di inizializzare.
Nel caso di 64 byte credo sia una "licenza poetica" accettabile. Nello specifico, comunque, era meglio semplicemente mettere uno stx $d011 dopo il bne sync.
Resta comunque il problema di non riuscire a sincronizzare perfettamente la videata al raster, con così pochi byte non saprei veramente come fare.

MarC=ello

  • Utente
  • **
  • Post: 337
  • Gioco Preferito: CBM BASIC 2.0
Scroll Scacchiera - 64 Byte
« Risposta #6 il: 15 Ottobre 2010, 16:19:35 »
Citazione da: "Freshness79"
L'osservazione é corretta ed in un programma di dimensioni normali non avrebbe alcun senso evitare di inizializzare.
Nel caso di 64 byte credo sia una "licenza poetica" accettabile. Nello specifico, comunque, era meglio semplicemente mettere uno stx $d011 dopo il bne sync.
Resta comunque il problema di non riuscire a sincronizzare perfettamente la videata al raster, con così pochi byte non saprei veramente come fare.
Certo, vista anche la ridottissima dimensione del programma hai fatto un capolavoro! Io sinceramente non so se sarei riuscito a fare quell'effetto anche con un programma più lungo in tutta onestà  ;)

 
-=MarC=ellO=-