tr-demoscene

the scene => coding => pc => Konuyu başlatan: hannibal - 30.06.2009 21:15:02

Başlık: Tetris
Gönderen: hannibal - 30.06.2009 21:15:02
Arcok 2B programlama kütüphanesi ile yazılıp bitirilmiş ilk oyun, Arris;
http://www.uploadyeri.com/index.php/files/get/-jF0OQfzTQ/arris.rar

Arris bir arçok eğitim oyundur ve amaca uygun olarak, kodlarıda yayınlanmıştır...
Başlık: Tetris
Gönderen: tesla - 03.07.2009 00:35:02
Arris.exe çalışmadı bende. Sanırım ekran modunu açamadı. Dosbox ile de denedim olmadı.

Ekran görüntülerinden gördüğüm kadarı ile hoş bir tetrise benziyor.
Başlık: Tetris
Gönderen: hannibal - 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
Başlık: Tetris
Gönderen: tesla - 03.07.2009 17:39:01
Oyunu masaüstü bilgisayarımda denedim. Aslında her bi şeyi çalıştıran standart bir sistem.   1 gb ram, P4 2.4, Ati 9550 Game edition, 17' lg monitor.
Başlık: Tetris
Gönderen: spritus - 04.07.2009 20:31:44
oyunun crash etmesini anlarım da windows kritik hatalarla bağıra bağıra crash etti :D sonraki açılışta da sağolsun ciddi hatalardan kurtardı :)
herneyse sanırım kurcalanmaması gereken bir yerlere dokunmuşsun. kodlarını daha safe yazmanı tavsiye ederim.

bu arada vesa, ems gibi modası geçmiş teknolojileri qbasic gibi bir ortamda advanced bir şekilde kullanman şaşırtıcı. neden windows veya linux platformlarını ve bunların sunduğu olanakları kullanmıyorsun? kendi çabalarınla donanıma direk hükmetmeye çalışmanı anlıyorum ama artık günümüzde pek geçerli bir yol değil bu. işletim sisteminin açtığı kanaldan donanımlara erişmek daha akıllıca değil mi? yani kısaca direct-x, opengl veya en azından sdl diyorum. amerikayı ikinci defa keşfetmeye gerek yok. kolaylıklar :)
Başlık: Tetris
Gönderen: hannibal - 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...
Başlık: Tetris
Gönderen: spritus - 04.07.2009 22:09:59
Alıntı yapılan: hannibal;20972
Vesa her zaman orda, Dxd Vesa ile çalışır.


:confused: bundan emin misin?
Başlık: Tetris
Gönderen: hannibal - 04.07.2009 22:37:40
evet :) ve ne yazıkki :D
Başlık: Tetris
Gönderen: Decipher - 05.07.2009 02:32:31
Birazcik kulaktan dolma olmus, DirectX VESA ile calisir gibi soylemler ancak yine de dokunmadan gecemedim. VESA (Video Electronics Standards Association) bir konsorsuyumdur, video adaptor ve monitor ureticlerinden olusur. Bir amaci da video protokollerini standard bir hale getirmektir. Buraya kadar hersey guzel.

Simdi problem burda basliyor, senin DirectX'le ayni kefeye koydugun kodun ne yazik ki DirectX ile ayni kefede hic ama hic degil. Kullandigin ekran karti VESA ya da IBM (biraz outdated gerci) protokollerinden her hangi biri ya da bambaska bir protokol vasitasiyla monitorunle olsun, baska bir peripheralla olsun iletisim kuruyor olabilir. Muhtemelen, hatta hemen hemen eminim DiectX'in bu underlying protokolden haberi bile yoktur. DirectX de kendi basina araya bu gibi protokoller girmeden once islemini bitiren bir baska protokoldur (kernel space'de bir driver icinde ve hardware'da impleme edilen bolumunden bahsediyorum), islemin gerisi de (framebuffer filling) hardware tarafindan yapilir ve hicbir API'in umrunda bile olmaz ne olup bittigi. DirectX datayi hardware'a tasir, hardware'i datayi islemesi icin gerekli state'e sokar ve gerisini hardware'a birakir.

