Merge remote-tracking branch 'refs/remotes/origin/master' into LLE

This commit is contained in:
PatrickvL 2016-11-11 21:09:31 +01:00
commit f023ff13a1
12 changed files with 2500 additions and 2109 deletions

View File

@ -195,6 +195,7 @@
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\src\Common\Logging.h" />
<ClInclude Include="..\..\src\Common\Win32\AlignPosfix1.h" />
<ClInclude Include="..\..\src\Common\Win32\AlignPrefix1.h" />
<ClInclude Include="..\..\src\Cxbx.h" />
@ -458,6 +459,7 @@
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\Common\Exe.cpp" />
<ClCompile Include="..\..\src\Common\Logging.cpp" />
<ClCompile Include="..\..\src\CxbxKrnl\CxbxKrnl.cpp">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>

View File

@ -31,7 +31,7 @@ XBSYSAPI EXPORTNUM(2) VOID NTAPI AvSendTVEncoderOption
// ******************************************************************
// * AvSetDisplayMode
// ******************************************************************
XBSYSAPI EXPORTNUM(4) ULONG NTAPI AvSetDisplayMode
XBSYSAPI EXPORTNUM(3) ULONG NTAPI AvSetDisplayMode
(
IN PVOID RegisterBase,
IN ULONG Step,
@ -139,28 +139,30 @@ XBSYSAPI EXPORTNUM(336) VOID NTAPI XcSHAUpdate(UCHAR *pbSHAContext, UCHAR *pbInp
// ******************************************************************
XBSYSAPI EXPORTNUM(337) VOID NTAPI XcSHAFinal(UCHAR *pbSHAContext, UCHAR *pbDigest);
XBSYSAPI VOID *XcRC4Key;
XBSYSAPI VOID *XcRC4Crypt;
XBSYSAPI VOID *XcHMAC;
XBSYSAPI VOID *XcPKEncPublic;
XBSYSAPI VOID *XcPKDecPrivate;
XBSYSAPI VOID *XcPKGetKeyLen;
XBSYSAPI VOID *XcVerifyPKCS1Signature;
XBSYSAPI VOID *XcModExp;
XBSYSAPI VOID *XcDESKeyParity;
XBSYSAPI VOID *XcKeyTable;
XBSYSAPI VOID *XcBlockCrypt;
XBSYSAPI VOID *XcBlockCryptCBC;
XBSYSAPI VOID *XcCryptService;
XBSYSAPI VOID *XcUpdateCrypto;
XBSYSAPI VOID *XboxLANKey;
XBSYSAPI VOID *XboxAlternateSignatureKeys;
XBSYSAPI VOID *XePublicKeyData;
XBSYSAPI VOID *IdexChannelObject;
XBSYSAPI VOID *xsnprintf; // prefixed with "x" to avoid xlibc collisions
XBSYSAPI VOID *xsprintf; // ""
XBSYSAPI VOID *xvsnprintf; // ""
XBSYSAPI VOID *xvsprintf; // ""
XBSYSAPI EXPORTNUM(338) VOID *XcRC4Key;
XBSYSAPI EXPORTNUM(339) VOID *XcRC4Crypt;
XBSYSAPI EXPORTNUM(340) VOID *XcHMAC;
XBSYSAPI EXPORTNUM(341) VOID *XcPKEncPublic;
XBSYSAPI EXPORTNUM(342) VOID *XcPKDecPrivate;
XBSYSAPI EXPORTNUM(343) VOID *XcPKGetKeyLen;
XBSYSAPI EXPORTNUM(344) VOID *XcVerifyPKCS1Signature;
XBSYSAPI EXPORTNUM(345) VOID *XcModExp;
XBSYSAPI EXPORTNUM(346) VOID *XcDESKeyParity;
XBSYSAPI EXPORTNUM(347) VOID *XcKeyTable;
XBSYSAPI EXPORTNUM(348) VOID *XcBlockCrypt;
XBSYSAPI EXPORTNUM(349) VOID *XcBlockCryptCBC;
XBSYSAPI EXPORTNUM(350) VOID *XcCryptService;
XBSYSAPI EXPORTNUM(351) VOID *XcUpdateCrypto;
XBSYSAPI EXPORTNUM(353) VOID *XboxLANKey;
XBSYSAPI EXPORTNUM(354) VOID *XboxAlternateSignatureKeys;
XBSYSAPI EXPORTNUM(355) VOID *XePublicKeyData;
XBSYSAPI EXPORTNUM(357) VOID *IdexChannelObject;
XBSYSAPI EXPORTNUM(361) VOID *xsnprintf; // prefixed with "x" to avoid xlibc collisions
XBSYSAPI EXPORTNUM(362) VOID *xsprintf; // ""
XBSYSAPI EXPORTNUM(363) VOID *xvsnprintf; // ""
XBSYSAPI EXPORTNUM(364) VOID *xvsprintf; // ""
#endif

41
src/Common/Logging.cpp Normal file
View File

@ -0,0 +1,41 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Logging.cpp
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2016 Patrick van Logchem <pvanlogchem@gmail.com>
// *
// * All rights reserved
// *
// ******************************************************************
#include "Logging.h"
// For thread_local, see : http://en.cppreference.com/w/cpp/language/storage_duration
thread_local const DWORD _CurrentThreadId = GetCurrentThreadId();
// TODO : Use Boost.Format http://www.boost.org/doc/libs/1_53_0/libs/format/index.html
thread_local std::string _logPrefix;

106
src/Common/Logging.h Normal file
View File

@ -0,0 +1,106 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Logging.h
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2016 Patrick van Logchem <pvanlogchem@gmail.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef _LOGGING_H
#define _LOGGING_H
#pragma once
#include "Cxbx.h"
// From http://stackoverflow.com/questions/31050113/how-to-extract-the-source-filename-without-path-and-suffix-at-compile-time
constexpr const char* str_end(const char *str) {
return *str ? str_end(str + 1) : str;
}
constexpr bool str_slant(const char *str) {
return *str == '\\' ? true : (*str ? str_slant(str + 1) : false);
}
constexpr const char* r_slant(const char* str) {
return *str == '\\' ? (str + 1) : r_slant(str - 1);
}
constexpr const char* file_name(const char* str) {
return str_slant(str) ? r_slant(str_end(str)) : str;
}
#define __FILENAME__ file_name(__FILE__)
#include <windows.h> // for DWORD
#include <sstream> // for std::stringstream
#include <iostream> // For std::cout
#include <iomanip> // For std::setw
// For thread_local, see : http://en.cppreference.com/w/cpp/language/storage_duration
extern thread_local const DWORD _CurrentThreadId;
// TODO : Use Boost.Format http://www.boost.org/doc/libs/1_53_0/libs/format/index.html
extern thread_local std::string _logPrefix;
#define LOG_FUNC_BEGIN \
do { if (_DEBUG_TRACE) if(g_bPrintfOn) { \
if (_logPrefix.empty()) { \
std::stringstream tmp; \
tmp << __FILENAME__ << " (0x" << std::hex << std::uppercase << _CurrentThreadId << "): "; \
_logPrefix = tmp.str(); \
}; \
std::stringstream msg; \
msg << _logPrefix << __func__ << "(";
// LOG_FUNC_ARG_OUT writes output via all available ostream << operator overloads, adding detail where possible
#define LOG_FUNC_ARG(arg) \
msg << "\n " << std::setw(26) << std::left << std::setfill(' ') << #arg << " : " << arg;
// LOG_FUNC_ARG_OUT prevents expansion of types, by only rendering as a pointer
#define LOG_FUNC_ARG_OUT(arg) \
msg << "\n " << std::setw(26) << std::left << std::setfill(' ') << #arg << " : 0x" << (void*)arg;
// LOG_FUNC_END closes off function and optional argument logging
#define LOG_FUNC_END \
msg.seekg(-1, std::ios::end); if (msg.get() != '(') msg << '\n'; \
msg << ");\n"; \
std::cout << msg.str(); \
} } while (0)
// Short hand defines :
// Log function without arguments
#define LOG_FUNC() LOG_FUNC_BEGIN LOG_FUNC_END
// Log function with one argument
#define LOG_FUNC_ONE_ARG(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG(arg) LOG_FUNC_END
// Log function with one out argument
#define LOG_FUNC_ONE_ARG_OUT(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG_OUT(arg) LOG_FUNC_END
#endif _LOGGING_H

View File

@ -104,120 +104,7 @@ extern volatile bool g_bPrintfOn;
#pragma warning(disable : 4477)
#endif
// From http://stackoverflow.com/questions/31050113/how-to-extract-the-source-filename-without-path-and-suffix-at-compile-time
constexpr const char* str_end(const char *str) {
return *str ? str_end(str + 1) : str;
}
constexpr bool str_slant(const char *str) {
return *str == '\\' ? true : (*str ? str_slant(str + 1) : false);
}
constexpr const char* r_slant(const char* str) {
return *str == '\\' ? (str + 1) : r_slant(str - 1);
}
constexpr const char* file_name(const char* str) {
return str_slant(str) ? r_slant(str_end(str)) : str;
}
#define __FILENAME__ file_name(__FILE__)
/*! DbgPrintf enabled if _DEBUG_TRACE is set */
#define DbgPrintf(fmt, ...) do { if (_DEBUG_TRACE) if(g_bPrintfOn) printf(fmt, ##__VA_ARGS__); } while (0)
// http://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly
// MSVC_EXPAND works around a Visual C++ problem, expanding __VA_ARGS__ incorrectly:
#define MSVC_EXPAND( x ) x
// From https://codecraft.co/2014/11/25/variadic-macros-tricks/
// And https://groups.google.com/d/msg/comp.std.c/d-6Mj5Lko_s/jqonQLK20HcJ
// Accept any number of args >= N, but expand to just the Nth one. In this case,
// we have settled on 10 as N. We could pick a different number by adjusting
// the count of throwaway args before N. Note that this macro is preceded by
// an underscore--it's an implementation detail, not something we expect people
// to call directly.
#define _GET_NTH_ARG( \
_19, _18, _17, _16, _15, _14, _13, _12, _11, _10, \
_9, _8, _7, _6, _5, _4, _3, _2, _1, _0, \
N, ...) N
// COUNT_VARARGS returns the number of arguments that have been passed to it.
// Count how many args are in a variadic macro. We now use GCC/Clang's extension to
// handle the case where ... expands to nothing. We must add a placeholder arg before
// ##__VA_ARGS__ (its value is totally irrelevant, but it's necessary to preserve
// the shifting offset we want). In addition, we must add 0 as a valid value to be in
// the N position.
#define COUNT_VARARGS(...) MSVC_EXPAND(_GET_NTH_ARG("ignored", ##__VA_ARGS__, \
19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \
9, 8, 7, 6, 5, 4, 3, 2, 1, 0) )
// Define some macros to help us create overrides based on the
// arity of a for-each-style macro.
#define _fe_0(_call, ...)
#define _fe_1(_call, x) _call(x)
#define _fe_2(_call, x, ...) _call(x) _fe_1(_call, __VA_ARGS__)
#define _fe_3(_call, x, ...) _call(x) _fe_2(_call, __VA_ARGS__)
#define _fe_4(_call, x, ...) _call(x) _fe_3(_call, __VA_ARGS__)
#define _fe_5(_call, x, ...) _call(x) _fe_4(_call, __VA_ARGS__)
#define _fe_6(_call, x, ...) _call(x) _fe_5(_call, __VA_ARGS__)
#define _fe_7(_call, x, ...) _call(x) _fe_6(_call, __VA_ARGS__)
#define _fe_8(_call, x, ...) _call(x) _fe_7(_call, __VA_ARGS__)
#define _fe_9(_call, x, ...) _call(x) _fe_8(_call, __VA_ARGS__)
#define _fe_10(_call, x, ...) _call(x) _fe_9(_call, __VA_ARGS__)
#define _fe_11(_call, x, ...) _call(x) _fe_10(_call, __VA_ARGS__)
#define _fe_12(_call, x, ...) _call(x) _fe_11(_call, __VA_ARGS__)
#define _fe_13(_call, x, ...) _call(x) _fe_12(_call, __VA_ARGS__)
#define _fe_14(_call, x, ...) _call(x) _fe_13(_call, __VA_ARGS__)
#define _fe_15(_call, x, ...) _call(x) _fe_14(_call, __VA_ARGS__)
#define _fe_16(_call, x, ...) _call(x) _fe_15(_call, __VA_ARGS__)
#define _fe_17(_call, x, ...) _call(x) _fe_16(_call, __VA_ARGS__)
#define _fe_18(_call, x, ...) _call(x) _fe_17(_call, __VA_ARGS__)
#define _fe_19(_call, x, ...) _call(x) _fe_18(_call, __VA_ARGS__)
/**
* Provide a for-each construct for variadic macros. Supports up
* to 10 args.
*
* Example usage1:
* #define FWD_DECLARE_CLASS(cls) class cls;
* CALL_MACRO_X_FOR_EACH(FWD_DECLARE_CLASS, Foo, Bar)
*
* Example usage 2:
* #define START_NS(ns) namespace ns {
* #define END_NS(ns) }
* #define MY_NAMESPACES System, Net, Http
* CALL_MACRO_X_FOR_EACH(START_NS, MY_NAMESPACES)
* typedef foo int;
* CALL_MACRO_X_FOR_EACH(END_NS, MY_NAMESPACES)
*/
#define CALL_MACRO_X_FOR_EACH(x, ...) MSVC_EXPAND(_GET_NTH_ARG("ignored", ##__VA_ARGS__, \
_fe_19, _fe_18,_fe_17,_fe_16,_fe_15,_fe_14,_fe_13,_fe_12,_fe_11,_fe_10, \
_fe_9, _fe_8, _fe_7, _fe_6, _fe_5, _fe_4, _fe_3, _fe_2, _fe_1, _fe_0)(x, ##__VA_ARGS__))
#define DBG_ARG_WIDTH 18
#define DbgPrintHexArg(arg) printf("\n %*s : 0x%.08X", DBG_ARG_WIDTH, #arg, arg);
// See https://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html
// TODO : change multiple printf calls into 1, to avoid mixing output of multiple threads
// perhaps via http://stackoverflow.com/a/2342176/12170
#define DbgFuncHexArgs(...) do { if (_DEBUG_TRACE) if(g_bPrintfOn) \
printf("%s (0x%X): %s(", __FILENAME__, GetCurrentThreadId(), __func__); \
if (COUNT_VARARGS(##__VA_ARGS__) > 0) { \
} \
printf(");\n"); \
} while (0)
/* TODO : Get this going inside DbgFuncHexArgs :
CALL_MACRO_X_FOR_EACH(DbgPrintHexArg, __VA_ARGS__); \
printf("\n"); \
*/
// See https://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html
// See http://stackoverflow.com/questions/1644868/c-define-macro-for-debug-printing
#define DbgFuncFmtArgs(fmt, ...) \
do { if (_DEBUG_TRACE) if(g_bPrintfOn) \
printf("%s (0x%X): %s(\n" fmt ");\n", __FILENAME__, GetCurrentThreadId(), __func__, __VA_ARGS__); \
} while (0)
#endif
#endif CXBX_H

View File

@ -79,7 +79,7 @@ CXBXKRNL_API void CxbxKrnlPanic();
CXBXKRNL_API void CxbxKrnlNoFunc();
/*! kernel thunk table */
extern CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367];
extern CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379];
/*! thread local storage structure */
extern CXBXKRNL_API Xbe::TLS *CxbxKrnl_TLS;

