İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - hannibal

Sayfa: [1] 2
1
pc / Tetris
« : 04.08.2009 01:02:34 »
VBE Return mode information, WINFUNCPTR& ile REAL modda ekran belleğinin bölünmüş parçalarını aktif hale getiriyoruz. 640x480x8 lik bir ekranı tek seferde adresleyemeyiz. Ancak bazı ekran kartlarında bu pointer null olarak döndüğünden kod hata veriyor. Bunun yerine INT 10h kullanan kod yerleştirdim. Onboard ekran kartında çalıştı ama pek deneyecek fırsatım olmadı. Birde 320x200x8 lik bir kütüphane çıkarıyorum ve 16 bit dos ortamını yeni başlayanlara Türkçe kaynak bırakarak terkediyorum. şimdi c++ ile dxd ye kasmaya başladım ama bakalım sonuç ne olacak ?

2
teori / Tekniker
« : 07.07.2009 18:09:38 »
Bu caret i sizmi yazdınız ? :D süper ya. Ben bu demoyu bi kaç yıl önce görmüştüm. Vay be gavurlara bak neler yazıyorlar demiştim. Zaman zamanda aklıma gelir dururdu tembelliğimden yazmazdım 3D ASCII li bir örnek. Tebrik ettim, anesthetic, decipher, spritus ve flexi ile ayrı ayrı gurur duydum.

3
pc / Tetris
« : 07.07.2009 17:57:47 »
"So far all ATI cards does not support VESA 3.0, it still stucked with VESA 2.0 standard, ATI recommended Scitech Display Doctor to use VESA 3.0 in software."

   En son böyle bir ibare buldum. Sanırım hata bu yüzden oluyor. Ben direk 3.0 özelliklerini kullanım kolaya kaçtım. Bu arada oyunu indirip çalış çalışmadığını ve ekran kartı, işlemci yi rapor edebilirmiyiz ?

4
teori / Tekniker
« : 07.07.2009 02:53:29 »
Fişekler çok tatlı olmuş. Bir game-end scene olabilir :)

5
teori / Tekniker
« : 06.07.2009 16:00:15 »
Hele o duman yok mu ? Alevi dikey değilde trigonometrik olarak dağıtma fikri. O çok güzel. Bence onun tutorunu yazmalısın. Kodlarımız 'yastık altında' kalmasın :D

6
teori / Tekniker
« : 06.07.2009 02:20:53 »
ındirdim baktım. Demekki aynı yollarda yürümüşüz. Çok Güzel Demolar bunlar, umarım indiren çok olur öğrenecekleri çok şey var.

7
pc / Tetris
« : 06.07.2009 01:42:00 »
Ama deniyoruz işte elimizden geldiği kadar bişeyler anlatmaya, pek de bişey bilmeden :D Aslında problem ve didşmelerde burdan kaynaklanıyor sanırım. ateş ve plasma etkilerini yazdım ama gerçekte nasıl olduklarını değil kendi yolumu yazdım resmen :D. Gerçi gerçekte nasıl olur bunun referans noktası nedir bu da ayrı bir konu. Bu olayı düzeltmemiz lazım, hidrojenin balansı yerinde mi olmuş ne ? :)

8
pc / Tetris
« : 05.07.2009 06:15:33 »
Eğer söylediklerinde samimi olsa idin, önce programı indirir, dener ve çalışıp çalışmadığını raporlardın. Ayrıca, direk olarak;

Alıntı

Windows NT will not allow NTVDM to execute instructions that try to directly manipulate hardware or memory locations. As a result, some DOS and Windows 3.x applications (such as games) may not run under Windows NT.


bu bilgiyi paylaşırdın.

   Ben real modu bilmiyorsun diye birşey söylemişmiyim ? Segment:offset vs selector descriptor tables lardan bahsediyorum. Tekrar oku!

   Ben ingilizce bilmiyorsun mu demişim yoksa

   "VESA 'video port extensions' lara yazılacak verileri farklı ekran kartları için sabit tutan şeydir. Umarım anlarsın." mı demişim ?

Alıntı

