commodore.gen.tr

Commodore => Commodore Yazılım => Konuyu başlatan: vigo üzerinde Ekim 31, 2006, 16:57:46 ÖS



Konu Başlığı: Bronx'dan yeni Commodore 64 release'i
Gönderen: vigo üzerinde Ekim 31, 2006, 16:57:46 ÖS
detaylar :

http://bronxwhq.org/bronx/news_arch.php?id=44&c=1


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: LW3D üzerinde Ekim 31, 2006, 21:39:48 ÖS
ilk linkten indiremedim...Ama diğer linkten indirebildim..Hoş bir çalışma olmuş. Aşağıdaki resim 3 kısımdan oluşan çalışmanın bölümlerini gösteriyor. 

(http://noname.c64.org/csdb/gfx/releases/42000/42653.gif)


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: vigo üzerinde Kasım 01, 2006, 00:04:28 ÖÖ
sanırım şuan down olmuş yada sabahtan beri ...


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: nightlord üzerinde Aralık 18, 2006, 21:21:20 ÖS
ilk yapildigi zamana gore super bi demo. bence c64 icin turkiyede cikmis en iyi demolardan biri. Ozellikle noktalar spirali efektinin hastasiyim. sessiz sakin fakat birgun okuz bi dunya rekoru patlatacagini bekledigim kaliteli coder endonun ellerinden cikmis bi part. Ayrica Skate'in vector parti da yine Turkiyedeki en hizli line vector parti sanirim





Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: Skate üzerinde Aralık 18, 2006, 23:29:02 ÖS
yok be nightlord naaptın abicim "Türkiye'deki en hızlı line vector" falan :) iltifatına teşekkür ediyorum ama o benim yapana kadar akla karayı seçtiğim optimizasyon mahrumu ve şu anda source codelarına bakınca hiçbirşey anlamadığım bir kodum :) Ayrıca commodoredaki ilk 3d kodum olma özelliğini taşıyor.

Hazır yeri gelmişken belki birilerinin işine yarar diye o kodda kullandığım rotasyon ve projeksiyon formülünü yaziim buraya.

Rotasyon
Kod:
rc1 = c1 * cos(angle) + c2 * sin(angle)
rc2 = c1 * sin(angle) - c2 * cos(angle)

sin ve cos'u tablola

rc1 = c1 * cosT[angle] + c2 * sinT[angle]
rc2 = c1 * sinT[angle] - c2 * cosT[angle]

C64'de float point olayı kastığı için sinT ve cosT 256 ile çarpılmış halde duruyor olsun. Negatif olma durumunu ise ikinci bir tablo ya da code içersinde basit bir range mantığıyla halletmek mümkün.

Dolayısıyla son formül;

rc1 = (c1 * cosT[angle] / 256) + (c2 * sinT[angle] / 256)
rc2 = (c1 * sinT[angle] / 256) - (c2 * cosT[angle] / 256)

rc1 = (c1 * cosT[angle] >> 8) + (c2 * sinT[angle] >> 8)
rc2 = (c1 * sinT[angle] >> 8) - (c2 * cosT[angle] >> 8)

halini alıyor.

Sonuç:
------
                                                     Toplama
                                                        |
rc1 = ((8bit x 8bit = 16bit) (işlem yok highbyte'ı al)) + ((8bit x 8bit = 16bit) (işlem yok highbyte'ı al))
rc2 = ((8bit x 8bit = 16bit) (işlem yok highbyte'ı al)) - ((8bit x 8bit = 16bit) (işlem yok highbyte'ı al))
                                                        |
                                                     Çıkarma

Projeksiyon
Kod:
proj = coor / (z + dist) * zoom

dist = 256, zoom = 64 =>

proj = coor / (z + 256) * 64

         coor
proj = --------- * 64
        z + 256
       (z - 256) <- eşliniğiyle çarpıyoruz

         coor * (z - 256)
proj = --------------------- * 64
       (z - 256) * (z + 256)

       (coor * z) - (coor * 256)
proj = ------------------------- * 64
         (z * z) - (256 * 256)

       (coor * 256) - (coor * z)
proj = ------------------------- * 64
         (256 * 256) - (z * z)

       (coor << 8) - (coor * z)
proj = ------------------------- * 64
            65536 - (z * z)

       (coor << 8) - (coor * z)
proj = -------------------------
            65536 - (z * z)
            -----   -------
              64       64

       (coor << 8) - (coor * z)
proj = -------------------------
         1024 - ((z * z) >> 6)

sonuç:
------
                                                         (çıkarma işlemi)
                                                                |
       (işlem yok, coor doğrudan high-byte olarak kullanılıyor) - (8bit x 8bit = 16bit)
