Homebrew Homebrew game Slay the Spire 2 - Switch Port

ChanseyIsTheBest

Well-Known Member
Member
Joined
Aug 26, 2022
Messages
604
Reaction score
1,004
Trophies
1
Location
Australia
XP
2,268
Country
Australia

Slay the Spire 2 — Nintendo Switch port (Godot + NativeAOT wrapper)​

This is a native wrapper / loader that runs the original ARM64 Android build of Slay the Spire 2 on Switch homebrew. It contains no game code and no game assets.

Multiplayer/Mods isn't supported yet
Some enemy attacks have visual issues due to Mesa driver issues

Thanks to
dantico + @Nagaa for Vulkan driver
@delson_anr for all his AOT Godot work that made this port possible
Ekyso for making the original Slay the Spire 2 Android port which you need files from

https://github.com/ChanseyIsTheBest/sts2_nx

Make sure if you try this out you give the readme a good read because you need to build the AOT libsts2.so file yourself + need files from multiple sources.

2026082017214200-4C50C9E55CE6EFA8AC8E22437051E3C3.jpg


2026082610581000-4C50C9E55CE6EFA8AC8E22437051E3C3.jpg
 
@ChanseyIsTheBest
Wow, thank you!..

Unfortunately, can't find the file collect-assemblies.ps1 anywhere. It is not in a sts2_nx repo for right now..:( Please, take any hits where to find it! :)

The error message is:
.\scripts\collect-assemblies.ps1 : The term '.\scripts\collect-assemblies.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
 
@ChanseyIsTheBest
Wow, thank you!..

Unfortunately, can't find the file collect-assemblies.ps1 anywhere. It is not in a sts2_nx repo for right now..:( Please, take any hits where to find it! :)

The error message is:
Sorry that's super sloppy of me I've uploaded it now so it will work.
 
  • Love
Reactions: mathew77
@ChanseyIsTheBest
Thank you!.. The first script did good, but second one (Dockerfile.aot) in the end got that error (steps 1 — 5 were completely OK):
Code:
 => [2/7] RUN apt-get update && apt-get install -y --no-install-recommends         unzip curl ca-certificates py  11.8s
 => [3/7] RUN curl -fsSL -o /tmp/ndk.zip       "https://dl.google.com/android/repository/android-ndk-r27c-linux.  83.1s
 => [4/7] WORKDIR /src                                                                                             0.7s
 => [5/7] COPY . /src                                                                                              0.4s
 => ERROR [6/7] RUN sed -i 's/\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh                              0.2s
------
 > [6/7] RUN sed -i 's/\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh:
