Repository navigation
Releases
2.0.0
What's new in 2.0.0
Co-op fixes, by Volverine-Dude (PRs #16 and #17)
Player 2's own character: his own stats, damage and turning, his own combo meter and Perfect; his health upgrades, sword segments and upgraded arrows count. His heavy blows break shields.
Player 2's aim: his lock holds and no longer blinks, he turns to it while aiming, and he can lock the cave troll.
Enemies share their attention between both players. The extra enemy copies on some levels stay asleep until their originals come, and their blows spare the villagers (Plains of Rohan).
Expert in co-op.
P2 Bot: Off or On (When Idle is gone; it cut in on a controller). A gentle stick push counts as player 2 playing.
Show Upgrades Player 2 on the pause menu. Player 2's controller works on both upgrade pages, his shop and his stats screen after a level, and his Start pauses the game.
Button prompts follow whichever controller was used last, on any port.
Gimli as player 2 holds his throwing axe in his left hand while aiming; player 2 is hidden at a cutscene's very start.
Fixes: the Weathertop freeze, the cutscenes' casts, the max health's scaling.
Languages
Adds Welsh (Cymraeg), Old English (Ænglisc), Old English in the Anglo-Saxon runes, Old Norse (Norrœnt mál) and Latin (Latina):
Every language: the Versus and co-op menus, the notes, the ECTS HUD's labels and the achievements are translated.
Ultra textures: every language's text is upscaled, all session long. It used to go blurry later in a session, or stay blurry in a language first played before the pack was made ready.
Launcher (Linux and macOS)
F5 on the main menu opens the launcher (mods, language, settings): on Linux the AppImage and TwoTowers.sh go straight to the game, so the mods were out of reach. (Windows has its own launcher, which starts the game.)
Linux launcher window (zenity or kdialog, else the terminal menu): TwoTowers.sh --launcher, the AppImage with --launcher, or the menu entry's right-click Launcher action. It also opens once after the first install.
Versus
Westfold is a Versus arena: the whole map to fight over, with random starts, some of its orcs and Uruk-hai about, their own sounds and the level's own music, and the health and ammo pickups.
Exploding bomb stacks and carts on Westfold: a few of them (not every one the level has), set off by either player with a blow or a shot (aim at one and the bow locks onto it). The blast hurts whoever stands near, the enemies too, and sets off the ones beside it. A blast you set off that catches the other player counts as your hit.
Plains of Rohan: the players are drawn at their starts (their markers showed, but not them).
The Ent now hurts the enemies on the Versus maps, light and heavy blows too, and breaks their shields; the enemies he fells fall and die as by any other blow (his blows hit nothing before).
Enemy sounds in Versus: their grunts, cries, blows and deaths, and the sound of being hit, play as in the campaign (they were silent).
Orthanc Summit: players no longer get stuck running on the spot at their starts (it happened after playing another arena first; only restarting the game cleared it). A player pushing the stick who still cannot move for 2.5 s is released, and put back on his last safe ground if need be.
Other fixes/Linux fixes
Load Game with no saves: Enter on "No saved games" takes you back to the main menu (it kept showing the message again).
The level 5 and level 10 achievements require a real level-up (finishing the prologue as Isildur earned both).
Linux, laptops with an NVIDIA card beside the built-in graphics: the game runs on the NVIDIA card (it ran slowly on the built-in chip). TT_NO_PRIME=1 leaves the choice to the system.
Linux with an NVIDIA card: no more flickering. Surfaces flickered grey and broke into flat patches, in the menus and in game and most when paused: the OpenGL renderer kept reading shader settings from graphics memory the NVIDIA driver had already handed back. Also: the characters' shadows repaired as on Windows, and graphics driver errors, if any, written to the log.
Linux: no more stutter every second with the keyboard's button prompts (a search for the hints' words ran on the game's own thread).
Linux: the More page's Colour grading, Grading amount, Movie sharpness and Distant texture detail now work properly (they did only on Windows).
Tested (2.0.0)
Linux: Campaign coop and Versus modes. Versus bot runs on Westfold (the arena, the bomb stacks by blows and shots from both players), the Plains of Rohan and the Orthanc Summit (Restart Match); co-op bot runs on Balin's Tomb and the Plains of Rohan; the F5 launcher and the Linux launcher window; every language's upscaled fonts at the main menu.
Windows: the co-op changes were tested by their author with bots.
Windows, Linux and macOS builds compile.
Not tested: co-op with two real controllers; the macOS build on a Mac; both co-op players as Gimli.
2.0.0 Credits music: 2.00 adds the ability for new music to be added to the games credits. for copyright reasons, the new credits songs are not included in this release. There is a new music folder added in the 2.0.0 release where two extra .wav files can be added, so the credits don't just loop one song ("Concerning Hobbits"). The two files must be named credits2.wav and credits3.wav, in lowercase (Linux and macOS go by case), as 16-bit PCM .wav. They are designed to work best with two songs composed by Howard Shore:
credits2.wav: "The Road Goes Ever On..., Pt. 2 / In Dreams" (feat. Edward Ross), the last 3 minutes 11 seconds (skipping the first 30 seconds)
credits3.wav: "Rivendell", the first 1 minute 45 seconds
For copyright reasons, these songs are not included with 2.0.0 or any earlier or later release. For the intended experience, buy your own copies of the two songs (or the soundtrack albums they’re on) and edit them yourself into credits2.wav and credits3.wav, for your own use. Without them, the original credits song plays and loops as it normally does.
1.9.9
What's new in 1.9.9 (see CO-OP.mod for more known issues)
The128ReBits' improvements
Made possible by The128ReBits.
More versus exclusive hero's: the Elven Warrior, the Uruk Captain the Cave Troll, the Ent and Saruman, each with his own moves and weapons.
Animation improvements for all the extra heroes.
Versus: new heroes and a new mode
New Versus heroes: Saruman (his own staff casts), the Ent (Treebeard from Fangorn Forest: his walk, his blows, thrown rocks and sounds), the Elven Warrior, the Uruk Captain.
Troll Battle (Mode: on the Versus menu): cave troll against cave troll in Balin's Tomb or Amon Hen, with twice the health, thrown logs, its own end picture, its own sounds for FIGHT and the match's end, its own results table and kept records.
Both players may pick the same hero in Deathmatch.
Enemies in the arenas: a few of the level's own orcs and Uruk-hai on Amon Hen, Fangorn Forest, the Plains of Rohan, the Breached Wall and the Hornburg Courtyard, spread over the map. They attack both players with their own sounds and hit as hard as a player does.
Random starts: each match begins somewhere else on the map, and later rounds go on where the players stand. Starts are always on the map's ground (Balin's Tomb: its hall floor, no ledges).
Explore the whole map: the levels' parts are joined (Amon Hen from the start to Lurtz's ruins), every part is drawn, and the map's edges hold both players. The props keep their collision and still break.
The camera keeps both players in view by the map's walls, and stands further back when the Ent or a troll is fighting.
Hits from any side: blows land on a hero's side or back, and on the trolls' and the Ent's bulk.
A horn at the end of each round and a random level's music each match (arenas with enemies keep their own).
Mount Doom in Versus: the whole arena is playable for both players, over the lava and on its far side, with its music.
Restart Match and Restart Round in the pause menu (Back / Y, or a click on the note at the top): either starts again from a new random spot; Restart Round keeps the score.
The enemies' blows don't count before a round begins (the countdown and between rounds).
The round's ammo and health pickups lie on the ground, where both players can take them.
Plains of Rohan: starts on the open field, and both players are always shown.
Hornburg Courtyard: the camera no longer zooms in by the west wall and stays zoomed (the level's own close view took over), and the players can't walk out through the yard's wall.
The Versus bot rests after landing a hit (it could keep player 1 down in Troll Battle).
Achievements
25 new achievements for Versus: Troll Battle (win 3 or 10 matches, a flawless match, a 400 smash, 25,000 damage, a round under 20 seconds, 25 logs or rocks landed), the arenas' enemies (slay 25 and 150, win on all five enemy arenas), win 3 matches as each of the newer heroes (Saruman, the Ent, the Uruk Captain, the Elven Warrior, Lurtz, Sauron, Gandalf, Elrond, Boromir, Frodo, the Berserker), the Ent's rocks and a mirror match.
The note says why: an achievement's note now shows what it was for, so there is no need to open F10 each time.
Co-op Fixes
Player 2's bow (or his own ranged weapon) shows for every hero.
Player 2's Perfect glow shows on his gauge, as player 1's does.
Player 2's weapons are drawn again after he respawns.
Player 2 can kick the ladders down again beside a different player 1 hero.
Player 2's special move names on his side, his own rumble on the second controller.
The heroes take more hits in co-op (125% health).
Player 2's arrows and blows hit the Watcher in the Water.
Player 2 picks up the level's own arrows and health (the arrows by Balin's Tomb's cave troll), not only the enemies' drops.
No leash: player 2 can roam the level on his own; when the two are far apart the camera goes over to player 1.
P2 Teleport on/off from the pause menu: a note at the top while paused; Y (the I key) or a click on it switches it, without going to the settings.
A stuck player 2 is moved beside player 1 only with P2 Teleport on.
Player 2 breaks what player 1 can: boxes, Fangorn Forest's log, the Breached Wall's catapult, and the enemies' shields with heavy attacks.
The Breached Wall's catapult bar is drawn whole under player 2's health bar (half of it was on top of his bar).
Other Fixes
Linux, PlayStation 3 controller: a DualShock 3 is read through the system's own driver. It was found and named but sent no input on some systems (issue #14).
Versus starts no longer leave the screen black (Fangorn Forest, the Gates of Moria).
A player stuck by a wall after a round can step back out.
New Game: Easy, Normal, Expert and Impossible can be clicked with the mouse.
The Walk key works for both players in co-op and Versus.
Lurtz and the Uruk Captain fall onto the ground (their falls no longer float), and Lurtz's hit no longer lifts him.
The Uruk extra hero is renamed to "Berserker"
Linux AppImage
TwoTowers-Recompiled-v1.9.9-x86_64.AppImage: one file with SDL2 inside (used when your system has none). Make it executable (chmod +x, or Properties > Permissions) and run it; the first time it asks for your disc image.
The game's folder (settings, saves, log, game files) is TwoTowers-Recompiled beside the AppImage, or ~/.local/share/TwoTowers-Recompiled when that can't be written. A newer AppImage updates the program there and keeps your saves and settings.
Tested (1.9.9)
Linux (OpenGL): Versus bot runs on Amon Hen, Fangorn Forest, the Plains of Rohan, the Breached Wall, the Hornburg Courtyard, Balin's Tomb and the Gates of Moria (random starts, enemies fighting both players, the Ent felling orcs); co-op runs in Fangorn Forest (player 2's respawn, his Perfect glow).
Windows: played by hand on the developer's PC through the 1.9.9 test builds.
Windows, Linux and macOS builds compile.
Not tested: the macOS build on a Mac; the PlayStation 3 controller fix on the reporter's Linux system; the trolls breaking props.
Known issues (1.9.9)
Co-op is not fully playable with the extra heroes mod. It is recommended to play co op with only the four main heroes. The extra characters are playable, but they do not show up in cut scenes properly yet. Even with player 1 as a main hero and player 2 as an extra hero, the in game cut scenes don't show the proper animations for both hero's. Some HUD elements might not show correctly with the extra heros as well (Sauron as player 2 shows his ammo hud for both players)
Singleplayer/Co-op: Singleplayer is entirely unaffected by co op or versus mode except for the co op setting for double pickups. If the setting is enabled in the co op setting, it also applies in singleplayer. It is recommended to disable the setting while playing the base game, unless you prefer to have more health pickups.
macOS (OpenGL) is still experimental
Versus spawns are made random for each map, but sometimes a player can still get stuck in a spawn. A "reset game/round" setting has been added to the pause menu for when this occurs. It resets the entire match or the specific round while also putting both players in different spawns/locations.
Enemies/random NPC's around versus maps don't respawn entirely if a match is reset. If they were killed off during one of the rounds, they will stay that way until returning to the main menu and starting the match again.
1.9.8
What's new in 1.9.8
Co-op fixes
Player 2's own buttons: Options > Co-op Options > P2 Controls.
Aiming: while a player holds LT, a dot over the enemy his lock is on (player 1 blue, player 2 amber). Arrows and thrown axes fly through allies and every hit counts.
P2 bot improvements: it follows the levels' paths, keeps with the group and takes enemies in order.
Menus: every controller works in the front-end menus;
Extra heroes as player 2 are built and drawn in every level (before, certain extra heros would be missing in Fangorn Forest, and certain things would be unbreakable. Extra hero's (Sauron) would also sometimes be missing in the Westfold and with player 1 as Legolas), and their ranged blows wouldn't land.
Explosives: player 2's shots set off the Westfold's bomb stacks and carts properly.
Fixes
Sound after a long session: music, cut scene voices and some effects no longer go silent some forty minutes in.
**Language support for co op and Versus menus
Ultra textures no longer drop off the menus' text at times.
Known issues (1.9.8)
Legolas can sometimes be unable to attack during the Weathertop level in Co-Op
Player 2's controller doesn't rumble yet.
Tested (1.9.8)
Linux (OpenGL): co-op bot runs in the Westfold, Fangorn Forest and Balin's Tomb with extra and retail heroes as player 2.
Windows: co-op played by hand on the author's PC.
Windows, Linux and macOS builds compile.
Not tested: the macOS build on a Mac.
1.9.7
What's new in 1.9.7
Versus
Player 1 against player 2, one on one, on one PC. Main menu > Versus.
Arenas: every level but Westfold: Weathertop, Balin's Tomb, Amon Hen, Fangorn Forest, the Gates of Moria, the Plains of Rohan, the Road to Helm's Deep, the Deeping Wall, the Breached Wall, Hornburg Courtyard, Orthanc, Orthanc's summit and the prologue. Each plays another level's music.
Heroes: Aragorn, Legolas, Gimli and Isildur; the seven extra heroes and also three Versus exclusive hero's added: The Nazgul, a Shield Orc (his shield halves every blow until it breaks) and Eomer. Each with their own voices and animations.
Rounds: choose 3, 5 or 7 rounds to win. A countdown starts each round; the first to the rounds chosen wins, then a results screen (hits, damage, biggest hit, arrows on target, fastest round, awards).
Fair fights: both heroes have the same health and every move. A guard breaks after four blocks in a row, kicks knock back but do almost no damage, ranged attacks lock on to the other (a step aside dodges them), and health and ammo pickups appear each round.
Your saves stay yours: both players are at the top level for the match only. Your heroes' levels, experience and upgrades, and the extra heroes' records, are put back as they were when you leave Versus.
Devices: as for co-op (Options > Co-op Options > P1 Device / P2 Device). With P2 Bot on, the game fights player 1.
Its own menu background, results screen and sounds in the versus folder (menu_bg.bmp, results_bg.bmp, fight.wav, match_win.wav); add round_win.wav for a round won, or replace any of them with your own.
See COOP.md for the details.
Also new
Achievements: 47, for the story and for Versus/co op, noted in the corner as you earn them and listed on the F10 panel's Achievements page. They're kept in achievements.txt, only on your PC.
Impossible difficulty: past Expert, any enemy's second blow fells you. It's right of Expert on the New Game's difficulty screen, or in Options > General Options, and works in co-op too.
F10 > More: colour grading (Cinema, Rich, Shadow) and its amount, movie sharpness, pause or mute while the window is in the background, and achievements on or off.
F9 hides the HUD; F8 (or F12, Print Screen) saves a screenshot in the Screenshots folder beside the game.
Co-op
Camera: playing the levels with Camera Zoom (Options > Co-op Options) on Normal or Wide is recommended, so both heroes stay in view.
Fixes
The Breached Wall at high frame rates: fire and blasts did their damage every frame, so above 30 fps the catapults broke the gate far too fast (at 500 fps within a minute). Their damage now adds up the same at any frame rate.
Credits scroll at the same speed at any frame rate (above 30 fps they ran too fast).
Main menu: Co-op and Versus no longer get stuck when the game misses the press. Before, the menu could stay put, and the next press opened Credits or left a black screen.
Co-op: loading a co-op game no longer stops on a black screen when the window loses focus while it loads.
1.9.6
What's new in 1.9.6
Couch co-op (alpha)
Co-op was in development for the main port when Volverine-Dude published his own implementation in the TooTawersRecomp-coop fork. 1.9.6 brings the two efforts together on top of 1.9.5, and this release is thanks in large part to his work. Thank you!
Two players on one PC play the story levels together on one shared camera. Each has their own hero, controller, weapons, health, ammo, experience and upgrades.
Starting: Main menu > Co-op > New Game or Load Game; then each player picks a hero (player 2 can't take player 1's).
A hero who goes down comes back beside the other after a wait. Both down is a game over.
After a level: each player's stats and shop in turn, then the save. Player 2's experience and purchases are saved with his hero.
Co-op Options (Options, and the pause menu in a co-op game): Difficulty (Easy, Normal, Expert), Player Icons ("P1" / "P2" over the heroes), Camera Zoom (the camera zooms out as the heroes part), P2 Teleport, and P2 Bot (the game plays player 2).
New in this release, on top of the fork:
Each player's device (Options > Co-op Options > P1 Device / P2 Device): Automatic, Keyboard & Mouse, or any controller connected. With one controller, player 1 takes the keyboard and mouse and player 2 the controller; with two, one each. The mouse steers and aims only for the keyboard's player.
Pickups: Double (default): each hero can take a health or ammo pickup once.
Co-op support on Linux and macOS (experimental) too (its settings were not read there).
See COOP.md for the details.
Fixes
Upgrade screen at high frame rates: the points count down at the same speed at any frame rate. Above 60 fps the count, and the purchase sound playing with it, were cut short.
Tested (1.9.6)
Windows by the author: couch co-op played/tested through the first seven levels and Tower of Orthanc.
Linux (OpenGL): co-op in Weathertop and Balin's Tomb with the P2 Bot and with scripted input for player 2 -- both heroes, the P1/P2 markers and the two-player HUD; player 2 on the keyboard (port 2) while player 1 stays still; Double pickups (player 2 refilled twice from one pickup); the Co-op Options page with the new rows.
Windows, Linux and macOS builds compile.
1.9.5
What's new in 1.9.5
Performance: more of the game runs as native code
The game's own code runs faster. The translated game code kept the Xbox processor's registers in memory and wrote every change back. Its floating-point and integer registers now stay in the PC processor's registers inside each function. Every changed function was run against its old version from the same starting state, and gave the same results.
The busiest Direct3D library functions are written in C. The game's draw calls, the vertex setup before each draw and its shader constants are now hand-written code instead of translated Xbox code. They send the graphics chip exactly the same commands, checked call by call over millions of draws, at about half the cost.
The controller is read directly. The game no longer goes through an imitation of the Xbox's USB chip to read the controller; it asks the PC's own input (controller, keyboard, mouse and your bindings).
The render thread does less per draw. Draws with nothing changed between them are sent to the graphics card as one. Vertex data and commands are copied with faster copy routines, and graphics state lookups are quicker.
Lighter frames. Busy gameplay ran at about 450 fps on average on a fast PC in testing (Windows, Direct3D 11), with the game's code down to about 1.7 ms a frame. Earlier test logs showed over 3.5 ms in busy scenes.
Fewer draw calls. Draws that differ only in their vertex constants are sent to the graphics card as one draw; the constants travel with the vertices.
Linux gets the render thread too (OpenGL), and the game no longer spins a core while it waits for the graphics card.
High frame rates
Animations keep their speed. Each frame an animated character moved on by whole milliseconds of (frame time x animation speed), the rest dropped. At 500 fps animations playing below full speed kept about half their time or less: slow attacks, cutscene animations that stopped short, and heads that did not turn toward what a character looks at. The fractions are now kept and added up.
Falling keeps its speed. A falling character's speed grew once per frame, so at high frame rates anything that jumped or stepped off a ledge fell many times too fast and landed deep in the ground. It now grows with time, exactly as at 30 fps.
Small moves are kept. Movement under 0.01 units a frame was dropped, which above about 300 fps was most of it (characters stood still or caught on the ground). The threshold now shrinks with the frame time.
Unlocked: frames at least a millisecond apart. After a late frame the next few could come through back to back, under a millisecond apart, which the game's clock could not keep straight (the Westfold intro's run played slowly). Unlocked now means up to 1000 frames a second, each given its proper time.
Sound
No more cut-outs or crackling audio. Whenever the game updated its sounds, the emulated sound chip skipped that slice of audio: 3-10% of all sound came out as silence in short slices, and sounds seemed to stop part way, more the higher the frame rate. The sound now plays on, and the game's sound commands are applied between slices.
Volume changes glide across each slice instead of stepping.
Tested (1.9.5)
On Windows by the author: gameplay in busy scenes at unlocked frame rates (Westfold and others), with profiles of each change; the F10 menu fix; animation speed, the prologue and sound at up to 1000 fps.
On Linux at fixed frame times (33, 8, 2, 1 and 0.7 ms): animation time, falls and landings, and the world clock measured against 30 fps; sound lengths and gaps measured at 30 fps and unlocked.
Under Wine (Direct3D 11): levels load and play, fights render correctly.
On Linux: gameplay renders correctly; the native Direct3D functions checked against the translated ones call by call (14.7 million calls); every function changed by the register work compared old against new (8,348 identical, none different).
Windows, Linux and macOS builds compile.
Not tested by hand: the macOS build on a Mac.
1.9.4
What's new in 1.9.4
Performance
Much higher frame rates/performance improvements. The game's graphics commands now run on a thread of their own, beside the game, with far less processor work per draw (Direct3D 11 and Vulkan). On a fast PC this gives several times the frame rate of 1.9.3 and keeps the graphics card busier and usage scales better.
Game time keeps real time at any frame rate. Above the monitor's refresh rate (usually above 240 hz/fps) some animations in the game world would move slowly and feel delayed. They now run at the right speed at high frame rates.
A drop to 20 fps with Gandalf or Sauron at the Gates of Moria is fixed.
Frame rate and display
Frame rate limiter options has 30, 60, 75, 90, 100, 120, 144, 165, 200, 240, 300 and Unlocked (Options → Display, F10, the launcher, or [Display] fps=165). The limit holds in the menus too.
Vulkan is no longer held to the monitor's refresh rate with VSync off.
The exclusive Full-screen resolution list goes from small to large, so the right arrow goes to a higher resolution, as Window size does.
1.9.3
What's new in 1.9.3
Character shadow improvements
The stripes and thin lines that crossed character shadows in every level, at any resolution, are not fixed completely, but some of the shadows are now more filled in. (Direct3D 11 and Vulkan).
Exclusive full screen
- Display mode now has Windowed, Borderless and Exclusive full screen (Options → Display, F10, the launcher, or
[Display] fullscreen=2). - Full-screen resolution chooses the display's resolution for exclusive full screen: the desktop's, or another the display offers, at its highest refresh rate (
[Display] fs_resolution=1920x1080). Changing it keeps you on the Display page. - Alt+Tab puts the desktop back while you are away and switches again when you return. The window and mouse follow every resolution change, so the pointer no longer drifts and W A S D keep working in the menus.
Controller improvements in menus
- In the menus, a part push of the left stick moves the choice as the d-pad does. The main menu used to need a full push, and a push slightly to the side often did nothing. A held stick steps at the d-pad's pace.
- A held stick or d-pad no longer runs down the Options pages at high frame rates.
- Mouse steering and mouse aiming now take over the left stick only for the keys and mouse. Before, pushing a controller's stick up with steering on, or holding its LT with mouse aiming on, gave the stick to the mouse.
macOS updates (Apple silicon)
The 1.9.2 Mac build stopped at start-up on Apple silicon. Three fixes, from a player's report and tested patch (M2 Pro, macOS 27.2, Rosetta 2):
- The game window opens. macOS only lets the main thread make windows; the game drew no window ("NSWindow should only be instantiated on the main thread"). The window now runs on the main thread, the game on its own.
- No crash once the renderer is up. The OpenGL picture could be drawn from a second thread that had no OpenGL context (a crash in
glBindFramebuffer). - No crash at the first sound. Rosetta 2 reports the step the audio-register handling takes as a breakpoint (
unhandled exception 0x80000003); it is now recognised as the step it is. - A crash log line now also names the function it stopped in.
Other fixes
- **The dxvk folder for Vulkan is now included in the release.
- The Secret Codes page now shows the proper controls: its L trigger follows the button prompts you chose (as R did), and its text names your keys with keyboard prompts.
Tested
- Under Wine (Direct3D 11): levels load and play with the shadow repair on, at 1x and 4x internal resolution; exclusive full screen starts; the main menu with scripted left-stick pushes at 30 %, 40 %, 60 % and full (both ways), and a held stick against a held d-pad; the orange pickups and the ECTS HUD.
- Linux (OpenGL): a level from boot. Windows, Linux and macOS builds compile.
- macOS: the reporter's version of these fixes, in their own build, reached the renderer, sound and the intro screens at 30 frames a second on an M2 Pro (Rosetta 2). This release's Mac build (with the window fix reworked) has not been run on a Mac; full play, controllers and Intel Macs are untested.
Bug reports are welcome. Please include twotowers_log.txt, which is next to the game.
1.9.2
The Two Towers Recompiled v1.9.2
A native PC port of The Lord of the Rings: The Two Towers (Xbox, USA, 2002), made by static recompilation. It needs your own copy of the game, either the disc image (ISO) or an extracted folder. No game data is included.
⚠ Work in progress. The game is playable, but not everything works perfectly yet.
Downloads
| File | For |
|---|---|
TwoTowers-Recompiled-v1.9.2-win64.zip |
Windows 7 SP1, 8.1, 10, 11 (64-bit) |
TwoTowers-Recompiled-v1.9.2-linux-x86_64.tar.gz |
64-bit Linux, glibc 2.27 or newer |
TwoTowers-Recompiled-v1.9.2-macos-x86_64.tar.gz |
macOS 10.15 or newer, Intel or Apple silicon (through Rosetta 2); not yet tested on a Mac |
TwoTowers-Recompiled-v1.9.2-source.zip |
Source code |
TwoTowers-Recompiled-v1.9.2-readmes.zip |
The README in all 34 languages (README-.txt; LANGUAGES.txt lists them) |
Ultra textures, GameCube pack: download the GameCube high-resolution texture pack (GLOS69) separately from its author. It is not part of this release.
Updating from 1.9.1 or earlier: unpack over your old folder, or into a new one and copy your game_files folder. Your saves and settings carry over. Copy the new textures_ultra\pairs.txt too (it comes with the download); a prepared GLOS69 pack is not prepared again.
What the port adds
- Runs natively on Windows, Linux and macOS, from your own disc.
- Languages (new): 33 languages besides English for every text in the game, subtitles included, plus the launcher and the F10 menu.
- Resolution and widescreen: internal resolution 1x–12x, 4:3 to 32:9 with the HUD at the screen's edges, widescreen cutscenes, menus that fill the screen.
- Picture: Direct3D 11, Vulkan (DXVK) or OpenGL; MSAA and FXAA, anisotropic filtering, brightness, sharpening and colour.
- Ultra textures: sharper menus, text and HUD, and every texture with the GameCube pack.
- Frame rate: 30 fps as on the Xbox, or 60 / unlocked (experimental).
- Keyboard and mouse: every action rebindable, a Walk key, a mouse pointer in every menu, mouse aiming and mouse steering.
- Controllers: Xbox, PlayStation, Switch Pro and others with rumble; prompts that match what you play with.
- Menus: Display and Controls options pages in game, the F10 settings panel, an Exit item.
- Mods: the ECTS 2002 demo's HUD, orange health pickups, and seven extra playable heroes.
What's new in 1.9.2
Languages
- Choose one in the launcher's Language list (on Linux and macOS:
./twotowers-setup, then l). English, French, German, Spanish (Spain and Latin America), Italian, Portuguese (Brazil and Portugal), Dutch, Swedish, Danish, Norwegian, Finnish, Polish, Czech, Slovak, Hungarian, Romanian, Croatian, Turkish, Greek, Bulgarian, Russian, Ukrainian, Vietnamese, Indonesian, Japanese, Korean, Chinese (Simplified and Traditional), Thai, Hindi, Hebrew and Arabic. - Everything the game writes is translated: menus, hints, upgrades, the results and pause screens, credits, and the subtitles of the scenes and the bonus interviews. So are the port's own words: Options pages, key names, button hints, the extra heroes' names and upgrades, the launcher and the F10 panel.
- Letters the game's fonts lack are added to them at each font's size and weight, and to the Ultra textures' upscaled fonts too, so text stays sharp in every language. Hebrew and Arabic read right to left; Chinese, Japanese and Thai lines break between words.
- The
langfolder holds only the translations. The game's files are copied with the language's text intolang_cacheon first use (a few seconds); your game files are not changed. Spoken dialogue stays English.
Fixes
- Legolas's mission results picture showed Aragorn with Ultra textures and the GameCube pack (the pack has no picture of him, and its second picture of Aragorn had been paired with it). It is his own now.
- Mouse steering: hold Walk with W and the hero walks while steering. Steering itself is as in 1.9.1 (hold W, the mouse is the stick).
Tested
- Under Wine (Direct3D 11 and software): the title screen and menus in French, Japanese and Arabic; the largest level loads in Japanese and Chinese; the upscaled fonts of Japanese, Polish and Russian (Ultra textures); the results screen as Legolas with Ultra textures; the launcher in Japanese (Wine has no Japanese font, so its words showed as boxes there; Windows has the fonts).
- Linux (OpenGL): the title in Russian with the upscaled font. Windows, Linux and macOS builds compile.
- Not tested by hand: every language through a whole level; subtitles on screen (turn them on in Options); mouse steering's feel; the macOS build on a Mac.
Known issues
- Chinese, Japanese and Korean use about 5–6 MB more of the game's memory for their letters; the largest levels load, but report anything that fails to load in those languages.
- The "Loading..." picture and other text drawn into pictures stay English.
Bug reports are welcome. Please include twotowers_log.txt, which is next to the game.
1.9.1
What's new in 1.9.1
Mouse steering improvements (Controls page, launcher, [Input] mouse_steer) works like aiming with the ranged button does (as in the prologue, where Isildur has no bow): hold W (or push the stick up) and the mouse is the stick.
Sauron's sprint is removed, with its option: Shift and the left stick click are the left stick click again.
Extra heroes: the Uruks rock throw for level three has been restored (and their fire upgrades), and they do damage to the Watcher.