commodore.gen.tr

Commodore => Commodore Yazılım => Konuyu başlatan: wizofwor üzerinde Kasım 28, 2014, 21:59:49 ÖS



Konu Başlığı: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Kasım 28, 2014, 21:59:49 ÖS
Demo/intro efektlerin devam. Bu seferki hedefim yine introların olmazsa olmazı salanan logo (logo swing) efekti. Tabi bunun için önce bir logo lazım. Elimde hazır bir şey olmadığından CSDB'de kısa bir araştırmadan sonra bulduğum Marq's PETSCII Editor (http://csdb.dk/release/?id=122086)'ü kullanarak uyduruktan bir şeyler karaladım. Program çizimleri c kaynak kodu olarak kaydediyor ama içindeki data aynı data. PETSCII'yi tercih etmemin nedeni şu aşamada bir de karakter seti değiştirmekle uğraşmamak. İşi basit tutmak için renklerle de uğraşmayacağım.

Kod:
ogo	!by 32,32,85,64,73,85,64,64,73,85,64,73,85,64,64,64,64,64,73,85,64,73,85,64,64,73,85,64,73,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,194,194,224,224,194,194,224,194,194,224,224,224,224,224,194,194,224,194,194,224,224,194,194,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,202,192,192,206,224,206,203,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,224,224,206,224,206,224,224,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,202,203,213,201,202,203,206,194,213,206,224,224,237,192,201,194,206,202,203,213,201,202,203,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,224,224,194,194,224,224,224,194,194,224,224,224,224,224,194,194,224,224,224,194,194,224,224,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,74,64,64,64,75,74,64,64,64,75,74,64,64,64,64,64,75,74,64,64,64,75,74,64,64,64,75,32,32,32,32,32,32,32,32,32,32,32,32

Daha önce ekrana yazı yazmak için kullandığım kodun aynısını bu kez logo için kullanacağım.

Kod:
!to "build/logoswing.prg",cbm
!src "standart.asm"

;----------------------------------------
;CONSTANTS
;----------------------------------------

SCREEN_RAM = $0400


+BASIC_START

;-----------------------------------------
; MAIN
;-----------------------------------------

* = $c000

+CLEAR_SCREEN

lda #00
sta $d020
sta $d021

ldx #00
- lda logo,x
sta SCREEN_RAM+40*5,x
lda logo+160,x
sta SCREEN_RAM+40*9,x
inx
cpx #160
bne -
   
jmp *
       

;------------------------------------------------------
; DATA
;------------------------------------------------------

logo !by 32,32,85,64,73,85,64,64,73,85,64,73,85,64,64,64,64,64,73,85,64,73,85,64,64,73,85,64,73,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,194,194,224,224,194,194,224,194,194,224,224,224,224,224,194,194,224,194,194,224,224,194,194,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,202,192,192,206,224,206,203,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,224,224,206,224,206,224,224,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,202,203,213,201,202,203,206,194,213,206,224,224,237,192,201,194,206,202,203,213,201,202,203,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,224,224,194,194,224,224,224,194,194,224,224,224,224,224,194,194,224,224,224,194,194,224,224,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,74,64,64,64,75,74,64,64,64,75,74,64,64,64,64,64,75,74,64,64,64,75,74,64,64,64,75,32,32,32,32,32,32,32,32,32,32,32,32
!scr "  logo  swing  by  wizofwor             "

Dikkat ettiyseniz iki tane STA komutu kullandım. 6510 endeks yazmaçları 8 bitlik olduğu için döngü içersinde en fazla 255 değer yakalanabiliyor.  Bu da 40 sütün ekranda, 7 satırlık bir logoyu tek seferde güncellemek için yeterli değil. Bu yüzden logoyu 4 satırlık iki parçaya ayırdım ve iki defada ekrana yazdım. Biri 4 satırlık iki parça 8 satıyor mı dedi? Evet kodun bellekten rastgele değerler bulup logonun son satırına kopyalamaması için en alta bir !scr satırı ilave ettim.

Kodu derleyip çalıştırdığımda logom ekrana geliyor. 


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Kasım 28, 2014, 22:19:14 ÖS
Şimdi sıra geldi logoyu kaydırmaya. Efekt için bazı sayaçlar kullanmam gerekiyor. Önce bunları ayarladım.

Kod:
	;----------------------------------------
;CONSTANTS
;----------------------------------------

SCREEN_RAM = $0400
EFFECT_COUNTER = $02
CHAR_OFFSET = $03
PIXEL_OFFSET = $04

Logoyu kaydırmak için IRQ kullanmak gerekiyor. Nasıl yapıldığını burada anlatmıyorum. Nightlard'un dökümanlarında çok detaylı açıklaması var. Aşağıdaki kodlarla 154'üncü satırdan itibaren başlayan bir IRQ kurdum.

Kod:
	;Set raster irq
  sei

lda #$7f ;Disable CIA I and CIA II interrupts
sta $dc0d

lda $d01a ;Enable raster interrupts
ora #$01
sta $d01a

lda #$00
sta $dc0e

lda #154 ;set raster line
sta $d012
lda $d011
and #$7f ;%01111111
    sta $d011

lda #<irq ;set interrupt handler
sta $0314
lda #>irq
sta $0315
 
    cli

Sonra IRQ rutinimi yazdım.

Kod:
        ;-----------------------------------------------------
        ; IRQ ROUTINE
        ;-----------------------------------------------------

irq inc EFFECT_COUNTER ;increase effect counter
ldx EFFECT_COUNTER ;and grab swing data
lda swing_data,x

lsr ;Divide by 8 and
lsr ;store as char ofsset
lsr
sta CHAR_OFFSET

lda swing_data,x
and #$07
sta PIXEL_OFFSET

jsr updateLogo

asl $d019
jmp $ea81

updateLogo
!zone { ;Pixel Scroll
lda PIXEL_OFFSET
and #$07 ;%00000111
sta $d016

;Char Scroll
ldx CHAR_OFFSET
ldy #00
- lda logo,y
sta SCREEN_RAM+40*5,x
lda logo+160,y
sta SCREEN_RAM+40*9,x
inx
iny
cpx #160
bne -

rts
}

IRQ rutinini biraz inceleyelim. İlk olarak efekt sayacını artırdım. Sonra efekt sayacını kullanarak sinüs tablomdan bir değer çekitim. (Sinüs tablomda 0-64 arasında 255 adet değer var.)

Şimdi önce okuduğum değeri 8'e bölüp sonucu CHAR_OFFSET adresine kaydettim. Sonra aynı değeri tekrar okuyup bu sefer 8'e bölümden kalanı alıp PIXEL_OFFSET adresine kaydettim. Sanıyorum bir şeyler tahmin etmeye başladınız. Bu hesaplamadan sonrasını işleri daha da karıştırmamak bir subrutin kullanarak yapmaya karar verdim. updateLogo subrutinine atlıyorum.

updateLogo iki parçadan oluşuyor. İlk parça hardware scroll yapan kısım. Burda PIXEL_OFFSET değerini VIC'in scroll yazmacına yazıyorum. İkinci parça ise software scroll. Burada karakterleri CHAR_OFFSET değerine göre yeniden ekrana basıyorum. X ve Y yazmaçlarının beraber kullanımına dikkat. Kayan yazı efektindeki tekniğin aynısı.

Son olarak denemek isteyenler için kodu bütün olarak yapıştırıyorum.

Kod:
!to "build/logoswing.prg",cbm
!src "standart.asm"

;----------------------------------------
;CONSTANTS
;----------------------------------------

SCREEN_RAM = $0400
EFFECT_COUNTER = $02
CHAR_OFFSET = $03
PIXEL_OFFSET = $04


+BASIC_START

;-----------------------------------------
; MAIN
;-----------------------------------------

* = $c000

+CLEAR_SCREEN

lda #00
sta $d020
sta $d021

;Set raster irq
  sei

lda #$7f ;Disable CIA I and CIA II interrupts
sta $dc0d

lda $d01a ;Enable raster interrupts
ora #$01
sta $d01a

lda #$00
sta $dc0e

lda #154 ;set raster line
sta $d012
lda $d011
and #$7f ;%01111111
    sta $d011

lda #<irq ;set interrupt handler
sta $0314
lda #>irq
sta $0315
 
    cli
   
    jmp *
       
        ;-----------------------------------------------------
        ; IRQ ROUTINE
        ;-----------------------------------------------------

irq     inc EFFECT_COUNTER ;increase effect counter
ldx EFFECT_COUNTER ;and grab swing data
Lda swing_data,x

lsr ;Divide by 8 and
lsr ;store as char ofsset
lsr
sta CHAR_OFFSET

lda swing_data,x
and #$07
sta PIXEL_OFFSET

jsr updateLogo

asl $d019
jmp $ea81

updateLogo
!zone { ;Pixel Scroll
lda PIXEL_OFFSET
and #$07 ;%00000111
sta $d016

;Char Scroll
ldx CHAR_OFFSET
ldy #00
- lda logo,y
sta SCREEN_RAM+40*5,x
lda logo+160,y
sta SCREEN_RAM+40*9,x
inx
iny
cpx #160
bne -

rts
}

;------------------------------------------------------
; DATA
;------------------------------------------------------

logo !by 32,32,85,64,73,85,64,64,73,85,64,73,85,64,64,64,64,64,73,85,64,73,85,64,64,73,85,64,73,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,194,194,224,224,194,194,224,194,194,224,224,224,224,224,194,194,224,194,194,224,224,194,194,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,202,192,192,206,224,206,203,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,224,224,206,224,206,224,224,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,202,203,213,201,202,203,206,194,213,206,224,224,237,192,201,194,206,202,203,213,201,202,203,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,224,224,194,194,224,224,224,194,194,224,224,224,224,224,194,194,224,224,224,194,194,224,224,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,74,64,64,64,75,74,64,64,64,75,74,64,64,64,64,64,75,74,64,64,64,75,74,64,64,64,75,32,32,32,32,32,32,32,32,32,32,32,32
!scr "  logo  swing   by  wizofwor             "

swing_data  !by 32,33,34,34,35,36,37,37,38,39,40,41,41,42,43,44,44,45,46,46
!by 47,48,49,49,50,50,51,52,52,53,54,54,55,55,56,56,57,57,58,58
!by 59,59,60,60,60,61,61,61,62,62,62,62,63,63,63,63,63,64,64,64
!by 64,64,64,64,64,64,64,64,64,64,64,63,63,63,63,63,63,62,62,62
!by 61,61,61,60,60,60,59,59,58,58,58,57,57,56,56,55,54,54,53,53
!by 52,51,51,50,50,49,48,47,47,46,45,45,44,43,42,42,41,40,39,39
!by 38,37,36,36,35,34,33,32,32,31,30,29,28,28,27,26,25,25,24,23
!by 22,22,21,20,19,19,18,17,17,16,15,14,14,13,13,12,11,11,10,10
!by 9,8,8,7,7,6,6,6,5,5,4,4,4,3,3,3,2,2,2,1
!by 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
!by 1,1,1,1,2,2,2,2,3,3,3,4,4,4,5,5,6,6,7,7
!by 8,8,9,9,10,10,11,12,12,13,14,14,15,15,16,17,18,18,19,20
!by 20,21,22,23,23,24,25,26,27,27,28,29,30,30,31,32




Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Kasım 28, 2014, 22:34:01 ÖS
Tabi bu beni kesmedi. Logonun dikeyde de sallanması lazım. Bunun için ufak bir sinüs tablosu daha hazırladım. 5 bitlik bu tabloda 32 adet 0-7 arasında değişen değerler var. Bu sefer değerler 8'i geçmiyor çünkü sadece hardware scroll yapacağım. Satır kaydırmakla uğraşmak istemiyorum.

Kod:
swing_data2 !by 4,4,5,6,6,7,7,7,7,7,7,6,6,5,4,4,3,2,1,1,0,0,0,0,0,0,1,1,2,3,4,4

Kullanacağım adreslerin isimleri yeniden düzenledim ve bir iki ilave yaptım.

Kod:
	SCREEN_RAM = $0400
EFFECT_COUNTER = $02
EFFECT_COUNTER2 = $03
CHAR_OFFSET = $04
PIXEL_OFFSET_H = $05
PIXEL_OFFSET_V = $06

EFFECT_COUNTER2'yi arttırmak için alttaki kodu ekliyorum. Yeni eklediğim tablonun 5 bitlik olduğunu hatırladınız mı? Sayacı arttırdıktan sonra and #$1f ile eğer değer 32 olmuşsa sayacı sıfırlıyorum.

Kod:
	inc EFFECT_COUNTER2 	;increase effect counter 2 		;till 31
lda EFFECT_COUNTER2
and #$1f ;(%00011111)
sta EFFECT_COUNTER2

Sonra da sayacı kullanarak PIXEL_OFFSET_V'yi güncelliyorum.

Kod:
	ldx EFFECT_COUNTER2
lda swing_data2,x
sta PIXEL_OFFSET_V


Son olarak updateLogo subrutini içinde VIC'in dikey scroll yazmacını güncellemem gerekiyor.

Kod:
;Pixel Scroll Vertical
lda $d011
and #$78 ;%1111000
ora PIXEL_OFFSET_V
sta $d011

Programın tam listesi burada.
Kod:
!to "build/logoswing2.prg",cbm
!src "standart.asm"

;----------------------------------------
;CONSTANTS
;----------------------------------------

SCREEN_RAM = $0400
EFFECT_COUNTER = $02
EFFECT_COUNTER2 = $03
CHAR_OFFSET = $04
PIXEL_OFFSET_H = $05
PIXEL_OFFSET_V = $06

+BASIC_START

;-----------------------------------------
; MAIN
;-----------------------------------------

* = $c000

+CLEAR_SCREEN

lda #00
sta $d020
sta $d021

;Set raster irq
  sei

lda #$7f ;Disable CIA I and CIA II interrupts
sta $dc0d

lda $d01a ;Enable raster interrupts
ora #$01
sta $d01a

lda #$00
sta $dc0e

lda #160 ;set raster line
sta $d012
lda $d011
and #$7f ;%01111111
    sta $d011

lda #<irq ;set interrupt handler
sta $0314
lda #>irq
sta $0315
 
    cli
   
    jmp *
       
        ;-----------------------------------------------------
        ; IRQ ROUTINE
        ;-----------------------------------------------------

irq inc EFFECT_COUNTER ;increase effect counter
ldx EFFECT_COUNTER ;and grab swing data
Lda swing_data,x

lsr ;Divide by 8 and
lsr ;store as char ofsset
lsr
sta CHAR_OFFSET

lda swing_data,x
and #$07
sta PIXEL_OFFSET_H

inc EFFECT_COUNTER2 ;increase effect counter 2 ;till 31
lda EFFECT_COUNTER2
and #$1f ;(%00011111)
sta EFFECT_COUNTER2

ldx EFFECT_COUNTER2
lda swing_data2,x
sta PIXEL_OFFSET_V

jsr updateLogo

asl $d019
jmp $ea81

updateLogo
!zone { ;Pixel Scroll Horizontal
lda PIXEL_OFFSET_H
and #$07 ;%00000111
sta $d016

;Pixel Scroll Vertical
lda $d011
and #$78 ;%1111000
ora PIXEL_OFFSET_V
sta $d011

;Char Scroll
ldx CHAR_OFFSET
ldy #00
- lda logo,y
sta SCREEN_RAM+40*5,x
lda logo+160,y
sta SCREEN_RAM+40*9,x
inx
iny
cpx #160
bne -

rts
}

;------------------------------------------------------
; DATA
;------------------------------------------------------

logo !by 32,32,85,64,73,85,64,64,73,85,64,73,85,64,64,64,64,64,73,85,64,73,85,64,64,73,85,64,73,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,194,194,224,224,194,194,224,194,194,224,224,224,224,224,194,194,224,194,194,224,224,194,194,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,202,192,192,206,224,206,203,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,194,194,224,224,194,194,206,194,224,224,206,224,206,224,224,194,206,194,194,224,224,194,194,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,206,202,203,213,201,202,203,206,194,213,206,224,224,237,192,201,194,206,202,203,213,201,202,203,206,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,194,224,224,224,194,194,224,224,224,194,194,224,224,224,224,224,194,194,224,224,224,194,194,224,224,224,194,32,32,32,32,32,32,32,32,32,32,32
!by 32,32,74,64,64,64,75,74,64,64,64,75,74,64,64,64,64,64,75,74,64,64,64,75,74,64,64,64,75,32,32,32,32,32,32,32,32,32,32,32,32
!scr "  logo  swing  by  wizofwor             "

swing_data  !by 32,33,34,34,35,36,37,37,38,39,40,41,41,42,43,44,44,45,46,46
!by 47,48,49,49,50,50,51,52,52,53,54,54,55,55,56,56,57,57,58,58
!by 59,59,60,60,60,61,61,61,62,62,62,62,63,63,63,63,63,64,64,64
!by 64,64,64,64,64,64,64,64,64,64,64,63,63,63,63,63,63,62,62,62
!by 61,61,61,60,60,60,59,59,58,58,58,57,57,56,56,55,54,54,53,53
!by 52,51,51,50,50,49,48,47,47,46,45,45,44,43,42,42,41,40,39,39
!by 38,37,36,36,35,34,33,32,32,31,30,29,28,28,27,26,25,25,24,23
!by 22,22,21,20,19,19,18,17,17,16,15,14,14,13,13,12,11,11,10,10
!by 9,8,8,7,7,6,6,6,5,5,4,4,4,3,3,3,2,2,2,1
!by 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
!by 1,1,1,1,2,2,2,2,3,3,3,4,4,4,5,5,6,6,7,7
!by 8,8,9,9,10,10,11,12,12,13,14,14,15,15,16,17,18,18,19,20
!by 20,21,22,23,23,24,25,26,27,27,28,29,30,30,31,32

swing_data2 !by 4,4,5,6,6,7,7,7,7,7,7,6,6,5,4,4,3,2,1,1,0,0,0,0,0,0,1,1,2,3,4,4

Kodu derlemek istediğinizde standart.asm'yi isteyecek. Standart.asm Kayan yazı örneğindekiyle aynı.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2014, 22:45:48 ÖS
Ooooo yeni teknikler gelmiş. Mantığı bir kere çözen sanırım bunları grafik logolara da uyarlayabilir. Devamını bekliyoruz, gayet güzel ve sade bir anlatım. :)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Kasım 28, 2014, 23:07:13 ÖS
Aynı teknik zaten. İşi kısa yoldan halletmek için standart karakter setini kullandım. Yoksa grafik logolar da önce bitmap olarak hazırlanıp, karakter setine çevirerek yapılıyor.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: i_r_on üzerinde Kasım 29, 2014, 01:45:54 ÖÖ
Özendim valla. Logonun gözüktüğü her scanline'da kaydırma register'ini sinüs tablosuna göre değiştirdiğim bir intro yapmıştım çok eskiden. Onda badline'ları da hesaba katarak bir şeyler yapmak güzel olurdu. Belki hafta sonu kurar biraz kurcalarım. Şansıma teşkilatı depoya kaldırmamışım :)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Kasım 29, 2014, 09:37:28 ÖÖ
İnan bana depoya inip teşkilatı kurmaya falan gerek yok. Çapraz geliştirmenin tadını bir kez aldın mı tek özleyeceğin şey SID olacak. Önerim Relaunch64 (http://www.popelganda.de/relaunch64.html)'e bir bakman.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2014, 11:45:29 ÖÖ
Editörün son versiyonunda asm, prg, png gibi formatlarda kaydetme seçeneği varmış. ;)

