HRTL support #16

Open
opened 2014-05-09 03:41:32 -06:00 by khanduras · 26 comments
khanduras commented 2014-05-09 03:41:32 -06:00 (Migrated from github.com)

Is it possible to get HRTL client support built into PvPGN?

http://khanduras.net/repo/pvpgn-src-1_8_5_with-mysql-5_0_91hrtl-rar/

Is it possible to get HRTL client support built into PvPGN? http://khanduras.net/repo/pvpgn-src-1_8_5_with-mysql-5_0_91hrtl-rar/
RElesgoe commented 2014-05-10 23:12:58 -06:00 (Migrated from github.com)

What's wrong with it?

What's wrong with it?
khanduras commented 2014-05-11 00:42:09 -06:00 (Migrated from github.com)

It doesn't exist.

https://github.com/HarpyWar/pvpgn/blob/master/src/common/tag.h

No support for HRTL client.

It doesn't exist. https://github.com/HarpyWar/pvpgn/blob/master/src/common/tag.h No support for HRTL client.
RElesgoe commented 2014-05-11 13:12:15 -06:00 (Migrated from github.com)

Well the first link said that the HRTL client code is accepted..

Well the first link said that the HRTL client code is accepted..
khanduras commented 2014-05-11 13:14:52 -06:00 (Migrated from github.com)

Yes, that was done by me and it doesn't work. Also I'm no expert so I wanted confirmation that it was done correctly and then merged with the master.

Yes, that was done by me and it doesn't work. Also I'm no expert so I wanted confirmation that it was done correctly and then merged with the master.
RElesgoe commented 2014-05-11 13:33:27 -06:00 (Migrated from github.com)

In the world of programming, you'll get no help with the words "it doesnt work"
Explain with more detail

In the world of programming, you'll get no help with the words "it doesnt work" Explain with more detail
khanduras commented 2014-05-11 13:37:14 -06:00 (Migrated from github.com)

I don't think I added HRLT support correctly, I'm not knowledgeable enough to say how it's done. And Hellfire client doesn't have Battle.net support natively and I don't know how to add it.

I don't think I added HRLT support correctly, I'm not knowledgeable enough to say how it's done. And Hellfire client doesn't have Battle.net support natively and I don't know how to add it.
RElesgoe commented 2014-05-11 13:40:51 -06:00 (Migrated from github.com)

If Hellfire doesn't have native Battle.net support, then it needs to be programmed to send and receive packets for PvPGN

If Hellfire doesn't have native Battle.net support, then it needs to be programmed to send and receive packets for PvPGN
khanduras commented 2014-05-11 13:46:15 -06:00 (Migrated from github.com)

Yeah that's what we figured. We tried to use Diablo's battle.snp but none work. I don't know if it's because HRTL support in PvPGN is incorrectly programmed or if the battle.snp from Diablo is a dud.

http://khanduras.net/forums/pvpgn-developments/hellfire-and-pvpgn/

You can see in there what the snp file format looks like. It's a dll file and a mpq file.

Yeah that's what we figured. We tried to use Diablo's battle.snp but none work. I don't know if it's because HRTL support in PvPGN is incorrectly programmed or if the battle.snp from Diablo is a dud. http://khanduras.net/forums/pvpgn-developments/hellfire-and-pvpgn/ You can see in there what the snp file format looks like. It's a dll file and a mpq file.
HarpyWar commented 2014-05-14 07:27:18 -06:00 (Migrated from github.com)

@xboi209 is right. Hellfire client must have Battle.net support, then it will be added to PvPGN.

@xboi209 is right. Hellfire client must have Battle.net support, then it will be added to PvPGN.
khanduras commented 2014-05-14 10:05:54 -06:00 (Migrated from github.com)

How can we get that added?

How can we get that added?
HarpyWar commented 2014-05-14 12:01:01 -06:00 (Migrated from github.com)

There are code dependencies in PvPGN that can be searched by "DRTL" in whole project files. Tag HTRL should be added the same way.
Also new characters have to be added in code: barbarian, bard, monk (near the code with: warrior, rogue, sorcerer).

What about Hellfire - I don't know how to upgrade client to get it working with PvPGN.

