Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriProjeThe Final Cartridge III+
Sayfa: 1 ... 9 10 [11] 12 13 ... 18   Aşağı git
Yazdır
Gönderen Konu: The Final Cartridge III+  (Okunma Sayısı 167038 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #150 : Ekim 08, 2015, 22:25:33 ÖS »

Malum kimin hangi projede olduğunu hangisini okuduğunu unuttuğu şu günlerde, ben de bu rüzgara kapıldım. Kime teşekkür edip etmediğimi hatırlamıyorum Kahkaha
Hehe güzel espri, iyi denk getirdin =)
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #151 : Ekim 08, 2015, 22:27:20 ÖS »

@Simon : Beynim herşeyi cache'leyemez oldu artık, okumuştum aslında ben o yazdığını. Şimdi bir daha kafa yorup aynı sonuca ulaşmışım

Nmi iş görür bu durumda. Ancak standart bir şey olsun deniyorsa en mantıklısı pek tabii I/O bölgesini decode etmek. Cpld üstünde gördüğüm kadarıyla delimawi address bus'ı latch'ler ile sürüyor.

Diğer alternatifler, (kendisi de akıl eder ya sesli düşünüyorum )

1. Discrete logic ile tam adresi decode etmek. Databus zaten cpld'ye bağlı olduğu için datayı latch'leyebilir.

2. I/O 1 ve / veya I/O 2 sinyallerini kullanıp tüm i/o bölgesini bir byte'mışçasına decode etmek.

Maksat aslında PIC'i durumdan haberdar etmek, noluyo lan diye geldiğinde rutin onun okuyacağı bir yerlere yazıp istediği kadar data transfer edebilir.

@cdemir : Sağolasın
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #152 : Ekim 08, 2015, 22:28:00 ÖS »

Bu arada oyunu Metallic'in yaptığından farklı bir şekilde kırmak gerekmiyor mu bunun için? İlk bölüm yüklendi eyvallah, kartuş ilk bölüm bittiğinde ikinciyi nasıl yükleyecek? Oyunun normal şartlarda diskten yükleme yaptığı yere kod yazmak lazım sanırım.

Aynen öyle. Şu kısmı gözden kaçırmışsın:

Ninjanın isteği basit, bana şu isimdeki dosyayı yükle komutu verecek sadece.

Sana deneme yapman için The Last Ninja'nın intro ve depacker'lardan sonraki açılmış halini vereyim:
https://dl.dropboxusercontent.com/s/mk4ed3q0511aqbu/ninja.d64

d64'ün içerisinde ninja-0812.prg dosyası var.
Dosya, $0812-$fffe aralığına yükleniyor, jump adresi $9c00.
$ce80'de, level'ları yüklerken çağrılan bir rutin var.
Bunun $cebb-$cee5 kısmı, level'ları disket sürücüden yüklemek için.
Bu bölümü silerek yerine kendi kodunu koyabilirsin.
Yüklenecek level'ın dosya ismi $cef0'da.
Sen benden hızlısın valla, ben cevap yazana kadar sabah olacak nerdeyse =)
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #153 : Ekim 08, 2015, 22:45:12 ÖS »

@Metallic : Senin bana cevaben yazdıkların da bir önceki sayfada kalmış, şimdi gördüm.

Tabii ne kadar kod alanı var bilmiyorum. Şimdi düşündüm de hakkaten fazla fantastik kaçar. Level geçişinde adam nmi interrupt ile müzik sample falan çalıyorsa da olmaz. Level geçişinde interrupt kullanıyor mu bu arada Last ninja?

42 byte çok az bu rutin için, yine en iyisi PLA'nın ürettiği I/O1 I/O2 sinyalleri.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #154 : Ekim 08, 2015, 22:54:58 ÖS »

Level geçişinde interrupt kullanıyor mu bu arada Last ninja?
Hayır, irq kapatılmış durumda. nmi'yı zaten kullanmıyor.

42 byte çok az bu rutin için, yine en iyisi PLA'nın ürettiği I/O1 I/O2 sinyalleri.
Bence de, io tetiklemesi yapılırsa kullanımı çok pratik olur.
Logged
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #155 : Ekim 08, 2015, 23:05:29 ÖS »

