My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
Todo  
Generalized list of both long and short term tasks
Phase-Design, Featured
Updated Jun 11, 2011 by sudonim1@gmail.com

Introduction

Please add things to this list as you see fit; either personal goals or public service announcement goals, etc. When adding items to the list, strive for things which can be immediately implemented provided that all prerequisites are met. Avoid vague over over-generalized items such as like "rewrite SIF."

Note that the Issues system can also be used a todo item tracker, which might be desirable for tasks that would benefit from public discussions, a series of patches or other (small!) attachments, etc.

R5900 Recompiler

Rewrite block manager again for more reliable page clears. Index blocks by pages covered. For simplicity block structures should stay at their original addresses. Still need to lookup blocks by address of any R5900 (or R3000, block manager is shared) instruction for vtlb rewriting. Lookup by x86 instruction address at block level is desirable for profiling but has no other use.

R5900 Root Counters / Timers

As found out by some test.elf earlier, PCSX2 seems to have some issues with (gated at least) timers. Some more testing should be done, as planned in the IRC channel once.

R5900 Exception Handling

The current EE exception handling is too basic to support many of the homebrews that rely on hooking registers and similar. Finding out which exceptions are used and implementing them would allow for better in-depth analyzing of games (through homebrew debuggers). It'd also make HDLoader and similar CDVD emulators work.

Optimizations

Replace midblock constant flushes with a recompile-time write of all constants to a lookup table indexed by program counter, and flush from that table in exception, debugger breakpoint, vtlb rewriting and any other handlers.


Separate recompiler cache for self-checking blocks in pages whose protection has been broken (less EE resets). If the entire page is overwritten by dma (possible code upload), unflag the page so that blocks executed in it go back in the normal cache until the protection is broken again (this can be implemented first for an immediate performance boost from less self-checking blocks). Track bottom and top addresses of code in a page so that partial page dma writes do not trigger clears.

Misc

Move block dumping out of linuz iso and into the core for use with any plugin or internal iso support. supported already; core version needs improved/bugfixed and a proper user interface for selecting target dump file

MicroVU

Optimisations

During recompilation, spot spins on integer registers (slightly more advanced: memory locations) and exit early if it starts spinning; ratchet and clank does this. Find the longest unbroken (or broken only by loads that don't affect the addresses) sequence of branches that ends in a branch which points back into the sequence. Ratchet and clank's looks like this:

LOOP nop ibeq vi02, vi00, ANYWHERE_BUT_HERE
nop nop
nop b LOOP
nop nop

Major undertakings

Rewrite IPU

Partial/Complete rewrite of the IPU part of the emulator, possibly with integration of parts of the mpeg lib imported in to the main IPU files and commented on, with all unneeded parts removed for ease of reading. Accompanied with a bitstream control re-evaluation (current implement is slightly clunky and can get errors/misscalculations under certain situations) and removal of co-routine function. All new IPU commands will require passes for each part of the opcode to accept small amounts of data at a time in order to keep the bitstream, Input FIFO, Output FIFO and DMA's in sync.

Host filesystem memory card

Premise: Use the host filesystem (NTFS/EXT3/etc) to store memorycard data, instead of emulating the raw flash memory of a physical memorycard.

The memory card library (and presumably the matching module, though this isn't confirmed) is actually very high level, if we have the hooks we can use the host filesystem instead. Replace the mcman module or mcman imports in other modules with syscalls or a reserved instruction, catch this in pcsx2 and implement the functions with native code.

Prereq: Memorycard Plugin System

Trunk currently has a hacked up implementation of a pluggable (dynamic) memorycard interface. Completing this interface allows for the implementation of various storage formats and user interfaces for memorycard management. The interface is based on the new PS2E.v2 API, and would need the addition of mcman hooks in order to implement high level host filesystem use.

Investigation

SPU2

SPU2 register reads

Discover how registers which are normally only written to behave on read. (These are used though it's not known that this will impact compatibility. For example, key on is read by the bios because of some code which was probably written without taking into account the volatile storage specifier on hardware register declarations.)


Sign in to add a comment
Powered by Google Project Hosting