DK - King of Swing control bug #689

Closed
Ixodid opened this Issue Apr 20, 2017 · 7 comments

Comments

Projects
None yet
2 participants

Ixodid commented Apr 20, 2017

Tried with 0.5.2 and the latest nightly of mGBA, on windows 10 64-bit.
When grabbing two pegs at the same time your character gets turned around. This makes the game pretty difficult to play as you can't jump up, and even makes the tutorial character that is supposed to show you the ropes screw up all of their jumps.
dk

Owner

endrift commented Apr 20, 2017

I'd already gotten this report in an email, but haven't gotten around to looking into it.

Here are the details from the email:

I'm using Windows 8.1 and mGBA 0.5.2 (the latest stable release, as of this writing.)

There is a serious movement orientation bug in DK: King of Swing which makes it difficult to play.

When your character is holding onto a peg with one hand, and tries to grab a peg with the other, they are almost always turned to a different direction than they should. This direction change continues after they let go; the character continues rotating from that direction, as if they had started from that direction to begin with.

After examining the specific cases where there were problems (listed below), the problem appears to be with vertical orientation detection when two pegs are grabbed, where the vertical orientation is reversed once a player grabs a second peg (i.e. if they are supposed to be facing up, they face down, and vice versa). The only case where this doesn't happen is if the character is supposed to be facing down, where they face down (see the bottom of the list below)

The specific errors are (these are demonstrated in the attached .avi file):

  • If they are supposed to be facing diagonally left-down, they face left-up.
  • If they are supposed to be facing diagonally left-up, they face left-down.
  • If they are supposed to be facing up, they face down.
  • If they are supposed to be facing diagonally right-up, they face right-down.
  • If they are supposed to be facing diagonally right-down, they face right-up.
  • They do face down when they are supposed to, but if you look carefully, you can see the sprite face up for a frame.

endrift added this to the 0.6.0 milestone Apr 20, 2017

Owner

endrift commented Apr 20, 2017

There was a bug affecting this game that was fixed in 0.5.2, can you check 0.5.1 to see if the behavior is any different? I wonder if I'm hitting some anti-piracy measures.

Ixodid commented Apr 20, 2017

Going back through older releases the last one that works is 0.4.1. It broke somewhere between 0.4.1 and 0.5.0.

Owner

endrift commented Apr 20, 2017

That's kind of odd but that information will help me bisect to figure out when it broke. Thanks!

Ixodid commented Apr 20, 2017

I went through the old nightlies just to be a bit more thorough.
Last version that worked: 7401371
In 812d063 the problem is slightly different and DK's right hand can't grab pegs at all, most of the time.
Finally, 7212854 is the first version with the specific issue described above/in your email.
So I'm assuming the problem is with the threaded rendering changes in 812d063 and ac11542.

Owner

endrift commented Apr 20, 2017

Ah! This clearly points to the problem being the ArcTan implementation in the HLE BIOS. I wonder what the edge case here is, since my implementation is reversed out of the BIOS.

endrift closed this in f4abdd6 Apr 21, 2017

Owner

endrift commented Apr 21, 2017

Thanks for narrowing it down! That saved me a lot of work bughunting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment