Releases: SeongGino/QMamehook
QMamehook v1.8 - Bertrand
The Ammo Counts Update
May 28th Hotfix: Patched for three digits states support
Simplifies the buffer reading system, as state placeholders can be any number. This effectively adds support for sending Ammo & Life Counts to certain supported clients.
Wonder what that could be...
QMamehook v1.7 - Soleil
THE FIXES™ release
A lot of fixes for problems either introduced by v1.6 or weren't made apparent until now.
- Fixed the gameName situation for good, so the name/file being searched shouldn't ever become a whole mess of the current network buffer again.
-
This was a very embarrassing oversight from v1.4's refactoring away from TCP Socket signals to polling--but the solution is also a slightly more robust method of isolating the game name that should also be more robust across both OS's. For some reason, the index of the
=
sign in the gameName isolation bit is always 1 character off between Linux and Windows, so leaving in the whitespace until the end compensates for this strange behavior.
-
- Also fixed strange edge cases where the Windows build would crash either loading or exiting a session if DemulShooter is the output server.
...or should I call you Abacus?
QMamehook v1.6.1 - Kantaris
The File Paths Update release
New to QMamehook, and by request, is custom paths support!
Invoking QMamehook with -p
will use whatever path is fed into it. Relative filepaths will be converted into absolute paths as appropriate.
Additionally, the redundant QMamehook\QMamehook\ini
default path for Windows users has been resolved: it is now %LOCALAPPDATA%\QMamehook\ini
as it should be. This does not affect Linux users.
QMamehook v1.5.1 - Antlion-fix
The mame_stop
& mame_start
fix release
Settings are now flushed and current game is cleared if mame_stop
is detected - which should resolve cases of switching titles without the server disconnecting.
- Reported by DemulShooter dev argonlefou, thank you so much!
Also a small tweak to the way settings are populated if they aren't detected, blank entries will be pushed to the current settings map to prevent possibly duplicating commits to the current game's settings file.
Update: ALSO also fixed the GameSearching method's dumb method of assuming every initial message is a start command; it will now perform the same de-concatenation as the in-game reading method, to ensure the start command is isolated and read properly. The rest of the initial read buffer is promptly disregarded after a start command has been read, if any data is left over afterwards.
QMamehook v1.4.1 - Dog of the Wild Variety
Release updated at 2/29 12 PM for a small tweak to the socket check.
The Flycast apology update*
Turns out, Flycast actually revealed a fatal problem with the older signal/slot-based architecture! Simultaneous outputs actually caused stream congestion, which is the source of Flycast's outputs being horribly desynced for seemingly no reason. So, another refactoring of the way we check for data: using the blocking waitForReadyRead()
method exclusively to wait for data, and then only check after we've exhausted the current buffer. Lather, rinse, repeat until an error from disconnection.
HOWEVER, turns out that QT on Windows has a bit of a problem erroneously timing out sometimes when waiting to read an input. So, Windows specifically has a 1ms socket check implemented, and only aborts the socket connection when the error is explicitly RemoteHostClosedError
- which should be fine with no discernible difference in performance, but the idle checking may have possible performance implications for very slow machines?**
*In case it isn't obvious, I don't have any problem with Flycast, lol. Just poking fun at my slight overreaction--though they should still fix their outputs implementation anyways.
**I've checked on an i5 6500U, and QMamehook seemed to have no visible CPU usage difference when just waiting on new inputs. Most 64-bit processors shouldn't have an issue with this.
QMamehook v1.3 - Moz
The Flycast update
For whatever reason, Flycast does not adhere to the established syntax standards set by MAME at all, so this release resolves some of the problems caused by connecting to this particular instantiation.
- Code touchup, using two distinct search paths for when a game isn't and is loaded (possible search speed improvement(?) when in-game, since it won't be singling out for start commands while already started)
- Also technically fixes crashes when attempting to write to a settings file that hasn't been instanced yet from getting non-gamestart outputs before a gamestart has been declared.
- Added check for Flycast's super-duper-special
game
start indicator alongsidemame_start
. - Fixes crashes when attempting to load a new game while one is already loaded.
- Fixes segfaults when disconnecting a session that hasn't loaded a game yet.
- Technically this one isn't Flycast's complete fault, but using a bad search condition of checking for a settings object that may not always exist--it's just that MAME never allowed this circumstance to happen.
There is technically a known issue in that a new game start discriminator can't be detected as such while in-game, but this is something that only happens in Flycast--and is really a bug on their side, not ours, for not following the MAME network output spec properly, for there is no other way of detecting that a session has ended without being explicitly notified (or at least cut the connection). Besides that, most arcade players using this are probably using some kind of launcher anyways, which means they are closing and re-opening Flycast between game launches anyways so the client will be disconnected regardless, filling in that gap.
Still, mrgrgrr...
QMamehook v1.2 - Garo
Comma fixes
- Commas in actions are now properly supported (which QSettings really insists on splitting, so a workaround is used to stitch the thing back together).
- Action reading streamlined somewhat; only discriminator is state breaks
|
, and command breaks%s%
are always checked and replaced if detected.- This means even illogical combinations of state and command breaks are processed logically.
- Fixed input buffer creating a blank whitespace entry after the final
'\r
of a statement. - "cmw" reading is now more robust against whitespace.
TL;DR: Funny app thingy do read better.
QMamehook v1.1 - Macpherson
The Settings update
- If
gameName.ini
is not detected, the file will be created with the minimum necessary entries for the user to input commands in. - Any output channels not detected to be in the settings file already will be dumped into the [Outputs] group with blank values.
- Added
-v
verbosity switch; when enabled, prints the exact input that QMamehook is receiving from the network stream. Potentially useful for debugging or research. - Trimmed down on the unnecessary cli info a bit.
QMamehook v1.0 - Miller
The inaugural initial release!
Providing builds for Ubuntu (20.04 LTS?) and Windows 7-and-up. Extract the files to wherever is most convenient.
Reminder that QMamehook is designed primarily for PC light guns with Serial support using the GUN4ALL/GUN4IR standard! Any other applications for MAMEHOOKER do not apply here.