Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
96fdd7c
delete libultraship submodule & add android folder
izzy2lost Jul 20, 2025
820f2ad
Add my libultraship version
izzy2lost Jul 20, 2025
e76a8c7
update yamls
izzy2lost Jul 20, 2025
6199fce
add build android to workflow
izzy2lost Jul 20, 2025
0659600
some android changes
izzy2lost Jul 20, 2025
60a6036
bzero doesn't work on android
izzy2lost Jul 20, 2025
21557d2
hopefully finds sdl2 net on android
izzy2lost Jul 20, 2025
9a0b85e
Change sdl net location to match android build
izzy2lost Jul 20, 2025
dc5b207
change sdl net include for android
izzy2lost Jul 20, 2025
a3d812d
more bzero change for android
izzy2lost Jul 20, 2025
e7c2f96
Get rid of overlapping o2r popup on Android
izzy2lost Jul 20, 2025
42f57aa
Revert change. Broke something
izzy2lost Jul 20, 2025
a64a8be
Add step to copy yamls folder to app
izzy2lost Jul 20, 2025
2384419
Delete unneeded duplicate yamls folder
izzy2lost Jul 20, 2025
ef40061
Hopefully back button opens menu
izzy2lost Jul 21, 2025
e4eae8e
Make sure mods folder exists
izzy2lost Jul 21, 2025
8ac2f89
Get rid of popup on Android
izzy2lost Jul 21, 2025
0110336
Merge branch 'HarbourMasters:main' into main
izzy2lost Jul 21, 2025
948c5dc
Update build.gradle
izzy2lost Jul 21, 2025
4349db1
Add yamls to build.gradle
izzy2lost Jul 21, 2025
b512087
Erase copy yamls - Now done in gradle
izzy2lost Jul 21, 2025
06137bc
Delay 32 bit work to make sure yamls in app
izzy2lost Jul 21, 2025
ec3ef8e
#2 attempt for yamls *not even needed yet*
izzy2lost Jul 21, 2025
54f5dd8
Forget yamls in gradle for now
izzy2lost Jul 21, 2025
4362783
Merge branch 'HarbourMasters:main' into main
izzy2lost Jul 21, 2025
92b8dfd
Fix compile error on Android - audio
izzy2lost Jul 21, 2025
e5516ac
Get rid of unused depends
izzy2lost Jul 21, 2025
1529376
Sdl net not found now??
izzy2lost Jul 21, 2025
d26b2b2
Maybe fix sdl net error
izzy2lost Jul 21, 2025
9d3277e
Update android.cmake
izzy2lost Jul 21, 2025
a924942
User error
izzy2lost Jul 21, 2025
043afb8
Omg sdl
izzy2lost Jul 21, 2025
d890498
Update android.cmake
izzy2lost Jul 21, 2025
b899c2d
Update android.cmake
izzy2lost Jul 21, 2025
00def58
Revert back to working state
izzy2lost Jul 22, 2025
2a32eb1
Change for 32 bit
izzy2lost Jul 23, 2025
47749d2
Try building 32 bit
izzy2lost Jul 23, 2025
d19268e
32 bit fix yoshi valley
izzy2lost Jul 23, 2025
f58198b
32 bit fix rainbow road
izzy2lost Jul 23, 2025
f9ac3ee
32 bit fix sherbet land
izzy2lost Jul 23, 2025
d7af7c5
32 bit fix railroad crossing
izzy2lost Jul 23, 2025
8d62dc6
Build universal apk
izzy2lost Jul 23, 2025
4536a1d
Merge branch 'HarbourMasters:main' into main
izzy2lost Jul 23, 2025
c730762
fix need for restart after o2r selected
izzy2lost Jul 24, 2025
b1f8e21
try #2 to not have to restart app
izzy2lost Jul 24, 2025
696d6fe
3rd time is a charm, i hope
izzy2lost Jul 24, 2025
9d019f5
trying again to fix crash
izzy2lost Jul 24, 2025
9ae0025
Fix switch build
izzy2lost Jul 24, 2025
fea12e6
Update to official workflow
izzy2lost Jul 25, 2025
28cbca3
Create android-compile.yml
izzy2lost Jul 25, 2025
142a8d2
Update android-compile.yml
izzy2lost Jul 25, 2025
997a40f
Try getting rid of unneeded depends
izzy2lost Jul 25, 2025
a4b3ac0
Try again makes no sense why errors
izzy2lost Jul 25, 2025
be82468
Guess I had it wrong this whole time 🤔
izzy2lost Jul 25, 2025
5fd63cb
Just work darn it
izzy2lost Jul 25, 2025
ee66620
Update CMakeLists.txt
izzy2lost Jul 25, 2025
c82553f
Cmake confuses me sometimes
izzy2lost Jul 25, 2025
0578fd2
revert some changes
izzy2lost Jul 25, 2025
5903d6a
Should work again
izzy2lost Jul 25, 2025
aea7a1a
Try to make menu button
izzy2lost Jul 26, 2025
9dfa646
Get rid of depends I don't need.
izzy2lost Jul 26, 2025
d206f5f
try to get menu button to actually bring up menu
izzy2lost Jul 26, 2025
f6a0204
Merge branch 'main' of https://github.com/izzy2lost/SpaghettiKart
izzy2lost Jul 26, 2025
926a5ad
can now navigate menu with touch
izzy2lost Jul 26, 2025
a3076b9
Merge remote-tracking branch 'upstream/main'
izzy2lost Jul 26, 2025
4dc0ce1
code cleanup hope to fix
izzy2lost Jul 26, 2025
cbc63e5
revert touchandler code
izzy2lost Jul 26, 2025
7ff7872
fix crash or debug it
izzy2lost Jul 26, 2025
9ba01af
fix crash please
izzy2lost Jul 27, 2025
2b27bd1
Merge branch 'HarbourMasters:main' into main
izzy2lost Jul 27, 2025
1771cbb
another attempt to fix crash
izzy2lost Jul 27, 2025
6ea80b3
Merge branch 'main' of https://github.com/izzy2lost/SpaghettiKart
izzy2lost Jul 27, 2025
49cfc2c
revert bad change
izzy2lost Jul 27, 2025
439b1a8
keep on trying
izzy2lost Jul 27, 2025
4058766
revert changes back to old working state
izzy2lost Jul 27, 2025
ca4be88
idk wrong placement
izzy2lost Jul 28, 2025
f1d2613
Merge branch 'HarbourMasters:main' into main
izzy2lost Jul 29, 2025
2876ddd
Test hopefully fix other platforms build
izzy2lost Jul 29, 2025
34947d8
Maybe fix switch build on my repo
izzy2lost Jul 29, 2025
6cf533d
Merge branch 'HarbourMasters:main' into main
izzy2lost Aug 2, 2025
5334a75
Update android-compile.yml
izzy2lost Aug 4, 2025
77193db
Update android-compile.yml
izzy2lost Aug 4, 2025
b3e4b53
Update build.gradle
izzy2lost Aug 4, 2025
1019eae
Merge pull request #1 from izzy2lost/android-dev
izzy2lost Aug 4, 2025
7b58844
Update android.cmake
izzy2lost Aug 4, 2025
bc868fb
Update android.cmake
izzy2lost Aug 4, 2025
f48cd88
Merge branch 'HarbourMasters:main' into main
izzy2lost Aug 8, 2025
290519c
updated icons
izzy2lost Aug 11, 2025
ed17c48
option to pick any folder for user folder
izzy2lost Aug 11, 2025
30acdb8
fix compile error
izzy2lost Aug 11, 2025
e355501
multiple fixes
izzy2lost Aug 11, 2025
0de97a7
i hope this fixes it
izzy2lost Aug 11, 2025
f175449
getting close
izzy2lost Aug 11, 2025
4ccae30
i think this is the one
izzy2lost Aug 11, 2025
905467f
wth lets try
izzy2lost Aug 11, 2025
5b266df
we can do it
izzy2lost Aug 12, 2025
4a72a82
lfg!
izzy2lost Aug 12, 2025
dcd0431
make SAF compatible
izzy2lost Aug 12, 2025
febde31
just do it
izzy2lost Aug 12, 2025
47bfeee
try again be SAF
izzy2lost Aug 12, 2025
a116c90
wasnt so SAF
izzy2lost Aug 12, 2025
bfe9eb8
go go go
izzy2lost Aug 12, 2025
823fe1d
Update android-compile.yml
izzy2lost Aug 12, 2025
ca6a47a
imports
izzy2lost Aug 12, 2025
f31008a
Merge branch 'main' of https://github.com/izzy2lost/SpaghettiKart
izzy2lost Aug 12, 2025
b5601e3
lets do this SAFLY
izzy2lost Aug 12, 2025
39fd120
dooolittle
izzy2lost Aug 12, 2025
7b52e9c
we out here doing it
izzy2lost Aug 12, 2025
bce0281
pretty it up alittle bit
izzy2lost Aug 12, 2025
46dce2a
Create 777.txt
izzy2lost Aug 12, 2025
c06a43b
Delete android/app/src/main/assets/mods/777.txt
izzy2lost Aug 12, 2025
5d2e7dc
Create place_mods_here.txt
izzy2lost Aug 12, 2025
7eb6a4a
change background color of popups
izzy2lost Aug 12, 2025
9b87c37
Merge branch 'main' of https://github.com/izzy2lost/SpaghettiKart
izzy2lost Aug 12, 2025
489ab5f
getting ready for release
izzy2lost Aug 12, 2025
1a7d402
fix key problem
izzy2lost Aug 12, 2025
be1917e
make text more readable
izzy2lost Aug 12, 2025
fd6cef8
make it even easier to read
izzy2lost Aug 12, 2025
145dd40
Update styles.xml
izzy2lost Aug 12, 2025
3eb849c
32bit and 64bit in one app
izzy2lost Aug 12, 2025
a6c3004
Update release.yml
izzy2lost Aug 15, 2025
ccfd00a
Update release.yml
izzy2lost Aug 15, 2025
671da72
Update release.yml
izzy2lost Aug 15, 2025
a09d7c2
Update release.yml
izzy2lost Aug 15, 2025
7de3e7a
Update android-compile.yml
izzy2lost Aug 15, 2025
6732eaa
Update release.yml
izzy2lost Aug 15, 2025
1c2d3c4
Update android-compile.yml
izzy2lost Aug 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
140 changes: 140 additions & 0 deletions .github/workflows/android-compile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Android Build

