Before scoring, all times will be converted to their N64 equivalent. For each category, your point total is based on three categories: points-per-second, standards and rank. Points-per-second scoring is based on how much you improved your starting pbs. Standards scoring is based on the strength of your league pb, if your league pb is under certain standards you collect a sum for all the standards your pb achieves. Finally, you'll receive a sum based on your relative rank (compared to all participants), those in the top 3/5/10/25 all get an extra sum. Note: you can lose rank points if your rank changes or if you fall out of a top position.
You can look at this google sheet for more intuition about the scoring system: https://docs.google.com/spreadsheets/d/1fevdnPRk2IXzRwLufR-_6NUO8698clziirOLOhvHIbU/edit?usp=sharing
league_pb_rank - the position of your league PB on the league category leaderboardnumber_of_league_participants - the total number of participants in the leagueleague_pb_in_milliseconds - the total time of your league PB, in millisecondsleague_pb_in_seconds_floor - the total time of your league PB, in seconds, rounded downleague_pb_in_seconds_ceiling - the total time of your league PB, in seconds, rounded upinitial_pb_in_milliseconds - the total time of your initial PB, in millisecondsinitial_pb_in_seconds_floor - the total time of your initial PB, in seconds, rounded downinitial_pb_in_seconds_ceiling - the total time of your initial PB, in seconds, rounded upa * b - a multiplied by ba ** b - a to the power of ba // b - how many full lots of a fit into b (also known as "integer divide")a % b - a modulo bmin(a, b, ...) - the lowest of a, b, ...max(a, b, ...) - the highest of a, b, ...abs(a) - the absolute value of acheck_league_pb_var('a', 'b') - 0 or 1, indicating whether the league PB has a variable a with value bcheck_initial_pb_var('a', 'b') - 0 or 1, indicating whether the initial PB has a variable a with value bis_league_pb_n64 = check_league_pb_var('Platform', 'N64')
is_league_pb_emu = check_league_pb_var('Platform', 'EMU')
is_league_pb_n64_or_emu = is_league_pb_n64 + is_league_pb_emu
is_league_pb_vc = abs(is_league_pb_n64_or_emu - 1)
league_pb_in_milliseconds_adjusted = league_pb_in_milliseconds + is_league_pb_emu * 5000
league_pb_in_milliseconds_adjusted = league_pb_in_milliseconds_adjusted + is_league_pb_vc * 8000
league_pb = league_pb_in_milliseconds_adjusted // 1000
is_initial_pb_n64 = check_initial_pb_var('Platform', 'N64')
is_initial_pb_emu = check_initial_pb_var('Platform', 'EMU')
is_initial_pb_n64_or_emu = is_initial_pb_n64 + is_initial_pb_emu
is_initial_pb_vc = abs(is_initial_pb_n64_or_emu - 1)
initial_pb_in_milliseconds_adjusted = initial_pb_in_milliseconds + is_initial_pb_emu * 5000
initial_pb_in_milliseconds_adjusted = initial_pb_in_milliseconds_adjusted + is_initial_pb_vc * 8000
initial_pb = initial_pb_in_milliseconds_adjusted // 1000
has_pb_improved = min(1, max(0, initial_pb_in_milliseconds_adjusted - league_pb_in_milliseconds_adjusted))
pps_1 = 4 * max(0, min(630, initial_pb) - max(580, league_pb))
pps_2 = 5 * max(0, min(580, initial_pb) - max(540, league_pb))
pps_3 = 7 * max(0, min(540, initial_pb) - max(505, league_pb))
pps_4 = 10 * max(0, min(505, initial_pb) - max(480, league_pb))
pps_5 = 14 * max(0, min(480, initial_pb) - max(460, league_pb))
pps_6 = 20 * max(0, min(460, initial_pb) - max(445, league_pb))
pps_7 = 24 * max(0, min(445, initial_pb) - max(432, league_pb))
pps_8 = 32 * max(0, min(432, initial_pb) - max(422, league_pb))
pps_9 = 64 * max(0, min(422, initial_pb) - max(0, league_pb))
pps = pps_1 + pps_2 + pps_3 + pps_4 + pps_5 + pps_6 + pps_7 + pps_8 + pps_9
tier_1 = 25 * min(1, max(0, 35999 - league_pb))
tier_2 = 35 * min(1, max(0, 900 - league_pb))
tier_3 = 50 * min(1, max(0, 780 - league_pb))
tier_4 = 75 * min(1, max(0, 675 - league_pb))
tier_5 = 100 * min(1, max(0, 590 - league_pb))
tier_6 = 150 * min(1, max(0, 550 - league_pb))
tier_7 = 200 * min(1, max(0, 500 - league_pb))
tier_8 = 250 * min(1, max(0, 465 - league_pb))
tier_9 = 300 * min(1, max(0, 445 - league_pb))
tier_10 = 400 * min(1, max(0, 430 - league_pb))
tier_11 = 500 * min(1, max(0, 416 - league_pb))
standards = tier_1 + tier_2 + tier_3 + tier_4 + tier_5 + tier_6 + tier_7 + tier_8 + tier_9 + tier_10 + tier_11
rank_score = 3 * max(0, number_of_league_participants + 1 - league_pb_rank)
top3_sum = 25 * min(1, max(0, 4 - league_pb_rank))
top5_sum = 20 * min(1, max(0, 6 - league_pb_rank))
top10_sum = 15 * min(1, max(0, 11 - league_pb_rank))
top25_sum = 10 * min(1, max(0, 26 - league_pb_rank))
rank = rank_score + top3_sum + top5_sum + top10_sum + top25_sum
score = pps + standards + rank
final_score = has_pb_improved * score