From 290621da08c081e79a573b70c12cbe49d96a880e Mon Sep 17 00:00:00 2001 From: "Vinegar (Flynn Waiver)" <124418090+moxie-coder@users.noreply.github.com> Date: Tue, 24 Feb 2026 00:07:21 -0500 Subject: [PATCH 1/3] refactor: add Bitmap ScoreTxt as an option currently it's skewed to the left, and doesn't update properly --- assets/fonts/vcr-bmp.fnt | 1 + assets/fonts/vcr-bmp.png | Bin 0 -> 5599 bytes source/ClientPrefs.hx | 3 +- source/PlayState.hx | 59 +++++++++++++++++++++---- source/options/OptimizationSubState.hx | 8 ++++ 5 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 assets/fonts/vcr-bmp.fnt create mode 100644 assets/fonts/vcr-bmp.png diff --git a/assets/fonts/vcr-bmp.fnt b/assets/fonts/vcr-bmp.fnt new file mode 100644 index 00000000000..2ef277113e6 --- /dev/null +++ b/assets/fonts/vcr-bmp.fnt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/fonts/vcr-bmp.png b/assets/fonts/vcr-bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..a27630f85856d86ec6857d615fa0b1001c6d6b65 GIT binary patch literal 5599 zcmV<56(H(~P)000%HNkl`y`jl~4pxLH$t5 zEGv;|{o3+xTSXcBl)-cABm&=Gf2-vI4`2B16|NThU z;QT~Ho8G;$4;U69&61~Md zX+(1wF-N>?Bl70iV=$sq2R~Zm*ULy|@-e9E7l}4@kXguS{`Z3ZUkWNGTqaJ;&Km*jwvqKe- z-vQ6gE`X~$W+x}C9O%?I_Hs(@6n41wn(JYb91q9ymm-;hUn)-uj+Eeg67Ez}x9EJ{ zl9hq}DDtv1JOgPVH-Lu0G}{6+-eZTk2weKtGiVDDcLoQ?({H>uGq_tE*0mgF$mstC7TVFKE-Vus{#^tswR(J5q8dLuQ>R=M-I z`I212eYE%Kjc7GnP;q6Jy>b<()8jt?YQBQB5EOKagc5^~wnYW1z^m%#3&3o|qbZFV zoO1pK;2tx8(>?iiMl%;b9$9jNQO$h#M1TxbGal6n&{WA=JgrM z1J;ai%IIm#5>2jALh-$c4yp4W0F8$yqEK34@~3C98ChYIalD0T7NhW6sQe}JXANJr zQM>L(qSMlt)45PtI`FgwrE3#)2((piA#oqC9VVo;jGD$G9WKy#z^V0vNcSMoDl{<7 zC7>l^d&Y4*x2F1mfnG3zb(q^M4Ls=cJU5#3y~d2uq@xxcgS67bN;4!srnXGflll29 z{N|c3QGV0x5~afg8b7k<(dFmqNXH?43W6!~O%%J0mj=CQQl%o->S+*n} zTj-!8;=-jW8#Sa2G)t9PCw&4kKcIEe1+WL^In|NmRNpg>J0m$e9xkRn(9wCP3eY@b zeX;zsRB1O|PS4ucOA3bz-#1aW)n0Q3Lw(fi)6z9COr(L*3UtpIu`m-2fDTK!BZ2Om z=n`=~7A-QEiH!u%iEJx)7)x$vnC!5PN?8_`mFbS zvs>F59ntPSS^-l$ZzLMx8oQ14uWEQV-l5b@#X!|2jE05EZ_STKD2ZHpxm^@Tb!AjjT*XV?b82epm!;-x>+;OPbHv}6dEyqy#V~-G1!YS z|6i}x_NMc{X^pSu6|`B9m}ihv*;ANAmp0K>=qIUDnRExHOVr(&M6+frq>DxYrDL+y zeXo!*$GJ$cwRZ7uQ}2z0b#G!29S&|ro>BV`>!8NEg?!B`8Y!5UpEe`27m;;a}a zC4*5Z|61Ug( z-Z*HFbQZKss3m&3{2J)&xzM@3tN`ecNwhF^np_>nQfSSnneh8$RTMy%1^ zRPUWZ9&3Ws=aIegOG^(~pwBNyXMiaEO#`8}z4E5VS^zm7lB3(I72u_bFk`!94FJ>M z44tXjWGR-0rt+f-kmyp921|tgCVpn1OR=gVvUyRm zsb_9OneNFyJR6)SEai8$A(NGF(IeX0#2Z1sMecT(Q+bk-mc&K4=q!v?jS-T1G)kZP z<73Y}*W1YBUDJs@DxHqlrZq{Ys-0uZg%;4;VNUIZi|(dw0iGM#PqzT?lw5*)Rv6@! zTdt+gXQ^$Gwt_J>w|A_D`{iClK9p5EZ?(`Zq}@c#Jlbk}iJBv$=2UKP8D)48vT`jz zqp~}Za!4uDMRvr9mgkTd>0a8kiAmG>sRW({bZ7=x^$atje0tB)nPYKl!n%OYM@_d- zrx~wn37~Vp)$Dd`hPF~O06WH483|xQpra!$+L1!#>)CgeKx^ZLdo@C0c2rf^<;VM6 z_q$;3j!sxQ;rBXTdRGTL9}9%FMu(QF3jIyxuM=qN7)vQMa};O^9G8afLXygwOKp)} zN(RC0Mog7s&6hHY!s3uZgUmp!W4163!dP29VU;7=I>u5u`Wgj#?1)zKBFU_8-+j!Kl);kT6l`q@WqpjI0v}N%!L-% zNx`B+KFBP@H$rKTHZB~Gpbf2;Vh6GwEK`o^5mZXQ8uFvweI ztux@V%owIqgkGb)AgHyVtQ$3Tqfu3pr2?TEbs=>O8U2{@OjcLc zZh+14&s~F#q9>F;(N^@{=>eTy&{AAWP}Us_bkce;7K?ORCKj!P)iuc&91)ad98*2?J|bqeH@>6!uz2blT43_~c_o=oacK-EP;5 zf1X`>3e&F4FQ@J&@J{cJOU3_uJgP`fHCT-&-sj3zu|}uaC2#i@K~_;uc0?>5es2L< zbPQJ2g=NO?#W2f>uE-45E587;++H1se6K>f1&P-$P%sWVE(2DXspsOZVL4S)dRt<_f8#SVf-44w^1HD6mi;_J99p%^# z&0ht&WF|}NZZ&Xg%2(Z%XdWj0FwYN_P9xICitDQUxZ1p=lxT9Bipmv2AZ&^1FN3{P zp5SeF`BQXNLZ+7d-Nh*^v<2vaqg|#34Qp~L40Z^Xd5GFO4q6%ZkmhCcBqph z^e`m3MPd==rC_@30?kn%qWPnyPkBi2eQ3uwk+zV|L$YF`%KT>_&*F3^K5oaBym3c# zqgjnU*xyFtG;tQveMmPW>F9q_hrT$NZ2*)HwsVB)5p)868(gyHOqI1mc9tpD@>(e= zJuG+JQpd24@kY;%jo$l{*CxlZNYXAWGnvyU zmg&X*Y7)lM)O|2I&HnhF_1l9HEr949Y%fgRW6wreCr4Z*h9T_T4xS9IK$5_%9q2?P z&33J3HBQNSq!!m`lpO)Ox<*HP_>}prAzu0obr(;LtO97%X-nN=gf6ZXE}7Mkw+j@5 zynjLBNkDgvPE%p+mbTCuooLW!msk~r6KhS33Rj{0sg0-OF9Xb1g{4)GXq3-jHGA`6 ze{H5Dy}jF1o%KrwiRJgZkZLI6xmr&SMe&u1jNDu<#n?8_c#agh#nP~G);%iX398u^BYrfpsE6$ zs-n4^?d8A>^!D<9ZMClr=!k^u2r8K=OAAi2e8>VV*Yk!Bp|7F*usU>i=#Y=x;KY|%Sq?JW)q$On#|97X?}0H zhhhP<5Vpiq>&N?A>oqr!;bBUd4l=xx^R zO9M?3J~{J+q7LFc_lQs`zsYrZtioip5u^mv{A_g`SepuTbxoK{ZsEWTbPJbuL7o}t zT>xTB6SU)j_fGFTuMlQ>o`y;~4ebdbSVV-Jsz+(sLVc^igh7}_(XOS=lL;-|BHSbX z&n{8-Q5tkJ1 zUq_x(kocFO8F-Tmzw?aNd0@(^f+^WWR(q4uZ;Y0$Q9zGjAZU*SnWOULT%;4VYjo%a;O$s2c*`}N_hUwe!js(rXDEGZYS7t9R;!v|8g0QwT-yAJ8ENLL}f9*G9{wFqOI%=GP` zO$uWdfq+Yqq-#*7X)tZ2HHbi7k6)3*Qs002ovPDHLkV1i9MxIX{@ literal 0 HcmV?d00001 diff --git a/source/ClientPrefs.hx b/source/ClientPrefs.hx index 21d5ee09515..75015f1cad7 100644 --- a/source/ClientPrefs.hx +++ b/source/ClientPrefs.hx @@ -171,6 +171,7 @@ class ClientPrefs { //default settings if it can't find a save file containing y public static var rainbowTime:Float = 5.0; public static var autosaveCharts:Bool = true; public static var autosaveTime:Int = 240; + public static var useBitmapScore:Bool = false; // compatibility //Gameplay Modifiers public static var gameplaySettings:Map = [ @@ -249,7 +250,7 @@ class ClientPrefs { //default settings if it can't find a save file containing y // i suck at naming things sorry private static var importantMap:Map> = [ "saveBlackList" => ["keyBinds", "defaultKeys", "defaultArrowRGB", "defaultPixelRGB", "defaultQuantRGB"], - "flixelSound" => ["volume", "sound"], + "flixelSound" => ["volume", "sound"], "loadBlackList" => ["keyBinds", "defaultKeys", "defaultArrowRGB", "defaultPixelRGB", "defaultQuantRGB"], ]; diff --git a/source/PlayState.hx b/source/PlayState.hx index 227fefd02c7..a8a6cf5a55e 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -18,6 +18,8 @@ import objects.*; import openfl.events.KeyboardEvent; import openfl.system.System; import play.objects.*; +import flixel.text.FlxBitmapFont; +import flixel.text.FlxBitmapText; #if SHADERS_ALLOWED import openfl.filters.ShaderFilter; import shaders.ErrorHandledShader; @@ -304,7 +306,7 @@ class PlayState extends MusicBeatState public var songScore:Float = 0; public var songHits:Int = 0; public var songMisses:Float = 0; - public var scoreTxt:FlxText; + public var scoreTxt:FlxSprite = null; var timeTxt:FlxText; var hitTxt:FlxText; @@ -384,6 +386,8 @@ class PlayState extends MusicBeatState var startingTime:Float = haxe.Timer.stamp(); var endingTime:Float = haxe.Timer.stamp(); + + static var vcrBitmapFont:FlxBitmapFont; // FFMpeg values :) var ffmpegMode = ClientPrefs.ffmpegMode; @@ -1215,10 +1219,39 @@ class PlayState extends MusicBeatState } // TODO: cleanup playstate, by moving most of this and other duplicate functions like healthbop, etc - scoreTxt = new FlxText(0, healthBarBG.y + 50, FlxG.width, "", 20); - scoreTxt.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, CENTER, OUTLINE,FlxColor.BLACK); - scoreTxt.scrollFactor.set(); - scoreTxt.borderSize = 1; + if (ClientPrefs.useBitmapScore){ + var bmp:FlxBitmapText = new FlxBitmapText( + 0, healthBarBG.y + 50, "", + FlxBitmapFont.fromAngelCode( + Paths.font("vcr-bmp.png"), + Paths.font("vcr-bmp.fnt") + ) + ); + + bmp.alignment = CENTER; + bmp.borderStyle = OUTLINE; + bmp.borderColor = FlxColor.BLACK; + bmp.letterSpacing = -1; + bmp.scrollFactor.set(); + bmp.borderSize = 1; + + scoreTxt = bmp; + } + else + { + var txt:FlxText = new FlxText( + 0, healthBarBG.y + 50, + FlxG.width, "", 20 + ); + + txt.setFormat(Paths.font("vcr.ttf"), 16, + FlxColor.WHITE, CENTER, OUTLINE, FlxColor.BLACK); + + txt.scrollFactor.set(); + txt.borderSize = 1; + + scoreTxt = txt; + } scoreTxt.visible = !ClientPrefs.hideHud; add(scoreTxt); @@ -1266,8 +1299,18 @@ class PlayState extends MusicBeatState final s = Reflect.getProperty(styleSettings, style); if (s.yOffset != null) scoreTxt.y = healthBarBG.y + s.yOffset; if (s.xOverride != null) scoreTxt.x = s.xOverride; - scoreTxt.setFormat(Paths.font(s.font), s.size, s.color, CENTER, OUTLINE, FlxColor.BLACK); - scoreTxt.borderSize = s.borderSize; + if (!ClientPrefs.useBitmapScore) + { + cast(scoreTxt, FlxText).setFormat( + Paths.font(s.font), + s.size, + s.color, + CENTER, + OUTLINE, + FlxColor.BLACK + ); + } + (scoreTxt : Dynamic).borderSize = s.borderSize; if (style == 'Forever Engine' || style == 'Vanilla') updateScore(); } @@ -2236,7 +2279,7 @@ class PlayState extends MusicBeatState tempScore = 'Score: ' + formattedScore; } - scoreTxt.text = '${tempScore}\n'; + (scoreTxt : Dynamic).text = '${tempScore}\n'; callOnLuas('onUpdateScore', [miss]); } diff --git a/source/options/OptimizationSubState.hx b/source/options/OptimizationSubState.hx index 1cdf0e40c25..e0a7fb74633 100644 --- a/source/options/OptimizationSubState.hx +++ b/source/options/OptimizationSubState.hx @@ -63,6 +63,14 @@ class OptimizationSubState extends BaseOptionsMenu 'bool', false); addOption(option); + + var option:Option = new Option('Use Bitmap ScoreTxt', + "If checked, Uses FlxBitmapText for the score display to reduce garbage collection spikes and improve performance when the score updates frequently. + May cause compatibility issues with Lua mods that change text size or font dynamically.", + 'useBitmapScore', + 'bool', + false); + addOption(option); var option:Option = new Option('Disable onSpawnNote Lua Calls', "If checked, the game will not call onSpawnNote when a note is spawned.\nIf you have a script that uses that, maybe leave it on.", From 402dd7e6dad5b19738f34ac32c5e160c582a4482 Mon Sep 17 00:00:00 2001 From: "Vinegar (Flynn Waiver)" <124418090+moxie-coder@users.noreply.github.com> Date: Tue, 24 Feb 2026 11:19:42 -0500 Subject: [PATCH 2/3] fix issues, and mark it as WIP --- source/PlayState.hx | 15 ++++++++++++++- source/options/OptimizationSubState.hx | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/source/PlayState.hx b/source/PlayState.hx index a8a6cf5a55e..a6fd925a336 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -1236,6 +1236,7 @@ class PlayState extends MusicBeatState bmp.borderSize = 1; scoreTxt = bmp; + scoreTxt.screenCenter(X); } else { @@ -1251,6 +1252,7 @@ class PlayState extends MusicBeatState txt.borderSize = 1; scoreTxt = txt; + scoreTxt.screenCenter(X); } scoreTxt.visible = !ClientPrefs.hideHud; add(scoreTxt); @@ -2220,6 +2222,17 @@ class PlayState extends MusicBeatState var comboInfo = ClientPrefs.showComboInfo; var showNPS = ClientPrefs.showNPS; var missString:String = ''; + + function setScoreText(value:String) + { + if (Std.isOfType(scoreTxt, FlxText)) + cast(scoreTxt, FlxText).text = value; + else + cast(scoreTxt, FlxBitmapText).text = value; + + scoreTxt.screenCenter(X); + } + public dynamic function updateScore(miss:Bool = false) { scoreTxtUpdateFrame++; @@ -2279,7 +2292,7 @@ class PlayState extends MusicBeatState tempScore = 'Score: ' + formattedScore; } - (scoreTxt : Dynamic).text = '${tempScore}\n'; + setScoreText('${tempScore}\n'); callOnLuas('onUpdateScore', [miss]); } diff --git a/source/options/OptimizationSubState.hx b/source/options/OptimizationSubState.hx index e0a7fb74633..bf2df2feda8 100644 --- a/source/options/OptimizationSubState.hx +++ b/source/options/OptimizationSubState.hx @@ -64,7 +64,7 @@ class OptimizationSubState extends BaseOptionsMenu false); addOption(option); - var option:Option = new Option('Use Bitmap ScoreTxt', + var option:Option = new Option('Use Bitmap ScoreTxt WIP', "If checked, Uses FlxBitmapText for the score display to reduce garbage collection spikes and improve performance when the score updates frequently. May cause compatibility issues with Lua mods that change text size or font dynamically.", 'useBitmapScore', From aa22d9d716782ae345a33ee480f7fa1bc59f63c4 Mon Sep 17 00:00:00 2001 From: "Vinegar (Flynn Waiver)" <124418090+moxie-coder@users.noreply.github.com> Date: Sat, 28 Feb 2026 05:10:37 -0500 Subject: [PATCH 3/3] re-export at 20px instead of 16 --- assets/fonts/vcr-bmp.fnt | 2 +- assets/fonts/vcr-bmp.png | Bin 5599 -> 9590 bytes source/PlayState.hx | 11 ++++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/assets/fonts/vcr-bmp.fnt b/assets/fonts/vcr-bmp.fnt index 2ef277113e6..f8ac239b29b 100644 --- a/assets/fonts/vcr-bmp.fnt +++ b/assets/fonts/vcr-bmp.fnt @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/fonts/vcr-bmp.png b/assets/fonts/vcr-bmp.png index a27630f85856d86ec6857d615fa0b1001c6d6b65..fc7e6c4464dbf27e8cb5aee07d4665f4b873eb22 100644 GIT binary patch literal 9590 zcmV-+C5hUJP)Fd+We=j|-!UG8~H_vasK)JbncJsxX=eIxD;-@~*aR2>Q`&=EepTc|7DBqal zwH>}!DDuDM`_ckW@X1@2ua+{PdqOGOhtEwr;hEzLIX!)E;hR^H6LfKJ>I<9U+3Zhr zy^qq=gWQ%a(tcgt2{1lbZm+Jsi~BE8cD*p-3faAZ*7#&hPbvJb()K3BOGmxo!#$T- zJ2%?%6yLP^)76JRF7oF_I}=+47;3JrZf`${K|jayE*D6Cf2-*MhFMDfaV&zEj@to$@U_x31^3WgC5lsB0(fBYNsGKfE8I z%wG8YHuxa!>cdYL`4j$EkiW!t!+s_I=}7qV^%jHsVam@kP(6nxV%k5A@_(YdO?giF zGUXRjWBZ2&7%6fq4l=TI9g2=Tlft1eC&RgSXCQ66UUPQ#l;IC;{hwZYQUC1f>GhL% zzkYHx>6f4z-dFO)*r zrtN3AFTUvH*C@`&3ZTfTW>Pp5T4zUh1};{7Fd_Ck5MMj1`381Z{X5sMz9Hv1{tj@t zJeyxw(vnYm)1Rvqbr^<#`FH640aTq>%gs{rh+@N^m>51j_I8E(L$5`+W!)75oN< ze2Ir|zqva7Jonc1om4)he325@fAVlk`8cI@^>!1BI@l6;P~FH*^em1PfThe4-eN)- zX%I1aJ$-g_`^}(0h5(yg$^ee?9m7(`p-Z*O!p?N3gMZJ%p8}ej>)X?h(2>vZKD=Vb zGOXY7erN}`7}VjJjTHDwu!L{S5y}YA5qnpSuU`WwE-g3IbO8!Y0Qzm{(#4o*n`7Bs zs>uga1cE{PMp2vkMVCrigulj;^A9w|-@^~({R{Wj zrIF?;xj@wIAZ>AlgOW3`CEaP9oq^D7xt|Lcx^6canXGDh##KfD+j|0`&uRV zR(8rzUyum`BTc*y@A@U>EyIQ*-yPtQd_tXDTo33Rl#c_9;n~dRsrxrTWpeyk2Jv$U z`EiQ$pXI*jVrIC`cXvsPgzQHYzM%V8&fWlxGqZJ0k~IUCSMWs|JisPcj5N8u^HAx- z7lN`ZO@KmY(p%b=CJ`D)p;P`CwC=f&`T$ErmYb*7 zS4+UM&8RaMga07>0u}cF`5`t;0tO@gmf71=Wtj&|2g#eLWUtU&JC^$y2%il z1+08PUpf1X4C;xUn7fKq4n>~4n{%zAzyDWu1-UWchexDR@1@Tf1U*4SnBS!BuPOOr zo&HCbq(A2VN5caBUuMGd1GC|l`d$*adk95e37WGNr)Lb3ktW_3-{CVl8D-~rUK|Q@ zGbg+gVzJfpfO&fTzexKXfMFucU93xX&@@S(mr{jiN2V@>ag?x8}fp_Ipcf!s1H7MOqCBLMHl`cVol~~w11c)5b}7H zDz%sQrq8J_FPC)XL~+ubuBAZ8Cn8qK7-q^a zv^j%XrAi9nYt6ipuetWZ7y8^5mxGX=X^)v(=}V3LU=U+%FLn9c)CbE6o-5=^bHizG zKH|5H`ldeWJ-Z38 z<}&aOVmg2uF`rINeaI|7RX=eA;SqlmtPPn~xg9s6`0VT#n6WEMb&u&s0?ZnNu5NFy z*3gsp=#XJ}%kRjV+kK4q;R%QO#j8aCWnc}x@fppV*i|K=v|ry|U5#cuboywCzTOc( z=05zzWGExÐ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 literal 5599 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 diff --git a/source/PlayState.hx b/source/PlayState.hx index a6fd925a336..33eea141862 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -1220,7 +1220,7 @@ class PlayState extends MusicBeatState // TODO: cleanup playstate, by moving most of this and other duplicate functions like healthbop, etc if (ClientPrefs.useBitmapScore){ - var bmp:FlxBitmapText = new FlxBitmapText( + final bmp:FlxBitmapText = new FlxBitmapText( 0, healthBarBG.y + 50, "", FlxBitmapFont.fromAngelCode( Paths.font("vcr-bmp.png"), @@ -1233,14 +1233,15 @@ class PlayState extends MusicBeatState bmp.borderColor = FlxColor.BLACK; bmp.letterSpacing = -1; bmp.scrollFactor.set(); - bmp.borderSize = 1; + bmp.borderSize = 2; + bmp.scale.set(bmp.scale.x * 1.1, bmp.scale.y * 1.1); scoreTxt = bmp; scoreTxt.screenCenter(X); } else { - var txt:FlxText = new FlxText( + final txt:FlxText = new FlxText( 0, healthBarBG.y + 50, FlxG.width, "", 20 ); @@ -1258,10 +1259,10 @@ class PlayState extends MusicBeatState add(scoreTxt); var style:String = ClientPrefs.scoreStyle; - var dadColors:Array = CoolUtil.getHealthColors(dad); + final dadColors:Array = CoolUtil.getHealthColors(dad); // Configuration for each style - var styleSettings = { // profiency using typedefs + final styleSettings = { // profiency using typedefs 'JS Engine': { font: "vcr.ttf", size: 18, color: FlxColor.fromRGB(dadColors[0], dadColors[1], dadColors[2]), yOffset: null, borderSize: 2, xOverride: null