This is very accurate, nicely done 

Sure_Gezo_ wrote:
May I host it on my website? You will be credited for that awesome work.
That sounds fantastic! Where can I get it?_Gezo_ wrote:
Another thing I would like to point out is that I made an OD table some time ago. It would be useful as they all contain the "300" values and follow a formula for EZ and HR, and values are multiplied by their factor with DT and HT. It will be much easier to use for this aspect. Instead of constantly looking for what 7+DT+HR is, or 3+EZ+DT, or 5.5 being inaccurate, the program will get the values on their own.
I tried to figure out the formulas and came up with this:_Gezo_ wrote:
https://www.dropbox.com/s/kaqumg6u91yt6hh/ULTIMATE%20OD%20TABLE%20FIXED.pdf?dl=0
There are different formulas but yeah I'll probably try to figure them out again
NM OD: Initial OD
EZ OD: OD/2
HR OD: OD*1.4
DT OD: ROUND(OD/1.5+5.5) TO 2 DECIMALS
HT OD: ROUND(OD/0.75-5.5) TO 2 DECIMALS
EZ+DT OD: ROUND(EZ OD/1.5+5.5) TO 2 DECIMALS
HR+DT OD: ROUND(HR OD/1.5+5.5) TO 2 DECIMALS
EZ+HT OD: ROUND(EZ OD/0.75-5.5) TO 2 DECIMALS
HR+HT OD: ROUND(HR OD/0.75-5.5) TO 2 DECIMALS
300 Hit window: ROUND(49.5-(OD/0.5)*1.5) TO 1 DECIMAL
Sweet! I thought DT was just the 300 hit window times 2/3, and HT was the 300 hit window times 4/3. I figured out the 300 hit window as 49.5-(3*OD) (edit: actually, that's the exact same as yours, because dividing by 0.5 is equal to multiplying by 2, and then that times 1.5 is 3), but both your formula and mine return OD6.5 as 30 ms, when it's in fact 29.5. This is just about the only thing I've been stuck on.Pohm wrote:
I've finally figured out the formulas in a clean way (these are on the spreadsheet as well):NM OD: Initial OD
EZ OD: OD/2
HR OD: OD*1.4
DT OD: ROUND(OD/1.5+5.5) TO 2 DECIMALS
HT OD: ROUND(OD/0.75-5.5) TO 2 DECIMALS
EZ+DT OD: ROUND(EZ OD/1.5+5.5) TO 2 DECIMALS
HR+DT OD: ROUND(HR OD/1.5+5.5) TO 2 DECIMALS
EZ+HT OD: ROUND(EZ OD/0.75-5.5) TO 2 DECIMALS
HR+HT OD: ROUND(HR OD/0.75-5.5) TO 2 DECIMALS
300 Hit window: ROUND(49.5-(OD/0.5)*1.5) TO 1 DECIMAL
Hope it helps
EDIT: Here's the new and better (???) taiko pp calculator (automated 300 hit window calculation based off _Gezo_'s od table): https://www.dropbox.com/s/52mikcnntehqn ... .html?dl=0
private double GetHitWindow300()
{
string ODstr = map.GetTag("Difficulty", "OverallDifficulty");
if(ODstr.Length > 3)
throw new Exception("Error, OD has more than one decimal place");
double OD = Convert.ToDouble(ODstr);
if(((int)mods & (int)Modifiers.HardRock) > 0)
OD *= 1.4;
else if(((int)mods & (int)Modifiers.Easy) > 0)
OD *= 0.5;
OD = Dewlib.Clamp(OD, 0, 10);
//Calculate the integer part of OD first, then modify later based on the decimal
double window = 49.5 - 3 * Math.Floor(OD);
//If OD has a decimal place
if(OD % 1 != 0)
{
//Avoid precision bugs - round to one decimal place
double ODdecimal = Math.Round(OD - Math.Floor(OD), 1);
if(0.1 <= ODdecimal && ODdecimal <= 0.3)
window -= 1;
else if(0.4 <= ODdecimal && ODdecimal <= 0.6)
window -= 2;
else if(0.7 <= ODdecimal && ODdecimal <= 0.9)
window -= 3;
}
if(((int)mods & (int)Modifiers.DoubleTime) > 0 || ((int)mods & (int)Modifiers.Nightcore) > 0)
window /= 1.5;
else if(((int)mods & (int)Modifiers.HalfTime) > 0)
window /= 0.75;
return window;
}
Awesome :0!!montymintypie wrote:
Fixed the broken OD calculations by everyone, made some checkboxes pretty, made the calculation realtime, added a nice hosted domain.
I might add input validation and more CSS later.
http://pp.mon.im/