PSP開發二 終於出現了Hello PSP!

      經過一早上的折騰,我的Hello PSP!終於出現了!

      第一次在linux下寫psp代碼,昨天雖然編譯得差不多了,但是要寫還是有點無從下手的感覺。經過一晚的沉澱,今天早上開工寫,當然首先還是去找下教程吧,功夫不負有心人,果然找到一篇很適合像我這樣菜的人。

http://blog.csdn.net/lee576/article/details/2033754

上面這位大哥真是好人,手把手啊!我照着上面的步驟一步步弄到最後。

make

報錯!找找看。

暈,居然是在Makefile中PSPSDK=$(shell psp-config -- pspsdk-path)"--"和"pspsdk-path"之間多了一個空格!

果然C程序不好寫,修復,繼續make

接下來的錯誤就讓我有點……

 

      在經過多次反覆查看後,發現代碼已經跟上面大哥寫得一模一樣了,可是爲什麼不行呢!?

再上網搜,這回讓我發現另一個地址:http://www.linuxgraphics.cn/psp/dev_guide.html

上面的內容跟第一位大哥寫得差不多,不過還是讓我發現了一點不一樣

第一位大哥代碼是這麼寫的:

SP_MODULE_INFO("Hello World", 0, 1, 1)

 

新發現的是這麼寫的:

 

PSP_MODULE_INFO("Hello World", 0, 1, 1);

 編譯報錯是指向main.c中SP_MODULE_INFO("Hello World", 0, 1, 1);的行,難道是這個問題,修改爲PSP_MODULE_INFO("Hello World", 0, 1, 1);試一試。

修改後,make

成功了!!

      接下來就要把生成的EBOOT.PBP文件拷到我的PSP中看看行不行。興奮的接上PSP把EBOOT.PBP拷進去,然後從PSP中找它,結果……,PSP裏什麼都沒有,怎麼回事!

      繼續去找老師,經過無數前輩的點撥,原來要把“皮”一起拷過去。好吧,把之前新建的那個HelloPSP整個拷過去(連源文件的一起了,省事!)。

      這回進入PSP,果然在裏面發現一個可執行的東東。果斷執行,熟悉的啓動畫面進入眼前,慢慢的浮現出一個黑底的屏幕,屏幕上赫然顯示白色字體的“Hello PSP!”。成功了!!看着那黑底白字,我的眼睛溼潤了!

 

      哎,雖然以前在linux下寫過點C代碼,但是那是屈指可數,而且都是抄書。今天跟着無數前輩的指點,copy他們的代碼,總算是不求甚解的把hello psp弄出來了。萬事開頭難既然已經成功開了頭,路會越走越順的,接下來我可以好好學習下了!

     

 

      另:昨天的009-psplinkusb.sh沒有編譯成功,看來國外的兄弟沒有騙我,至少現在看起來,沒有影響我的Hello PSP!

 

下面貼出我的代碼吧,差不多都是copy前輩的,但是絕對是可以的,我的是PSP 3006 6.20的系統。

main.c

//hello PSP - My First App for the PSP

/*
    This program war created by(super) on (Date Here)
    It is a simple "Hello World" APplication.
*/

#include <pspkernel.h>
#include <pspdebug.h>

PSP_MODULE_INFO("Hello PSP", 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 PSP!");
    sceKernelSleepThread();
    return 0;
}

  

 Makefile

TARGET=hello
OBJS=main.o

CFLAGS = -O2 -G0 -Wall
CXXFLAGS=$(CFLAGS)-fno-exceptions-fno-rtti
ASFLAGS=$(CFLAGS)

EXTRA_TARGETS=EBOOT.PBP
PSP_EBOOT_TITLE=Hello PSP

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章