Lex Talionis on Android (It's Time)

PREFACE

2024 FEE3 dragged Lex Talionis into the spotlight with strong entries like Daughters of Braghedunn and Embrace of the Fog. However, having no way of playing LT games on Android, the audience for LT is quite niche… I myself, admittedly, prefer to play FE games on my phone rather than on a PC.

I woke up this morning and decided to get LT on my phone. I succeeded. This is a user-oriented guide on how to get LT on yours, too.

THE GOAL

What we want to accomplish is one-to-one parity between running LT on Android and Windows. While the devs over on LTCord approach the problem by trying to port LT natively via buildozer (I jokingly mused over a flet wrapper because of this), we’ll tackle the problem in a different, less technical way. No programming experience required. I promise.

In this guide, we take the same approach we use to get every FE8 hack on Android. Yes, via emulation in 2024. Some screens below, from different phones. I busted out my old android from 2018 as a test device for this tutorial.

Screens of our endgame



Controllers are supported and is how I like to play.


Looks just like your average GBA emulator.


FPS still goes down whenever loading or saving. But saves work as expected and can be transferred between phones.



Surprisingly, EOTF is playable.


FPS dips to as low as 20 during combat but it’s definitely playable.



Server 72’s config gave me a bit of trouble because the default buttons were switched, but it turned out fine. I was able to remap the controls within the in-game settings after some head-scratching.






Despite being heavy on effects, LTPhone is playable and can achieve 30 frames during intensive cutscenes. I’d say the android I use is entry-level, for reference.


Borderless fullscreen immersive mode is somewhat supported. On a side-note, my avatar’s name is quite musical.

PREP SCREEN

Now that I have your attention, we require the following on your phone:

  1. An Android that isn’t from the 90s. This probably won’t work on Apple or on ancient tech.

  2. A release of your favorite LT game, preferably in an archive so moving it around isn’t a hassle.

  3. A file manager that lets you see and create .nomedia files in a folder.

  4. An installation of Winrar. Don’t buy the pro version. Don’t just extract the game yet.

  5. The latest release of Winlator and/or HorizonEmu. You also need InputBridge if you end up using HorizonEmu. If you’re fine with Winlator, you don’t need InputBridge.

  6. The LTPad presets I painstakingly did, so you wouldn’t have to spend an hour setting up on-screen controls on your end. The two files are labelled so you know where to plug them in. You may extract this one anywhere.

CHOOSE YOUR LEGENDS

There are technically three contenders for your emulator of choice. Three ways on how to get LT on your phone. I’ll discuss two, but I won’t be touching the third.

Exhibit #1: Winlator

Pros:

  • The most user-friendly and intuitive Windows emulator ever.
  • Almost plug and play for LT, with some elbow grease.
  • Native virtual keypad and controller support so no need to fiddle with InputBridge.
  • Supports immersive mode and borderless fullscreen. This is how you lose a weekend.
  • Playable FPS, stable gameplay. Not the best, but playable for a 2D turn-based SRPG.
  • Ease of use is unbeatable.
  • Has this in-depth video documentation that goes over every setting.

Cons:

  • Load times are long. LTPhone averages at 4-minute load times while EOTF sometimes took 6 minutes. Let’s be optimistic and say that LT takes 3 minutes to load on yours. Now you have time to sip on coffee. This is an inherent flaw with how Winlator approaches emulation, and nothing can be done on our end but recent advancements in the workflow have achieved performance gains as high as 500%, cutting load times down to a minute and almost instantly for small games like Myriad Fortunes.
  • Performance could be better. You’ll have to spend time tweaking your emulator settings to squeeze the best performance out of your device. Outside of you personally trying tweaks out, I cannot help you with this. Unfortunately, I don’t have access to your device.

Exhibit #2: HorizonEmu

Pros:

  • Somewhat user-friendly, once you get used to it.
  • Blazing fast performance. EOTF takes only up to a minute to load. Frames are more stable and are simply better.
  • The nitty-gritty details are abstracted away. You don’t need to wonder what a MESA-SHADER or a FASTNAN is. The default settings offer good enough performance.

Cons:

  • Needs significantly more elbow grease with InputBridge and finagling to get the interface together. I saved you an hour with my presets and another hour of figuring out a workflow, but there’s still legwork to be done.
  • Doesn’t support borderless fullscreen or immersive mode. May be a dealbreaker for some.
  • Doesn’t support 3:2 aspect ratio. This leads to a cutout around the LT screen.
  • The optimizations that the Winlator workflow has received may be enough to warrant shelving HorizonEmu.

Exhibit #3: Mobox

No. Just no. I’m not getting paid to guide strangers on the internet through a CLI. On an Android. Doesn’t matter anyway because I’ve read that HorizonEmu offers performance on-par or better.

A glimpse of what the Mobox setup entails. Prepare to dies at six in the morning.

It is advised to read the sections in order, since installation steps can be somewhat similar and what applies to one may also apply to its counterpart.

WINLATOR SETUP

  1. Install Winlator by following the instructions on its page.
  1. Download and install the APK (Winlator_8.0.apk) from GitHub Releases
  2. Launch the app and wait for the installation process to finish
  1. Open it up. Wait for it to finish. For a performance boost, go tweak your settings.

If you are experiencing performance issues, try changing the Box64 preset to Performance in Container Settings → Advanced Tab.

  1. Go to Input Controls and press Import. This is where you plug in winlator_LTPad.

  2. You’re halfway through. Go to Containers and set one up. Press that +. You may want to create a dedicated directory for your Windows emulator under Drives. Set Video Memory Size to be just under the amount of RAM on your phone.





IMPORTANT: The screen size should be exactly as pictured above. But if you’re on a larger screen and you feel that it’s too small, scale by a factor of 2 until you’re satisfied.

ADDENDUM: See this directory if your chosen game has a custom screen size and other details.

  1. Extract the LT games you downloaded into drive E, in their own separate sub-directories. Create a .nomedia file at the root folder. My root folder is named Winlator. Preferably, Winlator should be found in Internal Storage to maximize performance.

  1. Launch the container you just made. A file explorer will open up. Mouse is simulated by dragging your finger across the screen. If you press your phone’s Back button, you’ll see that you can enable Input Controls. Select LTPad, tick Touchscreen Controls and Relative Mouse Movement. If you have a controller, you don’t need the onscreen controls. You’ll have to connect your controller and set it up in the Input Controls screen. I believe an example is provided with the preset.

IMPORTANT: The controller must be connected before the game is launched, else it won’t be detected.

ADDENDUM: For up to a 400% performance increase, see this post.

  1. Go find which letter drive E corresponds to (or C if you did the strongly recommended optimization step). Once you’re there, navigate to the directory of your LT game. Right click on the .exe or the .bat. Then create a shortcut. This will be helpful in the future. Launch the game.

  2. Now, one of two things may happen. The game doesn’t launch after an eternity. In which case, you’ll have to tweak settings until it runs. Or if you’re lucky, the game launches just fine.

  3. The LT window may be anchored to the top-left of the screen on first launch. It depends on your device. What you do is right click on the game in the taskbar, then click Move. This will allow you to drag the window around and center it on your sick 3:2 screen, simulating how LT looks fullscreen on Windows.

IMPORTANT: If the LT window starts in fullscreen but it cuts off, then you’ll have to navigate to the in-game settings using your controls then switch the screen size there, preferably to its smallest. This will let you do #9.

  1. To enable immersive mode and borderless fullscreen, press your phone’s Back button and press Toggle Fullscreen.

Congrats, you’re done. If you’ve set everything up correctly, you should be able to play the game using the LTPad preset or your controller.



IMPORTANT: Keyboard should be selected as a setting when binding controls 99% of the time. You’re essentially binding your controls to those keys on the keyboard, letting you trick LT into thinking that you have one.

HORIZON EMU SETUP

  1. Follow the instructions on its page.
  1. Go to Releases tab, open latest release, download .apk file and install it, or download Horizon Emu from RuStore
  2. Open an application called Horizon Emu, provide all requset permissions, go to Download tab, and click on Update all (and if you are using Horizon Emu v1.0 or older, install Scripts CPU Topology instead of the regular version of Scripts if you need), and in this tab also download Wine version that you want
  3. Open Containers tab, click on Create a new container, select name for your container, and click Confirm

To run container click on shortcut named FileManager

If (and only if) you are encountering Not connected screen when trying to launch container, try to download not-connected-fix’ in the Download` tab

For on-screen controls use application called InputBridge To use it, download and install InputBridge_v0.1.9.9.apk, open an application called InputBridge and provide all requested permissions, then press Import and select file of your controls profile (in .ibp format). In container, InputBridge will be launched automatically

IMPORTANT: You should select a WINE version in the downloads tab and install that. I use wine-9.13-vanilla. Your mileage may vary.

  1. Intuitively, creating a container is pretty much the same. See #4 in Winlator Setup.


These settings give me the best performance. It may be different on your end.

But you’ll want to use these settings under Settings -> X11 Settings.

  1. Now, install InputBridge and open it up. You’ll want to import inputbridge_LTPad. If you have a controller, now is the time to connect and set it up. Important caveats when setting up controls discussed in the previous section still apply.

  2. Go back to HorizonEmu and launch the container you made.

  3. The same steps should be taken after the file manager boots up. However, you’ll want to check if a gear icon is present on the top right of your screen. If it’s not there, go back to InputBridge, then go back to Horizon Emu. It should appear eventually… But don’t just press it yet.

  1. Navigate to your game directory. Hover your cursor over the .exe or the .bat. Press the gear and then your onscreen controls will show up. If not, press the eye toggle. Pressing the gear transfers your inputs to InputBridge and lets you use the onscreen controls to interact with the emulator. You’ll need to switch between mouse and onscreen controls to make this happen. Remember the elbow grease?

  2. Press your MRB then create a link. Launch the game. If all goes well, it should boot up fast.

  3. As with the previous emulator, the LT window may start anchored to the top-left on first launch. You’ll want to follow the same steps to center it on your screen. But this is easier said than done… It took me a while, though the frames were worth it. Good luck.


If you set it up right, you should be able to play this bad boy on your phone.

CLOSING

Phew, that was a long read. But hopefully this tutorial should let people play LT games on Android until a native port arrives. Feel free to share your experience or ask any questions. Though, I can’t promise that I know the answers.

Signing off


andromeda.dev lol

43 Likes

back in my day, we used to be unable to save when playing (one) Lex Talionis game on the phone

amazing work, I’m so going to be trying this out once I finish the Server 72 clear

finally can go around playing LT games

7 Likes

No mention of Myriad Fortunes, smh, but amazing work.
If this step by step guide for multiple devices and setups, it’s a legitimate game changer. Definitely going to link to it on my game threads to get more eyes on it

7 Likes

this is crazy

5 Likes

I got my project FE8R working on my phone using this method. :slight_smile: Amazing work done here, and a million thanks :pray:

5 Likes

For Winlator:

LINK TO MAIN POST

I discovered a way to optimize performance even further, up to a 400% increase. This effectively cuts my LTPhone loading times from 4 minutes to just 1 minute or so. Frames are stable and are almost as good as on HorizonEmu except you don’t have to do the clunky setup. Enjoy good UX and performance at the same time.

Optimization Steps:

  1. Once you have your Winlator container set up, press the : triple dots next to your container.

  2. Bring up the Winlator File Manager.

  3. Go to the Drive where you stored your games. This is in Drive (E:) for me.

  4. Press the : triple dots next to your game’s folder.

  5. Press Cut.

    !

  6. Navigate into Drive (C:).

  7. You can just press the clipboard icon on the bottom-right of your screen and paste the game here. Or you can create a dedicated Games folder first. Your call.

  8. You’re done. You may have to go into Shortcuts and delete the links you set up. You’ll have to make new shortcuts since you moved your game to Drive (C:).

For inquiring minds who demand to know:

On Winlator, moving files into Drive (C:) should physically store them inside the privileged Android/data directory. It means that other emulators can no longer access the games you move into this place. You can’t even touch those files outside Winlator.

But I won’t let this stop me. Winlator’s directory should be accessible using shizuku which is used for some adb sorcery, or editing saves, doing some hacking on RenPy or RPGMaker games, the works.

But, as I discovered after I failed to find it, Winlator actually uses the superprivileged Android/data/data directory. Which I won’t access since the required procedure would put my phone at risk lol.

10 Likes

Dang! Great work with this!

Next step would be getting LT on hacked 3DSs lol

1 Like

Emulating Windows on 3DS has been done according to this. But the setup is a bit behind the times and running LT probably won’t be possible. Hardware constraints plus emulation overhead and all.

1 Like

And just like that it’s time to get off iOS. Seriously, although I cannot take advantage of this, it’s so awesome to see the time and effort you took to make this available to others. Kudos, @Eretein

3 Likes

O wow. It can run super old windows. Thats neat though

1 Like

Finally i can play FE8 romhack with multi class choices love LT hahaha

4 Likes

Dumb question, but what should be tweeked in this section? (If the default doesbt seem to work)

2 Likes

Not a dumb question at all. It’s a good one. I just didn’t elaborate before because I didn’t think it necessary.

In any case, I’d begin with tweaking the most likely suspect: Graphics Driver. If your phone is running a Snapdragon, then you use Turnip. Otherwise, use the universal VirGL driver.

Still not working? Go to the Advanced tab and set Box64 Preset from Performance to Compatibility. At this point, it’s just gonna come down to how beefy your phone is. But tbh LT isn’t that much of a hog on performance and power compared to AAA games that people have gotten to work on Winlator in a playable state.

See the Winlator Public Testing for those curious. Witcher 3 is playable… which means I gotta get an even beefier phone.

3 Likes

Thank you! Ill try those settings. You said it normally takes a bit to load up the game the first time?

Edit: my GPU is Adreno ™ 740. Does that effect what i should set for the graphic driver?

1 Like

It takes a bit always if you’re on Winlator. Did you do the optimization step I posted a few days ago?

Adreno 740 is the integrated GPU attached to the Snapdragon G2. Your phone is quite beefy. Try Turnip and a flavor of Vulkan: DXVK or VKD3D. I don’t think LT cares which one.

Yes i did follow your steps. Thank you for those, theyve been very helpful.

I was able to get FE8 lex to work but i ran into an issue with FE7. Im going to redownload it and try again. Maybe something got missed when i transferred it over

1 Like

Some goodies before I go back to lurking this weekend.

For Winlator:

Recently released, KD’s The Unbroken Thread implements a custom screen size. See the settings I used below to make it fit my screen snugly.

Screen Size Setting:


You probably need to create a new container that’s exclusively for TUT.

How it looks:



Regarding Startup Selection -> Aggressive: this experimental tweak seems to yield a small but noticeable performance boost. Try it out and see if it works on your device.

1 Like

This is good to know, because MF(Myriad Fortunes) actually also has a unique Screen size and a few players were having issues with full screening it

1 Like

GAMES DIRECTORY

LINK TO MAIN POST

I’m reserving this post to formally jot down screen sizes* and whatnot for LT games. Creators and players are encouraged to contribute data. We’re all in this together.

Game & Creator BSS Notes
Width x Height
Blade and Claw by KD 480 x 320
Daughters of Bragheddun by Lex Telephonis 480 x 320
Dies Emblem by sigmaraven 480 x 320
Eislinn’s Last Sunset by Ericc 480 x 320
Embrace of the Fog by Lord Tweed 480 x 320 Benefits a lot from Startup Selection -> Aggressive.
Fate of the Fallen by Rammerrush 480 x 320
FE7Lex by Beccarte 480 x 320 Audio is stable when using Audio Driver -> PulseAudio.
Fire Emblem 8R by FE7Dragon 480 x 320
Myriad Fortunes by Rammerrush 600 x 390 Loads really fast after all performance tweaks have been applied.
Server 72 by sigmaraven 480 x 320
Tactics of Taming by Rammerrush 480 x 320
The Lion Throne by Rainlash 480 x 320
The Unbroken Thread by KD 580 x 420

*As of 12/01/2024, HorizonEmu doesn’t provide support for custom screen sizes yet.

7 Likes

Is that what causes the crash? Im having the worst luck with that one