diff --git a/server/source/noexs/exefs.nsp b/server/source/noexs/exefs.nsp index 473d235..06e594e 100644 Binary files a/server/source/noexs/exefs.nsp and b/server/source/noexs/exefs.nsp differ diff --git a/server/source/noexs/include/errors.h b/server/source/noexs/include/errors.h index f65d803..660abaa 100644 --- a/server/source/noexs/include/errors.h +++ b/server/source/noexs/include/errors.h @@ -20,5 +20,6 @@ enum { TCPGeckoError_invalid_watchpoint, TCPGeckoError_watchpoint_not_set, TCPGeckoError_no_free_watchpoints, - TCPGeckoError_incorrect_debugger + TCPGeckoError_incorrect_debugger, + TCPGeckoError_user_abort }; \ No newline at end of file diff --git a/server/source/noexs/include/gecko.h b/server/source/noexs/include/gecko.h index d27cb0d..89fa3a6 100644 --- a/server/source/noexs/include/gecko.h +++ b/server/source/noexs/include/gecko.h @@ -12,7 +12,7 @@ #define VER_MAJOR (1) #define VER_MINOR (1) -#define VER_PATCH (138) +#define VER_PATCH (139) #define GECKO_BUFFER_SIZE (2048 * 32) #define GECKO_BUFFER_SIZE2 (2048 * 4) diff --git a/server/source/noexs/noexs.nso b/server/source/noexs/noexs.nso index eb8a7c3..6acf888 100644 Binary files a/server/source/noexs/noexs.nso and b/server/source/noexs/noexs.nso differ diff --git a/server/source/noexs/noexs.nsp b/server/source/noexs/noexs.nsp index 473d235..06e594e 100644 Binary files a/server/source/noexs/noexs.nsp and b/server/source/noexs/noexs.nsp differ diff --git a/server/source/noexs/source/commands.cpp b/server/source/noexs/source/commands.cpp index 8baa607..72e1c4c 100644 --- a/server/source/noexs/source/commands.cpp +++ b/server/source/noexs/source/commands.cpp @@ -28,6 +28,7 @@ if( i < 0) \ return MAKERESULT(Module_TCPGecko, TCPGeckoError_iofail); \ } +#define USER_ABORT MAKERESULT(Module_TCPGecko, TCPGeckoError_user_abort) static bool dmnt = false; Result writeCompressed(Gecko::Context& ctx, u32 len) { static u8 tmp[GECKO_BUFFER_SIZE2 * 2]; @@ -458,6 +459,7 @@ static Result process(Gecko::Context &ctx, u64 m_start, u64 m_end) { MemoryInfo info = {}; u32 out_index =0; addr = m_start; + u8 cont = 1; printf("processing m_start = %lx m_end = %lx \n", m_start, m_end); while (addr < m_end){ if (dmnt) rc = dmntchtQueryCheatProcessMemory(&info, addr); @@ -494,6 +496,7 @@ static Result process(Gecko::Context &ctx, u64 m_start, u64 m_end) { // WRITE_CHECKED(ctx, count); WRITE_BUFFER_CHECKED(ctx, outbuffer, count); + READ_CHECKED(ctx,cont); if (!cont) {WRITE_CHECKED(ctx, 0); return USER_ABORT;} out_index = 0; } }