Repository navigation
Conversation
+ Added partial support for Diztinguish's specifc binary format, which allows hooking Mesen up to Diztinguish for live disassembling
The AddRow() function now only stores the current state, and the tracing is done all at once at the end of the frame. This makes it possible to use resources more efficiently, possibly also reduces the amount of cache misses. In my tests, "log to file" saw a performance increase of roughly 50%, with "log to socket" seeing an increase of up to 200%.
"Trace to file" and "trace to network socket" will, in the future, share some common implementation code. There's now a settings dialog for configuring both fo them, and the settings are stored in Mesen's user settings.
Also made sure some of the new settings actually do something now.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request reworks how tracing functions in Mesen, primarily regarding tracing to a stream (like a file). A large portion of the tracing code has been rewritten and extended, and some new features added that tie to these changes.
Shortly summarized, the following changes were made:
The following settings are now available for tracing:
Regarding the aformentioned performance improvements, I observed the following (non-scientific) benchmarks on my own system (decent hardware bought in 2024 with an NVMe SSD as the "log to file" target) running a Terranigma (J) ROM.
Before my changes, I roughly achieved around 55 FPS in Mesen while file logging was active, so not quite the 60 FPS required for smooth gameplay. After my changes (with uncapped framerate), that number has now almost doubled to around 100 FPS. This is for the default case when the raw text format is used and none of the further optimizations are enabled in the settings.
Logging to a network socket might be even faster than that, but there doesn't really exist a good test case for this yet. I can only test this via DiztinGUIsh's live connection feature, which requires Mesen to use its special binary format. This typically sends much less data than using the raw text format and thus is always bound to be faster, anyways.