http://www.kameli.net/marq/?page_id=2717 (http://www.kameli.net/marq/?page_id=2717)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: i_r_on üzerinde Kasım 29, 2014, 15:18:27 ÖS
pc'yi geliştirme yapmak için daha önce kullandım aslında. ancak pc üzerinde kaynak kodlarım mevcut değil. sıfırdan da yapmak istemedim.

pc tarafında 6502 macro assembler & simulator programını kullanıyorum. 8-bit bilgisayardan bağımsız bir program, debug özelliği varo hoşuma gidiyorum.

bir de nostalji tarafı var tabii ki işin, seneler önce yazdığın programı disk gıcırtıları ile yüklemek, çalıştırmak, kartuşla freeze edip assembly monitör'e düşmek falan. matah bir şey değil ama yaşattığı hisler güzel. verimlilik anlamında pek tabii ki pc tarafındaki programlar daha iyi.

bu arada intro'yu daha iyi hatırladım, efekti belki kullanmak isteyebilirsin. full bir ekran taramasında sinüs tablosunu 0 dereceden, diğer taramada 90 dereceden başlatıyordu. böylece ekranda sanki iki logo varmış ve birbirinden bağımsız hareket ediyormuş gibi gözüküyordu. Tabii titreşimli bir görüntü oluyordu her bir logonun hareketi toplam kare sayısının yarısına düştüğü için.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: joker_ üzerinde Kasım 29, 2014, 16:17:47 ÖS
Kardeşim süpersin, demo efektlerine geçişin yakındır :)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: emarti üzerinde Kasım 29, 2014, 19:11:08 ÖS
Abi süper bi yazı. Şu ara Amiga'da c ile boğuşuyorum; yazıyı okuyunca 6502 assemblerı boşladığımı farkettim.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Aralık 05, 2014, 12:47:08 ÖS
Örnekte kullandığım sinüs tablosunu Excel'de hesaplamıştım. Excel anlık çözüm için ideal ama sürekli kullanmak için hantal kalıyor. Baktım olacak gibi değil. learnpythonthehardway.org (http://learnpythonthehardway.org) ve stackoverflow.com (http://stackoverflow.com) desteğiyle ufak bir python betiği hazırladım. Betik, dosyanın başında tanımlanan parametrelerde bir sinüs tablosu hazırlıyor ve ACME formatında kaydediyor. Kodu github sayfamdan (https://github.com/wizofwor/C64-assembly-examples/blob/master/beginner-routines/sinus.py) alabilirsiniz.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: Simon (Özay Turay) üzerinde Aralık 05, 2014, 13:42:02 ÖS
Raster Colorbar Efekti konusunda Sinüs Editör önermiştim, onu da kullanabilirsin.

