From 932062c1a46f8685d291e1035663b966cf1ec9e1 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 9 Apr 2025 20:30:49 -0700 Subject: [PATCH] Qt: Fix selecting high tiles in tile and map views (fixes #3461) --- CHANGES | 1 + src/platform/qt/MapView.cpp | 2 +- src/platform/qt/TileView.cpp | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2c4e2f0e2..8861f8a2d 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,7 @@ Other fixes: - Qt: Fix savestate preview sizes with different scales (fixes mgba.io/i/2560) - Qt: Fix potential crash when configuring shortcuts - Qt: Fix regression where loading BIOS creates a save file (fixes mgba.io/i/3359) + - Qt: Fix selecting high tiles in tile and map views (fixes mgba.io/i/3461) Misc: - 3DS: Change title ID to avoid conflict with commercial title (fixes mgba.io/i/3023) - Core: Handle relative paths for saves, screenshots, etc consistently (fixes mgba.io/i/2826) diff --git a/src/platform/qt/MapView.cpp b/src/platform/qt/MapView.cpp index aef8c58b7..d8e215be9 100644 --- a/src/platform/qt/MapView.cpp +++ b/src/platform/qt/MapView.cpp @@ -56,7 +56,7 @@ MapView::MapView(std::shared_ptr controller, QWidget* parent) #ifdef M_CORE_GB case mPLATFORM_GB: m_boundary = 1024; - m_ui.tile->setMaxTile(512); + m_ui.tile->setMaxTile(1024); m_addressBase = GB_BASE_VRAM; m_addressWidth = 4; m_ui.bgInfo->addCustomProperty("screenBase", tr("Map base")); diff --git a/src/platform/qt/TileView.cpp b/src/platform/qt/TileView.cpp index 6ba409a0a..ca75e4f31 100644 --- a/src/platform/qt/TileView.cpp +++ b/src/platform/qt/TileView.cpp @@ -61,7 +61,7 @@ TileView::TileView(std::shared_ptr controller, QWidget* parent) m_ui.tilesBoth->setEnabled(false); m_ui.palette256->setEnabled(false); m_ui.tile->setBoundary(1024, 0, 0); - m_ui.tile->setMaxTile(512); + m_ui.tile->setMaxTile(896); break; #endif default: @@ -201,7 +201,8 @@ void TileView::updateTilesGBA(bool force) { #ifdef M_CORE_GB void TileView::updateTilesGB(bool force) { const GB* gb = static_cast(m_controller->thread()->core->board); - int count = gb->model >= GB_MODEL_CGB ? 1024 : 512; + // TODO: Strip out tiles 384-511, as they aren't valid + int count = gb->model >= GB_MODEL_CGB ? 896 : 384; m_ui.tiles->setTileCount(count); mTileCache* cache = mTileCacheSetGetPointer(&m_cacheSet->tiles, 0); for (int i = 0; i < count; ++i) {