0.225 sed: can't read /src/scripts/*.sh: No such file or directory
------
Dockerfile.aot:49
--------------------
  48 |     # host checked the files out.
  49 | >>> RUN sed -i 's/\r$//' /src/scripts/*.sh \
  50 | >>>  && chmod +x /src/scripts/*.sh
  51 |
--------------------
ERROR: failed to build: failed to solve: process "/bin/sh -c sed -i 's/\\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh" did not complete successfully: exit code: 2
:(
 
Last edited by mathew77,
@ChanseyIsTheBest
Thank you!.. The first script did good, but second one (Dockerfile.aot) in the end got that error (steps 1 — 5 were completely OK):
Code:
 => [2/7] RUN apt-get update && apt-get install -y --no-install-recommends         unzip curl ca-certificates py  11.8s
 => [3/7] RUN curl -fsSL -o /tmp/ndk.zip       "https://dl.google.com/android/repository/android-ndk-r27c-linux.  83.1s
 => [4/7] WORKDIR /src                                                                                             0.7s
 => [5/7] COPY . /src                                                                                              0.4s
 => ERROR [6/7] RUN sed -i 's/\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh                              0.2s
------
 > [6/7] RUN sed -i 's/\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh:
0.225 sed: can't read /src/scripts/*.sh: No such file or directory
------
Dockerfile.aot:49
--------------------
  48 |     # host checked the files out.
  49 | >>> RUN sed -i 's/\r$//' /src/scripts/*.sh \
  50 | >>>  && chmod +x /src/scripts/*.sh
  51 |
--------------------
ERROR: failed to build: failed to solve: process "/bin/sh -c sed -i 's/\\r$//' /src/scripts/*.sh  && chmod +x /src/scripts/*.sh" did not complete successfully: exit code: 2
:(
Download the whole repo now I added missing stuff, really sorry about this.
Edit: added more missing stuff
Post automatically merged:

Download the whole repo now I added missing stuff, really sorry about this.
Edit: added more missing stuff
@mathew77 please let me know if you get it working :)
 
Last edited by ChanseyIsTheBest,
  • Like
Reactions: mathew77
I cannot download the APK from his repository, so I’m unable to extract the .so files. Version 0.2 crashes on launch. I have compiled the .so file myself, and its size is around 140 MB.
 
@ChanseyIsTheBest
All the compiler stages were clear, then textures got converted into ASTC successfully, but.. This error comes:

«The software was closed because an error occured»
test (2).jpg


Build log is OK:
Code:
Build succeeded with 97 warning(s) in 288.0s
  ILC output: /src/aot/bin/Release/net9.0/linux-bionic-arm64/publish/sts2_aot_root.so

== verifying output
file      : /out/libsts2.so
size      : 108,716,432 bytes
arch      : aarch64
type      : shared object
LOAD span : 125.9 MB   (wrapper DOTNET_SO_SLICE must exceed this)
mapped    : 103.7 MB of file, 0.0 MB debug/symbols
NEEDED    : libdl.so, libz.so, liblog.so, libm.so, libc.so
exports   : 8 defined dynamic symbols

  OK  godotsharp_game_main_init
  --  godotsharp_editor_main_init
  --  godotsharp_dllimport_resolver


RESULT: usable

Logfile /switch/sls2_nx/boot_stats.txt here:
Code:
build Aug 26 2026 14:40:39
   1225 ms  modules loaded + init arrays
   1232 ms  GodotLib.initialize
   1234 ms  main pack: FOUND
   1978 ms  GodotLib.setup (project+drivers)

Any advice?.. :)
 
Last edited by mathew77,
@ChanseyIsTheBest
All the compiler stages were clear, then textures got converted into ASTC successfully, but.. This error comes:

«The software was closed because an error occured»
View attachment 587862


Build log is OK:
Code:
Build succeeded with 97 warning(s) in 288.0s
  ILC output: /src/aot/bin/Release/net9.0/linux-bionic-arm64/publish/sts2_aot_root.so

== verifying output
file      : /out/libsts2.so
size      : 108,716,432 bytes
arch      : aarch64
type      : shared object
LOAD span : 125.9 MB   (wrapper DOTNET_SO_SLICE must exceed this)
mapped    : 103.7 MB of file, 0.0 MB debug/symbols
NEEDED    : libdl.so, libz.so, liblog.so, libm.so, libc.so
exports   : 8 defined dynamic symbols

  OK  godotsharp_game_main_init
  --  godotsharp_editor_main_init
  --  godotsharp_dllimport_resolver


RESULT: usable

Logfile /switch/sls2_nx/boot_stats.txt here:
Code:
build Aug 26 2026 14:40:39
   1225 ms  modules loaded + init arrays
   1232 ms  GodotLib.initialize
   1234 ms  main pack: FOUND
   1978 ms  GodotLib.setup (project+drivers)

Any advice?.. :)
Could you send me the layout of files on your SD card?
 
There is no latest APK available. The game keeps crashing. Now that I’ve updated the .so files, do I need to delete the save data and re‑convert?
 

Attachments

  • Image_1787796883709_322.png
    Image_1787796883709_322.png
    77.9 KB · Views: 1
Could you send me the layout of files on your SD card?
Take a look please, attached to this post.

Also found another logfile /switch/sls2_nx/save/logs/godot.log
Code:
Godot Engine v4.5.1.stable.mono.custom_build - https://godotengine.org
Vulkan 1.3.354 - Forward Mobile - Using Device #0: NVIDIA - NVIDIA Tegra X1 (GM20B) (NVK GM20B)

ERROR: Can't open dynamic library: libmonosgen-2.0.so. Error: .
   at: open_dynamic_library (platform/android/os_android.cpp:245)
 

Attachments

Last edited by mathew77,
It loads properly now, but there are still many bugs. Switching languages sometimes causes the game to freeze, and many entries in the language menu show up as xx .
 

Attachments

  • 17878125642078577152567951212175.jpg
    17878125642078577152567951212175.jpg
    805 KB · Views: 1
It loads properly now, but there are still many bugs. Switching languages sometimes causes the game to freeze, and many entries in the language menu show up as xx .
The languages may display like that on the list but they should work, Sorry about that. What bugs are you experiencing otherwise.
 
There is no audio, and the game is heavily stuttering. A diagonal line appears on the in‑game UI. The A and B buttons are reversed. The opening cutscene also has rendering issues, and screen flickering occurs occasionally.
The languages may display like that on the list but they should work, Sorry about that. What bugs are you experiencing otherwise.
 
https://github.com/ModinMobileSTS/Sts2MobileLauncher/releases/tag/v0.1.9
Post automatically merged:

Hey developer, I think this Android build version 0.19 should offer better usability.
Post automatically merged:

I hope this version will be useful for your porting work
I don't plan on rebasing to another version yet at least.
Post automatically merged:

OK for next version
- Fix title screen rendering (I think I know what it is not 100%)
- Enable touch screen support
- Investigate mysterious audio glitch and fix it that I can't trigger
- Make AOT compilation instructions consistent between users
 
Last edited by ChanseyIsTheBest,
  • Like
Reactions: mathew77

Site & Scene News

Popular threads in this forum