Gönderen Konu: Dummy Intro  (Okunma sayısı 5424 defa)

Dummy Intro

« : 08.02.2007 18:10:17 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Commodore 64 ile ilk intronuzu yazmanız için elimden başka ne gelir diye düşündüm ve sıfırdan düzenli bir şekilde dummy bir intro kodlamaya karar verdim. Plazma için çok uygun birşey değil bu çünkü yalnızca koddan ibaret. Ben de tr-demoscene'e hediye ediyorum bu kodları. Gerçi tahmin ediyorum yakında move edilecek başka yerlere :)
 
Attachment olarak mesaja ekliyorum projeyi. Ayrıca her ihtimale karşı URL de veriim.
 
www.akaydin.com/misc_files/dummyintro.zip
 
şimdi bu paketin içinde 3 adet birbirinin devamı olan intro geliyor. Her birinin .a uzantılı olan kaynak kodu ve .prg uzantılı olan ise çalıştırılabilir dosyası.
 
dummyintro1: koala logo+raster barlar+karakter set+scroll+müzik
dummyintro2: dummyintro1+color flash
dummyintro3: dummyintro2+sinuse bağlı dolanan 8 sprite
 
Kısacası en basitten incelemeye başlayıp onu sindirdikçe bir sonraki efekti inceleyerek ilerleyebilirsiniz. Ben bu "dummyintro" projesini yeri geldikçe 4,5,6... şeklinde ilerletmeyi düşünüyorum.
 
Introların gereksinim duyduğu tüm dosyalar "files" klasöründe mevcut. Peki o dosyalar nerden geldi? Hepsini ben PC'de hazırlayıp çeşitli yöntemlerle 64'e uygun hale getirdim. Orjinal PC dosyaları "worx" klasörü içersinde mevcut. Birkaç dip not:
 
Logoyu photoshopta hazırladıktan sonra Timanthes kullanarak koala formatına çevirdim. Ardından da HexEditör ile yalnızca üstten 11 karakterlik alanın verisini (88 pixel yüksekliği) parçalara böldüm bitmap, video ve color dataları şeklinde. Bu iş için gerekli tool linkleri:
 
Timanthes:
http://noname.c64.org/csdb/release/?id=30789
 
XVI32 Hex Editor:
http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
 
Koala formatının içinden ilk 11 karakter satırının datasını almak için Bitmap alanının (detaylar için bkz: Plazma #3 grafik modları) ilk 40*8*11=320*11 byte'ı, video ve color ekranlarının ise 40*11 byte'ını ayrıştırmanız gerekiyor. Elbette ki projede ayrıştırılmışı var ancak kendi logonuzu eklemek istediğinizde bu işlemleri yapmanız gerekecek.
 
Sinus olayına çok değinmeyeceğim. Zaten defalarca anlattım Plazma'da. Ancak bu sefer ufak bir fark var. sinus1 tam 256 byte'a denk gelirken sinus2 bu defa 240 bytelık bir genişliğe sahip. Nedeni ise spriteların x ve y sinuslerin peryodlarının farklı olması sayesinde efekt daha dinamik bir hal alıyor. Elbetteki 240 genişliği ekstra kontroller gerektiriyor. 3. intronun kodunu inceleyiniz.
 
Sprites klasörüne girince ufak bir karmaşa göreceksiniz. Korkmayın :) Burdaki "sprites.psd" photoshopda 8 spriteın layerlar halinde durduğu dosya. sprite1.raw'dan sprite8.raw'a kadar olanlar ise layerların tek tek raw olarak kaydedildikleri format. Ancak dikkat!!! Bu raw formatı spritelar tek renk olduğu halde 3 kanal yani RGB şeklinde kaydedilmiş halleri olmalıdır. Çünkü benim converterım öyle çalışyor :) 24x21'lik alan 504 byte kaplar ancak her bir byte için x3 renk kanalı 1512 byte oluyor. "C64 Gfx-Sprite Converter.exe" ise .NET Framework 1.1 gerektiriyor. Yıllar önce "kim bilir yıllar sonra gelişe gelişe ne hale getiririm bu projeyi" diye başladığım ancak 3-4 senedir update yüzü görmemiş bir projedir. Convert sprite butonuna tıklayıp *.raw dosyasını seçtikten sonra .spr uzantısıyla kaydedeceğiniz dosya commodore 64'ün sprite formatıdır. Ard arda eklemeyi kolaylaştırmak için 21x3 = 63 bytelık dosyaları sonuna bir 0 byteı ekleyerek 64 byte olarak kaydeder. Tüm sprite çıktılarını aldıktan sonra yine Hex Editor kullanarak kıç kıça ekleyebilirsiniz spriteları.
 
Müzik ve karakter seti bulmak ise size kalmış. Ama size bir kıyak olarak özellikle commodore karakter setleri için şu URL'i de veriim. Kişisel tavsiyem yayınlayacağınız projelerde karakter setini bir grafikere çizdirmeniz ve böylelikle orjinal bir karakter seti kullanmanızdan yanadır.
 
http://kofler.dot.at/c64/font_01.html
 
şimdilik bu kadar. Artık sizlerden canavar introlar beklemek hakkımdır herhalde. Kolay gelsin ;)

Dummy Intro

« Yanıtla #1 : 09.02.2007 00:59:41 »
Hızlı düğmeleri aç

stranger

İleti: 241

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
NaptIn yaw... :) Bir anda supriz oldu...
 
 
[/SIZE]

Dummy Intro

« Yanıtla #2 : 09.02.2007 09:40:45 »
Hızlı düğmeleri aç

esmaeild

İleti: 96

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.kodhane.com
:(
:confused:
:o
:)
:p
:D
:eek:
 
 
kelimeler yetmiyor. 15 dk. dır kıvranıyorum şuraya 2 satır yazamadım. tebrikler.
« Son Düzenleme: 09.02.2007 09:44:07 Gönderen: esmaeild »
Coding Is Art.

Dummy Intro

« Yanıtla #3 : 09.02.2007 10:26:02 »
Hızlı düğmeleri aç

vigo


  • Ziyaretçi
kanka çok güzel hazırlamışsın herşeyi... bu kadar emek ve uğraşlarınız umarım "newbie" c64 coderlarımızın yapacağı, hatta belkide "nightshift" de release edeceği introlarla karşılığını bulacaktır.

arkadaşlar, hatta "newbie c64" coderları, sizlere sesleniyorum, nightshift olsun 7dx olsun, aslen bizim gönlümüzde ağırlık olarak Commodore partileridir. bu bakımdan en küçük bir intronuz bile çok değerli bizim için!

2007 yılında, halen, Türkiye'den, C64 prod çıkması bizler için çok önemli ve mutlu edici... o bakımdan sakın nightshift'e eli boş gelmeyin. keza, takıldıınız bi yer olursa, partide, skate kardeşimiz hemen size bi el atar, arkadan iter, olmadı hepimiz iteriz...

Dummy Intro

« Yanıtla #4 : 24.07.2008 16:36:23 »
Hızlı düğmeleri aç

joker_

İleti: 144

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
nightlord ve skate logo göstermeyi defalarca anlatmalarına rağmen takıldığım yerler oldu,sağolsun nightlord attığım bir ton maile büyük bir sabırla cevap yazıyor ama artık canına tak edip yeter lan bıktım senden diyip bir gün dövecek beni :D belkide belli bir yaştan sonra birazda hayat şartlarının üzerimize yüklediği stressten anlamak bazen zor oluyor.
benim sormak istediğim daha doğrusu bütün yazılanları,makaleleri,yazıları deflarca okumama rağmen haftalardır uğraşıp kafayı yemek üzere olduğum ve artık başaramayacağımı anlayıp, öğenmek istediğim,
bmp dosyalarını nasıl bölerim.yani elimde bir .bmp dosyası var ve ben bunu hangi tool lar ile nasıl bölüp gösterebilirim.
mesela,
-bmp dosyasının belli bir ebat ölçüsü olması gereklimi,illa şu ölçüler içerisinde olmalı gibi,
-önce şu program ile (gerçi skate herşeyi anlatmış,ama timanthes programını defalarca indirdim hata veriyor çalışmıyor) şu formata çevir,
-sonra şunu yap,bunu yap
-xvı32 hex editör ile şuraları sil (11 karakterlik alanın verisini (88 pixel yüksekliği) parçalara böldüm bitmap, video ve color dataları şeklinde) bunları nasıl yapıp kaydediyoruz.
yani kısaca adım adım çok acemi birine açıklarsanız büyük bir dertten kurtulmuş olup geceleri rahat uyuyabilirim.:D
bu kadar değerli bilgiler varken ve bu kadar değerli insanlar birşeyler öğretebilmek için çaba harcarken hiç bir şey yapamamak inanın dokunuyor bana.(burasını kendim için yazdım nolur kimse alınmasın :D)

Dummy Intro

« Yanıtla #5 : 24.07.2008 18:02:48 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
şimdi PC üzerindeki bir bmp dosyasını 64'e convert etmekten bahsediyorsan o iş kolay değil elbette ki. tavsiyem grafikleri 64 üzerinde bir çizim programıyla hazırlaman. ama diyorsan ki illa da convert edicem, o zaman yine timanthes ya da benzeri bir program en iyi çözüm olacaktır.
 
