Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - ilk opengl programım :)
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

ilk opengl programım :)
Sayfa Önceki  1, 2, 3, 4, 5, 6, 7  Sonraki
 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Konu Dışı
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Tue Nov 29, 2005 3:40 pm    Mesaj konusu: Alıntıyla Cevap Ver

tamam hocam yeni gördüm hayatımda ilk kez delphi kodu görüyorum Smile

delphi iyide, exe'yi hiew de incelediğimde bazı saçmalıklar gördüm mesala:





levent sende biliyorsun asm saçma değilmi ? Laughing data bölümü ise 256byte gibi bişey yani en az
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Tue Nov 29, 2005 3:42 pm    Mesaj konusu: Alıntıyla Cevap Ver

orada o bölüme jumplayıp fonksiyonu öyle çalıştırıyor
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
ebleda



Kayıt: Dec 30, 2004
Mesajlar: 183
Nereden: usa

MesajTarih: Tue Nov 29, 2005 4:04 pm    Mesaj konusu: Alıntıyla Cevap Ver

Borland compileri referanslari kaldirabiliyor Wink 8k'da onu denemistim. Ben DASM'dan hoslanmiyorum (bazi programlarda problem yasadim).

Kodda radikal degisikliklerden kacinmaya calisiyorum. Sorun su:
Ayni isi goren farkli librarylerde farkli fonksiyonlar var. Eger ayni library icersinde o isi goren bir fonksiyon varsa diger librarydeki degil, kullanilan librarydeki cagirlilmali. Aksi halde compilerlarda bunu ayiklamak bayagi ugrastiriyor.

Biraz daha oynayayim ben en iyisi Wink

Size ufaltmak icin bir kac yol daha var ama dedigim gibi koda fazla mudahale etmek istemiyorum. Yapilacak baska birsey ise libraryleri static link etmeyerek, direkt fonksiyonlari kernel apileri ile cagirmak!

Delphi portunda buna paralel birsey gerceklesmis olabilr. Incelemek lazim.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Nov 29, 2005 4:23 pm    Mesaj konusu: Alıntıyla Cevap Ver

saçmalıklar var, doğrudur, onlar bi kenara, windows.pas'ı eklediğim için advapi32.dll vs gibi alakasız tonla referans oluşuyor.onları da ayıklarsam herhangi bir class yapısı bulunmadığı için kod "pure pascal" olacak. bi de şu float (bizde single Wink ) pointer'ı byte alana refere ettiğimde oluşan pointer hatalarını halledebilirsem 9kb hedefliyorum Smile

çalışalım arkadaşlar...

bi de aklıma şöyle bir fikir geldi, 4-5 kb feda edilip, bi decompressor eklenerek data dosyalarını(vector,texture.dat) sıkıştırarak overall en küçük size'ı elde etmeye çalışabilir miyiz?

farklı bir kategori... Wink
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
ebleda



Kayıt: Dec 30, 2004
Mesajlar: 183
Nereden: usa

MesajTarih: Tue Nov 29, 2005 4:58 pm    Mesaj konusu: Alıntıyla Cevap Ver

Su anda sadece kod kisminin ufalmasina odaklansak daha iyi olur. Bu kod 9k'ya cekilebilmesi lazim.

Delphi compilerinin daha ufak sonuc vermesinin sebebi, Delphi compilerinin C compileri kadar esnek olmamasindan kaynakliyor. Mesela Fortran en kati kurallara sahip dillerden biri. Bunun icin maksimum optimizasyonu sagliyacak kurallari programciya "zorlatabiliyor". Sonuc: Fortran, array minipulasyonlarinda C'den ortalama %40 daha hizli Exclamation (Elfe Fortranda devam etme gibi bir niyetim var Wink )

Iste esnekliginde belli bir bedeli var Wink Ama C'de amac minimum kod olusturma olarak kullanilirsa (kod yazarken), "teoride" en iyi sonucu C compileri ile elde edebilmek gerek.

C kodu icin, koda mudahale etmeden daha fazla ufaltmak mumkun degil gibi gorunuyor.

Bir ara vakit bulunca, WinMain'i ortadan kaldirip, CRTMain ile basliyacagim. Es is yapan fonksiyonlari ayni library'den sececegim (bunun buyuk bir rahatlama getireceginden eminim) ve fonksiyonlari runtime'da import edecegim. Bakalim bu nasil sonuc verecek. Ama butun bunlar kodun degismesi anlamina geliyor.

Bu arada, direkt kernel'a jump yapmamaya ozen gosterin!. Kernel icindeki offsetler hemen hemen her windows surumunde farkli. Bazen farkli build'lerde bile farkli olabiliyor. Ne yazik ki bunu DASM'da incelemek zor.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
DataDump



Kayıt: Aug 26, 2005
Mesajlar: 35

