Daniel Collins
551cbcf43c
Include Wine DirectPlay headers rather than needing the DX SDK.
2018-10-03 23:21:02 +01:00
Daniel Collins
d2bd2bc85a
Tweak debug logging.
2018-10-03 21:35:23 +01:00
Daniel Collins
b1289366be
Address handling improvements.
...
- IDirectPlay8Peer::EnumHosts() requires a device address to specify
the service provider to emulate.
- IDirectPlay8Peer::EnumHosts() allows overriding the address/port
that discovery messages are sent to.
- IDirectPlay8Peer::Host() requires at least one address. Addresses
with different service providers are not supported yet.
- Implement IDirectPlay8Peer::GetPeerAddress() method.
- Populate pAddressSender in DPNMSG_ENUM_HOSTS_QUERY message.
- Popupate pAddressPlayer in DPNMSG_INDICATE_CONNECT message.
- Base host addresses created by IDirectPlay8Peer on service provider
of device address given to Host() method.
2018-10-03 21:21:56 +01:00
Daniel Collins
f8ee41f365
Implement basic logging functions, do some TODOs.
2018-10-02 00:46:05 +01:00
Daniel Collins
8b70fea3bc
Finish implementation of (Get|Set)ApplicationDesc()
2018-10-01 23:03:33 +01:00
Daniel Collins
f5c660f22a
Copy values for DPN_APPLICATION_DESC between peers.
2018-09-30 19:45:57 +01:00
Daniel Collins
d4d0c2f64a
Use same host enumeration parameters as DirectX.
2018-09-29 19:59:38 +01:00
Daniel Collins
f150264c93
Implement IDirectPlay8Peer::GetSPCaps() and SetSPCaps()
2018-09-29 19:56:47 +01:00
Daniel Collins
82a8842fa0
Implement IDirectPlay8Peer::GetCaps() and SetCaps()
2018-09-29 19:31:01 +01:00
Daniel Collins
c2a3b51c9d
Implement IDirectPlay8Peer::EnumServiceProviders()
2018-09-29 19:00:45 +01:00
Daniel Collins
2b1a0fb687
Exchange peer information between host/peer.
2018-09-27 22:56:36 +01:00
Daniel Collins
6b8d3eab9b
HostEnumerator: Populate host address port correctly.
2018-09-27 22:22:56 +01:00
Daniel Collins
ca6184b1c9
DirectPlay8Address: Convert ANSI strings to Unicode.
2018-09-27 22:05:38 +01:00
Daniel Collins
f19678217f
SendTo() support for DPNID_ALL_PLAYERS_GROUP, DPNSEND_NOLOOPBACK.
2018-09-24 21:43:25 +01:00
Daniel Collins
2635fd04cd
Initial SetPeerInfo() and SetPeerInfo() implementations.
...
Doesn't copy between peers and only allows fetching local player info
at this time.
2018-09-24 21:40:34 +01:00
Daniel Collins
c28f880fee
Initial prototype of a hook DLL (ddraw.dll)
2018-09-23 15:43:15 +01:00
Daniel Collins
45b4fd19bd
Basic message sending.
2018-09-21 01:03:49 +01:00
Daniel Collins
e8fdf2ecb1
Simple SendTo tests
2018-09-20 22:51:54 +01:00
Daniel Collins
25341f2488
Milestone: Connect a single peer!
2018-09-20 00:58:41 +01:00
Daniel Collins
98b37cf76c
WIP: DirectPlay8Peer::Connect() tests
...
Currently being developed against real DirectPlay to be a baseline.
2018-09-17 23:18:49 +01:00
Daniel Collins
da3cd1a55f
Use HandleHandlingPool to run DirectPlay8Peer worker threads.
2018-09-15 23:24:54 +01:00
Daniel Collins
f06f219d61
Implement HandleHandlingPool class.
...
This will run all the main I/O threads in DirectPlay8Peer, only
the host enumeration will be outside of it at this time.
2018-09-15 21:38:01 +01:00
Daniel Collins
26c038a24d
Build with Visual Studio toolchain rather than GCC.
...
I want C++17 features :(
2018-09-13 01:42:31 +01:00
Daniel Collins
1dd9e45145
Improve DirectPlay8Peer object management in tests.
2018-09-13 01:40:47 +01:00
Daniel Collins
d10a456883
Fix use of uninitialised memory, leaks.
2018-09-13 01:20:45 +01:00
Daniel Collins
c63945facd
Initial prototype of network I/O and session enumeration.
...
The threading model used for processing messages here will need
redesigning; we can't allow the application to block the event loop
when processing a message in case it calls something which won't
return until a message is processed.
Final model will probably use a pool of workers which will handle I/O
one-at-a-time, blocking and allowing other threads to deal with the
I/O when in the application message callback.
2018-09-11 22:09:27 +01:00
Daniel Collins
286c86ea46
Implement serialising of GUIDs in packets.
2018-09-11 21:53:27 +01:00
Daniel Collins
971119edae
Implement low-level packet (de)serialisation code.
...
The protocol is going to use TLV messages, containing zero or more
fields represented using the same TLV header. Functions for
(de)serialising DirectPlay message structures will be built on top of
these classes.
2018-09-02 13:02:20 +01:00
Daniel Collins
c865ecb1f7
Disable IDirectPlay8Address::GetURLX() tests.
...
Not implementing these methods yet.
2018-09-02 13:01:02 +01:00
Daniel Collins
f829367d1b
Create sockets for hosting.
2018-08-30 22:55:00 +01:00
Daniel Collins
9659e2e84b
Ensure provider component is always first.
2018-08-29 00:29:08 +01:00
Daniel Collins
d2092b8641
Added tests for DirectPlay8Address::GetURL[AW]() and component ordering.
2018-08-29 00:25:25 +01:00
Daniel Collins
5550c78658
More DirectPlay8Address tests, "fix" GetUserData() behaviour
2018-08-28 23:20:29 +01:00
Daniel Collins
45a9f1b268
More DirectPlay8Address tests, fixed ANSI string components.
2018-08-28 22:34:56 +01:00
Daniel Collins
1405a9f127
Import Google Test framework
2018-08-28 21:56:00 +01:00
Daniel Collins
1564ddf309
Initial DirectPlay8Address unit tests and fixes.
2018-08-28 16:09:13 +01:00
Daniel Collins
b8364c5997
Partial DirectPlay8Address implementation.
2018-08-23 00:10:18 +01:00
Daniel Collins
1c41ec3b76
Implemented DirectPlay8Address skeleton
2018-08-21 23:11:41 +01:00
Daniel Collins
b2c025b530
Implemented initial skeleton of dpnet.dll and DirectPlay8Peer.
2018-08-21 22:59:27 +01:00
Daniel Collins
c687913b7b
Initial commit
2018-08-20 21:50:46 +01:00