mirror of https://github.com/zeldaret/botw.git
ksys/snd: Fix matching issues in MusicDefinition
The wrong overload of agl::utl::Parameter::init was being used. The one that only takes a name will use the name string for the label as well; this is not what the original function does, as the label for all the parameters is set to "" (the empty string).
This commit is contained in:
parent
1322b57b55
commit
ec59fe675b
|
@ -86097,7 +86097,7 @@
|
|||
0x0000007101014450,sub_7101014450,24,
|
||||
0x0000007101014468,sub_7101014468,52,
|
||||
0x000000710101449c,registerBmscdefEntryFactory,392,
|
||||
0x0000007101014624,ResourceBmscdef::doCreate,1716,_ZN4ksys3snd15MusicDefinition9doCreate_EPhjPN4sead4HeapE!
|
||||
0x0000007101014624,ResourceBmscdef::doCreate,1716,_ZN4ksys3snd15MusicDefinition9doCreate_EPhjPN4sead4HeapE
|
||||
0x0000007101014cd8,sub_7101014CD8,324,_ZNK4ksys3snd15MusicDefinition19getMusicIndexByNameERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007101014e1c,sub_7101014E1C,364,_ZNK4ksys3snd15MusicDefinition22getMusicCategoryByNameERKN4sead14SafeStringBaseIcEE
|
||||
0x0000007101014f88,sub_7101014F88,316,_ZNK4ksys3snd15MusicDefinition30getPriorityValueByCategoryNameERKN4sead14SafeStringBaseIcEE
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -4,30 +4,25 @@ namespace ksys::snd {
|
|||
|
||||
static sead::SafeString str_EventBgm = "EventBgm";
|
||||
|
||||
// NON_MATCHING: two bigger diffs cause a different regalloc
|
||||
// 1. During `SafeString` generation of line
|
||||
// `auto categoryDefines_list = agl::utl::getResParameterList(root_list, "CategoryDefines");`
|
||||
// 2. Mis-ordered operations around
|
||||
// `addList(&mCategoryList, "CategoryDefines");`
|
||||
void MusicDefinition::doCreate_(u8* data, u32 file_size, sead::Heap* heap) {
|
||||
auto archive = agl::utl::ResParameterArchive(data);
|
||||
auto root_list = archive.getRootList();
|
||||
|
||||
auto musicDefines_list = agl::utl::getResParameterList(root_list, "MusicDefines");
|
||||
if (musicDefines_list) {
|
||||
s32 musicDefines_list_length = musicDefines_list.getResParameterObjNum();
|
||||
if (musicDefines_list_length == 0) {
|
||||
auto MusicDefines = agl::utl::getResParameterList(root_list, "MusicDefines");
|
||||
if (MusicDefines) {
|
||||
s32 num_music_defines = MusicDefines.getResParameterObjNum();
|
||||
if (num_music_defines == 0) {
|
||||
return;
|
||||
}
|
||||
mMusicDefines.allocBufferAssert(musicDefines_list_length, heap);
|
||||
mMusicDefines.allocBufferAssert(num_music_defines, heap);
|
||||
|
||||
for (auto it = mMusicDefines.begin(), end = mMusicDefines.end(); it != end; ++it) {
|
||||
auto param_obj = &it->param_obj;
|
||||
it->name.init("", "Name", param_obj);
|
||||
it->category.init("", "Category", param_obj);
|
||||
it->volume.init(1, "Volume", param_obj);
|
||||
it->is_enable_weather_filter.init(false, "IsEnableWeatherFilter", param_obj);
|
||||
it->is_indoor_ducking.init(false, "IsIndoorDucking", param_obj);
|
||||
it->name.init("", "Name", "", param_obj);
|
||||
it->category.init("", "Category", "", param_obj);
|
||||
it->volume.init(1, "Volume", "", param_obj);
|
||||
it->is_enable_weather_filter.init(false, "IsEnableWeatherFilter", "", param_obj);
|
||||
it->is_indoor_ducking.init(false, "IsIndoorDucking", "", param_obj);
|
||||
|
||||
mMusicList.addObj(param_obj,
|
||||
sead::FormatFixedSafeString<32>("MusicDefine_%d", it.getIndex()));
|
||||
|
@ -36,16 +31,16 @@ void MusicDefinition::doCreate_(u8* data, u32 file_size, sead::Heap* heap) {
|
|||
addList(&mMusicList, "MusicDefines");
|
||||
}
|
||||
|
||||
auto categoryDefines_list = agl::utl::getResParameterList(root_list, "CategoryDefines");
|
||||
if (categoryDefines_list) {
|
||||
s32 categoryDefines_list_length = categoryDefines_list.getResParameterObjNum();
|
||||
if (categoryDefines_list_length == 0)
|
||||
auto CategoryDefines = agl::utl::getResParameterList(root_list, "CategoryDefines");
|
||||
if (CategoryDefines) {
|
||||
s32 num_category_defines = CategoryDefines.getResParameterObjNum();
|
||||
if (num_category_defines == 0)
|
||||
return;
|
||||
mCategoryDefines.allocBufferAssert(categoryDefines_list_length, heap);
|
||||
mCategoryDefines.allocBufferAssert(num_category_defines, heap);
|
||||
|
||||
for (auto it = mCategoryDefines.begin(), end = mCategoryDefines.end(); it != end; ++it) {
|
||||
it->name.init("", "Name", &it->param_obj);
|
||||
it->priority_value.init(0, "PriorityValue", &it->param_obj);
|
||||
it->name.init("", "Name", "", &it->param_obj);
|
||||
it->priority_value.init(0, "PriorityValue", "", &it->param_obj);
|
||||
|
||||
mCategoryList.addObj(&it->param_obj, sead::FormatFixedSafeString<32>(
|
||||
"CategoryDefine_%d", it.getIndex()));
|
||||
|
|
Loading…
Reference in New Issue