http://www.thegang.nu/releases.php?type=4&year=all&headline=Utils&nomenu=1 (http://www.thegang.nu/releases.php?type=4&year=all&headline=Utils&nomenu=1)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Aralık 05, 2014, 14:09:18 ÖS
Sinüs Editör'ü indirdim aslında. Ama bu tip durumlarda kendi kodunu yazmanın sayısız faydası var. İlerde başka sinüs yerine Lissajous eğrisi gibi farklı fonksiyonlarda kullanmayı düşünüyorum veya birden fazla sinüs dalgasını üst üste bindirenilirm. Bir de python'un Linux ve Mac'te standart olarak bulunduğunu öğrendikten sonra bir yerlerden başlamak için mazerete ihtiyacım vardı.


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: Simon (Özay Turay) üzerinde Aralık 05, 2014, 14:22:00 ÖS
Evet güzel bir mazeret olmuş.

Python güzel ve öğrenmesi kolay bir dil. Compile edilebiliyor ve çalıştırılabilir olarak kaydedilebiliyor olması da ayrı güzel.

http://effbot.org/zone/python-compile.htm (http://effbot.org/zone/python-compile.htm)

Ayrıca Pygame ile oyun ve demo tarzı programlar bile yazılabiliyor. Sonraki adımın da sanırım bu olur bu tarz işlere meraklı birisi olarak. :)

http://www.pygame.org/wiki/about (http://www.pygame.org/wiki/about)

(https://xivilization.net/~marek/tex/pygame/pygame_logo.png)


Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti
Gönderen: wizofwor üzerinde Aralık 05, 2014, 14:45:32 ÖS
Python güzel de içinde çok fazla open source saçmalığı var. Gördüğüm kadarıyla PHP'nin yolunda emin adımlarla ilerliyor. PHP'de canı sıkılan fonksiyon eklediği için aynı işi yapan çuval dolusu fonksiyon olurdu. Geriye uyumluluk eski fonksiyonlar kaldırılmadığından karma karışık bir ortam vardı. Python'da da bol bol geriye uyumluluğu bozmadan eksikleri yamamak için yapılmış saçmalıklar var. İlk günden karşılaştıklarım:

Offical dökümanlar hep Python 3 üzerine. Ama sahada Python 2 kullanılıyor. Bu ikisi birbiriyle çelişiyor. Hatta bazı yerlerde tam zıt gidiyor. Mac ve Linux'te standart olarak Phyton 2 kullanılıyor. Hatta Mac'teki Python'u kafana göre güncellersen sistemi bozabiliyorsun.

Türkçe karakter yazmak için kodun başına ikinci bir shebang satırı eklemek gerekiyor. Bu şekilde yorumlayıcı Türkçe anlıyor ama konuşamıyor(!) Örneğin Türkçe karakterlerle çıktı almak için print yerine print u kullanmak gerekiyor.

Güya değişken tipleri otomatik olarak belirleniyor ama bölme yaparken derleyicinin sonuca integer muamelesi yapmaması için sonucun float olduğunu 1/2.0 şeklinde yazarak gözüne sokmak gerekiyor.

Yine güya otomatik olan tanımlanan dizi değişkenini dizi[1] = 5 şeklinde kullanamıyorsun. Önceden dizi = [None]*10 diye boş değişkenler tanımlaman lazım.