MesajTarih: Tue Nov 29, 2005 5:45 pm    Mesaj konusu: Alıntıyla Cevap Ver

Simdiki oyunlar 1 dvd olarak piyasaya cikiyor. Internet hizi desen min. 256 kbit oldu artik. 40K lik oyun, 9K ya inse ne olacak, boyunuzda 10 cm artis mi olacak.
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Nov 29, 2005 5:55 pm    Mesaj konusu: Alıntıyla Cevap Ver

ebleda demiş ki:

Delphi compilerinin daha ufak sonuc vermesinin sebebi, Delphi compilerinin C compileri kadar esnek olmamasindan kaynakliyor. Mesela Fortran en kati kurallara sahip dillerden biri. Bunun icin maksimum optimizasyonu sagliyacak kurallari programciya "zorlatabiliyor". Sonuc: Fortran, array minipulasyonlarinda C'den ortalama %40 daha hizli Exclamation (Elfe Fortranda devam etme gibi bir niyetim var Wink )



aynen katılıyorum, ancak borland'da kafayı buna takmış bir grup manyak olduğuna emin olduğum için de delphi'nin kendi kalıbına göre oldukça optimize çıktılar ürettiğini düşünüyorum.
esneklik konusu da şöyle, mesela
Kod:

if !RegisterClass(wc) ...

gibi bir ifade delphide pek mümkün değil, illa boolean kıyas gerekiyor, ya da dönen sonuca *her zaman* güven olmuyor.

yani benimki derleyici "destek"li optimizasyon Wink

9k'ya düşünce görüşmek dileğiyle...

yukarıdaki çağrımı yineliyorum, farklı diller bekliyoruz...
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
ebleda



Kayıt: Dec 30, 2004
Mesajlar: 183
Nereden: usa

MesajTarih: Tue Nov 29, 2005 6:03 pm    Mesaj konusu: Alıntıyla Cevap Ver

Aslinda Borland ve Intel'in optimizasyonlarini kiyaslamak lazim.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
lucifer



Kayıt: Nov 02, 2002
Mesajlar: 215
Nereden: Istanbool

MesajTarih: Tue Nov 29, 2005 6:22 pm    Mesaj konusu: Alıntıyla Cevap Ver

urettikleri executeable size'larina gore karsilastirirsak, protel hepsine basar, cunku temel birimi byte degil bit. 'type lucifertype array[0 to 7] of bool" diye birsey tanimlarsan 7 byte tutar normalde, protel'de 7 bit tutuyor. hatta, "type mytype2 array[0 to 10] of lucifertype" diye birsey tanimlarsak o da 70 bit tutuyor. bi integer tutacaksin mesela, "bu integer'in alacagi deger maksimum 1000 olacaktir" dersen o integer icin 10 bit ayiriyor... bu intlerden 6 tane lazimsa , array[0 to 5] , esittir 60 bit ~= 8 byte.

Zaten built-in type diye birsey de yok protel'de. sana 32 bit'lik int lazimsa "type my_int 0 to 4,123,321,431 diye bir type tanimlaman gerekiyor.

neyse... demek istedigim su idi aslinda.. o compiler kucuk yapar bu compiler buyuk yapar falan... sonucta, "black cat, white cat... the cat who catches the mice is the good cat."

Tabii yukardaki laf demo mantigina biraz aykiri gelebilir. O zaman da soyle derim, "white cat, black cat, the cat who publishes its demo is the good cat."
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Tue Nov 29, 2005 11:00 pm    Mesaj konusu: Alıntıyla Cevap Ver

8 den aşağı direkt asm ye çevirip derlemeden inmesinin çok zor olduğunu düşünüyorum ancak :
evet ebleda nın daha küçük yapmasını çekemeyerek işi sulandırdım, 4.608byte : http://rapidshare.de/files/8347464/Release.zip.html
tabii "saylanmaz" diyenler olabilir, haklılıkları vardır. Very Happy
diğer yolladığımın çalıştığı ve XP yüklü sistemlerde performansı (çokaz) düşmüş de olsa çalışması gerekiyor...
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
vmeydaneri



Kayıt: Dec 08, 2004
Mesajlar: 583
Nereden: Ankara

MesajTarih: Tue Nov 29, 2005 11:46 pm    Mesaj konusu: Alıntıyla Cevap Ver

@stroma:
calismiyor ve mnd.dll icinde CDXPacker var onla felan mi paketlemeyi denedin?
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Wed Nov 30, 2005 12:06 am    Mesaj konusu: Alıntıyla Cevap Ver

evet gecenin finali benden galiba: 15k=14848 byte.
neler yaptım:
dynamic belleğe geçtim[~5kb], windows apilerinin tamamını tek dosyaya toparladım[~500byte], bolca constant'ın yerine 3,5 vs vs yazdım[~80byte]. ve çalışan (çalışması gereken) bir 14848 byte elde etmiş oldum.