video port extensions (VPE)
    The video port extensions to DirectX. Driver developers for devices with a hardware video port should implement these extensions. The hardware video port is a dedicated connection between video devices, typically between an MPEG device or NTSC decoder and the video card. This dedicated connection carries horizontal sync (Hsync) and vertical sync (Vsync) information with the video data. The hardware video port and overlay can use this sync information to flip automatically between multiple buffers, writing to one surface while the overlay displays another. This allows tear-free video without burdening the application.


Örneğin, bu vsync ve hsync her ekran kartı ve monitör kombinasyonlarında farklı olabilir. Vesa bunun için var. ışte burda ispat olunmuş oluyor. Anlamanı istediğim buydu. Sen ne anladın ? "ingilizcen yeterse oku!" dediğimi anladın. Kusura kalma amacım bu değildi. Sende bir komplex kaygısı sezinledim, dostça söylüyorum. Üstünlük sağlamaya çalıştığım düşüncesiyle olaya baktığın için yazdıklarımı bu şekilde anlamışsın. 'Biraz kulaktan dolma' demekle olmaz.

http://msdn.microsoft.com/en-us/library/dd145203(VS.85).aspx

Alıntı

The Microsoft Windows graphics device interface (GDI) enables applications to use graphics and formatted text on both the video display and the printer. Windows-based applications do not access the graphics hardware directly. Instead, GDI interacts with device drivers on behalf of applications.


Umarım anlarsın :D

Sen dxd de vbe nin kullanılmadığını düşünmekte haklısın. Ortak konuştuğumuz şey, direk olarak işi olmaz. Ama GDI device driverlarla VBE ile muhatab olmakta.

Sonuç : Ben hala programın verdiği hatanın ne olduğunu ve nerden kaynaklandığını bilemiyorum çünkü tatildeyim. Bu yüzden anca teori üretiyorum ve en iyi ihtimalle VBE de bir hata olduğunu düşünüyorum. tabi,

Alıntı

Windows NT will not allow NTVDM to execute instructions that try to directly manipulate hardware or memory locations. As a result, some DOS and Windows 3.x applications (such as games) may not run under Windows NT.


bunu paylaştıktan sonra düşüncelerim değişti bu konuda... Keşke baştan bunu yazsaydın. Tutupta goole kullan vs vs olmaz. Ayrıca memory locations larda sorun olmadığının kanıtı da çoğu pc de uygulamanın çalışıyor olması.

şimdi, ben diyorum ki, GDI ekran kartı sürücüsüyle, o da Vesa Bios Extensions la muhatab oluyor. Ayrıca, bi zahmet programı indirip deneyip raporla. SOnra oturup konuşalım, vaktin varsa beraber hata kaynağı için teori üretelim, yoksa da sağol. Bu yani...

9
pc / Tetris
« : 05.07.2009 03:10:25 »
Dxd ile kodumu nasıl aynı kefeye koyduğum manasını çıkardın ? asla öyle birşey yok. Bilki, vesa sabiti, vbe ile protected mode entry point denilen özelliği ile önce kullanılır. Sonrasında tabiki tutupta bir win32 uygulaması INT 10h ı çağırmaz, işi olmaz, burda haklısın ve hakketen işin rahatı da bu! banane vga portlarından 3CXh ten... Bunu demek çok güzel birşey :)

   Allocate edilecek memory ve hardware tarafından koruma dediğin işler zaten protected mode dediğimiz ortamda olur. Real modda Segmentlerimiz vardır ve Arçok bu konuda son derece titizdir, işlemciyi REAL olarak kullanır. Eğer segment hatası olsa idi hiç bir makinada çalışmazdı. Ancak, arçok nVidia ekran kartlarında çalışıyor. ilginç...

  NTVDM denilen şey, sanal dos modudur ve ciddi sistem hatası verdiremez. Yukarıda yazdığım gibi. Yoksa tutupta,

  "aaa programım çalışmadı, senin işletim sistemin bozuk" diye birşey demiyorum. O anda muhtemelen NTVDM zaten başka bir işle meşgüldü. Demek istediğim bu.

   şimdilik hatanın nerden kaynaklandığını ve nasıl düzelteceğimi bilemiyorum tatil nedeniyle. Ancak sorun çözülünce burda paylaşırım.


  Google "dxd vesa" arat; top result :
 http://www.bilgipasaji.com/forum/diger-bilesenler-257/43952-vesa-gelecegin-goruntu-ve-ses-aktarim-standartini-duyurdu-displayport.html

  Burdan anlayacağın, tüm ekran işlemleri VESA sabiti ile yapılmakta hala ve şimdide daha gelişmişini yapacaklarıdır... Dxd ekran komutları da eninde sonunda VBE' yi kullanır. Ama dediğin gibi bir win32 uygulamasının bu en alt seviyedeki alanla direk olarak işi olmaz.

  Vesa yı kulaktan dolma olarak kullanıyorsun gibi bir şeyi dememelisin bir topic okuyarak. Ve Real mode SEGMENT:OFFSET i bilmeden programların memory space lerinden bahsetmemelisin, burda selector ve descriptorlar var, adı üstünde PMODE, Arçok bundan uzaktır...


