{"id":33232638,"url":"https://github.com/decompals/ultralib","last_synced_at":"2026-01-25T08:17:07.250Z","repository":{"id":40331536,"uuid":"439775018","full_name":"decompals/ultralib","owner":"decompals","description":"Reverse engineering of libultra","archived":false,"fork":false,"pushed_at":"2025-08-24T08:29:18.000Z","size":2377,"stargazers_count":54,"open_issues_count":9,"forks_count":22,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-10-28T18:37:34.005Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decompals.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-19T04:31:16.000Z","updated_at":"2025-10-21T18:01:09.000Z","dependencies_parsed_at":"2023-01-31T10:30:32.770Z","dependency_job_id":"9527a413-7685-4d2b-a212-9d73c278e7a2","html_url":"https://github.com/decompals/ultralib","commit_stats":{"total_commits":70,"total_committers":10,"mean_commits":7.0,"dds":0.7285714285714286,"last_synced_commit":"1616482098e51d2e1906e198bf1bde14e8fc5e90"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/decompals/ultralib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decompals%2Fultralib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decompals%2Fultralib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decompals%2Fultralib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decompals%2Fultralib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decompals","download_url":"https://codeload.github.com/decompals/ultralib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decompals%2Fultralib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28748801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T07:58:02.558Z","status":"ssl_error","status_checked_at":"2026-01-25T07:57:57.153Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T18:00:23.572Z","updated_at":"2026-01-25T08:17:07.244Z","avatar_url":"https://github.com/decompals.png","language":"C","funding_links":[],"categories":["Tools and Libraries"],"sub_categories":["Development Libraries"],"readme":"# ultralib\n\nReverse engineering of libultra\n\n## Compatibility\n\nCurrently this repo supports building the following versions:\n\n| IDO / GCC  | `libultra.a` / `libgultra.a` | `libultra_d.a` / `libgultra_d.a` | `libultra_rom.a` / `libgultra_rom.a` |\n| -          | :-: | :-: | :-: |\n| 2.0E       | :x: / N/A | :x: / N/A | :x: / N/A |\n| 2.0F       | :x: / N/A | :x: / N/A | :x: / N/A |\n| 2.0G       | :x: / N/A | :x: / N/A | :x: / N/A |\n| 2.0H       | N/A / :x: | N/A / :x: | N/A / :x: |\n| 2.0I       | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |\n| 2.0I_patch | :x: / :x: | :x: / :x: | :x: / :x: |\n| 2.0J       | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |\n| 2.0K       | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |\n| 2.0L       | :heavy_check_mark: / :heavy_check_mark: | :x: / :heavy_check_mark: | :heavy_check_mark: / :heavy_check_mark: |\n| ique_v1.5  | :x: | :x: | :x: |\n\n## Preparation\n\nAfter cloning the repo, put a copy of the target archive(s) in their correct version folder in `base/`.\nFor example, if your target archive is libgultra_rom.a 2.0L then you'd place it in `base/L/`.\nIf you will be building without a target archive by setting `COMPARE=0` then you can skip this step.\n\n## Build dependencies\n\nThe build process requires the following packages:\n\n- build-essential\n- python3\n- binutils-mips-linux-gnu (libultra* only)\n- wget\n\nUnder Debian / Ubuntu you can install them with the following commands:\n\n```bash\nsudo apt update\nsudo apt install build-essential python3 wget\n```\n\nIf building any libultra you can install binutils-mips-linux-gnu with:\n\n```bash\nsudo apt install binutils-mips-linux-gnu\n```\n\n## Building\n\nRun make setup with the proper flags set followed by make with optional jobs.\nFor example, if building the 2.0L PC archive you'd do the following:\n\n- `make VERSION=L TARGET=libgultra_rom setup`\n- `make VERSION=L TARGET=libgultra_rom`\n\nEvery target flag combination requires separate a setup command.\n\nIf building without an target archive, than you can use `COMPARE=0` like the the following:\n\n- `make VERSION=L TARGET=libgultra_rom COMPARE=0 setup`\n- `make VERSION=L TARGET=libgultra_rom COMPARE=0`\n\nnote that running setup without `COMPARE=0` and no archive will result in an error,\nand only needs to be run once instead of per target flag combination\n\nIf building for use with modern linkers, than you can use `MODERN_LD=1` like the following:\n\n- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1 setup`\n- `make VERSION=L TARGET=libgultra_rom MODERN_LD=1`\n\nnote that running with `MODERN_LD=1` will automatically set `COMPARE=0`.\n\nIt is also possible to build archives using modern gcc by using `MODERN_GCC=1` like the following:\n\n- `make VERSION=L TARGET=libgultra_rom MODERN_GCC=1`\n\nnote that running with `MODERN_GCC=1` will automatically set `COMPARE=0` and `MODERN_LD=0`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecompals%2Fultralib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecompals%2Fultralib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecompals%2Fultralib/lists"}