Skip to content

Commit 38f76b1

Browse files
committed
update README
1 parent 49127a1 commit 38f76b1

File tree

8 files changed

+131
-118
lines changed

8 files changed

+131
-118
lines changed

README.md

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ This project is my passion for Tomb Raider classics combined with learning C++,
66

77
## Features
88

9-
- Integrates with Linux launchers (Steam, Lutris, etc.)
10-
- Controller mapper support (e.g., qjoypad, antimicrox)
11-
- Save file and configuration backups
9+
- Run level wine/proton from app
10+
- Search trle.net with a fast offline indexing
11+
- Lazy loading trle.net level info (runtime scraping)
12+
- Integrates with Linux other launchers (Steam, Lutris, etc.)
13+
- Controller mapper support using uinput
14+
- Game save and configuration file backups
1215
- Workarounds for Linux/Wine compatibility issues
13-
- Modding support for executable-based mods
16+
- Modding support for executable-based mods(Download and applying open source modes)
1417
- Level download and installation from trle.net
1518
- Pool level files to save disk space, need NTFS on Windows for hard links
1619
- Respectful scraping and filtering of data from trle.net (with site owner permission)
@@ -125,16 +128,27 @@ and trle.net part is implemented.
125128

126129
![screenshot1](https://raw.githubusercontent.com/noisecode3/TombRaiderLinuxLauncher/main/doc/screenshot1.jpg)
127130
![screenshot1](https://raw.githubusercontent.com/noisecode3/TombRaiderLinuxLauncher/main/doc/screenshot2.jpg)
128-
![screenshot1](https://raw.githubusercontent.com/noisecode3/TombRaiderLinuxLauncher/main/doc/screenshot3.jpg)
129131

130132
## Guide
131133

132-
The game uses old API and old optimizations, but you can play basically on a potato laptop.
133-
It depends on drivers quality, but with proton you can try `PROTON_USE_WINED3D=1`
134-
or using [dgvoodoo2] with `PROTON_USE_WINED3D=0` usually you get the best performance with (DXVK/dgvoodoo2).
135-
The easiest way to get this setup it using Lutris. Some levels can be lagging even on
136-
a computer with a strong video card.
137-
[dgvoodoo2]: <https://github.com/lutris/dgvoodoo2/releases>
134+
The game uses an old API with legacy instructions, timers, and single-threaded code, which means it can run on very low-end hardware — even a "potato" laptop.
135+
136+
On Linux, technologies like NTSYNC, GE-Proton, and sometimes dgVoodoo2 can significantly improve performance. However, dgVoodoo2 only works with specific Proton versions and may introduce new problems such as input lag or crashes. Therefore, it's recommended to try running the game without dgVoodoo2 first and use it only as a last resort.
137+
138+
I tested the original, unpatched Tomb Raider III on an i7-4800MQ using its integrated GPU, and launched it like this:
139+
140+
```shell
141+
WINEPREFIX="/home/noisecode3/.newtombprefix" PROTONPATH="/home/noisecode3/.steam/steam/compatibilitytools.d/GE-Proton10-10" GAMEID="225320" MESA_SHADER_CACHE="true"
142+
```
143+
It ran nearly perfectly — only a tiny framedrop once per hour, or sometimes not at all. Timing jitter caused by Wine’s threading system is largely eliminated under NTSync.
144+
NTSync can help DDraw, DirectSound other I/O thread workers in wine. On Arch Linux (or other distros with a modular kernel), you’ll need to manually load the ntsync driver to enable proper synchronization support:
145+
146+
```shell
147+
sudo modprobe ntsync
148+
149+
```
150+
151+
I listed some open source modes that work well with proton/wine.
138152

139153
### TR1
140154

@@ -159,9 +173,8 @@ a computer with a strong video card.
159173
## Targets
160174

161175
I program mostly on Slackware-current and Arch, I gonna try target and test SteamOS for second release.
162-
I don't use Windows but it should build on both Windows and Linux with MinGw. I will test with Wine/VM.
176+
I don't use Windows but it should build on both Windows and Linux with MinGw.
163177
It's recommended as a standard to use Arch Linux or MSYS2 on Windows, with qt-creator.
164-
Its possible to set it up with neovim or vscode or any other but its more work.
165178

166179
## License
167180

database/README.md

Lines changed: 0 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,7 @@
11
# This is a test database
22

3-
I list some levels I have tested.
4-
53
You can access the game files here ~/.local/share/TombRaiderLinuxLauncher/ID.TRLE
64
where ID is the number listed when runngin tombll_manage_data.py -l
75

8-
3573. The Infada Cult
9-
* <https://www.trle.net/sc/levelfeatures.php?lid=3573>
10-
* <https://trcustoms.org/levels/3574>
11-
* have played through
12-
* no problems
13-
14-
3082. Templars Secret
15-
* <https://www.trle.net/sc/levelfeatures.php?lid=3082>
16-
* <https://trcustoms.org/levels/3025>
17-
* have played through
18-
* no problems
19-
20-
3377. Secret of the Skull Temple
21-
* <https://www.trle.net/sc/levelfeatures.php?lid=3377>
22-
* <https://trcustoms.org/levels/3310>
23-
* have played through
24-
* lags sometimes, plying with dgvoodoo can help
25-
26-
318. The Rescue 1-4
27-
* <https://www.trle.net/sc/levelfeatures.php?lid=318>
28-
* <https://trcustoms.org/levels/317>
29-
* have not played through all of the game
30-
* no problems
31-
32-
3430. War of the Worlds
33-
* <https://www.trle.net/sc/levelfeatures.php?lid=3430>
34-
* <https://trcustoms.org/levels/3363>
35-
* have not played through all of the game
36-
* plying with lutris and dgvoodoo, fix flashlight bug
37-
38-
3621. The Hidden Dagger II - Dragon's Legacy
39-
* <https://www.trle.net/sc/levelfeatures.php?lid=3621>
40-
* <https://trcustoms.org/levels/3642>
41-
* Starts the game and first map, backgrund audio is missing
42-
* Note: I got the build fix here <https://github.com/noisecode3/ogg-winmm>
43-
* but you need to replace winmm.dll remove ffplay.dll and convert the files
44-
* I left a script called convert.sh you have to copy it to
45-
* ~/.local/share/TombRaiderLinuxLauncher/6.TRLE/music
46-
* and run it from there right now
47-
* use dll ovride winmm=n,b
48-
49-
3417. Create a Classic 2021 - The City of Petra
50-
* <https://www.trle.net/sc/levelfeatures.php?lid=3417>
51-
* <https://trcustoms.org/levels/3350>
52-
* have not played through all of the game
53-
* no problems
54-
55-
3557. Into the Realm of Eternal Darkness
56-
* <https://www.trle.net/sc/levelfeatures.php?lid=3557>
57-
* <https://trcustoms.org/levels/3541>
58-
* have not played through all of the game
59-
* no problems
60-
* I manage to port this one to Linux native thru TR1X
61-
* the patch for TR1X is in fixes/8/IntoTheRealmOfEternalDarkness.patch
62-
* then you need to add all data from the zip, that is
63-
* (data fmv music and pictures) should be put next to TR1X
64-
* It is the same for the most part but with 60 fps
65-
* The second level had broken timer, but works now
66-
* Some issues can be addressed next time.
67-
68-
```shell
69-
git clone --recurse-submodules https://github.com/LostArtefacts/TR1X
70-
cd TR1X
71-
git checkout 871259d
72-
cat ../TombRaiderLinuxLauncher/fixes/8/IntoTheRealmOfEternalDarkness.patch | patch -p1
73-
just package-linux
74-
```
75-
76-
1388. The Experiment 3/1 - Under the Moonlight
77-
* <https://www.trle.net/sc/levelfeatures.php?lid=1388>
78-
* <https://trcustoms.org/levels/1360>
79-
* have not played through all of the game
80-
* no problems
81-
82-
1964. The Ancient Knowledge
83-
* <https://www.trle.net/sc/levelfeatures.php?lid=1964>
84-
* <https://trcustoms.org/levels/1947>
85-
* have not played through all of the game
86-
* no problems
87-
88-
3372. Tomb Raider - Biohazard
89-
* <https://www.trle.net/sc/levelfeatures.php?lid=3372>
90-
* <https://trcustoms.org/levels/3305>
91-
* have not played through all of the game
92-
* background audio seem to have broke
936

947
![screenshot1](https://raw.githubusercontent.com/noisecode3/TombRaiderLinuxLauncher/main/database/screenshot1.jpg)

doc/screenshot1.jpg

-198 KB
Loading

doc/screenshot2.jpg

-270 KB
Loading

doc/screenshot3.jpg

-1.29 MB
Binary file not shown.

fixes/README

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
I list some levels I have tested.
2+
3+
3573. The Infada Cult
4+
* <https://www.trle.net/sc/levelfeatures.php?lid=3573>
5+
* <https://trcustoms.org/levels/3574>
6+
* have played through
7+
* no problems
8+
9+
3082. Templars Secret
10+
* <https://www.trle.net/sc/levelfeatures.php?lid=3082>
11+
* <https://trcustoms.org/levels/3025>
12+
* have played through
13+
* no problems
14+
15+
3377. Secret of the Skull Temple
16+
* <https://www.trle.net/sc/levelfeatures.php?lid=3377>
17+
* <https://trcustoms.org/levels/3310>
18+
* have played through
19+
* lags sometimes, plying with dgvoodoo can help
20+
21+
318. The Rescue 1-4
22+
* <https://www.trle.net/sc/levelfeatures.php?lid=318>
23+
* <https://trcustoms.org/levels/317>
24+
* have not played through all of the game
25+
* no problems
26+
27+
3430. War of the Worlds
28+
* <https://www.trle.net/sc/levelfeatures.php?lid=3430>
29+
* <https://trcustoms.org/levels/3363>
30+
* have not played through all of the game
31+
* plying with lutris and dgvoodoo, fix flashlight bug
32+
33+
3621. The Hidden Dagger II - Dragon's Legacy
34+
* <https://www.trle.net/sc/levelfeatures.php?lid=3621>
35+
* <https://trcustoms.org/levels/3642>
36+
* Starts the game and first map, backgrund audio is missing
37+
* Note: I got the build fix here <https://github.com/noisecode3/ogg-winmm>
38+
* but you need to replace winmm.dll remove ffplay.dll and convert the files
39+
* I left a script called convert.sh you have to copy it to
40+
* ~/.local/share/TombRaiderLinuxLauncher/6.TRLE/music
41+
* and run it from there right now
42+
* use dll ovride winmm=n,b
43+
44+
3417. Create a Classic 2021 - The City of Petra
45+
* <https://www.trle.net/sc/levelfeatures.php?lid=3417>
46+
* <https://trcustoms.org/levels/3350>
47+
* have not played through all of the game
48+
* no problems
49+
50+
3557. Into the Realm of Eternal Darkness
51+
* <https://www.trle.net/sc/levelfeatures.php?lid=3557>
52+
* <https://trcustoms.org/levels/3541>
53+
* have not played through all of the game
54+
* no problems
55+
* I manage to port this one to Linux native thru TR1X
56+
* the patch for TR1X is in fixes/8/IntoTheRealmOfEternalDarkness.patch
57+
* then you need to add all data from the zip, that is
58+
* (data fmv music and pictures) should be put next to TR1X
59+
* It is the same for the most part but with 60 fps
60+
* The second level had broken timer, but works now
61+
* Some issues can be addressed next time.
62+
63+
```shell
64+
git clone --recurse-submodules https://github.com/LostArtefacts/TR1X
65+
cd TR1X
66+
git checkout 871259d
67+
cat ../TombRaiderLinuxLauncher/fixes/8/IntoTheRealmOfEternalDarkness.patch | patch -p1
68+
just package-linux
69+
```
70+
71+
1388. The Experiment 3/1 - Under the Moonlight
72+
* <https://www.trle.net/sc/levelfeatures.php?lid=1388>
73+
* <https://trcustoms.org/levels/1360>
74+
* have not played through all of the game
75+
* no problems
76+
77+
1964. The Ancient Knowledge
78+
* <https://www.trle.net/sc/levelfeatures.php?lid=1964>
79+
* <https://trcustoms.org/levels/1947>
80+
* have not played through all of the game
81+
* no problems
82+
83+
3372. Tomb Raider - Biohazard
84+
* <https://www.trle.net/sc/levelfeatures.php?lid=3372>
85+
* <https://trcustoms.org/levels/3305>
86+
* have not played through all of the game
87+
* background audio seem to have broke

src/TombRaiderLinuxLauncher.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
2323

2424
// Button signal connections
2525
// List tab
26-
connect(ui->pushButtonLink, SIGNAL(clicked()), this, SLOT(linkClicked()));
26+
connect(ui->pushButtonRun, SIGNAL(clicked()), this, SLOT(linkClicked()));
2727
connect(ui->pushButtonDownload, SIGNAL(clicked()),
2828
this, SLOT(downloadClicked()));
2929
connect(ui->pushButtonInfo, SIGNAL(clicked()), this, SLOT(infoClicked()));
@@ -66,7 +66,7 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
6666
this, SLOT(UpdateLevelDone()));
6767

6868
// Set init state
69-
ui->pushButtonLink->setEnabled(false);
69+
ui->pushButtonRun->setEnabled(false);
7070
ui->pushButtonInfo->setEnabled(false);
7171
ui->pushButtonDownload->setEnabled(false);
7272
QWidget* filter_p = ui->filter;
@@ -296,19 +296,19 @@ void TombRaiderLinuxLauncher::levelDirSelected(qint64 id) {
296296
// if state == -1 then de-activate all buttons
297297

298298
if (state == 1) {
299-
ui->pushButtonLink->setEnabled(true);
299+
ui->pushButtonRun->setEnabled(true);
300300
ui->pushButtonInfo->setEnabled(false);
301301
ui->pushButtonDownload->setEnabled(false);
302302
} else if (state == 2) {
303-
ui->pushButtonLink->setEnabled(true);
303+
ui->pushButtonRun->setEnabled(true);
304304
ui->pushButtonInfo->setEnabled(true);
305305
ui->pushButtonDownload->setEnabled(false);
306306
} else if (state == 0) {
307-
ui->pushButtonLink->setEnabled(false);
307+
ui->pushButtonRun->setEnabled(false);
308308
ui->pushButtonInfo->setEnabled(true);
309309
ui->pushButtonDownload->setEnabled(true);
310310
} else {
311-
ui->pushButtonLink->setEnabled(false);
311+
ui->pushButtonRun->setEnabled(false);
312312
ui->pushButtonInfo->setEnabled(false);
313313
ui->pushButtonDownload->setEnabled(false);
314314
}
@@ -319,22 +319,22 @@ void TombRaiderLinuxLauncher::onCurrentItemChanged(
319319
const QModelIndex &current, const QModelIndex &previous) {
320320
if (current.isValid()) {
321321
qint64 id = levelListModel->getLid(current);
322+
ui->lcdNumberLevelID->display(QString::number(id));
322323
if (levelListModel->getListType()) { // its the original game
323324
if (levelListModel->getInstalled(current)) {
324-
ui->pushButtonLink->setEnabled(true);
325+
ui->pushButtonRun->setEnabled(true);
325326
ui->pushButtonDownload->setEnabled(false);
327+
ui->pushButtonDownload->setText("Remove");
328+
326329
} else {
327-
ui->pushButtonLink->setEnabled(false);
330+
ui->pushButtonRun->setEnabled(false);
331+
ui->pushButtonDownload->setText("Download and install");
328332
ui->pushButtonDownload->setEnabled(true);
329333
}
330334
ui->pushButtonInfo->setEnabled(false);
331335
} else {
332336
levelDirSelected(id);
333337
}
334-
// ui->lineEditCustomCommand->setEnabled(true);
335-
// ui->lineEditCustomCommand->setText(
336-
// m_settings.value(QString("level%1/CustomCommand")
337-
// .arg(id)).toString());
338338
ui->lineEditEnvironmentVariables->setEnabled(true);
339339
ui->lineEditEnvironmentVariables->setText(
340340
settings.value(QString("level%1/EnvironmentVariables")
@@ -343,6 +343,7 @@ void TombRaiderLinuxLauncher::onCurrentItemChanged(
343343
ui->comboBoxRunnerType->setCurrentIndex(
344344
settings.value(QString("level%1/RunnerType")
345345
.arg(id)).toInt());
346+
ui->pushButtonRun->setText(ui->comboBoxRunnerType->currentText());
346347
ui->commandLinkButtonLSSave->setEnabled(true);
347348
ui->commandLinkButtonLSReset->setEnabled(true);
348349
}
@@ -392,7 +393,6 @@ QVector<QPair<QString, QString>>
392393
}
393394

394395
void TombRaiderLinuxLauncher::linkClicked() {
395-
qDebug() << "linkClicked()";
396396
QModelIndex current = ui->listViewLevels->currentIndex();
397397
if (current.isValid()) {
398398
qint64 id = levelListModel->getLid(current);
@@ -578,14 +578,14 @@ void TombRaiderLinuxLauncher::workTick() {
578578
settings.setValue(
579579
QString("installed/game%1").arg(id),
580580
"true");
581-
ui->pushButtonLink->setEnabled(true);
581+
ui->pushButtonRun->setEnabled(true);
582582
ui->pushButtonInfo->setEnabled(false);
583583
ui->pushButtonDownload->setEnabled(false);
584584
} else {
585585
settings.setValue(
586586
QString("installed/level%1").arg(id),
587587
"true");
588-
ui->pushButtonLink->setEnabled(true);
588+
ui->pushButtonRun->setEnabled(true);
589589
ui->pushButtonInfo->setEnabled(true);
590590
ui->pushButtonDownload->setEnabled(false);
591591
}
@@ -598,7 +598,7 @@ void TombRaiderLinuxLauncher::workTick() {
598598

599599
void TombRaiderLinuxLauncher::downloadError(int status) {
600600
ui->progressBar->setValue(0);
601-
ui->pushButtonLink->setEnabled(true);
601+
ui->pushButtonRun->setEnabled(true);
602602
ui->pushButtonInfo->setEnabled(true);
603603
ui->pushButtonDownload->setEnabled(true);
604604
ui->stackedWidgetBar->setCurrentWidget(

src/TombRaiderLinuxLauncher.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -795,15 +795,15 @@
795795
<number>0</number>
796796
</property>
797797
<item>
798-
<widget class="QPushButton" name="pushButtonLink">
798+
<widget class="QPushButton" name="pushButtonRun">
799799
<property name="minimumSize">
800800
<size>
801801
<width>0</width>
802802
<height>32</height>
803803
</size>
804804
</property>
805805
<property name="text">
806-
<string>Link</string>
806+
<string>Run</string>
807807
</property>
808808
</widget>
809809
</item>

0 commit comments

Comments
 (0)