Giter VIP home page Giter VIP logo

rpcs3's Introduction

RPCS3

Azure Build Status Cirrus CI - Base Branch Build Status RPCS3 Discord Server

The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.

You can find some basic information on our website. Game info is being populated on the Wiki. For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our forums and our Discord server.

Support Lead Developers Nekotekina and kd-11 on Patreon

Contributing

If you want to help the project but do not code, the best way to help out is to test games and make bug reports. See:

If you want to contribute as a developer, please take a look at the following pages:

You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.

Building

See BUILDING.md for more information about how to setup an environment to build RPCS3.

Running

Check our friendly quickstart guide to make sure your computer meets the minimum system requirements to run RPCS3.

Don't forget to have your graphics driver up to date and to install the Visual C++ Redistributable Packages for Visual Studio 2019 if you are a Windows user.

License

Most files are licensed under the terms of GNU GPL-2.0-only License; see LICENSE file for details. Some files may be licensed differently; check appropriate file headers for details.

rpcs3's People

Contributors

alexaltea avatar anileo avatar bigpet avatar brian218 avatar danilaml avatar dhrpcs3 avatar elad335 avatar elisha464 avatar flash-fire avatar gopalsr83 avatar hcorion avatar jarveson avatar jbeich avatar johnholmesii avatar kd-11 avatar lioncash avatar megamouse avatar msuih avatar nastys avatar nekotekina avatar o1l avatar oltolm avatar ripleytom avatar scribam avatar tambry avatar unknownbrackets avatar velocityra avatar vlj avatar whatcookie avatar zangetsu38 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpcs3's Issues

rpcs3 doesn't build with wxUSE_UNICODE

Some linux distros build wxWidgets with unicode which breaks linking of rpcs3.

Possible solutions:

  • Wrap all conversions from const char* to wxString with wxT() macro (=>too boring...)
  • Use better toolkit (=>too much work...)
  • Ask users to compile wxwidgets without unicode (=>user unfriendly)

Any better ideas?

OpenGL error rpcs3-x86.exe

rpcs3 opengl
I have this error since this version DHrpcs3@a9fdcd9, but only on the x86 build, but because the market still on x64 Windows 8 x64.
So no Elf does not work, please fix this.
thank you.

Bizzare CMake error

I started seeing this strange error when compiling the linux fork of rpcs3, So, I deleted it, And downloaded it again, And yet I STILL get it! This literally didn't happen a few minutes ago. I'm trying to figure this out right now, And learn about CMake at the same time.

http://tny.cz/42812a1a

/host_root/ problem

i have this issue, i have all the files for host root, but no matter how i place the files, or how i set the path in the file system manager, i still get the same error.
I was trying to run human.elf (among many others, breakoutx has the same problem) and i get this error:
sys_fs error: '/host_root/c:/usr/local/cell/sample_data/graphics//shaders.bin' not found!
(this is exactly how it displays) , maybe my files are incorrect, could someone send me theirs to try them?
(im using the files included in Inorirus SW emulator)

A few typos

I had some time to kill and decided to create this list (static analysis). There's more, but they're pointless right now. No pull request as I'm not sure how to fix a few of these.

ppuinterpreter.h:1659
for (uint b = 14; b >= 0; b--) Infinite loop (Unsigned always >= 0)

sc_vm.cpp:111:
if((current_ct->size - size - 0x100000) < 0) Always false (Unsigned always >= 0)

sc_vm.cpp:133:
if((current_ct->size - size - 0x100000) < 0) Same as above

sc_tty.cpp:14
if(ch < 0 Same as above

loader.h:200
u32 GetMaxAddr() { return min_addr; } 'min_addr' should be 'max_addr'

spuinterpreter.h:149
(16 - (CPU.GPR[rb]._u32[h] & 0xf))); 'h' could exceed array bounds (h = 7, _u32[h])

sputhread.cpp:64
- GPR[1]._u64[3]; '3' exceeds array bounds (_u64[3])

sc_spu_thread.cpp:107
!attr.IsGood() || !attr.IsGood()) Identical comparisons

cellpamf.cpp:483
if (pAudio->bps = 0x40) Assignment in if()

disasmframe.cpp:392
for(u64 addr=sh_addr; addr<sh_addr+sh_size; addr, vsize++) 'addr' is unchanged

scetool.cpp:476
memcpy((scetool::u8 *)ctxt->metai, metadata_info, sizeof(metadata_info)); sizeof(metadata_info) == sizeof(pointer)

display buffer not being displayed after flip

when issuing a flip command to the RSX thread, the display buffer that is being saved on local main memory is not being displayed, for example, png test is writing directly to the local main memory allocated display buffers (0, 1 for double buffering) and when its doing flip the buffer are not shown

