放假啊,这叫玩啊,天天不务正业,还玩些可能和未来工作无关的技术!内心充满了罪恶感啊
写HelloWorld太无聊了,转了一圈PSPSDK发现有自带sample,方便快速上手的好东西,位置在开发包/psp/sdk/samples下 面,其中包括声音,控制器,红外,usb,wifi,电源等等。还真不少,先挑简单的看看。恩~~我看controller挺简单!就看这个!
打开controller/base目录,只有一个main.c 和 Makefile。肯定不会很难,先make一个试试,还好很顺利,编译得到四个文件: main.o controller_basic.elf EBOOT.PBP PARAM.SFO。
main.o 不用说肯定是main.c的生成的目标文件。
controller_basic.elf 我知道ELF是linux下的二进制文件格式,可能PSP也是这个格式。
EBOOT.PBP 这个就是最终的执行文件了,这个应该是包装过的,其中包含一些图标文件什么的。
PARAM.SFO 这个我就不知道,有高手可以告诉我,(我怀疑!我猜测!是源码中定义的那些宏有关,是一些信息,最后打包到EBOOT.PBP。不要太相信,只是个思路)。
然后就是插上usb,靠到psp/game下,建个文件夹,叫什么名都可以!然后把EBOOT.PBP(不要改名字!)放进去,运行就可以了。
也看了运行后什么模样了!下面就是分析源码了,分析都写成注释了!
以下是源码 :
/**/
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Basic Input demo -- reads from control pad and indicates button
* presses.
*
* Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
* Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
* Copyright (c) 2005 Donour Sizemore <donour@uchicago.edu>
*
* $Id: main.c 1095 2005-09-27 21:02:16Z jim $
*/
/**/
/* psp的一些头文件,从文件名应该能看出来时干嘛使得 */
#include < pspkernel.h >
#include < pspdebug.h >
#include < pspctrl.h >
/**/
/* psp sdk中自带标准c库和标准c++库 */
#include < stdlib.h >
#include < string .h >
/**/
/* 定义模块信息 包括版本 */
/**/
/* Define the module info section */
PSP_MODULE_INFO( " CONTROLTEST " , 0 , 1 , 1 );
/**/
/* 定义主线程属性 还没具体研究,有时间再改上*/
/**/
/* Define the main thread's attribute value (optional) */
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
/**/
/* 这个纯属为了方便 pspDebugScreenPrintf 的用法和c库中的printf用法完全一样,不过pspDebugScreenPrintf只能用在初始化了DebugScreen以

本文介绍了作者在假期尝试PSP开发的过程,通过分析PSPSDK提供的控制器样本代码,理解了EBOOT.PBP、PARAM.SFO等文件的作用,并进行了简单的运行和源码分析,感叹PSPSDK公开的函数有限,暗示深入学习可能需要研究开源代码库。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



