#include <xtl.h>
#include "kernel.h"
XOVERLAPPED g_xol;
HANDLE hThread; DWORD hThreadId;
HANDLE hTh01 = 0; DWORD hThId01 = 0;
// -------------------------------------------------------------------------------
//Tekken Tag Tournament 2 NoTU Codes
DWORD GameId = 0x4E4D0859; // GameId
BOOL TrOpt01 = FALSE;
BYTE HP1_chk[] = {0x00};
BYTE HP1_on[] = {0x00, 0xB4, 0x00, 0x00};
BYTE HP2_chk[] = {0x00};
BYTE HP2_on[] = {0x00, 0xE6, 0x00, 0x00};
BOOL TrOpt02 = FALSE;
BYTE health6_mod[] = {0x00, 0x01};
BYTE health8_mod[] = {0x00, 0x01};
BYTE health10_mod[] = {0x00, 0x01};
BOOL TrOpt03 = FALSE;
BYTE points1_mod[] = {0x00, 0x98, 0x96, 0x7F};
BYTE points2_mod[] = {0x00, 0x98, 0x96, 0x7F};
//Max and Infinite G after Buy, code by Vampirexx
BOOL TrOpt04 = FALSE;
BYTE maxg1_mod[] = {0x3D, 0x60, 0x3B, 0x9A};
BYTE maxg2_mod[] = {0x61, 0x6B, 0xC9, 0xFF};
BYTE maxg3_mod[] = {0x7D, 0x6B, 0xFA, 0x14};
BOOL TrOpt05 = FALSE;
BYTE timet_mod[] = {0x03};
BOOL TrOpt06 = FALSE;
BYTE UnlockAllChars1_mod[] = {0x22, 0x22};
BYTE UnlockAllChars2_mod[] = {0x22, 0x22, 0x22};
BOOL TrOpt07 = FALSE;
BYTE UnlockAllStages1_mod[] = {0x22};
BYTE UnlockAllStages2_mod[] = {0x22, 0x22};
BOOL TrOpt08 = FALSE;
BYTE P2disabled_ori[] = {0x02};
BYTE P2disabled_mod[] = {0x00};
// -------------------------------------------------------------------------------
// codes01 thread
static void Codes01(){
while (1){
if (XamGetCurrentTitleId() == GameId){
if (TrOpt01 == TRUE){
GetMem(0x82E68B4D, HP1_chk, 1);
if( (HP1_chk[0] == 0xB4) )
{
DoCheatNv(0x82E68B40, HP1_on, 4);
DoCheatNv(0x82E68B44, HP1_on, 4);
DoCheatNv(0x82E6DCA0, HP1_on, 4);
DoCheatNv(0x82E6DCA4, HP1_on, 4);
}
}
if (TrOpt01 == TRUE){
GetMem(0x82E68B4D, HP1_chk, 1);
if( (HP1_chk[0] == 0xAA) )
{
DoCheatNv(0x82E68B40, HP1_on, 4);
DoCheatNv(0x82E68B44, HP1_on, 4);
DoCheatNv(0x82E6DCA0, HP1_on, 4);
DoCheatNv(0x82E6DCA4, HP1_on, 4);
}
}
if (TrOpt01 == TRUE){
GetMem(0x82E7864D, HP2_chk, 1);
if( (HP2_chk[0] == 0xE6) )
{
DoCheatNv(0x82E68B40, HP2_on, 4);
DoCheatNv(0x82E68B44, HP2_on, 4);
DoCheatNv(0x82E6DCA0, HP2_on, 4);
DoCheatNv(0x82E6DCA4, HP2_on, 4);
}
}
if (TrOpt02 == TRUE){
DoCheatNv(0x82E6B3F4, health6_mod, 2);
DoCheatNv(0x82E70554, health8_mod, 2);
DoCheatNv(0x82E87384, health10_mod, 2);
}
if (TrOpt03 == TRUE){
DoCheatNv(0x82EBC26C, points1_mod, 4);
DoCheatNv(0x82EBC270, points2_mod, 4);
}
if (TrOpt04 == TRUE){
DoCheatNv(0x826E5A24, maxg1_mod, 4);
DoCheatNv(0x826E5A28, maxg2_mod, 4);
DoCheatNv(0x826E5A2C, maxg3_mod, 4);
}
if (TrOpt05 == TRUE){
DoCheatNv(0x82E692EF, timet_mod, 1);
}
if (TrOpt06 == TRUE){
DoCheatNv(0x82E4EFBA, UnlockAllChars1_mod, 2);
DoCheatNv(0x82E4EFBC, UnlockAllChars2_mod, 3);
}
if (TrOpt07 == TRUE){
DoCheatNv(0x82E4F0DB, UnlockAllStages1_mod, 1);
DoCheatNv(0x82E4F0DD, UnlockAllStages2_mod, 2);
}
if (TrOpt08 == TRUE){
XINPUT_STATE state;
XInputGetState(0, &state);
if (state.Gamepad.wButtons == (XINPUT_GAMEPAD_DPAD_LEFT + XINPUT_GAMEPAD_LEFT_SHOULDER + XINPUT_GAMEPAD_RIGHT_SHOULDER)){
DoCheat(0x82E6BB9F, P2disabled_mod, 1);
}
{
if (state.Gamepad.wButtons == (XINPUT_GAMEPAD_DPAD_RIGHT + XINPUT_GAMEPAD_LEFT_SHOULDER+ XINPUT_GAMEPAD_RIGHT_SHOULDER)){
DoCheat(0x82E6BB9F, P2disabled_ori, 1);
}
}
}
}
Sleep(10);
}
}
// main thread
static void Main01(){
DWORD tr0 = 0;
HRESULT hre = 0; DWORD hr = 0;
XINPUT_STATE state; WCHAR r1[512];
ZeroMemory( &state, sizeof(XINPUT_STATE) );
XamGetCurrentTitleId = (UINT32 (*)(void))(ResolveFunct("xam.xex", 463));
while (1){
XInputGetState(0, &state);
// trainer input activation: back + start
if (state.Gamepad.wButtons == (XINPUT_GAMEPAD_BACK + XINPUT_GAMEPAD_START)){
if (XamGetCurrentTitleId() == GameId) {
hre = XShowKeyboardUI(0, VKBD_LATIN_NUMERIC, NULL,
L"[ Trainer Engine by Endel3 ]",
L"- Trainer by MBRKiNG, Vampirexx and optantic - 360haven.com \n"
L"- Enter option: (9 - Disable All) # (1-5 Sinlge Digit = ON, ## = OFF) \n"
L"(1 - P1 Inf Health) # (2 - P1 One Hit Kill) # (3 - Max FightLab Points) \n"
L"(4-Max G when Buy)#(5-InfTime/FightLab)#(6-DLC Characters)#(7-DLCstages) \n"
L"(8-Disable P2(1st Char)LB+RB+Left=On,LB+RB+Right=Off,redo every match)", //(8 - S Rank *use this only in FightLab*)
r1, 512, &g_xol);
while(!XHasOverlappedIoCompleted(&g_xol)) Sleep(25);
if (hre == ERROR_IO_PENDING) hr = _wtoi(r1);
if (tr0 == 0)
{
ExCreateThread(&hTh01, 0, &hThId01, (VOID*)XapiThreadStartup ,
(LPTHREAD_START_ROUTINE)Codes01, NULL, 0x2);
tr0 = 1;
}
switch (hr){
case 1:
TrOpt01 = TRUE;
Vibr01();
break;
case 2:
TrOpt02 = TRUE;
Vibr01();
break;
case 3:
TrOpt03 = TRUE;
Vibr01();
break;
case 4:
TrOpt04 = TRUE;
Vibr01();
break;
case 5:
TrOpt05 = TRUE;
Vibr01();
break;
case 6:
TrOpt06 = TRUE;
Vibr01();
break;
case 7:
TrOpt07 = TRUE;
Vibr01();
break;
case 8:
TrOpt08 = TRUE;
Vibr01();
break;
case 9:
TrOpt01 = FALSE;
TrOpt02 = FALSE;
TrOpt03 = FALSE;
TrOpt04 = FALSE;
TrOpt05 = FALSE;
TrOpt06 = FALSE;
TrOpt07 = FALSE;
TrOpt08 = FALSE;
Vibr01();
break;
case 11:
TrOpt01 = FALSE;
Vibr01();
break;
case 22:
TrOpt02 = FALSE;
Vibr01();
break;
case 33:
TrOpt03 = FALSE;
Vibr01();
break;
case 44:
TrOpt04 = FALSE;
Vibr01();
break;
case 55:
TrOpt05 = FALSE;
Vibr01();
break;
}
}
}
Sleep(60);
}
}
BOOL APIENTRY DllMain(HANDLE hInstDLL, DWORD reason, LPVOID lpReserved){
if(reason == DLL_PROCESS_ATTACH){
DmSetMemoryD = (HRESULT (__cdecl *)(LPVOID, DWORD, LPCVOID, LPDWORD)) (ResolveFunct("xbdm.xex", 40));
if (DmSetMemoryD != 0){
KrnlType = 1; // 1 = dev kernel ; 0 = retail kernel (default)
DmGetMemoryD = (HRESULT (__cdecl *)(LPCVOID, DWORD, LPVOID, LPDWORD)) (ResolveFunct("xbdm.xex", 10));
}
ExCreateThread(&hThread, 0, &hThreadId, (VOID*)XapiThreadStartup , (LPTHREAD_START_ROUTINE)Main01, NULL, 0x2);
XSetThreadProcessor(hThread, 4); ResumeThread(hThread); CloseHandle(hThread);
}
return TRUE;
}