tr-demoscene

the scene => coding => amiga => Konuyu başlatan: skate - 18.02.2011 02:05:57

Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 18.02.2011 02:05:57
Arkadaşlar, bu forum kaç senedir var? 7? 8? Sanırım henüz "Amiga Coding" bölümüne ilk post atan ben oluyorum. Endo o kadar döküman yazdı ama sanırım burada başlık açılmamış.
 
Aşağıda Plazma #4 ve #5'de yayınlanan Endo kardeşimin Amiga AsmPro Kursu yazısının ilk örneğini görebilirsiniz. Herşeyin bir başı bir de sonu vardır. Bu sanırım başı. :)
 
Gerek yok gibi ama resimlerin üzerine tıklayarak büyük hallerini görebilirsiniz.
 
(http://www.akaydin.com/misc_files/skates_development_environment/small/skates_first_asmpro_test_01.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/skates_first_asmpro_test_01.jpg)
 
(http://www.akaydin.com/misc_files/skates_development_environment/small/skates_first_asmpro_test_02.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/skates_first_asmpro_test_02.jpg)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: endo - 18.02.2011 09:52:36
Vaay nihayet birileri yazımı okumuş hatta örnek programımı bile yazmış :) Hayırlı uğurlu olsun Amiga'n :)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: nightlord - 18.02.2011 21:41:31
vaay super.
 
Bi gun mutlaka su amigada da biseyler yapmak istiyorum. Ben UAE uzerinden Endo'nun tutorialini takip planlari yapiyordum. Skate sen daha da coskun bir deneyime yelken acmissin a1200 uzerinden giderek :)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 19.02.2011 01:10:36
@nightlord: ben de ilk uae üzerinde denemiştim birşeyler yapmayı. ama sürekli crossdevelopment için uygun bir çözüm araştırıyordum bir yandan. adam gibi birşey bulamayınca emülatör içinden takılmak hiç zevk vermedi.
 
şimdi hem gerçek donanım kullanmanın zevki var, hem de A1200'ün kasa eski ama klavye yenilenmiş sıfır, pamuk gibi. PC klavyesi olarak Logitech Wave kullanıyorum, çok da severim. Ama A1200'ün şu anki klavyesinin rahatlığının yanından geçemiyor. :)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: endo - 19.02.2011 14:37:19
Benim bi de şöyle bi planım var, ne dersiniz?
Boot edince pat diye ASM-Pro açılan, üzerinde workbech vs. sistem olmayan, bir UAE setup paketi. Bunu kolayca yapabilirim.
Yani Setup.exe'yi kuruyorsunuz, masaüstünde ikona tıklayınca, asmpro'lu bir uae açılıyor, hdd'li amiga 500 (veya 1200).

Daha önce bunu TotalChaos isimli Amiga oyunu için yaptım, sadece hardfile biraz yer kaplıyor, yani setup.exe 40-50 MB olabilir.

Böylece kimse uae, hdd, asm-pro kurmak ayarlamakla uğraşmaz.
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: paradox - 19.02.2011 18:00:57
Alıntı yapılan: endo;27164
Benim bi de şöyle bi planım var, ne dersiniz?
Boot edince pat diye ASM-Pro açılan, üzerinde workbech vs. sistem olmayan, bir UAE setup paketi. Bunu kolayca yapabilirim.
Yani Setup.exe'yi kuruyorsunuz, masaüstünde ikona tıklayınca, asmpro'lu bir uae açılıyor, hdd'li amiga 500 (veya 1200).

Daha önce bunu TotalChaos isimli Amiga oyunu için yaptım, sadece hardfile biraz yer kaplıyor, yani setup.exe 40-50 MB olabilir.

Böylece kimse uae, hdd, asm-pro kurmak ayarlamakla uğraşmaz.

UAE'nin direk asmpro ile başlıyacak  hali olucak heralde...
Peki kod yazıldı derlendi sora .adf imajına nası çevrilecek?..
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 20.02.2011 05:24:18
4-5 saat harcayıp Amiga Hardware Guide'ı baştan sona okudum. Elbette ki başlangıçta çok ihtiyacım olmayacak kısımları çok hızlı geçtim. şimdilik seri/paralel porttan veri gönderip almayacağım sonuçta. :)
 
