diff options
author | StraDaMa <StraDaMa@users.noreply.github.com> | 2023-08-27 04:34:11 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-27 13:34:11 +0200 |
commit | bc71618457a2759f0fa9eda4aaade9cb4a5e5695 (patch) | |
tree | a74e4133e6b3f8984e103876467af69f6245c3d2 | |
parent | 2bd12669b25f2ce6d9dae4c0964f500572775b5d (diff) |
remove AR code size limit (#1802)
Co-authored-by: Arisotura <thetotalworm@gmail.com>
-rw-r--r-- | src/ARCodeFile.cpp | 17 | ||||
-rw-r--r-- | src/ARCodeFile.h | 5 | ||||
-rw-r--r-- | src/AREngine.cpp | 2 | ||||
-rw-r--r-- | src/frontend/qt_sdl/CheatsDialog.cpp | 22 |
4 files changed, 14 insertions, 32 deletions
diff --git a/src/ARCodeFile.cpp b/src/ARCodeFile.cpp index 79c582d..d1f34fb 100644 --- a/src/ARCodeFile.cpp +++ b/src/ARCodeFile.cpp @@ -120,7 +120,7 @@ bool ARCodeFile::Load() curcode.Name = codename; curcode.Enabled = enable!=0; - curcode.CodeLen = 0; + curcode.Code.clear(); } else { @@ -141,17 +141,8 @@ bool ARCodeFile::Load() return false; } - if (curcode.CodeLen >= 2*64) - { - Log(LogLevel::Error, "AR: code too long!\n"); - CloseFile(f); - return false; - } - - u32 idx = curcode.CodeLen; - curcode.Code[idx+0] = c0; - curcode.Code[idx+1] = c1; - curcode.CodeLen += 2; + curcode.Code.push_back(c0); + curcode.Code.push_back(c1); } } @@ -179,7 +170,7 @@ bool ARCodeFile::Save() ARCode& code = *jt; FileWriteFormatted(f, "CODE %d %s\r\n", code.Enabled, code.Name.c_str()); - for (u32 i = 0; i < code.CodeLen; i+=2) + for (size_t i = 0; i < code.Code.size(); i+=2) { FileWriteFormatted(f, "%08X %08X\r\n", code.Code[i], code.Code[i + 1]); } diff --git a/src/ARCodeFile.h b/src/ARCodeFile.h index 9678926..d0e8255 100644 --- a/src/ARCodeFile.h +++ b/src/ARCodeFile.h @@ -21,15 +21,14 @@ #include <string> #include <list> - +#include <vector> #include "types.h" struct ARCode { std::string Name; bool Enabled; - u32 CodeLen; - u32 Code[2*64]; + std::vector<u32> Code; }; typedef std::list<ARCode> ARCodeList; diff --git a/src/AREngine.cpp b/src/AREngine.cpp index 06fbc6b..62600f9 100644 --- a/src/AREngine.cpp +++ b/src/AREngine.cpp @@ -110,7 +110,7 @@ void RunCheat(ARCode& arcode) for (;;) { - if (code >= &arcode.Code[arcode.CodeLen]) + if (code >= &arcode.Code[arcode.Code.size()]) break; u32 a = *code++; diff --git a/src/frontend/qt_sdl/CheatsDialog.cpp b/src/frontend/qt_sdl/CheatsDialog.cpp index b15fab7..1da5c5e 100644 --- a/src/frontend/qt_sdl/CheatsDialog.cpp +++ b/src/frontend/qt_sdl/CheatsDialog.cpp @@ -162,8 +162,7 @@ void CheatsDialog::on_btnNewARCode_clicked() ARCode code; code.Name = "(new AR code)"; code.Enabled = true; - code.CodeLen = 0; - memset(code.Code, 0, sizeof(code.Code)); + code.Code.clear(); cat.Codes.push_back(code); ARCodeList::iterator id = cat.Codes.end(); id--; @@ -251,7 +250,7 @@ void CheatsDialog::onCheatSelectionChanged(const QItemSelection& sel, const QIte ui->txtCode->setPlaceholderText("(enter AR code here)"); QString codestr = ""; - for (u32 i = 0; i < code.CodeLen; i += 2) + for (size_t i = 0; i < code.Code.size(); i += 2) { u32 c0 = code.Code[i+0]; u32 c1 = code.Code[i+1]; @@ -312,8 +311,8 @@ void CheatsDialog::on_txtCode_textChanged() return; bool error = false; - u32 codeout[2*64]; - u32 codelen = 0; + std::vector<u32> codeout; + codeout.reserve(64); QString text = ui->txtCode->document()->toPlainText(); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) @@ -356,14 +355,8 @@ void CheatsDialog::on_txtCode_textChanged() break; } - if (codelen >= 2*64) - { - error = true; - break; - } - - codeout[codelen++] = c0; - codeout[codelen++] = c1; + codeout.push_back(c0); + codeout.push_back(c1); } ui->btnNewCat->setEnabled(!error); @@ -375,8 +368,7 @@ void CheatsDialog::on_txtCode_textChanged() if (error) return; ARCode& code = *(data.value<ARCodeList::iterator>()); - memcpy(code.Code, codeout, codelen*sizeof(u32)); - code.CodeLen = codelen; + code.Code = codeout; } void ARCodeChecker::highlightBlock(const QString& text) |