File diff suppressed because it is too large Load Diff

View File

@ -39,6 +39,7 @@
#include "Emu.h"
#include "EmuFS.h"
#include "Logging.h"
// ******************************************************************
// * prevent name collisions
@ -58,7 +59,7 @@ PVOID WINAPI XTL::EmuXGIsSwizzledFormat
XTL::D3DFORMAT Format
)
{
DbgFuncHexArgs(Format);
LOG_FUNC_ONE_ARG(Format);
return FALSE;
}
@ -78,8 +79,16 @@ VOID WINAPI XTL::EmuXGSwizzleRect
DWORD BytesPerPixel
)
{
DbgFuncHexArgs(pSource, Pitch, pRect, pDest, Width, Height,
pPoint, BytesPerPixel);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pSource)
LOG_FUNC_ARG(Pitch)
LOG_FUNC_ARG(pRect)
LOG_FUNC_ARG(pDest)
LOG_FUNC_ARG(Width)
LOG_FUNC_ARG(Height)
LOG_FUNC_ARG(pPoint)
LOG_FUNC_ARG(BytesPerPixel)
LOG_FUNC_END;
if(pRect == NULL && pPoint == NULL && Pitch == 0)
{
@ -135,8 +144,18 @@ VOID WINAPI XTL::EmuXGSwizzleBox
DWORD BytesPerPixel
)
{
DbgFuncHexArgs(pSource, RowPitch, SlicePitch, pBox, pDest, Width, Height,
Depth, pPoint, BytesPerPixel);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pSource)
LOG_FUNC_ARG(RowPitch)
LOG_FUNC_ARG(SlicePitch)
LOG_FUNC_ARG(pBox)
LOG_FUNC_ARG(pDest)
LOG_FUNC_ARG(Width)
LOG_FUNC_ARG(Height)
LOG_FUNC_ARG(Depth)
LOG_FUNC_ARG(pPoint)
LOG_FUNC_ARG(BytesPerPixel)
LOG_FUNC_END;
if(pDest != (LPVOID) 0x80000000)
{
@ -296,7 +315,11 @@ HRESULT WINAPI XTL::EmuXGWriteSurfaceOrTextureToXPR
BOOL bWriteSurfaceAsTexture
)
{
DbgFuncHexArgs(pResource, cPath, bWriteSurfaceAsTexture);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pResource)
LOG_FUNC_ARG(cPath)
LOG_FUNC_ARG(bWriteSurfaceAsTexture)
LOG_FUNC_END;
// TODO: If necessary, either reverse the .xbx and .xpr file formats
// and write the surface/texture to a file, or output a generic .xbx
@ -323,8 +346,17 @@ VOID WINAPI XTL::EmuXGSetTextureHeader
UINT Pitch
)
{
DbgFuncHexArgs(Width, Height, Levels, Usage,
Format, Pool, pTexture, Data, Pitch);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Width)
LOG_FUNC_ARG(Height)
LOG_FUNC_ARG(Levels)
LOG_FUNC_ARG(Usage)
LOG_FUNC_ARG(Format)
LOG_FUNC_ARG(Pool)
LOG_FUNC_ARG(pTexture)
LOG_FUNC_ARG(Data)
LOG_FUNC_ARG(Pitch)
LOG_FUNC_END;
// NOTES: This function simply creates a texture that needs to be registered
// via D3DDevice_Register afterwards. So, do I just create the texture via
@ -388,7 +420,11 @@ VOID WINAPI XTL::EmuXGSetTextureHeader
//{
//
//
// DbgFuncHexArgs(pFontData, uFontDataSize, ppFont);
// LOG_FUNC_BEGIN
// LOG_FUNC_ARG(pFontData)
// LOG_FUNC_ARG(uFontDataSize)
// LOG_FUNC_ARG(ppFont)
// LOG_FUNC_END;
//
// __asm int 3;
//

View File

@ -35,6 +35,7 @@
#define _XBOXKRNL_DEFEXTRN_
#include "Emu.h"
#include "Logging.h"
#include "EmuFS.h"
// ******************************************************************
@ -56,7 +57,10 @@ int WINAPI XTL::EmuWSAStartup
WSADATA *lpWSAData
)
{
DbgFuncHexArgs(wVersionRequested, lpWSAData);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(wVersionRequested)
LOG_FUNC_ARG(lpWSAData)
LOG_FUNC_END;
int ret = WSAStartup(wVersionRequested, lpWSAData);
@ -71,10 +75,12 @@ INT WINAPI XTL::EmuXNetStartup
const PVOID pDummy
)
{
DbgFuncHexArgs(pDummy);
LOG_FUNC_ONE_ARG(pDummy);
// Fake Successfull...hehehe...sucker...hehehehehe
return 0;
INT ret = 0;
return ret;
}
// ******************************************************************
@ -82,10 +88,12 @@ INT WINAPI XTL::EmuXNetStartup
// ******************************************************************
DWORD WINAPI XTL::EmuXNetGetEthernetLinkStatus()
{
DbgFuncHexArgs();
LOG_FUNC();
// for now, no ethernet connection is available
return XNET_ETHERNET_LINK_ACTIVE | XNET_ETHERNET_LINK_100MBPS;
DWORD ret = XNET_ETHERNET_LINK_ACTIVE | XNET_ETHERNET_LINK_100MBPS;
return ret;
}
// ******************************************************************
@ -98,7 +106,12 @@ SOCKET XTL::EmuThis::Emusocket
int protocol
)
{
DbgFuncHexArgs(this, af, type, protocol);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(this)
LOG_FUNC_ARG(af)
LOG_FUNC_ARG(type)
LOG_FUNC_ARG(protocol)
LOG_FUNC_END;
SOCKET ret = socket(af, type, protocol);
@ -108,9 +121,19 @@ SOCKET XTL::EmuThis::Emusocket
// ******************************************************************
// * func: EmuThis::Emubind
// ******************************************************************
int XTL::EmuThis::Emubind(SOCKET s, const struct sockaddr FAR *name, int namelen)
int XTL::EmuThis::Emubind
(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
)
{
DbgFuncHexArgs(this, s, name, namelen);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(this)
LOG_FUNC_ARG(s)
LOG_FUNC_ARG(name)
LOG_FUNC_ARG(namelen)
LOG_FUNC_END;
// TODO: Host-To-Network order if necessary (probably not?)
@ -122,9 +145,17 @@ int XTL::EmuThis::Emubind(SOCKET s, const struct sockaddr FAR *name, int namelen
// ******************************************************************
// * func: EmuThis::Emulisten
// ******************************************************************
int XTL::EmuThis::Emulisten(SOCKET s, int backlog)
int XTL::EmuThis::Emulisten
(
SOCKET s,
int backlog
)
{
DbgFuncHexArgs(this, s, backlog);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(this)
LOG_FUNC_ARG(s)
LOG_FUNC_ARG(backlog)
LOG_FUNC_END;
// TODO: Host-To-Network order if necessary (probably not?)
@ -136,9 +167,19 @@ int XTL::EmuThis::Emulisten(SOCKET s, int backlog)
// ******************************************************************
// * func: EmuThis::Emuioctlsocket
// ******************************************************************
int XTL::EmuThis::Emuioctlsocket(SOCKET s, long cmd, u_long FAR *argp)
int XTL::EmuThis::Emuioctlsocket
(
SOCKET s,
long cmd,
u_long FAR *argp
)
{
DbgFuncHexArgs(this, s, cmd, argp);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(this)
LOG_FUNC_ARG(s)
LOG_FUNC_ARG(cmd)
LOG_FUNC_ARG(argp)
LOG_FUNC_END;
int ret = ioctlsocket(s, cmd, argp);
@ -154,18 +195,16 @@ HRESULT WINAPI XOnlineLaunchNewImage
LPVOID pLaunchData
)
{
DbgFuncFmtArgs(
" lpImagePath : 0x%.08X (%s)\n"
" pLaunchData : 0x%.08X\n",
lpImagePath, lpImagePath, pLaunchData);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(lpImagePath)
LOG_FUNC_ARG(pLaunchData)
LOG_FUNC_END;
// TODO: Launch another .xbe from Cxbx someday?
HRESULT ret = E_FAIL;
return E_FAIL;
return ret;
}
// ******************************************************************
@ -180,9 +219,17 @@ HRESULT WINAPI XTL::EmuXOnlineLogon
HANDLE pHandle
)
{
DbgFuncHexArgs(pUsers, pdwServiceIDs, dwServices, hEvent, pHandle);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pUsers)
LOG_FUNC_ARG(pdwServiceIDs)
LOG_FUNC_ARG(dwServices)
LOG_FUNC_ARG(hEvent)
LOG_FUNC_ARG(pHandle)
LOG_FUNC_END;
// TODO: What will it take to log on to Xbox Live?
return HRESULT(0x80151000L); // XONLINE_E_LOGON_NO_NETWORK_CONNECTION
HRESULT ret = HRESULT(0x80151000L); // XONLINE_E_LOGON_NO_NETWORK_CONNECTION
return ret;
}

View File

@ -41,6 +41,7 @@ namespace xboxkrnl
};
#include "CxbxKrnl.h"
#include "Logging.h"
#include "Emu.h"
#include "EmuFS.h"
#include "EmuShared.h"
@ -68,7 +69,10 @@ HRESULT WINAPI XTL::EmuXACTEngineCreate
X_XACTEngine** ppEngine
)
{
DbgFuncHexArgs(pParams, ppEngine);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pParams)
LOG_FUNC_ARG(ppEngine)
LOG_FUNC_END;
// TODO: Any other form of initialization?
@ -84,7 +88,7 @@ HRESULT WINAPI XTL::EmuXACTEngineCreate
// ******************************************************************
void WINAPI XTL::EmuXACTEngineDoWork()
{
DbgFuncHexArgs();
LOG_FUNC();
// TODO: Anything else required here?
// AFAIK, this function just calls DirectSoundDoWork()
@ -107,7 +111,12 @@ HRESULT WINAPI XTL::EmuIXACTEngine_RegisterWaveBank
X_XACTWaveBank** ppWaveBank
)
{
DbgFuncHexArgs(pThis, pvData, dwSize, ppWaveBank);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pvData)
LOG_FUNC_ARG(dwSize)
LOG_FUNC_ARG(ppWaveBank)
LOG_FUNC_END;
// TODO: Implement
@ -126,7 +135,11 @@ HRESULT WINAPI XTL::EmuIXACTEngine_RegisterStreamedWaveBank
X_XACTWaveBank** ppWaveBank
)
{
DbgFuncHexArgs(pThis, pParams, ppWaveBank);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pParams)
LOG_FUNC_ARG(ppWaveBank)
LOG_FUNC_END;
// TODO: Implement
@ -146,7 +159,12 @@ HRESULT WINAPI XTL::EmuIXACTEngine_CreateSoundBank
X_XACTSoundBank** ppSoundBank
)
{
DbgFuncHexArgs(pThis, pvData, dwSize, ppSoundBank);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pvData)
LOG_FUNC_ARG(dwSize)
LOG_FUNC_ARG(ppSoundBank)
LOG_FUNC_END;
// TODO: Implement
@ -167,7 +185,13 @@ HRESULT WINAPI XTL::EmuIXACTEngine_DownloadEffectsImage
LPVOID* ppImageDesc
)
{
DbgFuncHexArgs(pThis, pvData, dwSize, pEffectLoc, ppImageDesc);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pvData)
LOG_FUNC_ARG(dwSize)
LOG_FUNC_ARG(pEffectLoc)
LOG_FUNC_ARG(ppImageDesc)
LOG_FUNC_END;
// TODO: Implement
@ -184,7 +208,11 @@ HRESULT WINAPI XTL::EmuIXACTEngine_CreateSoundSource
X_XACTSoundSource** ppSoundSource
)
{
DbgFuncHexArgs(pThis, dwFlags, ppSoundSource);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(dwFlags)
LOG_FUNC_ARG(ppSoundSource)
LOG_FUNC_END;
*ppSoundSource = (X_XACTSoundSource*) CxbxMalloc( sizeof( X_XACTSoundSource ) );
@ -200,7 +228,10 @@ HRESULT WINAPI XTL::EmuIXACTEngine_EnableHeadphones
BOOL fEnabled
)
{
DbgFuncHexArgs(pThis, fEnabled);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(fEnabled)
LOG_FUNC_END;
return S_OK;
}
@ -220,20 +251,16 @@ HRESULT WINAPI XTL::EmuIXACTEngine_SetListenerOrientation
DWORD dwApply
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" xFront : %f"
" yFront : %f"
" zFront : %f"
" xTop : %f"
" yTop : %f"
" zTop : %f"
" dwApply : 0x%.08X",
pThis, xFront, yFront, zFront, xTop, yTop, zTop, dwApply);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(xFront)
LOG_FUNC_ARG(yFront)
LOG_FUNC_ARG(zFront)
LOG_FUNC_ARG(xTop)
LOG_FUNC_ARG(yTop)
LOG_FUNC_ARG(zTop)
LOG_FUNC_ARG(dwApply)
LOG_FUNC_END;
return S_OK;
}
@ -250,17 +277,13 @@ HRESULT WINAPI XTL::EmuIXACTEngine_SetListenerPosition
DWORD dwApply
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" x : %f"
" y : %f"
" z : %f"
" dwApply : 0x%.08X\n",
pThis, x, y, z, dwApply);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(x)
LOG_FUNC_ARG(y)
LOG_FUNC_ARG(z)
LOG_FUNC_ARG(dwApply)
LOG_FUNC_END;
return S_OK;
}
@ -277,17 +300,13 @@ HRESULT WINAPI XTL::EmuIXACTEngine_SetListenerVelocity
DWORD dwApply
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" x : %f"
" y : %f"
" z : %f"
" dwApply : 0x%.08X\n",
pThis, x, y, z, dwApply);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(x)
LOG_FUNC_ARG(y)
LOG_FUNC_ARG(z)
LOG_FUNC_ARG(dwApply)
LOG_FUNC_END;
return S_OK;
}
@ -302,7 +321,11 @@ HRESULT WINAPI XTL::EmuIXACTEngine_SetMasterVolume
LONG lVolume
)
{
DbgFuncHexArgs(pThis, wCategory, lVolume);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(wCategory)
LOG_FUNC_ARG(lVolume)
LOG_FUNC_END;
return S_OK;
}
@ -310,9 +333,12 @@ HRESULT WINAPI XTL::EmuIXACTEngine_SetMasterVolume
// ******************************************************************
// * EmuIXACTEngine_CommitDeferredSettings
// ******************************************************************
HRESULT WINAPI XTL::EmuIXACTEngine_CommitDeferredSettings(X_XACTEngine* pThis)
HRESULT WINAPI XTL::EmuIXACTEngine_CommitDeferredSettings
(
X_XACTEngine* pThis
)
{
DbgFuncHexArgs(pThis);
LOG_FUNC_ONE_ARG(pThis);
return S_OK;
}
@ -327,15 +353,11 @@ HRESULT WINAPI XTL::EmuIXACTSoundBank_GetSoundCueIndexFromFriendlyName
DWORD* pdwSoundCueIndex
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" pFriendlyName : (%s)\n"
" pdwSoundCueIndex : 0x%.08X\n",
pThis, pFriendlyName, pdwSoundCueIndex);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pFriendlyName)
LOG_FUNC_ARG(pdwSoundCueIndex)
LOG_FUNC_END;
return S_OK;
}
@ -352,7 +374,13 @@ HRESULT WINAPI XTL::EmuIXACTSoundBank_Play
X_XACTSoundCue** ppSoundCue
)
{
DbgFuncHexArgs(pThis, dwSoundCueIndex, pSoundSource, dwFlags, ppSoundCue);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(dwSoundCueIndex)
LOG_FUNC_ARG(pSoundSource)
LOG_FUNC_ARG(dwFlags)
LOG_FUNC_ARG(ppSoundCue)
LOG_FUNC_END;
return S_OK;
}
@ -368,7 +396,12 @@ HRESULT WINAPI XTL::EmuIXACTSoundBank_Stop
X_XACTSoundCue* pSoundCue
)
{
DbgFuncHexArgs(pThis, dwSoundCueIndex, dwFlags, pSoundCue);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(dwSoundCueIndex)
LOG_FUNC_ARG(dwFlags)
LOG_FUNC_ARG(pSoundCue)
LOG_FUNC_END;
return S_OK;
}
@ -385,17 +418,13 @@ HRESULT WINAPI XTL::EmuIXACTSoundSource_SetPosition
DWORD dwApply
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" x : %f\n"
" y : %f\n"
" z : %f\n"
" dwApply : 0x%.08X\n",
pThis, x, y, z, dwApply);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(x)
LOG_FUNC_ARG(y)
LOG_FUNC_ARG(z)
LOG_FUNC_ARG(dwApply)
LOG_FUNC_END;
return S_OK;
}
@ -412,17 +441,13 @@ HRESULT WINAPI XTL::EmuIXACTSoundSource_SetVelocity
DWORD dwApply
)
{
DbgFuncFmtArgs(
" pThis : 0x%.08X\n"
" x : %f\n"
" y : %f\n"
" z : %f\n"
" dwApply : 0x%.08X\n",
pThis, x, y, z, dwApply);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(x)
LOG_FUNC_ARG(y)
LOG_FUNC_ARG(z)
LOG_FUNC_ARG(dwApply)
LOG_FUNC_END;
return S_OK;
}
@ -436,7 +461,10 @@ HRESULT WINAPI XTL::EmuIXACTEngine_RegisterNotification
PCXACT_NOTIFICATION_DESCRIPTION pNotificationDesc
)
{
DbgFuncHexArgs(pThis, pNotificationDesc);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pNotificationDesc)
LOG_FUNC_END;
return S_OK;
}
@ -451,7 +479,11 @@ HRESULT WINAPI XTL::EmuIXACTEngine_GetNotification
LPVOID pNotification
)
{
DbgFuncHexArgs(pThis, pNotificationDesc, pNotification);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pNotificationDesc)
LOG_FUNC_ARG(pNotification)
LOG_FUNC_END;
// TODO: The contents of XACT_NOTIFICATION can vary from one XDK to the next.
// The definition for 4627 is different than 5558.
@ -468,7 +500,11 @@ HRESULT WINAPI XTL::EmuIXACTEngine_UnRegisterWaveBank
X_XACTWaveBank* pWaveBank
)
{
DbgFuncHexArgs(pThis, pWaveBank);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThis)
LOG_FUNC_ARG(pWaveBank)
LOG_FUNC_END;
// Even though the documentation doesn't tell us much, I'm
// assuming that after this function is called, the pointer

View File

@ -43,6 +43,7 @@ namespace xboxkrnl
#include <Shlwapi.h>
#include "CxbxKrnl.h"
#include "Logging.h"
#include "Emu.h"
#include "EmuFile.h"
#include "EmuFS.h"
@ -84,7 +85,7 @@ XTL::LAUNCH_DATA g_SavedLaunchData;
// ******************************************************************
BOOL WINAPI XTL::EmuXFormatUtilityDrive()
{
DbgFuncHexArgs();
LOG_FUNC();
// TODO: yeah... we'll format... riiiiight
@ -99,7 +100,7 @@ DWORD WINAPI XTL::EmuGetTimeZoneInformation
OUT LPTIME_ZONE_INFORMATION lpTimeZoneInformation
)
{
DbgFuncHexArgs(lpTimeZoneInformation);
LOG_FUNC_ONE_ARG_OUT(lpTimeZoneInformation);
DWORD dwRet = GetTimeZoneInformation(lpTimeZoneInformation);
@ -114,7 +115,7 @@ BOOL WINAPI XTL::EmuQueryPerformanceCounter
PLARGE_INTEGER lpPerformanceCount
)
{
DbgFuncHexArgs(lpPerformanceCount);
LOG_FUNC_ONE_ARG(lpPerformanceCount);
BOOL bRet = QueryPerformanceCounter(lpPerformanceCount);
@ -132,7 +133,7 @@ BOOL WINAPI XTL::EmuQueryPerformanceFrequency
PLARGE_INTEGER lpFrequency
)
{
DbgFuncHexArgs(lpFrequency);
LOG_FUNC_ONE_ARG(lpFrequency);
BOOL bRet = QueryPerformanceFrequency(lpFrequency);
@ -147,7 +148,7 @@ BOOL WINAPI XTL::EmuXMountUtilityDrive
BOOL fFormatClean
)
{
DbgFuncHexArgs(fFormatClean);
LOG_FUNC_ONE_ARG(fFormatClean);
CxbxMountUtilityDrive(fFormatClean);
@ -163,7 +164,10 @@ VOID WINAPI XTL::EmuXInitDevices
PXDEVICE_PREALLOC_TYPE PreallocTypes
)
{
DbgFuncHexArgs(dwPreallocTypeCount, PreallocTypes);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwPreallocTypeCount)
LOG_FUNC_ARG(PreallocTypes)
LOG_FUNC_END;
/*for( DWORD i = 0; i < dwPreallocTypeCount; i++ )
{
@ -186,10 +190,8 @@ VOID WINAPI XTL::EmuXInitDevices
{
g_hInputHandle[v] = 0;
}
return;
return;
}
// ******************************************************************
@ -200,7 +202,7 @@ DWORD WINAPI XTL::EmuXGetDevices
PXPP_DEVICE_TYPE DeviceType
)
{
DbgFuncHexArgs(DeviceType);
LOG_FUNC_ONE_ARG(DeviceType);
DWORD ret = 0;
@ -209,9 +211,7 @@ DWORD WINAPI XTL::EmuXGetDevices
else
EmuWarning("Unknown DeviceType (0x%.08X, 0x%.08X, 0x%.08X)\n", DeviceType->Reserved[0], DeviceType->Reserved[1], DeviceType->Reserved[2]);
return ret;
return ret;
}
// ******************************************************************
@ -224,7 +224,11 @@ BOOL WINAPI XTL::EmuXGetDeviceChanges
PDWORD pdwRemovals
)
{
DbgFuncHexArgs(DeviceType, pdwInsertions, pdwRemovals);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(DeviceType)
LOG_FUNC_ARG(pdwInsertions)
LOG_FUNC_ARG(pdwRemovals)
LOG_FUNC_END;
BOOL bRet = FALSE;
static BOOL bFirst = TRUE;
@ -251,9 +255,7 @@ BOOL WINAPI XTL::EmuXGetDeviceChanges
*pdwRemovals = 0;
}
return TRUE; //bRet;
return TRUE; //bRet;
}
// ******************************************************************
@ -267,7 +269,12 @@ HANDLE WINAPI XTL::EmuXInputOpen
IN PXINPUT_POLLING_PARAMETERS pPollingParameters OPTIONAL
)
{
DbgFuncHexArgs(DeviceType, dwPort, dwSlot, pPollingParameters);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(DeviceType)
LOG_FUNC_ARG(dwPort)
LOG_FUNC_ARG(dwSlot)
LOG_FUNC_ARG(pPollingParameters)
LOG_FUNC_END;
POLLING_PARAMETERS_HANDLE *pph = 0;
@ -319,9 +326,7 @@ HANDLE WINAPI XTL::EmuXInputOpen
g_bXInputOpenCalled = true;
return (HANDLE)pph;
return (HANDLE)pph;
}
// ******************************************************************
@ -332,7 +337,7 @@ VOID WINAPI XTL::EmuXInputClose
IN HANDLE hDevice
)
{
DbgFuncHexArgs(hDevice);
LOG_FUNC_ONE_ARG(hDevice);
POLLING_PARAMETERS_HANDLE *pph = (POLLING_PARAMETERS_HANDLE*)hDevice;
@ -372,7 +377,7 @@ DWORD WINAPI XTL::EmuXInputPoll
IN HANDLE hDevice
)
{
DbgFuncHexArgs(hDevice);
LOG_FUNC_ONE_ARG(hDevice);
POLLING_PARAMETERS_HANDLE *pph = (POLLING_PARAMETERS_HANDLE*)hDevice;
@ -427,7 +432,10 @@ DWORD WINAPI XTL::EmuXInputGetCapabilities
OUT PXINPUT_CAPABILITIES pCapabilities
)
{
DbgFuncHexArgs(hDevice, pCapabilities);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hDevice)
LOG_FUNC_ARG_OUT(pCapabilities)
LOG_FUNC_END;
DWORD ret = ERROR_INVALID_HANDLE;
@ -447,9 +455,7 @@ DWORD WINAPI XTL::EmuXInputGetCapabilities
}
}
return ret;
return ret;
}
// ******************************************************************
@ -461,7 +467,10 @@ DWORD WINAPI XTL::EmuXInputGetState
OUT PXINPUT_STATE pState
)
{
DbgFuncHexArgs(hDevice, pState);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hDevice)
LOG_FUNC_ARG_OUT(pState)
LOG_FUNC_END;
DWORD ret = ERROR_INVALID_HANDLE;
@ -498,9 +507,7 @@ DWORD WINAPI XTL::EmuXInputGetState
else
EmuWarning( "EmuXInputGetState(): pph == NULL!" );
return ret;
return ret;
}
// ******************************************************************
@ -512,7 +519,10 @@ DWORD WINAPI XTL::EmuXInputSetState
IN OUT PXINPUT_FEEDBACK pFeedback
)
{
DbgFuncHexArgs(hDevice, pFeedback);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hDevice)
LOG_FUNC_ARG(pFeedback)
LOG_FUNC_END;
DWORD ret = ERROR_IO_PENDING;
@ -573,9 +583,7 @@ DWORD WINAPI XTL::EmuXInputSetState
}
}
return ret;
return ret;
}
@ -588,7 +596,10 @@ BOOL WINAPI XTL::EmuSetThreadPriorityBoost
BOOL DisablePriorityBoost
)
{
DbgFuncHexArgs(hThread, DisablePriorityBoost);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hThread)
LOG_FUNC_ARG(DisablePriorityBoost)
LOG_FUNC_END;
BOOL bRet = SetThreadPriorityBoost(hThread, DisablePriorityBoost);
@ -607,7 +618,10 @@ BOOL WINAPI XTL::EmuSetThreadPriority
int nPriority
)
{
DbgFuncHexArgs(hThread, nPriority);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hThread)
LOG_FUNC_ARG(nPriority)
LOG_FUNC_END;
BOOL bRet = SetThreadPriority(hThread, nPriority);
@ -626,7 +640,7 @@ int WINAPI XTL::EmuGetThreadPriority
HANDLE hThread
)
{
DbgFuncHexArgs(hThread);
LOG_FUNC_ONE_ARG(hThread);
int iRet = GetThreadPriority(hThread);
@ -645,7 +659,10 @@ BOOL WINAPI XTL::EmuGetExitCodeThread
LPDWORD lpExitCode
)
{
DbgFuncHexArgs(hThread, lpExitCode);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hThread)
LOG_FUNC_ARG(lpExitCode)
LOG_FUNC_END;
BOOL bRet = GetExitCodeThread(hThread, lpExitCode);
@ -661,7 +678,10 @@ VOID WINAPI XTL::EmuXapiThreadStartup
DWORD dwDummy2
)
{
DbgFuncHexArgs(dwDummy1, dwDummy2);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwDummy1)
LOG_FUNC_ARG(dwDummy2)
LOG_FUNC_END;
typedef int (__stdcall *pfDummyFunc)(DWORD dwDummy);
@ -693,12 +713,10 @@ VOID WINAPI XTL::EmuXRegisterThreadNotifyRoutine
BOOL fRegister
)
{
DbgFuncFmtArgs(
" pThreadNotification : 0x%.08X (0x%.08X)\n"
" fRegister : 0x%.08X\n",
pThreadNotification, pThreadNotification->pfnNotifyRoutine, fRegister);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pThreadNotification)
LOG_FUNC_ARG(fRegister)
LOG_FUNC_END;
if(fRegister)
{
@ -747,7 +765,11 @@ DWORD WINAPI XTL::EmuQueueUserAPC
DWORD dwData
)
{
DbgFuncHexArgs(pfnAPC, hThread, dwData);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pfnAPC)
LOG_FUNC_ARG(hThread)
LOG_FUNC_ARG(dwData)
LOG_FUNC_END;
DWORD dwRet = 0;
@ -776,7 +798,12 @@ BOOL WINAPI XTL::EmuGetOverlappedResult
BOOL bWait
)
{
DbgFuncHexArgs(hFile, lpOverlapped, lpNumberOfBytesTransferred, bWait);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hFile)
LOG_FUNC_ARG(lpOverlapped)
LOG_FUNC_ARG(lpNumberOfBytesTransferred)
LOG_FUNC_ARG(bWait)
LOG_FUNC_END;
BOOL bRet = GetOverlappedResult( hFile, lpOverlapped, lpNumberOfBytesTransferred, bWait );
@ -795,12 +822,10 @@ DWORD WINAPI XTL::EmuXLaunchNewImage
PLAUNCH_DATA pLaunchData
)
{
DbgFuncFmtArgs(
" lpTitlePath : 0x%.08X (%s)\n"
" pLaunchData : 0x%.08X\n",
lpTitlePath, lpTitlePath, pLaunchData);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(lpTitlePath)
LOG_FUNC_ARG(pLaunchData)
LOG_FUNC_END;
// If this function succeeds, it doesn't get a chance to return anything.
DWORD dwRet = ERROR_GEN_FAILURE;
@ -878,8 +903,11 @@ DWORD WINAPI XTL::EmuXGetLaunchInfo
PLAUNCH_DATA pLaunchData
)
{
DbgFuncHexArgs(pdwLaunchDataType, pLaunchData);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(pdwLaunchDataType)
LOG_FUNC_ARG(pLaunchData)
LOG_FUNC_END;
// The title was launched by turning on the Xbox console with the title disc already in the DVD drive
DWORD dwRet = ERROR_NOT_FOUND;
@ -940,7 +968,7 @@ VOID WINAPI XTL::EmuXSetProcessQuantumLength
DWORD dwMilliseconds
)
{
DbgFuncHexArgs(dwMilliseconds);
LOG_FUNC_ONE_ARG(dwMilliseconds);
// TODO: Implement?
EmuWarning("XSetProcessQuantumLength is being ignored!");
@ -951,7 +979,7 @@ VOID WINAPI XTL::EmuXSetProcessQuantumLength
// ******************************************************************
DWORD WINAPI XTL::EmuXGetFileCacheSize()
{
DbgFuncHexArgs();
LOG_FUNC();
// Return the default cache size for now.
// TODO: Save the file cache size if/when set.
@ -971,7 +999,12 @@ DWORD WINAPI XTL::EmuSignalObjectAndWait
BOOL bAlertable
)
{
DbgFuncHexArgs(hObjectToSignal, hObjectToWaitOn, dwMilliseconds, bAlertable);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hObjectToSignal)
LOG_FUNC_ARG(hObjectToWaitOn)
LOG_FUNC_ARG(dwMilliseconds)
LOG_FUNC_ARG(bAlertable)
LOG_FUNC_END;
DWORD dwRet = SignalObjectAndWait( hObjectToSignal, hObjectToWaitOn, dwMilliseconds, bAlertable );
@ -981,9 +1014,12 @@ DWORD WINAPI XTL::EmuSignalObjectAndWait
// ******************************************************************
// * func: EmuPulseEvent
// ******************************************************************
BOOL WINAPI XTL::EmuPulseEvent( HANDLE hEvent )
BOOL WINAPI XTL::EmuPulseEvent
(
HANDLE hEvent
)
{
DbgFuncHexArgs(hEvent);
LOG_FUNC_ONE_ARG(hEvent);
// TODO: This function might be a bit too high level. If it is,
// feel free to implement NtPulseEvent in EmuKrnl.cpp
@ -1005,7 +1041,13 @@ MMRESULT WINAPI XTL::EmutimeSetEvent
UINT fuEvent
)
{
DbgFuncHexArgs(uDelay, uResolution, fptc, dwUser, fuEvent);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(uDelay)
LOG_FUNC_ARG(uResolution)
LOG_FUNC_ARG(fptc)
LOG_FUNC_ARG(dwUser)
LOG_FUNC_ARG(fuEvent)
LOG_FUNC_END;
MMRESULT Ret = timeSetEvent( uDelay, uResolution, fptc, (DWORD_PTR) dwUser, fuEvent );
@ -1020,7 +1062,7 @@ MMRESULT WINAPI XTL::EmutimeKillEvent
UINT uTimerID
)
{
DbgFuncHexArgs(uTimerID);
LOG_FUNC_ONE_ARG(uTimerID);
MMRESULT Ret = timeKillEvent( uTimerID );
@ -1038,7 +1080,12 @@ VOID WINAPI XTL::EmuRaiseException
CONST ULONG_PTR *lpArguments // array of arguments
)
{
DbgFuncHexArgs(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, lpArguments);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwExceptionCode)
LOG_FUNC_ARG(dwExceptionFlags)
LOG_FUNC_ARG(nNumberOfArguments)
LOG_FUNC_ARG(lpArguments)
LOG_FUNC_END;
// TODO: Implement or not?
// RaiseException(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, (*(ULONG_PTR**) &lpArguments));
@ -1052,13 +1099,11 @@ DWORD WINAPI XTL::EmuGetFileAttributesA
LPCSTR lpFileName // name of file or directory
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(lpFileName)
LOG_FUNC_END;
DbgFuncFmtArgs(
" lpFileName : (%s)\n",
lpFileName);
// Dues Ex...
// Deus Ex...
// Shave off the D:\ and default to the current directory.
// TODO: Other directories (i.e. Utility)?
@ -1093,19 +1138,15 @@ DWORD WINAPI XTL::EmuXMountMUA
PCHAR pchDrive
)
{
DbgFuncFmtArgs(
" dwPort : 0x%.08X\n"
" dwSlot : 0x%.08X\n"
" pchDrive : 0x%.08X (%s)\n",
dwPort, dwSlot, pchDrive, pchDrive);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwPort)
LOG_FUNC_ARG(dwSlot)
LOG_FUNC_ARG(pchDrive)
LOG_FUNC_END;
// TODO: Actually allow memory card emulation? This might make transferring
// game saves a bit easier if the memory card directory was configurable. =]
return E_FAIL;
}
@ -1119,13 +1160,11 @@ HANDLE WINAPI XTL::EmuCreateWaitableTimerA
LPCSTR lpTimerName // object name
)
{
DbgFuncFmtArgs(
" lpTimerAttributes : 0x%.08X\n"
" bManualReset : 0x%.08X\n"
" lpTimerName : 0x%.08X (%s)\n",
lpTimerAttributes, bManualReset, lpTimerName, lpTimerName);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(lpTimerAttributes)
LOG_FUNC_ARG(bManualReset)
LOG_FUNC_ARG(lpTimerName)
LOG_FUNC_END;
// For Xbox titles, this param should always be NULL.
if(lpTimerAttributes)
@ -1151,8 +1190,14 @@ BOOL WINAPI XTL::EmuSetWaitableTimer
BOOL fResume // resume state
)
{
DbgFuncHexArgs(hTimer, pDueTime, lPeriod, pfnCompletionRoutine,
lpArgToCompletionRoutine, fResume);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hTimer)
LOG_FUNC_ARG(pDueTime)
LOG_FUNC_ARG(lPeriod)
LOG_FUNC_ARG(pfnCompletionRoutine)
LOG_FUNC_ARG(lpArgToCompletionRoutine)
LOG_FUNC_ARG(fResume)
LOG_FUNC_END;
BOOL Ret = SetWaitableTimer( hTimer, pDueTime, lPeriod, pfnCompletionRoutine,
lpArgToCompletionRoutine, fResume );
@ -1172,33 +1217,26 @@ DWORD WINAPI XTL::EmuXMountAlternateTitle
PCHAR pchDrive
)
{
DbgFuncFmtArgs(
" lpRootPath : 0x%.08X (%s)\n"
" dwAltTitleId : 0x%.08X\n"
" pchDrive : 0x%.08X (%s)\n",
lpRootPath, lpRootPath, dwAltTitleId, pchDrive, pchDrive);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(lpRootPath)
LOG_FUNC_ARG(dwAltTitleId)
LOG_FUNC_ARG(pchDrive)
LOG_FUNC_END;
// TODO: Anything?
return ERROR_SUCCESS;
}
// ******************************************************************
// * func: EmuXUnmountAlternateTitle
// ******************************************************************
DWORD WINAPI XTL::EmuXUnmountAlternateTitle(CHAR chDrive)
DWORD WINAPI XTL::EmuXUnmountAlternateTitle
(
CHAR chDrive
)
{
DbgFuncFmtArgs(
" chDrive : 0x%.08X (%c)\n",
chDrive, chDrive);
LOG_FUNC_ONE_ARG(chDrive);
return ERROR_SUCCESS;
}
@ -1208,7 +1246,7 @@ DWORD WINAPI XTL::EmuXUnmountAlternateTitle(CHAR chDrive)
// ******************************************************************
DWORD WINAPI XTL::EmuXGetDeviceEnumerationStatus()
{
DbgFuncHexArgs();
LOG_FUNC();
return XDEVICE_ENUMERATION_IDLE;
}
@ -1222,7 +1260,10 @@ DWORD WINAPI XTL::EmuXInputGetDeviceDescription
PVOID pDescription
)
{
DbgFuncHexArgs(hDevice, pDescription);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(hDevice)
LOG_FUNC_ARG(pDescription)
LOG_FUNC_END;
// TODO: Lightgun support?
@ -1234,7 +1275,7 @@ DWORD WINAPI XTL::EmuXInputGetDeviceDescription
// ******************************************************************
int WINAPI XTL::EmuXAutoPowerDownResetTimer()
{
DbgFuncHexArgs();
LOG_FUNC();
// Meh, that's what the 'X' is for! =]
@ -1251,18 +1292,13 @@ DWORD WINAPI XTL::EmuXMountMURootA
PCHAR pchDrive
)
{
DbgFuncFmtArgs(
" dwPort : 0x%.08X\n"
" dwSlot : 0x%.08X\n"
" pchDrive : 0x%.08X (%s)\n",
dwPort, dwSlot, pchDrive, pchDrive);
LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwPort)
LOG_FUNC_ARG(dwSlot)
LOG_FUNC_ARG(pchDrive)
LOG_FUNC_END;
// TODO: The params are probably wrong...
return ERROR_SUCCESS;
}

View File

@ -54,374 +54,389 @@ namespace xboxkrnl
//#define PANIC(numb) CxbxKrnlPanic
#define PANIC(numb) numb
#define FUNC(f) f
#define VARIABLE(v) v
// kernel thunk table
extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
{
(uint32)PANIC(0x0000), // 0x0000 (0) NULL
(uint32)&xboxkrnl::AvGetSavedDataAddress, // 0x0001 (1)
(uint32)&xboxkrnl::AvSendTVEncoderOption, // 0x0002 (2)
(uint32)PANIC(0x0003), // 0x0003 (3) AvSetDisplayMode
(uint32)PANIC(0x0004), // 0x0004 (4) AvSetSavedDataAddress
(uint32)PANIC(0x0005), // 0x0005 (5) DbgBreakPoint
(uint32)PANIC(0x0006), // 0x0006 (6) DbgBreakPointWithStatus
(uint32)PANIC(0x0007), // 0x0007 (7) DbgLoadImageSymbols
(uint32)&xboxkrnl::DbgPrint, // 0x0008 (8)
(uint32)&xboxkrnl::HalReadSMCTrayState, // 0x0009 (9)
(uint32)PANIC(0x000A), // 0x000A (10) DbgPrompt
(uint32)PANIC(0x000B), // 0x000B (11) DbgUnLoadImageSymbols
(uint32)PANIC(0x000C), // 0x000C (12) ExAcquireReadWriteLockExclusive
(uint32)PANIC(0x000D), // 0x000D (13) ExAcquireReadWriteLockShared
(uint32)&xboxkrnl::ExAllocatePool, // 0x000E (14)
(uint32)&xboxkrnl::ExAllocatePoolWithTag, // 0x000F (15)
(uint32)PANIC(0x0010), // 0x0010 (16) ExEventObjectType
(uint32)&xboxkrnl::ExFreePool, // 0x0011 (17)
(uint32)PANIC(0x0012), // 0x0012 (18) ExInitializeReadWriteLock
(uint32)PANIC(0x0013), // 0x0013 (19) ExInterlockedAddLargeInteger
(uint32)PANIC(0x0014), // 0x0014 (20) ExInterlockedAddLargeStatistic
(uint32)PANIC(0x0015), // 0x0015 (21) ExInterlockedCompareExchange64
(uint32)PANIC(0x0016), // 0x0016 (22) ExMutantObjectType
(uint32)&xboxkrnl::ExQueryPoolBlockSize, // 0x0017 (23) ExQueryPoolBlockSize
(uint32)&xboxkrnl::ExQueryNonVolatileSetting, // 0x0018 (24)
(uint32)&xboxkrnl::ExReadWriteRefurbInfo, // 0x0019 (25)
(uint32)PANIC(0x001A), // 0x001A (26) ExQueryPoolBlockSize
(uint32)PANIC(0x001B), // 0x001B (27) ExRaiseStatus
(uint32)PANIC(0x001C), // 0x001C (28) ExReleaseReadWriteLock
(uint32)&xboxkrnl::ExSaveNonVolatileSetting, // 0x001D (29)
(uint32)PANIC(0x001E), // 0x001E (30)
(uint32)PANIC(0x001F), // 0x001F (31)
(uint32)PANIC(0x0020), // 0x0020 (32)
(uint32)PANIC(0x0021), // 0x0021 (33)
(uint32)PANIC(0x0022), // 0x0022 (34)
(uint32)&xboxkrnl::FscGetCacheSize, // 0x0023 (35)
(uint32)PANIC(0x0024), // 0x0024 (36)
(uint32)&xboxkrnl::FscSetCacheSize, // 0x0025 (37)
(uint32)PANIC(0x0026), // 0x0026 (38) HalClearSoftwareInterrupt
(uint32)PANIC(0x0027), // 0x0027 (39) HalDisableSystemInterrupt
(uint32)&xboxkrnl::HalDiskCachePartitionCount, // 0x0028 (40) HalDiskCachePartitionCount
(uint32)PANIC(0x0029), // 0x0029 (41) HalDiskModelNumber
(uint32)PANIC(0x002A), // 0x002A (42) HalDiskSerialNumber
(uint32)PANIC(0x002B), // 0x002B (43) HalEnableSystemInterrupt
(uint32)&xboxkrnl::HalGetInterruptVector, // 0x002C (44)
(uint32)&xboxkrnl::HalReadSMBusValue, // 0x002D (45)
(uint32)PANIC(0x002E), // 0x002E (46) HalReadWritePCISpace
(uint32)&xboxkrnl::HalRegisterShutdownNotification, // 0x002F (47) HalRegisterShutdownNotification
(uint32)PANIC(0x0030), // 0x0030 (48) HalRequestSoftwareInterrupt
(uint32)&xboxkrnl::HalReturnToFirmware, // 0x0031 (49)
(uint32)&xboxkrnl::HalWriteSMBusValue, // 0x0032 (50)
(uint32)PANIC(0x0033), // 0x0033 (51) InterlockedCompareExchange
(uint32)PANIC(0x0034), // 0x0034 (52) InterlockedDecrement
(uint32)PANIC(0x0035), // 0x0035 (53) InterlockedIncrement
(uint32)PANIC(0x0036), // 0x0036 (54) InterlockedExchange
(uint32)PANIC(0x0037), // 0x0037 (55) InterlockedExchangeAdd
(uint32)PANIC(0x0038), // 0x0038 (56) InterlockedFlushSList
(uint32)PANIC(0x0039), // 0x0039 (57) InterlockedPopEntrySList
(uint32)PANIC(0x003A), // 0x003A (58) InterlockedPushEntrySList
(uint32)PANIC(0x003B), // 0x003B (59) IoAllocateIrp
(uint32)PANIC(0x003C), // 0x003C (60) IoBuildAsynchronousFsdRequest
(uint32)PANIC(0x003D), // 0x003D (61) IoBuildDeviceIoControlRequest
(uint32)PANIC(0x003E), // 0x003E (62) IoBuildSynchronousFsdRequest
(uint32)PANIC(0x003F), // 0x003F (63) IoCheckShareAccess
(uint32)PANIC(0x0040), // 0x0040 (64) IoCompletionObjectType
(uint32)PANIC(0x0041), // 0x0041 (65) IoCreateDevice
(uint32)&xboxkrnl::IoCreateFile, // 0x0042 (66)
(uint32)&xboxkrnl::IoCreateSymbolicLink, // 0x0043 (67)
(uint32)PANIC(0x0044), // 0x0044 (68) IoDeleteDevice
(uint32)&xboxkrnl::IoDeleteSymbolicLink, // 0x0045 (69)
(uint32)PANIC(0x0046), // 0x0046 (70) IoDeviceObjectType
(uint32)PANIC(0x0047), // 0x0047 (71) IoFileObjectType
(uint32)PANIC(0x0048), // 0x0048 (72) IoFreeIrp
(uint32)PANIC(0x0049), // 0x0049 (73) IoInitializeIrp
(uint32)PANIC(0x004A), // 0x004A (74) IoInvalidDeviceRequest
(uint32)PANIC(0x004B), // 0x004B (75) IoQueryFileInformation
(uint32)PANIC(0x004C), // 0x004C (76) IoQueryVolumeInformation
(uint32)PANIC(0x004D), // 0x004D (77) IoQueueThreadIrp
(uint32)PANIC(0x004E), // 0x004E (78) IoRemoveShareAccess
(uint32)PANIC(0x004F), // 0x004F (79) IoSetIoCompletion
(uint32)PANIC(0x0050), // 0x0050 (80) IoSetShareAccess
(uint32)PANIC(0x0051), // 0x0051 (81) IoStartNextPacket
(uint32)PANIC(0x0052), // 0x0052 (82) IoStartNextPacketByKey
(uint32)PANIC(0x0053), // 0x0053 (83) IoStartPacket
(uint32)PANIC(0x0054), // 0x0054 (84) IoSynchronousDeviceIoControlRequest
(uint32)PANIC(0x0055), // 0x0055 (85) IoSynchronousFsdRequest
(uint32)PANIC(0x0056), // 0x0056 (86) IofCallDriver
(uint32)PANIC(0x0057), // 0x0057 (87) IofCompleteRequest
(uint32)PANIC(0x0058), // 0x0058 (88) KdDebuggerEnabled
(uint32)PANIC(0x0059), // 0x0059 (89) KdDebuggerNotPresent
(uint32)PANIC(0x005A), // 0x005A (90) IoDismountVolume
(uint32)&xboxkrnl::IoDismountVolumeByName, // 0x005B (91)
(uint32)PANIC(0x005C), // 0x005C (92) KeAlertResumeThread
(uint32)PANIC(0x005D), // 0x005D (93) KeAlertThread
(uint32)PANIC(0x005E), // 0x005E (94) KeBoostPriorityThread
(uint32)&xboxkrnl::KeBugCheck, // 0x005F (95)
(uint32)PANIC(0x0060), // 0x0060 (96) KeBugCheckEx
(uint32)PANIC(0x0061), // 0x0061 (97) KeCancelTimer
(uint32)&xboxkrnl::KeConnectInterrupt, // 0x0062 (98)
(uint32)&xboxkrnl::KeDelayExecutionThread, // 0x0063 (99)
(uint32)PANIC(0x0064), // 0x0064 (100) KeDisconnectInterrupt
(uint32)PANIC(0x0065), // 0x0065 (101) KeEnterCriticalRegion
(uint32)PANIC(0x0066), // 0x0066 (102) MmGlobalData
(uint32)PANIC(0x0067), // 0x0067 (103) KeGetCurrentIrql
(uint32)PANIC(0x0068), // 0x0068 (104) KeGetCurrentThread
(uint32)PANIC(0x0069), // 0x0069 (105) KeInitializeApc
(uint32)PANIC(0x006A), // 0x006A (106) KeInitializeDeviceQueue
(uint32)&xboxkrnl::KeInitializeDpc, // 0x006B (107)
(uint32)PANIC(0x006C), // 0x006C (108)
(uint32)&xboxkrnl::KeInitializeInterrupt, // 0x006D (109)
(uint32)PANIC(0x006E), // 0x006E (110)
(uint32)PANIC(0x006F), // 0x006F (111)
(uint32)PANIC(0x0070), // 0x0070 (112)
(uint32)&xboxkrnl::KeInitializeTimerEx, // 0x0071 (113)
(uint32)PANIC(0x0072), // 0x0072 (114) KeInsertByKeyDeviceQueue
(uint32)PANIC(0x0073), // 0x0073 (115) KeInsertDeviceQueue
(uint32)PANIC(0x0074), // 0x0074 (116) KeInsertHeadQueue
(uint32)PANIC(0x0075), // 0x0075 (117) KeInsertQueue
(uint32)PANIC(0x0076), // 0x0076 (118) KeInsertQueueApc
(uint32)PANIC(0x0077), // 0x0077 (119) KeInsertQueueDpc
(uint32)PANIC(0x0078), // 0x0078 (120) KeInterruptTime
(uint32)PANIC(0x0079), // 0x0079 (121) KeIsExecutingDpc
(uint32)PANIC(0x007A), // 0x007A (122) KeLeaveCriticalRegion
(uint32)PANIC(0x007B), // 0x007B (123) KePulseEvent
(uint32)PANIC(0x007C), // 0x007C (124) KeQueryBasePriorityThread
(uint32)PANIC(0x007D), // 0x007D (125) KeQueryInterruptTime
(uint32)&xboxkrnl::KeQueryPerformanceCounter, // 0x007E (126)
(uint32)&xboxkrnl::KeQueryPerformanceFrequency, // 0x007F (127)
(uint32)&xboxkrnl::KeQuerySystemTime, // 0x0080 (128)
(uint32)&xboxkrnl::KeRaiseIrqlToDpcLevel, // 0x0081 (129)
(uint32)PANIC(0x0082), // 0x0082 (130) KeRaiseIrqlToSynchLevel
(uint32)PANIC(0x0083), // 0x0083 (131) KeRaiseIrqlToSynchLevel
(uint32)PANIC(0x0084), // 0x0084 (132) KeReleaseSemaphore
(uint32)PANIC(0x0085), // 0x0085 (133) KeRemoveByKeyDeviceQueue
(uint32)PANIC(0x0086), // 0x0086 (134) KeRemoveDeviceQueue
(uint32)PANIC(0x0087), // 0x0087 (135) KeRemoveEntryDeviceQueue
(uint32)PANIC(0x0088), // 0x0088 (136) KeRemoveQueue
(uint32)PANIC(0x0089), // 0x0089 (137) KeRemoveQueueDpc
(uint32)PANIC(0x008A), // 0x008A (138) KeResetEvent
(uint32)PANIC(0x008B), // 0x008B (139) KeRestoreFloatingPointState
(uint32)PANIC(0x008C), // 0x008C (140) KeResumeThread
(uint32)PANIC(0x008D), // 0x008D (141) KeRundownQueue
(uint32)PANIC(0x008E), // 0x008E (142) KeSaveFloatingPointState
(uint32)PANIC(0x008F), // 0x008F (143) KeSetBasePriorityThread
(uint32)PANIC(0x0090), // 0x0090 (144) KeSetDisableBoostThread
(uint32)PANIC(0x0091), // 0x0091 (145) KeSetEvent
(uint32)PANIC(0x0092), // 0x0092 (146) KeSetEventBoostPriority
(uint32)PANIC(0x0093), // 0x0093 (147) KeSetPriorityProcess
(uint32)PANIC(0x0094), // 0x0094 (148) KeSetPriorityThread
(uint32)&xboxkrnl::KeSetTimer, // 0x0095 (149)
(uint32)&xboxkrnl::KeSetTimerEx, // 0x0096 (150)
(uint32)PANIC(0x0097), // 0x0097 (151) KeStallExecutionProcessor
(uint32)PANIC(0x0098), // 0x0098 (152) KeSuspendThread
(uint32)PANIC(0x0099), // 0x0099 (153) KeSynchronizeExecution
(uint32)PANIC(0x009A), // 0x009A (154) KeSystemTime
(uint32)PANIC(0x009B), // 0x009B (155) KeTestAlertThread
(uint32)&xboxkrnl::KeTickCount, // 0x009C (156)
(uint32)PANIC(0x009D), // 0x009D (157) KeTimeIncrement
(uint32)&xboxkrnl::KeWaitForMultipleObjects, // 0x009E (158) KeWaitForMultipleObjects
(uint32)&xboxkrnl::KeWaitForSingleObject, // 0x009F (159) KeWaitForSingleObject
(uint32)&xboxkrnl::KfRaiseIrql, // 0x00A0 (160)
(uint32)&xboxkrnl::KfLowerIrql, // 0x00A1 (161)
(uint32)PANIC(0x00A2), // 0x00A2 (162) KiBugCheckData
(uint32)PANIC(0x00A3), // 0x00A3 (163) KiUnlockDispatcherDatabase
(uint32)&xboxkrnl::LaunchDataPage, // 0x00A4 (164)
(uint32)&xboxkrnl::MmAllocateContiguousMemory, // 0x00A5 (165)
(uint32)&xboxkrnl::MmAllocateContiguousMemoryEx,// 0x00A6 (166)
(uint32)&xboxkrnl::MmAllocateSystemMemory, // 0x00A7 (167)
(uint32)PANIC(0x00A8), // 0x00A8 (168) MmClaimGpuInstanceMemory
(uint32)&xboxkrnl::MmCreateKernelStack, // 0x00A9 (169)
(uint32)&xboxkrnl::MmDeleteKernelStack, // 0x00AA (170)
(uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171)
(uint32)&xboxkrnl::MmFreeSystemMemory, // 0x00AC (172)
(uint32)PANIC(0x00AD), // 0x00AD (173) MmGetPhysicalAddress
(uint32)PANIC(0x00AE), // 0x00AE (174) MmIsAddressValid
(uint32)&xboxkrnl::MmLockUnlockBufferPages, // 0x00AF (175) MmLockUnlockBufferPages
(uint32)PANIC(0x00B0), // 0x00B0 (176) MmLockUnlockPhysicalPage
(uint32)&xboxkrnl::MmMapIoSpace, // 0x00B1 (177)
(uint32)&xboxkrnl::MmPersistContiguousMemory, // 0x00B2 (178)
(uint32)PANIC(0x00B3), // 0x00B3 (179) MmQueryAddressProtect
(uint32)&xboxkrnl::MmQueryAllocationSize, // 0x00B4 (180)
(uint32)&xboxkrnl::MmQueryStatistics, // 0x00B5 (181)
(uint32)&xboxkrnl::MmSetAddressProtect, // 0x00B6 (182)
(uint32)&xboxkrnl::MmUnmapIoSpace, // 0x00B7 (183)
(uint32)&xboxkrnl::NtAllocateVirtualMemory, // 0x00B8 (184)
(uint32)PANIC(0x00B9), // 0x00B9 (185) NtCancelTimer
(uint32)&xboxkrnl::NtClearEvent, // 0x00BA (186)
(uint32)&xboxkrnl::NtClose, // 0x00BB (187)
(uint32)&xboxkrnl::NtCreateDirectoryObject, // 0x00BC (188) NtCreateDirectoryObject
(uint32)&xboxkrnl::NtCreateEvent, // 0x00BD (189)
(uint32)&xboxkrnl::NtCreateFile, // 0x00BE (190)
(uint32)PANIC(0x00BF), // 0x00BF (191) NtCreateIoCompletion
(uint32)&xboxkrnl::NtCreateMutant, // 0x00C0 (192)
(uint32)&xboxkrnl::NtCreateSemaphore, // 0x00C1 (193)
(uint32)PANIC(0x00C2), // 0x00C2 (194) NtCreateTimer
(uint32)PANIC(0x00C3), // 0x00C3 (195) NtDeleteFile
(uint32)&xboxkrnl::NtDeviceIoControlFile, // 0x00C4 (196) NtDeviceIoControlFile
(uint32)&xboxkrnl::NtDuplicateObject, // 0x00C5 (197)
(uint32)&xboxkrnl::NtFlushBuffersFile, // 0x00C6 (198)
(uint32)&xboxkrnl::NtFreeVirtualMemory, // 0x00C7 (199)
(uint32)PANIC(0x00C8), // 0x00C8 (200) NtFsControlFile
(uint32)PANIC(0x00C9), // 0x00C9 (201) NtOpenDirectoryObject
(uint32)&xboxkrnl::NtOpenFile, // 0x00CA (202)
(uint32)&xboxkrnl::NtOpenSymbolicLinkObject, // 0x00CB (203) NtOpenSymbolicLinkObject
(uint32)&xboxkrnl::NtProtectVirtualMemory, // 0x00CC (204) NtProtectVirtualMemory
(uint32)PANIC(0x00CD), // 0x00CD (205) NtPulseEvent
(uint32)&xboxkrnl::NtQueueApcThread, // 0x00CE (206)
(uint32)&xboxkrnl::NtQueryDirectoryFile, // 0x00CF (207)
(uint32)PANIC(0x00D0), // 0x00D0 (208) NtQueryDirectoryObject
(uint32)PANIC(0x00D1), // 0x00D1 (209) NtQueryEvent
(uint32)&xboxkrnl::NtQueryFullAttributesFile, // 0x00D2 (210)
(uint32)&xboxkrnl::NtQueryInformationFile, // 0x00D3 (211)
(uint32)PANIC(0x00D4), // 0x00D4 (212) NtQueryIoCompletion
(uint32)PANIC(0x00D5), // 0x00D5 (213) NtQueryMutant
(uint32)PANIC(0x00D6), // 0x00D6 (214) NtQuerySemaphore
(uint32)&xboxkrnl::NtQuerySymbolicLinkObject, // 0x00D7 (215) NtQuerySymbolicLinkObject
(uint32)PANIC(0x00D8), // 0x00D8 (216) NtQueryTimer
(uint32)&xboxkrnl::NtQueryVirtualMemory, // 0x00D9 (217)
(uint32)&xboxkrnl::NtQueryVolumeInformationFile,// 0x00DA (218)
(uint32)&xboxkrnl::NtReadFile, // 0x00DB (219)
(uint32)PANIC(0x00DC), // 0x00DC (220) NtReadFileScatter
(uint32)&xboxkrnl::NtReleaseMutant, // 0x00DD (221)
(uint32)&xboxkrnl::NtReleaseSemaphore, // 0x00DE (222)
(uint32)PANIC(0x00DF), // 0x00DF (223) NtRemoveIoCompletion
(uint32)&xboxkrnl::NtResumeThread, // 0x00E0 (224)
(uint32)&xboxkrnl::NtSetEvent, // 0x00E1 (225)
(uint32)&xboxkrnl::NtSetInformationFile, // 0x00E2 (226)
(uint32)PANIC(0x00E3), // 0x00E3 (227) NtSetIoCompletion
(uint32)&xboxkrnl::NtSetSystemTime, // 0x00E4 (228)
(uint32)PANIC(0x00E5), // 0x00E5 (229) NtSetTimerEx
(uint32)PANIC(0x00E6), // 0x00E6 (230) NtSignalAndWaitForSingleObjectEx
(uint32)&xboxkrnl::NtSuspendThread, // 0x00E7 (231)
(uint32)&xboxkrnl::NtUserIoApcDispatcher, // 0x00E8 (232)
(uint32)PANIC(0x00E9), // 0x00E9 (233) NtWaitForSingleObject
(uint32)&xboxkrnl::NtWaitForSingleObjectEx, // 0x00EA (234)
(uint32)&xboxkrnl::NtWaitForMultipleObjectsEx, // 0x00EB (235)
(uint32)&xboxkrnl::NtWriteFile, // 0x00EC (236)
(uint32)PANIC(0x00ED), // 0x00ED (237) NtWriteFileGather
(uint32)&xboxkrnl::NtYieldExecution, // 0x00EE (238)
(uint32)PANIC(0x00EF), // 0x00EF (239) ObCreateObject
(uint32)PANIC(0x00F0), // 0x00F0 (240) ObDirectoryObjectType
(uint32)PANIC(0x00F1), // 0x00F1 (241) ObInsertObject
(uint32)PANIC(0x00F2), // 0x00F2 (242) ObMakeTemporaryObject
(uint32)PANIC(0x00F3), // 0x00F3 (243) ObOpenObjectByName
(uint32)PANIC(0x00F4), // 0x00F4 (244) ObOpenObjectByPointer
(uint32)PANIC(0x00F5), // 0x00F5 (245) ObpObjectHandleTable
(uint32)PANIC(0x00F6), // 0x00F6 (246) ObReferenceObjectByHandle
(uint32)PANIC(0x00F7), // 0x00F7 (247) ObReferenceObjectByName
(uint32)PANIC(0x00F8), // 0x00F8 (248) ObReferenceObjectByPointer
(uint32)PANIC(0x00F9), // 0x00F9 (249) ObSymbolicLinkObjectType
(uint32)PANIC(0x00FA), // 0x00FA (250) ObfDereferenceObject
(uint32)PANIC(0x00FB), // 0x00FB (251) ObfReferenceObject
(uint32)PANIC(0x00FC), // 0x00FC (252) PhyGetLinkState
(uint32)PANIC(0x00FD), // 0x00FD (253) PhyInitialize
(uint32)PANIC(0x00FE), // 0x00FE (254) PsCreateSystemThread
(uint32)&xboxkrnl::PsCreateSystemThreadEx, // 0x00FF (255)
(uint32)PANIC(0x0100), // 0x0100 (256) PsQueryStatistics
(uint32)PANIC(0x0101), // 0x0101 (257) PsSetCreateThreadNotifyRoutine
(uint32)&xboxkrnl::PsTerminateSystemThread, // 0x0102 (258)
(uint32)PANIC(0x0103), // 0x0103 (259) PsThreadObjectType
(uint32)&xboxkrnl::RtlAnsiStringToUnicodeString,// 0x0104 (260)
(uint32)PANIC(0x0105), // 0x0105 (261) RtlAppendStringToString
(uint32)PANIC(0x0106), // 0x0106 (262) RtlAppendUnicodeStringToString
(uint32)PANIC(0x0107), // 0x0107 (263) RtlAppendUnicodeToString
(uint32)&xboxkrnl::RtlAssert, // 0x0108 (264)
(uint32)PANIC(0x0109), // 0x0109 (265) RtlCaptureContext
(uint32)PANIC(0x010A), // 0x010A (266) RtlCaptureStackBackTrace
(uint32)PANIC(0x010B), // 0x010B (267) RtlCharToInteger
(uint32)PANIC(0x010C), // 0x010C (268) RtlCompareMemory
(uint32)PANIC(0x010D), // 0x010D (269) RtlCompareMemoryUlong
(uint32)PANIC(0x010E), // 0x010E (270) RtlCompareString
(uint32)PANIC(0x010F), // 0x010F (271) RtlCompareUnicodeString
(uint32)PANIC(0x0110), // 0x0110 (272) RtlCopyString
(uint32)PANIC(0x0111), // 0x0111 (273) RtlCopyUnicodeString
(uint32)PANIC(0x0112), // 0x0112 (274) RtlCreateUnicodeString
(uint32)PANIC(0x0113), // 0x0113 (275) RtlDowncaseUnicodeChar
(uint32)PANIC(0x0114), // 0x0114 (276) RtlDowncaseUnicodeString
(uint32)&xboxkrnl::RtlEnterCriticalSection, // 0x0115 (277)
(uint32)PANIC(0x0116), // 0x0116 (278) RtlEnterCriticalSectionAndRegion
(uint32)&xboxkrnl::RtlEqualString, // 0x0117 (279)
(uint32)PANIC(0x0118), // 0x0118 (280) RtlEqualUnicodeString
(uint32)PANIC(0x0119), // 0x0119 (281) RtlExtendedIntegerMultiply
(uint32)PANIC(0x011A), // 0x011A (282) RtlExtendedLargeIntegerDivide
(uint32)PANIC(0x011B), // 0x011B (283) RtlExtendedMagicDivide
(uint32)PANIC(0x011C), // 0x011C (284) RtlFillMemory
(uint32)PANIC(0x011D), // 0x011D (285) RtlFillMemoryUlong
(uint32)xboxkrnl::RtlFreeAnsiString, // 0x011E (286)
(uint32)PANIC(0x011F), // 0x011F (287) RtlFreeUnicodeString
(uint32)PANIC(0x0120), // 0x0120 (288) RtlGetCallersAddress
(uint32)&xboxkrnl::RtlInitAnsiString, // 0x0121 (289)
(uint32)&xboxkrnl::RtlInitUnicodeString, // 0x0122 (290)
(uint32)&xboxkrnl::RtlInitializeCriticalSection,// 0x0123 (291)
(uint32)PANIC(0x0124), // 0x0124 (292) RtlIntegerToChar
(uint32)PANIC(0x0125), // 0x0125 (293) RtlIntegerToUnicodeString
(uint32)&xboxkrnl::RtlLeaveCriticalSection, // 0x0126 (294)
(uint32)PANIC(0x0127), // 0x0127 (295) RtlLeaveCriticalSectionAndRegion
(uint32)&xboxkrnl::RtlLowerChar, // 0x0128 (296)
(uint32)PANIC(0x0129), // 0x0129 (297) RtlMapGenericMask
(uint32)PANIC(0x012A), // 0x012A (298) RtlMoveMemory
(uint32)PANIC(0x012B), // 0x012B (299) RtlMultiByteToUnicodeN
(uint32)PANIC(0x012C), // 0x012C (300) RtlMultiByteToUnicodeSize
(uint32)&xboxkrnl::RtlNtStatusToDosError, // 0x012D (301)
(uint32)PANIC(0x012E), // 0x012E (302) RtlRaiseException
(uint32)PANIC(0x012F), // 0x012F (303) RtlRaiseStatus
(uint32)&xboxkrnl::RtlTimeFieldsToTime, // 0x0130 (304)
(uint32)&xboxkrnl::RtlTimeToTimeFields, // 0x0131 (305)
(uint32)&xboxkrnl::RtlTryEnterCriticalSection, // 0x0132 (306)
(uint32)PANIC(0x0133), // 0x0133 (307) RtlUlongByteSwap
(uint32)&xboxkrnl::RtlUnicodeStringToAnsiString,// 0x0134 (308)
(uint32)PANIC(0x0135), // 0x0135 (309) RtlUnicodeStringToInteger
(uint32)PANIC(0x0136), // 0x0136 (310) RtlUnicodeToMultiByteN
(uint32)PANIC(0x0137), // 0x0137 (311) RtlUnicodeToMultiByteSize
(uint32)PANIC(0x0138), // 0x0138 (312) RtlUnwind
(uint32)PANIC(0x0139), // 0x0139 (313) RtlUpcaseUnicodeChar
(uint32)PANIC(0x013A), // 0x013A (314) RtlUpcaseUnicodeString
(uint32)PANIC(0x013B), // 0x013B (315) RtlUpcaseUnicodeToMultiByteN
(uint32)PANIC(0x013C), // 0x013C (316) RtlUpperChar
(uint32)PANIC(0x013D), // 0x013D (317) RtlUpperString
(uint32)PANIC(0x013E), // 0x013E (318) RtlUshortByteSwap
(uint32)PANIC(0x013F), // 0x013F (319) RtlWalkFrameChain
(uint32)PANIC(0x0140), // 0x0140 (320) RtlZeroMemory
(uint32)PANIC(0x0141), // 0x0141 (321) XboxEEPROMKey
(uint32)&xboxkrnl::XboxHardwareInfo, // 0x0142 (322)
(uint32)&xboxkrnl::XboxHDKey, // 0x0143 (323)
(uint32)&xboxkrnl::XboxKrnlVersion, // 0x0144 (324) XboxKrnlVersion
(uint32)&xboxkrnl::XboxSignatureKey, // 0x0145 (325)
(uint32)&xboxkrnl::XeImageFileName, // 0x0146 (326) XeImageFileName
(uint32)&xboxkrnl::XeLoadSection, // 0x0147 (327) XeLoadSection
(uint32)&xboxkrnl::XeUnloadSection, // 0x0148 (328) XeUnloadSection
(uint32)PANIC(0x0149), // 0x0149 (329) READ_PORT_BUFFER_UCHAR
(uint32)PANIC(0x014A), // 0x014A (330) READ_PORT_BUFFER_USHORT
(uint32)PANIC(0x014B), // 0x014B (331) READ_PORT_BUFFER_ULONG
(uint32)PANIC(0x014C), // 0x014C (332) WRITE_PORT_BUFFER_UCHAR
(uint32)PANIC(0x014D), // 0x014D (333) WRITE_PORT_BUFFER_USHORT
(uint32)PANIC(0x014E), // 0x014E (334) WRITE_PORT_BUFFER_ULONG
(uint32)&xboxkrnl::XcSHAInit, // 0x014F (335)
(uint32)&xboxkrnl::XcSHAUpdate, // 0x0150 (336)
(uint32)&xboxkrnl::XcSHAFinal, // 0x0151 (337)
(uint32)PANIC(0x0152), // 0x0152 (338) XcRC4Key
(uint32)PANIC(0x0153), // 0x0153 (339) XcRC4Crypt
(uint32)PANIC(0x0154), // 0x0154 (340) XcHMAC
(uint32)PANIC(0x0155), // 0x0155 (341) XcPKEncPublic
(uint32)PANIC(0x0156), // 0x0156 (342) XcPKDecPrivate
(uint32)PANIC(0x0157), // 0x0157 (343) XcPKGetKeyLen
(uint32)PANIC(0x0158), // 0x0158 (344) XcVerifyPKCS1Signature
(uint32)PANIC(0x0159), // 0x0159 (345) XcModExp
(uint32)PANIC(0x015A), // 0x015A (346) XcDESKeyParity
(uint32)PANIC(0x015B), // 0x015B (347) XcKeyTable
(uint32)PANIC(0x015C), // 0x015C (348) XcBlockCrypt
(uint32)PANIC(0x015D), // 0x015D (349) XcBlockCryptCBC
(uint32)PANIC(0x015E), // 0x015E (350) XcCryptService
(uint32)PANIC(0x015F), // 0x015F (351) XcUpdateCrypto
(uint32)PANIC(0x0160), // 0x0160 (352) RtlRip
(uint32)PANIC(0x0161), // 0x0161 (353) XboxLANKey
(uint32)PANIC(0x0162), // 0x0162 (354) XboxAlternateSignatureKeys
(uint32)PANIC(0x0163), // 0x0163 (355) XePublicKeyData
(uint32)&xboxkrnl::HalBootSMCVideoMode, // 0x0164 (356)
(uint32)PANIC(0x0165), // 0x0165 (357) IdexChannelObject
(uint32)PANIC(0x0166), // 0x0166 (358) HalIsResetOrShutdownPending
(uint32)PANIC(0x0167), // 0x0167 (359) IoMarkIrpMustComplete
(uint32)PANIC(0x0168), // 0x0168 (360) HalInitiateShutdown
(uint32)PANIC(0x0169), // 0x0169 (361) snprintf
(uint32)PANIC(0x016A), // 0x016A (362) sprintf
(uint32)PANIC(0x016B), // 0x016B (363) vsnprintf
(uint32)PANIC(0x016C), // 0x016C (364) vsprintf
(uint32)PANIC(0x016D), // 0x016D (365) HalEnableSecureTrayEject
(uint32)PANIC(0x016E), // 0x016E (366) HalWriteSMCScratchRegister
(uint32)PANIC(0x0000), // 0x0000 (0) NULL
(uint32)FUNC(&xboxkrnl::AvGetSavedDataAddress), // 0x0001 (1)
(uint32)FUNC(&xboxkrnl::AvSendTVEncoderOption), // 0x0002 (2)
(uint32)PANIC(0x0003), // 0x0003 (3) AvSetDisplayMode
(uint32)PANIC(0x0004), // 0x0004 (4) AvSetSavedDataAddress
(uint32)PANIC(0x0005), // 0x0005 (5) DbgBreakPoint
(uint32)PANIC(0x0006), // 0x0006 (6) DbgBreakPointWithStatus
(uint32)PANIC(0x0007), // 0x0007 (7) DbgLoadImageSymbols
(uint32)FUNC(&xboxkrnl::DbgPrint), // 0x0008 (8)
(uint32)FUNC(&xboxkrnl::HalReadSMCTrayState), // 0x0009 (9)
(uint32)PANIC(0x000A), // 0x000A (10) DbgPrompt
(uint32)PANIC(0x000B), // 0x000B (11) DbgUnLoadImageSymbols
(uint32)PANIC(0x000C), // 0x000C (12) ExAcquireReadWriteLockExclusive
(uint32)PANIC(0x000D), // 0x000D (13) ExAcquireReadWriteLockShared
(uint32)FUNC(&xboxkrnl::ExAllocatePool), // 0x000E (14)
(uint32)FUNC(&xboxkrnl::ExAllocatePoolWithTag), // 0x000F (15)
(uint32)VARIABLE(0x0010), // 0x0010 (16) ExEventObjectType
(uint32)FUNC(&xboxkrnl::ExFreePool), // 0x0011 (17)
(uint32)PANIC(0x0012), // 0x0012 (18) ExInitializeReadWriteLock
(uint32)PANIC(0x0013), // 0x0013 (19) ExInterlockedAddLargeInteger
(uint32)PANIC(0x0014), // 0x0014 (20) ExInterlockedAddLargeStatistic
(uint32)PANIC(0x0015), // 0x0015 (21) ExInterlockedCompareExchange64
(uint32)VARIABLE(0x0016), // 0x0016 (22) ExMutantObjectType
(uint32)FUNC(&xboxkrnl::ExQueryPoolBlockSize), // 0x0017 (23)
(uint32)FUNC(&xboxkrnl::ExQueryNonVolatileSetting), // 0x0018 (24)
(uint32)FUNC(&xboxkrnl::ExReadWriteRefurbInfo), // 0x0019 (25)
(uint32)PANIC(0x001A), // 0x001A (26) ExQueryPoolBlockSize
(uint32)PANIC(0x001B), // 0x001B (27) ExRaiseStatus
(uint32)PANIC(0x001C), // 0x001C (28) ExReleaseReadWriteLock
(uint32)FUNC(&xboxkrnl::ExSaveNonVolatileSetting), // 0x001D (29)
(uint32)VARIABLE(0x001E), // 0x001E (30) ExSemaphoreObjectType
(uint32)VARIABLE(0x001F), // 0x001F (31) ExTimerObjectType
(uint32)PANIC(0x0020), // 0x0020 (32) ExfInterlockedInsertHeadList
(uint32)PANIC(0x0021), // 0x0021 (33) ExfInterlockedInsertTailList
(uint32)PANIC(0x0022), // 0x0022 (34) ExfInterlockedRemoveHeadList
(uint32)FUNC(&xboxkrnl::FscGetCacheSize), // 0x0023 (35)
(uint32)PANIC(0x0024), // 0x0024 (36) FscInvalidateIdleBlocks
(uint32)FUNC(&xboxkrnl::FscSetCacheSize), // 0x0025 (37)
(uint32)PANIC(0x0026), // 0x0026 (38) HalClearSoftwareInterrupt
(uint32)PANIC(0x0027), // 0x0027 (39) HalDisableSystemInterrupt
(uint32)VARIABLE(&xboxkrnl::HalDiskCachePartitionCount), // 0x0028 (40) A.k.a. "IdexDiskPartitionPrefixBuffer"
(uint32)VARIABLE(0x0029), // 0x0029 (41) HalDiskModelNumber
(uint32)VARIABLE(0x002A), // 0x002A (42) HalDiskSerialNumber
(uint32)PANIC(0x002B), // 0x002B (43) HalEnableSystemInterrupt
(uint32)FUNC(&xboxkrnl::HalGetInterruptVector), // 0x002C (44)
(uint32)FUNC(&xboxkrnl::HalReadSMBusValue), // 0x002D (45)
(uint32)PANIC(0x002E), // 0x002E (46) HalReadWritePCISpace
(uint32)FUNC(&xboxkrnl::HalRegisterShutdownNotification), // 0x002F (47)
(uint32)PANIC(0x0030), // 0x0030 (48) HalRequestSoftwareInterrupt
(uint32)FUNC(&xboxkrnl::HalReturnToFirmware), // 0x0031 (49)
(uint32)FUNC(&xboxkrnl::HalWriteSMBusValue), // 0x0032 (50)
(uint32)PANIC(0x0033), // 0x0033 (51) InterlockedCompareExchange
(uint32)PANIC(0x0034), // 0x0034 (52) InterlockedDecrement
(uint32)PANIC(0x0035), // 0x0035 (53) InterlockedIncrement
(uint32)PANIC(0x0036), // 0x0036 (54) InterlockedExchange
(uint32)PANIC(0x0037), // 0x0037 (55) InterlockedExchangeAdd
(uint32)PANIC(0x0038), // 0x0038 (56) InterlockedFlushSList
(uint32)PANIC(0x0039), // 0x0039 (57) InterlockedPopEntrySList
(uint32)PANIC(0x003A), // 0x003A (58) InterlockedPushEntrySList
(uint32)PANIC(0x003B), // 0x003B (59) IoAllocateIrp
(uint32)PANIC(0x003C), // 0x003C (60) IoBuildAsynchronousFsdRequest
(uint32)PANIC(0x003D), // 0x003D (61) IoBuildDeviceIoControlRequest
(uint32)PANIC(0x003E), // 0x003E (62) IoBuildSynchronousFsdRequest
(uint32)PANIC(0x003F), // 0x003F (63) IoCheckShareAccess
(uint32)VARIABLE(0x0040), // 0x0040 (64) IoCompletionObjectType
(uint32)PANIC(0x0041), // 0x0041 (65) IoCreateDevice
(uint32)FUNC(&xboxkrnl::IoCreateFile), // 0x0042 (66)
(uint32)FUNC(&xboxkrnl::IoCreateSymbolicLink), // 0x0043 (67)
(uint32)PANIC(0x0044), // 0x0044 (68) IoDeleteDevice
(uint32)FUNC(&xboxkrnl::IoDeleteSymbolicLink), // 0x0045 (69)
(uint32)VARIABLE(0x0046), // 0x0046 (70) IoDeviceObjectType
(uint32)VARIABLE(0x0047), // 0x0047 (71) IoFileObjectType
(uint32)PANIC(0x0048), // 0x0048 (72) IoFreeIrp
(uint32)PANIC(0x0049), // 0x0049 (73) IoInitializeIrp
(uint32)PANIC(0x004A), // 0x004A (74) IoInvalidDeviceRequest
(uint32)PANIC(0x004B), // 0x004B (75) IoQueryFileInformation
(uint32)PANIC(0x004C), // 0x004C (76) IoQueryVolumeInformation
(uint32)PANIC(0x004D), // 0x004D (77) IoQueueThreadIrp
(uint32)PANIC(0x004E), // 0x004E (78) IoRemoveShareAccess
(uint32)PANIC(0x004F), // 0x004F (79) IoSetIoCompletion
(uint32)PANIC(0x0050), // 0x0050 (80) IoSetShareAccess
(uint32)PANIC(0x0051), // 0x0051 (81) IoStartNextPacket
(uint32)PANIC(0x0052), // 0x0052 (82) IoStartNextPacketByKey
(uint32)PANIC(0x0053), // 0x0053 (83) IoStartPacket
(uint32)PANIC(0x0054), // 0x0054 (84) IoSynchronousDeviceIoControlRequest
(uint32)PANIC(0x0055), // 0x0055 (85) IoSynchronousFsdRequest
(uint32)PANIC(0x0056), // 0x0056 (86) IofCallDriver
(uint32)PANIC(0x0057), // 0x0057 (87) IofCompleteRequest
(uint32)VARIABLE(0x0058), // 0x0058 (88) KdDebuggerEnabled
(uint32)VARIABLE(0x0059), // 0x0059 (89) KdDebuggerNotPresent
(uint32)PANIC(0x005A), // 0x005A (90) IoDismountVolume
(uint32)FUNC(&xboxkrnl::IoDismountVolumeByName), // 0x005B (91)
(uint32)PANIC(0x005C), // 0x005C (92) KeAlertResumeThread
(uint32)PANIC(0x005D), // 0x005D (93) KeAlertThread
(uint32)PANIC(0x005E), // 0x005E (94) KeBoostPriorityThread
(uint32)FUNC(&xboxkrnl::KeBugCheck), // 0x005F (95)
(uint32)PANIC(0x0060), // 0x0060 (96) KeBugCheckEx
(uint32)PANIC(0x0061), // 0x0061 (97) KeCancelTimer
(uint32)FUNC(&xboxkrnl::KeConnectInterrupt), // 0x0062 (98)
(uint32)FUNC(&xboxkrnl::KeDelayExecutionThread), // 0x0063 (99)
(uint32)PANIC(0x0064), // 0x0064 (100) KeDisconnectInterrupt
(uint32)PANIC(0x0065), // 0x0065 (101) KeEnterCriticalRegion
(uint32)VARIABLE(0x0066), // 0x0066 (102) MmGlobalData
(uint32)PANIC(0x0067), // 0x0067 (103) KeGetCurrentIrql
(uint32)PANIC(0x0068), // 0x0068 (104) KeGetCurrentThread
(uint32)PANIC(0x0069), // 0x0069 (105) KeInitializeApc
(uint32)PANIC(0x006A), // 0x006A (106) KeInitializeDeviceQueue
(uint32)FUNC(&xboxkrnl::KeInitializeDpc), // 0x006B (107)
(uint32)PANIC(0x006C), // 0x006C (108) KeInitializeEvent
(uint32)FUNC(&xboxkrnl::KeInitializeInterrupt), // 0x006D (109)
(uint32)PANIC(0x006E), // 0x006E (110) KeInitializeMutant
(uint32)PANIC(0x006F), // 0x006F (111) KeInitializeQueue
(uint32)PANIC(0x0070), // 0x0070 (112) KeInitializeSemaphore
(uint32)FUNC(&xboxkrnl::KeInitializeTimerEx), // 0x0071 (113)
(uint32)PANIC(0x0072), // 0x0072 (114) KeInsertByKeyDeviceQueue
(uint32)PANIC(0x0073), // 0x0073 (115) KeInsertDeviceQueue
(uint32)PANIC(0x0074), // 0x0074 (116) KeInsertHeadQueue
(uint32)PANIC(0x0075), // 0x0075 (117) KeInsertQueue
(uint32)PANIC(0x0076), // 0x0076 (118) KeInsertQueueApc
(uint32)PANIC(0x0077), // 0x0077 (119) KeInsertQueueDpc
(uint32)VARIABLE(0x0078), // 0x0078 (120) KeInterruptTime
(uint32)PANIC(0x0079), // 0x0079 (121) KeIsExecutingDpc
(uint32)PANIC(0x007A), // 0x007A (122) KeLeaveCriticalRegion
(uint32)PANIC(0x007B), // 0x007B (123) KePulseEvent
(uint32)PANIC(0x007C), // 0x007C (124) KeQueryBasePriorityThread
(uint32)PANIC(0x007D), // 0x007D (125) KeQueryInterruptTime
(uint32)FUNC(&xboxkrnl::KeQueryPerformanceCounter), // 0x007E (126)
(uint32)FUNC(&xboxkrnl::KeQueryPerformanceFrequency), // 0x007F (127)
(uint32)FUNC(&xboxkrnl::KeQuerySystemTime), // 0x0080 (128)
(uint32)FUNC(&xboxkrnl::KeRaiseIrqlToDpcLevel), // 0x0081 (129)
(uint32)PANIC(0x0082), // 0x0082 (130) KeRaiseIrqlToSynchLevel
(uint32)PANIC(0x0083), // 0x0083 (131) KeRaiseIrqlToSynchLevel
(uint32)PANIC(0x0084), // 0x0084 (132) KeReleaseSemaphore
(uint32)PANIC(0x0085), // 0x0085 (133) KeRemoveByKeyDeviceQueue
(uint32)PANIC(0x0086), // 0x0086 (134) KeRemoveDeviceQueue
(uint32)PANIC(0x0087), // 0x0087 (135) KeRemoveEntryDeviceQueue
(uint32)PANIC(0x0088), // 0x0088 (136) KeRemoveQueue
(uint32)PANIC(0x0089), // 0x0089 (137) KeRemoveQueueDpc
(uint32)PANIC(0x008A), // 0x008A (138) KeResetEvent
(uint32)PANIC(0x008B), // 0x008B (139) KeRestoreFloatingPointState
(uint32)PANIC(0x008C), // 0x008C (140) KeResumeThread
(uint32)PANIC(0x008D), // 0x008D (141) KeRundownQueue
(uint32)PANIC(0x008E), // 0x008E (142) KeSaveFloatingPointState
(uint32)PANIC(0x008F), // 0x008F (143) KeSetBasePriorityThread
(uint32)PANIC(0x0090), // 0x0090 (144) KeSetDisableBoostThread
(uint32)PANIC(0x0091), // 0x0091 (145) KeSetEvent
(uint32)PANIC(0x0092), // 0x0092 (146) KeSetEventBoostPriority
(uint32)PANIC(0x0093), // 0x0093 (147) KeSetPriorityProcess
(uint32)PANIC(0x0094), // 0x0094 (148) KeSetPriorityThread
(uint32)FUNC(&xboxkrnl::KeSetTimer), // 0x0095 (149)
(uint32)FUNC(&xboxkrnl::KeSetTimerEx), // 0x0096 (150)
(uint32)PANIC(0x0097), // 0x0097 (151) KeStallExecutionProcessor
(uint32)PANIC(0x0098), // 0x0098 (152) KeSuspendThread
(uint32)PANIC(0x0099), // 0x0099 (153) KeSynchronizeExecution
(uint32)VARIABLE(0x009A), // 0x009A (154) KeSystemTime
(uint32)PANIC(0x009B), // 0x009B (155) KeTestAlertThread
(uint32)VARIABLE(&xboxkrnl::KeTickCount), // 0x009C (156)
(uint32)VARIABLE(0x009D), // 0x009D (157) KeTimeIncrement
(uint32)FUNC(&xboxkrnl::KeWaitForMultipleObjects), // 0x009E (158)
(uint32)FUNC(&xboxkrnl::KeWaitForSingleObject), // 0x009F (159)
(uint32)FUNC(&xboxkrnl::KfRaiseIrql), // 0x00A0 (160)
(uint32)FUNC(&xboxkrnl::KfLowerIrql), // 0x00A1 (161)
(uint32)VARIABLE(0x00A2), // 0x00A2 (162) KiBugCheckData
(uint32)PANIC(0x00A3), // 0x00A3 (163) KiUnlockDispatcherDatabase
(uint32)VARIABLE(&xboxkrnl::LaunchDataPage), // 0x00A4 (164)
(uint32)FUNC(&xboxkrnl::MmAllocateContiguousMemory), // 0x00A5 (165)
(uint32)FUNC(&xboxkrnl::MmAllocateContiguousMemoryEx), // 0x00A6 (166)
(uint32)FUNC(&xboxkrnl::MmAllocateSystemMemory), // 0x00A7 (167)
(uint32)PANIC(0x00A8), // 0x00A8 (168) MmClaimGpuInstanceMemory
(uint32)FUNC(&xboxkrnl::MmCreateKernelStack), // 0x00A9 (169)
(uint32)FUNC(&xboxkrnl::MmDeleteKernelStack), // 0x00AA (170)
(uint32)FUNC(&xboxkrnl::MmFreeContiguousMemory), // 0x00AB (171)
(uint32)FUNC(&xboxkrnl::MmFreeSystemMemory), // 0x00AC (172)
(uint32)PANIC(0x00AD), // 0x00AD (173) MmGetPhysicalAddress
(uint32)PANIC(0x00AE), // 0x00AE (174) MmIsAddressValid
(uint32)FUNC(&xboxkrnl::MmLockUnlockBufferPages), // 0x00AF (175)
(uint32)PANIC(0x00B0), // 0x00B0 (176) MmLockUnlockPhysicalPage
(uint32)FUNC(&xboxkrnl::MmMapIoSpace), // 0x00B1 (177)
(uint32)FUNC(&xboxkrnl::MmPersistContiguousMemory), // 0x00B2 (178)
(uint32)PANIC(0x00B3), // 0x00B3 (179) MmQueryAddressProtect
(uint32)FUNC(&xboxkrnl::MmQueryAllocationSize), // 0x00B4 (180)
(uint32)FUNC(&xboxkrnl::MmQueryStatistics), // 0x00B5 (181)
(uint32)FUNC(&xboxkrnl::MmSetAddressProtect), // 0x00B6 (182)
(uint32)FUNC(&xboxkrnl::MmUnmapIoSpace), // 0x00B7 (183)
(uint32)FUNC(&xboxkrnl::NtAllocateVirtualMemory), // 0x00B8 (184)
(uint32)PANIC(0x00B9), // 0x00B9 (185) NtCancelTimer
(uint32)FUNC(&xboxkrnl::NtClearEvent), // 0x00BA (186)
(uint32)FUNC(&xboxkrnl::NtClose), // 0x00BB (187)
(uint32)FUNC(&xboxkrnl::NtCreateDirectoryObject), // 0x00BC (188)
(uint32)FUNC(&xboxkrnl::NtCreateEvent), // 0x00BD (189)
(uint32)FUNC(&xboxkrnl::NtCreateFile), // 0x00BE (190)
(uint32)PANIC(0x00BF), // 0x00BF (191) NtCreateIoCompletion
(uint32)FUNC(&xboxkrnl::NtCreateMutant), // 0x00C0 (192)
(uint32)FUNC(&xboxkrnl::NtCreateSemaphore), // 0x00C1 (193)
(uint32)PANIC(0x00C2), // 0x00C2 (194) NtCreateTimer
(uint32)PANIC(0x00C3), // 0x00C3 (195) NtDeleteFile
(uint32)FUNC(&xboxkrnl::NtDeviceIoControlFile), // 0x00C4 (196)
(uint32)FUNC(&xboxkrnl::NtDuplicateObject), // 0x00C5 (197)
(uint32)FUNC(&xboxkrnl::NtFlushBuffersFile), // 0x00C6 (198)
(uint32)FUNC(&xboxkrnl::NtFreeVirtualMemory), // 0x00C7 (199)
(uint32)PANIC(0x00C8), // 0x00C8 (200) NtFsControlFile
(uint32)PANIC(0x00C9), // 0x00C9 (201) NtOpenDirectoryObject
(uint32)FUNC(&xboxkrnl::NtOpenFile), // 0x00CA (202)
(uint32)FUNC(&xboxkrnl::NtOpenSymbolicLinkObject), // 0x00CB (203)
(uint32)FUNC(&xboxkrnl::NtProtectVirtualMemory), // 0x00CC (204)
(uint32)PANIC(0x00CD), // 0x00CD (205) NtPulseEvent
(uint32)FUNC(&xboxkrnl::NtQueueApcThread), // 0x00CE (206)
(uint32)FUNC(&xboxkrnl::NtQueryDirectoryFile), // 0x00CF (207)
(uint32)PANIC(0x00D0), // 0x00D0 (208) NtQueryDirectoryObject
(uint32)PANIC(0x00D1), // 0x00D1 (209) NtQueryEvent
(uint32)FUNC(&xboxkrnl::NtQueryFullAttributesFile), // 0x00D2 (210)
(uint32)FUNC(&xboxkrnl::NtQueryInformationFile), // 0x00D3 (211)
(uint32)PANIC(0x00D4), // 0x00D4 (212) NtQueryIoCompletion
(uint32)PANIC(0x00D5), // 0x00D5 (213) NtQueryMutant
(uint32)PANIC(0x00D6), // 0x00D6 (214) NtQuerySemaphore
(uint32)FUNC(&xboxkrnl::NtQuerySymbolicLinkObject), // 0x00D7 (215)
(uint32)PANIC(0x00D8), // 0x00D8 (216) NtQueryTimer
(uint32)FUNC(&xboxkrnl::NtQueryVirtualMemory), // 0x00D9 (217)
(uint32)FUNC(&xboxkrnl::NtQueryVolumeInformationFile), // 0x00DA (218)
(uint32)FUNC(&xboxkrnl::NtReadFile), // 0x00DB (219)
(uint32)PANIC(0x00DC), // 0x00DC (220) NtReadFileScatter
(uint32)FUNC(&xboxkrnl::NtReleaseMutant), // 0x00DD (221)
(uint32)FUNC(&xboxkrnl::NtReleaseSemaphore), // 0x00DE (222)
(uint32)PANIC(0x00DF), // 0x00DF (223) NtRemoveIoCompletion
(uint32)FUNC(&xboxkrnl::NtResumeThread), // 0x00E0 (224)
(uint32)FUNC(&xboxkrnl::NtSetEvent), // 0x00E1 (225)
(uint32)FUNC(&xboxkrnl::NtSetInformationFile), // 0x00E2 (226)
(uint32)PANIC(0x00E3), // 0x00E3 (227) NtSetIoCompletion
(uint32)FUNC(&xboxkrnl::NtSetSystemTime), // 0x00E4 (228)
(uint32)PANIC(0x00E5), // 0x00E5 (229) NtSetTimerEx
(uint32)PANIC(0x00E6), // 0x00E6 (230) NtSignalAndWaitForSingleObjectEx
(uint32)FUNC(&xboxkrnl::NtSuspendThread), // 0x00E7 (231)
(uint32)FUNC(&xboxkrnl::NtUserIoApcDispatcher), // 0x00E8 (232)
(uint32)PANIC(0x00E9), // 0x00E9 (233) NtWaitForSingleObject
(uint32)FUNC(&xboxkrnl::NtWaitForSingleObjectEx), // 0x00EA (234)
(uint32)FUNC(&xboxkrnl::NtWaitForMultipleObjectsEx), // 0x00EB (235)
(uint32)FUNC(&xboxkrnl::NtWriteFile), // 0x00EC (236)
(uint32)PANIC(0x00ED), // 0x00ED (237) NtWriteFileGather
(uint32)FUNC(&xboxkrnl::NtYieldExecution), // 0x00EE (238)
(uint32)PANIC(0x00EF), // 0x00EF (239) ObCreateObject
(uint32)VARIABLE(0x00F0), // 0x00F0 (240) ObDirectoryObjectType
(uint32)PANIC(0x00F1), // 0x00F1 (241) ObInsertObject
(uint32)PANIC(0x00F2), // 0x00F2 (242) ObMakeTemporaryObject
(uint32)PANIC(0x00F3), // 0x00F3 (243) ObOpenObjectByName
(uint32)PANIC(0x00F4), // 0x00F4 (244) ObOpenObjectByPointer
(uint32)VARIABLE(0x00F5), // 0x00F5 (245) ObpObjectHandleTable
(uint32)PANIC(0x00F6), // 0x00F6 (246) ObReferenceObjectByHandle
(uint32)PANIC(0x00F7), // 0x00F7 (247) ObReferenceObjectByName
(uint32)PANIC(0x00F8), // 0x00F8 (248) ObReferenceObjectByPointer
(uint32)VARIABLE(0x00F9), // 0x00F9 (249) ObSymbolicLinkObjectType
(uint32)PANIC(0x00FA), // 0x00FA (250) ObfDereferenceObject
(uint32)PANIC(0x00FB), // 0x00FB (251) ObfReferenceObject
(uint32)PANIC(0x00FC), // 0x00FC (252) PhyGetLinkState
(uint32)PANIC(0x00FD), // 0x00FD (253) PhyInitialize
(uint32)PANIC(0x00FE), // 0x00FE (254) PsCreateSystemThread
(uint32)FUNC(&xboxkrnl::PsCreateSystemThreadEx), // 0x00FF (255)
(uint32)PANIC(0x0100), // 0x0100 (256) PsQueryStatistics
(uint32)PANIC(0x0101), // 0x0101 (257) PsSetCreateThreadNotifyRoutine
(uint32)FUNC(&xboxkrnl::PsTerminateSystemThread), // 0x0102 (258)
(uint32)PANIC(0x0103), // 0x0103 (259) PsThreadObjectType
(uint32)FUNC(&xboxkrnl::RtlAnsiStringToUnicodeString), // 0x0104 (260)
(uint32)PANIC(0x0105), // 0x0105 (261) RtlAppendStringToString
(uint32)PANIC(0x0106), // 0x0106 (262) RtlAppendUnicodeStringToString
(uint32)PANIC(0x0107), // 0x0107 (263) RtlAppendUnicodeToString
(uint32)FUNC(&xboxkrnl::RtlAssert), // 0x0108 (264)
(uint32)PANIC(0x0109), // 0x0109 (265) RtlCaptureContext
(uint32)PANIC(0x010A), // 0x010A (266) RtlCaptureStackBackTrace
(uint32)PANIC(0x010B), // 0x010B (267) RtlCharToInteger
(uint32)PANIC(0x010C), // 0x010C (268) RtlCompareMemory
(uint32)PANIC(0x010D), // 0x010D (269) RtlCompareMemoryUlong
(uint32)PANIC(0x010E), // 0x010E (270) RtlCompareString
(uint32)PANIC(0x010F), // 0x010F (271) RtlCompareUnicodeString
(uint32)PANIC(0x0110), // 0x0110 (272) RtlCopyString
(uint32)PANIC(0x0111), // 0x0111 (273) RtlCopyUnicodeString
(uint32)PANIC(0x0112), // 0x0112 (274) RtlCreateUnicodeString
(uint32)PANIC(0x0113), // 0x0113 (275) RtlDowncaseUnicodeChar
(uint32)PANIC(0x0114), // 0x0114 (276) RtlDowncaseUnicodeString
(uint32)FUNC(&xboxkrnl::RtlEnterCriticalSection), // 0x0115 (277)
(uint32)PANIC(0x0116), // 0x0116 (278) RtlEnterCriticalSectionAndRegion
(uint32)FUNC(&xboxkrnl::RtlEqualString), // 0x0117 (279)
(uint32)PANIC(0x0118), // 0x0118 (280) RtlEqualUnicodeString
(uint32)PANIC(0x0119), // 0x0119 (281) RtlExtendedIntegerMultiply
(uint32)PANIC(0x011A), // 0x011A (282) RtlExtendedLargeIntegerDivide
(uint32)PANIC(0x011B), // 0x011B (283) RtlExtendedMagicDivide
(uint32)PANIC(0x011C), // 0x011C (284) RtlFillMemory
(uint32)PANIC(0x011D), // 0x011D (285) RtlFillMemoryUlong
(uint32)FUNC(&xboxkrnl::RtlFreeAnsiString), // 0x011E (286)
(uint32)PANIC(0x011F), // 0x011F (287) RtlFreeUnicodeString
(uint32)PANIC(0x0120), // 0x0120 (288) RtlGetCallersAddress
(uint32)FUNC(&xboxkrnl::RtlInitAnsiString), // 0x0121 (289)
(uint32)FUNC(&xboxkrnl::RtlInitUnicodeString), // 0x0122 (290)
(uint32)FUNC(&xboxkrnl::RtlInitializeCriticalSection), // 0x0123 (291)
(uint32)PANIC(0x0124), // 0x0124 (292) RtlIntegerToChar
(uint32)PANIC(0x0125), // 0x0125 (293) RtlIntegerToUnicodeString
(uint32)FUNC(&xboxkrnl::RtlLeaveCriticalSection), // 0x0126 (294)
(uint32)PANIC(0x0127), // 0x0127 (295) RtlLeaveCriticalSectionAndRegion
(uint32)FUNC(&xboxkrnl::RtlLowerChar), // 0x0128 (296)
(uint32)PANIC(0x0129), // 0x0129 (297) RtlMapGenericMask
(uint32)PANIC(0x012A), // 0x012A (298) RtlMoveMemory
(uint32)PANIC(0x012B), // 0x012B (299) RtlMultiByteToUnicodeN
(uint32)PANIC(0x012C), // 0x012C (300) RtlMultiByteToUnicodeSize
(uint32)FUNC(&xboxkrnl::RtlNtStatusToDosError), // 0x012D (301)
(uint32)PANIC(0x012E), // 0x012E (302) RtlRaiseException
(uint32)PANIC(0x012F), // 0x012F (303) RtlRaiseStatus
(uint32)FUNC(&xboxkrnl::RtlTimeFieldsToTime), // 0x0130 (304)
(uint32)FUNC(&xboxkrnl::RtlTimeToTimeFields), // 0x0131 (305)
(uint32)FUNC(&xboxkrnl::RtlTryEnterCriticalSection), // 0x0132 (306)
(uint32)PANIC(0x0133), // 0x0133 (307) RtlUlongByteSwap
(uint32)FUNC(&xboxkrnl::RtlUnicodeStringToAnsiString), // 0x0134 (308)
(uint32)PANIC(0x0135), // 0x0135 (309) RtlUnicodeStringToInteger
(uint32)PANIC(0x0136), // 0x0136 (310) RtlUnicodeToMultiByteN
(uint32)PANIC(0x0137), // 0x0137 (311) RtlUnicodeToMultiByteSize
(uint32)PANIC(0x0138), // 0x0138 (312) RtlUnwind
(uint32)PANIC(0x0139), // 0x0139 (313) RtlUpcaseUnicodeChar
(uint32)PANIC(0x013A), // 0x013A (314) RtlUpcaseUnicodeString
(uint32)PANIC(0x013B), // 0x013B (315) RtlUpcaseUnicodeToMultiByteN
(uint32)PANIC(0x013C), // 0x013C (316) RtlUpperChar
(uint32)PANIC(0x013D), // 0x013D (317) RtlUpperString
(uint32)PANIC(0x013E), // 0x013E (318) RtlUshortByteSwap
(uint32)PANIC(0x013F), // 0x013F (319) RtlWalkFrameChain
(uint32)PANIC(0x0140), // 0x0140 (320) RtlZeroMemory
(uint32)VARIABLE(0x0141), // 0x0141 (321) XboxEEPROMKey
(uint32)VARIABLE(&xboxkrnl::XboxHardwareInfo), // 0x0142 (322)
(uint32)VARIABLE(&xboxkrnl::XboxHDKey), // 0x0143 (323)
(uint32)VARIABLE(&xboxkrnl::XboxKrnlVersion), // 0x0144 (324)
(uint32)VARIABLE(&xboxkrnl::XboxSignatureKey), // 0x0145 (325)
(uint32)VARIABLE(&xboxkrnl::XeImageFileName), // 0x0146 (326)
(uint32)FUNC(&xboxkrnl::XeLoadSection), // 0x0147 (327)
(uint32)FUNC(&xboxkrnl::XeUnloadSection), // 0x0148 (328)
(uint32)PANIC(0x0149), // 0x0149 (329) READ_PORT_BUFFER_UCHAR
(uint32)PANIC(0x014A), // 0x014A (330) READ_PORT_BUFFER_USHORT
(uint32)PANIC(0x014B), // 0x014B (331) READ_PORT_BUFFER_ULONG
(uint32)PANIC(0x014C), // 0x014C (332) WRITE_PORT_BUFFER_UCHAR
(uint32)PANIC(0x014D), // 0x014D (333) WRITE_PORT_BUFFER_USHORT
(uint32)PANIC(0x014E), // 0x014E (334) WRITE_PORT_BUFFER_ULONG
(uint32)FUNC(&xboxkrnl::XcSHAInit), // 0x014F (335)
(uint32)FUNC(&xboxkrnl::XcSHAUpdate), // 0x0150 (336)
(uint32)FUNC(&xboxkrnl::XcSHAFinal), // 0x0151 (337)
(uint32)PANIC(0x0152), // 0x0152 (338) XcRC4Key
(uint32)PANIC(0x0153), // 0x0153 (339) XcRC4Crypt
(uint32)PANIC(0x0154), // 0x0154 (340) XcHMAC
(uint32)PANIC(0x0155), // 0x0155 (341) XcPKEncPublic
(uint32)PANIC(0x0156), // 0x0156 (342) XcPKDecPrivate
(uint32)PANIC(0x0157), // 0x0157 (343) XcPKGetKeyLen
(uint32)PANIC(0x0158), // 0x0158 (344) XcVerifyPKCS1Signature
(uint32)PANIC(0x0159), // 0x0159 (345) XcModExp
(uint32)PANIC(0x015A), // 0x015A (346) XcDESKeyParity
(uint32)PANIC(0x015B), // 0x015B (347) XcKeyTable
(uint32)PANIC(0x015C), // 0x015C (348) XcBlockCrypt
(uint32)PANIC(0x015D), // 0x015D (349) XcBlockCryptCBC
(uint32)PANIC(0x015E), // 0x015E (350) XcCryptService
(uint32)PANIC(0x015F), // 0x015F (351) XcUpdateCrypto
(uint32)PANIC(0x0160), // 0x0160 (352) RtlRip
(uint32)VARIABLE(0x0161), // 0x0161 (353) XboxLANKey
(uint32)VARIABLE(0x0162), // 0x0162 (354) XboxAlternateSignatureKeys
(uint32)VARIABLE(0x0163), // 0x0163 (355) XePublicKeyData
(uint32)VARIABLE(&xboxkrnl::HalBootSMCVideoMode), // 0x0164 (356)
(uint32)VARIABLE(0x0165), // 0x0165 (357) IdexChannelObject
(uint32)PANIC(0x0166), // 0x0166 (358) HalIsResetOrShutdownPending
(uint32)PANIC(0x0167), // 0x0167 (359) IoMarkIrpMustComplete
(uint32)PANIC(0x0168), // 0x0168 (360) HalInitiateShutdown
(uint32)PANIC(0x0169), // 0x0169 (361) RtlSnprintf
(uint32)PANIC(0x016A), // 0x016A (362) RtlSprintf
(uint32)PANIC(0x016B), // 0x016B (363) RtlVsnprintf
(uint32)PANIC(0x016C), // 0x016C (364) RtlVsprintf
(uint32)PANIC(0x016D), // 0x016D (365) HalEnableSecureTrayEject
(uint32)PANIC(0x016E), // 0x016E (366) HalWriteSMCScratchRegister
(uint32)PANIC(0x016F), // 0x016F (367) UnknownAPI367
(uint32)PANIC(0x0170), // 0x0170 (368) UnknownAPI368
(uint32)PANIC(0x0171), // 0x0171 (369) UnknownAPI369
(uint32)PANIC(0x0172), // 0x0172 (370) UnknownAPI370
(uint32)PANIC(0x0173), // 0x0173 (371) UnknownAPI371
(uint32)PANIC(0x0174), // 0x0174 (372) UnknownAPI372
(uint32)PANIC(0x0175), // 0x0175 (373) UnknownAPI373
(uint32)PANIC(0x0176), // 0x0177 (374) MmDbgAllocateMemory
(uint32)PANIC(0x0177), // 0x0178 (375) MmDbgFreeMemory - Returns number of pages released.
(uint32)PANIC(0x0178), // 0x0179 (376) MmDbgQueryAvailablePages
(uint32)PANIC(0x0179), // 0x017A (377) MmDbgReleaseAddress
(uint32)PANIC(0x017A), // 0x017A (378) MmDbgWriteCheck
};