You've already forked ultrasm64-2
mirror of
https://github.com/HackerN64/ultrasm64-2.git
synced 2026-01-21 10:38:08 -08:00
79 lines
2.9 KiB
Markdown
79 lines
2.9 KiB
Markdown
|
|
# 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
|
||
|
|
|
||
|
|
If building for use with modern linkers, than you can use `MODERN_LD=1` like the following:
|
||
|
|
|
||
|
|
- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1 setup`
|
||
|
|
- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1`
|
||
|
|
|
||
|
|
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`
|
||
|
|
|
||
|
|
note that running with `MODERN_GCC=1` will automatically set `COMPARE=0` and `MODERN_LD=0`.
|