diff --git a/README.md b/README.md index f8dff2010..a8efad223 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,185 @@ -# Tomb1Main +# Tomb Raider I: Community Edition -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 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](https://www.tombraiderforums.com/showthread.php?p=8286101). -This project is inspired by Arsunt's -[TR2Main](https://github.com/Arsunt/TR2Main/) project. +This project was inspired by Arsunt's +[TR2Main](https://github.com/Arsunt/TR2Main/) project and the legacy name, +"Tomb1Main", reflects that. ## Installing -1. Get a copy of the latest Tomb1Main release from - [here](https://github.com/rr-/Tomb1Main/releases). -2. Unpack the contents to your game directory. Make sure you overwrite existing - files (Tomb1Main_config.json5 can be left alone). +1. Download the latest Tomb1Main release from the GitHub releases. + https://github.com/rr-/Tomb1Main/releases -To play the Unfinished Business expansion pack, launch the game with `-gold` -command line switch: +2. Unpack the contents to your game directory. + Make sure you choose to overwrite existing directories and files + (`Tomb1Main_config.json5` can remain). -1. Create a shortcut to `tombati.exe` -2. Select the newly created shortcut, go to Properties -3. At the end of the "target" field, append `-gold` so it looks something like - this: - ``` - (...)\tombati.exe -gold - ``` +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 @@ -94,6 +247,8 @@ Not all options are turned on by default. Refer to `Tomb1Main.json5` for details - 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 - 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 @@ -163,27 +318,25 @@ Not all options are turned on by default. Refer to `Tomb1Main.json5` for details 4. **Can I play this on Mac, Linux, Android...?** - Currently only Windows version is available, but there is some ongoing work - towards reducing the amount of Windows-only code. - -5. **Do I really need to install this TombATI patch? Why not have just the .exe?** - - We're currently on it! :D + 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. -- [x] Reverse engineer the entire game - done! -- [ ] Break off TombATI, ship our own .EXE rather than a .DLL - - [x] Integrate glrage with Tomb1Main - - [x] Replace the music player (`winmm.dll` / `libzplay.dll`) with libavcodec and SDL - - [x] Replace the FMV player (`Dec130.dll`, `Edec.dll`, `Winplay.dll`, `Winsdec.dll` and `Winstr.dll`) with libavcodec and SDL - - [ ] Test for performance and crash resilience - - [ ] 2.0 +- [x] Reverse engineer the main game module +- [x] Integrate the glrage patch +- [x] Replace the proprietary music player with libavcodec and SDL +- [x] Replace the proprietary FMV player with libavcodec and SDL +- [x] Break off TombATI, ship our own .EXE rather than a .DLL - [ ] Work on cross platform builds - - [x] Replace the sample player (DirectSound) with libavcodec and SDL + - [x] Port DirectSound to libavcodec and SDL + - [x] 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