1
0
Fork 0
mirror of https://github.com/HamletDuFromage/aio-switch-updater.git synced 2024-11-28 20:32:06 +00:00

get the buildid of a running game

This commit is contained in:
flb 2021-02-10 18:41:13 +01:00
parent 7baa9e1350
commit 3f879a57ff
4 changed files with 59 additions and 4 deletions

View file

@ -16,8 +16,24 @@ class DownloadCheatsPage : public brls::AppletFrame
public: public:
DownloadCheatsPage(uint64_t tid); DownloadCheatsPage(uint64_t tid);
std::string GetBuilID(uint64_t tid); std::string GetBuilID(uint64_t tid);
std::string GetBuilIDFromFile(uint64_t tid);
std::string GetCheatsTitle(nlohmann::json cheat); std::string GetCheatsTitle(nlohmann::json cheat);
void WriteCheats(uint64_t tid, std::string bid, std::string cheatContent); void WriteCheats(uint64_t tid, std::string bid, std::string cheatContent);
void DeleteCheats(uint64_t tid, std::string bid); void DeleteCheats(uint64_t tid, std::string bid);
void ShowCheatsContent(nlohmann::ordered_json titles); void ShowCheatsContent(nlohmann::ordered_json titles);
typedef struct {
u64 base;
u64 size;
} DmntMemoryRegionExtents;
typedef struct {
u64 process_id;
u64 title_id;
DmntMemoryRegionExtents main_nso_extents;
DmntMemoryRegionExtents heap_extents;
DmntMemoryRegionExtents alias_extents;
DmntMemoryRegionExtents address_space_extents;
u8 main_nso_build_id[0x20];
} DmntCheatProcessMetadata;
}; };

View file

@ -71,6 +71,7 @@
"v2_1_0_text": "\uE016 Switched to a better way to get links.", "v2_1_0_text": "\uE016 Switched to a better way to get links.",
"v2_1_1_text": "\uE016 Added a friendly reminder to reboot for new sigpatches to apply.\n\uE016 Changed the cheatslips cheatsheet view.", "v2_1_1_text": "\uE016 Added a friendly reminder to reboot for new sigpatches to apply.\n\uE016 Changed the cheatslips cheatsheet view.",
"v2_1_2_text": "\uE016 Fixed wronge hekate link.", "v2_1_2_text": "\uE016 Fixed wronge hekate link.",
"v2_2_0_text": "\uE016 For cheatslips.com, the build ID of a running game will now be fetched, allowing you to access cheatsheets even if the build ID isn't listed in the versions database.",
"Ok_button": "Ok", "Ok_button": "Ok",
"cheats_page.cpp":"", "cheats_page.cpp":"",
@ -95,6 +96,7 @@
"wrong_cheatslips_id": "Couldn't retrieve token, make sure you enter you login properly", "wrong_cheatslips_id": "Couldn't retrieve token, make sure you enter you login properly",
"see_more": "See more", "see_more": "See more",
"download_cheats": "Download cheats and go back", "download_cheats": "Download cheats and go back",
"bid_not_found": "Couldn't obtain build ID. Try launching aio-switch-updater in applet mode while the game is running.",
"choice_page.cpp":"", "choice_page.cpp":"",
"choice_yes":"Yes", "choice_yes":"Yes",

View file

@ -94,6 +94,11 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true)
verTitles.push_back("v2.1.2"); verTitles.push_back("v2.1.2");
changes.push_back("menus/v2_1_2_text"_i18n ); changes.push_back("menus/v2_1_2_text"_i18n );
verTitles.push_back("v2.2.0");
changes.push_back("menus/v2_2_0_text"_i18n );
int nbVersions = verTitles.size(); int nbVersions = verTitles.size();
items.reserve(nbVersions); items.reserve(nbVersions);
for(int i = nbVersions -1 ; i >= 0; i--){ for(int i = nbVersions -1 ; i >= 0; i--){

View file

@ -14,7 +14,12 @@ DownloadCheatsPage::DownloadCheatsPage(uint64_t tid) : AppletFrame(true, true)
{ {
this->setTitle("menus/cheat_menu"_i18n ); this->setTitle("menus/cheat_menu"_i18n );
std::string bid = GetBuilID(tid); std::string bid = "";
if(running_cfw == ams)
bid = GetBuilID(tid);
if(bid == "")
bid = GetBuilIDFromFile(tid);
list = new brls::List(); list = new brls::List();
label = new brls::Label( label = new brls::Label(
brls::LabelStyle::DESCRIPTION, brls::LabelStyle::DESCRIPTION,
@ -43,7 +48,16 @@ DownloadCheatsPage::DownloadCheatsPage(uint64_t tid) : AppletFrame(true, true)
list->addView(new brls::ListItemGroupSpacing(true)); list->addView(new brls::ListItemGroupSpacing(true));
} }
list->registerAction("menus/download_cheats"_i18n , brls::Key::B, [this, bid, tid] { else {
label = new brls::Label(
brls::LabelStyle::REGULAR,
"menus/bid_not_found"_i18n,
true
);
list->addView(label);
}
list->registerAction((bid != "") ? "menus/download_cheats"_i18n : "brls/hints/back"_i18n, brls::Key::B, [this, bid, tid] {
std::vector<int> ids; std::vector<int> ids;
for(auto& e : toggles){ for(auto& e : toggles){
if(e.first->getToggleState()){ if(e.first->getToggleState()){
@ -111,11 +125,29 @@ DownloadCheatsPage::DownloadCheatsPage(uint64_t tid) : AppletFrame(true, true)
dialog->open(); dialog->open();
}); });
list->addView(del); list->addView(del);
this->setContentView(list); this->setContentView(list);
} }
std::string DownloadCheatsPage::GetBuilID(uint64_t tid) { std::string DownloadCheatsPage::GetBuilID(uint64_t tid) {
static Service g_dmntchtSrv;
DmntCheatProcessMetadata metadata;
smGetService(&g_dmntchtSrv, "dmnt:cht");
serviceDispatch(&g_dmntchtSrv, 65003);
serviceDispatchOut(&g_dmntchtSrv, 65002, metadata);
serviceClose(&g_dmntchtSrv);
if(metadata.title_id == tid){
u8 buildID[0x20];
memcpy(buildID, metadata.main_nso_build_id, 0x20);
std::stringstream ss;
for (u8 i = 0; i < 8; i++)
ss << std::uppercase << std::hex << std::setfill('0') << std::setw(2) << (u16)buildID[i];
return ss.str();
}
else{
return "";
}
}
std::string DownloadCheatsPage::GetBuilIDFromFile(uint64_t tid) {
NsApplicationContentMetaStatus *MetaSatus = new NsApplicationContentMetaStatus[100U]; NsApplicationContentMetaStatus *MetaSatus = new NsApplicationContentMetaStatus[100U];
s32 out; s32 out;
nsListApplicationContentMetaStatus(tid, 0, MetaSatus, 100, &out); nsListApplicationContentMetaStatus(tid, 0, MetaSatus, 100, &out);