Senin için Timanthes'in elimdeki son sürümünü upload ettim kendi hostingime.
 
http://www.akaydin.com/c64/utilities/gfx/Timanthes.zip
 
Eğer yine indiremezsen bir koruma programı ya da firewall engelliyordur indirmeni. Bu link %100 çalışıyor.
 
Ayrıca eğer 3 renk + 1 arkaplan rengi şeklinde convertion yapmak istiyorsan benim kullandığım yöntem şu. Photoshop'da grafiği 320x200 çözünürlüğe getiriyorum (crop, resize v.s.). Sonra "nearest neighbour" seçeneği seçili bir şekilde 160x200'e scale ediyorum. Resim ince uzun bir hal alıyor ancak 64'e atınca pixeller 2 kat genişleyecek o yüzden problem değil. Sonra grafik modlarından indexed color'a çevirip 4 renge indirgiyorum resmi. Daha sonra magic wand toolunu kullanarak (anti aliasing kapalı olacak şekilde) renklerden arkaplan rengi olacak rengi seçiyorum ve sonra Select->Similar ile tüm aynı renk alanları seçime dahil ediyorum. Sonra bu alanı tam siyah (RGB 0,0,0) ile fill ediyorum (foreground rengi ile fill için ALT+DELETE, background için CTRL+DELETE). Sonra aynı işlemi diğer 3 renk için kullanıyorum. Bunlarda ise sırayla;
 
Tam Kırmızı (RGB 255,0,0)
Tam Yeşil (RGB 0,255,0)
Tam Mavi (RGB 0,0,255)
 
kullanıyorum. Bu sayede 160x200 pixellik siyah, kırmızı, yeşil, mavi bir resim elde ediyoruz. Sonra bu resmi raw olarak 3 kanal ( 24 Bit RGB ) kaydediyorum. Oluşan dosyanın boyutu 160x200x3 = 96000 byte oluyor.
 
Sonra PC'de yazdığım convertion toollarıyla dosyayı 3'er byte 3'er byte okuyarak 64 formatına çeviriyorum. Her 4 pixel bir byte oluşturacağı için mantık şöyle oluyor.
 
RGB 0,0,0 = %00
RGB 255,0,0 = %01
RGB 0,255,0 = %10
RGB 0,0,255 = %11
 
Yani yan yana siyah, kırmızı, yeşil, mavi pixeller varsa bu %00011011 = $1b = 27 byte değerini vermiş oluyor. 64'ün grafik ekranının dizilimine göre çevirmen lazım byte dizilimlerini. Basit bir metod uygun boyutlu arrayler kullanmaktır.
 
Bitleri yan yana eklemek için p1, p2, p3, p4 şeklindeki 4 pixel değerini şu şekilde işleme sokabilirsin.
 
p1 * 64 + p2 * 16 + p3 * 4 + p4
 
bit shiftinglerle ifade edecek olursak;
 
(p1 << 6) + (p2 << 4) + (p3 << 2) + p4
 
Sanırım kafanı daha da karıştırdım. Ama merak etme, bir sonraki Plazma'ya yazarım daha anlaşılır bir makale.
 
Edit: ılk postta bahsettiğim converter programım bu 96000 bytelık raw dosyaları otomatik olarak 64 multicolor formatına çeviriyor (yalnızca bitmap datası olarak).
« Son Düzenleme: 24.07.2008 18:09:30 Gönderen: skate »

Dummy Intro

« Yanıtla #6 : 25.07.2008 09:24:43 »
Hızlı düğmeleri aç

joker_