There are code dependencies in PvPGN that can be searched by "DRTL" in whole project files. Tag HTRL should be added the same way. Also new characters have to be added in code: barbarian, bard, monk (near the code with: warrior, rogue, sorcerer). What about Hellfire - I don't know how to upgrade client to get it working with PvPGN.
khanduras commented 2014-05-17 12:58:10 -06:00 (Migrated from github.com)

I was shown this: https://github.com/bwapi/bwapi/tree/master/bwapi/SNP_DirectIP
It gives Starcraft a Direct IP method of playing online. DragonKing got it it work with Hellfire, perhaps there's something there?

I was shown this: https://github.com/bwapi/bwapi/tree/master/bwapi/SNP_DirectIP It gives Starcraft a Direct IP method of playing online. DragonKing got it it work with Hellfire, perhaps there's something there?
HarpyWar commented 2014-05-19 01:08:28 -06:00 (Migrated from github.com)

May be. Does Hellfire initially support multiplayer between players or not?
I can modify PvPGN to support Hellfire, but not vice versa.

May be. Does Hellfire initially support multiplayer between players or not? I can modify PvPGN to support Hellfire, but not vice versa.
RElesgoe commented 2014-05-19 01:30:00 -06:00 (Migrated from github.com)

I think from what I read, Hellfire had bnet support in 1.00 but the option was removed in 1.01
The network code is probably still there to handle packets

I think from what I read, Hellfire had bnet support in 1.00 but the option was removed in 1.01 The network code is probably still there to handle packets
khanduras commented 2014-05-19 01:43:24 -06:00 (Migrated from github.com)

Incorrect, Hellfire has never had Battle.net ever. It has UDP multiplayer but nothing more, I don't think it officially had multiplayer, it was a standard.snp file from Starcraft that gave Hellfire UDP.

Incorrect, Hellfire has never had Battle.net ever. It has UDP multiplayer but nothing more, I don't think it officially had multiplayer, it was a standard.snp file from Starcraft that gave Hellfire UDP.
RElesgoe commented 2014-07-18 00:47:10 -06:00 (Migrated from github.com)

@khanduras can I get your email address for further discussion

@khanduras can I get your email address for further discussion
khanduras commented 2014-07-18 03:45:34 -06:00 (Migrated from github.com)

Yeah sure, danieljames@chiefqualakon.net 

Yeah sure, danieljames@chiefqualakon.net 
RElesgoe commented 2015-08-15 00:04:00 -06:00 (Migrated from github.com)

With DxWnd on Windows 10, and using Diablo 1's Battle.snp from patch 1.04(using Battle.snp from any newer patch causes an error about not finding an ordinal, Storm.dll has to be replaced too I guess, I haven't tried yet), I was able to get into the Battle.net screen. There was a popup box with no text in it however, and notably no way to select a server to connect to(Battle.net used to be one server).
hellfirebnet

I looked into Hellfrui.dll and could safely assume that there is code for full Battle.net support because of these dialogs:
image
image

I believe this really is a matter of enabling everything, we'll just need someone who's good at reverse engineering here.

With [DxWnd](http://sourceforge.net/projects/dxwnd/) on Windows 10, and using Diablo 1's Battle.snp from patch 1.04(using Battle.snp from any newer patch causes an error about not finding an ordinal, Storm.dll has to be replaced too I guess, I haven't tried yet), I was able to get into the Battle.net screen. There was a popup box with no text in it however, and notably no way to select a server to connect to(Battle.net used to be one server). ![hellfirebnet](https://cloud.githubusercontent.com/assets/1463845/9287780/c7b424d6-42dc-11e5-8d8c-fcfd91884b4e.png) I looked into `Hellfrui.dll` and could safely assume that **there is code for full Battle.net support** because of these dialogs: ![image](https://cloud.githubusercontent.com/assets/1463845/9287732/e8d8509a-42d9-11e5-8cb5-d6e94b06446c.png) ![image](https://cloud.githubusercontent.com/assets/1463845/9287739/422e3a88-42da-11e5-8d9c-6534b308d873.png) I believe this really is a matter of enabling everything, we'll just need someone who's good at reverse engineering here.
RElesgoe commented 2015-08-15 00:45:32 -06:00 (Migrated from github.com)

I redirected requests to exodus.battle.net to 127.0.0.1 using my Hosts file and then started PvPGN on my computer and got this screen when trying to connect:
hellfirebnet2
I believe the missing text problem is a bug with Windows 10 because StarCraft has some problems with displaying text as well(not exactly the same problem though), it may be because of DxWnd but I don't know. Maybe Hellfire doesn't have the text at all, either way it's probably the same Unable to connect to Battle.net ... message that StarCraft has:
image

PvPGN also shows abnormal packets coming through:
image
This might be the protocol ID byte that clients send to indicate the type of connection they want.
Why is Hellfire sending a UDP packet to begin a connection?

After removing packet checks in PvPGN, this is what I'm getting:
image
Note the packet type keeps changing whenever I recompile PvPGN and try connecting again...

What could a UDP packet of 1 byte possibly be?

I redirected requests to _exodus.battle.net_ to _127.0.0.1_ using my Hosts file and then started PvPGN on my computer and got this screen when trying to connect: ![hellfirebnet2](https://cloud.githubusercontent.com/assets/1463845/9287810/0e497e90-42de-11e5-8dad-b4342e28000b.png) I believe the missing text problem is a bug with Windows 10 because [StarCraft has some problems with displaying text as well](http://www.teamliquid.net/forum/brood-war/468289-windows-10-and-broodwar)(not exactly the same problem though), it may be because of DxWnd but I don't know. Maybe Hellfire doesn't have the text at all, either way it's probably the same _Unable to connect to Battle.net ..._ message that StarCraft has: ![image](https://cloud.githubusercontent.com/assets/1463845/9287975/3bea888c-42e6-11e5-9521-e917eb4adead.png) PvPGN also shows abnormal packets coming through: ![image](https://cloud.githubusercontent.com/assets/1463845/9287817/6a3498e8-42de-11e5-9c62-9029d606a09d.png) ~~This might be the [protocol ID byte](https://bnetdocs.org/?op=doc&did=16) that clients send to indicate the type of connection they want.~~ Why is Hellfire sending a UDP packet to begin a connection? After removing packet checks in PvPGN, this is what I'm getting: ![image](https://cloud.githubusercontent.com/assets/1463845/9287929/0dbfd464-42e4-11e5-8a19-1ba0a4dd5702.png) Note the packet type keeps changing whenever I recompile PvPGN and try connecting again... What could a UDP packet of 1 byte possibly be?
RElesgoe commented 2015-09-07 20:28:52 -06:00 (Migrated from github.com)

Instead of removing packet checks, I modified t_udp_header's struct to use bn_byte instead of bn_int which then required changing the packet_set_type() function in packet.cpp to support bn_byte. bn_int_set(&packet->u.udp.h.type, type); -> bn_byte_set(&packet->u.udp.h.type, (uint8_t)type);

The one byte of data that Hellfire is sending to the server is a hexadecimal value of 0x20. PvPGN shows the packet type to be 0xcdcdcd20, that doesn't seem right but whatever. StarCraft Beta also uses the same protocol.
The packet should be handled in handle_udp_packet() by adding a new case to the switch-case statement but how should PvPGN respond to this? The protocol is very ancient so BNETDocs is of no help.

Note: Winsock 1.1 is used

Instead of removing packet checks, I modified `t_udp_header`'s struct to use `bn_byte` instead of `bn_int` which then required changing the `packet_set_type()` function in packet.cpp to support `bn_byte`. `bn_int_set(&packet->u.udp.h.type, type);` -> `bn_byte_set(&packet->u.udp.h.type, (uint8_t)type);` The one byte of data that Hellfire is sending to the server is a hexadecimal value of `0x20`. PvPGN shows the packet type to be `0xcdcdcd20`~~, that doesn't seem right but whatever~~. StarCraft Beta also uses the same protocol. The packet should be handled in `handle_udp_packet()` by adding a new case to the switch-case statement but how should PvPGN respond to this? The protocol is very ancient so [BNETDocs](https://bnetdocs.org/) is of no help. Note: Winsock 1.1 is used
RElesgoe commented 2015-09-07 21:09:37 -06:00 (Migrated from github.com)

I just tested with StarCraft 1.00 and found out that 1) it uses the same protocol as Hellfire/StarCraft Beta and 2) Battle.net still supports this protocol and therefore allows it to connect(although wants it to upgrade to the latest patch).

I think I'll need a second computer to host a PvPGN server since Winsock's bind() function is failing when the client is connecting to my server which is on the same computer, must be because both the server and client are using port 6112. When the bind() function fails, the client sends 0x20 in a UDP packet however when the function is successful, the communication is very different.

Since I can monitor how the client and server communicates using this protocol, I can now implement the protocol in PvPGN and hopefully get Hellfire to connect.

I just tested with StarCraft 1.00 and found out that 1) it uses the same protocol as Hellfire/StarCraft Beta and 2) Battle.net still supports this protocol and therefore allows it to connect(although wants it to upgrade to the latest patch). I think I'll need a second computer to host a PvPGN server since Winsock's `bind()` function is failing when the client is connecting to my server which is on the same computer, must be because both the server and client are using port 6112. When the `bind()` function fails, the client sends 0x20 in a UDP packet however when the function is successful, the communication is **very** different. Since I can monitor how the client and server communicates using this protocol, I can now implement the protocol in PvPGN and hopefully get Hellfire to connect.
khanduras commented 2020-04-05 10:41:17 -06:00 (Migrated from github.com)

