-----------------------------------------------------------K[A@'本文来自:V电G玩S天K空Y
PSP软件开发FAQ(问与答)K[A@'本文来自:V电G玩S天K空Y
-----------------------------------------------------------K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
1. 问: 我想在PSP开发软件, 需要什么软件?K[A@'本文来自:V电G玩S天K空Y
答: - Cygwin+PSPSDK+自己顺手的编辑器(软件开发环境)K[A@'本文来自:V电G玩S天K空Y
(开发环境也可考虑用devkitPro内的devkitPSP)K[A@'本文来自:V电G玩S天K空Y
- Kxploit Tool/PBP Maker/PSPBrew(1.00执行档转1.50工具)K[A@'本文来自:V电G玩S天K空Y
(由 maxhoov 提供)K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
2. 问: 怎样安装开发环境?K[A@'本文来自:V电G玩S天K空Y
答: - 用Cygwin+Toolchain 安装. 请参考本版maxhoov 的: 简述建立Cygwin环境下的PSP开发环境K[A@'本文来自:V电G玩S天K空Y
- 安装devkitPro, 请参考本版: 简述安装devkitPSP开发环境, 完全免用CygwinK[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
3. 问: 怎样开始编写PSP程序?K[A@'本文来自:V电G玩S天K空Y
答: - 学好C 或 C++K[A@'本文来自:V电G玩S天K空Y
- 拿一些PSP的HELLO WORLD来研究K[A@'本文来自:V电G玩S天K空Y
- 参考psp/sdk/samples内的范例K[A@'本文来自:V电G玩S天K空Y
- 参考本版: 学习PSP游戏制作实况记录K[A@'本文来自:V电G玩S天K空Y
- 请参考 我的第一个PSP程序: Hello World! PSP编程从这里开始! (11月13日新加)K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
4. 问: 可以用C++编程吗?K[A@'本文来自:V电G玩S天K空Y
答: 可以! 请参考nj-zero的有关研究:K[A@'本文来自:V电G玩S天K空Y
- 通过用c++编译程序的可行性研究K[A@'本文来自:V电G玩S天K空Y
- 向c++前进(用c++建立psp开发框架之史前篇)K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
5. 问: 怎样显示中文?K[A@'本文来自:V电G玩S天K空Y
答: 请参考 - 月光大大/ahtya大大的: CNREADER的代码K[A@'本文来自:V电G玩S天K空Y
- zhongzf 的: 一个作图和显示汉字的类库 + 源码K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
6. 问: 怎样安装libpng?K[A@'本文来自:V电G玩S天K空Y
答: 请参考: 学习PSP游戏制作实况记录 K[A@'本文来自:V电G玩S天K空Y
7. 问: 怎样安装mikmodlib?K[A@'本文来自:V电G玩S天K空Y
答: 请参考: 学习PSP游戏制作实况记录 K[A@'本文来自:V电G玩S天K空Y
8. 问: 怎样在PSP上除虫呢?K[A@'本文来自:V电G玩S天K空Y
答: 因为我们不是用官方的开发环境, 在下所知就只可以用古老的"printf"方法了, 即是把有关的变量值打印在屏幕上, 或在适当位置用printf印出字句, 看看程序跑到那里. 设定和使用printf的方法:K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
// PSPSDK 的printf 正式名为pspDebugScreenPrintf, 为了方便, define 为printfK[A@'本文来自:V电G玩S天K空Y
#define printf pspDebugScreenPrintfK[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
//然后在我们程序头:K[A@'本文来自:V电G玩S天K空Y
pspDebugScreenInit();K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
然后就可以把它当成是C 内的printf一样来应用, 例如:K[A@'本文来自:V电G玩S天K空Y
printf("%d", n);K[A@'本文来自:V电G玩S天K空Y
printf("x pos:%d", x); K[A@'本文来自:V电G玩S天K空Y
我们也可以安装"exception handler", 避免出错时锁机. 请参考 安装Exception Handler, 避免试跑时锁机 K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
9. 问: 我很想在PSP上编程, 但这样做, 会把我可爱宝贵的她弄成砖头吗?K[A@'本文来自:V电G玩S天K空Y
答: (注意, 本答案只是个依常理下的判断, 后果一切自负)根据网上资料和maxhoov 的分析 (见本版:简要分析Trojan.PSPBrick病毒), 我们只会在乱弄Flash Rom(闪记忆)档案的情况下, 才有机会把PSP弄成砖头, 我们要只是编写一般的应用程序, 调用RAM(随机记忆), 应该没有问题的. 要是锁机了, 只要把电池拆出装回, 应该就好了.K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
要是你还是担心的话, 可以花二万美元, 买入SONY官方的PSPSDK. 没有二万美元? 那就只好望着你的PSP轻叹了, 睡觉时要好好的把她放在枕头边, 过马路时要小心, 别把她从口袋里掉出来 ;)K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
10. 问: 我的程序把PSP弄至黑屏锁机, 为什么?K[A@'本文来自:V电G玩S天K空Y
答: 可能的原因有:K[A@'本文来自:V电G玩S天K空Y
- 写入了不该写的记忆地址.K[A@'本文来自:V电G玩S天K空Y
- 除以0 (Divided by zero).K[A@'本文来自:V电G玩S天K空Y
- NULL POINTERS!!! K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
11. 问: 我的程序把PSP弄至黑屏锁机, 怎么办?K[A@'本文来自:V电G玩S天K空Y
答: 试一下以下的方法:K[A@'本文来自:V电G玩S天K空Y
- 看看能不能关上电源, 可以关的话, 再开电源看看, 是否恢复了?K[A@'本文来自:V电G玩S天K空Y
- 把电池拆除再安上, 一般情况应该没问题的了.K[A@'本文来自:V电G玩S天K空Y
- 还是没有反应... 把问题贴在本版, 请教一下高手吧 :| K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
12. 问: 除了PSPChina, 还有那里可以找到有关开发PSP软件的数据呢?K[A@'本文来自:V电G玩S天K空Y
答: 可以参考以下这些国外网站:K[A@'本文来自:V电G玩S天K空Y
- ps2dev.org的PSP ForumK[A@'本文来自:V电G玩S天K空Y
- QJ Forum 的 PSP Development & HomebrewK[A@'本文来自:V电G玩S天K空Y
- psDevWikiK[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
13. 问: 到那里下载有关PSP开发的工具呢?K[A@'本文来自:V电G玩S天K空Y
答: 试一下这些国外网站:K[A@'本文来自:V电G玩S天K空Y
- http://files.pspupdates.qj.net/K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
14. 问: 怎样写/改那个Makefile呢?K[A@'本文来自:V电G玩S天K空Y
答: 请参考/下载本版ssddn 大大的: gcc手册和《跟我一起学Makefile》K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
15. 问: 编译成功了, 我怎么样把"EBOOT.PBP"放入PSP跑呢?K[A@'本文来自:V电G玩S天K空Y
答: 要是你的PSP是1.50版, 把它用USB线与计算机连接, 执行Kxploit Tool, 就可以把你的大作放到PSP上测试.K[A@'本文来自:V电G玩S天K空Y
(关于1.00版, 要请有1.00版的朋友帮忙提供了)K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
16.问: 那里有PSPSDK的函数列表?K[A@'本文来自:V电G玩S天K空Y
答:K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
ssddn:K[A@'本文来自:V电G玩S天K空Y
函数手册 http://psp.jim.sh/pspsdk-doc/K[A@'本文来自:V电G玩S天K空Y
在其安装目录下有Sample程序,可以参考。 K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
aeolusc :K[A@'本文来自:V电G玩S天K空Y
cygwin编译版和devkitpro版都有一个doc目录K[A@'本文来自:V电G玩S天K空Y
cygwin版在/usr/local/pspdev/psp/sdk/doc... 这个目录下有一个html目录,里面的index.htm就是document的首页 K[A@'本文来自:V电G玩S天K空Y
17. 问: 在PSP上怎样读写档案?K[A@'本文来自:V电G玩S天K空Y
答: 可以用标准的C文件操作函数:K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
FILE *fp;K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
if ((fp = fopen(filename, "rb")) == NULL) return NULL;K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
int n = fread(buf, 1, SIZE, fp);K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
fclose(fp); K[A@'本文来自:V电G玩S天K空Y
-----------------------------------------------------------------------------K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
FILE* fp;K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
fp = fopen(filename, "wb");K[A@'本文来自:V电G玩S天K空Y
if (fp==NULL) return;K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
int n = fwrite(buf, 1, SIZE, fp);K[A@'本文来自:V电G玩S天K空Y
...K[A@'本文来自:V电G玩S天K空Y
fclose(fp); K[A@'本文来自:V电G玩S天K空Y
18. 问: 怎样在我自己的程序内支持true type 字体呢? (11月2日)K[A@'本文来自:V电G玩S天K空Y
答: 请参考本版ssddn大大的: FreeType字体程序库介绍K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
19. 问: 怎样在程序内转换文字编码, 如 utf-8<-->gb2312? (11月2日)K[A@'本文来自:V电G玩S天K空Y
答: 可以利用iconv函数族, 请参考本版ssddn大大在这个贴2至3楼的回应:K[A@'本文来自:V电G玩S天K空Y
关于文件名显示不全的成因分析K[A@'本文来自:V电G玩S天K空Y
另外请参考: 教你如何编译iconv -- 凑合版K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
20. 问: 我把一些额外的函数库(如libpng, mikmodlib等等...) 加入makefile, 本来好好的代码在编译时就出现错误了, 怎么搞的?K[A@'本文来自:V电G玩S天K空Y
答: 试一试把新加的函数库, 放在前头, 把PSP的系统函数库放在最后, 例如:K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
LIBS = -lpng -lz -lm -lpsppower -lpspaudiolib -lpspaudio K[A@'本文来自:V电G玩S天K空Y
21. 问: 如何在我们自己的程序里响应待机事件? (11月13日)K[A@'本文来自:V电G玩S天K空Y
答:请参考 问一下如何响应待机事件K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
22. 问: 我想用 math.h 里的函数, 编译时郄出现错误, 为什么呢? (11月13日)K[A@'本文来自:V电G玩S天K空Y
答: 请在你的makefile里, 加入相关的math 库:K[A@'本文来自:V电G玩S天K空Y
K[A@'本文来自:V电G玩S天K空Y
LIBS = -lm ... K[A@'本文来自:V电G玩S天K空Y
23. 问: 怎样在firmware 2.0 上执行自制软件呢? (12月31日)K[A@'本文来自:V电G玩S天K空Y
答: 用fanjita 的 eboot loader 0.9 吧:K[A@'本文来自:V电G玩S天K空Y
http://www.fanjita.org/content/eboot.html


