PCSX-Reloaded - Static Builds Release Thread

Discussion in 'PCSX Discussion' started by Cyrez, May 1, 2015.

  1. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    Hello, and welcome! For those of you that do not know, I'm not a developer but an enthusiast. I like to compile open source software when I'm bored. After playing around with Intel C++, I came to realize that it's optimizations can substantially increase the emulation speed of both a recompiler-type emulator and interpreter-type emulator on Windows when compared to any Visual C++ build. Reception of my first public release was quite positive, so I plan to keep more coming!

    As with all my releases, pcsxr.exe and DFsound.dll were compiled with Intel C++ and require a processor with SSE but the remaining plugins were compiled with Visual C++ and DO NOT require SSE. Also, the release schedule may appear to be a little irregular but in the case of PCSX-Reloaded some commits are platform-specific and have no effect on the Windows version. In addition, I will not recompile any of the projects unnecessarily so some of the files may remain unchanged for long periods of time. Enjoy, and please feel free to like and comment!

    Current Release (Win32)
    r97818 (Compiled 2015-09-30) VirusTotal: URL / File
    Updated to Intel C++ Compiler XE 15.0 Update 5

    Archived Releases (Win32)
    r97707 (Compiled 2015-08-22) VirusTotal: URL / File
    Updated to Visual Studio 2013 Update 5
    Switched to Windows 10 SDK
    r97003 (Compiled 2015-07-19) VirusTotal: URL / File
    r96882 (Compiled 2015-07-14) VirusTotal: URL / File
    Level of inlining reduced back to the default.
    r96687 (Compiled 2015-06-25) VirusTotal: URL / File
    r96548 (Compiled 2015-06-09) VirusTotal: URL / File
    r96440 (Compiled 2015-06-05) VirusTotal: URL / File
    r95504 (Compiled 2015-04-28) VirusTotal: URL / File
    Last edited: Sep 30, 2015
    reery7, apex, Nimation and 2 others like this.
  2. NGEmu.com Advertisement

  3. moffball71

    moffball71 New Member

    Messages:
    10
    Likes Received:
    0
    Thank you very much for this. This is a massive help.
    I've been wanting to try the latest builds of PCSX-Reloaded for ages but couldn't get my head around compiling it. Thanks to you now I can. :)
    Will you continue to compile the latest revisions as they come out? Please keep up this awesome work!
  4. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    Thanks, and that's the plan! I also plan to submit patches so I don't have to keep making the code changes by hand but I haven't gotten around to writing them...
  5. fischkopf

    fischkopf Member

    Messages:
    191
    Likes Received:
    13
    Thanks for the builds! I haven't made a direct comparison between you builds and the Emucr builds, but your version is certainly not slower.
  6. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    Just tried their's... Mine's faster. :cool:
  7. tapeq

    tapeq Member

    Messages:
    537
    Likes Received:
    74
    I tested Intel Compiler long time ago, and it... sucks. It also had code for detecting CPUs and for AMD CPUs it use default path, ie. not optimized. AMD sue Intel about this and win: http://www.agner.org/optimize/blog/read.php?i=49 and http://www.osnews.com/story/22683/I...quot_Cripple_AMD_quot_Function_from_Compiler_

    IMHO it will not be faster at all, PCSXR slow down in such games like MGS is not caused by bad optimizations, it caused by bad timings, so switching compiler will give you nothing.
    You can test my VS2013 build with some mods here: http://dev.tapek.shst.pl/PCSXR/PCSXR_r96687+mods.7z
    It's NOT slower, code size is much smaller (you exe is 1,4MB big, my is 950KB - yes it's statically linked to MSCRT, Intel CRT really sucks) so it can be even faster in some cases, and AMD CPUs will be happier.

    PS: PCSXR does -not- use any floating point math so SSE/SSE2 ect. is useless (search for "float" or "double" in project, you will find 5 or so .. two in HLE BIOS printf function ...)
    PS2: Microsoft compiler in VS2013 has support for SSE2 (set by default for x86 and x64 code) and AVX.
    Last edited: Jul 11, 2015
  8. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    I'm aware of this, but thank you. But, I did a lot more than simply switch compilers.

    I just tried the opening sequence of MGS with the FPS limiter off and the interpreter CPU on using both your build and mine... Mine stuttered a lot less than yours. You're welcome to try it for yourself. As for the code size, that has nothing to do with CRT at all. That's the Inline Function Expansion. If I set it to "/Ob1" it would be a lot smaller. I've run numerous tests by just switching from Visual C++ to Intel C++ and some things sped up slightly while others slowed down slightly. That's why not all the plugins are compiled with Intel C++. The GPU plugins in particular, it only really helps you with memory-heavy operations like if you're playing a game where you can look at yourself in a mirror or other similar stuff. In the case of the emulator, though, as it is mentioned in my post the optimization features available in Intel C++ can make a noticeable difference when used correctly. While I still have some testing to do because of the recent patches to the HLE BIOS, I believe the results speak for themselves.

    Thank you, but I'm aware of this as well. You have to understand, though, the main reason I started fiddling around with this was to make it more playable on an Intel Atom, where it helps to grab every single bit of speed as you possibly can. Besides, it's unlikely that someone would have a processor without SSE these days.
  9. tapeq

    tapeq Member

    Messages:
    537
    Likes Received:
    74
    What more ? Code changes or simple changed flags in Visual Studio properties ? If code changes you should release it, it's GPL program. My code is here: http://dev.tapek.shst.pl/PCSXR/PCSXR_r96687+mods_src.7z

    I do some benchmarks and FPS are exactly same for me. Lowest FPS I get during the intro is on submarine - around 45FPS (reported by GPU plugin, read below). My build also is set to "Any Suitable (/Ob2)" Inline Function Expansion.
    I see in debugger what you code is doing, and generated code is almost same code as VS2013 compiler generated, only bloated with Intel CRT... check 0xD3160 (file offset).
    Also notice that FPS are useless because they test GPU plugin performance and not emulator performance. Most noticeable comparison: run MGS, first stage, go to left under the pipe. On PCSXR, both builds I get stable 60FPS, but... on ePSXe game run fine, on PCSXR game sluggish, like motion slowdown. This is problem in instruction timing and/or PSX timers emulation.
  10. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    My code is available to anyone that asks but I didn't make any changes to the emulator itself... All I did was reverse the changes of a specific commit to the GPU plugins that was meant to make the odd/even bit hack obsolete but the code was deadlocking, at least on Windows. And I also forced a flag on in the OpenGL plugin code because in the Windows version it's off by default and there's no option to turn it on and without it some extensions are disabled. Having these extensions off results in a vertical line in MDEC's.

    I'm using both PGO and IPO to optimize my builds. I'm aware of how those features work and I have a rigorous profiling process. I simply don't have the time to profile every single game... I have a lot going on in my life right now. I profile both the recompiler CPU and the interpreter CPU in several games when possible. I'm also planning to profile the HLE BIOS when I have more time.



    I'm not claiming to be an expert in any of this stuff... I just do it as a hobby. As for the inlining, I tweaked some options with the inlining which resulted in the larger code size. If the bloat from those tweaks is hurting performance, I can revert them back to their defaults. As for maintaining a stable 60FPS, that's not exactly the goal of this build. The goal is to increase performance so the computer's CPU doesn't have to work as hard to maintain that stable 60FPS. That makes a difference when you're running on battery power. That's why I turned off the FPS limiter in the benchmarking. Not everyone is running an overclocked i7 or something... I started this so it would be more playable on my Intel Atom netbook.
  11. Cyrez

    Cyrez New Member

    Messages:
    16
    Likes Received:
    5
    *Gentle nudge* :)

    My apologies for the lack of updates... Life happened. I haven't forgotten you! I just don't have my laptop or my rig right now. I'll just say that you'd be in shock if I told you what I've been through. In the meantime, check out SolisX's releases. I'll be back when I can. :cool:
  12. renicito

    renicito New Member

    Messages:
    4
    Likes Received:
    0
    Hello friend "Cyrez" my name is Jack, and well I want to learn how to compile the emulator pcsxr, in visual studio, I am newbie, I do not know about programming but I have many desires to learn and well I want to start learning to compile this emulator and to later contribute Something according to what you learn, hopefully you can help me with it and teach me ... it would help me a video and I will follow the steps you take there ... thank you very much thanks, my friend.

Share This Page