[Edit]
http://social.msdn.microsoft.com/Search/en-US/?Refinement=86%2c96&Query=directx+vesa

burada yazan:
"Video Electronics Standards Association (VESA) An organization that sets standards for video devices. ... The video port extensions to DirectX." Umarım anlamışsındır...
[/Edit]


  Anladığım kadarıyla PMODE da iyisin, REAL modu bana bırak :)

10
pc / Tetris
« : 04.07.2009 22:37:40 »
evet :) ve ne yazıkki :D

11
pc / Tetris
« : 04.07.2009 21:21:40 »
:) tavsiyelerin için çok sağol. Programcılığı bırakmasaydım PMode a geçecektim zaten. DXD için bir projem var ancak uğraşamıcam sanırım.
   şunu iyi bil, VESA nın demode olması diye birşey olamaz. Vesa her zaman orda, Dxd Vesa ile çalışır.
 
   Ama diyorsun ki boşver bu işleri, aç dxd de Device ını bak rahatına :). Valla haklısın aslında ama bir oyun geliştirmek için emeklemeden koşmaya başladığımız için elle tutulur pek bişey çıkartamıyoruz. Amaç 2 boyutlu oyunlar yapmak, bunun için türkçe komutlar kullandırtmaktı.

  Bu arada, bu oyunun çalıştığı bir çok makine türü var ama sizde çalışmıyor. Çalıştığını bildiğim kendi kullanımımda olan 3 pc nin de ekran kartları nVidia. Hata sebebi hala belirsiz. 13000+ asm kodu içinde bul bulabilirsen :S.

   Sistemin kritik hata ile kapanmasında, kullandığın sistem suçlu olmalıdır. Zira, bu uygulama NTVDM de çalışıyor (makyaj DOS), en çok görmen gereken 'geçersiz bir işlem yürüttü ve kapatılacak' ibaresi olmalıydı.

  Birde, bana laptop yada pc mi kullandığını ve ekran kartını yazabilirmisin ? Yanlızca çalışmadığını bildirmekle bile zaten katkı sağlamış oluyorsun. Çok sağol...

12
teori / Bilmediğiniz renkler...
« : 04.07.2009 17:43:25 »
Bu alev ve plazma etkileri için, QB4.5 dilini ve belli renk tayflarını kullandık. Peki ya 'PROTECTED MODE' da işler nasıl
olurdu ? Bu etkiler için, 32 bit lik ortamda nasıl ton ataması yapılır ?

   Bilgisayarda renkler nasıl gösterilir ? Aslında, yukarıda yazmış olduğum örneklerde bu konuyu anlamış olmanız gerekir.

Renkler, içerdiği tonlardan bağımsız bir şekilde bulunurlar. 320x200x8 lik bir ekranda, 0 dan 255 e toplam 256 adet RENK YAZMACI bulunur. Bu yazmaçlara, 0 - 63 arası değerde, KYM tonları yazılabilinir. Yani, renk yazmaçları ve bu renklerin tonları diye iki adet kavram vardır. şimdi büyük bir yanlış anlamayı düzeltelim. Dikkat edin, içeriği az ama bulunması zor bir bilgidir. 32 bitlik bir derinliğe sahip ekranda, Alpha tonları ekarte edilirse, 16,777,216 tane renk yazmacımız var demektir. (Ağlayasım geldi biz hala 256 tanesiyle uğraşıyoz :D) 16M ekranında okunulan bir noktadan 4 hecelik (bytes) bir veri döner;

  P = NOKTA(x, y)

  Eğer bu nokta siyah ise P  = 0, kıpkırmızı ise P = 255, sap sayı :D ise P = 65535 olarak döner, işte burda küçük bir yanlış anlama yapmaktayız;