on:
workflow_dispatch:
inputs:
build_type:
description: 'Build type'
required: true
default: 'debug'
type: choice
options:
- debug
- release
push:
branches: [ main ]
paths:
- 'android/**'
- 'src/**'
- 'CMakeLists.txt'
pull_request:
branches: [ main ]
paths:
- 'android/**'
- 'src/**'
- 'CMakeLists.txt'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
generate-port-o2r:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ runner.os }}-o2r-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-ccache-${{ github.ref }}
${{ runner.os }}-o2r-ccache-
- name: Cache build folders
uses: actions/cache@v4
with:
key: ${{ runner.os }}-o2r-build-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-build-${{ github.ref }}
${{ runner.os }}-o2r-build-
path: |
torch/cmake-build-release
- name: Generate spaghetti.o2r
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
make -C torch type=release -j3
torch/cmake-build-release/torch pack assets spaghetti.o2r o2r
- uses: actions/upload-artifact@v4
with:
name: spaghetti.o2r
path: spaghetti.o2r
retention-days: 1

build-android:
needs: generate-port-o2r
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: sudo apt-get install -y ninja-build
- name: Download spaghetti.o2r
uses: actions/download-artifact@v4
with:
name: spaghetti.o2r
path: android/app/src/main/assets
- name: Configure Gradle permissions
run: chmod +x android/gradlew

