Archive

Archive for the ‘Wii’ Category

3. Merhaba dünya diyene kadar (temeller)

April 2nd, 2010

Tekrar selamlar,

Daha önceki yazımda da belirttiğim gibi bu yazımda ilk programımız olan hello world / merhaba dünya programını tanıtacağım. İşe tepeden aşağıya programı tanımakla başlayalım. Önce programa dahil ettiğimiz kütüphanelerle mesela.

stdio.h ve stdlib.h’ı anlatmama gerek yok bunlar c programlarında sıklıkla kullanılan kütüphaneler zaten. Aşağıdaki iki kütüphane referansı ile başlayabiliriz.

gccore.h, bu wii/gamecube donanımına düşük seviyede erişimi sağlayan kütüphanelerin bütününü include eden bir header dosyası. Hello World programındaki video/ekran fonksiyonları örneğin buradan gelmekte.Wii/gamecube programları için olmazsa olmaz bir include. Gamecube demişken, evet wii’ye has bir şeyler kullanmadığımız zaman yazdığımız programı gamecube için de derlemek oldukça kolay bu arada.

wiiuse/wpad.h include’u ise wiimote’a erişmek için kullanılıyor.

Neyse include’ları geçelim, ekranda bir şeyler yazmak üzere yapılan başlangıç işlemlerine kısaca bir göz atalım.

	    // Initialise the video system
	    VIDEO_Init();

	    // This function initialises the attached controllers
	    WPAD_Init();

Video_Init() ekran kullanan bir uygulamada video işlemlerine başlamakta kullanılan bir fonksiyon, muhtemelen sistemin kendi iç değişkenlerini oluşturmasını sağlıyoruz böylece. WPAD_Init() fonksiyonu ise wiimote’larla iletişimi sağlayan kütüphaneyi ayağa kaldıran bir fonksiyon. Arkaplanda wiimote’larla bluetooth üzerinden sürekli haberleşmeyi başlatıyoruz böylece.

Not : Homebrew programların henüz wiimote’ları senkronize etme özelliği yok. Bu yüzden kullanıcının wiimote’larının hali hazırda senkronize edilmiş olması zorunlu. Burada bahsettiğim senkronizasyon wii üzerinde ve wiimote üzerindeki kırmızı tuşlarla yapılan senkronizasyon.

    rmode = VIDEO_GetPreferredMode(NULL);

Yaptığımız uygulama herhangi bir pencerede vesaire çalışmadığı için tüm ekran bizim. Wii 480p / 480i / 576i vesaire bir çok ekran modunu desteklemekte. Öncelikle bizim bunlardan birini seçmemiz gerekiyor. Üstteki kod parçası kullanıcının menü ayarlarından seçmiş olduğu video modunu geri dönüyor. Böylece NTSC kullanan kullanıcıda PAL, PAL kullananda NTSC kullanma gibi bir yanlışa düşmemiş oluyoruz. Tabii bu arada rmode değişkeninin global olarak aşağıdaki şekilde program içinde tanımlanmış olduğunu da atlamayalım.

static GXRModeObj *rmode = NULL;

Hemen peşinden bu video modunu tutan değişkenimizle aşağıdaki gibi ekran için cache’lenmeyen bölgeden bellek ayırıyoruz. Bu arada burada yazanların mantığını şimdiden anlamaya çalışmanıza gerek yok. Yazacağımız programlarda bunları hemen hemen aynı şekilde kullanıp belki de bir daha dönüp bakmayacağız bile bunların yüzlerine… Yine de, ileride olası double buffering kullanan bir uygulama yaptığımızda bu aşağıdaki bellek ayırma rutinini iki defa çağırmamız gerektiği bilgisi de önemli. xfb değişkenimiz void pointer olarak tanımlı bu arada. Ha bu arada işaret ettiği bellek bölgesine external framebuffer diyoruz.

xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));

Evet geldik zurnanın zırt dediği yere, bunları kısaca geçeceğim.

console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);

Bu fonksiyon çağrısı konsol (text basmakta kullanacağımız alan) kullanabilmek için gerekli bir çağrı. Bilmemiz gerekenler 2. parametreden 5.’ye kadar olanlar. Konsol olayı tamamen bir aldatmacadan ibaret, aslında yine grafik modu kullanılıyor. 2. ve 3. parametrelerde konsolun başlangıç x ve y koordinatları, 4. ve 5. parametrelerde ise sırasıyla konsolun genişliği ve konsolun yüksekliği tanımlanıyor.

	VIDEO_Configure(rmode);