Şimdilik geçici çözüm olarak şunu yapabilirim. 0xFE nin değeri örn saniye de bir kere DMA yapılarak doberman tarafından dinlenebilir. Bu değer 1 olduğunda, diğer parametreler okunarak DMA başlar. Bitince bu değer 2 yapılır.

0-Idle
1-DMA Request From C64
2-DMA Complette
delimavi, bir daha düşündüm de bahsettiğin geçici çözüm, dobermana yazılımsal olarak dma tetiklemesi yapmak için uygun aslında. Saniyede bir kere bir adres için dma yapmak ninjayı yavaşlatacak birşey değil tabi, ama bu sadece ninja'ya özel bir çözüm olacak. Diğer programlarda o küçük bekleme özellikle demolarda garanti sorun çıkartır. Gerçi last ninja'da da oyunun başında ninja resminin aşağıdan yukarıya doğru yükseldiği bir bölüm var, orada da vic2-6510 zamanlaması önemli. Bir de dma tetiklemesi için kullanılacak adreslerin başka programlarda rastgele değişmesi olasılığı var. Birkaç adres kontrol edilecek olursa olasılık azalır, ama yine de pek uygun bir yöntem olmaz.

Sonuç olarak c64'ten dma tetikleyebilmek için donanım kullanmak en mantıklısı gibi görünüyor.

edit: ekleme
« Son Düzenleme: Ekim 08, 2015, 23:15:11 ÖS Gönderen: Metallic » Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #156 : Ekim 08, 2015, 23:14:58 ÖS »

Bu arada 0xFE'nin değerinin oyun içinde sizin belirlediğiniz desene uyması durumu ne olacak? $FB-$FE arasındaki 4 byte'a bakılıp DEADBEEF, CAFEBABE gibi bir anahtar kelime kullanılabilir (Bunlar 4 byte hexadecimal ile yazılabilen kelimelerden )

Badline'ın sonunda değil içinde dma yapılırsa çalışan programı etkilemez. Ancak bunun için tüm devreyi tekrar tasarlaması gerekir. VIC 60 küsür byte okuyor badline'larda. Doberman'ın 4 adresten veri okuyabilmesi için süre çok yeterli. Tabii yapılabilirliği soru işareti.
Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #157 : Ekim 08, 2015, 23:20:53 ÖS »

Bu arada 0xFE'nin değerinin oyun içinde sizin belirlediğiniz desene uyması durumu ne olacak? $FB-$FE arasındaki 4 byte'a bakılıp DEADBEEF, CAFEBABE gibi bir anahtar kelime kullanılabilir (Bunlar 4 byte hexadecimal ile yazılabilen kelimelerden )
Sadece last ninjaya özel olarak oyunun kullanmadığı adresler kullanılabilir, ama genel kullanımda işe yaramaz bu teknik.

Badline'ın sonunda değil içinde dma yapılırsa çalışan programı etkilemez. Ancak bunun için tüm devreyi tekrar tasarlaması gerekir. VIC 60 küsür byte okuyor badline'larda. Doberman'ın 4 adresten veri okuyabilmesi için süre çok yeterli. Tabii yapılabilirliği soru işareti.
delimawi baksın artık bu soruya =)
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #158 : Ekim 09, 2015, 22:30:48 ÖS »

Badline'ın sonunda değil içinde dma yapılırsa çalışan programı etkilemez. Ancak bunun için tüm devreyi tekrar tasarlaması gerekir. VIC 60 küsür byte okuyor badline'larda. Doberman'ın 4 adresten veri okuyabilmesi için süre çok yeterli. Tabii yapılabilirliği soru işareti.

Tam olarak o şekilde değil. Bad Line olmayan durumlarda, Yani Bus Available iken, 6510 sadece Phi2 High iken bus'ı kullanıyor. Low iken gene her clock'da VIC-II Ram den okuma yapıyor. Bus Available olmadığı durumlarda, yani aslında Bad Line dediğimiz raster satırının başlarındaki bölümlerde veya sprite erişimi sırasında, VIC hem high hem de low zamanını RAM'e erişmek için kullanıyor. Yani kısaca Bus Available değil iken DMA ile bile olsa, RAM'e erişmek mümkün değil.

Ancak şöyle bir durum var. İlk tasarımda Doberman Bad Line ile beraber DMA'ya başlıyordu ve sadece 1 byte bile transfer edilecek olsa, bir sonraki Bad Line'e kadar DMA'yı açık bırakıyordu. CPLD kodunu düzenlerken bunu optimize ettim. Detayları yazmıştım.

Şimdi örneğin 1 byte transfer edilecek ise, misal belirli bir adresi okumak gerekiyor ise, Doberman Bad Line'ı bekliyor, VIC Bus'ı tam zamanlı ele alınca sıraya giriyor, yani DMA Hattını low a çekerek VIC işini bitirince 6510 un çalışmaya devam etmesini engellemiş oluyor. VIC işini bitirir bitirmez bus'ı kullanarak işini yapıyor ve hemen ardından 6510'u serbest bırakıyor, bir sonraki Bad Line'ı beklemiyor.

Bu da demek oluyor ki, bir kaç adresin DMA okunması aslında kullanıcı açısından farkedilir bir yavaşlamaya sebep olmaz. Her bir ekran refresh'de 312 raster satırı var. Her bir raster yaklaşık 63 cycle. Bizim DMA ile bir byte okumamız yaklaşık 3 C64 cycle sürüyor. Hadi girdisi çıktısı 10 desek, her bir ekran refresh de DMA ile kontrol yapılsa bile 10000'de 5 oranında bir yavaşlamaya sebep olur, ki saniye de bir yaparsak bu işi çok daha az bir orandan bahsediyoruz.

Ama burada esas problem, Demolarda kullanılan efektlerdeki kritik zamanlamaları bozuyor olmak.
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #159 : Ekim 09, 2015, 22:51:09 ÖS »

@delimawi : doğru diyosun, içinden geçicem yaklaşımı yemiyor şüphe ile yazmıştım zaten. mantık da bunu söylüyor zaten, vic'e clock'un ilk fazını kullanmak yetseydi zaten 6510'u kesmesine gerek yoktu.

sadece sesli düşünüyorum, databus'ı çok sıkı takip edip 6510'un memory access yapmayan anlarını yakalayıp cycle stealing dma yapmak mümkün müdür acaba kartuş ile?

6502 için yapılmış şurada tartışılan bir şey görmüştüm
http://forum.6502.org/viewtopic.php?f=1&t=1160

ps1: Referans verilen site artık piyasada gözükmüyor.

ps2: Bu arada bu tartıştığımız meseleleri aslında ayrı bir konu yapmak lazım.

ps3: Biraz baktım da c64'de cycle stealing dma zor gibi. Sync sinyali yok en başta işlemci üstünde.
« Son Düzenleme: Ekim 10, 2015, 01:46:04 ÖÖ Gönderen: i_r_on » Logged

Every imagination is one's self reflection but not every self reflection is imagination. <I.R.on - 2001>

twitter | blog
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #160 : Ekim 10, 2015, 22:52:41 ÖS »

Sonunda bir etiket hazırlayabildim:






Şimdi geriye montaj işleri kaldı, birkaç günümü alır sanırım.
Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #161 : Ekim 10, 2015, 23:00:33 ÖS »

Çok güzel görünüyorlar. İlk müşteri benim... Kahkaha
Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
KNG
Üye
****
Mesaj Sayısı: 315



Üyelik Bilgileri
« Yanıtla #162 : Ekim 10, 2015, 23:42:27 ÖS »

Satışa ne zaman çıkıyor?
Logged
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #163 : Ekim 10, 2015, 23:59:01 ÖS »

Çok güzel görünüyorlar. İlk müşteri benim... Kahkaha
Sağolasın delmawi.  Ben de donerman'ı sabırsızlıkla bekliyorum, ama şu reset yemeyen oyun sorununu çözmek lazım =)

Satışa ne zaman çıkıyor?
Yukarıda belirttiğim gibi son adım olarak montaj işleri kaldı KNG. Kartuş kutuları da geldi, eksik malzeme kalmadı.
Logged
kirkoryan
Ziyaretçi
« Yanıtla #164 : Ekim 11, 2015, 00:39:02 ÖÖ »

Abi bitmiş hali on numara olmuş eline emeğine sağlık satışa ne zaman çıkıyor?
Birde satışa çıkacak adet nedir?
Logged
Sayfa: 1 ... 9 10 [11] 12 13 ... 18   Yukarı git
Yazdır
Gitmek istediğiniz yer: