From f0799bd6038be6858499ec68f0d03cdbbfa53d0b Mon Sep 17 00:00:00 2001 From: RedArms <47068819+RedArms@users.noreply.github.com> Date: Fri, 9 Oct 2026 18:59:14 +0200 Subject: [PATCH] Decompile GameModePlay (#169) * Decompile GameModePlay * Fix GameMode D2 symbol name in USA --- config/eur/arm9/overlays/ov000/delinks.txt | 2 ++ config/eur/arm9/overlays/ov000/relocs.txt | 8 +++---- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/delinks.txt | 2 ++ config/usa/arm9/overlays/ov000/relocs.txt | 8 +++---- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/symbols.txt | 2 +- src/00_Core/Game/GameModePlay.cpp | 28 ++++++++++++++++++---- 8 files changed, 38 insertions(+), 16 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index ca71a416..fdacba51 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -152,7 +152,9 @@ src/00_Core/Save/AdventureFlags.cpp: .bss start:0x020eaac4 end:0x020eaac8 src/00_Core/Game/GameModePlay.cpp: + complete .text start:0x02079d28 end:0x02079ddc + .data start:0x020e2018 end:0x020e2044 src/00_Core/Render/ModelRender.cpp: .text start:0x020a956c end:0x020a99e0 diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index cef7adca..7244d612 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -426,21 +426,21 @@ from:0x02079d16 kind:thumb_call to:0x02079bdc module:overlay(0) from:0x02079d20 kind:load to:0x020691a0 module:main from:0x02079d3c kind:thumb_call_arm to:0x0201823c module:main from:0x02079d44 kind:load to:0x0205762c add:0x8 module:main -from:0x02079d48 kind:load to:0x020e2020 module:overlay(0) +from:0x02079d48 kind:load to:0x020e2018 module:overlay(0) add:0x8 from:0x02079d4c kind:load to:0x027e0d40 module:dtcm from:0x02079d50 kind:load to:0x027e0934 module:dtcm from:0x02079d5c kind:thumb_call_arm to:0x0201825c module:main from:0x02079d68 kind:thumb_call to:0x0202c0b8 module:main -from:0x02079d70 kind:load to:0x020e2020 module:overlay(0) +from:0x02079d70 kind:load to:0x020e2018 module:overlay(0) add:0x8 from:0x02079d74 kind:load to:0x027e0d40 module:dtcm from:0x02079d80 kind:thumb_call_arm to:0x0201825c module:main from:0x02079d8c kind:thumb_call to:0x0202c0b8 module:main from:0x02079d92 kind:thumb_call_arm to:0x0202ea0c module:main -from:0x02079d9c kind:load to:0x020e2020 module:overlay(0) +from:0x02079d9c kind:load to:0x020e2018 module:overlay(0) add:0x8 from:0x02079da0 kind:load to:0x027e0d40 module:dtcm from:0x02079dac kind:thumb_call_arm to:0x0201825c module:main from:0x02079db8 kind:thumb_call to:0x0202c0b8 module:main -from:0x02079dc0 kind:load to:0x020e2020 module:overlay(0) +from:0x02079dc0 kind:load to:0x020e2018 module:overlay(0) add:0x8 from:0x02079dc4 kind:load to:0x027e0d40 module:dtcm from:0x02079dd0 kind:load to:0x02036074 module:main from:0x02079dd4 kind:load to:0x027e0c54 module:dtcm diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 11aae8bf..69aeab93 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -4046,7 +4046,7 @@ data_ov000_020e1fe4 kind:data(any) addr:0x020e1fe4 data_ov000_020e1fe8 kind:data(any) addr:0x020e1fe8 data_ov000_020e1ff8 kind:data(any) addr:0x020e1ff8 data_ov000_020e2008 kind:data(any) addr:0x020e2008 -data_ov000_020e2020 kind:data(any) addr:0x020e2020 +_ZTV12GameModePlay kind:data(any) addr:0x020e2018 data_ov000_020e2044 kind:data(any) addr:0x020e2044 data_ov000_020e2058 kind:data(any) addr:0x020e2058 data_ov000_020e2070 kind:data(any) addr:0x020e2070 diff --git a/config/usa/arm9/overlays/ov000/delinks.txt b/config/usa/arm9/overlays/ov000/delinks.txt index dc247fd9..ca4e6456 100644 --- a/config/usa/arm9/overlays/ov000/delinks.txt +++ b/config/usa/arm9/overlays/ov000/delinks.txt @@ -152,7 +152,9 @@ src/00_Core/Save/AdventureFlags.cpp: .bss start:0x020eaa64 end:0x020eaa68 src/00_Core/Game/GameModePlay.cpp: + complete .text start:0x02079cc8 end:0x02079d7c + .data start:0x020e1fb8 end:0x020e1fe4 src/00_Core/Render/ModelRender.cpp: .text start:0x020a950c end:0x020a9980 diff --git a/config/usa/arm9/overlays/ov000/relocs.txt b/config/usa/arm9/overlays/ov000/relocs.txt index 00718f4d..6399d71d 100644 --- a/config/usa/arm9/overlays/ov000/relocs.txt +++ b/config/usa/arm9/overlays/ov000/relocs.txt @@ -426,21 +426,21 @@ from:0x02079cb6 kind:thumb_call to:0x02079b7c module:overlay(0) from:0x02079cc0 kind:load to:0x02069140 module:main from:0x02079cdc kind:thumb_call_arm to:0x0201823c module:main from:0x02079ce4 kind:load to:0x020575cc add:0x8 module:main -from:0x02079ce8 kind:load to:0x020e1fc0 module:overlay(0) +from:0x02079ce8 kind:load to:0x020e1fb8 module:overlay(0) add:0x8 from:0x02079cec kind:load to:0x027e0d40 module:dtcm from:0x02079cf0 kind:load to:0x027e0934 module:dtcm from:0x02079cfc kind:thumb_call_arm to:0x0201825c module:main from:0x02079d08 kind:thumb_call to:0x0202c0a0 module:main -from:0x02079d10 kind:load to:0x020e1fc0 module:overlay(0) +from:0x02079d10 kind:load to:0x020e1fb8 module:overlay(0) add:0x8 from:0x02079d14 kind:load to:0x027e0d40 module:dtcm from:0x02079d20 kind:thumb_call_arm to:0x0201825c module:main from:0x02079d2c kind:thumb_call to:0x0202c0a0 module:main from:0x02079d32 kind:thumb_call_arm to:0x0202ea08 module:main -from:0x02079d3c kind:load to:0x020e1fc0 module:overlay(0) +from:0x02079d3c kind:load to:0x020e1fb8 module:overlay(0) add:0x8 from:0x02079d40 kind:load to:0x027e0d40 module:dtcm from:0x02079d4c kind:thumb_call_arm to:0x0201825c module:main from:0x02079d58 kind:thumb_call to:0x0202c0a0 module:main -from:0x02079d60 kind:load to:0x020e1fc0 module:overlay(0) +from:0x02079d60 kind:load to:0x020e1fb8 module:overlay(0) add:0x8 from:0x02079d64 kind:load to:0x027e0d40 module:dtcm from:0x02079d70 kind:load to:0x02036030 module:main from:0x02079d74 kind:load to:0x027e0c54 module:dtcm diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index b488f850..b5b407a8 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -4046,7 +4046,7 @@ data_ov000_020e1fe4 kind:data(any) addr:0x020e1f84 data_ov000_020e1fe8 kind:data(any) addr:0x020e1f88 data_ov000_020e1ff8 kind:data(any) addr:0x020e1f98 data_ov000_020e2008 kind:data(any) addr:0x020e1fa8 -data_ov000_020e2020 kind:data(any) addr:0x020e1fc0 +_ZTV12GameModePlay kind:data(any) addr:0x020e1fb8 data_ov000_020e2044 kind:data(any) addr:0x020e1fe4 data_ov000_020e2058 kind:data(any) addr:0x020e1ff8 data_ov000_020e2070 kind:data(any) addr:0x020e2010 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 893edec5..50f576eb 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1353,7 +1353,7 @@ func_0202bf58 kind:function(arm,size=0x68) addr:0x0202bf40 func_0202bfc0 kind:function(arm,size=0xe8) addr:0x0202bfa8 _ZN8GameModeD1Ev kind:function(thumb,size=0x2) addr:0x0202c090 _ZN8GameModeD0Ev kind:function(thumb,size=0xc) addr:0x0202c094 -_ZN8GameMode13func_0202c0b8Ev kind:function(thumb,size=0x2) addr:0x0202c0a0 +_ZN8GameModeD2Ev kind:function(thumb,size=0x2) addr:0x0202c0a0 _ZN8GameMode8vfunc_0cEPt kind:function(thumb,size=0x2) addr:0x0202c0a4 _ZN8GameMode8vfunc_10EPt kind:function(thumb,size=0x2) addr:0x0202c0a8 _ZN8GameMode8vfunc_14Eb kind:function(thumb,size=0x2) addr:0x0202c0ac diff --git a/src/00_Core/Game/GameModePlay.cpp b/src/00_Core/Game/GameModePlay.cpp index 92299df5..fdac30e6 100644 --- a/src/00_Core/Game/GameModePlay.cpp +++ b/src/00_Core/Game/GameModePlay.cpp @@ -1,7 +1,25 @@ #include "Game/GameModePlay.hpp" -GameModePlay::GameModePlay(unk32 param1) : - GameMode(param1) {} -GameModePlay::~GameModePlay() {} -void GameModePlay::vfunc_1c() {} -void GameModePlay::vfunc_20() {} +extern "C" void func_0201823c(void *param1); +extern "C" void *func_0201825c(); +extern "C" void func_02036074(void *param1); +extern unk32 data_027e0934[]; +extern unk32 data_027e0c54[]; +extern GameModePlay *data_027e0d40; + +THUMB GameModePlay::GameModePlay(unk32 param1) : + GameMode(param1) { + data_027e0d40 = this; + func_0201823c(data_027e0934); +} + +THUMB GameModePlay::~GameModePlay() { + func_0201825c(); + data_027e0d40 = NULL; +} + +THUMB void GameModePlay::vfunc_1c() { + func_02036074(data_027e0c54); +} + +THUMB void GameModePlay::vfunc_20() {}