proj = -------------------------------------------------------------------------------- (bölme işlemi)
                     1024 - ((8bit x 8bit = 16bit) (6 bit sağa kaydırma))
                          |
                   (çıkarma işlemi)


Eğer 6 bit kaydırmayı da optimize edersek;

                                                         (çıkarma işlemi)
                                                                |
       (işlem yok, coor doğrudan high-byte olarak kullanılıyor) - (8bit x 8bit = 16bit)
proj = -------------------------------------------------------------------------------- (bölme işlemi)
              1024 - ((8bit x 8bit = 16bit) (2 bit sola kaydırma ve byte switch))
                   |
            (çıkarma işlemi)

Bunları hala arşivimde saklıyordum :)

Tabii artık matris hesabı kullanıyorum ve özellikle rotasyon rutinim kat kat hızlı bundan ama bu da commodore'a uygun rutin yazmakla ilgili fikir verebilir ilgilenenlere.


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: nightlord üzerinde Aralık 19, 2006, 01:10:33 ÖÖ
abi yanilmiyorsam tensiondaki line vector hem midnite movie/bronx'takinden hem de color of code/accuracy'dekinden daha hizli. ama gozlerim + emulator benim aldatiyor olabilir. henuz tension'i dikkatli bi sekilde gercek makinede izlemedim.


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: LW3D üzerinde Aralık 19, 2006, 10:58:11 ÖÖ
kaç gündür vektörlere bakıyorum. Kafam kaldırmıyor sanırım. Nightlord'un notlarını yeniden okuyup anlamaya çalışıyorum. Ama sanırım sizden canlı bir ders almam gerekecek :) NightShift'te bir yere kaybolmayın :D


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: Arda üzerinde Aralık 19, 2006, 14:06:28 ÖS
kaç gündür vektörlere bakıyorum. Kafam kaldırmıyor sanırım.

Ama ondan önce trigonometri ile de mucizeler yaratılabiliyor, boşver vektörü ilk aşamada :) Sonra Lineer Matematiğe geçersin.

Bu arada Nightlord'un sözü geçen notları nerede? Bir göz atmak isterim.

Bir de, skate, paylaşım için sağol, bakalım bu hesaplara dayalı çalışır bir kod çıkarabilecekmiyim spectrumda.


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: LW3D üzerinde Aralık 19, 2006, 14:23:39 ÖS
:) Ben 3D ile ilgileniyorum. Renderman Shading Diline biraz baktım (aslında çok baktımda pek anlayamadım belkide). Vektörler ve matrisler bu aşamada çok önemli. Ben bu nedenle vektörlerle ilgilenmeye çalışıyorum. Amacım bir taşla birkaç kuş vurmak :P


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: Skate üzerinde Aralık 19, 2006, 15:31:31 ÖS
Arda: Aslında bu formülleri fikir sahibi olun diye verdim. Eğer gerçekten kodlamak istiyorsan sana matrisler üzerinden yürümeni tavsiye ederim. Spectrum'da kodlaman çok daha basit olur. İngilizce sorunun yoksa sana tavsiye edeceğim yegane döküman:

http://www.ffd2.com/fridge/chacking/

8. ve 9. sayılarda 8 bit makinelerde (commodore'a özelliştirilmiş anlatsa da kolayca diğerlerine de uyarlanabilir) 3d hesaplamalar için matris kullanımı çok güzel anlatılmışdır. Tavsiye ederim.


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: ozkano üzerinde Aralık 19, 2006, 17:47:05 ÖS
öss sınavında zar zor 5 tane matamtik sorusu çözdüm, 5 yıllık üniversite hayatımda bir tek dersten oda matamatikten kaldım benim programcı olmam biraz zor olacak galiba


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: nightlord üzerinde Aralık 19, 2006, 21:27:03 ÖS
@arda:
http://nightnetwork.org/c64/main.html


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: Bakkada üzerinde Aralık 19, 2006, 22:21:24 ÖS
@ozkano
Farketmes abi benim matematigim iyiydi ama ben gene de olamadim :)


Konu Başlığı: Ynt: Bronx'dan yeni Commodore 64 release'i
Gönderen: LW3D üzerinde Aralık 20, 2006, 10:55:26 ÖÖ
ÖSS sınavında yapılan matematikle konunun alakası yok. Çünkü eğitim sistemimizde sorunlar var ve bugün ulaşabildiğimiz kaynaklarda konuyu bize çok güzel ve açıklayıcı anlatıyor. Skate'in yolladığı linke bakan ve ingilizcesi olan birinin zamanında bize çok karışık gelen, formulleri kolayca anlayabileceğini düşünüyorum. Gerçekten çok zor değil...