(These instructions are for Windows, Mac users will need to download the Mac versions of everything, Linux users you're on your (very capable) own.)
You will first need to obtain the most update to date version of HoloCure that is not built with YYC (which is unfortunately an older patch, but still 0.6):
- Install Steam, create an account/login and add HoloCure to your library, but do not download it.
- Either open your web browser, or on Windows hit Win+R and type the following and hit enter:
steam://open/console
, allowing Steam to open if needs be. This starts the Steam console. - The latest patch of HoloCure without YYC is Build 11968500, to download this, execute the command
download_depot 2420510 2420511 2583401865065080709
in the console, and wait for the download to finish, which should give you a path to the output folder (along the lines ofC:\Program Files (x86)\Steam\steamapps\content\app_2420510\depot_2420511
). - Create a new temporary folder somewhere (henceforth referred to as
temp
), and copy the entire output folder of the download into this new temporary folder. (You may want to rename the output folder to something easy to work with, such asholocure
).
You will also need to setup the 2023.4 release of GameMaker Studio 2, as this is the version and runtime that this version of HoloCure was built with:
- Download the IDE from this link, (which can also be found under Version 2023.4.0.84 on the Release Notes page). Install it, open it and sign in/register. (If you have another version installed, you may have to firstly uninstall that version).
- Next we need to install Android Studio to install the SDKs to build the .apk file, detailed instructions for setup can also be found here.
- Download the latest version of Android Studio, install it and open.
- At first launch, you may be met with a "Missing SDK" screen, in which case, follow the on screen instructions to install the SDK.
- When you launch the application, you should be on a menu page called "Projects" - from here click the three dots in the top-right corner and select "SDK Manager" from the dropdown menu.
- In this menu, ensure the top tab is on "SDK Platforms" and scroll down to a bold heading labelled "Android Tiramisu (Tiramisu)", and from the checkboxes inside, tick "Android SDK Platform 33". This selects the SDK, and may also select other options, which are required. (If you know what you are doing, SDK34+ should theoretically also work)
- Next change the top tab to "SDK Tools" and from "Android SDK Build-Tools ..." select "33.0.3".
- Finally, hit "Apply" in the bottom right corner. This will install the SDK and tools, which may take a while. After installation, you may close Android Studio.
Finally you will need UndertaleModTool - download either the bleeding edge or most recent release from their GitHub.
- From GameMaker, create a new project, and check that everything is also installed properly - the top right of the application should say "IDE v2023.4.0.84" and "Runtime v2023.4.0.113".
- To target Android, click the white target symbol in the top right (underneath the profile icon and chat symbols), and change the platform to Android. This will prompt you to download files, which will take a short period of time (and also sign in/register if you did not previously).
- To generate a signing certificate (required later), open
File > Preferences
from the top left, and open the Platform Settings submenu and click on "Android". (You will want to also check that the paths to the Android SDK location and Java JDK location show "Found"). Scroll download to the "Keystore" section, and fill in the details, which can be random, but make a note of the Alias Name and Alias Password. To generate the keystore file, hit the "Generate Keystore button", and save it somewhere (ideally thetemp
folder). Finally, set the "Filename" of the keystore to the one you have just generated, by hitting the three dots and navigating to it and selecting it. - To change the SDK version, go to Game Options in the right hand bar, and double click on Android. (If you want, you can change a couple of aethestic things here, such as icons and version number, by checking the left-side bar). Change the "Display Name" to HoloCure (or anything you like), and scroll down to "Build Settings", and ensure that the dropdown box says "API Level 33". Then, change the "Target SDK" to 28 - this will prevent erroring. (Additionally, you may want to only allow landscape orientation, under Orientation).
- Finally, build and save the .apk file from
Build > Create Executable
, or Ctrl+F8 (e.g. I have saved it aswrapper.apk
). This will take a while to build the first time.
To patch the data.win file, open up UndertaleModTool and load the data.win file from the HoloCure directory (depot_2420511
if you have not renamed it) with File > Open
. As of current, there has only been one bug that needs patching in the data.win for it to work offline:
- From the top left search bar, search for
gml_GlobalScript_FirebaseREST_HTTP_Failed_Firestore
, and it should appear when you expand the "Code" section. - Click on it, and a screen will come up saying something along the lines of "Building the cache of all decompiled functions". Hit the X in the top right to close this (as of the current UMT release, this will hang otherwise), and on the actual code, switch to the "Disassembly" at the top of the code pane, and then back to "Decompiled" to show the decompiled GML.
- Replace lines 9-24 with the following code (and indentation):
To test it works, click on the "Disassembly" tab, and if it doesn't error, it should have compiled properly.var list = ds_map_find_value(map, "default") if(!is_real(list)) errorMessage = "Firebase Error: Expecting ds_list index" else { if(ds_exists(list,ds_type_list)) if(ds_list_size(list)) map = ds_list_find_value(list, 0) if(ds_map_exists(map,"error")) if (ds_map_exists(ds_map_find_value(map, "error"), "message")) errorMessage = ds_map_find_value(ds_map_find_value(map, "error"), "message") }
- Repeat steps one to three, this time searching for
gml_GlobalScript_FirebaseREST_HTTP_Failed_Authentication
, and replacing lines 10-25.
Other functionality can be introduced by examining the code, and for touch controls, the documentation for Input 6.0.
Finally, we need to insert the modified data file into the .apk (MrPowerGamerBr also has a good tutorial on how to do this if this method fails, however you will need to adapt it to fit this.)
- Rename the modified
data.win
file togame.droid
. - Locate your Android buildtools, (e.g. which for me are installed under
%AppData%\Local\Android\Sdk\build-tools\33.0.3 (or whatever version you have installed)
). We will be using tools (zipalign, aapt and apksigner) from this folder, so each time you run a tool run it with the full path. - As the
wrapper.apk
is already compressed as part of the GMS2 build process, you will have to zipalign it again. To do this, put thewrapper.apk
file into the folder with thegame.droid
and other assets inside and run\path\to\zipalign.exe -f -v 4 wrapper.apk wrapper_a.apk
- Next to manually remove and add the game files, run the following commands:
\path\to\aapt.exe remove -f -v wrapper_a.apk assets/game.droid assets/options.ini assets/audiogroup1.dat assets/audiogroup2.dat \path\to\aapt.exe add -f -v wrapper_a.apk audiogroup1.dat audiogroup2.dat game.droid options.ini controllerblacklist.csv controllertypes.csv
- After that, zipalign the code again:
\path\to\zipalign.exe -f -p -v 4 wrapper_a.apk holocure.apk
- Finally, you will need to sign the .apk file, using the keystore file you generated earlier and your Alias Name and Alias Password:
\path\to\apksigner.bat sign --ks-key-alias #REPLACE THIS WITH YOUR ALIAS NAME# --ks \path\to\keystore.keystore holocure.apk
This should yield a holocure.apk
file in the same directory, which can then be installed on your phone.