NOT : ARGB yada ABGR şeklinde sıralanmış olabilir. Ben ABGR ye göre yazıyorum!

Siyah.......:     0 = 00 00 00 00
Kırmızı.....:   255 = 00 00 00 FF
Sarı........: 65535 = 00 00 FF FF

P = Nokta(x,y) ile dönen 4 hecelik değerin ilk hecesi kırmızı tonu, ikinci hecesi yeşil tonu, üçüncü hecesi mavi tonu ifade

eder diye biliriz çoğumuz. Bu uygulamada doğrudur. Ancak burda dönen değer aslında renk yazmacının değeridir. Yani,

kıpkırmızı gördüğümüz noktada 255 nolu renk vardır, sapsayı da ise 65535 nolu renk vardır ve dönen değerler sadece renk

numaralarıdır. IBM pc açıldığında, bu renk yazmaçlarına sıralarına uygun olarak tonlar atandığı için, 32 bitlik noktadan dönen değer ABGR olarak ta kullanılabilmektedir. Ama sadece renk numarasıdır aslında....

Alev ve Plazma etkilerinde renklerin tonlarıyla nasıl oynadığımızı hatırlayın. Aynı şekilde, simsiyah gözüken noktanın yani,

0. rengin tonlarını değiştirerek bembeyaz yapabiliriz. Ve dönen noktadaki renk değeri yine 0 olur. Umarım anlatabilmişimdir.

ışte bu ton değiştirme özelliğini 32 bitlik ortamda da kullanabiliriz. Böylece, plazma etkisi için, tek tek renk değiştirmek

yerine daha hızlı olan ton değiştirme yöntemini yine kullanabiliriz. Ancak, !PROTECTED MODE' da VGA portlarına direk erişemezsiniz ama eminim bununda bir yolunu DXD ciler bulacaktır...

13
teori / Plazma
« : 04.07.2009 16:55:53 »
Plasma nedir ? Yenilirmi ? Napılır bilmem :D.
Plasma efekti denilen şeyi nasıl yaparız ? ışte bunun için bildiğim bir yol var...

Alev nasıl yapılır konusunda yazdıklarımı okuduğunuzu varsayıyorum. şimdi alev kodunda, renk tonlarını hiç değiştirmeyin.

Kodun başındaki, OUT komutlarına REM çakın. Programı çalıştırın. Ve izleyin...

Alev programında, 3 ana rengin, eşit bir biçimde birbirine yumuşak olarak kaynaşmasını, ve çekirdek rengin yavaş yavaş

yükselerek kabuk renge ulaşmasını yazmıştık. Bu yumuşak geçiş için, önüm arkam sağım solumdaki noktaların renk değerlerini

alıp, ortalama bir renk değeriyle bir üst noktaya boyama yapmıştık.

Biraz daha dairesel bir BLUR efekti ve yumuşak geçişli renk tonları kullanırsak, bu tonları döngüde değiştirirsek plasma

efektini yakalamış olacağız.

Plasma etkisinde, değişen ekrandaki noktaların renk değeri değil, renklerin ton değerleridir. Bir resim hazırlanır ve o
resim sabittir. Bu resim kulanacağımız ana renklerin BLUR edilmiş halidir. Bunun için ekranımıza rasgele noktalar koyalaım.

SOnra ekranımızı baştan aşağıya taratalım ve her noktaya, o noktanın çevresindeki noktaların renk ortalamasını yazalım...

Kod: [Seç]

DEFINT A-Z                              'Tüm değişkenler Tam sayı. % işaretine gerek yok!
SCREEN 13                               '320x200x8
RANDOMIZE TIMER
Ana% = 6                                'Ton atlama
Son% = 21 * Ana%                        'Max ton (63 ile VE işlemine tabidir)
FOR t% = 0 TO 21                        
  OUT &H3C8, t%
  OUT &H3C9, t% * Ana%
  OUT &H3C9, 0
  OUT &H3C9, 0
