Cxbx-Reloaded/import/OpenXDK/include/xinput/xinputdetails.txt

111 lines
3.0 KiB
Plaintext

/******************************************************************************/
/* */
/* It has arrived! */
/* */
/* Gamepad support for the OpenXDK */
/* */
/******************************************************************************/
This is a lib build of the gamepad code - its more or less independent..it
doens't need any of the other openxdk header files, and will work in the ms xdk
as well.
Its been designed to be as flexible as possible - so many of the xinput.h
interface functions have been designed so we can tweek away at the workings
and get you a great feel in tim.
It works! But might need a bit of improvement for speed.
Externals:
extern "C" __u32 __stdcall MmAllocateContiguousMemory(__u32 a);
extern "C" __u32 __stdcall MmLockUnlockBufferPages(__u32 MemoryAddress, __u32 NumberOfBytes, __u32 a);
extern "C" __u32 __stdcall MmGetPhysicalAddress(__u32 BaseAddress);
These are the only external links in our code! Everything else..even the
myGetTickCount() have all been implemented inside our code!
How to use it:
/******************************************************************************/
/*
How does this code work? What lib's does it need? How would I use it
in my code?
Well the aim of the gamepad code was to develop an independent set of
code for the openxdk - but because it's lib independent it also works on
the xdk.
<1> Include our header file, and the other files which do all the work..
later they'll be put into a library
e.g. #include "xinput/xinput.h" // Gamepad input
<2> Init our gamepad code
e.g.
stXINPUT xin;
xInitInput(&xin);
You do this ocne at the start of the program, I did it this way as I don't
like globals, so you need to pass it a stuct called stXINPUT which
keeps all our usb/gampad information in.
<3> Get our gamepad information in our main loop e.g:
stXPAD pad;
xGetPadInput(&pad, &xin);
<4> When we've all finished, call xReleaseInput(&xin);
<Misc> You can also set the rumble effect - still in development
e.g. xSetPadInput(&pad, &xin);
*/
/******************************************************************************/
Feedback welcome: bkenwright@xbdev.net
Edits to OpenXDK main code:
mm.h line:83
from:
XBSYSAPI VOID *MmLockUnlockBufferPages;
to:
XBSYSAPI EXPORTNUM(175) PHYSICAL_ADDRESS NTAPI MmLockUnlockBufferPages
(
IN PHYSICAL_ADDRESS BaseAddress,
IN ULONG NumberOfBytes,
IN ULONG Protect
);
mm.c line:94
from:
XBSYSAPI VOID *MmLockUnlockBufferPages = 0;
to:
XBSYSAPI EXPORTNUM(175) PHYSICAL_ADDRESS NTAPI MmLockUnlockBufferPages
(
IN PHYSICAL_ADDRESS BaseAddress,
IN ULONG NumberOfBytes,
IN ULONG Protect
)
{
return;
}