Browse Source

Outputting nametable

main
Devine Lu Linvega 4 years ago
parent
commit
6762c53055
  1. 50
      etc/nametable.tal

50
etc/nametable.tal

@ -48,50 +48,76 @@ BRK
BRK
&nmt-ext ".nmt $1
&out-ext ".out $1
&out-ext ".out.chr $1
@parse-chr ( file* -- )
DUP2 ;print-str JSR2 #0a18 DEO
.File1/name DEO2
#0010 .File1/length DEO2
#0002 .File2/length DEO2
&stream
;buf .File1/read DEO2
;buf ;add-tile JSR2 ,&b STR2
;&b .File2/write DEO2
( save addr )
#0002 .File2/length DEO2
;buf ;add-tile JSR2 ,&addr STR2
;&addr .File2/write DEO2
( save color )
#0001 .File2/length DEO2
;&color .File2/write DEO2
.id LDZ2k INC2 ROT STZ2
.File1/success DEI2 ORA ,&stream JCN
JMP2r
&b $2
&addr $2
&color 81
@add-tile ( tile* -- addr* )
.id LDZ2 ;print JSR2 LIT ': #18 DEO #2018 DEO
DUP2 ;print-tile JSR2
( append )
DUP2 ;tile-exists JSR2 DUP2 #ffff EQU2 ,&create JCN
NIP2
;&spacer ;print-str JSR2
DUP2 ;print JSR2 #0a18 DEO
JMP2r
&create
POP2
( create )
.length LDZ2 STH2k ;spritesheet ADD2 #0010 ;mcpy JSR2
STH2kr #0010 ADD2 .length STZ2
;&spacer ;print-str JSR2
;&created ;print-str JSR2
STH2kr ;print JSR2 #0a18 DEO
;&spacer ;print-str JSR2 ;&created ;print-str JSR2 STH2kr ;print JSR2 #0a18 DEO
STH2r
JMP2r
&created "(!) $1
&spacer "-> 20 $1
@tile-exists ( tile* -- tile* )
,&target STR2
.length LDZ2 #0000
&loop
DUP2 ;spritesheet ADD2 [ LIT2 &target $2 ] ;tile-equal JSR2 #00 EQU ,&continue JCN
NIP2 JMP2r
&continue
INC2 GTH2k ,&loop JCN
POP2 POP2
#ffff
JMP2r
@tile-equal ( a* b* -- flag )
,&a STR2
,&b STR2
#1000
&loop
#00 OVR [ LIT2 &a $2 ] ADD2 LDA
#00 OVR [ LIT2 &b $2 ] ADD2 LDA
#00 OVR
DUP2 [ LIT2 &a $2 ] ADD2 LDA
ROT ROT [ LIT2 &b $2 ] ADD2 LDA
EQU ,&continue JCN
POP2 #00 JMP2r
&continue

Loading…
Cancel
Save