ps3world-app
PS3 World for the PlayStation 3 (HEN and CFW): browse the PS3 World archives on the console and download homebrew, themes and avatars straight from dl.ps3.world, without a PC.
Screenshots
![]() |
![]() |
| Home: the three sections, styled as ps3.world's home page | A list: Homebrew > Ports |
![]() |
|
A theme: its preview, and where it saves (/dev_hdd0/theme) |
Avatars: a pack, opened as a folder |
Features
- Homebrew, themes and avatars in the site's categories: Homebrew by Games, Ports, Edits (PS1 and PS2 mods), Tools and Media; themes by their 17 categories; avatars by region, in packs.
- Themes and avatars as a grid of their pictures (5 themes or 8 avatars a row); the one picked is described under it. Homebrew stays a list.
- Installed: homebrew already installed on the PS3 (its folder in
/dev_hdd0/game) says so, not just Downloaded. - Update: when you replace a homebrew's PKG with a new version (same title ID, any file name), the next catalogue rebuild dates the change (
.cache/pkg-versions.jsonin the catalogue folder), and anyone who installed it before then sees Update on it. - Download speed and how long is left while downloading.
- An intro as it opens: the logo eases in over the backdrop, a soft glow passes behind it and a line draws out under it, then it fades into the app (about 2 seconds, while the catalogue loads underneath; any button hurries it).
- What's new: the first time a new version opens after an update, a screen lists what changed (once;
USRDIR/seen.txt). The list isnews_linesinsrc/ui.c: replace it for each release. - Search any list (Triangle), and jump by letter with L2/R2. Sort a list A–Z, newest first or largest first (Select).
- Surprise me (Square on a section's categories): something at random, from 13,000 themes or all the homebrew.
- Previews of what you're downloading: a theme's screenshot, an avatar, a homebrew's art.
- Saves where the PS3 looks: PKGs to
/dev_hdd0/packages(Package Manager > Install Package Files), themes to/dev_hdd0/theme, avatars to the chosen user'spsn_avatarfolder. - Checked downloads: every file's size and sha256 are checked before it's kept, and a stopped download resumes where it left off.
- A download queue: start several and keep browsing; the one running shows bottom right. Square on an avatar pack queues every avatar in it.
- Before a big download (1 GB or more) it says how big and roughly how long at the speed downloads have been getting, and checks there's room on the HDD.
- Full-screen previews (Triangle on an item).
- Favourites: Select on an item stars it; they have their own card on the home screen (and a tab in My downloads).
- Recently added: what's new in the last 30 days, from its own card on the home screen (under Avatars): Homebrew's first, L1/R1 for Themes' and Avatars'. A New ticker along the top of the home screen scrolls through it too.
- My downloads (Triangle on the home screen): the queue, then everything on the HDD with its date. Delete a file (Square twice), or get a homebrew's new version.
- Free space on the HDD, top right of the home screen (the download in progress shows there instead while one runs).
- Quit to the XMB from the home screen: Circle, then Circle again within 4 seconds (a running download picks up where it left off next time).
- Updates: when a newer PS3 World is out, the home screen says so, and Square downloads it.
- Credits & contact (Start on the home screen): who made it, what it's built with, and where to send your own homebrew, themes or avatars (ps3.world/contact).
- 1080p: with the PS3 set to 1080p, everything is drawn at the full resolution (the graphics chip draws; the CPU fallback is 720p). On a 4:3 TV the picture is letterboxed at the right shape.
- Sound effects: soft clicks as you move and choose (off in the Language screen, under Select).
- 16 languages: English, Spanish, Portuguese, French, German, Italian, Dutch, Polish, Turkish, Danish, Indonesian, Russian, Chinese (Simplified), Japanese, Korean and Arabic (joined letters, and the whole screen laid out right to left, controls included). It follows the PS3's language; Select on the home screen opens a grid of flags to pick another. Chinese, Japanese and Korean use the PS3's own system fonts. The words are in
data/lang/<code>.txt, and homebrew's descriptions ingenerator/descriptions/<code>.json.
Controls
| Button | Does |
|---|---|
| D-pad | move (Left/Right: a page at a time in lists) |
| Cross | open, download |
| Circle | back |
| Square | clear a search; download a whole avatar pack; Surprise me on a section's categories; cancel a download; delete in My downloads; get an update on the home screen |
| Triangle | search a list; the preview full screen on an item; My downloads on the home screen |
| Select | the language (and sounds) on the home screen; the sort order in a list; favourite an item |
| Start | Credits & contact, on the home screen |
| L1 / R1 | in a list, the previous / next category (Games, Ports, Edits...); on the categories screen, the previous / next section; in My downloads, My downloads / Favourites. The bar at the top shows which. |
| L2 / R2 | the previous / next letter |
Hold R1 while the app starts to try the graphics chip again after a freeze, or L1 to use the CPU renderer that once.
Adding content and releases
The app reads a catalogue that generator/make-catalog.mjs builds from the sites' data and generator/homebrew.manifest.json (generator/README.md). After adding to a site or the manifest, rebuild it and upload it; consoles pick it up the next time the app starts.
To release a new version: put its PKG in D:PS3 WORLD R2homebrewtools as PS3WorldApp-v<version>.pkg, upload it (the deployer's Downloads card), run G:DeployerRebuild app catalogue.cmd, then upload the catalogue (its ps3world-catalog card). Apps from 0.6.0 on offer it on the home screen. Tag the commit v<version> for the GitHub release.
Layout
| Path | What |
|---|---|
src/ |
the app (C, PSL1GHT); src/ps3/ is the console backend |
src/catalog.c |
catalog.json, parsed and checked |
src/lang.c, src/i18n.c, data/lang/, data/flags/ |
the languages: tr(), the PS3's language or the one picked, each language's words, and its flag (tools/make-flags.mjs makes them from flag-icons) |
generator/ |
Node script that builds catalog.json and the icons from the site build |
tools/https_test.c |
the app's HTTPS client run on Linux against dl.ps3.world (CI) |
tools/make-art.mjs |
ICON0, PIC1 and the in-app background, from the site |
.github/workflows/ps3.yml |
CI: HTTPS test, PS3 toolchain (cached), EBOOT + PKG |
Building
Push to GitHub and Actions builds PS3World.pkg (artifact PS3World). The toolchain (ps3toolchain + PSL1GHT, pinned) is built once and cached; Mbed TLS 3.6.7 is built per run by tools/build-mbedtls.sh.
Title ID PSWD00001; it installs to /dev_hdd0/game/PSWD00001/. The log is USRDIR/ps3world_log.txt, and USRDIR/downloaded.txt lists what's been downloaded. docs/TEST-CHECKLIST.md is the on-console test.
Licence
GPL-2.0. Based on Resonant for Plex (HTTPS client, drawing, fonts, input, worker threads, build). Third-party licences are in data/licenses/.
| 1 | # ps3world-app |
| 2 | |
| 3 | **PS3 World** for the PlayStation 3 (HEN and CFW): browse the [PS3 World](https://ps3.world) archives on the console and download homebrew, themes and avatars straight from `dl.ps3.world`, without a PC. |
| 4 | |
| 5 | ## Screenshots |
| 6 | |
| 7 | | | | |
| 8 | |---|---| |
| 9 | |  |  | |
| 10 | | Home: the three sections, styled as ps3.world's home page | A list: Homebrew > Ports | |
| 11 | |  |  | |
| 12 | | A theme: its preview, and where it saves (`/dev_hdd0/theme`) | Avatars: a pack, opened as a folder | |
| 13 | |
| 14 | ## Features |
| 15 | |
| 16 | - **Homebrew, themes and avatars** in the site's categories: Homebrew by Games, Ports, Edits (PS1 and PS2 mods), Tools and Media; themes by their 17 categories; avatars by region, in packs. |
| 17 | - **Themes and avatars as a grid** of their pictures (5 themes or 8 avatars a row); the one picked is described under it. Homebrew stays a list. |
| 18 | - **Installed:** homebrew already installed on the PS3 (its folder in `/dev_hdd0/game`) says so, not just Downloaded. |
| 19 | - **Update:** when you replace a homebrew's PKG with a new version (same title ID, any file name), the next catalogue rebuild dates the change (`.cache/pkg-versions.json` in the catalogue folder), and anyone who installed it before then sees **Update** on it. |
| 20 | - **Download speed** and how long is left while downloading. |
| 21 | - **An intro** as it opens: the logo eases in over the backdrop, a soft glow passes behind it and a line draws out under it, then it fades into the app (about 2 seconds, while the catalogue loads underneath; any button hurries it). |
| 22 | - **What's new:** the first time a new version opens after an update, a screen lists what changed (once; `USRDIR/seen.txt`). The list is `news_lines` in `src/ui.c`: replace it for each release. |
| 23 | - **Search** any list (Triangle), and jump by letter with L2/R2. **Sort** a list A–Z, newest first or largest first (Select). |
| 24 | - **Surprise me** (Square on a section's categories): something at random, from 13,000 themes or all the homebrew. |
| 25 | - **Previews** of what you're downloading: a theme's screenshot, an avatar, a homebrew's art. |
| 26 | - **Saves where the PS3 looks:** PKGs to `/dev_hdd0/packages` (Package Manager > Install Package Files), themes to `/dev_hdd0/theme`, avatars to the chosen user's `psn_avatar` folder. |
| 27 | - **Checked downloads:** every file's size and sha256 are checked before it's kept, and a stopped download resumes where it left off. |
| 28 | - **A download queue:** start several and keep browsing; the one running shows bottom right. Square on an avatar pack queues every avatar in it. |
| 29 | - **Before a big download** (1 GB or more) it says how big and roughly how long at the speed downloads have been getting, and checks there's room on the HDD. |
| 30 | - **Full-screen previews** (Triangle on an item). |
| 31 | - **Favourites:** Select on an item stars it; they have their own card on the home screen (and a tab in My downloads). |
| 32 | - **Recently added:** what's new in the last 30 days, from its own card on the home screen (under Avatars): Homebrew's first, L1/R1 for Themes' and Avatars'. A **New** ticker along the top of the home screen scrolls through it too. |
| 33 | - **My downloads** (Triangle on the home screen): the queue, then everything on the HDD with its date. Delete a file (Square twice), or get a homebrew's new version. |
| 34 | - **Free space** on the HDD, top right of the home screen (the download in progress shows there instead while one runs). |
| 35 | - **Quit to the XMB** from the home screen: Circle, then Circle again within 4 seconds (a running download picks up where it left off next time). |
| 36 | - **Updates:** when a newer PS3 World is out, the home screen says so, and Square downloads it. |
| 37 | - **Credits & contact** (Start on the home screen): who made it, what it's built with, and where to send your own homebrew, themes or avatars (ps3.world/contact). |
| 38 | - **1080p:** with the PS3 set to 1080p, everything is drawn at the full resolution (the graphics chip draws; the CPU fallback is 720p). On a 4:3 TV the picture is letterboxed at the right shape. |
| 39 | - **Sound effects:** soft clicks as you move and choose (off in the Language screen, under Select). |
| 40 | - **16 languages:** English, Spanish, Portuguese, French, German, Italian, Dutch, Polish, Turkish, Danish, Indonesian, Russian, Chinese (Simplified), Japanese, Korean and Arabic (joined letters, and the whole screen laid out right to left, controls included). It follows the PS3's language; Select on the home screen opens a grid of flags to pick another. Chinese, Japanese and Korean use the PS3's own system fonts. The words are in `data/lang/<code>.txt`, and homebrew's descriptions in `generator/descriptions/<code>.json`. |
| 41 | |
| 42 | ## Controls |
| 43 | |
| 44 | | Button | Does | |
| 45 | |---|---| |
| 46 | | D-pad | move (Left/Right: a page at a time in lists) | |
| 47 | | Cross | open, download | |
| 48 | | Circle | back | |
| 49 | | Square | clear a search; download a whole avatar pack; Surprise me on a section's categories; cancel a download; delete in My downloads; get an update on the home screen | |
| 50 | | Triangle | search a list; the preview full screen on an item; My downloads on the home screen | |
| 51 | | Select | the language (and sounds) on the home screen; the sort order in a list; favourite an item | |
| 52 | | Start | Credits & contact, on the home screen | |
| 53 | | L1 / R1 | in a list, the previous / next category (Games, Ports, Edits...); on the categories screen, the previous / next section; in My downloads, My downloads / Favourites. The bar at the top shows which. | |
| 54 | | L2 / R2 | the previous / next letter | |
| 55 | |
| 56 | Hold R1 while the app starts to try the graphics chip again after a freeze, or L1 to use the CPU renderer that once. |
| 57 | |
| 58 | ## Adding content and releases |
| 59 | |
| 60 | The app reads a catalogue that `generator/make-catalog.mjs` builds from the sites' data and `generator/homebrew.manifest.json` ([generator/README.md](generator/README.md)). After adding to a site or the manifest, rebuild it and upload it; consoles pick it up the next time the app starts. |
| 61 | |
| 62 | To release a new version: put its PKG in `D:PS3 WORLD R2homebrewtools` as `PS3WorldApp-v<version>.pkg`, upload it (the deployer's Downloads card), run `G:DeployerRebuild app catalogue.cmd`, then upload the catalogue (its ps3world-catalog card). Apps from 0.6.0 on offer it on the home screen. Tag the commit `v<version>` for the GitHub release. |
| 63 | |
| 64 | ## Layout |
| 65 | |
| 66 | | Path | What | |
| 67 | |---|---| |
| 68 | | `src/` | the app (C, PSL1GHT); `src/ps3/` is the console backend | |
| 69 | | `src/catalog.c` | catalog.json, parsed and checked | |
| 70 | | `src/lang.c`, `src/i18n.c`, `data/lang/`, `data/flags/` | the languages: tr(), the PS3's language or the one picked, each language's words, and its flag (`tools/make-flags.mjs` makes them from flag-icons) | |
| 71 | | `generator/` | Node script that builds catalog.json and the icons from the site build | |
| 72 | | `tools/https_test.c` | the app's HTTPS client run on Linux against dl.ps3.world (CI) | |
| 73 | | `tools/make-art.mjs` | ICON0, PIC1 and the in-app background, from the site | |
| 74 | | `.github/workflows/ps3.yml` | CI: HTTPS test, PS3 toolchain (cached), EBOOT + PKG | |
| 75 | |
| 76 | ## Building |
| 77 | |
| 78 | Push to GitHub and Actions builds `PS3World.pkg` (artifact **PS3World**). The toolchain (ps3toolchain + PSL1GHT, pinned) is built once and cached; Mbed TLS 3.6.7 is built per run by `tools/build-mbedtls.sh`. |
| 79 | |
| 80 | Title ID `PSWD00001`; it installs to `/dev_hdd0/game/PSWD00001/`. The log is `USRDIR/ps3world_log.txt`, and `USRDIR/downloaded.txt` lists what's been downloaded. `docs/TEST-CHECKLIST.md` is the on-console test. |
| 81 | |
| 82 | ## Licence |
| 83 | |
| 84 | GPL-2.0. Based on [Resonant for Plex](https://github.com/daedra000/Resonant-PS3) (HTTPS client, drawing, fonts, input, worker threads, build). Third-party licences are in `data/licenses/`. |


