Ability to relocate song address table #320
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds the ability to change the location in the sound engine binary that the song address table is written to.
This makes it significantly easier to write new code for the sound engine (especially custom SFX) as a current limitation is that the song table has to remain in a constant location, and thus it becomes difficult to edit the code and data before it.
The implementation is based on a piece of data that CoilSnake can identify including a pointer to the location of the song table. Specifically, a UTF-8 string followed by the pointer. This may look like the following in a disassembly:
This string does not appear as binary data anywhere in the vanilla sound driver. If this data is not found, then the song table will be written to the default location. If more than one instance of this data is found, an error will be thrown.