commodore.gen.tr

Commodore => Commodore Yazılım => Konuyu başlatan: ilkerficicilar üzerinde Mart 18, 2016, 23:34:57 ÖS



Konu Başlığı: GEOS Optimizasyonu
Gönderen: ilkerficicilar üzerinde Mart 18, 2016, 23:34:57 ÖS
GEOS kaynak kodunu incelerken bazı pratik optimizasyon olanakları görünce yamadım birkaç yeri.

Bunlardan biri şu:

...
_Rectangle
        LDA r2L
        BNE Rect1
        LDA r2H
        CMP #$C7
        BNE Rect1
        LDA r3L
        BNE Rect1
        LDA r3H
        BNE Rect1
        JMP ClrScr
                +MoveB r2L, r11L
Rect1           LDA r11L
...

Bunu src/kernal/graph.tas içinde ilgili yere ekliyoruz.

Görünüşe göre çoğu GEOS programı ekranı silmek için ekranın sol üst köşesinden sağ alt köşesine dikdörtgen çiziyor. Bu yukarıdaki yama işte bu durumu yoklayıp, durum buysa ClrScr rutinine geçiyor. Silmek dediğimiz işlemse aslında şu tırtıklı (#$55 #$AA ...) arkaplan deseni ile kaplama işlemi.

Hazır elimiz değimişken ClrScr rutinini de açarak hızlandırabiliyoruz:

ClrScr
        LDY #$fa
        LDA #$55
CLRLP   STA $be45,Y
        STA $bd4b,Y
        STA $bc51,Y
        STA $bb57,Y
        STA $ba5d,Y
        STA $b963,Y
        STA $b869,Y
        STA $b76f,Y
        STA $b675,Y
        STA $b57b,Y
        STA $b481,Y
        STA $b387,Y
        STA $b28d,Y
        STA $b193,Y
        STA $b099,Y
        STA $af9f,Y
        STA $aea5,Y
        STA $adab,Y
        STA $acb1,Y
        STA $abb7,Y
        STA $aabd,Y
        STA $a9c3,Y
        STA $a8c9,Y
        STA $a7cf,Y
        STA $a6d5,Y
        STA $a5db,Y
        STA $a4e1,Y
        STA $a3e7,Y
        STA $a2ed,Y
        STA $a1f3,Y
        STA $a0f9,Y
        STA $9fff,Y
        DEY
        BEQ CLREND
        DEY
        BNE CLRLP
        LDY #$f9
        LDA #$aa
        BNE CLRLP
CLREND  RTS


Bu iki değişiklik dahi program açıp kapama işleminde fark edilir bir hızlanma yaratıyor.

İlgili GEOS kaynak kodu ise şurada: https://github.com/ytmytm/

Başka birkaç optimizasyon olanağı daha var aslında. Onlar da sonraya kaldı artık...



Konu Başlığı: Ynt: GEOS Optimizasyonu
Gönderen: Tesellum üzerinde Mart 19, 2016, 02:04:03 ÖÖ
Teşekkürler


Konu Başlığı: Ynt: GEOS Optimizasyonu
Gönderen: Simon (Özay Turay) üzerinde Mart 19, 2016, 10:43:37 ÖÖ
Saygılar üstat. :)