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):
- Finish my still outstanding work-in-progress code (Also frontend, website, xboxpy, nv2a-trace, nxdk-rdt, nxdk, xbox-tools and other necessary projects)
- Finish the command-line tab for for xqemu-manager
- Review upstream PRs / work by others (Also frontend, website, xboxpy, nv2a-trace, nxdk-rdt, nxdk, xbox-tools and other necessary projects)
- 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):
- pbkit 16-bit modes (color and zeta)
- XQEMU x1R5G5B5 support (glClear + VGA bug)
- XQEMU signed textures
- nv2a-trace in nxdk-rdt
- Fix my bricked kreon DVD drive
- Waiting for parts (flash socket)
- Solder + flash
- Check firmware compatibility + possibly FOSS firmware
- Work towards rudimentary audio support (actual audio support)
- Finish VP framework
- Finish VP debugging
- Finish GP debugging
- Implement voice frontend and respective backend, for basic sampling
- Implement envelopes
- Implement EP debugging
- Add IPSec scripts to xbox-tools
- Figure out how to avoid people breaking other peoples Xbox
- Add issue about adding this to scapy instead (contacted via gitter on 8th of september 2018) or figure out how to use it
- Upload / provide IDA scripts in XboxDev
- Finish xbe-loader
- Decide where to put xbe-loader (on JayFoxRox/xbe-loader temporary)
- Improve HTTP support
- Finish virtual-nic for pass-through
- Start tunnel project independently
- Clarify who "me" is in the README on this repo
- Prepare XboxDev/nv2a-trace for GPU testing
- Merge all changes from JayFoxRox/nv2a-trace#3
- Implement data dumping and injection
- Find good way to recover pgraph state
- Add disclaimer and improve XQEMU readme
- Apply APU DSP changes (audio hardware emulation, but still nothing audible)
- DSP: Support 'inc d' / fixup the dsp inc
- Untested: fix bug where asr56 did lsr56
- DSP: Support 'lsl #ii, D'
- Finish XQEMU logo
- Create issue about "Optimize
p:000b 0a8581 00000a (02 cyc) jclr #1,x:$ffffc5,p:$000a
" (didn't I already do this?) - GTK Flickers issue
- Surface cache (or FS refactors, so we can do this) (performance + accuracy improvements) (Waiting for mborgersons work)
- 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?)
- 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):
- Add TSC trapping in HAXM and KVM
- For HAXM, enable RDTSC_EXITING and modify the exit_rdtsc function
- For KVM AMD: set_intercept for SVM_EXIT_RDTSC and add exit handler
- For KVM Intel: set CPU_BASED_HLT_EXITING and add exit handler (also see this)
- More work on xboxpy and python-scripts: testing, feedback, bugfixes
- xqemurun should become a developer tool
- Address known XboxDev issues and solve issues on all projects
- Address known emulator issues (Prioritizing regressions)
- Address known frontend issues
- Address known website issues
- Dedicated developers for website, research and ecosystem
- Improve project perception: we are not a linux project + not that hard to run
- Integrated UI which is user friendly
- More developers working and testing on Windows
- HLE (as an option) integrated into emulator, so we don't need Flash image or MCPX ROM
- Performance improvements
- Audio support
- Issue Template(See our discussion here - more comments can be found in existing rejected XQEMU PR)
- Community maintained compatibility list on Website
- More stable emulation
- DVDX2 support
- Get rid of QEMU and Port to C++
- CMake build system
- More ecosystem work on XboxDevWiki, nxdk, nxdk-rdt, nv2a-trace and many many unit tests
- Vertex Shader JIT
- Fragment Shader Dotmapping support and integer logic
- Port of micropython to Xbox (See JayFoxRox/micropython#1)
- Port of OpenGL API to Xbox (See JayFoxRox/nxdk#3)
- Design XBE loader (in python or C) which can load more than one binary at a time