Crash during cellPngDecDecodeData, unable to load memoryblock.

Backtrace is here: http://pastebin.com/THVDagnk

Easily duplicable (I think?) in my fork, branch nix-fix.

(Also, this happens just before the first frame is flip()'d to the screen, so I think after we fix this one, Linux might get intro screens in some cases. :)

Commenting:

    data += image.get()[i + 0];
    data += image.get()[i + 1];
    data += image.get()[i + 2];

Will temporarily bypass the crasher.

Saving and loading window position broken

I probably broke it when I changed the ini loading stuff to not use wxStrings. Shouldn't be to hard to debug but it's not a priority of mine, so if someone else wants to take it on in the meantime, feel free.

Add support for Mac OSX

I'm trying to compile rpcs3 on Mac OSX 10.9.2 (Mavericks) using Clang:

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

For the dependencies, I installed 'glew' (1.10.0) and 'wxwidgets' (3.0.0) via Homebrew:

brew install glew
brew install wxwidgets

OpenAL is already installed in the system.
X11 is installed from https://xquartz.macosforge.org but a symlink was needed (or add include path in another way):

sudo ln -s /opt/X11/include/X11 /usr/local/include/X11

I did some changes to Utilities/GNU.h:

  • don't include malloc.h on Mac OSX (already visible via stblib.h)
  • use posix_memalign() instead of missing memalign()
diff --git a/Utilities/GNU.h b/Utilities/GNU.h
index 9d0ba8a..f230cfe 100644
--- a/Utilities/GNU.h
+++ b/Utilities/GNU.h
@@ -3,7 +3,10 @@
 #if defined(__GNUG__)
 #include <cmath>
 #include <stdlib.h>
+
+#ifndef __APPLE__
 #include <malloc.h>
+#endif

 #define _fpclass(x) std::fpclassify(x)
 #define __forceinline __attribute__((always_inline))
@@ -16,8 +19,19 @@
 #define _CRT_ALIGN(x) __attribute__((aligned(x)))
 #define InterlockedCompareExchange(ptr,new_val,old_val)  __sync_val_compare_and_swap(ptr,old_val,new_val)
 #define InterlockedCompareExchange64(ptr,new_val,old_val)  __sync_val_compare_and_swap(ptr,old_val,new_val)
+
+#ifndef __APPLE__
 #define _aligned_malloc(size,alignment) memalign(alignment,size)
 #define _aligned_free  free
+#else
+void * _aligned_malloc(size_t size, size_t alignment) {
+  void *buffer;
+  posix_memalign(&buffer, alignment, size);
+  return buffer;
+}
+#define _aligned_free  free
+#endif
+
 #define DWORD int32_t
 #endif

Currently, the build fails with a missing isnan(). Seems to be a libc++ / Clang issue:

...
/Users/kaazoo/Documents/Entwicklung/rpcs3/rpcs3/Emu/Cell/PPUThread.cpp:188:9: error: no matching function for call to 'isnan'
        return wxIsNaN(d) ? 1 : 0;
               ^~~~~~~~~~
/usr/local/Cellar/wxmac/3.0.0/include/wx-3.0/wx/math.h:91:24: note: expanded from macro 'wxIsNaN'
    #define wxIsNaN(x) isnan(x)
                       ^~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cmath:423:25: note: candidate template ignored: disabled by 'enable_if' [with _A1 = PPCdouble]
typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type
...

DbgOutput horribly broken in some cases, on Linux

Needs further investigation. Appears that Memory.ReadString() is getting super weird values sometimes, but I don't think that function is the culprit, but rather the values it is being supplied by the elf calling it via sys_tty_write.

sys_ppu_thread_create bugs

1:
Syscall takes u64 arg instead of u32 arg

2:
new_thread.SetArg(0, arg); 'm_args' is zeroed out in new_thread.Run() -> CPUThread::Reset() -> PPCThread::DoReset() -> memset()

Emulator

Is emulator already working? If yes, please describe how to work with him.

7C0749EE illigal opcode

the STBUX (OpCode 0x1F, XO No. 247[0xF7]) instruction is unimplemented
ps3doom_v003 is stuck because of it

_InterlockedExchange not declared in the scope of MFC.h

Hiya all! I'm working on merging the upstream DHrpcs3 with the linux port, And I encountered this error upon compilation. I've searched with grep for another instance of _InterlockedExchange, And I only found one, In SPUThread.h. I can't find anywhere where this is actually declared!

Maybe I'm missing something, Or it was deleted? I've ran grep on this repository too, And I just found the same things. If anyone can help me, I'd really appreciate it! Thank you for reading.

Want to add flash dump

I have all firmware version (or BIOS) of PS3 in .bin files on my computer. I want to know if you guys will explain to me how I can use you emulator to add support for flash bin loading. I wish to use your RSX and Cell emulator to initiate the bootldr and LV0 system calls to emulate ps3 bootup. I will fork if someone explain to me how interface works between SPUs and RSX, and about pushes with updates for code regarding ps3 boot-sequence emulation. I also need to know to what extent your emulator emulates actual system calls and if it emulates all SPUs.

I have all details to emlate boot process, but want someone to provide interface specification to access RSX and need support for extra overhead processing needed.

Things you would have to merge:

1.Restructuring of LV0 and LV1 system calls, including hashes and decryption between versions.

2.SYSCON emulation overhead.

3.Internal ROM boot for initiation SPU.

4.metldr, appldr, rvkldr, .self file header detailing and cryptographic hacking.

Linux support?

Can you please write either GNU or cmake build system?

Switch to OpenAL Soft

The Creative OpenAL SDK has been outdated for a while, and their website is down now. OpenAL Soft, a more modern and open replacement, has superseded it.

Virtual methods in memory access and instruction decode

C++ is a great language and has many powerful features. However, some of them should not imho be misused within tight code.

PPSSPP does all instruction encoding in a fairly tight loop, and it can be fairly fast. It spends about 25% of its time in the interpreter decoding instructions, compared to about 50% in rpcs3.

Memory access of course is similarly bad, but has other solutions, like directly mapping into address space.

Is speed a goal in rpcs3 (I would think it'd have to be to ever make ps3 emulation bareable), or is using strong class design patterns a higher goal?

-[Unknown]

pkg Could not load keys

hello says it could give way this problem.
when installing the PKG fichero in some games it says the error.

scetool: Could not load keys
[!]: SELF: Could not decrypt file
[S]: Game: boot done.

Compiling under Linux (Xubuntu 13.10) fails

i was trying to compile rpcs3 today 14.04.14 and it failed with this message

[100%] Building CXX object CMakeFiles/rpcs3.dir/home/robert/Downloads/rpcs3/Utilities/Thread.cpp.o
Linking CXX executable /home/robert/Downloads/rpcs3/bin/rpcs3
/usr/bin/ld: /usr/local/lib/libavformat.a(avisynth.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [/home/robert/Downloads/rpcs3/bin/rpcs3] Fehler 1
make[1]: *** [CMakeFiles/rpcs3.dir/all] Fehler 2
make: *** [all] Fehler 2

i'am using xubuntu 13.10 but i have my own ffmpeg package currently my ffmepg version is

ffmpeg version N-62015-g9595f36
built on Apr 1 2014 06:46:46 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
libavutil 52. 70.100 / 52. 70.100
libavcodec 55. 55.107 / 55. 55.107
libavformat 55. 36.100 / 55. 36.100
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libavresample 1. 2. 0 / 1. 2. 0
libswscale 2. 5.102 / 2. 5.102
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100

TSX instructions

Could you implement TSX instructions in rpcs3,they increase multithreading performance and maybe they can help with synchronisation between threads.

Update Submodule WXproject on VS 2013

The whole project went under VS 2013, except the submodule wxWidgets, so this is what I have every time :/
wxwidgets
I will be really me, but I can not update the submodule.

rpcs3 minor linux problems

Last Night i see @Bigpets patches (thanks! ;) and begin to play a little around with them.
With his latest Patch 92fb77d i get small gcc related errors and one in wxWidgets:

  1. with constructor not allowed in anonymous aggregate (cellAdec.h)
  2. Typo (BEType.h)
  3. missing function parameter (GLGSRender.h)

I made a small Patch in my repo that get things to compile for me.
Aishou@71e37d6

I´m not sure about naming the struct´s and can´t test if this patch breaks something on Windows so... i do not commit it.

After this rpcs3 compile and runs but can´t load any elf or pkg.
https://gist.github.com/Aishou/9183888

I think the main Problems here are related to the different file systems on Linux and Windows like that Microsoft operating systems (e.g. DOS and Windows) use backslashes , UNIX-based operating systems (e.g. Linux) use slashes (/).

p.s: sorry for my crappy english

RPCS3 assumes current working directory is bin folder

I hit this with an earlier revision of my linux build instructions. If you tried running ./bin/rpcs3 from the project's root folder the program would try loading the installed package as if the root folder was the bin folder.

The workaround used was to make the users cd into the bin folder before executing. Thus cd bin && ./rpcs3

A related issue is we'll want the hdd files to be relocatable, or at least separate from the binary, for installation under linux or on windows with UAC enabled. This involves finding a method for the rpcs3 binary to locate a user's virtual ps3 hdd. I'm not sure how other emulators handle this.

Version

Should the version be bumped? It is obviously not much of an issue, but it would give other sites an incentive to release a more modern version. As it stands, many of them still give out the 6 month old version.

Correct Path to Game files

I can see in the log that some game files cannot be loaded, looking at the code it appears to be hardcoded to look in "/dev_hdd0/game/"+titleId Wheras the file is actually in /app_home/

Is there someone working on this? At the moment I can copy the game files to "\rpcs3\bin\dev_hdd0\game\BLUS31312" as a workaround but thats not perfect.

If there isn't anyone on this I would propose adding a setting "Play from HD" or "Play from BD" and use that to set the path. Unless someone could propose a better solution.

Multiplayer service collaboration (Aixen)

Someone mentioned over in haneefmubarak/Aixen#10 that it would be nice for Aixen to support RPCS3.

Aixen aims to provide a networking service similar to LIVE/Steam, for Xenia and also new games developed in the future. Integration into future games and projects like Xenia will be done via the use of a C library.

However, to support projects such as Xenia, and in this case, RPCS3, certain changes must be made on the Aixen side of things, since both emulate specific functionalities and are also able to play a variety of games.

So I wanted to ask if you guys would be interested in working with us to have Aixen support RPCS3. All that you would need to do is provide someone who is somewhat familiar with PSN who is available to do related work on Aixen and give a username for whomever is most familiar with this project; the former would actively work on Aixen while the latter would only need to answer the occasional question about RPCS3.

So would you guys be interested in working with us so RPCS3 could have something similar to PSN, just like Xenia will have something similar to XBL?

ARM interpreter - LSL

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/BABEHCFA.html

Is that an accurate description of the intended function of LSL? (If not, ignore this) If so, the current implementation seems faulty. It correctly sets neither the C flag nor the result. Also, the fact that it and other related instructions use the full shift value rather than just the least-significant byte may or may not cause problems in certain situations, depending on implementation details I haven't yet managed to figure out.

rpcs3 stuck in an infinite loop

when I run the psl1ght samples I notices the rpcs3 is entering an infinite loop
I looked into it a little bit and found out that its the memalign function that causes this
for exaple, in pngTest, init_screen function on the first line
running the asm, init_screen function starts at address 00010570

pad mapping

somewhere with the changes in the config, there is no option to change the layout on the keyboard,

Any donation?

Guys, did you have some bitcoin address or paypal?
Thanks.

Memory address space

Is the memory address space 32 or 64 bit?

The current memory system assumes it's 64 bit. IsMyAddress, GetStartAddr, SetRange, etc. are all 64 bit values.

However, all valid addresses are within 32 bits afaiu.

So, my question is - what is sizeof(int *) on a ps3? Can sys_vm_memory_map() be used to map into the normally unsused space? It seems like not, if this is correct: typedef u32 sys_addr_t;.

If I load a register with X | 0x1234567800000000ULL and read from that address, should it access X or segfault?

-[Unknown]

OpenGL Initialization error on Intel HD + Nvidia GPUs

Error:

[E : RSXThread]: OpenGL: initialization of glProgramUniform1i failed.
[E : RSXThread]: OpenGL: initialization of glProgramUniform1f failed.
[E : RSXThread]: OpenGL: initialization of glProgramUniform4f failed.
[E : RSXThread]: OpenGL: initialization of glDepthBoundsEXT failed.

What version of the product are you using? On what operating system?
rpcs3-git-20131117 on Windows 8 64 bit and with two GPUs (an integrated Intel HD Graphics 4000 and a Nvidia GT 635M with updated drivers).

Configuration:
GS: Render: OpenGL
IO: Pad handler: Windows
IO: Keyboard handler: Windows
IO: Mouse handler: Windows

EDIT: Issue edited by AlexAltea on 24.11.2013.

unpkg ?

hello last test rpcs3-20131129-x86 install pkg game PSN Rain noa gave extracts he says.
unpkg: fiile size mismatch and Could not delete the file decoded dec
Thank you.
s).

Add annotated version tag

I can do it but I'd like to know with which version.

Current versioning says it's v0.0.0.4. I would suggest the one to be v0.0.5 so that we can follow the common versioning of MAJOR.MINOR.PATCH-revision.

  • major meaning a set of mature features that significantly alter user experience
  • minor being the addition of one or more new features to a mature degree
  • patch being feature fixes and minor new features

I'd be happy to just set it to v0.0.0.5 if that's what you want, I'm just not sure each 0 actually means something.

Oh and in case anyone wonders why, it's so that git describe actually prints something sensible.

cellGcmFlush not present

I cant find the cellGcmFlush function anywhere in the code, and I think it has been replaced by cellGcmSetFlipCommand for some reason, is it true?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.