Seçtiğimiz video modunu ayarlıyoruz burada,

	VIDEO_SetNextFramebuffer(xfb);

Ekran için hangi bellek bölgesini kullanacağımızı bildiriyoruz,

	VIDEO_SetBlack(FALSE);

	VIDEO_Flush();

	VIDEO_WaitVSync();
	if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();

Ekranı aktif hale getiriyoruz ve yaptığımız ayarların geçerli olabilmesi için 1 ya da 2 tarama yapılmasını bekliyoruz. Evet dediğim gibi buraya kadar olan kodlar aslında rutin başlangıç işlemlerini yapmakta kullanılıyorlar. Burada anlamadığınız bir yer varsa çok da kafanıza takmanıza gerek yok.

Gelelim esas programımıza

	printf("\x1b[2;0H");
	printf("Hello World!");

İlk satır pek hoşlanmadığım türden bir VT terminal kontrol karakteri dizisi… Oradaki 2 ve 0′a dikkatinizi çekmek istiyorum sadece, bu rakamlar cursor’ü 2 nolu satırın, 0 nolu sütununa yani ilk sütuna konumlandırıyor. ilk satır ve sütunun 0′dan başladığını düşünürsek mantıksal olarak 3. satır ve 1. sütundan bahsediyoruz pek tabii. İkinci satır ise gayet aşikar.

Gelelim kodun geri kalanına,

	while(1) {
		WPAD_ScanPads();

		u32 pressed = WPAD_ButtonsDown(0);

		if ( pressed & WPAD_BUTTON_HOME ) exit(0);

		VIDEO_WaitVSync();
	}

	return 0;

Ekrana yazımızı bastıktan sonra burada sonsuz bir döngümüz var. WPAD_ScanPads çağrısı wiimote’ların durumunu denetlememizi sağlıyor, hangi tuşa basıldı vesaire bilgileri tüm wiimote’lar için topluyor. Bir sonraki WPAD_ButtonsDown(0) ile de bağlı olan ilk wiimote’un hangi tuşlarına basıldığı ile ilgili bir rapor alıyoruz. Bize 32 bitlik bir değer dönüyor bu çağrı. Bize dönen bu değer içinde bizim ilgilendiğimiz HOME tuşunu ifade eden, bu tuşa basılmış ise programdan çıkıyoruz. Bir sonraki satırda VIDEO_WaitVSync çağrısı da programımızın ekran taramasının bitimine kadar duraksamasını ve boşu boşuna cpu’yu yiyip bitirmemesini sağlıyor. Kullanıcı wii’sini 50hz pal modunda kullanıyorsa bizim bu döngümüz saniyede 50 defa çalışıyor. Bu wiimote üzerinde basılan tuşları yakalamak için oldukça yeterli bir süre.

Böylece basit programımızı kabaca tanıtmış olduk. Şimdi sıra geldi programımızı derlemek için kullandığımız Makefile dosyasına. Makefile dosyaları make isimli bir program tarafından kullanılan derleme / linkleme / kurulum / çalıştırma gibi program geliştirmenin rutin süreçlerini kolaylaştırmaya yarayan dosyalar. Öncelikle ben de sıfırdan bir Makefile oluşturacak kadar bu dosyanın öğelerine hakim olmadığımı belirtmeliyim. Zaten çoğu zaman kullanacağımız Makefile içerisinde değiştireceğimiz yerler belli olduğundan öncelikle bunları bilmemiz yeterli. Bu yüzden aşağıda Makefile içerisinden belli satırları buraya alıntılayıp bu bölümlerin nasıl kullanıldığını açıklamakla yetineceğim.

SOURCES		:=	source
DATA		:=	data
INCLUDES	:=

Burada SOURCES kaynak kodlarımızın nerede bulunduğunu işaret ediyor, mevcut örneğimiz için source klasöründe.

DATA kısmı programımıza linklenecek binary dosyalara işaret etmekte kullanılıyor. Resim, müzik veya herhangi bir binary içerikten bahsediyoruz burada.

LIBS	:=	-lwiiuse -lbte -logc -lm

Burası da belki de en çok değiştireceğimiz kısım. Programımızda kullanacağımız diğer kütüphaneleri burada belirtiyoruz. Windows üzerindeki DLL, linux/unix üzerindeki SO’lar gibi shared library’ler kullanamadığımız için kullandığımız kütüphaneleri derleme sonrası programımıza linklenmek üzere yüklemiş olmalı ve Makefile içerisinde de bunlara referans vermek durumundayız. Yukarıda ismi geçen kütüphaneleri C:\devkitPro\libogc\lib\wii klasöründe görebilirsiniz. Örneğin burada -l önekinden sonra geçen wiiuse bu klasördeki libwiiuse.a kütüphanesine işaret ediyor.

Yukarıda kütüphaneler belli bir mantıkla sıralanmış durumda bu arada bunu da belirtmekte fayda var. Bu satırda diğerlerini kullanan kütüphaneler daha başa, bağımsız olanlar ise sona yazılıyor.

- libm bir matematik kütüphanesi, diğer kütüphaneleri kullanmıyor ama örneğin ogc kütüphanesi bu kütüphaneyi kullanıyor. Bu yüzden en sonda yazılmış.

- libogc gccore.h’ı include ettiğimiz anda boynumuzun borcu haline gelen bir kütüphane ama ne libwiiuse’u ne de libbte’yi kullandığı için yine sonlarda ama libm’den önce.

- libbte bir bluetooth kütüphanesi. Biz doğrudan kullanmasak ta wiimote’a erişim için kullandığımız libwiiuse kütüphanesi bunu kullanıyor dolayısıyla libwiiuse’dan sonra geçmek durumunda.

- libwiiuse ise wii’nin bluetooth ile bağlandığı hemen her aparata erişmemizi yüksek seviye bir api ile sağlayan bir kütüphane.

Şimdi bu programa müzik çalmak üzere libmad kütüphanesini kullanan kodlar eklediğimizi düşünelim. Sizce bu kütüphaneyi kullanacağımızı belirten -lmad ifadesini yazdıktan sonra Makefile içerisindeki üstte belirttiğimiz satır nasıl olur?

LIBS	:=	-lwiiuse -lbte -lmad -logc -lm

Burada biraz mantık, biraz da derleme esnasında alınan hatalar etkili oluyor. Mantığımızı kullanırsak : müzik çalabilmek için wii’nin ses için olan donanımına erişmemiz gerektiğini çıkarabiliriz. Bu yüzden wii donanımına erişmek için libogc’nin kullanıldığı bilgisiyle libmad’i libogc’den önceye alıyoruz.

Neyse şimdilik müzik falan yapmayacağız :)

Bu arada yazımız da burada sonlanırken bir sonraki yazıyla beraber gerçek bir projeyi parça parça yazarak devam etmeyi düşünüyorum. Bu bir oyun olabilir, bir uygulama olabilir, yazarken wii ile iyice aşina olacağımız sonunda da belki kullanabileceğimiz bir şeylerin ortaya çıktığı orta çapta bir projeden bahsediyorum. Henüz kafamda net bir şey yok, önerilerinize açık olduğumu bildirerek bu yazımı da burada sonlandırıyorum.

Türkçe, Uncategorized, Wii, Wii Homebrew Geliştirme Dizisi , , , ,

2. Ortamı hazırlayalım – Merhaba Dünya

March 28th, 2010

Genel Bilgi

C ile uğraştıysanız programları işlemcinin anlayacağı makine koduna çeviren bir derleyiciye ihtiyacımızın olduğunu az çok biliyorsunuzdur. Yine aynı şekilde geliştirme yapacağımız ortam ile ilgili bazı kütüphanelere (library) de ihtiyacımız olacak. Şanslıyız çünkü devkitpro isminde wii, nds, psp için program geliştirmekte kullanabileceğimiz bir araç takımı (toolkit) mevcut. Bu konsolların sahip olduğu Power Pc ve Arm işlemciler için executable üretebilmemiz mümkün devkitpro’nun bize sağladığı imkanlarla. Wii için özel konuşursak : wii’nin çevre birimlerine erişimimizi kolaylaştıran libogc adı verilen bir kütüphane seti de mevcut.

Ortamı Hazırlayalım

Şimdiden fazla detaya girmeden wii için program geliştirmede bize yardımcı olacak devkitpro araç kitine doğru yol alalım.

Devkitpro’nun resmi sitesi : http://www.devkitpro.org

Buradan downloads linkine tıkladığımızda doğrudan bizi windows için olan kurulum programına link karşılıyor aşağıdaki şekilde.

http://www.devkitpro.org/downloads/

Buradaki Windows Installer linkine tıklayalım ve devkitpro’nun sourceforge üzerindeki dosyalarının olduğu yere ulaşalım.

Yeşil büyük Download Now yazan butona tıklayalım ve devkitpro’yu kurmakta ve güncellemekte kullanılan Devkitpro Updater programını bilgisayarımıza indirelim veya doğrudan browser’ımızda açılan penceredeki çalıştırma seçeneği ile çalıştıralım. (Rehber yazıldığı esnada en güncel devkitpro sürümü r21 idi ve kurulum programının ismi de devkitProUpdater-1.4.7.exe idi)

Programı çalıştırdığımızda şöyle bir ekranla karşılaşacağız.

Devkitpro install start

Next deyip devam edelim.

Devkitpro installation

Download and install/ install from downloaded files seçeneğini seçip devam edelim.

Devkitpro kurulumu

Burada Keep downloaded files seçeneğini seçelim ki dosyaları indirme esnasında bazıları inmez ise programı yeniden çalıştırdığımızda bunları tekrar indirmek zorunda kalmasın. Next deyip devam edelim.

Devkitpro kurulumu

Kurmak istediğimiz bileşenleri bize soran bir ekranla karşılaşıyoruz. Burada bize gerekenler devkitPPC, “Minimal System” ve “Programmer’s Notepad”. Kolayca seçmek için Select the type of install” seçeneğini devkitPPC yapabilirsiniz. Seçimi yaptıktan sonra Next deyip devam edelim.

Devkitpro Kurulum

En son bize kurulumu nereye gerçekleştirmek istediğimizi soruyor. Burada varsayılan ayarı c:\devkitPro olarak bırakmak ilerleyen zamanlarda burada yazılanları takip etmek açısından işimizi kolaylaştıracaktır. Next deyip devam edelim.

Devkitpro kurulum

Programların Start menu’de nereye yerleşeceği ile ilgili gereksiz bu ekranı da Install butonuna tıklayarak geçip kurulumu başlatıyoruz.

Devkitpro Kurulum

Kurulum tüm bileşenlere ait paketler indirildikten sonra başlayacağı için olası bir bağlantı probleminden dolayı indirme kesilirse baştan başlayıp tekrar deneyebilirsiniz.

Kurulum tamamlandığında şöyle bir ekranla karşılaşacağız,

Devkitpro Kurulum

İlk programımızı derleyelim – Merhaba Dünya!

Hemen harekete geçelim ve wii için ilk derleme işini gerçekleştirelim. Programlar arasından devkitPro grubu içinde yer alan Programmer’s Notepad programını çalıştıralım. Geliştirme ortamımız bu olacak.

Şimdilik devkitpro ile gelen hello world’ü açıp derlemeye çalışalım. Bir sonraki kısımda bu programın bileşenlerini, programı derleme ve bir executable oluşturmada bize yardımcı olan ilgili Makefile dosyasını ve pek tabii ki programı oluşturan çeşitli parçaları incelemeye başlayacağız.

Programmer’s Notepad programının File menüsünden “Open Project(s)…” seçeneğini seçip c:\devkitPro\examples\wii\template klasöründe yer alan template.pnproj proje dosyasını açalım.

Programmer's notepad

Alt-1 tuş kombinasyonunu kullanarak yahut Tools menüsünden Make’i seçerek projeyi derleyebiliriz. Komut verildikten sonra Output penceresi açılır ve olur da hata alırsak burada görebiliriz.

Tools menüsünden make’i seçip projeyi derleyelim, aşağıdaki gibi bir ekranda “output … template.dol” bize projenin başarı ile derlendiğini ve bize template.dol isminde wii üstünde çalıştırabileceğimiz bir executable’ın oluşturulduğunu müjdelemekte.

Programmer's notepad

Sol tarafta projenin gözüktüğü yerde source klasörünü açarsak template.c isminde bir dosya göreceğiz. Programın kaynak kodu bu dosya içinde. Burada “Hello World!” yazan yeri “Merhaba Dünya” yapıp dosyayı kaydedelim ve tekrar derlemek için make komutunu verelim. Böylece wii için ilk programımızı derlemiş olduk.

Sıra geldi programı çalıştırmaya. Daha önce wii üzerinde homebrew program çalıştırdıysanız derlediğimiz dol dosyasını sd kartımıza yahut usb flash disk / harddiskimize atarak çalıştırabildiğimizi biliyorsunuzdur. Bilmiyorsanız şuradaki rehbere bir göz atarak öğrenebilirsiniz.

