Do the Devs of PCSX2 have any other projects?
#31
(06-08-2011, 10:12 PM)cottonvibes Wrote: well for the most part emulator programming is about reading system specs and different documentation, and then implementing through software the behavior your read. it only gets hacky when things are documented wrong, or there's undocumented features, or things are just implemented wrong and more hacks are added to get it semi-working.

i think though its just about experience whether you feel more comfortable with emu programming or game programming.
in my case i have more experience with emu programming so i basically know how most stuff should be done. but i want to get a career in game programming and i feel its overwhelming how much different stuff there is to learn. and when i look at modern games i think its amazing how people are able to make games look and react the way they do. and i'm kindof scared a gamedev job might end up being so much work (due to the advances in technology and gamers demanding more realistic games) that i won't enjoy it.

If you mean creating a new engine,it's hardest thing in gaming industry.But if you seen some sdk's that have been realsed free to public,you'll see that you will do just fine. Some developers just rent enignes,but there is still programing to be done there.
Reply

Sponsored links

#32
(08-19-2011, 05:44 PM)dralor Wrote: Indeed that and being able to focus and work on a single problem for hours or days without driving yourself into a looney bin

+1
Reply
#33
To that game kind of thing. In my experience - so more from what I've heard- it is the normal way that game studios are mostly buying a license for an engine (like Unreal Engine, CryEngine 3 ...) and then either use it as it is with minor changes to the core code of the engine or optimising them because it is basically cheaper for them than buying a new one or even building a new engine.

A game company which builds is own state-of-the-art engine will have an whole department working on the code. A real team. For all that "game C++" so not engine changing or just little changes to upper layers of the engines your skills seem to be quite helpful.

If you are really taking the path into gaming industry it will be of course a lot of learning. One thing which should reverse-engineering really be helpful for because you have to dig your way trough tons of both -hardware and software- specifications in order to get things done.

Anyway... Just wanted to thank you guys for PCSX2! It is so cool - I really like it. It is in my opinion actually more funny than just playing on PS2 because sometimes you have to ask other people, change the settings and things like that in order to get the best performance. And if a game works it is always a very rewarding experience because YOU ACTUALLY NOW that it SHOULDN'T work.

Goldsteal
Reply
#34
(08-19-2011, 03:09 PM)xat Wrote: That's pretty inspiring cotton; so your path of learning started by just poking around pcsx2's source despite not knowing c/c++? I know it's off topic but could you elaborate a little on what you've done to get where you are now?

Well if you're curious, here's the bulk of my programming + pcsx2 history:

I started programming when i was ~11 years old with visual basic 6.0 and i also played around with RPG Maker. Obviously i was a noob back then, but i did manage to get some small stuff working.
Around the same time i also picked up emulation and played Pokemon Blue/Red games on no$gb. I thought emulators were so cool, and I wanted to someday be skilled enough to code an emulator.

I continued with VB6 and then took some middle school and high school programming courses where i learned QuickBasic. The instructor who taught the programming classes loved me and would joke around saying stuff like: "Oh man Nick just entered the room! The average IQ of the class just rose tremendously!".
My friends that took the programming classes with me at the time, always asked me to help them get their games to work (the programming class's assignments were QB games).

Anyways my high school didn't have much advanced programming stuff, so quickbasic was all we did. I continued VB6.0 on my own until i went to uni and started learning Java. After a Java course or two, I was familiar enough with Java to code some small java cellphone games like Snake.

A little after that I got into playing with pcsx2. At this point Gabest had made some great gsdx improvements turning it into the better plugin (compared to zeroGS). I got interested in the code and started playing around with pcsx2's frame-skipping and VU-skip logic (we don't have VU-skip anymore). I was able to understand most of the code since Java and C/C++ have the same C-style syntax. And I came up with a new frame/vu-skipping algorithm that worked much better than pcsx2's old version (which was overly complex).

I posted some patches on ngemu, and eventually got in contact with rama who was also hacking about pcsx2's sourcecode (i believe he came-up with the first ee-cycle hack at the time).

Eventually rama talked to Gigaherz and got him to open up a PCSX2-Playground SVN on googlecode, and rama invited me to the project.
At the time I started reviewing and modifying pcsx2's FPU Interpreter code and eventually moved to VU interpreters and at the same time was studying how the recompilers worked. By comparing the recompilers to the interpreters i slowly started to understand how recompilation worked, and I eventually moved on to doing some work on Super VU's recompiler as well as rewriting a lot of pcsx2's FPU recompiler code.

Around the same time drk||raziel (nullDC's author) opened up a dev chatroom on efnet for us pcsx2-playground members. The playground project started growing with us getting more members (arcum42, Jake Stine, and Krakatos as our beta-tester). Through many dev discussions with the team, I learned more and more. Especially from drk||raziel who was like an emulation encyclopedia.

Eventually I felt I had learned enough about Super VU and how recompilation worked to try my own recompiler microVU, although since I had never coded something so complex I wasn't sure if i could pull it off. Soon after starting to code microVU, pcsx2-playground merged with the official pcsx2 project and us playground devs became official pcsx2 devs.

After working on microVU's code for some time, it was finally at the stage where it should've been able to run some stuff, although it was failing at even the simplest demos. Pseudonym then took a look at the code and told me some branching code looked like didn't make sense. I took a look and I had mixed up some "pBlock" variable with "bBlock" (or something similar). After fixing that typo, microVU finally started running some ps2 demos and games!

After a lot of help from rama, pseudonym, and jake, we eventually got microVU to work pretty well; and now its the more compatible VU recompiler compared to Super VU.
After my experiences with microVU I decided to start writing a NES emulator, cottonNES, which I had always wanted to do (NES is my favorite console). From doing so I gained a better understanding of emulation, since I actually coded every component from scratch (aside from the APU at the time; Gigaherz gave me the sourcecode of his NES emulator and let me use his APU). I have since written my own APU to get an understanding of how audio emulation works; although cottonNES is still not ready for a real release.

Anyways throughout the years working on pcsx2, I have switched between pcsx2 and various other programming projects (random games and engines, cottonNES, cottonCx (a chip8/chip16 emulator), project euler, etc...). Each programming project teaches me new things.

From the knowledge I gained from writing the microVU recompiler, I coded the newVif Unpack recompiler (and then Jake helped optimize it). After that I coded pcsx2's game database (which Jake again later optimized). Then for a while I didn't do much pcsx2 work (aside from some microVU commits here-and-there). And then recently I did the GIF Unit rewrite and MTVU.

In the 3~4 years working on pcsx2 (started when i was 19, now i'm 23), my programming skills have dramatically improved. If someone wants to get good at programming my advice is to first learn the basics, then find some open source programming project that you like and try to contribute and join the team. Then by talking to skilled team members, and challenging yourself with new programming projects, you will dramatically improve your skills. IMO you can't really depend on school to teach you to be a good programmer; at-best they teach you the fundamentals of programming but to learn more you need to actively seek the knowledge yourself.

Anyways that's my rant for those that are interested Laugh
Check out my blog: Trashcan of Code
Reply
#35
cottonvibes Wrote:If someone wants to get good at programming my advice is to first learn the basics, then find some open source programming project that you like and try to contribute and join the team. Then by talking to skilled team members, and challenging yourself with new programming projects, you will dramatically improve your skills. IMO you can't really depend on school to teach you to be a good programmer; at-best they teach you the fundamentals of programming but to learn more you need to actively seek the knowledge yourself.

This couldn't be more right. I wish I had read this my freshman year of college, not now in my senior year.
Reply
#36
Yeah I'm stuck working IT cause I didn't learn that till senior year and had no internships or anything. Plus I was complete slacker so my grades weren't high enough to get me a second interview 95% of the time
Reply
#37
Now it's projects like PCSX2, Dolphin and a few others, and the people who have got involved in making it what it is today is the main reason why I am interested in the emulation scene as a whole. Smile

(08-20-2011, 02:29 AM)cottonvibes Wrote: Well if you're curious, here's the bulk of my programming + pcsx2 history:

I started programming when i was ~11 years old with visual basic 6.0 and i also played around with RPG Maker. Obviously i was a noob back then, but i did manage to get some small stuff working.
Around the same time i also picked up emulation and played Pokemon Blue/Red games on no$gb. I thought emulators were so cool, and I wanted to someday be skilled enough to code an emulator.

I continued with VB6 and then took some middle school and high school programming courses where i learned QuickBasic. The instructor who taught the programming classes loved me and would joke around saying stuff like: "Oh man Nick just entered the room! The average IQ of the class just rose tremendously!".
My friends that took the programming classes with me at the time, always asked me to help them get their games to work (the programming class's assignments were QB games).

Anyways my high school didn't have much advanced programming stuff, so quickbasic was all we did. I continued VB6.0 on my own until i went to uni and started learning Java. After a Java course or two, I was familiar enough with Java to code some small java cellphone games like Snake.

A little after that I got into playing with pcsx2. At this point Gabest had made some great gsdx improvements turning it into the better plugin (compared to zeroGS). I got interested in the code and started playing around with pcsx2's frame-skipping and VU-skip logic (we don't have VU-skip anymore). I was able to understand most of the code since Java and C/C++ have the same C-style syntax. And I came up with a new frame/vu-skipping algorithm that worked much better than pcsx2's old version (which was overly complex).

I posted some patches on ngemu, and eventually got in contact with rama who was also hacking about pcsx2's sourcecode (i believe he came-up with the first ee-cycle hack at the time).

Eventually rama talked to Gigaherz and got him to open up a PCSX2-Playground SVN on googlecode, and rama invited me to the project.
At the time I started reviewing and modifying pcsx2's FPU Interpreter code and eventually moved to VU interpreters and at the same time was studying how the recompilers worked. By comparing the recompilers to the interpreters i slowly started to understand how recompilation worked, and I eventually moved on to doing some work on Super VU's recompiler as well as rewriting a lot of pcsx2's FPU recompiler code.

Around the same time drk||raziel (nullDC's author) opened up a dev chatroom on efnet for us pcsx2-playground members. The playground project started growing with us getting more members (arcum42, Jake Stine, and Krakatos as our beta-tester). Through many dev discussions with the team, I learned more and more. Especially from drk||raziel who was like an emulation encyclopedia.

Eventually I felt I had learned enough about Super VU and how recompilation worked to try my own recompiler microVU, although since I had never coded something so complex I wasn't sure if i could pull it off. Soon after starting to code microVU, pcsx2-playground merged with the official pcsx2 project and us playground devs became official pcsx2 devs.

After working on microVU's code for some time, it was finally at the stage where it should've been able to run some stuff, although it was failing at even the simplest demos. Pseudonym then took a look at the code and told me some branching code looked like didn't make sense. I took a look and I had mixed up some "pBlock" variable with "bBlock" (or something similar). After fixing that typo, microVU finally started running some ps2 demos and games!

After a lot of help from rama, pseudonym, and jake, we eventually got microVU to work pretty well; and now its the more compatible VU recompiler compared to Super VU.
After my experiences with microVU I decided to start writing a NES emulator, cottonNES, which I had always wanted to do (NES is my favorite console). From doing so I gained a better understanding of emulation, since I actually coded every component from scratch (aside from the APU at the time; Gigaherz gave me the sourcecode of his NES emulator and let me use his APU). I have since written my own APU to get an understanding of how audio emulation works; although cottonNES is still not ready for a real release.

Anyways throughout the years working on pcsx2, I have switched between pcsx2 and various other programming projects (random games and engines, cottonNES, cottonCx (a chip8/chip16 emulator), project euler, etc...). Each programming project teaches me new things.

From the knowledge I gained from writing the microVU recompiler, I coded the newVif Unpack recompiler (and then Jake helped optimize it). After that I coded pcsx2's game database (which Jake again later optimized). Then for a while I didn't do much pcsx2 work (aside from some microVU commits here-and-there). And then recently I did the GIF Unit rewrite and MTVU.

In the 3~4 years working on pcsx2 (started when i was 19, now i'm 23), my programming skills have dramatically improved. If someone wants to get good at programming my advice is to first learn the basics, then find some open source programming project that you like and try to contribute and join the team. Then by talking to skilled team members, and challenging yourself with new programming projects, you will dramatically improve your skills. IMO you can't really depend on school to teach you to be a good programmer; at-best they teach you the fundamentals of programming but to learn more you need to actively seek the knowledge yourself.

Anyways that's my rant for those that are interested Smile
Yes sir, knowledge is power, especially when you learn things yourself. Smile
Reply
#38
Interesting read indeed.

I've always thought that self-taught is the way to go.
Ivy Bridge 3770K @ 3.9GHz - MSI TwinFrozr GTX680 4GB...
...Nerpyderp.
Reply




Users browsing this thread: 1 Guest(s)