|
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. :)
|