Newsgroup: it.comp.os.dibattiti
Titolo: Un esempio per fare capire perchè è così importante Nanodesktop per chi lavora su PSP

Questo è un Hello World
scritto dai ragazzi di:
http://www.psp-programming.com/tutorials/c/lesson02.htm
// Hello World - My First App for the PSP
/*
          This program was created by (Your Name Here) on (Date Here)
          It is a simple "Hello World" Application.
*/
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("Hello World", 0, 1, 1);
#define printf pspDebugScreenPrintf
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
          sceKernelExitGame();
          return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
          int cbid;
          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, 
NULL);
          sceKernelRegisterExitCallback(cbid);
          sceKernelSleepThreadCB();
          return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
          int thid = 0;
          thid = sceKernelCreateThread("update_thread", CallbackThread, 
0x11, 0xFA0, 0, 0);
          if(thid >= 0) {
                    sceKernelStartThread(thid, 0, 0);
          }
          return thid;
}
int main ()
{
pspDebugScreenInit();
SetupCallbacks();
printf("Hello World");
sceKernelSleepThread();
return 0;
}
E questo è lo stesso codice per chi usa Nanodesktop
#include <nanodesktop.h>
int xmain()
{
    ndInitSystem ();
    ndLL_WriteLn ("Hello world", COLOR_WHITE);
}
Saluti
Pegasus

Ciao, da ex-quasi programmatore quale sono ma com'è possibile che per
scrivere un Hello Word sotto la PSP ci voglia quel casino di
codice?!?!?! E per i giochi allora?!?!?!!!??!?!

 codice?!?!?! E per i giochi allora?!?!?!!!??!?!
Non ho mai programmato videogiochi ma su ioprogrammo di qualche anno fa
c'era un articolo sulla programmazione su psp (o forse altra rivista?).
Comunque dovrebbe esserci un sdk che semplifica le cose.
Ciao Neo
ps: dovessi mai ritrovare l'articolo magari ti do riferimenti piu'
precisi

Quello che mi chiedo io, ma è possibile che la Sony non rilasci il SDK
ufficiale ad una università che vuole implementare software di ricerca
sulla PSP? Sono davvero così miopi e poco lungimiranti? Tutti i software
tecnici che uso io (chiusissimi, costosissimi, proprietarissimi) hanno
delle licenze accademiche che costano poco o nulla. Da una società
condannata a stare all'avanguardia come Sony mi aspetterei di più, non
foss'altro per il ritorno di immagine che avrebbero nel far vedere che
sulla PSP giranoa anche, ad esempio, software di visione artificiale.

 ... E per i giochi allora?!?!?!!!??!?!
Non mi sembra che manchino i programmi per Windows.
C:\>iao Angelo
[1] No, chiamare MessageBox() non vale. ;-)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Call Me Ishmael wrote:
:: Quello che mi chiedo io, ma è possibile che la Sony non rilasci il

Si ma che c'entra una piattaforma da videogames  con l'università? 

 Si ma che c'entra una piattaforma da videogames  con l'università?
Mah, un po' me lo chiedevo pure io, magari ha una buona capacità di
elaborazione ed un basso costo, per cui per certi tipi di applicazione...


io penso che una board arm costa uguale e si è più produttivi

Call Me Ishmael wrote:
:: In data Thu, 20 Jul 2006 13:15:52 +0200, GdG ha scritto: (wrote:)

Si, per farsi le pippe....
Saluti.

 Si, per farsi le pippe....
Dici che quindi Pipp... Pip... Pi... PSP?
-- 
BArrYZ
Cocaine decisions . . .
You are a doctor or a lawyer
You got an office with a foyer
And the cocaine decisions that you make today
Will not be discovered till it's over 'n' done
By the customers you hold at bay
                    [Cocaine Decisions - Frank Zappa] 

 Si, per farsi le pippe....
Mah, confesso la mia piů totale ignoranza in materia (sviluppo di software
di ricerca su piattaforme portatili, non sulle pippe ^_^).
Perň visto che da come parla Veg.. ehm Pegasus sembrava un dato di fatto
che ci sia molta gente che lavora su PSP per progetti che esulano dal
settor ludico.

 settor ludico.
Ti spiego quali pippe si fanno con la PSP.
1) Qualcuno pensa: visto che Nanodesktop supporterà la
connessione di dispositivi come webcam, se noi scriviamo
una applicazione che consente di registrare l'immagine
prelevata dalla webcam su memory stick (Nanodesktop
supporta anche il load/save delle immagini, quindi non
è che ci vogliamo tonnellate di codice), abbiamo una
PSP che funziona come macchina fotografica digitale
con uno schermo LCD da 470x282.
Non devi comprare una macchina fotografica digitale,
basta questo homebrew per la PSP....
2) Qualcun'altro pensa: visto che Nanodesktop supporta
o almeno facilita la visualizzazione dei filmati (interfaccia fast
streaming), e visto che già esiste xvid per PSP, se noi
scriviamo questo tale homebrew per PSP possiamo
avere un registratore di immagini portatile....
3) Qualcun'altro pensa: visto che Nanodesktop permette
di scrivere facilmente un'applicazione a finestre, potremmo
usare questo sensore per GPS da 100 Euro, scrivere
un programma GPS per Nanodesktop e far sì che sia
possibile portarsi la PSP in macchina a fare da rilevatore
di posizione portatile
4) Qualcun'altro pensa: visto che Nanodesktop supporta
un'API per la gestione della porta USB della PSP, non
potremmo collegare questo tuner televisivo USB per PC
alla PSP, ed avere la televisione portatile a basso costo?
Queste sono le pippe che si possono fare con la PSP
Saluti
Pegasus

 Ti spiego quali pippe si fanno
