What's new

C/C++ Title ID Checking [2 Examples] & [2] Ways of doing it.

  • Thread starter nicholasbroo
  • Start date
  • Views 2,288
nicholasbroo

nicholasbroo

Knowledge maybe Power, but Respect matters.
Legendary Veteran 10th Anniversary Fabled Veteran
Messages
3,265
Reaction score
2,084
Points
812
Sin$
7
What is this used for?
Well, like shinda said, you could 'search' a game upon execution or you simply can be like me and debug on game execution. But that's just me.
Well, you can use it to use it for game detection.

These are the types of posts, I feel that need some education.
So, I say screw it and release a tutorial to learn. Not Flaming, just saying. We all gotta learn sometime.

Before we start this tutorial in regular today, I'd like to just say this please.
  • I will not allow flaming here, only constructive criticism, anything more and your post will be reported, ignored and deleted.
Thank you.

Anyways let's get started.
Credits: CHEMO - 3k TID Dump for the Example used below.

  • Always, Use the Xbox360's SDK documentation & XAM.xex research at your advantage over everything. It may save you one day. I cannot stress this enough.
A few examples. [Crucial]
S7 Pro
S7 Pro's way: The smart way.
Call: XamGetCurrentTitleId and cross-check.


SDK:
C++:
NTSYSAPI              //__declspec(dllimport)
   EXPORTNUM(463) //0x1CF ResolveFunction Export
   DWORD              //Storage Type
   NTAPI                //__stdcall
   XamGetCurrentTitleId(
     VOID
   );
C++:
void CheckCurrentTID()
DWORD Status = XamGetCurrentTitleId();
if(Status == 0xFFFE07D1)
{
DbgPrint("You are currently on the dashboard.");
}
else
{
//Return our TID
DbgPrint("[NickH4X] Detected a Title Identification Change: 0x%08X\n", Status);
}

MY WAY [2 examples]
Nicholasbroo's way: The optional way.
Call: XamGetCurrentTitleId and cross-check.


Here's a great example from above, let's check if the following games are running when we play them. Credit to CHEMO for the post.
Code:
62 - 555307D5 - Ghost Recon Advanced Warfighter
63 - 555307F0 - Ghost Recon Advanced Warfighter 2
64 - 545407F2 - Grand Theft Auto IV
65 - 415607D3 - Gun
66 - 4D53880C - Halo 3 Beta
67 - 584107E2 - Hardwood Backgammon
68 - 584107D3 - Hardwood Hearts
69 - 584107E4 - Hardwood Spades
70 - 584107D1 - Hexic HD
71 - 534307DB - Hitman: Blood Money
72 - 584107EA - Jewel Quest

For Multiple title names and you want to really just be smarter just return the char. [%s]
Pros: - Saves so much time from writing it all the time. Trust me.
C++:
void CheckCurrentTID()
char GRAW[]="Ghost Recon Advanced Warfighter";
char HardWood[]="Hardwood";
DWORD Status = XamGetCurrentTitleId(); //Setup our Storage for status.
switch(Status)
{
case 0xFFFE07D1: DbgPrint("You are currently on the dashboard."); break;
case 0x555307F0: DbgPrint("You are currently playing: %s.", GRAW); break;
case 0x555307D5: DbgPrint("You are currently playing: %s 2.", GRAW); break;
case 0x545407F2: DbgPrint("You are currently playing: Grand Theft Auto IV."); break;
case 0x415607D3: DbgPrint("You are currently playing: Gun."); break;
case 0x4D53880C: DbgPrint("You are currently playing: Halo 3 Beta."); break;
case 0x584107E2: DbgPrint("You are currently playing: %s Backgammon.", HardWood); break;
case 0x584107D3: DbgPrint("You are currently playing: %s Hearts.", HardWood); break;
case 0x584107E4: DbgPrint("You are currently playing: %s Spades.", HardWood); break;
case 0x584107D1: DbgPrint("You are currently playing: Hexic HD."); break;
case 0x534307DB: DbgPrint("You are currently playing: Hitman: Blood Money."); break;
case 0x584107EA: DbgPrint("You are currently playing: Jewel Quest."); break;
case default: DbgPrint("[NickH4X] Detected a Title Identification Change: 0x%08X\n", Status); break;
}

