Git Product home page Git Product logo

tomb1main's Introduction

Tomb Raider I: Community Edition

This is an open source implementation of the classic Tomb Raider I game. It was made by reverse engineering the TombATI / GLRage variant of the original game and replacing proprietary audio/video libraries with open source variants.

See the Tomb Raider Forums topic.

This project was inspired by Arsunt's TR2Main project and the legacy name, "Tomb1Main", reflects that.

Installing

  1. Download the latest Tomb1Main release from the GitHub releases.
    https://github.com/rr-/Tomb1Main/releases

  2. Unpack the contents to your game directory.
    Make sure you choose to overwrite existing directories and files (Tomb1Main_config.json5 can remain).

  3. (Steam users / music) The Steam version of the game does not ship with the music assets due to the publishers' negligence. If you have previously installed TombATI, you don't need to do anything. Otherwise you can download the music files from the link below.
    https://mega.nz/file/f9llhQAY#y0RqaMhR4ghtQ-1IFAGbHep_FCmkV8Q66bzdMWVqtuY
    These assets are not a part of this project. The legality of these is disputable. The most legal way to get the music on PC is to rip the assets yourself from a physical PlayStation disk. TombATI ships with this music by default, which this project chooses not to do.

  4. Launch Tomb1Main.exe.

Unfinished Business

  1. (Steam users / Unfinished Business) The Unfinished Business expansion pack is freeware, however, the Steam version of the game does not ship with it and you'll need to install it separately. If you have previously installed TombATI, you don't need to do anything. Otherwise you can download the expansion pack from the link below.
    https://mega.nz/file/i8s0BAaD#wy3xyhuaHnco7aJKiKUV3zO6vCe86lLa3W7hWu249-M

  2. Launch the game with -gold command line switch. A more detailed instruction:

    1. Create a shortcut to Tomb1Main.exe.

    2. Select the newly created shortcut, go to File Properties.

    3. At the end of the "target" field, append -gold so it looks something like this:
      (...)\Tomb1Main.exe -gold

    4. Launch the shortcut.

If you install everything correctly, your game directory should look more or less like this (click to expand):

.
├── cfg
│   ├── Tomb1Main_gameflow.json5
│   ├── Tomb1Main_gameflow_ub.json5
│   ├── Tomb1Main.json5
├── data
│   ├── cat.phd
│   ├── cred0.pcx
│   ├── cred1.pcx
│   ├── cred2.pcx
│   ├── cred3.pcx
│   ├── cut1.phd
│   ├── cut2.phd
│   ├── cut3.phd
│   ├── cut4.phd
│   ├── egypt.phd
│   ├── eidospc.pcx
│   ├── eidospc.png
│   ├── end2.phd
│   ├── end.pcx
│   ├── end.phd
│   ├── gym.phd
│   ├── install.pcx
│   ├── level10a.phd
│   ├── level10b.phd
│   ├── level10c.phd
│   ├── level1.phd
│   ├── level2.phd
│   ├── level3a.phd
│   ├── level3b.phd
│   ├── level4.phd
│   ├── level5.phd
│   ├── level6.phd
│   ├── level7a.phd
│   ├── level7b.phd
│   ├── level8a.phd
│   ├── level8b.phd
│   ├── level8c.phd
│   ├── titleh.pcx
│   ├── titleh.png
│   ├── titleh_ub.png
│   └── title.phd
├── fmv
│   ├── cafe.rpl
│   ├── canyon.rpl
│   ├── core.avi
│   ├── end.rpl
│   ├── escape.rpl
│   ├── lift.rpl
│   ├── mansion.rpl
│   ├── prison.rpl
│   ├── pyramid.rpl
│   ├── snow.rpl
│   └── vision.rpl
├── music
│   ├── track02.flac
│   ├── track03.flac
│   ├── track04.flac
│   ├── track05.flac
│   ├── track06.flac
│   ├── track07.flac
│   ├── track08.flac
│   ├── track09.flac
│   ├── track10.flac
│   ├── track11.flac
│   ├── track12.flac
│   ├── track13.flac
│   ├── track14.flac
│   ├── track15.flac
│   ├── track16.flac
│   ├── track17.flac
│   ├── track18.flac
│   ├── track19.flac
│   ├── track20.flac
│   ├── track21.flac
│   ├── track22.flac
│   ├── track23.flac
│   ├── track24.flac
│   ├── track25.flac
│   ├── track26.flac
│   ├── track27.flac
│   ├── track28.flac
│   ├── track29.flac
│   ├── track30.flac
│   ├── track31.flac
│   ├── track32.flac
│   ├── track33.flac
│   ├── track34.flac
│   ├── track35.flac
│   ├── track36.flac
│   ├── track37.flac
│   ├── track38.flac
│   ├── track39.flac
│   ├── track40.flac
│   ├── track41.flac
│   ├── track42.flac
│   ├── track43.flac
│   ├── track44.flac
│   ├── track45.flac
│   ├── track46.flac
│   ├── track47.flac
│   ├── track48.flac
│   ├── track49.flac
│   ├── track50.flac
│   ├── track51.flac
│   ├── track52.flac
│   ├── track53.flac
│   ├── track54.flac
│   ├── track55.flac
│   ├── track56.flac
│   ├── track57.flac
│   ├── track58.flac
│   ├── track59.flac
│   └── track60.flac
├── shaders
│   ├── 2d.fsh
│   ├── 2d.vsh
│   ├── 3d.fsh
│   └── 3d.vsh
├── Tomb1Main.exe

