PSP开发环境配置
1:安裝 devkitpro
?
下載 http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/
? 選擇 devkitProUpdater-1.5.0.exe
URL:http://211.167.112.9:9203/2D11738C7F5FBDD2DBC1C3B9070C9A62E15918C1C1F093F5/ncu.dl.sourceforge.net/project/devkitpro/Automated%20Installer/devkitProUpdater-1.5.0.exe
?
? a.運行DevkitProUpdater-1.*.*.exe
? b.選download and install(下載并安裝)
? c.Keep downloaded files是保存下載的安裝文件,remove downloaded files是安裝完后刪除下載的文件,這個隨便
? d.在Select the type of install的地方選devkitPSP,也可以選full,如果也要給GBA或NDS編程的話
? e.安裝地址可以選在任何地方。
?
2? helloworld
?
在任意目錄下(不一定是安裝devkitpro的目錄)建立一個名為projects的文件夾(名字是什么其實無所謂)
在文件夾內建立多個子文件夾,每個文件夾是將來要編的一個程序
? 例如:projects
???????? -helloworld
?????????? -main.c
?????????? -makefile
這里面的“helloworld”程序名稱命名的文件夾,“main.c”是程序的源代碼,“makefile”是為編譯所作的信息文件
每一個程序編譯前都要有main.c和makefile放在“程序名稱”的文件夾內
先說makefile:
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 World
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
這里目前每個程序不一樣的就是倒數第三行“PSP_EBOOT_TITLE = Hello World”里的“Hello World”,它是你的程序名稱,顯示在PSP上。
所以每做一個新程序,需要改變的就是makefile里的“PSP_EBOOT_TITLE”
?
再說main.c:
main.c的格式主要為:
#include <pspkernel.h>???????????????????????????????????????? //PSP程序必不可少的頭文件
#include <pspdebug.h>????????????????????????????????????????? //我認為有些類似于stdio.h
#include <pspctrl.h>?????????????????????????????????????????? //按鍵有關函數的頭文件
PSP_MODULE_INFO("Hello World", 0, 1, 1);?????????????????????? //不會被編譯,寫上你的程序名和版本號
#define printf pspDebugScreenPrintf??????????????????????????? //定義函數pspDebugScreenPrintf為printf,以后好用
int exit_callback(int arg1,int arg2,void *common)
{sceKernelExitGame();
return 0;}/* Exit callback */
?
int CallbackThread(SceSize args,void *argp)
{int cbid;
cbid=sceKernelCreateCallback("Exit Callback",exit_callback,NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;}/* Callback thread */
?
int SetupCallbacks(void)
{int thid=0;
thid=sceKernelCreateThread("update_thread",CallbackThread,0x11,0xFA0,0,0);
if(thid>=0)sceKernelStartThread(thid,0,0);
return thid;}/* Sets up the callback thread and returns its thread id */
?????
//以上這三個函數先不用管,是為了能按home時退出用的
?
int main()???????????????????????????? //終于到main函數了
{
pspDebugScreenInit();????????????????? //設置PSP屏幕,這樣就可以顯示文本了
SetupCallbacks();????????????????????? //設置按home可以退出
?
//這里才是寫程序內容的地方!!!!
pspDebugScreenClear();??????????? //清屏函數,清除屏幕上所有內容并把光標復位到左上角
pspDebugScreenSetXY(20,10);?????? //設置光標,左上角為(0,0),PSP一共有34行68列,所以右下角是(67,33)
printf("hello world");????? //就是打出一個“hello world”
?
sceKernelSleepThread();??????????????? //讓程序運行完后停到這里
return 0;
}
?
?
現在開始編譯啦!!
新建一個run.bat,里面寫上:(假設程序安裝到C:/devkitpro)
set path=%path%;C:/devkitpro/devkitpsp/bin;
cmd
現在將這個run.bat文件放入projects文件夾,運行
輸入cd hello world回車(這代表進入hello world文件夾)
再輸入make回車,就開始編譯了!
如果看到附件里圖片那樣的文字并且在hello world里生成了四個文件就代表成功了!
在PSP/GAME里新建一個文件夾,名字隨意,把剛才生成的EBOOT.PBP放入就可以了,要是嫌麻煩就直接把hello world拖到PSP/GAME
其實也可以將*.bat放入hello world文件夾,運行然后直接輸入make就行了
如果想編譯出1.50上的雙文件夾,要把輸入的make改成kploit make
如果想編譯出PSP-2000上的prx文件用于3.71以上版本,需要在makefile里開頭加上這樣兩行:
BUILD_PRX=1
PSP_FW_VERSION=371
同樣還是輸入make編譯
總結
- 上一篇: NokiaJ2ME开发者套件4.0 J2
- 下一篇: 多硬盘的引导文件boot.ini