Video Tutorial:
- Install the F-Droid App Store by going here and touching the "DOWNLOAD F-DROID" button (source code). Then touch the file from your downloads:
- You might get a warning that "your phone is not allowed to install unknown apps". If you trust F-Droid, touch "SETTINGS":
- Then touch to enable "Allow from this source", and touch the back button:
- Now you can touch "INSTALL" for F-Droid:
- Open F-Droid and wait for a few minutes. The first time you use F-Droid, it has to download a list of all available apps from the internet. This can take a long time, but when you no longer see "Updating repositories" at the top, it is finished:
- Search "Termux" and touch the blue download button on the app that is exactly named "Termux", not any of the others:
- After it has finished downloading, an "INSTALL" button will appear, now touch that (source code):
-
You might see a warning very similar to the one covered in steps 5-7. If you trust Termux, repeat that process.
-
Open Termux and wait until the "installing bootstrap packages" message disappears. Then, the first thing you need to do is type
pkg upgrade -y
and press Enter (or "Go" as some touch keyboards label it):
- When it is first installed, Termux frequently has outdated mirrors. If you see any errors like these (will have a red
E:
), then typetermux-change-repo
next, and press Enter. If you don't see any errors, or if you see "The default action is to keep your current version" skip to step 14:
- Press Enter again when you see this first screen:
- At this screen, use the arrow keys above your normal touch keyboard to navigate up and down, then press Space to select a different mirror, then press Enter to confirm:
- The red
E:
should be gone from the black screen with white text; if it's not, repeat steps 10-12 until it's gone. Then, typepkg upgrade -y
and press Enter:
- You will see repeated messages like this, which end with "The default action is to keep your current version", followed by some letters. Press Shift -> I -> Enter every time you see this, because this is a new installation that doesn't contain any custom settings you created:
- The
pkg upgrade
will take some time. After it has finished, you will see~ $
again. Give software running as Termux's Android-assigned user permission to access/storage/emulated/0
. A popup will appear; touch "ALLOW":
termux-setup-storage
- Install dependencies:
WARNING: As of 5/5/23, the Termux package
libglvnd
itself (notlibglvnd-dev
) now has a compile-time conflict with this app. If you have it installed during your build, then you will get an error at run-time: "'libGLESv2.so.2' not found
". It's OK if you see this: If you see that error, just ignore it and continue topkg install
. It's just important for anyone who does havelibglvnd
to remove it.libglvnd
is only for changing a setting that's directly analogous to what's referred to on Windows builds of sm64ex as "changing the render API". If you don't want to removelibglvnd
because you need it, then you should follow this separate guide I made for building the game withlibglvnd
installed.
pkg remove libglvnd
pkg install git wget make python getconf zip \
apksigner clang binutils libglvnd-dev aapt which
- Clone this repository and place your
baserom.us.z64
in it. If you don't already have abaserom.us.z64
, here's the guide to obtain one:
Replace
/storage/emulated/0/baserom.us.z64
with the current location of yourbaserom.us.z64
, or if you don't know the full path, try finding it with the "Amaze" file browser from step 19 and moving it to/storage/emulated/0
before proceeding.
git clone --recursive \
https://github.com/robertkirkman/sm64ex-coop.git
cp /storage/emulated/0/baserom.us.z64 \
sm64ex-coop/baserom.us.z64
cd sm64ex-coop
- Build this
sm64ex-coop
fork. This will take a while. IMPORTANT: When it is finished, copy the.apk
to/storage/emulated/0
:
If you get a strange error like
make[1]: *** read jobs pipe: Try again. Stop.
, runmake clean
, then try the build again withmake
instead ofmake -j$(nproc)
.
make -j$(nproc)
cp build/us_pc/sm64.us.apk /storage/emulated/0
- Install "Amaze" (source code) from F-Droid, open it, and allow all permissions:
- Install the
sm64.us.apk
by scrolling to the bottom of the/storage/emulated/0
folder, touching thesm64.us.apk
, and allowing all permissions:
-
To play with others online, tell them to follow this guide first, then either port forward or follow the VPN guide.
-
To update the app when I release updates, assuming you haven't deleted anything from Termux, use these commands, then do step 20 again. You might need to uninstall the older version of the com.owokitty.sm64excoop app (not Termux) first:
pkg upgrade -y
cd sm64ex-coop
git pull
git submodule update --init --recursive
make
cp build/us_pc/sm64.us.apk /storage/emulated/0
To install Lua mods, put them in
/storage/emulated/0/com.owokitty.sm64excoop/user/mods
, or/storage/emulated/0/Android/data/com.owokitty.sm64excoop/files/user/mods
if you don't accept the storage permission request.
- Default mods:
NOTE: Alongside the feature update to beta 33, I have finally implemented automatic installation of the default mods on Android into
/storage/emulated/0/com.owokitty.sm64excoop/mods/
. If you previously installed the default mods using the below command, to use the automatically installed new versions of the default mods, delete each previously-installed outdated default mod from/storage/emulated/0/com.owokitty.sm64excoop/user/mods/
because that directory takes priority.
cp -r ~/sm64ex-coop/mods/* /storage/emulated/0/com.owokitty.sm64excoop/user/mods/
- Example - Twisted Adventures:
wget https://sm64ex-coopmods.com/wp-content/uploads/2023/02/twisted-adventures.zip
unzip twisted-adventures.zip -d /storage/emulated/0/com.owokitty.sm64excoop/user/mods/
To install DynOS packs, put them in
/storage/emulated/0/com.owokitty.sm64excoop/dynos/packs
, or/storage/emulated/0/Android/data/com.owokitty.sm64excoop/files/dynos/packs
if you don't accept the storage permission request. Texture packs'gfx
folders also work here as long as they are not too intensive. Create the folder if it doesn't exist already.
- Example - Render96 Characters Recolorable Version:
pkg install p7zip
wget https://web.archive.org/web/20231228171913if_/https://sm64ex-coopmods.com/wp-content/uploads/2023/01/Render96_Chars.zip
7z x Render96_Chars.zip
mkdir -p /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs/
cp -r Render96_Chars/Render96\ Chars/ /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs/
- Example - Render96 HD Texture Pack:
pkg install rsync
mkdir -p /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs
git clone -b sm64ex-and-others https://github.com/pokeheadroom/RENDER96-HD-TEXTURE-PACK.git
rsync -r RENDER96-HD-TEXTURE-PACK/gfx /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs
- Example - JustOlaia/sm64ex-coop-apk's HD touchscreen button textures:
mkdir -p /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs/gfx/textures/touchcontrols/
cd /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs/gfx/textures/touchcontrols/
wget https://raw.githubusercontent.com/JustOlaia/sm64ex-coop-apk/coop/textures/touchcontrols/touch_button.rgba16.png
wget https://raw.githubusercontent.com/JustOlaia/sm64ex-coop-apk/coop/textures/touchcontrols/touch_button_dark.rgba16.png
Sometimes, merging another texture pack into the same
gfx
folder after having already used it once will result in the newly added textures not loading. In this situation, delete all the.tex
files to force them to be regenerated, then keep relaunching the app until all the textures load:
rm -rf /storage/emulated/0/com.owokitty.sm64excoop/dynos/packs/gfx/*.tex