NEXT

FOR t% = 0 TO 21
  OUT &H3C8, t% + 21
  OUT &H3C9, 0
  OUT &H3C9, t% * Ana%
  OUT &H3C9, 0
NEXT


FOR t% = 0 TO 21
  OUT &H3C8, t% + 42
  OUT &H3C9, 0
  OUT &H3C9, 0
  OUT &H3C9, t% * Ana%
NEXT


For y = 0 to 199                        'Rasgele kıvılcımlar çakalım
  For x = 0 to 319
    l = (RND * 35)
    IF l = 1 THEN
      k = 21
      LINE (x - 2, y - 2) - (x + 2, y + 2), k, BF
    END IF
    IF l = 12 OR l = 7 THEN
      k = 41
      LINE (x - 1, y - 1) - (x + 1, y + 1), k, BF
    END IF
    IF l = 5 OR l = 9 THEN
      k = 63
      LINE (x - 2, y - 2) - (x + 2, y + 2), k, BF
    END IF
  Next
Next



Temel bir ekran üretmiş olduk. Bulandırma etkisinin iyi gözükebilmesi için, renkleri şimdiden boyadım. şimdi ekranda, alev

efektinde olduğu gibi, temel kıvılcımları çakmış olduk. Bundan sonra, bu kıvılcımları çevre nokta renkleriyle bulunan bir

ortalama değerle yeniden boyayalım;


Kod: [Seç]

'BLUR

For Blur = 0 to 4
  For y = -30 to 229
    For x = -30 to 349
      a1 = POINT(x, y)
      a2 = POINT(x + 1, y)
      a3 = POINT(x + 1, y - 1)
      a4 = POINT(x + 1, y + 1)
      a5 = POINT(x - 1, y - 1)
      a6 = POINT(x - 1, y + 1)
      a7 = POINT(x, y + 1)
      a8 = POINT(x, y - 1)
      a9 = POINT(x + 2, y)
      a10 = POINT(x + 2, y - 1)
      a11 = POINT(x + 2, y + 1)
      a12 = POINT(x + 2, y - 2)
      a13 = POINT(x + 2, y + 2)
      a = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13) \ 13
      IF a THEN PSET (x, y), a
    NEXT
  NEXT
NEXT        



Buraya kadar, renk değerleri, blur etki gücü gibi değişkenleri istediğiniz gibi değiştirebilirsiniz. Bundan sonra ana döngüye gireceğiz. Birbirine kaynaşmış ve yumuşak geçişleri olan bir resmimiz var. Ana döngüde yanlızca bu resmin oluştuğu renklerin tonlarını koyudan parlağa kaydırıcaz...

Kod: [Seç]

dk% = 1
dy% = 1
dm% = 1
DO
a$ = INKEY$
FOR t% = 2 TO 63
  OUT &H3C7, t%                             'Bu porttan, rengin tonlarını OKURUZ!
  k% = INP(&H3C9) + dk%
  y% = INP(&H3C9) + dy%
  m% = INP(&H3C9) + dm%
  IF k% > Son% THEN k% = Son%: dk% = -dk%
  IF y% > Son% THEN y% = Son%: dy% = -dy%
  IF m% > Son% THEN m% = Son%: dm% = -dm%
  IF k% < 0 THEN k% = 3: dk% = -dk%
  IF y% < 0 THEN y% = 3: dy% = -dy%
  IF m% < 0 THEN m% = 3: dm% = -dm%
  OUT &H3C8, t%
  OUT &H3C9, k%
  IF t% > 21 THEN OUT &H3C9, y% ELSE OUT &H3C9, 0
  IF t% > 42 THEN OUT &H3C9, m% ELSE OUT &H3C9, 0
NEXT
WAIT &H3DA, 8
LOOP UNTIL a$ <> ""



şimdi ekranda vıcık vıcık bişeyler görebilirsiniz. Tekrar anlatıyorum;
Ne yaptık ?
1 - Ekranda, yumuşatılmak üzere, rastgele noktalar yaptık.
2 - Bu noktaların renklerini, çevre noktaların renkleriyle ortaladık ve yeni bir renk elde edip bu noktaya yazdık.
3 - Renk tonlarını döngüde, parlattık...

