JayFoxRox/xqemu

Priority list (JayFoxRox)

JayFoxRox opened this issue · 0 comments

Personal priority list for work done by JayFoxRox (one of many developers)

Feel free to leave comments below!

I'm open to giving away any of my tasks to speed things up.
If you'd like to work on anything, contact me directly to avoid doing work I'm also doing (contact details in README).

Current priority list for tasks I work on

High-priority, mandatory steps (Project supervision; these tasks take up > 50% of my time but basically enable everyone to work more easily and quicker. If this is not done the entire project stagnates = What I must do):

  1. Finish my still outstanding work-in-progress code (Also frontend, website, xboxpy, nv2a-trace, nxdk-rdt, nxdk, xbox-tools and other necessary projects)
    1. Finish the command-line tab for for xqemu-manager
  2. Review upstream PRs / work by others (Also frontend, website, xboxpy, nv2a-trace, nxdk-rdt, nxdk, xbox-tools and other necessary projects)
  3. Review XboxDevWiki changes

Lower-priority list of tasks I personally work on after ensuring everybodys else work is being approved and verified (Actual progress, research and writing code on my own; here I can directly influence quality of emulation = What I want to do):

  1. pbkit 16-bit modes (color and zeta)
  2. XQEMU x1R5G5B5 support (glClear + VGA bug)
  3. XQEMU signed textures
  4. nv2a-trace in nxdk-rdt
  5. Fix my bricked kreon DVD drive
    1. Waiting for parts (flash socket)
    2. Solder + flash
    3. Check firmware compatibility + possibly FOSS firmware
  6. Work towards rudimentary audio support (actual audio support)
    1. Finish VP framework
    2. Finish VP debugging
    3. Finish GP debugging
    4. Implement voice frontend and respective backend, for basic sampling
    5. Implement envelopes
    6. Implement EP debugging
  7. Add IPSec scripts to xbox-tools
    1. Figure out how to avoid people breaking other peoples Xbox
    2. Add issue about adding this to scapy instead (contacted via gitter on 8th of september 2018) or figure out how to use it
  8. Upload / provide IDA scripts in XboxDev
  9. Finish xbe-loader
    1. Decide where to put xbe-loader (on JayFoxRox/xbe-loader temporary)
    2. Improve HTTP support
    3. Finish virtual-nic for pass-through
    4. Start tunnel project independently
  10. Clarify who "me" is in the README on this repo
  11. Prepare XboxDev/nv2a-trace for GPU testing
    1. Merge all changes from JayFoxRox/nv2a-trace#3
    2. Implement data dumping and injection
    3. Find good way to recover pgraph state
  12. Add disclaimer and improve XQEMU readme
  13. Apply APU DSP changes (audio hardware emulation, but still nothing audible)
    1. DSP: Support 'inc d' / fixup the dsp inc
    2. Untested: fix bug where asr56 did lsr56
    3. DSP: Support 'lsl #ii, D'
  14. Finish XQEMU logo
  15. Create issue about "Optimize p:000b 0a8581 00000a (02 cyc) jclr #1,x:$ffffc5,p:$000a" (didn't I already do this?)
  16. GTK Flickers issue
  17. Surface cache (or FS refactors, so we can do this) (performance + accuracy improvements) (Waiting for mborgersons work)
  18. Do experiments with Xbox crashdumps and plan when to write a tool (I tried this sometime, but couldn't make it work - dumps don't seem to contain register values?)
  19. Retest QEMU TCG hostfloat/hardfloat support (See #20)

The order might change and new tasks can be added near the top if necessary (often if requirements for other tasks emerge; or if people depend on my work).

Click here to find out why I work on those specific tasks (long explanation!)
Just focusing on issues perceived by users (or even by myself) is a bad idea. I know that performance is the most critical issue XQEMU has. However, working exclusively on performance might result in problems in the future. We should understand how an Xbox works first, then emulate those parts we understand, and then improve them performance wise.

I therefore focus on documentation, maintainability and accuracy first. If we understand what should happen, we can make it fast without accidentally breaking games by new performance optimizations. That means we can avoid tackling the same issues each time we find out something new.

I'm also a good reverse engineer, and have worked with almost all parts of an Xbox. So my time is best spend tackling those issues hardly anyone else is capable to work on at this point.
My time is also well spend explaining problems or encouraging new people to obtain these skills, so we have more people who can also work on these problems.

Click here to find out about my workflow (long explanation!)
My contributions to XQEMU typically start out as [tools or projects in XboxDev](https://github.com/xboxdev) or [my xbox-tools](https://github.com/JayFoxRox/xbox-tools). Once I created these small tools to observe behaviour of a real Xbox, I [document on XboxDevWiki](http://xboxdevwiki.net/). From that documentation, me, or other developers can then create new emulation code for XQEMU (or other projects). My tools can then be used to directly compare the behaviour of a real Xbox to XQEMU which means we can confirm the correctness of changes.

I also work on tools to integrate test results by John GodGames into this workflow, so we always know which games are affected by a change.
This leads to a very fast workflow, not only for me, but other developers who use my tools.

Tasks I'd like to see done

This is wishful thinking, as I'm not skilled enough, don't have enough time or don't enjoy doing each of these. Other XQEMU developers might also not agree with some choices.

This is my personal wishlist (in no particular order):