Wolfr4 Tool

Suggest, discuss and store new and old Tools.

Moderators: Huki, jigebren

Wolfr4 Tool

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

6 Feb 2010, 05:10 PM #1

This topic is about my new project called WolfR4.

About WolfR4
WolfR4 is a launcher for Re-Volt (version 1207), designed to fix some Re-Volt bugs, add some features and tweaks, and to allow more elaborated user tracks (custom tracks) by giving a way to track makers to customize things that are normally fixed.




Update: 2010/07/28
After a long time of closed beta releases (during the 6 months of development), this is finally the first Public Version of WolfR4 !

The WolfR4 compiled file can be downloaded from the WolfR4's webpage.
More information about this tool can also be found on my website.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

6 Feb 2010, 05:12 PM #2

I started to work on my new tool: code name "WolfR4" - don't ask me why...

I'm currently in the process of writting the part dedicated to launch revolt, and the part dedicated to patch the process memory...
Quote
Like
Share

miromiro
Embarmed
miromiro
Embarmed
Joined: 12 Feb 2009, 04:34 PM

6 Feb 2010, 05:20 PM #3

What it will be able to do?
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

6 Feb 2010, 05:41 PM #4

miromiro @ Feb 6 2010, 06:20 PM wrote:What it will be able to do?
See the first post. I've updated it.

I'm aware it's a huge project...
I can't promise this tool will be released one day.
I was really motivated about this tool, and can't count the time I spent to try to correct bugs that don't even occur on my own system. But when I see that only 3 of you took the time to answer to my question in topic "about tuxabug", my impetus is on the way to be gone...
Quote
Like
Share

miromiro
Embarmed
miromiro
Embarmed
Joined: 12 Feb 2009, 04:34 PM

6 Feb 2010, 05:43 PM #5

Sounds good :).
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

6 Feb 2010, 05:44 PM #6

jigebren @ Feb 6 2010, 06:12 PM wrote: I'm currently in the process of writting the part dedicated to launch revolt, and the part dedicated to patch the process memory...
One request regarding this:

could you make it instead of a launcher, a background task that waits until it detects Re-Volt?

My worry is the multiplayer aspect. Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.

If your program is a launcher that launches Re-Volt, it might not work on multiplayer. However if it was checking in background when Re-Volt is running and attaches to it, then it might.

Just a note that I hope you keep in mind when developing it so that we can enjoy the results in multiplayer races too.
Quote
Like
Share

nero
100% Proofer
nero
100% Proofer
Joined: 27 Jun 2008, 02:28 PM

6 Feb 2010, 06:02 PM #7

Jig, i suggest it should be a patch. Not a launcher.
Saffron.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

6 Feb 2010, 06:16 PM #8

@arto
Good thing that you told me that in the beginning of development.

In fact, I was thinking in a first time about creating a background task. But I think I have to do it in a launcher way, because some values have to patched at the very beginning, before revolt executes. And moreover, if I patch a part while it is executed, it can lead to unpredictability bugs.
By launching revolt myself, it seems that I can pause it at the beginning, patch my value, and resume it after, which is good...
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.

-
nero wrote:Jig, i suggest it should be a patch. Not a launcher.
Impossible. If I want to allow custom models/skymaps/sfx, it's mandatory to check continually the revolt memory. Otherwise, we would have to restart revolt for every track, and before we do it, all other levels will use wrong models, etc.
Keep it mind that I can change just very little part in the original revolt exe, I can't do what I want.
Quote
Like
Share

nero
100% Proofer
nero
100% Proofer
Joined: 27 Jun 2008, 02:28 PM

6 Feb 2010, 06:21 PM #9

So i can't expect a patch. Damn.
Oh well, beggars can't be choosers.
Saffron.
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

6 Feb 2010, 07:25 PM #10

jigebren @ Feb 6 2010, 07:16 PM wrote: In fact, I was thinking in a first time about creating a background task. But I think I have to do it in a launcher way, because some values have to patched at the very beginning, before revolt executes. And moreover, if I patch a part while it is executed, it can lead to unpredictability bugs.
By launching revolt myself, it seems that I can pause it at the beginning, patch my value, and resume it after, which is good...
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.

-
nero wrote:Jig, i suggest it should be a patch. Not a launcher.
Impossible. If I want to allow custom models/skymaps/sfx, it's mandatory to check continually the revolt memory. Otherwise, we would have to restart revolt for every track, and before we do it, all other levels will use wrong models, etc.
Keep it mind that I can change just very little part in the original revolt exe, I can't do what I want.
Yes, understandable... but would it be possible to poll launching of Re-Volt every second or so, and if the process is seen then suspend it and modify the values in memory? Re-Volt seems to take quite a long time to load even in multiplayer mode where it skips the intro pictures. Of course I understand next to nothing about these patchings and attaching to processes, so I may be way off the mark.
arto wrote:Re-Volt is launched by DirectLobby API from multiplayer applications - that is, the applications just tell the DirectLobby API that they want to launch certain service with certain parameters. They do not directly launch Re-Volt or any other application.
Can you be more explicit? What is DirectLobby. In case of revolt, which application tell the DirectLobby API to launch which service? I don't really understand the process.
The application that launches Re-Volt is one of the lobby programs. In Re-Volt's case practically GameSpy or RV House.

In Windows' DirectX API there is (or at least was) a DirectLobby API, which is meant to create multiplayer games. You use that API to launch the application - you know nothing about the application's location, just it's identifier.

I can show you the code in RV House's case:

http://rvhouse.svn.sourceforge.net/view ... iew=markup

see the methods start_host and start_client, they're respectively for the host of the race and the other players who are joining the race. It might all look a bit gibbledygooky as the APIs are a bit messy, and this is C++ not straight C as is the case with Re-Volt.

But the basic idea is:

- you know the GUID of the application you want to launch (the application itself registers itself to DirectLobby)
- you tell DirectLobby API to launch the application, giving it the GUID of the application you want to launch.
- DirectLobby then launches the exact application in whatever ways it needs. In practice, at least in Windows XP, DirectLobby has a registry entry for all the applications it needs to launch.

I don't know if that made it any clearer, but I hope so.
Quote
Like
Share

Adamodell
... as a Newt
Adamodell
... as a Newt
Joined: 29 Jul 2007, 10:29 PM

6 Feb 2010, 08:09 PM #11

Nice play on the Phoenix R3 title.
If you want, I could design an icon for it. Haha.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

6 Feb 2010, 09:44 PM #12

nero wrote:So i can't expect a patch. Damn.
Oh well, beggars can't be choosers.
There is truth in that sentence. ;)

And I'd like to point out that I had clearly asked about it before:
jigebren @ in Custom Models In User Tracks, preparatory work, planning... wrote:What I'm personally wondering:
- does anybody have anything against the use of a launcher/memory patcher? (I'm afraid there is no other way to do).
and then nobody said something against it.
Now that the development has started, it's a bit late.
Can you tell me why the reason why you expected a patch?

-
arto wrote:but would it be possible to poll launching of Re-Volt every second or so, and if the process is seen then suspend it and modify the values in memory?
I tried, but didn't succeed to pause the process. Moreover, to fix the 'QueryPerformanceFrequency' issue, I have to do this at the very beginning.
arto wrote:I don't know if that made it any clearer, but I hope so.
Yes, thanks, arto, I appreciate your help.
I'm a bit lost in C++ source, I can understand it roughly, but some subtleties may escape me...
I'm just wondering, can't you launch the launcher (ie. WolfR4) instead of revolt. Won't it work? Have you an idea?

-
   Nice play on the Phoenix R3 title.
If you want, I could design an icon for it. Haha.
:)
Thanks for the proposition, adam. I have little graphics skills, so it may not be a problem for me. You can feel free to propose me something, but the problem is I'm afraid you'll take it bad if it don't suit me, so I won't know how to refuse in the latter case.
Quote
Like
Share

nero
100% Proofer
nero
100% Proofer
Joined: 27 Jun 2008, 02:28 PM

6 Feb 2010, 09:49 PM #13

jigebren @ Feb 6 2010, 10:44 PM wrote: Can you tell me why the reason why you expected a patch?
Because of lazyness. People are too damn lazy nowadays. And i'm not a big fan of launchers. :(
And it would be easier if it would be a patch...then you just have to unpack it and ur set to go, but as said above...
Saffron.
Quote
Like
Share

Adamodell
... as a Newt
Adamodell
... as a Newt
Joined: 29 Jul 2007, 10:29 PM

7 Feb 2010, 01:50 AM #14

jigebren @ Feb 6 2010, 10:44 PM wrote: :)
Thanks for the proposition, adam. I have little graphics skills, so it may not be a problem for me. You can feel free to propose me something, but the problem is I'm afraid you'll take it bad if it don't suit me, so I won't know how to refuse in the latter case.
If you want, you can do it. I don't want you to feel bad or anything.
Quote
Like
Share

zagames
100% Proofer
zagames
100% Proofer
Joined: 15 May 2006, 11:28 PM

7 Feb 2010, 03:59 AM #15

Perhaps, when the launcher is installed or executed, the program's address can be written to the windows registry. RV House could check for this registry, and if it exists, launch 'Wolf'. Just an idea
Quote
Like
Share

urnemanden
... as a Newt
urnemanden
... as a Newt
Joined: 21 Apr 2008, 05:03 PM

7 Feb 2010, 07:50 AM #16

Of course that requires that Wolf has some sort of build-in Multi-player service that launches Re-Volt in Multi-Player Mode. Once that has been done, you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)

But of course that's a lot of work to do for you, I'd rather not push you out in anything now and perhaps wait till everything else is working. (;
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 10:00 AM #17

jigebren @ Feb 6 2010, 10:44 PM wrote:
arto wrote:I don't know if that made it any clearer, but I hope so.
Yes, thanks, arto, I appreciate your help.
I'm a bit lost in C++ source, I can understand it roughly, but some subtleties may escape me...
I'm just wondering, can't you launch the launcher (ie. WolfR4) instead of revolt. Won't it work? Have you an idea?
Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.

Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.
Quote
Like
Share

KDL
Everclear-Addict
KDL
Everclear-Addict
Joined: 20 Oct 2008, 03:46 PM

7 Feb 2010, 10:02 AM #18

WolfR4 ROFL!!!
Freenix LOL

actually, Phoenix R3 is named for reasons, :P
R3 = RRR : the forum's name
Phoenix: bird that born from his ashes, never die :P

WolfORP anyone :P?
Quote
Like
Share

nero
100% Proofer
nero
100% Proofer
Joined: 27 Jun 2008, 02:28 PM

7 Feb 2010, 10:56 AM #19

AmberWolf 4 ???
Saffron.
Quote
Like
Share

miromiro
Embarmed
miromiro
Embarmed
Joined: 12 Feb 2009, 04:34 PM

7 Feb 2010, 12:42 PM #20

Wolfr4.

It's because he lives in France :P.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

7 Feb 2010, 07:02 PM #21

arto @ Feb 7 2010, 11:00 AM wrote:Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.
Too hard for me :( . I said it before, I'm unfortunately not a developper at all. I like to discover new stuffs, like memory patching, which I tried just for this project, but this direct lobby stuff is far too specific for me to spend a lot of time on it. I know you arto can help, but it would be too complicated.
Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.
Are they still used? I'm not really aware of online playing.

It seems that supporting online racing won't ease things. I'm not very pleased by the idea of having to remake all that I've already done in another way...
I have to think about it before continuing.

nero wrote:And it would be easier if it would be a patch...then you just have to unpack it and ur set to go, but as said above...
To make thing clearer, it's not an arbitrary choice. For the custom models support, I have no other choice at all. It's as simple as that.
For the launcher VS background task choice, I was pleased to use the launcher way, because I was able to do it nicely, and I keep control on the process. It's the only way I found to make sure I can patch values that are used at the very beginning of revolt process before they are used. Moreover, I can pause the process while patching, which is safer.

EDIT:
urnemanden wrote:you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)
This make me think: how do the vista users proceed to use the -sli parameter with RVHouse?
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

7 Feb 2010, 07:36 PM #22

@arto
I'm really not sure you want to modify RVhouse, but I found 2 interesting stuffs in directX doc:

First:
directx wrote:Supporting Dynamic Lobby Connection  [Language: C++]
One drawback of external lobby launching is that the lobby server always tells the lobby client to launch a new instance of the application, even if one is already running. You can avoid a redundant launch by supporting dynamic lobby connection.

The instructions in this section assume the application is already running and has a connection to a lobby server that will return connection settings.
And after, I found this, which can looks even better:
directx wrote:However, a properly registered application can itself be run by a launcher. See Supporting Ripple Launching

Supporting Ripple Launching  [Language: C++]
Ripple launching is the running of an application by another application that has itself been launched from a lobby. In the following discussion, the program run by the lobby is called the launcher, and the program it launches is called the application.

[C++]
In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.

When a lobby client runs the application by calling IDirectPlayLobby3::RunApplication, DirectPlay finds the name of the launcher in the registry and runs the launcher rather than the application. It is then the responsibility of the launcher to run the application.

The launcher must pass on to the application any command-line parameters it is provided with. The application should silently ignore any command-line parameters it does not understand.
Can't it help?
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 08:30 PM #23

jigebren @ Feb 7 2010, 08:02 PM wrote:
arto @ Feb 7 2010, 11:00 AM wrote:Yes I can. But then Wolf would have to launch the real Re-Volt using DirectLobby API. Basically doing what RV House is doing now when it tells DirectLobby to create Re-Volt multiplayer game.
Too hard for me :( . I said it before, I'm unfortunately not a developper at all. I like to discover new stuffs, like memory patching, which I tried just for this project, but this direct lobby stuff is far too specific for me to spend a lot of time on it. I know you arto can help, but it would be too complicated.
I agree this way is not advisable as it seems like a whole lot of duplication of code with little benefit...
Another downside is that we can do this kind of change to RV House, but for the other game lobbies such as GameSpy it wouldn't work.
Are they still used? I'm not really aware of online playing.
I guess GameSpy is still used, eventhough RV House is probably the biggest one. There may be others I'm aware of. In any case I think it'd be preferrable to find a universal solution. I think the other patcher did manage to do it, so it should be doable, but I do not know the details and haven't used it since the early versions.
urnemanden wrote:you eventually can make Wolf detect the OS and add -sli, so the Vista/7 users can have pleasure of the launcher too. =)
This make me think: how do the vista users proceed to use the -sli parameter with RVHouse?
There is a registry entry for DirectLobby applications, that DirectLobby uses to launch them. One of the entries gives the command line arguments that are used to launch the program, and in there user can specify the -sli.
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 08:39 PM #24

jigebren @ Feb 7 2010, 08:36 PM wrote: @arto
I'm really not sure you want ot modify RVhouse, but I found 2 interesting stuffs in directX doc:
I am willing to change RV House if needed to, provided I have something to test with to see that the changes work. However...
directx wrote:Supporting Dynamic Lobby Connection  [Language: C++]
One drawback of external lobby launching is that the lobby server always tells the lobby client to launch a new instance of the application, even if one is already running. You can avoid a redundant launch by supporting dynamic lobby connection.

The instructions in this section assume the application is already running and has a connection to a lobby server that will return connection settings.
I couldn't with googling find the page describing this so I can not comment on this by itself.
And after, I found this, which can looks even better:
directx wrote:However, a properly registered application can itself be run by a launcher. See Supporting Ripple Launching

Supporting Ripple Launching  [Language: C++]
Ripple launching is the running of an application by another application that has itself been launched from a lobby. In the following discussion, the program run by the lobby is called the launcher, and the program it launches is called the application.

[C++]
In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.

When a lobby client runs the application by calling IDirectPlayLobby3::RunApplication, DirectPlay finds the name of the launcher in the registry and runs the launcher rather than the application. It is then the responsibility of the launcher to run the application.

The launcher must pass on to the application any command-line parameters it is provided with. The application should silently ignore any command-line parameters it does not understand.
Can't it help?
From my understanding this doesn't help. That RegisterApplication, what's being talked in there, is done by Re-Volt when it is launched (this is the reason why RV House can not launch Re-Volt before player has started Re-Volt in singleplayer before that). So Re-Volt itself must be modified. If you think you can modify Re-Volt to register your launcher, then yes it would probably solve these problems. But this instruction seems to be out of control of for example RV House. It seems the application that is to be launched is in control of what launcher it wants to be used.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

7 Feb 2010, 10:08 PM #25

arto @ Feb 7 2010, 09:39 PM wrote:I am willing to change RV House if needed to, provided I have something to test with to see that the changes work. However...
Of course. I'm not like you know who. :ph43r: At least, not yet... ;)
If we have hope to achieve something, I could make quickly a file with the launcher part in it, and send it to you.
I couldn't with googling find the page describing this so I can not comment on this by itself.
I found it in the DirectX 7 SDK. I can supply you the .chm file.
That RegisterApplication, what's being talked in there, is done by Re-Volt when it is launched (this is the reason why RV House can not launch Re-Volt before player has started Re-Volt in singleplayer before that).
Ah, ok. I didn't understood thing like that. I though revolt were not aware of Lobby at all, and that it was RVHouse that add a 'lobby layer' over the directplay online connection, or something like that.
The whole lobby stuff is still not very clear for me...
directx sdk wrote:In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.
But nothing says here it's the application itself that has to register, or am I wrong? The 'RegisterApplication' could be done by an external application (RVHouse or WolfR4), of course provided that the setting are not overwritten by revolt itself.
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 10:34 PM #26

jigebren @ Feb 7 2010, 11:08 PM wrote:
I couldn't with googling find the page describing this so I can not comment on this by itself.
I found it in the DirectX 7 SDK. I can supply you the .chm file.
Ok thanks... if you think it is something that could be a solution, send it to me and I'll check if I understand it.
directx sdk wrote:In order to support ripple launching in your application, you must register it by passing the DPAPPLICATIONDESC2 structure to IDirectPlayLobby3::RegisterApplication. This structure has a member, lpszAppLauncherName, that contains the name of the launcher. The launcher must reside in the same directory as the application.
But nothing says here it's the application itself that has to register, or am I wrong? The 'RegisterApplication' could be done by an external application (RVHouse or WolfR4), of course provided that the setting are not overwritten by revolt itself.
I thought about that too... but I quite much think Re-Volt always overwrites that value. I know from user reports, that if someone has installed several Re-Volt installations in different directories, then the one RV House launches is always the last Re-Volt installation that the user had used.

Of course one possible solution would be for Wolf patch to disable that registering thingy from Re-Volt. Then it would be just a matter of launching Re-Volt once using Wolf, who registers Re-Volt again using Wolf as a launcher, and when RV House launches "Re-Volt" (which is really Wolf now), Wolf would launch Re-Volt and disable Re-Volt's RegisterApplication calling.

I don't know if something like that could work, but from the docs you quoted it seems feasible.

I don't really know the details of the DirectLobby API myself either. I just found out enough to know how to launch Re-Volt back in the stone age.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

7 Feb 2010, 10:57 PM #27

arto @ Feb 7 2010, 11:34 PM wrote:Of course one possible solution would be for Wolf patch to disable that registering thingy from Re-Volt.
I think I can do that.
Then it would be just a matter of launching Re-Volt once using Wolf, who registers Re-Volt again using Wolf as a launcher,
I hope I can do that.
and when RV House launches "Re-Volt" (which is really Wolf now), Wolf would launch Re-Volt and disable Re-Volt's RegisterApplication calling.
That's it.

But at the end of the SDK help, in 'Supporting Ripple Launching', they said
directx sdk wrote:The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings. (See Supporting Dynamic Lobby Connection.)
And I don't know what to think about this stuff.
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 11:17 PM #28

jigebren @ Feb 7 2010, 11:57 PM wrote:But at the end of the SDK help, in 'Supporting Ripple Launching', they said
directx sdk wrote:The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings. (See Supporting Dynamic Lobby Connection.)
And I don't know what to think about this stuff.
Googling with "Supporting Ripple Launching" I found this somewhat worrying document:

http://support.microsoft.com/kb/236614

Specifically:
More specifically, a ripple launcher program is a security program used to start games and prevent their piracy. A game that requires a ripple launcher program to install and run cannot be pirated because the ripple launcher program is encrypted into each program and cannot be duplicated.
This implies that it is designed so that third parties couldn't create launchers.
The primary enhancement of DirectPlay (DPlay) 6.1a over earlier versions of DPlay
I don't know the specific version of DirectPlay RV house uses. 6.1a is released 99/4, so it may well be RV uses earlier version.

And the part you quoted:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

7 Feb 2010, 11:27 PM #29

I will take a look at the microsoft link. That encrypted stuff sounds bad...
arto @ Feb 8 2010, 12:17 AM wrote:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?
I found this call at least in function 'CreateWaitForLobbyMenu' in the files:
xboxSrc\ui_WaitForLobby.cpp line:88
xboxFrontEndSrc\Lobby.cpp line:175
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

7 Feb 2010, 11:55 PM #30

jigebren @ Feb 8 2010, 12:27 AM wrote: I will take a look at the microsoft link. That encrypted stuff sounds bad...
arto @ Feb 8 2010, 12:17 AM wrote:
Requirements for Programs Started with Launcher.exe
A program started with the ripple launch program should silently ignore any command-line parameters it does not understand. Such a program should always call GetConnectionSettings at least once before using WaitForConnectionSettings.
This implies Re-Volt itself should call for WaitForConnectionSettings... and there is no such call in the Re-Volt sources. It might be quite difficult for Wolf4R to patch Re-Volt to call that function with all the structures it needs?
I found this call at least in function 'CreateWaitForLobbyMenu' in the files:
xboxSrc\ui_WaitForLobby.cpp line:88
xboxFrontEndSrc\Lobby.cpp line:175
Sorry, I copy-pasted the wrong function. I meant GetConnectionSettings, which doesn't seem to be called as far as I can see by Re-Volt.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

8 Feb 2010, 12:07 AM #31

I found

Code: Select all

    r = Lobby->GetConnectionSettings(0, NULL, &size);
    if (r == DPERR_NOTLOBBIED)
    {
        RELEASE(Lobby);
        return;
    }
in 'xboxFrontEndSrc\play_TEMP.cpp' line:175 and line:192, procedure 'LobbyConnect(void)'

and (quickly checked) I found something similar to the procedure 'void LobbyConnect(void)' in the revolt exe file.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

8 Feb 2010, 04:15 PM #32

Ok, now, let's go back to work.

A quite good news! (and I temper my excitement, because bad news often follows)

The 'DPAPPLICATIONDESC2' structure used by the lobby 'RegisterApplication' method when we want to register the launcher is very similar to the 'DPAPPLICATIONDESC' structure used in revolt (which don't register launcher). So I was able to tweak the LobbyRegister() revolt function to add the missing 'lpszAppLauncherNameA' member directly in the exe.
So now, revolt has registered 'WolfR4' has a launcher. It's already a good beginning. Don't know if we will be able to do want we want at the end, but I'm very happy to have achieved this.

I have to modify WolfR4 to 'pass on to the application any command-line parameters it is provided with', like it is stated in the SDK doc, then when can make firt try, I think. (I tried RVHouse yesterday, but I wasn't registered, so I skipped it).


And one more info. In docs, it is said:
The application should always call IDirectPlayLobby3::GetConnectionSettings at least once before using IDirectPlayLobby3::WaitForConnectionSettings.
Revolt calls GetConnectionSettings at the beginning. There is a call to WaitForConnectionSettings but it is never used. So perhaps it can't work without that? I can't be sure.
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

8 Feb 2010, 06:09 PM #33

jigebren @ Feb 8 2010, 05:15 PM wrote: Revolt calls GetConnectionSettings at the beginning. There is a call to WaitForConnectionSettings but it is never used. So perhaps it can't work without that? I can't be sure.
That sounds like great news!

Fastest way to find out is to just try it in RV House. If you have RVZT login, it works in RV House too. If not, it's fast and simple to register.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

8 Feb 2010, 06:20 PM #34

Yes, it's great, but I'm still sceptical about the WaitForConnectionSettings part, that one you've quoted...

I'm not registered to RVZT, but I'll do it, it can be usefull.

I have to update the command-line parameters stuff in my laucher, and then I'll try with RVHouse.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

8 Feb 2010, 10:06 PM #35

I'm ready to try with RVHouse. I launched it and registered. Now, there is waiting room and chat stuffs. But I'd just like to see if RVHouse can launch revolt, that's all. I don't want to join a race, because I'll be testing, so I can't play at the same time, and I'm too bad for now ;) . How can I do?
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

8 Feb 2010, 10:50 PM #36

I did it. I created a locked room in RVHouse and asked to lauch the game, it was not very complicated, in fact. I used my modified revolt.exe to register the launcher (WolfR4), and modified the laucher to work with Lobby stuff.

And it works! At least it looks like it work, I mean RVHouse launched WolfR4 instead of revolt, then I launched revolt from WolfR4. There was a big delay before I can play the level, and when I quit the ended race (1 lap), revolt crashed. But I had not set the compatibility mode, that could be the cause.
Quote
Like
Share

zipperrulez
Everclear-Addict
zipperrulez
Everclear-Addict
Joined: 19 Mar 2008, 09:49 PM

9 Feb 2010, 04:32 AM #37

it was not very complicated, in fact.
sounds complicated to me :P
There was a big delay before I can play the level, and when I quit the ended race (1 lap), revolt crashed. But I had not set the compatibility mode, that could be the cause.
On my pc with windows xp sp3 there is about a 1-2 minute loading screen if the compatability isnt set, so you can probably rest assured that the delay was the compatability.
revolt always crashed after racing online, unknown cause. afaik no one has been able to find out why it crashes, or stop it from crashing.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

9 Feb 2010, 04:36 AM #38

I did some other tests with RVHouse.
I tried to launch 'nhood1', being the only racer.

This time, I set compatibility mode to win98, so it seems to fix the loading delay I had before. Nothing surprising in it, as it does the same thing in solo racing mode.
But when I comlpete the race (1 lap) and choose Quit in the menu, revolt crashes. I tried with and without WolfR4 launcher, and it does exactly the same.

So at least, it looks like the lauching part is working nicely, and is not the cause of the crash.

But does anyone have any clue about this bug?

EDIT: I didn't see zipperrulez post above before, but he seems to have anticipated my questions...
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

9 Feb 2010, 04:42 AM #39

zipperrulez @ Feb 9 2010, 05:32 AM wrote:revolt always crashed after racing online, unknown cause. afaik no one has been able to find out why it crashes, or stop it from crashing.
But how do you use to do when you play online? Did you just use 'Next race', and in that way it doesn't crash?
Quote
Like
Share

zipperrulez
Everclear-Addict
zipperrulez
Everclear-Addict
Joined: 19 Mar 2008, 09:49 PM

9 Feb 2010, 04:48 AM #40

restarting the same track twice in a row crashes the game. ghost town 2 also has a strangely high crash tendency. to change the track you select another track, then press restart race. after the host terminates the game, when you press quit game (i dont remember if it is called quit game, but you get the idea...) revolt always crashes. it doesnt really matter though, because your done racing anyway.
hope i answered some of your questions ;)
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

9 Feb 2010, 04:55 AM #41

jigebren @ Feb 9 2010, 05:36 AM wrote: So at least, it looks like the lauching part is working nicely, and is not the cause of the crash.

But does anyone have any clue about this bug?
I suspect this crash started happening after some Windows update. But I'm not sure...

Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!
Quote
Like
Share

zipperrulez
Everclear-Addict
zipperrulez
Everclear-Addict
Joined: 19 Mar 2008, 09:49 PM

9 Feb 2010, 04:58 AM #42

arto has a way better understanding on this stuff than i do. i dont know any coding or stuff like that. all i know is pretty much creating custom content and troubleshooting basic errors. not very helpful to a programmer :P
Arto in that post above me wrote:Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!
it most certainly is :)

edit: whoa wait arto why do you only race online? lol.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

9 Feb 2010, 05:00 AM #43

zipperrulez @ Feb 9 2010, 05:48 AM wrote:hope i answered some of your questions ;)
Yep, thanks.
In fact it could look like that there is an issue with a memory allocation while loading the models, perhaps revolt try to load models that were badly (un)initialized.
Unfortunately, it's be probably too hard too fix (all the more in a patching way...)
Quote
Like
Share

