FunkyFr3sh / cnc-ddraw

GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic 2D games for better compatibility with Windows ME, 2000, XP, Vista, 7, 8, 10, 11, Wine (Linux/macOS/Android) and Virtual Machines
https://discord.gg/afWXJNDDF5
MIT License
2.23k stars 143 forks source link

Odd Transition Speed in ND #9 #320

Open indianajson opened 4 months ago

indianajson commented 4 months ago

In Nancy Drew: Danger on Deception Island there is a kayaking section that includes fade transitions between each movement. Currently, there is a minor issue with the transition speed when using cnc-ddraw-nancy-drew:

Without cnc-ddraw, the transitions take around 1 second and feel normal (although the game suffers).

When maxtickspeed=120 and limiter_type=1 the transitions happen very slowly (4-10 seconds depending on the transition). The game is playable though.

When maxtickspeed=30 and limiter_type=1 the transitions happen at normal speed but performance dips (cursor skips around and doesn't feel smooth with the locked low FPS).

When maxtickspeed=-1 and limiter_type=0 the transitions are so fast they don't even happen (which is a negative because the controls in the kayak section are somewhat tied to the transition's timing).

That said, this is not a game breaking issue. Given the speed is tied to FPS, the game's transitions may be coded in such a way that this cannot be fixed by cnc-ddraw, but I figured I would throw it out there. If you feel up to fooling around with it, here is a save in the kayak, where each player movement has a transition: SlowTransition.SAV

FunkyFr3sh commented 4 months ago

works fine for me with 120 / 1 lol (Maybe a bit too fast?)

https://github.com/FunkyFr3sh/cnc-ddraw/assets/8355237/2d3d80ae-63c8-45f2-995a-cbc41f7cb1bb

without limiter it works as well, but it's way too fast (does look a lot better with 120 / 1)

indianajson commented 4 months ago

How interesting. For me those same transitions are super slow... I wonder why. Thought it might have been a quirk with the new limiter type, but I guess not.

FunkyFr3sh commented 4 months ago

I got a similar issue in linux, seems to be a wine bug.

120 is still acceptable though - 60 is very slow and 30 is normal

https://github.com/FunkyFr3sh/cnc-ddraw/assets/8355237/cead17ab-334b-4622-a999-9b5d9f38ba82

indianajson commented 4 months ago

Definitely smoother for you than for me. I guess it's a weird edge case happening on my end. Going to test this on another Mac (different generation and OS) tomorrow just to see if it's Wineskin or my device.

indianajson commented 4 months ago

I ran four tests on two devices with two different versions of Wineskin:

MacBook Pro 2019 (OS Sonoma) using Wineskin Engine WS12CX64bit21.1.1 and Wrapper 3.0.3 MacBook Pro 2019 (OS Sonoma) using Wineskin Engine WS11CX21.1.1-16 and Wrapper 2.9.2.0 MacBook Pro 2013 (OS Big Sur) using Wineskin Engine WS12CX64bit21.1.1 and Wrapper 3.0.3 MacBook Pro 2013 (OS Big Sur) using Wineskin Engine WS11CX21.1.1-16 and Wrapper 2.9.2.0

The issue persists across all tests. The baseline transition time is around 1.25 seconds (between when you click and when you regain control after the transition). On my tests, the time ranged from 2.5 to 8.00 seconds. Oddly, the extra slow transitions are not always the same.

At this point, I'm assuming there's not way to address it, so no worries. As I said, it's not game breaking. Maybe down the road the issue will re-appear in another game and this will help diagnose it.

FunkyFr3sh commented 4 months ago

nice, thanks for testing. I'll have to think about a good solution