forked from RPCS3/rpcs3
-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
raven02 edited this page Jun 18, 2016
·
121 revisions
List of features that RPCS3 will support in the future and their corresponding status. It's not required for developers to write down here the tasks they are working on. It's just recommended, and if you do so, remember to delete those entries once you finish them, or move them to another category if you couldn't do it. The current categories are:
- Short term goals: Tasks that developers are currently doing.
- Medium term goals: Stuff that developers could do.
- Long term goals: Tasks that are not a priority right now.
Thank you for supporting RPCS3!
- Rewriting OpenGL renderer, VP/FP recompiler. [DH]
- Implement Priority-Based Scheduler for PPU Threads. Nekotekina
- Implement/rewrite HLE modules:
- cellJpgDec: Use a better library, bugfixes, other improvements
- cellFont: Use libtiff to properly decode and support font files
- Correctly handle exceptions in
Emulator::Load()
andEmulator::Stop()
functions. Not important. - Add basic types
s128
(signed 128-bit number),v64
(vector 64-bit union),v32
(vector 32-bit union). Not important. - Improve
be_t
andle_t
types, make them perfect and literally shine. Any flaws are intolerable. - Filesystem: Process WinAPI/errno error codes if an error occured in system calls called through
fs::
functions. Set correct TLS error code. Throw an exception on unknown error. Reuse error codes when necessary, for example, insys_fs_open
implementation. - Cease to use
assert
in most places whenever an error may occur. Use exceptions. - Eliminate
delete
/delete[]
operator usage. Eliminatemalloc
/free
usage. Usestd::unique_ptr
instead. - Implement correct SPU segment loading in order to provide correct
sys_spu_image_import
,sys_raw_spu_load
,sys_spu_elf_get_information
,sys_spu_elf_get_segments
, etc. implementations. - Examine PPU/SPU/ARMv7 stack structure. Restore the "callstack" in the debugger using the information from the real thread's stack, using SP register. Catching it from branch instructions was: 1) wrong 2) slow.
- Improve
vm::reservation_op
: use TSX intrinsics if supported (by CPUID). - Eliminate
std::this_thread
sleep_for()
andyield()
usage in most places, because it's ineffective or even wrong. - Eliminate wx dependencies from emucore.
- Improve solution structure.
- Correctly load EXPORT table of main PPU executable.
- Implement variable import/export support (VNIDs) for PPU.
- Improve all PRX-related things. Fix booting process in order to be compatible with liblv2. This includes TLS, correct module loading/unloading and various unimplemented syscalls.
- Improve debugger, fix bugs.
- Implement static AOT PPU recompiler.
- Implement AOT SPU recompiler.
- Implement block-based ARMv7 disassembler.
- Implement static AOT ARMv7 recompiler.
- Implement variable import support (VNIDs) for ARMv7.
- Implement SDATA loader, that is, read the contents of the SDATA file on the fly.
- Improve RSX and add unimplemented GCM commands.
- Implement loading SPU code from encrypted file.
- Improve RSX Debugger: Add frame stepping (pause the emulator and advance just one frame).
- Implement LV2 SysCalls. Specifically (ordered from more to less important):
- 631 used by games like Prince of Persia Classic [NPUB30031]
- sys_fs_chmod (834)
- Find bugs, wrong autotests or read the current issues and fix them.
- Implement core dumps.
- Implement Priority-Based Scheduler for SPU Thread Groups.
- Write tests.
- Add a User Manager to manage folders like:
dev_hdd0/home/00000001
. - Implement a driver to use HPET (High Precision Event Timer) hardware in emulator if possible.