Half-Life Dreamcast port reverse-engineered.
  • C 55.9%
  • C++ 41.2%
  • Python 2%
  • Pawn 0.5%
  • HTML 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-16 21:39:57 +07:00
deploy network: support serial PPP in universal image 2026-09-16 21:39:57 +07:00
dx6sdk [Init] Half-Life Dreamcast port baseline (engine, render, game DLL, DC toolchain) 2026-04-03 07:41:53 +03:00
media Add scriptedsnarkdevenv.jpg 2026-09-10 20:27:45 +05:00
projects build: remove obsolete sources and enable fixes for multiplayer 2026-09-13 23:33:37 +07:00
RE build: normalize source paths and retain Dreamcast targets 2026-09-09 01:18:46 +07:00
src network: support serial PPP in universal image 2026-09-16 21:39:57 +07:00
utils engine: register only cvars present in retail 2026-09-13 13:35:28 +07:00
wcesdk211 [Init] Half-Life Dreamcast port baseline (engine, render, game DLL, DC toolchain) 2026-04-03 07:41:53 +03:00
.gitattributes [Build] Keep VC6 project files as CRLF 2026-07-04 23:53:57 +07:00
.gitignore render: draw Neo studio models through the Neo path 2026-09-09 18:36:34 +07:00
postbuild_dc.bat build: clear the local GDI source path 2026-09-13 23:58:41 +07:00
README.md docs: add project overview and build instructions 2026-09-09 16:43:56 +07:00

HALFLIFE_DC

Reverse-engineered source code of the Half-Life 1 Dreamcast port — engine build 1659, compiled on 10 May 2001, a month before Sierra cancelled the project.

The build was published by Sega Dreamcast Info and later reverse-engineered by our team.

Dev.Box HKT-01 Flycast
Rebuilt engine on a Dev.Box HKT-01 …and the same disc under Flycast

This repository contains:

  • Restored source code of HL SDK
    • client.lib
    • halflife.lib
  • Restored source code of the engine
    • halflife_dc.exe

The game links all of its libraries statically, so one binary is the whole thing.


Getting started

Before building the project, you need to install:

  • Microsoft Visual C++ 6.0
  • Windows CE SDK 2.1 for Sega Dreamcast (Dragon SDK)

Building

Visual C++ 6.0

Open the workspace at projects\halflife_dc.dsw and press Build -> Build halflife_dc.exe. client, halflife and zlib come along as dependencies.

To get a disc rather than an executable, point GDISRC in postbuild_dc.bat at your copy of the prototype GDI. The post-build step overlays the fresh HALFLIFE_DC.EXE and 0WINCEOS.BIN onto a copy of it and writes a bootable image; without GDISRC it is skipped.

Required files for playing

You will need the original data files from Half-Life Dreamcast (May 15, 2001 prototype).

Tools

utils/ carries the SDK utilities the port was built with, supporting the Dreamcast's native formats (PVR). utils\build_tools.bat builds them into utils\build\.

  • studiomdl — studio models, with PVR skins and the compressed Neo model format.
  • qlumpy — level wads, with PVR textures.
  • makels — cuts a level's textures into the ~128K wad pieces the engine swaps in and out.

See utils/README.md for the details.

Multiplayer

The prototype has multiplayer cut out of it. We put it back.

It sits behind HLDC_MP in src/util/dreamcast_crt.h, which is 0 by default so that a plain build still matches the binary we are diffing against:

#define HLDC_MP 1

Set it to 1 and you get the restored netstack and multiplayer functionality, plus the front-end that comes with it — extra menu pages, a server browser and an on-screen chat keyboard.

There is a second switch in the same header, HLDC_FIXES, covering the places where the released game is simply wrong. It is 0 too, so the engine reproduces the original bugs:

#define HLDC_FIXES 1

Set it to 1 for a corrected engine. Every guarded site names the symptom it produces in the game, so a single fix can be turned off again while tracking down a difference in behaviour.

Media

More in media/ — including the disc being burned out of Visual C++ 6.00 through GDWorkshop onto a Katana dev kit unit, which is roughly how this looked in 2001.

People involved in development of the project

Referenced projects

Special thanks