Gönderen Konu: Speccy dünyasından kümülatif haberler  (Okunma sayısı 115314 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Speccy dünyasından kümülatif haberler
« : 24 Mart 2015, 12:17:13 »
doktorun isteği üzerine eğlencelik haberler :

Just Speccy 128, Spectrum 128k klonu just speccy neredeyse hazır halde. Timing modeli olarak neyi taban aldığını henüz bilmiyorum, +2, +2ab ya da +3 olabilir, shock megademo çalışıyor (genelde ilk bu demo test edilir bu işlerde):

JUST Speccy 128 my clone of ZX Spectrum 128, first tests
https://www.youtube.com/watch?v=TmSbSkhlxOY

The Mahler Project, 12 zx spectrumu spectranet üzerinden bağlayarak, birlikte bir buçuk saate yakın bir süreye sahip mahler'in ilk senfonisini çalmışlar. Buradaki püf nokta, tüm senkronizasyon ve müzik çalma işlemi BASIC üzerinden BEEP komutu kullanılarak yapılmakta, videoda bunun sebebi açıklanıyor.
The Mahler Project
https://www.youtube.com/watch?v=LxPXLIALJJI


Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #1 : 24 Mart 2015, 14:13:11 »
doktorun isteği üzerine

Kendimi bir an tavernada hissettim ;)

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #2 : 24 Mart 2015, 14:28:47 »
Yanar dönerli meyve tabağı güzel bir arkadaşla gönderiyorum şimdi masana doktorcum

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #3 : 25 Mart 2015, 15:12:19 »
doktor için günün çerezleri,

zx spectrum'dan inkjet printer kullanmaca:

http://www.youtube.com/watch?v=wFo-KRnMtFw#


Orana burana yapıştırmak için sinclair logosu (zx spectrum kasalarındaki kabartmalı logonun yeniden üretimi aslında, eskisi çirkinleştiyse söküp bunu yapıştırabilirsiniz):

http://www.sellmyretro.com/offer/details/*NEW*-Sinclair-ZX-Spectrum%2B48-~~-ZX-Spectrum%2B128-Replacement-Rainbow-Badge-4188




Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #4 : 25 Mart 2015, 21:07:39 »
doktor için günün çerezleri,

zx spectrum'dan inkjet printer kullanmaca:

Ref, baskı işlemi wyswyg mi? ;)

Retro dediğin daisywheel printer kullanır yahu :)

Bahaneyle millet de haberlerden nasipleniyor...

Çevrimdışı Shax

  • Yönetici
  • Normalleşmiş Retroman
  • *
  • İleti: 1207
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #5 : 25 Mart 2015, 23:57:25 »
12 zx spectrumu spectranet üzerinden bağlayarak, birlikte bir buçuk saate yakın bir süreye sahip mahler'in ilk senfonisini çalmışlar.
Bir aylak bakkal ve dijital hassas terazi (0.0001 gr) hadisesi. Kalibrasyon agirligi olarak ne kullanildigini soylemeye terbiyem izin vermiyor. Oyle acayip ve mutaassip bir cocugum ayriyetten.
Sahip oldukların zamanla sana sahip olur.

Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #6 : 26 Mart 2015, 00:16:40 »
12 zx spectrumu spectranet üzerinden bağlayarak, birlikte bir buçuk saate yakın bir süreye sahip mahler'in ilk senfonisini çalmışlar.

Quadruple SID çipi, Poke komutları ve tek C64 ile halledilebilecek bir hadise ama buradaki önemli nokta 12 Spectrum'un ağ üzerinden senkronize çalışması mı oluyor? Ben seyirci kitlesine hayran oldum :)

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #7 : 26 Mart 2015, 00:19:11 »
Yok, senkronu sağlayan spectranet dışında standart donanım ve yazılım kullanılmış. Önemli nokta yak aslında, salla.

Çevrimdışı AmonR

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 269
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #8 : 26 Mart 2015, 11:10:05 »
Bahaneyle millet de haberlerden nasipleniyor...

Gerçekten gayet güzel bir "bahane" oldu da biz de nasipleniyoruz.  :)

Yok, senkronu sağlayan spectranet dışında standart donanım ve yazılım kullanılmış. Önemli nokta yak aslında, salla.

Önemli nokta, "olayın" Spectrum tarafından yapılıyor olması, gerisi teferruat.  :)

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #9 : 30 Mart 2015, 19:10:07 »
Wos'un yokluğunda haberleri almak daha zor oluyor elbette ama, geçici forumda açılan bir muhabbet var, onu koyayım.

Renegade ve Target Renegade (2), zx spectrum'un en iyi oyunlarından ikisi. Fakat sonra çıkan renegade 3 tam bir fiyasko idi. Oyun tasarımı bu ünlü dövüş oyununu dandik ötesi bir "şey"e dönüştürmüştür, grafikleri tamamen monokrom, belli ki renegade efsanesinin getirisini ucuz yoldan söğüşlemek amaçlı bir oyundur.

