Valhalla Legends Archive

Gaming => Diablo => Topic started by: RealityRipple on April 27, 2012, 08:15 AM

Title: Diablo 1 in Private Channels
Post by: RealityRipple on April 27, 2012, 08:15 AM
For shits and giggles, I created a client proxy for Diablo 1 that turns its packets into W2BN (really easy since they're identical except for SID_CDKEY2).

(http://uploads.realityripple.com/Pictures/D1.jpg)

Currently, it can enter private channels, host and join D1 games seamlessly, and all that jazz.

(http://realityripple.com/Software/Battle.net/D1toW2/main.png) (http://realityripple.com/Software/Battle.net/D1toW2/)
Title: Re: Diablo 1 in Private Channels
Post by: MyndFyre on April 27, 2012, 11:10 AM
Dude.... really?  lol :)
Title: Re: Diablo 1 in Private Channels
Post by: RealityRipple on April 27, 2012, 06:04 PM
Yeah... I even threw in the ol d1 bypass legit char check hack so d1 users can join d1 games through the w2 game list. I'm still working on getting UDP to function accurately, but all SID communication is perfect. D1 even makes operators white-named.

If anyone's interested in messing around with it, you can grab it at http://uploads.realityripple.com/Projects/D1toW2.zip (http://uploads.realityripple.com/Projects/D1toW2.zip) . Be warned, it has bugs and I don't think UDP works right at all right now.
Title: Re: Diablo 1 in Private Channels
Post by: MysT_DooM on April 27, 2012, 06:59 PM
woulda been cooler if d1 icon showed up on chanlist.  probably not since you went through war2, and I cant think of any hacky way to make it happen atm; cool though
ktbpa
Title: Re: Diablo 1 in Private Channels
Post by: RealityRipple on April 27, 2012, 07:08 PM
Quote from: MysT_DooM on April 27, 2012, 06:59 PM
woulda been cooler if d1 icon showed up on chanlist.  not since you went through war2, and I cant think of any hacky way to make it happen atm; cool though
ktbpa
It'd be locally possible, and your D1 char icon shows up for games you create to other D1onW2'ers... But the only clients that can edit their statstrings and possibly spoof d1 chars are non-cdkey'd clients that would defeat the purpose of this experiment. @.@
Title: Re: Diablo 1 in Private Channels
Post by: Invert on April 28, 2012, 12:59 AM
I don't mean to diverge from the topic...but I remember my dad buying Diablo for me in 1996. I have no idea what I did with the original but I would like to play it again before D3 is out. Anyone know where from I can "borrow" the game?  :)
Title: Re: Diablo 1 in Private Channels
Post by: Sixen on April 28, 2012, 03:04 PM
Haha, cool stuff RR. This was basically how l2k-Shadow got the SC Beta to work over Battle.net, IIRC.

Quote from: Invert on April 28, 2012, 12:59 AM
I don't mean to diverge from the topic...but I remember my dad buying Diablo for me in 1996. I have no idea what I did with the original but I would like to play it again before D3 is out. Anyone know where from I can "borrow" the game?  :)
I dunno about the full game, but I know you can download DSHR for free right from the Blizz FTP: http://ftp.blizzard.com/pub/demos/diablosw.exe (http://ftp.blizzard.com/pub/demos/diablosw.exe)
Title: Re: Diablo 1 in Private Channels
Post by: RealityRipple on April 28, 2012, 04:13 PM
I sent Invert a link to a DRTL iso.

I've also successfully completed this project's goal, and learned some fun things about the way the client works.


Title: Re: Diablo 1 in Private Channels
Post by: Invert on April 29, 2012, 07:32 PM
Quote from: RealityRipple on April 28, 2012, 04:13 PM
I sent Invert a link to a DRTL iso.

I've also successfully completed this project's goal, and learned some fun things about the way the client works.

Thanks, much appreciated.
Title: Re: Diablo 1 in Private Channels
Post by: MysT_DooM on April 29, 2012, 08:13 PM
Quote from: RealityRipple on April 28, 2012, 04:13 PM
I sent Invert a link to a DRTL iso.

I've also successfully completed this project's goal, and learned some fun things about the way the client works.




what did you learn
Title: Re: Diablo 1 in Private Channels
Post by: RealityRipple on April 29, 2012, 09:47 PM
Quote from: MysT_DooM on April 29, 2012, 08:13 PM
Quote from: RealityRipple on April 28, 2012, 04:13 PM
I sent Invert a link to a DRTL iso.

I've also successfully completed this project's goal, and learned some fun things about the way the client works.




what did you learn
Let's see...

The client is intelligent enough to know what device the bnet server it's connecting to is on, and only listens for peer UDP connections over that device. The result of this being that using localhost for a server renders UDP useless unless proxied. However, Storm seems to not like localhost communications, so the only thing that gets proxied is SID_CLIENTREQ. This does have the upshot of my allowing to choose a device by local IP address and d1 will follow.

The client id (statstring) sent from the server in SID_ENTERCHAT is stored in the client and compared to game lists to determine if the game is for the client. I had to read D1's sent statstring, store it, and replace BNet's response statstring with the one D1 supplied in order to join D1 games without using the ol D1 ignore invalid character hack. The rest of the statstring is used to determine which product-specific channels it can enter, for example Rogues Gallery.

Warcraft II won't show any details about D1 games, but D1 will show the W2 map name as the char name for W2 games. It's sort of amusing.
Title: Re: Diablo 1 in Private Channels
Post by: RealityRipple on June 03, 2012, 12:17 AM
Alright, I've just updated this to add backward compatibility with classic D1 players using a second D1 connection. Works pretty well, I must say.