Lezione 3, Lettura codice sorgente, compilazione e correttura errori

Leggere il codice sorgente

Dopo aver visto le basi della programmazione C, siamo finalmente pronti a compilare il nostro primo programma Homebrew, comunque vi consiglio di ricercare un po’ in internet guide più dettagliate sulla programmazione C, questo perchè sia per motivi di spazio che di tempo vi ho solo riassunto la complessità del sistema di programmazione.
Prendo come esempio un modello di esempio del wii e non più del camecube.

Example-Wii

Aprendo con un editor il file “template.c” situato nella cartella “/(percorso)/DevkiPRO/wii-example/template/source/” vedrete la sorgente del codice.
Da notare subito

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

Questi non sono altro che file inclusi nella nostra sorgente. Una serie di funzioni precompilate che semplificano la stesura del nostro codice.
Esistono 2 modi di inclusione il primo come nell’esempio quando i file non sono nella cartella corrente e il seconto come da notare qui sotto quando sono nella stessa cartella.

#include “esempio.h”

Ora analiziamo i varii file:

#include <stdio.h>

Contiene gli standar delle librerie Input e Output che ci permette di stampare il testo a schermo, leggere e scrivere file.

#include <stdlib.h>

Dichiara funzioni e costanti di utilità generale: allocazione della memoria, controllo dei processi, conversione tra tipi e così via.

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

Sono le librerie per il funzionamento del programma sullo standard del Wii, l’uso del pad ecc.

Queste quattro librerie sono il minimo indispensabile per il buon funzionamento delle applicazioni Homebrew.

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

Le seguenti variabili al momento le tralasciamo perchè servono solamente a mostrare il video sullo schermo.

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

Questa riga è la riga principale del nostro codice al di sotto di questa vi troviamo tutti i comandi e variabili che il nostro programma deve svolgere.
la maggior parte del codice sottostante sono funzioni video e quindi le tralasciamo perchè le tratteremo più in la, quindi saltiamo alla seguente riga:

printf(”Hello World!”);

Se avete letto attentamente la guida precedente capirete subito che questa riga non fa altro che stampare a video la scritta “Hello Woprd!”.

while(1) {

Poi vi è la creazione di un ciclo infinito.

WPAD_ScanPads();

Questa funzione racchiusa nella precedente libreria “wiiuse/wpad.h” dice al sistema che vogliamo utilizzare il controller Wii e quindi mette in ascolto i pulsanti premuti o rilasciati sul wiimote, questo è sempre necessario inserirlo in un ciclo quando abbiamo bisogno di un imput dal controller.

u32 pressed = WPAD_ButtonsDown(0);

Questa riga darà un valore “True” alla variabile “pressed” quando verrà premuto un bottone sul controller.

if ( pressed & WPAD_BUTTON_HOME ) exit(0);

Qui ci troviamo davanti ad un controllo della variabile “pressed” e se il bottone premuto sia l’”home”, quindi se questi 2 parametri risultano veri (”True”), darà il comando di uscire dall’applicazione.

VIDEO_WaitVSync();

Questa funzione non fa altro che aspettare la sincronizzazione verticale dello schermo, la utilizziamo nel caso in cui ci sono state molte visualizzazioni grafiche altrimenti rischiamo di far sfarfallare lo schermo accelerando gli fps.

}

Chiusura del ciclo infinito.

return 0;

Tutti i programmi C devono ritornare a 0 alla fine del programma. Se non ritorno a 0 allora il compilatore si lamentano perché non sanno dov’è la fine del programma.

Compilazione del codice sorgente

Sappiamo che il codice non fa altro Scrivere su schermo la scritta “Hello Word!” ed attendere finchè non viene premuto il tasto Home per uscire dall’applicazione.

Ora però prima di poter avviare il nostro esempio sulla consol dobbiamo compilare la sorgente, aprite un terminale ed entrate nella cartella dove è situato il “Makefile”

cd /(percorso)/DevkitPRO/wii-example/template

e digitate il comando:

make

Adesso abbiamo compilato la nostra sorgente e se non avete commesso errori durante la creazione dell’ambiente il risultato sarà:

template.c
linking … template.elf
output … template.dol

Da notare che il risultato sono 2 file, uno in formato “.dol” e l’altro “.elf”, questi possono essere poi utilizzati nel canale Homebrew della wii, se in caso si rivoglia ricompilare la sorgente è necessario dare prima il comando “clean” che ripulisce le tracce della precedente compilazione, questo per evitare eroori se abbiamo cambiato parti della sorgente.

Errori di compilazione

Ora trattiamo gli errori del compilatore, di solito quando durante la compilazione (dopo il comando “make”) ci da sempre il file e la riga dell’errore, nella maggior parte dei casi è la dimenticanza di “;” dopo ogni riga di comando.

/source/template.c: In function ‘main’:
/source/template.c:21: error: expected ‘;’ before ‘rmode’

Il compilatore ci dice che nella funzione “main” (la funzione principale del codice) si è verificato l’errore e ci conduce in prossimità della linea in questione.

Il compilatore può anche dare avviso di cose che ancora lavorare, ma ci avverte cosa dobbiamo guardare Ad esempio:

/source/template.c: In function ‘main’:
/source/template.c:52: warning: unused variable ‘test’

Questo avviene quando viene dicharata una variabile intera e poi viene utilizzata come alfanumerica

Ora abbiamo un po’ di fondamenti per la creazione e la compilazione di applicazioni per il nostro wii, comunque sto partendo dal presupposto che tu abbia già installato il canale Homebrew sulla tua consol Wii, questo rende più semplice provare i programmi.
In caso contrario di consiglio di installare il canale.

Per provare “template.elf” o “template.dol” bisogna creare una cartella nella nostra scheda SD, da non dimenticare che la nuova cartella deve essere sotto “apps” e che il file deve essere rinominato in “boot.elf” o “boot.dol” a seconda del caso e se volete creare una icona in formato “.png” di dimensioni standard 128×48 e un file “meta.xml” dove inserire le informazioni, qui sotto vi riporto il file “.xml” di esempio:

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<app version=”1″>
<name>Nome del programma</name>
<coder>Nome o gruppo del creatore del programma.</coder>
<version>Versione del programma</version>
<release_date>data di rilascio ne formato: YYYYmmddHHMMSS</release_date>
<short_description>Questo viene visualizzato nel menu principale del Homebrew Channel, spazio utilizzato per aggiungere 4 parole di spiegazione del programma</short_description>
<long_description>Descrizione del programma con le eventuali funzioni o comandi di controllo</long_description>
</app>

Per oggi è tutto alla prossima.

RiujiAndy

Tratto e concesso da: http://ryujiandy.ath.cx/

Related Posts with Thumbnails

Filed Under: Programmazione

Tags: