Half Life has some functioning multiplayer components

Online games, how to get online, and anything involving Dreamcast online can be discussed here.

Moderator: pcwzrd13

User avatar
DR TEAMCAST
Uber
Posts: 1025
Contact:

Half Life has some functioning multiplayer components

Post#1 » Mon Jul 13, 2015 8:01 am

Hey guys,

This is going to be a long winded post. Just wanted to share my findings since testing any further is beyond my capabilites.

Someone on assembler said that theres still multiplayer stuff in the game's exe. So i downloaded an exe explorer and found that it looks like 80%-90% of the multiplayer functions are in the game and on-disc. Here's what i found :


All the strings for connecting, server browsing, hosting a server, and more are in the exe. Here's an exerpt. I'll attach the full exe string log to this post :

Code: Select all

SayText
  hud_saytext_time
  misc/talk.wav
  StatusIcon
  TextMsg
  Train
  sprites/%d_train.spr
  chase_back
  chase_up
  chase_right
  chase_active
   duck
  CL_ParseCustomEntity: bad model number
  msg_badread in packetentities
  D:\proj\halflifedc\src\engine\cl_ents.c
  CL_ParsePacketEntities:  Failed to allocate space for %i entities.
  CL_ParsePacketEntities: newindex == MAX_PACKET_ENTITIES
  WARNING: oldcopy on full update
  WARNING: U_REMOVE on full update
  WARNING: delta on full update
  CL_LinkPacketEntities: cl_numvisedicts == MAXVISEDICTS
  Bad model on beam
   pred %s
  for %i, time %i ms
  CL_ParsePlayerinfo: bad num
  CL_LinkPlayers: cl_numvisedicts == MAXVISEDICTS
  cl_pred_fraction
  start
  cl_pred_maxtime
  cl_pred_fraction
  cl_adaptive
  cl_himodels
  cl_gaitestimation
  cl_timeout
  cl_shownet
  cl_showsizes
  cl_nolerp
  cl_spectator_password
  lookspring
  lookstrafe
  sensitivity
  cl_skyname
  desert
  cl_skycolor_r
  cl_skycolor_g
  cl_skycolor_b
  cl_skyvec_x
  cl_skyvec_y
  cl_skyvec_z
  cl_pred_link
  cl_predict_players
  cl_solid_players
  cl_nodelta
  m_pitch
  0.022
  m_yaw
  0.022
  m_forward
  m_side
  cl_pitchup
  cl_pitchdown
  rcon_address
  rcon_port
  cl_resend
  cl_downloadinterval
  cl_slist
  cl_allowdownload
  cl_allowupload
  cl_upload_max
  cl_download_max
  cl_download_ingame
  password
  spectator
  Player
  model
  topcolor
  bottomcolor
  ---- MOTD -----
  ---------------
  empty slot
  empty slot
  Server list cleared.
  Searching for local servers...
  27015
  details
  27015
  details
  ------------------
  %i %s %s %i/%i
  Adr:  %s - Dir:  %s
    dedicated -
    listen -
    type (%c) -
  win32 -
  linux -
  os (%c) -
   password
   nopasswd
  pw (%c) -
   +serverside
   +client.dll
  Mod info:
  Info URL %s
  DL URL %s
  Ver. %i, size %i
  No local servers in list.
  Try 'slist' to search again.
  empty slot
  ------------------
  %i %s %s %i/%i
  Adr:  %s - Dir:  %s
    dedicated -
    listen -
    type (%c) -
  win32 -
  linux -
  os (%c) -
   password
   nopasswd
  pw (%c) -
  Mod info:
  Info URL %s
  DL URL %s
  Ver. %i, size %.2f MB
  %i.%i.%i.%i
  %4i:  %s:%i
  %i total servers
  end-of-list
  more-in-list
  %3i %5i %s
  %i servers
  more-in-list
  Done.
  %i.%i.%i.%i
  %i servers
  Done.
  loopback
  Connection accepted by %s
  The server requires that you be validated through WON.net.
  Could not obtain WON authentication.
  BADPASSWORD
  BADPASSWORD
  BADPASSWORD
  BADPASSWORD
  Invalid server password.
  Ping took %.3f ms.
  Unknown command:
  %s: Runt packet
  %s:sequenced packet without connection
  Server connection timed out.
  Can't cl_print_custom, not connected
  D:\proj\halflifedc\src\engine\cl_main.c
  Unable to allocate %i client frames
  dropclient
  2534835307254
  Key has no meaning on dedicated server...
  Bogus key length on CD Key...
  local
  localhost
  Bad server address
  27015
  models/player/gordon/gordon.mdl
  could not find models/player/gordon/gordon.mdl
  *modelcrc
  %c%c%c%cconnect %i %i %i %i %i "%s" "%s"
  localhost
  cl_resend
  cl_resend
  local
  localhost
  Bad server address
  27015
  Connection failed after %i retries.
  localhost
  Connecting to %s...
  Retrying %s...
  %c%c%c%cgetchallenge
  Can't retry, no previous connection
  connect %s
  Commencing connection retry to %s
  usage: connect <server>
  local
  start
  Long timecheck gap between %s and %s
  Long timecheck gap after %s
  spawn %i %s
  CL_Signon 1
  begin
  CL_Signon 2
  CL_Signon 3
  No demos listed with startdemos
  playdemo %s
  EMPTY
  %s:%2i  (%5.1f,%5.1f,%5.1f) [%5.1f %5.1f %5.1f]
  Snapshot
  %s%04d.bmp
  startmovie <filename>
  Started recording movie...
  No movie started.
  Stopped recording movie...
  You must set 'rcon_password' before
  issuing an rcon command.
  You must either be connected,
  or set the 'rcon_address' cvar
  to issue rcon commands
  Unable to resolve rcon address %s
  27015
  rcon "%s"
  cl_view entity#
  Current %i
  View entity set to %i
  Skipping upload...
  custom resource list not valid -- not connected
  CL_SendResourceListBlock_f from different level
  custom resource list request out of range
  customrsrclist %i %i
  Too many resources on client.
  pldecal.wad
  custom.hpk
  Client downloading enabled.
  Client downloading disabled.
  Client uploading enabled.
  Max. upload size is %i
  Client uploading disabled.
  HudText
  Client Rep. of Player Logos ===
  SELF ====================
  SELF ====================
  ==========================
  usage: fullserverinfo <complete info string>
  --------------------------
  Time %.3f
  Drop %.2f%%
  Avg. Latency %.2f
  Load K/s %.2f
  Upd/s %.2f
  Rate %.2f
  cl fps %.1f
  unnamed
  topcolor
  bottomcolor
  fullserverinfo
  retry
  disconnect
  snapshot
  startmovie
  endmovie
  entities
  cl_view
  cl_messages
  cl_bitcounts
  cl_usr
  pingservers
  slist
  clearlist
  resources
  cl_allow_upload
  cl_allow_download
  upload
  allowupload
  skipdl
  skipul
  cl_print_custom
  D:\proj\halflifedc\src\engine\cl_main.c
  Unable to allocate %i client frames
  svc_bad
  svc_nop
  svc_disconnect
  svc_updatestat
  svc_version
  svc_setview
  svc_sound
  svc_time
  svc_print
  svc_stufftext
  svc_setangle
  svc_serverinfo
  svc_lightstyle
  svc_updateuserinfo
  svc_updatefrags
  svc_clientdata
  svc_stopsound
  svc_updatecolors
  svc_particle
  svc_damage
  svc_spawnstatic
  OBSOLETE svc_spawnbinary
  svc_spawnbaseline
  svc_temp_entity
  svc_setpause
  svc_signonnum
  svc_centerprint
  svc_killedmonster
  svc_foundsecret
  svc_spawnstaticsound
  svc_intermission
  svc_finale
  svc_cdtrack
  svc_restore
  svc_cutscene
  svc_weaponanim
  svc_decalname
  svc_roomtype
  svc_addangle
  svc_newusermsg
  svc_download
  svc_packetentities
  svc_deltapacketentities
  svc_playerinfo
  svc_choke
  svc_resourcelist
  svc_newmovevars
  svc_nextupload
  svc_resourcerequest
  svc_customization
  svc_crosshairangle
  svc_soundfade
  svc_clientmaxspeed
  svc_skippedupdate
  CL_EntityNum: %i is an invalid number, cl.max_edicts is %i
  D:\proj\halflifedc\src\engine\cl_parse.c
  D:\proj\halflifedc\src\engine\cl_parse.c
  %i:%s Sz %i
  CL_ParseStartSoundPacket: ent = %i
  CL_ParseServerMessage: svc_updateuserinfo > MAX_CLIENTS
  model
  topcolor
  bottomcolor
  *spectator
  server.cfg
  Refusing to download a path with '..'
  Download refused, cl_allow_download is 0
  cl_downloadinterval
  Got to CL_ParseDownload
  unknown
  sound
  decal
  model
  generic
  %3i %s:%15s %i %s
  - Needed -------------------------------------------
  #   Name                  Size Type Index Fatal
  - On hand ------------------------------------------
  #   Name                  Size Type Index Fatal
  --------------------------------------------
  Couldn't CRC map %s, disconnecting
  Disconnected
  Refusing to download map %s, (cl_allowdownload is 0 ) disconnecting
  Disconnected
  Couldn't find map %s, server will download the map
  cl_dlls\client.dll
  Couldn't CRC client side dll %s.
  Disconnected
  Mismatched client.dll, proceeding...
  Client world model is NULL
  prespawn %i 0
  Cannot continue without sound %s, disconnecting
  Model %s not found
  Cannot continue without model %s, disconnecting
  Resource already linked
  Resource list corrupted.
  Mislinked resource in CL_RemoveFromResourceList
  Attempt to free last entry in list.
  Resource propagation complete
  Resources registered
  D:\proj\halflifedc\src\engine\cl_parse.c
  Verifying and downloading resources...
  Customization
  CL_ReallocateDynamicData allocating 0 entities
  CL_Reallocate cl_entities
  cl_entities
  D:\proj\halflifedc\src\engine\cl_parse.c
  CL_ReallocateDynamicData failed to allocate %i frames
  Server didn't specify a gamedir, assuming no change
  exec config.cfg
  exec preset_a.cfg
  /CD-ROM/valve/halflife.cfg
  exec halflife.cfg
  Changed to game %s
  CL_ParseServerInfo
  Server returned version %i, not %i
  Bad maxclients (%u) from server
  r_decals
  Request resourcelist
  resourcelist %i 0
  Too many static entities
  cl_skyname
  gl_zmax
  gl_wateramp
  -------- Message Load ---------
  bogus #
  %i:%s: %i msgs:%.2fK
  User messages:  %i:%.2fK
  ------ End:  %i Total----
  ------- Bit Counts -------
  Bit    Delta   Player  Custom
  (1<<%2i) %6.6i  %6.6i  %6.6i
  (1<<%2i) %6.6i
  --------------------------
  CL_ParseServerMessage()
  ------------------
  CL_ParseServerMessage: Bad server message
  END OF MESSAGE
  END OF MESSAGE
  %3i:%s
  %3i:%s
  CL_ParseServerMessage: Illegible server message
  CL_ParseServerMessage: Server is protocol %i instead of %i
  Server disconnected
  svc_lightstyle > MAX_LIGHTSTYLES
  Received signon %i when at %i
  room_type
  svc_updatestat: %i is invalid
  CL_ParseServerMessage: svc_clientmaxspeed >= cl.maxclients
  cl_nopred
  pushlatency
  cl_dumpents
  cl_showpred
  cl_hightrack
  ptrack
  ptrack %i
  No camera
  Tracking
  1st Person
  Top Down
  Unknown
  Specator mode set to %s
  No target found ...
  tracerspeed
  traceroffset
  tracerlength
  tracerred
  tracergreen
  tracerblue
  traceralpha
  egon_amplitude
  weapons/ric1.wav
  weapons/ric2.wav
  weapons/ric3.wav
  weapons/ric4.wav
  weapons/ric5.wav
  weapons/explode3.wav
  weapons/explode4.wav
  weapons/explode5.wav
  player/pl_shell1.wav
  player/pl_shell2.wav
  player/pl_shell3.wav
  weapons/sshell1.wav
  weapons/sshell2.wav
  weapons/sshell3.wav
  debris/wood1.wav
  debris/wood2.wav
  debris/wood3.wav
  debris/metal1.wav
  debris/metal2.wav
  debris/metal3.wav
  debris/glass1.wav
  debris/glass2.wav
  debris/glass3.wav
  debris/concrete1.wav
  debris/concrete2.wav
  debris/concrete3.wav
  debris/flesh1.wav
  debris/flesh2.wav
  debris/flesh3.wav
  debris/flesh5.wav
  debris/flesh6.wav
  debris/flesh7.wav
  player/geiger1.wav
  player/geiger2.wav
  player/geiger3.wav
  player/geiger4.wav
  player/geiger5.wav
  player/geiger6.wav
  sprites/dot.spr
  sprites/lgtning.spr
  sprites/white.spr
  sprites/animglow01.spr
  sprites/muzzleflash1.spr
  sprites/muzzleflash2.spr
  sprites/muzzleflash3.spr
  sprites/richo1.spr
  sprites/shellchrome.spr
  CL: Client playing ricochet sound
  Couldn't allocate temp ent in R_Projectile!
  Bad ent in R_Projectile!
  No model %d!
  Bad ent in R_PlayerSprites!
  Bad client in AttachTentToPlayer()!
  No temp ent.
  Bad client in KillAttachedTents()!
  No modelindex for funnel!!
  Decal: entity = %i
  CL: Client playing Explosion sound
  Bubble: entity = %i
  CL_ParseTEnt: bad type
  CL: Client playing random hit sound
  CL_AddVisibleEntity: !pEntity->model or cl_numvisedicts == MAXVISEDICTS
  Sprite: no such frame %d
  R_DrawSprite: Bad sprite type %d
  Cbuf_AddText: overflow
  stuffcmds : execute command line parameters
  exec <filename> : execute a script file
  autoexec.cfg
  hw/opengl.cfg
  joystick.cfg
  game.cfg
  couldn't exec %s
  Current alias commands:
  %s : %s


Image

WON was the servers half-life ran on before steam, by Sierra. All the code for authentication, and masterlists seem to be in the exe
Image

An example of the various multiplayer/server commands that work ingame. More info on that below
Image



The game has all the multiplayer maps, mapcycle.txt file, server.cfg file, and in the default.cfg file theres a keybind to tab for '+showscores'. Which is the scoreboard key on pc
Server.cfg :

Code: Select all

// Use this file to configure your DEDICATED server.
// This config file is executed everytime the server changes levels.

// disable autoaim
sv_aim 0

// player bounding boxes (collisions, not clipping)
sv_clienttrace 3.5

// disable clients' ability to pause the server
pausable 0

// default server name. Change to "Bob's Server", etc.
// hostname "Half-Life"

// maximum client movement speed
sv_maxspeed 270

// 20 minute timelimit
// mp_timelimit 20


Config.cfg :

Code: Select all

unbindall
bind "TAB" "+showscores"
bind "ENTER" "+attack2"
bind "ESCAPE" "cancelselect"
bind "SPACE" "+jump"
bind "'" "+moveup"
bind "," "+moveleft"
bind "." "+moveright"
bind "/" "+movedown"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind ";" "+mlook"
bind "[" "invprev"
bind "]" "invnext"
bind "`" "toggleconsole"
bind "a" "+moveleft"
bind "c" "+movedown"
bind "d" "+moveright"
bind "e" "+use"
bind "f" "impulse 100"
bind "q" "lastinv"
bind "r" "+reload"
bind "s" "+back"
bind "t" "impulse 201"
bind "u" "messagemode2"
bind "v" "+moveup"
bind "w" "+forward"
bind "y" "messagemode"
bind "~" "toggleconsole"
bind "UPARROW" "+forward"
bind "DOWNARROW" "+back"
bind "LEFTARROW" "+left"
bind "RIGHTARROW" "+right"
bind "ALT" "+strafe"
bind "CTRL" "+duck"
bind "SHIFT" "+speed"
bind "F5" "snapshot"
bind "F6" "save quick"
bind "F7" "load quick"
bind "F10" "quit prompt"
bind "INS" "+klook"
bind "PGDN" "+lookdown"
bind "PGUP" "+lookup"
bind "END" "centerview"
bind "MOUSE1" "+attack"
bind "MOUSE2" "+attack2"
bind "MOUSE3" "+jump"
bind "MWHEELDOWN" "invnext"
bind "MWHEELUP" "invprev"
bind "PAUSE" "pause"
lookstrafe "0.000000"
m_pitch "0.022000"
lookspring "0.000000"
crosshair "1.000000"
_windowed_mouse "0.000000"
m_filter "0.000000"
joystick "0.000000"
sv_aim "1.000000"
console "1.0"
cl_himodels "0.000000"
d_spriteskip "0.000000"
sensitivity "3.000000"
viewsize "120.000000"
brightness "1.000000"
gamma "2.500000"
bgmvolume "1.000000"
suitvolume "0.250000"
hisound "1.000000"
volume "0.800000"
s_a3d "0.000000"
s_eax "0.000000"
rate "9999.000000"
model "gordon"
topcolor "30"
bottomcolor "6"
name "Player"
+mlook
+jlook