Ralf, monokrom zx spectrum oyunlarının, standard buffer yapısından dolayı kolayca renklendirilebileceğini farkeden bir arkadaşımız, bu oyunu da renklendirdi.

Daha önce orjinali renksiz olan Outrun Europe, Mr.Heli ve Mr.Pacman oyunlarını renklendirmişti, renegade'i 1 saatten az bir sürede renkli hale getirdi. Oyun berbat olduğu için pek bir şey kazanmadı ama olsun.


Orjinal hali:


Yeni hali:



oyunun renkli halini arşivlerinize katmak isterseniz ekte bulunuyor




ayrıca http://trixter.oldskool.org/2012/12/17/maze-generation-in-thirteen-bytes/
13 byte ile maze generation yapılması durumu vardı. C64'de wisdom bunu 12 byte'a kadar çekmişti, fakat 2 byte mecburi bir header, yani aslında 10 byte denebilir kod için.

Aynı kodu cpc'de ssg https://github.com/ssg/mazecpc  adresinde paylaştığı üzere 12 byte'a indirmiş durumda.  Rastgele byte R registerinden elde ediliyor, CPC'de R registeri bayağı rastgele ilerliyor, interrupt kodu ne yapıyor belli değil (normalde shiftlerde 2, diğerlerinde 1 artması gerek).

Ben de zx spectrum'a dadandım elbette. Fakat bir problemim var. C64 ve CPC'nin karakter setinde \  ve / karakterleri yanyana duruyorlar. Dolayısı ile bir bit kullanarak karakter setini 1 karakter ötelemek kolay. örneğin, AND 1 komutu ile karakterinizin 40 ya da 41 olduğunu ayarlayabiliyorsunuz. Spectrum standard ASCII karakter setine sahip oldığı için bu karakterler 47 ve 92'de bulunuyor. Yani bildiğin ap ayrı iki rakam. Ayrıca 64'de karakter tabanlı bir ekran modu varken spectrumda böyle bir mod yok. Bu durumda iş benim için karmaşık oldu:
Neyse, ilk olarak şunu yaptım, 14 byte. Çünkü CPC'deki ld a,r spectrumda işe yaramadı. Spectrumda R ikişer ikişer artıyor, dolayısı ile ya düzgün bir pattern alıyoruz, rastgele bir görüntü çıkmıyor. Ama neyse ki daha iyi birşey buldum:

Kod: [Seç]
loop
in a,(&ff) ;get a random value from floatingbus
and &1 ;test it
jr z, jump ; select a character to print
ld a, &2f ; slash selected
defb &1 ;to skip next instruction, compiles to (LD BC, nn)
jump
ld a, &5c ; backslash selected
RST #10 ;print character
jr loop ;loop forever
sonra bu:

Kod: [Seç]
loop
in a, (&ff)
rra
ld a, &2f
jr c, jump
ld a, &5c
jump :
rst #10
jr loop

12 byte. burada birkaç avantaj var, o da spectrum'un floating bus denen bir hatası olması. Buna göre eğer herhangi bir aygıt takılı değilken bir giriş/çıkış portundan bilgi okursanız o sırada ula'nın yaptığı işleme göre rastgele bir rakam okumuş oluyorsunuz. Bu işlem 2 byte kaplıyor ama bir alet (örneğin divide) takılı olursa bu işe yaramaz. Ama expansion boş ise bayağı rastlantısal bir labirent elde ediyoruz.

Baktım asm bilgim beni ileri taşıyamayacak ve z80'ci arkadaşlara gönderdim kodu, ve bambaşka bir yaklaşımla sorunu 10 byte ile çözümlediler:

Kod: [Seç]
maze:
add a,(hl)
inc l
sbc a,a
and &2D
add a,&2F
rst &10
jr maze

John Metcalf, bunun yerine rom'daki bilgiyi okumayı tercih ediyor. Buradaki avantaj da şu, programı çağırdığınızda HL rom'da bir noktayı gösterir durumda, dolayısı ile hl'ye birşey yüklemeden direkt rom'daki bilgiyi alıyor rastgele rakam olarak. Bu daha uygun birşey ama kod hep aynı çıktıyı üretiyor elbette :D