Eğer wii’nizin ağ bağlantısı mevcutsa programları Programmer’s Notepad içerisinden kolayca çalıştırmanın bir başka yolu daha var. Üretilen dol dosyasını doğrudan ağ üzerinden homebrew channel’a gönderip çalışmasını sağlamak. Bu iş için kullanılan programın ismi wiiload.exe. Şanslıyız çünkü program devkitpro ile beraber zaten geliyor. Tools menüsünde make’in biraz altında run seçeneğini görmüşsünüzdür. İşte o seçenek wiiload’ı çalıştırıp mevcut projenin ürettiği dol dosyasının ağ üzerinden Homebrew Channel’a gönderilmesini sağlıyor. Ama öncelikle wii’mizin ip adresini bilgisayarımızda wiiload’ın görebilmesi için tanımlamalıyız.

Bunun için masaüstünde bulunan Bilgisayarım (My Computer) simgesine sağ tıklayın ve Properties (Özellikler) seçeneğini seçin. Ve gelen ekrandan da Gelişmiş (Advanced) sekmesini seçin. Aşağıdaki gibi bir ekranla karşılaşacaksınız.

My computer

Ortam değişkenleri (Environment Variables) butonuna tıklayın, aşağıdaki gibi bir ekran göreceksiniz.

Ortam değişkenleri

Burada Sistem değişkenleri (System variables) yazan kısımda bulunan Yeni (New) butonuna basın ve aşağıdaki gibi doldurun. Tüm ekranlarda Tamam (OK) butonuna tıklayarak buradan çıkın. Dikkat alttaki kutucuğa yazacağınız değer wii’nize ulaşmakta kullanacağınız ip adresi yahut wii’nizin ağınızdaki ismi olmalıdır. Buraya gireceğiniz değerin sürekli wii’nize işaret etmesi size kalmış. Router’ınızdan bu şekilde ayarlayabilirsiniz yahut wii’niz için pc’nizde bir host kaydı yaratabilir ve buraya yarattığınız host kaydının ismini girebilirsiniz.

wiiload ortam değişkeni

Bir defaya has wiiload programının ayarını da yaptıktan sonra artık programımızı homebrew channel’e gönderebiliriz. Bunun için Programmer’s Notepad’i kapatıp tekrar projeyi açın ve Tools menüsünden Run’ı seçin. Wii’nizin ip adresini düzgün girdiyseniz ve Homebrew channel ağ bağlantısını sağladıysa programı wii üzerinde çalışırken görebilirsiniz.

Bu arada programın kaynak kodu aşağıdaki şekilde, bu kodları ve projeyi derlemekte kullandığımız Makefile dosyasını bir sonraki yazımda işleyeceğim.

#include <stdio.h>
#include <stdlib.h>
#include <gccore.h>
#include <wiiuse/wpad.h>

static void *xfb = NULL;
static GXRModeObj *rmode = NULL;

//---------------------------------------------------------------------------------
int main(int argc, char **argv) {
//---------------------------------------------------------------------------------

	// Initialise the video system
	VIDEO_Init();

	// This function initialises the attached controllers
	WPAD_Init();

	// Obtain the preferred video mode from the system
	// This will correspond to the settings in the Wii menu
	rmode = VIDEO_GetPreferredMode(NULL);

	// Allocate memory for the display in the uncached region
	xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));

	// Initialise the console, required for printf
	console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);

	// Set up the video registers with the chosen mode
	VIDEO_Configure(rmode);

	// Tell the video hardware where our display memory is
	VIDEO_SetNextFramebuffer(xfb);

	// Make the display visible
	VIDEO_SetBlack(FALSE);

	// Flush the video register changes to the hardware
	VIDEO_Flush();

	// Wait for Video setup to complete
	VIDEO_WaitVSync();
	if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();

	// The console understands VT terminal escape codes
	// This positions the cursor on row 2, column 0
	// we can use variables for this with format codes too
	// e.g. printf ("\x1b[%d;%dH", row, column );
	printf("\x1b[2;0H");

	printf("Hello World!");

	while(1) {

		// Call WPAD_ScanPads each loop, this reads the latest controller states
		WPAD_ScanPads();

		// WPAD_ButtonsDown tells us which buttons were pressed in this loop
		// this is a "one shot" state which will not fire again until the button has been released
		u32 pressed = WPAD_ButtonsDown(0);

		// We return to the launcher application via exit
		if ( pressed & WPAD_BUTTON_HOME ) exit(0);

		// Wait for the next frame
		VIDEO_WaitVSync();
	}

	return 0;
}

Türkçe, Wii, Wii Homebrew Geliştirme Dizisi , , , , , , , , , ,

1. Homebrew üzerine

March 27th, 2010

