• Welcome to Valhalla Legends Archive.
 

Diablo 1 in Private Channels

Started by RealityRipple, April 27, 2012, 08:15 AM

Previous topic - Next topic

RealityRipple

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).



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


MyndFyre

QuoteEvery generation of humans believed it had all the answers it needed, except for a few mysteries they assumed would be solved at any moment. And they all believed their ancestors were simplistic and deluded. What are the odds that you are the first generation of humans who will understand reality?

After 3 years, it's on the horizon.  The new JinxBot, and BN#, the managed Battle.net Client library.

Quote from: chyea on January 16, 2009, 05:05 PM
You've just located global warming.

RealityRipple

#2
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 . Be warned, it has bugs and I don't think UDP works right at all right now.

MysT_DooM

#3
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


vb6, something about that combination of numbers and letters is sexy

RealityRipple

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. @.@

Invert

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?  :)

Sixen

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
Blizzard Tech Support/Op W@R - FallenArms
The Chat Gem Lives!
http://www.diablofans.com
http://www.sixen.org

RealityRipple

#7
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.



Invert

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.

MysT_DooM

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


vb6, something about that combination of numbers and letters is sexy

RealityRipple

#10
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.

RealityRipple

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.