zipperrulez
Everclear-Addict
zipperrulez
Everclear-Addict
Joined: 19 Mar 2008, 09:49 PM

9 Feb 2010, 05:03 AM #44

jigebren @ Feb 9 2010, 06:00 AM wrote: Unfortunately, it's be probably too hard too fix (all the more in a patching way...)
I don't think its all that big of a deal, because when it crashes you are finished with the game anyway.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

9 Feb 2010, 05:06 AM #45

zipperrulez @ Feb 9 2010, 06:03 AM wrote:
jigebren @ Feb 9 2010, 06:00 AM wrote: Unfortunately, it's be probably too hard too fix (all the more in a patching way...)
I don't think its all that big of a deal, because when it crashes you are finished with the game anyway.
It's just for fun, if we can call it like that ;) .

Do you know if it happens only with lobby stuff, or also on a LAN (with IPX if I remember)? It could be more easy to test without the need to launch RVHouse.
Quote
Like
Share

zipperrulez
Everclear-Addict
zipperrulez
Everclear-Addict
Joined: 19 Mar 2008, 09:49 PM

9 Feb 2010, 05:08 AM #46

if i remember right, if you can arrange a game without the use of rvhouse (ip joining) then it doesnt crash upon exit. dont quote me on that though, its been about 2 years since i raced without rvhouse :blink:
Quote
Like
Share

urnemanden
... as a Newt
urnemanden
... as a Newt
Joined: 21 Apr 2008, 05:03 PM

9 Feb 2010, 06:52 AM #47

Jig wrote:Do you know if it happens only with lobby stuff, or also on a LAN (with IPX if I remember)? It could be more easy to test without the need to launch RVHouse.
I always join by IP when I race online and I never experienced a crash - at least not with 0916. If I quit the multi-player game I get back to frontend.
Quote
Like
Share

jigebren
... as a Newt
jigebren
... as a Newt
Joined: 5 Dec 2009, 11:38 PM

9 Feb 2010, 02:18 PM #48

zipperrulez @ Feb 9 2010, 05:48 AM wrote:restarting the same track twice in a row crashes the game. ghost town 2 also has a strangely high crash tendency. to change the track you select another track, then press restart race. after the host terminates the game, when you press quit game (i dont remember if it is called quit game, but you get the idea...) revolt always crashes. it doesnt really matter though, because your done racing anyway.
hope i answered some of your questions ;)
urnemanden @ Feb 9 2010, 07:52 AM wrote:I always join by IP when I race online and I never experienced a crash - at least not with 0916. If I quit the multi-player game I get back to frontend.
From what you reported, it is likely that the bug is linked to the lobby stuff implementation. Perhaps because in that case, revolt start directly in the multiplayer part of the frontend. It could miss some initializations.

@urnemanden
In your case, do you also have a bug when restarting the same track twice when you race online? But perhaps you never have tried, as everybody else would crash their session...

-

Concerning that bug, I know it will be hard to refrain from doing so ;) , but I will probably don't spend too much time on it anymore. The available source code concerning the online racing is not as clean as the rest, it's a bit messy and mixed up, and the 'flow' is more difficult to identify.
Moreover, it looks like the Lobby code from m$ implement some anti-debbuging tricks. The revolt thread was paused everytime I attach my debugger on it. I think I could skip this one, but there could be other more nasty.
And as zipperrulez said, people are used to this bug, so...
Quote
Like
Share

urnemanden
... as a Newt
urnemanden
... as a Newt
Joined: 21 Apr 2008, 05:03 PM

9 Feb 2010, 03:09 PM #49

Jig wrote:@urnemanden
In your case, do you also have a bug when restarting the same track twice when you race online? But perhaps you never have tried, as everybody else would crash their session...
When you host, you most likely don't crash when restarting the same track, that's both for RV House joiners and IP Joiners as of I know. I don't know about RV House joiners, but if I join a game where the host restarts the same track, Re-Volt doesn't crash for me, it just simply tells me that the multi-player game has terminated (ended).
Quote
Like
Share

arto
100% Proofer
arto
100% Proofer
Joined: 15 Jun 2005, 07:18 AM

9 Feb 2010, 03:19 PM #50

zipperrulez @ Feb 9 2010, 05:58 AM wrote:
Arto in that post above me wrote:Anyway great to hear it works. It's really exciting to know we who only race online will be able to enjoy the work you do!
it most certainly is :)

edit: whoa wait arto why do you only race online? lol.
Because online racing is more fun :).
Quote
Like
Share