Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: GEOS Optimizasyonu  (Okunma Sayısı 4099 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ilkerficicilar
Uzman
*****
Mesaj Sayısı: 1.122


Üyelik Bilgileri WWW
« : 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...

Logged

http://cbm.ficicilar.name.tr/ - Commodore Hacking
Tesellum
Üye
***
Mesaj Sayısı: 111



Üyelik Bilgileri
« Yanıtla #1 : Mart 19, 2016, 02:04:03 ÖÖ »

Teşekkürler
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #2 : Mart 19, 2016, 10:43:37 ÖÖ »

Saygılar üstat.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: