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 KategoriProjeMegaOne (1MByte Kapasiteli Flash Kartuş)
Sayfa: [1] 2 3 ... 29   Aşağı git
Yazdır
Gönderen Konu: MegaOne (1MByte Kapasiteli Flash Kartuş)  (Okunma Sayısı 89872 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
eins
Uzman
*****
Mesaj Sayısı: 1.787


A.K.A. deliMawi


Üyelik Bilgileri
« : Şubat 06, 2016, 15:31:22 ÖS »

Bir süre sonra gelen EDIT: megaOne Beta Tanıtım Videosu



Tekrar merhaba,

Yıllar sonra geçen sene tekrar C64'ümün başına geçince, "Eeee, şimdi buna nasıl program yükleyeceğim?" sorusuryla karşı karşıya kalmıştım. Ne bir disket, ne 1541, ne de kaset hiçbirşey yoktu elimde. PIC ile bir kartuş emülatörü yaparım diye düşündüm. Nasılsa C64 1MHz hızında, ama PIC 64MHz, 16MIPS ile yaklaşık 16 kat daha hızlı çalışıyordu. C64, bir adres okumak istediğinde, PIC bu veriyi yetişriebilirdi ve sanki bir kartuş takılıymış gibi emülasyon yapabilirdim. Neyse uzun lafın kısası bu fikir yattı. PIC 16 kat hızlı çalışsa bile, datayı mediadan yada ROM dan okuyup yetiştiremedi. Bunun üzerine düşünürken aklıma DMA geldi ve oradan iş büyüdü Doberman ortaya çıktı.

Aslında Doberman klasik bir kartuş gibi çalışmıyordu. İçerisinde CPLD, uC, Flash vb vardı ve gene ucuz bir çözüm olamamıştı. Bir kaç hafta önce kartuş tufanının öncüsü, sevgili Simon'un kisscart'ı elime ulaştı.  Bu kartuşa bakınca ilk baştaki duygularım gene depreşti, 64KB değilde, maliyeti yükseltmeden yapabileceğim en büyük kartuş ne olabilir diye bakındım.
Tabi temel amaçlarımdan biri EPROM programlaycı vb kullanmadan kolay bir şekilde programlanabilir olmasıydı. Bu sebeple FLASH kullanmak daha uygun olur diye düşündüm.
Fiyatı çok abartmadan bulabildiğim 5V ile çalışan en büyük flash 29F800 oldu. (1MByte) Bunun üzerine gitmeye karar verdim.  Digikey fiyatı 2.8 Dolar, ebay fiyatı 2 dolar altında. Türkiye'de en ucuz 7TL ye bulabildim ama sanırım artık kalmadı.

C64 standart kartuş tiplerine baktığımızda 8K ve 16K normal ve 16K Ultimax olmak üzere temelde 3 tipi var. Bunları desteklemek iyi olurdu.  Bu durumda 16K'lık toplam 64 adet CRT imajını bu kartuşa yüklemek teorik olarak mümkün olacaktı. (Doberman'da da 64K lık 64 adet imaj vardı, hep bir 64'e çıkıyoruz... )

İşi daha fazla karıştırmamak için freezer vb özel donanım isteyen kartuşları liste dışı bıraktım. Şimdilik herşey kiss prensiplerine uygun devam ediyordu.

Simon 8 tane slotu seçmek için mikroişlemci yada switch kullanmıştı. Bende slot sayısı 64 olunca bu iş çok karışık hale gelmekteydi. Yada kartuş üzerine LCD ekran vb eklemek gerekecekti ki bu da maliyeti artıracaktı. Bunun yerine Doberman'da olduğu gibi C64 tarafında çalışan bir menu yapmayı düşündüm. 64 Slotun ilkinde menu programı olacaktı. İlk çalışınca bu slot aktif olduğundan menu çalışacak ve bir slot seçildiğinde bunu kartuşa bildirecektim.
Ve sonrasında reset atıp seçilmiş olan slot içerisindeki kartuş imajının çalışması sağlanacaktı.

Burada işler biraz biraz kiss prensipleri dışına çıkmaya başladı. Ama maliyet çok artmadığı ve proje yapılabilir olduğu sürece devam etmeye karar verdim. En güzel yöntem bir adet slot select register yani aslında bir adet latch entegresi kullanmak ve i/o bölgelerinden birine yazıldığında bunu yakalayıp slotu değiştirmek.

Bu noktada biraz da kartuşun programlanması ile ilgili düşündüklerimden bahsetmek gerekirse, FLASH'ı çıkartıp programlayıcıya falan takmak istemedim. USB üzerinden doğrudan PC ile programlamak güzel olurdu. Ancak bu noktada bir iki temel sıkıntı var.
Öncelikle USB>TTL çeviri entegre ve programlama için bir PIC kullanmam gerekiyordu. Bu maliyeti biraz arttıracaktı. Kartuş C64'e takılıyken programlanmamalıydı. Çünkü FLASH'ın adres ve data hatları doğrudan C64 bus'a bağlı. Bu durumda en az 3 adet trisate buffer (kabaca switch diyebiliriz.) entegre daha kullanarak aynı anda ya PIC'e yada C64'e bağlı olmasını sağlamam gerekiyordu.

Aklıma özellikle bu kartuş için ayrı bir programlayıcı kart yapma fikri geldi. PIC ve USB>TTL çevirici bu kart üzerinde olacaktı. Kartuşu programlamak için C64'ten söküp bu karta takacaktım. Bu sayede tristate entegrelere gerek kalmadı keza fiziksel olarak aynı anda hem PIC'e hem de C64'e bağlı olma ihtimali kalmamıştı. Aynı zamanda salt kartuşun maliyetini arttırmamış oldum. Örneğin bu kartuştan elimde 4 tane varsa, sadece bir adet programlayıcı ile işimi görebilecektim.

Bu arada eğer slot select registeri olarak sadece io hattını değil, bir de adres hattını kontrol edersem, registeri io bölgesi içerisindeki spesifik bir adrese koyabilirdim.
Ocean Kartuşlarında bank select olarak geçen register $DE00'daydı. Bunu yapmak ta çok zor değil. Bu sayede Normal kartuşlar + Ocean kartuşları da desteklenebilir olabilirdi.

Eminim eğer buraya kadar okuduysanız bir çok kişinin aklına hemen easyflash gelmiştir. Aklın yolu bir midir bilmem bu kadar kurgulamışken benim de aklıma easyflash geldi.
Skoe amca da zaten easyflash'ı tasarladığında amacı Ocean kartuşlarını desteklemekmiş, sonra projesi büyümüş...

Şimdi easyflash desteği için öncelikle easyflash'ın nasıl çalıştığına biraz baktım. İki modeli var bilindiği üzere.
İlk modelinde iki adet 29F040 flash entegresi mevcut. Programlama C64 üzerinden yapılıyor. Büyük kartuş imajlarını parçalayıp disketlere atmak gerekiyor vb...
İkinci modelinde ise çok daha büyük tek bir flash çip kullanmış, 8 adet easyflash1 slotuna sahip, büyükçe bir CPLD kullanarak logic işini ve 3V-5V level translation işini halletmiş.
USB ile PC ye bağlanabiliyor. Ama programlama gene C64 üzerinden yapılıyor. Yani C64 ve PC aslında USB üzerinden birbirlerine bağlanmış oluyor.
Satış fiyatı görebildiğim kadarı ile 65$ ama non-stock görünüyor.

Neyse, zaten easyflash3 ün özellikleri benim varmak istediğim hedefin oldukça ilerisinde. Yapmak istediğim kartuş ucuz olmalı, bu sebeple bu kadar büyük flash kullanmak mantıksız ayrıca pahalı bir CPLD'ye yer vermek istemiyorum. Ama gel gelelim easyflash için çıkmış olan release'leri de bir kenara atmak hiç içimden gelmedi. Özellikle sadece easyflash versiyonu çıkmış olan prince of persia'yı bir şekilde çalıştırmalıydım C64'ümde. Doberman projesi ile uğraşırken, ara yüklemeli olan Last Ninja III'ü Doberman için patchlemiştim. i_r_on, patchle patchle nereye kadar demişti. Aslında çok haklıydı. Bir ton easyflash release varken bunları kolay birşekilde patchlemeden çalıştırabilmek güzel olurdu.

Neyse, şu noktaya kadar tasarladığım kartuş ile en azından easyflash1'in benzerliklerini sıralarsak;
- Hafıza miktarı aynı. (1MByte)
- Slot Select mantığı neredeyse aynı. (IO Bölgesindeki bir register ile seçiliyor.)
- Programlama için ikisi de kartuş portunu kullanıyor.

Farklılaştığımız yerler ise;
- Aynı flash çipi kullanılmadığı için EasyAPI benim kartuşu tanımayacak ve programlayamayacak.
- Easyflash içerisinde 256 Byte RAM mevcut. $DF00 adresine maplenmiş durumda.
- Easylash'ın aynı zamanda modu değiştirebilen bir register'i daha var. (EXROM ve GAME hatlarını yazılım üzerinden konfigüre edebiliyor.)

Bu farklılaştığımız yerler ile ilgili olarak, eğer easyflash desteği de vermeyi istersem aşağıdaki çözümler uygulanabilir.
- EasyAPI patchlenerek yada yeniden yazılarak benim kullandığım 29F800 flash'ına destek verilebilir. Ne de olsa bu bir kere yapılacak ve sonrasında tüm easyflash releaseleri desteklenmiş olacak.
- RAM için bir RAM entegresi daha ekleyebilirim. (Digikey fiyatı 1.1$ civarında.)
- Mode registeri ise ek olarak bir adet daha latch entegresi gerektiriyor.

Şimdilik bu kadar. Kartuşun tasarladığım şeması ve teknik detayları da bu topic altında paylaşacağım.

Henüz tam olarak easyflash desteği ekleyip eklmemek konusunda kararsızım. Eğer maliyet çok yükselmeyecek ise yapmak istiyorum...

Ve son olarak kartuşun henüz bir ismi yok.
« Son Düzenleme: Nisan 08, 2016, 16:43:27 ÖS Gönderen: delimawi » Logged

commander64
Uzman
*****
Mesaj Sayısı: 3.283



Üyelik Bilgileri WWW
« Yanıtla #1 : Şubat 06, 2016, 15:41:33 ÖS »

Easyslash
Logged

arnavutrafet
Ziyaretçi
« Yanıtla #2 : Şubat 06, 2016, 15:43:23 ÖS »

isim Bluemad olsun.
Logged
AmigaFUN
Deneyimli
*****
Mesaj Sayısı: 1.067


MC68060 inside!


Üyelik Bilgileri
« Yanıtla #3 : Şubat 06, 2016, 16:07:46 ÖS »

Kanish

Yahu Allah rızası için bir proje de Amiga için yapın.
Logged

Amiga1200/Apollo1260@80MHz@105MIPS/RapidRoadUSB/IndiAGAmk2cr
Amiga500+/ACA500/ACA1221ec@42Mhz/IndivisionECS
Turbo Chameleon 64 w/Docking Station
RaspberryPi Zero/1B/2B/3B
Lattepanda 4/64GB
arnavutrafet
Ziyaretçi
« Yanıtla #4 : Şubat 06, 2016, 16:28:09 ÖS »

Amiga öldü, yaşasın C64...
Logged
cdemir
Uzman
*****
Mesaj Sayısı: 2.858



Üyelik Bilgileri
« Yanıtla #5 : Şubat 06, 2016, 17:01:39 ÖS »

Bu iyi oldu. Yeni maceralar olacak, okumak için Kahkaha
Logged

Decypher
Deneyimli
*****
Mesaj Sayısı: 525



Üyelik Bilgileri
« Yanıtla #6 : Şubat 06, 2016, 19:57:12 ÖS »

Yine süper bir proje geliyor desene, cdemir'in dediği gibi takip etmesi çok keyifli olacak
Logged
LW3D
Genel Yönetici
*****
Mesaj Sayısı: 10.130


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #7 : Şubat 06, 2016, 20:02:57 ÖS »

Projotörlerimizden ne zamandır ses çıkmıyordu Büyük bir zevkle okudum...Büyük bir mutlulukla yeni projeyi karşıladım. Eğer maliyet çok artmayacaksa (ki bir kere geldik dünyaya ) easyflash desteği güzel olur. Hazır bir kütüphane var..Maliyet artsada easyflash kadar olmayacaktır zaten (diye düşünüyor insan).

Ellerine sağlık, bu kadar uzun ve detaylı yazı için... Proje için...herşey için...

Not: 1 lehimli, bir lehimsiz
Logged

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


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #8 : Şubat 07, 2016, 00:22:57 ÖÖ »

Kartuşun tasarımı ile ilgili olarak biraz teknik bilgi vermek isterim.

Öncelikle C64 her biri 8KB olmak üzere iki adet ROM'u maplemek için, ROML ve ROMH hatlarını kullanıyor. Ben daha ucuza mal olacağı için iki tane küçük flash yerine bir tane daha büyük flash kullanmayi uygun buldum. Bu durumda bir şekilde fiziksel olarak tek parça olan flash'ı C64'e sanal olarak iki parçaymış gibi göstermek gerekiyor. Bunun için aşağıdaki devreyi tasarladim.



Burada C64 tarafından ROMH veya ROML seçildiğinde (Low'a düştüğünde) komple flash select ediliyor. Ancak ROMH veya ROML nin seçilmiş olmasına bağlı olarak flash'ın en büyük adres biti set ediliyor yada edilmiyor. Bu sayede fiziksel olan tek parça olan flash'ı iki parçaya bölüp C64'e iki farklı ROM varmış gibi göstermiş olduk.



Burada ise, Phi2 hattı high olduğunda yani VIC-II'nin bus'ı kullanmadığından emin olduğumuz zamanlarda, ve sadece C64 okumak istiyorsa (R/W hattı high ise) flash'ın outputlarını enable ediyoruz. Aynı zamanda /WE sinyalini de elde etmiş olduk. Bu daha sonra flash programlarken işimize yarayacak.



Bu bölüm ile C64'ün IO1 bölgesinde yazmak istediği anı yakalıyoruz. IO1 Low olmalı ve C64 yazmak istiyor.



Ve şimdilik son olarak $DE00 daki slot select registerimiz. Eğer A1 adresi 0 ise ve IO1 bölgesine yazılmak isteniyosa, Data bus latchleniyor. Latch çıkışları ise Flash'ın yüksek değerli adres bitlerini sürüyor.

Ve son olarak kartuşun prototip halinden bir kare.



NOT: Burada easyflash konusunda gaza gelip bir denem yaptım. Easyflash'daki /GAME ve /EXROM hatlarını yazılım ile set edebilen mode select registerini de ekledim. Board üzerinde sağ altta görünen entegre. Ama şimdilik RAM yok. Aşağıda bu kısmın şemesı da var. $DE00 registerine çok benzer mantıkla çalışıyor. Ama çıkışlar adres hatlarını sürmek yerine easyflash'a uyumlu olacak şekilde EXROM ve GAME hatlarına yönlendirilmiş durumda. Adres $DE02.



Son olarak ufacık bir easyflash testi. Easyflash için release edilmiş olan CRT imajı hiç değiştirilip patchlenmeden doğrudan prototip kartuş üzerinde çalışıyor.

Kırmızı LED'ler binary olarak seçilmiş olan slot'u gösteriyor. Splash screen sonrasında programın slotları değiştirerek yükleme yaptığı görülebiliyor...


 
NOT: Easyflash desteği vereceksem RAM'i de eklemem gerekiyor. İncelediğim kadarı ile bir çok release bu RAM'i kullanıyor. Ayrıca daha önce bahsettiğim üzere EasyAPI'yi de pathclemem gerekli. Bu sayede EasyFlash için yazılmış programlarda benim kartuşu programlayabilecek. Yani highscore save vb özellikler de çalışacak...

İyi haftasonları...
« Son Düzenleme: Şubat 07, 2016, 00:27:28 ÖÖ Gönderen: delimawi » Logged

Enson
Üye
***
Mesaj Sayısı: 200



Üyelik Bilgileri
« Yanıtla #9 : Şubat 07, 2016, 01:11:27 ÖÖ »

üff yaşasın, yine anlamadığım teknik bir kartuş projesi. Power konusunu soracaktım ama konuyu dağıtmayayım
Logged
Simon (Özay Turay)
Genel Yönetici
*****
Mesaj Sayısı: 6.157


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #10 : Şubat 07, 2016, 09:01:48 ÖÖ »

Harikasın. Aslında benim de varmak istediğim yer de burasıydı ama o zamanki bilgi ve becerilerimin yeterli olmamasından dolayı (muhtemelen hala yetmiyordur Kahkaha) ancak KissCart64 çıkabildi ortaya. Ama her işte hayır vardır böyle bir projeye ilham vermiş olmak bile çok güzel birşey benim için.

İsim konusuna gelince MegaKiss64 veya MegaCart64 olabilir bence megabyte göndermesinden dolayı.

Kolay gelsin.
Logged

http://www.retrodergi.com - http://www.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PSP Slim, Nintendo DS Lite
KNG
Üye
****
Mesaj Sayısı: 297



Üyelik Bilgileri
« Yanıtla #11 : Şubat 07, 2016, 13:24:11 ÖS »

Üstad tebrikler,  easyflash desteği olsun bence de. C64'de prince of persia oynamak güzel olur.
Logged
arnavutrafet
Ziyaretçi
« Yanıtla #12 : Şubat 07, 2016, 14:33:52 ÖS »

Zc mckraken, pirates ...
Logged
Metallic
Uzman
*****
Mesaj Sayısı: 828



Üyelik Bilgileri
« Yanıtla #13 : Şubat 07, 2016, 16:13:15 ÖS »

Delimawi, çok güzel gidiyor, şimdiden baya emek harcamışsın, eline zihnine sağlık. İleride belki EasyFlash yaparım diye düşünüyordum, ama artık yapmaya gerek kalmadı gibi görünüyor =) Araya ücretsiz FC3+ reklamı da almışsın, teşekkürler =) 

Devre ile ilgili bir sorum olack. Flash'in OE ve WE bacaklarını sürerken RW'ın yanında PHI2'yi de kontrol etmişsin, bunun mantığı nedir? VIC2'nin adres bus'ı kontrol ettiği ana denk gelmesin diye yapıyorsun anlıyorum, ama zaten ROML ve ROMH'ye göre flash'in CS bacağını sürerek flash'i enable/disable yapıyorsun. ROML ve ROMH sinyalleri, EXROM ve GAME hatlarının durumuna göre 6510 ilgili bellek aralıklarına ($8000-$9FFF,$A000-BFFF,$E000-FFFF) erişmek istediği an, yani adres bus 6510'un kontrolünde olduğunda (PHI2 high) aktif olan sinyaller. Alphaworks'ün Cartridge Development Guide'ında PHI2'den hiç bahsedilmiyor mesela. Zamanında FC3'de PHI2 hiç kullanılmamış, şimdiki FC3+'da da durum yine aynı. Senin yaptığında bir hata yok, ama PHI2 kontrol edilmese de olur diye düşünüyorum.


Logged
Metallic
Uzman
*****
Mesaj Sayısı: 828



Üyelik Bilgileri
« Yanıtla #14 : Şubat 07, 2016, 22:38:30 ÖS »

Zamanında FC3'de PHI2 hiç kullanılmamış, şimdiki FC3+'da da durum yine aynı.
Pardon burada yanlış yazmışım, freezer logic ile ilgilenmezsen böyle olur işte. Yoksa Freeze butonuna basınca bir NMI yapılıyor, PHI2 ve BA sinyalleri kontrol edilerek bus 6510'un olduğunda ULTIMAX mod seçiliyor.
Logged
Sayfa: [1] 2 3 ... 29   Yukarı git
Yazdır
Gitmek istediğiniz yer: