NightNetwork - yazılım, yazın, verim vs.

9.3. IRQ Rutini Algoritması

IRQ rutinimiz ekrandaki bütün efektleri yapan rutin olduğu için onun algortimasını biraz düşünelim. Aslında çoğu zaman IRQ rutinimiz temel iskeleti yaklaşık olarak şöyle birşey olacak:

  • inc $d019

  • ilk efekti yap

  • d012'nin ikinci efekt satırına gelmesini bekle

  • ikinci efekti yap

  • d012'nin üçüncü efekt satırına gelmesini bekle

  • üçüncü efekti yap

  • jmp $ea81

Basit bir mantık değil mi? Şimdi buraya kadar konuştuklarımızı ve intro planımızı göze alarak bu intro için IRQ rutinimizin algoritmasını biraz daha detaylı olarak ortaya çıkaralım:

  • inc $d019

  • müziğin bir parçacığını çaldır

  • $30 nolu satıra kadar bekle

  • $31 nolu satıra bir beyaz raster çizgisi koy. sonra ekranı siyah yap

  • Çok renkli moda geç ($d016) ve $d018'i logoya yönlendir

  • $70 nolu satıra kadar bekle

  • bir beyaz çizgi koy. sonra ekranı kırmızı yap. tek renkli moda dön ve d018'i logoya değil fontlara bakacak şekilde değiştir

  • $7e nolu satıra kadar bekle

  • birinci beyaz bant rasterlerını çiz

  • $93 nolu satıra kadar bekle

  • bir piksel kayma rutinini yap

  • beyaz bant rasterlarını çiz

  • bantlar bittikten sonra d016'yı yine sabitle ve slot kaydırma rutinini çağır

  • $be nolu satırına kadar bekle

  • hareketli raster bölgesini çiz ($f0'a kadar)

  • ekranı tekrar kırmızı yap

  • raster animasyonunu yap (bir sonraki karenin raster renklerini hazırla)

  • jmp $ea81

İşte bu kadar basit. IRQ rutinimiz çok önemli olmakla beraber bir diğer önemli nokta da intromuz başlarken, daha IRQ hazırlanmadan önce yapılan ilk hazırlıklar .

  • renk belleğine gereken renkleri koy

  • müziğin ilk hazırlanma rutinini çağır.

  • IRQ Hazırla

  • sonsuz döngü

İşte programın başında bu ilk işlemleri yapıp IRQ rutinimiz başlatarak intromuzu izleyenlere sunacağız.

Artık kafamızda algoritma iyi kötü oturmuş durumda. Kodu yazarken karşımıza yeni problemler çıkabilir ancak bunları karşımıza çıktıkça çözebilecek kadar hazırlıklıyız. Çünkü iskelet tasarımımızı oturttuk.

Şimdi kodu inceleyebilirsiniz. Örnekler klasöründen intro_01.a64 dosyasını açın ve inceleyin. Göreceğiniz bütün rutinler önceki örneklerin bir araya getirilmiş hali. Bu yüzden satır satır açıklamayacağız.

Dikkatinizi çekmek istediğimiz bir nokta RasterIRQHazırla rutininde. Burada CLI komutundan once d019'a bir yazarak bir nevi inc d019 yapmış oluyoruz. Bunun sebebi eğer biz IRQ kurarken herhangi bir IRQ VIC'ten gelmiş ise IRQ rutinine hemen CLI komutuyla beraber giriyoruz. Yani yanlış rasterda olsak bile. Bu şimdiye kadar problem olmamıştı. Çünkü kısa IRQ rutinleri kullanıyorduk. Birinci girişten sonraki girişler her zaman doğru rasterda oluyordu. Oysa bu örnekte IRQ rutinimiz çok uzun ve ilk girişte yanlış rasterda başlarsak biz çıkana kadar doğru raster'ı kaçırabiliriz. Bu konu kafanızı karıştırıyorsa endişelenmeyin çok önemli değil. Sadece bundan sonra IRQHazırlama rutinlerinizi hep böyle yapın yeter.

Evet şu an bu ilk ıntroyu kurcalama zamanıdır. Bir sonraki bölümümüzde introlarımızda kulanabileceğimiz bazı efektler öğreneceğiz. Bu efekleri bu bölümde oluşturduğumuz iskelet içine oturtacağız. Oldukça zevkli ve görkemli bir bölüm olacak.

O zamana kadar iyi eğlenceler.

NightNetwork - 2009