I want to contribute to development
#1
Thumbs Up 
Hi guys,
i'm a developer and i want to get involved.

But first i would need some training on specific emulation programming topics.

For example you have learned some secrets about the internals of the VU without any documentation, and i'd really like to know your methodologies to achieve such a result, so that i can help you with similar tasks.
Are there any tutorials about reverse-engineering applied to console internals?

Second question, suppose i want to make an HLE emulator, which requires basically to emulate just the console's API.
Is it true that you need the official SDK?
If i would have to take the HLE way, i would first get the console's SDK, and then i have to look for API calls in the game's code, which means i have to recognize the portions of compiled code that are implementing an API function.
So i need to do this for each API call: i use the SDK to build a PS2 game demo which uses just that API call, then i analyze the source code of the built demo to find the compiled code of that API function when compiled in real games.
Finally, the emulator recognizes a call to that function in the real game, and calls a DirectX function which does the same job so it does not even need to execute the original console's API nor understand its implementation.
Would it be a good way to go?

Thank you for your patience, please link any docs/tuts on these topics
Reply

Sponsored links

#2
I think Play! is an approach to emulate the ps2 in HLE (at least partially). pcsx2 currently follows the idea of LLE. Probably it will stay like this for the next (at least) months.

The question would be probably if you would like to start a new project or if you want to improve pcsx2. In the latter case I would suggest to use the problem-oriented path. Select a certain problem, learn to solve it, solve it, select next problem. By that you can use the skeleton of pcsx2 to improve your own skills in LLE without knowing everything about the ps2.

If you consider to start your own project and write everything from scratch you should probably start first with well documented emulation software and write a nes, gameboy or whatever emulator. After you achieved something reasonable you can switch to the more complex ps2/ps3/ps4/xbox/xb360/xbone/wii or whatever you like at that point.
Reply
#3
There are no tutorials. There are some development related blog posts which you can find at the web site (not easily, by going through the news pages), or at the developers forum where you'll also have to page through the subjects. Most of the blog posts are relatively old, but mostly because not much has changed in terms of high level modules - PCSX2 works well for the most part.

Other than this, there's the source code itself. Clone the repo, build it, start looking at places which interest you, and hope that whoever wrote these pieces of code added useful documentation/comments.

If you don't find the comments at the sources too useful, you can explore the code to understand better how it works, and then send PRs with better comments (and/or better code!).
Reply
#4
might be a good start if you're a Linux guy : http://forums.pcsx2.net/Thread-Areas-of-...developers
We're supposed to be working as a team, if we aren't helping and suggesting things to each other, we aren't working as a team.
- Refraction
Reply
#5
I already made a partial Sega Master System emulator which were able to execute the BIOS and then got stuck but i abandoned it since it was just for training Smile
I have noticed that you and other emulator authors don't want to make your methodologies known to the public maybe because the bigs of the industry may give you an hard time in the future, for example someone published this book about hacking the xbox http://bunniefoo.com/nostarch/HackingTheXbox_Free.pdf and after then Microsoft modified the xbox for making those tecniques less effective.

I can understand your secrecy, but that also makes it difficult for you to find people willing to help you, simply because they don't know how.
My suggestion is to write organized and comprehensive tutorials aimed at skilled developers but not master hackers, just like that Xbox hacking book, but you want to give access to the learning material only to "trusted" people and not release it to the public like that book.
I'll read those posts/news you mention, but they do not seem organized that's my point.

About PCSX2 in particular, i argue that the most has already been made so what i'm saying is not important, but what about an hypothetical new PS3 or PSvita emu project? It's very complex and you need many contributors for that, not just those 4-5 coders.

As a side note, i'll probably have the opportunity to get the WiiU SDK to make a game for it, so i was wondering if it may be easy to make a WiiU HLE emulator with that, using the method explained above Laugh
But there is still the problem: when i analyze a demo i have compiled for a console, how can i find out the entry point of the game's executable? I'm curious to know how you guys learned to find the entry point of PS2 games at the beginning of PS2 hacking. 
I'll read that "Hacking the XBOX" book which may explain the method for that , i guess.
Reply
#6
If you've never done emulator programming before, I would recommend trying out making some simple emulators to get in the swing of things, a good place for this is here: http://www.emutalk.net/forums/30-Emulator-Programming

I would also suggest googling things like "how to make an emulator" and such.

Another good project is the Chip16 system which is a bit more in depth than the Chip8 one above, you can find it here: http://ngemu.com/threads/chip16-official...ns.145620/

once you've had a go at a few of those you will be well on the way to working with emulators Smile I would recommend looking for some documentation on the system you want to emulate however so you understand how it works.
[Image: ref-sig-anim.gif]

Reply
#7
The OP has done a partial master system, so he might as well go for the NES, or try to find some PS2 documentation somewhere. If he wants to work ont he PS3, then the RPCS3 guys have links to CELL BE and RSX docs on their github.
[Image: gmYzFII.png]
[Image: dvedn3-5.png]
Reply
#8
Quote:I can understand your secrecy, but that also makes it difficult for you to find people willing to help you, simply because they don't know how.

There are no secrets, everything is in the source, if someone can't go through it and understand it, then he most likely can't improve it. But I agree, the PCSX2 source could benefit from better documentation, the question is who will do it?

Here's an idea, if you want to help the project, why not improve the documentation? Some work has been done, but there is much more to go, especially on the code itself:

http://wiki.pcsx2.net/index.php/PCSX2_Documentation

Whatever you plan to do once you finished the small emulators, I suggest at least going through this before going into ps2 stuff:

https://svkt.org/~simias/guide.pdf
Reply
#9
(10-08-2015, 06:37 PM)K.F Wrote: There are no secrets, everything is in the source, if someone can't go through it and understand it, then he most likely can't improve it. But I agree, the PCSX2 source could benefit from better documentation, the question is who will do it?

Here's an idea, if you want to help the project, why not improve the documentation? Some work has been done, but there is much more to go, especially on the code itself:

http://wiki.pcsx2.net/index.php/PCSX2_Documentation

Whatever you plan to do once you finished the small emulators, I suggest at least going through this before going into ps2 stuff:

https://svkt.org/~simias/guide.pdf

I'm thinking about that, good idea
And as i said above, better documentation is not the only thing to get new contributors, monetization is important too. Anonymous advertising may help you make a living with emu projects.

Thank you for the guide, it's about the first PSX emu right? And ... the Rust language is sick Smile reminds me the Scheme language
Reply
#10
We already have ads on the site and the forum, you know.
[Image: XTe1j6J.png]
Gaming Rig: Intel i7 6700k @ 4.8Ghz | GTX 1070 TI | 32GB RAM | 960GB(480GB+480GB RAID0) SSD | 2x 1TB HDD
Reply




Users browsing this thread: 1 Guest(s)