alphabetize PlatformFrameRates and add amiga

This commit is contained in:
feos 2025-01-15 19:07:17 +03:00
parent 1e839b8802
commit 93f33815ed
1 changed files with 45 additions and 55 deletions

View File

@ -15,79 +15,69 @@ namespace BizHawk.Client.Common
private static readonly Dictionary<string, double> Rates = new Dictionary<string, double>
{
["NES"] = 60.098813897440515532, // discussion here: http://forums.nesdev.com/viewtopic.php?t=492 ; a rational expression would be (19687500 / 11) / ((341*262-0.529780.5)/3) -> (118125000 / 1965513) -> 60.098813897440515529533511098629 (so our chosen number is very close)
["NES_PAL"] = 50.006977968268290849,
["FDS"] = 60.098813897440515532,
["FDS_PAL"] = 50.006977968268290849,
["SNES"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["SNES_PAL"] = 21281370.0 / (4 * 341 * 312), // 50.0069789082
["SGB"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["SGB_PAL"] = 21281370.0 / (4 * 341 * 312), // 50.0069789082
["BSX"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["PCE"] = 7159090.90909090 / 455 / 263, // 59.8261054535
["PCECD"] = 7159090.90909090 / 455 / 263, // 59.8261054535
["SMS"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["SMS_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["GG"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["GG_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["SG"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["SG_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["NGP"] = 6144000.0 / (515 * 198), // 60.2530155928
["VB"] = 20000000.0 / (259 * 384 * 4), // 50.2734877735
["Lynx"] = 16000000.0 / (16 * 105 * 159), // 59.89817310572028
["WSWAN"] = 3072000.0 / (159 * 256), // 75.4716981132
["GB"] = 262144.0 / 4389.0, // 59.7275005696
["GBC"] = 262144.0 / 4389.0, // 59.7275005696
["GBA"] = 262144.0 / 4389.0, // 59.7275005696
["NDS"] = 33513982.0 / 560190.0, // 59.8260982881
["3DS"] = 268111856.0 / 4481136.0, // 59.8312249394
["GEN"] = 53693175 / (3420.0 * 262),
["GEN_PAL"] = 53203424 / (3420.0 * 313),
["Jaguar"] = 60,
["Jaguar_PAL"] = 50,
// while the number of scanlines per frame is software controlled and variable, we
// enforce exactly 262 (NTSC) 312 (PAL) per reference time frame
["A26"] = 315000000.0 / 88.0 / 262.0 / 228.0, // 59.922751013550531429197560173856
// this pal clock ref is exact
["A26_PAL"] = 3546895.0 / 312.0 / 228.0, // 49.860759671614934772829509671615
["A78"] = 59.9227510135505,
["Amiga"] = 59.8260993957519531,
["Amiga_PAL"] = 49.92041015625,
["AmstradCPC_PAL"] = 50.08012820512821, // = 1 / ((1024 * 312) / 16,000,000)
["BSX"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["C64_DREAN"] = PALNCarrier * 2 / 7 / 312 / 65,
["C64_NTSC"] = NTSCCarrier * 2 / 7 / 263 / 65,
["C64_NTSC_OLD"] = NTSCCarrier * 2 / 7 / 262 / 64,
["C64_PAL"] = PALCarrier * 2 / 9 / 312 / 63,
["ChannelF"] = 234375.0 / 3872.0, // (NTSCCarrier * 8 / 7) / (256 * 264)
// note: ChannelF II PAL timings might be slightly different...
["ChannelF_PAL"] = 15625.0 / 312.0, // 4000000 / (256 * 312)
["Coleco"] = 59.9227510135505,
["FDS"] = 60.098813897440515532,
["FDS_PAL"] = 50.006977968268290849,
["GEN"] = 53693175 / (3420.0 * 262),
["GEN_PAL"] = 53203424 / (3420.0 * 313),
["GB"] = 262144.0 / 4389.0, // 59.7275005696
["GBA"] = 262144.0 / 4389.0, // 59.7275005696
["GBC"] = 262144.0 / 4389.0, // 59.7275005696
["GG"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["GG_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["INTV"] = 59.92,
["Jaguar"] = 60,
["Jaguar_PAL"] = 50,
["Lynx"] = 16000000.0 / (16 * 105 * 159), // 59.89817310572028
["NDS"] = 33513982.0 / 560190.0, // 59.8260982881
["NGP"] = 6144000.0 / (515 * 198), // 60.2530155928
["NES"] = 60.098813897440515532, // discussion here: http://forums.nesdev.com/viewtopic.php?t=492 ; a rational expression would be (19687500 / 11) / ((341*262-0.529780.5)/3) -> (118125000 / 1965513) -> 60.098813897440515529533511098629 (so our chosen number is very close)
["NES_PAL"] = 50.006977968268290849,
["O2"] = 89478485.0 / 1495643, // 59.8260982065907439141559850846
["O2_PAL"] = 89478485.0 / 1800319, // 49.70146124103561646574857011
["PCE"] = 7159090.90909090 / 455 / 263, // 59.8261054535
["PCECD"] = 7159090.90909090 / 455 / 263, // 59.8261054535
// according to http://problemkaputt.de/psx-spx.htm
//["PSX"] = 44100.0 * 768 * 11 / 7 / 263 / 3413, // 59.292862562
//["PSX_PAL"] = 44100.0 * 768 * 11 / 7 / 314 / 3406, // 49.7645593576
// according to https://github.com/TASEmulators/mednafen/blob/740d63996fc7cebffd39ee253a29ee434965db21/src/psx/gpu.cpp
["PSX"] = 502813668.0 / 8388608, //59.940060138702392578125
["PSX_PAL"] = 419432765.0 / 8388608, //50.00028192996978759765625
// according to https://github.com/TASEmulators/mednafen/blob/382ff1b8d293c9a862497706808cbb79b2cecbfb/src/ss/vdp2.cpp#L904-L907
["SAT"] = 8734090909.0 / 145852525, // = 1746818181.8 / 61 / 4 / 455 / ((263 + 262.5) / 2.0) ≈ 59.8830284837
["SAT_PAL"] = 62500.0 / 1251, // = 1734687500.0 / 61 / 4 / 455 / ((313 + 312.5) / 2.0) ≈ 49.9600319744
["C64_PAL"] = PALCarrier * 2 / 9 / 312 / 63,
["C64_NTSC"] = NTSCCarrier * 2 / 7 / 263 / 65,
["C64_NTSC_OLD"] = NTSCCarrier * 2 / 7 / 262 / 64,
["C64_DREAN"] = PALNCarrier * 2 / 7 / 312 / 65,
["INTV"] = 59.92,
["ZXSpectrum_PAL"] = 50.080128205,
["AmstradCPC_PAL"] = 50.08012820512821, // = 1 / ((1024 * 312) / 16,000,000)
["UZE"] = 1125000.0 / 18733.0, // = 8 * 315000000 / 88 / 1820 / 262 ≈ 60.05444936742646666
["VEC"] = 50,
["O2"] = 89478485.0 / 1495643, // 59.8260982065907439141559850846
["O2_PAL"] = 89478485.0 / 1800319, // 49.70146124103561646574857011
["SG"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["SG_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["SGB"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["SGB_PAL"] = 21281370.0 / (4 * 341 * 312), // 50.0069789082
["SMS"] = 3579545 / 262.0 / 228.0, // 59.9227434043
["SMS_PAL"] = 3546893 / 313.0 / 228.0, // 49.7014320946
["SNES"] = 21477272.0 / (4 * 341 * 262 - 2), // 60.0988118623
["SNES_PAL"] = 21281370.0 / (4 * 341 * 312), // 50.0069789082
["TIC80"] = 60,
["ChannelF"] = 234375.0 / 3872.0, // (NTSCCarrier * 8 / 7) / (256 * 264)
// note: ChannelF II PAL timings might be slightly different...
["ChannelF_PAL"] = 15625.0 / 312.0, // 4000000 / (256 * 312)
["UZE"] = 1125000.0 / 18733.0, // = 8 * 315000000 / 88 / 1820 / 262 ≈ 60.05444936742646666
["VB"] = 20000000.0 / (259 * 384 * 4), // 50.2734877735
["VEC"] = 50,
["WSWAN"] = 3072000.0 / (159 * 256), // 75.4716981132
["ZXSpectrum_PAL"] = 50.080128205,
};
public static double GetFrameRate(string systemId, bool pal)