https://github.com/dethrace-labs/dethrace Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions By size + Enterprise + Teams + Startups By industry + Healthcare + Financial services + Manufacturing By use case + CI/CD & Automation + DevOps + DevSecOps * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} dethrace-labs / dethrace Public * Notifications You must be signed in to change notification settings * Fork 38 * Star 735 Reverse engineering the 1997 game "Carmageddon" twitter.com/dethrace_labs License GPL-3.0 license 735 stars 38 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 40 * Pull requests 6 * Discussions * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights dethrace-labs/dethrace This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 343 Commits .github/workflows .github/ workflows cmake cmake docs docs lib lib packaging packaging src src test test tools tools .clang-format .clang-format .gitignore .gitignore .gitmodules .gitmodules CMakeLists.txt CMakeLists.txt CONTRIBUTING.md CONTRIBUTING.md LICENSE LICENSE NOTES.md NOTES.md README.md README.md View all files Repository files navigation * README * GPL-3.0 license Dethrace Workflow Twitter Discord Carmageddon server Dethrace is an attempt to learn how the 1997 driving/mayhem game Carmageddon works behind the scenes and rebuild it to run natively on modern systems. Progress (Follow us on Discord or Twitter to get notified of updates!) Last updated June 17 2024 * 92% of functions implemented * Latest screenshot: Screenshot 2024-05-27 at 8 44 10 AM Background Watcom debug symbols for an earlier internal build were discovered named DETHRSC.SYM on the Carmageddon Splat Pack expansion CD release. The symbols unfortunately did not match any known released executable, meaning they were interesting but not immediately usable to reverse engineer the game. This is what it looked like from the Watcom debugger - the names of all the methods were present but the code location they were pointing to was junk: watcom-debugger CrayzKirk from the Carmageddon community picked it up and did a lot of painstaking work manually matching up many functions and data structures in the DOS executable to the debugging symbols. We are slowly replacing the original assembly code with equivalent C code, function by function. Is "dethrace" a typo? No, well, I don't think so at least. The original files according to the symbol dump were stored in c:\DETHRACE, and the symbol file is called DETHSRC.SYM. Maybe they removed the "a" to be compatible with 8.3 filenames? Game content Dethrace does not ship with any game content. You'll need access to the data from the original game. If you don't have an original CD then you can buy Carmageddon from GoG.com. dethrace also supports the various freeware demos: * Original Carmageddon demo * Splat Pack demo * Splat Pack Xmas demo Lots of other fun things are available from the Road Reaction site Dependencies SDL2 The easiest way to install SDL is via your favorite package manager. OSX: brew install SDL2 Linux: apt-get install libsdl2-dev Point Dethrace at the Carmageddon install directory: export DETHRACE_ROOT_DIR=/path/to/carmageddon Build Dethrace uses git submodules, so we must pull them after the inital clone: git clone https://github.com/dethrace-labs/dethrace cd dethrace git submodule update --init --recursive Dethrace uses cmake for generating build files. To generate the build files (generally only required once): mkdir build cd build cmake .. Once cmake has generated the build files for your platform, run the build. For example: make Running the game Firstly, you need a copy of the Carmageddon game content. Extract the zip file if necessary. Dethrace expects to be placed into the top level Carmageddon folder. You know you have the right folder when you see the original CARMA.EXE there. If you are on Windows, you must also place SDL2.dll in the same folder. Screenshot 2024-09-20 at 12 25 05 PM Run tests A subset of tests do not require DETHRACE_ROOT_DIR. They run via Github actions when code is committed to this repo. This allows us to keep nice and clean and avoid storing any potentially legally problematic resouces in our repo. The majority of tests do require DETHRACE_ROOT_DIR. To run the full test suite, you must have a copy of the original Splat Pack data. export DETHRACE_ROOT_DIR=/path/to/carmageddon_splat_pack To run ./dethrace_test To run a single test DETHRACE_TEST_ARGS="-n test_name" make test Changelog From the beginning until release Credits * CrayzKirk (manually matching up functions and data structures in the executable to the debugging symbols) * The developer at Stainless Software who left an old debugging .SYM file on the Splat Pack CD ;) Legal Dethrace is released to the Public Domain. The documentation and function provided by Dethrace may only be utilized with assets provided by ownership of Carmageddon. The source code in this repository is for non-commerical use only. If you use the source code you may not charge others for access to it or any derivative work thereof. Dethrace and any of its' maintainers are in no way associated with or endorsed by SCi, Stainless Software or THQ Nordic. About Reverse engineering the 1997 game "Carmageddon" twitter.com/dethrace_labs Topics c gamedev dos assembly reverse-engineering carmageddon Resources Readme License GPL-3.0 license Activity Stars 735 stars Watchers 20 watching Forks 38 forks Report repository Releases 13 Dethrace 0.8.0 Latest Sep 19, 2024 + 12 releases Packages 0 No packages published Contributors 12 * @dethrace-labs * @jeff-1amstudios * @madebr * @OmniBlade * @zear * @BSzili * @DJs3000 * @plaes * @b-kurczynski * @MastaG * @BeWorld2018 * @whouishere Languages * C 98.6% * Other 1.4% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.