CsaboLOD Creative Commons License 2002.09.12 0 0 552
Tyűha Maugli, felejtesz. A kódod könnyen optimalizálható. Először is az $FF1D-vel az a baj, hogy azokban a sorokban ahol nem kell a szöveget újra kitenni, ott ugyanabban a sorban befejezi a ciklust, és megint megy $FF1D-t vizsgálni. Helyesen:

LDA #$
(1) CMP $FF1D
BNE (1)
(2) CMP $FF1D
BEQ (2)

Ez pontosan időzíti az adott sorhoz. Ezzel máris megspóroltunk 2 byteot. Az utolsó JMP $2001 pazarlás. Egy BPL $2001 is megteszi, mivel A soha nem lesz negatív (-1 byte). A szöveget pakoló ciklus mehet visszafele is (LDX #$27, DEX, BPL) ezzel megspóroljuk a CMP-t. (-2 byte)

Na a többit csak röviden: ha már tényleg optimalizálunk, és nem kell más ebbe a demoba, akkor nem kell változó, elég az FF07-et olvasni. Jobb a $20-adik sor helyett a $27 (mivel ez már X ben van), és azt hogy mikor kell szöveget copyzni... Cseppet szép... Na lássátok:


......SEI
start LDX #$27
wait1 CPX $FF1D
..... BNE wait1
wait2 CPX $FF1D
..... BEQ wait2
..... LDY $FF07
..... BNE skipp
addrs LDA $2100,x
..... STA $0C00,x
..... DEX
..... BPL addrs
..... INC addrs+1
skipp DEY
..... TYA
..... AND #$07
..... STA $FF07
..... BPL start

Na, remélem normálisan fog kinézni. 39 byte (56 helyett). Máskor írd ki a $-t a hexa számok elé. Ezt próbálja valaki optimalizálni. Na jó, mondjuk én vagy 2 hónapja csak plusin programozok, nyomorgatom be az 1K-s játékaimat. Olyanokat optimalizáltam, hogy csak na... Remélem lesz meglepi, mikor kijönnek.

Előzmény: MaugliEDC (550)