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 KategoriProjeKetchup - Sd kart destekli Atari 2600 kartuş projesi
Sayfa: [1] 2 3 4   Aşağı git
Yazdır
Gönderen Konu: Ketchup - Sd kart destekli Atari 2600 kartuş projesi  (Okunma Sayısı 28458 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
i_r_on
Uzman
*****
Mesaj Sayısı: 2.873



Üyelik Bilgileri WWW
« : Ocak 07, 2016, 00:22:31 ÖÖ »

Forumdaki kartuş çılgınlığını devam ettireyim dedim ve yine hobi yaklaşımı ile yeni bir kartuş projesine başlıyorum.

Kompleks pcb tasarımı olmadan, herkesin evde yapabileceği, *half ass tarzı bir şey olacak.

Atari'nin kullandığı 1.19Mhz'lik bus'ı hızlı bir microcontroller ile sürmeye çalışacağım. Kullanmayı düşündüğüm board aliexpress'ten kolayca temin edilebilen clone maple stm32 board'larından. Board'ların üstünde 8Mhz kristal var ancak stm arm işlemcinin içindeki pll ile 72mhz'de koşuyor cpu. Benim temin ettiğim board üstünde STM32F103C8T mevcut, 20K ram ve 64K flash'ı var. Maalesef 3.3v bir logic ve güç kullanan bir cihaz. Bu yüzden databus bağlantısı için hazır bidirectional level shifter'lar kullanmayı düşünüyorum.

Yazılım kısmı için yine Arduino ide'sini kullanacağım.

İlk anda elimde bidirectional level shifter'lar olmadığı için read only 4k'lık kartuşları emüle etmeyi düşünüyorum. (Ev ortamında breadboard üstünde o kadar hatta level shifting yapmak * yaklaşımına uymaz ve beni kasar )

Atari 2600'ü biraz araştırdım ve bu iş için gerekli bazı ince detaylar ile ilgili bilgi sahibi olmaya çalıştım. Onları da burada paylaşayacağım.

Öncelikle,

Atari 2600'ün kartuş slotunun pinout'u aşağıdaki şekilde,

Kod:
D3   D4   D5   D6   D7   A12  A10  A11  A9   A8  +5V   SGND
--1- --2- --3- --4- --5- --6- --7- --8- --9- -10- -11- -12-
 GND  D2   D1   D0   A0   A1   A2   A3   A4   A5   A6   A7

Ne R/W, ne reset, ne bir IRQ, NMI ne DMA için gerekli pin neredeyse hiç bir şey yok. ROM bağla kullan tadında bir pinout.

Atari 2600 üzerindeki 6502'nin ucuz versiyonu olan 6507 çipinin maksimum adresleyebildiği bellek 8K. Atari maliyetten kısmak için chip decoding için ayrıyeten bir çip yahut genel lojik çiplerden faydalanmamış ve chip select logic'lerini RIOT, TIA çiplerinin içine gömmüş. 8K adresleyebiliyor demiştik, adres hatları A0'dan A12'ye kadar gidiyor.

İlk kafamı kurcalayan konu buydu. Eprom ile basit bir kartuş şeması aradığımda hep karşıma A12'nin kullanılmadığı ve her zaman bir NOT kapısından geçirilip eprom'a chip select yapılmış devreler ile karşılaştım.

Şuradaki şematikleri inceleyince meseleye uyandım : http://kevtris.org/2600/2600schemo.html

TIA'yı gösteren 7. resme dikkat, çipin üstünde CS1, CS2, CS3, CS4 diye dört tane chip select pin'i var (dedim ya adamlar ayrı entegre koymamak için kendi custom chip'lerinin içine chip select logic'i gömmüşler) ve CS1 direkt A12. 8K oldu sana 4K.

A12'nin sırrı bu şekilde çözülmüş oldu.

Bir diğer konu, R/W pin'i, özel bir chip select sinyali olmayan yerde eskiden kartuş tasarımcıları bankswitching'i nasıl yapıyordu acaba meselesi.

Onunla ilgili de şöyle güzel bir kaynak buldum.
http://kevtris.org/files/sizes.txt

Neredeyse her kartuş yapan kendi bankswitching yöntemini icat etmiş. Ancak temelde iş Adres ve data hatlarını izleme beklenen pattern yakalandığında da bankswitch yapmaya dayalı. Kimisi doğrudan bellekteki belli adreslere read göndererek bankswitching niyetini belli etmiş, kimisi 650x'in stack erişimini izleyip yapmış gibi gibi envai çeşit yöntem mevcut. Bütün bunlara destek verebilmek için oynanmak istenen oyunun ya uzantısından ya da dosya üzerinde bir heuristic scan yapıp o bankswitching yöntemini uygulamak lazım.

Kafamı karıştıran bir diğer nokta da R/W pin'i olmayan bu pinout üstünde nasıl harici RAM desteği verdikleri idi kartuş üreticilerinin. O da açığa çıktı üstteki dokümanın baş kısmını dikkatle incelediğimde.

Şöyle açıklamış eleman
Kod:
Some carts have extra RAM; There are three known formats for this:

Atari's 'Super Chip' is nothing more than a 128-byte RAM chip that maps
itsself in the first 256 bytes of cart memory.  (1000-10FFh) 
The first 128 bytes is the write port, while the second 128 bytes is the
read port.  This is needed, because there is no R/W line to the cart.

CBS  RAM Plus (RAM+)  This maps in 256 bytes of RAM in the first 512 bytes
of the cart; 1000-11FF.  The lower 256 addresses are the write port, while
the upper 256 addresses are the read port.  To store a byte and retrieve it:

LDA #$69  ; byte to store
STA $1000 ; store it
.
.         ; rest of program goes here
.
LDA $1100 ; read it back
.         ; acc=$69, which is what we stored here earlier.

Yani aslında programcı ve kartuşu tasarlayan belirli adresleri yazmaya, belirli adresleri de okumaya rezerve ediyor. Kartuş adrese göre yazma ya da okuma yapıyor.

Başka enteresan şeyler de var henüz yanıtını tam araştırmadığım. Misal Pitfall oyununda kartuş üstünde oyuna zenginlik katan ayrı bir ses devresi bir şeyi olduğu söyleniyor. Kartuşun üstünde speaker falan mı vardı acaba merak ediyorum.

Yapacağım ilk iş stm board ve arduino ile i/o pin'lerini topluca ne kadar hızlı on/off switch edebildiğimi logic analyzer ile kontrol. Yarın veya ertesi gün yaparım herhalde bunu.

Bu sefer hakikaten eprom kullanmayacağım

* : Türkçede karşılığı yok ama benim tasarımları tam karşılayan ifade bu
Logged

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

twitter | blog
atlantis
Uzman
*****
Mesaj Sayısı: 2.114



Üyelik Bilgileri WWW
« Yanıtla #1 : Ocak 07, 2016, 00:29:26 ÖÖ »

Vira bismillah Kahkaha
Logged

Truva Linux
http://www.truvalinux.org.tr
http://retromiga.blogspot.com
--------------------------------
Banana ARM Türkiye Destek Sitesi
https://www.bananapi.gen.tr
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.587


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #2 : Ocak 07, 2016, 00:43:03 ÖÖ »

Heyecanla gelişmeleri bekliyorum. Kolay gelsin.
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
Decypher
Deneyimli
*****
Mesaj Sayısı: 676



Üyelik Bilgileri
« Yanıtla #3 : Ocak 07, 2016, 00:44:31 ÖÖ »

Gelişmeleri takip edenlere beni de ekleyelim
Logged
WildLord
Deneyimli
*****
Mesaj Sayısı: 704



Üyelik Bilgileri
« Yanıtla #4 : Ocak 07, 2016, 00:51:23 ÖÖ »

+1
Logged
AmigaFUN
Deneyimli
*****
Mesaj Sayısı: 1.158


MC68060 inside!


Üyelik Bilgileri
« Yanıtla #5 : Ocak 07, 2016, 05:46:39 ÖÖ »

kolay gelsin
Logged

AmigaAmigaAmiga
dodogildo
Ziyaretçi
« Yanıtla #6 : Ocak 07, 2016, 06:06:04 ÖÖ »

Harmony yeteneklerinde lakin evde ucuza kotarilan bir alternatif epey ses getirirdi doğrusu.

http://boingboing.net/2015/11/18/the-harmony-cartridge.html
Logged
joker_
Genel Yönetici
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« Yanıtla #7 : Ocak 07, 2016, 07:44:51 ÖÖ »

@i_r_on eline, aklına sağlık. Güzel bir proje olacak.

Alıntı
İlk anda elimde bidirectional level shifter'lar olmadığı için read only 4k'lık kartuşları emüle etmeyi düşünüyorum.

demişsin. Peki projenin ilerleyen aşamalarında 8K desteğide olacak mı?
Logged
serkanarslan
Üye
****
Mesaj Sayısı: 397



Üyelik Bilgileri WWW
« Yanıtla #8 : Ocak 07, 2016, 07:55:02 ÖÖ »

Hem proje hem de anlatım çok güzel. Teşekkürler
Logged

Cengiz Demir
Uzman
*****
Mesaj Sayısı: 3.695



Üyelik Bilgileri
« Yanıtla #9 : Ocak 07, 2016, 08:12:17 ÖÖ »

Hayırlı olsun.
Logged

cengizermis
Uzman
*****
Mesaj Sayısı: 2.784



Üyelik Bilgileri WWW
« Yanıtla #10 : Ocak 07, 2016, 10:07:09 ÖÖ »

Valla sanirim 2 senedir yavuzgnin basinin etini yedim boyle bisey icin, feryatlarim duyuldu hele merakla beklemekteyim devamini.
Logged

-Cengiz's- Retro Game Room @youtube:
http://www.youtube.com/user/cengizermis1
LW3D
Yönetici
*****
Mesaj Sayısı: 11.303


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #11 : Ocak 07, 2016, 10:44:24 ÖÖ »

Commodore 64 dışında platformlar içinde ürün geliştirilmesi harika... Atari 2600 çoklu oyun kartuşları var...Ama bendekiler hep aç kapayla değişiyor. Menü gibi bir sistem olan yok sanırım. Planladığın kartuşta böyle bir şey olacak mı? daha erken ama mümkün mü?
Logged

savagery
Uzman
*****
Mesaj Sayısı: 1.676



Üyelik Bilgileri WWW
« Yanıtla #12 : Ocak 07, 2016, 10:54:17 ÖÖ »

Tebrik ederim @i_r_on. Süpersin gerçekten.
Logged

Atari FALCON 030 |  ATARI 1040 STE 4MB | ATARI 800 XL + 1050 DD + My IDE II | ATARI 130 XE | C64 + Ultimate 2 | AMIGA 500 + Vampire | Amiga 600 + Furia
eins
Uzman
*****
Mesaj Sayısı: 1.816


A.K.A. deliMawi


Üyelik Bilgileri
« Yanıtla #13 : Ocak 07, 2016, 11:02:40 ÖÖ »

Haydi hayırlısı... Benim acilen bir 2600 bulmam lazım bu durumda kartuş bitene kadar. Beni bir adet lehimsiz olarak listeye alabilirsin. Adı ne olacak bu arada? (Önemli konu)
Logged

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



Üyelik Bilgileri
« Yanıtla #14 : Ocak 07, 2016, 15:54:07 ÖS »

Müthiş, şimdiden 2600 kartuş kasası ayarlamak lazım Kahkaha

Logged
Sayfa: [1] 2 3 4   Yukarı git
Yazdır
Gitmek istediğiniz yer: