![]() |
Benvenuto Visitatore ( Log In | Registrati )
![]() |
![]()
Messaggio
#1
|
|
![]() Fanatic GBA/NDS ![]() Gruppo: Membri Messaggi: 940 Iscritto il: Tue 20 June 2006 - 14:29 Da: Roma Utente Nr.: 11.851 Feedback: 1 (100%) ![]() |
scrivo questo post per instradare tutti i vogliosi programmatori sulla via del successo senza diventare stupidi e senza buttare via enormi quantità di tempo.
PER QUALSIASI DOMANDA, RIVOLGETEVI QUA' http://www.gbarl.it/index.php?showtopic=21034 [[homepage | Homepage]] ====== Day 1 - Installazione e Compilazione ====== Questo tutorial è composto da 2 parti: * Installazione del devkitPro e PAlib e di tutte le cose di cui potresti avere bisogno * Compilazione di un esempio di prova (helloworld) e spiegazione di come si usa il template. ====== Installing ====== Ok, per impostare il necessario per lo sviluppo del DS devi prima scaricare e installare devkitPro: [[http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=160396|devkitPro updater]]. Ora installa devkitPro con questo simpatico installer. Attenzione! puoi deselezionare le librerie PSP e quelle PPC ma per favore, lascia tutto il resto (MSYS, devkitarm, libnds...). Se togli anche questi, una valanga di errori ti seppellirà. Se non sai cosa togliere, lascia tutto così com'è! le librerie PAlib richiedo l'installazione del framework .Net che viene usato dal programma PAGfx (convertitore grafico), dal PAFS (file system) e dal VHam (IDE) [[http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=it|Scaricalo qui!]] Ora scarica e installa le librerie PAlib con il seguente installer: [[http://sourceforge.net/project/showfiles.php?group_id=142901&package_id=168612|PAlib Installer]]. installalo nella stessa directory in cui hai installato il devkitPro e non ci saranno problemi. Ricorda! non puoi installare il devkitPro e PAlib in directory che possiedono spazi nel loro nome! Es: "C:\nds development\pa lib\" anche se lo installate sul desktop, avrete dei problemi.. perchè il desktop si trova in una cartella che possiede spazi nel nome -> "c:\Documents and Settings\..." --- //[[Aeonin@comcast.net|Micheal Bach]] 29/11/2005 10:17// ===== Test di Compilazione ===== Per prima cosa proveremo a compilare un esempio. Andate nella directory PAlibExamples\Text\Helloworld\ e lanciate il file build.bat per provare a compilarlo. Se tutto va bene, dovreste ottenere 3 file nella cartella in cui siete. helloworld.ds.gba helloworld.nds helloworld.sc.nds Ora ci sono 2 modi per far partire le roms: gli emulatori e le flashcart ===== Emulatori ===== Ci sono solo 5 emulatori, ma noi ne useremo solo 2 per ora. * HyperDS è stato il primo emulatore per Nintendo DS. Ma non è mai stato rilasciato. Infatti non è mai stato usato. * [[http://dualis.1emulation.com/|Dualis]], Funziona davvero bene! Io lo uso spesso. E' veramente buono per le applicazioni 2d, supporta un sacco di opzioni. L'unico difetto è che la versione r12 crasha quando si usa lo stilo. Quindi bisogna usare la versione r11 per provarlo. Personalmente l'ho associato ai file .nds così che quando ci clicco sopra, l'emulatore parte subito! * [[http://spazioinwind.libero.it/linoma/ideas.html|iDeaS]] è un altro emulatore che merita attenzione. E' stato il primo emulatore a supportare il 3d e il sonoro. L'ultima versione è la 1.0.0.8c, e abbiamo visto degli screenshots della WIP version che sembra veramente buona.. ma ancora nulla è stato rilasciato! * [[http://desmume.sourceforge.net/|DeSmuMe]] è forse l'emulatore più veloce. Anche se non supporta il suono lo zoom e la rotazione degli sprite, va provato. * [[http://nocash.emubase.de/gba.htm|No$gba]] riesce a emulare quasi tutto compreso il 3d. Niente suono. Fa partire qualche gioco commerciale. * L'ultimo emulatore, il DSemu, probabilmente sarà il migliore sulla scena grazie alla sua architettura a plugin. Ma per adesso non lo uso, forse un domani, chissà! Ensata è un altro emulatore. E' una versione RUBATA di un emulatore Nintendo compreso con il kit ufficiale di sviluppo. Poichè è illegale, non lo utilizziamo. ===== Mettere un homebrew dentro il NDS ===== Per prima cosa avrai bisogno di qualcosa per lanciare tutti gli homebrew che hai fatto sul tuo DS. Ti basterà comprare un flashcart. Molti flashcart sono nati per il GBA ma sono stati adattati a funzionare anche con il DS. Ci sono molte marche e molti tipi di flashcart, alcuni con la memoria interna, altri no. Io vi spiegherò come funziona uno tra i più usati. Comunque sia dovrete per forza comprare uno di questi flashcart se volete provare i vostri programi sul DS. E dovrete comprare anche un PassMe o qualcosa del genere, che spieghereo più avanti Alcune FLASHCART *[[http://www.kicktrading.ca/index.php?cPath=24|EZ Flash]]: con questo flashcart dovrete usare homebrew .ds.gba *[[http://www.kicktrading.ca/index.php?cPath=23|SuperCard]]: con questo flashcart dovrete usare homebrew .sc.nds *[[http://www.kicktrading.ca/product_info.php?cPath=27&products_id=49|M3 Perfect]]: con questo flashcart dovrete usare homebrew .nds *[[http://www.kicktrading.ca/index.php?cPath=27|G6]]: con questo flashcart dovrete usare homebrew .nds Ora, dicevamo, hai bisogno anche di un PassMe. Qui ci sono 4 varianti, le più usate sono le prime 2. * [[http://natrium42.com/shop/|PassMe]] * [[http://www.kicktrading.ca/product_info.php?cPath=27&products_id=50|Passkey2]] * [[http://www.kicktrading.ca/product_info.php?cPath=23&products_id=47|SuperPass]] * [[http://ds.gcdev.com/dsfirmware/|FlashMe]] * [[http://www.aaronrogers.com/nintendods/wifime.php|WiFiMe]] * Wireless Multi Boos (WMB) E meglio comprare la flashcart e il passme della stessa casa produttrice. così per evitare problemi di incompatibilità: EZ Flash-PassMe2, SuperCard-SuperKey, and M3 or G6-Passcard3. --- //[[Aeonin@comcast.net|Micheal Bach]] 30/11/2005 09:18// ==== Metti il file giusto nel posto giusto ==== as soon as you compile your program/palibexample/homebrew, "magically" three files appaears in your program root directory: * <program_name>.ds.gba --> per GBAMP e EZ * <program_name>.nds --> per gli emulatori e (forse mi sbaglio) M3/G6 * <program_name>.sc.nds --> per Supercard basta prendere il file e metterlo sulla flashcart --- //[[lotti@fastwebnet.it|Lotti]] 01/09/2006 20:00// ====== Compilazione ====== questo è un tutorial molto veloce sulla compilazione. ===== PA Template ===== per prima cosa hai bisogno di aprire PAlibTemplate. Spiegherò un pochino come funziona: contiene un po' di files e 3 directory ==== Descrizione del Template ==== Un template è qualcosa che ti fornisce tutto il necessario per un determinato lavoro. ad esempio il PATemplate fornisce tutti i file necessari alla compilazione e le directory nel quale mettere il codice sorgente, gli sprite, le immagini, etc. Directory : * //source// -> contiene la parte più importante. il codice sorgente (.c o .cpp) * //include// -> contiene i file di intestazione .h (sono dei file descrittivi dei file .c o .cpp) * //data// -> verrà usato più tardi per il suono e per le immagini. Files : * //Makefile// -> Importante ma complicato. serve a compilare il programma. lasciatelo dove è * //logo.bmp// and //logo_wifi.bmp// -> file che verranno usati per visualizzare la rom attraverso il wifi.. non importano molto per adesso.. * //build.bat// -> file importante. serve a compilare il codice sorgente * //clean.bat// -> file importante. serve a rimuovere ogni compilazione del codice sorgente * //project.vhw// -> questo file apre il VHAM IDE. l'applicazione che useremo per modificare il nostro sorgente. ==== Template's Main Code ==== Ora, apriamo il file project.vhm, o andiamo dentro la directory source/ e apriamo main.c. come il nome suggerisce, main.c, come il nome suggerisce questo è il file sorgente principale. Quello che verrà eseguito per primo dalla rom. Il codice contenuto nel file main.c del template contiene tutte le funzioni principali per utilizzare le PAlib. Se tu lo compili e lo fai girare su un emulatore o su un DS, non fa nulla. vediamo da cosa è composto: CODICE // Includes #include <PA9.h> // Include for PA_Lib // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL // Infinite loop to keep the program running while (1) { PA_WaitForVBL(); } return 0; } // End of main() ==== Cosa significa tutto questo codice? ==== Se già sai programmare in C tutto ti sembrerà chiaro. Per gli altri potrebbe non esserlo quindi lo spiegherò linea per linea, anche se ci sono dei commenti molto esplicativi... CODICE // Includes Semplice : <html>//</html> questo è un commento. il compilatore ignorerà qualsiasi cosa scritta dopo <html>//</html> CODICE #include <PA9.h> Questo significa "includi le PAlib nel mio codice". E' necessario! Se non lo metti, le funzioni delle PAlib non saranno riconosciute e avrai un sacco di errori nella compilazione. Il concetto di inclusione dei file è molto importante e verrà utilizzato anche per includere la grafica e altro codice importante CODICE int main(int argc, char ** argv) Questa è la funzione principale del programma. ogni programma deve averne una e soltanto una. E' l'inizio del tuo programma da cui tutto comincia. il tuo codice va messo tra le parentesi graffe {}. CODICE PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL Queste 2 linee di codice le troverai in ogni programma che usa le PAlib. La prima funzione è una generale inizializzazione. Prepara il tuo programma ad usare gli sprites, i background.. tutto!. Se non la metti, le PAlib non funzioneranno. La seconda funzione (VBL) può essere modificata dagli utenti avanzati. Questa seconda funzione serve a sincronizzare lo schermo con il programma, impostando una velocità di 60fps. Se non la usi, non avrai un programma sincronizzato che magari andrà velocissimo oppure lentissimo. CODICE // Infinite loop to keep the program running while (1){ ciclo infinito che esegue infinite volte il blocco di codice presente tra le parentesi graffe {}. Altri dettagli potrete trovarli nel Day2 CODICE PA_WaitForVBL(); Anche Questa funzione sincoranizza lo schermo con il programma ad una velocità di 60fps. è necessaria per non far inchiodare il programma. Serve anche ad aggiornare tutti i registri del DS (tasti premuti, pennino, microfono, etc.) CODICE } return 0; } // End of main() e questa è la fine del file sorgente main.c. E' sempre così, non vi interessa, lasciatela sempre così e non vi succederà niente di male lol! Ora che sapete tutto sul template, proviamo a stampare del tempo! --- //[[Aeonin@comcast.net|Micheal Bach]] 30/11/2005 09:37// ===== Hello World ===== Un semplice programma di prova per far vedere quanto facile può essere programmare il DS. La modalità testuale usa i background. Un background è un "livello" e ce ne sono 4 per schermo. Puoi scegliere su quale schermo e su quale background attivare la modalità testo. Puoi trovare una copia similare di questo esempio all'interno della directory PAlibExamples/Text/Helloworld CODICE #include <PA9.h> //Include PAlib int main(void) { PA_Init(); //Initialize the main library PA_InitVBL(); // Initialize Vertical Blanking PA_InitText(1,2); //Tell it to use text on screen 1, background number 2 PA_OutputSimpleText(1,1,1,"Hello World !"); //Print the text on screen 1, with coordinate 1,1 while(1) { //Loop forever PA_WaitForVBL(); } return 0; } Come puoi vedere il codice è molto simile a quello del template visto prima.. apparte che sono state aggiunte 2 cose. CODICE PA_InitText(1,2); //Tell it to use text on screen 1, background number 2 PA_OutputSimpleText(1,1,1,"Hello World !"); //Print the text on screen 1, with coordinate 1,1 La prima riga serve a inizializzare la modalità testo, caricando il font dentro la memoria ram del DS. Se questa funzione non ci fosse, non si riuscirebbe a visualizzare il testo. PA_InitText prende 2 paramentri: lo schermo (0 per lo schermo inferiore, 1 per lo schermo superiore), e il background da usare (0 per il livello primario, 1 per il secondario, 2, e 3 per l'ultimo...). PA_OutputSimpleText(1,1,1,"Hello World !"), come spiega il nome della funzione, scrive una semplice riga di testo sullo schermo. Se e solo se quello schermo è stato inizializzato precedentemente alla modalità testo. questa funzione prende 4 parametri: * Schermo (0 o 1) * Coordinata orizzontale (X) (da 0 a 31). Ogni lettera è composta da una casella di 8x8 pixel * Coordinata verticale (Y) (da 0 a 23). Stesso discorso della coordinata orizzontale. * Text... Questo è il testo che verrà stampato. Va scritto tra virgolette '"'. Una volta che hai capito tutto questo, clicca su build.bat nella directory PAlibExamples/Text/Helloworld e otterrai la tua rom pronta da provare! ====== FAQ - Installazione e Compilazione ====== Q1. Errore mentre cerco di compilare il programma. il comando Make non è riconosciuto * C'è un problema con l'installazione del devkitpro. Reinstallalo e assicurati che il pacchetto MSys sia selezionato. Se invece hai semplicemente spostato la directory del devkitpro, assicurati di cambiare anche le variabili di sistema. Q2. Ottengo il seguente errore mentre cerco di compilare un esempio delle PAlib: "Devkitpro has reached an internal error, it must shut down" o qualcosa del genere. * Assicurati di avere l'ultima versione del devkitpro. Lancia l'installer e clicca su "Download only, don't install". Una volta scaricati i file necessari, lancia di nuovo l'installatore del devkitpro e clicca su "download and install". Non riscaricherà i file, non preoccuparti, li installerà e basta. Se ancora non funziona, puoi estrarre i file scaricati in precedenza nella stessa directory. otterrai lo stesso effetto. ============== Next -> [[Day2it | Day 2 - Introduzione al C]] --- //[[mollusk@palib.info|Mollusk]] 28/11/2005 00:43// -------------------- |
|
|
![]() ![]() |
![]() |
Versione Lo-Fi | Oggi è il: Thu 3 July 2025- 21:19 |