Homebrew channel’in yayınlanmasından beri neredeyse iki seneden fazla süre geçti. Bu süre içerisinde baktığımda Türkiyeden wii için homebrew geliştiren programcı sayısında da zerre kıpırdanma yaşanmadı. Bu konuda rehberlerin olmamasından çok Türk milleti olarak hepimizin bir hayat gailesi içinde koşuşturmaca içerisinde olmamızı sebep görüyorum ben.

Neyse  sürekli bir açılımın gündeme geldiği ülkemizde bir sosyolojik açılım da biz yapmayalım ve hemen konuya geri dönelim.

Wii üzerinde homebrew… Hadi wii üzerindeyi anladık belki homebrew kelimesi de biraz uzak geliyor olabilir size. Homebrew’in tam olarak kelime anlamı evde yapılan içki anlamına geliyor. Konsol dünyasında programlama özeline girdiğimizde ise bu işin uzun bir hikayesi var aslında. Programlamaya c64 ile başlayan biri olarak bu hikayeden oldukça uzak büyümüş olsam da emülasyonla tanıştığım dos yıllarında Nintendo’nun yahut Sega’nın oyunlarının başında crack intro’larını gördüğümde yani bu konsollara da demo/intro gibi şeyler yazıldığını farkettiğimde hafiften bu mevhumun varlığına uyandığımı söyleyebilirim…

Sene 94-96 arası muhtemelen, o zamanlar Internet de şimdiki kadar yaygın değil ve oyun konsollarının Türkiyede neredeyse emeklemeye bile başlamadığı bir dönemden bahsediyoruz. O zaman görüp geçmişimdir muhtemelen, hayat gailesi.

Neyse efendim,  2008 senesinde bir wii aldığımda bu konsolda oyundan öte bir şeyler arama esnasında gerçek anlamda homebrew programlar ile tanışmış oldum. Bildiğiniz ya da bilmediğiniz üzere oyun konsolu üreticileri konsol satışından ziyade bu konsollara oyun geliştirmek üzere kullanılan SDK ve geliştirme kit’lerini lisanslamaktan ve bunları kullarak geliştirilen oyunlara lisans vererek para kazanmaktalar. Bu da doğrudan oyun geliştiren bir firmada çalışmayan bizim gibi hobi amaçlı elindeki konsolda bir şeyler yapmaya çalışanları resmin dışında bırakan bir durum.

Konsol üreticilerinin bunu yapmasının bir sebebi de homebrew’in arkasından gelen üretici ve bazen de tüketici açısından olumsuz noktalar. Bunları da başta ilgili konsol üzerinde korsan oyunların oynamasından, oyunlarda hile yapmaya, bölge koruması gibi üreticinin pazarı kontrol etmekte kullandığı bir silahının etkisiz hale gelmesi ve konsol üzerinde at koşturulmasından mütevellit konsol üreticisinin artan servis maliyetlerini gösterebiliriz.

Neyse ben pek kapitalist olmayacağım ve olaya tüketici gözünden bakacağım. Tüketici gözünden homebrew’in faydaları zararlarından çok daha fazla. Wii için örnek vermek gerekirse dvd/divx oynatma bu konsol üzerinde sadece homebrew programlar sayesinde mümkün. Olayın korsan kısmına hiç girmez isek elinizdeki oyunları harddiske yedekleyip çalıştırmanız da yine Nintendo’nun size sunduğu bir hizmet değil.

Geri kalan blog dizisi programcıları hedefleyeceği için fazla da geyiğe gerek yok aslında. Diziyi takip edebilmek için gerekli olan şeyler şunlar.

  1. Bir Nintendo Wii
  2. Wii’nizde homebrew channel kurulmuş olmalı. Hala kurmadıysanız http://www.wiidewii.com adresindeki rehberler ile kolayca kurabilirsiniz.
  3. Orta seviyede C bilgisi (C++ da kullanılabiliyor lakin hem ben wii üzerinde C++ ile fazla uğraşmadığım için hem de görece olarak C dilini bilen daha fazla programcı olduğunu düşündüğüm için C üstünden gitmeyi daha mantıklı buldum.)

Blog dizimizin ikinci kısmı pek tabii ki “Merhaba Dünya” ya ayrılmış olacak.

1 haftada “Merhaba Dünya”, 15 günde “Grafik programlama”, 1 aya kalmaz da hacking’e kadar götürürüz biz bu işi :)

Türkçe, Wii, Wii Homebrew Geliştirme Dizisi , , , ,