title ids: go all in on ncm::TitleId

This commit is contained in:
Michael Scire 2019-07-02 20:53:44 -07:00
parent c9dc24cce1
commit d7d7cba3d3
9 changed files with 388 additions and 236 deletions

View File

@ -41,12 +41,11 @@
#include "stratosphere/results.hpp"
#include "stratosphere/title_ids.hpp"
#include "stratosphere/on_crash.hpp"
#include "stratosphere/cfg.hpp"
#include "stratosphere/hid.hpp"
#include "stratosphere/ncm.hpp"
#include "stratosphere/pm.hpp"
#include "stratosphere/rnd.hpp"
#include "stratosphere/util.hpp"

View File

@ -19,23 +19,24 @@
#include <atomic>
#include <stratosphere.hpp>
#include "../ncm.hpp"
#include "mitm_query_service.hpp"
class IMitmServiceObject : public IServiceObject {
protected:
std::shared_ptr<Service> forward_service;
u64 process_id = 0;
u64 title_id = 0;
sts::ncm::TitleId title_id = sts::ncm::TitleId::Invalid;
public:
IMitmServiceObject(std::shared_ptr<Service> s, u64 pid) : forward_service(s), process_id(pid) {
MitmQueryUtils::GetAssociatedTidForPid(this->process_id, &this->title_id);
}
virtual u64 GetTitleId() {
virtual sts::ncm::TitleId GetTitleId() const {
return this->title_id;
}
virtual u64 GetProcessId() {
virtual u64 GetProcessId() const {
return this->process_id;
}

View File

@ -17,11 +17,12 @@
#pragma once
#include <switch.h>
#include <stratosphere.hpp>
#include "../ncm.hpp"
namespace MitmQueryUtils {
Result GetAssociatedTidForPid(u64 pid, u64 *tid);
Result GetAssociatedTidForPid(u64 pid, sts::ncm::TitleId *tid);
void AssociatePidToTid(u64 pid, u64 tid);
void AssociatePidToTid(u64 pid, sts::ncm::TitleId tid);
}
template <typename T>
@ -34,12 +35,12 @@ class MitmQueryService : public IServiceObject {
protected:
void ShouldMitm(Out<bool> should_mitm, u64 pid) {
should_mitm.SetValue(false);
u64 tid = 0;
sts::ncm::TitleId tid = sts::ncm::TitleId::Invalid;
if (R_SUCCEEDED(MitmQueryUtils::GetAssociatedTidForPid(pid, &tid))) {
should_mitm.SetValue(T::ShouldMitm(pid, tid));
}
}
void AssociatePidToTid(u64 pid, u64 tid) {
void AssociatePidToTid(u64 pid, sts::ncm::TitleId tid) {
MitmQueryUtils::AssociatePidToTid(pid, tid);
}
public:

View File

@ -37,45 +37,395 @@ namespace sts::ncm {
inline explicit operator u64() const {
return this->value;
}
};
static constexpr TitleId InvalidTitleId = {};
inline bool operator==(const TitleId &lhs, const TitleId &rhs) {
/* Invalid Title ID. */
static const TitleId Invalid;
/* System Modules. */
static const TitleId SystemStart;
static const TitleId Fs;
static const TitleId Loader;
static const TitleId Ncm;
static const TitleId Pm;
static const TitleId Sm;
static const TitleId Boot;
static const TitleId Usb;
static const TitleId Tma;
static const TitleId Boot2;
static const TitleId Settings;
static const TitleId Bus;
static const TitleId Bluetooth;
static const TitleId Bcat;
static const TitleId Dmnt;
static const TitleId Friends;
static const TitleId Nifm;
static const TitleId Ptm;
static const TitleId Shell;
static const TitleId BsdSockets;
static const TitleId Hid;
static const TitleId Audio;
static const TitleId LogManager;
static const TitleId Wlan;
static const TitleId Cs;
static const TitleId Ldn;
static const TitleId NvServices;
static const TitleId Pcv;
static const TitleId Ppc;
static const TitleId NvnFlinger;
static const TitleId Pcie;
static const TitleId Account;
static const TitleId Ns;
static const TitleId Nfc;
static const TitleId Psc;
static const TitleId CapSrv;
static const TitleId Am;
static const TitleId Ssl;
static const TitleId Nim;
static const TitleId Cec;
static const TitleId Tspm;
static const TitleId Spl;
static const TitleId Lbl;
static const TitleId Btm;
static const TitleId Erpt;
static const TitleId Time;
static const TitleId Vi;
static const TitleId Pctl;
static const TitleId Npns;
static const TitleId Eupld;
static const TitleId Arp;
static const TitleId Glue;
static const TitleId Eclct;
static const TitleId Es;
static const TitleId Fatal;
static const TitleId Grc;
static const TitleId Creport;
static const TitleId Ro;
static const TitleId Profiler;
static const TitleId Sdb;
static const TitleId Migration;
static const TitleId Jit;
static const TitleId JpegDec;
static const TitleId SafeMode;
static const TitleId Olsc;
static const TitleId Dt;
static const TitleId Nd;
static const TitleId SystemEnd;
/* System Data Archives. */
static const TitleId ArchiveStart;
static const TitleId ArchiveCertStore;
static const TitleId ArchiveErrorMessage;
static const TitleId ArchiveMiiModel;
static const TitleId ArchiveBrowserDll;
static const TitleId ArchiveHelp;
static const TitleId ArchiveSharedFont;
static const TitleId ArchiveNgWord;
static const TitleId ArchiveSsidList;
static const TitleId ArchiveDictionary;
static const TitleId ArchiveSystemVersion;
static const TitleId ArchiveAvatarImage;
static const TitleId ArchiveLocalNews;
static const TitleId ArchiveEula;
static const TitleId ArchiveUrlBlackList;
static const TitleId ArchiveTimeZoneBinar;
static const TitleId ArchiveCertStoreCruiser;
static const TitleId ArchiveFontNintendoExtension;
static const TitleId ArchiveFontStandard;
static const TitleId ArchiveFontKorean;
static const TitleId ArchiveFontChineseTraditional;
static const TitleId ArchiveFontChineseSimple;
static const TitleId ArchiveFontBfcpx;
static const TitleId ArchiveSystemUpdate;
static const TitleId ArchiveFirmwareDebugSettings;
static const TitleId ArchiveBootImagePackage;
static const TitleId ArchiveBootImagePackageSafe;
static const TitleId ArchiveBootImagePackageExFat;
static const TitleId ArchiveBootImagePackageExFatSafe;
static const TitleId ArchiveFatalMessage;
static const TitleId ArchiveControllerIcon;
static const TitleId ArchivePlatformConfigIcosa;
static const TitleId ArchivePlatformConfigCopper;
static const TitleId ArchivePlatformConfigHoag;
static const TitleId ArchiveControllerFirmware;
static const TitleId ArchiveNgWord2;
static const TitleId ArchivePlatformConfigIcosaMariko;
static const TitleId ArchiveApplicationBlackList;
static const TitleId ArchiveRebootlessSystemUpdateVersion;
static const TitleId ArchiveContentActionTable;
static const TitleId ArchiveEnd;
/* System Applets. */
static const TitleId AppletStart;
static const TitleId AppletQlaunch;
static const TitleId AppletAuth;
static const TitleId AppletCabinet;
static const TitleId AppletController;
static const TitleId AppletDataErase;
static const TitleId AppletError;
static const TitleId AppletNetConnect;
static const TitleId AppletPlayerSelect;
static const TitleId AppletSwkbd;
static const TitleId AppletMiiEdit;
static const TitleId AppletWeb;
static const TitleId AppletShop;
static const TitleId AppletOverlayDisp;
static const TitleId AppletPhotoViewer;
static const TitleId AppletSet;
static const TitleId AppletOfflineWeb;
static const TitleId AppletLoginShare;
static const TitleId AppletWifiWebAuth;
static const TitleId AppletStarter;
static const TitleId AppletMyPage;
static const TitleId AppletPlayReport;
static const TitleId AppletMaintenanceMenu;
static const TitleId AppletGift;
static const TitleId AppletDummyShop;
static const TitleId AppletUserMigration;
static const TitleId AppletEncounter;
static const TitleId AppletStory;
static const TitleId AppletEnd;
/* Debug Applets. */
/* Debug Modules. */
/* Factory Setup. */
/* Applications. */
static const TitleId ApplicationStart;
static const TitleId ApplicationEnd;
/* Atmosphere Extensions. */
static const TitleId AtmosphereMitm;
};
/* Invalid Title ID. */
inline constexpr const TitleId TitleId::Invalid = {};
/* System Modules. */
inline constexpr const TitleId TitleId::SystemStart = { 0x0100000000000000ul };
inline constexpr const TitleId TitleId::Fs = { 0x0100000000000000ul };
inline constexpr const TitleId TitleId::Loader = { 0x0100000000000001ul };
inline constexpr const TitleId TitleId::Ncm = { 0x0100000000000002ul };
inline constexpr const TitleId TitleId::Pm = { 0x0100000000000003ul };
inline constexpr const TitleId TitleId::Sm = { 0x0100000000000004ul };
inline constexpr const TitleId TitleId::Boot = { 0x0100000000000005ul };
inline constexpr const TitleId TitleId::Usb = { 0x0100000000000006ul };
inline constexpr const TitleId TitleId::Tma = { 0x0100000000000007ul };
inline constexpr const TitleId TitleId::Boot2 = { 0x0100000000000008ul };
inline constexpr const TitleId TitleId::Settings = { 0x0100000000000009ul };
inline constexpr const TitleId TitleId::Bus = { 0x010000000000000Aul };
inline constexpr const TitleId TitleId::Bluetooth = { 0x010000000000000Bul };
inline constexpr const TitleId TitleId::Bcat = { 0x010000000000000Cul };
inline constexpr const TitleId TitleId::Dmnt = { 0x010000000000000Dul };
inline constexpr const TitleId TitleId::Friends = { 0x010000000000000Eul };
inline constexpr const TitleId TitleId::Nifm = { 0x010000000000000Ful };
inline constexpr const TitleId TitleId::Ptm = { 0x0100000000000010ul };
inline constexpr const TitleId TitleId::Shell = { 0x0100000000000011ul };
inline constexpr const TitleId TitleId::BsdSockets = { 0x0100000000000012ul };
inline constexpr const TitleId TitleId::Hid = { 0x0100000000000013ul };
inline constexpr const TitleId TitleId::Audio = { 0x0100000000000014ul };
inline constexpr const TitleId TitleId::LogManager = { 0x0100000000000015ul };
inline constexpr const TitleId TitleId::Wlan = { 0x0100000000000016ul };
inline constexpr const TitleId TitleId::Cs = { 0x0100000000000017ul };
inline constexpr const TitleId TitleId::Ldn = { 0x0100000000000018ul };
inline constexpr const TitleId TitleId::NvServices = { 0x0100000000000019ul };
inline constexpr const TitleId TitleId::Pcv = { 0x010000000000001Aul };
inline constexpr const TitleId TitleId::Ppc = { 0x010000000000001Bul };
inline constexpr const TitleId TitleId::NvnFlinger = { 0x010000000000001Cul };
inline constexpr const TitleId TitleId::Pcie = { 0x010000000000001Dul };
inline constexpr const TitleId TitleId::Account = { 0x010000000000001Eul };
inline constexpr const TitleId TitleId::Ns = { 0x010000000000001Ful };
inline constexpr const TitleId TitleId::Nfc = { 0x0100000000000020ul };
inline constexpr const TitleId TitleId::Psc = { 0x0100000000000021ul };
inline constexpr const TitleId TitleId::CapSrv = { 0x0100000000000022ul };
inline constexpr const TitleId TitleId::Am = { 0x0100000000000023ul };
inline constexpr const TitleId TitleId::Ssl = { 0x0100000000000024ul };
inline constexpr const TitleId TitleId::Nim = { 0x0100000000000025ul };
inline constexpr const TitleId TitleId::Cec = { 0x0100000000000026ul };
inline constexpr const TitleId TitleId::Tspm = { 0x0100000000000027ul };
inline constexpr const TitleId TitleId::Spl = { 0x0100000000000028ul };
inline constexpr const TitleId TitleId::Lbl = { 0x0100000000000029ul };
inline constexpr const TitleId TitleId::Btm = { 0x010000000000002Aul };
inline constexpr const TitleId TitleId::Erpt = { 0x010000000000002Bul };
inline constexpr const TitleId TitleId::Time = { 0x010000000000002Cul };
inline constexpr const TitleId TitleId::Vi = { 0x010000000000002Dul };
inline constexpr const TitleId TitleId::Pctl = { 0x010000000000002Eul };
inline constexpr const TitleId TitleId::Npns = { 0x010000000000002Ful };
inline constexpr const TitleId TitleId::Eupld = { 0x0100000000000030ul };
inline constexpr const TitleId TitleId::Arp = { 0x0100000000000031ul };
inline constexpr const TitleId TitleId::Glue = { 0x0100000000000031ul };
inline constexpr const TitleId TitleId::Eclct = { 0x0100000000000032ul };
inline constexpr const TitleId TitleId::Es = { 0x0100000000000033ul };
inline constexpr const TitleId TitleId::Fatal = { 0x0100000000000034ul };
inline constexpr const TitleId TitleId::Grc = { 0x0100000000000035ul };
inline constexpr const TitleId TitleId::Creport = { 0x0100000000000036ul };
inline constexpr const TitleId TitleId::Ro = { 0x0100000000000037ul };
inline constexpr const TitleId TitleId::Profiler = { 0x0100000000000038ul };
inline constexpr const TitleId TitleId::Sdb = { 0x0100000000000039ul };
inline constexpr const TitleId TitleId::Migration = { 0x010000000000003Aul };
inline constexpr const TitleId TitleId::Jit = { 0x010000000000003Bul };
inline constexpr const TitleId TitleId::JpegDec = { 0x010000000000003Cul };
inline constexpr const TitleId TitleId::SafeMode = { 0x010000000000003Dul };
inline constexpr const TitleId TitleId::Olsc = { 0x010000000000003Eul };
inline constexpr const TitleId TitleId::Dt = { 0x010000000000003Ful };
inline constexpr const TitleId TitleId::Nd = { 0x0100000000000040ul };
inline constexpr const TitleId TitleId::SystemEnd = { 0x01000000000007FFul };
/* System Data Archives. */
inline constexpr const TitleId TitleId::ArchiveStart = { 0x0100000000000800ul };
inline constexpr const TitleId TitleId::ArchiveCertStore = { 0x0100000000000800ul };
inline constexpr const TitleId TitleId::ArchiveErrorMessage = { 0x0100000000000801ul };
inline constexpr const TitleId TitleId::ArchiveMiiModel = { 0x0100000000000802ul };
inline constexpr const TitleId TitleId::ArchiveBrowserDll = { 0x0100000000000803ul };
inline constexpr const TitleId TitleId::ArchiveHelp = { 0x0100000000000804ul };
inline constexpr const TitleId TitleId::ArchiveSharedFont = { 0x0100000000000805ul };
inline constexpr const TitleId TitleId::ArchiveNgWord = { 0x0100000000000806ul };
inline constexpr const TitleId TitleId::ArchiveSsidList = { 0x0100000000000807ul };
inline constexpr const TitleId TitleId::ArchiveDictionary = { 0x0100000000000808ul };
inline constexpr const TitleId TitleId::ArchiveSystemVersion = { 0x0100000000000809ul };
inline constexpr const TitleId TitleId::ArchiveAvatarImage = { 0x010000000000080Aul };
inline constexpr const TitleId TitleId::ArchiveLocalNews = { 0x010000000000080Bul };
inline constexpr const TitleId TitleId::ArchiveEula = { 0x010000000000080Cul };
inline constexpr const TitleId TitleId::ArchiveUrlBlackList = { 0x010000000000080Dul };
inline constexpr const TitleId TitleId::ArchiveTimeZoneBinar = { 0x010000000000080Eul };
inline constexpr const TitleId TitleId::ArchiveCertStoreCruiser = { 0x010000000000080Ful };
inline constexpr const TitleId TitleId::ArchiveFontNintendoExtension = { 0x0100000000000810ul };
inline constexpr const TitleId TitleId::ArchiveFontStandard = { 0x0100000000000811ul };
inline constexpr const TitleId TitleId::ArchiveFontKorean = { 0x0100000000000812ul };
inline constexpr const TitleId TitleId::ArchiveFontChineseTraditional = { 0x0100000000000813ul };
inline constexpr const TitleId TitleId::ArchiveFontChineseSimple = { 0x0100000000000814ul };
inline constexpr const TitleId TitleId::ArchiveFontBfcpx = { 0x0100000000000815ul };
inline constexpr const TitleId TitleId::ArchiveSystemUpdate = { 0x0100000000000816ul };
inline constexpr const TitleId TitleId::ArchiveFirmwareDebugSettings = { 0x0100000000000818ul };
inline constexpr const TitleId TitleId::ArchiveBootImagePackage = { 0x0100000000000819ul };
inline constexpr const TitleId TitleId::ArchiveBootImagePackageSafe = { 0x010000000000081Aul };
inline constexpr const TitleId TitleId::ArchiveBootImagePackageExFat = { 0x010000000000081Bul };
inline constexpr const TitleId TitleId::ArchiveBootImagePackageExFatSafe = { 0x010000000000081Cul };
inline constexpr const TitleId TitleId::ArchiveFatalMessage = { 0x010000000000081Dul };
inline constexpr const TitleId TitleId::ArchiveControllerIcon = { 0x010000000000081Eul };
inline constexpr const TitleId TitleId::ArchivePlatformConfigIcosa = { 0x010000000000081Ful };
inline constexpr const TitleId TitleId::ArchivePlatformConfigCopper = { 0x0100000000000820ul };
inline constexpr const TitleId TitleId::ArchivePlatformConfigHoag = { 0x0100000000000821ul };
inline constexpr const TitleId TitleId::ArchiveControllerFirmware = { 0x0100000000000822ul };
inline constexpr const TitleId TitleId::ArchiveNgWord2 = { 0x0100000000000823ul };
inline constexpr const TitleId TitleId::ArchivePlatformConfigIcosaMariko = { 0x0100000000000824ul };
inline constexpr const TitleId TitleId::ArchiveApplicationBlackList = { 0x0100000000000825ul };
inline constexpr const TitleId TitleId::ArchiveRebootlessSystemUpdateVersion = { 0x0100000000000826ul };
inline constexpr const TitleId TitleId::ArchiveContentActionTable = { 0x0100000000000827ul };
inline constexpr const TitleId TitleId::ArchiveEnd = { 0x0100000000000FFFul };
/* System Applets. */
inline constexpr const TitleId TitleId::AppletStart = { 0x0100000000001000ul };
inline constexpr const TitleId TitleId::AppletQlaunch = { 0x0100000000001000ul };
inline constexpr const TitleId TitleId::AppletAuth = { 0x0100000000001001ul };
inline constexpr const TitleId TitleId::AppletCabinet = { 0x0100000000001002ul };
inline constexpr const TitleId TitleId::AppletController = { 0x0100000000001003ul };
inline constexpr const TitleId TitleId::AppletDataErase = { 0x0100000000001004ul };
inline constexpr const TitleId TitleId::AppletError = { 0x0100000000001005ul };
inline constexpr const TitleId TitleId::AppletNetConnect = { 0x0100000000001006ul };
inline constexpr const TitleId TitleId::AppletPlayerSelect = { 0x0100000000001007ul };
inline constexpr const TitleId TitleId::AppletSwkbd = { 0x0100000000001008ul };
inline constexpr const TitleId TitleId::AppletMiiEdit = { 0x0100000000001009ul };
inline constexpr const TitleId TitleId::AppletWeb = { 0x010000000000100Aul };
inline constexpr const TitleId TitleId::AppletShop = { 0x010000000000100Bul };
inline constexpr const TitleId TitleId::AppletOverlayDisp = { 0x010000000000100Cul };
inline constexpr const TitleId TitleId::AppletPhotoViewer = { 0x010000000000100Dul };
inline constexpr const TitleId TitleId::AppletSet = { 0x010000000000100Eul };
inline constexpr const TitleId TitleId::AppletOfflineWeb = { 0x010000000000100Ful };
inline constexpr const TitleId TitleId::AppletLoginShare = { 0x0100000000001010ul };
inline constexpr const TitleId TitleId::AppletWifiWebAuth = { 0x0100000000001011ul };
inline constexpr const TitleId TitleId::AppletStarter = { 0x0100000000001012ul };
inline constexpr const TitleId TitleId::AppletMyPage = { 0x0100000000001013ul };
inline constexpr const TitleId TitleId::AppletPlayReport = { 0x0100000000001014ul };
inline constexpr const TitleId TitleId::AppletMaintenanceMenu = { 0x0100000000001015ul };
inline constexpr const TitleId TitleId::AppletGift = { 0x010000000000101Aul };
inline constexpr const TitleId TitleId::AppletDummyShop = { 0x010000000000101Bul };
inline constexpr const TitleId TitleId::AppletUserMigration = { 0x010000000000101Cul };
inline constexpr const TitleId TitleId::AppletEncounter = { 0x010000000000101Dul };
inline constexpr const TitleId TitleId::AppletStory = { 0x0100000000001020ul };
inline constexpr const TitleId TitleId::AppletEnd = { 0x0100000000001FFFul };
/* Debug Applets. */
/* Debug Modules. */
/* Factory Setup. */
/* Applications. */
inline constexpr const TitleId TitleId::ApplicationStart = { 0x0100000000010000ul };
inline constexpr const TitleId TitleId::ApplicationEnd = { 0x01FFFFFFFFFFFFFFul };
/* Atmosphere Extensions. */
inline constexpr const TitleId TitleId::AtmosphereMitm = { 0x010041544D530000ul };
inline constexpr bool operator==(const TitleId &lhs, const TitleId &rhs) {
return lhs.value == rhs.value;
}
inline bool operator!=(const TitleId &lhs, const TitleId &rhs) {
inline constexpr bool operator!=(const TitleId &lhs, const TitleId &rhs) {
return lhs.value != rhs.value;
}
inline bool operator<(const TitleId &lhs, const TitleId &rhs) {
inline constexpr bool operator<(const TitleId &lhs, const TitleId &rhs) {
return lhs.value < rhs.value;
}
inline bool operator<=(const TitleId &lhs, const TitleId &rhs) {
inline constexpr bool operator<=(const TitleId &lhs, const TitleId &rhs) {
return lhs.value <= rhs.value;
}
inline bool operator>(const TitleId &lhs, const TitleId &rhs) {
inline constexpr bool operator>(const TitleId &lhs, const TitleId &rhs) {
return lhs.value > rhs.value;
}
inline bool operator>=(const TitleId &lhs, const TitleId &rhs) {
inline constexpr bool operator>=(const TitleId &lhs, const TitleId &rhs) {
return lhs.value >= rhs.value;
}
inline constexpr bool IsSystemTitleId(const TitleId &title_id) {
return TitleId::SystemStart <= title_id && title_id <= TitleId::SystemEnd;
}
inline constexpr bool IsArchiveTitleId(const TitleId &title_id) {
return TitleId::ArchiveStart <= title_id && title_id <= TitleId::ArchiveEnd;
}
inline constexpr bool IsAppletTitleId(const TitleId &title_id) {
return TitleId::AppletStart <= title_id && title_id <= TitleId::AppletEnd;
}
inline constexpr bool IsApplicationTitleId(const TitleId &title_id) {
return TitleId::ApplicationStart <= title_id && title_id <= TitleId::ApplicationEnd;
}
static_assert(sizeof(TitleId) == sizeof(u64) && std::is_pod<TitleId>::value, "TitleId definition!");
/* Title Location. */
struct TitleLocation {
TitleId title_id;
u8 storage_id;
};
constexpr TitleLocation MakeTitleLocation(TitleId title_id, StorageId storage_id) {
TitleLocation loc = { .title_id = title_id, .storage_id = static_cast<u8>(storage_id) };
return loc;
static constexpr TitleLocation Make(TitleId title_id, StorageId storage_id) {
return { .title_id = title_id, .storage_id = static_cast<u8>(storage_id), };
}
};
static_assert(sizeof(TitleLocation) == 0x10 && std::is_pod<TitleLocation>::value, "TitleLocation definition!");

View File

@ -1,199 +0,0 @@
/*
* Copyright (c) 2018-2019 Atmosphère-NX
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <switch.h>
/* System Modules. */
static constexpr u64 TitleId_SystemStart = 0x0100000000000000ul;
static constexpr u64 TitleId_Fs = 0x0100000000000000ul;
static constexpr u64 TitleId_Loader = 0x0100000000000001ul;
static constexpr u64 TitleId_Ncm = 0x0100000000000002ul;
static constexpr u64 TitleId_Pm = 0x0100000000000003ul;
static constexpr u64 TitleId_Sm = 0x0100000000000004ul;
static constexpr u64 TitleId_Boot = 0x0100000000000005ul;
static constexpr u64 TitleId_Usb = 0x0100000000000006ul;
static constexpr u64 TitleId_Tma = 0x0100000000000007ul;
static constexpr u64 TitleId_Boot2 = 0x0100000000000008ul;
static constexpr u64 TitleId_Settings = 0x0100000000000009ul;
static constexpr u64 TitleId_Bus = 0x010000000000000Aul;
static constexpr u64 TitleId_Bluetooth = 0x010000000000000Bul;
static constexpr u64 TitleId_Bcat = 0x010000000000000Cul;
static constexpr u64 TitleId_Dmnt = 0x010000000000000Dul;
static constexpr u64 TitleId_Friends = 0x010000000000000Eul;
static constexpr u64 TitleId_Nifm = 0x010000000000000Ful;
static constexpr u64 TitleId_Ptm = 0x0100000000000010ul;
static constexpr u64 TitleId_Shell = 0x0100000000000011ul;
static constexpr u64 TitleId_BsdSockets = 0x0100000000000012ul;
static constexpr u64 TitleId_Hid = 0x0100000000000013ul;
static constexpr u64 TitleId_Audio = 0x0100000000000014ul;
static constexpr u64 TitleId_LogManager = 0x0100000000000015ul;
static constexpr u64 TitleId_Wlan = 0x0100000000000016ul;
static constexpr u64 TitleId_Cs = 0x0100000000000017ul;
static constexpr u64 TitleId_Ldn = 0x0100000000000018ul;
static constexpr u64 TitleId_NvServices = 0x0100000000000019ul;
static constexpr u64 TitleId_Pcv = 0x010000000000001Aul;
static constexpr u64 TitleId_Ppc = 0x010000000000001Bul;
static constexpr u64 TitleId_NvnFlinger = 0x010000000000001Cul;
static constexpr u64 TitleId_Pcie = 0x010000000000001Dul;
static constexpr u64 TitleId_Account = 0x010000000000001Eul;
static constexpr u64 TitleId_Ns = 0x010000000000001Ful;
static constexpr u64 TitleId_Nfc = 0x0100000000000020ul;
static constexpr u64 TitleId_Psc = 0x0100000000000021ul;
static constexpr u64 TitleId_CapSrv = 0x0100000000000022ul;
static constexpr u64 TitleId_Am = 0x0100000000000023ul;
static constexpr u64 TitleId_Ssl = 0x0100000000000024ul;
static constexpr u64 TitleId_Nim = 0x0100000000000025ul;
static constexpr u64 TitleId_Cec = 0x0100000000000026ul;
static constexpr u64 TitleId_Tspm = 0x0100000000000027ul;
static constexpr u64 TitleId_Spl = 0x0100000000000028ul;
static constexpr u64 TitleId_Lbl = 0x0100000000000029ul;
static constexpr u64 TitleId_Btm = 0x010000000000002Aul;
static constexpr u64 TitleId_Erpt = 0x010000000000002Bul;
static constexpr u64 TitleId_Time = 0x010000000000002Cul;
static constexpr u64 TitleId_Vi = 0x010000000000002Dul;
static constexpr u64 TitleId_Pctl = 0x010000000000002Eul;
static constexpr u64 TitleId_Npns = 0x010000000000002Ful;
static constexpr u64 TitleId_Eupld = 0x0100000000000030ul;
static constexpr u64 TitleId_Arp = 0x0100000000000031ul;
static constexpr u64 TitleId_Glue = 0x0100000000000031ul;
static constexpr u64 TitleId_Eclct = 0x0100000000000032ul;
static constexpr u64 TitleId_Es = 0x0100000000000033ul;
static constexpr u64 TitleId_Fatal = 0x0100000000000034ul;
static constexpr u64 TitleId_Grc = 0x0100000000000035ul;
static constexpr u64 TitleId_Creport = 0x0100000000000036ul;
static constexpr u64 TitleId_Ro = 0x0100000000000037ul;
static constexpr u64 TitleId_Profiler = 0x0100000000000038ul;
static constexpr u64 TitleId_Sdb = 0x0100000000000039ul;
static constexpr u64 TitleId_Migration = 0x010000000000003Aul;
static constexpr u64 TitleId_Jit = 0x010000000000003Bul;
static constexpr u64 TitleId_JpegDec = 0x010000000000003Cul;
static constexpr u64 TitleId_SafeMode = 0x010000000000003Dul;
static constexpr u64 TitleId_Olsc = 0x010000000000003Eul;
static constexpr u64 TitleId_Dt = 0x010000000000003Ful;
static constexpr u64 TitleId_Nd = 0x0100000000000040ul;
static constexpr u64 TitleId_SystemEnd = 0x01000000000007FFul;
/* System Data Archives. */
static constexpr u64 TitleId_ArchiveStart = 0x0100000000000800ul;
static constexpr u64 TitleId_ArchiveCertStore = 0x0100000000000800ul;
static constexpr u64 TitleId_ArchiveErrorMessage = 0x0100000000000801ul;
static constexpr u64 TitleId_ArchiveMiiModel = 0x0100000000000802ul;
static constexpr u64 TitleId_ArchiveBrowserDll = 0x0100000000000803ul;
static constexpr u64 TitleId_ArchiveHelp = 0x0100000000000804ul;
static constexpr u64 TitleId_ArchiveSharedFont = 0x0100000000000805ul;
static constexpr u64 TitleId_ArchiveNgWord = 0x0100000000000806ul;
static constexpr u64 TitleId_ArchiveSsidList = 0x0100000000000807ul;
static constexpr u64 TitleId_ArchiveDictionary = 0x0100000000000808ul;
static constexpr u64 TitleId_ArchiveSystemVersion = 0x0100000000000809ul;
static constexpr u64 TitleId_ArchiveAvatarImage = 0x010000000000080Aul;
static constexpr u64 TitleId_ArchiveLocalNews = 0x010000000000080Bul;
static constexpr u64 TitleId_ArchiveEula = 0x010000000000080Cul;
static constexpr u64 TitleId_ArchiveUrlBlackList = 0x010000000000080Dul;
static constexpr u64 TitleId_ArchiveTimeZoneBinar = 0x010000000000080Eul;
static constexpr u64 TitleId_ArchiveCertStoreCruiser = 0x010000000000080Ful;
static constexpr u64 TitleId_ArchiveFontNintendoExtension = 0x0100000000000810ul;
static constexpr u64 TitleId_ArchiveFontStandard = 0x0100000000000811ul;
static constexpr u64 TitleId_ArchiveFontKorean = 0x0100000000000812ul;
static constexpr u64 TitleId_ArchiveFontChineseTraditional = 0x0100000000000813ul;
static constexpr u64 TitleId_ArchiveFontChineseSimple = 0x0100000000000814ul;
static constexpr u64 TitleId_ArchiveFontBfcpx = 0x0100000000000815ul;
static constexpr u64 TitleId_ArchiveSystemUpdate = 0x0100000000000816ul;
static constexpr u64 TitleId_ArchiveFirmwareDebugSettings = 0x0100000000000818ul;
static constexpr u64 TitleId_ArchiveBootImagePackage = 0x0100000000000819ul;
static constexpr u64 TitleId_ArchiveBootImagePackageSafe = 0x010000000000081Aul;
static constexpr u64 TitleId_ArchiveBootImagePackageExFat = 0x010000000000081Bul;
static constexpr u64 TitleId_ArchiveBootImagePackageExFatSafe = 0x010000000000081Cul;
static constexpr u64 TitleId_ArchiveFatalMessage = 0x010000000000081Dul;
static constexpr u64 TitleId_ArchiveControllerIcon = 0x010000000000081Eul;
static constexpr u64 TitleId_ArchivePlatformConfigIcosa = 0x010000000000081Ful;
static constexpr u64 TitleId_ArchivePlatformConfigCopper = 0x0100000000000820ul;
static constexpr u64 TitleId_ArchivePlatformConfigHoag = 0x0100000000000821ul;
static constexpr u64 TitleId_ArchiveControllerFirmware = 0x0100000000000822ul;
static constexpr u64 TitleId_ArchiveNgWord2 = 0x0100000000000823ul;
static constexpr u64 TitleId_ArchivePlatformConfigIcosaMariko = 0x0100000000000824ul;
static constexpr u64 TitleId_ArchiveApplicationBlackList = 0x0100000000000825ul;
static constexpr u64 TitleId_ArchiveRebootlessSystemUpdateVersion = 0x0100000000000826ul;
static constexpr u64 TitleId_ArchiveContentActionTable = 0x0100000000000827ul;
static constexpr u64 TitleId_ArchiveEnd = 0x0100000000000FFFul;
/* System Applets. */
static constexpr u64 TitleId_AppletStart = 0x0100000000001000ul;
static constexpr u64 TitleId_AppletQlaunch = 0x0100000000001000ul;
static constexpr u64 TitleId_AppletAuth = 0x0100000000001001ul;
static constexpr u64 TitleId_AppletCabinet = 0x0100000000001002ul;
static constexpr u64 TitleId_AppletController = 0x0100000000001003ul;
static constexpr u64 TitleId_AppletDataErase = 0x0100000000001004ul;
static constexpr u64 TitleId_AppletError = 0x0100000000001005ul;
static constexpr u64 TitleId_AppletNetConnect = 0x0100000000001006ul;
static constexpr u64 TitleId_AppletPlayerSelect = 0x0100000000001007ul;
static constexpr u64 TitleId_AppletSwkbd = 0x0100000000001008ul;
static constexpr u64 TitleId_AppletMiiEdit = 0x0100000000001009ul;
static constexpr u64 TitleId_AppletWeb = 0x010000000000100Aul;
static constexpr u64 TitleId_AppletShop = 0x010000000000100Bul;
static constexpr u64 TitleId_AppletOverlayDisp = 0x010000000000100Cul;
static constexpr u64 TitleId_AppletPhotoViewer = 0x010000000000100Dul;
static constexpr u64 TitleId_AppletSet = 0x010000000000100Eul;
static constexpr u64 TitleId_AppletOfflineWeb = 0x010000000000100Ful;
static constexpr u64 TitleId_AppletLoginShare = 0x0100000000001010ul;
static constexpr u64 TitleId_AppletWifiWebAuth = 0x0100000000001011ul;
static constexpr u64 TitleId_AppletStarter = 0x0100000000001012ul;
static constexpr u64 TitleId_AppletMyPage = 0x0100000000001013ul;
static constexpr u64 TitleId_AppletPlayReport = 0x0100000000001014ul;
static constexpr u64 TitleId_AppletMaintenanceMenu = 0x0100000000001015ul;
static constexpr u64 TitleId_AppletGift = 0x010000000000101Aul;
static constexpr u64 TitleId_AppletDummyShop = 0x010000000000101Bul;
static constexpr u64 TitleId_AppletUserMigration = 0x010000000000101Cul;
static constexpr u64 TitleId_AppletEncounter = 0x010000000000101Dul;
static constexpr u64 TitleId_AppletStory = 0x0100000000001020ul;
static constexpr u64 TitleId_AppletEnd = 0x0100000000001FFFul;
/* Debug Applets. */
/* Debug Modules. */
/* Factory Setup. */
/* Applications. */
static constexpr u64 TitleId_ApplicationStart = 0x0100000000010000ul;
static constexpr u64 TitleId_ApplicationEnd = 0x01FFFFFFFFFFFFFFul;
/* Target Tools. */
/* Helper functions. */
static inline bool TitleIdIsSystem(const u64 title_id) {
return TitleId_SystemStart <= title_id && title_id <= TitleId_SystemEnd;
}
static inline bool TitleIdIsArchive(const u64 title_id) {
return TitleId_ArchiveStart <= title_id && title_id <= TitleId_ArchiveEnd;
}
static inline bool TitleIdIsApplet(const u64 title_id) {
return TitleId_AppletStart <= title_id && title_id <= TitleId_AppletEnd;
}
static inline bool TitleIdIsApplication(const u64 title_id) {
return TitleId_ApplicationStart <= title_id && title_id <= TitleId_ApplicationEnd;
}

View File

@ -59,7 +59,7 @@ namespace sts::cfg {
.key_combination = KEY_R,
.override_by_default = false,
},
.title_id = {TitleId_AppletPhotoViewer},
.title_id = ncm::TitleId::AppletPhotoViewer,
.override_any_app = true,
};
@ -219,7 +219,7 @@ namespace sts::cfg {
}
/* For system modules and anything launched before the home menu, always override. */
if (static_cast<u64>(title_id) < TitleId_AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId{TitleId_AppletQlaunch})) {
if (title_id < ncm::TitleId::AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId::AppletQlaunch)) {
return true;
}
@ -237,7 +237,7 @@ namespace sts::cfg {
}
/* For system modules and anything launched before the home menu, always override. */
if (static_cast<u64>(title_id) < TitleId_AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId{TitleId_AppletQlaunch})) {
if (title_id < ncm::TitleId::AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId::AppletQlaunch)) {
return true;
}
@ -258,7 +258,7 @@ namespace sts::cfg {
}
/* For system modules and anything launched before the home menu, always override. */
if (static_cast<u64>(title_id) < TitleId_AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId{TitleId_AppletQlaunch})) {
if (title_id < ncm::TitleId::AppletStart || !pm::info::HasLaunchedTitle(ncm::TitleId::AppletQlaunch)) {
*out_hbl = false;
*out_title = true;
return;
@ -292,12 +292,11 @@ namespace sts::cfg {
/* HBL Configuration utilities. */
bool IsHblTitleId(ncm::TitleId title_id) {
return (g_hbl_override_config.override_any_app && TitleIdIsApplication(static_cast<u64>(title_id))) || (title_id == g_hbl_override_config.title_id);
return (g_hbl_override_config.override_any_app && ncm::IsApplicationTitleId(title_id)) || (title_id == g_hbl_override_config.title_id);
}
const char *GetHblPath() {
return g_hbl_sd_path;
}
}

View File

@ -39,7 +39,7 @@ namespace sts::hid {
Result EnsureHidInitialized() {
if (!g_initialized_hid) {
if (!serviceIsActive(hidGetSessionService())) {
if (!pm::info::HasLaunchedTitle(ncm::TitleId{TitleId_Hid})) {
if (!pm::info::HasLaunchedTitle(ncm::TitleId::Hid)) {
return MAKERESULT(Module_Libnx, LibnxError_InitFail_HID);
}
InitializeHid();

View File

@ -22,12 +22,12 @@ static std::vector<u64> g_known_pids;
static std::vector<u64> g_known_tids;
static HosMutex g_pid_tid_mutex;
Result MitmQueryUtils::GetAssociatedTidForPid(u64 pid, u64 *tid) {
Result MitmQueryUtils::GetAssociatedTidForPid(u64 pid, sts::ncm::TitleId *tid) {
std::scoped_lock lk(g_pid_tid_mutex);
for (unsigned int i = 0; i < g_known_pids.size(); i++) {
if (g_known_pids[i] == pid) {
*tid = g_known_tids[i];
*tid = sts::ncm::TitleId{g_known_tids[i]};
return ResultSuccess;
}
}
@ -35,9 +35,9 @@ Result MitmQueryUtils::GetAssociatedTidForPid(u64 pid, u64 *tid) {
return ResultAtmosphereMitmProcessNotAssociated;
}
void MitmQueryUtils::AssociatePidToTid(u64 pid, u64 tid) {
void MitmQueryUtils::AssociatePidToTid(u64 pid, sts::ncm::TitleId tid) {
std::scoped_lock lk(g_pid_tid_mutex);
g_known_pids.push_back(pid);
g_known_tids.push_back(tid);
g_known_tids.push_back(static_cast<u64>(tid));
}

View File

@ -18,9 +18,10 @@
#include <switch.h>
#include <stratosphere.hpp>
WEAK sts::ncm::TitleId __stratosphere_title_id = sts::ncm::TitleId::Invalid;
extern "C" {
__attribute__((weak)) u64 __stratosphere_title_id = 0;
void __attribute__((weak)) __libstratosphere_exception_handler(AtmosphereFatalErrorContext *ctx);
void WEAK __libstratosphere_exception_handler(AtmosphereFatalErrorContext *ctx);
/* Redefine abort, so that it triggers these handlers. */
void abort();
@ -43,7 +44,7 @@ void StratosphereCrashHandler(ThreadExceptionDump *ctx) {
{
ams_ctx.magic = AtmosphereFatalErrorMagic;
ams_ctx.error_desc = ctx->error_desc;
ams_ctx.title_id = __stratosphere_title_id;
ams_ctx.title_id = static_cast<u64>(__stratosphere_title_id);
for (size_t i = 0; i < AtmosphereFatalErrorNumGprs; i++) {
ams_ctx.gprs[i] = ctx->cpu_gprs[i].x;
}
@ -119,7 +120,7 @@ void StratosphereCrashHandler(ThreadExceptionDump *ctx) {
}
/* Default exception handler behavior. */
void __attribute__((weak)) __libstratosphere_exception_handler(AtmosphereFatalErrorContext *ctx) {
void WEAK __libstratosphere_exception_handler(AtmosphereFatalErrorContext *ctx) {
R_ASSERT(bpcAmsInitialize());
R_ASSERT(bpcAmsRebootToFatalError(ctx));
bpcAmsExit();