 |
libXM7 Nintendo DS XM replay library
|
View previous topic :: View next topic |
Author |
Message |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Tue Apr 20, 2010 12:39 pm Post subject: |
|
|
compilare con ALT+1 ed emulare sono cpace..
Ma la cosa che intndo dire è: se hai tempo non puoi tu fare un corso.
Ad esempio :
Code: | #include <nds.h>
#include <stdio.h>
volatile int frame = 0;
void Vblank() {
frame++;
}
int main(void) {
touchPosition touchXY;
irqSet(IRQ_VBLANK, Vblank);
consoleDemoInit();
iprintf(" Hello DS dev'rs\n");
iprintf(" \x1b[32mwww.devkitpro.org\n");
iprintf(" \x1b[32;1mwww.drunkencoders.com\x1b[39m");
while(1) {
swiWaitForVBlank();
touchRead(&touchXY);
iprintf("\x1b[10;0HFrame = %d",frame);
iprintf("\x1b[16;0HTouch x = %04X, %04X\n", touchXY.rawx, touchXY.px);
iprintf("Touch y = %04X, %04X\n", touchXY.rawy, touchXY.py);
}
return 0;
} |
questo è quello che è scritto in hello_world
Code: | #include <nds.h>
#include <stdio.h> |
sono le ditettive preprocessore che indicano quali librerie includere
volatile int frame = 0; si dichiara una variabile integere e gli si da come valore 0
e via di seguito.
una cosa se io vogli scrivere sullo schermo superiore come faccio
se io voglio scrivere colorato, e spostarmi xy?
io non ho idea.. mi serve un corso o qualcuno che mi spieghi..
per questo ti chiede se puoi fare un corso ... |
|
Back to top |
|
 |
sverx Site Admin

Joined: 04 Jun 2009 Posts: 108
|
Posted: Tue Apr 20, 2010 1:27 pm Post subject: |
|
|
diciamo che per scrivere un tutorial così vasto mi ci vorrebbero anni ed intanto nessuno ne trarrebbe vantaggio... però non ho problemi ad impegnare qualche minuto ogni giorno per specifiche domande.
Ad esempio per scrivere testo devi usare le librerie per la console, dettagliate in questa pagina della documentazione delle libnds.
Per scrivere sullo schermo superiore dovrai definire, per esempio, che il motore 2D secondario (il SUBEngine) sia collegato allo schermo superiore (ovvero imponi che il MAINEngine sia collegato allo schermo inferiore) con la funzione lcdMainOnBottom()
A questo punto con consoleDemoInit() inizializzi la console, con iprintf() ci scrivi dentro, con consoleSetWindow() puoi definire il rettangolo dentro al quale vuoi scrivere.
Non ci sono modi per scrivere a più colori, ma si può cambiare il colore del testo o dello sfondo agendo direttamente sulla palette, per esempio.
Poi, come spesso capita nelle cose legate alla programmazione, c'è più di un modo per fare una stessa cosa, ed ogni modo ha vantaggi e svantaggi. L'esperienza insegna come scegliere quella giusta... e per farsi l'esperienza bisogna provare, e anche sbagliare  |
|
Back to top |
|
 |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Tue Apr 20, 2010 10:08 pm Post subject: ok |
|
|
ma da uno che non ha mai programmato nulla per il ds, è tutto scritto in cinese. |
|
Back to top |
|
 |
sverx Site Admin

Joined: 04 Jun 2009 Posts: 108
|
Posted: Wed Apr 21, 2010 8:55 am Post subject: |
|
|
mi rendo conto della difficoltà iniziale... ci ho messo tantissimo anche io all'inizio.
partiamo dal fatto che se conosci già il C / C++ devi 'solo' entrare nell'ottica di avere un hardware diverso dal PC, un hardware con caratteristiche specifiche e con un set di API ancora tutto sommato un po' povero (per questo nacquero le PAlib, che ancora hanno molto successo) e che quindi ti obbliga per tante cose a dialogare ancora direttamente con l'hardware.
Se conosci il C allora potresti provare a prendere gli esempi del mio tutorial e a modificarli un po' qui un po' lì per sperimentare cose diverse.
Se invece non conosci il C direi che iniziare con la programmazione del DS non è proprio il caso, diventa davvero molto più complicato del necessario.
Ultima nota: chi inizia a programmare sul DS tipicamente prova a realizzare un gioco sullo stile di Pong. Se ti senti più lanciato potresti provare a rifare Arkanoid come esercizio di programmazione  |
|
Back to top |
|
 |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Wed Apr 21, 2010 12:10 pm Post subject: fa impazzire |
