I might add this to my MultiTool, thanks for post.
Can i have all the numbers cause i suck at math and im lazy
I might add this to my MultiTool, thanks for post.
I found out that the speed can be something other than 1147(none) for some beatmaps.
I don't know why it's different but I get 1248(none) 1872(dt) 936(ht) on some maps
(For example, Ayaka Ohashi - Wagamama MIRROR HEART[Meg's Extra], yuiko - Kimi to Yumemishi[toybot's Extra], etc).
And I don't know whether it is only me getting these speed number on these maps, or everyone will get such numbers on this "kind" of maps.
The old AOB scan I used doesn't work on such "kind" of map (though it could be I'm bad at pattern finding ;x )
Jump to 5:51 if you want to see how it looks like in replay.
Last edited by Detroid0318; 11-30-2017 at 01:33 AM.
if i enter the game, it turns the speed back to normal.
Last edited by smi1ey; 12-01-2017 at 03:26 PM.
One more update: Let's assume actual speed value is at [esi+34](float), [esi+10] will be the speed multiplier(float). [esi+28](int) - [esi+20](int) = base speed(or whatever you want to name it) of the song, it's 1147 or 1248 or some other numbers. Therefore, [esi+34](actual speed value) = ([esi+28]-[esi+20])*[esi+10].
And the actual speed of the song depends on the ratio between [esi+28](int) and [esi+34](float), which means setting [esi+34](float) higher or [esi+28](int) lower can speed up the song.
(Or, set [esi+10](float) before osu! does the calculation:[esi+34](actual speed value) = ([esi+28]-[esi+20])*[esi+10]). It does this calculation everytime the speed changes, such as when entering/exiting a song with mod)
However, osu! only use these number when [esi+10](float) != 1.0 so it's necessary to set it to some numbers other than 1.0 in order to make speed value do the jobs (or you can patch that check so that osu! always use these number).
SkullZ313 (12-08-2017)
works nice , but how to submit the score ??
it's either been fixed or i'm just doing something wrong(<-- probably that one) because when i try this the song is slow for a bit and at one point it just speeds up to normal speeds and my cursor is really slow kek
EDIT: welp guess i just did something wrong. now it works like a charm
Last edited by ladesplat; 12-07-2017 at 10:16 AM. Reason: fixed my stupidity
SkullZ313 (12-08-2017)
Actually if you just want to deal with the time calculation error(aka HaxCheckAudio()), you can just byte patch the first jne, or byte patch +69 cmp eax,000003E8 (change 1000(0x3E8) to something larger than the whole interval of the song), etc.
The problem is the replay frame interval is still incorrect. What I did to deal with this problem is to multiply the speed of AudioEngine.Time and that of GameBase.Time with a same multiplier(asm hook), and since two times are matched, time calculation error will not be triggered as well.
The program in the video didn't touch anything about the anticheat code.
(I always forgot that obs takes time to recapture tabbed-out app)
And average frame time difference by firedigger's osuReplayAnalyzer
Last edited by Detroid0318; 12-08-2017 at 07:06 AM. Reason: Add video
SkullZ313 (12-08-2017)
Wow I wasnt thinking ppl would actually try stuff with this. I mean my tutorial might be common sense for you guys and I don't understand anything about what you are saying but if it leads to something great why not!
Another way I've tried is 1/ patch that anticheat function; 2/ modify what osu! uses as the targeted replay interval(real time interval, not osu! time). It is (double)1000/60 by default, so for none speed DT play, It should be modified to something around ((double)1000/60)*1.5 to make the replay frame difference looks legit.
I can't tell which method would be better, but both work well.
Last edited by Detroid0318; 12-08-2017 at 02:30 PM.