DDR A Score Calculations Explained

rationale + live demo

One of the options I’ve implemented in Simply Love on my ITG cab in the city is “DDR Timing”. It’s there so that, along with one of the DDR noteskins and judgement style graphics, players can get something 75% close to the actual experience.

That means, access to content that may be locked behind several hundred Australian dollars of paywall for less than a single percent of that amount. Oh, and with superior pads, to boot.

The issue is that SL/SM5 can’t quite replicate calculating the DDR A percentage-based “money” score, mostly due to a quirk with what counts as one “note”. Yet, for DDR players of the more rebellious kind who wish to superiority flex scorepost, it would be great if they knew how to convert values as displayed on the ITG results screen into the money score. Which I happened to have done already.

Amidst working on that, the findings below are what I’ve figured out about the calculation. I cover ways to convert both sources of result screens (DDR and ITG) to the money score.

The Score Weights

The “money score” (the one out of 1 000 000) is a percentage based system based off these following metrics/weights:

Judgement Points Non-Marv Applies To
Marvelous 5 Taps
Perfect 5 Taps
Great 3 Taps
Good 1 Taps
Miss 0 Taps, Shocks
OK 5 Freezes, Shocks

Not shown in the results screen of DDR is the NG (no good) judgement, worth 0 points, which is given only to dropped freezes. Whilst you do see this as an in-game judgement for hit shock arrows, in actuality they are misses, which metric wise are identical.

The maximum possible score would be getting Marvelous for every judge, holding every freeze, and avoiding every shock, i.e. 5 pts × (taps + freezes + shocks).[1] Conveniently, sources of knowledge like RemyWiki should have these values readily available for you to search.

  • Your points are divided by the max points possible to give a percentage, which is multiplied by 1 000 000
  • 10 is subtracted from every non-Marvelous judgement as seen above. Of particular note is that misses don’t count
  • If you’re playing in standard mode, this score is rounded down to the nearest 10. Otherwise, it’s the nearest 1
  • Voilà, that’s your money score!

Jumps and OKs

You may have noticed that two or more simultaneous notes (i.e. a jump or a hand) only receive one judge, often seen when the combo counter only goes up by one instead of (intuitively) two. Excluding the combo effect, this also occurs in StepMania, but that’s where the similarities end.

In DDR, if two freeze notes start at the same time, it is also considered as one OK (or NG) and only given once all freezes have been fully held.

To put into an example, take the very first jump freeze of Cosmic Hurricane CSP. The longer ← freeze goes for two measures (minus a beat), the shorter → freeze goes for one measure (minus a beat).

  • If the → freeze is held to completion, the game still waits for ← to complete before giving you an OK. If you release ← during this period, that’s an NG
  • If you immediately let go of one of the freezes (say, →), the other one (i.e. ←) also deactivates by itself after the grace period, even if you never took your foot off it

In StepMania, this wouldn’t occur because each hold is tracked per column, so instead it’d result in individual combinations of OKs/NGs. To make clear, that freeze jump in SM would be counted as one judge and two holds.

It goes without saying that in both games if you miss a freeze entirely, you also miss out on the OK. This is particularly important in DDR A because this is the only time, other than failing, where the sum of the numbers at the results screen won’t equal the actual number of all types of notes in the chart; more about that in a moment.

Shocks and OKs

The difference between the judgements of shocks and freezes could be described as so:

Non-Miss Miss OK NG Shown Stats Possible Pts
Freeze Held 2/2 10 ✓
Freeze Dropped 1/2 10 ✗
Freeze Missed N/A 1/1 (+1 N/A) 10 ✗
Shock Avoided 1/1 5 ✓
Shock Hit 1/1 5 ✓
shock arrows being misses instead of ng means it’s always included in a count somewhere

The check or cross next to Possible Points denotes whether all points can be derived from whatever values are shown in the DDR results screen (i.e. 5 × shown stats).

A freeze’s start is really just a regular tap. But a shock arrow doesn’t have that, and the game gives you an OK for dodging it. So you’re probably inclined to treat shocks similarly to freeze ends... except that their failure judgement is actually a miss, not an NG, as the real-time judgement shows.

In StepMania, this means that any uniquely timed hit mines are to be translated to misses. This is where tracking your mines can be a bit of a memory game. For example, 22/24 dodged mines, or 6 rows in single player, could either mean you dodged 4 (different rows) or 5 (two in the same row). That’s something you need to remember, which isn’t an easy feat with, say, Shirokabe.

Freeze counts

The shock arrow NG = Miss trait means we can be sure that shock arrows are always accounted for in the judgement breakdown[2] due to how NGs aren’t displayed in the results. I’d probably wager that was intentional.

This is why we need to know how many DDR freezes there are. As explained:

  • Totally missed and/or dropped freezes not being enumerated in the results screen means the total freezes must be known to correctly derive the chart’s maximum score
  • With the addition of how jumps work in DDR, we can’t just use StepMania’s reported hold counts
If you held every freeze and avoided every shock arrow, this makes it incredibly easy: your OKs are just the sum of the two totals.
so git gud lmao

Mixing and matching

The problem with having shock notes count as a miss is that they’re combined with regular misses from tap notes. Similarly, the problem with them counting as OK means they’re combined with freezes.

This means, if the chart has shock arrows and freezes (very likely), note types must not clash to remain possible to calculate without knowledge of actual totals, i.e.

  • If you hit a shock arrow, no misses from taps are allowed, or
  • You need to keep track of completely missed freezes because this results in a miss and a lower OK count, which looks exactly the same as a hit shock arrow. If that’s the case, you must avoid every shock arrow, etc

In StepMania, this isn’t an issue since mines are counted separately (and, like holds, are tracked per column).

Putting it together

To confirm a DDR money score, you should be good to go by following the instructions as above, keeping in mind what the total sum of notes, freezes, and shocks are.

To convert a StepMania score to DDR (don’t forget to use DDR timing metrics), plug in the variables as such:

  • Judgements are entered in as they are
  • The reported value from holds may be used if none of them are jumps. If there are, you need to count them as one, and if you do drop either one of these holds, you get no credit for them
  • Add the number of avoided mine rows to the OK count. Each row has four mines, so you divide the reported value by four. Any uniquely timed instance of a hit row adds one to the miss count, even if you hit more than one in the same row

Honestly, to save the nuances and hoops you must jump through regarding shock arrows, just don’t play those charts in the first place...

[1] RemyWiki explains this calculation in terms of fractions (i.e. 3/5 and 1/5) which might be slightly harder to understand for those not mathematically inclined, especially how in the multiplication of weights 5/5 = 1 = omission.

[2] Apparently, shock arrows that have been hit also (very briefly) disables input, and any arrows that were close enough to that shock arrow are entirely missed, i.e. the game doesn’t even pick it up as a miss. I don’t play DDR frequently enough to be willing to figure out if this is true or not.