Bu kadar(mış) :D...

Bu plazma etkisi, yazdığım ilk plazma örneği olduğundan bazı eksiklikler, otlar vs vs bulunabilir. Ama eminim ki, plazma etkisi nedir denildiğinde artık bir cevabınız var...

Bu etki ile yapabileceğiniz çok farklı işler var;
http://www.uploadyeri.com/index.php/files/get/vYK6450r4k/plazma.rar

14
teori / alev
« : 04.07.2009 04:15:34 »
Alev efekti;

Tam göbekte beyaz, arada sarı ve en dışta da kırmızı renkler olursa, bu renkler güzel bir tonlama ile birbirine kaynaşırsa,

en dışta en soluk, en içte en parlak ton olursa, sözüm ona 'BLUR' etkisi eklenirse bir alevimiz olur.

Yukarıdaki koşulları teker teker sağlayalaım, bunun için qb4.5 kodu ile örneklerde verelim;

1 - Renk tonlaması
   En dışta koyu, en içte parlak olacak, kabuğun kırmızı, çekirdeğin beyaz olduğu bir renk tayfı üretelim...
Kırmızı, sarı ve beyaz olmak üzere 3 ana rengimiz var;
Alev yüksekliğini bulup, bu yüksekliği 3 e bölelim. Bu şekilde koyu kırmızıdan bembeyaza giden tayfımız eşit şekilde dağılmış

olur...
   Alevi, 320x200x8 ekranında yapıcaz. Bu ekranda, bir renk yazmacı, 0 - 63 arası KYM ton alabilir... Tüm tayf, alev

yüksekliği kadar renk kullanacak. Yani, diyelim ki 21 yüksekliğinde bir alev yapacağız;

   O zaman, kırmızı ton 7, sarı ton 7, beyaz ton 7 renk kullanır. 0 dan 63 e kadar değer alabilen bu renklerde, kırmızı ton 0

dan başlayıp, 63 görmeli. O halde, her bir ton 63/7 kadar artmalıdır.

Kod: [Seç]

Screen 13                         '320x200x8 lik Ekran
Yukseklik% = 31                   'Alev max yuksekligi
k% = Yukseklik%\3                 'Ana renklerin ton sayısı
l% = 63 \ k%                      'Tonlar arası mesafe

Baslama% = 199 - Yukseklik        'Dikey Tarama baslangicimiz
En% = 63                          'Yangının tabanı
x1% = (320 - En%) \ 2             'Yatay taratma baslangici
x2% = x1% + En%                   'Yatay tarama sonu.


   şimdi, kırmızı, sarı ve beyaz için her birisi eşit (nerdeyse :D) sayıda farklı renk sayısı bulduk. Bu farklı renk sayısını

k% değişkeni ile gösterdik. Madem, her renk 0 - 63 arası ton alabiliyorsa, 63 ü k% ya bölüp, her tonda yapacağımız atlamayı

bulduk. Bunuda l% ile gösterdik.

   Renkler, Kırmızı - Yeşil - Mavi tonlarından oluşur. Alevde, Kırmızı ilk ana rengimiz. En kısık değerden yani 0 dan

başlayacak. k% kadar ilerleyip en parlak tona 63 değerine ulaşacak. Bundan sonra Sarıyı elde etmek için, yeşil k% kadar

ilerleyip her adımda l% kadar değer alıp 63' e ulaşacak. Bu parlaklığa ilerlerken kırmızı 63 değerinde sabit kalacak.

Böylece, kırmızıdan sarıya en yumuşak şekilde geçmeye çalışacağız. Son adımda, kırmızı ve yeşil en parlak noktasında, sap

sayı (sap sarı kedimize 'sap sayı' diyoz biz :D) iken, mavi hafifçe artacak ve sarıdan, beyaza bir yumuşak geçiş daha yapmış

olacağız.

   Siyah ==> Kırmızı ==> Sarı ==> Beyaz
   Hadi yapalım bu işi :D

Kod: [Seç]


