├── rpcs3 ├── stdafx.cpp ├── Emu │ ├── Cell │ │ ├── MFC.cpp │ │ ├── PPUInterpreter.h │ │ ├── PPCDecoder.cpp │ │ ├── PPUDecoder.h │ │ ├── SPUDecoder.h │ │ ├── PPCThread.h │ │ ├── PPCThreadManager.h │ │ ├── PPCThread.cpp │ │ ├── PPCDecoder.h │ │ ├── RawSPUThread.h │ │ ├── SPUThread.cpp │ │ └── PPCThreadManager.cpp │ ├── SysCalls │ │ ├── lv2 │ │ │ ├── SC_Time.h │ │ │ ├── SC_Spinlock.h │ │ │ ├── SC_Lwcond.h │ │ │ ├── SC_Timer.h │ │ │ ├── SC_Condition.h │ │ │ ├── SC_sys_spu.cpp │ │ │ ├── SC_GCM.cpp │ │ │ ├── SC_TTY.cpp │ │ │ ├── SC_Heap.cpp │ │ │ ├── SC_Mutex.h │ │ │ ├── SC_Trace.cpp │ │ │ ├── SC_Event_flag.h │ │ │ ├── SC_Spinlock.cpp │ │ │ ├── SC_SPU_Thread.h │ │ │ ├── SC_Lwmutex.h │ │ │ ├── SC_Memory.h │ │ │ ├── SC_RSX.cpp │ │ │ └── SC_Time.cpp │ │ ├── Modules │ │ │ ├── sys_net.h │ │ │ ├── cellRtc.h │ │ │ ├── cellOvis.cpp │ │ │ ├── cellBgdl.cpp │ │ │ ├── cellAtrac.h │ │ │ ├── libmixer.h │ │ │ ├── cellUserInfo.h │ │ │ ├── cellSysutilAp.cpp │ │ │ ├── cellKey2char.cpp │ │ │ ├── cellScreenshot.cpp │ │ │ ├── cellPhotoDecode.cpp │ │ │ ├── cellPhotoImport.cpp │ │ │ ├── sys_io.cpp │ │ │ ├── sceNp.cpp │ │ │ ├── cellFont.h │ │ │ ├── cellMusicExport.cpp │ │ │ ├── cellFontFT.cpp │ │ │ ├── cellPhotoExport.cpp │ │ │ ├── cellPngEnc.cpp │ │ │ ├── cellCelpEnc.cpp │ │ │ ├── cellCelp8Enc.cpp │ │ │ ├── cellResc.h │ │ │ ├── sceNp.h │ │ │ ├── cellJpgEnc.cpp │ │ │ ├── cellUserInfo.cpp │ │ │ └── cellSubdisplay.cpp │ │ └── Static.cpp │ ├── GS │ │ ├── RSXVertexProgram.h │ │ ├── RSXFragmentProgram.h │ │ ├── GL │ │ │ ├── GLProgram.h │ │ │ ├── GLProgramBuffer.h │ │ │ ├── OpenGL.h │ │ │ ├── OpenGL.cpp │ │ │ └── GLBuffers.h │ │ ├── GSManager.cpp │ │ ├── GSManager.h │ │ ├── RSXTexture.h │ │ ├── Null │ │ │ └── NullGSRender.h │ │ ├── GSRender.h │ │ └── GSRender.cpp │ ├── FS │ │ ├── vfsDeviceLocalFile.h │ │ ├── vfsDeviceLocalFile.cpp │ │ ├── vfsStreamMemory.h │ │ ├── vfsLocalDir.h │ │ ├── vfsStream.h │ │ ├── vfsLocalFile.h │ │ ├── vfsFileBase.cpp │ │ ├── vfsDir.h │ │ ├── vfsFile.h │ │ ├── vfsFileBase.h │ │ ├── vfsDirBase.cpp │ │ ├── vfsStreamMemory.cpp │ │ ├── vfsStream.cpp │ │ ├── vfsLocalDir.cpp │ │ ├── vfsDirBase.h │ │ ├── vfsDir.cpp │ │ ├── vfsDevice.h │ │ ├── VFS.h │ │ └── vfsFile.cpp │ ├── HDD │ │ └── HDD.cpp │ ├── Io │ │ ├── Null │ │ │ ├── NullPadHandler.h │ │ │ ├── NullMouseHandler.h │ │ │ └── NullKeyboardHandler.h │ │ ├── Pad.h │ │ ├── Mouse.h │ │ ├── Pad.cpp │ │ ├── Mouse.cpp │ │ ├── Keyboard.h │ │ └── Keyboard.cpp │ ├── CPU │ │ ├── CPUThreadManager.h │ │ ├── CPUInstrTable.h │ │ └── CPUDisAsm.h │ ├── Audio │ │ ├── AL │ │ │ └── OpenALThread.h │ │ ├── AudioManager.cpp │ │ ├── AudioManager.h │ │ ├── AudioDumper.cpp │ │ └── AudioDumper.h │ ├── GameInfo.h │ ├── ARMv7 │ │ ├── ARMv7Opcodes.h │ │ ├── ARMv7Thread.h │ │ ├── ARMv7Thread.cpp │ │ └── ARMv7DisAsm.h │ ├── Event.cpp │ ├── DbgConsole.h │ └── DbgConsole.cpp ├── rpcs3.rc ├── rpcs3qt │ ├── .qmake.conf │ ├── qml.qrc │ ├── rpcs3qt.pro │ ├── main.cpp │ ├── glviewer.h │ ├── qml │ │ └── main.qml │ └── glviewer.cpp ├── Crypto │ ├── utils.h │ ├── utils.cpp │ └── unpkg.h ├── git-version.h ├── Loader │ ├── PKG.h │ ├── ELF.cpp │ ├── TRP.h │ ├── ELF.h │ ├── SELF.cpp │ ├── PSF.h │ ├── PKG.cpp │ ├── TRP.cpp │ ├── TROPUSR.h │ └── SELF.h ├── Gui │ ├── Debugger.h │ ├── TextInputDialog.h │ ├── DisAsmFrame.h │ ├── ConLog.h │ ├── VFSManager.h │ ├── TextInputDialog.cpp │ ├── MemoryViewer.h │ ├── CompilerELF.h │ ├── MainFrame.h │ ├── InterpreterDisAsm.h │ ├── FrameBase.h │ ├── RSXDebugger.h │ ├── VHDDManager.h │ └── GameViewer.cpp ├── AppConnector.h ├── AppConnector.cpp ├── rpcs3.vcxproj.user ├── rpcs3.cpp ├── rpcs3.h └── CMakeLists.txt ├── bin ├── dev_hdd0 │ ├── home │ │ └── 00000001 │ │ │ └── localusername │ └── game │ │ └── TEST12345 │ │ └── USRDIR │ │ ├── pspgame.elf │ │ ├── rpcsp.elf │ │ ├── pad_test.elf │ │ ├── dump_stack.elf │ │ ├── gs_gcm_cube.elf │ │ ├── ppu_thread.elf │ │ ├── gs_gcm_tetris.elf │ │ ├── gs_gcm_hello_world.elf │ │ ├── gs_gcm_basic_triangle.elf │ │ └── gs_gcm_handle_system_cmd.elf ├── make_fself.cmd ├── dev_usb000 │ └── .gitignore └── dev_hdd1 │ ├── .gitignore │ └── cache │ └── README.txt ├── OpenAL ├── Win32 │ ├── EFX-Util.lib │ └── OpenAL32.lib └── Win64 │ ├── EFX-Util.lib │ └── OpenAL32.lib ├── .gitmodules ├── Utilities ├── SMutex.cpp ├── GNU.h ├── Timer.h ├── SQueue.h └── MTProgressDialog.h ├── README.md └── .gitignore /rpcs3/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" -------------------------------------------------------------------------------- /bin/dev_hdd0/home/00000001/localusername: -------------------------------------------------------------------------------- 1 | User -------------------------------------------------------------------------------- /bin/make_fself.cmd: -------------------------------------------------------------------------------- 1 | make_fself compiled.elf EBOOT.BIN -------------------------------------------------------------------------------- /rpcs3/Emu/Cell/MFC.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "MFC.h" 3 | -------------------------------------------------------------------------------- /rpcs3/rpcs3.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/rpcs3/rpcs3.rc -------------------------------------------------------------------------------- /OpenAL/Win32/EFX-Util.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/OpenAL/Win32/EFX-Util.lib -------------------------------------------------------------------------------- /OpenAL/Win32/OpenAL32.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/OpenAL/Win32/OpenAL32.lib -------------------------------------------------------------------------------- /OpenAL/Win64/EFX-Util.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/OpenAL/Win64/EFX-Util.lib -------------------------------------------------------------------------------- /OpenAL/Win64/OpenAL32.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/OpenAL/Win64/OpenAL32.lib -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/lv2/SC_Time.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | u64 get_time(); 4 | u64 get_system_time(); 5 | -------------------------------------------------------------------------------- /rpcs3/rpcs3qt/.qmake.conf: -------------------------------------------------------------------------------- 1 | # P is project dir, B is build dir 2 | P = $$PWD/.. 3 | B = $$shadowed($$PWD) -------------------------------------------------------------------------------- /bin/dev_usb000/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/lv2/SC_Spinlock.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct spinlock 4 | { 5 | SMutexBE mutex; 6 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/Cell/PPUInterpreter.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/rpcs3/Emu/Cell/PPUInterpreter.h -------------------------------------------------------------------------------- /rpcs3/Emu/GS/RSXVertexProgram.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct RSXVertexProgram 4 | { 5 | Array data; 6 | }; -------------------------------------------------------------------------------- /rpcs3/rpcs3qt/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | qml/main.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /bin/dev_hdd1/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore 5 | !cache 6 | !cache/README.txt -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/pspgame.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/pspgame.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/rpcsp.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/rpcsp.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/pad_test.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/pad_test.elf -------------------------------------------------------------------------------- /bin/dev_hdd1/cache/README.txt: -------------------------------------------------------------------------------- 1 | every Folder in this directory gets cleared when cellSysCacheClear() is called, so don't store important data here -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/dump_stack.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/dump_stack.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_cube.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_cube.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/ppu_thread.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/ppu_thread.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_tetris.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_tetris.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_hello_world.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_hello_world.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_basic_triangle.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_basic_triangle.elf -------------------------------------------------------------------------------- /bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_handle_system_cmd.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rthauby/rpcs3/master/bin/dev_hdd0/game/TEST12345/USRDIR/gs_gcm_handle_system_cmd.elf -------------------------------------------------------------------------------- /rpcs3/Emu/Cell/PPCDecoder.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "PPCDecoder.h" 3 | 4 | u8 PPCDecoder::DecodeMemory(const u64 address) 5 | { 6 | Decode(Memory.Read32(address)); 7 | 8 | return 4; 9 | } -------------------------------------------------------------------------------- /rpcs3/Crypto/utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | u16 swap16(u16 i); 4 | u32 swap32(u32 i); 5 | u64 swap64(u64 i); 6 | u64 hex_to_u64(const char* hex_str); 7 | void hex_to_bytes(unsigned char *data, const char *hex_str); -------------------------------------------------------------------------------- /rpcs3/git-version.h: -------------------------------------------------------------------------------- 1 | // This is a generated file. 2 | 3 | #define RPCS3_GIT_VERSION "unknown" 4 | 5 | // If you don't want this file to update/recompile, change to 1. 6 | #define RPCS3_GIT_VERSION_NO_UPDATE 1 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "wxWidgets"] 2 | path = wxWidgets 3 | url = https://github.com/DHrpcs3/wxWidgets.git 4 | ignore = dirty 5 | [submodule "rpcs3-ffmpeg"] 6 | path = ffmpeg 7 | url = https://github.com/hrydgard/ppsspp-ffmpeg 8 | -------------------------------------------------------------------------------- /rpcs3/Loader/PKG.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Loader.h" 3 | 4 | class PKGLoader 5 | { 6 | wxFile& pkg_f; 7 | 8 | public: 9 | PKGLoader(wxFile& f); 10 | virtual bool Install(std::string dest); 11 | virtual bool Close(); 12 | }; 13 | -------------------------------------------------------------------------------- /rpcs3/Emu/FS/vfsDeviceLocalFile.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "vfsDevice.h" 3 | 4 | class vfsDeviceLocalFile : public vfsDevice 5 | { 6 | public: 7 | virtual vfsFileBase* GetNewFileStream() override; 8 | virtual vfsDirBase* GetNewDirStream() override; 9 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/GS/RSXFragmentProgram.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct RSXShaderProgram 4 | { 5 | u32 size; 6 | u32 addr; 7 | u32 offset; 8 | u32 ctrl; 9 | 10 | RSXShaderProgram() 11 | : size(0) 12 | , addr(0) 13 | , offset(0) 14 | , ctrl(0) 15 | { 16 | } 17 | }; -------------------------------------------------------------------------------- /rpcs3/Gui/Debugger.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | class DebuggerPanel : public wxPanel 6 | { 7 | wxAuiManager m_aui_mgr; 8 | 9 | public: 10 | DebuggerPanel(wxWindow* parent); 11 | ~DebuggerPanel(); 12 | 13 | void UpdateUI(); 14 | }; 15 | -------------------------------------------------------------------------------- /rpcs3/Gui/TextInputDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class TextInputDialog : public wxDialog 4 | { 5 | wxTextCtrl* m_tctrl_text; 6 | wxString m_result; 7 | 8 | public: 9 | TextInputDialog(wxWindow* parent, const wxString& defvalue = wxEmptyString); 10 | void OnOk(wxCommandEvent& event); 11 | 12 | wxString& GetResult(); 13 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/HDD/HDD.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "HDD.h" 3 | 4 | vfsDeviceHDD::vfsDeviceHDD(const std::string& hdd_path) : m_hdd_path(hdd_path) 5 | { 6 | } 7 | 8 | vfsFileBase* vfsDeviceHDD::GetNewFileStream() 9 | { 10 | return new vfsHDD(this, m_hdd_path); 11 | } 12 | 13 | vfsDirBase* vfsDeviceHDD::GetNewDirStream() 14 | { 15 | return nullptr; 16 | } 17 | -------------------------------------------------------------------------------- /rpcs3/Emu/FS/vfsDeviceLocalFile.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "vfsDeviceLocalFile.h" 3 | #include "vfsLocalFile.h" 4 | #include "vfsLocalDir.h" 5 | 6 | vfsFileBase* vfsDeviceLocalFile::GetNewFileStream() 7 | { 8 | return new vfsLocalFile(this); 9 | } 10 | 11 | vfsDirBase* vfsDeviceLocalFile::GetNewDirStream() 12 | { 13 | return new vfsLocalDir(this); 14 | } 15 | -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/Modules/sys_net.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sys_net_initialize_parameter 4 | { 5 | be_t memory_addr; 6 | be_t memory_size; 7 | be_t flags; 8 | }; 9 | 10 | // The names of the following structs are modified to avoid overloading problems 11 | struct sys_net_sockaddr 12 | { 13 | u8 sa_len; 14 | u8 sa_family; // sa_family_t 15 | u8 sa_data[14]; 16 | }; 17 | -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/lv2/SC_Lwcond.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct sys_lwcond_attribute_t 4 | { 5 | union 6 | { 7 | char name[8]; 8 | u64 name_u64; 9 | }; 10 | }; 11 | 12 | struct sys_lwcond_t 13 | { 14 | be_t lwmutex; 15 | be_t lwcond_queue; 16 | }; 17 | 18 | struct Lwcond 19 | { 20 | SMutex signal; 21 | SleepQueue m_queue; 22 | 23 | Lwcond(u64 name) 24 | : m_queue(name) 25 | { 26 | } 27 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/lv2/SC_Timer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | enum 4 | { 5 | SYS_TIMER_STATE_STOP = 0x00U, 6 | SYS_TIMER_STATE_RUN = 0x01U, 7 | }; 8 | 9 | struct sys_timer_information_t 10 | { 11 | s64 next_expiration_time; //system_time_t 12 | u64 period; //usecond_t 13 | u32 timer_state; 14 | u32 pad; 15 | }; 16 | 17 | struct timer 18 | { 19 | wxTimer tmr; 20 | sys_timer_information_t timer_information_t; 21 | }; 22 | 23 | #pragma pack() -------------------------------------------------------------------------------- /rpcs3/rpcs3qt/rpcs3qt.pro: -------------------------------------------------------------------------------- 1 | # Qt5.1+ project for rpcs3. Works on Windows, Linux and Mac OSX 2 | QT += gui opengl quick 3 | CONFIG += c++11 4 | 5 | # Qt UI 6 | SOURCES += $$P/rpcs3qt/*.cpp 7 | HEADERS += $$P/rpcs3qt/*.h 8 | 9 | # RPCS3 10 | HEADERS += $$P/stdafx.h 11 | INCLUDEPATH += $$P $$P/.. 12 | DEFINES += QT_UI 13 | 14 | # Installation path 15 | # target.path = 16 | 17 | OTHER_FILES += $$P/rpcs3qt/qml/* 18 | 19 | RESOURCES += $$P/rpcs3qt/qml.qrc 20 | -------------------------------------------------------------------------------- /rpcs3/Emu/FS/vfsStreamMemory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "vfsStream.h" 3 | 4 | struct vfsStreamMemory : public vfsStream 5 | { 6 | u64 m_addr; 7 | u64 m_size; 8 | 9 | public: 10 | vfsStreamMemory(); 11 | vfsStreamMemory(u64 addr, u64 size = 0); 12 | 13 | void Open(u64 addr, u64 size = 0); 14 | 15 | virtual u64 GetSize() override; 16 | 17 | virtual u64 Write(const void* src, u64 size) override; 18 | virtual u64 Read(void* dst, u64 size) override; 19 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/Cell/PPUDecoder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Emu/Cell/PPUOpcodes.h" 4 | #include "Emu/Cell/PPCDecoder.h" 5 | #include "PPUInstrTable.h" 6 | 7 | class PPUDecoder : public PPCDecoder 8 | { 9 | PPUOpcodes* m_op; 10 | 11 | public: 12 | PPUDecoder(PPUOpcodes& op) : m_op(&op) 13 | { 14 | } 15 | 16 | ~PPUDecoder() 17 | { 18 | delete m_op; 19 | } 20 | 21 | virtual void Decode(const u32 code) 22 | { 23 | (*PPU_instr::main_list)(m_op, code); 24 | } 25 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/Cell/SPUDecoder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Emu/Cell/SPUOpcodes.h" 4 | #include "Emu/Cell/PPCDecoder.h" 5 | #include "Emu/Cell/SPUInstrTable.h" 6 | 7 | class SPUDecoder : public PPCDecoder 8 | { 9 | SPUOpcodes* m_op; 10 | 11 | public: 12 | SPUDecoder(SPUOpcodes& op) : m_op(&op) 13 | { 14 | } 15 | 16 | ~SPUDecoder() 17 | { 18 | delete m_op; 19 | } 20 | 21 | virtual void Decode(const u32 code) 22 | { 23 | (*SPU_instr::rrr_list)(m_op, code); 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /rpcs3/Emu/Io/Null/NullPadHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Emu/Io/PadHandler.h" 4 | 5 | class NullPadHandler : public PadHandlerBase 6 | { 7 | public: 8 | NullPadHandler() 9 | { 10 | } 11 | 12 | virtual void Init(const u32 max_connect) 13 | { 14 | memset(&m_info, 0, sizeof(PadInfo)); 15 | m_info.max_connect = max_connect; 16 | m_pads.Clear(); 17 | } 18 | 19 | virtual void Close() 20 | { 21 | memset(&m_info, 0, sizeof(PadInfo)); 22 | m_pads.Clear(); 23 | } 24 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/SysCalls/lv2/SC_Condition.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "SC_Mutex.h" 3 | 4 | struct sys_cond_attribute 5 | { 6 | be_t pshared; 7 | be_t ipc_key; 8 | be_t flags; 9 | union 10 | { 11 | char name[8]; 12 | u64 name_u64; 13 | }; 14 | }; 15 | 16 | struct Cond 17 | { 18 | Mutex* mutex; // associated with mutex 19 | SMutex signal; 20 | SleepQueue m_queue; 21 | 22 | Cond(Mutex* mutex, u64 name) 23 | : mutex(mutex) 24 | , m_queue(name) 25 | { 26 | } 27 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/FS/vfsLocalDir.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "vfsDirBase.h" 3 | 4 | class vfsLocalDir : public vfsDirBase 5 | { 6 | private: 7 | u32 m_pos; 8 | 9 | public: 10 | vfsLocalDir(vfsDevice* device); 11 | virtual ~vfsLocalDir(); 12 | 13 | virtual bool Open(const wxString& path) override; 14 | 15 | virtual bool Create(const wxString& path) override; 16 | virtual bool Rename(const wxString& from, const wxString& to) override; 17 | virtual bool Remove(const wxString& path) override; 18 | }; -------------------------------------------------------------------------------- /rpcs3/rpcs3qt/main.cpp: -------------------------------------------------------------------------------- 1 | // Qt5.1+ frontend implementation for rpcs3. Known to work on Windows, Linux, Mac 2 | // by Sacha Refshauge 3 | #include 4 | #include 5 | #include "glviewer.h" 6 | 7 | int main(int argc, char *argv[]) 8 | { 9 | QGuiApplication app(argc, argv); 10 | 11 | qmlRegisterType("GLViewer", 1, 0, "GLViewer"); 12 | QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml")); 13 | 14 | return app.exec(); 15 | Q_UNUSED(engine) 16 | } 17 | -------------------------------------------------------------------------------- /rpcs3/Emu/Io/Null/NullMouseHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Emu/Io/MouseHandler.h" 4 | 5 | class NullMouseHandler : public MouseHandlerBase 6 | { 7 | public: 8 | NullMouseHandler() 9 | { 10 | } 11 | 12 | virtual void Init(const u32 max_connect) 13 | { 14 | memset(&m_info, 0, sizeof(MouseInfo)); 15 | m_info.max_connect = max_connect; 16 | m_mice.Clear(); 17 | } 18 | 19 | virtual void Close() 20 | { 21 | memset(&m_info, 0, sizeof(MouseInfo)); 22 | m_mice.Clear(); 23 | } 24 | }; -------------------------------------------------------------------------------- /rpcs3/Emu/GS/GL/GLProgram.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "GLVertexProgram.h" 3 | #include "GLFragmentProgram.h" 4 | 5 | struct GLProgram 6 | { 7 | private: 8 | struct Location 9 | { 10 | int loc; 11 | wxString name; 12 | }; 13 | 14 | Array m_locations; 15 | 16 | public: 17 | u32 id; 18 | 19 | GLProgram(); 20 | 21 | int GetLocation(const wxString& name); 22 | bool IsCreated() const; 23 | void Create(const u32 vp, const u32 fp); 24 | void Use(); 25 | void UnUse(); 26 | void SetTex(u32 index); 27 | void Delete(); 28 | }; -------------------------------------------------------------------------------- /rpcs3/rpcs3qt/glviewer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | class GLViewer : public QQuickItem 7 | { 8 | Q_OBJECT 9 | public: 10 | GLViewer(QQuickItem* parent = 0); 11 | virtual ~GLViewer(); 12 | 13 | protected: 14 | QSGNode* updatePaintNode(QSGNode* old, UpdatePaintNodeData* data); 15 | void timerEvent(QTimerEvent* evt); 16 | 17 | private slots: 18 | void cleanup(); 19 | 20 | private: 21 | int m_timerID; 22 | QOpenGLFramebufferObject* m_fbo; 23 | }; 24 | -------------------------------------------------------------------------------- /Utilities/SMutex.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | 5 | __forceinline void SM_Sleep() 6 | { 7 | Sleep(1); 8 | } 9 | 10 | __forceinline size_t SM_GetCurrentThreadId() 11 | { 12 | return std::hash()(std::this_thread::get_id()); 13 | } 14 | 15 | __forceinline u32 SM_GetCurrentCPUThreadId() 16 | { 17 | if (CPUThread* t = GetCurrentCPUThread()) 18 | { 19 | return t->GetId(); 20 | } 21 | return 0; 22 | } 23 | 24 | __forceinline be_t SM_GetCurrentCPUThreadIdBE() 25 | { 26 | return SM_GetCurrentCPUThreadId(); 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | rpcs3 2 | ===== 3 | 4 | PS3 emulator/debugger 5 | 6 | The [FAQ](https://github.com/DHrpcs3/rpcs3/wiki/FAQ) has some basic information. 7 | 8 | For discussion about the emulator and PS3 emulation please visit the [official forums](http://www.emunewz.net/forum/forumdisplay.php?fid=162). 9 | 10 | If you want to contribute please take a took at the [Coding Style](https://github.com/DHrpcs3/rpcs3/wiki/Coding-Style) and [Roadmap](https://github.com/DHrpcs3/rpcs3/wiki/Roadmap) pages. 11 | 12 | To initialize the repository don't forget to execute `git submodule update --init` to pull the wxWidgets source. 13 | -------------------------------------------------------------------------------- /rpcs3/Emu/Io/Null/NullKeyboardHandler.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Emu/Io/KeyboardHandler.h" 4 | 5 | class NullKeyboardHandler : public KeyboardHandlerBase 6 | { 7 | public: 8 | NullKeyboardHandler() 9 | { 10 | } 11 | 12 | virtual void Init(const u32 max_connect) 13 | { 14 | memset(&m_info, 0, sizeof(KbInfo)); 15 | m_info.max_connect = max_connect; 16 | m_keyboards.Clear(); 17 | for(u32 i=0; i& GetPads() { return m_pad_handler->GetPads(); } 18 | PadInfo& GetInfo() { return m_pad_handler->GetInfo(); } 19 | Array