Page 1 of 1

PSX Quake

Posted: April 20th, 2024, 5:40 pm
by svvv
Hello!

I decided to learn a bit about PSX development, since I have fond memories of the console.
Didn't want to get carried away by art, so for my first learning project I chose to port something to the system.

The PSX Quake makes use of the PSn00bSDK and some chunks of musl (since the SDK doesn't ship a full math library).
It is a bit of a mess right now, but both swquake and "gl"quake run. Both binaries depend on the dev. console's increased RAM size.

Porting the software-rendered Quake was pretty straightforward (after getting the minimal math library in place). Start and e1m1 levels load and can be played at glorious <1 FPS :D. Hardest part of it was writing the IO wrapper to transform the CD IO to something akin to the expected POSIX file IO.
► Show Spoiler
Hardware-rendered port is still ongoing, but the menu kind-of works, with some textures being misaligned a bit or flipped. First had to stub out all OpenGL functions. Then had to write a custom VRAM allocator, which is probably not the best implementation but it seems to work for now.
After I get past the menu then it'll become a bit trickier, since Quake doesn't seem to de-allocate it's textures and PSX VRAM isn't large enough to hold all of the textures.
► Show Spoiler
Currently it still runs on soft-float and probably thrashes the CD drive, since the data files are not altered in any way and the game expects a normal drive.
Not sure how far I'll get this port before life gets in the way, but maybe someone will find it interesting. I'll post source after I clean it up a bit.

P.S. Does anyone have any ideas why the program displays fine under Duckstation but just displays a black screen under PCSX-Redux?

Edit: Sorry about the delay, got caught in the "just a bit more to get it running nicer" phase. No major progress after the post, did refactor the softfp into a custom fixed point implementation, but it's broken and ugly and doesn't fully work yet.
Source at: https://github.com/svenvvv/psxquake