`

Sony PSP程序开发简介

    博客分类:
  • PSP
阅读更多
Sony PSP程序开发简介
7个月前PSP在日本发售,4个月前在美国发售,2个月内即将在欧洲发售。然而, 在家里开发PSP程序已经成为现实.在这篇文章里我会介绍在这个小巧平台上进行编程的基本知识。
和其他console游戏平台一样,Sony从未想过让最终用户拥有在PSP平台上开发程序的能力。但是,通过逆向工程专家们的努力,几乎每个平台诞生的同时便可以在家里进行这个平台上的开发了。就PSP平台而言,两件事使这变为现实。第一件事是第一个发布版的PSP firmware中存在一个bug,这个bug只存在于最初几个月在日本售出的PSP中,利用这个bug可以执行未经签名的程序代码.第二件事是 nemnem写的'hello world'程序的发布.nemnem拆开了PSP,取下保存着firmware的闪存芯片并反汇编fireware.通过反汇编出的信息,nemnem 写出了他的'hello world'程序.在此基础上,ps2dev社区反向工程了剩下的fireware,终于制作出了一个可用的toolchain(译者注: toolchain 是 指一连串的编译工具,因为在编译源代码的过程中,会以序的被执行到,因此被称为toolchain)和sdk.
PSP内核基于 MIPS R4000.它包含CPU、FPU、和一个向量处理单元(vector unit : 进行向量和矩阵操作的协处理器)。这些单元组成一个Allegrex CPU核心。CPU的时钟频率可以在1Mhz和333Mhz之间任意调节。Sony为了保证PSP的使用时间将CPU频率限制在222Mhz。和CPU搭配使用的还有一个专用媒体处理CPU,它具有MP3、ATRAC3和h.264硬件解码能力。图形方面,PSP有一颗专用GPU,其具有光照、贴图、细分、像素操作和其他一些功能。PSP的主内存容量为32mb(译者注:原文是'mb',疑为MB,下同),其中8mb为内核使用,另外24mb供运行中的游戏使用。视频存储器容量为2mb。整个硬件配置和PS2非常相似,PS2有一个MIPS R5900内核,2个向量处理单元,32mb主内存和4mb视频存储器。任何熟悉PS2编程的人都会很适应PSP开发。
在家里进行PSP开发的前提条件是:1)熟悉c编程,2)toolchain,3)SDK,4)测试代码的平台。图形开发方面如果熟悉 framebuffer和OpenGL将会有很大帮助。现在PSP模拟器还处在初期阶段,离让人满意还差很大距离。可以用一个运行firmware1.0 或1.5版本的PSP作为测试平台。现在还没有办法在更高的firmware版本上运行未签名的程序。toolchain可以从http://www.oopo.net/consoledev或使用subversion在svn://svn.pspdev.org/psp/trunk/psptoolchain取得。toolchain包含 binutils、newlib和一个用来使gcc4支持Allegrex CPU的补丁。直接在linux或Cygwin的命令行下执行toolchain.sh就可以安装toolchain了。安装和配置Cygwin的细节并不属于本文所讨论的范畴,你可以在其他地方找到相关资料。toolchain.sh会从subversion服务器上下载并安装SDK。PSP SDK在开发时的一个目标就是完全合法化。这意味着没有一行代码是从泄露的商业SDK中拿来的。PSP SDK中的任何内容都是通过反向工程firmware和已经发布的游戏得来的。pspdev论坛上有如何将SDK集成到几种IDE中的介绍。
当安装完上述的工具并其可以工作时,你就可以开始在PSP上写代码了。看一下SDK带的例子是一个很好的开端。在linux上例子安装在 /usr/local/pspdev/psp/sdk/samples目录下。我们从sdktest这里例子开始。首先需要包含一些头文件:
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
接下来是设置二进制文件的一些属性:
PSP_MODULE_INFO("SDKTEST", 0, 1, 1);
这些参数按顺序依次是:名称,标记,主版本号,次版本号。现在将标记设置为0。


接下来是一些相当标准的事情。下面几个函数用来设置相应home按键的退出回调函数。这些代码基本上是可以表达其含义的-大多数情况下你可以直接在程序中使用例子中的这些代码。在那些代码之后是通常的main()函数。这些对于书写可以编译并执行的代码来说已经足够了。(编译并允许一次sdktest还是值得的,这可以检验SDK是否配置正确)。在运行firmware1.0的PSP上,只需要复制make出的EBOOT.PBP到$ PSP/psp/game/sdktest就可以了($PSP代表你的PSP记忆棒在你的OS上的路径)。在运行firmware1.5的PSP上,使用 'make kxploit'代替'make'命令,这样会生成两个目录,将其全部复制到$PSP/psp/game/目录下。最后在PSP里选择UMD图标下面的 Memory Stick图标后,程序就会出现在PSP屏幕上了。
自此,你可以开始写一些代码了。你可以查看剩下的例子和SDK文档学会如何使用SDK。第二篇介绍图形和输入硬件细节的文章即将发布。
推荐资源:
http://wiki.pspdev.org, the ps[2,p] wiki
http://forums.ps2dev.org, the ps2dev 论坛。在发帖前请先搜索一下已有资源
http://www.pspwiki.org, 一个关于PSP信息的wiki.虽然 有些信息不太可靠,但是还是有一些有用的信息。
注意:不论何时提到ps2dev或pspdev,它们是可以互换的,代表同样的含义 :http://www.pspdev.org 和 http://www.ps2dev.org 是可以互换的。但是psp-dev并不是ps2dev或pspdev,他们发布了1.5版的firmware exploit.
分享到:
评论

相关推荐

    psp开发工具miro lua

    【PSP开发工具Miro Lua】是一款专为PSP(PlayStation Portable)平台设计的lua脚本开发环境,它为LUA爱好者提供了在PSP上编写、测试和运行lua程序的便利工具。LUA是一种轻量级的脚本语言,因其简洁的语法和强大的...

    psp 官方固件6.60

    【标签】"PSP"直接关联到PlayStation Portable,这是一款由Sony Interactive Entertainment开发和销售的掌上游戏机。它以其强大的多媒体功能和游戏库吸引了全球众多玩家。PSP的固件更新对于保持设备的正常运行和享受...

    PSP SDK,PSP 开发包,PSP 的好东东

    3. **头文件**:头文件包含了函数声明和常量定义,它们告诉编译器如何与库文件进行交互,编写PSP程序时需要包含这些头文件。 4. **文档**:SDK文档通常包括API参考手册,详细介绍了每个函数的用途、参数和返回值,...

    pspsdk:用于PSP自家开发的开源SDK

    PSP软件开发套件 版本1.0 + beta2- 介绍PSP软件开发套件(PSPSDK)是为索尼的Playstation Portable(PSP)游戏机编写的开放源代码工具和库的集合。 它还包括文档和开发人员可以用来为PSP编写软件的其他资源。 PSPSDK...

    psp development with eclipse

    2. **Eclipse**:一个强大的C/C++集成开发环境(IDE),用于编写、编译及调试PSP程序。 3. **Blender3D**:一个开源的3D建模工具,用于创建游戏中的3D资产。 这些工具构成了一个完整的PSP游戏开发流程。 #### ...

    psp 中文输入程序 源代码

    标题中的“psp 中文输入程序 源代码”指的是为PlayStation Portable(PSP)游戏掌机开发的中文输入法软件的原始编程代码。PSP是一款由索尼公司推出的便携式多媒体设备,它允许用户运行游戏、播放媒体以及进行其他...

    PSP官方系统5.00.rar

    标签"PSP"明确了讨论的主题,即与索尼PSP游戏设备相关的技术内容。 压缩包内的文件列表虽然没有具体给出,但通常会包含以下几类文件: 1. `UPDATE.EBOOT.PBP`:这是固件更新的主要程序文件,负责引导并执行升级过程...

    PSP专用660PRO-B9

    首先,PSP(PlayStation Portable)是由日本索尼公司开发的一款便携式多媒体设备,其游戏功能是其主要卖点。每个PSP设备都运行着一个定制的操作系统,称为PSP系统软件,它提供了游戏运行、媒体播放、网络浏览等多种...

    PSP-Bluetooth 前身为 PSP-Consolizer,旨在为 PSP 1K_2K_3K 添加蓝牙控制器支持.zip

    实现PSP与蓝牙控制器的连接,首先要进行蓝牙适配器的驱动程序开发。开发者需要编写代码来模拟蓝牙协议栈,处理数据传输、设备发现、配对连接等一系列复杂的操作。在这个过程中,理解蓝牙标准如BLE(Bluetooth Low ...

    BFMLoaderV100_PSP_

    PSP,全称PlayStation Portable,是由索尼公司推出的便携式游戏设备。它拥有强大的硬件性能,能够运行各种复杂的游戏和应用程序。BFMLoaderV100作为PSP上的一个加载器,它的核心任务就是解析BFM文件,并确保它们能在...

    PSP SDK傻瓜包

    6. **开发环境集成**:对于一些“傻瓜包”,可能会预装IDE(Integrated Development Environment),如Code::Blocks或Visual Studio,这些IDE已经配置好所有必要的编译器和设置,使得编写、编译和运行PSP程序变得...

    MAME4ALLPSP_PSP_

    PSP是一款拥有高性能硬件的掌上游戏设备,能够运行由索尼官方以及第三方开发的多种游戏和应用程序。 在压缩包文件名称列表中,我们只有一个条目"MAME4ALLPSP",这可能是MAME4ALLPSP模拟器的主程序文件或者是包含该...

    psp 3.71M33

    M33是由第三方开发的定制固件,它在原版索尼官方固件的基础上进行了修改和增强,允许用户运行自制软件、备份游戏等。 首先,我们要理解PSP系统的基本架构。PSP采用的是基于微处理器的架构,核心部分是由Sony和IBM...

    mp4转换psp专用

    PSP是一款便携式多媒体设备,由索尼公司开发,允许用户观看视频、播放音乐和游戏。由于PSP的硬件限制,它不支持所有常见的视频格式,因此需要特定的转换工具来将其他格式的视频转换成PSP兼容的格式,如MP4。 【描述...

    PSP游戏模拟器软件

    标题中的“PSP游戏模拟器软件”指的是能够让个人电脑运行PlayStation Portable (PSP) 游戏的模拟程序。这种模拟器允许用户在没有实际PSP硬件的情况下,通过计算机享受PSP游戏的魅力。 PSP模拟器是软件开发的一个...

    psp6.60cmf

    【标签】"psp" 指的是PlayStation Portable,由索尼公司开发的一款掌上游戏机。PSP拥有强大的多媒体功能,可以玩游戏、播放音乐、视频,甚至浏览网页等。对于玩家来说,通过安装不同的插件和自制软件,可以扩展PSP的...

    PSP Manual_5_PSP_源码.zip

    在这个压缩包中,我们很可能会找到与PSP操作系统、游戏开发或者应用程序相关的C语言或汇编语言源代码。 PSP,全称PlayStation Portable,是由日本索尼公司推出的便携式游戏设备。它拥有强大的硬件性能,能够运行高...

    PSP

    "工具" 标签可能指的是PSP相关的开发工具或实用程序,如PPSSPP,这是一个流行的PSP模拟器,可以在PC和其他平台上运行PSP游戏。其他工具可能包括PSP的ISO管理器,用于组织和复制游戏到记忆棒,或者AdhocFileTransfer...

    psp6.20_PRO-B6刷机包_2011_06_01

    通过SDK,开发者可以创建和修改PSP的应用程序,包括游戏和实用工具。 对于想要刷入这个6.20 PRO-B6固件的用户,他们首先需要备份原有的PSP系统,以防万一过程中出现问题。然后,他们会下载这个压缩包,解压后找到...

    PSP中文输入转换软件

    总的来说,这个PSP中文输入转换软件是为了满足中文用户在PSP上进行中文输入的需求而开发的,提供了汉字到平假名的转换功能,并且可能与其他日语内容兼容。同时,通过“玩家网”这样的社区资源,用户可以获得更多的...

Global site tag (gtag.js) - Google Analytics