diff --git a/config/RSBE01_02/splits.txt b/config/RSBE01_02/splits.txt index 119d840..c6471c8 100644 --- a/config/RSBE01_02/splits.txt +++ b/config/RSBE01_02/splits.txt @@ -270,6 +270,10 @@ sora/ft/ft_system.cpp: .bss start:0x8049EA20 end:0x8049EA30 .sbss start:0x805A0380 end:0x805A0388 +sora/nt/nt_offline.cpp: + .text start:0x8014C004 end:0x8014C180 + .data start:0x80460D40 end:0x80460D4C + sora/nt/d_net_connect.cpp: .text start:0x8014CC40 end:0x8014CD5C .data start:0x80460DC8 end:0x80460E00 diff --git a/config/RSBE01_02/symbols.txt b/config/RSBE01_02/symbols.txt index 7c6e0b8..3ca2afc 100644 --- a/config/RSBE01_02/symbols.txt +++ b/config/RSBE01_02/symbols.txt @@ -6191,9 +6191,9 @@ fn_8014BC24 = .text:0x8014BC24; // type:function size:0xC fn_8014BC30 = .text:0x8014BC30; // type:function size:0x300 fn_8014BF30 = .text:0x8014BF30; // type:function size:0x38 fn_8014BF68 = .text:0x8014BF68; // type:function size:0x9C -fn_8014C004 = .text:0x8014C004; // type:function size:0x18 -fn_8014C01C = .text:0x8014C01C; // type:function size:0x40 -fn_8014C05C = .text:0x8014C05C; // type:function size:0x124 +__ct__9NtOfflineFv = .text:0x8014C004; // type:function size:0x18 +__dt__9NtOfflineFv = .text:0x8014C01C; // type:function size:0x40 +getFriendIndexHaveWiiID__9NtOfflineFUx = .text:0x8014C05C; // type:function size:0x124 fn_8014C180 = .text:0x8014C180; // type:function size:0x6C fn_8014C1EC = .text:0x8014C1EC; // type:function size:0x80 fn_8014C26C = .text:0x8014C26C; // type:function size:0x344 @@ -6201,14 +6201,14 @@ fn_8014C5B0 = .text:0x8014C5B0; // type:function size:0x6C fn_8014C61C = .text:0x8014C61C; // type:function size:0x138 fn_8014C754 = .text:0x8014C754; // type:function size:0x8 fn_8014C75C = .text:0x8014C75C; // type:function size:0x170 -fn_8014C8CC = .text:0x8014C8CC; // type:function size:0x94 +getInstance__12ntFriendInfoFv = .text:0x8014C8CC; // type:function size:0x94 fn_8014C960 = .text:0x8014C960; // type:function size:0x4 fn_8014C964 = .text:0x8014C964; // type:function size:0xC fn_8014C970 = .text:0x8014C970; // type:function size:0xC fn_8014C97C = .text:0x8014C97C; // type:function size:0xF0 fn_8014CA6C = .text:0x8014CA6C; // type:function size:0xB0 fn_8014CB1C = .text:0x8014CB1C; // type:function size:0x8 -fn_8014CB24 = .text:0x8014CB24; // type:function size:0x1C +getFriendInfo__12ntFriendInfoFv = .text:0x8014CB24; // type:function size:0x1C fn_8014CB40 = .text:0x8014CB40; // type:function size:0xC fn_8014CB4C = .text:0x8014CB4C; // type:function size:0x30 fn_8014CB7C = .text:0x8014CB7C; // type:function size:0x7C @@ -26176,7 +26176,7 @@ jumptable_80460848 = .data:0x80460848; // type:object size:0x28 scope:local lbl_80460870 = .data:0x80460870; // type:object size:0x480 lbl_80460CF0 = .data:0x80460CF0; // type:object size:0x2C lbl_80460D1C = .data:0x80460D1C; // type:object size:0x24 -lbl_80460D40 = .data:0x80460D40; // type:object size:0x10 +__vt__9NtOffline = .data:0x80460D40; // type:object size:0xC lbl_80460D50 = .data:0x80460D50; // type:object size:0x11 data:string lbl_80460D64 = .data:0x80460D64; // type:object size:0x64 lbl_80460DC8 = .data:0x80460DC8; // type:object size:0xA data:string diff --git a/configure.py b/configure.py index d4cf674..a9a8462 100755 --- a/configure.py +++ b/configure.py @@ -346,6 +346,7 @@ def MatchingFor(*versions): 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/nt_offline.cpp", extra_cflags=["-RTTI off"]), 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"), diff --git a/include/lib/BrawlHeaders b/include/lib/BrawlHeaders index c6aed0b..60bdfee 160000 --- a/include/lib/BrawlHeaders +++ b/include/lib/BrawlHeaders @@ -1 +1 @@ -Subproject commit c6aed0b4842d8e70ba6a3104001a4146f29246bb +Subproject commit 60bdfee45716410c9bb856574dc1f1c27fe1051a diff --git a/src/sora/nt/nt_offline.cpp b/src/sora/nt/nt_offline.cpp new file mode 100644 index 0000000..4c46676 --- /dev/null +++ b/src/sora/nt/nt_offline.cpp @@ -0,0 +1,26 @@ +#include +#include + +NtOffline::NtOffline() : unk4(0) { } + +NtOffline::~NtOffline() { } + +u32 NtOffline::getFriendIndexHaveWiiID(u64 id) { + UnkFriendInfo* p = ntFriendInfo::getInstance()->getFriendInfo(); + + for (u32 i = 0; i < UnkFriendInfo::FriendRosterLimit; i++) { + if (p->unk350[i].unk0 && p->unk350[i].unk1) { + u64 x = (static_cast(p->unk5B3[i].unk0) << 56) + + (static_cast(p->unk5B3[i].unk1) << 48) + + (static_cast(p->unk5B3[i].unk2) << 40) + + (static_cast(p->unk5B3[i].unk3) << 32) + + (static_cast(p->unk5B3[i].unk4) << 24) + + (static_cast(p->unk5B3[i].unk5) << 16) + + (static_cast(p->unk5B3[i].unk6) << 8) + + (static_cast(p->unk5B3[i].unk7) << 0); + if (x == id) + return i; + } + } + return 0xFF; +}