MCPcopy Create free account
hub / github.com/XorTroll/uLaunch / DebugLogApplicationParameters

Function DebugLogApplicationParameters

projects/uSystem/source/main.cpp:203–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

201 alignas(ams::os::MemoryPageSize) constinit u8 g_LibnxHeap[LibnxHeapSize];
202
203 void DebugLogApplicationParameters() {
204 ul::ScopedLock lock(g_CurrentRecordsLock);
205
206 std::vector<u64> app_ids;
207 for(auto &rec: g_CurrentRecords) {
208 app_ids.push_back(rec.id);
209 }
210
211 auto app_views = new NsApplicationView[app_ids.size()];
212 UL_ON_SCOPE_EXIT({ delete[] app_views; });
213 UL_RC_ASSERT(nsGetApplicationView(app_views, app_ids.data(), app_ids.size()));
214
215 for(u32 i = 0; i < app_ids.size(); i++) {
216 auto &view = app_views[i];
217 auto &rec = g_CurrentRecords[i];
218
219 // Test: qlaunch checks these flags on apps
220 uintptr_t a1 = (uintptr_t)std::addressof(view);
221 u8 flags1[12] = {};
222 flags1[0] = *(u32*)(a1 + 12) & 1;
223 flags1[1] = (*(u8 *)(a1 + 12) >> 1) & 1;
224 flags1[2] = (*(u8 *)(a1 + 12) >> 4) & 1;
225 flags1[3] = (*(u8 *)(a1 + 12) >> 5) & 1;
226 flags1[4] = (*(u8 *)(a1 + 12) >> 6) & 1;
227 flags1[5] = *(u8 *)(a1 + 12) >> 7;
228 flags1[6] = *(u8 *)(a1 + 13) & 1;
229 flags1[7] = (*(u8 *)(a1 + 13) >> 1) & 1;
230 flags1[8] = (*(u8 *)(a1 + 13) >> 2) & 1;
231 flags1[9] = (*(u8 *)(a1 + 13) >> 5) & 1;
232 flags1[10] = (*(u32 *)(a1 + 12) & 0x4C000) != 0;
233 flags1[11] = *(u8 *)(a1 + 13) >> 7;
234 u8 flags2[6] = {};
235 flags2[0] = *(u8 *)(a1 + 14) >> 7;
236 flags2[1] = *(u8 *)(a1 + 14) & 1;
237 flags2[2] = (*(u8 *)(a1 + 14) >> 1) & 1;
238 flags2[3] = ((*(u32 *)(a1 + 12) & 0x4C000) != 0) && (*(u8 *)(a1 + 36) == 5); // is waiting commit + other fn
239 flags2[4] = (*(u8 *)(a1 + 14) >> 5) & 1;
240 flags2[5] = (*(u8 *)(a1 + 14) >> 6) & 1;
241 u8 flags3[5] = {};
242 flags3[0] = (u8)(*(NsApplicationView*)a1).unk_x24;
243 flags3[1] = (u8)((*(NsApplicationView*)a1).unk_x24 >> 8);
244 flags3[2] = (*(NsApplicationView*)a1).unk_x26[0];
245 flags3[3] = (*(NsApplicationView*)a1).unk_x45[0];
246 flags3[4] = (*(NsApplicationView*)a1).unk_x44;
247
248 std::string flagbits;
249 for(u32 i = 0; i < 12; i++) {
250 if(flags1[i] != 0) {
251 flagbits += "1";
252 }
253 else {
254 flagbits += "0";
255 }
256 }
257
258 flagbits += "-";
259 for(u32 i = 0; i < 6; i++) {
260 if(flags2[i] != 0) {

Callers 1

InitializeFunction · 0.85

Calls 2

FormatResultDisplayFunction · 0.85
FormatProgramIdFunction · 0.85

Tested by

no test coverage detected