Lightweight plugin for Cheat Engine that adds a compact and powerful toolbar directly into the Memory Viewer.
When working with assembly code, debugging, or reverse engineering, many commonly used actions are hidden inside context menus. This slows down workflow and makes navigation less efficient.
This plugin solves that problem by providing instant one-click access to the most frequently used Memory Viewer actions — all in one place.
Quick Actions Toolbar integrates directly into the Memory Viewer (TMemoryBrowser) and adds a bottom toolbar with essential debugging and reverse engineering tools. As a result, users can access important actions much faster without navigating complex menus.
Instead of searching through multiple context menus, you can execute actions instantly using dedicated buttons. For example, commonly used features like Break and Trace or Replace with NOP are always available in one click.
In addition, the plugin uses original Cheat Engine menu items internally, which ensures full compatibility and native behavior. Therefore, it works seamlessly with existing functionality and other plugins.
Key Features
One-click access to important actions:
Break and trace
Find out what accesses this instruction
Code Filter
Dissect code
Replace with NOP
Add address to the list
Bookmark system:
-- Set Bookmark 0–3
-- Goto Bookmark 0–3
Smart focus handling (auto focus restore)
Native integration via Cheat Engine menu actions
Fully DPI-aware (100% / 125% / 150%)
Works with multiple Memory Viewer windows
🛡 Safe implementation using protected calls
Compatibility
Cheat Engine 6.4 or newer
Supports x86 and x64 processes
DPI scaling supported (100% / 125% / 150%)
Installation
Place the “MiMemory Viewer – Quick Actions Toolbar (v1.0).lua” file into Cheat Engine’s autorun (Cheat Engine\autorun) folder
Restart Cheat Engine.
Open Memory Viewer — toolbar will appear automatically.
Feedback & Support
Have suggestions or ideas for improvement? Leave a comment on the blog — feedback is always welcome!
- Stopped using getMemoryViewForm() during plugin startup to avoid opening extra Memory Viewer windows - Added delayed attach retries for newly created Memory Viewer windows while their controls are still initializing - Added recursive existing-panel detection to prevent duplicate toolbar panels after script reloads - Added dynamic DPI metrics for button height, panel height, margins, and gaps - Removed hardcoded DPI gates for 96 / 120 / 144 and fixed high-DPI sizing - Updated the plugin header and version metadata
Hey awesome script! I noticed however that with my DPI of 192 that the buttons were squished. I took a look and your script hard codes DPI's 96, 120, and 144. I could easily change one to 192 and it would work but I decided to see if I could change them to be dynamic instead. Here's what I came up with:
local function createActionButton(mb)
...
if SystemDPI == 96 then
btn.Width = scaleSize(spec.width + 2)
btn.Height = scaleSize(MVQuickToolbar.ButtonHeight)
end
if SystemDPI == 120 then
btn.Width = scaleSize(spec.width)
btn.Height = scaleSize(MVQuickToolbar.ButtonHeight)
end
if SystemDPI == 144 then
btn.Width = scaleSize(spec.width)
btn.Height = scaleSize(MVQuickToolbar.ButtonHeight)
end
...
local function createActionButton(mb)
...
btn.Width = scaleSize(spec.width + (SystemDPI == 96 and 2 or 0))
btn.Height = scaleSize(MVQuickToolbar.ButtonHeight)
...
I kept SystemDPI here so if it detects 100% scaling it will still help with the cramping. It also keeps functionality to adjust scaling for different DPI's as needed. Otherwise no need for more gating logic.
local function buildToolbar(mb)
...
local dpiBaseHeightMap = { [96] = 30, [120] = 22, [144] = 16 }
local unscaledBaseHeight = dpiBaseHeightMap[SystemDPI] or 30
MVQuickToolbar.ButtonHeight = scaleSize(unscaledBaseHeight)
MVQuickToolbar.PanelMinHeight = MVQuickToolbar.ButtonHeight
toolbar.Height = MVQuickToolbar.ButtonHeight
...
Again kept SystemDPI for custom scaling purposes. I also made a little table to map DPI to BaseHeight so it wouldn't be as wordy when we try to calculate more than 3 k v pairs; You can add something like it for the button code if you need it as well. I kept it at 30 for everything above 144 DPI because I think it looks quite nice. However I'm not able to view it under different DPI's to test because mine is stuck for some reason but the logic should be sound. Hope this helps any peeps that had the same problem.