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 ... 8 9 [10] 11 12 ... 18   Aşağı git
Yazdır
Gönderen Konu: The Final Cartridge III+  (Okunma Sayısı 167037 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Cengiz Demir
Uzman
*****
Mesaj Sayısı: 3.828



Üyelik Bilgileri
« Yanıtla #135 : Ekim 08, 2015, 11:09:53 ÖÖ »

@Metallic, hatırlarsan bu konuda
Dropbox resim linkleri ile ilgili bir şeyler sormuştun.

Bende sana excelden bu işi bir şekilde halledebileceğini, formül yazarak anlatmıştım.

Gerçi cevabı yazdıktan sonra farkettim. Yaptığım tereciye tere satmak bile değil, çok çok öte bir şeydi. Artık yazmış olduğum için geri de dönemedim. Kahkaha

Sen kodlama konusunda feriştahını yapıyorsun.
Biz de sana sanki senin aklına hiç gelmezmiş gibi, excel den basit bir formül öneriyoruz. (Gibi hissetmiştim o an )

Ama beni hiç bozmadan; "Teşekkürler, çok da fazla işim olmuyor, böyle idare ederim" diyerek mütevazi bir cevap vermiştin.

( Bu forumu sevme nedenlerimden birisi de bu mütevazi ortam.. )


Bu tür projeler için bir şeyler yazabilecek kadar bilgim olmasa bile,
(excel formulü lazımsa yardımcı olabilirim ama Kahkaha )
keyifle okuyarak takip ediyorum. Hepinizin ellerine sağlık.

Umarım projeler hiç bitmez sayısı artarak devam eder.


Logged

eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #136 : Ekim 08, 2015, 15:56:14 ÖS »

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.

Teşekkürler, hemen inceleyeceğim, bakalım nasıl entegrasyon yapabiliriz. Bir şekilde buraya atılacak rutin ile Doberman'a request göndererek, Dobermanın DMA ile yükleme yapmasını sağlarız.
Yüklenecek Level'ın başalngıç adresi belli mi? Bir yerden mi okumam gerekecek? Yoksa 0801'e yüklemem yeterli mi bunları rutinde?
« Son Düzenleme: Ekim 08, 2015, 16:04:12 ÖS Gönderen: delimawi » Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
LW3D
Yönetici
*****
Mesaj Sayısı: 11.418


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #137 : Ekim 08, 2015, 16:19:38 ÖS »

@Metallic : The Last Ninja ile beni benden aldın Tebrikler...Harika olmuş...
Logged

Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #138 : Ekim 08, 2015, 17:53:47 ÖS »

@Metallic, hatırlarsan bu konuda
Dropbox resim linkleri ile ilgili bir şeyler sormuştun.

Bende sana excelden bu işi bir şekilde halledebileceğini, formül yazarak anlatmıştım.

Gerçi cevabı yazdıktan sonra farkettim. Yaptığım tereciye tere satmak bile değil, çok çok öte bir şeydi. Artık yazmış olduğum için geri de dönemedim. Kahkaha

Sen kodlama konusunda feriştahını yapıyorsun.
Biz de sana sanki senin aklına hiç gelmezmiş gibi, excel den basit bir formül öneriyoruz. (Gibi hissetmiştim o an )

Ama beni hiç bozmadan; "Teşekkürler, çok da fazla işim olmuyor, böyle idare ederim" diyerek mütevazi bir cevap vermiştin.

( Bu forumu sevme nedenlerimden birisi de bu mütevazi ortam.. )


Bu tür projeler için bir şeyler yazabilecek kadar bilgim olmasa bile,
(excel formulü lazımsa yardımcı olabilirim ama Kahkaha )
keyifle okuyarak takip ediyorum. Hepinizin ellerine sağlık.

Umarım projeler hiç bitmez sayısı artarak devam eder.

cdemir, evet hatırlıyorum tabi, dropbox sıkıntısı. İlgilenmiş olman yeterli, sağolasın. Açıkcası dropbox linkini düzenlemek için Excel'i kullanmak aklıma gelmemişti. Excel'de kendimi kurtaracak kadar birşeyler biliyorum, ama hangi formülle nasıl yaparım diye uğraşmak zor geldi, hala elden düzeltmeye devam ediyorum =)

Madem ısrar ettin, bana bir formül hazırlarsan sevinirim.
Örneğin dropbox'ın verdiği şu linki:
https://www.dropbox.com/s/zoagzmhlunp8blc/20151001_123110.jpg?dl=0
şu hale getirmek gerekiyor:
https://dl.dropboxusercontent.com/s/zoagzmhlunp8blc/20151001_123110.jpg

Çok uğraştıracak birşeyse boşver, ben elden yapmaya alıştım zaten =) Ayrıca güzel dileklerin için teşekkürler.


Teşekkürler, hemen inceleyeceğim, bakalım nasıl entegrasyon yapabiliriz. Bir şekilde buraya atılacak rutin ile Doberman'a request göndererek, Dobermanın DMA ile yükleme yapmasını sağlarız.
Yüklenecek Level'ın başalngıç adresi belli mi? Bir yerden mi okumam gerekecek? Yoksa 0801'e yüklemem yeterli mi bunları rutinde?

Benim aklıma şöyle bir şey geliyor: 6510'un istek yapmak için dobermanı nasıl tetikleyeceğini bilemiyorum, ama istek yapmadan önce belirli adresleri düzenler, sonra tetiklemeyi yapar. Ardından dma'nın bitmesini bekler, bitince de yoluna devam eder.

Örneğin şu adresler kullanılabilir:
$fb-$fc : dosya ismi pointer'ı (low byte, high byte)
$fd : dosya ismi uzunluğu
$fe : ready flag (ilk değeri: 0)

6510 istek yapmadan önce bu adresleri düzenleyecek, sonra dobermanı tetikleyerek $fe adresi (ready flag) 1 olana kadar beklemeye başlayacak. Tetiklemeden sonra doberman, önce dma yaparak $fb,$fc ve $fd adreslerini okuyacak, sonra bu adreslerdeki değerlere göre yine dma yaparak bellekten dosya ismini okuyacak. Ardından istenilen dosyayı dma yaparak belleğe yükleyecek. Yükleme bitince yine dma yaparak ready flag'i 1 yapacak. 6510 da ready flag'in 1 olduğunu görünce yoluna devam edecek.

Yüklenecek level'ın başlangıç adresi için dosyanın ilk iki byte'ını kullanırsın, prg dosyaların ilk iki byte'ı dosyanın yükleneceği adresi gösterir (low byte, high byte şeklinde).


@Metallic : The Last Ninja ile beni benden aldın Tebrikler...Harika olmuş...

Teşekkürler LW3d =)  The Last Ninja'yı ben de severim, dün akşam trainer'sız son bölüme kadar geldim, ama en sondaki o samuray'ı öldüremedim bir türlü =)


edit: dma sıralaması
« Son Düzenleme: Ekim 08, 2015, 18:20:18 ÖS Gönderen: Metallic » Logged
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #139 : Ekim 08, 2015, 18:36:18 ÖS »

Benim de aklıma benzer bir yöntem geldi ancak bir iki nüans var.
Doberman64 Flash versiyonunda aslında dosya isimleri mantığı yok. Bunun yerine slot ve adres bilgisi var.

Şöyle ki;
Flash 4MByte olduğu için 24 bit adresleme gerekiyor. Yani UpperByte, HighByte, LowByte şeklinde. Buradaki slot no UpperByte'a karşılık geliyor.

Örneğin Last Ninja belirli bir slotta bulunuyor. Diyelim ki slot no:3
Eğer Last Ninja 3. slotta ise, Flashtaki Yeri 0x030000 dan başlıyor demektir.
Aklıma iki yöntem geliyor, dosya isimlerini değiştirerek flashtaki adresleri gösterecek bir düzenleme yapılabilir belki. Yani ninja2a yerine X040000 gibi bir isimlendirme yapılırsa, Doberman bunu decode ederek flashtaki hangi bölümü DMA yapacağını bulabilir. Buna bir bakacağım.

Dosya isimleri ana program içerisinde mi gömülü yoksa her bir level dosyasının içerisinde mi bir sonraki level'in dosya adı var? Gerçi bende buna bakmaya çalışırım.

C64 içerisindeki bir programdan DMA tetikletmek için aslında bir öngörüm olmamıştı, hep Doberman tarafından yada butona basılınca DMA olacak şekilde düşünmüştüm yapıyı. Dolayısı ile buna hardware bir hazırlık yok şu aşamada. Bunu da düşünerek, final donanıma bir yöntem eklemeliyim.

Ş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

Aslında düşündüm de, dosya ismini bile hiç kullanmadan, 3 byte adres bilgisi de bu yöntemle dobermana aktarılabilir. Deneyip bilgi vereceğim.

Bana gönderdiğin 0812 dosyası çalışmadı DMA yapınca. Ekranda bazı karakterler çıkıyor kalıyor. Ama disk içerisindeki the last ninja çalışıyor. Acaba DMA yapmadan önce ROM bölgelerini kapatmak mı gerekiyor? $0812-$fffe aralığına yüklendiği için sıkıntı oluyor sanırım ROM'lar açık iken.

Daha incelemedim ama DMA öncesi sanki interruptları kapatıp, ROM ları da kapatıp DMA beklemek gerekecek bu ROM bölgesini kullanan kodlar için.


Logged

Doberman ♦ megaOne ♦ HDMI-64 ♦ HDMI-520 ♦ NewSchool
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #140 : Ekim 08, 2015, 19:02:57 ÖS »

Dosya isimleri ana program içerisinde mi gömülü yoksa her bir level dosyasının içerisinde mi bir sonraki level'in dosya adı var? Gerçi bende buna bakmaya çalışırım.
Dosya isimleri sadece ana program içerisinde, $cef0 adresinde.

C64 içerisindeki bir programdan DMA tetikletmek için aslında bir öngörüm olmamıştı, hep Doberman tarafından yada butona basılınca DMA olacak şekilde düşünmüştüm yapıyı. Dolayısı ile buna hardware bir hazırlık yok şu aşamada. Bunu da düşünerek, final donanıma bir yöntem eklemeliyim.

Ş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
Donanıma ek yapılması daha iyi olur. Geçici olarak düşündüğün çözümde 0-Idle dediğin durumda bile 6510 yavaşlayacak sanırım. Öyle olursa ninja zaten biraz yavaş hareket ediyor, iyice hantal olur artık =)

Aslında düşündüm de, dosya ismini bile hiç kullanmadan, 3 byte adres bilgisi de bu yöntemle dobermana aktarılabilir. Deneyip bilgi vereceğim.
Dosya ismi yerine slot mantığı kullanılacaksa üç adresin okunması daha iyi olur tabi.

Bana gönderdiğin 0812 dosyası çalışmadı DMA yapınca. Ekranda bazı karakterler çıkıyor kalıyor. Ama disk içerisindeki the last ninja çalışıyor. Acaba DMA yapmadan önce ROM bölgelerini kapatmak mı gerekiyor? $0812-$fffe aralığına yüklendiği için sıkıntı oluyor sanırım ROM'lar açık iken.

Daha incelemedim ama DMA öncesi sanki interruptları kapatıp, ROM ları da kapatıp DMA beklemek gerekecek bu ROM bölgesini kullanan kodlar için.
Bu durumun çözümünden daha önce senin başlıkta bahsetmiştim. ik+'yı belleğe yüklerken kullanmanı tavsiye ettiğim CBM80 yöntemini kullanıp, önce 6510'un $01 adresine $30/$34/$38 değerlerinden birini yazarak tüm 64KB ram'i açmasını sağlayıp, ardından dosyayı belleğe yüklemen lazım.
Logged
hades
Üye
****
Mesaj Sayısı: 392



Üyelik Bilgileri
« Yanıtla #141 : Ekim 08, 2015, 19:20:21 ÖS »

C64 tarafından DMA tetiklemek için $DE00 - $DEFF veya $DF00 - $DFFF aralığında bir adres kullanarak /IO1 veya /IO2 sinyali aktif hale getirilir. Doberman sinyali yakaladığı anda databus okuyarak işlem yapar. Daha doğrusu yukarıdaki adresleri kullanarak bir 373 latch yardımıyla tutulan data doberman tarafından değerlendirilir.
Logged
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #142 : Ekim 08, 2015, 20:08:18 ÖS »

Simon'un Kisscart64 başlığındaki yazılarıma ve bu başlığın ilk sayfalarına bakacak olursan fc3'te kullanılan $dfff kontrol yazmacına yapılan erişim isteklerinin 74ls133 tarafından yakalandığından, erişim anında data bus'taki verinin 174/273 lacth'ler ile yakalandığından, yakalanan değere göre eprom'un adres bacaklarının vs sürüldüğünden bahsettim ben. Yani yazdıklarından haberim var ve o mantıkla çalışan bir kartuşu üretmeye çalışıyorum ben. Yukarıda delimawi'ye c64 tarafından bir istek anında doberman'ın nasıl tetikleneceğini bilemiyorum derken, dobermanın şu anki donanımıyla c64'ten gelecek bir sinyali kontrol etmediğini bildiğim için öyle yazdım. O da zaten "C64 içerisindeki bir programdan DMA tetikletmek için aslında bir öngörüm olmamıştı" diye cevap verdi. Ben CPLD kullanmadan önce bir değil birkaç tane latch kullanıp, sonra bunların hepsini CPLD'ye gömen bir kişiye c64'ten dma tetiklemek için donanımsal olarak şunları yapabilirsin diye fikir vermeyi düşünmem bile.
Logged
Cengiz Demir
Uzman
*****
Mesaj Sayısı: 3.828



Üyelik Bilgileri
« Yanıtla #143 : Ekim 08, 2015, 20:47:08 ÖS »

@Metallic  A sütununa kırpılacak linkleri koyduğumuzu varsayarsak B sütununa  aşağıdaki formülü kopyalaman yeterli.

?dl=0 tüm linklerde sabitse bu basit formül işler. Sabit değilse başka çözümlere bakabiliriz.. 

Kod:
="https://dl.dropboxusercontent.com"&PARÇAAL(A1;24;UZUNLUK(A1)-28)
« Son Düzenleme: Ekim 08, 2015, 20:59:16 ÖS Gönderen: cdemir » Logged

hades
Üye
****
Mesaj Sayısı: 392



Üyelik Bilgileri
« Yanıtla #144 : Ekim 08, 2015, 21:12:26 ÖS »

Sanırım kartuş konuları karıştı. FC3+ başlığında Doberman konusu geçince oltaya geldim.
Logged
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #145 : Ekim 08, 2015, 21:31:45 ÖS »

@Metallic  A sütununa kırpılacak linkleri koyduğumuzu varsayarsak B sütununa  aşağıdaki formülü kopyalaman yeterli.

?dl=0 tüm linklerde sabitse bu basit formül işler. Sabit değilse başka çözümlere bakabiliriz.. 

Kod:
="https://dl.dropboxusercontent.com"&PARÇAAL(A1;24;UZUNLUK(A1)-28)

Yuppi süpersin =)  Artık dropbox linklerini editlememe gerek kalmadı. Formülü her kullandığımda seni hatırlarım artık, teşekkürler =)
Logged
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« Yanıtla #146 : Ekim 08, 2015, 21:42:22 ÖS »

DMA yapılan donanıma bilgi geçeceğin anda c64 rutinin tarafından kontrol altında olacaksa yapacağın en kolay donanım nmi'ı dinlemek olur. Rutin göndermek istediği bilgiyi belirlenmiş bir yere yazar ve üstüne nmi yapar. Rutin oyunun içine gömülü ise kendine bir nmi deseni belirleyip bu deseni tanıyabilirsin.

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.
Logged

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

twitter | blog
Cengiz Demir
Uzman
*****
Mesaj Sayısı: 3.828



Üyelik Bilgileri
« Yanıtla #147 : Ekim 08, 2015, 21:55:29 ÖS »

@Metallic rica ederim. İşine yaramasına sevindim.. Sizlerin yaptıklarınızın yanında benimkiler çorbada tuz tanesi bile sayılmaz.

Sensei i_r_on 'u burada yakalamışken onun porjeleri için de teşekkür edelim.

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
Logged

Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.756


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #148 : Ekim 08, 2015, 22:09:25 Ö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.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Metallic
Uzman
*****
Mesaj Sayısı: 1.081



Üyelik Bilgileri
« Yanıtla #149 : Ekim 08, 2015, 22:23:21 ÖS »

DMA yapılan donanıma bilgi geçeceğin anda c64 rutinin tarafından kontrol altında olacaksa yapacağın en kolay donanım nmi'ı dinlemek olur. Rutin göndermek istediği bilgiyi belirlenmiş bir yere yazar ve üstüne nmi yapar. Rutin oyunun içine gömülü ise kendine bir nmi deseni belirleyip bu deseni tanıyabilirsin.
Evet latch ve logic ic kullanmadan, sadece mcu ile nmi hattını kontrol edeceksin, ama oyun içerisindeyken kısıtlı bir alan içerinde nmi deseni oluşturmak için gerekli kodu kullanmak, koda boş yer bulmak, nmi oluşturmak için gerekli cia#2 timer'larının ilk değerlerini koruyabilmek kolay değil. Bu nedenle bence io1 veya io2 hattını kullanmak daha iyi olur. $de00-$dfff aralığında belirlenen bir kontrol yazmacına yapılacak erişimle doberman tetiklenir. Aynı fc3'teki gibi. Bu tetiklemeyi yapmak için gerekli kod da çok kısa, örneğin:
lda #$xx
sta $dfff
gibi.

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.
Level'ları yüklemek için yapılması gerekeni yazmıştım i_r_on.


$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.
Logged
Sayfa: 1 ... 8 9 [10] 11 12 ... 18   Yukarı git
Yazdır
Gitmek istediğiniz yer: