Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hackxor #153

Open
wants to merge 102 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
7a682ce
My mods todate
tomvita Jul 19, 2020
3188b73
fixed the typo TID vs PID
tomvita Jul 19, 2020
dfb27b6
go
tomvita Jul 20, 2020
90df6cc
go
tomvita Jul 20, 2020
091f52e
Move splash screen to before scanning saves to avoid black screen
tomvita Jul 20, 2020
4de1727
with splash change and added abort and plus key to start pointer sear…
tomvita Jul 20, 2020
8aecba4
partial offset save implementation done
tomvita Jul 20, 2020
ed52cb6
bookmark OK
tomvita Jul 21, 2020
550fc7f
Bookmark edit label OK
tomvita Jul 21, 2020
c35845d
bookmark delete done
tomvita Jul 21, 2020
5c1c993
bug fix on higher order byte not clear for less than 64 bit type
tomvita Jul 21, 2020
b99e0df
Add bookmark from code done
tomvita Jul 21, 2020
c8bb465
Update README.md
tomvita Jul 22, 2020
66607e6
Update README.md
tomvita Jul 22, 2020
1169b36
Update README.md
tomvita Jul 22, 2020
5b5777b
Minor bug fixes
tomvita Jul 22, 2020
d179752
rebase 1st half
tomvita Jul 22, 2020
ee5e831
ready for rebasing pointer chain
tomvita Jul 23, 2020
1b67c10
rebase of cheat code done, now to write code to file
tomvita Jul 23, 2020
342d3fc
Update README.md
tomvita Jul 23, 2020
ecb9766
Write code back to file
tomvita Jul 24, 2020
03de083
Cheat code writeback done
tomvita Jul 24, 2020
1fc8d62
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Jul 24, 2020
ad0fad1
refactored pointersearch 2 function the same as pointersearch ready f…
tomvita Jul 25, 2020
fe9316f
fix bookmark add from pointer search bug
tomvita Jul 25, 2020
0b4e839
Tool bug? Strange that this change solved the crash
tomvita Jul 25, 2020
84d63cb
use ZL as shift key
tomvita Jul 25, 2020
3e8016d
Dynamic bookmark and pointer chain resolution display
tomvita Jul 26, 2020
7dfe321
Update README.md
tomvita Jul 26, 2020
889b0c3
Update README.md
tomvita Jul 26, 2020
0a9f3e8
static code type support for transfer between bookmark and cheat code
tomvita Jul 27, 2020
253f3b8
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Jul 27, 2020
1ec36a0
No more compiler warnings
tomvita Jul 27, 2020
26951a6
pause resume and status for pointer search done
tomvita Jul 27, 2020
1df417d
check for wait for file delete complete
tomvita Jul 28, 2020
683fa5f
Update README.md
tomvita Jul 29, 2020
76e790a
Update README.md
tomvita Jul 29, 2020
cb0552c
Update README.md
tomvita Jul 29, 2020
8e0f9e9
Update README.md
tomvita Jul 29, 2020
053507c
Update README.md
tomvita Jul 29, 2020
7fbedeb
Update README.md
tomvita Jul 29, 2020
192963a
Update README.md
tomvita Jul 29, 2020
a0529e9
Update README.md
tomvita Jul 29, 2020
0cb2d02
Update README.md
tomvita Jul 29, 2020
7db6970
Update README.md
tomvita Jul 29, 2020
b4098b3
Update README.md
tomvita Jul 29, 2020
53168c9
Update README.md
tomvita Jul 29, 2020
a6028d1
Sort sources by distance and limite Max num of offsets, preserve sear…
tomvita Jul 30, 2020
1b31c55
PC dump done
tomvita Jul 31, 2020
54cc9d9
export to pointersearcher SE
tomvita Aug 3, 2020
ce4ce31
Import Bookmark done
tomvita Aug 4, 2020
2da3e33
Update README.md
tomvita Aug 5, 2020
cc445f1
Update README.md
tomvita Aug 5, 2020
ca0f7c8
ACNH use #define HAVESAVE false
tomvita Aug 6, 2020
974ae37
Minor UI bug fix
tomvita Aug 6, 2020
f54bfd7
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Aug 6, 2020
0b763c3
Stability improvement on known value search
tomvita Aug 7, 2020
7f97f39
reloadcheats & dumpcodetofile
tomvita Aug 10, 2020
f57ce4f
reloadcheatsfromfile written, not tested, decided to continue with mo…
tomvita Aug 10, 2020
6bbabdb
noicon config
tomvita Aug 10, 2020
e0a3458
Change
tomvita Aug 10, 2020
26932ce
dumpcodetofile bug fix
tomvita Aug 11, 2020
ce67d2a
Bookmark added from memory editor inherit pointer chain that was used…
tomvita Aug 12, 2020
ba9cdf2
include code static with MAIN search
tomvita Aug 12, 2020
c41604f
bug fix
tomvita Aug 12, 2020
a173590
show version and some bug fix
tomvita Aug 15, 2020
577c721
ZL + B ForceCloseCheatProcess
tomvita Aug 15, 2020
e68410f
ZL+B toggle dmnt
tomvita Aug 15, 2020
db9d721
fix a splash screen display bug
tomvita Aug 16, 2020
a0b58e0
fix a splash screen display bug
tomvita Aug 16, 2020
9628a13
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Aug 16, 2020
7a31405
UI improvements
tomvita Aug 16, 2020
0534cc0
UI bug fixs and improvements
tomvita Aug 18, 2020
187f03b
cheat code delete
tomvita Aug 18, 2020
d1d8e70
UI fix
tomvita Aug 18, 2020
ab22925
UI fix
tomvita Aug 18, 2020
70c8db6
show conditional button
tomvita Aug 21, 2020
ec08aec
simple conditional button add/ remove/ edit
tomvita Aug 21, 2020
405b3b4
update version no.
tomvita Aug 21, 2020
b1e6256
Update README.md
tomvita Aug 21, 2020
6cfa20c
Check total opcodes when toggling cheat
tomvita Aug 27, 2020
9470b31
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Aug 27, 2020
4e5e407
enable 32 bit pointer mode
tomvita Aug 30, 2020
c59a688
support 32bit pointer for add cheat code to file
tomvita Sep 1, 2020
3282efd
Icon for ACNH
tomvita Sep 1, 2020
ff25455
show save for last title used only
tomvita Sep 2, 2020
dc01c40
bug fix
tomvita Sep 2, 2020
3a21c4d
PC dump with compression
tomvita Sep 10, 2020
7bc9412
Update README.md
tomvita Sep 18, 2020
d64fc28
fixed title info for mario 3d
tomvita Sep 19, 2020
e5cb93e
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Sep 19, 2020
6fb2147
Update README.md
tomvita Sep 25, 2020
ead8118
Update README.md
tomvita Sep 25, 2020
c0eb700
envIsSyscallHinted
tomvita Sep 26, 2020
178abe8
allow function without dmnt
tomvita Sep 26, 2020
05c75b0
Merge branch 'master' of https://github.com/tomvita/EdiZon
tomvita Sep 26, 2020
a7a0766
mask out zero and pointers from DIFF search
tomvita Sep 27, 2020
a892cd7
Not masking out zero for DIFF
tomvita Sep 27, 2020
baf0ad9
xor hack
tomvita Sep 28, 2020
5f27122
search don't stop
tomvita Sep 28, 2020
6ec9dd4
bookmark bug
tomvita Sep 30, 2020
53aa6f2
fix pcdump bug
tomvita Oct 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
pause resume and status for pointer search done
tomvita committed Jul 27, 2020
commit 26951a67b47f6e8cab8697959b23c7fed6ed47af
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ include $(DEVKITPRO)/libnx/switch_rules
#---------------------------------------------------------------------------------
VERSION_MAJOR := 3
VERSION_MINOR := 5
VERSION_MICRO := 7
VERSION_MICRO := 8
NIGHTLY :=

APP_TITLE := EdiZon SE
13 changes: 11 additions & 2 deletions include/guis/gui_cheats.hpp
Original file line number Diff line number Diff line change
@@ -119,7 +119,7 @@ class GuiCheats : public Gui
#define MAX_POINTER_TARGET 3
struct PointerSearch_state
{
// u64 depth = 0; // depth and index[depth] is where the search is at, pointersearch2 will increment depth and call itself with nexttarget
u64 depth = 0; // depth and index[depth] is where the search is at, pointersearch2 will increment depth and call itself with nexttarget
u64 index[MAX_POINTER_DEPTH + 1] = {0}; // when there is a hit retrieve the offsets with indexs and sources[index].offset
u64 num_offsets[MAX_POINTER_DEPTH + 1] = {0}; // for analysis
u64 num_sources[MAX_POINTER_DEPTH + 1] = {0}; // this is how we will go down the column
@@ -129,14 +129,23 @@ class GuiCheats : public Gui
void startpointersearch2(u64 targetaddress);
void pointersearch2(u64 targetaddress, u64 depth);
void resumepointersearch2();
bool m_pointersearch_done = false;
bool m_pointersearch_canresume = false;
bool m_PS_resume = false;
bool m_PS_pause = false;
#define PS_depth depth
#define PS_index m_PointerSearch->index[PS_depth]
// #define PS_indexP m_PointerSearch->index[PS_depth-1]
#define PS_num_offsets m_PointerSearch->num_offsets[PS_depth]
#define PS_num_sources m_PointerSearch->num_sources[PS_depth]
// #define PS_num_sourcesP m_PointerSearch->num_sources[PS_depth-1]
#define PS_sources m_PointerSearch->sources[PS_depth]
#define PS_lastdepth m_PointerSearch->depth
#define REPLACEFILE(file1,file2) remove(file2);\
while (access(file2, F_OK) == 0)\
{ printf("waiting for delete %s\n",file2); } \
rename(file1,file2);\
while (access(file2, F_OK) != 0)\
{ printf("waiting for rename %s\n",file1); }

bool m_forwardonly = false;
bool m_forwarddump = false; // reduce from 138 to 26
248 changes: 155 additions & 93 deletions source/guis/gui_cheats.cpp
Original file line number Diff line number Diff line change
@@ -275,16 +275,17 @@ GuiCheats::GuiCheats() : Gui()
m_AttributeDumpBookmark->clear();
delete m_AttributeDumpBookmark;

remove(filebuildIDStr.str().c_str());
while (access(filebuildIDStr.str().c_str(), F_OK) == 0)
{
printf("waiting for delete\n");
}
rename(EDIZON_DIR "/tempbookmark.dat", filebuildIDStr.str().c_str());
while (access(filebuildIDStr.str().c_str(), F_OK) != 0)
{
printf("waiting for rename\n");
}
// remove(filebuildIDStr.str().c_str());
// while (access(filebuildIDStr.str().c_str(), F_OK) == 0)
// {
// printf("waiting for delete\n");
// }
// rename(EDIZON_DIR "/tempbookmark.dat", filebuildIDStr.str().c_str());
// while (access(filebuildIDStr.str().c_str(), F_OK) != 0)
// {
// printf("waiting for rename\n");
// }
REPLACEFILE(filebuildIDStr.str().c_str(), EDIZON_DIR "/tempbookmark.dat");

m_AttributeDumpBookmark = new MemoryDump(filebuildIDStr.str().c_str(), DumpType::ADDR, false);
// m_AttributeDumpBookmark = new MemoryDump(filebuildIDStr.str().c_str(), DumpType::ADDR, true);
@@ -1077,7 +1078,7 @@ void GuiCheats::drawSearchRAMMenu()

void GuiCheats::onInput(u32 kdown)
{
u32 kheld = hidKeysHeld(CONTROLLER_P1_AUTO);
u32 kheld = hidKeysHeld(CONTROLLER_PLAYER_1) | hidKeysHeld(CONTROLLER_HANDHELD);
if (kdown & KEY_B)
{

@@ -1128,7 +1129,7 @@ void GuiCheats::onInput(u32 kdown)
// BM2
if (m_searchMenuLocation == SEARCH_POINTER)
{
if (kdown & KEY_PLUS)
if ((kdown & KEY_PLUS) && !(kheld & KEY_ZL))
{
m_abort = false;
// (new Snackbar("Starting pointer search"))->show();
@@ -1137,13 +1138,23 @@ void GuiCheats::onInput(u32 kdown)
// m_AttributeDumpBookmark->getData((m_selectedEntry + m_addresslist_offset) * sizeof(bookmark_t), &m_bookmark, sizeof(bookmark_t));
m_abort = false;
m_Time1 = time(NULL);
startpointersearch2(m_EditorBaseAddr);
if (m_pointersearch_canresume)
resumepointersearch2();
else
startpointersearch2(m_EditorBaseAddr);
char st[100];
snprintf(st, 100, "Done pointer search found %ld pointer in %ld seconds", m_pointer_found, time(NULL) - m_Time1);
printf("done pointer search \n");
printf("Time taken =%ld\n", time(NULL) - m_Time1);
(new Snackbar(st))->show();
}
if ((kdown & KEY_PLUS) && (kheld & KEY_ZL))
{
m_pointersearch_canresume = false;
delete m_PointerSearch;
printf("set resume to false\n");
}

if (kdown & KEY_UP)
{
if (m_selectedEntry > 0)
@@ -1560,7 +1571,10 @@ void GuiCheats::onInput(u32 kdown)
// m_pointeroffsetDump = new MemoryDump(EDIZON_DIR "/pointerdump1.dat", DumpType::POINTER, true);
m_searchValue[0]._u64 = m_EditorBaseAddr - 0x800;
m_searchValue[1]._u64 = m_EditorBaseAddr;
startpointersearch2(m_EditorBaseAddr);
if (m_pointersearch_canresume)
resumepointersearch2();
else
startpointersearch2(m_EditorBaseAddr);
printf("done pointer search \n");
printf("Time taken =%ld\n", time(NULL) - m_Time1);

@@ -1826,7 +1840,11 @@ void GuiCheats::onInput(u32 kdown)
}
}
}

// if ((kdown & KEY_X) && (kheld & KEY_ZL))
// {
// printf("resume \n");
// resumepointersearch2();
// }
if ((kdown & KEY_Y) && !(kheld & KEY_ZL))
{
if (m_searchMenuLocation == SEARCH_NONE)
@@ -3958,7 +3976,8 @@ void GuiCheats::startpointersearch2(u64 targetaddress) // using global m_bookmar
m_Time1 = time(NULL);
m_pointer_found = 0;
m_abort = false;
m_pointersearch_done = false;
m_PS_resume = false;
m_PS_pause = false;
// PS_depth = 0; // need this if m_PointerSearch isn't created here
// m_PointerSearch->index = {0}; //
try
@@ -3972,111 +3991,152 @@ void GuiCheats::startpointersearch2(u64 targetaddress) // using global m_bookmar
printf("End pointer search \n");
printf("Time taken =%ld Found %ld pointer chain\n", time(NULL) - m_Time1, m_pointer_found);

if (m_pointersearch_done)
if (!m_PS_pause)
{
delete m_PointerSearch;
}
else
m_pointersearch_canresume = true;
delete m_dataDump;
}
void GuiCheats::resumepointersearch2()
{
pointersearch2(0, 0); // 0 means continue
if (m_pointersearch_done)
if (m_pointersearch_canresume)
{
delete m_PointerSearch;
m_PS_resume = true;
m_PS_pause = false;
m_dataDump = new MemoryDump(EDIZON_DIR "/datadump2.dat", DumpType::DATA, false);
pointersearch2(0, 0);
delete m_dataDump;
if (!m_PS_pause)
{
delete m_PointerSearch;
}
}
}

void GuiCheats::pointersearch2(u64 targetaddress, u64 depth) //MemoryDump **displayDump, MemoryDump **dataDump,
{
// printf("targetaddress %lx PS_depth %ld PS_index %ld PS_num_sources %ld\n", targetaddress, PS_depth, PS_index, PS_num_sources);
if ((m_mainBaseAddr <= targetaddress) && (targetaddress <= (m_mainend)))
if (!m_PS_resume)
{

printf("\ntarget reached!=========================\n");
printf("final offset is %lx \n", targetaddress - m_mainBaseAddr);
m_bookmark.pointer.offset[PS_depth] = targetaddress - m_mainBaseAddr;
m_bookmark.pointer.depth = PS_depth;
for (int z = PS_depth - 1; z >= 0; z--)
// printf("targetaddress %lx PS_depth %ld PS_index %ld PS_num_sources %ld\n", targetaddress, PS_depth, PS_index, PS_num_sources);
if ((m_mainBaseAddr <= targetaddress) && (targetaddress <= (m_mainend)))
{
m_bookmark.pointer.offset[z] = m_PointerSearch->sources[z][m_PointerSearch->index[z]].offset;
}

m_AttributeDumpBookmark->addData((u8 *)&m_bookmark, sizeof(bookmark_t));
m_AttributeDumpBookmark->flushBuffer();
m_memoryDumpBookmark->addData((u8 *)&m_mainBaseAddr, sizeof(u64)); //need to update
m_memoryDumpBookmark->flushBuffer();
// m_pointeroffsetDump->addData((u8 *)&pointerchain, sizeof(pointer_chain_t));
// m_pointeroffsetDump->flushBuffer(); // is this useful?
printf("main");
for (int z = m_bookmark.pointer.depth; z >= 0; z--)
printf("+%lx z=%d ", m_bookmark.pointer.offset[z], z);
printf("\n\n");
m_pointer_found++;
return; // consider don't return to find more
};
if (PS_depth == m_max_depth)
{
// printf("max pointer depth reached\n\n");
return;
}
u64 offset = 0;
// u64 thefileoffset;
u64 bufferSize = MAX_BUFFER_SIZE;
u8 *buffer = new u8[bufferSize];
u64 distance;
u64 minimum = m_max_range; // a large number to start
// std::vector<sourceinfo_t> sources; // potential sources that points at target with a offset, we will search for the nearest address being pointed by pointer/pointers
sourceinfo_t sourceinfo;
// printf("PS_num_sources %d ", PS_num_sources);
PS_num_sources = 0;
while (offset < m_dataDump->size())
{
if (m_dataDump->size() - offset < bufferSize)
bufferSize = m_dataDump->size() - offset;
m_dataDump->getData(offset, buffer, bufferSize); // BM4
printf("\ntarget reached!=========================\n");
printf("final offset is %lx \n", targetaddress - m_mainBaseAddr);
m_bookmark.pointer.offset[PS_depth] = targetaddress - m_mainBaseAddr;
m_bookmark.pointer.depth = PS_depth;
for (int z = PS_depth - 1; z >= 0; z--)
{
m_bookmark.pointer.offset[z] = m_PointerSearch->sources[z][m_PointerSearch->index[z]].offset;
}

for (u64 i = 0; i < bufferSize; i += sizeof(u64)) // for (size_t i = 0; i < (bufferSize / sizeof(u64)); i++)
m_AttributeDumpBookmark->addData((u8 *)&m_bookmark, sizeof(bookmark_t));
m_AttributeDumpBookmark->flushBuffer();
m_memoryDumpBookmark->addData((u8 *)&m_mainBaseAddr, sizeof(u64)); //need to update
m_memoryDumpBookmark->flushBuffer();
// m_pointeroffsetDump->addData((u8 *)&pointerchain, sizeof(pointer_chain_t));
// m_pointeroffsetDump->flushBuffer(); // is this useful?
printf("main");
for (int z = m_bookmark.pointer.depth; z >= 0; z--)
printf("+%lx z=%d ", m_bookmark.pointer.offset[z], z);
printf("\n\n");
m_pointer_found++;
return; // consider don't return to find more
};
if (PS_depth == m_max_depth)
{
if (m_abort)
return;
u64 pointedaddress = *reinterpret_cast<u64 *>(&buffer[i]);
if (targetaddress >= pointedaddress)
// printf("max pointer depth reached\n\n");
return;
}
u64 offset = 0;
// u64 thefileoffset;
u64 bufferSize = MAX_BUFFER_SIZE;
u8 *buffer = new u8[bufferSize];
u64 distance;
u64 minimum = m_max_range; // a large number to start
// std::vector<sourceinfo_t> sources; // potential sources that points at target with a offset, we will search for the nearest address being pointed by pointer/pointers
sourceinfo_t sourceinfo;
// printf("PS_num_sources %d ", PS_num_sources);
PS_num_sources = 0;
while (offset < m_dataDump->size())
{
if (m_dataDump->size() - offset < bufferSize)
bufferSize = m_dataDump->size() - offset;
m_dataDump->getData(offset, buffer, bufferSize); // BM4

for (u64 i = 0; i < bufferSize; i += sizeof(u64)) // for (size_t i = 0; i < (bufferSize / sizeof(u64)); i++)
{
distance = targetaddress - pointedaddress;
if (distance < minimum)
{
sourceinfo.foffset = offset + i;
sourceinfo.offset = distance;
PS_sources[PS_num_sources] = sourceinfo;
PS_num_sources++;
// sources.push_back(sourceinfo);
// thefileoffset = offset + i; //for debug only
}
else if (distance == minimum)
if (m_abort)
return;
u64 pointedaddress = *reinterpret_cast<u64 *>(&buffer[i]);
if (targetaddress >= pointedaddress)
{
sourceinfo.foffset = offset + i;
sourceinfo.offset = distance;
PS_sources[PS_num_sources] = sourceinfo;
PS_num_sources++;
// sources.push_back(sourceinfo);
// thefileoffset = offset + i; //for deubg only
distance = targetaddress - pointedaddress;
if (distance < minimum)
{
sourceinfo.foffset = offset + i;
sourceinfo.offset = distance;
PS_sources[PS_num_sources] = sourceinfo;
PS_num_sources++;
// sources.push_back(sourceinfo);
// thefileoffset = offset + i; //for debug only
}
else if (distance == minimum)
{
sourceinfo.foffset = offset + i;
sourceinfo.offset = distance;
PS_sources[PS_num_sources] = sourceinfo;
PS_num_sources++;
// sources.push_back(sourceinfo);
// thefileoffset = offset + i; //for deubg only
}
}
if (PS_num_sources > m_max_source)
break;
}
if (PS_num_sources > m_max_source)
break;
offset += bufferSize;
}
if (PS_num_sources > m_max_source)
break;
offset += bufferSize;
}

delete[] buffer; // release memory use for the search of sources
// printf("**Found %ld sources for address %lx at depth %ld\n", PS_num_sources, targetaddress, PS_depth);
delete[] buffer; // release memory use for the search of sources
// printf("**Found %ld sources for address %lx at depth %ld\n", PS_num_sources, targetaddress, PS_depth);
PS_index = 0;
}
else if (PS_depth == PS_lastdepth)
{
m_PS_resume = false;
}

// PS_depth++;
PS_index = 0;
while (PS_index < PS_num_sources)
{
hidScanInput();
u32 kheld = hidKeysHeld(CONTROLLER_PLAYER_1) | hidKeysHeld(CONTROLLER_HANDHELD);
// u32 kdown = hidKeysDown(CONTROLLER_PLAYER_1) | hidKeysDown(CONTROLLER_HANDHELD);
if ((kheld & KEY_B) && (kheld & KEY_ZL))
{
m_PS_pause = true;
PS_lastdepth = PS_depth;
}
if (m_PS_pause)
return;

// status update
std::stringstream SS;
SS.str("");
SS << "F=" << std::setw(2) << m_pointer_found;
for (u64 i = 0; i < m_max_depth; i++)
SS << " Z=" << i << ":" << std::setfill('0') << std::setw(2) << m_PointerSearch->index[i]
<< "/" << std::setfill('0') << std::setw(2) << m_PointerSearch->num_sources[i] << " ";
// SS << "\n";
// printf(SS.str().c_str());
Gui::beginDraw();
Gui::drawRectangle(70, 465, 1150, 40, currTheme.backgroundColor);
Gui::drawText(font20, 70, 465, currTheme.textColor, SS.str().c_str());
Gui::endDraw();

u64 newtargetaddress;
m_memoryDump1->getData(PS_sources[PS_index].foffset, &newtargetaddress, sizeof(u64)); // fileoffset is in byte
if (m_forwardonly)
@@ -4090,6 +4150,8 @@ void GuiCheats::pointersearch2(u64 targetaddress, u64 depth) //MemoryDump **disp
{
pointersearch2(newtargetaddress, PS_depth + 1);
}
if (m_PS_pause)
return;
PS_index++;
}
return;
4 changes: 2 additions & 2 deletions source/main.cpp
Original file line number Diff line number Diff line change
@@ -242,8 +242,8 @@ int main(int argc, char **argv)
while (appletMainLoop())
{
hidScanInput();
kheld = hidKeysHeld(CONTROLLER_P1_AUTO);
kdown = hidKeysDown(CONTROLLER_P1_AUTO);
kheld = hidKeysHeld(CONTROLLER_PLAYER_1)|hidKeysHeld(CONTROLLER_HANDHELD);
kdown = hidKeysDown(CONTROLLER_PLAYER_1)|hidKeysDown(CONTROLLER_HANDHELD);

if (Gui::g_nextGui != GUI_INVALID)
{