Copper ve Blitter, Bitplaneler hakkında hep kulaktan dolma, yüzeysel olan bilgilerimi oturttum. Sonra da ilk ekranda sonuç göreceğim örnek olarak yine Endo kardeşimizin Plazma #5'deki copper örneğini yazdım. Yazdıktan sonra ise copper dataları üzerinde ufak tefek oynamalar yaptım. Amiga'da ilk grafik ekranı görüntülerimi almaya başladım bu sayede. Bu da ikinci adım. Üçüncü adım yine copper üzerinden ancak animatik birşey olabilir belki. Dördüncü adımın Blitter olacağından kimsenin şüphesi olmasın. :)

(http://www.akaydin.com/misc_files/skates_development_environment/small/copper_test_01.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/copper_test_01.jpg)

(http://www.akaydin.com/misc_files/skates_development_environment/small/copper_test_02.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/copper_test_02.jpg)

(http://www.akaydin.com/misc_files/skates_development_environment/small/copper_test_03.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/copper_test_03.jpg)

(http://www.akaydin.com/misc_files/skates_development_environment/small/copper_test_04.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/copper_test_04.jpg)

(http://www.akaydin.com/misc_files/skates_development_environment/small/copper_test_05.jpg) (http://www.akaydin.com/misc_files/skates_development_environment/big/copper_test_05.jpg)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 20.02.2011 09:04:34
3. aşamada bir rasterbar'ı sinüse bağladım ve iç ekranın rengi de hareketle uyumlu bir biçimde değişiyor. özetle artık adam gibi bir mainloopum var ve copper ile dinamik olarak elleşebiliyorum. tabii asmpro'da nasıl sinüs table yaratılır, nasıl table'a ulaşılır, lea star wars'daki prenses midir yoksa bir opcode mudur v.s. v.s. birçok şey biraz daha netleşti kafamda.
 
[youtube]wmlgA0XKyo8[/youtube]
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: endo - 20.02.2011 23:24:56
Alıntı yapılan: paradox;27165
UAE'nin direk asmpro ile başlıyacak  hali olucak heralde...
Peki kod yazıldı derlendi sora .adf imajına nası çevrilecek?..


Setup, ayarları yapılmış bir UAE ve bir hardfile (hdf) ile gelecek. Yani birşey kaydederseniz doğrudan hdf'nin içine kaydedilmiş olacak. Harddiskli bir amiga yani.
Bir dosyayı dışarı (PC'ye) almak gerekirse, bir klasörü ikinci bir harddisk gibi gösterip oraya kopyalayabilirsiniz. Sonra o klasörden ADF Opus gibi bir programla bir adf'ye kopyalayabilirsiniz. Tabii buna gerek olmayacak normalde de ille de bir adf'ye koymak gerekirse diye dedim.

@skate: süpersin, eline sağlık! sonraki sayılarda copper'ı sinüse bağlayacaktım ama sen şimdiden yapmışşsın :)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 21.02.2011 01:12:25
@endo: saat gecenin bir yarısı olmasa on kere telefon etmiştim sana. bazı şeyleri çözene kadar kafayı çizdim ama birçoğunu şans eseri buldum, hallettim. bahsettiğim sadece 68k asm değil, aynı zamanda asmpro kullanımıyla ilgili.
 
yaşadığım komik olaylar.
 
1) nasıl satır silineceğini bilmiyorum. sinüs tablosunu yanlışlıkla copper kodlarının altında oluşturmuş durumdayım. ne block cut paste yapmayı biliyorum ne de hızlı bir silme yöntemi. neyse ki hemen öncesinde kodu kaydetmiştim, önceki versiyonu yükleyerek çözdüm.
2) debug işleminin [A]+D olduğunu görüyorum menüden. Tuşlara basıyorum ve o da ne... Bir satır uçuyor. Bu benim az önce aradığım özellik. Meğer olay case sensitivemiş. [A]+D demek [A]+Shift+d imiş. :) Bu sayede hem satır silmeyi keşfediyorum hem de shift ile debug kısayolunu kullanmayı öğreniyorum.
3) Assemble et demek için [A]+a'ya basıyorum. Yukarıdakine benzer bir hata ile "Add Watch"un kısa yolunu bulmuş oluyorum ki o anda ihtiyacım olan şey de tam bu zaten. :)
4) En son Endo'nun AsmPro ile ilgili Plazma #5'deki 2. yazısı olan AsmPro Kılavuzu'na baştan sonra bir göz atıyorum ve birçok şeyi oradan öğreniyorum.
 
Bu sorunları yaşamamdaki en büyük neden ise çok komik. Elimde bir tane Amiga Mouse'u var şu anda (diğer annemleri eski evde kalmış). Onun da sağ tuşu çok zor basıyor ve temassızlık yapıyor. Yani üstteki menüleri bir türlü kullanamıyorum. Onları kullanabilsem herşey çok daha basit olacak tabii. En kısa sürede annemlerdeki sağlam mouse'u alıp bu sorunu da aşıcam. Ama bu sorun sayesinde de epey bir keyboard shortcut öğrendim ki beni çok hızlandırdı.
 
şu anda yapmayı öğrendiğim en önemli şey editörü birçok debug özelliğiyle birlikte sağlam bir biçimde kullanmayı öğrenmem oldu. breakpoint koymak, watch'a label eklemek, step by step debug etmek, tekrar bu noktaya gelene kadar çalış demek (loop içinde muhteşem bir özellik) v.s. hepsini klavye shortcutlarıyla hızlıca kullanabiliyorum. Bundan sonrası için çok çok önemli bir gelişme bu.
 
Gelelim alışmam gereken şeylere. 68k asm oldukça kolay (hele ki 6502'nin limitlerini düşünürsek). Kaldı ki 68000+'a özel komutları da düşünürsek artık işin cılkı çıkıyor, x86 Asm gibi birşey resmen. Ancak beni zorlayan şeyler daha çok OpenGL ve DirectX'in ikisini birden kullanmış kişilerin karşılaştığı farklılıkları gibi. Mesela Blitter EOR fill'i yukarıdan aşağı değil soldan sağa yapıyor (sanırım reverse mode ile sağdan sola da yapabiliyor). Ben C64'den gelen alışkanlıkla bu güne kadar EOR filling için line slopları çizdirirken hep 45 dereceden büyük açılardaki değerler için step atlanması gerektiğini düşünmüşken burada olay tersine dönüyor. OpenGL ve DirectX'in matrislerinin eksenleri birbirine göre swap edilmiş biçimde kullanması gibi. Yani elbette ki C64'deki bilgilerimin bana sağladığı çok büyük avantajlar var. Ama bir o kadar da alışkanlıklarımı değiştirmem gereken nokta var. Neyse ki Blitter lineları çizmeye kadar herşeyi üstleniyor da ben kafamı çok yormayacağım bu işlere. :)
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 21.02.2011 01:31:22
@endo: aklıma gelmişken hızlı bir soru. copper'da 256'dan büyük çözünürlüklerde 2. bölgeye nasıl geçiyoruz? yani diğer bir deyişle $d011'in most significant bit'i nedir? :)
 
bir yerlerde birşeyler okudum ama tam anlamadım. adamın teki demiş PAL'da zaten en fazla 256 satır olur diye (laced mode hariç tabii). diğeri de demiş olur mu, daha fazla satır var (sanırım o da 262 satır var diyordu). bak önce 256 satır beklet, sonra bir 6 satır daha beklet görürsün falan demiş. senin örnekte de 320*256'lık bir alan ayrılmıştı ama 255. satır videodaki alttaki sabit alanın başlangıcına denk geliyor. Benim kullandığım çözünürlük 256'dan büyük (576x288'di sanırım) tamam ama yine de o kadar boşluk kalmasa gerek sanki. bu arada ekranın üstü de epey bir dışarıda kalıyor gibi. copper PAL'da ilk 25 satırla elleşemiyordu diye okumuştum ama görünen alanın kaçıncı rasterından başlıyor bilmiyorum.
 
şu yazdıklarımdan anlayacağın üzere sağdan soldan okuduğum bölük pörçük bilgileri bir toparlar ve durumu açıklarsan çok mutlu olurum.
 
edit: basit imla hataları düzeltildi.
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: endo - 22.02.2011 13:44:23
Plazmanın son sayısında galiba bu konuya değinmiştim, hızlıca yazayım vaktim dar şimdi, sonraki sayı için bi örnek yazmıştım galiba, bulunca buraya post edeyim.

ntsc'de 262 raster, pal'de ise 312 raster satırı var kullanabileceğin.

wait ile 0,255 pozisyonunu bekliyorsun. sonra 0-56 arası bir pozisyonu tekrar bekletiyorsun. Bu şekilde 256 + 56 arası satırlarda copper'ı kullanabiliyorsun.
Başlık: ılk Amiga Coding Başlığı :)
Gönderen: skate - 22.02.2011 17:06:54
@endo: okuduğum forumda da buna benzer birşey yazıyordu ancak özellikle şu PAL'da kaç rasterline var v.s. emin olmak istedim. Haliyle c64'deki ile aynı. Sonuçta PAL PAL'dır di mi. :D