For t% = 0 to k%                            'k% kadar rengi boyucaz
  Out &H3C8, t%                             '3C8h portuna ilgili rengi yazıcaz.
  Out &H3C9, kirmizi%                       'Siyahtan başlıyoruz
  Out &H3C9, 0                              'Yeşil ve
  Out &H3C9, 0                              'Mavi renkler susçak.
  kirmizi% = kirmizi% + l%                  'her adımda l% kadar artan ton, k% adımda 0 dan 63 e ulaşır ;)
  IF kirmizi% > 63 THEN kirmizi% = 63    
Next


For t% = 0 to k%                            'k% kadar rengi boyucaz yine.
  Out &H3C8, t% + k%                        'k% kadar rengi boyadık. şimdi 2. k% kadar renjte sıra.
  Out &H3C9, 63                             'Burası zaten kıpkırmızı oldu
  Out &H3C9, yesil%                         'sarartalım hafif hafif
  Out &H3C9, 0                              'Mavi renk bekle...
  yesil% = yesil% + l%                      'her adımda l% kadar artan ton, k% adımda 0 dan 63 e ulaşır ;)
  IF yesil% > 63 THEN yesil% = 63    
Next


For t% = 0 to k%                            'Son k% kadar renk.
  Out &H3C8, t% + k% + k%                   '2 * k% kadar rengi boyadık. şimdi 3. k% kadar renjte sıra.
  Out &H3C9, 63                             'Burası zaten kıpkırmızı oldu
  Out &H3C9, yesil%                         'Burası da yemyeşil. Al sana Sap sayı :)
  Out &H3C9, mavi                           'Mavi renk artınca, sarıdan beyaza dönüyoruz.
  mavi% = mavi% + l%                        'her adımda l% kadar artan ton, k% adımda 0 dan 63 e ulaşır ;)
  IF mavi% > 63 THEN mavi% = 63    
Next



tataam :D

Siyah =>(kırmızı artıyor) => kırmızı => (yeşil artıyor, kırmızı max ta sabit) => sarı => (mavi artıyor) => beyaz

3C8h portuna, 0 dan 255 e kadar olan renk sayılarından birisi girilir ve hemen ardından, 3C9h portuna sırasıyla KYM tonları

yazılır. Portlar, bellek noktaları/pointer lar gibi değildirler, farklı zamanda farklı işler yaparlar...


şimdi alev için renk tayfımzı yaptıktan sonra düşünelim;

   Bir kıvılcım çıksın, yukarı ilerlesin, ilerlerken rengi hafif hafif değişsin ve siyaha ulaşıp kaybolsun. Bunun için, bir

sütundaki okuduğumuz bir noktanın rengini, çevre diğer birkaç rengi <=== BLUR okuyup, bir üst noktaya ortalama bir renk

yazacağız.

Kod: [Seç]

Do                                              'Ana döngü
  a$ = INKEY$                                   'Tus kontrol
  Gosub Isik                                    'Baslama kivilcimi
  For y% = baslama% to 199                      'Dikey tarama
    For x% = x1% to x2%                         'Yatay tarama
      c1% = POINT(x%, y%)                       'Taranan nokta
      c2% = POINT(x% + 1, y%)                   'bir yatay ilerisi
      c3% = POINT(x% - 1, y%)                   'bir yatay gerisi
      c4% = POINT(x%, y% + 1)                   'bir aşağısı
      c5% = POINT(x%, y% - 2)                   'iki aşağısı
      C% = (C1% + C2% + C3% + C4% + C5%) \ 5    'BLUR (hepsinin ortalaması)
      PSET (X%, Y% - 1), C%                     'Taranan noktanın bir üstüne bu rengi koyalım
    NEXT
  NEXT
LOOP UNTIL A$ <> ""                             'Tusabasacika :D
END
 
Isik:
x% = x1% + RND * En%                            'Yangın tabanından rastgele bir yer seç
PSET (x%, 199), RND * Yukseklik%                'rastgele boya
PSET (x% - 1, 199), RND * Yukseklik%            'önü ve
PSET (x% + 1, 199), RND * Yukseklik%            'arkayıda boya  
RETURN




   şimdi ekranınız yanacak :D. Burda, basic dilinde, Ekran Ana Bölümüne direk geçiş yaparak boyama ve okuma yaparsanız