# Set up signing for release builds
- name: Setup signing keystore (Release only)
if: github.event.inputs.build_type == 'release' || github.ref == 'refs/heads/main'
run: |
echo "$KEYSTORE_BASE64" | base64 -d > android/app/release.keystore
if [ ! -f android/app/release.keystore ]; then
echo "Failed to create keystore file"
exit 1
fi
echo "Keystore file created successfully:"
ls -la android/app/release.keystore
file android/app/release.keystore
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}

# Build Debug APK
- name: Build Debug APK
if: github.event.inputs.build_type == 'debug' || github.event.inputs.build_type == ''
run: |
cd android/
./gradlew assembleDebug -P elfBuildType=RelWithDebInfo
mv app/build/outputs/apk/debug/app-debug.apk ../spaghettikart-debug.apk

# Build Release APK (signed)
- name: Build Release APK
if: github.event.inputs.build_type == 'release' || github.ref == 'refs/heads/main'
run: |
cd android/
./gradlew assembleRelease -P elfBuildType=Release
mv app/build/outputs/apk/release/app-release.apk ../spaghettikart-release.apk
env:
KEYSTORE_FILE: release.keystore
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

# Upload Debug APK
- name: Upload Debug APK
if: github.event.inputs.build_type == 'debug' || github.event.inputs.build_type == ''
uses: actions/upload-artifact@v4
with:
name: spaghetti-kart-debug-apk
path: spaghettikart-debug.apk

# Upload Release APK
- name: Upload Release APK
if: github.event.inputs.build_type == 'release' || github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v4
with:
name: spaghetti-kart-release-apk
path: spaghettikart-release.apk

