From 7f35d524aed5cc1ce501b91ed8cea6e7f3a50e82 Mon Sep 17 00:00:00 2001 From: Gericom Date: Sat, 28 Feb 2026 17:32:40 +0100 Subject: [PATCH] Fix a few bugs related to the cheat panel --- arm9/source/cheats/EmptyCheatRepository.h | 16 ++++++++++++++++ arm9/source/romBrowser/RomBrowserController.cpp | 6 ++++++ .../romBrowser/views/cheats/CheatsAdapter.h | 5 +---- .../views/cheats/CheatsBottomSheetView.cpp | 2 +- .../views/cheats/CheatsBottomSheetView.h | 2 +- 5 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 arm9/source/cheats/EmptyCheatRepository.h diff --git a/arm9/source/cheats/EmptyCheatRepository.h b/arm9/source/cheats/EmptyCheatRepository.h new file mode 100644 index 0000000..c09f9d6 --- /dev/null +++ b/arm9/source/cheats/EmptyCheatRepository.h @@ -0,0 +1,16 @@ +#pragma once +#include "ICheatRepository.h" + +class EmptyCheatRepository : public ICheatRepository +{ +public: + std::unique_ptr GetCheatsForGame(const FastFileRef& romFile) const override + { + return nullptr; + } + + void UpdateEnabledCheatsForGame(const std::unique_ptr& cheats) const override + { + // Do nothing + } +}; diff --git a/arm9/source/romBrowser/RomBrowserController.cpp b/arm9/source/romBrowser/RomBrowserController.cpp index 5fe1433..1ea5e79 100644 --- a/arm9/source/romBrowser/RomBrowserController.cpp +++ b/arm9/source/romBrowser/RomBrowserController.cpp @@ -7,6 +7,7 @@ #include "SdFolderFactory.h" #include "services/settings/IAppSettingsService.h" #include "cheats/UsrCheatRepositoryFactory.h" +#include "cheats/EmptyCheatRepository.h" #include "cheats/PicoLoaderCheatDataFactory.h" #include "RomBrowserController.h" @@ -145,6 +146,11 @@ void RomBrowserController::HandleNavigateTrigger() if (!_cheatRepository) { _cheatRepository = UsrCheatRepositoryFactory().FromUsrCheatDat("/_pico/usrcheat.dat"); + if (!_cheatRepository) + { + // When usrcheat.dat is not found or cannot be read use a dummy empty cheat repository + _cheatRepository = std::make_unique(); + } } u64 startTick = gTickCounter.GetValue(); diff --git a/arm9/source/romBrowser/views/cheats/CheatsAdapter.h b/arm9/source/romBrowser/views/cheats/CheatsAdapter.h index 8938f49..77e27fc 100644 --- a/arm9/source/romBrowser/views/cheats/CheatsAdapter.h +++ b/arm9/source/romBrowser/views/cheats/CheatsAdapter.h @@ -29,19 +29,16 @@ public: View* CreateView() const override { - LOG_DEBUG("CheatsAdapter::CreateView\n"); return new CheatListItemView(_vramOffsets, _materialColorScheme, _fontRepository); } void DestroyView(View* view) const override { - LOG_DEBUG("CheatsAdapter::DestroyView\n"); delete (CheatListItemView*)view; } void BindView(View* view, int index) const override { - LOG_DEBUG("CheatsAdapter::BindView\n"); auto listItemView = static_cast(view); u32 numberOfCategories = 0; auto categories = _cheatCategory->GetCategories(numberOfCategories); @@ -60,7 +57,7 @@ public: void ReleaseView(View* view, int index) const override { - LOG_DEBUG("CheatsAdapter::ReleaseView\n"); + // Nothing to do } private: diff --git a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp index aabae25..b34cb7f 100644 --- a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp +++ b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.cpp @@ -67,7 +67,7 @@ void CheatsBottomSheetView::Update() _cheatListRecycler->SetPosition(LIST_X, _position.y + LIST_Y); if (_viewModel->GetState() == CheatsViewModel::State::DisplayCheats) { - if (_cheatsAdapter == nullptr) + if (_cheatsAdapter == nullptr && _objVramManager != nullptr) { _cheatsAdapter = new CheatsAdapter( _viewModel->GetCurrentCheatCategory(), _materialColorScheme, _fontRepository, _vramOffsets); diff --git a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.h b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.h index d86f25a..163f611 100644 --- a/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.h +++ b/arm9/source/romBrowser/views/cheats/CheatsBottomSheetView.h @@ -44,7 +44,7 @@ private: CheatsAdapter* _cheatsAdapter = nullptr; const MaterialColorScheme* _materialColorScheme; const IFontRepository* _fontRepository; - IVramManager* _objVramManager; + IVramManager* _objVramManager = nullptr; FocusManager* _focusManager; CheatListItemView::VramOffsets _vramOffsets; u32 _savedVramState = 0;