Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08086 DIP/Input Major Always 29 days ago 24 days ago
Tester ICEknight View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 10 (64-bit)
Status [?] Acknowledged Driver hh_sm510.cpp
Version 0.235 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 08086: gnw_zelda, maybe gnw_tbridge and others: Quick direction changes don't register properly
Description For certain Game & Watch games such as Zelda, pressing one direction and then very rapidly switching to the opposite makes the character stay in place, rather than allowing for quick movement as on real hardware.

As an example, the quick direction changes shown in the following video can't be currently done in emulation:
Steps To Reproduce Just start a game and hold left, then very quickly switch to right, or vice versa. If done fast enough, the new presses will not register.

This can happen when using a controller or a keyboard, indistinctively.
Additional Information The current emulation may be acting as if the first pressed direction was still been held when the change happened, confusing the game's logic since the D-pad's design doesn't allow for two opposite directions to be pressed simultaneously.

May also happen in other Game & Watch games such as Turtle Bridge which require consecutive presses to move, but not in games with fixed walking speed such as Donkey Kong II or Squish.
Github Commit
Flags Verified with Original
Regression Version
Affected Sets / Systems gnw_zelda, maybe gnw_tbridge and others
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
5
User avatar
No.19259
Kale
Developer
29 days ago
edited on: 29 days ago
Is it confirmed that gnw_bridge should have the same phenomenon?
If yes then summary should be standardized as "gnw_zelda, gnw_bridge, probably others", notice the fake "like" hyperlink pointing to a 404 page.
Relationship added out of the game decidedly trying to read inputs multiple times in the same frame, which really is a MAME framework issue.
User avatar
No.19260
ICEknight
Tester
29 days ago
I don't have access to a real Turtle Bridge handheld so I can't check if the quick direction changes behave correctly in it, but they certainly don't in MAME.
User avatar
No.19261
hap
Developer
29 days ago
To elaborate

Like I said on discord, I think(not 100% certain yet) it's caused by the game not seeing the inputs becoming inactive.
This can either be due to a limitation in MAME(it only reads inputs every 'vblank', so it might miss some if you have superman fingers),
or due to the player pressing one direction and immediately the other direction (this is easy on a keyboard).

so, let's say 1=left, 2=right, 0=inactive
1-2-1-2-1-2: Link does not move
1-0-2-0-1-0-2: Link does move

The former is not a bug.
The latter is a bug in the MAME core if the 1-0-2 or 2-0-1 switch is too fast and it does not detect the "0".
User avatar
No.19265
ICEknight
Tester
28 days ago
Assuming that we're talking consecutive frames, why would it not be a bug to have Link stand still when alternating Left and Right without an inactive frame inbetween, if such inputs would make him move on real hardware? (Note that the game shown in the video doesn't seem to miss any of the quick inputs)

Back in the day, I found out that this game has a trick where it's possible to drain the enemy's life faster if you just hold the Sword button next to them and repeatedly press Left and Right really fast (and from the Discord discussion, it looks like I wasn't the only one who did this). Right now, this can't be done reliably in MAME, no matter if you're using the D-pad of a controller or a keyboard.
User avatar
No.19266
hap
Developer
28 days ago
edited on: 28 days ago
Scrap my hypothesis:
I investigated a bit more, and it reads the d-pad every 0.03 seconds, that's much slower than 60hz. So it doesn't do any 'sub frame' input reading.

BTW I can replicate your video on MAME. The inputs are more responsive on that section (the part where you have to choose one of the 2 ladders)