Files

79 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

# ultralib
Reverse engineering of libultra
## Compatibility
Currently this repo supports building the following versions:
| IDO / GCC | `libultra.a` / `libgultra.a` | `libultra_d.a` / `libgultra_d.a` | `libultra_rom.a` / `libgultra_rom.a` |
| - | :-: | :-: | :-: |
| 2.0E | :x: / N/A | :x: / N/A | :x: / N/A |
| 2.0F | :x: / N/A | :x: / N/A | :x: / N/A |
| 2.0G | :x: / N/A | :x: / N/A | :x: / N/A |
| 2.0H | N/A / :x: | N/A / :x: | N/A / :x: |
| 2.0I | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |
| 2.0I_patch | :x: / :x: | :x: / :x: | :x: / :x: |
| 2.0J | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |
| 2.0K | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |
| 2.0L | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |
| ique_v1.5 | :x: | :x: | :x: |
## Preparation
After cloning the repo, put a copy of the target archive(s) in their correct version folder in `base/`.
For example, if your target archive is libgultra_rom.a 2.0L then you'd place it in `base/L/`.
If you will be building without a target archive by setting `COMPARE=0` then you can skip this step.
## Build dependencies
The build process requires the following packages:
- build-essential
- python3
- binutils-mips-linux-gnu (libultra* only)
Under Debian / Ubunutu you can install them with the following commands:
```bash
sudo apt update
sudo apt install build-essential python3
```
If building any libultra you can install binutils-mips-linux-gnu with:
```bash
sudo apt install binutils-mips-linux-gnu
```
## Building
Run make setup with the proper flags set followed by make with optional jobs.
For example, if building the 2.0L PC archive you'd do the following:
- `make VERSION=L TARGET=libgultra_rom setup`
- `make VERSION=L TARGET=libgultra_rom`
Every target flag combination requires separate a setup command.
If building without an target archive, than you can use `COMPARE=0` like the the following:
- `make VERSION=L TARGET=libgultra_rom COMPARE=0 setup`
- `make VERSION=L TARGET=libgultra_rom COMPARE=0`
note that running setup without `COMPARE=0` and no archive will result in an error,
and only needs to be run once instead of per target flag combination
2024-11-28 08:40:28 -08:00
If building for use with modern linkers, than you can use `MODERN_LD=1` like the following:
2024-11-28 08:40:28 -08:00
- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1 setup`
- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1`
2024-11-28 08:40:28 -08:00
note that running with `MODERN_LD=1` will automatically set `COMPARE=0`.
It is also possible to build archives using modern gcc by using `MODERN_GCC=1` like the following:
- `make VERSION=L TARGET=libgultra_rom MODERN_GCC=1`
2024-11-28 08:40:28 -08:00
note that running with `MODERN_GCC=1` will automatically set `COMPARE=0` and `MODERN_LD=0`.