Gönderen Konu: Tetris  (Okunma sayısı 7929 defa)

Tetris

« : 30.06.2009 21:15:02 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
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...
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #1 : 03.07.2009 00:35:02 »
Hızlı düğmeleri aç

tesla

İleti: 426

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://
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.

Tetris

« Yanıtla #2 : 03.07.2009 07:51:21 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
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
« Son Düzenleme: 03.07.2009 07:54:50 Gönderen: hannibal »
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #3 : 03.07.2009 17:39:01 »
Hızlı düğmeleri aç

tesla

İleti: 426

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://
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.

Tetris

« Yanıtla #4 : 04.07.2009 20:31:44 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
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 :)

Tetris

« Yanıtla #5 : 04.07.2009 21:21:40 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
:) 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...
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #6 : 04.07.2009 22:09:59 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
Alıntı yapılan: hannibal;20972
Vesa her zaman orda, Dxd Vesa ile çalışır.


:confused: bundan emin misin?

Tetris

« Yanıtla #7 : 04.07.2009 22:37:40 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
evet :) ve ne yazıkki :D
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #8 : 05.07.2009 02:32:31 »
Hızlı düğmeleri aç

Decipher

İleti: 482

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://beskrajnost.com
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.
100% pure coder pr0n

Tetris

« Yanıtla #9 : 05.07.2009 03:10:25 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
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 :)
« Son Düzenleme: 05.07.2009 03:24:17 Gönderen: hannibal »
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #10 : 05.07.2009 04:56:04 »
Hızlı düğmeleri aç

Decipher

İleti: 482

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://beskrajnost.com
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]
100% pure coder pr0n

Tetris

« Yanıtla #11 : 05.07.2009 06:15:33 »
Hızlı düğmeleri aç

hannibal

İleti: 17

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
    • http://site.mynet.com/arcokyazilim/
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...
c64 ile doğdum, amiga ile büyüdüm, x86 ile yıprandım...

Tetris

« Yanıtla #12 : 05.07.2009 11:27:29 »
Hızlı düğmeleri aç

spaztica

İleti: 1.493

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
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... ;)

Tetris

« Yanıtla #13 : 05.07.2009 23:29:56 »
Hızlı düğmeleri aç

Hydrogen

İleti: 932

Çevrimdışı
  • 7DX Organizer
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.glance.ws
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.

Tetris

« Yanıtla #14 : 05.07.2009 23:40:15 »
Hızlı düğmeleri aç

spaztica

İleti: 1.493

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
biraz da olumlu tetiklen be kürşat... bu kadar negatif açılarda durma, yakışmıyor sana. ;)