Spiegaci, oh maestro.
-- 
BArrYZ
[_Sign?_] 

basta questo homebrew per la PSP....
E andare in giro con una Webcam attaccata alla PSP.
Non per sminuire il tuo lavoro, ma sinceramente mi pare tanto un puro
esercizio di stile, come Linux su PS2 o su Xbox: una figata per gli
smatnettoni, una cosa sostanzialmente inutile per il grosso
dell'utenza
Non credo che ci sia molta gente interessata ad avere un Navigatore
GPS nella PSP, e per tutti gli impieghi non strettamente ludici, è
molto più pratico un "comune" palmare

"Co.Bra." <co.bra.@NOSPAMtin.it> ha scritto nel messaggio 
news:qo9vb21u863gltic1...@4ax.com...

Insomma... insomma....
Non saprei....
Il problema è che una PSP viene venduta ad un prezzo
molto più competitivo di un tradizionale palmare: costa
199 Euro, ha un processore più veloce (a parità di
prezzo), ha uno schermo molto più grande e con un
ottimo contrasto, può essere usata come player di
film, ha un lettore UMD (cosa che il palmare non ha)...
E poi, è meglio spendere 199 Euro ed avere un solo
apparecchio che serve per i giochi e poi può fare
10.000 altre cose, o avere una PSP da usarsi solo
per i giochi (a 199 Euro) + un palmare a 300 Euro?
E' chiaro che ognuno decide per sè, ma ciò non toglie
che gli sviluppatori su PSP stanno diventando davvero
tanti, proprio perchè tanti hanno intuito le capacità di
quella console.
Ciao
Pegasus

 alla PSP, ed avere la televisione portatile a basso costo?
considerando che le tv analogiche te le tirano dietro alle sagre e che
una psp costa non meno di 200 euro, forse il concetto di basso costo ti
è un po' alieno.

 film, ha un lettore UMD (cosa che il palmare non ha)...
bah,io ho un palm t|x e ci siamo direi...


The optimist thinks this is the best of all possible worlds.
The pessimist fears it is true.      [J. Robert Oppenheimer]

 Si ma che c'entra una piattaforma da videogames  con l'università?
Soldi. Se la merda mi desse uno stipendio programmerei in binario con quella...


Pegasus wrote:
:: PSP che funziona come macchina fotografica digitale
:: con uno schermo LCD da 470x282.
::
:: Non devi comprare una macchina fotografica digitale,
:: basta questo homebrew per la PSP....
Questo è un esempio di "farsi le pippe".
:: 2) Qualcun'altro pensa: visto che Nanodesktop supporta
:: o almeno facilita la visualizzazione dei filmati (interfaccia fast
:: streaming), e visto che già esiste xvid per PSP, se noi
:: scriviamo questo tale homebrew per PSP possiamo
:: avere un registratore di immagini portatile....
Altro esempio di pippa allo stato dell'arte.
:: 3) Qualcun'altro pensa: visto che Nanodesktop permette
:: di scrivere facilmente un'applicazione a finestre, potremmo
:: usare questo sensore per GPS da 100 Euro, scrivere
:: un programma GPS per Nanodesktop e far sì che sia
:: possibile portarsi la PSP in macchina a fare da rilevatore
:: di posizione portatile
Non trovi che un PocketPC o un Palm sia molto meglio?
::
:: 4) Qualcun'altro pensa: visto che Nanodesktop supporta
:: un'API per la gestione della porta USB della PSP, non
:: potremmo collegare questo tuner televisivo USB per PC
:: alla PSP, ed avere la televisione portatile a basso costo?
:: Queste sono le pippe che si possono fare con la PSP
So proprio pippe, fattelo dire.

 un'API per la gestione della porta USB della PSP [...]
La PSP perche` mai dovrebbe essere tenuta piu` in considerazione di 
piattaforme dove un SDK c'e`? Ma hai un grant? Senno` sei solo un matto 
suicida...


 prima del suddetto standard.
Typo. Non e` presente *prima* del C99.



No, da solo un warning....
Saluti
Pegasus

 di quando fai una boiata del genere.
concordo su tutto, ma non su questo. io di solto uso puntatori a
funzione, ma le soluzioni coi define sono diffuse.

 
non può... Deve chiedere ad Anna ... ;)

 funzione, ma le soluzioni coi define sono diffuse.
A usarsi si usano. Questi sono i define che io uso solitamente:
#ifdef DEBUG
        #define LOG(...) \
                do \
                { \
                        time_t now = time(NULL); \
                        struct tm *now_s = localtime(&now); \
                        printf("LOG [%02d:%02d:%02d] ", \
                               now_s->tm_hour, now_s->tm_min, now_s->tm_sec); \
                        fflush(stdout); \
                        printf(__VA_ARGS__); \
                } while(0)
#else
        #define LOG(...)
#endif
/* Exit on error */
#define DIE(...) \
        do \
        { \
                time_t now = time(NULL); \
                struct tm *now_s = localtime(&now); \
                printf("ERR [%02d:%02d:%02d] ", \
                       now_s->tm_hour, now_s->tm_min, now_s->tm_sec); \
                fflush(stdout); \
                printf(__VA_ARGS__); \
                printf("==== RIP ====\n"); \
                exit(EXIT_FAILURE); \
        } while(0)
Ora, un define per qualunque cosa va bene, ma non vuol dire che sempre 
sia funzionale, cosi` come i typedef. Un typedef tipo pType che e` 
null'altro che *Type rende il codice meno leggibile perche` nasconde il 
tipo.
Un define serve alcune volte per velocizzare su piattaforme non iso 
c99, dove l'inline non e` funzionante, ma nasconde anche errori ed 
eventualmente warning e vanno usati con cura.
Un define di una FUNZIONE STANDARD non va *MAI* fatto. La funzione 
standard e` data dalla libc, e deve funzionare.
Non puoi fare
#define printf sprintf
perche` e` da idioti. Puoi usare i define quanto vuoi, ma non toccare 
lo standard, altrimenti perche` esisterebbe?


 No, da solo un warning....
Yep, vero.


 standard e` data dalla libc, e deve funzionare.
ok ok, non avevo capito che ti riferivi a funzioni standard. In questo
caso sì. :-)

 
http://www.psp-programming.com/tutorials/c/lesson02.htm
...CUT....
Da brividi.

 standard, altrimenti perche` esisterebbe?
Lo standard *esplicitamente consente* di (ri)definire funzioni di 
libreria come delle macro.
Prima di dare dell'idiota a qualcuno e parlare di "standard", forse ti 
farebbe bene conoscerlo, che ne dici?
Alla sezione 7.1.7:
"any function declared in a header may be additionally implemented as a
macro defined in the header, so a library function should not be
declared explicitly if its header is included."
Fabio



Mi informo meglio, perche` la questione non e` semplice: lo standard 
hai ragione dice che e` legale se e` ``declared in a header'' e la 
macro e` pero` ``defined in the header'' (nota il *THE*), mentre la 
funzione in questione, printf, e` stata definita in un /sorgente/ a 
parte, neanche in un header.
Chiedo comunque a chi ne sa di piu`.
===BEGIN===
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("Hello World", 0, 1, 1);
#define printf pspDebugScreenPrintf
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
          sceKernelExitGame();
          return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
          int cbid;
          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
          sceKernelRegisterExitCallback(cbid);
          sceKernelSleepThreadCB();
          return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
          int thid = 0;
          thid = sceKernelCreateThread("update_thread", CallbackThread, 
0x11, 0xFA0, 0, 0);
          if(thid >= 0) {
                    sceKernelStartThread(thid, 0, 0);
          }
          return thid;
}
int main ()
{
pspDebugScreenInit();
SetupCallbacks();
printf("Hello World");
sceKernelSleepThread();
return 0;
}
====END====


 Chiedo comunque a chi ne sa di piu`.
Io ne so di piů, e ti rispondo.
Io ho risposto alla tua affermazione per cui "Un define di una FUNZIONE 
STANDARD non va *MAI* fatto": lo standard dice che si puň fare.
Piů precisamente, lo standard dice in aggiunta (additionally) alla 
dichiarazione normale della funzione in un header (quello relativo alla 
funzione stessa, ovviamente), puň esistere, nello stesso header, la 
definizione della stessa funzione a mezzo di una macro del preprocessore.
Tanto basta per smentire quel che hai affermato. E sě che tutti possono 
sbagliare, ma non č perdonabile sbagliare perché si parla di cose che 
non si conosce, per giunta come se si fosse un dottore in materia, 
permettendosi di dare degli idioti agli altri.
Fabio

 I didn't know about the legality of such definitions.
That's not allowed in standard C, but since your implementation isn't a
conforming one, it's not really relevant what the standard says, just what
works. It would probably be a good idea to hide that in a
  #ifndef __STDC__ / ... / #endif
block, though.
Per inciso, *tutte* le cose che dico sul'ISO-C le imparo solo leggendo 
il newsgroup relativo, dove ci sono persone che veramente ne sanno. 
Certo che posso sbagliare, ma questo e` quel che trovo, ubi maior minor 
cessat, ed io in C li dentro sono meno che minor.
