From 581bf8bc02a6626bc97f9d76bcd54b625dc6396c Mon Sep 17 00:00:00 2001 From: mparisi20 Date: Thu, 31 Jul 2025 22:49:17 -0400 Subject: [PATCH] Decompile 2 files from the DOL - Decompile gr_path.cpp - Match d_net_connect.cpp --- config/RSBE01_02/splits.txt | 7 ++++++ config/RSBE01_02/symbols.txt | 20 ++++++++--------- configure.py | 2 ++ include/lib/BrawlHeaders | 2 +- src/sora/gr/gr_path.cpp | 18 +++++++++++++++ src/sora/nt/d_net_connect.cpp | 41 +++++++++++++++++++++++++++++++++++ 6 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 src/sora/gr/gr_path.cpp create mode 100644 src/sora/nt/d_net_connect.cpp diff --git a/config/RSBE01_02/splits.txt b/config/RSBE01_02/splits.txt index d254600..87aa480 100644 --- a/config/RSBE01_02/splits.txt +++ b/config/RSBE01_02/splits.txt @@ -156,6 +156,9 @@ sora/gr/collision/gr_collision_data.cpp: sora/gr/collision/gr_collision_handle.cpp: .text start:0x801122E4 end:0x8011234C +sora/gr/gr_path.cpp: + .text start:0x80139570 end:0x80139658 + sora/ac/ac_cmd_interpreter.cpp: .text start:0x80139658 end:0x8013CA1C .rodata start:0x80409520 end:0x8040964C @@ -183,6 +186,10 @@ sora/ft/ft_system.cpp: .bss start:0x8049EA20 end:0x8049EA30 .sbss start:0x805A0380 end:0x805A0388 +sora/nt/d_net_connect.cpp: + .text start:0x8014CC40 end:0x8014CD5C + .data start:0x80460DC8 end:0x80460E00 + sora/nt/nt_etc_dwc.cpp: .text start:0x80150614 end:0x80150CE4 .data start:0x80461070 end:0x804610F8 diff --git a/config/RSBE01_02/symbols.txt b/config/RSBE01_02/symbols.txt index edd393f..78542fc 100644 --- a/config/RSBE01_02/symbols.txt +++ b/config/RSBE01_02/symbols.txt @@ -4677,7 +4677,7 @@ fn_800C71EC = .text:0x800C71EC; // type:function size:0x9C fn_800C7288 = .text:0x800C7288; // type:function size:0x9C fn_800C7324 = .text:0x800C7324; // type:function size:0xEC create__19muWifiInterfaceTaskFv = .text:0x800C7410; // type:function size:0xDC -fn_800C74EC = .text:0x800C74EC; // type:function size:0x50 +netReport__FPCce = .text:0x800C74EC; // type:function size:0x50 fn_800C753C = .text:0x800C753C; // type:function size:0x68 fn_800C75A4 = .text:0x800C75A4; // type:function size:0x10 fn_800C75B4 = .text:0x800C75B4; // type:function size:0x58 @@ -5945,7 +5945,7 @@ fn_80138CB4 = .text:0x80138CB4; // type:function size:0x224 fn_80138ED8 = .text:0x80138ED8; // type:function size:0x48 fn_80138F20 = .text:0x80138F20; // type:function size:0x300 fn_80139220 = .text:0x80139220; // type:function size:0x350 -fn_80139570 = .text:0x80139570; // type:function size:0xE8 +relocation__21grFixedPathCollectionFv = .text:0x80139570; // type:function size:0xE8 __ct__16acCmdInterpreterFP44soArrayVector<25acCmdInterpreterStackData,8>lP13acAnimCmdConvPCUcf = .text:0x80139658; // type:function size:0x70 __dt__13acAnimCmdImplFv = .text:0x801396C8; // type:function size:0x40 __dt__16acCmdInterpreterFv = .text:0x80139708; // type:function size:0x40 @@ -6142,7 +6142,7 @@ fn_801478E8 = .text:0x801478E8; // type:function size:0x44 fn_8014792C = .text:0x8014792C; // type:function size:0x360 fn_80147C8C = .text:0x80147C8C; // type:function size:0x10 fn_80147C9C = .text:0x80147C9C; // type:function size:0x224 -fn_80147EC0 = .text:0x80147EC0; // type:function size:0x50 +netReport0__FPCce = .text:0x80147EC0; // type:function size:0x50 fn_80147F10 = .text:0x80147F10; // type:function size:0x300 fn_80148210 = .text:0x80148210; // type:function size:0x70 fn_80148280 = .text:0x80148280; // type:function size:0x48 @@ -6165,8 +6165,8 @@ fn_80149644 = .text:0x80149644; // type:function size:0x1AC fn_801497F0 = .text:0x801497F0; // type:function size:0xC0 fn_801498B0 = .text:0x801498B0; // type:function size:0x60 fn_80149910 = .text:0x80149910; // type:function size:0x8 -fn_80149918 = .text:0x80149918; // type:function size:0x70 -fn_80149988 = .text:0x80149988; // type:function size:0x5C +ntAlloc__12DWCAllocTypeFiUlUl = .text:0x80149918; // type:function size:0x70 +ntFree__12DWCAllocTypeFiPv = .text:0x80149988; // type:function size:0x5C fn_801499E4 = .text:0x801499E4; // type:function size:0x68 fn_80149A4C = .text:0x80149A4C; // type:function size:0x54 fn_80149AA0 = .text:0x80149AA0; // type:function size:0x120 @@ -6213,10 +6213,10 @@ fn_8014CB40 = .text:0x8014CB40; // type:function size:0xC fn_8014CB4C = .text:0x8014CB4C; // type:function size:0x30 fn_8014CB7C = .text:0x8014CB7C; // type:function size:0x7C fn_8014CBF8 = .text:0x8014CBF8; // type:function size:0x48 -fn_8014CC40 = .text:0x8014CC40; // type:function size:0x8 -fn_8014CC48 = .text:0x8014CC48; // type:function size:0x4 +_Alloc__FiUl = .text:0x8014CC40; // type:function size:0x8 +_Free__FiPv = .text:0x8014CC48; // type:function size:0x4 dNetConnect_Start__Fv = .text:0x8014CC4C; // type:function size:0xEC -fn_8014CD38 = .text:0x8014CD38; // type:function size:0x24 +dNetConnect_Finish__Fv = .text:0x8014CD38; // type:function size:0x24 fn_8014CD5C = .text:0x8014CD5C; // type:function size:0x4 fn_8014CD60 = .text:0x8014CD60; // type:function size:0x1C fn_8014CD7C = .text:0x8014CD7C; // type:function size:0xE4 @@ -14988,9 +14988,9 @@ fn_803A5C88 = .text:0x803A5C88; // type:function size:0x28 fn_803A5CB0 = .text:0x803A5CB0; // type:function size:0xC0 fn_803A5D70 = .text:0x803A5D70; // type:function size:0xD0 SOInit = .text:0x803A5E40; // type:function size:0x1C8 -fn_803A6008 = .text:0x803A6008; // type:function size:0xFC +SOFinish = .text:0x803A6008; // type:function size:0xFC SOStartupEx = .text:0x803A6104; // type:function size:0x428 -fn_803A652C = .text:0x803A652C; // type:function size:0x1B0 +SOCleanup = .text:0x803A652C; // type:function size:0x1B0 fn_803A66DC = .text:0x803A66DC; // type:function size:0xC fn_803A66E8 = .text:0x803A66E8; // type:function size:0x8 fn_803A66F0 = .text:0x803A66F0; // type:function size:0x50 diff --git a/configure.py b/configure.py index cffea23..ff73534 100755 --- a/configure.py +++ b/configure.py @@ -321,10 +321,12 @@ def MatchingFor(*versions): Object(Matching, "sora/if/if_adv_task.cpp"), Object(Matching, "sora/gr/collision/gr_collision_data.cpp"), Object(Matching, "sora/gr/collision/gr_collision_handle.cpp"), + Object(NonMatching, "sora/gr/gr_path.cpp"), Object(NonMatching, "sora/ac/ac_cmd_interpreter.cpp"), Object(Matching, "sora/ac/ac_anim_cmd_impl.cpp"), Object(Matching, "sora/ac/ac_null.cpp"), Object(Matching, "sora/ft/ft_system.cpp"), + Object(Matching, "sora/nt/d_net_connect.cpp"), Object(Matching, "sora/nt/nt_etc_dwc.cpp", extra_cflags=["-RTTI off"]), Object(Matching, "sora/ad/ad_static_data.cpp"), Object(Matching, "sora/st/st_data_container.cpp"), diff --git a/include/lib/BrawlHeaders b/include/lib/BrawlHeaders index f7f3cdb..0074311 160000 --- a/include/lib/BrawlHeaders +++ b/include/lib/BrawlHeaders @@ -1 +1 @@ -Subproject commit f7f3cdb46f3da4725a46c8f9c4f5a820958e8bec +Subproject commit 0074311566474386f3dace74b3f732350c5e251e diff --git a/src/sora/gr/gr_path.cpp b/src/sora/gr/gr_path.cpp new file mode 100644 index 0000000..1c722bd --- /dev/null +++ b/src/sora/gr/gr_path.cpp @@ -0,0 +1,18 @@ +#include +#include +#include + +typedef grFixedPath::UnkClass UnkClass; + +// NONMATCHING regswap +void grFixedPathCollection::relocation() { + m_paths = m_pathData; + u32 offset = 0; + u32 count = m_count; + UnkClass* data = reinterpret_cast(m_paths + m_count); + for (u32 i = 0; i != count; i++) { + grFixedPath* p = &m_paths[i]; + p->m_data = data + offset; + offset += p->m_offsetToNextEntry; + } +} diff --git a/src/sora/nt/d_net_connect.cpp b/src/sora/nt/d_net_connect.cpp new file mode 100644 index 0000000..5d2e095 --- /dev/null +++ b/src/sora/nt/d_net_connect.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include +#include + +static void* _Alloc(int p1, u32 p2) { + return DWCAllocType::ntAlloc(p1, p2, 32); +} + +static void _Free(int p1, void* p2) { + DWCAllocType::ntFree(p1, p2); +} + +s32 dNetConnect_Start() { + netReport("SOInit() "); + SOInitInfo info; + std::memset(&info, 0, sizeof(SOInitInfo)); + info.allocator = _Alloc; + info.dealloc = _Free; + int err = SOInit(&info); + if (err) { + netReport0("failed (%d)\n", err); + return err; + } + netReport0("success\n"); + netReport("SOStartup() "); + err = SOStartupEx(180000); + if (err) { + netReport0("failed (%d)\n", err); + return err; + } + netReport0("success\n"); + return err; +} + +void dNetConnect_Finish() { + SOCleanup(); + SOFinish(); +}