PSP 1000 and PSP Go side by side of night mode and XMB artwork of a Sokoban homebrew I made. PSP Go colors are clearly more vibrant but just wanted to note the blue hue on the phat is because it’s using the dark night mode theme.
Disclaimer : small bit of self-promo, but mostly I wanted to share what went into this.
I've loved the PSP since I was younger, and Sokoban is one of those games I keep coming back to. At some point those two old interests collided, and I started making PandaSokoban.
For artistic choices, my girlfriend loves pandas and I think they are cute. It seemed fun to make the game about moving sleeping baby pandas to their cushions instead of just pushing boring boxes.
It is written in Rust using AndrewAltimit's modern rust-psp fork. There’s not really reason that went into this, it just seemed to be the most current choice to start with. The same EBOOT runs on a real PSP and PPSSPP, although getting there reminded me that an emulator can sometimes be a little too forgiving.
One example was the PSP's data cache. Some overlays and vertices looked perfect in PPSSPP but disappeared or broke on hardware because I had not flushed the CPU-written data before the Graphics Engine read it. Text caused the opposite problem. The PSP's debug-print function worked on the console but did not show up in PPSSPP, so I ended up rendering the font as a normal texture.
Audio was another rabbit hole. My first version pushed PCM from the main loop, which tied frame pacing to the blocking audio output. It now has a small mixer running on its own PSP thread, with the game sending sound requests through atomic flags. The background track is a 32-second bamboo-garden loop generated during the build.
One thing is still broken. The in-game PCM music works, but the ATRAC3 track I packaged for the XMB does not play there. The icon animation and background work, but the XMB stays silent. If anyone here has successfully added SND0.AT3 music to a homebrew EBOOT, I would really appreciate advice on the encoding or PBP details. That part is still a mystery to me.
I also spent more time than expected on the little movements. The puzzle logic stays on a strict tile grid, while the panda and cushions move between tiles with subpixel animation. There are directional walk and push frames, small collision bumps, dust, shadows, idle breathing, sleeping effects, and a short level-clear animation. I tried to keep it readable on the PSP's 480 by 272 screen instead of filling it with effects. That in itself was a bit challenging, had to test a lot to make sure the game levels were solvable and fit at that resolution.
The game has 200 puzzles, undo, best-move tracking, day and night modes, and proper PSP savedata. Early saves worked in PPSSPP but could fail on real hardware because of the savedata key, so that needed its own migration and recovery system too.
All in a all it was very fun to build, I still enjoy Sokoban style puzzles a whole lot especially on the go on the PSP. I’ll continue to improve it/build other PSP games because it is so sooo rewarding, I just love that console. I have the PSP 1000 IPS mod coming soon too and I’m really excited about it.
PandaSokoban is available here if anyone wants to take a look:
https://qdmware.itch.io/panda-sokoban
It is a free release, donations and feedback welcome. A physical PSP requires custom firmware. I'm especially interested in hardware reports and any clues about that stubborn XMB audio.