I’ve recently started to restore some of my childhood games on Linux, building a library of PC classics like RollerCoaster Tycoon, Cossacks or Sims in addition to my collection of Emulators. Wii, NDS, PC, PSX and many more platforms were accessible right at my fingertips.
Emulating all these games made me wonder whether it might be possible to revisit some of my favorite iOS games as well, but I had no clue whether an emulator even existed until I discovered TouchHLE
What is TouchHLE?
TouchHLE is a high-level iOS 2.0 emulator. A high-level emulator is like a translator who understands the general meaning of a conversation, but doesn’t focus on every small detail. It loosely mimics the system the software was meant to run on, instead of actually emulating the entirety of iOS.
TouchHLE is not meant to run modern iOS software and focuses on classic games like “Monkey Ball”. It does not officially support Linux, but with a few workarounds it can be build successfully.
How to get TouchHLE running?
I will provide step-by-step instructions on how to build TouchHLE on Fedora 38 Workstation. The instructions will most likely also be useful when on a different distribution.
Pre requieries:
You will need the following packages installed: git, gcc, gcc-c++, cmake, alsa-lib-devel. If you are on Fedora you can use the following commands:
sudo dnf install gitsudo dnf install gccsudo dnf install gcc-c++sudo dnf install cmakesudo dnf install alsa-lib-devel
Furthermore, you will need RustUp, which is easily installed using this command:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Now log out of your system and log back in.
Next we will download and compile sndio:
git clone https://caoua.org/git/sndiocd sndio/./configuremakesudo mkdir /var/run/sndiodsudo useradd -r -g audio -s /sbin/nologin -d /var/run/sndiod sndiodsudo make installsudo ldconfigexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHcd ..
For further installation instructions, visit the sndio website. Most importantly, make sure that sndio is in your $PATH (./configure instructs this but you should be good to go).
You can try the installation by typing “sndiod” in the Terminal, which should output nothing.
You will need to type “export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH” each time you want to run TouchHLE in a new terminal to tell the compiler where to find “libsndio.so.7”. This might differ on other distros!
Building TouchHLE
First, let us get a hold of the git repo:
git clone https://github.com/hikari-no-yume/touchHLE cd touchHLEgit submodule update --init
Now we can download additional dependencies (boost), installing boost through the package manager is possible but does not work on Fedora with TouchHLE for some reason:
cd vendor && wget https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz && tar -xf boost_1_83_0.tar.gz && mv boost_1_83_0 boostcd ..
The following command will alter a build instruction to use the downloaded boost package instead of searching for it on the system. If you use another distro, you might be able to skip this step:
sed -i 's/os.eq_ignore_ascii_case("windows")/os.eq_ignore_ascii_case("linux")/g' 'src/cpu/dynarmic_wrapper/build.rs'cd ..
Now you should be able to run:
cargo run --release
In the TouchHLE folder and the app should build and start successfully. In order to emulate an app, you need to place an IPA file in the “touchHLE_apps” folder and restart TouchHLE. A list of working apps can be found on the TouchHLE website. These apps do offer controller support. Refrain from downloading IPA’s from Archive.org as they do not respect copyright 😉
Results
Figuring out these instructions took quite some time, but the results are worth it! TouchHLE can be used quite stable on Linux, and it’s certainly amazing to see classic IOS 2.0 games running on Linux and my childhood can be relived:
Did you know you can follow this blog in the Fediverse? Just type “@Aaron” in your search bar. Also make sure to visit the Guestbook and leave a message.
Lastly, big thanks to hikari_no_yume @hikari@social.noyu.me for creating this great project.
https://aaron.place/2023/09/05/emulating-ios-2-0-games-on-linux/
oh my god this localizes too early
so instead of just doing "if (current_room=='kitchen')", and showing different strings for "kitchen" depending on which language the user selected, it has to do:
if (current_room == "Kitchen" || current_room == "кухня" || current_room == "부엌" || current_room == "Cocina"){
...
}
It's my Birthday today 🎈
As a tradition I may request for sharing my work.
Thank you to everyone who supported me so far.
I'm looking forward to a brighter future. You can find more in my Bio.
No but for real:
MasterCard getting to determine what counts as "adult" content, including drawn images like figure studies?
Patreon handing your face data & ID information over to a 3rd party?
That 3rd party claiming a right to use that data to train their facial recognition "AI"?
What I'm listening to today: "Buchla 200 at the Evergreen State College.", Giselle Garcia
Some drums-not-needed analog synth music on a vintage unit at a college in Olympia, Washington. Chill but with a distinctly sharp energy. What I used to think of as "Space Mountain Music".
There's a gap of about two minutes halfway through this video as the musician configures the unit for her second song so you may want to stop the video at 2:40, but I do like the closeout track.
update: my friend's girlfriend's sister's girlfriend who definitely works at google wanted to clarify that chrome is just another component of android now
Do not trust AI to tell you which mushrooms to pick.
By extension, you can no longer trust Amazon results for that, or Google results either.
@eff is totally wrong with this take about KiwiFarms and HE: https://www.eff.org/deeplinks/2023/08/isps-should-not-police-online-speech-no-matter-how-awful-it
Every customer of HE signs a contract, which states that they will abide by the TOS/AUP or their service may be interrupted.
There is no world where KiwiFarms abides by their TOS/AUP. By design the entire purpose of the website is an egregious violation of multiple points of the HE AUP.
HE has the right to enforce their TOS/AUP by not routing traffic to Joshua Moon.
EFF should retract this article immediately.
ah yes, one of the losers from that vile website sent me a comment i didn’t bother reading.
although that vile website has caused substantive harm to several friends and colleagues over the years, my objection to the EFF publishing this irresponsible take is that they are attempting to erode the right of network operators to enforce their policies, which will result in a much less secure internet.
as somebody who was a CTO of a reasonably sized NSP, this is not the outcome we want as a society. if every single takedown had to be adjudicated, illegal activities such as spam operations, malware distribution and CSAM distribution would take considerably longer to shut down than they already do, while tangible harms from these operations would continue for much longer.
did EFF blast Microsoft for shutting down various botnet control infrastructure? no.
Trans woman, bisexual, someone's fiancée, forever a programmer, poly, and former total mess