Emulator Issues #960
closedAuto-fire / Control Stick Problem
0%
Description
What steps will reproduce the problem?
- Running Sonic Heroes
2.
3.
What is the expected output? What do you see instead?
Sonic and other chars move very slowly because of control stick not moving
in direction I need. It's like half-pressing button.
What version of the product are you using? On what operating system?
Dolphin r3261
Please provide any additional information below.
Other Gamecube games work properly.
Updated by Anonymous almost 14 years ago
Please respond if this issue is still valid, or it will be closed.
Updated by knuckles500 almost 14 years ago
This is no longer a problem for me (didn't know this issue was for Heroes, wtf @ Advance being there).
I say, fixed.
Updated by DimitriPilot3 almost 14 years ago
Hmm, it's still a problem for me as of r6546, so it's not entirely fixed for everyone...
I'm having this issue almost all the time (in-game as long as the game isn't paused, and in a few menus), and that makes the (PAL) game mostly unplayable for me. I think I tried disabling Dual Code and even using the Interpreter (I'll have to double-check that), without success...
What seems to happen to me for some reason is that the game sometimes thinks that all buttons and axises are zeroed out (about every 2 to 6 frames), and that makes some obstacles hard or even impassable (such as when using Big's umbrella to fly up using wind for example).
I'm not sure where the issue actually comes from, but I checked that the CSIDevice_GCController::GetData() function isn't the cause. It happens somewhere in a few frames...
Updated by DimitriPilot3 almost 14 years ago
Indeed, this issue occurs even when the (PAL) game is started with the Interpreter and in Single Core mode.
I wonder what differences (game-region-wise or system-wise for example) could give different results...
Updated by skidau almost 14 years ago
- Status changed from Fixed to New
This is the unintended auto-fire effect.
Updated by skidau almost 14 years ago
Issue 1330 has been merged into this issue.
Updated by skidau almost 14 years ago
Please test if this issue has been fixed in r6552.
Updated by DimitriPilot3 almost 14 years ago
I tried r6552 with the "Dual Core" and "Idle Skipping" options disabled. The auto-fire problem isn't fixed yet.
Updated by Anonymous almost 14 years ago
Issue 1542 has been merged into this issue.
Updated by DimitriPilot3 almost 14 years ago
I meant in comment 6 that the Pad::GetStatus() function call in GetData() (the former, not the latter) isn't causing the problem, as I put a breakpoint right below it (using VS2008's debugger) and noticed that the resulting struct is unaffected/constant (the A button bit remains set when the problem occurs for example).
Actually, I can confirm that the CSIDevice_GCController::GetData() isn't the direct cause for this problem. I set a breakpoint at the final line of that function (244: "return true;") and I observed the _Low and _Hi values, which appear to be unaffected by the "special button combo" code, although the problem still persists.
This remains the same even when I comment the "_Hi |= 0x00800000" line, or when I add a "return true" before the "special button combo" part of the code.
Now here's something interesting that reinforces the previous claim:
- the "button states" at [8040F030] (P1), [8040F038] (P2), [8040F040] (P3) and [8040F048] (P4) show no symptoms, as these are (possibly) the 64-bit values that come from the GetData() function;
- the "button states" (which are reorganized in a sort of struct) at [8029C1FA], [8029C23E], [8029C3C2], ..., [8029C7B4] appear to be zeroed out at times, as I explained in my first post here.
Not sure where to continue from now on. Perhaps memory breakpoints at [8040F030] and [8029C1FA] along with some code debugging will help?
Updated by DimitriPilot3 almost 14 years ago
Issue 237 has been merged into this issue.
Updated by Anonymous over 13 years ago
Can anyone confirm that it only happens in PAL? I've just tried NTSC-U version of the game and didn't notice anything wrong.
The effect is continuous, or only happens at certain points?
Updated by DimitriPilot3 over 13 years ago
- Category set to controls
As I said, for me, using the plainly-dumped PAL game (MD5:45BF89BC3455C84C6EB54FBB41AD5287), this effect occurs in most (not all) situations: in-game so long as the game isn't paused, and occasionally (rarely) in a few menues (such as with the "loading successful, press A button to continue" message box?).
Using Dolphin (v3.0 this time) in single-core and CPU interpreter mode, with "Idle Skipping" disabled and with LLE audio emulation (on separate thread) has failed to make any difference in-game.
It'd be interesting to have many other tests using different regions of the game, just to know if that indeed is just a region-specific issue. Not sure if and when I'll feel like doing more debugging on this specific issue myself...
(regarding the recent update, what about labelling GameIssue's (which are now New) with "Type-Game" instead?)
Updated by DimitriPilot3 over 13 years ago
(...if that's a good idea, of course.)
Updated by Anonymous over 13 years ago
GameIssue didn't really make sense. All the bugs being reported should come down to a concrete emulation bug, having a classification for GameIssue just means that the root cause is unknown. It should by Type-Defect and status should reflect how much we know/are doing about the issue.
That's what I think, at least :P
On topic: I guess I'll check out the PAL version.
Updated by Anonymous over 13 years ago
yea so the 8bytes from 8040F030 look fine like you said. You think 8029c7b4 is the stick's value in that struct?
Updated by Anonymous over 13 years ago
afaict, the problem has something to do with the func at 801df624 (recognized at SPEC2_MakeStatus by symbol db). It seems like it's the callback used by PADRead each time. Unfortunately we can't just patch it out :p
Updated by Anonymous over 13 years ago
ps. in this case, spec0/spec2 is referring to the versions of the pad hardware.
Updated by Anonymous over 13 years ago
also, patching the callback to spec0's handler results in rather funny behavior ;p
Updated by Anonymous over 13 years ago
- Status changed from New to Work started
I noticed that these games write SIPoll on every Vblank interrupt.
I got sidetracked and made SI polling be controlled by VI timing (how it actually works on hardware), and accidentally introduced a bug: SI was polled an insanely high amount. However, my bug also fixes this issue. I notice the vi interrupt stuff looks quite sketchy as well, so once I get things squared away I should be able to fix this game as well as make the behavior more accurate :)
Updated by gamerk316 over 12 years ago
Still exists in PAL version in Dolphin 3.0 638. Any updates on getting this solved?
Updated by JMC4789 over 10 years ago
This bug apparently affects all the multiplayer modes for some reason.
Updated by JMC4789 over 9 years ago
- Status changed from Work started to Accepted
Still happens even with Native GC Support. That cuts out some of the potential causes, right?
Updated by seapancake almost 9 years ago
Still happens with 4.0-8445, can confirm it doesn't happen on NTSC-U or NTSC-J version only on PAL. If you execute a throw move and then push in the direction you want to move as soon as you land you will move at normal speed, if you stop then try to move you'll move at the pace people have described.
Happens in 3.0 but not as frequently as latest build, character can run at full speed from standing most times.
Issue is shown here https://youtu.be/oyVr9zBEX7s
Updated by seapancake almost 9 years ago
For some reason Youtube deleted the video as a duplicate? https://youtu.be/AaD1N5OBjt8
Updated by JMC4789 almost 9 years ago
Fixed in PR3457 -> https://github.com/dolphin-emu/dolphin/pull/3457
Updated by JosJuice almost 9 years ago
- Status changed from Accepted to Fixed