Son olarak, deneyimli bir coder'a benziyorsun C64, Amiga, x86 ASM falan dedigine gore... Bence deneyimli bir coder olarak gunumuz modern isletim sistemlerinde ringler oldugunu bilmelisin. User-space'den hardware'a erisim olmayacagini da bilmelisin. Her process'in kendi memory-space'i oldugunu ve absolute memory'lere erisemeyecegini de bilmelisin. Ve son olarak, memory protection'in hardware tarafindan saglandigi bir ortamda allocate edilmemis bir alana hodo diye yazip sonra uygulaman crash edince de "butun suc isletim sisteminin" dememen gerektigini de bilmelisin. Sonucta sana bir metod ve yol tanimis bu isletim sistemini yazanlar, onlara uydugun surece crash sansin cok azdir.

Keske yazmadan once bilgilerimizi bir kez daha kontrol etsek... Guzelim internetimizde cok guzide bir baska tool olan Google'a danismak her zaman kolay ve cabuktur.
Başlık: Tetris
Gönderen: hannibal - 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 :)
Başlık: Tetris
Gönderen: Decipher - 05.07.2009 04:56:04
Pfft... Yine basladik, olsun forumda aktivite oluyor hic degilse :). Soyle baglayacagim: Birincisi real-mode'u bilmedigimi de nerden cikarttin? Ikincisi, kullandigin toollari ve isletim sisteminin sana tanidigi yetkilere biraz daha goz atmani tavsiye ederim.

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.
Ve senin yaptigin da tam olarak bu. Bunun disinda MSDN'den quote vermissin fakat, VESA protokolunun DX ile hicbir direkt iliskisi yok. Verdigin link de hicbir sekilde bunu kanitlamiyor, cunku DirectX adinin gectigi quote VESA'yla alakasi bile olmayan bir yerden. Dikkat edersen o verdigin linkte bir adres var: http://msdn.microsoft.com/en-us/library/ms789524.aspx seklinde. O quote bu sayfadan ve ...'dan sonraki quote VESA'dan degil video port extensions'dan.

Verdigin diger link de sadece VESA'nin hardware'den monitore goruntu sinyalini tasiyacak yeni bir protokolunden bahsediyor. Diger bir degisle, bahsettigin konuyla alakasi bile yok.

Laf dalasi en nefret ettigim seydir. Ancak bir bilgi hatasi varsa da bunu duzeltip yapici olmak ve hatanin tekrarlanmamasi icin de cabalamak en iyisidir. Ben sana sadece ufak bir puruzunu gosterdim ve yardimci olmaya calistim. Ama ne yazik ki simdi goruyorum ki hic konusmamak en iyisiymis, arkadasca yaklastigim birinin bana ustunluk taslamasi biraz dokunuyor acikcasi. Espirili olarak zaten bildigin seyleri tekrarlamistim laf olsun maksat sen tutup benim ne bilip bilmedigim ustune atip tutmaya basladin.

Son olarak su laf sokmaya calistigin Ingilizce'yle ilgili, merak etme bir kac yildir yurtdisinda anadil Ingilizce okuyan biri olarak ve Ingilizce'yi gundelik yasantimda kullanan biri olarak, eminim su an Turkce'den de iyi konusuyor ve anliyorumdur.

Neyse keselim bu anlamsiz tartismayi burda. Gerek yok zaten boyle laf dalaslarina. Sonra internet dramalari bolum 272827120190'yi cekmeye basliyoruz cunku.
[/COLOR]
Başlık: Tetris
Gönderen: hannibal - 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...
Başlık: Tetris
Gönderen: spaztica - 05.07.2009 11:27:29
didişmeyin bakim...

