1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-10 19:20:13 +00:00

Various README updates (#671)

* Update README

* Add shields.io badges in the README

* Add a mention about shiftability in README

* Fix shield json command in JenkinsFile

* Improve progress badge formatting

Now it should show the percentage as 51.2% instead of 51.17%, and 100% instead of 100.00%
This commit is contained in:
Roman971 2021-02-11 13:10:05 +01:00 committed by GitHub
parent ec31611c0e
commit f95a5aec68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 36 deletions

5
Jenkinsfile vendored
View file

@ -37,8 +37,9 @@ pipeline {
branch 'master' branch 'master'
} }
steps { steps {
sh 'python3 progress.py -c >> /var/www/html/reports/progress.csv' sh 'python3 progress.py csv >> /var/www/html/reports/progress.csv'
sh 'python3 progress.py -mc >> /var/www/html/reports/progress_matching.csv' sh 'python3 progress.py csv -m >> /var/www/html/reports/progress_matching.csv'
sh 'python3 progress.py shield-json > /var/www/html/reports/progress_shield.json'
} }
} }
} }

View file

@ -1,11 +1,26 @@
# The Legend of Zelda: Ocarina of Time # The Legend of Zelda: Ocarina of Time
[![Build Status][jenkins-badge]][jenkins] [![Decompilation Progress][progress-badge]][progress] [![Contributors][contributors-badge]][contributors] [![Discord Channel][discord-badge]][discord]
[jenkins]: https://jenkins.zelda64.dev/job/OOT/job/master
[jenkins-badge]: https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins.zelda64.dev%2Fjob%2FOOT%2Fjob%2Fmaster
[progress]: https://zelda64.dev/progress.html
[progress-badge]: https://img.shields.io/endpoint?url=https://zelda64.dev/reports/progress_shield.json
[contributors]: https://github.com/zeldaret/oot/graphs/contributors
[contributors-badge]: https://img.shields.io/github/contributors/zeldaret/oot
[discord]: https://discord.zelda64.dev
[discord-badge]: https://img.shields.io/discord/688807550715560050?color=%237289DA&logo=discord&logoColor=%23FFFFFF
```diff ```diff
- WARNING! - - WARNING! -
The ROM this repository builds cannot be 'shifted', primarily due to some hardcoded pointers which have yet This repository is a work in progress, and while it can be used to make certain changes, it's still
to be dumped. Thus this repository is currently in an experimental and research phase and cannot yet be used constantly evolving. If you use it for modding purposes in its current state, please be aware that
traditionally as a source code base for general changes. the codebase can drastically change at any time. Also note that some parts of the ROM may not be
'shiftable' yet, so modifying them could be difficult at this point.
``` ```
This is a WIP decompilation of The Legend of Zelda: Ocarina of Time. This is a WIP decompilation of The Legend of Zelda: Ocarina of Time.
@ -16,12 +31,11 @@ It builds the following ROM:
* zelda_ocarina_mq_dbg.z64 `md5: f0b7f35375f9cc8ca1b2d59d78e35405` * zelda_ocarina_mq_dbg.z64 `md5: f0b7f35375f9cc8ca1b2d59d78e35405`
**Note:** This repository does not include any of the assets necessary to build the ROM. **Note: This repository does not include any of the assets necessary to build the ROM. A prior copy of the game is required to extract the needed assets.**
A prior copy of the game is required to extract the needed assets.
Website: <https://zelda64.dev/> **Website:** <https://zelda64.dev>
Discord: <https://discord.zelda64.dev> **Discord:** <https://discord.zelda64.dev>
## Installation ## Installation
@ -31,32 +45,19 @@ For Windows 10, install WSL and a distribution by following this
[Windows Subsystem for Linux Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10). [Windows Subsystem for Linux Installation Guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
We recommend using Debian or Ubuntu 18.04 Linux distributions. We recommend using Debian or Ubuntu 18.04 Linux distributions.
For older versions of Windows, install a Linux VM or refer to either [Docker](#Docker) or [Cygwin](#Cygwin) instructions. For older versions of Windows, install a Linux VM or refer to either [Cygwin](#Cygwin) or [Docker](#Docker) instructions.
### Cygwin
If you want to use Cygwin, you will need to:
- Download and install [Git Bash](https://git-scm.com/download/win).
- Download and install [Cygwin](https://cygwin.com).
- [Build and install mips-linux-binutils](docs/BUILDING_BINUTILS_CYGWIN.md).
Once mips-linux-binutils is installed you will need to install the following packages using Cygwin's installer:
- python3
- libiconv
- dos2unix
Now before you try to build anything, if you cloned the repository in windows you will need fix the file line endings:
```bash
dos2unix fixle.sh
./fixle.sh
```
### macOS ### macOS
For macOS, use homebrew to install the following dependencies: For macOS, use homebrew to install the following dependencies:
* coreutils * coreutils
* make * make
* python3 * python3
* md5sha1sum
You can install them with the following commands:
```bash ```bash
brew update brew update
brew install coreutils make python3 md5sha1sum brew install coreutils make python3 md5sha1sum
@ -66,7 +67,8 @@ You'll also need to [build and install mips-linux-binutils](docs/BUILDING_BINUTI
Going forward in this guide, please use `gmake` whenever you encounter a `make` command. Going forward in this guide, please use `gmake` whenever you encounter a `make` command.
The `make` that comes with MacOS behaves differently than GNU make and is incompatible with this project. The `make` that comes with MacOS behaves differently than GNU make and is incompatible with this project.
You should now be able to continue onto step 3.
You should now be able to continue from step 3 of the Linux instructions.
### Linux (Native or under WSL / VM) ### Linux (Native or under WSL / VM)
@ -89,7 +91,7 @@ sudo apt-get install git build-essential binutils-mips-linux-gnu python3
#### 2. Download and set up qemu-irix (optional) #### 2. Download and set up qemu-irix (optional)
Note: We are currently testing a recompiled version of the compiler that does not require qemu-irix. Note: We are currently testing a recompiled version of the compiler that does not require qemu-irix.
This step allows you to build with qemu-irix and the original compiler by adding `ORIG_COMPILER=1` to the `make` command in step 6, for example if you experience issues with the recompiled version. This step is optional and allows you to build with qemu-irix and the original compiler by adding `ORIG_COMPILER=1` to the `make` command in step 6, for example if you experience issues with the recompiled version.
Download qemu-irix from the Releases section in the repository. Place it at a location of your choosing. Download qemu-irix from the Releases section in the repository. Place it at a location of your choosing.
@ -149,13 +151,36 @@ md5sum: WARNING: 1 computed checksum did NOT match
This means that the built ROM isn't the same as the base one, so something went wrong or some part of the code doesn't match. This means that the built ROM isn't the same as the base one, so something went wrong or some part of the code doesn't match.
### Cygwin
If you want to use Cygwin, you will need to:
* Download and install [Git Bash](https://git-scm.com/download/win).
* Download and install [Cygwin](https://cygwin.com).
* [Build and install mips-linux-binutils](docs/BUILDING_BINUTILS_CYGWIN.md).
Once mips-linux-binutils is installed you will need to install the following packages using Cygwin's installer:
* libiconv
* dos2unix
* python3
Then you can continue from step 3 of the Linux instructions.
Note that, before building anything, you will need to run the following commands to fix line endings:
```bash
dos2unix fixle.sh
./fixle.sh
```
### Docker ### Docker
#### 1. Setup requirements #### 1. Setup requirements
To use Docker, you'll need either Docker Desktop or Docker Toolbox installed and setup based on your system. To use Docker, you'll need either Docker Desktop or Docker Toolbox installed and setup based on your system.
You'll also need to prepare a local version of the project with a copied base ROM (see Step 4 and 5 of the Linux instructions). You'll also need to prepare a local version of the project with a copied base ROM (see steps 3 and 4 of the Linux instructions).
#### 2. Create the docker image #### 2. Create the docker image
@ -175,7 +200,7 @@ docker run -it --rm --mount type=bind,source="$(pwd)",destination=/oot oot /bin/
#### 4. Setup and Build the ROM #### 4. Setup and Build the ROM
Once inside the container, you can follow Step 6 and 7 of the Linux instructions to setup and build the ROM, or run any other command you need. Once inside the container, you can follow steps 5 and 6 of the Linux instructions to setup and build the ROM, or run any other command you need.
## Contributing ## Contributing

View file

@ -1,16 +1,16 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse import argparse
import json
import csv import csv
import git import git
import os import os
import re import re
parser = argparse.ArgumentParser(description="Computes current progress throughout the whole project.") parser = argparse.ArgumentParser(description="Computes current progress throughout the whole project.")
parser.add_argument("format", nargs="?", default="text", choices=["text", "csv", "shield-json"])
parser.add_argument("-m", "--matching", dest='matching', action='store_true', parser.add_argument("-m", "--matching", dest='matching', action='store_true',
help="Output matching progress instead of decompilation progress") help="Output matching progress instead of decompilation progress")
parser.add_argument("-c", "--csv", dest="csv", action="store_true",
help="Output results in CSV format")
args = parser.parse_args() args = parser.parse_args()
NON_MATCHING_PATTERN = r"#ifdef\s+NON_MATCHING.*?#pragma\s+GLOBAL_ASM\s*\(\s*\"(.*?)\"\s*\).*?#endif" NON_MATCHING_PATTERN = r"#ifdef\s+NON_MATCHING.*?#pragma\s+GLOBAL_ASM\s*\(\s*\"(.*?)\"\s*\).*?#endif"
@ -114,14 +114,22 @@ ovlPct = 100 * ovl / ovlSize
compiled_bytes = total compiled_bytes = total
bytesPerHeartPiece = compiled_bytes / 80 bytesPerHeartPiece = compiled_bytes / 80
if args.csv: if args.format == 'csv':
version = 1 version = 1
git_object = git.Repo().head.object git_object = git.Repo().head.object
timestamp = str(git_object.committed_date) timestamp = str(git_object.committed_date)
git_hash = git_object.hexsha git_hash = git_object.hexsha
csv_list = [str(version), timestamp, git_hash, str(code), str(codeSize), str(boot), str(bootSize), str(ovl), str(ovlSize), str(src), str(asm), str(len(nonMatchingFunctions))] csv_list = [str(version), timestamp, git_hash, str(code), str(codeSize), str(boot), str(bootSize), str(ovl), str(ovlSize), str(src), str(asm), str(len(nonMatchingFunctions))]
print(",".join(csv_list)) print(",".join(csv_list))
else: elif args.format == 'shield-json':
# https://shields.io/endpoint
print(json.dumps({
"schemaVersion": 1,
"label": "progress",
"message": f"{srcPct:.3g}%",
"color": 'yellow',
}))
elif args.format == 'text':
adjective = "decompiled" if not args.matching else "matched" adjective = "decompiled" if not args.matching else "matched"
print(str(total) + " total bytes of decompilable code\n") print(str(total) + " total bytes of decompilable code\n")
@ -138,3 +146,5 @@ else:
print("You have " + str(heartPieces) + "/80 heart pieces and " + str(rupees) + " rupee(s).\n") print("You have " + str(heartPieces) + "/80 heart pieces and " + str(rupees) + " rupee(s).\n")
else: else:
print("You have " + str(heartPieces) + "/80 heart pieces.\n") print("You have " + str(heartPieces) + "/80 heart pieces.\n")
else:
print("Unknown format argument: " + args.format)