Merge pull request #8 from encounter/ci

Add CI workflow and progress upload
This commit is contained in:
robojumper
2024-06-19 21:45:13 +02:00
committed by GitHub
11 changed files with 728 additions and 660 deletions
+57
View File
@@ -0,0 +1,57 @@
name: Build
on:
push:
pull_request:
jobs:
build:
container: ghcr.io/zeldaret/ss-build:main
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: [SOUE01]
steps:
# Checkout the repository (shallow clone)
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
# Set Git config
- name: Git config
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
# Copy the original files to the workspace
- name: Prepare
run: cp -R /orig .
# Build the project
- name: Build
run: |
python configure.py --map --version ${{ matrix.version }} \
--binutils /binutils --compilers /compilers
ninja all_source build/${{ matrix.version }}/progress.json
# Upload progress if we're on the main branch
- name: Upload progress
if: github.ref == 'refs/heads/main'
continue-on-error: true
env:
PROGRESS_SLUG: ss
PROGRESS_API_KEY: ${{ secrets.PROGRESS_API_KEY }}
run: |
python tools/upload_progress.py -b https://progress.decomp.club/ \
-p $PROGRESS_SLUG -v ${{ matrix.version }} \
build/${{ matrix.version }}/progress.json
# Upload map files
- name: Upload map
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.version }}_maps
path: build/${{ matrix.version }}/**/*.MAP
+19 -9
View File
@@ -1,4 +1,14 @@
# The Legend of Zelda: Skyward Sword
The Legend of Zelda: Skyward Sword
[![Build Status]][actions] ![Progress] ![DOL Progress] ![RELs Progress] [![Discord Badge]][discord]
=============
[Build Status]: https://github.com/zeldaret/ss/actions/workflows/build.yml/badge.svg
[actions]: https://github.com/zeldaret/ss/actions/workflows/build.yml
[Progress]: https://img.shields.io/endpoint?label=Code&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fss%2FSOUE01%2Fall%2F%3Fmode%3Dshield%26measure%3Dcode
[DOL Progress]: https://img.shields.io/endpoint?label=DOL&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fss%2FSOUE01%2Fdol%2F%3Fmode%3Dshield%26measure%3Dcode
[RELs Progress]: https://img.shields.io/endpoint?label=RELs&url=https%3A%2F%2Fprogress.decomp.club%2Fdata%2Fss%2FSOUE01%2Fmodules%2F%3Fmode%3Dshield%26measure%3Dcode
[Discord Badge]: https://img.shields.io/discord/688807550715560050?color=%237289DA&logo=discord&logoColor=%23FFFFFF
[discord]: https://discord.zelda64.dev
This repository contains a work-in-progress decompilation of *The Legend of Zelda: Skyward Sword*
for the Nintendo Wii system.
@@ -55,19 +65,19 @@ unquarantine it using:
- Clone the repository:
```
git clone https://github.com/lepelog/ss-dtk.git
git clone https://github.com/zeldaret/ss.git
```
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your `SOUE01` game ISO
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your `SOUE01` game ISO to `orig/SOUE01`.
- Right-click The Legend of Zelda: Skyward Sword game in Dolphin and select `Properties` to open
a new window containing various game properties
![The Legend of Zelda: Skyward Sword is selected in the Dolphin Emulator. The "right-click" context menu has been opened and the "Properties" option is highlighted.](assets/dolphin-game-properties.png)
- Select the `Filesystem` tab at the top of this new window (it should be the rightmost tab)
- Right-click the topmost entry labelled `Disc` and select `Extract Entire Disk`
![The Legend of Zelda: Skyward Sword's properties window in Dolphin with the "Filesystem" tab open. The entry named "Disc" is selected and the "right-click" context menu has been opened with the "Extract Entire Disc..." option highlighted.](assets/dolphin-extract-entire-disc.png)
- Once this has completed, copy the following files into the the `orig/SOUE01` folder of this
project. The rest can be deleted to save space.
- `DATA/sys/main.dol`
- `DATA/files/rels.arc`
- Right-click the entry labelled `Data Partition` and select `Extract Entire Partition...`
![The Legend of Zelda: Skyward Sword's properties window in Dolphin with the "Filesystem" tab open. The entry named "Data Partition" is selected and the "right-click" context menu has been opened with the "Extract Entire Partition..." option highlighted.](assets/dolphin-extract-entire-partition.png)
- Extract the partition to `orig/SOUE01`
- To save space, the only necessary files are the following. Any others can be deleted:
- `sys/main.dol`
- `files/rels.arc`
- Run the configure script:
```
python configure.py
Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

+640 -640
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -127,7 +127,7 @@ config.wibo_tag = "0.6.11"
# Project
config.config_path = Path("config") / config.version / "config.yml"
config.check_sha_path = Path("orig") / f"{config.version}.sha1"
config.check_sha_path = Path("config") / config.version / "build.sha1"
config.linker_version = "Wii/1.6"
config.ldflags = [
"-fp hardware",
+6 -5
View File
@@ -1,13 +1,14 @@
# Necessary files
In this folder, place the extracted `main.dol` and `rels.arc` files.
In this folder, place the extracted `sys/main.dol` and `files/rels.arc` files.
Your folder structure should look like this:
```
── orig
├── SOEU01.sha1
── orig
└── SOEU01
├── main.dol
├── rels.arc
├── sys
│ └── main.dol
├── files
│ └── rels.arc
└── README.md
```
+2 -2
View File
@@ -110,8 +110,8 @@ void dAcTWoodArea_c::executeState_Wait() {
if (dist.x * dist.x + dist.z * dist.z < attachRadius) {
bool someEffectThing = subtype != 1 ? (params & 0xF) != 0 ? false : true : true;
if (someEffectThing) {
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING[8],
&mVec3_c(position.x, position.y + getAttachHeight(), position.z), nullptr, 0, 0, 0, 0, 0);
mVec3_c tmp(position.x, position.y + getAttachHeight(), position.z);
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING[8], &tmp, nullptr, 0, 0, 0, 0, 0);
}
dropItems();
}
+2 -2
View File
@@ -370,8 +370,8 @@ bool dAcBase_c::getDistanceAndAngleToActor(dAcBase_c *actor, f32 distThresh, s16
angleToActorY = targetAngleY(&position, &actor->position);
angleToActorX = targetAngleX(&position, &actor->position);
if ((distSquared <= distThresh * distThresh) && (doAbs(s32(rotation.y - angleToActorY)) <= yAngle) &&
(doAbs(s32(rotation.x - angleToActorX)) <= xAngle)) {
if ((distSquared <= distThresh * distThresh) && (doAbs(s32(rotation.y.mVal - angleToActorY)) <= yAngle) &&
(doAbs(s32(rotation.x.mVal - angleToActorX)) <= xAngle)) {
isWithinRange = true;
}
}
+1 -1
View File
@@ -60,7 +60,7 @@ bool spawnSpecialDropItem(SpecialItemDropMgr *mgr, int specialItemId, int roomid
s16 currentRot;
s16 tempOther;
u16 itemid = SPECIAL_ITEM_ARRAY[unk];
mAng3_c itemRot = {0, 0, 0};
mAng3_c itemRot(0, 0, 0);
if (subtype == 2 || subtype == 6) {
currentRot = *rot;