hızınız oldukça artacaktır. Bu bölüm yüzünden koskoca Arcok kütüphanesinde problemler yaşamaktayım, yardımlarınızı (Beta

testerları) bekliyorum :D. Ayrıca kıvılcımlar yangın tabanında rahatsız edici görünmektedirler, bunuda düzeltebilirsiniz.

Bundan başka biraz daha uğraşıp Yangına belirli bir biçimde verebilirsiniz. şekil 1-A;

Kod: [Seç]

'Tolga Arçok
'Ekranınızı yakacak :P


SCREEN 13
RANDOMIZE TIMER


yukseklik% = 63
baslama% = 199 - yukseklik%
o& = CLNG(baslama%) * 320&
b& = o&
en% = 128
x1% = (320 - en%) \ 2
x2% = x1% + en%
taban& = 63680

k% = yukseklik% \ 3
l% = 63 \ k%
FOR t% = 0 TO k%
kirmizi% = kirmizi% + l%
OUT &H3C8, t%
OUT &H3C9, kirmizi%
OUT &H3C9, 0
OUT &H3C9, 0
NEXT

FOR t% = 0 TO k%
kirmizi% = kirmizi% + l%
IF kirmizi% > 63 THEN kirmizi% = 63
yesil% = yesil% + l%
OUT &H3C8, t% + k%
OUT &H3C9, kirmizi%
OUT &H3C9, yesil%
OUT &H3C9, 0
NEXT


FOR t% = 0 TO k%
yesil% = yesil% + l%
mavi% = mavi% + l%
IF yesil% > 63 THEN yesil% = 63
OUT &H3C8, t% + k% * 2
OUT &H3C9, 63
OUT &H3C9, yesil%
OUT &H3C9, mavi%
NEXT



DEF SEG = &HA000
DO
GOSUB DrawLine
o& = b&
FOR y% = baslama% TO 199
 FOR x& = x1% TO x2%
  oo& = o& + x&
  c1% = PEEK(oo&)
  c2% = PEEK(oo& - 640&)
  c3% = PEEK(oo& + 320&)
  c4% = PEEK(oo& + 1)
  c5% = PEEK(oo& - 1)
  c% = (c1% + c2% + c3% + c4% + c5%) \ 5
  IF c% > 0 THEN POKE oo& - 320&, c%
 NEXT
 o& = o& + 320&
NEXT
LOOP UNTIL INKEY$ <> ""
DEF SEG
END

DrawLine:
kk% = (RND * ((RND * en% \ 5) + en% \ 5))
x& = x1% + kk%
bb& = x& + taban&
c% = INT(RND * yukseklik% \ 3)
t% = (RND * en%)
FOR t& = 0 TO 3
  POKE bb& + t&, c%
NEXT
x& = x2% - kk%
bb& = x& + taban&
c% = INT(RND * yukseklik% \ 3)
t% = (RND * en%)
FOR t& = 0 TO 3
  POKE bb& + t&, c%
NEXT

ll% = kk% + (RND * (en% - kk% * 2))
x& = x1% + ll%
bb& = x& + taban&
c% = yukseklik% - INT(RND * yukseklik% \ 3)
t% = (RND * en%)
FOR t& = 0 TO 3
  POKE bb& + t&, c%
NEXT
RETURN


tam çalışır yangın programı;
http://www.uploadyeri.com/index.php/files/get/u-QpJYVE-9/yangin.rar

15
pc / Tetris
« : 03.07.2009 07:51:21 »
Arçok kütüphanesi, onboard ekran kartları ve laptoplarda çalışmıyor şu anda. Ana makine başında olmadığım için sorunu düzeltemeiyorum. Oyunun kurulduğu makina hakkında (işletim sistemi, ekran kartı ve işlemci) bilgi verirsen büyük katkı sağlamış olacaksın. Teşekkürler...

Edit:
Oyun bildiğimiz tetris.
ılk 10 sıralaması var,
Çoklu blok yıkımında katlanan puan sistemi ve özensiz animasyonlar var,
Tek renkten oluşan blok yıkımında abartı puan olayı var. Ben daha bunu hiç yapamadım :D

Sayfa: [1] 2