A dynamic library for enhancing Tomb Raider 1

Overview

Tomb1Main

This is a dynamic library for the classic Tomb Raider I game (TombATI version). The purpose of the library is to reimplement all the routines performed by the game and enhance the gameplay with new options.

This project is inspired by Arsunt's TR2Main project.

Installing

Get a copy of the latest release from here and unpack the contents to your game directory. Make sure you overwrite existing files. Currently Tomb1Main requires you to have the TombATI patch installed to work.

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 scaling
  • added enemy health bar
  • added more control over when to show health bar and air bar
  • added ability to customize of health bar and air bar
  • added ability to set user-defined FOV
  • added selecting 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 braid (currently only works in Lost Valley)
  • added support for more than 3 pickup sprites
  • added a choice whether to play NG or NG+
  • added external game flow (no longer 2 different .exes for TR1 and TR1IB) 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
  • added automatic calculation of secret numbers
  • 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 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 music

Decompilation progress

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.

Comments
  • option_passport: add level selection to the load game menu

    option_passport: add level selection to the load game menu

    Resolves #197.

    Checklist

    • [x] I have read the coding conventions
    • [x] I have added a changelog entry about what my pull request accomplishes

    Description

    Added level selection to the load game menu. Changes savegames to remove start info and only have current info. Adds an initial version to savegames. ...

    Latest test build: Tomb1Main-2.7-170-g97d060c_beta_v6.zip ...

    Testing Scenarios

    No saves

    • [x] Starting Gym should start with Compass
    • [x] Starting the game should start with Pistols and Compass
    • [x] Starting the game, picking up a Medpack, finishing the level should start the next level with Pistols, Compass and a Medpack
    • [x] Starting the game, picking up Golden Idol or other key item, finishing the level should remove such key items
    • [x] Starting the game, picking up Shotgun, finishing the level should keep the Shotgun
    • [x] Starting the game, playing all the way until Natla's Mines, starting Natla's Mines should remove all weapons
    • [x] Starting the game, picking up a Medpack, dying, restarting should start with Pistols and Compass and reset all the stats to 0
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, dying, restarting should start with Pistols, Compass and one Medpack, with stats reset to stats from starting level 2
    • [x] Starting the game with the no healing mod, getting hit, dying, restarting should reset Lara's health to back to full
    • [x] Starting the game with the no healing mod, getting hit (Lara's health is X), finishing the level, getting hit again (Lara's health is Y), dying, restarting should reset Lara's health back to value X
    • [x] Starting the game in new game plus mode should start with all weapons.

    Legacy saves

    Here we use TombATI to save the game and 2.8 to load the game.

    • [x] Starting the game, saving, loading should start with Pistols, Compass and non-zero time stats
    • [x] Starting the game, picking up a Medpack, saving, loading should start with Pistols, Compass, Medpack and non-zero stats
    • [x] Starting the game, playing all the way until Lost Valley, picking up Shotgun, saving, reloading should keep Shotgun
    • [x] Starting the game, playing all the way until Natla's Mines, starting Natla's Mines, saving, reloading should keep weapons removed
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, reloading should start with Pistols, Compass and two Medpacks, with stats being kept from just before the save
    • [x] Playing all the way till Tihocan, killing Pierre, saving, reloading should respawn Pierre's drops
    • [x] The restart level passport page should be skipped since legacy saves do not support the feature.
    • [x] Select level should show an unsupported message if it's enabled in the settings, not shown at all otherwise.
    • [x] No healing mod can work however it wants, we don't care about it for legacy saves.

    2.6/2.7 saves

    Here we use 2.7 build to save the game and 2.8 to load the game.

    • [x] Starting the game, saving, loading should start with Pistols, Compass and non-zero time stats
    • [x] Starting the game, picking up a Medpack, saving, loading should start with Pistols, Compass, Medpack and non-zero stats
    • [x] Starting the game, playing all the way until Lost Valley, picking up Shotgun, saving, reloading should keep Shotgun
    • [x] Starting the game, playing all the way until Natla's Mines, starting Natla's Mines, saving, reloading should keep weapons removed
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, reloading should start with Pistols, Compass and two Medpacks, with stats being kept from just before the save
    • [x] Playing all the way till Tihocan, killing Pierre, saving, reloading should respawn Pierre's drops
    • [x] The restart level passport page should be available upon death.
    • [x] Starting the game, picking up a Medpack, saving, loading, dying, restarting should start with Pistols and Compass and reset all the stats to 0
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, loading, dying, restarting should start with Pistols, Compass and one Medpack, with stats reset to stats from starting level 2
    • [x] Select level should show an unsupported message even if a new save is made from a loaded 2.6/2.7 save.
    • [x] Starting the game with the no healing mod, getting hit, saving, loading, should keep Lara's health
    • [x] Starting the game with the no healing mod, getting hit (Lara's health is X), finishing the level, getting hit again (Lara's health is Y), saving, reloading should reset Lara's health back to value Y

    2.8+ saves

    Here we both save and load with the 2.8 build.

    • [x] Starting the game, saving, loading should start with Pistols, Compass and non-zero time stats
    • [x] Starting the game, picking up a Medpack, saving, loading should start with Pistols, Compass, Medpack and non-zero stats
    • [x] Starting the game, playing all the way until Lost Valley, picking up Shotgun, saving, reloading should keep Shotgun
    • [x] Starting the game, playing all the way until Natla's Mines, starting Natla's Mines, saving, reloading should keep weapons removed
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, reloading should start with Pistols, Compass and two Medpacks, with stats being kept from just before the save
    • [x] Playing all the way till Tihocan, killing Pierre, saving, reloading should respawn Pierre's drops
    • [x] The restart level passport page should be available upon death for any 2.8+ save (not started from a TombATI save).
    • [x] Starting the game, picking up a Medpack, saving, loading, dying, restarting should start with Pistols and Compass and reset all the stats to 0
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, loading, dying, restarting should start with Pistols, Compass and one Medpack, with stats reset to stats from starting level 2
    • [x] Select level should be available for unlocked levels if it's enabled in the settings, not shown at all otherwise. Lara should start with the items she began the level with.
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, restarting this save from Level 1 should start with Pistols and Compass with zero stats
    • [x] Starting the game, picking up a Medpack, finishing the level, picking up another Medpack, saving, restarting this save from Level 2 should start with Pistols and Compass, one Medpack and stats from starting the Level 1
    • [x] Starting the game with the no healing mod, getting hit, saving, loading, should keep Lara's health
    • [x] Starting the game with the no healing mod, getting hit (Lara's health is X), finishing the level, getting hit again (Lara's health is Y), saving, reloading should reset Lara's health back to value Y
    • [x] Select level for Natla's Mines should remove weapons.
    • [x] Selecting level from a new game plus save should put the game in new game plus mode.
    Feature 
    opened by walkawayy 71
  • compass: add total number of pickups and killables

    compass: add total number of pickups and killables

    Resolves #362.

    Prepared to get slammed, but as far as I know we have to manually define lists for objects that are killable and pickupable. Not sure if I missed any.

    For killables, I had to remove some enemies like the Mummy from Qualopec who can't be killed. But Atlantis has an issue where Lara can kill more than there are killables, but idk what I missed.

    For pickups, the different Scions behave differently. I excluded O_SCION_ITEM3 because that is the one you have to shoot.

    Feature 
    opened by walkawayy 37
  • Add a game installer

    Add a game installer

    Checklist

    • [X] I have read the coding conventions
    • [X] I have added a changelog entry about what my pull request accomplishes, or it is an internal change

    Description

    For now this branch only demonstrates we can build GUI apps with .NET Core with our Docker toolchain. The .exe is just 7 KB, but needs .NET Runtime 3.5 which hopefully majority of the players have installed on their computers.

    opened by rr- 35
  • s_clock: add a cheat to increase the game speed

    s_clock: add a cheat to increase the game speed

    Resolves #135.

    Checklist

    • [x] I have read the coding conventions
    • [x] I have added a changelog entry about what my pull request accomplishes

    Description

    Added a cheat (tab key) to increase the game speed. ...

    Feature 
    opened by walkawayy 25
  • Add new savegame format

    Add new savegame format

    Resolves #277

    The new format uses zlib-compressed BSON. The game always saves in the new format, which uses a new filename convention. In case a given save slot has files in both formats available, the game prioritizes the new format upon loading. Loading old saves is still possible. In theory saving in the legacy format is also possible, but I advise against bringing it back.

    Other things:

    • made the format resilient. No more crashes when trying to load saves in the new format made for a mod or a custom level, instead there is a log message and the game exits to title.
    • removed GAMEINFO.savegame_buffer which was frankly quite ugly. I still need info which save slot to load from upon game start, but it's a lot better as it decouples the game from the savegame structure by a great deal already.
    • refactored JSON routines.
    • refactored save and loading to cater for the new multi-format philosophy.
    • added a Python script that can inspect the new savegame files; it is located in scripts/inspect_save.

    One thing I'd like to investigate before we merge, provided everything is OK, is whether these snippets, copied from the legacy loader,

        size_t idx = (size_t)arm->frame_base - (size_t)g_AnimFrames;
    

    are dependent on the size of the g_AnimFrames structure, or retrieve the index.

    Feature Internal 
    opened by rr- 25
  • Feature Request: Add death count to level statistics

    Feature Request: Add death count to level statistics

    Would it be possible to add player death count to the level statistics? I think it would be interesting to see this information.

    I'm not sure if this should be added to #362 or be its own.

    Feature 
    opened by Rapora9 21
  • Add additional control schemes and refactor

    Add additional control schemes and refactor

    Checklist

    • [x] I have read the coding conventions
    • [X] I have added a changelog entry about what my pull request accomplishes, or it is an internal change

    Description

    Added 2 additional custom control schemes (default + 3 custom schemes total). Added customizable keybinds. Refactored option_control.c to support this feature and prepare for #564.

    • [X] Refactor option_control.c.
    • [X] Add custom keybinds for drawing each weapon, small medipack, large medipack, quick save, quick load, FPS, and bilinear filter.
    • [X] Add 2 additional custom control schemes for a total of 3 custom schemes.
    • [X] Remove the two column control menu and change to a scrolling list to fit all the new keybinds.
    • [x] Lock controls when navigating the controls option to prevent medipack usage, toggling the FPS, toggling bilinear filter, etc.
    • [x] Bind action and select to the same key.

    Future PRs:

    • Add the ability to unbind non essential keys (such as camera controls, FPS, etc).
    • Add a reset to defaults button for all keys in the current scheme.
    • Don't fallback to default keys (example, if user rebinds alt, the game shouldn't do the custom key and also still jump)
    • Test remapping a controller.

    ...

    Feature 
    opened by walkawayy 19
  • Refactor savegames to use start and current info

    Refactor savegames to use start and current info

    Checklist

    • [x] I have read the coding conventions
    • [x] I have added a changelog entry about what my pull request accomplishes

    Description

    ... I'm aware this is not done and does not solve legacy saving/loading. I just wanted to ask you to look over this to confirm this is the correct direction for the data types.

    GAME_STATS is now in RESUME_INFO. GAME_INFO now has RESUME_INFO *start and RESUME_INFO *end.

    Help wanted Feature Internal 
    opened by walkawayy 17
  • PS1 UI

    PS1 UI

    Checklist

    • [X] I have read the coding conventions
    • [X] I have added a changelog entry about what my pull request accomplishes, or it is an internal change

    Description

    Adds a vertical center gradient for text boxes that is used for all main menu options to add PS1 style purple backgrounds.

    Video: https://streamable.com/q7sl3y ...

    Feature 
    opened by walkawayy 16
  • Underwater currents sometimes stop working

    Underwater currents sometimes stop working

    When you start the level and fall into the stream, it sucks you down the waterfall as is expected. After you've picked up the three cogs in the level and make your way back to put them in, this happened:

    TombATI:

    https://user-images.githubusercontent.com/4934209/137548483-d09b6e1b-6e82-4d6e-8d83-ac0a3a5f127d.mp4

    TR1Main:

    https://user-images.githubusercontent.com/4934209/137548586-585ea41d-9256-4480-9f4c-4352a2d18885.mp4

    Tested the full scenario of selecting the cogs in both games and then falling into the stream. If the cogs are actually related or not I don't know of course. In TR1Main, if you save whilst you're swimming in the non-working stream, and load, it'll suddenly suck you down again, as if it was reset.

    OG bug 
    opened by Richard-L 16
  • Can't open file after download and extract

    Can't open file after download and extract

    Hi! I've followed the download and extract of Tomb1Main as per the instructions (download TOMBATI first, then extract and replace files with TOMB1Main. However, whereas TOMBATI opens before I replace it, it does not after I have replaced it with Tomb1Main files. Can you help please?

    opened by REF-2021 16
  • I can't pick up Gold Idol in City of Vilcabamba if enable_save_crystals set to true

    I can't pick up Gold Idol in City of Vilcabamba if enable_save_crystals set to true

    The problem is that the save crystal is located right above pickup and Lara can't pick it up, she gets stucked in the hitbox of the save crystal. Is there any way to fix this issue like fixing the hitbox of the save crystal or moving it nearby that place so it won't interfere?

    opened by AshRusty 0
  • Migrate from wgl_ext to SDL_GL

    Migrate from wgl_ext to SDL_GL

    Checklist

    • [x] I have read the coding conventions
    • [x] I have added a changelog entry about what my pull request accomplishes, or it is an internal change

    Description

    For improving the porting, it would be worth to migrate to SDL_GL functions made available into SDL2. They provide the same functionalities of wgl_ext without the need of platform-specific calls to functions that will work only on Windows. After these changes, wgl_ext.c and wgl_ext.h are not used anymore and they can be safely deleted.

    The source src\gfx\gl\gl_core_3_3.c could be also simplified by using SDL_GL_GetProcAddress(), but at the moment the code does not make direct use of platform-specific functions, so I left that file as it is.

    opened by carlo-bramini 2
  • lara: fix dying anim when landing on low health

    lara: fix dying anim when landing on low health

    fixed rare bug when Lara was dying without playing the crash animation when her resulting health = 0

    As it is illustrated on this video: https://www.youtube.com/watch?v=mteF9NCoBG8

    Checklist

    • [X] I have read the coding conventions
    • [X] I have added a changelog entry about what my pull request accomplishes, or it is an internal change
    OG bug 
    opened by byblo 2
  • Add stddef.h to global/types.h.

    Add stddef.h to global/types.h.

    Checklist

    • [x] I have read the coding conventions
    • [ ] I have added a changelog entry about what my pull request accomplishes, or it is an internal change

    Description

    While compiling my UNIX port of Tomb1Main, I got some error messages like this one:

    In file included from src/game/camera.c:7:
    src/game/sound.h:19:5: error: unknown type name ‘size_t’
       19 |     size_t num_samples, const char **sample_pointers, size_t *sizes);
          |     ^~~~~~
    src/game/sound.h:1:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; did you forget to '#include <stddef.h>’?
      +++ |+#include <stddef.h>
    

    I would like to suggest to add an #include <stddef.h> into global/types.h and clean up the sources by redundant inclusions of stddef.h, stdint.h and stdbool.h, if they already include that file.

    opened by carlo-bramini 3
  • Q&A: are TR1 demo files supported?

    Q&A: are TR1 demo files supported?

    I'm wondering if it would be possible to add a reply to this question to "Q&A" section of README.md.

    It would be useful to write few instructions for knowing how to make them working, if the engine is able to run (or it may be able to do it in the future if it does not yet). I think that it would be very useful to be able to run them, for testing/evaluating the engine without having the full game.

    Feature 
    opened by carlo-bramini 7
  • game crashing at closing due to SDL_GameControllerClose() second pass

    game crashing at closing due to SDL_GameControllerClose() second pass

    Closing game is always crashing the second time that function is called:

    void S_Input_Shutdown(void) { if (m_Controller) { SDL_GameControllerClose(m_Controller); } }

    No idea what exactly that function does, but I managed to fix it somehow by adding a new line to prevent a second pass that always fixes it for me:

    void S_Input_Shutdown(void) { if (m_Controller) { SDL_GameControllerClose(m_Controller); m_Controller = 0; } }

    Note that I got only one joypad (see the logs) Also added some new logs entries to trace it better: ---

    Tomb1Main.crashing_at_second_SDL_GameControllerClose()_pass.log

    Tomb1Main.no_crashing_with_m_Controller=0_after_first_SDL_GameControllerClose()_pass.log

    Edit: Forgot to mention that it crashes on both branchs. Also crashing with default Tomb1Main.json5 file.

    T1M bug 
    opened by byblo 2
Releases(2.12)
  • 2.12(Dec 23, 2022)

    • added collision to save crystals (#654)
    • added additional custom control schemes (#636)
    • added the ability to unbind unessential keys (#657)
    • added the ability to reset control schemes to default (#657)
    • added customizable controller support (#659)
    • added French localization to the config tool (#664)
    • fixed small cracks in the UI borders for PS1-style menus (#643)
    • fixed Lara loading inside a movable block if she's on a stack near a room portal (#619)
    • fixed a game crash on shutdown if the action button is held down (#646)
    • fixed the compass and new game menus at high text scaling (#648)
    • fixed save crystals so they are single use (#654)
    • fixed demo mode if the do not heal on level finish option is used (#660)
    • removed the puzzle key sound effect when using save crystals (#654)
    • stopped the default controls from functioning when the user unbound them (#564)
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.12-Installer.exe(11.35 MB)
    Tomb1Main-2.12.zip(10.00 MB)
  • 2.11(Oct 19, 2022)

    • added a .NET-based configuration tool (#633)
    • added graphics effects, lava emitters, flame emitters, and waterfalls to the savegame so they now persist on load (#418)
    • added an option to turn off sound effect pitching (#625)
    • changed passport to highlight latest save at game start (#618)
    • fixed some sound effects playing in the inventory when disable_music_in_inventory is true (#486)
    • fixed underwater currents breaking in rare cases (#127)
    • fixed gameflow option remove_guns preventing weapon pickups in rare situations (#611)
    • fixed gameflow option remove_scions causing Lara to equip weapons even if she has none (#605)
    • added gameflow option remove_ammo to remove all shotgun, magnum and uzi ammo from the inventory on level start (#599)
    • added gameflow option remove_medipacks to remove all medi packs from the inventory on level start (#599)
    • improved the UI frame drawing, it will now look consistent across all resolutions and no longer have gaps between the lines
    • fixed bridge item in City of Khamoon being incorrectly raised (#627)
    • fixed Lara firing blanks indefinitely when she doesn't have pistols and is out of ammo on non-pistol weapons (#629)
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.11-Installer.exe(11.05 MB)
    Tomb1Main-2.11.zip(9.69 MB)
  • 2.10.3(Sep 15, 2022)

  • 2.10.2(Aug 3, 2022)

  • 2.10.1(Jul 26, 2022)

  • 2.10(Jul 25, 2022)

  • 2.9.1(Jun 3, 2022)

  • 2.9(Jun 1, 2022)

    Video preview:

    Video

    Changes:

    • added generic SDL-based controller support (#278)
    • added the ability to make freshly triggered (runaway) Pierre replace an already existing (runaway) Pierre (#532)
    • added a fade out when completing Lara's Home (#383)
    • added the config option to change the number of save slots (#170)
    • changed default save slot count to 25 (#170)
    • fixed Tihocan chain block sound (#433)
    • fixed passport menu with high UI scaling (#546, regression from 2.7)
    • fixed passport menu border being off by one pixel (#547)
    • fixed the new game and save game passport options using the wrong closing animation (#542, regression from 2.7)
    • fixed bridges at floor level appearing under the floor (#523)
    • fixed Lara's outfit in Lara's Home when replaying the level (#571, regression from 2.7)
    • fixed crash when dying in the gym level with no saves (#576, regression from 2.8)
    • fixed exiting select level menu causing deaths in a new game incremented in that slot (#575, regression from 2.8)
    • removed DInput-based XBox controller support
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.9.zip(8.26 MB)
  • 2.8.2(May 20, 2022)

  • 2.8.1(May 5, 2022)

  • 2.8(May 4, 2022)

    Video preview:

    Video

    Changes:

    • added the option to pause sound in the inventory screen (#309)
    • added level selection to the load game menu (#197)
    • added the ability to pick up multiple items at once with walk to items enabled (#505)
    • added the ability to skip pictures during fade animation (#510)
    • added a cheat to increase the game speed (#135)
    • added a matrix stack overflow error check and message if GetRoomBounds runs infinitely (#506)
    • added ability to turn off trex collision (#437)
    • changed the savegame dialog to remember the user's requested slot number (#514)
    • changed the new game dialog to always fall back to new game
    • fixed ghost margins during fade animation on HiDPI screens (#438)
    • fixed music rolling over to the main menu if main menu music disabled (#490)
    • fixed Unfinished Business gameflow not using basic / detailed stats strings (#497, regression from 2.7)
    • fixed picking up multiple underwater pickups with walk to items enabled (#500)
    • fixed incorrect Lara health when restarting a level
    • fixed pushables breaking with flipped rooms when loading a save (#496, regression from 2.6)
    • fixed pictures displayed before starting a level causing a black screen (custom levels only)
    • fixed underwater caustics animating at 2x speed (#109)
    • fixed new game plus infinite ammo carrying over to a loaded game (#535, regression from 2.6)
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.8.zip(8.25 MB)
  • 2.7(Mar 16, 2022)

    • added ability to automatically walk to pickups when nearby (#18)
    • added ability to automatically walk to switches when nearby (#222)
    • added ability to turn off detailed end of the level stats (#447)
    • added contextual arrows to passport navigation (#420)
    • added contextual arrows to sound option navigation (#459)
    • added contextual arrows to controls option navigation (#461)
    • added contextual arrows to graphics option navigation (#462)
    • added a final statistics screen (#385)
    • added music during the credits (#356)
    • added fade effects to displayed images (#476)
    • added unobtainable pickups and kills stats support in the gameflow (#470)
    • fixed exploded mutant pods sometimes appearing unhatched on reload (#423)
    • fixed sound effects playing rapidly in sound menu if input held down (#467)
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.7.zip(8.27 MB)
  • 2.6.4(Feb 20, 2022)

  • 2.6.3(Feb 18, 2022)

  • 2.6.2(Feb 17, 2022)

  • 2.6.1(Feb 16, 2022)

  • 2.6(Feb 16, 2022)

    • added deaths counter (#388, requires new saves)
    • added total pickups and kills per level to the compass and end level stats screens (#362)
    • added new, more resilient savegame format (#277)
    • added ability to give Lara various items in the gameflow file
    • added restart level to passport menu on death (#48)
    • changed Lara's starting health to be configurable; useful for no damage runs (#365)
    • changed saves to be put in the saves/ directory (#87)
    • changed fade animations to block the main menu inventory ring like in PS1 (#379)
    • changed fade animations to be FPS-independent
    • changed fade animations to run faster in the main menu
    • changed compass text order to be consistent with level stats (#415)
    • fixed detail levels text flashing with any option change (#380)
    • fixed main menu demo playing even when the passport is open (#410, regression from 2.1)
    • fixed broken poses at the end of cinematics (#390)
    • fixed libavcodec-related memory leaks (#389)
    • fixed crash in custom levels that call level_stats after playing an FMV (#393, regression from 2.5)
    • fixed calling level_stats for different levels (#336, requires new saves)
    • fixed sounds playing after demo mode ends when game is minimized (#399)
    • fixed glitched floor in the Natla cutscene (#405)
    • fixed gun pickups disappearing in rare circumstances on save load (#406)
    • fixed equipping gun after loading a legacy save (#427, regression from 2.4)
    • fixed empty mutant shells in Unfinished Business spawning Lara's hips (#250)
    • fixed rare audio distance glitch (#421)
    • fixed Lara not getting her pistols in Atlantis if the player finishes Natla's Mines without picking up any gun (#424)
    • fixed broken dart ricochet effect (#429)
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.6.zip(8.26 MB)
  • 2.5(Jan 31, 2022)

  • 2.4(Jan 19, 2022)

    • added ability to skip FMVs with the action key (#334)
    • changed shaders to use GLSL version 1.30 (#327)
    • changed savegames to consume less space
    • fixed ingame overlay (bars and ammo) being sometimes shown in the menus
    • fixed menu backgrounds not being shown on certain platforms (#324)
    • fixed Lara reverting back to pistols when finishing a level with another gun (#338)
    • fixed lava wedge not setting Lara on fire (#353, regression from 2.2)
    • fixed fallback game strings not working (#335, regression from 2.3)
    • fixed high DPI window scaling on Windows (#280)
    • fixed not all sounds being muted when minimizing the game (#349)
    • fixed ability to push movable blocks through doors (#46)
    • fixed showing inventory ring up/down arrows when uncalled for (#337)
    • fixed Tomb1Main.log to be placed in the game directory rather than the current working directory
    • fixed a crash when exiting the game (regression from 2.3)
    • fixed a crash when shader compilation fails
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.4.zip(8.24 MB)
  • 2.3(Jan 12, 2022)

    • added ability to hold down forward/back to move through saves faster (#171)
    • changed screenshots to be saved in its own folder and with more meaningful names (#255)
    • fixed audible clicks near the end of samples (#281)
    • fixed secret chime not playing if the secret sound fix is disabled, and nothing plays between consecutive secret pickups (#310)
    • fixed ambient noises not pausing on pause screen (#316)
    • fixed underwater sound effect playing only once (#305)
    • fixed UZI sound stopping near big mutant explosions
    • fixed switching inventory rings briefly displaying black frames (#75)
    • fixed top offscreen load game selection (#273, #304)
    • fixed Lara voiding through static objects (#299)
    • fixed step left controller input not working (#302, regression from 2.0)
    • fixed memory leaks
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.3.zip(8.25 MB)
  • 2.2.1(Jan 5, 2022)

  • 2.2(Jan 5, 2022)

    • added ability to control anisotropy filter strength
    • changed the engine look for HD FMVs by default for Unfinished Business
    • removed tiny screen resolutions (might require setting the resolution again)
    • fixed Lara getting set on fire on trapdoors over lava
    • fixed letterbox in main menu showing garbage data on certain machines
    • fixed save crystals saving before gym level
    • fixed black lines appearing on walls and floors
    • fixed hang bug for stacked rooms
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.2.zip(8.25 MB)
  • 2.1(Dec 21, 2021)

    • added ability to disable healthbar and airbar flashing
    • changed the engine look for HD FMVs by default
    • increased max active samples to 20 (should fix rare mute sounds issues)
    • fixed loading TombATI Atlantis saves
    • fixed shotgun shooting when target out of sight
    • fixed save selection being offscreen if the first savegame starts with high enough number
    • fixed alligators dealing no damage under certain circumstances
    • fixed grabbing bridges under certain circumstances
    • fixed crash if user presses a key during ring close animation
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.1.zip(8.25 MB)
  • 2.0.1(Dec 13, 2021)

  • 2.0(Dec 7, 2021)

    • Shipped our own .exe! :partying_face: Tomb1Main is now fully open source and no longer needs injecting itself to the game. It also no longer depends on any of the TombATI .dll files. You can have both versions installed in the same folder.
    • Added support for HD FMVs
    • Added support for .png and .jpg pictures
    • Added support for .png and .jpg screenshots
    • Added fanmade 16:9 menu backgrounds
    • Added wine support
    • Added ability to run the game from any directory (its CWD no longer needs to point to the game's directory)
    • Changed music player to SDL
    • Changed sample player to SDL
    • Changed FMV player to libavcodec and SDL
    • Changed Eidos logo and initial FMVs to be stored in the gameflow file
    • Changed Unfinished Business to no longer play cafe.rpl
    • Changed the game no longer switches resolution back and forth in windowed mode
    • Changed T1M no longer reads atiset.dat
    • Improved shaders readability (chroma key is now stored in the texture alpha channel)
    • Improved shader performance a bit when the bilinear filter is off
    • Improved 3D rendering performance a bit (no more C++ exception handling)
    • Fixed brightness not being saved
    • Fixed game exiting with "Fatal DirectInput error" when losing focus early
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-2.0.zip(8.21 MB)
  • 1.4.0(Nov 16, 2021)

    • added adjustable ingame brightness
    • added per-level fog settings
    • added control over fog density (in terms of tiles)
    • improved TR3 sidesteps
    • improved wording in readme
    • fixed lighting for 3D pickups
    • fixed a crash when drawing lightnings
    • fixed a crash when compiling the game on MSVC
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-1.4.0.zip(567.41 KB)
  • 1.3.0(Nov 6, 2021)

    • added version in the bottom right corner
    • 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 rendering of pickups on the ground as 3D meshes
    • added the ability to change resolution in-game
    • added optional fixes for the following original game glitches:
      • slope/wall bug ("bonk to ascend" bug)
      • breakable tiles bug ("sidestep to descend" bug)
      • qwop
    • changed maximum textures from 2048 to 8192
    • changed maximum texture pages from 32 to 128
    • changed default level skip cheat key from X to L
    • removed hard limit of 1024 rooms
    • fixed level skip working in inventory (it would apply only after closing the inventory)
    • fixed bats being positioned too high
    • fixed flashing conflicts when cheat buttons are disabled
    • fixed ability to rebind the pause button
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-1.3.0.zip(526.08 KB)
  • 1.2.2(Oct 17, 2021)

    • added ability to mute music in main menu
    • added pausing the music while in pause
    • added more screen resolutions
    • fixed demos playing oddly when the enhanced look option is enabled
    • fixed shadows rendering
    • fixed too big healthbar margins on low resolutions
    • fixed bilinear filter not working
    • fixed resolution width/height being ignored
    Source code(tar.gz)
    Source code(zip)
    Tomb1Main-1.2.2.zip(513.83 KB)
  • 1.2.1(Oct 16, 2021)

  • 1.2.0(Oct 14, 2021)

Owner
Marcin Kurczewski
Make code, not war
Marcin Kurczewski
STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.

memory The C++ STL allocator model has various flaws. For example, they are fixed to a certain type, because they are almost necessarily required to b

Jonathan Müller 1.2k Dec 26, 2022
MMCTX (Memory Management ConTeXualizer), is a tiny (< 300 lines), single header C99 library that allows for easier memory management by implementing contexts that remember allocations for you and provide freeall()-like functionality.

MMCTX (Memory Management ConTeXualizer), is a tiny (< 300 lines), single header C99 library that allows for easier memory management by implementing contexts that remember allocations for you and provide freeall()-like functionality.

A.P. Jo. 4 Oct 2, 2021
Modern C++ 32bit Windows Process Memory Library.

basil Simple 32-bit Windows Process Memory Library. Written in Modern C++. JavaScript bindings basil (wilL) be available as bindings for JavaScript. C

cristei 4 Jul 5, 2022
Cross-platform shared memory stream/buffer, header-only library for IPC in C/C++.

libsharedmemory libsharedmemory is a small C++11 header-only library for using shared memory on Windows, Linux and macOS. libsharedmemory makes it eas

Aron Homberg 10 Dec 4, 2022
STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.

STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.

Jonathan Müller 1k Dec 2, 2021
A C++ Class and Template Library for Performance Critical Applications

Spirick Tuning A C++ Class and Template Library for Performance Critical Applications Optimized for Performance The Spirick Tuning library provides a

Dietmar Deimling 3 Dec 6, 2021
A simple C++ library for creating and managing bitstreams in memory.

ezbitstream (v0.001) A simple C++ library for creating and managing bitstreams in memory. API & Implementation ezbitstream implements bitstreams with

Unsal Ozturk 2 Feb 4, 2022
Classic Tomb Raider open-source engine

Classic Tomb Raider open-source engine

Timur Gagiev 4.1k Jan 8, 2023
Tomb Raider III multiplayer modification.

Tomb Raider III Multiplayer Mod. Multiplayer Modification for Tomb Raider III. Website: https://tr3mp.net/ If you own the base source of \patch projec

Tony 3 Dec 25, 2021
FastDynamicCast - Fast dynamic cast in C++ for MSVC, outperforming the regular dynamic cast by up to 25 times

Fast dynamic cast This is a single header, dynamic cast implementation which outperforms the regular dynamic_cast by up to 25 times. Works on MSVC 201

tobspr 85 Oct 23, 2022
Simple Dynamic Strings library for C

Simple Dynamic Strings Notes about version 2: this is an updated version of SDS in an attempt to finally unify Redis, Disque, Hiredis, and the stand a

Salvatore Sanfilippo 4.1k Dec 31, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Liugw 71 Oct 14, 2021
hb-libgd is a graphics library for the dynamic manipulation of images.

hb-libgd Harbour bindings for libGD 2.3.3, GD is an open source code library for the dynamic creation of images by programmers. GD has builtin support

Rafał Jopek 0 Dec 10, 2021
(C++) Integrity dynamic link library made in C++ that you can export to C#

C-Integrity-Library ✔ (C++) Integrity dynamic link library made in C++ that can export to C# C# Exports [DllImport("Exports.dll")] public static exter

null 1 Jan 20, 2022
The dynamic-link-library of DiscordCoreAPI.

The dynamic-link-library of DiscordCoreAPI.

RealTimeChris 3 Feb 8, 2022
C++ library to create dynamic structures in plain memory of shared-memory segments

Ищи описание на хабре @mrlolthe1st. #define _CRT_SECURE_NO_WARNINGS #include "shared_structures.h" #include <iostream> #include <fstream> #include <ca

Александр Новожилов 4 Mar 30, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20.2k Dec 31, 2022