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

Instrument Set Table Expansion #162

Open
wants to merge 14 commits into
base: dev
Choose a base branch
from

Conversation

Rebbacus
Copy link

Music makers don't have to fuss so hard with packing instruments into existing banks. If they can't work around existing instrument sets, bank 0x28 can be chosen.
Modified banks already claimed by shuffled MMRSs (not just for bank 0x28) get placed into new entries.

Doesn't check if so many banks get added to rom that they spill over into whatever is past audioseq/audiotable. I'm not sure how to do that, but not too worried about it. I want to wait and see if music makers/plandos will actually use so much space casually like that.

@ZoeyZolotova
Copy link
Owner

Looks great! I did a quick test on Dolphin too and it seemed to be working just fine.

Do you happen to have the ASM for the hack files, just so it's easier to read through it?

May I ask if you took into consideration some audiobank related code we change to prevent background music from dying due to being loaded into the wrong table? This is the related code here. At a glance it doesn't look like you've affected that code, which is good.

// loadnewaudiotable: where the copy metadata function loop was, sets a jump to code placed at the old instrumentset list
// which DMAs new audiobanktable from a file, relocates the addresses in the table, and sets the
// instrumentset table pointer to the new file
ResourceUtils.ApplyHack(Resources.mods.loadnewaudiotable);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this file, can you change ADDIU SP, SP, 0x00 to ADDIU SP, SP, -0x18 at the start, and + 0x18 at the end? And also SW/LW RA 0x0010 (SP) to SW/LW RA 0x0014 (SP)

@Rebbacus
Copy link
Author

Updated loadnewaudiotable with the stack changes. Thanks for pointing that out that spot for the return address.

So, the hack ASM... I don't have files for those. When I started this, I picked up on how the ApplyHack function worked, and hand-made the binaries as I was going through the pj64 debugger and memory. I can try writing something like ASM for documentation if that'll help.

I did see the hooks to the new code as I was changing code, and I don't recall needing to mess with those. This should work fine alongside the hooks.

@ZoeyZolotova
Copy link
Owner

Updated loadnewaudiotable with the stack changes. Thanks for pointing that out that spot for the return address.

ty

So, the hack ASM... I don't have files for those. When I started this, I picked up on how the ApplyHack function worked, and hand-made the binaries as I was going through the pj64 debugger and memory. I can try writing something like ASM for documentation if that'll help.

No worries, that's how I started out with my hacks, so none of them have source ASM either. Don't worry about it if you don't have it then.

I did see the hooks to the new code as I was changing code, and I don't recall needing to mess with those. This should work fine alongside the hooks.

Cool ok.

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