* Small renames
* Cleanup (renames, comments and indenting)
Read GetCurrentProcess() once (g_CurrentProcessHandle further on)
Forwarded KeWaitForSingleObject to KeWaitForMultipleObjects
* Refactored all OOVPA's
* Fixed a few small mistakes
* More oovpa cleanup
XRefOne applied to CDirectSoundStream_SetI3DL2Source_1_0_3936
CDirectSoundVoice_SetHeadroom_1_0_4627 and
IDirectSound_CreateSoundStream_1_0_5849
Removed overlooked folder copy
Indenting/newline fixes
* Renamed symbols, mainly Native to Host
VolumeLetter into DriveLetter (the official term)
XboxFullPath into XboxDevicePath
NativePath into HostPath / HostDevicePath
NativeRootHandle into HostRootHandle
Also, small improvements to _CxbxConvertFilePath
Added drive A, S and V
* More oovpa cleanup
* Log prefix has to be updated per call after all
* Cleanup (renames, comments and indenting)
Read GetCurrentProcess() once (g_CurrentProcessHandle further on)
Forwarded KeWaitForSingleObject to KeWaitForMultipleObjects
* Refactored all OOVPA's
* Fixed a few small mistakes
* More oovpa cleanup
XRefOne applied to CDirectSoundStream_SetI3DL2Source_1_0_3936
CDirectSoundVoice_SetHeadroom_1_0_4627 and
IDirectSound_CreateSoundStream_1_0_5849
Removed overlooked folder copy
Indenting/newline fixes
* Selectively merging fs-experimental into master
In particular, I'm not merging the automatic parent folder creation stuff because I'm not convinced it's the right thing to do
* Implemented more FileInfo converters
This should take care of all types used by NtSet/QueryInformationFile. The remaining types are used by NtQueryDirectoryFile.
* FileName probably needs to be converted
* Fix compilation errors
* Restore string conversion
* Revert NtDeviceIoControlFile
Panzer Dragoon failed the initial XapiVerifyMediaInDrive check due to the changes made to this function. We need proper low level I/O device emulation for this to work.
* Fix XeImageFileName
Helps with Avalaunch initialization. It still crashes further down the
road.
* Comment on XBE location
* Implemented conversions for NtQueryInformationFile and NtQueryFullAttributesFile
* Cleanup (renames, comments and indenting)
Read GetCurrentProcess() once (g_CurrentProcessHandle further on)
Forwarded KeWaitForSingleObject to KeWaitForMultipleObjects
* Refactored all OOVPA's
* Fixed a few small mistakes
Very aggressive cull of old Exe support:
Removed GUI for importing/exporting Exe files
Removed GUI for storing Exe history
Removed GUI for Executable Generation
Removed unused EmuExe class
Removed unused Exe registry settings
Removed unused Exe file history
Removed unused standalone Cxbe console app which would no longer compile
* Use IRQL value in the emulated KPCR structure rather than overwriting the Windows TIB structure.
Note: The entire KPCR is currently per thread, this is not correct as the KPCR should be per-cpu.
The issue here is that the first part of the KPCR, NT_TIB should be per thread.
I haven't figured out a good way to keep that portion per-thread while keeping the rest of the structure global,
that said, it will function fine as long as the same thread calls the IRQL functions.
* Move KPCR fetch code into KeGetPcr();
This exists as a macro on the Xbox, but we implement it as a function because the xbox approach requires FS to point to the KPCR
This isn't possible on 64-bit Windows, even with 32-bit code, so this approach is required.
* Implment XcRC4 functions.
Using a (very slightly) modified version of Cryptlib (The Rc4Context structure has been re-ordered to match the order of elements in the Xbox RC4 context)
https://github.com/WaterJuice/CryptLib
* Use Rc4Xor rather than Rc4Output
Forwarded NtCreateTimer, NtSetTimer, NtQueryTimer, NtCancelTimer to
their respective Nt counterpart.
Declared all required types for this.
Also implemented KeSetEvent minimally.
I removed these a long time ago, but it turns out our FS/KPCR implementation isn't good enough for these yet
This is unlikely to be fixed until we update our kernel implementation to properly update the Emulated KPCR structure when required and patch out all remaining FS register instructions, currently it just implements enough to get TLS working.
Research into where and when KPCR structure members should be updated.
The breakpoint now occurs at the beginning of the XRef only function that is called, giving us the function address rather than the address of our handler.
The real Xbox does not do anything like this, and we should work on implementing the kernel behavoir so we can completely remove our XMountUtilityDrive patches in future.