thomasasfk / drs2dd

dance rush stardom chart -> dance dash beat map
13 stars 2 forks source link

[Bug] Some maps timings are way off. #1

Closed thomasasfk closed 8 months ago

thomasasfk commented 1 year ago

Lightning — Today at 02:39 (lightningxce on discord) @Thomas whenever you get a chance, I can confirm that the sync on a bunch of the convers are actually just all over the place - specifically if you want to see something that's way out of whack, check out murmur twins. I know there's an impossible amount to sort through, but it seems like maybe something is just off with one of the conversion methods (because I know there was a data type change)

Thomas — Today at 10:30 (thomasasfk on discord) I'll take a look after work, do you have a list of really bad ones? Even if relatively small, will be able to check if they all have the same issue I imagine it'll all be ones with version 9: https://github.com/thomasasfk/drs2dd/blob/855941ef518b1f1740ec6451bfd312082e4256a0/resources/drs/datax/music/00168/difficulty_1a.json#L3 Since the timings are derived by some tick calculation: https://github.com/thomasasfk/drs2dd/blob/855941ef518b1f1740ec6451bfd312082e4256a0/drs2dd.py#L191-L194 Instead of the raw milliseconds...

Noticed the one song you mentioned has 2 bpms on record too: https://github.com/thomasasfk/drs2dd/blob/855941ef518b1f1740ec6451bfd312082e4256a0/resources/drs/datax/music/00168/difficulty_1a.json#L10-L22

thomasasfk commented 1 year ago

Ugh you know what it might be. The multiple BPMs may be active in the same song, i.e with the example above it starts at 160 bpm, but then at tick 3840 it changes to 174 - and the logic just never accounted for that.

thomasasfk commented 1 year ago

Issue exists on these maps:

50th Memorial Songs -Flagship medley-
murmur twins
ピアノ体操第一
thomasasfk commented 1 year ago

^ So I don't know how to account for this, need to sit down and figure it out.

On another note, for some reason the DANCERUSH metadata had a different max_bpm than the actual maps had... so I've put in a fix for that, but need to test it before merging and doing another zip release, I'd ideally like both issues fixed before doing another release... https://github.com/thomasasfk/drs2dd/pull/2

thomasasfk commented 1 year ago

https://github.com/thomasasfk/drs2dd/blob/cda71deb568e75a9056535bdbd7416713bd14619/resources/drs/datax/music/00133/songs.json#L12-L43

So I've tried to replicate the engines timings of the notes - since dance dash only supports a single bpm, we take the highest, and calculate the other positions, it may not be perfect, but it's substantially better than before...

Calculation for ticks per second = BPM * 0.08 e.g 13500 * 0.08 (135 bpm = 1080 tps)

Then for all prior time periods up to a tick, we'll calculate their prior seconds relative to the tps & bpm at their times, and just add the offset for the new notes time.

thomasasfk commented 1 year ago

Kind of sorted in https://github.com/thomasasfk/drs2dd/pull/4, but I think maybe it could still be better, not sure.

thomasasfk commented 8 months ago

meh