Or you can write them out like this.
C++:
void CheckCurrentTID()
DWORD Status = XamGetCurrentTitleId(); //Setup our Storage for status.
switch(Status)
{
case 0xFFFE07D1: DbgPrint("You are currently on the dashboard."); break;
case 0x555307F0: DbgPrint("You are currently playing: Ghost Recon Advanced Warfighter."); break;
case 0x555307D5: DbgPrint("You are currently playing: Ghost Recon Advanced Warfighter 2."); break;
case 0x545407F2: DbgPrint("You are currently playing: Grand Theft Auto IV."); break;
case 0x415607D3: DbgPrint("You are currently playing: Gun."); break;
case 0x4D53880C: DbgPrint("You are currently playing: Halo 3 Beta."); break;
case 0x584107E2: DbgPrint("You are currently playing: Hardwood Backgammon."); break;
case 0x584107D3: DbgPrint("You are currently playing: Hardwood Hearts."); break;
case 0x584107E4: DbgPrint("You are currently playing: Hardwood Spades."); break;
case 0x584107D1: DbgPrint("You are currently playing: Hexic HD."); break;
case 0x534307DB: DbgPrint("You are currently playing: Hitman: Blood Money."); break;
case 0x584107EA: DbgPrint("You are currently playing: Jewel Quest."); break;
case default: DbgPrint("[NickH4X] Detected a Title Identification Change: 0x%08X\n", Status); break;
}

Call: XamIsCurrentTitleDash and cross-check.
SDK:
C++:
   NTSYSAPI          //__declspec(dllimport)
   EXPORTNUM(462)//0x1CE ResolveFunction Export
   BOOL                 //Storage Type
   NTAPI                //__stdcall
   XamIsCurrentTitleDash(
     VOID
   );

C++:
BOOL isUserDashBoarded() //Setup our Boolean
{
  BOOL Dashboard = XamIsCurrentTitleDash();
  if(Dashboard != TRUE) //Check if not equal to true.
  {
    DbgPrint("We're not on the Xbox360 dashboard.");
  }
}

THE LOG
C++:
xbWatson: Xbox is restarting
Response: 0x01 -> Showing System Menu 2.
Response: 0x03. -> Checking profile status.
[XBL Account Status] ***** This account is signed into live. Have fun on Project Liberation v15. *****
[XBL Account] Signed in Gamertag: AssuredCone7452
[XBL Account] AssuredCone7452's XUID = 0x000901F
[XBL Signon State]: Online, Profile signed in to XBL.
xbWatson: Xbox is restarting
xbWatson: Xbox is restarting
[NickH4X] Detected a Title Identification Change: 0x4D53085B
Atlas, 711, Walmart, The Coon, DonQModz, Professional,Sombra, CHEMO, DoX Hoster, Metal, zzRiderBeeezz, Lt Boso
 
Last edited:
ImOx

ImOx

(^._.^)ノ
Retired
Programmer MotM Platinum Record
Messages
9,961
Reaction score
2,963
Points
2,180
Sin$
0
Hoi, what do you type in [code=-->HERE<---][/code] to get C++ syntax highlighting?
I've forgotten and it really pisses me off that I can't remember what it is.
 
Z61

Z61

Some times our saints are sinners
Retired
Programmer Forum Addict Odysseus' Summit
Messages
5,468
Reaction score
3,429
Points
1,042
Sin$
0
Hoi, what do you type in [code=-->HERE<---][/code] to get C++ syntax highlighting?
I've forgotten and it really pisses me off that I can't remember what it is.
Pretty sure it's
Code:
[code=cpp]
 
nicholasbroo

nicholasbroo

Knowledge maybe Power, but Respect matters.
Legendary Veteran 10th Anniversary Fabled Veteran
Messages
3,265
Reaction score
2,084
Points
812
Sin$
7
Hoi, what do you type in [code=-->HERE<---][/code] to get C++ syntax highlighting?
I've forgotten and it really pisses me off that I can't remember what it is.
haha, you just use 'cpp' after the code= :smile: Sorry, I couldn't get here sooner. Been, working on lib and have friends over.Thank you Z61 Z61 .
 
Kebob

Kebob

Enthusiast
Messages
386
Reaction score
82
Points
95
Sin$
7
Nice to see some people sharing knowledge, only thing is in the 'Smart' way you have a bug. Your if statement is checking the assignment of the Status variable which will always be true. Just a typo I'm sure but it should be '==' in there instead of '='.
 
nicholasbroo

nicholasbroo

Knowledge maybe Power, but Respect matters.
Legendary Veteran 10th Anniversary Fabled Veteran
Messages
3,265
Reaction score
2,084
Points
812
Sin$
7
Nice to see some people sharing knowledge, only thing is in the 'Smart' way you have a bug. Your if statement is checking the assignment of the Status variable which will always be true. Just a typo I'm sure but it should be '==' in there instead of '='.
Thanks for noticing that. I wrote this all in a hurry and didn't double check.
 
coder

coder

dat crazy duck
Modder
Messages
2,896
Reaction score
2,087
Points
573
Sin$
0
The most simple way is to read the memory area in xam.xex where it stores the titleID.
 
Top Bottom
Login
Register