diff --git a/content/posts/newsletter-011/index.md b/content/posts/newsletter-011/index.md index 39a571a10..ce61d4ba8 100644 --- a/content/posts/newsletter-011/index.md +++ b/content/posts/newsletter-011/index.md @@ -169,6 +169,42 @@ they plant flowers which gives them points. ## Library & Tooling Updates +### [rust-psp] + +![demo-gif](psp.gif) + +Just what everyone's always wanted, [Rust on the Sony PSP][rust-psp]! 😆 + +This project is a port and improvement of the unofficial C/C++ PSPSDK from +2005 It does not require a custom GCC toolchain to be installed. Only Rust +nightly and a cargo subcommand. + +The psp crate provides a `psp::sys` submodule that houses the entire Sony PSP +API. We are working to have theseinterfaces merged into the libc crate. +The PSP unfortunately uses non-standard dynamic linking, +(and some libraries are statically linked!), so function definitions +marked extern are not enough. Eventually we will wrap this sys lib with a more +rust-friendly library. + +Rather than patching LLVM or rustc, the rust-psp team has also merged a +`mipsel-sony-psp` target upstream, and published cargo-psp. This is a subcommand +that works exactly like cargo build, except it also builds the crate into a +PSP-specific executable format called `PRX` and packages that into an +`EBOOT.PBP`, the standard format for a PSP Homebrew. + +The crate has reached full user-mode parity with the unofficial C/C++ SDK. +Kernel-mode support still needs to be worked on. Aside from library +imports, there is also support for PSP-specific custom assembly instructions +via the `vfpu_asm!` macro, with no need for a custom compiler toolchain. +There is also optional `embedded-graphics` support and a function to benchmark +or time your code. + +The next major milestone for rust-psp is std support. +If you are interested in helping out, please feel free to join the rust-psp +channel in the [PSP Homebrew discord server](https://discord.gg/WY8XhDG). + +[rust-psp]: https://github.com/overdrivenpotato/rust-psp + ### [This Month in Mun][mun-june] ![Language Server Diagnostics in action](mun-languageserver.gif) diff --git a/content/posts/newsletter-011/psp.gif b/content/posts/newsletter-011/psp.gif new file mode 100644 index 000000000..07c5748a7 Binary files /dev/null and b/content/posts/newsletter-011/psp.gif differ