Mapcycle.txt, all these maps are on-disc and playable too :

Code: Select all

undertow
snark_pit
boot_camp
lambda_bunker
datacore
stalkyard



Every command works in console except for 'connect <ip>'. It says "connect is not valid from console". Binding 'messagemode' and 'messagemode2' to a key allows chat and teamchat. Typing slist searches for servers. Typing list lists the servers. You can type 'exec server.cfg' and it makes the game multiplayer ready. I attached screenshots of all those commands and more working. With the full exe string list



Summary:
Everything for playing online seems to already be in the game aside from connecting to the internet. That could potentialy work too if someone figures out how to run connect from the console. But getting this game to play online isn't as unfeasable as decompiling the exe to source which is near impossible. It could be possible to edit some strings into the exe to connect to the internet. Or make a winCE app that connects to the internet then boots the game and stays connected while patching the game so the masters point to a modified neuwon server (woncomm.lst) and allowing 'connect <ip>' to be run from console

I've been trying to edit in another .cfg file to run 'connect' but im having trouble recompiling the cdi. Might have set the lba wrong or editing the .pak file is difficult



Anyways i go through the trouble because counter-strike on dc would be off the wall. If i get those edited .cfg's working ill update the post, but maybe some other actual devs can poke around and fiddle with files to see if multiplayer is in fact possible or not.


Screenshots and exe log : https://mega.co.nz/#!fBYQVSLI!eCI7yL5pv ... 9r1TbHSThA
ImageImage
Forum for Dreamcast and Saturn browsers http://bb.dreampipe.net
Media, News, Events and more for your Sega Dreamcast internet browser at http://dreampipe.net

FuzzyFish
minority
Posts: 65

Re: Half Life has some functioning multiplayer components

Post#2 » Wed Jul 15, 2015 10:16 pm

If I recall they never implemented the code to initialize and dial the modem, or at least if there is a console command for it I'm not familiar with it. And the WinCE SDK never had a BBA/LAN adapter implementation. Without the source to patch it in I don't see this being likely to repair.
4x4 Evolution Revival Project
http://www.4x4evolution.net

User avatar
DR TEAMCAST
Uber
Posts: 1025
Contact:

Re: Half Life has some functioning multiplayer components

Post#3 » Wed Oct 14, 2015 4:03 am

I've been looking into this alot the past few months. Sizious over at assemblergames re-enabled the connect commands. Turns out it might just need internet. Which could be possible by making a new hl.dll and loading it like a mod, or using the Windows CE kernel in the dreamcast. I think it's really exciting, but its still not certain

thread here : http://assemblergames.com/l/threads/hal ... nts.57318/
ImageImage
Forum for Dreamcast and Saturn browsers http://bb.dreampipe.net
Media, News, Events and more for your Sega Dreamcast internet browser at http://dreampipe.net