decipher, biraz da sen yaz 3-5 tutorial'lar da bilmeyenler öğrensin. hannibal belki eksik biliyor olabilir, lakin niyeti bile yeter de artar, bildiğini paylaşmaya gayret ediyor. daha iyisi olamaz mı, olabilir, decipher da bildiklerini tutorial olarak yazarsa... ;)
Başlık: Tetris
Gönderen: Hydrogen - 05.07.2009 23:29:56
Konu disidir, kimseye cevap degildir. Sadece tutor lafi artik beni olumsuz tetikliyor:)
Dunya ahret tutorial oldu.
Tutorialler bizim ulke icin "neyi nasil yaptiklari" ile ilgili olmanin otesine gecemedi Hep 3ncu cogul sahislar.
Başlık: Tetris
Gönderen: spaztica - 05.07.2009 23:40:15
biraz da olumlu tetiklen be kürşat... bu kadar negatif açılarda durma, yakışmıyor sana. ;)
Başlık: Tetris
Gönderen: spritus - 06.07.2009 01:17:24
sanırım kürşat mekaniklikten şikayetçi :)
aynı his bende de var
Başlık: Tetris
Gönderen: hannibal - 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 ? :)
Başlık: Tetris
Gönderen: ssg - 07.07.2009 14:56:48
hatirladigim kadariyla windows'ta vga.sys vbe kullaniyor. o yuzden de delicesine yavas. zira vbe acceleration fonksiyonlari sunmuyor. belki bitblt o kadar.

vbe'yi de o kadar abartmaya gerek yok en buyuk islevi bir tane framebuffer yaratmak, ekran karti suruculeri bu isi kendileri yaparlar uc bes tane register'a yazmak icin vbe'ye ihtiyac duymazlar.
Başlık: Tetris
Gönderen: hannibal - 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 ?
Başlık: Tetris
Gönderen: skate - 10.07.2009 22:10:15
bir tatile gittik, ne muhabbetler dönmüş.
 
arkadaşlar, çoğumuz günümüz PCleri diye ifade edebileceğimiz bilgisayarlardan önceki platformlardan geliyoruz. yani 2009'da Atari, Commodore, Amiga, Amstrad, Spectrum kullanmak legal de PC'de realmode kullanmak illegal mi? bunun ne sakıncası var? modern hardware ve işletim sistemlerinde çalıştırmak için binbir türlü takla atmak gerekir ya da bu bile yeterli olmaz. Ancak eski PC'lerini saklayanlar, eski Commodore 64'lerini saklayanlar gibi bu programları çalıştırabilir. Kısacası "bu devirde PC'de bu yöntem kullanılır mı?" diyenlere scene'in "devir"den bağımsız bir olgu olduğunu ve böyle kalması gerektiğini hatırlatırım.
 
Hannibal arkadaşımız realmode kullanarak kaliteli bir ürün yayınlayarak Breakpoint gibi bir partide demo, oyun ya da benzeri bir compo'da derece alamayabilir ancak belki de birkaç seneye bu tür kullanımların azalmasıyla wild compo'da derece alabilir. Bu biraz işin espirisi ancak yanlış noktalara takılıyorsunuz. Hannibal herhangi bir iddia ile ortaya çıkmış olsa eleştiriler yerinde. Ancak "bir dil üzerinden kendi türkçe kütüphanemi oluşturup bununla da bir uygulama geliştirmek istedim" demiş ki bunu da birebir yapmış. Eline sağlık kardeşim.
 
Bundan sonraki projelerin için ben de diğerleri gibi modern bir library kullanmanı öneririm, yalnızca "tavsiye" olarak.
Başlık: Tetris
Gönderen: hannibal - 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 ?
Başlık: Tetris
Gönderen: skate - 04.08.2009 11:36:55
13h mode ne yazık ki modern ekran kartlarında çalışmıyor. bir ara nvidia driverları düzeltti, yeni versiyonlarda yine 13h mode çalışmaya başladı diye okudum, hatta verilen referans döküman da öyle gözüküyordu, ama kendim test ettiğimde yine çalışmadığını gördüm. sırf 13h mode çalşıtırmak için eski PC'imi sık sık açıyorum.
 
kısacası directX doğru karar olmuş derim :)