| This file contains information on the implementation of the direct play | |
| and direct play lobby features. | |
| Most methods and APIs are not implemented at this point. Examine the code | |
| to see what has been implemented. Stay tuned for some information here once | |
| there is more implementation (and I figure out what the heck I'm doing). | |
| The files are include/dplay.h, include/dplobby.h, multimedia/dplobby.c and multimedia/dplay.c. | |
| The .c files will be moved to appropriate dll directories at some later time. | |
| I think I can safely say that any application which requires direct play | |
| or direct play lobby will not work at this point. Priority will be to get | |
| examples from the sdk running. Once they're at least partially working, I can | |
| get down to trying to get some of the games working. | |
| A small issue will be the fact that DirectX 6.1(ie. DirectPlay4) introduces a layer of functionality | |
| inside the DP objects which provide guaranteed protocol delivery. This is | |
| even if the native protocol, IPX or modem for instance, doesn't guarantee it. I'm going to leave | |
| this kind of implementation to as close to the end as possible. However, I | |
| will implement an abstraction layer, where possible, for this functionality. | |
| It will do nothing to start, but will require only the implementation of the | |
| guaranteness to give final implementation. | |
| TODO: | |
| - (done) Header files for DP4 and DPL3 | |
| - (done) Add stub functions for all DP4 and DPL3 interfaces | |
| - (done) Correct naming of the parameters for DP3 and DPL2 | |
| - (done) Seperate out DP and DPL into multiple .c files | |
| - (done) Allow CoCreateInstance to create the new interfaces | |
| - (started)Implement mutual exclusion on object data for existing functions | |
| - (done) Create and move to correct dll directories (dplay and dplayx) | |
| - (done) Implement dplay in terms of dplayx | |
| - (started) Need a better internal implementation for the objects which scales and | |
| preferably doesn't involve casting structures (dplobby done) | |
| - (started) More generic initialization and destruction helper methods based off | |
| the chosen internal implementation (dplobby done) | |
| - Use only windows routines where an equivalent is available | |
| - (done) Fix wine dplay.h and dplobby.h header files to allow apps to create the ansi versions | |
| - (started) Port some WineLib test programs using sdk programs (both C and C++ progs) | |
| - (done) Implement a lib main for the dplayx dll (required for RunApplication, etc.) | |
| - Figure out how to share the global memory correctly | |
| - Ensure that all dll stubs are present and the ordinals are correct | |
| - (started)Implementation of functionality | |
| - Addition of DirectX 7.0 functionality for direct play (try to catch that moving train) | |
| - bug fixes ;) | |
| - Implement some WineLib test programs using sdk programs as a skeleton | |
| Programs to make work: | |
| - lserver.exe (from sdk) | |
| - override.exe (from sdk) | |
| - dpchat.exe (from sdk) | |
| - duel.exe (from sdk) | |
| - dplaunch.exe (from sdk) | |
| Next API to implement on a per program basis: | |
| override.exe | |
| - fixme:dplay:DirectPlayCreate Modem binding not supported yet | |
| - DirectPlay3AImpl_InitializeConnection | |
| - DirectPlay2AImpl_Open | |
| - ? | |
| dplaunch.exe | |
| - IDirectPlayLobby2AImpl_CreateCompoundAddress | |
| - IDirectPlayLobbyAImpl_RunApplication | |
| - ? | |
| lserver.exe | |
| - IDirectPlayLobby2WImpl_Connect | |
| - fixme:dplay:DirectPlayCreate Modem binding not supported yet | |
| - IDirectPlay3WImpl_CreatePlayer | |
| - IDirectPlay3WImpl_CreateGroup | |
| - IDirectPlay3WImpl_SetGroupData | |
| - IDirectPlay3WImpl_Send | |
| - ? | |
| bellhop.exe | |
| - DirectPlay3AImpl_EnumConnections (lobby applications) | |
| - ? | |
| dpslots.exe | |
| - IDirectPlayLobby3AImpl_ConnectEx | |
| - ? | |
| Other TODO: | |
| - look at problem with parsing the resource file for dplaunch. wrc problem? | |
| - I should be getting the dialog box to come up for dpchat when something is selected | |
| Call OLE32.7: CoCreateInstance(010017f0,00000000,00000001,010017e0,010094b4) ret=01002f38 fs=0237 | |
| Call ADVAPI32.188: RegOpenKeyExA(80000002,5e08dd90 "Software\\Microsoft\\DirectPlay\\Compatibility",00000000,00020019,40e7f49c) ret=5e0b6e5a fs=0237 | |
| Peter Hunnisett - hunnise@nortelnetworks.com |