buyrun;

http://www.lbbsoftware.com/gldemo15k.rar
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Wed Nov 30, 2005 12:07 am    Mesaj konusu: Alıntıyla Cevap Ver

vmeydaneri demiş ki:
@stroma:
calismiyor ve mnd.dll icinde CDXPacker var onla felan mi paketlemeyi denedin?
pardon yaw söylemeyi unutmuşum. Wink dll haline getirmiştim o sınıfı. halihazırdaydı, onunla denedim. zaten büyük bi numarası da yok. sıkışmış haldeki asıl exe yi(diğer dll) program içinde açıyor(açılan yer temp klasörü olduğu için sanırım asıl sorun) maksat küçük bir "exe" olsun heheh Very Happy
aslında çok dosya kullanan bir uygulama olduğu için yaptığım çok da saylanmaz bir olay değil aslında Smile
bir tek bende çalışıyor sanırım, ilginç..
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Wed Nov 30, 2005 12:14 am    Mesaj konusu: Alıntıyla Cevap Ver

[quote="stroma"]
vmeydaneri demiş ki:
@stroma:
maksat küçük bir "exe" olsun heheh Very Happy


müsadenle, vay çakal vay demek istiyorum Wink
bu arada bende de çalışmadı
Klasik "uygulama düzgün başlatılamadı" hatası adres: 0XC0150002

bu arada bunlar VS 2003 ile derleniyor değil mi?, processor pack falan var mı? source verebilir misiniz ey c++ tayfası?
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Wed Nov 30, 2005 11:15 am    Mesaj konusu: Alıntıyla Cevap Ver

paketleyici kütüphanesini vermeye gerek yok. vedat ın 2D engine içinde veya http://www.koders.com/cpp/fid0CB0D6BCDF86B87129DEA12B0E350945C166B9BE.aspx ve http://www.koders.com/cpp/fid2327791ABBAF99709A72021EB4BB95B28AEF15EE.aspx adreslerinde var kodları. sanırım dx7 için yazılan bir motor için yazılmış. ben taşınabilirlik için dll yapmıştım zamanında. eski bişey ama epey iyi sıkıştırıyor.
paketlenmiş exe (exe de de pek değişiklik yok zaten, asıl boyutu 9.7 den aşağı indiremedim ben) yi ise şu kod ile geçici klasöründe açıyorum:
Kod:
#include "mnd.h"

int WINAPI WinMain (HINSTANCE inst,HINSTANCE pinst,LPSTR ArgV,int stil)
{
   CDXPacker *pack;
   pack = new CDXPacker;
   //////////////////////////////////////

   char *lpPathBuffer = new char[2048];
   char *expfile = new char[2048];
 
    // Get the temp path
    GetTempPathA(2048,
         lpPathBuffer);
   sprintf(expfile, "%sout.exe", lpPathBuffer);

   pack->ExpandToFile("in.dll", expfile);

   SHELLEXECUTEINFOA ShExecInfo = {0};
   ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFOA);
   ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
   ShExecInfo.hwnd = NULL;
   ShExecInfo.lpVerb = NULL;
   ShExecInfo.lpFile = expfile;
   ShExecInfo.lpParameters = "";
   ShExecInfo.lpDirectory = NULL;
   ShExecInfo.nShow = SW_SHOW;
   ShExecInfo.hInstApp = NULL;   
   ShellExecuteExA(&ShExecInfo);
   WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

   remove( expfile);
    return 0;
}
aslında bu kod da biraz küçültülebilir belki ama zaten boş uygulamada bile 4 den aşağı -en azından direkt olarak- indirmiyor derleyici.
VS 2005 beta2 kullanıyorum, bazı çalıişmama sorunları bundan kaynaklanıyor(ilk 10 kb likteki tekrar yükleyin hatası, manifest falan: .net ile dll hell den kurtarma girişimi yüzünden heralde galuba..). adres hatası verenlerin sorununu anlayabilmiş değilim. sanırım paketi expand ederken sorun var. ancak exe düzgün çıkartılıyor bende ve çalışıyor, ilk kez local temp klasörü ile iş yapıyorum orda yanlış bişey yapmış olabilirim..

he sıkışmış binary yi exe içine gömmeyi denemedim değil ama o zaman da 10kb oldu boyut. bi işe yaramadı yani heheh Smile

tabii çalışmadıktan sonra kb önemli değil o ayrı. ben biraz gırgırına yaptım. sanırım böyle bakınca levent in 15k lığı öne çıkıyor, gökyüzündeki değişikliği saymazsak hatası yok Wink
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Konu Dışı Tüm saatler GMT +2 Saat
Sayfa Önceki  1, 2, 3, 4, 5, 6, 7  Sonraki
3. sayfa (Toplam 7 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.201 Saniye