Commit Graph

199 Commits

Author SHA1 Message Date
PatrickvL eb841563de Implemented RtlFillMemory 2016-12-26 13:44:44 +01:00
PatrickvL 7ced0be9e1 Implemented RtlExtendedMagicDivide 2016-12-26 13:33:51 +01:00
PatrickvL bcd6b98764 Implemented RtlExtendedLargeIntegerDivide 2016-12-26 13:28:51 +01:00
PatrickvL fbd7bfdba5 Implemented RtlExtendedIntegerMultiply 2016-12-26 13:23:00 +01:00
PatrickvL dc3d4beaa0 Implemented RtlEqualUnicodeString 2016-12-26 13:05:56 +01:00
PatrickvL 8509e97ed9 Implemented NtQueryEvent 2016-12-24 01:20:26 +01:00
PatrickvL 50d449d378 Implemented NtQuerySemaphore 2016-12-24 01:04:54 +01:00
PatrickvL 440fa2aa48 Implemented RtlDowncaseUnicodeString 2016-12-23 18:37:32 +01:00
PatrickvL 41d393bfe0 Implemented RtlDowncaseUnicodeChar 2016-12-23 18:31:57 +01:00
PatrickvL 183161f4db Implemented RtlCreateUnicodeString 2016-12-23 18:25:49 +01:00
PatrickvL 91cdf3e046 Implemented RtlCopyUnicodeString) 2016-12-23 18:20:54 +01:00
PatrickvL 2d9c0016ca Implemented RtlCopyString 2016-12-23 18:15:27 +01:00
PatrickvL 90363fcf75 Implemented RtlCompareUnicodeString 2016-12-23 18:03:31 +01:00
PatrickvL 5a64d38256 Implemented RtlCompareString 2016-12-23 17:57:58 +01:00
PatrickvL ee4573bd44 Implemented RtlCompareMemoryUlong 2016-12-23 17:48:08 +01:00
PatrickvL bc4d26f089 Implemented RtlCompareMemory 2016-12-23 17:42:25 +01:00
PatrickvL ceb69874f0 Implemented NtDeleteFile
However scary, this is still required
2016-12-23 17:29:05 +01:00
Ivan Roberto de Oliveira 4eba2e31e3 File information struct conversions (#53)
* 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
2016-12-22 22:25:22 +00:00
Luke Usher 73c0b0ca68 Implement XcRC4 functions. (#43)
* 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
2016-12-20 21:45:56 +00:00
PatrickvL 570a8743f7 Merge 2016-12-20 13:47:06 +01:00
PatrickvL 2a4158d441 Implemented all kernel Timer functions using NtDLll
Forwarded NtCreateTimer, NtSetTimer, NtQueryTimer, NtCancelTimer to
their respective Nt counterpart.
Declared all required types for this.
Also implemented KeSetEvent minimally.
2016-12-20 13:39:08 +01:00
PatrickvL 923d820227 Kernel improvements
New implementations : IoCreateDevice, KeGetCurrentIrql, NtFsControlFile,
RtlMoveMemory, RtlRip

Updated implementations : HalGetInterruptVector, HalReadSMBusValue,
KeInitializeInterrupt, KeRaiseIrqlToDpcLevel, KeSetBasePriorityThread,
MmAllocateContiguousMemory, NtDeviceIoControlFile, NtDuplicateObject
2016-12-19 17:12:54 +01:00
PatrickvL 58d74eea90 Dug up some more xbox kernel signatures and types 2016-12-19 14:56:52 +01:00
StrikerX3 953e53f42c Added KWAIT_REASON enum 2016-12-15 19:21:39 -02:00
Luke Usher 90ca700df2 Implement one execution path (AV_QUERY_AV_CAPABILITIES) of AvSendTvEncoderOption 2016-12-14 21:38:26 +00:00
PatrickvL 78856b08a2 Let FscGetCacheSize return what FscSetCacheSize set
No actual file system cache page allocation though...
2016-12-13 16:44:04 +01:00
PatrickvL 553db2dc2d Implemented KeQueryInterruptTime 2016-12-12 17:56:29 +01:00
PatrickvL e6bae132b7 Implemented PsSetCreateThreadNotifyRoutine
Used EmuXRegisterThreadNotifyRoutine as a reference
2016-12-12 17:34:08 +01:00
PatrickvL 7e42995d91 Make PsCreateSystemThread use a placeholder instead of NULL
Also removed no-op EmuCleanupFS()
2016-12-12 17:11:04 +01:00
PatrickvL a6591ae07c Added PsCreateSystemThread as forward to PsCreateSystemThreadEx (which had to be corrected)
Also moved NtStatusToString to EmuFile.cpp.
Forwarded KeBugCheck to KeBugCheckEx, NtWaitForSingleObject,
NtWaitForSingleObjectEx and NtWaitForMultipleObjectsEx to
KeWaitForMultipleObjects (in which all implementation we have thus far,
is now concentrated).
2016-12-12 16:15:04 +01:00
PatrickvL 68d60d0cb2 Applied all possible forwards, extended OBJECT_TYPE, added NtOpenDirectoryObject and ObOpenObjectByName stubs 2016-12-11 22:49:35 +01:00
PatrickvL b37b1bdeaa Copied over a few declarations from https://github.com/xqemu/nxdk 2016-12-10 19:26:28 +01:00
PatrickvL 65b00fa856 Added IoDismountVolume stub
Also added the types needed for it's arguments.
2016-12-10 18:10:49 +01:00
PatrickvL 6071e81ebf Copied over Dxbx comments and NtWriteFile signature 2016-12-02 18:07:03 +01:00
PatrickvL 8bfe7bc426 Prevent naming collisions on kernel symbols using a KRNL() macro 2016-12-02 17:31:34 +01:00
PatrickvL 14427e9996 Added MmClaimGpuInstanceMemory implementation 2016-12-02 15:43:23 +01:00
PatrickvL 3dd16ce418 Added remaining Mm* kernel functions
Introduced and used VOLATILE define
Removed using namespace xboxkrnl
Fixed ambiguous warnings
2016-12-02 10:38:46 +01:00
Luke Usher 56185eed5f Fix compilation of Interlocked API
This was achieved by prefixing XboxKrnl functions with Xb to prevent a name conflict with WinNT.h
Additionally, rather than importing native Interlocked functions from NTDLL, we use the versions defined in WinNT.h
2016-12-01 22:03:48 +00:00
PatrickvL f1c03d9909 Merge remote-tracking branch 'refs/remotes/LukeUsher/master' 2016-12-01 18:01:29 +01:00
PatrickvL 9c821d09c0 Added more kernel stubs
Also applied FASTCALL define. Failed attempt to add Interlocked API's
(VC++ complains about undefined intrinsics or something like that).
2016-12-01 18:01:16 +01:00
Luke Usher 1f5d71f7c4 Add stub for KeCancelTimer 2016-11-30 20:13:15 +00:00
Luke Usher 6899be5a0b Implement KeStallExecutionProcessor 2016-11-30 20:04:11 +00:00
PatrickvL 8322532863 Merge remote-tracking branch 'refs/remotes/LukeUsher/master' 2016-11-29 09:33:03 +01:00
Luke Usher 5d469d9188 Add stubs for ObReferenceObjectByHandle, ObDereferenceObject and KeSetBasePriority
Crash Bandicoot now sits on the loading screen forever, but it doesn't crash, so that's progress, I guess
2016-11-29 06:58:30 +00:00
Luke Usher 574977bf2f Implement XcHMAC
Dashboard no longer crashes when going into the System Information menu option
2016-11-28 20:15:06 +00:00
PatrickvL 3922e44386 Added RtlCharToInteger
Also sorted EXTERN's and IMPORT's, removed end-of-line-spaces and two
incorrect LOG_UNIMPLEMENTED occurances.
2016-11-28 18:22:25 +01:00
Luke Usher 7323a2c711 KfLower/RaiseIrql should be fastcall, not stdcall.
Add implementation for KeRaiseIrql from ReactOS as it seems to be identical to the Xbox implementation.
We may not be able to do the same for KfLowerIrql though, the implementation looks (slightly) different to me.
2016-11-26 22:07:11 +00:00
PatrickvL 740f1ae8af More Ex* signature fixes 2016-11-25 22:47:40 +01:00
PatrickvL 0a31daeb27 Added typedef (P)ERWLOCK 2016-11-25 22:25:01 +01:00
PatrickvL bb1da9bca9 Updated Ps* signatures 2016-11-25 22:24:32 +01:00
PatrickvL ed93832a71 Updated Ex* signatures 2016-11-25 22:24:19 +01:00
PatrickvL 3dd0a8fa8e Remove LONGBOOL - a Delphi Dxbx derelict
Also corrected return type of HalDisableSystemInterrupt to VOID
2016-11-24 16:32:16 +01:00
PatrickvL a0e9bc9724 Added a few UNIMPLEMENTED Ke* functions 2016-11-23 23:42:08 +01:00
PatrickvL 61b59a7931 Applied __fastcall calling convention where appropriate. 2016-11-23 17:35:09 +01:00
PatrickvL f4a4026a03 Added UNIMPLEMENTED stubs for all remaining Hal* kernel functions 2016-11-23 17:34:57 +01:00
PatrickvL 2522524c4e Added UNIMPLEMENTED stubs for al Ex* kernel functions 2016-11-21 16:16:24 +01:00
PatrickvL 5640d74248 Slowly working my way through adding UNIMPLEMENTED skeletons
Rtl* functions can be passed-through to host - as soon as headers are
defined...
2016-11-16 01:43:10 +01:00
PatrickvL 456c5b1c1f Added UNIMPLEMENTED skeletons for remaining Av* and Dbg* kernel entries 2016-11-16 00:34:49 +01:00
PatrickvL 3ade9fce9d Couple the xbox thunks for xboxkrnl::KeInterruptTime and xboxkrnl::KeSystemTime to their actual counterparts on Windows
This way we won't have to spend any time on updating them ourselves, and
still get highly accurate timers!

(Untested. Ported back from Dxbx)
2016-11-14 18:18:12 +01:00
PatrickvL ae9d663af3 Added more variables to the kernel thunk table
Last two variables yet to replace : KeInterruptTime, KeSystemTime
2016-11-13 00:59:47 +01:00
PatrickvL 0df04c2f45 Added a few more variables to the kernel thunk table 2016-11-13 00:46:56 +01:00
PatrickvL 4b710b79a5 This too (is becoming a habit) 2016-11-12 23:54:57 +01:00
PatrickvL 82d36a2470 Corrected a few OpenXDK declarations so they can compile into the kernel thunk table. 2016-11-12 23:54:26 +01:00
PatrickvL d411f1364f Added MmGlobalData, registered in kernel thunk table 2016-11-12 01:27:06 +01:00
PatrickvL 4f7a233391 EXPORTNUM corrections 2016-11-11 11:49:05 +01:00
Luke Usher 52673a5ceb Add dummy implementation for MmLockUnlockBufferPages 2016-10-26 17:07:37 +01:00
Luke Usher c6426b1209 Initial implementation of ExQueryPoolBlockSize
This is not completely correct. but will do for now.
In order to be correct, it will be required to set up a proper pool entry object in ExAllocatePoolWithTag
2016-10-24 21:27:19 +01:00
Luke Usher 72c8acbaf9 Add implementations for KeWaitForMultipleObjects & KeWaitforSingleObject
Add additional nullptr checks within Critical Section emulation
2016-10-23 20:07:27 +01:00
Luke Usher a160db2c72 XApiVerifyMediaInDrive now passes validation without patches 2016-09-30 06:45:47 +01:00
Luke Usher 08efaf9e53 Implement Partition0 support
Adding some kernel functions in preparing to remove more XAPI patches
2016-09-29 12:24:23 +01:00
Luke Usher d142b3ae0e Dashboard works again 2016-09-28 20:47:09 +01:00
Luke Usher cd9caa4574 Implemented dummy NtProtectVirtualMemory
Allows MechAssault to progess further. Still crashes before showing anything
2016-09-26 22:01:56 +01:00
Luke Usher c6dca6127a Implemented XeImageFileName kernel structure 2016-08-21 14:57:46 +01:00
Luke Usher 933a7be906 Include many of the changes from Blueshogun's Cxbx branch 2016-08-21 00:53:25 +01:00
Luke Usher ac832097a9 Implemented NtOpenSymbolicLinkObjecft & NtQuerySymbolicLinkObject from Dxbx
Not sure if translated correctly, probably shouldn't attempt to code at 2am
2016-08-20 01:49:58 +01:00
Luke Usher 61649f73bd add dummy implementation of HalRegisterShutdownNotification
This is the furthest we can get without HLE, all XDK titles now crash during XGetSectionHandle while attempting to read the XBE symbol table.
We can either HLE this, or rework Cxbx to load the entire XBE into memory the way Xenoborg does, this would allow Xbox code to correctly access portions of the XBE header without HLE.
2016-08-19 20:45:59 +01:00
Luke Usher 3f70ed9f7c Implement XboxKernelVersion export
This allows XApiApplyKernelPatches(); to run without having to intercept it
2016-08-19 19:53:37 +01:00
Luke Usher 1578146bfe Implemented Symbolic Link kernel API using code from Dxbx
Dxbx contains a LOT of improvements that did not make it back into Cxbx
2016-08-18 20:40:36 +01:00
Echelon9 0f36366310 Add support for RtlFreeAnsiString (Kernel API 0x11E / 286) 2015-03-29 21:28:50 +11:00
Echelon9 96676564ca Add support for RtlInitUnicodeString (Kernel API 0x122 / 290) 2015-03-29 20:58:57 +11:00
Echelon9 b57803a20a Basic support for MmUnmapIoSpace (Kernal API 0xB7 / 183) 2013-07-22 19:02:58 +10:00
Echelon9 406795b743 Implement ExFreePool and bugfix for ExAllocatePoolWithTag 2013-04-07 17:53:42 +10:00
Echelon9 1297540c3d Implementation (basic) of the HalReadSMBusValue kernel call 0x002D (45) 2013-01-02 21:12:24 +11:00
Echelon9 4af8f49b8c Implementation (basic) of the HalWriteSMBusValue kernel call 0x0032 (50) 2013-01-02 20:39:23 +11:00
Echelon9 b31e36c6dd More correct implementation of the KDPC structure. 2012-12-01 00:41:01 +11:00
Echelon9 41f938bc96 More full implement ExQueryNonVolatileSetting() for corner cases. 2012-11-30 23:08:52 +11:00
Echelon9 14e15f9129 Build out definition of MmCreateKernelStack() 2012-11-28 23:36:57 +11:00
Echelon9 0ad1cf1d88 Update gitattributes (with line ending fixes) 2012-10-07 23:58:52 +11:00
blueshogun96 1737efc2cf Quick fixes for Dashboard. 2011-11-03 10:17:12 +00:00
blueshogun96 11b58429a9 Xbox Dashboard (3944) is now working okay (not perfect). 2011-11-03 00:13:00 +00:00
blueshogun96 7e31d6deb2 Whacked is playable + lots of other random updates! 2011-06-15 06:56:33 +00:00
blueshogun96 511ba86290 Fixed compile errors in EmuKrnl.cpp 2010-04-17 17:37:39 +00:00
blueshogun96 9d10c637af Forgot to update OpenXDK includes. Sorry about that! 2009-11-13 20:17:54 +00:00
blueshogun96 bcc8260f17 Forgot to update 2009-11-13 20:15:34 +00:00
blueshogun96 271a1cad1d Just another [major] update... 2009-11-12 01:35:50 +00:00
Daniel Stien 561c3b7d4f Implemented several kernel functions.
- NtQueryVirtualMemory to support Xapi VirtualQuery
- NtCreateSemaphore/NtReleaseSemaphore to support Xapi semaphores
- MmCreateKernelStack/MmDeleteKernelStack to support Xapi fibers

Added D3DFormat and D3DTRANSFORMSTATETYPE conversions.
- Convert PC D3DFMT_A4R4G4B4 to 0x1D (linear)
- Convert Xbox D3DFMT 0x19 (swizzled) to D3DFMT_A8
- Convert Xbox D3DFMT 0x27 (swizzled) to D3DFMT_L6V5U5
- Convert Xbox D3DTRANSFORMSTATETYPE 10 (max) to D3DTS_TEXTURE7 + 1 (experimental)

Print properly terminated XTL name in debug output.
2008-08-23 02:14:20 +00:00
Daniel Stien 199136e926 Expanded tabs and trimmed EOL whitespace. 2008-08-23 01:29:07 +00:00
martin_sw 9ea9791e02 Battlestar Galactica *PAL* now runs somewat ok. Added many random things. 2007-08-09 19:29:07 +00:00
Aaron Robinson 10835748c3 Renamed remotely 2006-07-15 02:03:02 +00:00