96w ago - Today chrisbdk announced via DemonHades that Spanish PlayStation 3 homebrew developer rpcs3 is working on a PS3 Disassembler / Emulator PC project called RPCS3 with the current source code available below.
To quote, roughly translated: Well then apparently someone has the job of making a PS3 emulator for PC. An now is in the process (to not get excited) only a disassembler.
NOTE: Do not expect to launch a game or homebrew or anything, just are in test mode.
PlayStation 3 RPCS3 emulator open source to run on PCs with Windows OS. For now only a de-assembler PS3, although in recent deliveries have been able to implement ELF compiler.
List of Changes:
Implemented DbgConsole (for sys_tty_write)
Emulated PPUThreadGetStackInformation syscall
Fixed return id for FsOpen syscall
Emulated some pad syscalls constant key table: A = LEFT, S = DOWN, D = RIGHT, W = UP, Enter = START, X = R3, Z = L3, Space = SELECT, K = SQUARE, L = CROSS, ; = CIRCLE, O = TRIANGLE, I = R1, Q = L1, P = R2, E = L2
Homebrews: Added dump_stack.elf, Added pad_test.elf (press 'X' for exit)
Fixed compilation errors
Added missing Time.h
Fixed cntlzd/cntlzw opcodes
Fixed close PPU threads
Emulated more PPU instructions
Emulated some lwmutex/ppu thread syscalls
Added ppu_thread test homebrew (work fine)
Fixed dump from ELF64
Fixed read fstub id
Search more info
Implemented saving columns size
Fixed load section names.
Fixed crash on exit.
Implemented DisAsm mode for SPU and another fixes.
PPU Interpreter: Emulated more ops. Fixed UpdateCR.
Memory: Fixed FastWrite 16/32/64/128.
SysCalls: Emulated some process/memory syscalls.
Implemented "DisAsm & Interpreter" mode.
Implemented SPU emulating.
Fixed crash in NullMemoryBlock read mode.
Implemented loading flags from ".got", ".data.sceFStub" and ".rodata.sceFNID" sections.
Fixed seek for FS syscalls.
Emulated more PPU instructions.
Fixed reboot system
Interpreter - Emulated more instructions
DisAsm - Added more instructions (thank to BlackDaemon)
SysCalls - Rewrote base class, Removed count limits
ELF compiler - Added b/bl opcodes, Implemented auto analyze
rpcs3: Implemented ELF compiler compiler (Asm, just to test).
interpreter: Found and emulated instructions. Fixed value sc.
Removed pogina WikiFAQ wiki on the web.
interpreter: Emulated instructions.
ElfLoader: Fixed SetPc value.
rpcs3: Fixed compilation errors for debug mode.
rpcs3: Emulate some syscalls (system calls) File System. Re-writing mode MThread (now uses pthread 2.8.0) Re-written momoria administrator. Re-writing the store manager (ini). Log Marcos Main and keep their position and now tamano.size Added more opcodes. Fixed 'crash' if the frame Log / DISASM / Memory Viewer is closed. Implement OGL video mode.
Stay tuned for more PS3 Hacks and PS3 CFW news, follow us on Twitter and be sure to drop by the PS3 Hacks and PS3 Custom Firmware Forums for the latest PlayStation 3 scene updates and homebrew releases!
Here is an update from KDSBest (via twitlonger.com/show/l3h9er) on the RPCS3 Emulator, as follows:
I took a deep look at the #RPCS3 emulator especialy the ppu emulation. It is possible to increase the performance alot. Since my time is big money I try to get some PoC stuff out. IMHO the performance can be increased by a multiple times. Starting with the decoder which is nicely writter TBH but not tweaked to the performance limit. Building a big switch case is just the wrong way.
Don't get me wrong they made a nice piece of software, but the lack of performance tweaking makes it a bad emulator. Instead of making things look nice they should focus more on pushing the performance to the limit. Look at Dolphine code it is plain ugly to use, but for the performance sake.
I work on a recompiler, which TBH i never expect to be full featured on my work alone. This is way to much to handle for one person, but it should give #RPCS3 people a well knowledge what can be increased.
First of all I try to show the improvements to the decoder, which will be sick. The thing is this, the decoder does alot of stuff which can be done at load time. Loading at startup is not interesting. The performance while it emulates is crucial.
Second I always said it and I still need to say it again. Building a recompiler is not much harder than emulating the stuff like they do but the performance increase will be insane. I looked alot at recompiler codes lately to get a brief understanding how they work and it is doable for the PS3.
I hope #RPCS3 guys will take my help instead of claiming false that their way is faster and reconstruct their emulator. Of course I want to get credit than, because this will be work not much people on this planet can do.
To the decoder using binary search algorithms is way faster than doing the big switch case.
If I manage to make this work I will try to give a presentation on CCC Congress or other congress that let me show this stuff since IMHO it is technically more interesting than what most of those congresses show.