Configuring

To configure Tomb1Main, edit the Tomb1Main.json5 file in your text editor such as Notepad. All the configuration is explained in that file.

Improvements over original game

Not all options are turned on by default. Refer to Tomb1Main.json5 for details.

  • added proper UI and bar scaling
  • added enemy health bar
  • added more control over when to show health bar and air bar
  • added customizability to health bar and air bar
  • added ability to set user-defined FOV
  • added ability to select weapons / using items with numeric keys
  • added ability to look around while running
  • added TR3-like sidesteps
  • added shotgun flash sprites
  • added a fly cheat
  • added a level skip cheat
  • added a door open cheat (while in fly mode)
  • added ability to disable all medpacks
  • added ability to disable Magnums
  • added ability to disable UZIs
  • added ability to disable shotgun
  • added ability to disable main menu demos
  • added ability to disable FMVs
  • added ability to disable cutscenes
  • added ability to disable healing between levels
  • added rendering of pickups on the ground as 3D meshes
  • added braid (currently only works in Lost Valley)
  • added support for displaying more than 3 pickup sprites
  • added a choice whether to play NG or NG+
  • added Japanese mode (guns deal twice the damage); available for both NG and NG+
  • added external game flow (no longer 2 different .exes for TR1 and TR1UB). For TRLE builders:
    • the levels can be reordered
    • the levels can be renamed
    • all the strings can be translated, including keys and items
    • you no longer are constrained to 4 or 21 levels only
    • you can offer a custom Gym level
    • you can change the main menu backdrop
  • added automatic calculation of secret numbers
  • added compass level stats
  • added ability to keep timer on in inventory
  • added save game crystals game mode (enabled via gameflow)
  • added pause screen
  • added movable camera on W,A,S,D
  • added Xbox One Controller support
    • Per Axis Dead Zone
    • Left Stick = movement
    • A = Jump/Select
    • B = Roll/Deselect
    • X = Action/Select
    • Y = Look/Select
    • LB = Walk
    • RB = Draw Weapons
    • Dpad Up = Draw Weapons
    • Back = Option
    • Start = Pause
    • Right Stick = Camera Movement
    • R3 = Reset Camera
  • added rounded shadows (instead of the default octagon)
  • added per-level customizable water color (with customizable blue component)
  • added per-level customizable fog distance
  • added adjustable in-game brightness
  • added .jpeg/.png screenshots
  • added support for HD FMVs
  • added fanmade 16:9 menu backgrounds
  • added ability to skip FMVs with the Action key
  • changed internal game memory limit from 3.5 MB to 16 MB
  • changed moveable limit from 256 to 10240
  • changed maximum textures from 2048 to 8192
  • changed maximum texture pages from 32 to 128
  • changed input method to DirectInput
  • fixed inability to switch Control keys during shimmy
  • fixed skipping FMVs triggering inventory
  • fixed skipping credits working too fast
  • fixed setting user keys being very difficult
  • fixed keys and items not working when drawing guns immediately after using them
  • fixed not being able to close level stats with Escape
  • fixed freeze when holding action key during end of level
  • fixed reading user settings not restoring the volume
  • fixed Tomb of Tihocan playing secret sound
  • fixed The Great Pyramid secret
  • fixed running out of ammo forcing Lara to equip pistols even if she doesn't carry them
  • fixed a crash when Lara is on fire and goes too far away from where she caught fire
  • fixed settings not being saved when exiting the game with Alt+F4
  • fixed settings not persisting chosen layout (default vs. user keys)
  • fixed the sound of collecting a secret killing the music
  • fixed the infamous Tihocan crocodile bug (integer overflow causing creatures to deal damage across the entire level)
  • fixed Lara jumping forever when alt+tabbing out of the game
  • fixed Lara voiding if a badly placed timed door closes on her (doesn't occur in OG levels)
  • fixed bats being positioned too high
  • fixed Lara not being able to grab parts of some bridges
  • fixed alligators dealing no damage if Lara remains still in the water
  • fixed shotgun shooting when a locked target moves out of Lara's sight
  • fixed shotgun shooting too fast when not aiming at a target
  • fixed Lara grabbing ledges she shouldn't in stacked rooms (mainly St. Francis Folly tower)
  • fixed rare cases of Lara getting set on fire on a bridge over lava
  • fixed saving the game near Bacon Lara breaking her movement
  • fixed thin black lines between polygons
  • fixed audio mixer stopping playing sounds on big explosions
  • fixed underwater ambient sound effect not playing
  • fixed Lara glitching through static objects into a black void
  • fixed black screen flashing when navigating the inventory
  • fixed Lara pushing blocks through doors
  • fixed game audio not muting when game is minimized

Showcase

Mode selection

Braid

Fly cheat

Door open cheat

Enemy health bars

Q&A

  1. Is the game fully playable from beginning to the end?

    Yes. If you encounter a bug, please file a ticket.

  2. Can we get HD textures? Reflections? Other graphical updates?

    Eventually, probably yes. Please see the road map to have a general idea what is currently being worked on.

  3. Can we get braid in every level? Skyboxes? Flyby cameras? New animations? etc.

    Not sure at this moment; this requires meddling with the original game level files. It's one thing fixing a faulty trigger bit in The Great Pyramid for the final secret, and another to insert a completely new animation, a textured mesh or a sound file and pretend it's always been a part of the original game. So far we haven't found a good way that'll keep the code maintainable.

  4. Can I play this on Mac, Linux, Android...?

    No promises here, but the game is now playable with wine (including sound and music) and there is planned work towards reducing the amount of Windows-only code.

Current road map

Note: this section may be subject to change.

  • Reverse engineer the main game module
  • Integrate the glrage patch
  • Replace the proprietary music player with libavcodec and SDL
  • Replace the proprietary FMV player with libavcodec and SDL
  • Break off TombATI, ship our own .EXE rather than a .DLL
  • Work on cross platform builds
    • Port DirectSound to libavcodec and SDL
    • Port WinMM to libavcodec and SDL
    • Port DirectInput to SDL
    • Replace wgl_ext.h with cross platform variant
    • Remove HWND and HINSTANCE usages
    • ...
    • Test for performance and crash resilience
    • 3.0
  • Beautify the code
    • Refactor GLRage to no longer emulate DDraw
    • Refactor GLRage to no longer emulate ATI3DCIF
    • Apply rigid name conventions to function names
    • Refactor specific/ away
    • ...
  • Work on data injection and other features?

Importing data to IDA

This option requires IDAPython and a recent version of IDA. Install Python 3.8+ and IDA 7.5+, then hit alt+f7, then choose scripts/ida_import.py.

License

This project is licensed under the GNU General Public License - see the COPYING.md file for details.

Copyright

(c) 2021 Marcin Kurczewski. All rights reserved. Original game is created by Core Design Ltd. in 1996. Lara Croft and Tomb Raider are trademarks of Square Enix Ltd. Title image by Kidd Bowyer.

tomb1main's People

Contributors

oziphantom avatar rr- avatar thatguyfrombb avatar walkawayy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.