24个版本
0.3.10 | 2024年6月27日 |
---|---|
0.3.8 | 2024年4月17日 |
0.3.7 | 2023年11月6日 |
0.3.6 | 2023年5月7日 |
0.1.1 | 2020年6月30日 |
在 硬件支持 中排名第16
每月下载量46次
用于 2 个包
1MB
16K SLoC
包含 (静态库,65KB) libunwind_lto.a,(静态库,55KB) libunwind.a
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
包添加到您的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]:找到可能更新的包 ...
如果您收到此类错误
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
依赖项
~0.7–1.3MB
~30K SLoC