PS3 New member intro & Curiosity about porting (Garage: Bad Dream Adventure)

SimmyJapiens

Forum Noob
Hi everyone!
I've just joined the community. I'm a big fan of the PS3 scene and I've been fascinated lately by how the community keeps the console alive with homebrew and custom ports.
I'm currently starting to learn about C++ and the Cell architecture, and I had a specific question regarding the feasibility of porting a cult classic: Garage: Bad Dream Adventure.
I know the game was originally for PC (and recently remastered for modern systems), and I'm aware that without the original source code, porting is an uphill battle that usually requires intense reverse engineering or a complete rewrite.
I wanted to ask the experts here:
  1. In the context of the PS3's RSX and memory limitations (256MB/256MB), how difficult would it be to implement a point-and-click engine like the one used in Garage?
  2. Are there any existing open-source engines for PS3 that would be a good starting point for someone looking to learn how to build or port adventure games?
I'm here to learn and I'd love to hear your thoughts or any advice on where a beginner should start looking into PS3 homebrew development.
Thanks for having me!
 
Not an expert, but...

The game looks simple enough so that HW limitations shouldn't be a problem. As for engine, I found this thing, but I have no idea how it actually is. I think I would look into homebrew SDK first instead.

But before you even start, you might want to:
  • Rebuild the game for PC. If it doesn't work out on PC, the same on PS3 might be too much.
  • Make some simple homebrews to learn the tools. Make sprites dance around the screen and so on.
 
I don't there is much of a problem with ps3 memory limitation, metal gear solid 5 was released on the PS3. I use the open-source psl1ght toolchain.

I mostly program in C, but have tried to compile c++ libraries or applications in the past. I have some trouble compiling some c++ software as the toolchain is old and does not support standard c++ features like std::to_string. I also recall reading that the psl1ght toolchain does have a std::thread, so instead you might have to read PSL1GHT example programs or documentation to have multithreading, or find a pthread or other threading library floating in the internet. If you are just starting to learn c++, learn about how to link with c libraries and call c functions as many ps3 libraries are written in c. Some other porting issues might be that the ps3 is big-endian and some code might not be written portably ie. a 32bit RGBA value is interpreted as ABGR, or a 32 bit floating point number is corrupted. Some libraries memcpy 4 bytes from memory and assumes that the byte order is correct.

As with game engines I can only think of Fewnity's Xenity-Engine, but have never used it before. If you have experience with SDL2 I recommend ps3aqua's SDL2 port https://github.com/ps3aqua/SDL2_PSL1GHT , some of the other SDL2 implementations floating around the internet are missing some features, whereas ps3aqua's SDL2 port has audio, controller, 2D accelerated rendering, and according to the source code a SDL threads implementation . I ported raylib https://github.com/nbe1233/raylib-ps3 and a simple example program can be found here https://nbe1233.itch.io/ps3-chess . If you are familiar with opengl there is RSXGL which is an opengl implementation that I use to port raylib to; though I have had difficulties with as it feels like it has a bunch of non-standard behaviour; ie. some of my program would work when I compile it on linux but when I compiled it on the graphics are different because of some bug; like most recently I named my uniform ORMMap and it didn't work until I changed it to ormMap.
 
Back
Top