Hello folks,

Looking to get this re-addressed. We now have the source code for Hellfire. Along with the source for PvPGN, it makes sense to me that we should be able to get Hellfire support. Is this something someone is willing to take a look at?

I'll drop the link to the source here: https://archive.org/details/hellfire_source

I'm not too sure what I'm looking at yet, I'm hoping there's a smarter wizard out there. 😁

Hello folks, Looking to get this re-addressed. We now have the source code for Hellfire. Along with the source for PvPGN, it makes sense to me that we should be able to get Hellfire support. Is this something someone is willing to take a look at? I'll drop the link to the source here: https://archive.org/details/hellfire_source I'm not too sure what I'm looking at yet, I'm hoping there's a smarter wizard out there. 😁
HarpyWar commented 2020-04-05 14:18:32 -06:00 (Migrated from github.com)

A manual with first steps to who can do it https://github.com/pvpgn/diablo-hellfire

A manual with first steps to who can do it https://github.com/pvpgn/diablo-hellfire
khanduras commented 2020-04-07 23:17:02 -06:00 (Migrated from github.com)

Appreciate the share HarpyWar. I guess there are some folks that doubt the legality and if your repo gets DMCA'd then we'll know Actiblizzard's stance on the matter.

@RElesgoe Is this something you can pick up again? Hope all is well in your little world right now. If you wanted to see anything from the old Khanduras site, there are some archives here: https://web.archive.org/web/20161213050735/http://khanduras.net/forums/pvpgn-developments/hellfire-and-pvpgn/

I have a copy of the files and such so if you need something else let me know. Ever so grateful

Appreciate the share HarpyWar. I guess there are some folks that doubt the legality and if your repo gets DMCA'd then we'll know Actiblizzard's stance on the matter. @RElesgoe Is this something you can pick up again? Hope all is well in your little world right now. If you wanted to see anything from the old Khanduras site, there are some archives here: https://web.archive.org/web/20161213050735/http://khanduras.net/forums/pvpgn-developments/hellfire-and-pvpgn/ I have a copy of the files and such so if you need something else let me know. Ever so grateful
RElesgoe commented 2020-11-02 18:19:33 -07:00 (Migrated from github.com)

@khanduras For some reason, I can't get hellfire to load Battle.snp. Are you able to?

@khanduras For some reason, I can't get hellfire to load `Battle.snp`. Are you able to?
Maxpire commented 2020-12-29 11:53:29 -07:00 (Migrated from github.com)

Oh wow! I would like to see Hellfire battle.net finally! I've made tutorials and stuff online on discord so people can setup Hellfire Multiplayer and a fixed version from Mordor, and some tweaks from a friend of mine on Discord. We use Zerotier to play with ipx (ipx wrapper thank you) And some people don't play because of no battle net. That would please me greatly.

Oh wow! I would like to see Hellfire battle.net finally! I've made tutorials and stuff online on discord so people can setup Hellfire Multiplayer and a fixed version from Mordor, and some tweaks from a friend of mine on Discord. We use Zerotier to play with ipx (ipx wrapper thank you) And some people don't play because of no battle net. That would please me greatly.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Techwizz/pvpgn-server#16
No description provided.