İleti: 144

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
teşekkürler skate,timanthes senin linkten indirdiğim çalıştı,daha önce indirdiklerimi çalıştıramadım,anlattıklarınla,ilk bmp dosyamı timanthes kullanarak .prg ye convert ettim,fakat sanırım bunu direkt gösteremiyoruz yani bölmek gerekli, asıl iş geldi şimdi bunu bitmap, video ve color dataları şeklinde nasıl böleceğimize işte benim sıkıntımda tam olarak bu,yani elimizdeki convert ettiğimiz .prg dosyasını nasıl böleceğiz,gerçi sen kendi yazdığın bir tool ile yapıyorsun,ben nasıl yapabilirim bu bölme işlemini,
:( HexEditör ile yalnızca üstten 11 karakterlik alanın verisini (88 pixel yüksekliği) parçalara böldüm bitmap, video ve color dataları şeklinde demişsin burada üstten 11 karakterlik alanın verisini nasıl buldun ve hangisi color data hangisi video,hangisi bitmap nasıl anlıyoruz burayı biraz açman mümkün mü?
:D ve nightlord ellerini ovuşturarak kıs kıs güler, yıllardır ben uğraşıyordum bu adamla birazda skate kafayı yesin :p
 belki sorular biraz komik geliyordur ama bir şey bilmeyince çok basit bir problem bile dağ gibi geliyor insanın gözüne :D

Dummy Intro

« Yanıtla #7 : 25.07.2008 10:09:29 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
bölme işlemi çok basit aslında. hex editörle kolayca yapabilirsin. öncelikle yanlış anlaşılma olmasın, benim yukarda anlattığım 3 renk resim convertion tekniği timanthes olmadığı durumlar için. Timanthes'i çalıştırabildiğine göre aşağıdaki adımları takip etmen lazım.
 
1) Convert edeceğin resmi yeni bir layer olarak yükle (Layers->Import From File).
2) Yükleyeceğin resmi önceden 320x200 boyutuna getirmemişsen expand canvas... sorusuna "no" diye cevap ver ya da sonradan yine 320x200'e getir alanı.
3) Effects->C64 Colormap menüsünden commodore renklerine düzgün bir biçimde convert et. Aslında default değerlerle bile iyi gözükecektir resim.
4) Sağ taraftaki layer bölümünden resmin layerına çift tıkla. Açılan "Layer Properties" penceresinden "Indexed Color", "Autofix Clashes" ve mod olarak da "Hires Multicolor" seç.
5) File->Save As menüsünden PRG olarak kaydet.
 
şimdi artık elimizde düzgün convert edilmiş bir 16 renk multicolor resim var. Oluşan dosya 10002 byte. Peki nasıl dizilmiş bu bytelar?
 
0-1 : Dosyanın yükleyeceği adres (00 20 yani $2000 adresi olarak kaydediyor Timathes)
2-8001 : 8000 bytelık bitmap datası (BITMAP)
8002-9001 : 1000 bytelık karakter ekranı datası (VIDEOMAP)
9002-10001 : 1000 bytelık renk ekranı datası (COLORMAP)
 
şimdi benim tavsiyem aç Hex editörü, 2. byte'ın (20) üstüne gel ve Edit->Delete To Cursor'u seç. Bu şekilde dosyayı kaydedersen tam 10000 byte tutacak dosya ve şu hale gelecek.
 
0-7999 : 8000 bytelık bitmap datası (BITMAP)
8000-8999 : 1000 bytelık karakter ekranı datası (VIDEOMAP)
9000-9999 : 1000 bytelık renk ekranı datası (COLORMAP)
 
Bu aşamadan sonra bu dosyayı koruyarak kopyalarını çıkar BITMAP, VIDEOMAP ve COLORMAP'i ayrı ayrı istiyorsan.
 
BITMAP'i bölebilmek için kopyasını çıkardığın dosyayı aç ve 8000. byte'a ilerle (hex olarak $1F40, Status Bar'da görebilirsin) burada Edit->Delete From Cursor seç. şimdi dosyayı BITMAP olarak kaydet. Tam 8000 byte olması lazım uzunluğunun.
 
VIDEOMAP için yine çıkardığın kopyalardan birini aç, bu defa 7999. byte'a git yani $1F3F'ye. Burada Edit->Delete To Cursor seç. Bu sayede BITMAP uçacak ancak COLORMAP hala duruyor olacak. şimdi kalan 2000 bytelık dosyanın 1000. byteına ilerle (hex $3e8). Burada Edit->Delete From Cursor seç ve VIDEOMAP olarak kaydet.
 
COLORMAP için ise doğrudan 8999.byte'a ilerle (hex $2327) ve burada Edit->Delete To Cursor seç. 1000 bytelık COLORMAP'in de hazır artık.
 
Böylece bölebilirsin. VIDEOMAP ekran adresine (varsayılan $0400) ve COLORMAP $d800'e transfer edilecek değerler. Tabii benim tavsiyem VIDEOMAP'i BITMAP ile aynı bankta yer alan $400'lük bir bloğa denk getirip doğrudan ekran adresi olarak orayı göstermen yönünde olacak. Plazma'da bununla ilgili ıpuçları köşesinde bir yazı yayınlamıştım (sanırım 4. sayıda). Onu inceleyebilirsin.

Dummy Intro

« Yanıtla #8 : 25.07.2008 15:19:15 »
Hızlı düğmeleri aç

joker_

İleti: 144

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
çok teşekkürler skate bayaa detaylı anlatmışsın,en kısa zamanda deneyeceğim,takıldığım yerler olursa yine başını ağırtırım.:D