Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge open-source IPL3 to trunk #617

Merged
merged 8 commits into from
Oct 13, 2024
Merged

Merge open-source IPL3 to trunk #617

merged 8 commits into from
Oct 13, 2024

Conversation

rasky
Copy link
Collaborator

@rasky rasky commented Oct 11, 2024

This commit series finally merges the new open-source IPL3 to trunk, using it by default for all ROMs.

The IPL3 underwent large scale testing in all preview-based ROMs, on many different consoles, including iQue. It had several rounds of improvements and bug fixes. It now seems very stable. Currently there are no known bugs.

It boots normal homebrew ROMs in less than 100 ms (more than 5 times faster than Nintendo's IPL3), and support compressed code/data, using the same battle-tested algorithms of the asset library. It also has no minimum ROM size requirement, so many small examples and tests start from ~150 KiB.

Please refer to boot/README.md for technical information on the new IPL3.

This commit just imports the current version of our open source IPL3
into trunk. Next commits will modify libdragon to start using it.
 * Modify n64tool to insert open-source IPL3 into ROM, using a binary
   copy embedded into it. --header is still supported but not mandatory
 * Remove committed header from the repository.
 * Move inthandlers to its own seperate ELF sections, so that we don't
   need to manually relocate them at entrypoint.
 * Greatly simplify entrypoint. It just needs to read boot flags now,
   most of the setup is done by IPL3 now.
 * Modify rompack to search for the TOC instead of assuming a fixed
   position.
 * Update n64.mk as required
Compressed ELFs (in a custom format) are supported by the new IPL3.
This tool generates such ELFs, using the same compression algorithms
supported by the asset library.

Compression is activated by default at level 1 in n64.mk.
Avoid removing APIs from the stable branch, even though these were
hardly used by anyone.
@anacierdem
Copy link
Collaborator

Closes #158

@rasky rasky merged commit 85f80e8 into DragonMinded:trunk Oct 13, 2024
4 checks passed
@rasky rasky deleted the merge_ipl3 branch October 13, 2024 18:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants