Half-Life for Dreamcast has some functional multiplayer components

Discussion in 'Sega Dreamcast Development and Research' started by TerdFerguson, Jul 13, 2015.

  1. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    Well, first of all, I completely agree with FG, it's really nice to see your enthusiasm. ;)

    I don't know if really, this is a complete port of not. And don't know if that port's really completed. I heard there's some save bugs, something like the save take all the space on the VMU. So I don't know if this HLDC release is really 'gold' or only a 'preview' one. The thing I can say, the executable was built in Release mode but with Debug information. That means for me, it's a test release almost finished but not completely. But it's only assumption.

    I was thinking the same, but when I tried on the real hardware, my BBA is never trying to get an IP, in clear, my BBA is never up. But TerdFerguson, you pointed something really interesting: the WinCE SDK is (maybe?) incompatible with the BBA. I didn't try to connect with the modem only. So I guess we have a little hope? ;)

    I disagree on that part. First of all, Windows and Windows CE are completely separated branches (e.g. kernels are completely differents). In clear: only the name is common. WinCE is a completely different OS, and yes, ports are facilitated by a very close API between the two Windows. Like I said before, that's why you're thinking Windows CE is almost like the 'normal' Windows, but, no, it's not. Plus, every source codes need to be adapted/recompiled in order to work on CE. In clear, recompiled sources code means possibility altered and / or not 100% compatible.

    I don't know, but when I posted the link on PandoraLive, which describes issues when porting the game to Pandora, we can see that the game has always an client-server architecture even in solo mode (the post on that website is pretty complete and very interesting, for example, read the part about the crowbar weapon). And I guess this statement is true.

    I think the DPLAYX.DLL is missing right? It's the standard library for netplay. That's why I think we should add it to the binary. ;)


    This statement is true. But it's applicable to SEGA OS too. I mean programs developed under the official Katana SDK. :)

    I'm sorry to telling you that, but if the game isn't aware of netplay sockets, it won't work at all. I don't think there's some kind of 'magic' that'll allow us to do that. If the game is ready for netplay, which I doubt, maybe. Else, even if we open some netplay socket (in a subprocess like you said, or in the same process, like I said) it won't work. Maybe I wrong, and I hope so. :)

    Feel free to test it on real hardware, and maybe with the modem only? ;)

    And of course, like we said before, this content is only my opinion.
    Maybe I'm wrong, maybe not. Who knows? ;)
     
    Anthony817 and TerdFerguson like this.
  2. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    Ah really? Because I saw in the executable that you could use the connect command with an IP. Maybe I'm wrong on that part. :)
     
  3. -=FamilyGuy=-

    -=FamilyGuy=- Site Supporter 2049

    Joined:
    Mar 3, 2007
    Messages:
    3,034
    Likes Received:
    891
  4. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    I'm fairly certain there's no bba compatibility by default. Its probably possible to do so, as mentioned here http://assemblergames.com/l/threads/4x4-evolution-dc-adding-bba-lan-to-a-wince-game.51745/

    But i'm not sure if you know this or not, but there is also a full registry in the ROM or at least i'm fairly sure

    [​IMG]
    [​IMG]
    [​IMG]

    So i'd image registry manipulation could be used to our advantage. The DLLs are missing from the ROM but there seem to be alot of the network functions in the registry for using the DLLs

    [​IMG]

    [​IMG]
    [​IMG]
    [​IMG]

    Maybe since there's tcp/ip registry keys bba on windows CE is possible after all
    [​IMG]

    Since this is true, with internet the game could also function as a listen server

    On the PC version of half life, you would type 'connect <ip>' to join a server, not to set a static ip of bba. So since it says 'failed after 4 retries' that means it does try to connect to a server. Meaning those functions and likely the rest of them work

    What I mean is if I had the skills you have, I would try using the CE client/OS to establish and handle the networking rather than trying to make it self contained within the game. Which it was never programmed to do in the first place, and the PC version of half life ran off of the OS's network. So the DC CE client interacts with the game as it would on an x86 PC

    But again like you said opinion, who knows, we won't know until we know for sure
     
  5. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    Ok, so your point of view is, if we add the network driver in the WinCE Kernel OS (e.g. through the registry), the game should be able to detect that the network is available and then the connect command will work?
     
    TerdFerguson likes this.
  6. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Those empty commands are:

    wc - no console output
    customsrclist - no console output
    vid_desribemode - crashes game
    gl_texturemode - no console output
    ptrack - no contole output
    bunny - console output is 'I miss ya, Betty -Robert'. Doesn't appear to do anything

    Those commands may do something but nothing i could see
     
  7. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    Do you have somewhere a description of these commands? And probably the action for each of them?
     
  8. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Yes if internet connection was established in a similar way to how it is on Windows x86 PC, then multiplayer could work. We would have to figure out how half-life PC interacts with windows x86 networking, then setup something as similar as possible ( or at least as far as half life see's on the dreamcast ) on the windows ce dreamcast client

    So yes I think if you established a connection via WinCE OS the game should be able to see the connection, since it is also running on CE and connecting to another dreamcast over the network would be possible. Because to the engine it makes no difference if its running on x86 or CE, heavily modified or not, if it does in fact try to connect to a server then with net it should function like it does on x86 pc with little modification

    That's as detailed as i can describe it. But thats only how i see it there's a good chance i'm wrong
     
  9. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    The description to the command is next to it ( 'wc' is the command and the desription is ' no console output ' ) they may do something but not what i could see and no output from console. They might be able to be 'hooked' to add a console command if it was needed. Just an idea
     
  10. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    I mean, do you have the description of each command on PC? In clear, what they're supposed to do? Or these commands are only for the DC?
     
  11. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
  12. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    Thank you, i'll check this out.

    Hm... You seem to be very enthusiastic! And I like it! Really! ;)

    But I think you're talking too fast. Like I said before, I'm pretty sure that the game itself, when compiled, is completely different. For example, in the DC you'll see a lot of reference to the PVR API which is responsible of textures. And that PVR API is completely linked to the PowerVR GPU. What I try to mean is, of course the game came from Windows and it share a lot of code from the original source, but, I'm taking no risks to say that the HLDC source code is a different branch so, maybe the netplay feature was completely removed.
     
    TerdFerguson likes this.
  13. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Do keep us updated though with anymore tests. When i get some CDs i'll mess around with the connect commands. But i was looking into the WON version of half-life, and it looks like alot of the network functions were handled in 'wininet.dll'

    [​IMG]

    There is a wininet DLL in the WinCE-DC kit. I attached it to this post. If you were going to try to hook something into the game, wininet.dll might be a better place to start than dplayx.dll. The WinCE-DC DLL exports are the same for all the imports on half-life WON PC EXE, which is pretty great

    [​IMG]
     

    Attached Files:

    spinksy and Anthony817 like this.
  14. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Do you mean xdelta3.1? There's no plain xdelta3 file. I downloaded the tar.gz file
     
  15. SiZiOUS

    SiZiOUS Spirited Member

    Joined:
    Mar 26, 2009
    Messages:
    118
    Likes Received:
    166
    You can take any xdelta3 binary executable. For example, take the xdelta3-i686-3.0.10.exe.zip file. After that, just rename it xdelta3.exe.
     
  16. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Without the dummy.dat file, the base game is only 375mb~. So there's a lot of room for adding more maps and such. I forget the name is for the goldsrc equivalent to 'sourcemod', but i'm going to see how server mods work with the localserver. Along with maps, textures, models and custom imported spray images. Which i forgot to mention does work by running 'impulse 201' through console while facing a wall or the floor. I'm guessing Sizious is going to look into connecting to the network

    One question for FG though, how do I generate a new sort order file? I got the sort from isobuster i think, which was the sort from the original cdi by tux or atreyu187. Is there something that outputs a text file by reading the root folder for the image? This would be very helpful for adding files since without a proper sort half-life won't boot. Or if the originial sort is modified will it also not boot? It boots the engine just crashes because it can't load anything



    I guess this is also the time to discuss, if this does work are we going to piss off valve, gearbox or sierra? Its a leaked game on a long abandoned console?
     
    Anthony817 likes this.
  17. -=FamilyGuy=-

    -=FamilyGuy=- Site Supporter 2049

    Joined:
    Mar 3, 2007
    Messages:
    3,034
    Likes Received:
    891
    For the sorting, using a gdi it'd be easy, but a cdi it's a bit more complex. There's a filelist to sorttxt converter somewhere online that would work though.

    What you could also do is use cdirip to extract the tracks from the cdi into BIN/ISO and then use my gditools in manual mode to load the track and generate the right sorttxt, with an optional multiplier on the index that makes it easier to manually alter the sort order or slip a new file between two existing ones.
    I could assist you with that, I'd only need to know the starting lba of the 2de session.

    FG

    [Edit] removing the dummy could cause some problem because the reading speed would be lowered. It's better to create a new dummy file for each build if you add files.
     
  18. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    Could i put all the files in a generic iso and export that filelist? With testing server mods i'd imagine they'd have quite a few small files, making manually inputing each file a pain. Nothing like a sort generator from a folder? I attached my current sortfile i got from cdirip then isobuster to the post. The starting LBA is 11702. Not sure if that's the second session start or not
     

    Attached Files:

  19. -=FamilyGuy=-

    -=FamilyGuy=- Site Supporter 2049

    Joined:
    Mar 3, 2007
    Messages:
    3,034
    Likes Received:
    891
    I really don't understand what you want to do.
    A sort from a folder is silly, as files aren't disposed on a HDD as on a CD...

    What I can provide you, given you extract the 2de session ISO from the cdi using cdirip,is a python code that generates the sorttxt.txt file from this ISO, but with the index skipping numbers like 10, 20, etc. So you can easily change it. If you need to add lots of files to this sorttxt file, I'd suggest using a python script to insert them if their sorting is important, else they'll simply be put at the end I think. (Aka inner part of disc)
     
    Last edited: Oct 9, 2015
  20. TerdFerguson

    TerdFerguson ls ~/

    Joined:
    Apr 27, 2015
    Messages:
    664
    Likes Received:
    353
    I was wondering if there was a more efficient way of making a sort from files rather than manually. But since i don't know python, I'll just test PC maps by renaming them to something already in the game's files, like the server.cfg. What i meant with a sort from folder, is if there was something that selected a folder and all the files/folders inside would be viewed as the CD root, then generate a filelist or sort files
     
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page