16 个版本
0.2.6 | 2024年6月27日 |
---|---|
0.2.4 |
|
0.2.3 | 2023年5月4日 |
0.2.2 | 2022年9月25日 |
0.1.0 | 2020年6月10日 |
#72 in Cargo 插件
1,126 每月下载量
48KB
1K SLoC
rust-psp
一个用于构建完整的 PSP 模块的库,包括 PRX 插件和常规 homebrew 应用。
#![no_std]
#![no_main]
psp::module!("sample_module", 1, 1);
fn psp_main() {
psp::enable_home_button();
psp::dprintln!("Hello PSP from rust!");
}
请参阅 examples
目录中的示例程序。
关于 PSPSDK 呢?
此项目是一个全新的 SDK,不依赖于原始的 C/C++ PSPSDK。它旨在成为一个 完整 的替代品,具有更高效的图形函数实现,并添加了缺失的库。
功能 / 路线图
-
core
支持 - PSP 系统库支持
-
alloc
支持 -
panic = "unwind"
支持 - 基于宏的 VFPU 汇编器
- 全面 3D 图形支持(在某些情况下比 PSPSDK 更快!)
- 不依赖于 PSPSDK / PSPToolchain
- 实现与 PSPSDK 用户模式支持的完全兼容
- 将端口定义移植到
libc
仓库 - 添加对创建内核模块的支持
- 添加
std
支持 - 自动对 EBOOT.PBP 文件签名以便在未修改的 PSP 上运行
- 实现/反转未发现的库
依赖项
要为 PSP 编译,您需要一个 Rust nightly 版本,版本等于或晚于 2024-06-19
和 rust-src
组件。请使用 https://rustup.rs/ 安装 Rust
如果您是 Rust 新手,请使用以下内容。(您也可以手动按项目设置覆盖)。
$ rustup default nightly && rustup component add rust-src
您还需要安装 cargo-psp
$ cargo install cargo-psp
运行示例
输入示例目录之一,例如 examples/hello-world
,然后运行 cargo psp
。
这将在 target/mipsel-sony-psp/debug/
下创建一个 EBOOT.PBP
文件。
假设您已安装了自定义固件的PSP,您只需将此文件复制到记忆棒上 PSP/GAME
的新目录中,它将在XMB菜单中显示。
.
└── PSP
└── GAME
└── hello-world
└── EBOOT.PBP
如果您没有PSP,我们建议使用PPSSPP模拟器。请注意,图形代码非常敏感,因此如果您正在编写图形代码,我们建议在真实硬件上开发。PPSSPP在某些方面更为宽松。
高级用法:PRXEncrypter
如果您没有安装CFW的PSP,可以使用 PRXEncrypter
手动签名PRX,然后使用 pack-pbp
重新打包。
高级用法:PSPLink
如果您已安装PSPSDK并手动构建了可工作的PSPLink副本,您也可以使用 psplink
和 pspsh
在 target/mipsel-sony-psp/debug/
下运行 .prx
。有关这些程序的安装和使用指南,请参阅。
调试
使用来自pspdev github组织(psplinkusb v3.1.0 和 GNU gdb (GDB) 11.0.50.20210718-git
或更高版本)的最新版本的psplink和psp-gdb,Rust类型完全受支持,提供丰富的调试体验。在发布二进制文件中启用调试符号
Cargo.toml
[profile.release]
debug = true
并按照PSPlink手册的第6部分中的说明操作
用法
要使用 psp
crate在您自己的Rust程序中,将其添加到 Cargo.toml
,就像添加其他依赖项一样
[dependencies]
psp = "x.y.z"
在您的 main.rs
文件中,您需要设置一个基本的框架,如下所示
#![no_std]
#![no_main]
// Create a module named "sample_module" with version 1.0
psp::module!("sample_module", 1, 0);
fn psp_main() {
psp::enable_home_button();
psp::dprintln!("Hello PSP from rust!");
}
现在,您只需运行 cargo psp
就可以构建您的 EBOOT.PBP
文件。您也可以使用 cargo psp --release
创建发布构建。
如果您想自定义EBOOT,例如添加图标或新标题,您可以在项目的根目录中创建一个 Psp.toml
文件。请注意,所有键都是可选的
title = "XMB title"
xmb_icon_png = "path/to/24bit_144x80_image.png"
xmb_background_png = "path/to/24bit_480x272_background.png"
xmb_music_at3 = "path/to/ATRAC3_audio.at3"
更多选项可以在此处找到。
错误[E0460]:发现可能更新的版本crate ...
如果您遇到类似错误
error[E0460]: found possibly newer version of crate `panic_unwind` which `psp` depends on
--> src/main.rs:4:5
|
4 | use psp::dprintln;
| ^^^
|
= note: perhaps that crate needs to be recompiled?
只需清理您的目标目录,即可解决问题
$ cargo clean
依赖项
~4.5MB
~83K SLoC