bu kodun sonucu ektedir.



Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #10 : 03 Nisan 2015, 19:22:51 »
maze generation olayına jim bagley (midnight resistance coder'ı) de katıldı, yine 10 byte ama farklı yöntem, bu tür matematik hesapları lazım olabilir diye, arşiv amaçlı koyuyorum:

Kod: [Seç]
Start:
add a,(hl)
inc l
sbc a,a
and $73
xor $2f
rst 16
jr Start

Çevrimdışı memrah

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 188
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #11 : 04 Nisan 2015, 11:40:14 »
ROM'dan byte okuma yontemi iki byte daha kisa olabilir ama bence senin floating bus trick'i cok daha yaraticiymis

Çevrimdışı memrah

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 188
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #12 : 08 Nisan 2015, 21:07:06 »
Biraz gicik sorular sorup konuyu canlandirayim. Ref'in hic sesi cikmiyor bu gunlerde. :D

ilk olarak, bu rastgele labirent konusuna bizim Speccy'nin fontu cok uygun degil. Aralarda hep bosluk kaliyor. C64 fontu daha uygun. Ehehehe.

Simdi ana gicik soruya geldik. Bu rastgele labirent jeneratoru kodunun boyutunu ufaltma cabasi guzel hos ama bir noktada takiliyorum, o da: rst 16. Yani rutinimiz hangi "slash" karakterinin basilacagini kendine ozgu rastgele mantigi ile sectikten sonra ROM'dan ekrana karakter basma rutinini cagiriyor. Bu durumda acaba rutinin uzunlugu gercekten 10 kusur byte mi sayilmalidir, yoksa &16'dan baslayan print char rutininin uzunlugunu da buna byte cinsinden dahil etmek mi gerekir?

C64 ve CPC'de yazilmis olan kodlari gormedim ama tahminim onlar da ekrana karakter basmak icin ROM rutini kullaniyordur. Nedir gencler bu durumda yapmamiz gereken? Bu ikilem ve soru isaretleri yedi bitirdi beni. :D :D


PS. Uzun lafin kisasi, Ref'den yeni Speccy haberleri bekliyoruz bu kumulatif baslik altina ;)

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2881
  • Advanced User Simulator
    • ae unutmadan
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #13 : 09 Nisan 2015, 08:30:28 »
Boşluk sorunu PC konsolunda da var, fazla takılmamak lazım :)

Bu durumda acaba rutinin uzunlugu gercekten 10 kusur byte mi sayilmalidir, yoksa &16'dan baslayan print char rutininin uzunlugunu da buna byte cinsinden dahil etmek mi gerekir?
bilmem, rom makinenin değişmez bir parçası olduğu için bence kabul edilebilir. Yoksa işlem sadece z80 ile yapılacaksa görüntüyü oluşturan çipleri de dışarıda bırakabiliriz, sonuç register'larda kalsın :D

Alıntı
C64 ve CPC'de yazilmis olan kodlari gormedim ama tahminim onlar da ekrana karakter basmak icin ROM rutini kullaniyordur.
CPC'yi bilmiyorum ama C64'de karakter modu var. Yani vic ram'deki byte'ı okuyor ve ekrana karakteri çiziyor. Petscii tarzı grafikler bu tip karakter tabanlı ekran kaşesinin sonucu. Lakin karakter modundayken ekrana bir piksel basmak mümkün değil. Sanırım bu da c64 basic'in grafik yetenekleri ekrana karo maça iskambil kağıdı sembollerini basmakla sınırlıyor. Aslında suç basic'in grafik modu kullanmamasında. Sanırım karakter setini modifiye etmek mümkün, ama yine de... Neyse, bu sayede c64'cüler ekran belleğine karakter kodunu yazdıklarında ekrana çiziliveriyor. Bu da ROM çipi yerine başka bir çipi kullanmak demek aslında. Çizim işlemi yine 6502 ile yapılmamış oluyor.

lda #$11    ;R karakterinin karakter kodu
sta $0400  ;Ekran belleğine kopyala, ekranın en üst köşesinde R belirir.

C64'e birşeyler yüklenirken ekranın çöp tenekesine dönüşmesinin sebebi de makine açıldığında bu modda olmasından kaynaklanıyor. Yüklenen program ekran belleğinin üzerine yazınca vic ekranı ilgili karaktere çeviriyor.

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: Speccy dünyasından kümülatif haberler
« Yanıtla #14 : 09 Nisan 2015, 09:54:30 »
Simdi ana gicik soruya geldik. Bu rastgele labirent jeneratoru kodunun boyutunu ufaltma cabasi guzel hos ama bir noktada takiliyorum, o da: rst 16. Yani rutinimiz hangi "slash" karakterinin basilacagini kendine ozgu rastgele mantigi ile sectikten sonra ROM'dan ekrana karakter basma rutinini cagiriyor. Bu durumda acaba rutinin uzunlugu gercekten 10 kusur byte mi sayilmalidir, yoksa &16'dan baslayan print char rutininin uzunlugunu da buna byte cinsinden dahil etmek mi gerekir?

C64 Scene'de bildiğim kadarıyla genel kural eğer Ram'e bir şey yazmıyorsan bu kısım koddan sayılmıyor. Senin örneğinin tersine ROM rutinleri pattern oluşturmak için veri olarak kullanan programlar da var. Orada da ROM'dan okunan data programın boyuna dahil edilmiyor. En azından benim takip ettiğim compolarda hep böyleydi.

Karakter modda görüntü üretmek için yazılan color ram ($d800-$dbff) ve char ram ($0400-$7ff) de yine program boyutundan hariç tutuluyor. Zero page adreslerinin sayılıp sayılmadığı kısmı ise gri.

 
Gosub ile gidilen yerden goto ile dönen adam