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

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.
[cpp]
#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;
}
[/cpp]

1 thought on “2. Ortamı hazırlayalım – Merhaba Dünya

Leave a Reply

Your email address will not be published. Required fields are marked *