Ma come, non c'e' ancora una routine di visualizzazione di files KoalaPaint sul forum?
Eccola:
;---------------------------------
;Koalaview by iAN CooG/HokutoForce
;C64ASM version
;---------------------------------
scrpos = $7f40
scr = $5c00
colpos = $8328
col = $d800
bkgcol = $8710
;---------------------------------
;sysline
;---------------------------------
*= $0801
.word eop
.word 7102
.byte $9e
.byte $32,$30,$36,$31,$00
eop
.word 0
;---------------------------------
;to avoid unnecessary waste of mem
;stick the routine just after
;the koalapic, comment the above
;sysline and set *= $8711 instead
;---------------------------------
;*= $8711
sei
lda #$00
sta $d011
sta $d020
ldx #$00
copy
lda scrpos ,x
sta scr ,x
lda scrpos+$100,x
sta scr +$100,x
lda scrpos+$200,x
sta scr +$200,x
lda scrpos+$300,x
sta scr +$300,x
lda colpos ,x
sta col ,x
lda colpos+$100,x
sta col +$100,x
lda colpos+$200,x
sta col +$200,x
lda colpos+$300,x
sta col +$300,x
dex
bne copy
lda bkgcol
sta $d021
lda #$2e
sta $d012
lda #$78
sta $d018
lda #$02
sta $dd00
lda #$d8
sta $d016
lda #$3b
sta $d011
kmain
;wait for any fire/space
lda $dc01
and $dc00
and #$10
bne kmain
cli
;remove the space from buffer, if any
;cyclewaste, to wait $C6
beq *+2
sta $c6
jsr $fda3
jsr $e5a0
lda $0286
ldx #$00
cram
sta col ,x
sta col+$0100 ,x
sta col+$0200 ,x
sta col+$0300 ,x
dex
bne cram
rts
*= $6000
.incbin nomefile.KOA
Con la sysline si viene a creare un file di 32Kb (129blocchi!) e inutilmente, dato che il codice e' meno di 150 byte, e l'immagine di 10001 bytes. Pero' ai fini di una prova veloce puo' andare.
Rinunciando alla sysline invece si ottiene un file grande 10149 (rimane di 40 blocchi come un immagine koala), lo stretto necessario.
Inutile dire che occorre sempre compattare i files, per ottenere la minima occupazione.
Edit: ridotta all'osso la pulizia del buffer in caso di pressione di spazio/fire 1; dopo un attenta osservazione con il debugger mi sono accorto che e' sufficiente perdere qualche ciclo (con una beq *-2) affinche' le routine del kernal riempiano $c6 con il valore 1... e solo a quel punto vale la pena azzerarlo.