Skip to content

Match GameModeManager and nearby/related functions#22

Merged
Yanis002 merged 5 commits intozeldaret:mainfrom
Yanis002:gamemode
Jan 19, 2026
Merged

Match GameModeManager and nearby/related functions#22
Yanis002 merged 5 commits intozeldaret:mainfrom
Yanis002:gamemode

Conversation

@Yanis002
Copy link
Collaborator

cool improvements, I cleaned up some linklist node stuff from other files and I also documented the TouchControl class (same as ph except it's using shorts instead of ints for positions), also I had to unlink GameModeStart because of weird dtor stuff that I can't figure out

@decomp-dev
Copy link

decomp-dev bot commented Jan 18, 2026

Report for eur (b80acf3 - b0547a8)

📈 Matched code: 1.25% (+0.06%, +2838 bytes)
📉 Linked code: 0.40% (-0.02%, -952 bytes)
📈 Matched data: 22.17% (+0.01%, +200 bytes)
📉 Linked data: 0.18% (-0.01%, -96 bytes)

✅ 95 new matches
Unit Item Bytes Before After
src/025_Title/TitleScreen TitleScreen::func_ov025_020c53d0(Input*, TouchControl*) +468 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5240(Input*, TouchControl*) +400 0.00% 100.00%
src/019_MainSelect/FileSelectSubScreen FileSelectSubScreen::vfunc_08(Input*, TouchControl*) +340 0.00% 100.00%
src/019_MainSelect/FileSelectOptions FileSelectOptionsManager::vfunc_08(Input*, TouchControl*) +208 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::vfunc_08(Input*, TouchControl*) +200 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018984(char*) +144 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018908() +124 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018a14(char*) +120 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +120 0.00% 100.00%
src/025_Title/GameModeTitleScreen GameModeTitleScreen::vfunc_08() +112 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +112 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +112 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55e4(Input*, TouchControl*) +104 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018af0(GameModeLinkList<GameModeManagerBase_104>*) +100 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::GameModeManagerBase(int) +92 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::GameModeManagerBase(int) +92 0.00% 100.00%
src/Main/UnkStruct_0204a060 UnkStruct_0204a060::func_020183d4(bool, void*, int) +80 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::vfunc_30(int) +76 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018634(int) +72 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55a4(Input*, TouchControl*) +64 0.00% 100.00%
src/Main/Game/GameModeManagerBase .data +64 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018b54(GameModeLinkList<GameModeManagerBase_104>*) +60 0.00% 100.00%
src/019_MainSelect/FileSelectOptions FileSelectOptions::vfunc_08(Input*, TouchControl*) +56 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018b90(GameModeLinkList<GameModeManagerBase_104>*, char*) +52 0.00% 100.00%
src/Main/Game/GameModeBase .data +48 0.00% 100.00%
src/Main/Game/GameModeBase GameModeBase::~GameModeBase() +48 0.00% 100.00%
src/Main/Game/GameModeLinkListNode GameModeLinkListNode::func_020166f4(GameModeLinkListNode*) +44 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::~GameModeManagerBase() +44 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::vfunc_00() +44 0.00% 100.00%
src/Main/Game/GameModeLinkListNode GameModeLinkListNode::func_020166cc(GameModeLinkListNode*) +40 0.00% 100.00%

...and 65 more new matches

💔 13 broken matches
Unit Item Bytes Before After
src/025_Title/TitleScreen TitleScreen::func_ov025_020c53d0(GameModePTMFParam2Struct*, TouchControl*) -468 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5240(GameModePTMFParam2Struct*, TouchControl*) -400 100.00% 0.00%
src/019_MainSelect/FileSelectSubScreen FileSelectSubScreen::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -340 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -200 100.00% 0.00%
src/025_Title/GameModeTitleScreen GameModeTitleScreen::vfunc_08(int, int, int) -112 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55e4(GameModePTMFParam2Struct*, TouchControl*) -104 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55a4(GameModePTMFParam2Struct*, TouchControl*) -64 100.00% 0.00%
src/019_MainSelect/FileSelectOptions FileSelectOptions::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -56 100.00% 0.00%
src/019_MainSelect/FileSelectManager FileSelectManager::vfunc_28(int) -32 100.00% 0.00%
src/019_MainSelect/FileSelectManager FileSelectManager::vfunc_2C(int) -32 100.00% 0.00%
src/025_Title/TitleScreenManager TitleScreenManager::vfunc_28(int) -32 100.00% 0.00%
src/025_Title/TitleScreenManager TitleScreenManager::vfunc_2C(int) -32 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5200(GameModePTMFParam2Struct*, TouchControl*) -4 100.00% 0.00%
📈 9 improvements in unmatched functions
Unit Item Bytes Before After
src/019_MainSelect/019_UnkSubStruct9 UnkSubStruct9::UnkSubStruct9(stack_struct1) +648 0.00% 72.00%
src/019_MainSelect/FileSelectMicTest FileSelectMicTest::vfunc_08(Input*, TouchControl*) +623 0.00% 92.75%
src/019_MainSelect/FileSelectMain FileSelectMain::vfunc_08(Input*, TouchControl*) +371 0.00% 91.14%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018830(char*) +208 0.00% 96.67%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_0201875c() +205 0.00% 96.89%
src/019_MainSelect/GameModeFileSelect GameModeFileSelect::vfunc_08() +100 0.00% 89.96%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::GameModeManagerBase_104() +71 0.00% 99.89%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::GameModeManagerBase_104() +71 0.00% 99.89%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5204(Input*, TouchControl*) +51 0.00% 86.67%
📉 5 regressions in unmatched functions
Unit Item Bytes Before After
src/019_MainSelect/FileSelectMicTest FileSelectMicTest::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -623 92.75% 0.00%
src/019_MainSelect/FileSelectMain FileSelectMain::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -371 91.14% 0.00%
src/019_MainSelect/FileSelectOptions FileSelectOptionsManager::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -199 95.77% 0.00%
src/019_MainSelect/GameModeFileSelect GameModeFileSelect::vfunc_08(int, int, int) -100 89.96% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5204(GameModePTMFParam2Struct*, TouchControl*) -51 86.67% 0.00%

Report for jp (b80acf3 - b0547a8)

📈 Matched code: 1.23% (+0.06%, +2838 bytes)
📉 Linked code: 0.31% (-0.02%, -952 bytes)
📈 Matched data: 22.15% (+0.01%, +200 bytes)
📉 Linked data: 0.16% (-0.01%, -96 bytes)

✅ 95 new matches
Unit Item Bytes Before After
src/025_Title/TitleScreen TitleScreen::func_ov025_020c53d0(Input*, TouchControl*) +468 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5240(Input*, TouchControl*) +400 0.00% 100.00%
src/019_MainSelect/FileSelectSubScreen FileSelectSubScreen::vfunc_08(Input*, TouchControl*) +340 0.00% 100.00%
src/019_MainSelect/FileSelectOptions FileSelectOptionsManager::vfunc_08(Input*, TouchControl*) +208 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::vfunc_08(Input*, TouchControl*) +200 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018984(char*) +144 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018908() +124 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018a14(char*) +120 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +120 0.00% 100.00%
src/025_Title/GameModeTitleScreen GameModeTitleScreen::vfunc_08() +112 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +112 0.00% 100.00%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::~GameModeManagerBase_104() +112 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55e4(Input*, TouchControl*) +104 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018af0(GameModeLinkList<GameModeManagerBase_104>*) +100 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::GameModeManagerBase(int) +92 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::GameModeManagerBase(int) +92 0.00% 100.00%
src/Main/UnkStruct_0204a060 UnkStruct_0204a060::func_020183d4(bool, void*, int) +80 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::vfunc_30(int) +76 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018634(int) +72 0.00% 100.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55a4(Input*, TouchControl*) +64 0.00% 100.00%
src/Main/Game/GameModeManagerBase .data +64 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018b54(GameModeLinkList<GameModeManagerBase_104>*) +60 0.00% 100.00%
src/019_MainSelect/FileSelectOptions FileSelectOptions::vfunc_08(Input*, TouchControl*) +56 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018b90(GameModeLinkList<GameModeManagerBase_104>*, char*) +52 0.00% 100.00%
src/Main/Game/GameModeBase .data +48 0.00% 100.00%
src/Main/Game/GameModeBase GameModeBase::~GameModeBase() +48 0.00% 100.00%
src/Main/Game/GameModeLinkListNode GameModeLinkListNode::func_020166f4(GameModeLinkListNode*) +44 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::~GameModeManagerBase() +44 0.00% 100.00%
src/Main/Game/GameModeManagerBase GameModeManagerBase::vfunc_00() +44 0.00% 100.00%
src/Main/Game/GameModeLinkListNode GameModeLinkListNode::func_020166cc(GameModeLinkListNode*) +40 0.00% 100.00%

...and 65 more new matches

💔 13 broken matches
Unit Item Bytes Before After
src/025_Title/TitleScreen TitleScreen::func_ov025_020c53d0(GameModePTMFParam2Struct*, TouchControl*) -468 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5240(GameModePTMFParam2Struct*, TouchControl*) -400 100.00% 0.00%
src/019_MainSelect/FileSelectSubScreen FileSelectSubScreen::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -340 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -200 100.00% 0.00%
src/025_Title/GameModeTitleScreen GameModeTitleScreen::vfunc_08(int, int, int) -112 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55e4(GameModePTMFParam2Struct*, TouchControl*) -104 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c55a4(GameModePTMFParam2Struct*, TouchControl*) -64 100.00% 0.00%
src/019_MainSelect/FileSelectOptions FileSelectOptions::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -56 100.00% 0.00%
src/019_MainSelect/FileSelectManager FileSelectManager::vfunc_28(int) -32 100.00% 0.00%
src/019_MainSelect/FileSelectManager FileSelectManager::vfunc_2C(int) -32 100.00% 0.00%
src/025_Title/TitleScreenManager TitleScreenManager::vfunc_28(int) -32 100.00% 0.00%
src/025_Title/TitleScreenManager TitleScreenManager::vfunc_2C(int) -32 100.00% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5200(GameModePTMFParam2Struct*, TouchControl*) -4 100.00% 0.00%
📈 9 improvements in unmatched functions
Unit Item Bytes Before After
src/019_MainSelect/019_UnkSubStruct9 UnkSubStruct9::UnkSubStruct9(stack_struct1) +648 0.00% 72.00%
src/019_MainSelect/FileSelectMicTest FileSelectMicTest::vfunc_08(Input*, TouchControl*) +623 0.00% 92.75%
src/019_MainSelect/FileSelectMain FileSelectMain::vfunc_08(Input*, TouchControl*) +371 0.00% 91.14%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_02018830(char*) +208 0.00% 96.67%
src/Main/Game/GameModeManagerBase GameModeManagerBase::func_0201875c() +205 0.00% 96.89%
src/019_MainSelect/GameModeFileSelect GameModeFileSelect::vfunc_08() +100 0.00% 89.96%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::GameModeManagerBase_104() +71 0.00% 99.89%
src/000_Second/Game/GameModeManagerBase_104 GameModeManagerBase_104::GameModeManagerBase_104() +71 0.00% 99.89%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5204(Input*, TouchControl*) +51 0.00% 86.67%
📉 5 regressions in unmatched functions
Unit Item Bytes Before After
src/019_MainSelect/FileSelectMicTest FileSelectMicTest::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -623 92.75% 0.00%
src/019_MainSelect/FileSelectMain FileSelectMain::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -371 91.14% 0.00%
src/019_MainSelect/FileSelectOptions FileSelectOptionsManager::vfunc_08(GameModePTMFParam2Struct*, TouchControl*) -199 95.77% 0.00%
src/019_MainSelect/GameModeFileSelect GameModeFileSelect::vfunc_08(int, int, int) -100 89.96% 0.00%
src/025_Title/TitleScreen TitleScreen::func_ov025_020c5204(GameModePTMFParam2Struct*, TouchControl*) -51 86.67% 0.00%

@Yanis002 Yanis002 marked this pull request as draft January 18, 2026 21:39
@Yanis002 Yanis002 marked this pull request as ready for review January 19, 2026 01:18
@Yanis002 Yanis002 merged commit e9789bf into zeldaret:main Jan 19, 2026
3 checks passed
@Yanis002 Yanis002 deleted the gamemode branch January 19, 2026 01:23
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.

1 participant