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

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

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

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