# Clean up keystore
- name: Clean up keystore
if: always()
run: rm -f android/app/release.keystore

1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ jobs:
submodules: recursive
- name: Install dependencies
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
sudo apt-get update
sudo apt-get install -y ninja-build
sudo apt-get remove -y cmake
Expand Down
174 changes: 174 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Create Android Release

on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., 1.0.1)'
required: true
default: '1.0.0'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
generate-port-o2r:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y gcc g++ git cmake ninja-build lsb-release

- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ runner.os }}-o2r-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-ccache-${{ github.ref }}
${{ runner.os }}-o2r-ccache-

- name: Cache build folders
uses: actions/cache@v4
with:
key: ${{ runner.os }}-o2r-build-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-build-${{ github.ref }}
${{ runner.os }}-o2r-build-
path: |
torch/cmake-build-release

- name: Generate spaghetti.o2r
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
make -C torch type=release -j3
torch/cmake-build-release/torch pack assets spaghetti.o2r o2r

- uses: actions/upload-artifact@v4
with:
name: spaghetti.o2r
path: spaghetti.o2r
retention-days: 1

build-android:
needs: generate-port-o2r
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Install build tools
run: sudo apt-get update && sudo apt-get install -y ninja-build

- name: Download spaghetti.o2r
uses: actions/download-artifact@v4
with:
name: spaghetti.o2r
path: android/app/src/main/assets

- name: Configure Gradle permissions
run: chmod +x android/gradlew

- name: Update version in build.gradle
run: |
sed -i "s/versionName \".*\"/versionName \"${{ github.event.inputs.version }}\"/" android/app/build.gradle
CURRENT_CODE=$(grep "versionCode" android/app/build.gradle | sed 's/.*versionCode \([0-9]*\).*/\1/')
NEW_CODE=$((CURRENT_CODE + 1))
sed -i "s/versionCode $CURRENT_CODE/versionCode $NEW_CODE/" android/app/build.gradle
echo "Updated to version ${{ github.event.inputs.version }} with code $NEW_CODE"

- name: Setup signing keystore
run: |
echo "$KEYSTORE_BASE64" | base64 -d > android/app/release.keystore
test -f android/app/release.keystore || (echo "Failed to create keystore file" && exit 1)
echo "Keystore file created successfully:"
ls -la android/app/release.keystore
file android/app/release.keystore
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}

- name: Build Release APK
run: |
cd android/
./gradlew --no-daemon assembleRelease -P elfBuildType=Release
mv app/build/outputs/apk/release/app-release.apk ../spaghettikart-release.apk
env:
KEYSTORE_FILE: release.keystore
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}

- name: Upload Release APK (artifact for next job)
uses: actions/upload-artifact@v4
with:
name: spaghettikart-release-apk
path: spaghettikart-release.apk
retention-days: 1

create-release:
needs: build-android
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download Release APK
uses: actions/download-artifact@v4
with:
name: spaghettikart-release-apk
path: .

- name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.version }}
name: 🏎️ Spaghetti Kart v${{ github.event.inputs.version }}
body: |
## 🏎️ Spaghetti Kart v${{ github.event.inputs.version }}

### 📱 Android Release

**✨ Highlights:**
- ⚡ Optimized release build with R8 code shrinking
- 📦 Reduced APK size and improved performance
- 🗂️ Enhanced file management with SAF integration

### 🛠️ Changes
- 🧭 Improved folder selection with SAF (Storage Access Framework)
- 🔁 Automatic mods syncing from user folder
- 🧊 Better UI with rounded dialogs
- 🔥 Torch app integration for easy mk64.o2r creation

### 📥 Installation
1. ⬇️ Download the APK below
2. 📲 Install on your Android device
3. 🔓 Enable "Install from unknown sources" in Android settings
4. 📁 Select a folder for your game files
5. 💾 Add your mk64.o2r file (use Torch app to create from ROM)
6. 🎮 Enjoy!

- name: Upload Release APK
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./spaghettikart-release.apk
asset_name: SpaghettiKart-v${{ github.event.inputs.version }}-release.apk
asset_content_type: application/vnd.android.package-archive

3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
[submodule "torch"]
path = torch
url = https://github.com/HarbourMasters/Torch
[submodule "libultraship"]
path = libultraship
url = https://github.com/Kenix3/libultraship
[submodule "lib/wasm-micro-runtime"]
path = lib/wasm-micro-runtime
url = https://github.com/bytecodealliance/wasm-micro-runtime.git
Expand Down
Loading