From 6b129119618cedff1501c9035c5d76f854f67870 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Mon, 27 Apr 2026 08:44:26 -0600 Subject: [PATCH] Code Note -> Memory Note --- src/RA_Core.cpp | 4 +- src/RA_Integration.vcxproj | 8 +- src/RA_Integration.vcxproj.filters | 8 +- src/RA_Shared.rc | 4 +- src/api/impl/ConnectedServer.cpp | 6 +- src/data/context/EmulatorContext.cpp | 4 +- src/data/context/GameAssets.cpp | 15 +- src/data/context/GameAssets.hh | 14 +- src/data/context/GameContext.cpp | 22 +- src/data/context/GameContext.hh | 8 +- src/data/models/TriggerValidation.cpp | 34 +- src/devkit/RADevKit.vcxproj | 8 +- src/devkit/RADevKit.vcxproj.filters | 8 +- src/devkit/context/impl/ConsoleContext.cpp | 2 +- src/devkit/context/impl/RcClient.cpp | 2 +- src/devkit/data/models/AssetModelBase.cpp | 2 +- src/devkit/data/models/AssetModelBase.hh | 2 +- src/devkit/data/models/CodeNotesModel.hh | 182 ----- ...{CodeNoteModel.cpp => MemoryNoteModel.cpp} | 88 +-- .../{CodeNoteModel.hh => MemoryNoteModel.hh} | 36 +- ...odeNotesModel.cpp => MemoryNotesModel.cpp} | 298 ++++---- src/devkit/data/models/MemoryNotesModel.hh | 182 +++++ src/devkit/services/ILocalStorage.hh | 2 +- src/services/AchievementLogicSerializer.cpp | 6 +- src/services/AchievementLogicSerializer.hh | 6 +- src/services/impl/FileLocalStorage.cpp | 2 +- src/services/impl/OfflineRcClient.cpp | 4 +- src/ui/EditorTheme.hh | 2 +- src/ui/viewmodels/AssetListViewModel.cpp | 4 +- src/ui/viewmodels/AssetListViewModel.hh | 2 +- src/ui/viewmodels/AssetUploadViewModel.cpp | 36 +- src/ui/viewmodels/AssetUploadViewModel.hh | 8 +- .../viewmodels/IntegrationMenuViewModel.cpp | 12 +- src/ui/viewmodels/IntegrationMenuViewModel.hh | 2 +- .../viewmodels/MemoryInspectorViewModel.cpp | 96 +-- src/ui/viewmodels/MemoryInspectorViewModel.hh | 6 +- ...ViewModel.cpp => MemoryNotesViewModel.cpp} | 104 +-- ...esViewModel.hh => MemoryNotesViewModel.hh} | 34 +- src/ui/viewmodels/MemorySearchViewModel.cpp | 36 +- src/ui/viewmodels/MemorySearchViewModel.hh | 8 +- src/ui/viewmodels/MemoryViewerViewModel.cpp | 42 +- src/ui/viewmodels/MemoryViewerViewModel.hh | 4 +- .../viewmodels/MemoryWatchListViewModel.cpp | 4 +- src/ui/viewmodels/MemoryWatchListViewModel.hh | 4 +- src/ui/viewmodels/MemoryWatchViewModel.cpp | 14 +- .../viewmodels/PointerInspectorViewModel.cpp | 116 +-- .../viewmodels/PointerInspectorViewModel.hh | 24 +- .../viewmodels/TriggerConditionViewModel.cpp | 44 +- .../viewmodels/TriggerConditionViewModel.hh | 4 +- src/ui/viewmodels/WindowManager.hh | 4 +- src/ui/win32/AssetEditorDialog.cpp | 2 +- src/ui/win32/CodeNotesDialog.hh | 71 -- src/ui/win32/Desktop.cpp | 4 +- src/ui/win32/MemoryInspectorDialog.cpp | 4 +- ...eNotesDialog.cpp => MemoryNotesDialog.cpp} | 120 ++-- src/ui/win32/MemoryNotesDialog.hh | 71 ++ src/ui/win32/MemoryRegionsDialog.cpp | 2 +- tests/Exports_Tests.cpp | 6 +- tests/RA_Integration.Tests.vcxproj | 4 +- tests/RA_Integration.Tests.vcxproj.filters | 8 +- tests/data/context/EmulatorContext_Tests.cpp | 6 +- tests/data/context/GameContext_Tests.cpp | 14 +- tests/data/models/TriggerValidation_Tests.cpp | 34 +- tests/devkit/RADevKit.Tests.vcxproj | 4 +- tests/devkit/RADevKit.Tests.vcxproj.filters | 4 +- tests/devkit/context/impl/RcClient_Tests.cpp | 2 +- ...el_Tests.cpp => MemoryNoteModel_Tests.cpp} | 322 ++++----- ...l_Tests.cpp => MemoryNotesModel_Tests.cpp} | 666 +++++++++--------- tests/devkit/testutil/AssetAsserts.hh | 4 +- tests/mocks/MockGameContext.hh | 56 +- .../AchievementLogicSerializer_Tests.cpp | 14 +- .../AchievementRuntimeExports_Tests.cpp | 6 +- tests/services/FileLocalStorage_Tests.cpp | 2 +- .../viewmodels/AssetListViewModel_Tests.cpp | 30 +- .../viewmodels/AssetUploadViewModel_Tests.cpp | 114 +-- .../IntegrationMenuViewModel_Tests.cpp | 24 +- .../MemoryBookmarksViewModel_Tests.cpp | 72 +- .../MemoryInspectorViewModel_Tests.cpp | 66 +- ...sts.cpp => MemoryNotesViewModel_Tests.cpp} | 194 ++--- .../MemorySearchViewModel_Tests.cpp | 38 +- .../MemoryWatchListViewModel_Tests.cpp | 24 +- .../PointerInspectorViewModel_Tests.cpp | 90 +-- .../TriggerConditionViewModel_Tests.cpp | 228 +++--- .../ui/viewmodels/TriggerViewModel_Tests.cpp | 24 +- 84 files changed, 1948 insertions(+), 1949 deletions(-) delete mode 100644 src/devkit/data/models/CodeNotesModel.hh rename src/devkit/data/models/{CodeNoteModel.cpp => MemoryNoteModel.cpp} (93%) rename src/devkit/data/models/{CodeNoteModel.hh => MemoryNoteModel.hh} (88%) rename src/devkit/data/models/{CodeNotesModel.cpp => MemoryNotesModel.cpp} (53%) create mode 100644 src/devkit/data/models/MemoryNotesModel.hh rename src/ui/viewmodels/{CodeNotesViewModel.cpp => MemoryNotesViewModel.cpp} (75%) rename src/ui/viewmodels/{CodeNotesViewModel.hh => MemoryNotesViewModel.hh} (85%) delete mode 100644 src/ui/win32/CodeNotesDialog.hh rename src/ui/win32/{CodeNotesDialog.cpp => MemoryNotesDialog.cpp} (57%) create mode 100644 src/ui/win32/MemoryNotesDialog.hh rename tests/devkit/data/models/{CodeNoteModel_Tests.cpp => MemoryNoteModel_Tests.cpp} (80%) rename tests/devkit/data/models/{CodeNotesModel_Tests.cpp => MemoryNotesModel_Tests.cpp} (74%) rename tests/ui/viewmodels/{CodeNotesViewModel_Tests.cpp => MemoryNotesViewModel_Tests.cpp} (85%) diff --git a/src/RA_Core.cpp b/src/RA_Core.cpp index f8624530f..b538bc9e2 100644 --- a/src/RA_Core.cpp +++ b/src/RA_Core.cpp @@ -143,8 +143,8 @@ static int DoShutdown() if (pWindowManager.AssetList.IsVisible()) pDesktop.CloseWindow(pWindowManager.AssetList); - if (pWindowManager.CodeNotes.IsVisible()) - pDesktop.CloseWindow(pWindowManager.CodeNotes); + if (pWindowManager.MemoryNotes.IsVisible()) + pDesktop.CloseWindow(pWindowManager.MemoryNotes); if (pWindowManager.PointerFinder.IsVisible()) pDesktop.CloseWindow(pWindowManager.PointerFinder); diff --git a/src/RA_Integration.vcxproj b/src/RA_Integration.vcxproj index 9e3c7621a..c4ea11079 100644 --- a/src/RA_Integration.vcxproj +++ b/src/RA_Integration.vcxproj @@ -124,7 +124,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -363,7 +363,7 @@ - + diff --git a/src/RA_Integration.vcxproj.filters b/src/RA_Integration.vcxproj.filters index 57117d944..21d4e6a4f 100644 --- a/src/RA_Integration.vcxproj.filters +++ b/src/RA_Integration.vcxproj.filters @@ -252,10 +252,10 @@ UI\ViewModels - + UI\ViewModels - + UI\Win32 @@ -737,10 +737,10 @@ UI\ViewModels - + UI\ViewModels - + UI\Win32 diff --git a/src/RA_Shared.rc b/src/RA_Shared.rc index 881bce907..4f4c392e5 100644 --- a/src/RA_Shared.rc +++ b/src/RA_Shared.rc @@ -55,7 +55,7 @@ BEGIN PUSHBUTTON "&Export",IDC_RA_RESULTS_EXPORT,8,127,35,14 PUSHBUTTON "&Import",IDC_RA_RESULTS_IMPORT,43,127,35,14 CONTROL "",IDC_RA_RESULTS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,82,55,242,86 - GROUPBOX "Code Notes",IDC_RA_GBX_NOTES,4,145,324,55 + GROUPBOX "Memory Notes",IDC_RA_GBX_NOTES,4,145,324,55 LTEXT "&Address:",IDC_STATIC,8,155,32,9 EDITTEXT IDC_RA_ADDRESS,8,166,56,12,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_RA_VIEW_CODENOTES,65,166,13,12 @@ -291,7 +291,7 @@ END IDD_RA_CODENOTES DIALOGEX 0, 0, 287, 230 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -CAPTION "Code Notes" +CAPTION "Memory Notes" FONT 8, "MS Shell Dlg", 400, 0, 0x0 BEGIN LTEXT "Search:",IDC_STATIC,6,6,33,11 diff --git a/src/api/impl/ConnectedServer.cpp b/src/api/impl/ConnectedServer.cpp index 7410744f1..050e86452 100644 --- a/src/api/impl/ConnectedServer.cpp +++ b/src/api/impl/ConnectedServer.cpp @@ -534,7 +534,7 @@ ResolveHash::Response ConnectedServer::ResolveHash(const ResolveHash::Request& r return response; } -static void SetCodeNote(ApiResponseBase& response, const char* sApiName, +static void SetNote(ApiResponseBase& response, const char* sApiName, unsigned nGameId, ra::data::ByteAddress nAddress, const char* sNote) { rc_api_update_code_note_request_t api_params; @@ -580,7 +580,7 @@ UpdateCodeNote::Response ConnectedServer::UpdateCodeNote(const UpdateCodeNote::R UpdateCodeNote::Response response; const std::string sNote = ra::util::String::Narrow(request.Note); - SetCodeNote(response, UpdateCodeNote::Name(), request.GameId, request.Address, sNote.c_str()); + SetNote(response, UpdateCodeNote::Name(), request.GameId, request.Address, sNote.c_str()); return response; } @@ -589,7 +589,7 @@ DeleteCodeNote::Response ConnectedServer::DeleteCodeNote(const DeleteCodeNote::R { DeleteCodeNote::Response response; - SetCodeNote(response, DeleteCodeNote::Name(), request.GameId, request.Address, nullptr); + SetNote(response, DeleteCodeNote::Name(), request.GameId, request.Address, nullptr); return response; } diff --git a/src/data/context/EmulatorContext.cpp b/src/data/context/EmulatorContext.cpp index c97c03316..6f9e27ab9 100644 --- a/src/data/context/EmulatorContext.cpp +++ b/src/data/context/EmulatorContext.cpp @@ -506,8 +506,8 @@ bool EmulatorContext::EnableHardcoreMode(bool bShowWarning) if (pWindowManager.AssetEditor.IsVisible()) pDesktop.CloseWindow(pWindowManager.AssetEditor); - if (pWindowManager.CodeNotes.IsVisible()) - pDesktop.CloseWindow(pWindowManager.CodeNotes); + if (pWindowManager.MemoryNotes.IsVisible()) + pDesktop.CloseWindow(pWindowManager.MemoryNotes); if (pWindowManager.PointerFinder.IsVisible()) pDesktop.CloseWindow(pWindowManager.PointerFinder); diff --git a/src/data/context/GameAssets.cpp b/src/data/context/GameAssets.cpp index ad48fe4f1..cad3227cf 100644 --- a/src/data/context/GameAssets.cpp +++ b/src/data/context/GameAssets.cpp @@ -71,7 +71,7 @@ ra::data::models::AssetCategory GameAssets::MostPublishedAssetCategory() const { // we really only care about published achievements and // leaderboards. if a set only has published rich presence - // or code notes, don't consider it a published set. + // or memory notes, don't consider it a published set. switch (pAsset.GetType()) { case ra::data::models::AssetType::Achievement: @@ -264,11 +264,10 @@ void GameAssets::ReloadAssets(const std::vectorDeserialize(pTokenizer); @@ -550,7 +549,7 @@ void GameAssets::SaveAssets(const std::vector pData->Write("L"); break; - case ra::data::models::AssetType::CodeNotes: + case ra::data::models::AssetType::MemoryNotes: pData->Write("N"); break; diff --git a/src/data/context/GameAssets.hh b/src/data/context/GameAssets.hh index d1c66acc6..5c5eabe5b 100644 --- a/src/data/context/GameAssets.hh +++ b/src/data/context/GameAssets.hh @@ -6,7 +6,7 @@ #include "data\Types.hh" #include "data\models\AchievementModel.hh" -#include "data\models\CodeNotesModel.hh" +#include "data\models\MemoryNotesModel.hh" #include "data\models\LeaderboardModel.hh" #include "data\models\MemoryRegionsModel.hh" #include "data\models\RichPresenceModel.hh" @@ -94,19 +94,19 @@ public: } /// - /// Finds the code notes asset. + /// Finds the memory notes asset. /// - ra::data::models::CodeNotesModel* FindCodeNotes() + ra::data::models::MemoryNotesModel* FindMemoryNotes() { - return dynamic_cast(FindAsset(ra::data::models::AssetType::CodeNotes, 0)); + return dynamic_cast(FindAsset(ra::data::models::AssetType::MemoryNotes, 0)); } /// - /// Finds the code notes asset. + /// Finds the memory notes asset. /// - const ra::data::models::CodeNotesModel* FindCodeNotes() const + const ra::data::models::MemoryNotesModel* FindMemoryNotes() const { - return dynamic_cast(FindAsset(ra::data::models::AssetType::CodeNotes, 0)); + return dynamic_cast(FindAsset(ra::data::models::AssetType::MemoryNotes, 0)); } /// diff --git a/src/data/context/GameContext.cpp b/src/data/context/GameContext.cpp index 4cceda456..fccd5ef1c 100644 --- a/src/data/context/GameContext.cpp +++ b/src/data/context/GameContext.cpp @@ -15,7 +15,7 @@ #include "data\context\SessionTracker.hh" #include "data\models\AchievementModel.hh" -#include "data\models\CodeNotesModel.hh" +#include "data\models\MemoryNotesModel.hh" #include "data\models\LocalBadgesModel.hh" #include "data\models\RichPresenceModel.hh" @@ -255,20 +255,20 @@ void GameContext::EndLoadGame(int nResult, bool bWasPaused, bool bShowSoftcoreWa { BeginLoad(); - auto pCodeNotes = std::make_unique(); - pCodeNotes->Refresh( + auto pMemoryNotes = std::make_unique(); + pMemoryNotes->Refresh( m_nGameId, [this](ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { - OnCodeNoteChanged(nAddress, sNewNote); + OnMemoryNoteChanged(nAddress, sNewNote); }, [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring sNote) { - OnCodeNoteMoved(nOldAddress, nNewAddress, sNote); + OnMemoryNoteMoved(nOldAddress, nNewAddress, sNote); }, [this]() { EndLoad(); }); - m_vAssets.Append(std::move(pCodeNotes)); + m_vAssets.Append(std::move(pMemoryNotes)); // the old server value (if different from current server value) will be stored as Local modification. // capture it now. ReloadAssets will load the XXX-Rich.txt file and replace it @@ -506,7 +506,7 @@ void GameContext::InitializeSubsets(const rc_api_fetch_game_sets_response_t* gam std::lock_guard lock(m_mLoadMutex); m_vSubsets.clear(); - // GameID dictates which game is loaded for purposes of local achievement storage and code notes + // GameID dictates which game is loaded for purposes of local achievement storage and memory notes m_nGameId = GetRealGameId(game_data_response->id); // ActiveGameID dictates which game is running for purposes of rich presence and pings const auto nActiveGameId = GetRealGameId(game_data_response->session_game_id); @@ -699,28 +699,28 @@ void GameContext::DoFrame() pAsset.DoFrame(); } -void GameContext::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) +void GameContext::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { if (m_vNotifyTargets.LockIfNotEmpty()) { if (!IsGameLoading()) { for (auto& target : m_vNotifyTargets.Targets()) - target.OnCodeNoteChanged(nAddress, sNewNote); + target.OnMemoryNoteChanged(nAddress, sNewNote); } m_vNotifyTargets.Unlock(); } } -void GameContext::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) +void GameContext::OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { if (m_vNotifyTargets.LockIfNotEmpty()) { if (!IsGameLoading()) { for (auto& target : m_vNotifyTargets.Targets()) - target.OnCodeNoteMoved(nOldAddress, nNewAddress, sNote); + target.OnMemoryNoteMoved(nOldAddress, nNewAddress, sNote); } m_vNotifyTargets.Unlock(); diff --git a/src/data/context/GameContext.hh b/src/data/context/GameContext.hh index 8632adbde..3d97f608d 100644 --- a/src/data/context/GameContext.hh +++ b/src/data/context/GameContext.hh @@ -149,8 +149,8 @@ public: virtual void OnActiveGameChanged() noexcept(false) {} virtual void OnBeginGameLoad() noexcept(false) {} virtual void OnEndGameLoad() noexcept(false) {} - virtual void OnCodeNoteChanged(ra::data::ByteAddress, const std::wstring&) noexcept(false) {} - virtual void OnCodeNoteMoved(ra::data::ByteAddress, ra::data::ByteAddress, const std::wstring&) noexcept(false) {} + virtual void OnMemoryNoteChanged(ra::data::ByteAddress, const std::wstring&) noexcept(false) {} + virtual void OnMemoryNoteMoved(ra::data::ByteAddress, ra::data::ByteAddress, const std::wstring&) noexcept(false) {} }; void AddNotifyTarget(NotifyTarget& pTarget) noexcept { m_vNotifyTargets.Add(pTarget); } @@ -205,8 +205,8 @@ private: protected: void OnBeforeActiveGameChanged(); void OnActiveGameChanged(); - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote); - void OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote); + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote); + void OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote); void BeginLoad(); void EndLoad(); diff --git a/src/data/models/TriggerValidation.cpp b/src/data/models/TriggerValidation.cpp index 75e6e0fc2..69724f47a 100644 --- a/src/data/models/TriggerValidation.cpp +++ b/src/data/models/TriggerValidation.cpp @@ -57,8 +57,8 @@ static bool ValidateLeaderboardTrigger(const rc_trigger_t* pTrigger, std::wstrin return true; } -static bool ValidateCodeNotesOperand(const rc_operand_t& pOperand, const ra::data::models::CodeNotesModel& pNotes, - std::wstring& sError) +static bool ValidateMemoryNotesOperand(const rc_operand_t& pOperand, const ra::data::models::MemoryNotesModel& pNotes, + std::wstring& sError) { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); const auto nMemRefSize = Memory::SizeFromRcheevosSize(pOperand.size); @@ -67,7 +67,7 @@ static bool ValidateCodeNotesOperand(const rc_operand_t& pOperand, const ra::dat ra::data::ByteAddress nStartAddress = nAddress; Memory::Size nNoteSize = Memory::Size::Unknown; - const auto* pNote = pNotes.FindCodeNoteModel(nAddress, false); + const auto* pNote = pNotes.FindMemoryNoteModel(nAddress, false); if (pNote) { // ignore bit/nibble reads inside a known address @@ -79,14 +79,14 @@ static bool ValidateCodeNotesOperand(const rc_operand_t& pOperand, const ra::dat else { // no note at address. see if it's included in a larger container note - nStartAddress = pNotes.FindCodeNoteStart(nAddress); + nStartAddress = pNotes.FindNoteStart(nAddress); if (nStartAddress == 0xFFFFFFFF) { - sError = ra::util::String::Printf(L"No code note for address %s", pMemoryContext.FormatAddress(nAddress).substr(2)); + sError = ra::util::String::Printf(L"No memory note for address %s", pMemoryContext.FormatAddress(nAddress).substr(2)); return false; } - const auto pStartNote = pNotes.FindCodeNoteModel(nStartAddress, false); + const auto pStartNote = pNotes.FindMemoryNoteModel(nStartAddress, false); nNoteSize = pStartNote ? pStartNote->GetMemSize() : Memory::Size::Unknown; } @@ -103,12 +103,12 @@ static bool ValidateCodeNotesOperand(const rc_operand_t& pOperand, const ra::dat if (Memory::SizeBits(nMemRefSize) <= 8) return true; - sError = ra::util::String::Printf(L"%s read of address %s differs from implied code note size %s", Memory::SizeString(nMemRefSize), + sError = ra::util::String::Printf(L"%s read of address %s differs from implied memory note size %s", Memory::SizeString(nMemRefSize), pMemoryContext.FormatAddress(nAddress).substr(2), Memory::SizeString(Memory::Size::EightBit)); } else { - sError = ra::util::String::Printf(L"%s read of address %s differs from code note size %s", Memory::SizeString(nMemRefSize), + sError = ra::util::String::Printf(L"%s read of address %s differs from memory note size %s", Memory::SizeString(nMemRefSize), pMemoryContext.FormatAddress(nAddress).substr(2), Memory::SizeString(nNoteSize)); } @@ -121,8 +121,8 @@ static bool ValidateCodeNotesOperand(const rc_operand_t& pOperand, const ra::dat return false; } -static bool ValidateCodeNotesCondSet(const rc_condset_t* pCondSet, const ra::data::models::CodeNotesModel& pNotes, - std::wstring& sError) +static bool ValidateMemoryNotesCondSet(const rc_condset_t* pCondSet, const ra::data::models::MemoryNotesModel& pNotes, + std::wstring& sError) { if (!pCondSet) return true; @@ -147,14 +147,14 @@ static bool ValidateCodeNotesCondSet(const rc_condset_t* pCondSet, const ra::dat const auto* pOperand1 = rc_condition_get_real_operand1(pCondition); if (pOperand1 && rc_operand_is_memref(pOperand1) && - !ValidateCodeNotesOperand(*pOperand1, pNotes, sError)) + !ValidateMemoryNotesOperand(*pOperand1, pNotes, sError)) { sError = ra::util::String::Printf(L"Condition %u: %s", nIndex, sError); return false; } if (rc_operand_is_memref(&pCondition->operand2) && - !ValidateCodeNotesOperand(pCondition->operand2, pNotes, sError)) + !ValidateMemoryNotesOperand(pCondition->operand2, pNotes, sError)) { sError = ra::util::String::Printf(L"Condition %u: %s", nIndex, sError); return false; @@ -164,16 +164,16 @@ static bool ValidateCodeNotesCondSet(const rc_condset_t* pCondSet, const ra::dat return true; } -static bool ValidateCodeNotes(const rc_trigger_t* pTrigger, std::wstring& sError) +static bool ValidateMemoryNotes(const rc_trigger_t* pTrigger, std::wstring& sError) { if (!ra::services::ServiceLocator::Exists()) return true; - const auto* pNotes = ra::services::ServiceLocator::Get().Assets().FindCodeNotes(); + const auto* pNotes = ra::services::ServiceLocator::Get().Assets().FindMemoryNotes(); if (!pNotes) return true; - if (!ValidateCodeNotesCondSet(pTrigger->requirement, *pNotes, sError)) + if (!ValidateMemoryNotesCondSet(pTrigger->requirement, *pNotes, sError)) { if (pTrigger->alternative) sError = L"Core " + sError; @@ -185,7 +185,7 @@ static bool ValidateCodeNotes(const rc_trigger_t* pTrigger, std::wstring& sError for (; pCondSet; pCondSet = pCondSet->next) { nIndex++; - if (!ValidateCodeNotesCondSet(pCondSet, *pNotes, sError)) + if (!ValidateMemoryNotesCondSet(pCondSet, *pNotes, sError)) { sError = ra::util::String::Printf(L"Alt%u %s", nIndex, sError); return false; @@ -260,7 +260,7 @@ bool TriggerValidation::Validate(const std::string& sTrigger, std::wstring& sErr return false; } - if (!ValidateCodeNotes(&trigger->trigger, sError)) + if (!ValidateMemoryNotes(&trigger->trigger, sError)) return false; sError.clear(); diff --git a/src/devkit/RADevKit.vcxproj b/src/devkit/RADevKit.vcxproj index 44d9887f3..e060de4a1 100644 --- a/src/devkit/RADevKit.vcxproj +++ b/src/devkit/RADevKit.vcxproj @@ -69,8 +69,8 @@ - - + + @@ -96,8 +96,8 @@ - - + + diff --git a/src/devkit/RADevKit.vcxproj.filters b/src/devkit/RADevKit.vcxproj.filters index 86e4e5449..5665c789e 100644 --- a/src/devkit/RADevKit.vcxproj.filters +++ b/src/devkit/RADevKit.vcxproj.filters @@ -153,7 +153,7 @@ data\models - + data\models @@ -166,7 +166,7 @@ data\models - + @@ -212,7 +212,7 @@ context\impl - + data\models @@ -227,7 +227,7 @@ data\models - + \ No newline at end of file diff --git a/src/devkit/context/impl/ConsoleContext.cpp b/src/devkit/context/impl/ConsoleContext.cpp index 8dbb0e254..2b95260e1 100644 --- a/src/devkit/context/impl/ConsoleContext.cpp +++ b/src/devkit/context/impl/ConsoleContext.cpp @@ -197,7 +197,7 @@ bool ConsoleContext::GetRealAddressConversion(ra::data::Memory::Size* nReadSize, // $02000000 -> $00008000 (via an offset) // However, most developers who have implemented sets just do a 24-bit // read _and_ use a +0x8000 offset when necessary. As these offsets are - // encoded in the code notes, we shouldn't provide an explicit offset here. + // encoded in the memory notes, we shouldn't provide an explicit offset here. *nReadSize = ra::data::Memory::Size::TwentyFourBit; *nMask = 0x00FFFFFF; *nOffset = 0; diff --git a/src/devkit/context/impl/RcClient.cpp b/src/devkit/context/impl/RcClient.cpp index 6ba41d015..808226b86 100644 --- a/src/devkit/context/impl/RcClient.cpp +++ b/src/devkit/context/impl/RcClient.cpp @@ -159,7 +159,7 @@ static void CacheCodeNotesResponse(const rc_api_server_response_t& pResponse, co { // store a copy in the cache for offline mode auto& pLocalStorage = ra::services::ServiceLocator::GetMutable(); - auto pData = pLocalStorage.WriteText(ra::services::StorageItemType::CodeNotes, sGameId); + auto pData = pLocalStorage.WriteText(ra::services::StorageItemType::MemoryNotes, sGameId); if (pData != nullptr) { std::string sContent(pResponse.body, pResponse.body_length); diff --git a/src/devkit/data/models/AssetModelBase.cpp b/src/devkit/data/models/AssetModelBase.cpp index 0657ce507..30adb3eda 100644 --- a/src/devkit/data/models/AssetModelBase.cpp +++ b/src/devkit/data/models/AssetModelBase.cpp @@ -621,7 +621,7 @@ const char* AssetModelBase::GetAssetTypeString(AssetType nType) noexcept case AssetType::Leaderboard: return "Leaderboard"; case AssetType::LocalBadges: return "LocalBadges"; case AssetType::RichPresence: return "RichPresence"; - case AssetType::CodeNotes: return "CodeNotes"; + case AssetType::MemoryNotes: return "MemoryNotes"; default: return "Unknown"; } } diff --git a/src/devkit/data/models/AssetModelBase.hh b/src/devkit/data/models/AssetModelBase.hh index ebcaa08a4..017cc2ec1 100644 --- a/src/devkit/data/models/AssetModelBase.hh +++ b/src/devkit/data/models/AssetModelBase.hh @@ -20,7 +20,7 @@ enum class AssetType Leaderboard, RichPresence, LocalBadges, - CodeNotes, + MemoryNotes, MemoryRegions, }; diff --git a/src/devkit/data/models/CodeNotesModel.hh b/src/devkit/data/models/CodeNotesModel.hh deleted file mode 100644 index d0a14bb25..000000000 --- a/src/devkit/data/models/CodeNotesModel.hh +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef RA_DATA_CODE_NOTES_MODEL_H -#define RA_DATA_CODE_NOTES_MODEL_H -#pragma once - -#include "data/models/AssetModelBase.hh" - -#include "data/models/CodeNoteModel.hh" - -namespace ra { -namespace data { -namespace models { - -class CodeNotesModel : public AssetModelBase -{ -public: - CodeNotesModel() noexcept; - ~CodeNotesModel() = default; - CodeNotesModel(const CodeNotesModel&) noexcept = delete; - CodeNotesModel& operator=(const CodeNotesModel&) noexcept = delete; - CodeNotesModel(CodeNotesModel&&) noexcept = delete; - CodeNotesModel& operator=(CodeNotesModel&&) noexcept = delete; - - typedef std::function CodeNoteChangedFunction; - typedef std::function CodeNoteMovedFunction; - - /// - /// Repopulates with code notes from the server. - /// - /// Unique identifier of the game to load code notes for. - /// Callback to call when a code note is changed. - /// Callback to call when a code note is moved. - /// Callback to call when the loading completes. - void Refresh(unsigned int nGameId, CodeNoteChangedFunction fCodeNoteChanged, CodeNoteMovedFunction fCodeNoteMoved, std::function callback); - - /// - /// Returns the note associated with the specified address. - /// - /// The note associated to the address, nullptr if no note is associated to the address. - const std::wstring* FindCodeNote(ra::data::ByteAddress nAddress) const - { - const auto* pNote = FindCodeNoteModel(nAddress); - return (pNote != nullptr) ? &pNote->GetNote() : nullptr; - } - - /// - /// Returns the note model associated with the specified address. - /// - /// The note model associated to the address, nullptr if no note is associated to the address. - const CodeNoteModel* FindCodeNoteModel(ra::data::ByteAddress nAddress, bool bIncludeDerived = true) const; - - /// - /// Returns the address of the first byte containing the specified code note. - /// - /// - /// Returns 0xFFFFFFFF if not found. - /// - ra::data::ByteAddress FindCodeNoteStart(ra::data::ByteAddress nAddress) const; - - /// - /// Returns the note associated with the specified address. - /// - /// - /// The note associated to the address or neighboring addresses based on . - /// Returns an empty string if no note is associated to the address. - /// - std::wstring FindCodeNote(ra::data::ByteAddress nAddress, Memory::Size nSize) const; - - /// - /// Returns the address of the real code note from which an indirect code note was derived. - /// - /// - /// Returns 0xFFFFFFFF if not found, or not an indirect note. - /// - ra::data::ByteAddress GetIndirectSource(ra::data::ByteAddress nAddress) const; - - /// - /// Returns the address of the next code note after the provided address. - /// - /// - /// Returns 0xFFFFFFFF if not found. - /// - ra::data::ByteAddress GetNextNoteAddress(ra::data::ByteAddress nAfterAddress, bool bIncludeDerived = false) const; - - /// - /// Returns the address of the next code note before the provided address. - /// - /// - /// Returns 0xFFFFFFFF if not found. - /// - ra::data::ByteAddress GetPreviousNoteAddress(ra::data::ByteAddress nBeforeAddress, bool bIncludeDerived = false) const; - - /// - /// Enumerates the code notes - /// - /// - /// is called for each known code note. If it returns false enumeration stops. - /// - void EnumerateCodeNotes(std::function callback, bool bIncludeDerived = false) const; - - /// - /// Sets the note to associate with the specified address. - /// - /// The address to set the note for. - /// The new note for the address. - /// true if the note was updated, false if an error occurred. - void SetCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote); - - /// - /// Returns the number of known code notes (not including indirect notes). - /// - size_t CodeNoteCount() const noexcept { return m_vCodeNotes.size(); } - - /// - /// Gets the address of the first code note. - /// - ra::data::ByteAddress FirstCodeNoteAddress() const noexcept - { - return (m_vCodeNotes.empty()) ? 0U : m_vCodeNotes.front()->GetAddress(); - } - - /// - /// Enumerates the modified code notes - /// - /// - /// is called for each known code note. If it returns false enumeration stops. - /// - void EnumerateModifiedCodeNotes(std::function callback) const - { - for (const auto& pair : m_mOriginalCodeNotes) - { - if (!callback(pair.first)) - break; - } - } - - /// - /// Gets whether or not the note for specified address has been modified. - /// - bool IsNoteModified(ra::data::ByteAddress nAddress) const - { - return m_mOriginalCodeNotes.find(nAddress) != m_mOriginalCodeNotes.end(); - } - - void SetServerCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote); - const std::wstring* GetServerCodeNote(ra::data::ByteAddress nAddress) const; - const std::string* GetServerCodeNoteAuthor(ra::data::ByteAddress nAddress) const; - - void Serialize(ra::services::TextWriter&) const override; - bool Deserialize(ra::util::Tokenizer&) override; - - void DoFrame() override; - - bool IsShownInList() const noexcept override { return false; } - -protected: - void AddCodeNote(ra::data::ByteAddress nAddress, const std::string& sAuthor, const std::wstring& sNote); - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote); - - std::vector> m_vCodeNotes; - std::map> m_mOriginalCodeNotes; - - std::map m_mPendingCodeNotes; - - std::pair FindIndirectCodeNoteInternal(ra::data::ByteAddress nAddress) const; - - bool m_bHasPointers = false; - bool m_bRefreshing = false; - - CodeNoteChangedFunction m_fCodeNoteChanged; - CodeNoteMovedFunction m_fCodeNoteMoved; - -private: - static std::wstring BuildCodeNoteSized(ra::data::ByteAddress nAddress, unsigned nCheckBytes, ra::data::ByteAddress nNoteAddress, const CodeNoteModel& pNote); - - mutable std::mutex m_oMutex; -}; - -} // namespace models -} // namespace data -} // namespace ra - -#endif RA_DATA_CODE_NOTES_MODEL_H diff --git a/src/devkit/data/models/CodeNoteModel.cpp b/src/devkit/data/models/MemoryNoteModel.cpp similarity index 93% rename from src/devkit/data/models/CodeNoteModel.cpp rename to src/devkit/data/models/MemoryNoteModel.cpp index 873726c6b..4c8eed1e9 100644 --- a/src/devkit/data/models/CodeNoteModel.cpp +++ b/src/devkit/data/models/MemoryNoteModel.cpp @@ -1,4 +1,4 @@ -#include "CodeNoteModel.hh" +#include "MemoryNoteModel.hh" #include "context\IConsoleContext.hh" @@ -10,7 +10,7 @@ namespace ra { namespace data { namespace models { -struct CodeNoteModel::PointerData +struct MemoryNoteModel::PointerData { uint32_t RawPointerValue = 0xFFFFFFFF; // last raw value of pointer captured ra::data::ByteAddress PointerAddress = 0xFFFFFFFF; // raw pointer value converted to RA address @@ -27,13 +27,13 @@ struct CodeNoteModel::PointerData }; OffsetType OffsetType = OffsetType::None; - std::vector OffsetNotes; + std::vector OffsetNotes; }; // these must be defined here because of forward declaration of PointerData in header file. -CodeNoteModel::CodeNoteModel() noexcept {} -CodeNoteModel::~CodeNoteModel() {} -CodeNoteModel::CodeNoteModel(CodeNoteModel&& pOther) noexcept +MemoryNoteModel::MemoryNoteModel() noexcept {} +MemoryNoteModel::~MemoryNoteModel() {} +MemoryNoteModel::MemoryNoteModel(MemoryNoteModel&& pOther) noexcept : m_sAuthor(std::move(pOther.m_sAuthor)), m_sNote(std::move(pOther.m_sNote)), m_nBytes(pOther.m_nBytes), @@ -43,7 +43,7 @@ CodeNoteModel::CodeNoteModel(CodeNoteModel&& pOther) noexcept m_pPointerData(std::move(pOther.m_pPointerData)) { } -CodeNoteModel& CodeNoteModel::operator=(CodeNoteModel&& pOther) noexcept +MemoryNoteModel& MemoryNoteModel::operator=(MemoryNoteModel&& pOther) noexcept { m_sAuthor = std::move(pOther.m_sAuthor); m_sNote = std::move(pOther.m_sNote); @@ -55,27 +55,27 @@ CodeNoteModel& CodeNoteModel::operator=(CodeNoteModel&& pOther) noexcept return *this; } -std::wstring CodeNoteModel::GetPointerDescription() const +std::wstring MemoryNoteModel::GetPointerDescription() const { return m_pPointerData != nullptr ? m_sNote.substr(0, m_pPointerData->HeaderLength) : std::wstring(); } -ra::data::ByteAddress CodeNoteModel::GetPointerAddress() const noexcept +ra::data::ByteAddress MemoryNoteModel::GetPointerAddress() const noexcept { return m_pPointerData != nullptr ? m_pPointerData->PointerAddress : 0xFFFFFFFF; } -bool CodeNoteModel::HasRawPointerValue() const noexcept +bool MemoryNoteModel::HasRawPointerValue() const noexcept { return m_pPointerData != nullptr ? m_pPointerData->PointerRead : false; } -uint32_t CodeNoteModel::GetRawPointerValue() const noexcept +uint32_t MemoryNoteModel::GetRawPointerValue() const noexcept { return m_pPointerData != nullptr ? m_pPointerData->RawPointerValue : 0xFFFFFFFF; } -bool CodeNoteModel::HasNestedPointers() const noexcept +bool MemoryNoteModel::HasNestedPointers() const noexcept { return m_pPointerData != nullptr && m_pPointerData->HasPointers; } @@ -90,7 +90,7 @@ static ra::data::ByteAddress ConvertPointer(ra::data::ByteAddress nAddress) return nAddress; } -void CodeNoteModel::UpdateRawPointerValue(ra::data::ByteAddress nAddress, const ra::context::IEmulatorMemoryContext& pMemoryContext, +void MemoryNoteModel::UpdateRawPointerValue(ra::data::ByteAddress nAddress, const ra::context::IEmulatorMemoryContext& pMemoryContext, NoteMovedFunction fNoteMovedCallback) { if (m_pPointerData == nullptr) @@ -134,7 +134,7 @@ void CodeNoteModel::UpdateRawPointerValue(ra::data::ByteAddress nAddress, const } } -const CodeNoteModel* CodeNoteModel::GetPointerNoteAtOffset(int nOffset) const +const MemoryNoteModel* MemoryNoteModel::GetPointerNoteAtOffset(int nOffset) const { if (m_pPointerData == nullptr) return nullptr; @@ -162,7 +162,7 @@ const CodeNoteModel* CodeNoteModel::GetPointerNoteAtOffset(int nOffset) const return nullptr; } -std::pair CodeNoteModel::GetPointerNoteAtAddress(ra::data::ByteAddress nAddress) const +std::pair MemoryNoteModel::GetPointerNoteAtAddress(ra::data::ByteAddress nAddress) const { if (m_pPointerData == nullptr) return {0, nullptr}; @@ -220,7 +220,7 @@ std::pair CodeNoteModel::GetPointer return {0, nullptr}; } -bool CodeNoteModel::GetPointerChain(std::vector& vChain, const CodeNoteModel& pRootNote) const +bool MemoryNoteModel::GetPointerChain(std::vector& vChain, const MemoryNoteModel& pRootNote) const { if (!pRootNote.IsPointer()) return false; @@ -233,8 +233,8 @@ bool CodeNoteModel::GetPointerChain(std::vector& vChain, c return GetPointerChainRecursive(vChain, pRootNote); } -bool CodeNoteModel::GetPointerChainRecursive(std::vector& vChain, - const CodeNoteModel& pParentNote) const +bool MemoryNoteModel::GetPointerChainRecursive(std::vector& vChain, + const MemoryNoteModel& pParentNote) const { for (auto& pNote : pParentNote.m_pPointerData->OffsetNotes) { @@ -258,7 +258,7 @@ bool CodeNoteModel::GetPointerChainRecursive(std::vector& return false; } -bool CodeNoteModel::GetPreviousAddress(ra::data::ByteAddress nBeforeAddress, ra::data::ByteAddress& nPreviousAddress) const +bool MemoryNoteModel::GetPreviousAddress(ra::data::ByteAddress nBeforeAddress, ra::data::ByteAddress& nPreviousAddress) const { if (m_pPointerData == nullptr) return false; @@ -285,7 +285,7 @@ bool CodeNoteModel::GetPreviousAddress(ra::data::ByteAddress nBeforeAddress, ra: return bResult; } -bool CodeNoteModel::GetNextAddress(ra::data::ByteAddress nAfterAddress, ra::data::ByteAddress& nNextAddress) const +bool MemoryNoteModel::GetNextAddress(ra::data::ByteAddress nAfterAddress, ra::data::ByteAddress& nNextAddress) const { if (m_pPointerData == nullptr) return false; @@ -312,7 +312,7 @@ bool CodeNoteModel::GetNextAddress(ra::data::ByteAddress nAfterAddress, ra::data return bResult; } -std::wstring CodeNoteModel::GetPrimaryNote() const +std::wstring MemoryNoteModel::GetPrimaryNote() const { if (m_pPointerData != nullptr) { @@ -329,7 +329,7 @@ std::wstring CodeNoteModel::GetPrimaryNote() const return m_sNote; } -void CodeNoteModel::SetNote(const std::wstring& sNote, bool bImpliedPointer) +void MemoryNoteModel::SetNote(const std::wstring& sNote, bool bImpliedPointer) { if (m_sNote == sNote) return; @@ -395,12 +395,12 @@ void CodeNoteModel::SetNote(const std::wstring& sNote, bool bImpliedPointer) m_nBytes = Memory::SizeBytes(m_nMemSize); } - // if there are any lines starting with a plus sign, extract the indirect code notes + // if there are any lines starting with a plus sign, extract the indirect memory notes nIndex = sNote.find(L"\n+", nIndex + 1); if (nIndex != std::string::npos) ProcessIndirectNotes(sNote, nIndex); - // failed to find nested code notes. create a PointerData object so the note still + // failed to find nested memory notes. create a PointerData object so the note still // gets treated as a pointer if (!m_pPointerData) { @@ -428,7 +428,7 @@ void CodeNoteModel::SetNote(const std::wstring& sNote, bool bImpliedPointer) } } -Memory::Size CodeNoteModel::GetImpliedPointerSize() +Memory::Size MemoryNoteModel::GetImpliedPointerSize() { const auto& pConsoleContext = ra::services::ServiceLocator::Get(); @@ -452,7 +452,7 @@ static constexpr bool IsHexDigit(wchar_t c) return false; } -CodeNoteModel::Parser::TokenType CodeNoteModel::Parser::NextToken(std::wstring& sWord) const +MemoryNoteModel::Parser::TokenType MemoryNoteModel::Parser::NextToken(std::wstring& sWord) const { wchar_t cFirstLetter = '\0'; bool bWordIsNumber = false; @@ -604,7 +604,7 @@ CodeNoteModel::Parser::TokenType CodeNoteModel::Parser::NextToken(std::wstring& return TokenType::Other; } -void CodeNoteModel::ExtractSize(const std::wstring& sNote, bool bIsPointer) +void MemoryNoteModel::ExtractSize(const std::wstring& sNote, bool bIsPointer) { // provide defaults in case no matches are found m_nBytes = 1; @@ -848,7 +848,7 @@ static void RemoveIndentPrefix(std::wstring& sNote) } } -void CodeNoteModel::ProcessIndirectNotes(const std::wstring& sNote, size_t nIndex) +void MemoryNoteModel::ProcessIndirectNotes(const std::wstring& sNote, size_t nIndex) { auto pointerData = std::make_unique(); pointerData->HeaderLength = gsl::narrow_cast(nIndex); @@ -937,7 +937,7 @@ void CodeNoteModel::ProcessIndirectNotes(const std::wstring& sNote, size_t nInde const auto sNoteBody = sNextNote.substr(pEnd - sNextNote.c_str()); const auto nAddress = gsl::narrow_cast(nOffset); - CodeNoteModel* pExistingNote = nullptr; + MemoryNoteModel* pExistingNote = nullptr; for (auto& pOffsetNote : pointerData->OffsetNotes) { if (pOffsetNote.GetAddress() == nAddress) @@ -956,7 +956,7 @@ void CodeNoteModel::ProcessIndirectNotes(const std::wstring& sNote, size_t nInde } else { - CodeNoteModel offsetNote; + MemoryNoteModel offsetNote; offsetNote.SetAuthor(m_sAuthor); offsetNote.SetAddress(nAddress); @@ -1000,7 +1000,7 @@ void CodeNoteModel::ProcessIndirectNotes(const std::wstring& sNote, size_t nInde m_pPointerData = std::move(pointerData); } -std::wstring CodeNoteModel::TrimSize(const std::wstring& sNote, bool bKeepPointer) +std::wstring MemoryNoteModel::TrimSize(const std::wstring& sNote, bool bKeepPointer) { size_t nEndIndex = 0; size_t nStartIndex = sNote.find('['); @@ -1023,19 +1023,19 @@ std::wstring CodeNoteModel::TrimSize(const std::wstring& sNote, bool bKeepPointe bool bPointer = false; std::wstring sWord; - ra::data::models::CodeNoteModel::Parser::TokenType nTokenType; - const ra::data::models::CodeNoteModel::Parser parser(sNote, nStartIndex + 1, nEndIndex); + ra::data::models::MemoryNoteModel::Parser::TokenType nTokenType; + const ra::data::models::MemoryNoteModel::Parser parser(sNote, nStartIndex + 1, nEndIndex); do { nTokenType = parser.NextToken(sWord); - if (nTokenType == ra::data::models::CodeNoteModel::Parser::TokenType::Other) + if (nTokenType == ra::data::models::MemoryNoteModel::Parser::TokenType::Other) { if (sWord == L"pointer") bPointer = true; else return sNote; } - } while (nTokenType != ra::data::models::CodeNoteModel::Parser::TokenType::None); + } while (nTokenType != ra::data::models::MemoryNoteModel::Parser::TokenType::None); while (nStartIndex > 0) { @@ -1070,8 +1070,8 @@ std::wstring CodeNoteModel::TrimSize(const std::wstring& sNote, bool bKeepPointe return sNoteCopy; } -void CodeNoteModel::EnumeratePointerNotes( - std::function fCallback) const +void MemoryNoteModel::EnumeratePointerNotes( + std::function fCallback) const { if (m_pPointerData == nullptr) return; @@ -1082,8 +1082,8 @@ void CodeNoteModel::EnumeratePointerNotes( EnumeratePointerNotes(m_pPointerData->PointerAddress, fCallback); } -void CodeNoteModel::EnumeratePointerNotes(ra::data::ByteAddress nPointerAddress, - std::function fCallback) const +void MemoryNoteModel::EnumeratePointerNotes(ra::data::ByteAddress nPointerAddress, + std::function fCallback) const { if (m_pPointerData == nullptr) return; @@ -1386,7 +1386,7 @@ static std::wstring_view MatchSubNote(std::wstring_view svNote, std::function= 8 || nBits == ra::data::Memory::Size::BitCount) return {}; @@ -1530,7 +1530,7 @@ std::wstring_view CodeNoteModel::GetSubNote(ra::data::Memory::Size nBits) const }); } -std::wstring CodeNoteModel::GetSummary() const +std::wstring MemoryNoteModel::GetSummary() const { if (m_pPointerData != nullptr) { @@ -1626,7 +1626,7 @@ static ra::data::Memory::Format GetNumberFormat(std::wstring_view svValue) return nFormat; } -ra::data::Memory::Format CodeNoteModel::DeterminePreferredMemFormat(std::wstring_view sNote) +ra::data::Memory::Format MemoryNoteModel::DeterminePreferredMemFormat(std::wstring_view sNote) { auto nMemFormat = ra::data::Memory::Format::Dec; auto bPotentiallyPaddedHex = false; diff --git a/src/devkit/data/models/CodeNoteModel.hh b/src/devkit/data/models/MemoryNoteModel.hh similarity index 88% rename from src/devkit/data/models/CodeNoteModel.hh rename to src/devkit/data/models/MemoryNoteModel.hh index b4db92c5b..0b0b7d37a 100644 --- a/src/devkit/data/models/CodeNoteModel.hh +++ b/src/devkit/data/models/MemoryNoteModel.hh @@ -1,5 +1,5 @@ -#ifndef RA_DATA_MODELS_CODENOTEMODEL_H -#define RA_DATA_MODELS_CODENOTEMODEL_H +#ifndef RA_DATA_MODELS_MEMORYNOTEMODEL_H +#define RA_DATA_MODELS_MEMORYNOTEMODEL_H #pragma once #include "context/IEmulatorMemoryContext.hh" @@ -8,15 +8,15 @@ namespace ra { namespace data { namespace models { -class CodeNoteModel +class MemoryNoteModel { public: - CodeNoteModel() noexcept; - virtual ~CodeNoteModel(); - CodeNoteModel(const CodeNoteModel&) noexcept = delete; - CodeNoteModel& operator=(const CodeNoteModel&) noexcept = delete; - CodeNoteModel(CodeNoteModel&&) noexcept; - CodeNoteModel& operator=(CodeNoteModel&&) noexcept; + MemoryNoteModel() noexcept; + virtual ~MemoryNoteModel(); + MemoryNoteModel(const MemoryNoteModel&) noexcept = delete; + MemoryNoteModel& operator=(const MemoryNoteModel&) noexcept = delete; + MemoryNoteModel(MemoryNoteModel&&) noexcept; + MemoryNoteModel& operator=(MemoryNoteModel&&) noexcept; /// /// Gets the author of the note. @@ -108,7 +108,7 @@ public: /// uint32_t GetRawPointerValue() const noexcept; - typedef std::function NoteMovedFunction; + typedef std::function NoteMovedFunction; /// /// Updates the raw pointer value by reading from memory. /// @@ -131,13 +131,13 @@ public: /// Get the subnote for the field at the specified offset. /// /// Requested subnote, null if not found. - const CodeNoteModel* GetPointerNoteAtOffset(int nOffset) const; + const MemoryNoteModel* GetPointerNoteAtOffset(int nOffset) const; /// /// Gets the subnote for the specified address. /// /// A pair representing the nested note and its actual address, or an empty pair if not found. - std::pair GetPointerNoteAtAddress(ra::data::ByteAddress nAddress) const; + std::pair GetPointerNoteAtAddress(ra::data::ByteAddress nAddress) const; /// /// Attempts to build a path from the provided root note to this note. @@ -145,7 +145,7 @@ public: /// If a path is found, it will be captured here (root first). /// The root note that is suspected to contain this note. /// true if a path is found, false if not. - virtual bool GetPointerChain(std::vector& vChain, const CodeNoteModel& pRootNote) const; + virtual bool GetPointerChain(std::vector& vChain, const MemoryNoteModel& pRootNote) const; /// /// Gets the address of the closest subnote before the specified address. @@ -168,7 +168,7 @@ public: /// /// Calls the provided callback for each subnote. /// - void EnumeratePointerNotes(std::function fCallback) const; + void EnumeratePointerNotes(std::function fCallback) const; /// /// Removes the size annotation from a note string. @@ -214,7 +214,7 @@ protected: }; private: - std::string m_sAuthor; // TODO: make this a reference to data stored in the CodeNotesModel. + std::string m_sAuthor; // TODO: make this a reference to data stored in the MemoryNotesModel. std::wstring m_sNote; ra::data::ByteAddress m_nAddress = 0; // address of root nodes, offset to indirect nodes unsigned int m_nBytes = 1; @@ -234,10 +234,10 @@ private: struct PointerData; std::unique_ptr m_pPointerData; - bool GetPointerChainRecursive(std::vector& vChain, const CodeNoteModel& pParentNote) const; + bool GetPointerChainRecursive(std::vector& vChain, const MemoryNoteModel& pParentNote) const; void EnumeratePointerNotes(ra::data::ByteAddress nPointerAddress, - std::function fCallback) const; + std::function fCallback) const; void ProcessIndirectNotes(const std::wstring& sNote, size_t nIndex); void ExtractSize(const std::wstring& sNote, bool bIsPointer); @@ -249,4 +249,4 @@ private: } // namespace data } // namespace ra -#endif RA_DATA_MODELS_CODENOTEMODEL_H +#endif RA_DATA_MODELS_MEMORYNOTEMODEL_H diff --git a/src/devkit/data/models/CodeNotesModel.cpp b/src/devkit/data/models/MemoryNotesModel.cpp similarity index 53% rename from src/devkit/data/models/CodeNotesModel.cpp rename to src/devkit/data/models/MemoryNotesModel.cpp index bb59df203..185c8c91f 100644 --- a/src/devkit/data/models/CodeNotesModel.cpp +++ b/src/devkit/data/models/MemoryNotesModel.cpp @@ -1,4 +1,4 @@ -#include "CodeNotesModel.hh" +#include "MemoryNotesModel.hh" #include "context/IRcClient.hh" #include "context/UserContext.hh" @@ -14,29 +14,29 @@ namespace ra { namespace data { namespace models { -CodeNotesModel::CodeNotesModel() noexcept +MemoryNotesModel::MemoryNotesModel() noexcept { - GSL_SUPPRESS_F6 SetValue(TypeProperty, ra::etoi(AssetType::CodeNotes)); - GSL_SUPPRESS_F6 SetName(L"Code Notes"); + GSL_SUPPRESS_F6 SetValue(TypeProperty, ra::etoi(AssetType::MemoryNotes)); + GSL_SUPPRESS_F6 SetName(L"Memory Notes"); } -void CodeNotesModel::Refresh(unsigned int nGameId, - CodeNoteChangedFunction fCodeNoteChanged, CodeNoteMovedFunction fCodeNoteMoved, +void MemoryNotesModel::Refresh(unsigned int nGameId, + MemoryNoteChangedFunction fMemoryNoteChanged, MemoryNoteMovedFunction fMemoryNoteMoved, std::function callback) { - m_vCodeNotes.clear(); + m_vMemoryNotes.clear(); m_bHasPointers = false; if (nGameId == 0) { - m_fCodeNoteChanged = nullptr; - m_fCodeNoteMoved = nullptr; + m_fMemoryNoteChanged = nullptr; + m_fMemoryNoteMoved = nullptr; callback(); return; } - m_fCodeNoteChanged = fCodeNoteChanged; - m_fCodeNoteMoved = fCodeNoteMoved; + m_fMemoryNoteChanged = fMemoryNoteChanged; + m_fMemoryNoteMoved = fMemoryNoteMoved; if (callback == nullptr) // unit test workaround to avoid server call return; @@ -61,7 +61,7 @@ void CodeNotesModel::Refresh(unsigned int nGameId, if (nResult != RC_OK) { ra::services::ServiceLocator::Get() - .ReportErrorMessage(L"Failed to download code notes", + .ReportErrorMessage(L"Failed to download memory notes", ra::context::IRcClient::GetErrorMessage(nResult, response.response)); } else @@ -75,8 +75,8 @@ void CodeNotesModel::Refresh(unsigned int nGameId, { std::unique_lock lock(m_oMutex); - const auto pIter = m_mOriginalCodeNotes.find(pNote->address); - if (pIter != m_mOriginalCodeNotes.end()) + const auto pIter = m_mOriginalNotes.find(pNote->address); + if (pIter != m_mOriginalNotes.end()) { pIter->second.first = pNote->author; pIter->second.second = sNote; @@ -84,21 +84,21 @@ void CodeNotesModel::Refresh(unsigned int nGameId, } } - AddCodeNote(pNote->address, pNote->author, sNote); + AddMemoryNote(pNote->address, pNote->author, sNote); } } - std::map mPendingCodeNotes; + std::map mPendingNotes; { std::unique_lock lock(m_oMutex); - mPendingCodeNotes.swap(m_mPendingCodeNotes); + mPendingNotes.swap(m_mPendingNotes); m_bRefreshing = false; } - for (const auto& pNote : mPendingCodeNotes) - SetCodeNote(pNote.first, pNote.second); + for (const auto& pNote : mPendingNotes) + SetNote(pNote.first, pNote.second); - for (const auto& pNote : m_vCodeNotes) + for (const auto& pNote : m_vMemoryNotes) { if (pNote->IsPointer()) { @@ -113,15 +113,15 @@ void CodeNotesModel::Refresh(unsigned int nGameId, GSL_SUPPRESS_R30 // left has to be a const ref to the unique_ptr because the function is used in lower_bound GSL_SUPPRESS_R32 // left has to be a const ref to the unique_ptr because the function is used in lower_bound -static int CompareNoteAddresses(const std::unique_ptr& left, +static int CompareNoteAddresses(const std::unique_ptr& left, ra::data::ByteAddress nAddress) noexcept { return left->GetAddress() < nAddress; } -void CodeNotesModel::AddCodeNote(ra::data::ByteAddress nAddress, const std::string& sAuthor, const std::wstring& sNote) +void MemoryNotesModel::AddMemoryNote(ra::data::ByteAddress nAddress, const std::string& sAuthor, const std::wstring& sNote) { - std::unique_ptr note = std::make_unique(); + std::unique_ptr note = std::make_unique(); note->SetAuthor(sAuthor); note->SetNote(sNote); note->SetAddress(nAddress); @@ -132,57 +132,57 @@ void CodeNotesModel::AddCodeNote(ra::data::ByteAddress nAddress, const std::stri { std::unique_lock lock(m_oMutex); - auto iter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); - if (iter != m_vCodeNotes.end() && (*iter)->GetAddress() == note->GetAddress()) + auto iter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); + if (iter != m_vMemoryNotes.end() && (*iter)->GetAddress() == note->GetAddress()) iter->swap(note); else - m_vCodeNotes.insert(iter, std::move(note)); + m_vMemoryNotes.insert(iter, std::move(note)); } - OnCodeNoteChanged(nAddress, sNote); + OnMemoryNoteChanged(nAddress, sNote); - // CodeNoteChanged events for indirect child notes will be raised by first call to DoFrame + // MemoryNoteChanged events for indirect child notes will be raised by first call to DoFrame } -void CodeNotesModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) +void MemoryNotesModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { SetValue(ra::data::models::AssetModelBase::ChangesProperty, - m_mOriginalCodeNotes.empty() ? + m_mOriginalNotes.empty() ? ra::etoi(ra::data::models::AssetChanges::None) : ra::etoi(ra::data::models::AssetChanges::Unpublished)); - if (m_fCodeNoteChanged != nullptr) - m_fCodeNoteChanged(nAddress, sNewNote); + if (m_fMemoryNoteChanged != nullptr) + m_fMemoryNoteChanged(nAddress, sNewNote); } -ra::data::ByteAddress CodeNotesModel::FindCodeNoteStart(ra::data::ByteAddress nAddress) const +ra::data::ByteAddress MemoryNotesModel::FindNoteStart(ra::data::ByteAddress nAddress) const { - auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); + auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); // exact match, return it - if (pIter != m_vCodeNotes.end() && (*pIter)->GetAddress() == nAddress) + if (pIter != m_vMemoryNotes.end() && (*pIter)->GetAddress() == nAddress) return nAddress; // lower_bound returns the first item _after_ the search value. scan all items before // the found item to see if any of them contain the target address. have to scan // all items because a singular note may exist within a range. - if (pIter != m_vCodeNotes.begin()) + if (pIter != m_vMemoryNotes.begin()) { do { --pIter; - const auto* pCodeNote = pIter->get(); + const auto* pMemoryNote = pIter->get(); - if (pCodeNote && pCodeNote->GetBytes() > 1 && pCodeNote->GetBytes() + pCodeNote->GetAddress() > nAddress) - return pCodeNote->GetAddress(); + if (pMemoryNote && pMemoryNote->GetBytes() > 1 && pMemoryNote->GetBytes() + pMemoryNote->GetAddress() > nAddress) + return pMemoryNote->GetAddress(); - } while (pIter != m_vCodeNotes.begin()); + } while (pIter != m_vMemoryNotes.begin()); } - // also check for derived code notes + // also check for derived memory notes if (m_bHasPointers) { - for (const auto& pNote : m_vCodeNotes) + for (const auto& pNote : m_vMemoryNotes) { const auto pair = pNote->GetPointerNoteAtAddress(nAddress); if (pair.second != nullptr) @@ -193,8 +193,8 @@ ra::data::ByteAddress CodeNotesModel::FindCodeNoteStart(ra::data::ByteAddress nA return 0xFFFFFFFF; } -std::wstring CodeNotesModel::BuildCodeNoteSized(ra::data::ByteAddress nAddress, - unsigned nCheckBytes, ra::data::ByteAddress nNoteAddress, const CodeNoteModel& pNote) +std::wstring MemoryNotesModel::BuildNoteForAddress(ra::data::ByteAddress nAddress, + unsigned nCheckBytes, ra::data::ByteAddress nNoteAddress, const MemoryNoteModel& pNote) { // extract the first line std::wstring sNote = pNote.GetNote(); @@ -226,64 +226,64 @@ std::wstring CodeNotesModel::BuildCodeNoteSized(ra::data::ByteAddress nAddress, return sNote; } -std::wstring CodeNotesModel::FindCodeNote(ra::data::ByteAddress nAddress, Memory::Size nSize) const +std::wstring MemoryNotesModel::FindNote(ra::data::ByteAddress nAddress, Memory::Size nSize) const { const unsigned int nCheckBytes = ra::data::Memory::SizeBytes(nSize); // lower_bound will return the item if it's an exact match, or the *next* item otherwise - auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); - if (pIter != m_vCodeNotes.end()) + auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); + if (pIter != m_vMemoryNotes.end()) { - const auto* pCodeNote = pIter->get(); - Expects(pCodeNote != nullptr); - if (nAddress == pCodeNote->GetAddress()) + const auto* pMemoryNote = pIter->get(); + Expects(pMemoryNote != nullptr); + if (nAddress == pMemoryNote->GetAddress()) { // exact match - return BuildCodeNoteSized(nAddress, nCheckBytes, pCodeNote->GetAddress(), *pCodeNote); + return BuildNoteForAddress(nAddress, nCheckBytes, pMemoryNote->GetAddress(), *pMemoryNote); } - else if (nAddress + nCheckBytes - 1 >= pCodeNote->GetAddress()) + else if (nAddress + nCheckBytes - 1 >= pMemoryNote->GetAddress()) { // requested number of bytes will overlap with the next item - return BuildCodeNoteSized(nAddress, nCheckBytes, pCodeNote->GetAddress(), *pCodeNote); + return BuildNoteForAddress(nAddress, nCheckBytes, pMemoryNote->GetAddress(), *pMemoryNote); } } // did not match/overlap with the found item, check the item before the found item - if (pIter != m_vCodeNotes.begin()) + if (pIter != m_vMemoryNotes.begin()) { --pIter; - const auto* pCodeNote = pIter->get(); - if (pCodeNote && pCodeNote->GetAddress() + pCodeNote->GetBytes() - 1 >= nAddress) + const auto* pMemoryNote = pIter->get(); + if (pMemoryNote && pMemoryNote->GetAddress() + pMemoryNote->GetBytes() - 1 >= nAddress) { // previous item overlaps with requested address - return BuildCodeNoteSized(nAddress, nCheckBytes, pCodeNote->GetAddress(), *pCodeNote); + return BuildNoteForAddress(nAddress, nCheckBytes, pMemoryNote->GetAddress(), *pMemoryNote); } } - // no code note on the address, check for pointers + // no memory note on the address, check for pointers if (m_bHasPointers) { - for (const auto& pCodeNote2 : m_vCodeNotes) + for (const auto& pMemoryNote2 : m_vMemoryNotes) { - const auto pair = pCodeNote2->GetPointerNoteAtAddress(nAddress); + const auto pair = pMemoryNote2->GetPointerNoteAtAddress(nAddress); if (pair.second != nullptr) - return BuildCodeNoteSized(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]"; + return BuildNoteForAddress(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]"; } const auto nLastAddress = nAddress + nCheckBytes - 1; - for (const auto& pCodeNote2 : m_vCodeNotes) + for (const auto& pMemoryNote2 : m_vMemoryNotes) { - const auto pair = pCodeNote2->GetPointerNoteAtAddress(nLastAddress); + const auto pair = pMemoryNote2->GetPointerNoteAtAddress(nLastAddress); if (pair.second != nullptr) - return BuildCodeNoteSized(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]"; + return BuildNoteForAddress(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]"; } } return std::wstring(); } -void CodeNotesModel::SetCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) +void MemoryNotesModel::SetNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) { std::string sOriginalAuthor; @@ -292,12 +292,12 @@ void CodeNotesModel::SetCodeNote(ra::data::ByteAddress nAddress, const std::wstr if (m_bRefreshing) { - m_mPendingCodeNotes[nAddress] = sNote; + m_mPendingNotes[nAddress] = sNote; return; } - const auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); - if (pIter != m_vCodeNotes.end() && (*pIter)->GetAddress() == nAddress) + const auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); + if (pIter != m_vMemoryNotes.end() && (*pIter)->GetAddress() == nAddress) { if ((*pIter)->GetNote() == sNote) { @@ -311,22 +311,22 @@ void CodeNotesModel::SetCodeNote(ra::data::ByteAddress nAddress, const std::wstr return; } - const auto pIter2 = m_mOriginalCodeNotes.find(nAddress); - if (pIter2 == m_mOriginalCodeNotes.end()) + const auto pIter2 = m_mOriginalNotes.find(nAddress); + if (pIter2 == m_mOriginalNotes.end()) { // note wasn't previously modified - if (pIter != m_vCodeNotes.end() && (*pIter)->GetAddress() == nAddress) + if (pIter != m_vMemoryNotes.end() && (*pIter)->GetAddress() == nAddress) { // capture the original value - const auto* pCodeNote = pIter->get(); - Expects(pCodeNote != nullptr); - m_mOriginalCodeNotes.insert_or_assign(nAddress, - std::make_pair(pCodeNote->GetAuthor(), pCodeNote->GetNote())); + const auto* pMemoryNote = pIter->get(); + Expects(pMemoryNote != nullptr); + m_mOriginalNotes.insert_or_assign(nAddress, + std::make_pair(pMemoryNote->GetAuthor(), pMemoryNote->GetNote())); } else { // add a dummy original value so it appears modified - m_mOriginalCodeNotes.insert_or_assign(nAddress, std::make_pair("", L"")); + m_mOriginalNotes.insert_or_assign(nAddress, std::make_pair("", L"")); } } else if (pIter2->second.second == sNote) @@ -335,14 +335,14 @@ void CodeNotesModel::SetCodeNote(ra::data::ByteAddress nAddress, const std::wstr // and discard the modification tracker sOriginalAuthor = pIter2->second.first; - m_mOriginalCodeNotes.erase(pIter2); + m_mOriginalNotes.erase(pIter2); if (sNote.empty()) { // note didn't originally exist, don't keep a modification record if the // changes were discarded. - m_vCodeNotes.erase(pIter); - OnCodeNoteChanged(nAddress, sNote); + m_vMemoryNotes.erase(pIter); + OnMemoryNoteChanged(nAddress, sNote); return; } } @@ -350,65 +350,65 @@ void CodeNotesModel::SetCodeNote(ra::data::ByteAddress nAddress, const std::wstr if (!sOriginalAuthor.empty()) { - AddCodeNote(nAddress, sOriginalAuthor, sNote); + AddMemoryNote(nAddress, sOriginalAuthor, sNote); } else { const auto& pUserContext = ra::services::ServiceLocator::Get(); - AddCodeNote(nAddress, pUserContext.GetDisplayName(), sNote); + AddMemoryNote(nAddress, pUserContext.GetDisplayName(), sNote); } } -const CodeNoteModel* CodeNotesModel::FindCodeNoteModel(ra::data::ByteAddress nAddress, bool bIncludeDerived) const +const MemoryNoteModel* MemoryNotesModel::FindMemoryNoteModel(ra::data::ByteAddress nAddress, bool bIncludeDerived) const { - const auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); - if (pIter != m_vCodeNotes.end() && (*pIter)->GetAddress() == nAddress) + const auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); + if (pIter != m_vMemoryNotes.end() && (*pIter)->GetAddress() == nAddress) return pIter->get(); if (m_bHasPointers && bIncludeDerived) - return FindIndirectCodeNoteInternal(nAddress).second; + return FindIndirectMemoryNoteInternal(nAddress).second; return nullptr; } -std::pair - CodeNotesModel::FindIndirectCodeNoteInternal(ra::data::ByteAddress nAddress) const +std::pair + MemoryNotesModel::FindIndirectMemoryNoteInternal(ra::data::ByteAddress nAddress) const { - for (const auto& pCodeNote : m_vCodeNotes) + for (const auto& pMemoryNote : m_vMemoryNotes) { - auto pair = pCodeNote->GetPointerNoteAtAddress(nAddress); + auto pair = pMemoryNote->GetPointerNoteAtAddress(nAddress); if (pair.second != nullptr && pair.first == nAddress) // only match start of note - return {pCodeNote->GetAddress(), pair.second}; + return {pMemoryNote->GetAddress(), pair.second}; } return {0, nullptr}; } -ra::data::ByteAddress CodeNotesModel::GetIndirectSource(ra::data::ByteAddress nAddress) const +ra::data::ByteAddress MemoryNotesModel::GetIndirectSource(ra::data::ByteAddress nAddress) const { if (m_bHasPointers) { - const auto pCodeNote = FindIndirectCodeNoteInternal(nAddress); - if (pCodeNote.second != nullptr) - return pCodeNote.first; + const auto pMemoryNote = FindIndirectMemoryNoteInternal(nAddress); + if (pMemoryNote.second != nullptr) + return pMemoryNote.first; } return 0xFFFFFFFF; } -ra::data::ByteAddress CodeNotesModel::GetNextNoteAddress(ra::data::ByteAddress nAfterAddress, bool bIncludeDerived) const +ra::data::ByteAddress MemoryNotesModel::GetNextNoteAddress(ra::data::ByteAddress nAfterAddress, bool bIncludeDerived) const { ra::data::ByteAddress nBestAddress = 0xFFFFFFFF; // lower_bound will return the item if it's an exact match, or the *next* item otherwise - const auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAfterAddress + 1, CompareNoteAddresses); - if (pIter != m_vCodeNotes.end()) + const auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAfterAddress + 1, CompareNoteAddresses); + if (pIter != m_vMemoryNotes.end()) nBestAddress = (*pIter)->GetAddress(); if (m_bHasPointers && bIncludeDerived) { ra::data::ByteAddress nNextAddress = 0U; - for (const auto& pNote : m_vCodeNotes) + for (const auto& pNote : m_vMemoryNotes) { if (pNote->GetNextAddress(nAfterAddress, nNextAddress)) nBestAddress = std::min(nBestAddress, nNextAddress); @@ -418,19 +418,19 @@ ra::data::ByteAddress CodeNotesModel::GetNextNoteAddress(ra::data::ByteAddress n return nBestAddress; } -ra::data::ByteAddress CodeNotesModel::GetPreviousNoteAddress(ra::data::ByteAddress nBeforeAddress, bool bIncludeDerived) const +ra::data::ByteAddress MemoryNotesModel::GetPreviousNoteAddress(ra::data::ByteAddress nBeforeAddress, bool bIncludeDerived) const { unsigned nBestAddress = 0xFFFFFFFF; // lower_bound will return the item if it's an exact match, or the *next* item otherwise - auto pIter = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nBeforeAddress - 1, CompareNoteAddresses); - if (pIter != m_vCodeNotes.end() && (*pIter)->GetAddress() == nBeforeAddress - 1) + auto pIter = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nBeforeAddress - 1, CompareNoteAddresses); + if (pIter != m_vMemoryNotes.end() && (*pIter)->GetAddress() == nBeforeAddress - 1) { // exact match for 1 byte lower, return it. return (*pIter)->GetAddress(); } - if (pIter != m_vCodeNotes.begin()) + if (pIter != m_vMemoryNotes.begin()) { // found next lower item, claim it --pIter; @@ -442,7 +442,7 @@ ra::data::ByteAddress CodeNotesModel::GetPreviousNoteAddress(ra::data::ByteAddre ra::data::ByteAddress nPreviousAddress = 0U; // scan pointed-at addresses to see if there's anything between the next lower item and nBeforeAddress - for (const auto& pNote : m_vCodeNotes) + for (const auto& pNote : m_vMemoryNotes) { if (pNote->GetPreviousAddress(nBeforeAddress, nPreviousAddress)) nBestAddress = std::max(nBestAddress, nPreviousAddress); @@ -452,14 +452,14 @@ ra::data::ByteAddress CodeNotesModel::GetPreviousNoteAddress(ra::data::ByteAddre return nBestAddress; } -void CodeNotesModel::EnumerateCodeNotes(std::function callback, bool bIncludeDerived) const +void MemoryNotesModel::EnumerateMemoryNotes(std::function callback, bool bIncludeDerived) const { if (!bIncludeDerived || !m_bHasPointers) { - // no pointers, just iterate over the normal code notes - for (const auto& pCodeNote : m_vCodeNotes) + // no pointers, just iterate over the normal memory notes + for (const auto& pMemoryNote : m_vMemoryNotes) { - if (!callback(pCodeNote->GetAddress(), *pCodeNote)) + if (!callback(pMemoryNote->GetAddress(), *pMemoryNote)) break; } @@ -467,14 +467,14 @@ void CodeNotesModel::EnumerateCodeNotes(std::function mNotes; - for (const auto& pCodeNote : m_vCodeNotes) + std::map mNotes; + for (const auto& pMemoryNote : m_vMemoryNotes) { - if (!pCodeNote->IsPointer() || pCodeNote->GetRawPointerValue() == 0) + if (!pMemoryNote->IsPointer() || pMemoryNote->GetRawPointerValue() == 0) continue; - std::function fCallback = - [&mNotes, &fCallback](ra::data::ByteAddress nAddress, const CodeNoteModel& pNote) + std::function fCallback = + [&mNotes, &fCallback](ra::data::ByteAddress nAddress, const MemoryNoteModel& pNote) { mNotes[nAddress] = &pNote; @@ -485,13 +485,13 @@ void CodeNotesModel::EnumerateCodeNotes(std::functionEnumeratePointerNotes(fCallback); + pMemoryNote->EnumeratePointerNotes(fCallback); } // merge in the non-pointer notes - for (const auto& pCodeNote : m_vCodeNotes) - mNotes[pCodeNote->GetAddress()] = pCodeNote.get(); + for (const auto& pMemoryNote : m_vMemoryNotes) + mNotes[pMemoryNote->GetAddress()] = pMemoryNote.get(); // and iterate the result for (const auto& pIter : mNotes) @@ -501,91 +501,91 @@ void CodeNotesModel::EnumerateCodeNotes(std::function(); - for (auto& pCodeNote : m_vCodeNotes) + for (auto& pMemoryNote : m_vMemoryNotes) { - if (pCodeNote->IsPointer()) + if (pMemoryNote->IsPointer()) { - if (!m_fCodeNoteMoved) + if (!m_fMemoryNoteMoved) { - pCodeNote->UpdateRawPointerValue(pCodeNote->GetAddress(), pMemoryContext, nullptr); + pMemoryNote->UpdateRawPointerValue(pMemoryNote->GetAddress(), pMemoryContext, nullptr); } - else if (pCodeNote->HasRawPointerValue()) + else if (pMemoryNote->HasRawPointerValue()) { - pCodeNote->UpdateRawPointerValue(pCodeNote->GetAddress(), pMemoryContext, - [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const CodeNoteModel& pOffsetNote) { - m_fCodeNoteMoved(nOldAddress, nNewAddress, pOffsetNote.GetNote()); + pMemoryNote->UpdateRawPointerValue(pMemoryNote->GetAddress(), pMemoryContext, + [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const MemoryNoteModel& pOffsetNote) { + m_fMemoryNoteMoved(nOldAddress, nNewAddress, pOffsetNote.GetNote()); }); } else { // pointer hasn't been read before, provide dummy previous address - pCodeNote->UpdateRawPointerValue(pCodeNote->GetAddress(), pMemoryContext, - [this](ra::data::ByteAddress, ra::data::ByteAddress nNewAddress, const CodeNoteModel& pOffsetNote) { - m_fCodeNoteMoved(0xFFFFFFFF, nNewAddress, pOffsetNote.GetNote()); + pMemoryNote->UpdateRawPointerValue(pMemoryNote->GetAddress(), pMemoryContext, + [this](ra::data::ByteAddress, ra::data::ByteAddress nNewAddress, const MemoryNoteModel& pOffsetNote) { + m_fMemoryNoteMoved(0xFFFFFFFF, nNewAddress, pOffsetNote.GetNote()); }); } } } } -void CodeNotesModel::SetServerCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) +void MemoryNotesModel::SetServerNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) { - const auto pIter = m_mOriginalCodeNotes.find(nAddress); - if (pIter != m_mOriginalCodeNotes.end()) + const auto pIter = m_mOriginalNotes.find(nAddress); + if (pIter != m_mOriginalNotes.end()) { // remove the original entry - we're setting a new original entry - m_mOriginalCodeNotes.erase(pIter); + m_mOriginalNotes.erase(pIter); } // if we're just committing the current value, we're done - const auto pIter2 = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), nAddress, CompareNoteAddresses); - if (pIter2 != m_vCodeNotes.end() && (*pIter2)->GetAddress() == nAddress && (*pIter2)->GetNote() == sNote) + const auto pIter2 = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), nAddress, CompareNoteAddresses); + if (pIter2 != m_vMemoryNotes.end() && (*pIter2)->GetAddress() == nAddress && (*pIter2)->GetNote() == sNote) { if (sNote.empty()) - m_vCodeNotes.erase(pIter2); + m_vMemoryNotes.erase(pIter2); - if (m_mOriginalCodeNotes.empty()) + if (m_mOriginalNotes.empty()) SetValue(ra::data::models::AssetModelBase::ChangesProperty, ra::etoi(ra::data::models::AssetChanges::None)); - OnCodeNoteChanged(nAddress, sNote); + OnMemoryNoteChanged(nAddress, sNote); return; } // update the current value const auto& pUserContext = ra::services::ServiceLocator::Get(); - AddCodeNote(nAddress, pUserContext.GetDisplayName(), sNote); + AddMemoryNote(nAddress, pUserContext.GetDisplayName(), sNote); } -const std::wstring* CodeNotesModel::GetServerCodeNote(ra::data::ByteAddress nAddress) const +const std::wstring* MemoryNotesModel::GetServerNote(ra::data::ByteAddress nAddress) const { - const auto pIter = m_mOriginalCodeNotes.find(nAddress); - if (pIter != m_mOriginalCodeNotes.end()) + const auto pIter = m_mOriginalNotes.find(nAddress); + if (pIter != m_mOriginalNotes.end()) return &pIter->second.second; return nullptr; } -const std::string* CodeNotesModel::GetServerCodeNoteAuthor(ra::data::ByteAddress nAddress) const +const std::string* MemoryNotesModel::GetServerNoteAuthor(ra::data::ByteAddress nAddress) const { - const auto pIter = m_mOriginalCodeNotes.find(nAddress); - if (pIter != m_mOriginalCodeNotes.end()) + const auto pIter = m_mOriginalNotes.find(nAddress); + if (pIter != m_mOriginalNotes.end()) return &pIter->second.first; return nullptr; } -void CodeNotesModel::Serialize(ra::services::TextWriter& pWriter) const +void MemoryNotesModel::Serialize(ra::services::TextWriter& pWriter) const { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); bool first = true; - for (const auto& pIter : m_mOriginalCodeNotes) + for (const auto& pIter : m_mOriginalNotes) { // "N0" of first note will be written by GameAssets if (first) @@ -601,15 +601,15 @@ void CodeNotesModel::Serialize(ra::services::TextWriter& pWriter) const pWriter.Write(pMemoryContext.FormatAddress(pIter.first)); - const auto pIter2 = std::lower_bound(m_vCodeNotes.begin(), m_vCodeNotes.end(), pIter.first, CompareNoteAddresses); - if (pIter2 != m_vCodeNotes.end() && (*pIter2)->GetAddress() == pIter.first) + const auto pIter2 = std::lower_bound(m_vMemoryNotes.begin(), m_vMemoryNotes.end(), pIter.first, CompareNoteAddresses); + if (pIter2 != m_vMemoryNotes.end() && (*pIter2)->GetAddress() == pIter.first) WriteQuoted(pWriter, (*pIter2)->GetNote()); else WriteQuoted(pWriter, ""); } } -bool CodeNotesModel::Deserialize(ra::util::Tokenizer& pTokenizer) +bool MemoryNotesModel::Deserialize(ra::util::Tokenizer& pTokenizer) { const auto sAddress = pTokenizer.ReadTo(':'); pTokenizer.Consume(':'); @@ -620,7 +620,7 @@ bool CodeNotesModel::Deserialize(ra::util::Tokenizer& pTokenizer) return false; ra::util::String::NormalizeLineEndings(sNote); - SetCodeNote(nAddress, sNote); + SetNote(nAddress, sNote); return true; } diff --git a/src/devkit/data/models/MemoryNotesModel.hh b/src/devkit/data/models/MemoryNotesModel.hh new file mode 100644 index 000000000..04397a0c7 --- /dev/null +++ b/src/devkit/data/models/MemoryNotesModel.hh @@ -0,0 +1,182 @@ +#ifndef RA_DATA_MODELS_MEMORYNOTESMODEL_H +#define RA_DATA_MODELS_MEMORYNOTESMODEL_H +#pragma once + +#include "data/models/AssetModelBase.hh" + +#include "data/models/MemoryNoteModel.hh" + +namespace ra { +namespace data { +namespace models { + +class MemoryNotesModel : public AssetModelBase +{ +public: + MemoryNotesModel() noexcept; + ~MemoryNotesModel() = default; + MemoryNotesModel(const MemoryNotesModel&) noexcept = delete; + MemoryNotesModel& operator=(const MemoryNotesModel&) noexcept = delete; + MemoryNotesModel(MemoryNotesModel&&) noexcept = delete; + MemoryNotesModel& operator=(MemoryNotesModel&&) noexcept = delete; + + typedef std::function MemoryNoteChangedFunction; + typedef std::function MemoryNoteMovedFunction; + + /// + /// Repopulates with memory notes from the server. + /// + /// Unique identifier of the game to load memory notes for. + /// Callback to call when a memory note is changed. + /// Callback to call when a memory note is moved. + /// Callback to call when the loading completes. + void Refresh(unsigned int nGameId, MemoryNoteChangedFunction fMemoryNoteChanged, MemoryNoteMovedFunction fMemoryNoteMoved, std::function callback); + + /// + /// Returns the note associated with the specified address. + /// + /// The note associated to the address, nullptr if no note is associated to the address. + const std::wstring* FindNote(ra::data::ByteAddress nAddress) const + { + const auto* pNote = FindMemoryNoteModel(nAddress); + return (pNote != nullptr) ? &pNote->GetNote() : nullptr; + } + + /// + /// Returns the note model associated with the specified address. + /// + /// The note model associated to the address, nullptr if no note is associated to the address. + const MemoryNoteModel* FindMemoryNoteModel(ra::data::ByteAddress nAddress, bool bIncludeDerived = true) const; + + /// + /// Returns the address of the first byte containing the specified memory note. + /// + /// + /// Returns 0xFFFFFFFF if not found. + /// + ra::data::ByteAddress FindNoteStart(ra::data::ByteAddress nAddress) const; + + /// + /// Returns the note associated with the specified address. + /// + /// + /// The note associated to the address or neighboring addresses based on . + /// Returns an empty string if no note is associated to the address. + /// + std::wstring FindNote(ra::data::ByteAddress nAddress, Memory::Size nSize) const; + + /// + /// Returns the address of the real memory note from which an indirect memory note was derived. + /// + /// + /// Returns 0xFFFFFFFF if not found, or not an indirect note. + /// + ra::data::ByteAddress GetIndirectSource(ra::data::ByteAddress nAddress) const; + + /// + /// Returns the address of the next memory note after the provided address. + /// + /// + /// Returns 0xFFFFFFFF if not found. + /// + ra::data::ByteAddress GetNextNoteAddress(ra::data::ByteAddress nAfterAddress, bool bIncludeDerived = false) const; + + /// + /// Returns the address of the next memory note before the provided address. + /// + /// + /// Returns 0xFFFFFFFF if not found. + /// + ra::data::ByteAddress GetPreviousNoteAddress(ra::data::ByteAddress nBeforeAddress, bool bIncludeDerived = false) const; + + /// + /// Enumerates the memory notes. + /// + /// + /// is called for each known memory note. If it returns false enumeration stops. + /// + void EnumerateMemoryNotes(std::function callback, bool bIncludeDerived = false) const; + + /// + /// Sets the note to associate with the specified address. + /// + /// The address to set the note for. + /// The new note for the address. + /// true if the note was updated, false if an error occurred. + void SetNote(ra::data::ByteAddress nAddress, const std::wstring& sNote); + + /// + /// Returns the number of known memory notes (not including indirect notes). + /// + size_t NoteCount() const noexcept { return m_vMemoryNotes.size(); } + + /// + /// Gets the address of the first memory note. + /// + ra::data::ByteAddress FirstNoteAddress() const noexcept + { + return (m_vMemoryNotes.empty()) ? 0U : m_vMemoryNotes.front()->GetAddress(); + } + + /// + /// Enumerates the modified memory notes. + /// + /// + /// is called for each known memory note. If it returns false enumeration stops. + /// + void EnumerateModifiedNotes(std::function callback) const + { + for (const auto& pair : m_mOriginalNotes) + { + if (!callback(pair.first)) + break; + } + } + + /// + /// Gets whether or not the note for specified address has been modified. + /// + bool IsNoteModified(ra::data::ByteAddress nAddress) const + { + return m_mOriginalNotes.find(nAddress) != m_mOriginalNotes.end(); + } + + void SetServerNote(ra::data::ByteAddress nAddress, const std::wstring& sNote); + const std::wstring* GetServerNote(ra::data::ByteAddress nAddress) const; + const std::string* GetServerNoteAuthor(ra::data::ByteAddress nAddress) const; + + void Serialize(ra::services::TextWriter&) const override; + bool Deserialize(ra::util::Tokenizer&) override; + + void DoFrame() override; + + bool IsShownInList() const noexcept override { return false; } + +protected: + void AddMemoryNote(ra::data::ByteAddress nAddress, const std::string& sAuthor, const std::wstring& sNote); + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote); + + std::vector> m_vMemoryNotes; + std::map> m_mOriginalNotes; + + std::map m_mPendingNotes; + + std::pair FindIndirectMemoryNoteInternal(ra::data::ByteAddress nAddress) const; + + bool m_bHasPointers = false; + bool m_bRefreshing = false; + + MemoryNoteChangedFunction m_fMemoryNoteChanged; + MemoryNoteMovedFunction m_fMemoryNoteMoved; + +private: + static std::wstring BuildNoteForAddress(ra::data::ByteAddress nAddress, unsigned nCheckBytes, ra::data::ByteAddress nNoteAddress, const MemoryNoteModel& pNote); + + mutable std::mutex m_oMutex; +}; + +} // namespace models +} // namespace data +} // namespace ra + +#endif RA_DATA_MODELS_MEMORYNOTESMODEL_H diff --git a/src/devkit/services/ILocalStorage.hh b/src/devkit/services/ILocalStorage.hh index 2023a5236..78eeaf738 100644 --- a/src/devkit/services/ILocalStorage.hh +++ b/src/devkit/services/ILocalStorage.hh @@ -15,7 +15,7 @@ enum class StorageItemType { None = 0, GameData, - CodeNotes, + MemoryNotes, RichPresence, UserAchievements, Badge, diff --git a/src/services/AchievementLogicSerializer.cpp b/src/services/AchievementLogicSerializer.cpp index 120475767..efdb89a7f 100644 --- a/src/services/AchievementLogicSerializer.cpp +++ b/src/services/AchievementLogicSerializer.cpp @@ -298,10 +298,10 @@ void AchievementLogicSerializer::AppendHitTarget(std::string& sBuffer, uint32_t } } -std::string AchievementLogicSerializer::BuildMemRefChain(const ra::data::models::CodeNoteModel& pRootNote, - const ra::data::models::CodeNoteModel& pLeafNote) +std::string AchievementLogicSerializer::BuildMemRefChain(const ra::data::models::MemoryNoteModel& pRootNote, + const ra::data::models::MemoryNoteModel& pLeafNote) { - std::vector vChain; + std::vector vChain; if (!pLeafNote.GetPointerChain(vChain, pRootNote)) return std::string(); diff --git a/src/services/AchievementLogicSerializer.hh b/src/services/AchievementLogicSerializer.hh index 4429be601..8c3891fe5 100644 --- a/src/services/AchievementLogicSerializer.hh +++ b/src/services/AchievementLogicSerializer.hh @@ -5,7 +5,7 @@ #include "data\Memory.hh" #include "data\Types.hh" -#include "data\models\CodeNoteModel.hh" +#include "data\models\MemoryNoteModel.hh" namespace ra { namespace services { @@ -82,8 +82,8 @@ public: static void AppendHitTarget(std::string& sBuffer, uint32_t nTarget); - static std::string BuildMemRefChain(const ra::data::models::CodeNoteModel& pRootNote, - const ra::data::models::CodeNoteModel& pLeafNote); + static std::string BuildMemRefChain(const ra::data::models::MemoryNoteModel& pRootNote, + const ra::data::models::MemoryNoteModel& pLeafNote); }; } // namespace services diff --git a/src/services/impl/FileLocalStorage.cpp b/src/services/impl/FileLocalStorage.cpp index 6f9638a32..d47b65eee 100644 --- a/src/services/impl/FileLocalStorage.cpp +++ b/src/services/impl/FileLocalStorage.cpp @@ -74,7 +74,7 @@ std::wstring FileLocalStorage::GetPath(StorageItemType nType, const std::wstring sPath.append(L".json"); break; - case StorageItemType::CodeNotes: + case StorageItemType::MemoryNotes: sPath.append(RA_DIR_DATA); sPath.append(sKey); sPath.append(L"-Notes.json"); diff --git a/src/services/impl/OfflineRcClient.cpp b/src/services/impl/OfflineRcClient.cpp index 3cc28f4e5..48448b555 100644 --- a/src/services/impl/OfflineRcClient.cpp +++ b/src/services/impl/OfflineRcClient.cpp @@ -105,11 +105,11 @@ static ra::services::Http::Response HandleOfflineRequest(const ra::services::Htt // see if the data is available in the cache auto& pLocalStorage = ra::services::ServiceLocator::GetMutable(); - auto pData = pLocalStorage.ReadText(ra::services::StorageItemType::CodeNotes, ra::util::String::Widen(sGameId)); + auto pData = pLocalStorage.ReadText(ra::services::StorageItemType::MemoryNotes, ra::util::String::Widen(sGameId)); if (pData == nullptr) { return ra::services::Http::Response(ra::services::Http::StatusCode::NotFound, - ra::util::String::Printf("{\"Success\":false,\"Error\":\"Code notes for game %s not found in cache\"}", sGameId)); + ra::util::String::Printf("{\"Success\":false,\"Error\":\"Memory notes for game %s not found in cache\"}", sGameId)); } std::string sContents = "{\"Success\":true,\"CodeNotes\":"; diff --git a/src/ui/EditorTheme.hh b/src/ui/EditorTheme.hh index ae06a62f3..d58943ffe 100644 --- a/src/ui/EditorTheme.hh +++ b/src/ui/EditorTheme.hh @@ -36,7 +36,7 @@ public: Color ColorHeader() const noexcept { return m_colorHeader; } Color ColorHeaderSelected() const noexcept { return m_colorHeaderSelected; } - // ===== code notes ===== + // ===== memory notes ===== Color ColorNoteNormal() const noexcept { return m_colorNoteNormal; } Color ColorNoteModified() const noexcept { return m_colorNoteModified; } diff --git a/src/ui/viewmodels/AssetListViewModel.cpp b/src/ui/viewmodels/AssetListViewModel.cpp index 35d0948eb..7ad5ece1d 100644 --- a/src/ui/viewmodels/AssetListViewModel.cpp +++ b/src/ui/viewmodels/AssetListViewModel.cpp @@ -145,7 +145,7 @@ void AssetListViewModel::OnActiveGameChanged() ApplyFilter(); } -void AssetListViewModel::OnCodeNoteChanged(ra::data::ByteAddress, const std::wstring&) +void AssetListViewModel::OnMemoryNoteChanged(ra::data::ByteAddress, const std::wstring&) { RevalidateNoteAssetValidationWarnings(); } @@ -156,7 +156,7 @@ void AssetListViewModel::RevalidateNoteAssetValidationWarnings() for (auto& pAsset : pGameContext.Assets()) { const auto& sValidationError = pAsset.GetValidationError(); - if (sValidationError.find(L"code note") != std::wstring::npos) + if (sValidationError.find(L"memory note") != std::wstring::npos) pAsset.Validate(); } } diff --git a/src/ui/viewmodels/AssetListViewModel.hh b/src/ui/viewmodels/AssetListViewModel.hh index e0a1eef82..f40d259da 100644 --- a/src/ui/viewmodels/AssetListViewModel.hh +++ b/src/ui/viewmodels/AssetListViewModel.hh @@ -308,7 +308,7 @@ private: // GameContext::NotifyTarget void OnActiveGameChanged() override; - void OnCodeNoteChanged(ra::data::ByteAddress, const std::wstring&) override; + void OnMemoryNoteChanged(ra::data::ByteAddress, const std::wstring&) override; void OnValueChanged(const IntModelProperty::ChangeArgs& args) override; void OnValueChanged(const BoolModelProperty::ChangeArgs& args) override; diff --git a/src/ui/viewmodels/AssetUploadViewModel.cpp b/src/ui/viewmodels/AssetUploadViewModel.cpp index 62ae8ea65..ea5b24e04 100644 --- a/src/ui/viewmodels/AssetUploadViewModel.cpp +++ b/src/ui/viewmodels/AssetUploadViewModel.cpp @@ -44,8 +44,8 @@ void AssetUploadViewModel::QueueAsset(ra::data::models::AssetModelBase& pAsset) QueueRichPresence(*(dynamic_cast(&pAsset))); break; - case ra::data::models::AssetType::CodeNotes: - QueueCodeNotes(*(dynamic_cast(&pAsset))); + case ra::data::models::AssetType::MemoryNotes: + QueueMemoryNotes(*(dynamic_cast(&pAsset))); break; default: @@ -110,11 +110,11 @@ void AssetUploadViewModel::QueueRichPresence(ra::data::models::RichPresenceModel }); } -void AssetUploadViewModel::QueueCodeNotes(ra::data::models::CodeNotesModel& pNotes) +void AssetUploadViewModel::QueueMemoryNotes(ra::data::models::MemoryNotesModel& pMemoryNotes) { - pNotes.EnumerateModifiedCodeNotes([this, pNotes = &pNotes](ra::data::ByteAddress nAddress) + pMemoryNotes.EnumerateModifiedNotes([this, pNotes = &pMemoryNotes](ra::data::ByteAddress nAddress) { - QueueCodeNote(*pNotes, nAddress); + QueueMemoryNote(*pNotes, nAddress); return true; }); } @@ -124,9 +124,9 @@ static std::wstring ShortenNote(const std::wstring& sNote) return sNote.length() > 256 ? (sNote.substr(0, 253) + L"...") : sNote; } -void AssetUploadViewModel::QueueCodeNote(ra::data::models::CodeNotesModel& pNotes, ra::data::ByteAddress nAddress) +void AssetUploadViewModel::QueueMemoryNote(ra::data::models::MemoryNotesModel& pMemoryNotes, ra::data::ByteAddress nAddress) { - const auto* pOriginalAuthor = pNotes.GetServerCodeNoteAuthor(nAddress); + const auto* pOriginalAuthor = pMemoryNotes.GetServerNoteAuthor(nAddress); if (pOriginalAuthor != nullptr && !pOriginalAuthor->empty()) { const auto& pUserContext = ra::services::ServiceLocator::Get(); @@ -136,11 +136,11 @@ void AssetUploadViewModel::QueueCodeNote(ra::data::models::CodeNotesModel& pNote // author changed - confirm overwrite std::wstring sEmpty; - const auto* pOriginalNote = pNotes.GetServerCodeNote(nAddress); + const auto* pOriginalNote = pMemoryNotes.GetServerNote(nAddress); if (pOriginalNote == nullptr) pOriginalNote = &sEmpty; - const auto* pNote = pNotes.FindCodeNote(nAddress); + const auto* pNote = pMemoryNotes.FindNote(nAddress); if (pNote == nullptr) pNote = &sEmpty; @@ -180,12 +180,12 @@ void AssetUploadViewModel::QueueCodeNote(ra::data::models::CodeNotesModel& pNote } auto& pItem = m_vUploadQueue.emplace_back(); - pItem.pAsset = &pNotes; + pItem.pAsset = &pMemoryNotes; pItem.nExtra = ra::to_signed(nAddress); - QueueTask([this, pNotes = &pNotes, nAddress]() + QueueTask([this, pNotes = &pMemoryNotes, nAddress]() { - UploadCodeNote(*pNotes, nAddress); + UploadMemoryNote(*pNotes, nAddress); }); } @@ -451,12 +451,12 @@ void AssetUploadViewModel::UploadRichPresence(ra::data::models::RichPresenceMode } } -void AssetUploadViewModel::UploadCodeNote(ra::data::models::CodeNotesModel& pNotes, ra::data::ByteAddress nAddress) +void AssetUploadViewModel::UploadMemoryNote(ra::data::models::MemoryNotesModel& pNotes, ra::data::ByteAddress nAddress) { std::string sErrorMessage; UploadState nState = UploadState::Failed; - const auto* pNote = pNotes.FindCodeNote(nAddress); + const auto* pNote = pNotes.FindNote(nAddress); if (pNote == nullptr || pNote->empty()) { ra::api::DeleteCodeNote::Request request; @@ -467,13 +467,13 @@ void AssetUploadViewModel::UploadCodeNote(ra::data::models::CodeNotesModel& pNot if (response.Succeeded()) { - pNotes.SetServerCodeNote(nAddress, L""); + pNotes.SetServerNote(nAddress, L""); nState = UploadState::Success; } else if (response.Result == ra::api::ApiResult::Incomplete) { Rest(); - UploadCodeNote(pNotes, nAddress); + UploadMemoryNote(pNotes, nAddress); return; } @@ -490,13 +490,13 @@ void AssetUploadViewModel::UploadCodeNote(ra::data::models::CodeNotesModel& pNot if (response.Succeeded()) { - pNotes.SetServerCodeNote(nAddress, *pNote); + pNotes.SetServerNote(nAddress, *pNote); nState = UploadState::Success; } else if (response.Result == ra::api::ApiResult::Incomplete) { Rest(); - UploadCodeNote(pNotes, nAddress); + UploadMemoryNote(pNotes, nAddress); return; } diff --git a/src/ui/viewmodels/AssetUploadViewModel.hh b/src/ui/viewmodels/AssetUploadViewModel.hh index 947cec859..0df96211f 100644 --- a/src/ui/viewmodels/AssetUploadViewModel.hh +++ b/src/ui/viewmodels/AssetUploadViewModel.hh @@ -5,7 +5,7 @@ #include "ProgressViewModel.hh" #include "data\models\AchievementModel.hh" -#include "data\models\CodeNotesModel.hh" +#include "data\models\MemoryNotesModel.hh" #include "data\models\LeaderboardModel.hh" #include "data\models\RichPresenceModel.hh" @@ -22,8 +22,8 @@ public: void QueueAchievement(ra::data::models::AchievementModel& pAchievement); void QueueLeaderboard(ra::data::models::LeaderboardModel& pLeaderboard); void QueueRichPresence(ra::data::models::RichPresenceModel& pRichPresence); - void QueueCodeNotes(ra::data::models::CodeNotesModel& pLeaderboard); - void QueueCodeNote(ra::data::models::CodeNotesModel& pCodeNotes, ra::data::ByteAddress nAddress); + void QueueMemoryNotes(ra::data::models::MemoryNotesModel& pLeaderboard); + void QueueMemoryNote(ra::data::models::MemoryNotesModel& pMemoryNotes, ra::data::ByteAddress nAddress); bool HasFailures() const noexcept; @@ -61,7 +61,7 @@ private: void UploadAchievement(ra::data::models::AchievementModel& pAchievement); void UploadLeaderboard(ra::data::models::LeaderboardModel& pLeaderboard); void UploadRichPresence(ra::data::models::RichPresenceModel& pRichPresence); - void UploadCodeNote(ra::data::models::CodeNotesModel& pNotes, ra::data::ByteAddress nAddress); + void UploadMemoryNote(ra::data::models::MemoryNotesModel& pNotes, ra::data::ByteAddress nAddress); std::vector m_vUploadQueue; std::mutex m_pMutex; diff --git a/src/ui/viewmodels/IntegrationMenuViewModel.cpp b/src/ui/viewmodels/IntegrationMenuViewModel.cpp index 82155e057..3bc9290c0 100644 --- a/src/ui/viewmodels/IntegrationMenuViewModel.cpp +++ b/src/ui/viewmodels/IntegrationMenuViewModel.cpp @@ -84,7 +84,7 @@ void IntegrationMenuViewModel::AddCommonMenuItems(LookupItemViewModelCollection& vmMenu.Add(IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); vmMenu.Add(IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); vmMenu.Add(IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - vmMenu.Add(IDM_RA_FILES_CODENOTES, L"Code &Notes"); + vmMenu.Add(IDM_RA_FILES_CODENOTES, L"Memory &Notes"); vmMenu.Add(IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); vmMenu.Add(0, L"-----"); vmMenu.Add(IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -152,7 +152,7 @@ void IntegrationMenuViewModel::ActivateMenuItem(int nMenuItemId) break; case IDM_RA_FILES_CODENOTES: - ShowCodeNotes(); + ShowMemoryNotes(); break; case IDM_RA_PARSERICHPRESENCE: @@ -337,13 +337,13 @@ void IntegrationMenuViewModel::ShowPointerInspector() } } -void IntegrationMenuViewModel::ShowCodeNotes() +void IntegrationMenuViewModel::ShowMemoryNotes() { auto& pEmulatorContext = ra::services::ServiceLocator::GetMutable(); - if (pEmulatorContext.WarnDisableHardcoreMode("view code notes")) + if (pEmulatorContext.WarnDisableHardcoreMode("view memory notes")) { auto& pWindowManager = ra::services::ServiceLocator::GetMutable(); - pWindowManager.CodeNotes.Show(); + pWindowManager.MemoryNotes.Show(); } } @@ -369,7 +369,7 @@ void IntegrationMenuViewModel::ShowAllEditors() pWindowManager.AssetEditor.Show(); pWindowManager.MemoryInspector.Show(); pWindowManager.MemoryBookmarks.Show(); - pWindowManager.CodeNotes.Show(); + pWindowManager.MemoryNotes.Show(); } else { diff --git a/src/ui/viewmodels/IntegrationMenuViewModel.hh b/src/ui/viewmodels/IntegrationMenuViewModel.hh index 23ca822b3..52f8fc434 100644 --- a/src/ui/viewmodels/IntegrationMenuViewModel.hh +++ b/src/ui/viewmodels/IntegrationMenuViewModel.hh @@ -35,7 +35,7 @@ private: static void ShowMemoryBookmarks(); static void ShowPointerFinder(); static void ShowPointerInspector(); - static void ShowCodeNotes(); + static void ShowMemoryNotes(); static void ShowRichPresenceMonitor(); static void ShowAllEditors(); static void ReportBrokenAchievements(); diff --git a/src/ui/viewmodels/MemoryInspectorViewModel.cpp b/src/ui/viewmodels/MemoryInspectorViewModel.cpp index e4e7ed97d..a8066d1ed 100644 --- a/src/ui/viewmodels/MemoryInspectorViewModel.cpp +++ b/src/ui/viewmodels/MemoryInspectorViewModel.cpp @@ -112,14 +112,14 @@ void MemoryInspectorViewModel::OnValueChanged(const StringModelProperty::ChangeA OnCurrentAddressChanged(nAddress); } - else if (args.Property == CurrentAddressNoteProperty && !m_bSyncingCodeNote) + else if (args.Property == CurrentAddressNoteProperty && !m_bSyncingMemoryNote) { auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { const auto nAddress = GetCurrentAddress(); - pCodeNotes->SetCodeNote(nAddress, args.tNewValue); + pMemoryNotes->SetNote(nAddress, args.tNewValue); // don't immediately save. the user may make further changes, or be about // to publish. instead, set a flag to do the save when the address changes. @@ -142,11 +142,11 @@ void MemoryInspectorViewModel::SaveUncommittedNote() return; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { std::wstring sEmpty; - const auto* pNote = pCodeNotes->FindCodeNote(m_nUncommittedNoteAddress); + const auto* pNote = pMemoryNotes->FindNote(m_nUncommittedNoteAddress); if (pNote == nullptr) pNote = &sEmpty; @@ -155,7 +155,7 @@ void MemoryInspectorViewModel::SaveUncommittedNote() m_nUncommittedNoteAddress = 0xFFFFFFFF; std::vector vAssets; - vAssets.push_back(pCodeNotes); + vAssets.push_back(pMemoryNotes); pGameContext.Assets().SaveAssets(vAssets); UpdateNoteButtons(); @@ -169,8 +169,8 @@ void MemoryInspectorViewModel::SaveUncommittedNote() void MemoryInspectorViewModel::UpdateNoteButtons() { auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr || !CanModifyNotes()) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr || !CanModifyNotes()) { SetValue(IsCurrentAddressNoteReadOnlyProperty, true); SetValue(CanEditCurrentAddressNoteProperty, false); @@ -192,7 +192,7 @@ void MemoryInspectorViewModel::UpdateNoteButtons() const bool bOffline = ra::services::ServiceLocator::Get() .IsFeatureEnabled(ra::services::Feature::Offline); const auto nAddress = GetCurrentAddress(); - const auto bModified = pCodeNotes->IsNoteModified(nAddress); + const auto bModified = pMemoryNotes->IsNoteModified(nAddress); SetValue(IsCurrentAddressNoteReadOnlyProperty, false); SetValue(CanPublishCurrentAddressNoteProperty, !bOffline && bModified); @@ -201,25 +201,25 @@ void MemoryInspectorViewModel::UpdateNoteButtons() } } -void MemoryInspectorViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) +void MemoryInspectorViewModel::OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { const auto nCurrentAddress = GetCurrentAddress(); if (nNewAddress == nCurrentAddress) - OnCodeNoteChanged(nCurrentAddress, sNote); + OnMemoryNoteChanged(nCurrentAddress, sNote); else if (nOldAddress == nCurrentAddress) - OnCodeNoteChanged(nCurrentAddress, L""); + OnMemoryNoteChanged(nCurrentAddress, L""); } -void MemoryInspectorViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) +void MemoryInspectorViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { if (nAddress == GetCurrentAddress()) { // call the override that asks for an author to see if there's a non-indirect note at // the address. if so, use it. const auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); - const auto* pDirectNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nAddress, false) : nullptr; + const auto* pDirectNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nAddress, false) : nullptr; if (pDirectNote) { // non indirect note found. normally, this will match sNewNote, but sometimes sNewNote @@ -233,7 +233,7 @@ void MemoryInspectorViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, if (sNewNote.length() == 0) { // empty note notification is probably a deleted note, but check to be sure - const auto* pIndirectNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nAddress, true) : nullptr; + const auto* pIndirectNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nAddress, true) : nullptr; m_bNoteIsIndirect = (pIndirectNote != nullptr); } else @@ -251,28 +251,28 @@ void MemoryInspectorViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, void MemoryInspectorViewModel::SetCurrentAddressNoteInternal(const std::wstring& sValue) { - m_bSyncingCodeNote = true; + m_bSyncingMemoryNote = true; SetValue(CurrentAddressNoteProperty, sValue); - m_bSyncingCodeNote = false; + m_bSyncingMemoryNote = false; } void MemoryInspectorViewModel::OnCurrentAddressChanged(ra::data::ByteAddress nNewAddress) { const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); SaveUncommittedNote(); m_bNoteIsIndirect = false; const std::wstring* pNote = nullptr; - if (pCodeNotes != nullptr) + if (pMemoryNotes != nullptr) { - pNote = pCodeNotes->FindCodeNote(nNewAddress); + pNote = pMemoryNotes->FindNote(nNewAddress); if (pNote) { // see if there's a non-indirect note at the address. if so, use it. std::string sAuthor; - const auto* pDirectNote = pCodeNotes->FindCodeNoteModel(nNewAddress, false); + const auto* pDirectNote = pMemoryNotes->FindMemoryNoteModel(nNewAddress, false); if (pDirectNote != nullptr) pNote = &pDirectNote->GetNote(); else @@ -282,7 +282,7 @@ void MemoryInspectorViewModel::OnCurrentAddressChanged(ra::data::ByteAddress nNe if (pNote) { - const auto nIndirectSource = m_bNoteIsIndirect ? pCodeNotes->GetIndirectSource(nNewAddress) : 0xFFFFFFFF; + const auto nIndirectSource = m_bNoteIsIndirect ? pMemoryNotes->GetIndirectSource(nNewAddress) : 0xFFFFFFFF; if (nIndirectSource != 0xFFFFFFFF) { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); @@ -311,20 +311,20 @@ std::string MemoryInspectorViewModel::GetCurrentAddressMemRefChain() const { const auto nAddress = GetCurrentAddress(); - // if the code note specifies an explicit size, use it. otherwise, use the selected viewer mode size. + // if the memory note specifies an explicit size, use it. otherwise, use the selected viewer mode size. const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - const auto* pNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nAddress) : nullptr; + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + const auto* pNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nAddress) : nullptr; auto nSize = pNote ? pNote->GetMemSize() : ra::data::Memory::Size::Unknown; if (nSize >= ra::data::Memory::Size::Unknown) nSize = Viewer().GetSize(); - if (m_bNoteIsIndirect && pNote) // pNote being not null implies pCodeNotes is not null + if (m_bNoteIsIndirect && pNote) // pNote being not null implies pMemoryNotes is not null { - const auto nIndirectSource = pCodeNotes->GetIndirectSource(nAddress); + const auto nIndirectSource = pMemoryNotes->GetIndirectSource(nAddress); if (nIndirectSource != 0xFFFFFFFF) { - const auto* pRootNote = pCodeNotes->FindCodeNoteModel(nIndirectSource); + const auto* pRootNote = pMemoryNotes->FindMemoryNoteModel(nIndirectSource); Expects(pRootNote != nullptr); return ra::services::AchievementLogicSerializer::BuildMemRefChain(*pRootNote, *pNote); @@ -354,8 +354,8 @@ void MemoryInspectorViewModel::PublishCurrentAddressNote() return; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr) return; // disable buttons while publishing @@ -364,13 +364,13 @@ void MemoryInspectorViewModel::PublishCurrentAddressNote() const auto nAddress = GetCurrentAddress(); ra::ui::viewmodels::AssetUploadViewModel vmAssetUpload; - vmAssetUpload.QueueCodeNote(*pCodeNotes, nAddress); + vmAssetUpload.QueueMemoryNote(*pMemoryNotes, nAddress); vmAssetUpload.ShowModal(*this); if (vmAssetUpload.HasFailures()) vmAssetUpload.ShowResults(); - if (pCodeNotes->IsNoteModified(nAddress)) + if (pMemoryNotes->IsNoteModified(nAddress)) { // if canceled, re-enable buttons SetValue(CanPublishCurrentAddressNoteProperty, true); @@ -390,12 +390,12 @@ void MemoryInspectorViewModel::RevertCurrentAddressNote() return; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr) return; const auto nAddress = GetCurrentAddress(); - const auto* pOriginalNote = pCodeNotes->GetServerCodeNote(nAddress); + const auto* pOriginalNote = pMemoryNotes->GetServerNote(nAddress); if (pOriginalNote != nullptr) { ra::ui::viewmodels::MessageBoxViewModel vmPrompt; @@ -408,7 +408,7 @@ void MemoryInspectorViewModel::RevertCurrentAddressNote() // make a copy as the original note will be destroyed when we eliminate the modification const std::wstring pOriginalNoteCopy = *pOriginalNote; - pCodeNotes->SetCodeNote(nAddress, pOriginalNoteCopy); + pMemoryNotes->SetNote(nAddress, pOriginalNoteCopy); SaveUncommittedNote(); UpdateNoteButtons(); @@ -418,7 +418,7 @@ void MemoryInspectorViewModel::RevertCurrentAddressNote() void MemoryInspectorViewModel::OpenNotesList() { auto& pWindowManager = ra::services::ServiceLocator::GetMutable(); - pWindowManager.CodeNotes.Show(); + pWindowManager.MemoryNotes.Show(); } bool MemoryInspectorViewModel::NextNote() @@ -426,10 +426,10 @@ bool MemoryInspectorViewModel::NextNote() const auto nCurrentAddress = GetCurrentAddress(); ra::data::ByteAddress nNewAddress = nCurrentAddress; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - nNewAddress = pCodeNotes->GetNextNoteAddress(nCurrentAddress, true); + nNewAddress = pMemoryNotes->GetNextNoteAddress(nCurrentAddress, true); if (nNewAddress == 0xFFFFFFFF) nNewAddress = nCurrentAddress; } @@ -448,10 +448,10 @@ bool MemoryInspectorViewModel::PreviousNote() const auto nCurrentAddress = GetCurrentAddress(); ra::data::ByteAddress nNewAddress = nCurrentAddress; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - nNewAddress = pCodeNotes->GetPreviousNoteAddress(nCurrentAddress, true); + nNewAddress = pMemoryNotes->GetPreviousNoteAddress(nCurrentAddress, true); if (nNewAddress == 0xFFFFFFFF) nNewAddress = nCurrentAddress; } @@ -517,8 +517,8 @@ void MemoryInspectorViewModel::OnActiveGameChanged() void MemoryInspectorViewModel::OnEndGameLoad() { const auto& pGameContext = ra::services::ServiceLocator::Get(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - const auto nFirstAddress = (pCodeNotes != nullptr) ? pCodeNotes->FirstCodeNoteAddress() : 0U; + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + const auto nFirstAddress = (pMemoryNotes != nullptr) ? pMemoryNotes->FirstNoteAddress() : 0U; SetCurrentAddress(nFirstAddress); } diff --git a/src/ui/viewmodels/MemoryInspectorViewModel.hh b/src/ui/viewmodels/MemoryInspectorViewModel.hh index 49077918f..36a58da22 100644 --- a/src/ui/viewmodels/MemoryInspectorViewModel.hh +++ b/src/ui/viewmodels/MemoryInspectorViewModel.hh @@ -178,8 +178,8 @@ protected: void OnBeforeActiveGameChanged() override; void OnActiveGameChanged() override; void OnEndGameLoad() override; - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; - void OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; + void OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; private: static const IntModelProperty CurrentAddressValueProperty; @@ -193,7 +193,7 @@ private: MemoryViewerViewModel m_pViewer; unsigned m_nGameId = 0; bool m_bSyncingAddress = false; - bool m_bSyncingCodeNote = false; + bool m_bSyncingMemoryNote = false; bool m_bNoteIsIndirect = false; ra::data::ByteAddress m_nUncommittedNoteAddress = 0xFFFFFFFF; std::wstring m_sOriginalNoteValue; diff --git a/src/ui/viewmodels/CodeNotesViewModel.cpp b/src/ui/viewmodels/MemoryNotesViewModel.cpp similarity index 75% rename from src/ui/viewmodels/CodeNotesViewModel.cpp rename to src/ui/viewmodels/MemoryNotesViewModel.cpp index 4b01fb470..25f189a18 100644 --- a/src/ui/viewmodels/CodeNotesViewModel.cpp +++ b/src/ui/viewmodels/MemoryNotesViewModel.cpp @@ -1,4 +1,4 @@ -#include "CodeNotesViewModel.hh" +#include "MemoryNotesViewModel.hh" #include "RA_Defs.h" #include "util\Strings.hh" @@ -17,18 +17,18 @@ namespace ra { namespace ui { namespace viewmodels { -const StringModelProperty CodeNotesViewModel::ResultCountProperty("CodeNotesViewModel", "ResultCount", L"0/0"); -const StringModelProperty CodeNotesViewModel::FilterValueProperty("CodeNotesViewModel", "FilterValue", L""); -const BoolModelProperty CodeNotesViewModel::OnlyUnpublishedFilterProperty("CodeNotesViewModel", "OnlyUnpublishedFilter", false); -const BoolModelProperty CodeNotesViewModel::CanRevertCurrentAddressNoteProperty("CodeNotesViewModel", "CanRevertCurrentAddressNote", false); -const BoolModelProperty CodeNotesViewModel::CanPublishCurrentAddressNoteProperty("CodeNotesViewModel", "CanPublishCurrentAddressNote", false); +const StringModelProperty MemoryNotesViewModel::ResultCountProperty("MemoryNotesViewModel", "ResultCount", L"0/0"); +const StringModelProperty MemoryNotesViewModel::FilterValueProperty("MemoryNotesViewModel", "FilterValue", L""); +const BoolModelProperty MemoryNotesViewModel::OnlyUnpublishedFilterProperty("MemoryNotesViewModel", "OnlyUnpublishedFilter", false); +const BoolModelProperty MemoryNotesViewModel::CanRevertCurrentAddressNoteProperty("MemoryNotesViewModel", "CanRevertCurrentAddressNote", false); +const BoolModelProperty MemoryNotesViewModel::CanPublishCurrentAddressNoteProperty("MemoryNotesViewModel", "CanPublishCurrentAddressNote", false); -const StringModelProperty CodeNotesViewModel::CodeNoteViewModel::LabelProperty("CodeNoteViewModel", "Label", L""); -const StringModelProperty CodeNotesViewModel::CodeNoteViewModel::NoteProperty("CodeNoteViewModel", "Note", L""); -const BoolModelProperty CodeNotesViewModel::CodeNoteViewModel::IsSelectedProperty("CodeNoteViewModel", "IsSelected", false); -const IntModelProperty CodeNotesViewModel::CodeNoteViewModel::BookmarkColorProperty("CodeNoteViewModel", "BookmarkColor", 0); +const StringModelProperty MemoryNotesViewModel::MemoryNoteViewModel::LabelProperty("MemoryNoteViewModel", "Label", L""); +const StringModelProperty MemoryNotesViewModel::MemoryNoteViewModel::NoteProperty("MemoryNoteViewModel", "Note", L""); +const BoolModelProperty MemoryNotesViewModel::MemoryNoteViewModel::IsSelectedProperty("MemoryNoteViewModel", "IsSelected", false); +const IntModelProperty MemoryNotesViewModel::MemoryNoteViewModel::BookmarkColorProperty("MemoryNoteViewModel", "BookmarkColor", 0); -void CodeNotesViewModel::CodeNoteViewModel::SetModified(bool bValue) +void MemoryNotesViewModel::MemoryNoteViewModel::SetModified(bool bValue) { if (m_bModified != bValue || GetBookmarkColor().ARGB == 0) { @@ -39,14 +39,14 @@ void CodeNotesViewModel::CodeNoteViewModel::SetModified(bool bValue) } } -CodeNotesViewModel::CodeNotesViewModel() noexcept +MemoryNotesViewModel::MemoryNotesViewModel() noexcept { - SetWindowTitle(L"Code Notes"); + SetWindowTitle(L"Memory Notes"); m_vNotes.AddNotifyTarget(*this); } -void CodeNotesViewModel::OnValueChanged(const BoolModelProperty::ChangeArgs& args) +void MemoryNotesViewModel::OnValueChanged(const BoolModelProperty::ChangeArgs& args) { if (args.Property == IsVisibleProperty) { @@ -67,7 +67,7 @@ void CodeNotesViewModel::OnValueChanged(const BoolModelProperty::ChangeArgs& arg WindowViewModelBase::OnValueChanged(args); } -void CodeNotesViewModel::OnActiveGameChanged() +void MemoryNotesViewModel::OnActiveGameChanged() { const auto& pGameContext = ra::services::ServiceLocator::Get(); m_nGameId = pGameContext.GameId(); @@ -78,26 +78,26 @@ void CodeNotesViewModel::OnActiveGameChanged() ResetFilter(); } -void CodeNotesViewModel::OnEndGameLoad() +void MemoryNotesViewModel::OnEndGameLoad() { ResetFilter(); } -void CodeNotesViewModel::ResetFilter() +void MemoryNotesViewModel::ResetFilter() { m_vNotes.BeginUpdate(); gsl::index nIndex = 0; const auto& pGameContext = ra::services::ServiceLocator::Get(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - pCodeNotes->EnumerateCodeNotes([this, &nIndex, pCodeNotes](ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pCodeNote) + pMemoryNotes->EnumerateMemoryNotes([this, &nIndex, pMemoryNotes](ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pMemoryNote) { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); - const auto bNoteModified = pCodeNotes->IsNoteModified(nAddress); - const auto nBytes = pCodeNote.GetBytes(); + const auto bNoteModified = pMemoryNotes->IsNoteModified(nAddress); + const auto nBytes = pMemoryNote.GetBytes(); std::wstring sAddress; if (nBytes <= 4) @@ -105,7 +105,7 @@ void CodeNotesViewModel::ResetFilter() else sAddress = ra::util::String::Printf(L"%s\n- %s", pMemoryContext.FormatAddress(nAddress), pMemoryContext.FormatAddress(nAddress + nBytes - 1)); - const auto& sNote = pCodeNote.GetNote(); + const auto& sNote = pMemoryNote.GetNote(); auto* vmNote = m_vNotes.GetItemAt(nIndex); if (vmNote) { @@ -138,7 +138,7 @@ void CodeNotesViewModel::ResetFilter() SetValue(ResultCountProperty, ra::util::String::Printf(L"%u/%u", m_nUnfilteredNotesCount, m_nUnfilteredNotesCount)); } -void CodeNotesViewModel::ApplyFilter() +void MemoryNotesViewModel::ApplyFilter() { const bool bOnlyUnpublished = OnlyUnpublishedFilter(); @@ -167,18 +167,18 @@ void CodeNotesViewModel::ApplyFilter() SetValue(ResultCountProperty, ra::util::String::Printf(L"%u/%u", m_vNotes.Count(), m_nUnfilteredNotesCount)); } -void CodeNotesViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) +void MemoryNotesViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { const auto& pGameContext = ra::services::ServiceLocator::Get(); if (pGameContext.IsGameLoading()) return; - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr || pCodeNotes->GetIndirectSource(nAddress) != 0xFFFFFFFF) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr || pMemoryNotes->GetIndirectSource(nAddress) != 0xFFFFFFFF) return; - m_nUnfilteredNotesCount = pCodeNotes->CodeNoteCount(); - const bool bNoteModified = pCodeNotes->IsNoteModified(nAddress); + m_nUnfilteredNotesCount = pMemoryNotes->NoteCount(); + const bool bNoteModified = pMemoryNotes->IsNoteModified(nAddress); bool bMatchesFilter = false; if (bNoteModified || !OnlyUnpublishedFilter()) @@ -222,8 +222,8 @@ void CodeNotesViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const { pNote->SetModified(bNoteModified); - const auto* pCodeNote = pCodeNotes->FindCodeNoteModel(nAddress); - pNote->nBytes = pCodeNote ? pCodeNote->GetBytes() : 0; + const auto* pMemoryNote = pMemoryNotes->FindMemoryNoteModel(nAddress); + pNote->nBytes = pMemoryNote ? pMemoryNote->GetBytes() : 0; std::wstring sAddress; if (pNote->nBytes <= 4) sAddress = pMemoryContext.FormatAddress(nAddress); @@ -258,21 +258,21 @@ void CodeNotesViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const SetValue(ResultCountProperty, ra::util::String::Printf(L"%u/%u", m_vNotes.Count(), m_nUnfilteredNotesCount)); } -void CodeNotesViewModel::OnViewModelBoolValueChanged(gsl::index, const BoolModelProperty::ChangeArgs& args) +void MemoryNotesViewModel::OnViewModelBoolValueChanged(gsl::index, const BoolModelProperty::ChangeArgs& args) { - if (args.Property == CodeNoteViewModel::IsSelectedProperty) + if (args.Property == MemoryNoteViewModel::IsSelectedProperty) { if (!m_vNotes.IsUpdating()) OnSelectedItemsChanged(); } } -void CodeNotesViewModel::OnEndViewModelCollectionUpdate() +void MemoryNotesViewModel::OnEndViewModelCollectionUpdate() { OnSelectedItemsChanged(); } -void CodeNotesViewModel::OnSelectedItemsChanged() +void MemoryNotesViewModel::OnSelectedItemsChanged() { bool bHasModifiedSelectedItem = false; for (const auto& pNote : m_vNotes) @@ -294,7 +294,7 @@ void CodeNotesViewModel::OnSelectedItemsChanged() SetValue(CanRevertCurrentAddressNoteProperty, bHasModifiedSelectedItem); } -void CodeNotesViewModel::BookmarkSelected() const +void MemoryNotesViewModel::BookmarkSelected() const { auto& vmBookmarks = ra::services::ServiceLocator::GetMutable().MemoryBookmarks; if (!vmBookmarks.IsVisible()) @@ -303,7 +303,7 @@ void CodeNotesViewModel::BookmarkSelected() const vmBookmarks.Bookmarks().Items().BeginUpdate(); const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); int nCount = 0; for (const auto& pNote : m_vNotes) @@ -312,10 +312,10 @@ void CodeNotesViewModel::BookmarkSelected() const { auto nSize = ra::data::Memory::Size::Unknown; - const auto* pCodeNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(pNote.nAddress, false) : nullptr; - if (pCodeNote != nullptr) + const auto* pMemoryNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(pNote.nAddress, false) : nullptr; + if (pMemoryNote != nullptr) { - nSize = pCodeNote->GetMemSize(); + nSize = pMemoryNote->GetMemSize(); if (vmBookmarks.Bookmarks().Sizes().FindItemIndex(LookupItemViewModel::IdProperty, ra::etoi(nSize)) == -1) { // size not supported by viewer @@ -355,7 +355,7 @@ void CodeNotesViewModel::BookmarkSelected() const ra::ui::viewmodels::MessageBoxViewModel::ShowInfoMessage(L"Can only create 100 new bookmarks at a time."); } -void CodeNotesViewModel::GetSelectedModifiedNoteAddresses(std::vector& vAddresses) +void MemoryNotesViewModel::GetSelectedModifiedNoteAddresses(std::vector& vAddresses) { for (const auto& pNote : m_vNotes) { @@ -364,7 +364,7 @@ void CodeNotesViewModel::GetSelectedModifiedNoteAddresses(std::vector(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr) return; if (vNotesToPublish.size() > 1) @@ -393,20 +393,20 @@ void CodeNotesViewModel::PublishSelected() ra::ui::viewmodels::AssetUploadViewModel vmAssetUpload; for (const auto nAddress : vNotesToPublish) - vmAssetUpload.QueueCodeNote(*pCodeNotes, nAddress); + vmAssetUpload.QueueMemoryNote(*pMemoryNotes, nAddress); vmAssetUpload.ShowModal(*this); if (vNotesToPublish.size() > 1 || vmAssetUpload.HasFailures()) vmAssetUpload.ShowResults(); std::vector vAssets; - vAssets.push_back(pCodeNotes); + vAssets.push_back(pMemoryNotes); pGameContext.Assets().SaveAssets(vAssets); OnSelectedItemsChanged(); } -void CodeNotesViewModel::RevertSelected() +void MemoryNotesViewModel::RevertSelected() { std::vector vNotesToRevert; GetSelectedModifiedNoteAddresses(vNotesToRevert); @@ -415,8 +415,8 @@ void CodeNotesViewModel::RevertSelected() return; auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr) return; ra::ui::viewmodels::MessageBoxViewModel vmPrompt; @@ -437,17 +437,17 @@ void CodeNotesViewModel::RevertSelected() for (const auto nAddress : vNotesToRevert) { - const auto* pOriginalNote = pCodeNotes->GetServerCodeNote(nAddress); + const auto* pOriginalNote = pMemoryNotes->GetServerNote(nAddress); if (pOriginalNote) { // make a copy as the original note will be destroyed when we eliminate the modification const std::wstring pOriginalNoteCopy = *pOriginalNote; - pCodeNotes->SetCodeNote(nAddress, pOriginalNoteCopy); + pMemoryNotes->SetNote(nAddress, pOriginalNoteCopy); } } std::vector vAssets; - vAssets.push_back(pCodeNotes); + vAssets.push_back(pMemoryNotes); pGameContext.Assets().SaveAssets(vAssets); OnSelectedItemsChanged(); diff --git a/src/ui/viewmodels/CodeNotesViewModel.hh b/src/ui/viewmodels/MemoryNotesViewModel.hh similarity index 85% rename from src/ui/viewmodels/CodeNotesViewModel.hh rename to src/ui/viewmodels/MemoryNotesViewModel.hh index 97750e2c0..a14cc5c5d 100644 --- a/src/ui/viewmodels/CodeNotesViewModel.hh +++ b/src/ui/viewmodels/MemoryNotesViewModel.hh @@ -1,5 +1,5 @@ -#ifndef RA_UI_CODENOTESVIEWMODEL_H -#define RA_UI_CODENOTESVIEWMODEL_H +#ifndef RA_UI_MEMORYNOTESVIEWMODEL_H +#define RA_UI_MEMORYNOTESVIEWMODEL_H #pragma once #include "data\context\GameContext.hh" @@ -12,29 +12,29 @@ namespace ra { namespace ui { namespace viewmodels { -class CodeNotesViewModel : public WindowViewModelBase, +class MemoryNotesViewModel : public WindowViewModelBase, protected ra::data::context::GameContext::NotifyTarget, protected ra::ui::ViewModelCollectionBase::NotifyTarget { public: - GSL_SUPPRESS_F6 CodeNotesViewModel() noexcept; - ~CodeNotesViewModel() = default; + GSL_SUPPRESS_F6 MemoryNotesViewModel() noexcept; + ~MemoryNotesViewModel() = default; - CodeNotesViewModel(const CodeNotesViewModel&) noexcept = delete; - CodeNotesViewModel& operator=(const CodeNotesViewModel&) noexcept = delete; - CodeNotesViewModel(CodeNotesViewModel&&) noexcept = delete; - CodeNotesViewModel& operator=(CodeNotesViewModel&&) noexcept = delete; + MemoryNotesViewModel(const MemoryNotesViewModel&) noexcept = delete; + MemoryNotesViewModel& operator=(const MemoryNotesViewModel&) noexcept = delete; + MemoryNotesViewModel(MemoryNotesViewModel&&) noexcept = delete; + MemoryNotesViewModel& operator=(MemoryNotesViewModel&&) noexcept = delete; - class CodeNoteViewModel : public ViewModelBase + class MemoryNoteViewModel : public ViewModelBase { public: - CodeNoteViewModel(const std::wstring& sLabel, const std::wstring& sNote) noexcept + MemoryNoteViewModel(const std::wstring& sLabel, const std::wstring& sNote) noexcept { GSL_SUPPRESS_F6 SetValue(LabelProperty, sLabel); GSL_SUPPRESS_F6 SetValue(NoteProperty, sNote); } - CodeNoteViewModel(const std::wstring&& sLabel, const std::wstring&& sNote) noexcept + MemoryNoteViewModel(const std::wstring&& sLabel, const std::wstring&& sNote) noexcept { GSL_SUPPRESS_F6 SetValue(LabelProperty, sLabel); GSL_SUPPRESS_F6 SetValue(NoteProperty, sNote); @@ -114,7 +114,7 @@ public: /// /// Gets the list of bookmarks. /// - ViewModelCollection& Notes() noexcept + ViewModelCollection& Notes() noexcept { return m_vNotes; } @@ -122,7 +122,7 @@ public: /// /// Gets the list of bookmarks. /// - const ViewModelCollection& Notes() const noexcept + const ViewModelCollection& Notes() const noexcept { return m_vNotes; } @@ -203,7 +203,7 @@ protected: // ra::data::context::GameContext::NotifyTarget void OnActiveGameChanged() override; void OnEndGameLoad() override; - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; // ra::ui::ViewModelCollectionBase::NotifyTarget void OnViewModelBoolValueChanged(gsl::index nIndex, const BoolModelProperty::ChangeArgs& args) override; @@ -213,7 +213,7 @@ private: void OnSelectedItemsChanged(); void GetSelectedModifiedNoteAddresses(std::vector& vAddresses); - ViewModelCollection m_vNotes; + ViewModelCollection m_vNotes; size_t m_nUnfilteredNotesCount = 0U; gsl::index m_nSelectionStart = -1, m_nSelectionEnd = -1; @@ -224,4 +224,4 @@ private: } // namespace ui } // namespace ra -#endif !RA_UI_CODENOTESVIEWMODEL_H +#endif !RA_UI_MEMORYNOTESVIEWMODEL_H diff --git a/src/ui/viewmodels/MemorySearchViewModel.cpp b/src/ui/viewmodels/MemorySearchViewModel.cpp index 3569f5778..d003f6ba8 100644 --- a/src/ui/viewmodels/MemorySearchViewModel.cpp +++ b/src/ui/viewmodels/MemorySearchViewModel.cpp @@ -78,9 +78,9 @@ void MemorySearchViewModel::SearchResultViewModel::UpdateRowColor() // green if bookmark found SetRowColor(ra::ui::Color(0xFFE0FFE0)); } - else if (bHasCodeNote) + else if (bHasMemoryNote) { - // blue if code note found + // blue if memory note found SetRowColor(ra::ui::Color(0xFFE0F0FF)); } else if (bHasBeenModified) @@ -95,17 +95,17 @@ void MemorySearchViewModel::SearchResultViewModel::UpdateRowColor() } } -void MemorySearchViewModel::SearchResultViewModel::UpdateCodeNote(const std::wstring& sNote) +void MemorySearchViewModel::SearchResultViewModel::UpdateMemoryNote(const std::wstring& sNote) { if (!sNote.empty()) { - bHasCodeNote = true; + bHasMemoryNote = true; SetDescription(sNote); SetDescriptionColor(ra::ui::Color(ra::to_unsigned(DescriptionColorProperty.GetDefaultValue()))); } else { - bHasCodeNote = false; + bHasMemoryNote = false; const auto& pConsoleContext = ra::services::ServiceLocator::Get(); const auto* pRegion = pConsoleContext.GetMemoryRegion(nAddress); @@ -856,7 +856,7 @@ void MemorySearchViewModel::UpdateResults() const auto& vmBookmarks = ra::services::ServiceLocator::Get().MemoryBookmarks; const auto& pGameContext = ra::services::ServiceLocator::Get(); const auto& pMemoryContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); m_vResults.RemoveNotifyTarget(*this); m_vResults.BeginUpdate(); @@ -894,9 +894,9 @@ void MemorySearchViewModel::UpdateResults() UpdateResult(*pRow, pCurrentResults.pResults, pResult, true, pMemoryContext); - const auto pCodeNote = (pCodeNotes != nullptr) ? - pCodeNotes->FindCodeNote(pResult.nAddress, pResult.nSize) : std::wstring(L""); - pRow->UpdateCodeNote(pCodeNote); + const auto pMemoryNote = (pMemoryNotes != nullptr) ? + pMemoryNotes->FindNote(pResult.nAddress, pResult.nSize) : std::wstring(L""); + pRow->UpdateMemoryNote(pMemoryNote); pRow->SetSelected(m_vSelectedAddresses.find(pRow->nAddress) != m_vSelectedAddresses.end()); @@ -973,7 +973,7 @@ std::wstring MemorySearchViewModel::GetTooltip(const SearchResultViewModel& vmRe return sTooltip; } -void MemorySearchViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring&) +void MemorySearchViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring&) { if (m_vResults.Count() == 0 || m_vSearchResults.empty()) return; @@ -981,11 +981,11 @@ void MemorySearchViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, co const auto nSize = m_vSearchResults.front()->pResults.GetSize(); const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (!pCodeNotes) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (!pMemoryNotes) return; - const auto* pNote = pCodeNotes->FindCodeNoteModel(nAddress); + const auto* pNote = pMemoryNotes->FindMemoryNoteModel(nAddress); if (pNote != nullptr) { // if updated note is before first visible result, ignore @@ -1000,19 +1000,19 @@ void MemorySearchViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, co for (auto& pRow : m_vResults) { - const auto sProcessedNote = pCodeNotes->FindCodeNote(pRow.nAddress, nSize); - pRow.UpdateCodeNote(sProcessedNote); + const auto sProcessedNote = pMemoryNotes->FindNote(pRow.nAddress, nSize); + pRow.UpdateMemoryNote(sProcessedNote); } } -void MemorySearchViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) +void MemorySearchViewModel::OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { for (auto& pRow : m_vResults) { if (pRow.nAddress == nOldAddress) - pRow.UpdateCodeNote(L""); + pRow.UpdateMemoryNote(L""); else if (pRow.nAddress == nNewAddress) - pRow.UpdateCodeNote(sNote); + pRow.UpdateMemoryNote(sNote); } } diff --git a/src/ui/viewmodels/MemorySearchViewModel.hh b/src/ui/viewmodels/MemorySearchViewModel.hh index b2037b8d2..a1cd1a1db 100644 --- a/src/ui/viewmodels/MemorySearchViewModel.hh +++ b/src/ui/viewmodels/MemorySearchViewModel.hh @@ -348,11 +348,11 @@ public: unsigned nCurrentValue = 0; bool bMatchesFilter = false; bool bHasBookmark = false; - bool bHasCodeNote = false; + bool bHasMemoryNote = false; bool bHasBeenModified = false; void UpdateRowColor(); - void UpdateCodeNote(const std::wstring& sNote); + void UpdateMemoryNote(const std::wstring& sNote); }; /// @@ -507,8 +507,8 @@ protected: // GameContext::NotifyTarget void OnBeforeActiveGameChanged() override; void OnActiveGameChanged() override; - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNote) override; - void OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNote) override; + void OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; void SaveResults(ra::services::TextWriter& sFile, std::function pProgressCallback) const; diff --git a/src/ui/viewmodels/MemoryViewerViewModel.cpp b/src/ui/viewmodels/MemoryViewerViewModel.cpp index 7247427d3..eac200914 100644 --- a/src/ui/viewmodels/MemoryViewerViewModel.cpp +++ b/src/ui/viewmodels/MemoryViewerViewModel.cpp @@ -198,19 +198,19 @@ static MemoryViewerViewModel::TextColor GetColor(ra::data::ByteAddress nAddress, if (bCheckNotes) { - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - const auto nNoteStart = pCodeNotes->FindCodeNoteStart(nAddress); + const auto nNoteStart = pMemoryNotes->FindNoteStart(nAddress); if (nNoteStart != 0xFFFFFFFF) { - if (nNoteStart == 0 && pCodeNotes->FindCodeNoteModel(nAddress, false) == nullptr) + if (nNoteStart == 0 && pMemoryNotes->FindMemoryNoteModel(nAddress, false) == nullptr) return MemoryViewerViewModel::TextColor::Default; if (nNoteStart != nAddress) return MemoryViewerViewModel::TextColor::HasSurrogateNote; - const auto* pNote = pCodeNotes->FindCodeNote(nAddress); + const auto* pNote = pMemoryNotes->FindNote(nAddress); if (pNote != nullptr && !pNote->empty()) return MemoryViewerViewModel::TextColor::HasNote; } @@ -232,12 +232,12 @@ void MemoryViewerViewModel::UpdateColors() for (int i = 0; i < nVisibleLines * 16; ++i) m_pColor[i] = STALE_COLOR | gsl::narrow_cast(ra::etoi(GetColor(nFirstAddress + i, pBookmarksViewModel, pGameContext, false))); - // apply code notes - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + // apply memory notes + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { const auto nStopAddress = nFirstAddress + nVisibleLines * 16; - pCodeNotes->EnumerateCodeNotes([nFirstAddress, nStopAddress, this](ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pNote) { + pMemoryNotes->EnumerateMemoryNotes([nFirstAddress, nStopAddress, this](ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pNote) { auto nBytes = pNote.GetBytes(); if (nAddress + nBytes <= nFirstAddress) // not to viewing window yet return true; @@ -751,7 +751,7 @@ void MemoryViewerViewModel::OnActiveGameChanged() UpdateColors(); } -void MemoryViewerViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) +void MemoryViewerViewModel::OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { const auto nFirstAddress = GetFirstAddress(); const auto nVisibleLines = GetNumVisibleLines(); @@ -760,17 +760,17 @@ void MemoryViewerViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, r if (nOldAddress >= nFirstAddress && nOldAddress < nFirstNonVisibleAddress) { const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - Expects(pCodeNotes != nullptr); - const auto pNote = pCodeNotes->FindCodeNoteModel(nOldAddress); - OnCodeNoteChanged(nOldAddress, pNote ? pNote->GetNote() : std::wstring()); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + Expects(pMemoryNotes != nullptr); + const auto pNote = pMemoryNotes->FindMemoryNoteModel(nOldAddress); + OnMemoryNoteChanged(nOldAddress, pNote ? pNote->GetNote() : std::wstring()); } if (nNewAddress >= nFirstAddress && nNewAddress < nFirstNonVisibleAddress) - OnCodeNoteChanged(nNewAddress, sNote); + OnMemoryNoteChanged(nNewAddress, sNote); } -void MemoryViewerViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNote) +void MemoryViewerViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNote) { const auto nFirstAddress = GetFirstAddress(); if (nAddress < nFirstAddress) @@ -783,14 +783,14 @@ void MemoryViewerViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, co const auto& pBookmarksViewModel = ra::services::ServiceLocator::Get().MemoryBookmarks; const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - Expects(pCodeNotes != nullptr); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + Expects(pMemoryNotes != nullptr); const auto nSelectedAddress = GetAddress(); - const auto* pCodeNote = pCodeNotes->FindCodeNoteModel(nAddress); + const auto* pMemoryNote = pMemoryNotes->FindMemoryNoteModel(nAddress); const auto nMax = nFirstAddress + nVisibleLines * 16 - nAddress; - const auto nSize = std::min(pCodeNote ? pCodeNote->GetBytes() : 1U, nMax); + const auto nSize = std::min(pMemoryNote ? pMemoryNote->GetBytes() : 1U, nMax); for (unsigned i = 0; i < nSize; ++i) { auto nNewColor = (nAddress == nSelectedAddress) ? @@ -816,7 +816,7 @@ void MemoryViewerViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, co } // if the note size shrunk, clear out the surrogate indicators - const auto nNextAddress = pCodeNotes->GetNextNoteAddress(nAddress); + const auto nNextAddress = pMemoryNotes->GetNextNoteAddress(nAddress); const auto nMaxOffset = ra::to_unsigned(nVisibleLines) * 16; while (nAddress < nNextAddress && nOffset < nMaxOffset) { diff --git a/src/ui/viewmodels/MemoryViewerViewModel.hh b/src/ui/viewmodels/MemoryViewerViewModel.hh index 4db303a2c..1c2c3e232 100644 --- a/src/ui/viewmodels/MemoryViewerViewModel.hh +++ b/src/ui/viewmodels/MemoryViewerViewModel.hh @@ -188,8 +188,8 @@ protected: // GameContext::NotifyTarget void OnActiveGameChanged() override; - void OnCodeNoteChanged(ra::data::ByteAddress, const std::wstring&) override; - void OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress, const std::wstring&) override; + void OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; // EmulatorContext::NotifyTarget void OnTotalMemorySizeChanged() override; diff --git a/src/ui/viewmodels/MemoryWatchListViewModel.cpp b/src/ui/viewmodels/MemoryWatchListViewModel.cpp index a748df864..589e66a74 100644 --- a/src/ui/viewmodels/MemoryWatchListViewModel.cpp +++ b/src/ui/viewmodels/MemoryWatchListViewModel.cpp @@ -67,7 +67,7 @@ void MemoryWatchListViewModel::InitializeNotifyTargets(bool syncNotes) pMemoryContext.AddNotifyTarget(*this); } -void MemoryWatchListViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) +void MemoryWatchListViewModel::OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { for (auto& pItem : m_vItems) { @@ -82,7 +82,7 @@ void MemoryWatchListViewModel::OnCodeNoteMoved(ra::data::ByteAddress nOldAddress } } -void MemoryWatchListViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) +void MemoryWatchListViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { for (auto& pItem : m_vItems) { diff --git a/src/ui/viewmodels/MemoryWatchListViewModel.hh b/src/ui/viewmodels/MemoryWatchListViewModel.hh index a5b8af9f9..e5431fafd 100644 --- a/src/ui/viewmodels/MemoryWatchListViewModel.hh +++ b/src/ui/viewmodels/MemoryWatchListViewModel.hh @@ -86,8 +86,8 @@ public: protected: // ra::data::context::GameContext::NotifyTarget - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; - void OnCodeNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; + void OnMemoryNoteMoved(ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) override; // ra::data::context::EmulatorContext::NotifyTarget void OnByteWritten(ra::data::ByteAddress, uint8_t) override; diff --git a/src/ui/viewmodels/MemoryWatchViewModel.cpp b/src/ui/viewmodels/MemoryWatchViewModel.cpp index 827081765..54aaf0126 100644 --- a/src/ui/viewmodels/MemoryWatchViewModel.cpp +++ b/src/ui/viewmodels/MemoryWatchViewModel.cpp @@ -126,7 +126,7 @@ std::wstring MemoryWatchViewModel::ExtractDescriptionHeader(const std::wstring& // extract the first line into DescriptionHeader const auto nIndex = sFullNote.find('\n'); if (nIndex == std::string::npos) - return ra::data::models::CodeNoteModel::TrimSize(sFullNote, true); + return ra::data::models::MemoryNoteModel::TrimSize(sFullNote, true); std::wstring sNote = sFullNote; sNote.resize(nIndex); @@ -134,7 +134,7 @@ std::wstring MemoryWatchViewModel::ExtractDescriptionHeader(const std::wstring& if (sNote.back() == '\r') sNote.pop_back(); - return ra::data::models::CodeNoteModel::TrimSize(sNote, true); + return ra::data::models::MemoryNoteModel::TrimSize(sNote, true); } static rc_condition_t* FindMeasuredCondition(rc_value_t* pValue) noexcept @@ -505,14 +505,14 @@ void MemoryWatchViewModel::UpdateRealNote() if (pGameContext.IsGameLoading()) // no notes available return; - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - const ra::data::models::CodeNoteModel* pNote = nullptr; + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + const ra::data::models::MemoryNoteModel* pNote = nullptr; - if (pCodeNotes) + if (pMemoryNotes) { if (!IsIndirectAddress()) { - pNote = pCodeNotes->FindCodeNoteModel(GetAddress()); + pNote = pMemoryNotes->FindMemoryNoteModel(GetAddress()); } else { @@ -533,7 +533,7 @@ void MemoryWatchViewModel::UpdateRealNote() if (pNote) pNote = pNote->GetPointerNoteAtOffset(nAddress); else - pNote = pCodeNotes->FindCodeNoteModel(nAddress); + pNote = pMemoryNotes->FindMemoryNoteModel(nAddress); if (!pNote) break; diff --git a/src/ui/viewmodels/PointerInspectorViewModel.cpp b/src/ui/viewmodels/PointerInspectorViewModel.cpp index e4ccf4a7f..24727fa8b 100644 --- a/src/ui/viewmodels/PointerInspectorViewModel.cpp +++ b/src/ui/viewmodels/PointerInspectorViewModel.cpp @@ -80,11 +80,11 @@ void PointerInspectorViewModel::OnValueChanged(const StringModelProperty::Change { if (args.Property == CurrentFieldNoteProperty && !m_bSyncingNote) { - UpdateSourceCodeNote(); + UpdateSourceMemoryNote(); } else if (args.Property == CurrentAddressNoteProperty && !m_bSyncingNote) { - UpdateSourceCodeNote(); + UpdateSourceMemoryNote(); } else if (args.Property == CurrentAddressTextProperty && !m_bSyncingAddress) { @@ -168,16 +168,16 @@ void PointerInspectorViewModel::OnEndGameLoad() m_vPointers.Clear(); const auto& pMemoryContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - pCodeNotes->EnumerateCodeNotes( - [this, &pMemoryContext](ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pNote) { + pMemoryNotes->EnumerateMemoryNotes( + [this, &pMemoryContext](ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pNote) { if (pNote.IsPointer()) { m_vPointers.Add(nAddress, ra::util::String::Printf(L"%s | %s", pMemoryContext.FormatAddress(nAddress), - ra::data::models::CodeNoteModel::TrimSize( + ra::data::models::MemoryNoteModel::TrimSize( pNote.GetPointerDescription(), false))); } @@ -191,7 +191,7 @@ void PointerInspectorViewModel::OnEndGameLoad() m_vPointers.EndUpdate(); } -void PointerInspectorViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring&) +void PointerInspectorViewModel::OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring&) { if (nAddress == GetCurrentAddress() && !m_bSyncingNote) { @@ -201,15 +201,15 @@ void PointerInspectorViewModel::OnCodeNoteChanged(ra::data::ByteAddress nAddress } const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { - const auto* pNote = pCodeNotes->FindCodeNoteModel(nAddress, false); + const auto* pNote = pMemoryNotes->FindMemoryNoteModel(nAddress, false); UpdatePointerVisibility(nAddress, pNote); } } -void PointerInspectorViewModel::UpdatePointerVisibility(ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel* pNote) +void PointerInspectorViewModel::UpdatePointerVisibility(ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel* pNote) { const bool bIsPointerNote = pNote && pNote->IsPointer(); @@ -246,7 +246,7 @@ void PointerInspectorViewModel::UpdatePointerVisibility(ra::data::ByteAddress nA m_vPointers.BeginUpdate(); m_vPointers.Add(nAddress, ra::util::String::Printf(L"%s | %s", pMemoryContext.FormatAddress(nAddress), - ra::data::models::CodeNoteModel::TrimSize(pNote->GetPointerDescription(), false))); + ra::data::models::MemoryNoteModel::TrimSize(pNote->GetPointerDescription(), false))); m_vPointers.MoveItem(nCount, nIndex); m_vPointers.EndUpdate(); } @@ -255,13 +255,13 @@ void PointerInspectorViewModel::UpdatePointerVisibility(ra::data::ByteAddress nA void PointerInspectorViewModel::OnCurrentAddressChanged(ra::data::ByteAddress nNewAddress) { const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) { // select an invalid node to force LoadNodes to select the new root node after it's been updated SetSelectedNode(SelectedNodeNone); - const auto* pNote = pCodeNotes->FindCodeNoteModel(nNewAddress); + const auto* pNote = pMemoryNotes->FindMemoryNoteModel(nNewAddress); if (pNote) { LoadNodes(pNote); @@ -292,8 +292,8 @@ void PointerInspectorViewModel::GetPointerChain(gsl::index nIndex, std::stack(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); const auto nCurrentAddress = GetCurrentAddress(); - const auto* pNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nCurrentAddress) : nullptr; + const auto* pNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nCurrentAddress) : nullptr; if (m_bRebuildNodes) { @@ -420,7 +420,7 @@ const ra::data::models::CodeNoteModel* PointerInspectorViewModel::UpdatePointerC if (pNote) { // SetRealNote will keep a "[pointer]" tag on the description, so strip it now. - pItem->SetRealNote(ra::data::models::CodeNoteModel::TrimSize(pNote->GetPointerDescription(), false)); + pItem->SetRealNote(ra::data::models::MemoryNoteModel::TrimSize(pNote->GetPointerDescription(), false)); pItem->SetSize(pNote->GetMemSize()); } else @@ -451,7 +451,7 @@ const ra::data::models::CodeNoteModel* PointerInspectorViewModel::UpdatePointerC return pNote; } -void PointerInspectorViewModel::SyncField(PointerInspectorViewModel::StructFieldViewModel& pFieldViewModel, const ra::data::models::CodeNoteModel& pOffsetNote) +void PointerInspectorViewModel::SyncField(PointerInspectorViewModel::StructFieldViewModel& pFieldViewModel, const ra::data::models::MemoryNoteModel& pOffsetNote) { pFieldViewModel.m_pNote = &pOffsetNote; @@ -480,7 +480,7 @@ void PointerInspectorViewModel::SyncField(PointerInspectorViewModel::StructField auto nIndex = sNote.find('\n'); if (nIndex == std::string::npos) { - pFieldViewModel.SetDescription(ra::data::models::CodeNoteModel::TrimSize(sNote, true)); + pFieldViewModel.SetDescription(ra::data::models::MemoryNoteModel::TrimSize(sNote, true)); pFieldViewModel.SetBody(L""); } else @@ -491,11 +491,11 @@ void PointerInspectorViewModel::SyncField(PointerInspectorViewModel::StructField if (nIndex > 0 && sNote.at(nIndex - 1) == '\r') --nIndex; - pFieldViewModel.SetDescription(ra::data::models::CodeNoteModel::TrimSize(sNote.substr(0, nIndex), true)); + pFieldViewModel.SetDescription(ra::data::models::MemoryNoteModel::TrimSize(sNote.substr(0, nIndex), true)); } } -void PointerInspectorViewModel::LoadNote(const ra::data::models::CodeNoteModel* pNote) +void PointerInspectorViewModel::LoadNote(const ra::data::models::MemoryNoteModel* pNote) { if (pNote == nullptr) { @@ -519,7 +519,7 @@ void PointerInspectorViewModel::LoadNote(const ra::data::models::CodeNoteModel* gsl::index nInsertIndex = 0; m_vmFields.Items().BeginUpdate(); pNote->EnumeratePointerNotes([this, &nCount, &nInsertIndex, nBaseAddress] - (ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pOffsetNote) + (ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pOffsetNote) { const auto nOffset = nAddress - nBaseAddress; const std::wstring sOffset = ra::util::String::Printf(L"+%04x", nOffset); @@ -576,10 +576,10 @@ void PointerInspectorViewModel::LoadNote(const ra::data::models::CodeNoteModel* } static void LoadSubNotes(LookupItemViewModelCollection& vNodes, - const ra::data::models::CodeNoteModel& pNote, ra::data::ByteAddress nBaseAddress, int nDepth, int nParentIndex) + const ra::data::models::MemoryNoteModel& pNote, ra::data::ByteAddress nBaseAddress, int nDepth, int nParentIndex) { pNote.EnumeratePointerNotes([&vNodes, nBaseAddress, nDepth, nParentIndex] - (ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pOffsetNote) { + (ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pOffsetNote) { const auto nOffset = nAddress - nBaseAddress; if (!pOffsetNote.IsPointer()) return true; @@ -598,7 +598,7 @@ static void LoadSubNotes(LookupItemViewModelCollection& vNodes, }); } -void PointerInspectorViewModel::LoadNodes(const ra::data::models::CodeNoteModel* pNote) +void PointerInspectorViewModel::LoadNodes(const ra::data::models::MemoryNoteModel* pNote) { const int nSelectedNode = GetSelectedNode(); @@ -627,14 +627,14 @@ void PointerInspectorViewModel::BuildNoteForCurrentNode(ra::util::StringBuilder& std::stack& sChain, gsl::index nDepth) { - ra::data::models::CodeNoteModel newNote; + ra::data::models::MemoryNoteModel newNote; // if a single field is selected, push the current field value back into the field const auto nSingleSelectionIndex = gsl::narrow_cast(m_vmFields.GetSingleSelectionIndex()); auto* pField = m_vmFields.Items().GetItemAt(nSingleSelectionIndex); // SyncField will cause pField to point at the local newNote, capture the current value so it can be restored - const ra::data::models::CodeNoteModel* pExistingNote = pField ? pField->m_pNote : nullptr; + const ra::data::models::MemoryNoteModel* pExistingNote = pField ? pField->m_pNote : nullptr; if (pField) { @@ -707,7 +707,7 @@ void PointerInspectorViewModel::BuildNoteForCurrentNode(ra::util::StringBuilder& void PointerInspectorViewModel::BuildNote(ra::util::StringBuilder& builder, std::stack& sChain, - gsl::index nDepth, const ra::data::models::CodeNoteModel& pNote) + gsl::index nDepth, const ra::data::models::MemoryNoteModel& pNote) { if (nDepth == gsl::narrow_cast(sChain.size())) { @@ -718,7 +718,7 @@ void PointerInspectorViewModel::BuildNote(ra::util::StringBuilder& builder, const auto nBaseAddress = pNote.GetPointerAddress(); pNote.EnumeratePointerNotes([this, &builder, &sChain, nDepth, nBaseAddress] - (ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel& pOffsetNote) { + (ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel& pOffsetNote) { const auto nOffset = nAddress - nBaseAddress; builder.Append(L"\r\n"); @@ -746,11 +746,11 @@ void PointerInspectorViewModel::BuildNote(ra::util::StringBuilder& builder, if (!pOffsetNote.IsPointer()) - builder.Append(ra::data::models::CodeNoteModel::TrimSize(pOffsetNote.GetNote(), false)); + builder.Append(ra::data::models::MemoryNoteModel::TrimSize(pOffsetNote.GetNote(), false)); else if (&pOffsetNote == m_pCurrentNote) - builder.Append(ra::data::models::CodeNoteModel::TrimSize(GetCurrentAddressNote(), false)); + builder.Append(ra::data::models::MemoryNoteModel::TrimSize(GetCurrentAddressNote(), false)); else - builder.Append(ra::data::models::CodeNoteModel::TrimSize(pOffsetNote.GetPointerDescription(), false)); + builder.Append(ra::data::models::MemoryNoteModel::TrimSize(pOffsetNote.GetPointerDescription(), false)); if (pOffsetNote.IsPointer()) BuildNote(builder, sChain, nDepth + 1, pOffsetNote); @@ -759,13 +759,13 @@ void PointerInspectorViewModel::BuildNote(ra::util::StringBuilder& builder, }); } -void PointerInspectorViewModel::UpdateSourceCodeNote() +void PointerInspectorViewModel::UpdateSourceMemoryNote() { const auto nAddress = GetCurrentAddress(); auto& pGameContext = ra::services::ServiceLocator::GetMutable(); - auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - Expects(pCodeNotes != nullptr); - auto* pNote = pCodeNotes->FindCodeNoteModel(nAddress); + auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + Expects(pMemoryNotes != nullptr); + auto* pNote = pMemoryNotes->FindMemoryNoteModel(nAddress); if (pNote != nullptr) { const auto nIndex = m_vNodes.FindItemIndex(LookupItemViewModel::IdProperty, GetSelectedNode()); @@ -784,14 +784,14 @@ void PointerInspectorViewModel::UpdateSourceCodeNote() m_bRebuildNodes = false; BuildNote(builder, sChain, 1, *pNote); - // nested note reference is invalidated in SetCodeNote. temporarily release - // the reference and restore it after SetCodeNote completes to prevent the UI + // nested note reference is invalidated in SetMemoryNote. temporarily release + // the reference and restore it after SetMemoryNote completes to prevent the UI // thread from trying to use it while it's invalid (we're most likely on a // background thread kicked off by a timer to support as-you-type changes). m_pCurrentNote = nullptr; m_bSyncingNote = true; - pCodeNotes->SetCodeNote(nAddress, builder.ToWString()); + pMemoryNotes->SetNote(nAddress, builder.ToWString()); m_bSyncingNote = false; // update the current note pointer @@ -801,7 +801,7 @@ void PointerInspectorViewModel::UpdateSourceCodeNote() gsl::index nNoteIndex = 0; if (m_pCurrentNote) { m_pCurrentNote->EnumeratePointerNotes([this, &nNoteIndex] - (ra::data::ByteAddress, const ra::data::models::CodeNoteModel& pOffsetNote) + (ra::data::ByteAddress, const ra::data::models::MemoryNoteModel& pOffsetNote) { m_vmFields.Items().GetItemAt(nNoteIndex++)->m_pNote = &pOffsetNote; return true; @@ -812,7 +812,7 @@ void PointerInspectorViewModel::UpdateSourceCodeNote() // also write the changes to disk std::vector vAssets; - vAssets.push_back(pCodeNotes); + vAssets.push_back(pMemoryNotes); pGameContext.Assets().SaveAssets(vAssets); } } @@ -926,11 +926,11 @@ void PointerInspectorViewModel::CopyDefinition() const ra::services::ServiceLocator::Get().SetText(ra::util::String::Widen(sDefinition)); } -class VirtualCodeNoteModel : public ra::data::models::CodeNoteModel +class VirtualMemoryNoteModel : public ra::data::models::MemoryNoteModel { - bool GetPointerChain(std::vector& vChain, const CodeNoteModel& pRootNote) const override + bool GetPointerChain(std::vector& vChain, const MemoryNoteModel& pRootNote) const override { - if (!ra::data::models::CodeNoteModel::GetPointerChain(vChain, pRootNote)) + if (!ra::data::models::MemoryNoteModel::GetPointerChain(vChain, pRootNote)) return false; vChain.push_back(this); @@ -947,17 +947,17 @@ std::string PointerInspectorViewModel::GetMemRefChain(bool bMeasured) const return sBuffer; const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes == nullptr) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes == nullptr) return sBuffer; const auto* vmField = m_vmFields.Items().GetItemAt(nSelectedFieldIndex); Expects(vmField != nullptr); - auto* pRootNote = pCodeNotes->FindCodeNoteModel(GetCurrentAddress()); + auto* pRootNote = pMemoryNotes->FindMemoryNoteModel(GetCurrentAddress()); Expects(pRootNote != nullptr); - VirtualCodeNoteModel oLeafNote; + VirtualMemoryNoteModel oLeafNote; auto* pLeafNote = m_pCurrentNote->GetPointerNoteAtOffset(vmField->m_nOffset); if (pLeafNote == nullptr) { @@ -1058,7 +1058,7 @@ void PointerInspectorViewModel::OnFieldOffsetChanged(gsl::index nIndex, const st } // update the composite note - UpdateSourceCodeNote(); + UpdateSourceMemoryNote(); // lastly, update the current value (may trigger PauseOnChange) const auto nBaseAddress = (m_pCurrentNote != nullptr) ? m_pCurrentNote->GetPointerAddress() : 0U; @@ -1082,13 +1082,13 @@ void PointerInspectorViewModel::StructFieldViewModel::FormatOffset() void PointerInspectorViewModel::OnFieldSizeChanged(gsl::index nIndex) { // if it's the selected note, we have to update the CurrentFieldNote - // before calling UpdatingSourceCodeNote(). + // before calling UpdatingSourceMemoryNote(). if (nIndex == Fields().GetSingleSelectionIndex()) { const auto* pNote = Fields().Items().GetItemAt(nIndex); if (pNote != nullptr) { - const auto sUnsizedFieldNote = ra::data::models::CodeNoteModel::TrimSize(GetCurrentFieldNote(), false); + const auto sUnsizedFieldNote = ra::data::models::MemoryNoteModel::TrimSize(GetCurrentFieldNote(), false); const auto sNewFieldNote = ra::util::String::Printf(L"[%s%s] %s", ra::data::Memory::SizeString(pNote->GetSize()), pNote->m_pNote->IsPointer() ? L" pointer" : L"", @@ -1100,7 +1100,7 @@ void PointerInspectorViewModel::OnFieldSizeChanged(gsl::index nIndex) } } - UpdateSourceCodeNote(); + UpdateSourceMemoryNote(); } void PointerInspectorViewModel::NewField() @@ -1155,7 +1155,7 @@ void PointerInspectorViewModel::RemoveSelectedField() return; m_vmFields.Items().RemoveAt(nIndex); - UpdateSourceCodeNote(); + UpdateSourceMemoryNote(); } } // namespace viewmodels diff --git a/src/ui/viewmodels/PointerInspectorViewModel.hh b/src/ui/viewmodels/PointerInspectorViewModel.hh index 0f272aead..ad3af1e87 100644 --- a/src/ui/viewmodels/PointerInspectorViewModel.hh +++ b/src/ui/viewmodels/PointerInspectorViewModel.hh @@ -14,7 +14,7 @@ namespace ra { namespace data { namespace models { -class CodeNoteModel; +class MemoryNoteModel; } // namespace models } // namespace data @@ -125,7 +125,7 @@ public: int32_t m_nOffset = 0; int32_t m_nIndent = 0; - const ra::data::models::CodeNoteModel* m_pNote = nullptr; + const ra::data::models::MemoryNoteModel* m_pNote = nullptr; bool m_bFormattingOffset = false; }; @@ -250,7 +250,7 @@ protected: // GameContext::NotifyTarget void OnActiveGameChanged() override; void OnEndGameLoad() override; - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override; // ViewModelBase::NotifyTarget void OnViewModelIntValueChanged(const IntModelProperty::ChangeArgs& args) override; @@ -261,22 +261,22 @@ private: void OnSelectedFieldChanged(int nNode); void OnFieldSizeChanged(gsl::index nIndex); void OnFieldOffsetChanged(gsl::index nIndex, const std::wstring& sNewOffset); - void LoadNote(const ra::data::models::CodeNoteModel* pNote); - void LoadNodes(const ra::data::models::CodeNoteModel* pNote); - const ra::data::models::CodeNoteModel* FindNestedCodeNoteModel(const ra::data::models::CodeNoteModel& pRootNote, int nNewNode); + void LoadNote(const ra::data::models::MemoryNoteModel* pNote); + void LoadNodes(const ra::data::models::MemoryNoteModel* pNote); + const ra::data::models::MemoryNoteModel* FindNestedMemoryNoteModel(const ra::data::models::MemoryNoteModel& pRootNote, int nNewNode); void GetPointerChain(gsl::index nIndex, std::stack& sChain) const; - void SyncField(StructFieldViewModel& pFieldViewModel, const ra::data::models::CodeNoteModel& pOffsetNote); - void UpdatePointerVisibility(ra::data::ByteAddress nAddress, const ra::data::models::CodeNoteModel* pNote); - const ra::data::models::CodeNoteModel* UpdatePointerChain(int nNewNode); + void SyncField(StructFieldViewModel& pFieldViewModel, const ra::data::models::MemoryNoteModel& pOffsetNote); + void UpdatePointerVisibility(ra::data::ByteAddress nAddress, const ra::data::models::MemoryNoteModel* pNote); + const ra::data::models::MemoryNoteModel* UpdatePointerChain(int nNewNode); void UpdatePointerChainRowColor(StructFieldViewModel& pPointer); void UpdatePointerChainValues(); void UpdateValues(); std::string GetMemRefChain(bool bMeasured) const; - void UpdateSourceCodeNote(); + void UpdateSourceMemoryNote(); void BuildNote(ra::util::StringBuilder& builder, std::stack& sChain, - gsl::index nDepth, const ra::data::models::CodeNoteModel& pNote); + gsl::index nDepth, const ra::data::models::MemoryNoteModel& pNote); void BuildNoteForCurrentNode(ra::util::StringBuilder& builder, std::stack& sChain, gsl::index nDepth); @@ -291,7 +291,7 @@ private: std::mutex m_mtxLoadNote; - const ra::data::models::CodeNoteModel* m_pCurrentNote = nullptr; + const ra::data::models::MemoryNoteModel* m_pCurrentNote = nullptr; }; } // namespace viewmodels diff --git a/src/ui/viewmodels/TriggerConditionViewModel.cpp b/src/ui/viewmodels/TriggerConditionViewModel.cpp index 698e51956..3b22d1b7e 100644 --- a/src/ui/viewmodels/TriggerConditionViewModel.cpp +++ b/src/ui/viewmodels/TriggerConditionViewModel.cpp @@ -447,7 +447,7 @@ std::wstring TriggerConditionViewModel::GetTooltip(const StringModelProperty& nP if (IsIndirect()) { - const ra::data::models::CodeNoteModel* pNote = nullptr; + const ra::data::models::MemoryNoteModel* pNote = nullptr; std::wstring sPointerChain; const auto nOffset = GetSourceAddress(); const auto nIndirectAddress = GetIndirectAddress(nOffset, sPointerChain, &pNote); @@ -476,7 +476,7 @@ std::wstring TriggerConditionViewModel::GetTooltip(const StringModelProperty& nP if (IsIndirect()) { - const ra::data::models::CodeNoteModel* pNote = nullptr; + const ra::data::models::MemoryNoteModel* pNote = nullptr; std::wstring sPointerChain; const auto nOffset = GetTargetAddress(); const auto nIndirectAddress = GetIndirectAddress(nOffset, sPointerChain, &pNote); @@ -510,7 +510,7 @@ std::wstring TriggerConditionViewModel::GetTooltip(const IntModelProperty& nProp std::wstring TriggerConditionViewModel::GetPotentialEnumValueTooltip(unsigned int nValue, ra::data::ByteAddress nCompareAddress) const { - const ra::data::models::CodeNoteModel* pNote = nullptr; + const ra::data::models::MemoryNoteModel* pNote = nullptr; if (IsIndirect()) { @@ -520,9 +520,9 @@ std::wstring TriggerConditionViewModel::GetPotentialEnumValueTooltip(unsigned in else { const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes) - pNote = pCodeNotes->FindCodeNoteModel(nCompareAddress); + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes) + pNote = pMemoryNotes->FindMemoryNoteModel(nCompareAddress); } if (pNote != nullptr) @@ -593,7 +593,7 @@ static void BuildOperatorTooltip(std::wstring& sTooltip, uint8_t nOperatorType) } static ra::data::ByteAddress GetIndirectAddressFromOperand(const rc_operand_t* pOperand, std::wstring& sPointerChain, - const ra::data::models::CodeNoteModel** pParentNote) + const ra::data::models::MemoryNoteModel** pParentNote) { Expects(pParentNote != nullptr); @@ -625,10 +625,10 @@ static ra::data::ByteAddress GetIndirectAddressFromOperand(const rc_operand_t* p { const auto nAddress = pOperand->value.memref->address; - // find the code note associated to the parent + // find the memory note associated to the parent const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - *pParentNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nAddress, false) : nullptr; + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + *pParentNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nAddress, false) : nullptr; sPointerChain.push_back('$'); const auto& pMemoryContext = ra::services::ServiceLocator::Get(); @@ -665,10 +665,10 @@ static ra::data::ByteAddress GetIndirectAddressFromOperand(const rc_operand_t* p sPointerChain.insert(0, sPrefix); sPointerChain.push_back(']'); - // find the code note associated to the start of the array + // find the memory note associated to the start of the array const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - *pParentNote = pCodeNotes ? pCodeNotes->FindCodeNoteModel(nAddress, false) : nullptr; + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + *pParentNote = pMemoryNotes ? pMemoryNotes->FindMemoryNoteModel(nAddress, false) : nullptr; // return the address offset into the array return pValue.value.u32; @@ -804,7 +804,7 @@ const rc_condition_t* TriggerConditionViewModel::GetCondition() const } ra::data::ByteAddress TriggerConditionViewModel::GetIndirectAddress(ra::data::ByteAddress nAddress, std::wstring& sPointerChain, - const ra::data::models::CodeNoteModel** pLeafNote) const + const ra::data::models::MemoryNoteModel** pLeafNote) const { Expects(pLeafNote != nullptr); @@ -825,7 +825,7 @@ ra::data::ByteAddress TriggerConditionViewModel::GetIndirectAddress(ra::data::By } std::wstring TriggerConditionViewModel::GetAddressTooltip(ra::data::ByteAddress nAddress, ra::data::Memory::Size nSize, - const std::wstring& sPointerChain, const ra::data::models::CodeNoteModel* pNote) const + const std::wstring& sPointerChain, const ra::data::models::MemoryNoteModel* pNote) const { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); @@ -838,16 +838,16 @@ std::wstring TriggerConditionViewModel::GetAddressTooltip(ra::data::ByteAddress if (!pNote) { const auto& pGameContext = ra::services::ServiceLocator::Get(); - const auto* pCodeNotes = pGameContext.Assets().FindCodeNotes(); - if (pCodeNotes) + const auto* pMemoryNotes = pGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes) { - pNote = pCodeNotes->FindCodeNoteModel(nAddress); + pNote = pMemoryNotes->FindMemoryNoteModel(nAddress); if (pNote == nullptr) { - const auto nNoteStart = pCodeNotes->FindCodeNoteStart(nAddress); + const auto nNoteStart = pMemoryNotes->FindNoteStart(nAddress); if (nNoteStart != 0xFFFFFFFF) { - pNote = pCodeNotes->FindCodeNoteModel(nNoteStart); + pNote = pMemoryNotes->FindMemoryNoteModel(nNoteStart); if (sPointerChain.empty()) { @@ -859,7 +859,7 @@ std::wstring TriggerConditionViewModel::GetAddressTooltip(ra::data::ByteAddress } } if (!pNote) - return ra::util::String::Printf(L"%s\r\n[No code note]", sAddress); + return ra::util::String::Printf(L"%s\r\n[No memory note]", sAddress); } if (pNote->IsPointer() && GetType() == TriggerConditionType::AddAddress) @@ -875,7 +875,7 @@ std::wstring TriggerConditionViewModel::GetAddressTooltip(ra::data::ByteAddress return ra::util::String::Printf(L"%s\r\n%s\r\n%s", sAddress, sSummary, svSubNote); } - // limit the tooltip to the first 20 lines of the code note + // limit the tooltip to the first 20 lines of the memory note const auto& sNote = pNote->GetNote(); size_t nLines = 0; size_t nIndex = 0; diff --git a/src/ui/viewmodels/TriggerConditionViewModel.hh b/src/ui/viewmodels/TriggerConditionViewModel.hh index a759446d6..ad8571867 100644 --- a/src/ui/viewmodels/TriggerConditionViewModel.hh +++ b/src/ui/viewmodels/TriggerConditionViewModel.hh @@ -85,7 +85,7 @@ public: static const BoolModelProperty IsIndirectProperty; bool IsIndirect() const { return GetValue(IsIndirectProperty); } void SetIndirect(bool bValue) { SetValue(IsIndirectProperty, bValue); } - ra::data::ByteAddress GetIndirectAddress(ra::data::ByteAddress nAddress, std::wstring& sPointerChain, const ra::data::models::CodeNoteModel** pLeafNote) const; + ra::data::ByteAddress GetIndirectAddress(ra::data::ByteAddress nAddress, std::wstring& sPointerChain, const ra::data::models::MemoryNoteModel** pLeafNote) const; static const BoolModelProperty IsSelectedProperty; bool IsSelected() const { return GetValue(IsSelectedProperty); } @@ -121,7 +121,7 @@ private: std::wstring GetPotentialEnumValueTooltip(unsigned int nValue, ra::data::ByteAddress nCompareAddress) const; static std::wstring GetValueTooltip(unsigned int nValue); - std::wstring GetAddressTooltip(ra::data::ByteAddress nAddress, ra::data::Memory::Size nSize, const std::wstring& sPointerChain, const ra::data::models::CodeNoteModel* pNote) const; + std::wstring GetAddressTooltip(ra::data::ByteAddress nAddress, ra::data::Memory::Size nSize, const std::wstring& sPointerChain, const ra::data::models::MemoryNoteModel* pNote) const; std::wstring GetRecallTooltip(bool bOperand2) const; ra::data::ByteAddress GetSourceAddress() const; ra::data::ByteAddress GetTargetAddress() const; diff --git a/src/ui/viewmodels/WindowManager.hh b/src/ui/viewmodels/WindowManager.hh index 10a1ea61b..336d80c1d 100644 --- a/src/ui/viewmodels/WindowManager.hh +++ b/src/ui/viewmodels/WindowManager.hh @@ -3,7 +3,7 @@ #include "AssetEditorViewModel.hh" #include "AssetListViewModel.hh" -#include "CodeNotesViewModel.hh" +#include "MemoryNotesViewModel.hh" #include "EmulatorViewModel.hh" #include "MemoryBookmarksViewModel.hh" #include "MemoryInspectorViewModel.hh" @@ -23,7 +23,7 @@ public: AssetEditorViewModel AssetEditor; MemoryBookmarksViewModel MemoryBookmarks; MemoryInspectorViewModel MemoryInspector; - CodeNotesViewModel CodeNotes; + MemoryNotesViewModel MemoryNotes; PointerFinderViewModel PointerFinder; PointerInspectorViewModel PointerInspector; }; diff --git a/src/ui/win32/AssetEditorDialog.cpp b/src/ui/win32/AssetEditorDialog.cpp index 8e6a18e24..3b056bb70 100644 --- a/src/ui/win32/AssetEditorDialog.cpp +++ b/src/ui/win32/AssetEditorDialog.cpp @@ -299,7 +299,7 @@ class ValueColumnBinding : public ra::ui::win32::bindings::GridTextColumnBinding const auto* pConditionViewModel = dynamic_cast(vmItems.GetViewModelAt(nIndex)); Expects(pConditionViewModel != nullptr); std::wstring sPointerChain; - const ra::data::models::CodeNoteModel* pNote = nullptr; + const ra::data::models::MemoryNoteModel* pNote = nullptr; nAddress = pConditionViewModel->GetIndirectAddress(nAddress, sPointerChain, &pNote); } diff --git a/src/ui/win32/CodeNotesDialog.hh b/src/ui/win32/CodeNotesDialog.hh deleted file mode 100644 index 61296b976..000000000 --- a/src/ui/win32/CodeNotesDialog.hh +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef RA_UI_WIN32_DLG_CODENOTES_H -#define RA_UI_WIN32_DLG_CODENOTES_H -#pragma once - -#include "context/IEmulatorMemoryContext.hh" - -#include "ui/viewmodels/CodeNotesViewModel.hh" - -#include "ui/win32/bindings/CheckBoxBinding.hh" -#include "ui/win32/bindings/MultiLineGridBinding.hh" -#include "ui/win32/bindings/TextBoxBinding.hh" - -#include "ui/win32/DialogBase.hh" -#include "ui/win32/IDialogPresenter.hh" - -namespace ra { -namespace ui { -namespace win32 { - -class CodeNotesDialog : public DialogBase -{ -public: - explicit CodeNotesDialog(ra::ui::viewmodels::CodeNotesViewModel& vmMemoryBookmarks); - virtual ~CodeNotesDialog() noexcept = default; - CodeNotesDialog(const CodeNotesDialog&) noexcept = delete; - CodeNotesDialog& operator=(const CodeNotesDialog&) noexcept = delete; - CodeNotesDialog(CodeNotesDialog&&) noexcept = delete; - CodeNotesDialog& operator=(CodeNotesDialog&&) noexcept = delete; - - class Presenter : public IClosableDialogPresenter - { - public: - bool IsSupported(const ra::ui::WindowViewModelBase& viewModel) noexcept override; - void ShowWindow(ra::ui::WindowViewModelBase& viewModel) override; - void ShowModal(ra::ui::WindowViewModelBase& viewModel, HWND hParentWnd) override; - void OnClosed() noexcept override; - - private: - std::unique_ptr m_pDialog; - }; - -protected: - BOOL OnInitDialog() override; - BOOL OnCommand(WORD nCommand) override; - -private: - class CodeNotesGridBinding : public ra::ui::win32::bindings::MultiLineGridBinding, - protected ra::context::IEmulatorMemoryContext::NotifyTarget - { - public: - explicit CodeNotesGridBinding(ViewModelBase& vmViewModel); - GSL_SUPPRESS_F6 ~CodeNotesGridBinding(); - CodeNotesGridBinding(const CodeNotesGridBinding&) noexcept = delete; - CodeNotesGridBinding& operator=(const CodeNotesGridBinding&) noexcept = delete; - CodeNotesGridBinding(CodeNotesGridBinding&&) noexcept = delete; - CodeNotesGridBinding& operator=(CodeNotesGridBinding&&) noexcept = delete; - - protected: - void OnTotalMemorySizeChanged() override; - }; - - CodeNotesGridBinding m_bindNotes; - ra::ui::win32::bindings::TextBoxBinding m_bindFilterValue; - ra::ui::win32::bindings::CheckBoxBinding m_bindUnpublished; -}; - -} // namespace win32 -} // namespace ui -} // namespace ra - -#endif // !RA_UI_WIN32_DLG_CODENOTES_H diff --git a/src/ui/win32/Desktop.cpp b/src/ui/win32/Desktop.cpp index 84c74a1e5..e0f64f1c9 100644 --- a/src/ui/win32/Desktop.cpp +++ b/src/ui/win32/Desktop.cpp @@ -9,13 +9,13 @@ #include "ui/win32/AssetListDialog.hh" #include "ui/win32/AssetEditorDialog.hh" #include "ui/win32/BrokenAchievementsDialog.hh" -#include "ui/win32/CodeNotesDialog.hh" #include "ui/win32/FileDialog.hh" #include "ui/win32/GameChecksumDialog.hh" #include "ui/win32/LoginDialog.hh" #include "ui/win32/MessageBoxDialog.hh" #include "ui/win32/MemoryBookmarksDialog.hh" #include "ui/win32/MemoryInspectorDialog.hh" +#include "ui/win32/MemoryNotesDialog.hh" #include "ui/win32/MemoryRegionsDialog.hh" #include "ui/win32/NewAssetDialog.hh" #include "ui/win32/OverlaySettingsDialog.hh" @@ -46,7 +46,7 @@ Desktop::Desktop() noexcept m_vDialogPresenters.emplace_back(new (std::nothrow) MemoryInspectorDialog::Presenter); m_vDialogPresenters.emplace_back(new (std::nothrow) MemoryRegionsDialog::Presenter); m_vDialogPresenters.emplace_back(new (std::nothrow) MemoryBookmarksDialog::Presenter); - m_vDialogPresenters.emplace_back(new (std::nothrow) CodeNotesDialog::Presenter); + m_vDialogPresenters.emplace_back(new (std::nothrow) MemoryNotesDialog::Presenter); m_vDialogPresenters.emplace_back(new (std::nothrow) AssetListDialog::Presenter); m_vDialogPresenters.emplace_back(new (std::nothrow) AssetEditorDialog::Presenter); m_vDialogPresenters.emplace_back(new (std::nothrow) PointerFinderDialog::Presenter); diff --git a/src/ui/win32/MemoryInspectorDialog.cpp b/src/ui/win32/MemoryInspectorDialog.cpp index c63811822..b3b4434a7 100644 --- a/src/ui/win32/MemoryInspectorDialog.cpp +++ b/src/ui/win32/MemoryInspectorDialog.cpp @@ -228,7 +228,7 @@ MemoryInspectorDialog::MemoryInspectorDialog(MemoryInspectorViewModel& vmMemoryI nullptr // Search results are readonly, no need to multi-set values ); - // Code Notes + // Memory Notes m_bindAddress.BindText(MemoryInspectorViewModel::CurrentAddressTextProperty, ra::ui::win32::bindings::TextBoxBinding::UpdateMode::KeyPress); m_bindAddress.BindKey(VK_UP, [this]() { @@ -322,7 +322,7 @@ BOOL MemoryInspectorDialog::OnInitDialog() m_bindSearchResults.SetControl(*this, IDC_RA_RESULTS); m_bindSearchResults.InitializeTooltips(std::chrono::seconds(3)); - // Code Notes + // Memory Notes m_bindAddress.SetControl(*this, IDC_RA_ADDRESS); m_bindNoteText.SetControl(*this, IDC_RA_NOTE_TEXT); diff --git a/src/ui/win32/CodeNotesDialog.cpp b/src/ui/win32/MemoryNotesDialog.cpp similarity index 57% rename from src/ui/win32/CodeNotesDialog.cpp rename to src/ui/win32/MemoryNotesDialog.cpp index c1daad539..81c000f5c 100644 --- a/src/ui/win32/CodeNotesDialog.cpp +++ b/src/ui/win32/MemoryNotesDialog.cpp @@ -1,4 +1,4 @@ -#include "CodeNotesDialog.hh" +#include "MemoryNotesDialog.hh" #include "RA_Resource.h" @@ -12,54 +12,54 @@ #include "util\EnumOps.hh" #include "util\Log.hh" -using ra::ui::viewmodels::CodeNotesViewModel; +using ra::ui::viewmodels::MemoryNotesViewModel; using ra::ui::win32::bindings::GridColumnBinding; namespace ra { namespace ui { namespace win32 { -bool CodeNotesDialog::Presenter::IsSupported(const ra::ui::WindowViewModelBase& vmViewModel) noexcept +bool MemoryNotesDialog::Presenter::IsSupported(const ra::ui::WindowViewModelBase& vmViewModel) noexcept { - return (dynamic_cast(&vmViewModel) != nullptr); + return (dynamic_cast(&vmViewModel) != nullptr); } -void CodeNotesDialog::Presenter::ShowModal(ra::ui::WindowViewModelBase& vmViewModel, HWND hParentWnd) +void MemoryNotesDialog::Presenter::ShowModal(ra::ui::WindowViewModelBase& vmViewModel, HWND hParentWnd) { - auto* vmCodeNotes = dynamic_cast(&vmViewModel); - Expects(vmCodeNotes != nullptr); + auto* vmMemoryNotes = dynamic_cast(&vmViewModel); + Expects(vmMemoryNotes != nullptr); - CodeNotesDialog oDialog(*vmCodeNotes); + MemoryNotesDialog oDialog(*vmMemoryNotes); oDialog.CreateModalWindow(MAKEINTRESOURCE(IDD_RA_CODENOTES), this, hParentWnd); } -void CodeNotesDialog::Presenter::ShowWindow(ra::ui::WindowViewModelBase& vmViewModel) +void MemoryNotesDialog::Presenter::ShowWindow(ra::ui::WindowViewModelBase& vmViewModel) { - auto* vmCodeNotes = dynamic_cast(&vmViewModel); - Expects(vmCodeNotes != nullptr); + auto* vmMemoryNotes = dynamic_cast(&vmViewModel); + Expects(vmMemoryNotes != nullptr); if (m_pDialog == nullptr) { - m_pDialog.reset(new CodeNotesDialog(*vmCodeNotes)); + m_pDialog.reset(new MemoryNotesDialog(*vmMemoryNotes)); if (!m_pDialog->CreateDialogWindow(MAKEINTRESOURCE(IDD_RA_CODENOTES), this)) - RA_LOG_ERR("Could not create Code Notes dialog!"); + RA_LOG_ERR("Could not create Memory Notes dialog!"); } m_pDialog->ShowDialogWindow(); } -void CodeNotesDialog::Presenter::OnClosed() noexcept { m_pDialog.reset(); } +void MemoryNotesDialog::Presenter::OnClosed() noexcept { m_pDialog.reset(); } // ------------------------------------ -CodeNotesDialog::CodeNotesGridBinding::CodeNotesGridBinding(ViewModelBase& vmViewModel) +MemoryNotesDialog::MemoryNotesGridBinding::MemoryNotesGridBinding(ViewModelBase& vmViewModel) : ra::ui::win32::bindings::MultiLineGridBinding(vmViewModel) { auto& pMemoryContext = ra::services::ServiceLocator::GetMutable(); pMemoryContext.AddNotifyTarget(*this); } -CodeNotesDialog::CodeNotesGridBinding::~CodeNotesGridBinding() +MemoryNotesDialog::MemoryNotesGridBinding::~MemoryNotesGridBinding() { if (ra::services::ServiceLocator::Exists()) { @@ -68,7 +68,7 @@ CodeNotesDialog::CodeNotesGridBinding::~CodeNotesGridBinding() } } -void CodeNotesDialog::CodeNotesGridBinding::OnTotalMemorySizeChanged() +void MemoryNotesDialog::MemoryNotesGridBinding::OnTotalMemorySizeChanged() { for (gsl::index nIndex = 0; nIndex < gsl::narrow_cast(m_vColumns.size()); ++nIndex) { @@ -86,56 +86,56 @@ void CodeNotesDialog::CodeNotesGridBinding::OnTotalMemorySizeChanged() // ------------------------------------ -CodeNotesDialog::CodeNotesDialog(CodeNotesViewModel& vmCodeNotes) - : DialogBase(vmCodeNotes), - m_bindNotes(vmCodeNotes), - m_bindFilterValue(vmCodeNotes), - m_bindUnpublished(vmCodeNotes) +MemoryNotesDialog::MemoryNotesDialog(MemoryNotesViewModel& vmMemoryNotes) + : DialogBase(vmMemoryNotes), + m_bindNotes(vmMemoryNotes), + m_bindFilterValue(vmMemoryNotes), + m_bindUnpublished(vmMemoryNotes) { m_bindWindow.SetInitialPosition(RelativePosition::After, RelativePosition::Near, "Code Notes"); - m_bindFilterValue.BindText(CodeNotesViewModel::FilterValueProperty); + m_bindFilterValue.BindText(MemoryNotesViewModel::FilterValueProperty); m_bindFilterValue.BindKey(VK_RETURN, [this]() { m_bindFilterValue.UpdateSource(); - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - vmCodeNotes->ApplyFilter(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + vmMemoryNotes->ApplyFilter(); return true; }); m_bindFilterValue.BindKey(VK_ESCAPE, [this]() { - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - vmCodeNotes->SetFilterValue(L""); - vmCodeNotes->ResetFilter(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + vmMemoryNotes->SetFilterValue(L""); + vmMemoryNotes->ResetFilter(); return true; }); - m_bindUnpublished.BindCheck(CodeNotesViewModel::OnlyUnpublishedFilterProperty); + m_bindUnpublished.BindCheck(MemoryNotesViewModel::OnlyUnpublishedFilterProperty); - m_bindWindow.BindLabel(IDC_RA_RESULT_COUNT, CodeNotesViewModel::ResultCountProperty); + m_bindWindow.BindLabel(IDC_RA_RESULT_COUNT, MemoryNotesViewModel::ResultCountProperty); auto pAddressColumn = std::make_unique( - CodeNotesViewModel::CodeNoteViewModel::LabelProperty); + MemoryNotesViewModel::MemoryNoteViewModel::LabelProperty); pAddressColumn->SetHeader(L"Address"); pAddressColumn->SetWidth(GridColumnBinding::WidthType::Pixels, ra::ui::win32::bindings::GridAddressColumnBinding::CalculateWidth() + 12); - pAddressColumn->SetTextColorProperty(CodeNotesViewModel::CodeNoteViewModel::BookmarkColorProperty); + pAddressColumn->SetTextColorProperty(MemoryNotesViewModel::MemoryNoteViewModel::BookmarkColorProperty); m_bindNotes.BindColumn(0, std::move(pAddressColumn)); auto pDescriptionColumn = std::make_unique( - CodeNotesViewModel::CodeNoteViewModel::NoteProperty); + MemoryNotesViewModel::MemoryNoteViewModel::NoteProperty); pDescriptionColumn->SetHeader(L"Note"); pDescriptionColumn->SetWidth(GridColumnBinding::WidthType::Fill, 40); - pDescriptionColumn->SetTextColorProperty(CodeNotesViewModel::CodeNoteViewModel::BookmarkColorProperty); + pDescriptionColumn->SetTextColorProperty(MemoryNotesViewModel::MemoryNoteViewModel::BookmarkColorProperty); m_bindNotes.BindColumn(1, std::move(pDescriptionColumn)); - m_bindNotes.BindItems(vmCodeNotes.Notes()); - m_bindNotes.BindIsSelected(CodeNotesViewModel::CodeNoteViewModel::IsSelectedProperty); + m_bindNotes.BindItems(vmMemoryNotes.Notes()); + m_bindNotes.BindIsSelected(MemoryNotesViewModel::MemoryNoteViewModel::IsSelectedProperty); m_bindNotes.SetDoubleClickHandler([this](gsl::index nIndex) { - const auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - const auto* pItem = vmCodeNotes->Notes().GetItemAt(nIndex); + const auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + const auto* pItem = vmMemoryNotes->Notes().GetItemAt(nIndex); if (pItem) { auto& pMemoryInspector = ra::services::ServiceLocator::GetMutable().MemoryInspector; @@ -146,8 +146,8 @@ CodeNotesDialog::CodeNotesDialog(CodeNotesViewModel& vmCodeNotes) } }); - m_bindWindow.BindEnabled(IDC_RA_PUBLISH_NOTE, CodeNotesViewModel::CanPublishCurrentAddressNoteProperty); - m_bindWindow.BindEnabled(IDC_RA_REVERT_NOTE, CodeNotesViewModel::CanRevertCurrentAddressNoteProperty); + m_bindWindow.BindEnabled(IDC_RA_PUBLISH_NOTE, MemoryNotesViewModel::CanPublishCurrentAddressNoteProperty); + m_bindWindow.BindEnabled(IDC_RA_REVERT_NOTE, MemoryNotesViewModel::CanRevertCurrentAddressNoteProperty); using namespace ra::bitwise_ops; SetAnchor(IDC_RA_FILTER_VALUE, Anchor::Top | Anchor::Left | Anchor::Right); @@ -163,16 +163,16 @@ CodeNotesDialog::CodeNotesDialog(CodeNotesViewModel& vmCodeNotes) SetMinimumSize(327, 200); } -BOOL CodeNotesDialog::OnInitDialog() +BOOL MemoryNotesDialog::OnInitDialog() { m_bindNotes.SetControl(*this, IDC_RA_LBX_ADDRESSES); m_bindFilterValue.SetControl(*this, IDC_RA_FILTER_VALUE); m_bindUnpublished.SetControl(*this, IDC_RA_CHK_UNPUBLISHED); - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - for (gsl::index nIndex = 0; nIndex < gsl::narrow_cast(vmCodeNotes->Notes().Count()); ++nIndex) + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + for (gsl::index nIndex = 0; nIndex < gsl::narrow_cast(vmMemoryNotes->Notes().Count()); ++nIndex) { - auto* pItem = vmCodeNotes->Notes().GetItemAt(nIndex); + auto* pItem = vmMemoryNotes->Notes().GetItemAt(nIndex); if (pItem && pItem->IsSelected()) { m_bindNotes.EnsureVisible(nIndex); @@ -184,15 +184,15 @@ BOOL CodeNotesDialog::OnInitDialog() } -BOOL CodeNotesDialog::OnCommand(WORD nCommand) +BOOL MemoryNotesDialog::OnCommand(WORD nCommand) { switch (nCommand) { case IDC_RA_RESET_FILTER: { - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - if (vmCodeNotes) - vmCodeNotes->ResetFilter(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + if (vmMemoryNotes) + vmMemoryNotes->ResetFilter(); return TRUE; } @@ -200,36 +200,36 @@ BOOL CodeNotesDialog::OnCommand(WORD nCommand) case IDOK: // this dialog doesn't have an OK button. if the user pressed Enter, apply the current filter case IDC_RA_APPLY_FILTER: { - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - if (vmCodeNotes) - vmCodeNotes->ApplyFilter(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + if (vmMemoryNotes) + vmMemoryNotes->ApplyFilter(); return TRUE; } case IDC_RA_ADDBOOKMARK: { - const auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - if (vmCodeNotes) - vmCodeNotes->BookmarkSelected(); + const auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + if (vmMemoryNotes) + vmMemoryNotes->BookmarkSelected(); return TRUE; } case IDC_RA_PUBLISH_NOTE: { - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - if (vmCodeNotes) - vmCodeNotes->PublishSelected(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + if (vmMemoryNotes) + vmMemoryNotes->PublishSelected(); return TRUE; } case IDC_RA_REVERT_NOTE: { - auto* vmCodeNotes = dynamic_cast(&m_vmWindow); - if (vmCodeNotes) - vmCodeNotes->RevertSelected(); + auto* vmMemoryNotes = dynamic_cast(&m_vmWindow); + if (vmMemoryNotes) + vmMemoryNotes->RevertSelected(); return TRUE; } diff --git a/src/ui/win32/MemoryNotesDialog.hh b/src/ui/win32/MemoryNotesDialog.hh new file mode 100644 index 000000000..88f0ff015 --- /dev/null +++ b/src/ui/win32/MemoryNotesDialog.hh @@ -0,0 +1,71 @@ +#ifndef RA_UI_WIN32_DLG_MEMORYNOTES_H +#define RA_UI_WIN32_DLG_MEMORYNOTES_H +#pragma once + +#include "context/IEmulatorMemoryContext.hh" + +#include "ui/viewmodels/MemoryNotesViewModel.hh" + +#include "ui/win32/bindings/CheckBoxBinding.hh" +#include "ui/win32/bindings/MultiLineGridBinding.hh" +#include "ui/win32/bindings/TextBoxBinding.hh" + +#include "ui/win32/DialogBase.hh" +#include "ui/win32/IDialogPresenter.hh" + +namespace ra { +namespace ui { +namespace win32 { + +class MemoryNotesDialog : public DialogBase +{ +public: + explicit MemoryNotesDialog(ra::ui::viewmodels::MemoryNotesViewModel& vmMemoryBookmarks); + virtual ~MemoryNotesDialog() noexcept = default; + MemoryNotesDialog(const MemoryNotesDialog&) noexcept = delete; + MemoryNotesDialog& operator=(const MemoryNotesDialog&) noexcept = delete; + MemoryNotesDialog(MemoryNotesDialog&&) noexcept = delete; + MemoryNotesDialog& operator=(MemoryNotesDialog&&) noexcept = delete; + + class Presenter : public IClosableDialogPresenter + { + public: + bool IsSupported(const ra::ui::WindowViewModelBase& viewModel) noexcept override; + void ShowWindow(ra::ui::WindowViewModelBase& viewModel) override; + void ShowModal(ra::ui::WindowViewModelBase& viewModel, HWND hParentWnd) override; + void OnClosed() noexcept override; + + private: + std::unique_ptr m_pDialog; + }; + +protected: + BOOL OnInitDialog() override; + BOOL OnCommand(WORD nCommand) override; + +private: + class MemoryNotesGridBinding : public ra::ui::win32::bindings::MultiLineGridBinding, + protected ra::context::IEmulatorMemoryContext::NotifyTarget + { + public: + explicit MemoryNotesGridBinding(ViewModelBase& vmViewModel); + GSL_SUPPRESS_F6 ~MemoryNotesGridBinding(); + MemoryNotesGridBinding(const MemoryNotesGridBinding&) noexcept = delete; + MemoryNotesGridBinding& operator=(const MemoryNotesGridBinding&) noexcept = delete; + MemoryNotesGridBinding(MemoryNotesGridBinding&&) noexcept = delete; + MemoryNotesGridBinding& operator=(MemoryNotesGridBinding&&) noexcept = delete; + + protected: + void OnTotalMemorySizeChanged() override; + }; + + MemoryNotesGridBinding m_bindNotes; + ra::ui::win32::bindings::TextBoxBinding m_bindFilterValue; + ra::ui::win32::bindings::CheckBoxBinding m_bindUnpublished; +}; + +} // namespace win32 +} // namespace ui +} // namespace ra + +#endif // !RA_UI_WIN32_DLG_MEMORYNOTES_H diff --git a/src/ui/win32/MemoryRegionsDialog.cpp b/src/ui/win32/MemoryRegionsDialog.cpp index cbb3e6303..c58131e50 100644 --- a/src/ui/win32/MemoryRegionsDialog.cpp +++ b/src/ui/win32/MemoryRegionsDialog.cpp @@ -42,7 +42,7 @@ void MemoryRegionsDialog::Presenter::ShowWindow(ra::ui::WindowViewModelBase& vmV { m_pDialog.reset(new MemoryRegionsDialog(*vmMemoryRegions)); if (!m_pDialog->CreateDialogWindow(MAKEINTRESOURCE(IDD_RA_MEMORYREGIONS), this)) - RA_LOG_ERR("Could not create Code Notes dialog!"); + RA_LOG_ERR("Could not create Memory Regions dialog!"); } m_pDialog->ShowDialogWindow(); diff --git a/tests/Exports_Tests.cpp b/tests/Exports_Tests.cpp index 109098f8e..092a56c44 100644 --- a/tests/Exports_Tests.cpp +++ b/tests/Exports_Tests.cpp @@ -490,7 +490,7 @@ TEST_CLASS(Exports_Tests) AssertMenuItem(&menu[10], IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); AssertMenuItem(&menu[11], IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); AssertMenuItem(&menu[12], IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - AssertMenuItem(&menu[13], IDM_RA_FILES_CODENOTES, L"Code &Notes"); + AssertMenuItem(&menu[13], IDM_RA_FILES_CODENOTES, L"Memory &Notes"); AssertMenuItem(&menu[14], IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); AssertMenuItem(&menu[15], 0, nullptr); AssertMenuItem(&menu[16], IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -521,7 +521,7 @@ TEST_CLASS(Exports_Tests) AssertMenuItem(&menu[13], IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); AssertMenuItem(&menu[14], IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); AssertMenuItem(&menu[15], IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - AssertMenuItem(&menu[16], IDM_RA_FILES_CODENOTES, L"Code &Notes"); + AssertMenuItem(&menu[16], IDM_RA_FILES_CODENOTES, L"Memory &Notes"); AssertMenuItem(&menu[17], IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); AssertMenuItem(&menu[18], 0, nullptr); AssertMenuItem(&menu[19], IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -558,7 +558,7 @@ TEST_CLASS(Exports_Tests) AssertMenuItem(&menu[13], IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); AssertMenuItem(&menu[14], IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); AssertMenuItem(&menu[15], IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - AssertMenuItem(&menu[16], IDM_RA_FILES_CODENOTES, L"Code &Notes"); + AssertMenuItem(&menu[16], IDM_RA_FILES_CODENOTES, L"Memory &Notes"); AssertMenuItem(&menu[17], IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); AssertMenuItem(&menu[18], 0, nullptr); AssertMenuItem(&menu[19], IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); diff --git a/tests/RA_Integration.Tests.vcxproj b/tests/RA_Integration.Tests.vcxproj index 6990dfef2..6cb8fafbc 100644 --- a/tests/RA_Integration.Tests.vcxproj +++ b/tests/RA_Integration.Tests.vcxproj @@ -112,13 +112,13 @@ - + @@ -184,7 +184,7 @@ - + diff --git a/tests/RA_Integration.Tests.vcxproj.filters b/tests/RA_Integration.Tests.vcxproj.filters index bd13d8530..775cb6619 100644 --- a/tests/RA_Integration.Tests.vcxproj.filters +++ b/tests/RA_Integration.Tests.vcxproj.filters @@ -243,16 +243,13 @@ Code - - Code - Tests\UI\ViewModels Code - + Tests\UI\ViewModels @@ -441,6 +438,9 @@ Code + + Code + diff --git a/tests/data/context/EmulatorContext_Tests.cpp b/tests/data/context/EmulatorContext_Tests.cpp index 949c960e1..fb9355213 100644 --- a/tests/data/context/EmulatorContext_Tests.cpp +++ b/tests/data/context/EmulatorContext_Tests.cpp @@ -1064,14 +1064,14 @@ TEST_CLASS(EmulatorContext_Tests) emulator.mockWindowManager.AssetEditor.Show(); emulator.mockWindowManager.MemoryBookmarks.Show(); emulator.mockWindowManager.MemoryInspector.Show(); - emulator.mockWindowManager.CodeNotes.Show(); + emulator.mockWindowManager.MemoryNotes.Show(); Assert::IsTrue(emulator.mockWindowManager.RichPresenceMonitor.IsVisible()); Assert::IsTrue(emulator.mockWindowManager.AssetList.IsVisible()); Assert::IsTrue(emulator.mockWindowManager.AssetEditor.IsVisible()); Assert::IsTrue(emulator.mockWindowManager.MemoryBookmarks.IsVisible()); Assert::IsTrue(emulator.mockWindowManager.MemoryInspector.IsVisible()); - Assert::IsTrue(emulator.mockWindowManager.CodeNotes.IsVisible()); + Assert::IsTrue(emulator.mockWindowManager.MemoryNotes.IsVisible()); Assert::IsTrue(emulator.EnableHardcoreMode()); @@ -1081,7 +1081,7 @@ TEST_CLASS(EmulatorContext_Tests) Assert::IsFalse(emulator.mockWindowManager.AssetEditor.IsVisible()); Assert::IsFalse(emulator.mockWindowManager.MemoryBookmarks.IsVisible()); Assert::IsFalse(emulator.mockWindowManager.MemoryInspector.IsVisible()); - Assert::IsFalse(emulator.mockWindowManager.CodeNotes.IsVisible()); + Assert::IsFalse(emulator.mockWindowManager.MemoryNotes.IsVisible()); } TEST_METHOD(TestGetAppTitleDefault) diff --git a/tests/data/context/GameContext_Tests.cpp b/tests/data/context/GameContext_Tests.cpp index b44572696..657543638 100644 --- a/tests/data/context/GameContext_Tests.cpp +++ b/tests/data/context/GameContext_Tests.cpp @@ -219,10 +219,10 @@ TEST_CLASS(GameContext_Tests) public: bool GetActiveGameChanged() const noexcept { return m_bActiveGameChanged; } - const std::wstring* GetNewCodeNote(ra::data::ByteAddress nAddress) + const std::wstring* GetNewMemoryNote(ra::data::ByteAddress nAddress) { - const auto pIter = m_vCodeNotesChanged.find(nAddress); - if (pIter != m_vCodeNotesChanged.end()) + const auto pIter = m_vNotesChanged.find(nAddress); + if (pIter != m_vNotesChanged.end()) return &pIter->second; return nullptr; @@ -232,17 +232,17 @@ TEST_CLASS(GameContext_Tests) void OnActiveGameChanged() noexcept override { m_bActiveGameChanged = true; - m_vCodeNotesChanged.clear(); + m_vNotesChanged.clear(); } - void OnCodeNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override + void OnMemoryNoteChanged(ra::data::ByteAddress nAddress, const std::wstring& sNewNote) override { - m_vCodeNotesChanged.insert_or_assign(nAddress, sNewNote); + m_vNotesChanged.insert_or_assign(nAddress, sNewNote); } private: bool m_bActiveGameChanged = false; - std::map m_vCodeNotesChanged; + std::map m_vNotesChanged; }; TEST_METHOD(TestLoadGameTitle) diff --git a/tests/data/models/TriggerValidation_Tests.cpp b/tests/data/models/TriggerValidation_Tests.cpp index 9338252b9..77982925f 100644 --- a/tests/data/models/TriggerValidation_Tests.cpp +++ b/tests/data/models/TriggerValidation_Tests.cpp @@ -192,18 +192,18 @@ TEST_CLASS(TriggerValidation_Tests) AssertLeaderboardValidation("O:0xH1234<99_0x2345<50", L""); } - TEST_METHOD(TestCodeNoteSizeComparisons) + TEST_METHOD(TestMemoryNoteSizeComparisons) { ra::context::mocks::MockUserContext mockUserContext; ra::data::context::mocks::MockGameContext mockGameContext; ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; - mockGameContext.SetCodeNote(0x0008, L"[8-bit] Byte address"); - mockGameContext.SetCodeNote(0x0010, L"[16-bit] Word address"); - mockGameContext.SetCodeNote(0x0018, L"[24-bit] TByte address"); - mockGameContext.SetCodeNote(0x0020, L"[32-bit] DWord address"); - mockGameContext.SetCodeNote(0x0028, L"Unsized Byte address"); - mockGameContext.SetCodeNote(0x0030, L"[16-bit BE] BE Word address"); - mockGameContext.SetCodeNote(0x0040, L"[40-bytes] array of words"); + mockGameContext.SetNote(0x0008, L"[8-bit] Byte address"); + mockGameContext.SetNote(0x0010, L"[16-bit] Word address"); + mockGameContext.SetNote(0x0018, L"[24-bit] TByte address"); + mockGameContext.SetNote(0x0020, L"[32-bit] DWord address"); + mockGameContext.SetNote(0x0028, L"Unsized Byte address"); + mockGameContext.SetNote(0x0030, L"[16-bit BE] BE Word address"); + mockGameContext.SetNote(0x0040, L"[40-bytes] array of words"); // valid reads AssertValidation("0xH0008>8", L""); @@ -214,23 +214,23 @@ TEST_CLASS(TriggerValidation_Tests) AssertValidation("0xI0030>8", L""); // size mismatch - AssertValidation("0xH0001>8", L"Condition 1: No code note for address 0001"); - AssertValidation("0xH0010>8", L"Condition 1: 8-bit read of address 0010 differs from code note size 16-bit"); - AssertValidation("0x 0030>8", L"Condition 1: 16-bit read of address 0030 differs from code note size 16-bit BE"); - AssertValidation("0x 0010>0x 0008", L"Condition 1: 16-bit read of address 0008 differs from code note size 8-bit"); - AssertValidation("0x 0028>8", L"Condition 1: 16-bit read of address 0028 differs from implied code note size 8-bit"); + AssertValidation("0xH0001>8", L"Condition 1: No memory note for address 0001"); + AssertValidation("0xH0010>8", L"Condition 1: 8-bit read of address 0010 differs from memory note size 16-bit"); + AssertValidation("0x 0030>8", L"Condition 1: 16-bit read of address 0030 differs from memory note size 16-bit BE"); + AssertValidation("0x 0010>0x 0008", L"Condition 1: 16-bit read of address 0008 differs from memory note size 8-bit"); + AssertValidation("0x 0028>8", L"Condition 1: 16-bit read of address 0028 differs from implied memory note size 8-bit"); // bit sizes only require a note exist AssertValidation("0xN0008=1", L""); AssertValidation("0xS0018=1", L""); AssertValidation("0xK0020=1", L""); AssertValidation("0xR0028=1", L""); - AssertValidation("0xN0004=1", L"Condition 1: No code note for address 0004"); - AssertValidation("0xK0004=1", L"Condition 1: No code note for address 0004"); + AssertValidation("0xN0004=1", L"Condition 1: No memory note for address 0004"); + AssertValidation("0xK0004=1", L"Condition 1: No memory note for address 0004"); // sub-note addresses - AssertValidation("0xH0009>8", L"Condition 1: No code note for address 0009"); - AssertValidation("0xH0011>8", L"Condition 1: 8-bit read of address 0011 differs from code note size 16-bit at 0010"); + AssertValidation("0xH0009>8", L"Condition 1: No memory note for address 0009"); + AssertValidation("0xH0011>8", L"Condition 1: 8-bit read of address 0011 differs from memory note size 16-bit at 0010"); AssertValidation("0xH0040>8", L""); // start of array AssertValidation("0xH0052>8", L""); // in array diff --git a/tests/devkit/RADevKit.Tests.vcxproj b/tests/devkit/RADevKit.Tests.vcxproj index e35c703ba..83baa7e67 100644 --- a/tests/devkit/RADevKit.Tests.vcxproj +++ b/tests/devkit/RADevKit.Tests.vcxproj @@ -70,7 +70,7 @@ - + @@ -87,7 +87,7 @@ - + diff --git a/tests/devkit/RADevKit.Tests.vcxproj.filters b/tests/devkit/RADevKit.Tests.vcxproj.filters index 08e1d12b1..dbc691c60 100644 --- a/tests/devkit/RADevKit.Tests.vcxproj.filters +++ b/tests/devkit/RADevKit.Tests.vcxproj.filters @@ -43,7 +43,7 @@ data\models - + data\models @@ -58,7 +58,7 @@ data - + data\models diff --git a/tests/devkit/context/impl/RcClient_Tests.cpp b/tests/devkit/context/impl/RcClient_Tests.cpp index 3f258ebc0..bb6e215b4 100644 --- a/tests/devkit/context/impl/RcClient_Tests.cpp +++ b/tests/devkit/context/impl/RcClient_Tests.cpp @@ -115,7 +115,7 @@ TEST_CLASS(RcClient_Tests) // cached file contains only the notes array, but is not normalized (or unescaped) std::string sPatchData = "[{\"User\":\"Username\",\"Address\":\"0x00f304\",\"Note\":\"Line1\\nLine2\\r\\nLine3\\n\"}]"; - Assert::AreEqual(sPatchData, client.mockLocalStorage.GetStoredData(ra::services::StorageItemType::CodeNotes, L"1234")); + Assert::AreEqual(sPatchData, client.mockLocalStorage.GetStoredData(ra::services::StorageItemType::MemoryNotes, L"1234")); } TEST_METHOD(TestLoggingRedactToken) diff --git a/tests/devkit/data/models/CodeNoteModel_Tests.cpp b/tests/devkit/data/models/MemoryNoteModel_Tests.cpp similarity index 80% rename from tests/devkit/data/models/CodeNoteModel_Tests.cpp rename to tests/devkit/data/models/MemoryNoteModel_Tests.cpp index f4f2bcfc6..9c54b85d3 100644 --- a/tests/devkit/data/models/CodeNoteModel_Tests.cpp +++ b/tests/devkit/data/models/MemoryNoteModel_Tests.cpp @@ -1,4 +1,4 @@ -#include "data/models/CodeNoteModel.hh" +#include "data/models/MemoryNoteModel.hh" #include "tests/devkit/context/mocks/MockConsoleContext.hh" #include "tests/devkit/context/mocks/MockEmulatorMemoryContext.hh" @@ -14,34 +14,34 @@ namespace data { namespace models { namespace tests { -TEST_CLASS(CodeNoteModel_Tests) +TEST_CLASS(MemoryNoteModel_Tests) { private: - class CodeNoteModelHarness : public CodeNoteModel + class MemoryNoteModelHarness : public MemoryNoteModel { public: ra::context::mocks::MockConsoleContext mockConsoleContext; ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; }; - void TestCodeNoteSize(const std::wstring& sNote, unsigned int nExpectedBytes, Memory::Size nExpectedSize) + void TestNoteSize(const std::wstring& sNote, unsigned int nExpectedBytes, Memory::Size nExpectedSize) { - CodeNoteModel note; + MemoryNoteModel note; note.SetNote(sNote); Assert::AreEqual(nExpectedBytes, note.GetBytes(), sNote.c_str()); Assert::AreEqual(nExpectedSize, note.GetMemSize(), sNote.c_str()); } - void TestCodeNoteFormat(const std::wstring& sNote, Memory::Format nExpectedFormat) + void TestNoteFormat(const std::wstring& sNote, Memory::Format nExpectedFormat) { - CodeNoteModel note; + MemoryNoteModel note; note.SetNote(sNote); Assert::AreEqual(nExpectedFormat, note.GetDefaultMemFormat(), sNote.c_str()); } - const CodeNoteModel& AssertIndirectNote(const CodeNoteModel& note, unsigned int nOffset, + const MemoryNoteModel& AssertIndirectNote(const MemoryNoteModel& note, unsigned int nOffset, const std::wstring& sExpectedNote, Memory::Size nExpectedSize, unsigned int nExpectedBytes) { const auto* offsetNote = note.GetPointerNoteAtOffset(nOffset); @@ -59,133 +59,133 @@ TEST_CLASS(CodeNoteModel_Tests) public: TEST_METHOD(TestExtractSize) { - TestCodeNoteSize(L"", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"Test", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"16-bit Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Test 16-bit", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Test 16-bi", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[16-bit] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[16 bit] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[16 Bit] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[16-bit BCD] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[24-bit] Test", 3U, Memory::Size::TwentyFourBit); - TestCodeNoteSize(L"[32-bit] Test", 4U, Memory::Size::ThirtyTwoBit); - TestCodeNoteSize(L"[32 bit] Test", 4U, Memory::Size::ThirtyTwoBit); - TestCodeNoteSize(L"[32bit] Test", 4U, Memory::Size::ThirtyTwoBit); - TestCodeNoteSize(L"Test [16-bit]", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Test (16-bit)", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Test (16 bits)", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[64-bit] Test", 8U, Memory::Size::Array); - TestCodeNoteSize(L"[128-bit] Test", 16U, Memory::Size::Array); - TestCodeNoteSize(L"[17-bit] Test", 3U, Memory::Size::TwentyFourBit); - TestCodeNoteSize(L"[100-bit] Test", 13U, Memory::Size::Array); - TestCodeNoteSize(L"[0-bit] Test", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[1-bit] Test", 1U, Memory::Size::EightBit); - TestCodeNoteSize(L"[4-bit] Test", 1U, Memory::Size::EightBit); - TestCodeNoteSize(L"[8-bit] Test", 1U, Memory::Size::EightBit); - TestCodeNoteSize(L"[9-bit] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"bit", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"9bit", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"-bit", 1U, Memory::Size::Unknown); - - TestCodeNoteSize(L"[16-bit BE] Test", 2U, Memory::Size::SixteenBitBigEndian); - TestCodeNoteSize(L"[24-bit BE] Test", 3U, Memory::Size::TwentyFourBitBigEndian); - TestCodeNoteSize(L"[32-bit BE] Test", 4U, Memory::Size::ThirtyTwoBitBigEndian); - TestCodeNoteSize(L"Test [32-bit BE]", 4U, Memory::Size::ThirtyTwoBitBigEndian); - TestCodeNoteSize(L"Test (32-bit BE)", 4U, Memory::Size::ThirtyTwoBitBigEndian); - TestCodeNoteSize(L"Test 32-bit BE", 4U, Memory::Size::ThirtyTwoBitBigEndian); - TestCodeNoteSize(L"[16-bit BigEndian] Test", 2U, Memory::Size::SixteenBitBigEndian); - TestCodeNoteSize(L"[16-bit-BE] Test", 2U, Memory::Size::SixteenBitBigEndian); - TestCodeNoteSize(L"[4-bit BE] Test", 1U, Memory::Size::EightBit); - TestCodeNoteSize(L"[US] Test [32-bit BE]", 4U, Memory::Size::ThirtyTwoBitBigEndian); - - TestCodeNoteSize(L"8 BYTE Test", 8U, Memory::Size::Array); - TestCodeNoteSize(L"Test 8 BYTE", 8U, Memory::Size::Array); - TestCodeNoteSize(L"Test 8 BYT", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[2 Byte] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[4 Byte] Test", 4U, Memory::Size::ThirtyTwoBit); - TestCodeNoteSize(L"[4 Byte - Float] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"[Float - 4 Byte] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"[32-bit Float] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"[Float 32-bit] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"[8 Byte] Test", 8U, Memory::Size::Array); - TestCodeNoteSize(L"[0x80 Bytes] Test", 128U, Memory::Size::Array); - TestCodeNoteSize(L"[0xa8 bytes] Test", 168U, Memory::Size::Array); - TestCodeNoteSize(L"Test [0xE Bytes]", 14U, Memory::Size::Array); - TestCodeNoteSize(L"Test [0xET Bytes]", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"Test [0xE.3 Bytes]", 3U, Memory::Size::TwentyFourBit); - TestCodeNoteSize(L"[2 byte] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[2-byte] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Test (6 bytes)", 6U, Memory::Size::Array); - TestCodeNoteSize(L"[2byte] Test", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[100 Bytes] Test", 100U, Memory::Size::Array); - - TestCodeNoteSize(L"[float] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"[float32] Test", 4U, Memory::Size::Float); - TestCodeNoteSize(L"Test float", 4U, Memory::Size::Float); - TestCodeNoteSize(L"Test floa", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"is floating", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"has floated", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"16-afloat", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[float be] Test", 4U, Memory::Size::FloatBigEndian); - TestCodeNoteSize(L"[float bigendian] Test", 4U, Memory::Size::FloatBigEndian); - TestCodeNoteSize(L"[be float] Test", 4U, Memory::Size::FloatBigEndian); - TestCodeNoteSize(L"[bigendian float] Test", 4U, Memory::Size::FloatBigEndian); - TestCodeNoteSize(L"[32-bit] pointer to float", 4U, Memory::Size::ThirtyTwoBit); - TestCodeNoteSize(L"[8-bit] can double down", 1U, Memory::Size::EightBit); - - TestCodeNoteSize(L"[64-bit double] Test", 8U, Memory::Size::Double32); - TestCodeNoteSize(L"[64-bit double BE] Test", 8U, Memory::Size::Double32BigEndian); - TestCodeNoteSize(L"[double] Test", 8U, Memory::Size::Double32); - TestCodeNoteSize(L"[double BE] Test", 8U, Memory::Size::Double32BigEndian); - TestCodeNoteSize(L"[double32] Test", 4U, Memory::Size::Double32); - TestCodeNoteSize(L"[double32 BE] Test", 4U, Memory::Size::Double32BigEndian); - TestCodeNoteSize(L"[double64] Test", 8U, Memory::Size::Double32); - - TestCodeNoteSize(L"[MBF32] Test", 4U, Memory::Size::MBF32); - TestCodeNoteSize(L"[MBF40] Test", 5U, Memory::Size::MBF32); - TestCodeNoteSize(L"[MBF32 float] Test", 4U, Memory::Size::MBF32); - TestCodeNoteSize(L"[MBF80] Test", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[MBF320] Test", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"[MBF-32] Test", 4U, Memory::Size::MBF32); - TestCodeNoteSize(L"[32-bit MBF] Test", 4U, Memory::Size::MBF32); - TestCodeNoteSize(L"[40-bit MBF] Test", 5U, Memory::Size::MBF32); - TestCodeNoteSize(L"[MBF] Test", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"Test MBF32", 4U, Memory::Size::MBF32); - TestCodeNoteSize(L"[MBF32 LE] Test", 4U, Memory::Size::MBF32LE); - TestCodeNoteSize(L"[MBF40-LE] Test", 5U, Memory::Size::MBF32LE); - - TestCodeNoteSize(L"42=bitten", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"42-bitten", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"bit by bit", 1U, Memory::Size::Unknown); - TestCodeNoteSize(L"bit1=chest", 1U, Memory::Size::Unknown); - - TestCodeNoteSize(L"Bite count (16-bit)", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"Number of bits collected (32 bits)", 4U, Memory::Size::ThirtyTwoBit); - - TestCodeNoteSize(L"100 32-bit pointers [400 bytes]", 400U, Memory::Size::Array); - TestCodeNoteSize(L"[400 bytes] 100 32-bit pointers", 400U, Memory::Size::Array); - - TestCodeNoteSize(L"[NTSCU]\r\n[16-bit] Test\r\n", 2U, Memory::Size::SixteenBit); - TestCodeNoteSize(L"[24-bit]\r\nIt's really 32-bit, but the top byte will never be non-zero\r\n", 3U, Memory::Size::TwentyFourBit); - - TestCodeNoteSize(L"[13-bytes ASCII] Character Name", 13U, Memory::Size::Text); + TestNoteSize(L"", 1U, Memory::Size::Unknown); + TestNoteSize(L"Test", 1U, Memory::Size::Unknown); + TestNoteSize(L"16-bit Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Test 16-bit", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Test 16-bi", 1U, Memory::Size::Unknown); + TestNoteSize(L"[16-bit] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[16 bit] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[16 Bit] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[16-bit BCD] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[24-bit] Test", 3U, Memory::Size::TwentyFourBit); + TestNoteSize(L"[32-bit] Test", 4U, Memory::Size::ThirtyTwoBit); + TestNoteSize(L"[32 bit] Test", 4U, Memory::Size::ThirtyTwoBit); + TestNoteSize(L"[32bit] Test", 4U, Memory::Size::ThirtyTwoBit); + TestNoteSize(L"Test [16-bit]", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Test (16-bit)", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Test (16 bits)", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[64-bit] Test", 8U, Memory::Size::Array); + TestNoteSize(L"[128-bit] Test", 16U, Memory::Size::Array); + TestNoteSize(L"[17-bit] Test", 3U, Memory::Size::TwentyFourBit); + TestNoteSize(L"[100-bit] Test", 13U, Memory::Size::Array); + TestNoteSize(L"[0-bit] Test", 1U, Memory::Size::Unknown); + TestNoteSize(L"[1-bit] Test", 1U, Memory::Size::EightBit); + TestNoteSize(L"[4-bit] Test", 1U, Memory::Size::EightBit); + TestNoteSize(L"[8-bit] Test", 1U, Memory::Size::EightBit); + TestNoteSize(L"[9-bit] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"bit", 1U, Memory::Size::Unknown); + TestNoteSize(L"9bit", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"-bit", 1U, Memory::Size::Unknown); + + TestNoteSize(L"[16-bit BE] Test", 2U, Memory::Size::SixteenBitBigEndian); + TestNoteSize(L"[24-bit BE] Test", 3U, Memory::Size::TwentyFourBitBigEndian); + TestNoteSize(L"[32-bit BE] Test", 4U, Memory::Size::ThirtyTwoBitBigEndian); + TestNoteSize(L"Test [32-bit BE]", 4U, Memory::Size::ThirtyTwoBitBigEndian); + TestNoteSize(L"Test (32-bit BE)", 4U, Memory::Size::ThirtyTwoBitBigEndian); + TestNoteSize(L"Test 32-bit BE", 4U, Memory::Size::ThirtyTwoBitBigEndian); + TestNoteSize(L"[16-bit BigEndian] Test", 2U, Memory::Size::SixteenBitBigEndian); + TestNoteSize(L"[16-bit-BE] Test", 2U, Memory::Size::SixteenBitBigEndian); + TestNoteSize(L"[4-bit BE] Test", 1U, Memory::Size::EightBit); + TestNoteSize(L"[US] Test [32-bit BE]", 4U, Memory::Size::ThirtyTwoBitBigEndian); + + TestNoteSize(L"8 BYTE Test", 8U, Memory::Size::Array); + TestNoteSize(L"Test 8 BYTE", 8U, Memory::Size::Array); + TestNoteSize(L"Test 8 BYT", 1U, Memory::Size::Unknown); + TestNoteSize(L"[2 Byte] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[4 Byte] Test", 4U, Memory::Size::ThirtyTwoBit); + TestNoteSize(L"[4 Byte - Float] Test", 4U, Memory::Size::Float); + TestNoteSize(L"[Float - 4 Byte] Test", 4U, Memory::Size::Float); + TestNoteSize(L"[32-bit Float] Test", 4U, Memory::Size::Float); + TestNoteSize(L"[Float 32-bit] Test", 4U, Memory::Size::Float); + TestNoteSize(L"[8 Byte] Test", 8U, Memory::Size::Array); + TestNoteSize(L"[0x80 Bytes] Test", 128U, Memory::Size::Array); + TestNoteSize(L"[0xa8 bytes] Test", 168U, Memory::Size::Array); + TestNoteSize(L"Test [0xE Bytes]", 14U, Memory::Size::Array); + TestNoteSize(L"Test [0xET Bytes]", 1U, Memory::Size::Unknown); + TestNoteSize(L"Test [0xE.3 Bytes]", 3U, Memory::Size::TwentyFourBit); + TestNoteSize(L"[2 byte] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[2-byte] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Test (6 bytes)", 6U, Memory::Size::Array); + TestNoteSize(L"[2byte] Test", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[100 Bytes] Test", 100U, Memory::Size::Array); + + TestNoteSize(L"[float] Test", 4U, Memory::Size::Float); + TestNoteSize(L"[float32] Test", 4U, Memory::Size::Float); + TestNoteSize(L"Test float", 4U, Memory::Size::Float); + TestNoteSize(L"Test floa", 1U, Memory::Size::Unknown); + TestNoteSize(L"is floating", 1U, Memory::Size::Unknown); + TestNoteSize(L"has floated", 1U, Memory::Size::Unknown); + TestNoteSize(L"16-afloat", 1U, Memory::Size::Unknown); + TestNoteSize(L"[float be] Test", 4U, Memory::Size::FloatBigEndian); + TestNoteSize(L"[float bigendian] Test", 4U, Memory::Size::FloatBigEndian); + TestNoteSize(L"[be float] Test", 4U, Memory::Size::FloatBigEndian); + TestNoteSize(L"[bigendian float] Test", 4U, Memory::Size::FloatBigEndian); + TestNoteSize(L"[32-bit] pointer to float", 4U, Memory::Size::ThirtyTwoBit); + TestNoteSize(L"[8-bit] can double down", 1U, Memory::Size::EightBit); + + TestNoteSize(L"[64-bit double] Test", 8U, Memory::Size::Double32); + TestNoteSize(L"[64-bit double BE] Test", 8U, Memory::Size::Double32BigEndian); + TestNoteSize(L"[double] Test", 8U, Memory::Size::Double32); + TestNoteSize(L"[double BE] Test", 8U, Memory::Size::Double32BigEndian); + TestNoteSize(L"[double32] Test", 4U, Memory::Size::Double32); + TestNoteSize(L"[double32 BE] Test", 4U, Memory::Size::Double32BigEndian); + TestNoteSize(L"[double64] Test", 8U, Memory::Size::Double32); + + TestNoteSize(L"[MBF32] Test", 4U, Memory::Size::MBF32); + TestNoteSize(L"[MBF40] Test", 5U, Memory::Size::MBF32); + TestNoteSize(L"[MBF32 float] Test", 4U, Memory::Size::MBF32); + TestNoteSize(L"[MBF80] Test", 1U, Memory::Size::Unknown); + TestNoteSize(L"[MBF320] Test", 1U, Memory::Size::Unknown); + TestNoteSize(L"[MBF-32] Test", 4U, Memory::Size::MBF32); + TestNoteSize(L"[32-bit MBF] Test", 4U, Memory::Size::MBF32); + TestNoteSize(L"[40-bit MBF] Test", 5U, Memory::Size::MBF32); + TestNoteSize(L"[MBF] Test", 1U, Memory::Size::Unknown); + TestNoteSize(L"Test MBF32", 4U, Memory::Size::MBF32); + TestNoteSize(L"[MBF32 LE] Test", 4U, Memory::Size::MBF32LE); + TestNoteSize(L"[MBF40-LE] Test", 5U, Memory::Size::MBF32LE); + + TestNoteSize(L"42=bitten", 1U, Memory::Size::Unknown); + TestNoteSize(L"42-bitten", 1U, Memory::Size::Unknown); + TestNoteSize(L"bit by bit", 1U, Memory::Size::Unknown); + TestNoteSize(L"bit1=chest", 1U, Memory::Size::Unknown); + + TestNoteSize(L"Bite count (16-bit)", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"Number of bits collected (32 bits)", 4U, Memory::Size::ThirtyTwoBit); + + TestNoteSize(L"100 32-bit pointers [400 bytes]", 400U, Memory::Size::Array); + TestNoteSize(L"[400 bytes] 100 32-bit pointers", 400U, Memory::Size::Array); + + TestNoteSize(L"[NTSCU]\r\n[16-bit] Test\r\n", 2U, Memory::Size::SixteenBit); + TestNoteSize(L"[24-bit]\r\nIt's really 32-bit, but the top byte will never be non-zero\r\n", 3U, Memory::Size::TwentyFourBit); + + TestNoteSize(L"[13-bytes ASCII] Character Name", 13U, Memory::Size::Text); } TEST_METHOD(TestExtractFormat) { - TestCodeNoteFormat(L"", Memory::Format::Dec); - TestCodeNoteFormat(L"Test", Memory::Format::Dec); - TestCodeNoteFormat(L"16-bit Test", Memory::Format::Dec); - TestCodeNoteFormat(L"Test 16-bit", Memory::Format::Dec); - TestCodeNoteFormat(L"[16-bit] Test", Memory::Format::Dec); + TestNoteFormat(L"", Memory::Format::Dec); + TestNoteFormat(L"Test", Memory::Format::Dec); + TestNoteFormat(L"16-bit Test", Memory::Format::Dec); + TestNoteFormat(L"Test 16-bit", Memory::Format::Dec); + TestNoteFormat(L"[16-bit] Test", Memory::Format::Dec); - TestCodeNoteFormat(L"[16-bit BCD] Test", Memory::Format::Hex); + TestNoteFormat(L"[16-bit BCD] Test", Memory::Format::Hex); } TEST_METHOD(TestExtractFormatIndirect) { - CodeNoteModel note; + MemoryNoteModel note; const std::wstring sNote = L"Bomb Timer Pointer (24-bit)\r\n" L"+03 - Bombs Defused\r\n" @@ -210,7 +210,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestExtractFormatImplied) { - CodeNoteModel note; + MemoryNoteModel note; // generic decimal values; assume decimal const std::wstring sNote = @@ -297,7 +297,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestExtractFormatBits) { - CodeNoteModel note; + MemoryNoteModel note; // b0 looks like value hex for an 8-bit value const std::wstring sNote = @@ -332,7 +332,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetPointerNoteAtOffset) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Bomb Timer Pointer (24-bit)\r\n" L"+03 - Bombs Defused\r\n" @@ -349,7 +349,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetPointerNoteAtOffsetMultiline) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x1BC | Equipment - Head - String[24 Bytes]\r\n" @@ -370,7 +370,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetPointerNoteAtOffsetMultilineWithHeader) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[PAL]\r\n" L"Pointer [32bit]\r\n" @@ -392,7 +392,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestHeaderedPointer) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer (16bit because negative)\r\n\r\n" L"Circuit:\r\n" @@ -415,7 +415,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestPointerOverlap) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer\r\r\n" L"[OFFSETS]\r\r\n" @@ -435,7 +435,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestNestedPointer) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x428 | Pointer - Award - Tee Hee Two (32bit)\r\n" @@ -458,7 +458,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestUnannotatedPointerChain) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x428 | Award - Tee Hee Two\r\n" @@ -483,7 +483,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestNestedPointerAlternateFormat) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x428 | (32-bit pointer) Award - Tee Hee Two\r\n" @@ -506,7 +506,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestNestedPointerBracketNotSeparator) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x428 [32bit] Pointer - Award - Tee Hee Two\r\n" @@ -529,7 +529,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestNestedPointerMultiLine) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x428 | Obj1 pointer\r\n" @@ -558,7 +558,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestNestedPointerRepeatedNodes) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0x308\r\n" @@ -590,7 +590,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestImpliedPointerChain) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Root Pointer [24 bits]\r\n" L"\r\n" @@ -615,7 +615,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestArrayPointer) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit] (80 bytes)\r\n" L"+0x428 | Pointer - Award - Tee Hee Two (32bit)\r\n" @@ -640,7 +640,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestPointerOverflow) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; note.mockConsoleContext.AddMemoryRegion(0, 0x7F, ra::data::MemoryRegion::Type::SystemRAM, 0x80000000); std::array memory{}; memory.at(0x04) = 0x10; // pointer@0x04 = 0x80000010 @@ -658,7 +658,7 @@ TEST_CLASS(CodeNoteModel_Tests) Assert::AreEqual(Memory::Size::ThirtyTwoBit, note.GetMemSize()); - note.EnumeratePointerNotes([](ra::data::ByteAddress nAddress, const CodeNoteModel& nOffsetNote) + note.EnumeratePointerNotes([](ra::data::ByteAddress nAddress, const MemoryNoteModel& nOffsetNote) { Assert::AreEqual(0x14U, nAddress); Assert::AreEqual(0x80000004U, nOffsetNote.GetAddress()); @@ -670,7 +670,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestPointerNegative) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; note.mockConsoleContext.AddMemoryRegion(0, 0x7F, ra::data::MemoryRegion::Type::SystemRAM, 0x80000000); std::array memory{}; memory.at(0x04) = 0x10; // pointer@0x04 = 0x80000010 @@ -689,7 +689,7 @@ TEST_CLASS(CodeNoteModel_Tests) Assert::AreEqual(Memory::Size::ThirtyTwoBit, note.GetMemSize()); Assert::AreEqual(std::wstring(L"root"), note.GetSummary()); - note.EnumeratePointerNotes([](ra::data::ByteAddress nAddress, const CodeNoteModel& nOffsetNote) + note.EnumeratePointerNotes([](ra::data::ByteAddress nAddress, const MemoryNoteModel& nOffsetNote) { Assert::AreEqual(0x08U, nAddress); Assert::AreEqual(0xFFFFFFF8U, nOffsetNote.GetAddress()); @@ -701,7 +701,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestUpdateRawPointerValue) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0 | Obj1 pointer\r\n" @@ -737,7 +737,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextSimple) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"0=None\r\n" @@ -757,7 +757,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextSingleLine) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Color (0=None, 1=Red, 2=Green, 3=Blue)"; note.SetNote(sNote); @@ -772,7 +772,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextSingleLineAlternateFormat) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Color [0: None, 1: Red, 2: Green, 3: Blue]"; note.SetNote(sNote); @@ -787,7 +787,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextHexPrefix0x) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"0x00=None\r\n" @@ -807,7 +807,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextHexPrefixH) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"h00=None\r\n" @@ -827,7 +827,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextHexPrefixNone) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"00=None\r\n" @@ -847,7 +847,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextIndentSpace) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L" 0x00=None\r\n" @@ -867,7 +867,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextIndentNonAlphanumeric) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"..0x00=None\r\n" @@ -887,7 +887,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextIndentBullet) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"* 0x00=None\r\n" @@ -907,7 +907,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextRange) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[8-bit] Color\r\n" L"0-3=None\r\n" @@ -931,7 +931,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetEnumTextIndirect) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"[32-bit pointer] Data\r\n" L"0=NULL\r\n" @@ -958,7 +958,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetSubNote) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Item flags\r\n" L"b0: found\r\n" @@ -982,7 +982,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetSubNoteInlineSubClause) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Item flags [b0: found, bit1 = collected, B2-3=color, b4 - b7 -> count]\r\n"; note.SetNote(sNote); @@ -1001,7 +1001,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetSubNoteTrailingClause) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"Item flags - b0: found, bit1 = collected, B2-3=color, b4 - b7 -> count\r\n"; note.SetNote(sNote); @@ -1020,7 +1020,7 @@ TEST_CLASS(CodeNoteModel_Tests) TEST_METHOD(TestGetSubNoteWithSetSuffix) { - CodeNoteModelHarness note; + MemoryNoteModelHarness note; const std::wstring sNote = L"US/EU discriminator\r\n" L"bit4 set: US\r\n" diff --git a/tests/devkit/data/models/CodeNotesModel_Tests.cpp b/tests/devkit/data/models/MemoryNotesModel_Tests.cpp similarity index 74% rename from tests/devkit/data/models/CodeNotesModel_Tests.cpp rename to tests/devkit/data/models/MemoryNotesModel_Tests.cpp index 72e542d34..349d07f2d 100644 --- a/tests/devkit/data/models/CodeNotesModel_Tests.cpp +++ b/tests/devkit/data/models/MemoryNotesModel_Tests.cpp @@ -1,4 +1,4 @@ -#include "data/models/CodeNotesModel.hh" +#include "data/models/MemoryNotesModel.hh" #include "services/impl/StringTextWriter.hh" @@ -16,10 +16,10 @@ namespace data { namespace models { namespace tests { -TEST_CLASS(CodeNotesModel_Tests) +TEST_CLASS(MemoryNotesModel_Tests) { private: - class CodeNotesModelHarness : public CodeNotesModel + class MemoryNotesModelHarness : public MemoryNotesModel { public: ra::context::mocks::MockConsoleContext mockConsoleContext; @@ -29,14 +29,14 @@ TEST_CLASS(CodeNotesModel_Tests) std::map mNewNotes; - void InitializeCodeNotes(unsigned nGameId) + void InitializeNotes(unsigned nGameId) { mNewNotes.clear(); if (!mockRcClient.HasMockResponse("r=codenotes2&g=1")) mockRcClient.MockResponse("r=codenotes2&g=1", "{\"Success\":true,\"CodeNotes\":[]}"); - CodeNotesModel::Refresh(nGameId, + MemoryNotesModel::Refresh(nGameId, [this](ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { mNewNotes[nAddress] = sNewNote; }, @@ -48,30 +48,30 @@ TEST_CLASS(CodeNotesModel_Tests) []() {}); } - void MonitorCodeNoteChanges() + void MonitorNoteChanges() { - m_fCodeNoteChanged = [this](ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { + m_fMemoryNoteChanged = [this](ra::data::ByteAddress nAddress, const std::wstring& sNewNote) { mNewNotes[nAddress] = sNewNote; }; - m_fCodeNoteMoved = [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { + m_fMemoryNoteMoved = [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { if (nOldAddress != 0xFFFFFFFF) mNewNotes[nOldAddress] = L""; mNewNotes[nNewAddress] = sNote; }; } - using CodeNotesModel::AddCodeNote; + using MemoryNotesModel::AddMemoryNote; void AssertNoNote(ra::data::ByteAddress nAddress) { - const auto* pNote = FindCodeNote(nAddress); + const auto* pNote = FindNote(nAddress); if (pNote != nullptr) Assert::Fail(ra::util::String::Printf(L"Note found for address %04X: %s", nAddress, *pNote).c_str()); } void AssertNote(ra::data::ByteAddress nAddress, const std::wstring& sExpected) { - const auto* pNote = FindCodeNote(nAddress); + const auto* pNote = FindNote(nAddress); Assert::IsNotNull(pNote, ra::util::String::Printf(L"Note not found for address %04X", nAddress).c_str()); Ensures(pNote != nullptr); @@ -80,7 +80,7 @@ TEST_CLASS(CodeNotesModel_Tests) void AssertNote(ra::data::ByteAddress nAddress, const std::wstring& sExpected, Memory::Size nExpectedSize, unsigned nExpectedBytes = 0) { - const auto* pNote = FindCodeNoteModel(nAddress); + const auto* pNote = FindMemoryNoteModel(nAddress); Assert::IsNotNull(pNote, ra::util::String::Printf(L"Note not found for address %04X", nAddress).c_str()); Ensures(pNote != nullptr); @@ -98,7 +98,7 @@ TEST_CLASS(CodeNotesModel_Tests) void AssertIndirectNote(ra::data::ByteAddress nAddress, unsigned nOffset, const std::wstring& sExpected) { - const auto* pNote = FindCodeNoteModel(nAddress); + const auto* pNote = FindMemoryNoteModel(nAddress); Assert::IsNotNull(pNote, ra::util::String::Printf(L"Note not found for address %04X", nAddress).c_str()); Ensures(pNote != nullptr); pNote = pNote->GetPointerNoteAtOffset(nOffset); @@ -109,7 +109,7 @@ TEST_CLASS(CodeNotesModel_Tests) void AssertNoteDescription(ra::data::ByteAddress nAddress, const wchar_t* sExpected) { - const auto* pNote = FindCodeNoteModel(nAddress); + const auto* pNote = FindMemoryNoteModel(nAddress); if (!sExpected) { if (pNote != nullptr) @@ -190,11 +190,11 @@ TEST_CLASS(CodeNotesModel_Tests) public: TEST_METHOD(TestInitialValues) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; - Assert::AreEqual(AssetType::CodeNotes, notes.GetType()); + Assert::AreEqual(AssetType::MemoryNotes, notes.GetType()); Assert::AreEqual(0U, notes.GetID()); - Assert::AreEqual(std::wstring(L"Code Notes"), notes.GetName()); + Assert::AreEqual(std::wstring(L"Memory Notes"), notes.GetName()); Assert::AreEqual(std::wstring(L""), notes.GetDescription()); Assert::AreEqual(AssetCategory::Core, notes.GetCategory()); Assert::AreEqual(AssetState::Inactive, notes.GetState()); @@ -202,16 +202,16 @@ TEST_CLASS(CodeNotesModel_Tests) } - TEST_METHOD(TestLoadCodeNotes) + TEST_METHOD(TestLoadMemoryNotes) { - CodeNotesModelHarness notes; - notes.mockRcClient.MockResponse("r=codenotes2&g=1", CodeNotesModelHarness::MockNotesResponse({ + MemoryNotesModelHarness notes; + notes.mockRcClient.MockResponse("r=codenotes2&g=1", MemoryNotesModelHarness::MockNotesResponse({ { 1234, "Note1", "Author" }, { 2345, "Note2", "Author" }, { 3456, "Note3\nSubNote3", "Author" }, })); - notes.InitializeCodeNotes(1U); + notes.InitializeNotes(1U); Assert::AreEqual({3U}, notes.mNewNotes.size()); notes.AssertNote(1234U, L"Note1"); @@ -224,19 +224,19 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(3456U, L"Note3\r\nSubNote3"); Assert::AreEqual(std::wstring(L"Note3\r\nSubNote3"), notes.mNewNotes[3456U]); - const auto* pNote4 = notes.FindCodeNote(4567U); + const auto* pNote4 = notes.FindNote(4567U); Assert::IsNull(pNote4); - notes.InitializeCodeNotes(0U); - const auto* pNote5 = notes.FindCodeNote(1234U); + notes.InitializeNotes(0U); + const auto* pNote5 = notes.FindNote(1234U); Assert::IsNull(pNote5); Assert::AreEqual({0U}, notes.mNewNotes.size()); } - TEST_METHOD(TestFindCodeNoteSized) + TEST_METHOD(TestFindNoteSized) { - CodeNotesModelHarness notes; - notes.mockRcClient.MockResponse("r=codenotes2&g=1", CodeNotesModelHarness::MockNotesResponse({ + MemoryNotesModelHarness notes; + notes.mockRcClient.MockResponse("r=codenotes2&g=1", MemoryNotesModelHarness::MockNotesResponse({ { 1000, "[32-bit] Location", "Author" }, { 1100, "Level", "Author" }, { 1110, "[16-bit] Strength", "Author" }, @@ -244,66 +244,66 @@ TEST_CLASS(CodeNotesModel_Tests) { 1200, "[20 bytes] Items\r\nMultiline ignored", "Author" }, })); - notes.InitializeCodeNotes(1U); - - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(100, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(999, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [1/4]"), notes.FindCodeNote(1000, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [2/4]"), notes.FindCodeNote(1001, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [3/4]"), notes.FindCodeNote(1002, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [4/4]"), notes.FindCodeNote(1003, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1004, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Level"), notes.FindCodeNote(1100, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [1/2]"), notes.FindCodeNote(1110, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [2/2]"), notes.FindCodeNote(1111, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [1/8]"), notes.FindCodeNote(1120, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [2/8]"), notes.FindCodeNote(1121, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [3/8]"), notes.FindCodeNote(1122, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [4/8]"), notes.FindCodeNote(1123, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [5/8]"), notes.FindCodeNote(1124, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [6/8]"), notes.FindCodeNote(1125, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [7/8]"), notes.FindCodeNote(1126, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[8 byte] Exp [8/8]"), notes.FindCodeNote(1127, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1128, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[20 bytes] Items [1/20]"), notes.FindCodeNote(1200, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[20 bytes] Items [10/20]"), notes.FindCodeNote(1209, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"[20 bytes] Items [20/20]"), notes.FindCodeNote(1219, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1300, Memory::Size::EightBit)); - - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(100, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(998, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(999, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1000, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1001, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1002, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1003, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1004, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindCodeNote(1099, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindCodeNote(1100, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindCodeNote(1109, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength"), notes.FindCodeNote(1110, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindCodeNote(1111, Memory::Size::SixteenBit)); - - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(100, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(996, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(997, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location"), notes.FindCodeNote(1000, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1001, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1002, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindCodeNote(1003, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1004, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindCodeNote(1097, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindCodeNote(1100, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindCodeNote(1107, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindCodeNote(1110, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindCodeNote(1111, Memory::Size::ThirtyTwoBit)); - Assert::AreEqual(std::wstring(L""), notes.FindCodeNote(1112, Memory::Size::ThirtyTwoBit)); + notes.InitializeNotes(1U); + + Assert::AreEqual(std::wstring(L""), notes.FindNote(100, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(999, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [1/4]"), notes.FindNote(1000, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [2/4]"), notes.FindNote(1001, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [3/4]"), notes.FindNote(1002, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [4/4]"), notes.FindNote(1003, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1004, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Level"), notes.FindNote(1100, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [1/2]"), notes.FindNote(1110, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [2/2]"), notes.FindNote(1111, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [1/8]"), notes.FindNote(1120, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [2/8]"), notes.FindNote(1121, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [3/8]"), notes.FindNote(1122, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [4/8]"), notes.FindNote(1123, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [5/8]"), notes.FindNote(1124, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [6/8]"), notes.FindNote(1125, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [7/8]"), notes.FindNote(1126, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[8 byte] Exp [8/8]"), notes.FindNote(1127, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1128, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[20 bytes] Items [1/20]"), notes.FindNote(1200, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[20 bytes] Items [10/20]"), notes.FindNote(1209, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"[20 bytes] Items [20/20]"), notes.FindNote(1219, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1300, Memory::Size::EightBit)); + + Assert::AreEqual(std::wstring(L""), notes.FindNote(100, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(998, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(999, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1000, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1001, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1002, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1003, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1004, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindNote(1099, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindNote(1100, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindNote(1109, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength"), notes.FindNote(1110, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindNote(1111, Memory::Size::SixteenBit)); + + Assert::AreEqual(std::wstring(L""), notes.FindNote(100, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(996, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(997, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location"), notes.FindNote(1000, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1001, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1002, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[32-bit] Location [partial]"), notes.FindNote(1003, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1004, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindNote(1097, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"Level [partial]"), notes.FindNote(1100, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindNote(1107, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindNote(1110, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L"[16-bit] Strength [partial]"), notes.FindNote(1111, Memory::Size::ThirtyTwoBit)); + Assert::AreEqual(std::wstring(L""), notes.FindNote(1112, Memory::Size::ThirtyTwoBit)); } - TEST_METHOD(TestFindCodeNoteStart) + TEST_METHOD(TestFindNoteStart) { - CodeNotesModelHarness notes; - notes.mockRcClient.MockResponse("r=codenotes2&g=1", CodeNotesModelHarness::MockNotesResponse({ + MemoryNotesModelHarness notes; + notes.mockRcClient.MockResponse("r=codenotes2&g=1", MemoryNotesModelHarness::MockNotesResponse({ { 1000, "[32-bit] Location", "Author" }, { 1100, "Level", "Author" }, { 1110, "[16-bit] Strength", "Author" }, @@ -311,41 +311,41 @@ TEST_CLASS(CodeNotesModel_Tests) { 1200, "[20 bytes] Items", "Author" }, })); - notes.InitializeCodeNotes(1U); + notes.InitializeNotes(1U); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(100)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(100)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(999)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1000)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1001)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1002)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1003)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1004)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(999)); + Assert::AreEqual(1000U, notes.FindNoteStart(1000)); + Assert::AreEqual(1000U, notes.FindNoteStart(1001)); + Assert::AreEqual(1000U, notes.FindNoteStart(1002)); + Assert::AreEqual(1000U, notes.FindNoteStart(1003)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1004)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1099)); - Assert::AreEqual(1100U, notes.FindCodeNoteStart(1100)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1101)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1099)); + Assert::AreEqual(1100U, notes.FindNoteStart(1100)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1101)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1109)); - Assert::AreEqual(1110U, notes.FindCodeNoteStart(1110)); - Assert::AreEqual(1110U, notes.FindCodeNoteStart(1111)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1112)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1109)); + Assert::AreEqual(1110U, notes.FindNoteStart(1110)); + Assert::AreEqual(1110U, notes.FindNoteStart(1111)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1112)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1119)); - Assert::AreEqual(1120U, notes.FindCodeNoteStart(1120)); - Assert::AreEqual(1120U, notes.FindCodeNoteStart(1127)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1128)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1119)); + Assert::AreEqual(1120U, notes.FindNoteStart(1120)); + Assert::AreEqual(1120U, notes.FindNoteStart(1127)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1128)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1199)); - Assert::AreEqual(1200U, notes.FindCodeNoteStart(1200)); - Assert::AreEqual(1200U, notes.FindCodeNoteStart(1219)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1220)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1199)); + Assert::AreEqual(1200U, notes.FindNoteStart(1200)); + Assert::AreEqual(1200U, notes.FindNoteStart(1219)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1220)); } - TEST_METHOD(TestFindCodeNoteStartOverlap) + TEST_METHOD(TestFindNoteStartOverlap) { - CodeNotesModelHarness notes; - notes.mockRcClient.MockResponse("r=codenotes2&g=1", CodeNotesModelHarness::MockNotesResponse({ + MemoryNotesModelHarness notes; + notes.mockRcClient.MockResponse("r=codenotes2&g=1", MemoryNotesModelHarness::MockNotesResponse({ { 1000, "[100 bytes] Outer", "Author" }, { 1010, "[10 bytes] Inner", "Author" }, { 1015, "Individual", "Author" }, @@ -354,59 +354,59 @@ TEST_CLASS(CodeNotesModel_Tests) { 1200, "Extra", "Author" }, })); - notes.InitializeCodeNotes(1U); - - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(999)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1000)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1009)); - Assert::AreEqual(1010U, notes.FindCodeNoteStart(1010)); - Assert::AreEqual(1010U, notes.FindCodeNoteStart(1014)); - Assert::AreEqual(1015U, notes.FindCodeNoteStart(1015)); - Assert::AreEqual(1010U, notes.FindCodeNoteStart(1016)); - Assert::AreEqual(1010U, notes.FindCodeNoteStart(1019)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1020)); - Assert::AreEqual(1000U, notes.FindCodeNoteStart(1099)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1100)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1119)); - Assert::AreEqual(1120U, notes.FindCodeNoteStart(1120)); - Assert::AreEqual(1120U, notes.FindCodeNoteStart(1124)); - Assert::AreEqual(1125U, notes.FindCodeNoteStart(1125)); - Assert::AreEqual(1125U, notes.FindCodeNoteStart(1126)); - Assert::AreEqual(1125U, notes.FindCodeNoteStart(1130)); - Assert::AreEqual(1125U, notes.FindCodeNoteStart(1134)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1135)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1199)); - Assert::AreEqual(1200U, notes.FindCodeNoteStart(1200)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(1201)); + notes.InitializeNotes(1U); + + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(999)); + Assert::AreEqual(1000U, notes.FindNoteStart(1000)); + Assert::AreEqual(1000U, notes.FindNoteStart(1009)); + Assert::AreEqual(1010U, notes.FindNoteStart(1010)); + Assert::AreEqual(1010U, notes.FindNoteStart(1014)); + Assert::AreEqual(1015U, notes.FindNoteStart(1015)); + Assert::AreEqual(1010U, notes.FindNoteStart(1016)); + Assert::AreEqual(1010U, notes.FindNoteStart(1019)); + Assert::AreEqual(1000U, notes.FindNoteStart(1020)); + Assert::AreEqual(1000U, notes.FindNoteStart(1099)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1100)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1119)); + Assert::AreEqual(1120U, notes.FindNoteStart(1120)); + Assert::AreEqual(1120U, notes.FindNoteStart(1124)); + Assert::AreEqual(1125U, notes.FindNoteStart(1125)); + Assert::AreEqual(1125U, notes.FindNoteStart(1126)); + Assert::AreEqual(1125U, notes.FindNoteStart(1130)); + Assert::AreEqual(1125U, notes.FindNoteStart(1134)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1135)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1199)); + Assert::AreEqual(1200U, notes.FindNoteStart(1200)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(1201)); } - TEST_METHOD(TestSetCodeNote) + TEST_METHOD(TestSetNote) { - CodeNotesModelHarness notes; - notes.InitializeCodeNotes(1U); + MemoryNotesModelHarness notes; + notes.InitializeNotes(1U); notes.mNewNotes.clear(); - Assert::AreEqual({ 0U }, notes.CodeNoteCount()); + Assert::AreEqual({ 0U }, notes.NoteCount()); - notes.SetCodeNote(1234, L"Note1"); + notes.SetNote(1234, L"Note1"); notes.AssertNote(1234U, L"Note1"); Assert::AreEqual(std::wstring(L"Note1"), notes.mNewNotes[1234U]); - Assert::AreEqual({ 1U }, notes.CodeNoteCount()); + Assert::AreEqual({ 1U }, notes.NoteCount()); - notes.SetCodeNote(1234, L""); + notes.SetNote(1234, L""); notes.AssertNoNote(1234U); Assert::AreEqual(std::wstring(L""), notes.mNewNotes[1234U]); - Assert::AreEqual({ 0U }, notes.CodeNoteCount()); + Assert::AreEqual({ 0U }, notes.NoteCount()); } TEST_METHOD(TestFindCodeNotePointer1) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Bomb Timer Pointer (24-bit)\n" L"+03 - Bombs Defused\n" L"+04 - Bomb Timer"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x04; @@ -419,15 +419,15 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(4+4U, L"Bomb Timer", Memory::Size::Unknown, 1); } - TEST_METHOD(TestFindCodeNotePointer2) + TEST_METHOD(TestFindNotePointer2) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x1B | Equipment - Head - String[24 Bytes]\n" L"---DEFAULT_HEAD = Barry's Head\n" L"---FRAGGER_HEAD = Fragger Helmet"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x04; @@ -440,15 +440,15 @@ TEST_CLASS(CodeNotesModel_Tests) L"---FRAGGER_HEAD = Fragger Helmet", Memory::Size::Array, 24); } - TEST_METHOD(TestFindCodeNotePointer3) + TEST_METHOD(TestFindNotePointer3) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"[32-bit] Pointer for Races (only exists during Race Game)\n" L"+0x7F47 = [8-bit] Acorns collected in current track\n" L"+0x8000 = [8-bit] Current lap\n" L"+0x8033 = [16-bit] Total race time"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x04; @@ -461,9 +461,9 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(4+0x8033U, L"[16-bit] Total race time", Memory::Size::SixteenBit); } - TEST_METHOD(TestFindCodeNotePointer4) + TEST_METHOD(TestFindNotePointer4) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer (16bit because negative)\n\n" L"Circuit:\n" @@ -472,7 +472,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"Free Run:\n" L"+0x1B5BE = Seconds 0x\n" L"+0x1B5CE = Lap"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x04; @@ -486,9 +486,9 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(4+0x1B5CEU, L"Lap", Memory::Size::Unknown, 1); } - TEST_METHOD(TestFindCodeNotePointer5) + TEST_METHOD(TestFindNotePointer5) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer\r\n" L"[OFFSETS]\r\n" @@ -497,7 +497,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+6 = Job Level (8-bit)\r\n" L"+20 = Stat Points (16-bit)\r\n" L"+22 = Skill Points (8-bit)"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x04; @@ -513,16 +513,16 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(4+22, L"Skill Points (8-bit)", Memory::Size::EightBit); } - TEST_METHOD(TestFindCodeNotePointerNested) + TEST_METHOD(TestFindNotePointerNested) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer [32bit]\n" L"+4 | Pointer - Award - Tee Hee Two (32bit)\n" L"-- +2 | Flag\n" L"+8 | Pointer - Award - Pretty Woman (32bit)\n" L"-- +2 | Flag"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x10; @@ -539,15 +539,15 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(0x28+2U, L"Flag", Memory::Size::Unknown); } - TEST_METHOD(TestFindCodeNotePointerNonPrefixedOffsets) + TEST_METHOD(TestFindNotePointerNonPrefixedOffsets) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"[24-bit] Mech stats pointer (health...)\n" L"+07 = Jump Jet {8-bit}\n" L"+5C = Right Leg Health {16-bit}\n" L"+5E = Left Leg Health {16-bit}"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 4; @@ -560,16 +560,16 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNoNote(4+0x5EU); } - TEST_METHOD(TestFindCodeNotePointerOverwrite) + TEST_METHOD(TestFindNotePointerOverwrite) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer (16bit because negative)\n" L"+0x1B56E = Current Position\n" L"+0x1B57E = Total Racers\n" L"+0x1B56E = Seconds 0x\n" L"+0x1B5CE = Lap"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 4; @@ -583,9 +583,9 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNote(4+0x1B5CEU, L"Lap", Memory::Size::Unknown, 1); } - TEST_METHOD(TestFindCodeNoteSizedPointer) + TEST_METHOD(TestFindNoteSizedPointer) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer\n" L"+1 = Unknown\n" @@ -593,39 +593,39 @@ TEST_CLASS(CodeNotesModel_Tests) L"+4 = Medium (16-bit)\n" L"+6 = Large (32-bit)\n" L"+10 = Very Large (8 bytes)"; - notes.AddCodeNote(12, "Author", sNote); + notes.AddMemoryNote(12, "Author", sNote); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(12) = 0x10; notes.DoFrame(); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(0, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Unknown [indirect]"), notes.FindCodeNote(0x10+1, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Small (8-bit) [indirect]"), notes.FindCodeNote(0x10+2, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [1/2] [indirect]"), notes.FindCodeNote(0x10+4, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [2/2] [indirect]"), notes.FindCodeNote(0x10+5, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [1/4] [indirect]"), notes.FindCodeNote(0x10+6, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [4/4] [indirect]"), notes.FindCodeNote(0x10+9, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [1/8] [indirect]"), notes.FindCodeNote(0x10+10, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [8/8] [indirect]"), notes.FindCodeNote(0x10+17, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(0x10+18, Memory::Size::EightBit)); - - Assert::AreEqual(std::wstring(L"Unknown [partial] [indirect]"), notes.FindCodeNote(0x10+0, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Unknown [partial] [indirect]"), notes.FindCodeNote(0x10+1, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Small (8-bit) [partial] [indirect]"), notes.FindCodeNote(0x10+2, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [indirect]"), notes.FindCodeNote(0x10+4, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [partial] [indirect]"), notes.FindCodeNote(0x10+5, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindCodeNote(0x10+6, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindCodeNote(0x10+9, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [partial] [indirect]"), notes.FindCodeNote(0x10+10, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [partial] [indirect]"), notes.FindCodeNote(0x10+17, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(0x10+18, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(0, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Unknown [indirect]"), notes.FindNote(0x10+1, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Small (8-bit) [indirect]"), notes.FindNote(0x10+2, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [1/2] [indirect]"), notes.FindNote(0x10+4, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [2/2] [indirect]"), notes.FindNote(0x10+5, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [1/4] [indirect]"), notes.FindNote(0x10+6, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [4/4] [indirect]"), notes.FindNote(0x10+9, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [1/8] [indirect]"), notes.FindNote(0x10+10, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [8/8] [indirect]"), notes.FindNote(0x10+17, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(0x10+18, Memory::Size::EightBit)); + + Assert::AreEqual(std::wstring(L"Unknown [partial] [indirect]"), notes.FindNote(0x10+0, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Unknown [partial] [indirect]"), notes.FindNote(0x10+1, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Small (8-bit) [partial] [indirect]"), notes.FindNote(0x10+2, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [indirect]"), notes.FindNote(0x10+4, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [partial] [indirect]"), notes.FindNote(0x10+5, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindNote(0x10+6, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindNote(0x10+9, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [partial] [indirect]"), notes.FindNote(0x10+10, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Very Large (8 bytes) [partial] [indirect]"), notes.FindNote(0x10+17, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(0x10+18, Memory::Size::SixteenBit)); } - TEST_METHOD(TestFindCodeNoteSizedPointerOverflow) + TEST_METHOD(TestFindNoteSizedPointerOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -636,36 +636,36 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF88 = Small (8-bit)\n" // 8+8=16 L"+0xFFFFFF90 = Medium (16-bit)\n" // 16+8=24 L"+0xFFFFFF98 = Large (32-bit)"; // 24+8=32 - notes.AddCodeNote(4, "Author", sPointerNote); - notes.AddCodeNote(40, "Author", L"After [32-bit]"); - notes.AddCodeNote(1, "Author", L"Before"); - notes.AddCodeNote(20, "Author", L"In the middle"); + notes.AddMemoryNote(4, "Author", sPointerNote); + notes.AddMemoryNote(40, "Author", L"After [32-bit]"); + notes.AddMemoryNote(1, "Author", L"Before"); + notes.AddMemoryNote(20, "Author", L"In the middle"); notes.DoFrame(); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(0, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Before"), notes.FindCodeNote(1, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Pointer (32-bit) [1/4]"), notes.FindCodeNote(4, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Small (8-bit) [indirect]"), notes.FindCodeNote(16, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [1/2] [indirect]"), notes.FindCodeNote(24, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [2/2] [indirect]"), notes.FindCodeNote(25, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [1/4] [indirect]"), notes.FindCodeNote(32, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [4/4] [indirect]"), notes.FindCodeNote(35, Memory::Size::EightBit)); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(36, Memory::Size::EightBit)); - - Assert::AreEqual(std::wstring(L"Before [partial]"), notes.FindCodeNote(0, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Before [partial]"), notes.FindCodeNote(1, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Pointer (32-bit) [partial]"), notes.FindCodeNote(4, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Small (8-bit) [partial] [indirect]"), notes.FindCodeNote(16, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [indirect]"), notes.FindCodeNote(24, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Medium (16-bit) [partial] [indirect]"), notes.FindCodeNote(25, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindCodeNote(32, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindCodeNote(35, Memory::Size::SixteenBit)); - Assert::AreEqual(std::wstring(), notes.FindCodeNote(36, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(0, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Before"), notes.FindNote(1, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Pointer (32-bit) [1/4]"), notes.FindNote(4, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Small (8-bit) [indirect]"), notes.FindNote(16, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [1/2] [indirect]"), notes.FindNote(24, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [2/2] [indirect]"), notes.FindNote(25, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [1/4] [indirect]"), notes.FindNote(32, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [4/4] [indirect]"), notes.FindNote(35, Memory::Size::EightBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(36, Memory::Size::EightBit)); + + Assert::AreEqual(std::wstring(L"Before [partial]"), notes.FindNote(0, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Before [partial]"), notes.FindNote(1, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Pointer (32-bit) [partial]"), notes.FindNote(4, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Small (8-bit) [partial] [indirect]"), notes.FindNote(16, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [indirect]"), notes.FindNote(24, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Medium (16-bit) [partial] [indirect]"), notes.FindNote(25, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindNote(32, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(L"Large (32-bit) [partial] [indirect]"), notes.FindNote(35, Memory::Size::SixteenBit)); + Assert::AreEqual(std::wstring(), notes.FindNote(36, Memory::Size::SixteenBit)); } - TEST_METHOD(TestFindCodeNoteBrokenPointerChain) + TEST_METHOD(TestFindNoteBrokenPointerChain) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sNote = L"Pointer [32bit]\r\n" L"+0 | Obj1 pointer\r\n" @@ -674,7 +674,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+4 | Obj2 pointer\r\n" L"++0 | [32-bit] ID\r\n" L"+8 | Count"; - notes.AddCodeNote(4U, "Author", sNote); + notes.AddMemoryNote(4U, "Author", sNote); notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; @@ -750,23 +750,23 @@ TEST_CLASS(CodeNotesModel_Tests) notes.AssertNoteDescription(2U, nullptr); } - TEST_METHOD(TestEnumerateCodeNotes) + TEST_METHOD(TestEnumerateMemoryNotes) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sPointerNote = L"Pointer\n" L"+8 = Unknown\n" L"+16 = Small (8-bit)"; - notes.AddCodeNote(1234, "Author", sPointerNote); - notes.AddCodeNote(20, "Author", L"After [32-bit]"); - notes.AddCodeNote(4, "Author", L"Before"); - notes.AddCodeNote(12, "Author", L"In the middle"); + notes.AddMemoryNote(1234, "Author", sPointerNote); + notes.AddMemoryNote(20, "Author", L"After [32-bit]"); + notes.AddMemoryNote(4, "Author", L"Before"); + notes.AddMemoryNote(12, "Author", L"In the middle"); notes.DoFrame(); int i = 0; - notes.EnumerateCodeNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const CodeNoteModel& pCodeNote) { - const auto nBytes = pCodeNote.GetBytes(); - const auto& sNote = pCodeNote.GetNote(); + notes.EnumerateMemoryNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const MemoryNoteModel& pMemoryNote) { + const auto nBytes = pMemoryNote.GetBytes(); + const auto& sNote = pMemoryNote.GetNote(); switch (i++) { @@ -798,9 +798,9 @@ TEST_CLASS(CodeNotesModel_Tests) }, false); } - TEST_METHOD(TestEnumerateCodeNotesWithIndirect) + TEST_METHOD(TestEnumerateMemoryNotesWithIndirect) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); memory.at(120) = 0x02; // start with initial value for pointer @@ -809,16 +809,16 @@ TEST_CLASS(CodeNotesModel_Tests) L"Pointer\n" L"+8 = Unknown\n" L"+16 = Small (16-bit)"; - notes.AddCodeNote(120, "Author", sPointerNote); - notes.AddCodeNote(20, "Author", L"After [32-bit]"); - notes.AddCodeNote(4, "Author", L"Before"); - notes.AddCodeNote(12, "Author", L"In the middle"); + notes.AddMemoryNote(120, "Author", sPointerNote); + notes.AddMemoryNote(20, "Author", L"After [32-bit]"); + notes.AddMemoryNote(4, "Author", L"Before"); + notes.AddMemoryNote(12, "Author", L"In the middle"); notes.DoFrame(); int i = 0; - notes.EnumerateCodeNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const CodeNoteModel& pCodeNote) { - const auto nBytes = pCodeNote.GetBytes(); - const auto& sNote = pCodeNote.GetNote(); + notes.EnumerateMemoryNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const MemoryNoteModel& pMemoryNote) { + const auto nBytes = pMemoryNote.GetBytes(); + const auto& sNote = pMemoryNote.GetNote(); switch (i++) { @@ -860,9 +860,9 @@ TEST_CLASS(CodeNotesModel_Tests) }, true); } - TEST_METHOD(TestEnumerateCodeNotesWithIndirectOverflow) + TEST_METHOD(TestEnumerateMemoryNotesWithIndirectOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -873,16 +873,16 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF88 = Small (8-bit)\n" // 8+8=16 L"+0xFFFFFF90 = Medium (16-bit)\n" // 16+8=24 L"+0xFFFFFF98 = Large (32-bit)"; // 24+8=32 - notes.AddCodeNote(4, "Author", sPointerNote); - notes.AddCodeNote(40, "Author", L"After [32-bit]"); - notes.AddCodeNote(1, "Author", L"Before"); - notes.AddCodeNote(20, "Author", L"In the middle"); + notes.AddMemoryNote(4, "Author", sPointerNote); + notes.AddMemoryNote(40, "Author", L"After [32-bit]"); + notes.AddMemoryNote(1, "Author", L"Before"); + notes.AddMemoryNote(20, "Author", L"In the middle"); notes.DoFrame(); int i = 0; - notes.EnumerateCodeNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const CodeNoteModel& pCodeNote) { - const auto nBytes = pCodeNote.GetBytes(); - const auto& sNote = pCodeNote.GetNote(); + notes.EnumerateMemoryNotes([&i, &sPointerNote](ra::data::ByteAddress nAddress, const MemoryNoteModel& pMemoryNote) { + const auto nBytes = pMemoryNote.GetBytes(); + const auto& sNote = pMemoryNote.GetNote(); switch (i++) { @@ -931,8 +931,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDoFrame) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); std::array memory{}; for (uint8_t i = 0; i < memory.size(); i++) @@ -945,7 +945,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+1 = Small (8-bit)\n" L"+2 = Medium (16-bit)\n" L"+4 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0000, "Author", sNote); notes.DoFrame(); // should receive notifications for the pointer note, and for each subnote @@ -1003,8 +1003,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDoFrameRealAddressConversion) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; @@ -1018,7 +1018,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+1 = Small (8-bit)\n" L"+2 = Medium (16-bit)\n" L"+4 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0000, "Author", sNote); notes.DoFrame(); // should receive notifications for the pointer note, and for each subnote @@ -1051,8 +1051,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDoFrameRealAddressConversionBigEndian) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; @@ -1066,7 +1066,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+1 = Small (8-bit)\n" L"+2 = Medium (16-bit)\n" L"+4 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0000, "Author", sNote); notes.DoFrame(); // should receive notifications for the pointer note, and for each subnote @@ -1099,8 +1099,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDoFrameRealAddressConversionAvoidedByOverflow) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; @@ -1114,7 +1114,7 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF81 = Small (8-bit)\n" L"+0xFFFFFF82 = Medium (16-bit)\n" L"+0xFFFFFF84 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0000, "Author", sNote); notes.DoFrame(); // should receive notifications for the pointer note, and for each subnote @@ -1147,8 +1147,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestFindCodeNoteStartPointer) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); std::array memory{}; for (uint8_t i = 0; i < memory.size(); i++) @@ -1161,24 +1161,24 @@ TEST_CLASS(CodeNotesModel_Tests) L"+1 = Small (8-bit)\n" L"+2 = Medium (16-bit)\n" L"+4 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0000, "Author", sNote); notes.DoFrame(); // indirect notes are at 0x11 (byte), 0x12 (word), and 0x14 (dword) - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(0x10)); - Assert::AreEqual(0x11U, notes.FindCodeNoteStart(0x11)); - Assert::AreEqual(0x12U, notes.FindCodeNoteStart(0x12)); - Assert::AreEqual(0x12U, notes.FindCodeNoteStart(0x13)); - Assert::AreEqual(0x14U, notes.FindCodeNoteStart(0x14)); - Assert::AreEqual(0x14U, notes.FindCodeNoteStart(0x15)); - Assert::AreEqual(0x14U, notes.FindCodeNoteStart(0x16)); - Assert::AreEqual(0x14U, notes.FindCodeNoteStart(0x17)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(0x18)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(0x10)); + Assert::AreEqual(0x11U, notes.FindNoteStart(0x11)); + Assert::AreEqual(0x12U, notes.FindNoteStart(0x12)); + Assert::AreEqual(0x12U, notes.FindNoteStart(0x13)); + Assert::AreEqual(0x14U, notes.FindNoteStart(0x14)); + Assert::AreEqual(0x14U, notes.FindNoteStart(0x15)); + Assert::AreEqual(0x14U, notes.FindNoteStart(0x16)); + Assert::AreEqual(0x14U, notes.FindNoteStart(0x17)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(0x18)); } TEST_METHOD(TestFindCodeNoteStartPointerOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -1189,28 +1189,28 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF88 = Small (8-bit)\n" // 8+8=16 L"+0xFFFFFF90 = Medium (16-bit)\n" // 16+8=24 L"+0xFFFFFF98 = Large (32-bit)"; // 24+8=32 - notes.AddCodeNote(4, "Author", sPointerNote); + notes.AddMemoryNote(4, "Author", sPointerNote); notes.DoFrame(); // indirect notes are at 16 (byte), 24 (word), and 32 (dword) - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(15)); - Assert::AreEqual(16U, notes.FindCodeNoteStart(16)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(17)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(23)); - Assert::AreEqual(24U, notes.FindCodeNoteStart(24)); - Assert::AreEqual(24U, notes.FindCodeNoteStart(25)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(31)); - Assert::AreEqual(32U, notes.FindCodeNoteStart(32)); - Assert::AreEqual(32U, notes.FindCodeNoteStart(33)); - Assert::AreEqual(32U, notes.FindCodeNoteStart(34)); - Assert::AreEqual(32U, notes.FindCodeNoteStart(35)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(36)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(15)); + Assert::AreEqual(16U, notes.FindNoteStart(16)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(17)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(23)); + Assert::AreEqual(24U, notes.FindNoteStart(24)); + Assert::AreEqual(24U, notes.FindNoteStart(25)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(31)); + Assert::AreEqual(32U, notes.FindNoteStart(32)); + Assert::AreEqual(32U, notes.FindNoteStart(33)); + Assert::AreEqual(32U, notes.FindNoteStart(34)); + Assert::AreEqual(32U, notes.FindNoteStart(35)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(36)); } TEST_METHOD(TestGetIndirectSource) { - CodeNotesModelHarness notes; - notes.MonitorCodeNoteChanges(); + MemoryNotesModelHarness notes; + notes.MonitorNoteChanges(); std::array memory{}; for (uint8_t i = 0; i < memory.size(); i++) @@ -1223,8 +1223,8 @@ TEST_CLASS(CodeNotesModel_Tests) L"+1 = Small (8-bit)\n" L"+2 = Medium (16-bit)\n" L"+4 = Large (32-bit)"; - notes.AddCodeNote(0x0000, "Author", sNote); - notes.AddCodeNote(0x0008, "Author", L"Not indirect"); + notes.AddMemoryNote(0x0000, "Author", sNote); + notes.AddMemoryNote(0x0008, "Author", L"Not indirect"); notes.DoFrame(); // indirect notes are at 0x11 (byte), 0x12 (word), and 0x14 (dword) @@ -1236,7 +1236,7 @@ TEST_CLASS(CodeNotesModel_Tests) Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x15)); Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x16)); Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x17)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(0x18)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(0x18)); // non-indirect Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x08)); @@ -1244,7 +1244,7 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestGetIndirectSourceOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -1255,8 +1255,8 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF81 = Small (8-bit)\n" L"+0xFFFFFF82 = Medium (16-bit)\n" L"+0xFFFFFF84 = Large (32-bit)"; - notes.AddCodeNote(0x0004, "Author", sNote); - notes.AddCodeNote(0x0008, "Author", L"Not indirect"); + notes.AddMemoryNote(0x0004, "Author", sNote); + notes.AddMemoryNote(0x0008, "Author", L"Not indirect"); notes.DoFrame(); // indirect notes are at 0x11 (byte), 0x12 (word), and 0x14 (dword) @@ -1268,7 +1268,7 @@ TEST_CLASS(CodeNotesModel_Tests) Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x15)); Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x16)); Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x17)); - Assert::AreEqual(0xFFFFFFFF, notes.FindCodeNoteStart(0x18)); + Assert::AreEqual(0xFFFFFFFF, notes.FindNoteStart(0x18)); // non-indirect Assert::AreEqual(0xFFFFFFFF, notes.GetIndirectSource(0x08)); @@ -1276,46 +1276,46 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestSetServerCodeNote) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; Assert::AreEqual(AssetChanges::None, notes.GetChanges()); - notes.SetCodeNote(0x1234, L"This is a note."); + notes.SetNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::Unpublished, notes.GetChanges()); notes.AssertNote(0x1234, std::wstring(L"This is a note.")); - notes.SetServerCodeNote(0x1234, L"This is a note."); + notes.SetServerNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); notes.AssertNote(0x1234, std::wstring(L"This is a note.")); - notes.SetCodeNote(0x1234, L"This is a new note."); + notes.SetNote(0x1234, L"This is a new note."); Assert::AreEqual(AssetChanges::Unpublished, notes.GetChanges()); notes.AssertNote(0x1234, std::wstring(L"This is a new note.")); - notes.SetServerCodeNote(0x1234, L"This is a newer note."); + notes.SetServerNote(0x1234, L"This is a newer note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); notes.AssertNote(0x1234, std::wstring(L"This is a newer note.")); } TEST_METHOD(TestSerialize) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; Assert::AreEqual(AssetChanges::None, notes.GetChanges()); - notes.SetCodeNote(0x1234, L"This is a note."); + notes.SetNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::Unpublished, notes.GetChanges()); notes.AssertSerialize("N0:0x1234:\"This is a note.\""); - notes.SetCodeNote(0x1234, L""); + notes.SetNote(0x1234, L""); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); } TEST_METHOD(TestSerializeEscaped) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; Assert::AreEqual(AssetChanges::None, notes.GetChanges()); - notes.SetCodeNote(0x1234, L"16-bit pointer\n+2:\ta\n+4:\tb\n"); - notes.SetCodeNote(0x0099, L"This string is \"quoted\"."); + notes.SetNote(0x1234, L"16-bit pointer\n+2:\ta\n+4:\tb\n"); + notes.SetNote(0x0099, L"This string is \"quoted\"."); Assert::AreEqual(AssetChanges::Unpublished, notes.GetChanges()); notes.AssertSerialize("N0:0x0099:\"This string is \\\"quoted\\\".\"\n" "N0:0x1234:\"16-bit pointer\\n+2:\\ta\\n+4:\\tb\\n\""); @@ -1323,21 +1323,21 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestSerializeDeleted) { - CodeNotesModelHarness notes; - notes.SetServerCodeNote(0x1234, L"This is a note."); + MemoryNotesModelHarness notes; + notes.SetServerNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); - notes.SetCodeNote(0x1234, L""); + notes.SetNote(0x1234, L""); Assert::AreEqual(AssetChanges::Unpublished, notes.GetChanges()); notes.AssertSerialize("N0:0x1234:\"\""); - notes.SetCodeNote(0x1234, L"This is a note."); + notes.SetNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); } TEST_METHOD(TestDeserialize) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; Assert::AreEqual(AssetChanges::None, notes.GetChanges()); const std::string sSerialized = ":0x1234:\"This is a note.\""; @@ -1351,7 +1351,7 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDeserializeEscaped) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; Assert::AreEqual(AssetChanges::None, notes.GetChanges()); const std::string sSerialized = ":0x1234:\"16-bit pointer\\n+2:\\t\\\"a\\\"\\n+4:\\tb\\n\""; @@ -1365,8 +1365,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDeserializeUnchanged) { - CodeNotesModelHarness notes; - notes.SetServerCodeNote(0x1234, L"This is a note."); + MemoryNotesModelHarness notes; + notes.SetServerNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); const std::string sSerialized = ":0x1234:\"This is a note.\""; @@ -1380,8 +1380,8 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestDeserializeDeleted) { - CodeNotesModelHarness notes; - notes.SetServerCodeNote(0x1234, L"This is a note."); + MemoryNotesModelHarness notes; + notes.SetServerNote(0x1234, L"This is a note."); Assert::AreEqual(AssetChanges::None, notes.GetChanges()); const std::string sSerialized = ":0x1234:\"\""; @@ -1396,21 +1396,21 @@ TEST_CLASS(CodeNotesModel_Tests) Assert::IsTrue(notes.IsNoteModified(0x1234U)); // committed deleted note does not exist - notes.SetServerCodeNote(0x1234U, L""); + notes.SetServerNote(0x1234U, L""); notes.AssertNoNote(0x1234); } TEST_METHOD(TestGetNextNoteAddress) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sPointerNote = L"Pointer\n" L"+8 = Unknown\n" L"+16 = Small (16-bit)"; - notes.AddCodeNote(1234, "Author", sPointerNote); - notes.AddCodeNote(20, "Author", L"After [32-bit]"); - notes.AddCodeNote(4, "Author", L"Before"); - notes.AddCodeNote(12, "Author", L"In the middle"); + notes.AddMemoryNote(1234, "Author", sPointerNote); + notes.AddMemoryNote(20, "Author", L"After [32-bit]"); + notes.AddMemoryNote(4, "Author", L"Before"); + notes.AddMemoryNote(12, "Author", L"In the middle"); notes.DoFrame(); Assert::AreEqual({4U}, notes.GetNextNoteAddress({0U})); @@ -1430,7 +1430,7 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestGetNextNoteAddressOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -1441,10 +1441,10 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF88 = Small (8-bit)\n" // 8+8=16 L"+0xFFFFFF90 = Medium (16-bit)\n" // 16+8=24 L"+0xFFFFFF98 = Large (32-bit)"; // 24+8=32 - notes.AddCodeNote(4, "Author", sPointerNote); - notes.AddCodeNote(40, "Author", L"After [32-bit]"); - notes.AddCodeNote(1, "Author", L"Before"); - notes.AddCodeNote(20, "Author", L"In the middle"); + notes.AddMemoryNote(4, "Author", sPointerNote); + notes.AddMemoryNote(40, "Author", L"After [32-bit]"); + notes.AddMemoryNote(1, "Author", L"Before"); + notes.AddMemoryNote(20, "Author", L"In the middle"); notes.DoFrame(); Assert::AreEqual({1U}, notes.GetNextNoteAddress({0U})); @@ -1465,15 +1465,15 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestGetPreviousNoteAddress) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; const std::wstring sPointerNote = L"Pointer\n" L"+8 = Unknown\n" L"+16 = Small (16-bit)"; - notes.AddCodeNote(1234, "Author", sPointerNote); - notes.AddCodeNote(20, "Author", L"After [32-bit]"); - notes.AddCodeNote(4, "Author", L"Before"); - notes.AddCodeNote(12, "Author", L"In the middle"); + notes.AddMemoryNote(1234, "Author", sPointerNote); + notes.AddMemoryNote(20, "Author", L"After [32-bit]"); + notes.AddMemoryNote(4, "Author", L"Before"); + notes.AddMemoryNote(12, "Author", L"In the middle"); notes.DoFrame(); Assert::AreEqual({1234U}, notes.GetPreviousNoteAddress({0xFFFFFFFFU})); @@ -1493,7 +1493,7 @@ TEST_CLASS(CodeNotesModel_Tests) TEST_METHOD(TestGetPreviousNoteAddressOverflow) { - CodeNotesModelHarness notes; + MemoryNotesModelHarness notes; notes.mockConsoleContext.AddMemoryRegion(0, 31, ra::data::MemoryRegion::Type::SystemRAM, 0x80); std::array memory{}; notes.mockEmulatorMemoryContext.MockMemory(memory); @@ -1504,10 +1504,10 @@ TEST_CLASS(CodeNotesModel_Tests) L"+0xFFFFFF88 = Small (8-bit)\n" // 8+8=16 L"+0xFFFFFF90 = Medium (16-bit)\n" // 16+8=24 L"+0xFFFFFF98 = Large (32-bit)"; // 24+8=32 - notes.AddCodeNote(4, "Author", sPointerNote); - notes.AddCodeNote(40, "Author", L"After [32-bit]"); - notes.AddCodeNote(1, "Author", L"Before"); - notes.AddCodeNote(20, "Author", L"In the middle"); + notes.AddMemoryNote(4, "Author", sPointerNote); + notes.AddMemoryNote(40, "Author", L"After [32-bit]"); + notes.AddMemoryNote(1, "Author", L"Before"); + notes.AddMemoryNote(20, "Author", L"In the middle"); notes.DoFrame(); Assert::AreEqual({40U}, notes.GetPreviousNoteAddress({0xFFFFFFFFU})); diff --git a/tests/devkit/testutil/AssetAsserts.hh b/tests/devkit/testutil/AssetAsserts.hh index ed764d00c..bfdf0fc53 100644 --- a/tests/devkit/testutil/AssetAsserts.hh +++ b/tests/devkit/testutil/AssetAsserts.hh @@ -32,8 +32,8 @@ std::wstring ToString(const ra::data::models::Asset return L"RichPresence"; case ra::data::models::AssetType::LocalBadges: return L"LocalBadges"; - case ra::data::models::AssetType::CodeNotes: - return L"CodeNotes"; + case ra::data::models::AssetType::MemoryNotes: + return L"MemoryNotes"; case ra::data::models::AssetType::MemoryRegions: return L"MemoryRegions"; default: diff --git a/tests/mocks/MockGameContext.hh b/tests/mocks/MockGameContext.hh index 9edfc6f44..9ce11bfae 100644 --- a/tests/mocks/MockGameContext.hh +++ b/tests/mocks/MockGameContext.hh @@ -85,24 +85,24 @@ public: } } - void InitializeCodeNotes() + void InitializeNotes() { const auto nIndex = Assets().FindItemIndex(ra::data::models::AssetModelBase::TypeProperty, - ra::etoi(ra::data ::models::AssetType::CodeNotes)); + ra::etoi(ra::data ::models::AssetType::MemoryNotes)); if (nIndex != -1) Assets().RemoveAt(nIndex); - auto pCodeNotes = std::make_unique(); - pCodeNotes->Initialize( + auto pMemoryNotes = std::make_unique(); + pMemoryNotes->Initialize( [this](ra::data::ByteAddress nAddress, const std::wstring& sNote) { // a note with pointer notation is expected to keep track of where each // pointed-at note exists. this normally occurs in DoFrame, but for // the unit tests, force the update immediately after the note is updated - auto* pCodeNotes = dynamic_cast(Assets().FindCodeNotes()); - if (pCodeNotes) + auto* pMemoryNotes = dynamic_cast(Assets().FindMemoryNotes()); + if (pMemoryNotes) { GSL_SUPPRESS_TYPE3 - auto* pNote = const_cast(pCodeNotes->FindCodeNoteModel(nAddress, false)); + auto* pNote = const_cast(pMemoryNotes->FindMemoryNoteModel(nAddress, false)); if (pNote && pNote->IsPointer()) { const auto& pMemoryContext = ra::services::ServiceLocator::Get(); @@ -110,39 +110,39 @@ public: } } - OnCodeNoteChanged(nAddress, sNote); + OnMemoryNoteChanged(nAddress, sNote); }, [this](ra::data::ByteAddress nOldAddress, ra::data::ByteAddress nNewAddress, const std::wstring& sNote) { - OnCodeNoteMoved(nOldAddress, nNewAddress, sNote); + OnMemoryNoteMoved(nOldAddress, nNewAddress, sNote); }); - Assets().Append(std::move(pCodeNotes)); + Assets().Append(std::move(pMemoryNotes)); } - bool SetCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) + bool SetNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) { - auto* pCodeNotes = dynamic_cast(Assets().FindCodeNotes()); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = dynamic_cast(Assets().FindMemoryNotes()); + if (pMemoryNotes == nullptr) { - InitializeCodeNotes(); - pCodeNotes = dynamic_cast(Assets().FindCodeNotes()); - Expects(pCodeNotes != nullptr); + InitializeNotes(); + pMemoryNotes = dynamic_cast(Assets().FindMemoryNotes()); + Expects(pMemoryNotes != nullptr); } - pCodeNotes->SetServerCodeNote(nAddress, sNote); + pMemoryNotes->SetServerNote(nAddress, sNote); return true; } - bool UpdateCodeNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) + bool UpdateMemoryNote(ra::data::ByteAddress nAddress, const std::wstring& sNote) { - auto* pCodeNotes = dynamic_cast(Assets().FindCodeNotes()); - if (pCodeNotes == nullptr) + auto* pMemoryNotes = dynamic_cast(Assets().FindMemoryNotes()); + if (pMemoryNotes == nullptr) { - InitializeCodeNotes(); - pCodeNotes = dynamic_cast(Assets().FindCodeNotes()); - Expects(pCodeNotes != nullptr); + InitializeNotes(); + pMemoryNotes = dynamic_cast(Assets().FindMemoryNotes()); + Expects(pMemoryNotes != nullptr); } - pCodeNotes->SetCodeNote(nAddress, sNote); + pMemoryNotes->SetNote(nAddress, sNote); return true; } @@ -160,13 +160,13 @@ public: } private: - class MockCodeNotesModel : public ra::data::models::CodeNotesModel + class MockMemoryNotesModel : public ra::data::models::MemoryNotesModel { public: - void Initialize(CodeNoteChangedFunction fCodeNoteChanged, CodeNoteMovedFunction fCodeNoteMoved) + void Initialize(MemoryNoteChangedFunction fMemoryNoteChanged, MemoryNoteMovedFunction fMemoryNoteMoved) { - m_fCodeNoteChanged = fCodeNoteChanged; - m_fCodeNoteMoved = fCodeNoteMoved; + m_fMemoryNoteChanged = fMemoryNoteChanged; + m_fMemoryNoteMoved = fMemoryNoteMoved; } }; diff --git a/tests/services/AchievementLogicSerializer_Tests.cpp b/tests/services/AchievementLogicSerializer_Tests.cpp index f34e85f34..24e4c7049 100644 --- a/tests/services/AchievementLogicSerializer_Tests.cpp +++ b/tests/services/AchievementLogicSerializer_Tests.cpp @@ -22,7 +22,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockConsoleContext mockConsoleContext; ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x428 | Obj1 pointer\n" @@ -52,7 +52,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::PlayStation); // 24-bit read - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x428 | Obj1 pointer\n" @@ -76,7 +76,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::PSP); // 25-bit read - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x428 | Obj1 pointer\n" @@ -100,7 +100,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::GameCube); // 25-bit BE read - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x428 | Obj1 pointer\n" @@ -124,7 +124,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::GameCube); // 25-bit BE read - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [32bit]\n" L"+0x80000428 | Obj1 pointer\n" // pointer at 80123456 + offset 0x80000428 = address 0012387E @@ -148,7 +148,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::GBA); // 24-bit read with explicit offset in note - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [24bit]\n" L"+0x8428 | Obj1 pointer\n" @@ -172,7 +172,7 @@ TEST_CLASS(AchievementLogicSerializer_Tests) ra::context::mocks::MockEmulatorMemoryContext mockEmulatorMemoryContext; mockConsoleContext.SetId(ConsoleID::GameCube); // 29-bit BE read - ra::data::models::CodeNoteModel note; + ra::data::models::MemoryNoteModel note; const std::wstring sNote = L"Pointer [24bit]\n" L"+0xFFFFFFF8 | Obj1 pointer\n" diff --git a/tests/services/AchievementRuntimeExports_Tests.cpp b/tests/services/AchievementRuntimeExports_Tests.cpp index 820e74b6a..316fe5371 100644 --- a/tests/services/AchievementRuntimeExports_Tests.cpp +++ b/tests/services/AchievementRuntimeExports_Tests.cpp @@ -497,7 +497,7 @@ TEST_CLASS(AchievementRuntimeExports_Tests) AssertMenuItem(pMenu, 5, IDM_RA_FILES_ACHIEVEMENTEDITOR, "Assets &Editor"); AssertMenuItem(pMenu, 6, IDM_RA_FILES_MEMORYFINDER, "&Memory Inspector"); AssertMenuItem(pMenu, 7, IDM_RA_FILES_MEMORYBOOKMARKS, "Memory &Bookmarks"); - AssertMenuItem(pMenu, 8, IDM_RA_FILES_CODENOTES, "Code &Notes"); + AssertMenuItem(pMenu, 8, IDM_RA_FILES_CODENOTES, "Memory &Notes"); AssertMenuItem(pMenu, 9, IDM_RA_PARSERICHPRESENCE, "Rich &Presence Monitor"); AssertMenuSeparator(pMenu, 10); AssertMenuItem(pMenu, 11, IDM_RA_FILES_POINTERFINDER, "Pointer &Finder"); @@ -518,7 +518,7 @@ TEST_CLASS(AchievementRuntimeExports_Tests) AssertMenuItem(pMenu, 8, IDM_RA_FILES_ACHIEVEMENTEDITOR, "Assets &Editor"); AssertMenuItem(pMenu, 9, IDM_RA_FILES_MEMORYFINDER, "&Memory Inspector"); AssertMenuItem(pMenu, 10, IDM_RA_FILES_MEMORYBOOKMARKS, "Memory &Bookmarks"); - AssertMenuItem(pMenu, 11, IDM_RA_FILES_CODENOTES, "Code &Notes"); + AssertMenuItem(pMenu, 11, IDM_RA_FILES_CODENOTES, "Memory &Notes"); AssertMenuItem(pMenu, 12, IDM_RA_PARSERICHPRESENCE, "Rich &Presence Monitor"); AssertMenuSeparator(pMenu, 13); AssertMenuItem(pMenu, 14, IDM_RA_FILES_POINTERFINDER, "Pointer &Finder"); @@ -543,7 +543,7 @@ TEST_CLASS(AchievementRuntimeExports_Tests) AssertMenuItem(pMenu, 8, IDM_RA_FILES_ACHIEVEMENTEDITOR, "Assets &Editor"); AssertMenuItem(pMenu, 9, IDM_RA_FILES_MEMORYFINDER, "&Memory Inspector"); AssertMenuItem(pMenu, 10, IDM_RA_FILES_MEMORYBOOKMARKS, "Memory &Bookmarks"); - AssertMenuItem(pMenu, 11, IDM_RA_FILES_CODENOTES, "Code &Notes"); + AssertMenuItem(pMenu, 11, IDM_RA_FILES_CODENOTES, "Memory &Notes"); AssertMenuItem(pMenu, 12, IDM_RA_PARSERICHPRESENCE, "Rich &Presence Monitor"); AssertMenuSeparator(pMenu, 13); AssertMenuItem(pMenu, 14, IDM_RA_FILES_POINTERFINDER, "Pointer &Finder"); diff --git a/tests/services/FileLocalStorage_Tests.cpp b/tests/services/FileLocalStorage_Tests.cpp index cf394e1f3..f23316f6d 100644 --- a/tests/services/FileLocalStorage_Tests.cpp +++ b/tests/services/FileLocalStorage_Tests.cpp @@ -111,7 +111,7 @@ TEST_CLASS(FileLocalStorage_Tests) MockFileSystem mockFileSystem; FileLocalStorage storage(mockFileSystem); Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::GameData, L"12345"), std::wstring(L".\\RACache\\Data\\12345.json")); - Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::CodeNotes, L"12345"), std::wstring(L".\\RACache\\Data\\12345-Notes.json")); + Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::MemoryNotes, L"12345"), std::wstring(L".\\RACache\\Data\\12345-Notes.json")); Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::RichPresence, L"12345"), std::wstring(L".\\RACache\\Data\\12345-Rich.txt")); Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::UserAchievements, L"12345"), std::wstring(L".\\RACache\\Data\\12345-User.txt")); Assert::AreEqual(storage.GetPath(ra::services::StorageItemType::Badge, L"12345"), std::wstring(L".\\RACache\\Badge\\12345.png")); diff --git a/tests/ui/viewmodels/AssetListViewModel_Tests.cpp b/tests/ui/viewmodels/AssetListViewModel_Tests.cpp index 3166af3cd..fd62350d2 100644 --- a/tests/ui/viewmodels/AssetListViewModel_Tests.cpp +++ b/tests/ui/viewmodels/AssetListViewModel_Tests.cpp @@ -4557,14 +4557,14 @@ TEST_CLASS(AssetListViewModel_Tests) Assert::AreEqual(AssetChanges::None, pAsset->GetChanges()); } - TEST_METHOD(TestResetSelectedAllKeepsModifiedCodeNote) + TEST_METHOD(TestResetSelectedAllKeepsModifiedMemoryNote) { AssetListViewModelHarness vmAssetList; vmAssetList.MockGameId(22U); vmAssetList.AddThreeAchievements(); vmAssetList.ForceUpdateButtons(); vmAssetList.AssertButtonState(ResetButtonState::ResetAll); - vmAssetList.mockGameContext.InitializeCodeNotes(); + vmAssetList.mockGameContext.InitializeNotes(); bool bDialogShown = false; vmAssetList.mockDesktop.ExpectWindow([&bDialogShown](MessageBoxViewModel& vmMessageBox) @@ -4586,7 +4586,7 @@ TEST_CLASS(AssetListViewModel_Tests) Assert::IsTrue(vmAssetList.mockWindowManager.MemoryInspector.IsNoteUncommitted()); Assert::AreEqual(std::wstring(L"foo"), vmAssetList.mockWindowManager.MemoryInspector.GetCurrentAddressNote()); - const auto* pNote = vmAssetList.mockGameContext.Assets().FindCodeNotes()->FindCodeNote(nAddress); + const auto* pNote = vmAssetList.mockGameContext.Assets().FindMemoryNotes()->FindNote(nAddress); Assert::IsNotNull(pNote); Assert::AreEqual(std::wstring(L"foo"), *pNote); } @@ -5779,36 +5779,36 @@ TEST_CLASS(AssetListViewModel_Tests) Assert::AreEqual(AssetState::Waiting, pAchievement1->GetState()); // should still get set to waiting even if not visible } - TEST_METHOD(TestCodeNoteRevalidation) + TEST_METHOD(TestMemoryNoteRevalidation) { AssetListViewModelHarness vmAssetList; vmAssetList.SetGameId(1U); vmAssetList.SetCategoryFilter(AssetListViewModel::CategoryFilter::Local); vmAssetList.AddAchievement(AssetCategory::Local, 5, L"Ach1"); Assert::AreEqual({ 1U }, vmAssetList.FilteredAssets().Count()); - vmAssetList.mockGameContext.InitializeCodeNotes(); + vmAssetList.mockGameContext.InitializeNotes(); auto* pAchievement = dynamic_cast(vmAssetList.mockGameContext.Assets().GetItemAt(0)); Expects(pAchievement != nullptr); pAchievement->SetTrigger("0xH0001=1"); pAchievement->Validate(); - // initial state - no code note - Assert::AreEqual(std::wstring(L"Condition 1: No code note for address 0001"), pAchievement->GetValidationError()); - Assert::AreEqual(std::wstring(L"Condition 1: No code note for address 0001"), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); + // initial state - no memory note + Assert::AreEqual(std::wstring(L"Condition 1: No memory note for address 0001"), pAchievement->GetValidationError()); + Assert::AreEqual(std::wstring(L"Condition 1: No memory note for address 0001"), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); - // updated code note updates warning - vmAssetList.mockGameContext.SetCodeNote({ 1U }, L"[16-bit] Value"); - Assert::AreEqual(std::wstring(L"Condition 1: 8-bit read of address 0001 differs from code note size 16-bit"), pAchievement->GetValidationError()); - Assert::AreEqual(std::wstring(L"Condition 1: 8-bit read of address 0001 differs from code note size 16-bit"), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); + // updated memory note updates warning + vmAssetList.mockGameContext.SetNote({ 1U }, L"[16-bit] Value"); + Assert::AreEqual(std::wstring(L"Condition 1: 8-bit read of address 0001 differs from memory note size 16-bit"), pAchievement->GetValidationError()); + Assert::AreEqual(std::wstring(L"Condition 1: 8-bit read of address 0001 differs from memory note size 16-bit"), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); - // updated code note clears warning - vmAssetList.mockGameContext.SetCodeNote({ 1U }, L"[8-bit] Value"); + // updated memory note clears warning + vmAssetList.mockGameContext.SetNote({ 1U }, L"[8-bit] Value"); Assert::AreEqual(std::wstring(), pAchievement->GetValidationError()); Assert::AreEqual(std::wstring(), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); // no warning - validation not automatically performed - vmAssetList.mockGameContext.SetCodeNote({ 1U }, L"[16-bit] Value"); + vmAssetList.mockGameContext.SetNote({ 1U }, L"[16-bit] Value"); Assert::AreEqual(std::wstring(), pAchievement->GetValidationError()); Assert::AreEqual(std::wstring(), vmAssetList.FilteredAssets().GetItemAt(0)->GetWarning()); } diff --git a/tests/ui/viewmodels/AssetUploadViewModel_Tests.cpp b/tests/ui/viewmodels/AssetUploadViewModel_Tests.cpp index bbf6204c5..ad0f1b458 100644 --- a/tests/ui/viewmodels/AssetUploadViewModel_Tests.cpp +++ b/tests/ui/viewmodels/AssetUploadViewModel_Tests.cpp @@ -169,14 +169,14 @@ TEST_CLASS(AssetUploadViewModel_Tests) return *pRichPresence; } - ra::data::models::CodeNotesModel& CodeNotes() + ra::data::models::MemoryNotesModel& MemoryNotes() { - auto* pNotes = m_pAssets.FindCodeNotes(); + auto* pNotes = m_pAssets.FindMemoryNotes(); if (pNotes == nullptr) { - auto pCodeNotes = std::make_unique(); - m_pAssets.Append(std::move(pCodeNotes)); - pNotes = m_pAssets.FindCodeNotes(); + auto pMemoryNotes = std::make_unique(); + m_pAssets.Append(std::move(pMemoryNotes)); + pNotes = m_pAssets.FindMemoryNotes(); } return *pNotes; @@ -1193,13 +1193,13 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteNew) + TEST_METHOD(TestSingleMemoryNoteNew) { AssetUploadViewModelHarness vmUpload; - vmUpload.CodeNotes().SetCodeNote(0x1234, L"This is a note."); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"This is a note."); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::AreEqual({ 1U }, vmUpload.TaskCount()); Assert::IsFalse(vmUpload.mockDesktop.WasDialogShown()); @@ -1219,19 +1219,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteNewSubset) + TEST_METHOD(TestSingleMemoryNoteNewSubset) { AssetUploadViewModelHarness vmUpload; vmUpload.mockGameContext.MockSubset(33, 22, "Subset"); - vmUpload.CodeNotes().SetCodeNote(0x1234, L"This is a note."); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"This is a note."); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::AreEqual({1U}, vmUpload.TaskCount()); Assert::IsFalse(vmUpload.mockDesktop.WasDialogShown()); @@ -1251,19 +1251,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteDeleted) + TEST_METHOD(TestSingleMemoryNoteDeleted) { AssetUploadViewModelHarness vmUpload; - vmUpload.CodeNotes().SetServerCodeNote(0x1234, L"This is a note."); - vmUpload.CodeNotes().SetCodeNote(0x1234, L""); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetServerNote(0x1234, L"This is a note."); + vmUpload.MemoryNotes().SetNote(0x1234, L""); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::AreEqual({ 1U }, vmUpload.TaskCount()); Assert::IsFalse(vmUpload.mockDesktop.WasDialogShown()); @@ -1282,19 +1282,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteDifferentAuthor) + TEST_METHOD(TestSingleMemoryNoteDifferentAuthor) { AssetUploadViewModelHarness vmUpload; vmUpload.mockUserContext.SetUsername("Author"); - vmUpload.CodeNotes().SetServerCodeNote(0x1234, L"Test"); + vmUpload.MemoryNotes().SetServerNote(0x1234, L"Test"); vmUpload.mockUserContext.SetUsername("Me"); - vmUpload.CodeNotes().SetCodeNote(0x1234, L"Test2"); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"Test2"); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); bool bWindowSeen = false; vmUpload.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MessageBoxViewModel& vmMessageBox) @@ -1307,7 +1307,7 @@ TEST_CLASS(AssetUploadViewModel_Tests) return ra::ui::DialogResult::Yes; }); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::IsTrue(bWindowSeen); Assert::AreEqual({ 1U }, vmUpload.TaskCount()); @@ -1327,19 +1327,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteDeletedDifferentAuthor) + TEST_METHOD(TestSingleMemoryNoteDeletedDifferentAuthor) { AssetUploadViewModelHarness vmUpload; vmUpload.mockUserContext.SetUsername("Author"); - vmUpload.CodeNotes().SetServerCodeNote(0x1234, L"Test"); + vmUpload.MemoryNotes().SetServerNote(0x1234, L"Test"); vmUpload.mockUserContext.SetUsername("Me"); - vmUpload.CodeNotes().SetCodeNote(0x1234, L""); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L""); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); bool bWindowSeen = false; vmUpload.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MessageBoxViewModel& vmMessageBox) @@ -1352,7 +1352,7 @@ TEST_CLASS(AssetUploadViewModel_Tests) return ra::ui::DialogResult::Yes; }); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::IsTrue(bWindowSeen); Assert::AreEqual({ 1U }, vmUpload.TaskCount()); @@ -1371,19 +1371,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestSingleCodeNoteDifferentAuthorCancel) + TEST_METHOD(TestSingleMemoryNoteDifferentAuthorCancel) { AssetUploadViewModelHarness vmUpload; vmUpload.mockUserContext.SetUsername("Author"); - vmUpload.CodeNotes().SetServerCodeNote(0x1234, L"Test"); + vmUpload.MemoryNotes().SetServerNote(0x1234, L"Test"); vmUpload.mockUserContext.SetUsername("Me"); - vmUpload.CodeNotes().SetCodeNote(0x1234, L"Test2"); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"Test2"); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); bool bWindowSeen = false; vmUpload.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MessageBoxViewModel& vmMessageBox) @@ -1396,14 +1396,14 @@ TEST_CLASS(AssetUploadViewModel_Tests) return ra::ui::DialogResult::No; }); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::IsTrue(bWindowSeen); Assert::AreEqual({ 0U }, vmUpload.TaskCount()); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); } - TEST_METHOD(TestSingleCodeNoteDifferentLong) + TEST_METHOD(TestSingleMemoryNoteDifferentLong) { std::wstring sLongNote; for (int i = 0; i < 48; ++i) @@ -1411,10 +1411,10 @@ TEST_CLASS(AssetUploadViewModel_Tests) AssetUploadViewModelHarness vmUpload; vmUpload.mockUserContext.SetUsername("Author"); - vmUpload.CodeNotes().SetServerCodeNote(0x1234, sLongNote); + vmUpload.MemoryNotes().SetServerNote(0x1234, sLongNote); vmUpload.mockUserContext.SetUsername("Me"); - vmUpload.CodeNotes().SetCodeNote(0x1234, L"Test"); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"Test"); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); bool bWindowSeen = false; vmUpload.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MessageBoxViewModel& vmMessageBox) @@ -1431,7 +1431,7 @@ TEST_CLASS(AssetUploadViewModel_Tests) return ra::ui::DialogResult::Yes; }); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::IsTrue(bWindowSeen); Assert::AreEqual({ 1U }, vmUpload.TaskCount()); @@ -1451,19 +1451,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::IsTrue(bApiCalled); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(1); } - TEST_METHOD(TestMultipleCodeNotes) + TEST_METHOD(TestMultipleMemoryNotes) { AssetUploadViewModelHarness vmUpload; - vmUpload.CodeNotes().SetCodeNote(0x1234, L"This is a note."); - vmUpload.CodeNotes().SetCodeNote(0x1235, L"This is another note."); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"This is a note."); + vmUpload.MemoryNotes().SetNote(0x1235, L"This is another note."); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::AreEqual({ 2U }, vmUpload.TaskCount()); int nApiCount = 0; @@ -1490,19 +1490,19 @@ TEST_CLASS(AssetUploadViewModel_Tests) vmUpload.DoUpload(); Assert::AreEqual(2, nApiCount); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(2); } - TEST_METHOD(TestMultipleCodeNotes429) + TEST_METHOD(TestMultipleMemoryNotes429) { AssetUploadViewModelHarness vmUpload; - vmUpload.CodeNotes().SetCodeNote(0x1234, L"This is a note."); - vmUpload.CodeNotes().SetCodeNote(0x1235, L"This is another note."); - Assert::AreEqual(AssetChanges::Unpublished, vmUpload.CodeNotes().GetChanges()); + vmUpload.MemoryNotes().SetNote(0x1234, L"This is a note."); + vmUpload.MemoryNotes().SetNote(0x1235, L"This is another note."); + Assert::AreEqual(AssetChanges::Unpublished, vmUpload.MemoryNotes().GetChanges()); - vmUpload.QueueAsset(vmUpload.CodeNotes()); + vmUpload.QueueAsset(vmUpload.MemoryNotes()); Assert::AreEqual({2U}, vmUpload.TaskCount()); int nApiCount = 0; @@ -1535,7 +1535,7 @@ TEST_CLASS(AssetUploadViewModel_Tests) // 1 = 1235, delayed // 2 = 1235, success Assert::AreEqual(3, nApiCount); - Assert::AreEqual(AssetChanges::None, vmUpload.CodeNotes().GetChanges()); + Assert::AreEqual(AssetChanges::None, vmUpload.MemoryNotes().GetChanges()); vmUpload.AssertSuccess(2); } diff --git a/tests/ui/viewmodels/IntegrationMenuViewModel_Tests.cpp b/tests/ui/viewmodels/IntegrationMenuViewModel_Tests.cpp index 3def0c94f..9281de269 100644 --- a/tests/ui/viewmodels/IntegrationMenuViewModel_Tests.cpp +++ b/tests/ui/viewmodels/IntegrationMenuViewModel_Tests.cpp @@ -154,7 +154,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) menu.AssertMenuItem(10, IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); menu.AssertMenuItem(11, IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); menu.AssertMenuItem(12, IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - menu.AssertMenuItem(13, IDM_RA_FILES_CODENOTES, L"Code &Notes"); + menu.AssertMenuItem(13, IDM_RA_FILES_CODENOTES, L"Memory &Notes"); menu.AssertMenuItem(14, IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); menu.AssertMenuSeparator(15); menu.AssertMenuItem(16, IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -185,7 +185,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) menu.AssertMenuItem(13, IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); menu.AssertMenuItem(14, IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); menu.AssertMenuItem(15, IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - menu.AssertMenuItem(16, IDM_RA_FILES_CODENOTES, L"Code &Notes"); + menu.AssertMenuItem(16, IDM_RA_FILES_CODENOTES, L"Memory &Notes"); menu.AssertMenuItem(17, IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); menu.AssertMenuSeparator(18); menu.AssertMenuItem(19, IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -214,7 +214,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) menu.AssertMenuItem(8, IDM_RA_FILES_ACHIEVEMENTEDITOR, L"Assets &Editor"); menu.AssertMenuItem(9, IDM_RA_FILES_MEMORYFINDER, L"&Memory Inspector"); menu.AssertMenuItem(10, IDM_RA_FILES_MEMORYBOOKMARKS, L"Memory &Bookmarks"); - menu.AssertMenuItem(11, IDM_RA_FILES_CODENOTES, L"Code &Notes"); + menu.AssertMenuItem(11, IDM_RA_FILES_CODENOTES, L"Memory &Notes"); menu.AssertMenuItem(12, IDM_RA_PARSERICHPRESENCE, L"Rich &Presence Monitor"); menu.AssertMenuSeparator(13); menu.AssertMenuItem(14, IDM_RA_FILES_POINTERFINDER, L"Pointer &Finder"); @@ -553,22 +553,22 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) menu.AssertShowWindow(IDM_RA_FILES_MEMORYBOOKMARKS, false, "view memory bookmarks", DialogResult::None); } - TEST_METHOD(TestShowCodeNotesHardcore) + TEST_METHOD(TestShowMemoryNotesHardcore) { IntegrationMenuViewModelHarness menu; - menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, true, "view code notes", DialogResult::Yes); + menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, true, "view memory notes", DialogResult::Yes); } - TEST_METHOD(TestShowCodeNotesHardcoreAbort) + TEST_METHOD(TestShowMemoryNotesHardcoreAbort) { IntegrationMenuViewModelHarness menu; - menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, true, "view code notes", DialogResult::No); + menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, true, "view memory notes", DialogResult::No); } - TEST_METHOD(TestShowCodeNotesNonHardcore) + TEST_METHOD(TestShowMemoryNotesNonHardcore) { IntegrationMenuViewModelHarness menu; - menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, false, "view code notes", DialogResult::None); + menu.AssertShowWindow(IDM_RA_FILES_CODENOTES, false, "view memory notes", DialogResult::None); } TEST_METHOD(TestShowRichPresenceMonitorHardcore) @@ -647,7 +647,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) }); bool bNotesShown = false; - menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::CodeNotesViewModel&) + menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::MemoryNotesViewModel&) { bNotesShown = true; return DialogResult::None; @@ -709,7 +709,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) }); bool bNotesShown = false; - menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::CodeNotesViewModel&) + menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::MemoryNotesViewModel&) { bNotesShown = true; return DialogResult::None; @@ -771,7 +771,7 @@ TEST_CLASS(IntegrationMenuViewModel_Tests) }); bool bNotesShown = false; - menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::CodeNotesViewModel&) + menu.mockDesktop.ExpectWindow([&bNotesShown](ra::ui::viewmodels::MemoryNotesViewModel&) { bNotesShown = true; return DialogResult::None; diff --git a/tests/ui/viewmodels/MemoryBookmarksViewModel_Tests.cpp b/tests/ui/viewmodels/MemoryBookmarksViewModel_Tests.cpp index 988d20e19..c08434c5d 100644 --- a/tests/ui/viewmodels/MemoryBookmarksViewModel_Tests.cpp +++ b/tests/ui/viewmodels/MemoryBookmarksViewModel_Tests.cpp @@ -236,12 +236,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual({ 0U }, bookmarks.Bookmarks().Items().Count()); } - TEST_METHOD(TestLoadBookmarksDescriptionFromCodeNotes) + TEST_METHOD(TestLoadBookmarksDescriptionFromMemoryNotes) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -258,12 +258,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::IsFalse(bookmark.IsCustomDescription()); } - TEST_METHOD(TestLoadBookmarksDescriptionFromMultilineCodeNotes) + TEST_METHOD(TestLoadBookmarksDescriptionFromMultilineMemoryNotes) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"[8-bit] Selected Character\r\n1=Bob\r\n2=Jane"); + bookmarks.mockGameContext.SetNote(1234U, L"[8-bit] Selected Character\r\n1=Bob\r\n2=Jane"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"MemAddr\":\"0xH4D2\"}]}"); @@ -319,12 +319,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::IsTrue(bookmark.IsCustomDescription()); } - TEST_METHOD(TestLoadBookmarksDescriptionFromFileAndCodeNotes) + TEST_METHOD(TestLoadBookmarksDescriptionFromFileAndMemoryNotes) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10,\"Description\":\"desc\"}]}"); @@ -341,12 +341,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::IsTrue(bookmark.IsCustomDescription()); } - TEST_METHOD(TestLoadBookmarksDescriptionFromFileMatchesCodeNote) + TEST_METHOD(TestLoadBookmarksDescriptionFromFileMatchesMemoryNote) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10,\"Description\":\"Note description\"}]}"); @@ -368,7 +368,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockDesktop.ExpectWindow([](ra::ui::viewmodels::FileDialogViewModel& vmFileDialog) { @@ -405,7 +405,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -429,7 +429,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Description\":\"Old\",\"Size\":10}]}"); @@ -502,12 +502,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(std::string("{\"Bookmarks\":[{\"MemAddr\":\"I:0xG005c7d80&536870911_M:fI00000038\"}]}"), sContents); } - TEST_METHOD(TestCodeNoteChanged) + TEST_METHOD(TestMemoryNoteChanged) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -524,7 +524,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, bookmark->GetFormat()); Assert::IsFalse(bookmark->IsCustomDescription()); - bookmarks.mockGameContext.SetCodeNote(1234U, L"New description"); + bookmarks.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, bookmarks.Bookmarks().Items().Count()); bookmark = bookmarks.GetBookmark(0); @@ -537,12 +537,12 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::IsFalse(bookmark->IsCustomDescription()); } - TEST_METHOD(TestCodeNoteChangedCustomDescription) + TEST_METHOD(TestMemoryNoteChangedCustomDescription) { MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10,\"Description\":\"My Description\"}]}"); @@ -559,7 +559,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, bookmark->GetFormat()); Assert::IsTrue(bookmark->IsCustomDescription()); - bookmarks.mockGameContext.SetCodeNote(1234U, L"New description"); + bookmarks.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, bookmarks.Bookmarks().Items().Count()); bookmark = bookmarks.GetBookmark(0); @@ -571,7 +571,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, bookmark->GetFormat()); Assert::IsTrue(bookmark->IsCustomDescription()); - bookmarks.mockGameContext.SetCodeNote(1234U, L"My Description"); + bookmarks.mockGameContext.SetNote(1234U, L"My Description"); Assert::AreEqual({ 1U }, bookmarks.Bookmarks().Items().Count()); bookmark = bookmarks.GetBookmark(0); @@ -583,7 +583,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, bookmark->GetFormat()); Assert::IsFalse(bookmark->IsCustomDescription()); - bookmarks.mockGameContext.SetCodeNote(1234U, L"New description"); + bookmarks.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, bookmarks.Bookmarks().Items().Count()); bookmark = bookmarks.GetBookmark(0); @@ -673,7 +673,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) TEST_METHOD(TestAddBookmarkForNote) { MemoryBookmarksViewModelHarness bookmarks; - bookmarks.mockGameContext.SetCodeNote(2345U, L"NOTE"); + bookmarks.mockGameContext.SetNote(2345U, L"NOTE"); bookmarks.AddBookmark(2345U, ra::data::Memory::Size::SixteenBit); @@ -694,7 +694,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) TEST_METHOD(TestAddBookmarkForNoteHex) { MemoryBookmarksViewModelHarness bookmarks; - bookmarks.mockGameContext.SetCodeNote(2345U, L"NOTE (BCD)"); + bookmarks.mockGameContext.SetNote(2345U, L"NOTE (BCD)"); bookmarks.AddBookmark(2345U, ra::data::Memory::Size::SixteenBit); @@ -902,7 +902,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockFileSystem.MockFile(L"E:\\Data\\3-Bookmarks.json", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -939,7 +939,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockFileSystem.MockFile(L"E:\\Data\\3-Bookmarks.json", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -970,7 +970,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"MemAddr\":\"0xH04d2\"}]}"); @@ -1009,7 +1009,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); @@ -1392,7 +1392,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) bookmarks.AddBookmark(4U, ra::data::Memory::Size::Double32); - // without a code note, assume the user is bookmarking the 4 significant bytes + // without a memory note, assume the user is bookmarking the 4 significant bytes Assert::AreEqual({1U}, bookmarks.Bookmarks().Items().Count()); const auto& bookmark = *bookmarks.GetBookmark(0); Assert::AreEqual(std::wstring(L""), bookmark.GetRealNote()); @@ -1410,8 +1410,8 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(std::wstring(L"0.0"), bookmark.GetPreviousValue()); Assert::AreEqual(1U, bookmark.GetChanges()); - // with a code note, align the bookmark to the 4 significant bytes - bookmarks.mockGameContext.SetCodeNote(8U, L"[double] Note description"); + // with a memory note, align the bookmark to the 4 significant bytes + bookmarks.mockGameContext.SetNote(8U, L"[double] Note description"); bookmarks.AddBookmark(8U, ra::data::Memory::Size::Double32); Assert::AreEqual({2U}, bookmarks.Bookmarks().Items().Count()); @@ -1431,7 +1431,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) Assert::AreEqual(std::wstring(L"0.0"), bookmark2.GetPreviousValue()); Assert::AreEqual(1U, bookmark2.GetChanges()); - // does not exactly match code note address, assume the user is bookmarking the most significant bytes + // does not exactly match memory note address, assume the user is bookmarking the most significant bytes bookmarks.AddBookmark(12U, ra::data::Memory::Size::Double32); Assert::AreEqual({3U}, bookmarks.Bookmarks().Items().Count()); const auto& bookmark3 = *bookmarks.GetBookmark(2); @@ -1610,7 +1610,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(0x0020U, L"[16-bit pointer]\n+8: data here"); + bookmarks.mockGameContext.SetNote(0x0020U, L"[16-bit pointer]\n+8: data here"); bookmarks.AddBookmark("I:0x 0020_M:0xW0008"); @@ -1638,14 +1638,14 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(0x0020U, L"[16-bit pointer]\n+8: data here"); + bookmarks.mockGameContext.SetNote(0x0020U, L"[16-bit pointer]\n+8: data here"); bookmarks.mockFileSystem.MockFile(L"E:\\Data\\3-Bookmarks.json", "{\"Bookmarks\":[{\"MemAddr\":\"I:0x 0020_M:0xW0008\"}]}"); std::array memory{}; bookmarks.mockEmulatorContext.MockMemory(memory); memory.at(0x20) = 0x10; - bookmarks.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + bookmarks.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); bool bDialogSeen = false; bookmarks.mockDesktop.ExpectWindow( @@ -1681,7 +1681,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"MemAddr\":\"0xH04d2\"}]}"); @@ -1719,14 +1719,14 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(0x0020U, L"[16-bit pointer]\n+8: data here"); + bookmarks.mockGameContext.SetNote(0x0020U, L"[16-bit pointer]\n+8: data here"); bookmarks.mockFileSystem.MockFile(L"E:\\Data\\3-Bookmarks.json", "{\"Bookmarks\":[{\"Size\":15,\"MemAddr\":\"I:0x 0020_M:0xW0008\"}]}"); std::array memory{}; bookmarks.mockEmulatorContext.MockMemory(memory); memory.at(0x20) = 0x10; - bookmarks.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + bookmarks.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); bool bDialogSeen = false; bookmarks.mockDesktop.ExpectWindow( @@ -1762,7 +1762,7 @@ TEST_CLASS(MemoryBookmarksViewModel_Tests) MemoryBookmarksViewModelHarness bookmarks; bookmarks.SetIsVisible(true); bookmarks.mockGameContext.SetGameId(3U); - bookmarks.mockGameContext.SetCodeNote(1234U, L"Note description"); + bookmarks.mockGameContext.SetNote(1234U, L"Note description"); bookmarks.mockLocalStorage.MockStoredData(ra::services::StorageItemType::Bookmarks, L"3", "{\"Bookmarks\":[{\"Address\":1234,\"Size\":10}]}"); diff --git a/tests/ui/viewmodels/MemoryInspectorViewModel_Tests.cpp b/tests/ui/viewmodels/MemoryInspectorViewModel_Tests.cpp index e40d81584..6080a7025 100644 --- a/tests/ui/viewmodels/MemoryInspectorViewModel_Tests.cpp +++ b/tests/ui/viewmodels/MemoryInspectorViewModel_Tests.cpp @@ -62,7 +62,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) mockUserContext.SetUsername("Author"); - mockGameContext.InitializeCodeNotes(); + mockGameContext.InitializeNotes(); Viewer().DoFrame(); // load memory into viewer so CurrentAddress value can be read } @@ -80,10 +80,10 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) bool CurrentBitsVisible() const { return GetValue(CurrentBitsVisibleProperty); } - const std::wstring* FindCodeNote(ra::data::ByteAddress nAddress) const + const std::wstring* FindNote(ra::data::ByteAddress nAddress) const { - const auto* pCodeNotes = mockGameContext.Assets().FindCodeNotes(); - return (pCodeNotes != nullptr) ? pCodeNotes->FindCodeNote(nAddress) : nullptr; + const auto* pMemoryNotes = mockGameContext.Assets().FindMemoryNotes(); + return (pMemoryNotes != nullptr) ? pMemoryNotes->FindNote(nAddress) : nullptr; } void PreparePublish(ra::data::ByteAddress nAddress, std::wstring sNote) @@ -110,7 +110,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) SetValue(CanModifyNotesProperty, true); - mockGameContext.Assets().FindCodeNotes()->SetCodeNote(nAddress, sNote); + mockGameContext.Assets().FindMemoryNotes()->SetNote(nAddress, sNote); SetCurrentAddress(nAddress); Assert::AreEqual(sNote, GetCurrentAddressNote()); @@ -138,7 +138,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) SetValue(CanModifyNotesProperty, true); - mockGameContext.Assets().FindCodeNotes()->SetCodeNote(nAddress, sNote); + mockGameContext.Assets().FindMemoryNotes()->SetNote(nAddress, sNote); SetCurrentAddress(nAddress); Assert::AreEqual(sNote, GetCurrentAddressNote()); @@ -212,8 +212,8 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) inspector.mockGameContext.NotifyActiveGameChanged(); // enable note support inspector.SetCurrentAddress({ 3U }); - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote({3U}, L"Note on 3"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({3U}, L"Note on 3"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote({3U}, L"Note on 3"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({3U}, L"Note on 3"); Assert::AreEqual({ 3U }, inspector.GetCurrentAddress()); Assert::AreEqual(std::wstring(L"0x0003"), inspector.GetCurrentAddressText()); @@ -225,7 +225,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) Assert::IsFalse(inspector.CanRevertCurrentAddressNote()); // update note directly as SetCurrentNoteAddress doesn't cause UpdateNoteButtons to be called - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({3U}, L"Modified Note on 3"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({3U}, L"Modified Note on 3"); Assert::IsFalse(inspector.IsCurrentAddressNoteReadOnly()); Assert::IsTrue(inspector.CanEditCurrentAddressNote()); @@ -238,7 +238,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) MemoryInspectorViewModelHarness inspector; inspector.mockGameContext.SetGameId(1); inspector.mockGameContext.NotifyActiveGameChanged(); // enable note support - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote({3U}, L"[8-bit Pointer]\n+1 Test"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote({3U}, L"[8-bit Pointer]\n+1 Test"); inspector.SetCurrentAddress({ 3U }); @@ -263,7 +263,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) Assert::IsFalse(inspector.CanRevertCurrentAddressNote()); inspector.mockEmulatorContext.WriteMemoryByte({3U}, 2); - inspector.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + inspector.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); Assert::AreEqual({ 4U }, inspector.GetCurrentAddress()); Assert::AreEqual(std::wstring(L"0x0004"), inspector.GetCurrentAddressText()); @@ -372,7 +372,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) MemoryInspectorViewModelHarness inspector; bool bWindowSeen = false; - inspector.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::CodeNotesViewModel&) + inspector.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MemoryNotesViewModel&) { bWindowSeen = true; return ra::ui::DialogResult::OK; @@ -386,10 +386,10 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) { MemoryInspectorViewModelHarness inspector; inspector.mockGameContext.SetGameId({ 3 }); - inspector.mockGameContext.SetCodeNote({ 8 }, L"Eight"); - inspector.mockGameContext.SetCodeNote({ 12 }, L"Twelve"); - inspector.mockGameContext.SetCodeNote({ 16 }, L"Sixteen"); - inspector.mockGameContext.SetCodeNote({ 20 }, L"Twenty"); + inspector.mockGameContext.SetNote({ 8 }, L"Eight"); + inspector.mockGameContext.SetNote({ 12 }, L"Twelve"); + inspector.mockGameContext.SetNote({ 16 }, L"Sixteen"); + inspector.mockGameContext.SetNote({ 20 }, L"Twenty"); inspector.SetCurrentAddress(14); Assert::AreEqual(std::wstring(), inspector.GetCurrentAddressNote()); @@ -411,10 +411,10 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) { MemoryInspectorViewModelHarness inspector; inspector.mockGameContext.SetGameId({ 3 }); - inspector.mockGameContext.SetCodeNote({ 8 }, L"Eight"); - inspector.mockGameContext.SetCodeNote({ 12 }, L"Twelve"); - inspector.mockGameContext.SetCodeNote({ 16 }, L"Sixteen"); - inspector.mockGameContext.SetCodeNote({ 20 }, L"Twenty"); + inspector.mockGameContext.SetNote({ 8 }, L"Eight"); + inspector.mockGameContext.SetNote({ 12 }, L"Twelve"); + inspector.mockGameContext.SetNote({ 16 }, L"Sixteen"); + inspector.mockGameContext.SetNote({ 20 }, L"Twenty"); inspector.SetCurrentAddress(14); Assert::AreEqual(std::wstring(), inspector.GetCurrentAddressNote()); @@ -456,7 +456,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) TEST_METHOD(TestPublishCurrentAddressNoteDelete) { MemoryInspectorViewModelHarness inspector; - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote(0x12, L"Test"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote(0x12, L"Test"); inspector.PreparePublish(0x12, L""); Assert::IsTrue(inspector.CanPublishCurrentAddressNote()); @@ -470,7 +470,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) TEST_METHOD(TestPublishCurrentAddressNoteCancel) { MemoryInspectorViewModelHarness inspector; - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote(0x12, L"Test"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote(0x12, L"Test"); inspector.mockUserContext.SetUsername("Me"); inspector.PreparePublish(0x12, L"Test2"); @@ -497,7 +497,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) TEST_METHOD(TestRevertCurrentAddressNoteApprove) { MemoryInspectorViewModelHarness inspector; - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote(0x12, L"Test"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote(0x12, L"Test"); inspector.mockUserContext.SetUsername("Me"); inspector.PreparePublish(0x12, L"Test2"); @@ -518,14 +518,14 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) Assert::IsTrue(bWindowSeen); Assert::IsFalse(inspector.CanRevertCurrentAddressNote()); Assert::AreEqual(std::wstring(L"Test"), inspector.GetCurrentAddressNote()); - Assert::AreEqual(std::wstring(L"Test"), *inspector.mockGameContext.Assets().FindCodeNotes()->FindCodeNote(0x12)); - Assert::IsFalse(inspector.mockGameContext.Assets().FindCodeNotes()->IsNoteModified(0x12)); + Assert::AreEqual(std::wstring(L"Test"), *inspector.mockGameContext.Assets().FindMemoryNotes()->FindNote(0x12)); + Assert::IsFalse(inspector.mockGameContext.Assets().FindMemoryNotes()->IsNoteModified(0x12)); } TEST_METHOD(TestRevertCurrentAddressNoteCancel) { MemoryInspectorViewModelHarness inspector; - inspector.mockGameContext.Assets().FindCodeNotes()->SetServerCodeNote(0x12, L"Test"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetServerNote(0x12, L"Test"); inspector.mockUserContext.SetUsername("Me"); inspector.PreparePublish(0x12, L"Test2"); @@ -546,8 +546,8 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) Assert::IsTrue(bWindowSeen); Assert::IsTrue(inspector.CanRevertCurrentAddressNote()); Assert::AreEqual(std::wstring(L"Test2"), inspector.GetCurrentAddressNote()); - Assert::AreEqual(std::wstring(L"Test2"), *inspector.mockGameContext.Assets().FindCodeNotes()->FindCodeNote(0x12)); - Assert::IsTrue(inspector.mockGameContext.Assets().FindCodeNotes()->IsNoteModified(0x12)); + Assert::AreEqual(std::wstring(L"Test2"), *inspector.mockGameContext.Assets().FindMemoryNotes()->FindNote(0x12)); + Assert::IsTrue(inspector.mockGameContext.Assets().FindMemoryNotes()->IsNoteModified(0x12)); } TEST_METHOD(TestPublishCurrentAddressNoteFailed) @@ -558,7 +558,7 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) bool bWindowSeen = false; inspector.mockDesktop.ExpectWindow([&bWindowSeen](ra::ui::viewmodels::MessageBoxViewModel& vmMessageBox) { Assert::AreEqual(std::wstring(L"Publish failed."), vmMessageBox.GetHeader()); - Assert::AreEqual(std::wstring(L"0 items successfully uploaded.\n\n1 items failed:\n* Code Notes: "), vmMessageBox.GetMessage()); + Assert::AreEqual(std::wstring(L"0 items successfully uploaded.\n\n1 items failed:\n* Memory Notes: "), vmMessageBox.GetMessage()); Assert::AreEqual(ra::ui::viewmodels::MessageBoxViewModel::Buttons::OK, vmMessageBox.GetButtons()); bWindowSeen = true; @@ -681,8 +681,8 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) { MemoryInspectorViewModelHarness inspector; inspector.mockGameContext.SetGameId({ 3 }); - inspector.mockGameContext.SetCodeNote({ 3U }, L"Test"); - inspector.mockGameContext.SetCodeNote({ 5U }, L"Test2"); + inspector.mockGameContext.SetNote({ 3U }, L"Test"); + inspector.mockGameContext.SetNote({ 5U }, L"Test2"); inspector.mockGameContext.NotifyGameLoad(); @@ -740,11 +740,11 @@ TEST_CLASS(MemoryInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); memory.at(4) = 12; - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\n" L"+4: [32-bit] Current HP\n" L"+8: [32-bit] Max HP"); - inspector.mockGameContext.DoFrame(); // force indirect code note initialization + inspector.mockGameContext.DoFrame(); // force indirect memory note initialization inspector.SetCurrentAddress(16U); inspector.BookmarkCurrentAddress(); diff --git a/tests/ui/viewmodels/CodeNotesViewModel_Tests.cpp b/tests/ui/viewmodels/MemoryNotesViewModel_Tests.cpp similarity index 85% rename from tests/ui/viewmodels/CodeNotesViewModel_Tests.cpp rename to tests/ui/viewmodels/MemoryNotesViewModel_Tests.cpp index 407640f53..dc68b60c2 100644 --- a/tests/ui/viewmodels/CodeNotesViewModel_Tests.cpp +++ b/tests/ui/viewmodels/MemoryNotesViewModel_Tests.cpp @@ -1,7 +1,7 @@ #include "CppUnitTest.h" #include "ui\EditorTheme.hh" -#include "ui\viewmodels\CodeNotesViewModel.hh" +#include "ui\viewmodels\MemoryNotesViewModel.hh" #include "ui\viewmodels\MessageBoxViewModel.hh" #include "tests\ui\UIAsserts.hh" @@ -25,10 +25,10 @@ namespace ui { namespace viewmodels { namespace tests { -TEST_CLASS(CodeNotesViewModel_Tests) +TEST_CLASS(MemoryNotesViewModel_Tests) { private: - class CodeNotesViewModelHarness : public CodeNotesViewModel + class MemoryNotesViewModelHarness : public MemoryNotesViewModel { public: ra::api::mocks::MockServer mockServer; @@ -44,30 +44,30 @@ TEST_CLASS(CodeNotesViewModel_Tests) ra::ui::EditorTheme editorTheme; - CodeNotesViewModelHarness() noexcept : m_themeOverride(&editorTheme) {} + MemoryNotesViewModelHarness() noexcept : m_themeOverride(&editorTheme) {} void PopulateNotes() { mockGameContext.SetGameId(1U); - mockGameContext.SetCodeNote(0x0010, L"Score X000"); - mockGameContext.SetCodeNote(0x0011, L"Score 0X00"); - mockGameContext.SetCodeNote(0x0012, L"Score 00X0"); - mockGameContext.SetCodeNote(0x0013, L"Score 000X"); - mockGameContext.SetCodeNote(0x0016, L"[32-bit] Score"); + mockGameContext.SetNote(0x0010, L"Score X000"); + mockGameContext.SetNote(0x0011, L"Score 0X00"); + mockGameContext.SetNote(0x0012, L"Score 00X0"); + mockGameContext.SetNote(0x0013, L"Score 000X"); + mockGameContext.SetNote(0x0016, L"[32-bit] Score"); - mockGameContext.SetCodeNote(0x001A, L"Gender\n0=Male\n1=Female"); + mockGameContext.SetNote(0x001A, L"Gender\n0=Male\n1=Female"); - mockGameContext.SetCodeNote(0x0020, L"[16-bit] Max HP"); - mockGameContext.SetCodeNote(0x0022, L"[16-bit] Current HP"); + mockGameContext.SetNote(0x0020, L"[16-bit] Max HP"); + mockGameContext.SetNote(0x0022, L"[16-bit] Current HP"); - mockGameContext.SetCodeNote(0x0030, L"Item 1 Quantity"); - mockGameContext.SetCodeNote(0x0031, L"Item 2 Quantity"); - mockGameContext.SetCodeNote(0x0032, L"Item 3 Quantity"); - mockGameContext.SetCodeNote(0x0033, L"Item 4 Quantity"); - mockGameContext.SetCodeNote(0x0034, L"Item 5 Quantity"); + mockGameContext.SetNote(0x0030, L"Item 1 Quantity"); + mockGameContext.SetNote(0x0031, L"Item 2 Quantity"); + mockGameContext.SetNote(0x0032, L"Item 3 Quantity"); + mockGameContext.SetNote(0x0033, L"Item 4 Quantity"); + mockGameContext.SetNote(0x0034, L"Item 5 Quantity"); - mockGameContext.SetCodeNote(0x0040, L"[10 bytes] Inventory"); + mockGameContext.SetNote(0x0040, L"[10 bytes] Inventory"); } void PopulateMemory() @@ -108,7 +108,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) std::vector m_nPublishedAddresses; }; - void AssertRow(CodeNotesViewModelHarness& notes, gsl::index nRow, ra::data::ByteAddress nAddress, + void AssertRow(MemoryNotesViewModelHarness& notes, gsl::index nRow, ra::data::ByteAddress nAddress, const wchar_t* sAddress, const wchar_t* sNote) { auto* pRow = notes.Notes().GetItemAt(nRow); @@ -123,7 +123,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) public: TEST_METHOD(TestInitialValues) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; Assert::AreEqual({ 0U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -132,7 +132,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestActivateGame) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -151,7 +151,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestApplyAndResetFilter) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -204,7 +204,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestAddNoteUnfiltered) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -213,7 +213,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L"New Note"); + notes.mockGameContext.UpdateMemoryNote(0x0024, L"New Note"); Assert::AreEqual({ 15U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -226,7 +226,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestAddNoteFilteredMatch) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -238,7 +238,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L"New em Note"); + notes.mockGameContext.UpdateMemoryNote(0x0024, L"New em Note"); Assert::AreEqual({ 7U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"7/15"), notes.GetResultCount()); AssertRow(notes, 1, 0x0024, L"0x0024", L"New em Note"); @@ -246,7 +246,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestAddNoteFilteredNoMatch) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -258,14 +258,14 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L"New Note"); + notes.mockGameContext.UpdateMemoryNote(0x0024, L"New Note"); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/15"), notes.GetResultCount()); } TEST_METHOD(TestAddRemoveNote) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -274,13 +274,13 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L"New Note"); + notes.mockGameContext.UpdateMemoryNote(0x0024, L"New Note"); Assert::AreEqual({ 15U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"15/15"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L""); + notes.mockGameContext.UpdateMemoryNote(0x0024, L""); Assert::AreEqual({ 14U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -292,7 +292,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestAddRemoveNoteFiltered) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -307,13 +307,13 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L"em"), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L"New Note"); + notes.mockGameContext.UpdateMemoryNote(0x0024, L"New Note"); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"em"), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"6/15"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0024, L""); + notes.mockGameContext.UpdateMemoryNote(0x0024, L""); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"em"), notes.GetFilterValue()); @@ -331,7 +331,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteUnfiltered) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -340,7 +340,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0022, L"[8-bit] Current HP"); + notes.mockGameContext.UpdateMemoryNote(0x0022, L"[8-bit] Current HP"); Assert::AreEqual({ 14U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -352,7 +352,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteIndirectUnfiltered) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -368,7 +368,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) // This creates an indirect note at $0008, which would bring the total // note count to 15. Make sure it's not added to the list. - notes.mockGameContext.UpdateCodeNote(0x0022, sPointerNote); + notes.mockGameContext.UpdateMemoryNote(0x0022, sPointerNote); Assert::AreEqual({ 14U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -386,7 +386,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteFilterStillApplies) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -398,7 +398,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0030, L"Item 1s"); + notes.mockGameContext.UpdateMemoryNote(0x0030, L"Item 1s"); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0030, L"0x0030", L"Item 1s"); @@ -406,7 +406,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteFilterMakesHidden) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -418,7 +418,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0030, L"Thing 1 Quantity"); + notes.mockGameContext.UpdateMemoryNote(0x0030, L"Thing 1 Quantity"); Assert::AreEqual({ 5U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"5/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0031, L"0x0031", L"Item 2 Quantity"); @@ -426,7 +426,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteFilterDoesNotApply) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -438,7 +438,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0020, L"Still hidden"); + notes.mockGameContext.UpdateMemoryNote(0x0020, L"Still hidden"); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0030, L"0x0030", L"Item 1 Quantity"); @@ -446,7 +446,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteFilterMakesVisible) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -458,7 +458,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); - notes.mockGameContext.UpdateCodeNote(0x0020, L"Heal them max"); + notes.mockGameContext.UpdateMemoryNote(0x0020, L"Heal them max"); Assert::AreEqual({ 7U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"7/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0020, L"0x0020", L"Heal them max"); @@ -467,12 +467,12 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestUpdateNoteDialogNotVisible) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); // update before dialog is visible will be picked up when first made visible - notes.mockGameContext.UpdateCodeNote(0x0030, L"Item 1b"); + notes.mockGameContext.UpdateMemoryNote(0x0030, L"Item 1b"); Assert::AreEqual({ 0U }, notes.Notes().Count()); notes.SetIsVisible(true); @@ -487,7 +487,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) notes.SetIsVisible(false); // change should be picked up even if not visible - notes.mockGameContext.UpdateCodeNote(0x0030, L"Item 1s"); + notes.mockGameContext.UpdateMemoryNote(0x0030, L"Item 1s"); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0030, L"0x0030", L"Item 1s"); @@ -495,7 +495,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRemoveNoteUnfiltered) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -505,10 +505,10 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); // non-committed deleted note should still be visible in list (as [Deleted]) - auto* pCodeNotes = notes.mockGameContext.Assets().FindCodeNotes(); - Assert::IsNotNull(pCodeNotes); - Ensures(pCodeNotes != nullptr); - pCodeNotes->SetCodeNote(0x0022, L""); + auto* pMemoryNotes = notes.mockGameContext.Assets().FindMemoryNotes(); + Assert::IsNotNull(pMemoryNotes); + Ensures(pMemoryNotes != nullptr); + pMemoryNotes->SetNote(0x0022, L""); Assert::AreEqual({ 14U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -518,7 +518,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) AssertRow(notes, 8, 0x0030, L"0x0030", L"Item 1 Quantity"); // committed deleted note should be removed from the list - pCodeNotes->SetServerCodeNote(0x0022, L""); + pMemoryNotes->SetServerNote(0x0022, L""); Assert::AreEqual({ 13U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); @@ -529,7 +529,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRemoveNoteFilterMatch) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -544,10 +544,10 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); // non-committed deleted note will no longer matches filter (but still gets counted) - auto* pCodeNotes = notes.mockGameContext.Assets().FindCodeNotes(); - Assert::IsNotNull(pCodeNotes); - Ensures(pCodeNotes != nullptr); - pCodeNotes->SetCodeNote(0x0031, L""); + auto* pMemoryNotes = notes.mockGameContext.Assets().FindMemoryNotes(); + Assert::IsNotNull(pMemoryNotes); + Ensures(pMemoryNotes != nullptr); + pMemoryNotes->SetNote(0x0031, L""); Assert::AreEqual({ 5U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"5/14"), notes.GetResultCount()); @@ -555,7 +555,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) AssertRow(notes, 2, 0x0032, L"0x0032", L"Item 3 Quantity"); // committed deleted note no longer exists - pCodeNotes->SetServerCodeNote(0x0031, L""); + pMemoryNotes->SetServerNote(0x0031, L""); Assert::AreEqual({ 5U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"5/13"), notes.GetResultCount()); @@ -565,7 +565,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRemoveNoteFilterUnmatched) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -580,17 +580,17 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); // non-committed deleted note not matching filter still gets counted - auto* pCodeNotes = notes.mockGameContext.Assets().FindCodeNotes(); - Assert::IsNotNull(pCodeNotes); - Ensures(pCodeNotes != nullptr); - pCodeNotes->SetCodeNote(0x0022, L""); + auto* pMemoryNotes = notes.mockGameContext.Assets().FindMemoryNotes(); + Assert::IsNotNull(pMemoryNotes); + Ensures(pMemoryNotes != nullptr); + pMemoryNotes->SetNote(0x0022, L""); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/14"), notes.GetResultCount()); AssertRow(notes, 1, 0x0030, L"0x0030", L"Item 1 Quantity"); // committed deleted note no longer exists - pCodeNotes->SetServerCodeNote(0x0022, L""); + pMemoryNotes->SetServerNote(0x0022, L""); Assert::AreEqual({ 6U }, notes.Notes().Count()); Assert::AreEqual(std::wstring(L"6/13"), notes.GetResultCount()); @@ -599,7 +599,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestBookmarkSelected) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.PopulateMemory(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -627,7 +627,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual({ 0x0040U }, pBookmarks.Items().GetItemAt(3)->GetAddress()); Assert::AreEqual(ra::data::Memory::Size::EightBit, pBookmarks.Items().GetItemAt(3)->GetSize()); - notes.mockGameContext.SetCodeNote(0x0016, L"[32-bit BE] Score"); + notes.mockGameContext.SetNote(0x0016, L"[32-bit BE] Score"); notes.Notes().GetItemAt(0)->SetSelected(false); notes.Notes().GetItemAt(7)->SetSelected(false); notes.Notes().GetItemAt(13)->SetSelected(false); @@ -640,7 +640,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestModifiedIndicator) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); Assert::AreEqual({ 0U }, notes.Notes().Count()); @@ -656,18 +656,18 @@ TEST_CLASS(CodeNotesViewModel_Tests) Ensures(pRow != nullptr); Assert::AreEqual(0xFF000000, pRow->GetBookmarkColor().ARGB); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed"); AssertRow(notes, 4, 0x0016, L"0x0016", L"Changed"); Assert::AreEqual(0xFFC04040, pRow->GetBookmarkColor().ARGB); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"[32-bit] Score"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"[32-bit] Score"); AssertRow(notes, 4, 0x0016, L"0x0016", L"[32-bit] Score"); Assert::AreEqual(0xFF000000, pRow->GetBookmarkColor().ARGB); } TEST_METHOD(TestModifiedFilter) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.SetIsVisible(true); @@ -675,9 +675,9 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0031, L"Changed 49"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0004, L"Changed 4"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0031, L"Changed 49"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0004, L"Changed 4"); notes.SetOnlyUnpublishedFilter(true); notes.ApplyFilter(); @@ -693,7 +693,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRevertSingleApprove) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.SetIsVisible(true); @@ -701,8 +701,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0031, L"Changed 49"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0031, L"Changed 49"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -733,7 +733,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRevertSingleReject) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.SetIsVisible(true); @@ -741,8 +741,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0031, L"Changed 49"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0031, L"Changed 49"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -769,7 +769,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestRevertMultiple) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.SetIsVisible(true); @@ -777,8 +777,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0040, L"Changed 64"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0040, L"Changed 64"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -810,7 +810,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestPublishSingle) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.PreparePublish(); notes.SetIsVisible(true); @@ -819,8 +819,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0031, L"Changed 49"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0031, L"Changed 49"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -850,7 +850,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestPublishSingleOffline) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.mockConfiguration.SetFeatureEnabled(ra::services::Feature::Offline, true); notes.PopulateNotes(); notes.PreparePublish(); @@ -860,8 +860,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0031, L"Changed 49"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0031, L"Changed 49"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -888,7 +888,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestPublishMultipleApprove) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.PreparePublish(); notes.SetIsVisible(true); @@ -897,8 +897,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0040, L"Changed 64"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0040, L"Changed 64"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 @@ -946,7 +946,7 @@ TEST_CLASS(CodeNotesViewModel_Tests) TEST_METHOD(TestPublishMultipleReject) { - CodeNotesViewModelHarness notes; + MemoryNotesViewModelHarness notes; notes.PopulateNotes(); notes.PreparePublish(); notes.SetIsVisible(true); @@ -955,8 +955,8 @@ TEST_CLASS(CodeNotesViewModel_Tests) Assert::AreEqual(std::wstring(L""), notes.GetFilterValue()); Assert::AreEqual(std::wstring(L"14/14"), notes.GetResultCount()); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0016, L"Changed 20"); - notes.mockGameContext.Assets().FindCodeNotes()->SetCodeNote(0x0040, L"Changed 64"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0016, L"Changed 20"); + notes.mockGameContext.Assets().FindMemoryNotes()->SetNote(0x0040, L"Changed 64"); notes.Notes().GetItemAt(0)->SetSelected(true); // 0x10 notes.Notes().GetItemAt(4)->SetSelected(true); // 0x16 diff --git a/tests/ui/viewmodels/MemorySearchViewModel_Tests.cpp b/tests/ui/viewmodels/MemorySearchViewModel_Tests.cpp index a637f1ed1..d15c97ce8 100644 --- a/tests/ui/viewmodels/MemorySearchViewModel_Tests.cpp +++ b/tests/ui/viewmodels/MemorySearchViewModel_Tests.cpp @@ -86,7 +86,7 @@ TEST_CLASS(MemorySearchViewModel_Tests) { InitializeNotifyTargets(); - mockGameContext.InitializeCodeNotes(); + mockGameContext.InitializeNotes(); } ra::context::mocks::MockConsoleContext mockConsoleContext; @@ -1771,7 +1771,7 @@ TEST_CLASS(MemorySearchViewModel_Tests) Assert::AreEqual(std::wstring(L"Continuous Filter"), search.ContinuousFilterLabel()); } - TEST_METHOD(TestOnCodeNoteChanged) + TEST_METHOD(TestOnMemoryNoteChanged) { MemorySearchViewModelHarness search; search.InitializeMemory(); @@ -1791,28 +1791,28 @@ TEST_CLASS(MemorySearchViewModel_Tests) Assert::AreEqual({ 12U }, pRow->nAddress); Assert::AreEqual(std::wstring(L"System RAM"), pRow->GetDescription()); - Assert::IsFalse(pRow->bHasCodeNote); + Assert::IsFalse(pRow->bHasMemoryNote); - search.mockGameContext.SetCodeNote({ 12U }, L"Note"); + search.mockGameContext.SetNote({ 12U }, L"Note"); Assert::AreEqual(std::wstring(L"Note"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); - search.mockGameContext.SetCodeNote({ 12U }, L"Note 2"); + search.mockGameContext.SetNote({ 12U }, L"Note 2"); Assert::AreEqual(std::wstring(L"Note 2"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); - search.mockGameContext.SetCodeNote({ 12U }, L""); + search.mockGameContext.SetNote({ 12U }, L""); Assert::AreEqual(std::wstring(L"System RAM"), pRow->GetDescription()); - Assert::IsFalse(pRow->bHasCodeNote); + Assert::IsFalse(pRow->bHasMemoryNote); } - TEST_METHOD(TestOnCodeNoteChangedMultiline) + TEST_METHOD(TestOnMemoryNoteChangedMultiline) { MemorySearchViewModelHarness search; search.InitializeMemory(); search.mockConsoleContext.AddMemoryRegion({ 0U }, { 0xFFU }, ra::data::MemoryRegion::Type::SystemRAM, L"System RAM"); search.BeginNewSearch(); - search.mockGameContext.SetCodeNote({ 12U }, L"Summary\n1=A\n2=B"); + search.mockGameContext.SetNote({ 12U }, L"Summary\n1=A\n2=B"); search.SetComparisonType(ComparisonType::Equals); search.SetValueType(ra::services::SearchFilterType::Constant); @@ -1827,20 +1827,20 @@ TEST_CLASS(MemorySearchViewModel_Tests) Assert::AreEqual({ 12U }, pRow->nAddress); Assert::AreEqual(std::wstring(L"Summary"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); - search.mockGameContext.SetCodeNote({ 12U }, L"Summary\n1=C\2=D"); + search.mockGameContext.SetNote({ 12U }, L"Summary\n1=C\2=D"); Assert::AreEqual(std::wstring(L"Summary"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); } - TEST_METHOD(TestOnCodeNoteChangedPartial) + TEST_METHOD(TestOnMemoryNoteChangedPartial) { MemorySearchViewModelHarness search; search.InitializeMemory(); search.mockConsoleContext.AddMemoryRegion({ 0U }, { 0xFFU }, ra::data::MemoryRegion::Type::SystemRAM, L"System RAM"); search.BeginNewSearch(); - search.mockGameContext.SetCodeNote({ 10U }, L"[4-byte] Summary"); + search.mockGameContext.SetNote({ 10U }, L"[4-byte] Summary"); search.SetComparisonType(ComparisonType::Equals); search.SetValueType(ra::services::SearchFilterType::Constant); @@ -1855,11 +1855,11 @@ TEST_CLASS(MemorySearchViewModel_Tests) Assert::AreEqual({ 12U }, pRow->nAddress); Assert::AreEqual(std::wstring(L"[4-byte] Summary [3/4]"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); - search.mockGameContext.SetCodeNote({ 10U }, L"[4-byte] Banana"); + search.mockGameContext.SetNote({ 10U }, L"[4-byte] Banana"); Assert::AreEqual(std::wstring(L"[4-byte] Banana [3/4]"), pRow->GetDescription()); - Assert::IsTrue(pRow->bHasCodeNote); + Assert::IsTrue(pRow->bHasMemoryNote); } TEST_METHOD(TestScrollDisplaysCurrentValue) diff --git a/tests/ui/viewmodels/MemoryWatchListViewModel_Tests.cpp b/tests/ui/viewmodels/MemoryWatchListViewModel_Tests.cpp index 9ebb772c4..3fd6e30c2 100644 --- a/tests/ui/viewmodels/MemoryWatchListViewModel_Tests.cpp +++ b/tests/ui/viewmodels/MemoryWatchListViewModel_Tests.cpp @@ -119,11 +119,11 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(std::wstring(L"Dec"), watchList.Formats().GetItemAt(1)->GetLabel()); } - TEST_METHOD(TestCodeNoteChanged) + TEST_METHOD(TestMemoryNoteChanged) { MemoryWatchListViewModelHarness watchList; watchList.mockGameContext.SetGameId(3U); - watchList.mockGameContext.SetCodeNote(1234U, L"Note description"); + watchList.mockGameContext.SetNote(1234U, L"Note description"); watchList.AddItem(1234U); Assert::AreEqual({ 1U }, watchList.Items().Count()); @@ -136,7 +136,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, pItem->GetFormat()); Assert::IsFalse(pItem->IsCustomDescription()); - watchList.mockGameContext.SetCodeNote(1234U, L"New description"); + watchList.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, watchList.Items().Count()); pItem = watchList.Items().GetItemAt(0); @@ -149,11 +149,11 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::IsFalse(pItem->IsCustomDescription()); } - TEST_METHOD(TestCodeNoteChangedCustomDescription) + TEST_METHOD(TestMemoryNoteChangedCustomDescription) { MemoryWatchListViewModelHarness watchList; watchList.mockGameContext.SetGameId(3U); - watchList.mockGameContext.SetCodeNote(1234U, L"Note description"); + watchList.mockGameContext.SetNote(1234U, L"Note description"); watchList.AddItem(1234U); watchList.Items().GetItemAt(0)->SetDescription(L"My Description"); @@ -167,7 +167,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, pItem->GetFormat()); Assert::IsTrue(pItem->IsCustomDescription()); - watchList.mockGameContext.SetCodeNote(1234U, L"New description"); + watchList.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, watchList.Items().Count()); pItem = watchList.Items().GetItemAt(0); @@ -179,7 +179,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, pItem->GetFormat()); Assert::IsTrue(pItem->IsCustomDescription()); - watchList.mockGameContext.SetCodeNote(1234U, L"My Description"); + watchList.mockGameContext.SetNote(1234U, L"My Description"); Assert::AreEqual({ 1U }, watchList.Items().Count()); pItem = watchList.Items().GetItemAt(0); @@ -191,7 +191,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(ra::data::Memory::Format::Hex, pItem->GetFormat()); Assert::IsFalse(pItem->IsCustomDescription()); - watchList.mockGameContext.SetCodeNote(1234U, L"New description"); + watchList.mockGameContext.SetNote(1234U, L"New description"); Assert::AreEqual({ 1U }, watchList.Items().Count()); pItem = watchList.Items().GetItemAt(0); @@ -431,7 +431,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) watchList.AddItem(4U, ra::data::Memory::Size::Double32); - // without a code note, assume the user is pIteming the 4 significant bytes + // without a memory note, assume the user is pIteming the 4 significant bytes Assert::AreEqual({1U}, watchList.Items().Count()); const auto& pItem = *watchList.Items().GetItemAt(0); Assert::AreEqual(std::wstring(L""), pItem.GetRealNote()); @@ -448,8 +448,8 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(std::wstring(L"0.0"), pItem.GetPreviousValue()); Assert::AreEqual(1U, pItem.GetChanges()); - // with a code note, align the pItem to the 4 significant bytes - watchList.mockGameContext.SetCodeNote(8U, L"[double] Note description"); + // with a memory note, align the pItem to the 4 significant bytes + watchList.mockGameContext.SetNote(8U, L"[double] Note description"); watchList.AddItem(8U, ra::data::Memory::Size::Double32); Assert::AreEqual({2U}, watchList.Items().Count()); @@ -468,7 +468,7 @@ TEST_CLASS(MemoryWatchListViewModel_Tests) Assert::AreEqual(std::wstring(L"0.0"), pItem2.GetPreviousValue()); Assert::AreEqual(1U, pItem2.GetChanges()); - // does not exactly match code note address, assume the user is pIteming the most significant bytes + // does not exactly match memory note address, assume the user is pIteming the most significant bytes watchList.AddItem(12U, ra::data::Memory::Size::Double32); Assert::AreEqual({3U}, watchList.Items().Count()); const auto& pItem3 = *watchList.Items().GetItemAt(2); diff --git a/tests/ui/viewmodels/PointerInspectorViewModel_Tests.cpp b/tests/ui/viewmodels/PointerInspectorViewModel_Tests.cpp index f9a8b45c9..8c959c3d3 100644 --- a/tests/ui/viewmodels/PointerInspectorViewModel_Tests.cpp +++ b/tests/ui/viewmodels/PointerInspectorViewModel_Tests.cpp @@ -54,7 +54,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) mockUserContext.SetUsername("Author"); - mockGameContext.InitializeCodeNotes(); + mockGameContext.InitializeNotes(); SetIsVisible(true); } @@ -73,10 +73,10 @@ TEST_CLASS(PointerInspectorViewModel_Tests) PointerInspectorViewModel::DoFrame(); } - const std::wstring* FindCodeNote(ra::data::ByteAddress nAddress) const + const std::wstring* FindNote(ra::data::ByteAddress nAddress) const { - const auto* pCodeNotes = mockGameContext.Assets().FindCodeNotes(); - return (pCodeNotes != nullptr) ? pCodeNotes->FindCodeNote(nAddress) : nullptr; + const auto* pMemoryNotes = mockGameContext.Assets().FindMemoryNotes(); + return (pMemoryNotes != nullptr) ? pMemoryNotes->FindNote(nAddress) : nullptr; } void AssertField(gsl::index nIndex, int32_t nOffset, ra::data::ByteAddress nAddress, @@ -142,7 +142,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) void AssertNote(ra::data::ByteAddress nAddress, const std::wstring& sExpectedNote) { - const auto* pNote = mockGameContext.Assets().FindCodeNotes()->FindCodeNoteModel(nAddress); + const auto* pNote = mockGameContext.Assets().FindMemoryNotes()->FindMemoryNoteModel(nAddress); Assert::IsNotNull(pNote); Ensures(pNote != nullptr); Assert::AreEqual(sExpectedNote, pNote->GetNote()); @@ -197,14 +197,14 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockGameContext.NotifyActiveGameChanged(); // enable note support inspector.SetCurrentAddress({ 3U }); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({3U}, L"Note on 3"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({3U}, L"Note on 3"); Assert::AreEqual({ 3U }, inspector.GetCurrentAddress()); Assert::AreEqual(std::wstring(L"0x0003"), inspector.GetCurrentAddressText()); Assert::AreEqual(std::wstring(L"Note on 3"), inspector.GetCurrentAddressNote()); Assert::AreEqual({ 0U }, inspector.Fields().Items().Count()); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({3U}, L"Modified Note on 3"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({3U}, L"Modified Note on 3"); Assert::AreEqual(std::wstring(L"Modified Note on 3"), inspector.GetCurrentAddressNote()); } @@ -222,7 +222,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Current HP\r\n" L"+8: [32-bit] Max HP"); @@ -250,7 +250,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Class\r\n" "1=Wizard\r\n" @@ -290,17 +290,17 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockGameContext.SetGameId(1); inspector.mockGameContext.NotifyActiveGameChanged(); // enable note support - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({1U}, L"Simple note"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({1U}, L"Simple note"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Current HP\r\n" L"+8: [32-bit] Max HP"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({8U}, L"Something here"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({16U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({8U}, L"Something here"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({16U}, L"[32-bit pointer] Level data\r\n" L"+4: [32-bit] Current world\r\n" L"+8: [32-bit] Current stage"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({20U}, L"Read this"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({20U}, L"Read this"); inspector.mockGameContext.NotifyGameLoad(); @@ -313,23 +313,23 @@ TEST_CLASS(PointerInspectorViewModel_Tests) Assert::AreEqual(std::wstring(L"0x0010 | Level data"), inspector.KnownPointers().GetItemAt(1)->GetLabel()); } - TEST_METHOD(TestKnownPointersUpdateOnCodeNoteChange) + TEST_METHOD(TestKnownPointersUpdateOnMemoryNoteChange) { PointerInspectorViewModelHarness inspector; inspector.mockGameContext.SetGameId(1); inspector.mockGameContext.NotifyActiveGameChanged(); // enable note support - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({1U}, L"Simple note"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({1U}, L"Simple note"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Current HP\r\n" L"+8: [32-bit] Max HP"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({8U}, L"Something here"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({16U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({8U}, L"Something here"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({16U}, L"[32-bit pointer] Level data\r\n" L"+4: [32-bit] Current world\r\n" L"+8: [32-bit] Current stage"); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({20U}, L"Read this"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({20U}, L"Read this"); inspector.mockGameContext.NotifyGameLoad(); @@ -341,7 +341,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) Assert::AreEqual(16, inspector.KnownPointers().GetItemAt(1)->GetId()); Assert::AreEqual(std::wstring(L"0x0010 | Level data"), inspector.KnownPointers().GetItemAt(1)->GetLabel()); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({12U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({12U}, L"[32-bit pointer] New pointer"); Assert::AreEqual({3U}, inspector.KnownPointers().Count()); @@ -352,19 +352,19 @@ TEST_CLASS(PointerInspectorViewModel_Tests) Assert::AreEqual(16, inspector.KnownPointers().GetItemAt(2)->GetId()); Assert::AreEqual(std::wstring(L"0x0010 | Level data"), inspector.KnownPointers().GetItemAt(2)->GetLabel()); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, L"Normal note"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"Normal note"); Assert::AreEqual({2U}, inspector.KnownPointers().Count()); Assert::AreEqual(12, inspector.KnownPointers().GetItemAt(0)->GetId()); Assert::AreEqual(std::wstring(L"0x000c | New pointer"), inspector.KnownPointers().GetItemAt(0)->GetLabel()); Assert::AreEqual(16, inspector.KnownPointers().GetItemAt(1)->GetId()); Assert::AreEqual(std::wstring(L"0x0010 | Level data"), inspector.KnownPointers().GetItemAt(1)->GetLabel()); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({16U}, L"Wrong again"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({16U}, L"Wrong again"); Assert::AreEqual({1U}, inspector.KnownPointers().Count()); Assert::AreEqual(12, inspector.KnownPointers().GetItemAt(0)->GetId()); Assert::AreEqual(std::wstring(L"0x000c | New pointer"), inspector.KnownPointers().GetItemAt(0)->GetLabel()); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({20U}, L"[32-bit pointer] Should be here instead"); + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({20U}, L"[32-bit pointer] Should be here instead"); Assert::AreEqual({2U}, inspector.KnownPointers().Count()); Assert::AreEqual(12, inspector.KnownPointers().GetItemAt(0)->GetId()); Assert::AreEqual(std::wstring(L"0x000c | New pointer"), inspector.KnownPointers().GetItemAt(0)->GetLabel()); @@ -384,7 +384,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[8-bit pointer] Player data\r\n" L"+0x00: [8-bit pointer] Row 1\r\n" L".+0x00: [8-bit] Column 1a\r\n" @@ -458,7 +458,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Class\r\n" "1=Wizard\r\n" @@ -525,7 +525,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP"); @@ -555,7 +555,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Class\r\n" "1=Wizard\r\n" @@ -587,7 +587,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); memory.at(4) = 12; - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP\r\n"//\r\n" L"+12: [32-bit pointer] Inventory\r\n" @@ -623,7 +623,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({ 4U }); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP\r\n" L"+12: [32-bit] Current HP"); @@ -687,7 +687,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(17) = 0; inspector.SetCurrentAddress({ 4U }); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n" L"+0: [8-byte ASCII] Name\r\n" L"+12: [32-bit] Current HP"); @@ -723,7 +723,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({ 4U }); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP"); @@ -779,7 +779,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP"); @@ -808,7 +808,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); memory.at(4) = 12; - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP\r\n" //\r\n" L"+12: [32-bit pointer] Inventory\r\n" @@ -863,7 +863,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[8-bit pointer] Player data\r\n" L"+0x00: [8-bit pointer] Row 1\r\n" L".+0x00: [8-bit] Column 1a\r\n" @@ -913,7 +913,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(4) = 12; inspector.SetCurrentAddress({4U}); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit] Current HP\r\n" L"+8: [32-bit] Max HP"); @@ -959,7 +959,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockConsoleContext.AddMemoryRegion(0x00, 0x3F, ra::data::MemoryRegion::Type::SystemRAM); inspector.mockEmulatorContext.MockMemory(memory); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({4U}, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({4U}, L"[32-bit pointer] Player data\r\n" L"+4: [32-bit pointer] 1st player\r\n" L"++8: [32-bit pointer] Health\r\n" @@ -977,7 +977,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) memory.at(0x0028) = 0x64; // update pointer values in note - inspector.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + inspector.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); inspector.SetCurrentAddress({4U}); Assert::AreEqual({4U}, inspector.GetCurrentAddress()); @@ -1044,13 +1044,13 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockConsoleContext.AddMemoryRegion(0x00, 0x3F, ra::data::MemoryRegion::Type::SystemRAM); inspector.mockEmulatorContext.MockMemory(memory); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n"); memory.at(0x0004) = 0x0C; memory.at(0x000C) = 0x10; memory.at(0x0011) = 0x01; - inspector.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + inspector.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); inspector.SetCurrentAddress({ 4U }); Assert::AreEqual({ 4U }, inspector.GetCurrentAddress()); @@ -1081,13 +1081,13 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockConsoleContext.AddMemoryRegion(0x00, 0x3F, ra::data::MemoryRegion::Type::SystemRAM); inspector.mockEmulatorContext.MockMemory(memory); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit BE pointer] Player data\r\n"); memory.at(0x0007) = 0x0C; memory.at(0x000F) = 0x10; memory.at(0x0012) = 0x01; - inspector.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + inspector.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); inspector.SetCurrentAddress({ 4U }); Assert::AreEqual({ 4U }, inspector.GetCurrentAddress()); @@ -1115,14 +1115,14 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockConsoleContext.AddMemoryRegion(0x00, 0x3F, ra::data::MemoryRegion::Type::SystemRAM); inspector.mockEmulatorContext.MockMemory(memory); - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n" L"+8: [16-bit] Current HP\r\n"); memory.at(0x0004) = 0x0C; memory.at(0x0014) = 0x10; memory.at(0x0016) = 0x16; - inspector.mockGameContext.Assets().FindCodeNotes()->DoFrame(); + inspector.mockGameContext.Assets().FindMemoryNotes()->DoFrame(); inspector.SetCurrentAddress({ 4U }); Assert::AreEqual({ 4U }, inspector.GetCurrentAddress()); @@ -1165,7 +1165,7 @@ TEST_CLASS(PointerInspectorViewModel_Tests) inspector.mockEmulatorContext.MockMemory(memory); memory.at(4) = 12; - inspector.mockGameContext.Assets().FindCodeNotes()->SetCodeNote({ 4U }, + inspector.mockGameContext.Assets().FindMemoryNotes()->SetNote({ 4U }, L"[32-bit pointer] Player data\r\n" L"+8: [32-bit] Max HP\r\n" //\r\n" L"+12: [32-bit pointer] Inventory\r\n" diff --git a/tests/ui/viewmodels/TriggerConditionViewModel_Tests.cpp b/tests/ui/viewmodels/TriggerConditionViewModel_Tests.cpp index 9df53ede6..439893fc6 100644 --- a/tests/ui/viewmodels/TriggerConditionViewModel_Tests.cpp +++ b/tests/ui/viewmodels/TriggerConditionViewModel_Tests.cpp @@ -670,7 +670,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddress) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"This is a note."); + condition.mockGameContext.SetNote({ 8U }, L"This is a note."); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xH0008=3"); @@ -678,20 +678,20 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::AreEqual(std::wstring(L""), condition.GetTooltip(TriggerConditionViewModel::TargetValueProperty)); } - TEST_METHOD(TestTooltipAddressNoCodeNote) + TEST_METHOD(TestTooltipAddressNoMemoryNote) { TriggerConditionViewModelHarness condition; condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xH0008=3"); - Assert::AreEqual(std::wstring(L"0x0008\r\n[No code note]"), condition.GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0008\r\n[No memory note]"), condition.GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), condition.GetTooltip(TriggerConditionViewModel::TargetValueProperty)); } - TEST_METHOD(TestTooltipAddressLongCodeNote) + TEST_METHOD(TestTooltipAddressLongMemoryNote) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\nO\nP\nQ\nR\nS\nT\nU\nV\nW\nX\nY\nZ"); + condition.mockGameContext.SetNote({ 8U }, L"A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\nO\nP\nQ\nR\nS\nT\nU\nV\nW\nX\nY\nZ"); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xH0008=3"); @@ -702,8 +702,8 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddressMultiNote) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"This is a note."); - condition.mockGameContext.SetCodeNote({ 9U }, L"This is another note."); + condition.mockGameContext.SetNote({ 8U }, L"This is a note."); + condition.mockGameContext.SetNote({ 9U }, L"This is another note."); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xH0008>d0xH0009"); @@ -714,7 +714,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddressMultiByteNote) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"[8 bytes] This is a note."); + condition.mockGameContext.SetNote({ 8U }, L"[8 bytes] This is a note."); condition.Parse("0xH0008=3"); Assert::AreEqual(std::wstring(L"0x0008\r\n[8 bytes] This is a note."), condition.GetTooltip(TriggerConditionViewModel::SourceValueProperty)); @@ -726,7 +726,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddressLargeArrayNote) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"[100 bytes] This is a note."); + condition.mockGameContext.SetNote({ 8U }, L"[100 bytes] This is a note."); condition.Parse("0xH0008=3"); Assert::AreEqual(std::wstring(L"0x0008\r\n[100 bytes] This is a note."), condition.GetTooltip(TriggerConditionViewModel::SourceValueProperty)); @@ -744,7 +744,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddressBitNote) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"b1=Left\r\nb2=Right\r\nb3=Upper\r\n"); + condition.mockGameContext.SetNote({ 8U }, L"b1=Left\r\nb2=Right\r\nb3=Upper\r\n"); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xO0008=1"); @@ -754,7 +754,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipAddressBitNoteWithHeader) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 8U }, L"Chests in first dungeon\r\nb1=Left\r\nb2=Right\r\nb3=Upper\r\n"); + condition.mockGameContext.SetNote({ 8U }, L"Chests in first dungeon\r\nb1=Left\r\nb2=Right\r\nb3=Upper\r\n"); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xO0008=1"); @@ -764,7 +764,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipValueDecimal) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 99U }, L"This is a note."); + condition.mockGameContext.SetNote({ 99U }, L"This is a note."); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("255=99"); @@ -775,7 +775,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipValueEnum) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 0x0099U }, L"Color {02=Red, 06=Brown}"); + condition.mockGameContext.SetNote({ 0x0099U }, L"Color {02=Red, 06=Brown}"); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); condition.Parse("0xH0099=2"); @@ -786,7 +786,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipValueHex) { TriggerConditionViewModelHarness condition; - condition.mockGameContext.SetCodeNote({ 99U }, L"This is a note."); + condition.mockGameContext.SetNote({ 99U }, L"This is a note."); condition.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, false); condition.Parse("255=99"); @@ -818,11 +818,11 @@ TEST_CLASS(TriggerConditionViewModel_Tests) m_pMemory.at(nAddress) = nValue; } - void CodeNotesDoFrame() + void MemoryNotesDoFrame() { - auto* pCodeNotes = mockGameContext.Assets().FindCodeNotes(); - if (pCodeNotes != nullptr) - pCodeNotes->DoFrame(); + auto* pMemoryNotes = mockGameContext.Assets().FindMemoryNotes(); + if (pMemoryNotes != nullptr) + pMemoryNotes->DoFrame(); DoFrame(); } @@ -834,7 +834,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) }; public: - TEST_METHOD(TestTooltipIndirectAddressNoCodeNote) + TEST_METHOD(TestTooltipIndirectAddressNoMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=3"); @@ -845,20 +845,20 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition->IsIndirect()); // $0001 = 1, 1+2 = $0003 - Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); vmTrigger.DoFrame(); - Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressCodeNote) + TEST_METHOD(TestTooltipIndirectAddressMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=3"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -869,7 +869,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -878,7 +878,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=0xH0004"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=This is a note.\n+4=This is another note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=This is a note.\n+4=This is another note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -890,7 +890,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005, 3+4 = $0007 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0007 (indirect $0x0001+0x04)\r\nThis is another note."), pCondition->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); } @@ -900,18 +900,18 @@ TEST_CLASS(TriggerConditionViewModel_Tests) IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=0xH0005"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+4=[8 bytes] This is a note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+4=[8 bytes] This is a note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); Assert::IsTrue(pCondition->IsIndirect()); // $0001 = 1, 1+2 = $0003, 1+5 = $0006 - Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0001+0x05)\r\n[8 bytes] This is a note."), pCondition->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressMultiplyNoCodeNote) + TEST_METHOD(TestTooltipIndirectAddressMultiplyNoMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001*3_0xH0002=3"); @@ -922,20 +922,20 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition->IsIndirect()); // $0001 = 1, 1*3+2 = $0005 - Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001*3+0x02)\r\n[No code note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001*3+0x02)\r\n[No memory note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 3, 3*3+2 = $000B vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); - Assert::AreEqual(std::wstring(L"0x000b (indirect $0x0001*3+0x02)\r\n[No code note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + vmTrigger.MemoryNotesDoFrame(); + Assert::AreEqual(std::wstring(L"0x000b (indirect $0x0001*3+0x02)\r\n[No memory note]"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressWithAltCodeNote) + TEST_METHOD(TestTooltipIndirectAddressWithAltMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=3S0=0S1=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -946,17 +946,17 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressInAlt1CodeNote) + TEST_METHOD(TestTooltipIndirectAddressInAlt1MemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("0=0SI:0xH0001_0xH0002=3S1=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); vmTrigger.SetSelectedGroupIndex(1); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); @@ -968,16 +968,16 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressInAlt2CodeNote) + TEST_METHOD(TestTooltipIndirectAddressInAlt2MemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("0=0S1=1SI:0xH0001_0xH0002=3"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=This is a note."); vmTrigger.SetSelectedGroupIndex(2); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); @@ -989,18 +989,18 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressCodeNoteOverflow) + TEST_METHOD(TestTooltipIndirectAddressMemoryNoteOverflow) { IndirectAddressTriggerViewModelHarness vmTrigger; ra::context::mocks::MockConsoleContext mockConsoleContext; vmTrigger.Parse("I:0xX0000_0xH80000002=6"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({0U}, L"[32-bit pointer]\n+0x80000002=This is a note."); + vmTrigger.mockGameContext.SetNote({0U}, L"[32-bit pointer]\n+0x80000002=This is a note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -1011,24 +1011,24 @@ TEST_CLASS(TriggerConditionViewModel_Tests) vmTrigger.SetMemory({1}, 0x00); vmTrigger.SetMemory({2}, 0x00); vmTrigger.SetMemory({3}, 0x80); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0000+0x80000002)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 0x80000004, 0x8000004+0x80000002 = 0x100000006 (too big for uint32_t) -> truncated to $0006 vmTrigger.SetMemory({0}, 4); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0000+0x80000002)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressCodeNoteMasked) + TEST_METHOD(TestTooltipIndirectAddressMemoryNoteMasked) { IndirectAddressTriggerViewModelHarness vmTrigger; ra::context::mocks::MockConsoleContext mockConsoleContext(ConsoleID::PSP, L"PSP"); vmTrigger.Parse("I:0xX0000&33554431_0xH0002=6"); // 33554431 = 0x01FFFFFF vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({0U}, L"[32-bit pointer]\n+2=This is a note."); + vmTrigger.mockGameContext.SetNote({0U}, L"[32-bit pointer]\n+2=This is a note."); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -1039,13 +1039,13 @@ TEST_CLASS(TriggerConditionViewModel_Tests) vmTrigger.SetMemory({1}, 0x00); vmTrigger.SetMemory({2}, 0x00); vmTrigger.SetMemory({3}, 0x08); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0000+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 0x80000004, 0x8000004+0x80000002 = 0x100000006 (too big for uint32_t) -> truncated to $0006 vmTrigger.SetMemory({0}, 4); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0000+0x02)\r\nThis is a note."), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -1054,10 +1054,10 @@ TEST_CLASS(TriggerConditionViewModel_Tests) { IndirectAddressTriggerViewModelHarness vmTrigger; ra::context::mocks::MockConsoleContext mockConsoleContext; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("I:0xH0001_I:0xH0002_0xH0003=4"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({1U}, L"[8-bit pointer]\n+2=First Level [8-bit pointer]\n +3=Second Level."); + vmTrigger.mockGameContext.SetNote({1U}, L"[8-bit pointer]\n+2=First Level [8-bit pointer]\n +3=Second Level."); const auto* pCondition1 = vmTrigger.Conditions().GetItemAt(0); Expects(pCondition1 != nullptr); @@ -1077,7 +1077,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0001\r\n[8-bit pointer]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\nFirst Level [8-bit pointer]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0008 (indirect $0x0001+0x02+0x03)\r\nSecond Level."), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); @@ -1113,9 +1113,9 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition3->IsIndirect()); // $0001 = 1, 1+2 = $0003, $0003 = 3, 3+3 = $0006 - Assert::AreEqual(std::wstring(L"0x0001\r\n[No code note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0001+0x02+0x03)\r\n[No code note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0001\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0001+0x02+0x03)\r\n[No memory note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // Calling GetTooltip on a viewmodel attached to an external trigger should not evaluate the memrefs. // External memrefs should only be updated by the runtime to ensure delta values are correct. @@ -1125,9 +1125,9 @@ TEST_CLASS(TriggerConditionViewModel_Tests) rc_update_memref_values(memrefs, rc_peek_callback, nullptr); // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 - Assert::AreEqual(std::wstring(L"0x0001\r\n[No code note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0008 (indirect $0x0001+0x02+0x03)\r\n[No code note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0001\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0008 (indirect $0x0001+0x02+0x03)\r\n[No memory note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } TEST_METHOD(TestTooltipDoubleIndirectAddressValue) @@ -1150,26 +1150,26 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition3->IsIndirect()); // $0001 = 1, 1+2 = $0003, $0003 = 3, 3+3 = $0006 - Assert::AreEqual(std::wstring(L"0x0001\r\n[No code note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0001+0x02+0x03)\r\n[No code note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0001\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0003 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0006 (indirect $0x0001+0x02+0x03)\r\n[No memory note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); - Assert::AreEqual(std::wstring(L"0x0001\r\n[No code note]"), + vmTrigger.MemoryNotesDoFrame(); + Assert::AreEqual(std::wstring(L"0x0001\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No code note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0008 (indirect $0x0001+0x02+0x03)\r\n[No code note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0005 (indirect $0x0001+0x02)\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0008 (indirect $0x0001+0x02+0x03)\r\n[No memory note]"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressOffsetCodeNote) + TEST_METHOD(TestTooltipIndirectAddressOffsetMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001_0xH0002=3"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"Region differentiator"); - vmTrigger.mockGameContext.SetCodeNote({ 2U }, L"[US] Note for NA"); + vmTrigger.mockGameContext.SetNote({ 1U }, L"Region differentiator"); + vmTrigger.mockGameContext.SetNote({ 2U }, L"[US] Note for NA"); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -1180,17 +1180,17 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect 0x0002[$0x0001])\r\n[US] Note for NA"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } - TEST_METHOD(TestTooltipIndirectAddressScaledOffsetCodeNote) + TEST_METHOD(TestTooltipIndirectAddressScaledOffsetMemoryNote) { IndirectAddressTriggerViewModelHarness vmTrigger; vmTrigger.Parse("I:0xH0001*2_0xH0002=3"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"Region differentiator"); - vmTrigger.mockGameContext.SetCodeNote({ 2U }, L"[US] Note for NA"); + vmTrigger.mockGameContext.SetNote({ 1U }, L"Region differentiator"); + vmTrigger.mockGameContext.SetNote({ 2U }, L"[US] Note for NA"); const auto* pCondition = vmTrigger.Conditions().GetItemAt(1); Expects(pCondition != nullptr); @@ -1201,17 +1201,17 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3*2+2 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0008 (indirect 0x0002[$0x0001*2])\r\n[US] Note for NA"), pCondition->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } TEST_METHOD(TestTooltipRecallBasic) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("K:0xH0001_I:{recall}_I:0xH0002_0xH0003=4"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({1U}, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); + vmTrigger.mockGameContext.SetNote({1U}, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); const auto* pCondition1 = vmTrigger.Conditions().GetItemAt(0); Expects(pCondition1 != nullptr); @@ -1234,7 +1234,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect {recall:0x03}+0x02)\r\nFirst Level (8-bit pointer)"), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0008 (indirect {recall:0x03}+0x02+0x03)\r\nSecond Level."), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -1242,7 +1242,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallAddSource) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("A:1_K:0xH0001_I:{recall}_I:0xH0002_0xH0003=4"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); @@ -1264,22 +1264,22 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition5->IsIndirect()); // $0001 = 1, 1+1+2 = $0004, $0004 = 4, 4+3 = $0007 - Assert::AreEqual(std::wstring(L"0x0004 (indirect {recall:0x02}+0x02)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0004 (indirect {recall:0x02}+0x02)\r\n[No memory note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0007 (indirect {recall:0x02}+0x02+0x03)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0007 (indirect {recall:0x02}+0x02+0x03)\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0001 = 3, 1+3+2 = $0006, $0006 = 6, 6+3 = $0009 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); - Assert::AreEqual(std::wstring(L"0x0006 (indirect {recall:0x04}+0x02)\r\n[No code note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0009 (indirect {recall:0x04}+0x02+0x03)\r\n[No code note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + vmTrigger.MemoryNotesDoFrame(); + Assert::AreEqual(std::wstring(L"0x0006 (indirect {recall:0x04}+0x02)\r\n[No memory note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0009 (indirect {recall:0x04}+0x02+0x03)\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } TEST_METHOD(TestTooltipRecallSubSource) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("B:2_K:0xH0003_I:{recall}_I:0xH0002_0xH0003=4"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); @@ -1301,23 +1301,23 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::IsTrue(pCondition5->IsIndirect()); // $0003 = 3, 3-2+2 = $0003, $0003 = 3, 3+3 = $0006 - Assert::AreEqual(std::wstring(L"0x0003 (indirect {recall:0x01}+0x02)\r\n[No code note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0006 (indirect {recall:0x01}+0x02+0x03)\r\n[No code note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0003 (indirect {recall:0x01}+0x02)\r\n[No memory note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0006 (indirect {recall:0x01}+0x02+0x03)\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); // $0003 = 5, 5-2 +2 = $0005, 5+4 = $0008 vmTrigger.SetMemory({ 3 }, 5); - vmTrigger.CodeNotesDoFrame(); - Assert::AreEqual(std::wstring(L"0x0005 (indirect {recall:0x03}+0x02)\r\n[No code note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); - Assert::AreEqual(std::wstring(L"0x0008 (indirect {recall:0x03}+0x02+0x03)\r\n[No code note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + vmTrigger.MemoryNotesDoFrame(); + Assert::AreEqual(std::wstring(L"0x0005 (indirect {recall:0x03}+0x02)\r\n[No memory note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0x0008 (indirect {recall:0x03}+0x02+0x03)\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } TEST_METHOD(TestTooltipRecallPauseIfEarly) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("K:0xH0001_P:0=1_I:{recall}_I:0xH0002_0xH0003=4"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); const auto* pCondition1 = vmTrigger.Conditions().GetItemAt(0); Expects(pCondition1 != nullptr); @@ -1343,7 +1343,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect {recall:0x03}+0x02)\r\nFirst Level (8-bit pointer)"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0008 (indirect {recall:0x03}+0x02+0x03)\r\nSecond Level."), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -1351,10 +1351,10 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallPauseIfLate) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("I:{recall}_I:0xH0002_0xH0003=4_K:0xH0001_P:0=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); - vmTrigger.mockGameContext.SetCodeNote({ 1U }, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); + vmTrigger.mockGameContext.SetNote({ 1U }, L"[8-bit pointer]\n+2=First Level (8-bit pointer)\n +3=Second Level."); const auto* pCondition1 = vmTrigger.Conditions().GetItemAt(0); Expects(pCondition1 != nullptr); @@ -1380,7 +1380,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) // $0001 = 3, 3+2 = $0005, $0005 = 5, 5+3 = $0008 vmTrigger.SetMemory({ 1 }, 3); - vmTrigger.CodeNotesDoFrame(); + vmTrigger.MemoryNotesDoFrame(); Assert::AreEqual(std::wstring(L"0x0005 (indirect {recall:0x03}+0x02)\r\nFirst Level (8-bit pointer)"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x0008 (indirect {recall:0x03}+0x02+0x03)\r\nSecond Level."), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -1388,7 +1388,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallChain) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("0xH1234=6_K:0x 0002&511_K:{recall}*2_K:{recall}+4_I:0x 0010+{recall}_K:0x 0004_I:{recall}_M:0xH0002=20"); // 1 Byte 0x1234 = 6 @@ -1406,7 +1406,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition1 != nullptr); Assert::IsFalse(pCondition1->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition1->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x1234\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x1234\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition1->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition1->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1415,7 +1415,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition2 != nullptr); Assert::IsFalse(pCondition2->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x0002\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0002\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1447,7 +1447,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition5 != nullptr); Assert::IsFalse(pCondition5->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition5->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x0010\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0010\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L"0x00000208 (recall)\r\n" L"2: 0x00000302 & 0x000001ff -> 0x00000102\r\n" @@ -1461,7 +1461,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition6 != nullptr); Assert::IsTrue(pCondition6->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition6->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x020c (indirect $0x0010+{recall:0x208}+0x04)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x020c (indirect $0x0010+{recall:0x208}+0x04)\r\n[No memory note]"), pCondition6->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition6->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition6->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1480,7 +1480,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition8 != nullptr); Assert::IsTrue(pCondition8->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x0002 (indirect {recall:0x00}+0x02)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0002 (indirect {recall:0x00}+0x02)\r\n[No memory note]"), pCondition8->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1489,7 +1489,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallChainWithAddAddress) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); // with prefer decimal off, hex constants will have decimal tooltips vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, false); @@ -1526,7 +1526,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition1 != nullptr); Assert::IsFalse(pCondition1->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition1->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0x001234\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x001234\r\n[No memory note]"), pCondition1->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition1->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L"33554431"), pCondition1->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1535,7 +1535,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Expects(pCondition2 != nullptr); Assert::IsTrue(pCondition2->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0xb65ba9 (indirect $0x001234+0x09)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0xb65ba9 (indirect $0x001234+0x09)\r\n[No memory note]"), pCondition2->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition2->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1547,13 +1547,13 @@ TEST_CLASS(TriggerConditionViewModel_Tests) pCondition3->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition3->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition3->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); - Assert::AreEqual(std::wstring(L"0x002222\r\n[No code note]"), pCondition3->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); + Assert::AreEqual(std::wstring(L"0x002222\r\n[No memory note]"), pCondition3->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); const auto* pCondition4 = vmTrigger.Conditions().GetItemAt(3); Expects(pCondition4 != nullptr); Assert::IsTrue(pCondition4->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition4->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0xe60590 (indirect {recall:0x392ec0}+$0x002222+0x10)\r\n[No code note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); + Assert::AreEqual(std::wstring(L"0xe60590 (indirect {recall:0x392ec0}+$0x002222+0x10)\r\n[No memory note]"), pCondition4->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition4->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L"6"), pCondition4->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1563,13 +1563,13 @@ TEST_CLASS(TriggerConditionViewModel_Tests) Assert::AreEqual(std::wstring(L"0x00392ec0 (recall)\r\n2: $0xb65ba9 -> 0x00392ec0"), pCondition5->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition5->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition5->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); - Assert::AreEqual(std::wstring(L"0x002222\r\n[No code note]"), pCondition5->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); + Assert::AreEqual(std::wstring(L"0x002222\r\n[No memory note]"), pCondition5->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); const auto* pCondition6 = vmTrigger.Conditions().GetItemAt(5); Expects(pCondition6 != nullptr); Assert::IsTrue(pCondition6->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition6->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0xe60598 (indirect {recall:0x392ec0}+$0x002222+0x18)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0xe60598 (indirect {recall:0x392ec0}+$0x002222+0x18)\r\n[No memory note]"), pCondition6->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition6->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L"1"), pCondition6->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1584,13 +1584,13 @@ TEST_CLASS(TriggerConditionViewModel_Tests) pCondition7->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition7->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition7->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); - Assert::AreEqual(std::wstring(L"0x002222\r\n[No code note]"), pCondition7->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); + Assert::AreEqual(std::wstring(L"0x002222\r\n[No memory note]"), pCondition7->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); const auto* pCondition8 = vmTrigger.Conditions().GetItemAt(7 - gsl::narrow_cast(nScrollOffset)); Expects(pCondition8 != nullptr); Assert::IsTrue(pCondition8->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0xe60589 (indirect {recall:0x392ec0}+$0x002222+0x09)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0xe60589 (indirect {recall:0x392ec0}+$0x002222+0x09)\r\n[No memory note]"), pCondition8->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition8->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1602,14 +1602,14 @@ TEST_CLASS(TriggerConditionViewModel_Tests) pCondition9->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); Assert::AreEqual(std::wstring(L""), pCondition9->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition9->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); - Assert::AreEqual(std::wstring(L"0x002222\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x002222\r\n[No memory note]"), pCondition9->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); const auto* pCondition10 = vmTrigger.Conditions().GetItemAt(9 - gsl::narrow_cast(nScrollOffset)); Expects(pCondition8 != nullptr); Assert::IsTrue(pCondition10->IsIndirect()); Assert::AreEqual(std::wstring(L""), pCondition10->GetTooltip(TriggerConditionViewModel::SourceTypeProperty)); - Assert::AreEqual(std::wstring(L"0xacd6d0 (indirect {recall:0x00}+$0x002222+0x10)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0xacd6d0 (indirect {recall:0x00}+$0x002222+0x10)\r\n[No memory note]"), pCondition10->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); Assert::AreEqual(std::wstring(L""), pCondition10->GetTooltip(TriggerConditionViewModel::TargetTypeProperty)); Assert::AreEqual(std::wstring(L"6"), pCondition10->GetTooltip(TriggerConditionViewModel::TargetValueProperty)); @@ -1618,7 +1618,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallInvalid) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("A:{recall}_0xH0000=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); @@ -1632,7 +1632,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallChainInvalid) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("K:{recall}+6_A:{recall}_0xH0000=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); @@ -1651,7 +1651,7 @@ TEST_CLASS(TriggerConditionViewModel_Tests) TEST_METHOD(TestTooltipRecallInvalidInPauseIf) { IndirectAddressTriggerViewModelHarness vmTrigger; - vmTrigger.mockGameContext.InitializeCodeNotes(); + vmTrigger.mockGameContext.InitializeNotes(); vmTrigger.Parse("K:0xH0001*2_1=1_N:{recall}!=0_P:0xH0000=1"); vmTrigger.mockConfiguration.SetFeatureEnabled(ra::services::Feature::PreferDecimal, true); diff --git a/tests/ui/viewmodels/TriggerViewModel_Tests.cpp b/tests/ui/viewmodels/TriggerViewModel_Tests.cpp index 05b5c7375..d7d5b78e5 100644 --- a/tests/ui/viewmodels/TriggerViewModel_Tests.cpp +++ b/tests/ui/viewmodels/TriggerViewModel_Tests.cpp @@ -1003,14 +1003,14 @@ TEST_CLASS(TriggerViewModel_Tests) Assert::AreEqual(std::string("0xH1234=16_0x 0008=2312_0xX0004=117835012"), vmTrigger.Serialize()); } - TEST_METHOD(TestNewConditionCodeNoteSize) + TEST_METHOD(TestNewConditionMemoryNoteSize) { std::array pMemory = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; TriggerViewModelHarness vmTrigger; Parse(vmTrigger, "0xH1234=16"); Assert::AreEqual({ 1U }, vmTrigger.Conditions().Count()); - vmTrigger.mockGameContext.SetCodeNote({ 8U }, L"[16-bit] test"); - vmTrigger.mockGameContext.SetCodeNote({ 4U }, L"[4 byte] test"); + vmTrigger.mockGameContext.SetNote({ 8U }, L"[16-bit] test"); + vmTrigger.mockGameContext.SetNote({ 4U }, L"[4 byte] test"); vmTrigger.InitializeMemory(&pMemory.at(0), pMemory.size()); vmTrigger.mockWindowManager.MemoryInspector.Viewer().SetAddress(8); @@ -1028,14 +1028,14 @@ TEST_CLASS(TriggerViewModel_Tests) Assert::AreEqual(std::string("0xH1234=16_0x 0008=2312_0xX0004=117835012"), vmTrigger.Serialize()); } - TEST_METHOD(TestNewConditionCodeNoteSizeFloat) + TEST_METHOD(TestNewConditionMemoryNoteSizeFloat) { std::array pMemory = { 0, 1, 2, 3, 0xDB, 0x0F, 0x49, 0x40, 0x82, 0x80, 0x00, 0x00 }; TriggerViewModelHarness vmTrigger; Parse(vmTrigger, "0xH1234=16"); Assert::AreEqual({ 1U }, vmTrigger.Conditions().Count()); - vmTrigger.mockGameContext.SetCodeNote({ 4U }, L"[float] test"); - vmTrigger.mockGameContext.SetCodeNote({ 8U }, L"[MBF32] test"); + vmTrigger.mockGameContext.SetNote({ 4U }, L"[float] test"); + vmTrigger.mockGameContext.SetNote({ 8U }, L"[MBF32] test"); vmTrigger.InitializeMemory(&pMemory.at(0), pMemory.size()); vmTrigger.mockWindowManager.MemoryInspector.Viewer().SetAddress(4); @@ -1053,15 +1053,15 @@ TEST_CLASS(TriggerViewModel_Tests) Assert::AreEqual(std::string("0xH1234=16_fF0004=f3.141593_fM0008=f-2.0"), vmTrigger.Serialize()); } - TEST_METHOD(TestNewConditionCodeNoteSizeViewerSize) + TEST_METHOD(TestNewConditionMemoryNoteSizeViewerSize) { std::array pMemory = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; TriggerViewModelHarness vmTrigger; Parse(vmTrigger, "0xH1234=16"); Assert::AreEqual({ 1U }, vmTrigger.Conditions().Count()); - vmTrigger.mockGameContext.SetCodeNote({ 8U }, L"[16-bit] test"); - vmTrigger.mockGameContext.SetCodeNote({ 2U }, L"[8-bit] test"); - vmTrigger.mockGameContext.SetCodeNote({ 4U }, L"test"); + vmTrigger.mockGameContext.SetNote({ 8U }, L"[16-bit] test"); + vmTrigger.mockGameContext.SetNote({ 2U }, L"[8-bit] test"); + vmTrigger.mockGameContext.SetNote({ 4U }, L"test"); vmTrigger.InitializeMemory(&pMemory.at(0), pMemory.size()); vmTrigger.mockWindowManager.MemoryInspector.Viewer().SetAddress(8); @@ -1112,7 +1112,7 @@ TEST_CLASS(TriggerViewModel_Tests) vmTrigger.UpdateFrom("0xH1234=16_I:0xH0002_0xH0005=6"); // force refresh to rebuild indirect chain vmTrigger.DoFrame(); - Assert::AreEqual(std::wstring(L"0x0007 (indirect $0x0002+0x05)\r\n[No code note]"), + Assert::AreEqual(std::wstring(L"0x0007 (indirect $0x0002+0x05)\r\n[No memory note]"), vmTrigger.Conditions().GetItemAt(2)->GetTooltip(TriggerConditionViewModel::SourceValueProperty)); } @@ -1125,7 +1125,7 @@ TEST_CLASS(TriggerViewModel_Tests) vmTrigger.Conditions().GetItemAt(0)->SetSelected(true); vmTrigger.InitializeMemory(&pMemory.at(0), pMemory.size()); - vmTrigger.mockGameContext.SetCodeNote({4U}, L"[8-bit pointer] test\n+4=[16-bit] note"); + vmTrigger.mockGameContext.SetNote({4U}, L"[8-bit pointer] test\n+4=[16-bit] note"); vmTrigger.mockGameContext.DoFrame(); vmTrigger.mockWindowManager.MemoryInspector.Viewer().SetAddress(8);