User avatar
Wrath of Khan
Sega RPG
Posts: 602

Re: Half Life has some functioning multiplayer components

Post#4 » Wed Oct 14, 2015 7:31 pm

Could be cool if it works -maybe I should get my dc back online one of these days.

User avatar
DR TEAMCAST
Uber
Posts: 1025
Contact:

Re: Half Life has some functioning multiplayer components

Post#5 » Wed Oct 14, 2015 8:12 pm

Wrath of Khan wrote:-maybe I should get my dc back online


Maybe?! hahaha
ImageImage
Forum for Dreamcast and Saturn browsers http://bb.dreampipe.net
Media, News, Events and more for your Sega Dreamcast internet browser at http://dreampipe.net

Steelnor
rebel
Posts: 18

Re: Half Life has some functioning multiplayer components

Post#6 » Fri Oct 16, 2015 12:22 pm

Even if it would only work with dc-pc/dial-up that would still be an amazing game to actually have multiplayer functionality on. You're right, CS on DC just sounds like a dream.

User avatar
DR TEAMCAST
Uber
Posts: 1025
Contact:

Re: Half Life has some functioning multiplayer components

Post#7 » Thu Feb 11, 2016 5:31 am

ImageImage
Forum for Dreamcast and Saturn browsers http://bb.dreampipe.net
Media, News, Events and more for your Sega Dreamcast internet browser at http://dreampipe.net

  • Similar Topics
    Replies
    Views
    Last post

Return to “Online”

Who is online

Users browsing this forum: No registered users