@delimawi : Yaptıklarını bari dokümante et, belki ara yükleme olayına ben de girişebilirim. Hatta hepsini kendin yapmaya uğraşma bence. Hardware'i üretip dağıtırsan bu işten anlayan bir sürü insan var. Onlar da port ederler. Ve dahası, belki de easyflash'a zaten convert edilmişler bir şekilde incelenip daha hızlı bir şekilde de oyunlar convert edilebilir.
Merhaba,
Açıkçası bir kaç oyunu teoriyi test etmek için kendim yapmaya uğraşıyorum. Bu arada 6510 pasım gitmiş oluyor.

Eğer düşüdüğüm gibi olursa zaten tabiki dökümante ederim.
Doberman64 bilindiği gibi pasif, yani 6510 tarafındaki yazılımın tetikleme şansı yok DMA için. Belki sonraki bir versiyonda DE00, DF00 gibi bir alanı dinleyecek birşeyler yapabilirim donanım olarak, ama şu anda donanımı artık bu hali ile fixledim.
Ben çok basit bir teori test ediyorum şu anda. Doberman belirli bir adreste (şimdilik bulduğum en güvenli yer $0400) aynı CBM80 methodu gibi, DMA64 işareti bulursa hemen DMA başlatarak, DMA64 işaretinin hemen peşinden gelen Kartuş Slot No (1 Byte), Kartuş ROM Başlangıç Adresi (2Byte), Uzunluk (2Byte), RAM Başlangıç adresi (2Byte) ve DMA Durumu (1Byte) bilgilerini alarak, RAM'de ilgili yere datayı basacak.
Tabiki bu işlem cooperative olmak zorunda. Yani patchlenmiş 6510 oyunu içerisindeki gerçekte loader olan kod bulunup bunun yerine, $0400 adresine yukarıdaki işareti ve parametreleri koyup, sonsuz döngü ile DMA Durumu byte'ı Doberman tarafından OK olarak set edilene kadar bekleyen bir DMA Loader kodu yazmak gerekiyor. Bu kod çok kısa olacağı için teorik olarak her oyun içerisine eklenebilir. Yani zaten var olan disk, tape yada kartuş loader kodu üzerine yazılacak.
Doberman ise yaklaşık saniyede bir kere $0400 adresini peekleyerek DMA isteniyor mu bakacak.
EasyFlash olayına da baktım. EasyFlash'de aynı zamanda $DF00 adresinde 256Byte RAM mevcut. Bazı releaseler bu alanı kullandıkları için doğrudan yada dolaylı olarak Doberman'a uyarlanma şansları yok. Elle patchlenmeleri şart.
Ayrıca bazı EasyFlash releaseleri EF yi resmen kartuş olarak kullanıyor. Yani kod $8000 daki ROM üzerinde çalışmak üzere yazılmış, ve sıklıkla bank değiştiriyor. Bu release lerin de uyarlanması, disk versiyonunun uyarlanmasına oranla çok zor.
Prince of Persia'ya baktım mesela, o da zor görünüyor çünkü EF yi loader olarak kullanmamış.
Ancak özellikle John64'ün EF releaseleri, tam Doberman'a uygun. EF'yi loader olarak kullanacak şekilde patchlemiş kodu. EF'den yükleyeceği bank'i seçip, kartuşun görünür olduğu $8000-$BFFF aralığından datayı RAM'de istediği yere kopyalayıp, EF'yi devre dışı bırakmış ve koda dallanmış...
John64'ün patchlediği bir oyundan örnek kopyalam rutini:
Last Ninja III - Death
.C:047d A9 1B LDA #$1B ; D - DEATH
.C:047f 8D 00 DE STA $DE00 ; Bank $1B, $8000 $0800 $22 Blok Kopyala
.C:0482 A9 22 LDA #$22
.C:0484 A2 80 LDX #$80
.C:0486 A0 08 LDY #$08
.C:0488 20 00 05 JSR $0500
.C:048b 60 RTS
.C:0500 8D 0A 05 STA $050A ; Kartuşta $XX00'dan RAM $YY00'a A Blok (256Byte) kopyala...
.C:0503 8E 0F 05 STX $050F
.C:0506 8C 12 05 STY $0512
.C:0509 A0 40 LDY #$40 ; Y=A
.C:050b A2 00 LDX #$00
.C:050d BD 00 80 LDA $8000,X ;
.C:0510 9D 00 08 STA $0800,X
.C:0513 E8 INX
.C:0514 D0 F7 BNE $050D
.C:0516 EE 0F 05 INC $050F
.C:0519 EE 12 05 INC $0512
.C:051c 88 DEY
.C:051d D0 EC BNE $050B
.C:051f 60 RTS
Bunları Doberman64 re-patch etmek sanırım mümkün olacak.
Gelişmeleri Doberman başlığı altında paylaşmaya devam ederim...