RPCS3 Forums

Full Version: If you want to help the development
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2


hello my name is fahad.i am from pakistan.i want to be a part of this pROJECT.THERE for i am learning c++.tell me how can i help.


(11-27-2015, 12:25 PM)fahad_ahmed76 Wrote: [ -> ]hello my name is fahad.i am from pakistan.i want to be a part of this pROJECT.THERE for i am learning c++.tell me how can i help.

If you're just learning C++, it probably is a very bad idea to contribute such a huge project, like RPCS3, which requires a quite good knowledge of C++, experience and knowledge in many other areas, such as Git, preferably some idea of reverse engineering and knowledge of developing for the PS3, is also a very helpful, though often may not be needed, or can be learned during development.

Also a very essential part for contributing to the code, is a good knowledge of English, so if any problems arise, you can explain yourself, on why you did this and that, and much more. I would suggest you to improve your grammar and maybe even take English classes, as currently seen, your English grammar is quite bad.

I'd like to add, that while not necessary in all parts of the emulator, architectural and other knowledge about how stuff works, how things are rendered, and overall, how the insides of a computer or a game console works, is very helpful. Though it once again, can be to some extent, obtained during development.

I first would suggest you to, when you can program in C++ already well enough, to take a look at writing your first emulator for CHIP-8, and afterwards probably for Game Boy, Game Boy Color and Game Boy Advance. I for example, have currently taken a step back from the project for a while, to improve my knowledge through developing a CHIP-8 emulator (I left it a bit unfinished, after I didn't want to rewrite quite a bit of code, to make it support Super CHIP-8 and MegaChip) and currently a Game Boy emulator GBS (Game Boy Super).

I hope this writeup will help you on your interest of developing emulators and learning about the underlying system.


I don't think it's mandatory to have background in emulation or reverse engineering, I hadn't ; some parts are easier to simulate without knowing too much of the internal.
For instance RSX is "moreless" a traditionnal desktop gpu and thus if you have some experience with OpenGL 3 or DirectX 10 it's not that hard to understand what is happening on the command queue, and where the emulation is inaccurate.
For some others parts there are docs online. For instance Cell's PPU is using PowerIsa 2.06 which is documented by IBM. Sony also provides public doc for the SPU. Since the Cell was intended to be sold in consumer electronic device in the longterm they share the manuals.
While "easier" PPU and RSX emulation still requires some experience in C++ and I wouldn't recommend working on them to learn a language.

On the other hand they are some area that are not related to emulation but that requires some work, GUI is one of them. RPCS3 GUI is fine but there are some bugs (games removal doesn't work with master, the Graphic backend is not properly destroyed when a game is exiting...) and above all it lacks debug tools.
The right panel doesn't work as far as I know, it was likely designed as an instruction debugger (similar to gdb or MSVC dbg tool) but the functions are not implemented. Plus I suspect that to be really usefull it would need to support several threads and not just one.
If you have time and patience implementing an instruction debugger would be a very good entry point to rpcs3. It will allow you to see several part of the project (the ppu/spu decoders, the thread management system) and give a good understanding of what is done.
Another area is removing some dependencies on wxWidget. In Emucore project (which contains all emulation logic) some files uses data structure from wxWidget ; this ties rpcs3 to wxWidget and thus we can't propose rpcs3 variant for platform not covered by wxWidget. It's also not good practice to let a non GUI codebase depends on a GUI toolkit. It's probably a good entry point since this require to find replacements for dependencies and eventually implement some (easy) algorithm. It might be tedious though.

Another area of improvement is documentation. A lots of our functions are not documented. I'm personnaly not fond of documenting for the sake of it but some functions have non immediate side effects or their arguments are mysterious. It's not really about writing C++ but more about reading it though.

There are also non C++ related task, like moving PPU Recompiler tests in a separate program in Visual Studio and make sure it's run in cmake/appveyor.
Pages: 1 2