One big issue with structuring a Sonic disassembly (unless you're willing to sacrifice bit perfectness) is that the structure in the ROM is terrible. This presents issues where important object functions are just littered randomly and sometimes within objects. There is one possible solution we could use - put all the functions, or at least group many similar functions, into the same file, but as macros. This would have the actual name of the routine along all the code, but it will allow a single instruction to be placed where the actual function occurs, preserving bit-perfectness while allowing far more options for structure. This would also allow us to not split objects into multiple files or have random file includes within objects. Object includes could also contain a comment, indicating which functions are defined within it, to aid users in finding these definitions if needed.
One big issue with structuring a Sonic disassembly (unless you're willing to sacrifice bit perfectness) is that the structure in the ROM is terrible. This presents issues where important object functions are just littered randomly and sometimes within objects. There is one possible solution we could use - put all the functions, or at least group many similar functions, into the same file, but as macros. This would have the actual name of the routine along all the code, but it will allow a single instruction to be placed where the actual function occurs, preserving bit-perfectness while allowing far more options for structure. This would also allow us to not split objects into multiple files or have random file includes within objects. Object includes could also contain a comment, indicating which functions are defined within it, to aid users in finding these definitions if needed.