|
|
Io il c/c++ lo conosco, ma non riesco ad entrare nell'ottica del ds..
Mi rendo conto che le Palib sono moltissimo limitate. Leggendo il sito che ti avevo indicato, noto
che molte cose base mancano..
In questi giorni sto tentando di far comunicare in ds con un pc. Con le palib mancava tutta la parte
di riconoscimento dell'accesspoint, l'asseganzione dell'ip sia dinamico che in dhcp..
Tutte funzioni che in devkitPro ci sono, ma sparse.
In dswifi9.h hai tutto quello che riguarda la wireless.
In socket.h ha tutto quello che riguarda la socks, dal creare un server a un client.
Molte cose, noto, che sono intuitive, ma molte no...
Per questo ti avevo proposto se potevi fare un breve corso.. ogni volta che puoi fai un esempio con i commenti e lo metti qui.
Poi come diceva un mio inssegnante "Al mondo è gia tutto fatto, resta solo l'abilita di riuscire a combinarle tra di loro"..
toca a chi legge prendere e modificare le parti dicodice a suo piacimento e uso..
Decidi te, ogni volta tratti cio che ti viene in mente...
Mi puoifare un esempio di come posso scrivere ciao sulo schermo superiore , a coordinate xy atua scelta. grazie..
Grazzie mille
Mirco |
|
Back to top |
|
 |
sverx Site Admin

Joined: 04 Jun 2009 Posts: 108
|
Posted: Wed Apr 21, 2010 12:55 pm Post subject: |
|
|
Se conosci già il C siamo a un buon punto di partenza.
Invece per il wifi purtroppo non c'è ancora una libreria completa e stabile per fare tutte le cose confortevolmente, bisogna ancora pasticciare un po'. In ogni caso anche qui, parti dagli esempi che ci sono insieme alla libndswifi, e magari anche guardare il sorgente di AirScan se vuoi sbirciare come hanno risolto certe cose... io non ho ancora fatto niente con il wi-fi, per il momento...
Per scrivere "Ciao!" sullo schermo superiore in una specifica locazione, dato che non c'è (o, più facilmente, non conosco ) il modo per spostare il cursore, io userei la funzione consoleSetWindow() che definisce una finestra rettangolare dentro la quale vanno le scritte:
Code: | lcdMainOnBottom();
consoleDemoInit();
consoleSetWindow(5,5,10,10);
iprintf("Ciao!"); |
Così la scritta "Ciao!" apparirà al sesto carattere della sesta riga, sullo schermo superiore.
 |
|
Back to top |
|
 |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Wed Apr 21, 2010 7:05 pm Post subject: a buon punto |
|
|
Oggi sono riuscito, unendo due esempi AP_Search e httpget, a fare un programma che ricerca accesspoint e poi si connette a un server a uno specifico ip...
Ho creato in visual basic un programma server in ascolto sulla porta 1976, una accesspoint aperto (per la sicurezza e solo collegato pc-accepoint, senza nessun collegamento a internet). Sul ds ho fatto un programam che :
* ricerca l'accesspoint
* si fa rilasciare l'ip
* si conette al server
* senda una stringa tipo "stringa di prova" e vb la visualizza in una label
* in vb scrivi una parola o frase, la senda al ds, il ds la visualizza a video e la ritraspette uguale e in fine il serva la visualizza
Con questo voglio dire che a volte le cose banali sono le piu difficili..
ha solo un errore il progemma del ds, iprintf mi visualizza solo da meta schermo in su e non riesco a capire il perchè.
Booooooooooooooooooo
GRazie per l'esempio domani lo provo  |
|
Back to top |
|
 |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Wed Apr 21, 2010 7:23 pm Post subject: ho letto |
|
|
Ho letto in una dei numerosi .h
che per spostarti puoi usare gli escape
lcdMainOnBottom();
consoleDemoInit();
iprintf(“\x1b[Y;XH Ciao!");
dove x e y sono le coordinate che vanno da 0 a 31 per x e da 0 a 23 per y |
|
Back to top |
|
 |
sverx Site Admin

Joined: 04 Jun 2009 Posts: 108
|
Posted: Thu Apr 22, 2010 8:22 am Post subject: Re: a buon punto |
|
|
Beh, cavolo, bel programma già! Ad esempio potresti fare un semplice client ftp per poter trasferire sul DS dei file dal PC, ad esempio dei file .NDS, e poi lanciarli, sarebbe molto utile alla comunità degli homebrewer che stanno sempre a infilare e togliere le microSD nelle chiavette e nelle cart... così si potrebbe velocizzare la fase di test sull'hardware
BMirco wrote: | ha solo un errore il progemma del ds, iprintf mi visualizza solo da meta schermo in su e non riesco a capire il perchè. |
non c'è per caso una finestra definita nella console? Prova a ridefinirla usando
Code: | consoleSetWindow(0,0,32,24); |
invece riguardo:
Quote: | iprintf(“\x1b[Y;XH Ciao!"); |
eh, immaginavo ci fosse il modo di spostare il cursore tramite sequenze di escape... non l'ho mai cercate però  |
|
Back to top |
|
 |
BMirco
Joined: 22 Jan 2010 Posts: 17 Location: asti
|
Posted: Thu Apr 22, 2010 1:01 pm Post subject: non va |
|
|
int main(void) {
//---------------------------------------------------------------------------------
consoleDemoInit();
lcdMainOnTop();
iprintf("Hello World!");
lcdMainOnBottom();
consoleSetWindow(0,0,0,32,24);
iprintf("Ciao!");
while(1) {
swiWaitForVBlank();
}
return 0;
}
io ho provato a fare questo ma scrive sempre sullo schermo superiore..
io cerco il modo per scrivere su entrambi gli schermi..
come si fa? |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|