$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
=== 所需设备和软件$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- PSP $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- 计算机 (本篇所包括的只是窗口操作系统)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- PSP软件开发环境$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- 任何editor$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
(注: 以前需要的 KXploit Tool, 现在已不用了! 详情见下面的解说.)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
(注: 本篇只会讲解在Firmware 1.50上测试程序)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
=== 安装开发环境$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
在满怀斗志的想着怎么在PSP上写个cnreader超级加强版之前, 要开发PSP软件, 我们首先要在自己的计算机上, 安装好PSP软件开发环境, 比较流行的安装方法有两个: 1) cygwin+toolchain, 2)devkitPSP.$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
1) cygwin+toolchain 的安装方法, 请参考: 简述建立Cygwin环境下的PSP开发环境$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
2) devkitPSP 的安装方法, 请参考: 简述安装devkitPSP开发环境, 完全免用Cygwin$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
cygwin+toolchain 的方法比较"正统", 因在安装时, 它会从svn.ps2dev.org下载最新的PSPSDK原码并编译, 所以安装好了, 你所拥有的PSPSDK是最新的. 但也因为如此, 它所用的时间比较长, 由数小时至数日不等 ;) 而cygwin是仿真UNIX系统, 要是你不熟识UNIX相关的东西, 在安装时遇到问题, 也会比较头痛. 不过只要你一步步的跟着简述建立Cygwin环境下的PSP开发环境, 再参考一下贴内的响应, 应该没有太大问题的!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
devkitPSP的安装相对来说比较容易, 但它内含的 PSPSDK, 是9月左右的, 要是你并不计较和最新的PSPSDK的兼容问题, 作为学习在PSP上编程是足够的了.$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
有不少朋友在安装开发环境时遇到问题, 但开发环境是必需的, 大家只要给点耐性, 小心的跟着安装教程, 一定可以安装好的!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
=== Hello World$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
好了, 大家也等了很久了, 马上看看我们今天的主角, Hello World的代码:0NTWin|BLw;e0r|g9<?%UQq<Bh5]^OzT@I$zbq{ef<Q&7OQJZK77MtU^HXo{]0Ry@4xuL9W+_V.8EVBh]68P|本文来自:V电G玩S天K空Y
| /// Hello World - My First App for the PSP$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y #include <pspkernel.h>$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y #include <pspdebug.h>$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y PSP_MODULE_INFO("Hello World", 0, 1, 1); $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y // Exit callback$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int exit_callback(int arg1, int arg2, void *common)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y {$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y sceKernelExitGame();$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y return 0;$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y }$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y // Callback thread$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int CallbackThread(SceSize args, void *argp)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y {$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int cbid;$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y sceKernelRegisterExitCallback(cbid);$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y sceKernelSleepThreadCB();$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y return 0;$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y }$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y // Sets up the callback thread and returns its thread id$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int SetupCallbacks(void)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y {$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int thid = 0;$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y if(thid >= 0) $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y {$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y sceKernelStartThread(thid, 0, 0);$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y }$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y return thid;$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y } $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y int main()$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y { $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y pspDebugScreenInit();$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y SetupCallbacks(); $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y pspDebugScreenPrintf("Hello World"); $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y sceKernelSleepThread(); $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y return 0; $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y } $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y |
| TARGET = hello$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y OBJS = main.o$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y CFLAGS = -O2 -G0 -Wall$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y ASFLAGS = $(CFLAGS)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y EXTRA_TARGETS = EBOOT.PBP$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y PSP_EBOOT_TITLE = Hello World$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y PSPSDK=$(shell psp-config --pspsdk-path)$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y include $(PSPSDK)/lib/build.mak |
0NTWin|BLw;e0r|g9<?%UQq<Bh5]^OzT@I$zbq{ef<Q&7OQJZK77MtU^HXo{]0Ry@4xuL9W+_V.8EVBh]68P|本文来自:V电G玩S天K空Y
代码的内容, 我们可以先不用理会, 我们现在所想要做的, 是把它编译, 然后放上PSP测试! 大家可以下载本篇的附件包, 然后把附件包解压, 放在任何地方都可以.$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
在cygwin 环境, 假设我们是放在我们的"home"目录内, 即"x:\cygwin\home\myname"里:$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- 打开cygwin$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- cd HelloWorld$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
- make$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
要是你看到类似以下的画面, 高举双手大叫3 声吧! 你成功了! 你已编译成功你的第一个PSP程序!

EBOOT.PBP就是我们所需要的最重要的执行包!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
=== 跑吧, Hello World!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
接下来, 我们就可以把编译好的Hello World, 放到PSP上试跑了!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
但刚才编辑好的东西, 还不可直接放到PSP上, 一般我们要用 Kxploit tool 做点工作, 但现在的 pspsdk, 己不再需要它了, 我们不用 "make", 而用 "make kxploit" 就行了:

"make kxploit" 后, 在当前活页夹内, 会多了两个活页夹: "hello" 和 "hello%". $jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
当我们把 PSP 以 USB 线接到计算机, 在PSP上, 选"USB Connection", 这时, 窗口操作系统会把PSP当成一个可移动的储存装置, 并会给予一个储存装置字母, 例如"M:".$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
这时, 我们把"hello" 和 "hello%"抄到PSP 的 MEMORY STICK 上的"\PSP\GAME" 里, 即可以测试了!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
在PSP上, 离开"USB Connection", 移至"Game"->"Memory Stick"并进入, 我们可能会先看到一个"Corrupted Data", 不用理会它, 向下移一格, 应该就会看到我们的"Hello World"了!按下执行按钮, 你就会看到我们非常熟识的句子"Hello World"打印在PSP庞大的屏幕上 :) 成功!!!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
当你欣赏完了美丽的"Hello World!"显示, 可以按"Home"按钮, 选择退出, 回到PSP的系统菜单!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
看到那个"Corrupted Data" 图标, 大家可能有点不爽, 要是你用的是比较新的 pspsdk, 那么你可以试一下不用 "make kxploit" 而用 "make SCEkxploit":

"make kxploit" 后, 在当前活页夹内, 会多了两个活页夹: "__SCE__hello" 和 "%__SCE__hello", 我们把它们抄到PSP 的 MEMORY STICK 上的"\PSP\GAME" 里, 就可以没有Corrupted Data" 的图标而又正常的测试我们的程序!$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
=== 接下来...$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
$jcsCxrLMVRcR$]~nurSp;/=~DmGx>BHv@6a44fuv?dKMc\&qlocBMn73<2cmsZM|L;@S#本文来自:V电G玩S天K空Y
接下来大家可以用Hello World 为根基, 加加减减的编写别的东西了. 至于要写什么, 那要看你的兴趣了!


