From ce7420aa63a7ea50da5e9aa4dbc46c2a2c1e28b5 Mon Sep 17 00:00:00 2001 From: Scraticus Date: Fri, 13 Oct 2023 09:50:45 +0000 Subject: [PATCH] deploy: 8e9db41cb6bc5ef1bd1fcfebcc59c3ed21ded34f --- index.xml | 2 +- releases/A0.5.0-full/index.html | 38 ++++++++++++++++++++++++++------- releases/index.xml | 2 +- search/en.data.min.json | 2 +- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/index.xml b/index.xml index d043c691..a1702dd9 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,4 @@ -Project OutFox Wikihttps://outfox.wiki/Recent content on Project OutFox WikiHugo -- gohugo.ioenOutFox Alpha 0.5.0 Full Changelog Buildhttps://outfox.wiki/releases/A0.5.0-full/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A0.5.0-full/Release Date: From 2022 “Full Alpha V Changelog” Upcoming Alpha V Play Test Build pre042 - September 2023 Last ‘Stable’ Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update.OutFox Alpha 0.4.18 Buildhttps://outfox.wiki/releases/A4.18.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.18.0/Release Date: 26th October 2022 “LTS Status Engaged - Damnit Jim, I’m a doctor!” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play.OutFox Alpha 4.17.0 Buildhttps://outfox.wiki/releases/A4.17.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.17.0/Release Date: 4th September 2022 “LTS Status Engaged” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.OutFox Alpha 4.16.0 Buildhttps://outfox.wiki/releases/A4.16.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.16.0/Release Date: 30th July 2022 “32 bits of this, 64 bits of that” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes.OutFox Alpha 4.15.1 Buildhttps://outfox.wiki/releases/A4.15.1/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.1/Release Date: 19th June 2022 “Pump or Dump?” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 “Don’t matter if you tough or gruff” ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set.OutFox Alpha 4.15.0 Buildhttps://outfox.wiki/releases/A4.15.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.0/Release Date: 14th June 2022 “Don’t matter if you tough or gruff” Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!OutFox Alpha 4.14.0 Buildhttps://outfox.wiki/releases/A4.14.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.14.0/Release Date: 25th March 2022 “You’ve upset the cat!” Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.OutFox Alpha 4.13.0 Buildhttps://outfox.wiki/releases/A4.13.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.13.0/Release Date: 9th February 2022 “Back to the Normality” Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000. +Project OutFox Wikihttps://outfox.wiki/Recent content on Project OutFox WikiHugo -- gohugo.ioenOutFox Alpha 0.5.0 Full Changelog Buildhttps://outfox.wiki/releases/A0.5.0-full/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A0.5.0-full/Release Date: From 2022 “Full Alpha V Changelog” Upcoming Alpha V Play Test Build pre042 - October 2023 Last ‘Stable’ Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update.OutFox Alpha 0.4.18 Buildhttps://outfox.wiki/releases/A4.18.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.18.0/Release Date: 26th October 2022 “LTS Status Engaged - Damnit Jim, I’m a doctor!” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play.OutFox Alpha 4.17.0 Buildhttps://outfox.wiki/releases/A4.17.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.17.0/Release Date: 4th September 2022 “LTS Status Engaged” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.OutFox Alpha 4.16.0 Buildhttps://outfox.wiki/releases/A4.16.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.16.0/Release Date: 30th July 2022 “32 bits of this, 64 bits of that” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes.OutFox Alpha 4.15.1 Buildhttps://outfox.wiki/releases/A4.15.1/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.1/Release Date: 19th June 2022 “Pump or Dump?” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 “Don’t matter if you tough or gruff” ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set.OutFox Alpha 4.15.0 Buildhttps://outfox.wiki/releases/A4.15.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.0/Release Date: 14th June 2022 “Don’t matter if you tough or gruff” Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!OutFox Alpha 4.14.0 Buildhttps://outfox.wiki/releases/A4.14.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.14.0/Release Date: 25th March 2022 “You’ve upset the cat!” Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.OutFox Alpha 4.13.0 Buildhttps://outfox.wiki/releases/A4.13.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.13.0/Release Date: 9th February 2022 “Back to the Normality” Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000. This game featured quite a unique layout, having 3 panels of input per column.OutFox Alpha 4.12.0 Buildhttps://outfox.wiki/releases/A4.12.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.12.0/Release Date: 31st December 2021 “Onegai Muscle!” “Happy 2nd Anniversary, OutFox!” Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it’s naming to ‘OutFox’. This means it will not be using the ‘stepmania5.3’ folder anymore, and it will install into an outfox folder.OutFox Alpha 4.11.0 Buildhttps://outfox.wiki/releases/A4.11.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.11.0/Release Date: 12th December 2021 “Do you know why we stopped the car?” “Happy 2nd Anniversary Release, OutFox!” (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it’s naming to ‘OutFox’. This means it will not be using the ‘stepmania5.3’ folder anymore, and it will install into an outfox folder.OutFox Alpha 4.10.0 Buildhttps://outfox.wiki/releases/A4.10.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.10.0/Release Date: 1st October 2021 “Believe it or not, the bus can’t swim…” (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work.OutFox Alpha 4.9.10 Buildhttps://outfox.wiki/releases/A4.9.10/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.10/Release Date: 27th August 2021 “Because 4 hotfixes is too far…” (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I’m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds. So let me describe what happened and why we did what we did.OutFox Alpha 4.9.9HF3 Buildhttps://outfox.wiki/releases/A4.9.9HF3/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.9HF3/Release Date: 8th August 2021 “How’s that new feature coming along?" (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5.OutFox Alpha 4.9.9HF2 Buildhttps://outfox.wiki/releases/A4.9.9HF2/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.9HF2/Release Date: 6th August 2021 “How’s that new feature coming along?" (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) This build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out! diff --git a/releases/A0.5.0-full/index.html b/releases/A0.5.0-full/index.html index e452eb9f..34afeb37 100644 --- a/releases/A0.5.0-full/index.html +++ b/releases/A0.5.0-full/index.html @@ -5,20 +5,20 @@ - + OutFox Alpha 0.5.0 Full Changelog Build | Project OutFox Wiki - + - - + + @@ -1729,9 +1729,9 @@


-

-Upcoming Alpha V Play Test Build pre042 - September 2023 - +

+Upcoming Alpha V Play Test Build pre042 - October 2023 +


@@ -1761,7 +1761,29 @@

OutFox 042 is in progress! -


+

Please be patient while we work on this new build for you all!


+
+

+OutFox 0.5.0 Pre-Release Candidate 042-a24 SSE3 (Main PRETEST PlayTest Build) - September 27th 2023 + + +

    +
  • ❕✅ Fixed one of the course generation issues
  • ❕✅ Temporarily Fixed crash on RemoveAllButOneOfEachName()
  • ❕✅ Fixed crash with bad DWI era .LRC files
  • ❕✅ Optimise Pixel Encode/Decode (Thanks RAvenGEr)
  • ❕✅ Fixed a small typo with playeroptions

+
+

+OutFox 0.5.0 Pre-Release Candidate 042-a23 SSE3 (Main PRETEST PlayTest Build) - September 24th 2023 + + +

    +
  • ❕✅ Fixed crash with piuio initialisation on linux
  • ❕✅ Fixed freezes with some load elements
  • ❕✅ Fixed and optimised some bugs in Def.Visualiser
  • ❕✅ Fixed memory leaks from our framebuffers
  • ❕✅ Added ScreenTextEntry:GetText() (see lua docs for more information)
  • ❕✅ Added self:GetSound to editor
  • ❕✅ Editor: Fixed mouse cursor selection
  • ❕✅ Editor: Fixed mouse drag states
  • ❕✅ Editor: Fixed misplaced input cycles
  • ❕✅ Editor: Fixed mouse cycles and updates
  • ❕✅ Editor: Added new Mouse X/Y functions that are correctly scaled for legacy themes/content
  • ❕✅ Editor: Fixed issue with speed mods, now the system uses ArbitrarySpeedMods() on options
  • ❕✅ Fixed ancient issue with automatically translated DWI songs overwriting song titles
  • ❕✅ Sync up the Dance theme with our upstream
  • ❕✅ Fixed logo for theme being the playtest
  • ❕✅ Fixed mute actions not working after first press
  • ❕✅ Fixed couples on pump layout
  • ❕✅ Fixed couples on smx layout
  • ❕✅ Renamed the new userspace PIUIO driver to mk6piuio

+
+

+OutFox 0.5.0 Pre-Release Candidate 042-a22 SSE3 (Main PRETEST PlayTest Build) - September 10th 2023 + + +

    +
  • ❕✅ Fixed bug with #LASTBEATHINT ending songs early due to StepMania 3.x editor shenanigans.
  • ❕✅ Added “PacDriveLightOrdering=” preference to select lighting system wiring via PacDrive (Thanks jsirex)
  • ❕✅ Added “original” legacy wiring layouts on PacDrive Linux and Windows 32/64
  • ❕✅ Added “lumenar”/“openitg” layout for PacDrive Linux and Windows 32/64
  • ❕✅ Added “minimaid” wiring layout for PacDrive Linux and Windows 32/64
  • ❕✅ Fixed casts in DebugTimer
  • ❕✅ Fixed overengineered fix in gameloop
  • ❕✅ Fixed missing Halt/Slow debug functions
  • ❕✅ Fixed TapNote init msvc compiler warnings
  • ❕✅ Fix and optimise DebugTimer
  • ❕✅ Fixed missing cast lua_num in togglesongs
  • ❕✅ Fixed type method in FailCombo
  • ❕✅ Fixed EffectColours map to vector
  • ❕✅ Fixed compile with Win32 / Linux UserSpace MK6PIUIO driver (it needs light init fixing)
  • ❕✅ Fixed legacy LibUSB calls for MK6PIUIO
  • ❕✅ Added legacy SM4 DebugTimer functions and features for gimmicks and drivers
  • ❕✅ Added new EffectColoursMap for effects in actor
  • ❕✅ Fixed axisfix being on all the time on SDL driver
  • ❕✅ Allow RandomMovie picker to get from song group
  • ❕✅ Fixed missing backplates for KBX
  • ❕✅ Fixed parser optimisation warning
  • ❕✅ Fixed missing banners
  • ❕✅ Fixed NetworkServices: Disconnect
  • ❕✅ Fixed background changes
  • ❕✅ Fixed docker environment builds as canonical has broken gcc
  • ❕✅ Fixed intel compiler derp in zlib
  • ❕✅ Added data pass to arroweffects
  • ❕✅ Added HoldLetGoGrayPercent for SimpleHolds
  • ❕✅ Added GetNumCoOpPlayers for pump
  • ❕✅ Fixed Missing steps lookup in ScreenDemonstration/Jukebox
  • ❕✅ Added allow Profile to create Song folder for customsongs
  • ❕✅ Optimised ShaderMan use and calling methods
  • ❕✅ Added shaders to notepath
  • ❕✅ Fixed ProcessBPMs in PIU parsers
  • ❕✅ Added Player.SetMineSound()
  • ❕✅ Fixed edge case PIU file loading crash
  • ❕✅ Editor: Fixed options menu from crashing on course exit
  • ❕✅ Editor: Added option to toggle Minimap and classic info
  • ❕✅ Editor: Fixed backgrounds not displaying/saving
  • ❕✅ Editor: Fixed Edit Menu - Set last edited steps when entering
  • ❕✅ Editor: Fixed legacy .edit chart loading
  • ❕✅ Editor: Send text info during preview mode
  • ❕✅ LuaConsole: Add support for paste, help text
  • ❕✅ Editor: Minimap: Draw Warp Areas
  • ❕✅ Editor: Minimap: Support for mouse drag
  • ❕✅ Editor: Minimap: Support for reverse
  • ❕✅ Editor: Minimap: Scrollable area set
  • ❕✅ Editor: Minimap: Optimise draw calls
  • ❕✅ Editor: Minimap: Set to own class for performance
  • ❕✅ Editor: Minimap: Initialise and set up new platform
  • ❕✅ Editor: Allow keysounds to play on Preview
  • ❕✅ Editor: Fixed misses not being generated on play
  • ❕✅ Editor: Fixed marathon charts not being loaded

HF Addenda:

    +
  • ❕✅ Fixed bad math with Stop calculations in piu parser
  • ❕✅ Fixed bad math with bpm changes in piu parser
  • ❕✅ Fixed underflow in piu parser

OutFox 0.5.0 Pre-Release Candidate 042-a21 SSE3 (Main PRETEST PlayTest Build) - August 23rd 2023 diff --git a/releases/index.xml b/releases/index.xml index a40f654a..4829c43d 100644 --- a/releases/index.xml +++ b/releases/index.xml @@ -1,4 +1,4 @@ -Release History on Project OutFox Wikihttps://outfox.wiki/releases/Recent content in Release History on Project OutFox WikiHugo -- gohugo.ioenOutFox Alpha 0.5.0 Full Changelog Buildhttps://outfox.wiki/releases/A0.5.0-full/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A0.5.0-full/Release Date: From 2022 “Full Alpha V Changelog” Upcoming Alpha V Play Test Build pre042 - September 2023 Last ‘Stable’ Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update.OutFox Alpha 0.4.18 Buildhttps://outfox.wiki/releases/A4.18.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.18.0/Release Date: 26th October 2022 “LTS Status Engaged - Damnit Jim, I’m a doctor!” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play.OutFox Alpha 4.17.0 Buildhttps://outfox.wiki/releases/A4.17.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.17.0/Release Date: 4th September 2022 “LTS Status Engaged” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.OutFox Alpha 4.16.0 Buildhttps://outfox.wiki/releases/A4.16.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.16.0/Release Date: 30th July 2022 “32 bits of this, 64 bits of that” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes.OutFox Alpha 4.15.1 Buildhttps://outfox.wiki/releases/A4.15.1/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.1/Release Date: 19th June 2022 “Pump or Dump?” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 “Don’t matter if you tough or gruff” ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set.OutFox Alpha 4.15.0 Buildhttps://outfox.wiki/releases/A4.15.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.0/Release Date: 14th June 2022 “Don’t matter if you tough or gruff” Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!OutFox Alpha 4.14.0 Buildhttps://outfox.wiki/releases/A4.14.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.14.0/Release Date: 25th March 2022 “You’ve upset the cat!” Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.OutFox Alpha 4.13.0 Buildhttps://outfox.wiki/releases/A4.13.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.13.0/Release Date: 9th February 2022 “Back to the Normality” Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000. +Release History on Project OutFox Wikihttps://outfox.wiki/releases/Recent content in Release History on Project OutFox WikiHugo -- gohugo.ioenOutFox Alpha 0.5.0 Full Changelog Buildhttps://outfox.wiki/releases/A0.5.0-full/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A0.5.0-full/Release Date: From 2022 “Full Alpha V Changelog” Upcoming Alpha V Play Test Build pre042 - October 2023 Last ‘Stable’ Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update.OutFox Alpha 0.4.18 Buildhttps://outfox.wiki/releases/A4.18.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.18.0/Release Date: 26th October 2022 “LTS Status Engaged - Damnit Jim, I’m a doctor!” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play.OutFox Alpha 4.17.0 Buildhttps://outfox.wiki/releases/A4.17.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.17.0/Release Date: 4th September 2022 “LTS Status Engaged” (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.OutFox Alpha 4.16.0 Buildhttps://outfox.wiki/releases/A4.16.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.16.0/Release Date: 30th July 2022 “32 bits of this, 64 bits of that” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes.OutFox Alpha 4.15.1 Buildhttps://outfox.wiki/releases/A4.15.1/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.1/Release Date: 19th June 2022 “Pump or Dump?” (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 “Don’t matter if you tough or gruff” ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set.OutFox Alpha 4.15.0 Buildhttps://outfox.wiki/releases/A4.15.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.15.0/Release Date: 14th June 2022 “Don’t matter if you tough or gruff” Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!OutFox Alpha 4.14.0 Buildhttps://outfox.wiki/releases/A4.14.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.14.0/Release Date: 25th March 2022 “You’ve upset the cat!” Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.OutFox Alpha 4.13.0 Buildhttps://outfox.wiki/releases/A4.13.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.13.0/Release Date: 9th February 2022 “Back to the Normality” Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000. This game featured quite a unique layout, having 3 panels of input per column.OutFox Alpha 4.12.0 Buildhttps://outfox.wiki/releases/A4.12.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.12.0/Release Date: 31st December 2021 “Onegai Muscle!” “Happy 2nd Anniversary, OutFox!” Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it’s naming to ‘OutFox’. This means it will not be using the ‘stepmania5.3’ folder anymore, and it will install into an outfox folder.OutFox Alpha 4.11.0 Buildhttps://outfox.wiki/releases/A4.11.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.11.0/Release Date: 12th December 2021 “Do you know why we stopped the car?” “Happy 2nd Anniversary Release, OutFox!” (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it’s naming to ‘OutFox’. This means it will not be using the ‘stepmania5.3’ folder anymore, and it will install into an outfox folder.OutFox Alpha 4.10.0 Buildhttps://outfox.wiki/releases/A4.10.0/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.10.0/Release Date: 1st October 2021 “Believe it or not, the bus can’t swim…” (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work.OutFox Alpha 4.9.10 Buildhttps://outfox.wiki/releases/A4.9.10/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.10/Release Date: 27th August 2021 “Because 4 hotfixes is too far…” (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I’m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds. So let me describe what happened and why we did what we did.OutFox Alpha 4.9.9HF3 Buildhttps://outfox.wiki/releases/A4.9.9HF3/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.9HF3/Release Date: 8th August 2021 “How’s that new feature coming along?" (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5.OutFox Alpha 4.9.9HF2 Buildhttps://outfox.wiki/releases/A4.9.9HF2/Mon, 01 Jan 0001 00:00:00 +0000https://outfox.wiki/releases/A4.9.9HF2/Release Date: 6th August 2021 “How’s that new feature coming along?" (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) This build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out! diff --git a/search/en.data.min.json b/search/en.data.min.json index 12f58348..a70311e2 100644 --- a/search/en.data.min.json +++ b/search/en.data.min.json @@ -1 +1 @@ -[{"id":0,"href":"/releases/A0.5.0-full/","title":"OutFox Alpha 0.5.0 Full Changelog Build","parent":"Release History","content":" Release Date: From 2022 \u0026ldquo;Full Alpha V Changelog\u0026rdquo; Upcoming Alpha V Play Test Build pre042 - September 2023 Last \u0026lsquo;Stable\u0026rsquo; Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update. Sorry the release took over 2 months! We were working hard all that time!\nThank you for all the reports, and the playing time guys, it is really appreciated, it\u0026rsquo;s allowed us to push on with newer parts of the project that would have been delayed a bit longer if we didn\u0026rsquo;t have you kind folks playing this work-in-progress game.\nThe ChangeLog is a bit vast for this month, I hope you take a moment to sift through it, but if you have questions, either ping us in discord or leave us a message!\nWe have fixed the OS issues on Linux and MacOS 12.6.x and 13.x, sorry this update took a while!\nWe didn\u0026rsquo;t want to patch up all the tiny bits on Steam so we felt it better to just get a big update done - but we won\u0026rsquo;t do that again, it\u0026rsquo;s a bit too hairy for us!\nThank you to all the Mac and Linux users that reported the issues for us to fix, and to you guys for continuing to support our little project, as well as the players signing up to the playtest - we will be opening this up for you all very very soon!\nThis change list is pretty long, as we have several mini updates in it! I hope you enjoy reading through these, do let us know if there are things we can do to improve this experience for you guys!\nOutFox 042 is in progress! OutFox 0.5.0 Pre-Release Candidate 042-a21 SSE3 (Main PRETEST PlayTest Build) - August 23rd 2023 ❕✅ Fixed crash with PIU 0.81 StepF2 files ❕✅ Added new internal PIUIO Driver stubs to RageInputDevice ❕✅ Added new bitwise helpers for future PIUIO/ITGIO drivers for cabs ❕✅ Added new Mk5PIUIO Driver for Windows 32 ❕✅ Fixed tapnotes for non co-op charts displaying as P4 ❕✅ Fixed \u0026lsquo;dumb\u0026rsquo; compiler notes for Python23IO so it doesn\u0026rsquo;t mess up Linux/Mac compiling ❕✅ Added new Linux_PIUIO driver, Thanks D. Pohly ❕✅ Added new Linux SextetStream Support, Thanks Peter s. May ❕✅ Added Linux_TTY keyboard driver from SM4 ❕✅ Fixed buffer underrun in SteamDeck driver on Windows ❕✅ Modernised BPMsAndStops() in PIU Parser ❕✅ Fixed MSVC compiler warnings in our parsers with a small performance boost ❕✅ Fixed version stub on MacOSX as we were showing 5.3 from our legacy days OutFox 0.5.0 Pre-Release Candidate 042-a20 SSE3 (Main PRETEST PlayTest Build) - August 20th 2023 (Win32 driver test build)\n❕✅ Fixed F4 causing crashes in editor ❕✅ Fixed Warp Marker for SM parser ❕✅ Fixed Parsing iterator initialisation ❕✅ We had to move our minimum supported MacOS to 10.13, this was an apple thing sadly :( ❕✅ Fixed Python 2/3 Driver for windows 7 32bit - PLEASE TEST OutFox 0.5.0 Pre-Release Candidate 042-a19 SSE3 (Main PRETEST PlayTest Build) - August 18th 2023 ❕✅ Fixed build env for legacy systems as we\u0026rsquo;re using newer libraries ❕✅ Fixed dual input on def.optionslist ❕✅ Fixed missing playernumber on def.optionslist ❕✅ NEW!! Working SteamDeck standalone driver! This driver allows the game to properly work with the deck\u0026rsquo;s controls, which allows for extra joystick/pads/controllers to be plugged in, without Steam overwriting the input causing some of those buttons to be lost when pressed. it requires a different driver setup. You need to use: InputDrivers=sdeck,SDL\nor if you\u0026rsquo;re using midi as well, InputDrivers=portmidi,sdeck,SDL\nor just the deck: InputDrivers=sdeck,minisdl\nThis driver works on windows and linux - it\u0026rsquo;s not complete, I need to disable the mouse/keyboard emulation, but once that is done, we\u0026rsquo;re golden.\nOutFox 0.5.0 Pre-Release Candidate 042-a18 SSE3 (Main PRETEST PlayTest Build) - August 18th 2023 Compiling sucks as half past midnight\u0026hellip; Pump Bros\u0026hellip;\n❕✅ Fixed crash with people that had .mid files included in 2004-2008 dance packs from ziv\u0026hellip; ❕✅ Fixed cringe rounding error in screen width math ❕✅ Fixed method in how CopyTexture works in returning references ❕✅ Fixed ASTs to work with the new system ❕✅ Fixed placement of test input screen so it shows more button ❕✅ Fixed Def.OptionsList bugs preventing it working properly Editor Fixes\n❕✅ Added Save and load last edited song. (Needs tweaks to get the steps as well, already saving the diff and style for this!) ❕✅ Rewrote XMod/CMod scrolling for editor preview. ❕✅ Fixed render distance to not be ridiculous. ❕✅ Allow notefield to hit notes in-between warp areas. ❕✅ Made transition from XMod to CMod instant. ❕✅ Fixed render distance for Stop block areas, as they kept drawing outside of the intended area. ❕✅ Fixed CMod editor scrolling being offset by the global offset from the player. OutFox 0.5.0 Pre-Release Candidate 042-a17b SSE3 (Main PRETEST PlayTest Build) - August 15th 2023 Windows Addenda -\n❕✅ Fixed Judgement folder being wiped on uninstall, so custom judgements will not be wiped anymore. ❕✅ New Build process. Those of you on Windows, if you have time, please try between Option A and Option B for performance/feel so we can choose a suitable development path for the future. OutFox 0.5.0 Pre-Release Candidate 042-a17 SSE3 (Main PRETEST PlayTest Build) - August 13th 2023 ❕✅ Fixed frame limiter system - if you have an unstable vsync, you can now force a frame rate using the UpdateDrawLoopSeconds pref, which will give you a set FPS update! NOTE: If you have an ASUS/Alienware/ACER Gaming/DELL Gaming/MSI Gaming/Medion Gaming/Sapphire Gaming/Sammsung Gaming/HP Gaming system and are running Windows 11 - it will try to throttle your machine to reduce your \u0026lsquo;carbon footprint\u0026rsquo; check your control centre, and your GPU/Controlpanel settings. My own Laptop was throttled to 30FPS on \u0026lsquo;office mode\u0026rsquo; but when switched to gaming mode, this was unlimited FPS! This update has been pushed out over the past 6 weeks, but it is affecting Outfox and many other games as well.\n❕✅ Fixed DIV0 exploits in the loop ❕✅ Added new Reset() command to Timer ❕✅ Fixed stuck keys on MacOS ❕✅ Fixed stuck key repeat on input ❕✅ Fixed Tab not speeding up the game on some systems ❕✅ \u0026ldquo;Fixed\u0026rdquo; Lyric display for faster and slower rates, it\u0026rsquo;s a workaround, not a permanent fix, we plan to rewrite the whole system in time. ❕✅ Fixed lyrics not showing when the rate was below 0.5 on pi and linux systems OutFox 0.5.0 Pre-Release Candidate 042-a16 SSE3 (Main PRETEST PlayTest Build) - August 12th 2023 ❕✅ Fixed SetActiveFrame() animation ❕✅ Fixed missing arch specifc MacOS cmake options ❕✅ Fixed missing templating for SetActiveFrame() ❕✅ Removed JACK support on MacOS as Apple have removed it from the OS ❕✅ Fixed SelectGameMode not allowing selection on MacOS ❕✅ Fixed GameMan Crash on MacOS ❕✅ Introducing MacOS 14 Sonoma Support! ❕✅ Fixed GAMEMAN init order ❕✅ Fixed Memory overflow in gameloop ❕✅ Fixed Small optimisation in gameloop ❕✅ Fixed crash on GH/RB parsing ❕✅ Fixed crash on TJA parsing ❕✅ Fixed crash on DTX parsing OutFox 0.5.0 Pre-Release Candidate 042-a15 SSE3 (Main PRETEST PlayTest Build) - August 11th 2023 ❕✅ Updated gddm icon ❕✅ Fixed GetDuration on midi parser ❕✅ Added gh drum support in midi parser ❕✅ Added gh drum (normal5) style to playable options in rb ❕✅ Added new normal5 icon ❕✅ Fixed strum stutter on windows (please test) ❕✅ Fixed white dot in rb noteskin ❕✅ Optmised gh notedata, and set things to instrument ❕✅ Fixed crash on empty charts in midi parser ❕✅ Added TNS_W4 to pump miss for correct combo checking ❕✅ Added new cross code for gh to rb drum support in parser ❕✅ Added new combo support for pump: bad now breaks miss combo, good no longer increments combo, bad zeros hit combo - thanks to andrey for bitching at us to fix it ❕✅ Fixed errors in gameplay.lua to ensure the combocontinue and combomaintain function correctly in pump OutFox 0.5.0 Pre-Release Candidate 042-a14 SSE3 (Main PRETEST PlayTest Build) - August 8th 2023 ❕✅ NEW!! Introducing support for OutFox\u0026rsquo;s 19th Game Mode - Boxing! This mode is designed to be set up at a gym and played with joy-cons or a similar setup. It\u0026rsquo;s great fun and has a variety of punch styles. We are working on gyro/VRK support so you can play this with those controllers.\n❕✅ NEW!! Introducing support for OutFox\u0026rsquo;s 20th Game Mode - rb! This mode compliments our gh mode and is based on the familiar chart format .mid The game supports. the mode is made up of rb-easy, which is the normal 4 drum lane without the kick, rb-normal, which is the usual 4 drum lane and supporting the kick, and rb-pro, which is 4 drums, 1 kick and 3 cymbals. You can utilise songs from gh which contain drum charts easily enough!\n.chart is going to be worked on later on, this is just the skeleton remember, so a theme and mode specification and changes will happen to improve the game module, as is done with all our supported games.\nThis mode also makes OutFox the only sim in the world to support 4 Different game drum modules: gddm, taiko, bongo, rb. We hope you\u0026rsquo;ll be as hype as us for this milestone, and to continue improving our coverage and accuracy in the modules that we support.\nrb supports PRO DRUMS out of the box, again the theme is lacking as we need to stop developing crap and focus on it in Q3/4 of this year. This mode also supports our MIDI drivers for eDrum kits! you can now use your eDrums on more than one drum mode!\n❕✅ NEW!! drum, pro-drum lane support for the mid parser! This required a major rewrite of the parsing system to match one similar to gddm/gdgf so the game knew which part of the chart was drum and such. Please test and let us know if there are any MIDI songs that have issues. Remember .chart hasn\u0026rsquo;t been adjusted yet!\n❕✅ Fixed quirk with LXIO hanging on Windows 11\n❕✅ Fixed some prefs being broken in the default metrics.ini file\n❕✅ Fixed incorrect fret notes in midi parser\n❕✅ Fixed multi-track support in midi parser\n❕✅ Fixed songs with only 1 track being used incorrectly in midi parser\n❕✅ Fixed lane allocation within midi parser\n❕✅ Fixed missing note types in the midi parser\n❕✅ Fixed detection of forced notes in the midi parser\n❕✅ Fixed detection of pro-drums in midi parser\n❕✅ Fixed missing expansion of notes needed for drum charts\n❕✅ Fixed difficulty detection in midi parser\n❕✅ Fixed missing event text support in midi parser\n❕✅ Added new enums for difficulty and chart types in midi parser\n❕✅ Added new opus support for songs in the midi parser\n❕✅ Fixed missing backgrounds in the midi parser\n❕✅ Added new guitar support: pro guitar, 6 fret guitar skeletons in midi parser\n❕✅ Added new drum support: pro drums, easy drums, normal drums in midi parser\n❕✅ Added new keys support: pro keys and normal keys skeletons in midi parser\n09-08-2023 addenda ❕✅ Fixed missing graphics on new mode ❕✅ Fixed quirk with bad bpm calls on midi parser ❕✅ Fixed quirk with time signatures on midi parser ❕✅ New!! Added digital control driver for SteamDeck using HIDRAW. Analogue is to be finished. Ask squirrel if you have windows on your deck on how to test, i will build linux in the mornin as i\u0026rsquo;m dead. OutFox 0.5.0 Pre-Release Candidate 042-a13 SSE3 (Main PRETEST PlayTest Build) - August 5th 2023 ❕✅ Forced best guess pref on Linux to fix Kernel 5.13+ issues ❕✅ Added new #Metadata tag to the SSC specification. ❕✅ Added TNS_W5 to reset combo for pump ❕✅ Fixed crash with non existing driver being presented ❕✅ Fixed quirk with game mode resetting ❕✅ Fixed bug in lua not being reset correctly when changing game mode ❕✅ Fixed crash on some systems that do not present a loading window ❕✅ Fixed crash on rendertargets ❕✅ Fixed crash on screens which do not require notedata ❕✅ Fixed crash with lateplayerjoin() on some modes by rewriting the function completely OutFox 0.5.0 Pre-Release Candidate 042-a12 SSE3 (Main PRETEST PlayTest Build) - July 30th 2023 Two builds in one day edition!!\n❕✅ Added FailPlayerInstantly when FailComboAt is reached (optional for pump) ❕✅ Fixed missing pushback for optionslists (for pump) ❕✅ Fixed Missing OptionsLists Clear (for pump) ❕✅ Fixed bug with erasing mods lists on the new modstring system ❕✅ Fixed crash with ShaderManger on some Linux/Mac versions ❕✅ Added \u0026lsquo;AddCheckpointToHead\u0026rsquo; for pump holds, means hold heads no longer count as tap notes. OutFox 0.5.0 Pre-Release Candidate 042-a11 SSE3 (Main PRETEST PlayTest Build) - July 30th 2023 ❕✅ Added a PointSize() function for Actors to compliment Points Polygon Mode ❕✅ Added NoteCullMode, that lets you set culling for notes ❕✅ Added F\u0026amp;B cull mode option to Actors, for 3D Models ❕✅ Added Note-Specific WireFrame ❕✅ Added Column-Specific NotePathWidth ❕✅ Added Note-Specific ScrollSpeedMult ❕✅ Added Note-Specific ExtendHolds ❕✅ Added Def.OptionsList, For Pump themes, and other modes [Please Test] ❕✅ Fixed bug with MIDI parser not loading some older CH files ❕✅ Added Actor Matrix Rotation commands and lua hooks ❕✅ Fixed bug with 2003 code in DirectX matrix math rounding\u0026hellip; we don\u0026rsquo;t use DirectX anymore ❕✅ Fixed bug with slow loading on legacy/SD card systems ❕✅ Fixed bug with Screen hanging on Linux/Mac ❕✅ Fixed bug with the Garbage Collector hanging theme refreshes on reboots of the game ❕✅ Fixed bug with CLANG compiling on Mac ❕✅ PUMP: Added combo effects for good and boo judges ❕✅ PUMP: Added new FailType_MissCombo which will fail players for 51 misses in a row. OutFox 0.5.0 Pre-Release Candidate 042-a10 SSE3 (Main PRETEST PlayTest Build) - July 28th 2023 ❕✅ Fixed bug with 1bit and 2 bit bmp corruption on vintage (1998-2002) BMS files ❕✅ Updated stb to reduce memory leaks on texture loading ❕✅ Fixed ManageProfiles not running OnCommand functions ❕✅ Added a new screen: ScreenOptionsToggleSongs to allow operators to select what songs are available from the music wheel. This menu is available in \u0026lsquo;Operator Options\u0026rsquo; in fallback. ❕✅ Fixed bug with ScreenEditMenu not being alphabetical ❕✅ Fixed bug with FFMPEG videos not working on Intel Macs ❕✅ Fixed bug with 2001 resolution math breaking theme layouts from SM4_beta and \u0026lt; SM 5.0.7, and some content from other forks. This resolves the framebuffer bugs added in 0.5.0-r021 ❕✅ Fixed bug with width not being a flat number ❕✅ Added points support to Polygon Mode ❕✅ Fixed Profile Editor screen from removing the current profileID when restarting ❕✅ Fixed Mac compile in NoteTypes ❕✅ Added judgeable row condition on notefield autoplay to prevent hits on warp areas ❕✅ Added basic obj condition when loading a .obj file in a def.model() ❕✅ Added NoteGroupTypes to GetNoteData() and SaveToLua(): Mentioned in TeamRizu/OutFox#666, this adds the NoteGroupType to the Lua table result that indicates the kind of group. This is necessary for the hold types as we have included MineHolds and tail-end holds. For tails, a special rule was added to only include it on the list if said tail was part of a Lift-Hold. If not, it will be reported as a standard note in the table.\nOutFox 0.5.0 Pre-Release Candidate 042-a9 SSE3 (Main PRETEST PlayTest Build) - July 8th 2023 ❕✅ AlphaV Dance Theme: Fixed player centre alignment ❕✅ AlphaV Dance Theme: Fixed longsong label ❕✅ AlphaV Dance Theme: Fixed cancel in EditProfile ❕✅ AlphaV Dance Theme: Notefield fixes ❕✅ AlphaV Dance Theme: Fixed bug with outer filter failing on Select Music ❕✅ Fixed compiler warnings ❕✅ Fixed TextEntry not being available via lua ❕✅ Removed legacy calls choking the glad renderer ❕✅ Fixed compile on mac/linux ❕✅ Fixed bug with rendertarget stack corruption ❕✅ Added new bg shader support - this is called via compilebg and compileimmediatebg and doesn\u0026rsquo;t rely on songbeat or fmusicseconds ❕✅ Fixed crash with texture deletion calls on linux ❕✅ Fixed crash with texture free calls on linux ❕✅ Fixed offset player math in soundwaves ❕✅ Updated SDL to 2.28.2 ❕✅ Fixed onemodstring narrowed math calls ❕✅ Fixed shadermanager quirks and edge case crash OutFox 0.5.0 Pre-Release Candidate 042-a8 SSE 3 TEST BUILD (Main PRETEST PlayTest Build) - July 7th 2023 ❕✅ Fixed bug with text entry sound calls crashing ❕✅ Fixed a few bugs with math calls ❕✅ Added flat map ❕✅ Fixed crash with imagecache ❕✅ Fixed crash with oob animation remaining time ❕✅ Fixed crash with tapnotes ❕✅ Fixed static cast with luna numbers ❕✅ Fixed song loading crashes ❕✅ Fixed mutex lock on song loading causing a forever hang ❕✅ Fixed crash on render target stack with ARM boards ❕✅ Fixed crash with changing screen resolution ❕✅ Fixed missing controllers on MacOS ❕✅ Fixed missing controllers on *nix and ARM ❕✅ Optimised the game to support SSE3 intrinsics - test this for now so we can see how it behaves OutFox 0.5.0 Pre-Release Candidate 042-a7 (Main PRETEST PlayTest Build) - July 5th 2023 ❕✅ AlphaV Dance Theme: Fixed instance when the user has not enough profiles to fill up the entire list in SelectProfile. ❕✅ AlphaV Dance Theme: Fixed instance when there are no profiles at all on SelectProfile. ❕✅ AlphaV Dance Theme: Fix scrolling for SelectProfile ❕✅ AlphaV Dance Theme: Fixed the scrolling for items on the right side. ❕✅ AlphaV Dance Theme: Fixed items not being selectable when connecting to OutFox Online. ❕✅ AlphaV Dance Theme: Moved Link Account to Profile to a proper spot. ❕✅ AlphaV Dance Theme: Changed font for search to be monospaced. To preserve the \u0026ldquo;SEARCH\u0026rdquo; label, it is kept as a static bitmapText. ❕✅ AlphaV Dance Theme: Changed design for next/prev buttons for OptionList. ❕✅ AlphaV Dance Theme: Set an \u0026ldquo;Off\u0026rdquo; label for Announcer picker. Will be useful for later entries. ❕✅ AlphaV Dance Theme: Made dropdown transitions and movement faster. ❕✅ AlphaV Dance Theme: Avoid making Game Select dropdown set the game on the current one. ❕✅ AlphaV Dance Theme: Changed the Game Select dropdown icons with the StyleVector ones. ❕✅ AlphaV Dance Theme: Fixed mouse input when selecting profile in ScreenSelectProfile. ❕✅ AlphaV Dance Theme: Fixed movement for supplemental input modes in InitialSetup. ❕✅ AlphaV Dance Theme: Added \u0026ldquo;groove\u0026rdquo; to game mode listings. ❕✅ AlphaV Dance Theme: GridSystem: CheckBoundry now returns the cursor for quicker lookup. ❕✅ Fixed bug with missing paths on linux memory cards due to new kernels ❕✅ Fixed bug with attacklist eating resources ❕✅ Fixed bug with missing attack approach rate calculations ❕✅ Fixed bug with selectprofile screen ❕✅ Fixed bug with missing fScale boolean check causing a few quirks ❕✅ Added new client linking skeleton (Features to come soon!) ❕✅ Fixed bug with ScoreSave lua hook ❕✅ Fixed bug with lifeweights for itg timing ❕✅ Fixed edge crash with game changing KNOWN BUGS: we are working on them!\n❌ - Changing resolution will crash the game on some systems ❌ - Steam Deck Input issues with LTek pads, will be fixed soon, I just need to write the new driver ❌ - The crashes on Windows 7 we are investigating still ❌ - Let us know if you have other issues so they can be fixed! Note: Mods will be called Gimmicks in Project OutFox moving forward, as we have more modes that use this term, and \u0026lsquo;mods\u0026rsquo; are used for speed, rather than snazzy arrow/object effects. Thanks for understanding! To play Gimmick Charts on this build of OutFox, you need to select the GROOVE mode. We have removed the main Gimmick lists and crazy sides from the Dance Mode for performance concerns for folks that play Acc/Stamina.\nThanks for your support as always, and we hope you like these changes, I know it\u0026rsquo;s a bit mad with all the new gimmicks, but these have been requested for some time.\nOutFox 0.5.0 Pre-Release Candidate 042-a6 (Main PRETEST PlayTest Build) - June 28th 2023 Poptions and AllTheMods (Part 2 of 2) build. MTK\u0026rsquo;s Power Level is over 9000! - Squirrel\n❕✅ Fixed bad boolean math with fScale narrowing \u0026lsquo;close to zero\u0026rsquo; ❕✅ Fixed bug with EndOfSong from failing on FailCombo ❕✅ AlphaV Dance Theme: Fixed init screen ❕✅ AlphaV Dance Theme: Fixed wheel favourites ❕✅ AlphaV Dance Theme: Fixed bug with minixoffset on screengameplay ❕✅ AlphaV Dance Theme: Fixed color change issues ❕✅ AlphaV Dance Theme: Added new screen avatar fixes ❕✅ AlphaV Dance Theme: Added new options and profile fixes ❕✅ AlphaV Dance Theme: Added new initial setup screens ❕✅ AlphaV Dance Theme: Fixed wheel items ❕✅ AlphaV Dance Theme: Added new click helper areas for mouse/touch panel users ❕✅ New! Added metric to themes to allow chart audio to be hidden for chart specific files - Closes TeamRizu/OutFox#645 ❕✅ Added link to original SM credits screen in fallback for folks that requested it ❕✅ Fixed bad logarithmic transcription in tiny, we needed base10 ❕✅ Fixed missing none image to be-mu/po-mu backplate ❕✅ Fixed cached images showing on jackets instead of HD versions ❕✅ Added new lua hooks for favourites ❕✅ Added new Profile:GetLastdifficulty ❕✅ Fixed invalid colours in ScreenOptionsManageProfiles ❕✅ Added Note Specific asymptote ❕✅ Added Note Specific attenuateX, attenuateY, attenuateZ ❕✅ Added Note Specific beat, beatY, beatZ ❕✅ Added Note Specific blink ❕✅ Added Note Specific blinkred, blinkgreen, blinkblue, blinkalpha ❕✅ Added Note Specific boost ❕✅ Added Note Specific boomerang ❕✅ Added Note Specific bounce, bounceZ ❕✅ Added Note Specific brake ❕✅ Added Note Specific bumpy, bumpyX, bumpyY ❕✅ Added Note Specific centered ❕✅ Added Note Specific confusion ❕✅ Added Note Specific confusionoffset ❕✅ Added Note Specific confusionX ❕✅ Added Note Specific confusionxoffset ❕✅ Added Note Specific confusionY ❕✅ Added Note Specific confusionyoffset ❕✅ Added Note Specific cubicX, cubicY, cubicZ ❕✅ Added Note Specific digital, digitalZ ❕✅ Added Note Specific dizzy ❕✅ Added Note Specific drunk, drunkY, drunkZ ❕✅ Added Note Specific expand ❕✅ Added Note Specific flip ❕✅ Added Note Specific hidden ❕✅ Added Note Specific hiddenred, hiddengreen, hiddenblue, hiddenalpha ❕✅ Added Note Specific hiddenoffset ❕✅ Added Note Specific hiddenoffsetred, hiddenoffsetgreen, hiddenoffsetblue, hiddenoffsetalpha ❕✅ Added Note Specific invert ❕✅ Added Note Specific moveX, moveY, moveZ ❕✅ Added Note Specific noteskewX, noteskewY, ❕✅ Added Note Specific orient, orientX, orientY ❕✅ Added Note Specific parabolaX, parabolaY, parabolaZ ❕✅ Added Note Specific pulseinner, pulseouter ❕✅ Added Note Specific randomspeed ❕✅ Added Note Specific reverse ❕✅ Added Note Specific roll ❕✅ Added Note Specific sawtooth, sawtoothZ ❕✅ Added Note Specific shrinkmultX ❕✅ Added Note Specific shrinklinearX ❕✅ Added Note Specific shrinkmultY ❕✅ Added Note Specific shrinklinearY ❕✅ Added Note Specific shrinkmultZ ❕✅ Added Note Specific shrinklinearZ ❕✅ Added Note Specific spiralX ❕✅ Added Note Specific spiralXoffset ❕✅ Added Note Specific spiralXperiod ❕✅ Added Note Specific spiralY ❕✅ Added Note Specific spiralYoffset ❕✅ Added Note Specific spiralYperiod ❕✅ Added Note Specific spiralZ ❕✅ Added Note Specific spiralZoffset ❕✅ Added Note Specific spiralZperiod ❕✅ Added Note Specific stealth ❕✅ Added Note Specific stealthred, stealthgreen, stealthblue, stealthalpha ❕✅ Added Note Specific sudden ❕✅ Added Note Specific suddenred, suddengreen, suddenblue, suddenalpha ❕✅ Added Note Specific suddenoffset ❕✅ Added Note Specific suddenoffsetred, suddenoffsetgreen, suddenoffsetblue,suddenoffsetalpha ❕✅ Added Note Specific square, squareZ ❕✅ Added Note Specific tanbumpy, tanbumpyX, tanbumpyY ❕✅ Added Note Specific tandigital, tandigitalZ ❕✅ Added Note Specific tandrunk, tandrunkY, tandrunkZ ❕✅ Added Note Specific tanexpand ❕✅ Added Note Specific tanpulseinner, tanpulseouter ❕✅ Added Note Specific tantornado, tantornadoZ ❕✅ Added Note Specific tornado, tornadoZ ❕✅ Added Note Specific tiny, tinyX, tinyY, tinyZ ❕✅ Added Note Specific twirl ❕✅ Added Note Specific vanish ❕✅ Added Note Specific wave ❕✅ Added Note Specific xmode ❕✅ Added Note Specific zigzag, zigzagZ OutFox 5.0.0 Pre-Release Candidate 042-a5 (Main PRETEST PlayTest Build) - June 24th 2023 Poptions and AllTheMods (part 1) build. God help me writing this\u0026hellip; - Squirrel\n❕✅ Fixed crash with some modfiles due to wrong function ❕✅ Remove 2003 era float overruns from game ❕✅ Fixed bug with legacy GL1.1 calls being used instead of 2.0-\u0026gt; ones when available ❕✅ Added ModsMap to the game ❕✅ Added new lua binding to enable backwards compatibility to the new mods system ❕✅ Added new fast abs function (xabs(x)) to the game ❕✅ Added new ActiveModsCol to the game ❕✅ Optimised comparisons in ArrowEffects ❕✅ Fixed bug with non-combo highscores overflowing and being saved incorrectly ❕✅ Fixed bug with alpha being applied on the be-mu/po-mu miss layers ❕✅ Fixed float compares on critical approach functions ❕✅ Fixed bug with tan mods in ragedisplay ❕✅ Fixed crash with game mode switching ❕✅ Fixed crash with theme switching on some modes ❕✅ Fixed some file closure calls being in the wrong place due to squirrel oopsie ❕✅ Optimised Column Specific mod reading so they don\u0026rsquo;t run like ass ❕✅ Fixed bug with duplicate variables being pushed into our stack ❕✅ Fixed fake judgements being added when there is no player stage ❕✅ Added a new \u0026lsquo;GetNoteAmount\u0026rsquo; system to the game ❕✅ Added new tapnote enums to the game ❕✅ Added new NoteBeatAdj to the game ❕✅ Added new def.notefield update loops to the game ❕✅ Added new shader support to notes and receptors ❕✅ Added new playeroptionssimple to ensure no performance loss in modes that do not need modding support ❕✅ Added new imagecache compression system to the game ❕✅ Added new Networkservicemanager system to the game ❕✅ Added new score saving and new user registration to the game ❕✅ Added new \u0026lsquo;rate\u0026rsquo; system to limit updates and frame changes for models ❕✅ Added new API token system to the game ❕✅ Fixed Matrix math for shaders ❕✅ Added SSL support for the networking system ❕✅ Fixed compiling and support for windows and mac for SSL, ensuring they sign correctly ❕✅ Added ThemeSoundModes to the game ❕✅ Added server send and receive for scores, timing, judgements and user attributes ❕✅ Fixed missing player profile saving items ❕✅ Added a new way to load a NSkin board, so it doesn\u0026rsquo;t leak memory ❕✅ Added new notefield previews to the game to support song wheels ❕✅ Added new Poptions system ❕✅ Added new methods to simplify the player options used on performance critical modes ❕✅ Fixed crashes with imagecache on SimplyLove and A3/Starlight ❕✅ Fixed order of calls for luaglobals ❕✅ Added new music wheel sorting to leak less memory ❕✅ Fixed crash on older themes when a player late joins ❕✅ Added new method to call some mods that were not properly set ❕✅ Added new faster math operations for mods ❕✅ Added new column checks so the array does not overflow ❕✅ Raised stats.xml size ❕✅ Added new column mod system to the game ❕✅ Added new approach mod snap system ❕✅ Fixed bug with songgroup vector ❕✅ Added new GetLogsPath for win32, though it should have been there a long time before ❕✅ Fixed bugs with legacy hard coded paths ❕✅ Fixed bugs with speed mods in new poptions code ❕✅ Added new KBX system support ❕✅ Fixed tween endings sometimes being skipped ❕✅ Fixed bug with mod replay/call order ❕✅ Added new clock system for some calls ❕✅ Fixed a microstutter bug call from 2005 ❕✅ Fixed spline issues ❕✅ Removed legacy asserts on button calls ❕✅ Added Actor VanishPoint to the game ❕✅ Added new favourites system to the game ❕✅ Fixed crash on miniholds ❕✅ Added new mod aliases ❕✅ Added new lua functions to properly affect ActiveMods ❕✅ Added new ActiveMods list ❕✅ Added new Hitsound system to reduce lag ❕✅ Added new FT_Sound fixes to work with the timing system ❕✅ Added new CAMOD for taitai mode ❕✅ Changed BGA to be chart based for SSC/SM chart systems, to allow for per chart backgrounds ❕✅ Added new osu based key/hitsound support ❕✅ Added support for steps in getbga() ❕✅ Added new sound mutexes ❕✅ Added new SSC hold metric features ❕✅ Added new ArrowEffectsOriginal for backwards support ❕✅ Added fixes to SimpleMods ❕✅ Added new randomseed ❕✅ Added new Groove mode, designed for modding, to prevent the normal dance mode from running mod systems it doesn\u0026rsquo;t always need. ❕✅ Fixed bug with tinyycol approach ❕✅ Added Drawholdsandtapsinsameloop pref ❕✅ Added XScrolls segment type ❕✅ Added playeroptions.getstring ❕✅ Added change with tiny, old behaviour is TinyPull ❕✅ Added HoldCullMode ❕✅ Added ApproachType Modifier ❕✅ Added Alpha channel variations for the visibility of mods ❕✅ Restored RandomVanish ❕✅ Added two new mods, Randomise and Vanish to split randomvanish ❕✅ Added OrientX and OrientY ❕✅ Added column specific Zigzag and ZigzagZ ❕✅ Added column specific Sawtooth and SawtoothZ ❕✅ Added new caching method to fix deadlocks ❕✅ Added column specific Dizzy ❕✅ Added column specific Twirl ❕✅ Added column specific Roll ❕✅ Added column specific (Tan)Drunk ❕✅ Added column specific (Tan)DrunkY ❕✅ Added column specific (Tan)DrunkZ ❕✅ Added column specific Beat, BeatY, BeatZ ❕✅ Added GetFirst/GetLast DisplayedBeat take a column ❕✅ Added column specific Boost ❕✅ Added column specific Brake ❕✅ Added column specific ScrollSpeedMult ❕✅ Added column specific Timespacing ❕✅ Added column specific StealthMines ❕✅ Added column specific StealthHolds ❕✅ Added column specific ExtendHolds ❕✅ Added column specific Orient, OrientX, OrientY ❕✅ Added column specific (Tan)Tornado and (Tan)TornadoZ ❕✅ Added column specific Square and SquareZ ❕✅ Added column specific SpiralX, SpiralY and SpiralZ ❕✅ Added column specific ParabolaX, ParabolaY and ParabolaZ ❕✅ Added column specific CubicX, CubicY and CubicZ ❕✅ Added column specific CenteredPath ❕✅ Added column specific (Tan)Tipsy ❕✅ Added SetCurrentBeat and SetcurrentMusicSeconds ❕✅ Added JudgeScale from oITG ❕✅ Added Player.SendFakeJudgment ❕✅ Fixed bug with redundant islua command ❕✅ Fixed bug with sound copying OutFox 5.0.0 Pre-Release Candidate 042-a4 (Main PRETEST PlayTest Build) - June 18th 2023 ❕✅ Fixed string.format breaking with no integer form ❕✅ Fixed CVE in cpr lib so we can compile for older OSs ❕✅ Fixed legacy linux build support ❕✅ Fixed compiler guards for cpr lib so it works with our system ❕✅ Added new be-mu/po-mu miss threshold for how long the miss layer remains visible ❕✅ Removed 2 pointless ASSERT calls as they no longer are relevant ❕✅ Fixed background draw in po-mu layers ❕✅ Fixed mac compile ❕✅ Adjusted singleton system to assist with memory management ❕✅ Fixed but with conditional states on pandathread ❕✅ Fixed backup/fallback for the new \u0026lsquo;groove\u0026rsquo; mode option ❕✅ Fixed thread calling order, as we run slightly differently now to SM ❕✅ Fixed quirk in sound driver that can cause a lock ❕✅ Fixed win compile and loading ❕✅ Fixed endless loop with unlockman ❕✅ Fixed shader calls so they now use memory cleaner ❕✅ Allowed shaders to have wide multitexture support ❕✅ Allowed our shader system to use 16 TUs for modding ❕✅ Added new gettuslots() call for modders to know how many units they have available ❕✅ Make drivers TU Alloc shader aware ❕✅ Fixed TU used in our ffmpeg driver to be RPi and legacy ATI/AMD/Nvidia friendly OutFox 5.0.0 Pre-Release Candidate 042-a3 (Main PRETEST PlayTest Build) - June 9th 2023 ❕✅ Fixed leak in be-mu backgrounds ❕✅ Added Fe-Dora build environment to support 37-\u0026gt; ❕✅ Fixed background data loading in be-mu and po-mu ❕✅ Fixed quirk with invalid background changes on older BMS/PMS files ❕✅ Added MISS/POOR support for be-mu / po-mu ❕✅ Fixed Mac sound issues ❕✅ Fixed bug in fileopen ❕✅ Fixed memory leaks in file loading ❕✅ Fixed memory leaks in song parsing ❕✅ Fixed fonts double loading ❕✅ Fixed LoadingWindow memory leaks ❕✅ Tidied up all our macros ❕✅ Fixed performance issues with the notefields OutFox 5.0.0 Pre-Release Candidate 042-a1 + a2 (Main PRETEST PlayTest Build) - May 13th 2023 ❕✅ Fixed leaks with file handles ❕✅ Fixed leaks with bad pointers ❕✅ Fixed loading window double cast, fixes a lag issue when loading on pi ❕✅ Fixed macro calls and optimised methods for tweens ❕✅ Fixed bugs with c-style code not being optimised ❕✅ Sped up tween math for mods ❕✅ Added ASin Math ❕✅ Fixed crash in lua with math.random ❕✅ Poptions optimisations for A-C - cleaning up the games code ❕✅ Fixed crash on newer linux clients requesting higher than supported colour profiles ❕✅ Optimised parser code pathways ❕✅ Fixed portaudio compile on linux ❕✅ Fixed getposition on portaudio ❕✅ Fixed wasapi link on rtaudio ❕✅ Sped up math calculations for sine based tweens ❕✅ Fixed missing posmap on audio optimisations ❕✅ Fixed wheelbase item data sorting for future options for non-dance modes ❕✅ Removed autoptr from the game ❕✅ Let math.random accept numbers ❕✅ Fixed cmd lua support for 5.4.6 ❕✅ Updated lua to 5.4.6 ❕✅ Fixed gamemode pointer system ❕✅ Added more debug options on windows ❕✅ Fixed taiko noteskin count rolls ❕✅ Fixed buffer issue with msdfile ❕✅ Cleaned up notedisplay destruction ❕✅ Fixed pointer issues with ragetexture OutFox 5.0.0 Pre-Release Candidate 041 -a9 - April 29th 2023 ❕✅ Synced updates with the alphav-theme ❕✅ NEW! return to the portal link if portal was selected ❕✅ Auto Resize ScreenDebugOverlay on low definition (480p) themes ❕✅ NEW! restore #LASTBEATHINT to .sm files ❕✅ Fixed a slew of parsing bugs in the .sm parser ❕✅ Fixed leaked memory in the .sm parser ❕✅ Fixed bad update call in DrawPrimitives breaking some mod calls ❕✅ Fixed bug with access calls on GameSoundManager ❕✅ Fixed potential crash/freeze with ImageCache OutFox 5.0.0 Pre-Release Candidate 041 -a8 - April 25th 2023 ❕✅ Fixed bug with favourites not being found sometimes on some systems ❕✅ Fixed crash with favourites folder ❕✅ Fixed FileWrite Call ❕✅ Replaced library used for ImageCache to improve stability and Memory use ❕✅ Fixed bug with MIDI buttons not being seen after being saved to keymaps.ini ❕✅ Fixed bug with MIDI buttons not being saved on the Map Controller screen for MIDI controllers ❕✅ Fixed missing entries on InputDevice ❕✅ Added Wii \u0026amp; Wii-U controller support to our HIDAPI Driver ❕✅ Fixed stuck buttons on MIDI drumkits due to Channel 09 varying non-zero values. ❕✅ Fixed bug with buffer underrun on some sound cards ❕✅ NEW! 2 Player ParaPara Mode support with official PS2 controllers! ❕✅ Fixed missing official PS2 ParaParaParadise controllers on Mac and Linux ❕✅ Fixed bug in ParaPara input driver by rewriting it ❕✅ Fixed bug with duplicate controllers on Mac/Linux/Steam OutFox 5.0.0 Pre-Release Candidate 041 -a7 - April 22nd 2023 ❕✅ Fixed bug with multiple loads of FGChanges ❕✅ Fixed bug with some lua definitions not quite being nil ❕✅ Fixed bug with BGChanges crashing on invalid Enums ❕✅ Fixed bug with CheckEnum corrupting the lua stack ❕✅ Brought over 1-4 player PS2 official parapara controller input driver from Dragons ❕✅ Fixed bug with some vectors not being correctly handled in the background calls ❕✅ Fixed crash with bad math calls in music wheel ❕✅ Fixed chartkey loading 3 times on every action on the music wheel ❕✅ Fixed PlayCopy() crash ❕✅ Fixed incorrect usage of pushnil in NETMAN ❕✅ Fixed crash with enum call in ActorUtil ❕✅ Fixed pointer crash on file closing on some modfile calls ❕✅ Made the OTO (osu) parser much more stable, and added samplesounds/hitsound support ❕✅ Fixed a few wry mutex issues now we are planning for lower latency ❕✅ Fixed a reported tickhold bug ❕✅ Fixed the reported GetBGChanges() \u0026lsquo;bug\u0026rsquo; by rewriting the methods, as they are now chart specific ❕✅ Fixed bug with mod columns calling 88 instances when we don\u0026rsquo;t plan to have piano mode moddable ❕✅ Fixed crash with updateholdnotes ❕✅ Fixed crash in GameSoundManager ❕✅ Re-implement SSC hold metric features - Penalise tap score none/Judge hold notes on same row together/checkpoints flash on hold/immediate hold let go/combo break on immediate hold let go/require step on hold heads/checkpoint taps separate judgement ❕✅ Fix issue with GetBGA, by rewriting it to support steps ❕✅ Fixed bug with no keysoundfile clearance ❕✅ Added new support for OTO (osu) keysounds ❕✅ Fixed bug with missing FGChanges calls ❕✅ Fixed weird draw issue with some themes and GLAD renderer ❕✅ Fixed crash in steps creation ❕✅ Changed BGA to be chart based for SSC/SM files ❕✅ Fixed crash with favourites affecting speed mods ❕✅ Updated Docker builds ❕✅ Fixed crashes with Python2/Python3 IO boards ❕✅ Fixed bug with ASIO support on win32 ❕✅ Added pulseaudio to PortAudio in prep for new sound back end ❕✅ Fixed clocks for rtAudio on mac/linux ❕✅ Added more info for statsoverlay ❕✅ Fixed crash with some lower() command calls ❕✅ Fixed CODESET offset bug reported by Rythmlunatic OutFox 5.0.0 Pre-Release Candidate 041 -a6 - April 08th 2023 ❕✅ Fixed crash on refcount ❕✅ Fixed bug with pro-explosions not falling back when not provided ❕✅ Fixed bug with calories being default goal on the alpha-v theme ❕✅ Fixed def.notefield preview autoplay not reloading on looped audio ❕✅ Restore Add and Scale check to smart timing windows ❕✅ Fixed ddrio for 32bit machines ❕✅ Fixed lua errors on course and endless modes ❕✅ Added sound options to themes ❕✅ Fixed favourites not loading BGAs ❕✅ Added SongPreviewVolume ❕✅ Added additional song folder master folder for BMS file support ❕✅ Changed UpdateDrawLoopSeconds to take FPS values ❕✅ Added option to disable hotswap controller support for performance ❕✅ Added set loops per second to ease CPU usage ❕✅ Fixed bug with buffer type in rtaudio ❕✅ Fixed bug with rounding error on syncing machine ❕✅ Fixed FPS inaccuracies ❕✅ Fixed bug with misplaced drawloop ❕✅ Fixed bug with overflow on sound buffers ❕✅ Show shader compile errors onscreen ❕✅ Added themepref for NoteDataLimit ❕✅ Fixed cast with clock resolution ❕✅ Fixed bug with large size notedata loading ❕✅ Fixed cache miss OutFox 5.0.0 Pre-Release Candidate 041 -a5 - April 08th 2023 ❕✅ Fixed clock method in new audio back end for linux/mac ❕✅ Added new round method for sound buffer ❕✅ Restored legacy SM-5 driver options for those that requested it ❕✅ Fixed bug with repeated samplerate calls ❕✅ Fixed missing API support in the main sound driver ❕✅ Fixed linux compile with rtAudio ❕✅ Fixed correct flags on device initialisation ❕✅ Fixed bad code in ragesound ❕✅ Fixed panda logger creation ❕✅ Added new soundwaves links on main page OutFox 5.0.0 Pre-Release Candidate 041 -a4 - March 27th 2023 ❕✅ Fixed Linux builds compiling for modern systems ❕✅ Fixed bug with a temp patch for uniformtextures overriding each other ❕✅ Added new FBO status information ❕✅ NEW! rtAudio stub and skeleton ❕✅ Fixed latency with some of the internal audio code ❕✅ Fixed audio latency and compile ❕✅ Fixed bug in Mac/Linux steam variants by downgrading to 5.2 rtaudio ❕✅ Fixed logging and device detection in Linux ❕✅ Fixed stuttering on rt-pulseaudio ❕✅ Fixed preference information and buffer edits ❕✅ Fixed 3.0 era particle animation processes ❕✅ Fixed bug with pandalog not using correct loc when set ❕✅ Added a new sound logfile for the new systems ❕✅ Fixed internal streamtime polling for audio ❕✅ Fixed bug with unavailable streams not being available due to a windows quirk ❕✅ NEW!! rt-Asio Driver ❕✅ NEW!! rt-DirectSound Driver ❕✅ NEW!! rt-WASAPI Driver ❕✅ NEW!! rt-JACK Driver ❕✅ NEW!! rt-ALSA Driver ❕✅ NEW!! rt-Pulse Driver ❕✅ NEW!! rt-OSS (4+) Driver ❕✅ NEW!! rt-CoreAudio Driver ❕✅ Fixed bug with legacy SM drivers trying to set a rate that\u0026rsquo;s not supported ❕✅ Fixed bug in accuracy of sound by removing SM 2.5x era cruft ❕✅ Added new sound driver selection in the debug stats ❕✅ Fixed bug with missing favourites folder stuff on soundwaves, you can now use this ❕✅ Fixed crash on Jack not available - do not use this driver unless you run jack for now, we need to code the path for it. THIS BUILD HAS A NEW SOUND BACK END!! This build utilises a new back end and completely does away with the old SM5 drivers. It was super heavily requested by the community that we have something configurable that could be used to lower latency in the game for key-sounded and hit sounded modes, so we delayed this build to squeeze it in. There are still a couple of bugs which will be ironed out, but for 99% of users, this build will work fine.\nLOW LATENCY AUDIO GET!\nWith lower latency, comes some compromises. It is super clear and sharp, you have better clarity, it obviously uses new drivers, which include some new preferences, see below.\nWe have discovered Discord does NOT like low latency based drivers\u0026hellip; AT ALL. please bear this in mind if you decide to play with ASIO/set your CoreAudio below 1024, and ensure you have a secondary sound card Discord can use, so you aren\u0026rsquo;t greeted with silence.\nWINDOWS: ASIO supports down to a blocksize of 32 in the internal driver, now while you can set this in the new preferences (see below) if you hear crackling or garbled audio, just raise this a bit. You can use anything from 32 to 4096 as your block size, higher values being higher latency.\nWASAPI supports from 64 to 4096, and replaces waveout as the default driver. It has the benefit of not being legacy or using an old back end to output, and can have it\u0026rsquo;s buffer lowered to suit the system.\nLastly we have DirectSound, mainly due to the fact it has been requested for older windows builds, but users should always try to see if WASAPI (which is Vista -\u0026gt;) is available. DirectSound is 512 -\u0026gt;\nThe new driver has had to be sample rate locked and hardcoded to 44.1kHz right now due to limitations in the back end, but we will be removing all the old legacy code in the coming months, so you will be able to enjoy 48kHz clarity really soon.\nLINUX: ALSA now uses a new back end, as well as no longer using a 15 year out of date code pathway, we no longer have to patch it for OutFox. It fully supports shared mode, so no more silence on calls when you\u0026rsquo;re using it, and it also behaves better on the Raspberry Pi/SoC board for arm, fixing the 10+ year old bugs. If your kernel is pre 4.12, you may get a crash on the first run due to the old kernel code, but the game should find your system devices properly on the second run. We\u0026rsquo;re looking into this atm.\nPulseAudio now runs without the ALSA hook, and again isn\u0026rsquo;t exclusive or forces weirdness. It can run with low latency as well, as well as sharing properly. At this release, it will likely use the ALSA device, but we will be adding the option to choose the device the specific APIs can use, so watch this space for that. There is also a quirk with Pulse where it reports the output and input devices back to front, so we have put in a workaround for this too.\nJACK - Jack now is built in without the need for extra hooks or compiler options, and simply just\u0026hellip; works. If you do not use this driver, do not add it to your preferences, as this can cause a crash right now, it will be fixed in the final version of 041. JACK is also available on MacOS, a bonus feature there.\nBSD/CONSOLE: OSS 4+ is available for BSD builds\nMACOS: CoreAudio now runs newer code as well, which also fixes the odd quirk in Ventura with the audio thread sometimes dropping out. We will also add code for audio device handover, as this new driver supports it, so no more crashing when your bluetooth headphones die and disconnect. Be warned, however, Bluetooth audio can not take a too low block setting, so experiment.\nNew Preferences in this build SextetStreamInputFilename= Used for the new Sextet input handler I forgot to code in \u0026gt;.\u0026gt;\nSoundrtAudioAPIName= This selects the audio back end for your system. It will be self populated on first run with a safe default, but you can override it with a comma\u0026rsquo;ed list of inputs.\nYou have a choice of the following:\nMacOS core - Use for CoreAudio jack - Use for JACK\nLinux alsa - Use for ALSA jack - Use for Jack pulse - Use for PulseAudio oss - Use for the Linux OpenSoundSystem\nWindows asio - Use for ASIO wasapi - Use for WASAPI ds - Use for DirectSound\nThey can be used as a list with commas, so \u0026ldquo;wasapi,ds,asio\u0026rdquo;\nSoundrtAudioLastUsedCard= This is a pref to highlight the last used card, it\u0026rsquo;s purely for the internal driver, like \u0026rsquo;lastseenvideocard\u0026rsquo;\nSoundrtAudioNumberofChannels= This pref is for number of output channels/speakers your system supports. It will be up to 8 when the code is written, but for now, leave it at 2, due to the legacy code. It will be ignored if you add anything else!\nSoundrtAudioPreferredSampleRate= This pref is for the samplerate of your device, and will be settable in time. It will return the preferred rate your card wants, but will sadly be set to 44.1 due to the restrictions of the legacy code. Will be unlocked when we remove the rest of RageSound\nSoundrtAudioSetBufferSize= This pref is where you set your latency block size. It supports 32 frame to 4096 frames as per the ASIO/latency standards. If your audio crackles or glitches, remember to adjust this, it is not a bug in the game! With lower latency comes a bit more instability, so bear this in mind when you adjust this value.\nLinux users will need a lowlatency compiled kernel and preferrably a kernel newer than 4.12 to take advantage of this. MacOS users need Big Sur to use \u0026lt; 256, and Windows 7+ for \u0026lt; 128\nThis driver is not enabled on windows yet due to some quirks with windows 10/11 which we are looking into.\nOutFox 5.0.0 Pre-Release Candidate 041 -a3 - March 19th 2023 ❕✅ Fixed bug with some windows versions crashing on boot with a weird waveout quirk ❕✅ Fixed misaligned pomu noteskin layouts on bun/cat/retro skins ❕✅ NEW! Be-mu/Po-mu backplate support - they run like gh/backplates ❕✅ Fixed crash with textbanner if steps are empty ❕✅ NEW! Actor Screen Textures!! These work similar to nitg AFTs ❕✅ Fixed transparency issues with opengl ❕✅ Fixed bug with AFTs not affecting FOV outside of itself ❕✅ Fixed triple sort call on musicwheel ❕✅ Fixed visible list on EffectModes ❕✅ Fixed FOV for AST/AFT so they are the same ❕✅ Fixed cache bugs with bannercache ❕✅ Fixed crash when taking screenshot ❕✅ Fixed hang when taking screenshot ❕✅ Fixed odd setlocale bug ❕✅ Fixed leegacy GL pipe for AFT/AST ❕✅ Fixed re-sorting stutter on musicwheel ❕✅ NEW! Added Din\u0026rsquo;s DDRIO Driver adjusted for OF ❕✅ NEW! Added Din\u0026rsquo;s ITGIO lights fixes ❕✅ NEW! Added Din\u0026rsquo;s Lights Exports Fixes ❕✅ NEW! Added Din\u0026rsquo;s PIUIO/LEDs/stac drivers and fixes ❕✅ Fixed sextetstream compiling ❕✅ NEW!! Input SextetStream driver ❕✅ Fixed bug with missing lights on sextetstream ❕✅ Fixed typo so pacdrive now works on 32 AND 64bit windows ❕✅ Fixed bug with density data so it\u0026rsquo;s now done by engine ❕✅ Fixed lag with datagen from decompress ❕✅ Fixed crash with filedriver if the type isn\u0026rsquo;t in map OutFox 5.0.0 Pre-Release Candidate 041 -a1+a2 - March 7th 2023 ❕✅ Fixed crash with legacy arm builds ❕✅ Fixed crash on miniholds ❕✅ Fixed crash with ubuntu \u0026lt;= 17.10 users ❕✅ Fixed crash with arm + legacy builds ❕✅ Fixed crash with soundcards on Windows 8+ (Thanks EvieUwO for report) ❕✅ Fixed stuck buttons on rtMIDI input (Thanks LightHexagon for report) ❕✅ Fixed e-drums MIDI velocity channel quirk (Thanks LightHexagon for report) ❕✅ Fixed latency/lag in BMS/be-mu mode making it unplayable (Thanks Daniel Rotwind for report) ❕✅ Fixed latency/lag in PMS/po-mu mode making it unplayable (Thanks goodsun for report) ❕✅ Fixed latency/lag in DTX/gddm mode making it unplayable (Thanks goodsun for report) ❕✅ Fixed AMod/CAMod/AVMod speed mod issues ❕✅ NEW! FBO DoubleBuffer System for our render pipe ❕✅ Fixed bug with lack of stencil support on FBOs in MacOS ❕✅ Fixed FBO Transparency with modfiles ❕✅ NEW! Added new \u0026lsquo;PowerOfTwo\u0026rsquo; variable for AFTs (Requested by our Modding community) ❕✅ Fixed GLAD FBO system for ARM systems ❕✅ Fixed bug with draw update with receptors and note flashes OutFox 5.0.0 Pre-Release Candidate 040 (Main + Steam Playtest Build) - March 7th 2023 ❕✅ Fixed micro-stutter math overflow bugs in the approach code introduced in upstream in 2005 ❕✅ Fixed math code-paths that caused a lag stall on Pre-2017 architecture ❕✅ Fixed order of draw for SimpleHolds BottomCap ❕✅ Fixed missing items on NSIS installer for our non-steam Windows builds ❕✅ Fixed winding order on our GL pipe - Raspberry Pi, and older systems should love us a bit more now ❕✅ Fixed bug with missing Fake notes writing to cache so they weren\u0026rsquo;t miss on the first load ❕✅ NEW!! - Built in favourites system to the default (soundwaves 0.4.x) theme! ❕✅ Fixed bug with SaveMachineProfile\u0026hellip; not saving on some newer Linux Builds ❕✅ NEW!! - Created a new ActorNoteFieldBoard metric to avoid legacy (StepMania 5.x) Noteskin problems/lua asserts ❕✅ Fixed bug in .TJA parser missing credits for #NOTEDESIGNER ❕✅ Fixed 21 year old bug in MenuTimer ❕✅ Fixed Accuracy in Player Options on the snapping options ❕✅ Fixed crash sometimes in profiles where the theme didn\u0026rsquo;t support fitness/calories ❕✅ Fixed banner cache system on both themes ❕✅ Fixed bug with Auto generated chart loading on LuaWheel ❕✅ Fixed theme layout bugs OutFox 5.0.0 Pre-Release Candidate 039 (NON Steam Playtest Build) - February 24th 2023 ❕✅ Fixed Linux building platform ❕✅ Updated Alpha V theme - should be less buggy now ❕✅ NEW!! - Use SoundDevice=0 (device number) to pick a sound card the game uses to output on the wave out sound driver on windows. (Thanks SenPi/Teej from ITGM, though we had to rewrite it for OF) ❕✅ Fixed crash on .osu/.osz files that were broken ❕✅ Fixed bug with approach mods occasionally skewing with a new snap feature ❕✅ Fixed bug with SongGroup vector causing leaks on the wheel ❕✅ Fixed edge crash on windows 7/10/11 with the logs folder when not using a portable.ini ❕✅ Fixed hardcoded logpath crashing non-mac OSs ❕✅ Fixed bug with KBX mode crashing on jukebox ❕✅ Fixed bug with some tween ending times being skipped ❕✅ Fixed bug in main loop with some \u0026lsquo;modern\u0026rsquo; 2003 windows XP optimisations ❕✅ Fixed bug with \u0026lsquo;framey\u0026rsquo; (slightly stuttery) files ❕✅ Fixed frame jitter bug added in 2005, that was causing fDelta to reverse ❕✅ Fixed bug with ready bar not clearing at the beginning of a song ❕✅ Fixed bug with group folder banners not loading ❕✅ Fixed bug with low quality banners not loading/being used OutFox 5.0.0 Pre-Release Candidate 038 (NON Steam Playtest Build) - February 21st 2023 ❕✅ Fixed bug with mac bundle modules ❕✅ Add new PREIMAGE support for taiko tja file banners ❕✅ Fixed bug with windows compilation ❕✅ Fixed bugs with imagecache crashing ❕✅ Fixed some memory leaks in imagecache/musicwheel ❕✅ Fixed loading call for NSkin boards ❕✅ Fixed crash with AU on mac when external output sources are disconnected ❕✅ Fixed Def.Text not showing textures on macos ❕✅ Added lane colours to pomu noteskins ❕✅ Added new LyricLoader class which will support SRT/SSA/VTT files in time! ❕✅ Fixed bug with incorrect delete on music wheel ❕✅ Fixed crash with scrolling too quickly on music wheel ❕✅ Fixed loading of banners on music wheel causing a crash ❕✅ Fixed compiler being odd with zlib variables clashing ❕✅ Fixed bug with win32 locale ❕✅ Fixed slowdown in lua parsing ❕✅ Fixed glcontext creation ❕✅ Fixed bug with updateluaglobals not working on language change ❕✅ Added new math functions to reduce stutter on the SBC/Pi builds ❕✅ Fixed missing garbage collection on music wheel (reported by Dom) ❕✅ Fixed around 150 rounding issues in our math compilation causing slowdowns ❕✅ Added Editor support for TapNoteSource_Fake - to make the note a fake, use shift + n or shift + m, and remember if you use them! They will allow all things to be fakes. Requested by Mostly_Harmless ❕✅ Raised Stats.xml max size to 144MB ❕✅ Fixed crash with late joining on some systems and themes ❕✅ Fixed more bad math ❕✅ Fixed edge case crashing with creeping NaNs ❕✅ Fixed crash on column mods that were requesting values out of range OutFox 5.0.0 Pre-Release Candidate 037 (NON Steam Playtest Build) - January 24th 2023 ❕✅ Fixed zlib compile that was blocking linux builds ❕✅ Fixed merger with SDL breaking some controllers on mac/linux ❕✅ Fixed duplicate definition in OF SDL patches breaking keypad enter ❕✅ Rewrote PacDrive to not use broken libUSB deps ❕✅ Fixed lua errors crashing the game on invalid enums, we can safely warn ❕✅ Added new Actor Screen Texture Skeleton WIP ❕✅ Fixed beginLine()/endLine() overflow on SSC/Pump parser/writer causing edited songs to sometimes be infinite ❕✅ NEW! Added OG-Classic be-mu noteskin ❕✅ NEW! Added TapNoteSource_Fake - now any note can be a fake; NO Editor Support yet, coming in later build! ❕✅ Fixed percentage done from directory to total songlist in the loading window ❕✅ Fixed some math overflows in RageDisplay ❕✅ Fixed hold rendering and checking due to overflow ❕✅ Fixed crash in RageFileManager locking up the cache ❕✅ Reset fDeltaTime correctly in the actor stack ❕✅ Fixed heap crash with discord\u0026hellip; OutFox 5.0.0 Pre-Release Candidate 036 (NON Steam Playtest Build) - January 1st 2023 ❕✅ Fixed bad call in linux build process ❕✅ Fixed USBDriver remaining calls left in unix and mac now they are gone. ❕✅ Fixed math overflow preventing the AxisFix working on windows 10 (win32 legacy input driver) ❕✅ Fixed math overflow on win32 legacy preventing the AxisFix pref working on Windows 7 and 8, thanks Microsoft ❕✅ NEW! Added Axis Fix support to Linux/Mac via SDL2 driver. If you have a pad and are on one of these operating systems, let me know so I can write up how to prepare and set up your fix. ❕✅ NEW! Added Axis Fix XInput support to windows 10/11 on the SDL Driver. ❕✅ Fixed bug with Para Para controller not being detected when some pad configurations were set. ❕✅ Fixed bug with HIDRAW on Windows and MacOs crashing when a controller was plugged in. ❕✅ NEW! Added new InputSet* Preferences to bring all the Input systems closer together than using odd settings. Do not use InputSetHIDAPI/InputSetRAWAPI at this time as it needs to be finished: The new preferences are as follows:\nAllows a player to specify if they are using arcade or custom controller hardware. m_bInputSetArcade\nAllows SDL to toggle the mapping method for joysticks via XInput. m_bInputSetXInput\nAllows SDL to toggle the mapping method for joysticks via DInput. (Windows Only) m_bInputSetDInput\nAllows SDL to toggle the mapping method for joysticks via HIDAPI. m_bInputSetHIDAPI\nAllows SDL to toggle the mapping method for joysticks via RAWINPUT. m_bInputSetRAWAPI\nAllows the user to set a DeadZone value. Useful for Axis Fixing and Configuring m_iInputSetJSDeadzoneValue\nAllows the user to set the desired input system on Linux, either /jsX or /eventX. m_bInputSetLinuxJSEndpoint\n❕✅ Removed m_bXInputUseOldJoyStickMapping, m_iJoystickDeadZone, m_bUsingArcadePads, m_bUseLinuxJS ❕✅ Added new CRC support to SDL driver for future use OutFox 5.0.0 Pre-Release Candidate 035 (NON Steam Playtest Build) - December 30th 2022 ❕✅ Updated Taiko noteskins with the new features ❕✅ Began pipewire/wayland support on drivers ❕✅ Added missing climits header where required ❕✅ Add GameState:GetGoalPercentComplete functions ❕✅ Sync up changes in the alphav-dance theme ❕✅ Remove bad C code in RageUtil ❕✅ Update upstream SDL2 to 2.26.1 ❕✅ Added SDL OutFox patches ❕✅ Fixed FreeType building ❕✅ Tried to fix corrupted iTrack which causes a crash on MacOSX ❕✅ Fixed crash on shitpost osu charts ❕✅ Fixed OTO scientific notation crashes ❕✅ Remove LibUSB - PLEASE TEST ON WINDOWS 7!!!! ❕✅ Added new VTT/SRT/SSA/LRC parser skeleton in prep for new lyric filetype support ❕✅ Added new .obj file loader - Thanks to Jewel from UKSRT for the help! OutFox 5.0.0 Pre-Release Candidate 034 (NON Steam Playtest Build) - December 28th 2022 (MACOS SPECIFIC UPDATES) This build addresses issues related with the parser modules not loading on other Macs due to the linker process.\nOutFox 5.0.0 Pre-Release Candidate 033 (NON Steam Playtest Build) - December 27th 2022 (MACOS SPECIFIC UPDATES) This addresses bugs related with crashes on macOS introduced on Ventura.\n❕✅ Updated SDL to 2.26.1 ❕✅ Remove bad C code from RageUtil ❕✅ Removed libUSB dependency causing crashes on macOS. OutFox 5.0.0 Pre-Release Candidate 032 (NON Steam Playtest Build) - December 22nd 2022 (LINUX SPECIFIC UPDATES) ❕✅ Fixed xrandr version mismatch preventing the game seeing it installed ❕✅ Fixed missing wayland compatibility (test if you like, probably still needs work) ❕✅ Fixed missing pulseaudio hooks on newer ubuntu 20-\u0026gt; ❕✅ Fixed missing pipewire hooks on newer ubuntu 20-\u0026gt; ❕✅ Fixed bug with XCB not initialising correctly ❕✅ Fixed missing XTST lib not being used causing a crash on newer ubuntu (21-\u0026gt;) ❕✅ Fixed missing DRM support ❕✅ Fixed version mismatch on VA and X11 on newer ubuntu ❕✅ Fixed mismatch with sndio on newer ubuntu ❕✅ Added new build environment for Modern Ubuntu (20-\u0026gt;) if you use this on 18.04, you WILL need to ensure you have updated your system and have the -backports repositories for some of the newer libraries. This is purely testing at the moment for linux users, but please let me know if there are any issues - Squirrel\nOutFox 5.0.0 Pre-Release Candidate 032 (NON Steam Playtest Build) - December 22nd 2022 ❕✅ Fixed crash with empty string on TJA parsing ❕✅ Fix crash with Count Holds on TJA parsing ❕✅ Fixed missing BALLOON support on TJA parsing ❕✅ Fixed missing Counted Hit support on TJA parsing ❕✅ Added Taitai count hold support ❕✅ Fixed Audio Unit panics on macos 13+ ❕✅ Fixed Audio Unit buffer allocation on macos 13+ ❕✅ Fixed Audio Unit device selection on macos 13+ ❕✅ Fixed Audio Unit log spam on macos 13+ ❕✅ Fixed issue with no normals being sent on CompiledGeometry ❕✅ Added setting the rate of the animation of the material on a model ❕✅ Fixed crash with empty string on TJA parsing ❕✅ Fixed issue with double press on taiko drum inputs ❕✅ NEW! Changed options for Audio Volume in the debug menu. Sounds can be assigned to either Attract/Effect/Sound, and can be controlled in the menu. The old \u0026lsquo;Effect Menu\u0026rsquo; is gone, and allows you to set the type of audio you wish to edit. Attract volume works on the Jukebox/Attract screen, and can now also be set ABOVE 100%, to a maxium of 200%, for situations where audio lines are quiet and you need a boost for a cabinet.\nPLEASE NOTE: This can cause the audio to clip/distort at high volumes, and we are not responsible for your use of this. It has been a very highly requested community feature and we are happy to be able to bring it to you in this build.\nUse R to change the Sound Type, and T and Y to set the volume Down and Up respectively.\n❕✅ Added matrix splitting options for CompiledGeometry ❕✅ Fixed oversight on SetSecondsIntoAnimation ❕✅ Fixed font reloading on resolution change ❕✅ Fixed font corruption on resolution change ❕✅ Added new sound types to be supported and run within the themes ❕✅ Fixed issue with missing hiddenregions and hold noteflashes ❕✅ Fixed issue with pump holds missing and not being able to be reclaimed ❕✅ Fixed crash with notepath vertex data ❕✅ Fixed offset on TJA files, causing skew on playback, thank you to tana. in the TJADB server for the assistance! ❕✅ Removed ancient HighScoreList::RemoveAllButOneOfEachName() for a newer function - Needs testing ❕✅ Fixed crash with \u0026lsquo;phantom\u0026rsquo; BALLOONs in TJA files - Charts that do not specify a value for each BALLOON ❕✅ Added BALLOON default hit value of 5 to align with the expectations of the taiko community. ❕✅ Added SMA support back from LTS4 due to the number of community requests - please check them if you use this format ❕✅ Fixed crash with Windows XP era macros confusing the compiler on 32bit windows ❕✅ Fixed errors with SMA files being offset due to a math overflow ❕✅ Fixed crash with all parsers due to a legacy 2004 bug ❕✅ Fixed timeout bug with MEMCARDMAN preventing memory cards working in the game ❕✅ Fixed missing memory card support for cabinets - please test and let us know! OutFox 5.0.0 Pre-Release Candidate 031 (Steam Playtest Master) - November 26th 2022 ❕✅ Fix crash with lxio on win32/linux 32bit operating systems ❕✅ Change behaviour of assist clap and metronome to continue even if player is dead at community request ❕✅ NEW! Added ImageCache 2022, with an improved system for GPU ready textures etc ❕✅ Fixed crash with notedata ❕✅ Fixed crash on first note press on some modes ❕✅ Fixed crash with music wheel freeze on para mode ❕✅ Fixed forever loop in legacy stepmaniaonline code ❕✅ Fixed system capabilities issue for windows 7 ❕✅ Fixed issue with needless image preload system ❕✅ Fixed offsets for column renderer ❕✅ Fixed digitaloffset math ❕✅ Fixed missing techno graphics ❕✅ Fixed legacy FFMPEG code path breaking on slow loading systems - Themers need to be aware of tween times on loading charts on music wheels, these can still cause a crash if not set right due to a race condition. Tween waiting times should be around 0.4 to 0.8 if a user is scrolling so the wheel doesn\u0026rsquo;t load resources the game doesn\u0026rsquo;t need. ❕✅ Fixed compatibility issue with formatting pixel data ❕✅ Fixed TJA Measure commands ❕✅ Fixed TJA BPM changes from making charts out of sync ❕✅ Fixed TJA Scroll commands making charts out of sync ❕✅ Fixed TJA fast scrolling - SET YOUR GAME TO CAMOD IN SONG OPTIONS ❕✅ Fixed TJA timing entries OutFox 5.0.0 Pre-Release Candidate 029 \u0026amp; 030 (Steam Playtest Master) - November 11th 2022 ❕✅ Fix crash with Matrix generation on some older modfiles ❕✅ Added new game generation to cmake for windows api ❕✅ Fix crash with object deletion in draw pipe ❕✅ Add new boxing mode ❕✅ Fixed dynamic library loading for steam ❕✅ Fix missing failimmediate option being saved on KBX mode ❕✅ Fixed bug with missing thread mutex on song loading ❕✅ Fixed crash with missing stagemodel init ❕✅ Fixed crash with steam builds on linux ❕✅ NEW! Fixed legacy arm builds for embedded armv7 boards ❕✅ Fixed Opengl selection for linux builds should fix resolution issue ❕✅ Modernised build environment for new outfox specific options ❕✅ Fix mines on pump and dance ❕✅ Fixed type boolean ❕✅ Fixed be-mu/po-mu/gddm/gdgf preview sounds ❕✅ Fixed crashes with minimaid on linux, needs to be rebuilt ❕✅ NEW! Added new 80% pass failtype for be-mu/po-mu ❕✅ Fixed bug with DTX loadheader ❕✅ Fixed crash with hiddendata calls on editor ❕✅ Fixed offset support on Autokeysounds ❕✅ Added language functions for thememanager ❕✅ Fixed mac build chain and command scripts for XCode ❕✅ Fixed crash with legacy opengl on legacy linux distros (pre 2010) OutFox 5.0.0 Pre-Release Candidate 028 - November 8th 2022 ❕✅ Fix crash with GLAD on ATI era cards ❕✅ Fix GameSelect ❕✅ NEW! Added new \u0026ldquo;Ex\u0026rdquo; versions of Back and Elastic tween eases for Actors ❕✅ Fixed bug with texture resolutions rounding incorrectly on some functions ❕✅ NEW! Added new SetUpdateFPS() function to set the desired FPS of the update loop for Actors ❕✅ Fixed ez2 real from crashing on Versus ❕✅ Fixed crash on deltatime on Actors ❕✅ Fixed crash with Def.Notefield() not getting a defined playernumber ❕✅ Widened autokeysound track allowance to 32 ❕✅ Added Beatin po-mu Judgement ❕✅ NEW! BMS-like parser override functions to bind and prevent duplication and bad code use ❕✅ Fixed upstream bug with keysounds ending early on BMS-like songs ❕✅ Fixed bug with sounds unloading not at EOF ❕✅ Fixed vorbis flags ❕✅ Restored PMS/BME extended hidden keysound channels ❕✅ Fixed hold keysound spam ❕✅ Fixed texture handle get functions ❕✅ NEW! Added Experimental Option \u0026amp; Pref: AutoKeySoundBMS. This preference changes how the keysounds play in be-mu/po-mu/gddm/gdgf, with the option of OutFox being usual behaviour, setting BMS plays the keysound when you hit the button, and FULL all the keysounds are set to BGM layer so you can miss without it affecting the melody of the song ❕✅ Fixed crash with bad GL detection, if you crash try re-running the game to set the pref correctly ❕✅ Cleaned up code in LLW ❕✅ Fixed bug where game would hang on musicwheel with high note/mine/etc counts over 9000 on NPS chart ❕✅ NEW! Added new BMSHeaderLoad pref to disable loading header files on older HDDs/Rpi/SteamDeck ❕✅ NEW! Added threaded songloader, with a preference m_NumSongLoadThreads to select the number of threads. Default is 2, but you can up this to a maximum of 8 on NVME/SSD drives ❕✅ NEW! Fixed MineFix from affecting other Modes ❕✅ NEW! NSIS installer ❕✅ Fixed DTX parsing difficulties OutFox 5.0.0 Pre-Release Candidate 027 - October 31st 2022 ❕✅ Fix bongo notes sometimes clashing with taiko ones in the parser ❕✅ Fix mode graphics to allow players to use bongo ❕✅ Fix GameSelect.lua ❕✅ NEW! Initial ShaderManager skeleton ❕✅ Fix crash with needless commands in GLAD renderer ❕✅ Fix ShaderManager scope in the renderers ❕✅ Fix Branding for future builds ❕✅ Add Steam Playtest Code and API ready for approval from Valve ❕✅ Fix Steam build compilation for MacOS OutFox 5.0.0 Pre-Release Candidate 026 - October 25th 2022 ❕✅ Fix Krazy noteskin crashing ❕✅ Fix NSIS code OutFox 5.0.0 Pre-Release Candidate 025 - October 25th 2022 ❕✅ NEW! Bongo Mode! ❕✅ NEW! Bongo Autogen from TJA \u0026amp; Osu (though due to chart quality, osu can be sketchy) ❕✅ NEW! Krazy noteskin for bemu/kbx/pomu ❕✅ Fixed dynamic libs for ffmpeg base ❕✅ Fixed bug with non-shader ffmpeg not being used in some cases ❕✅ Fixed flags in ffmpeg causing slow decoding ❕✅ Fixed shader ffmpeg passing diffuse instead of alpha ❕✅ Fixed some floats ❕✅ Added new TextureModes: Decal, Replace, Blend, Invisible ❕✅ Removed old mipmap code that didn\u0026rsquo;t do anything, to restore in later driver ❕✅ Fixed lirocode crash on bms ❕✅ Fixed mine check in bms parser so mine gimmick charts are parsed correctly ❕✅ Add \u0026lsquo;DanceLegacyMode\u0026rsquo; to ensure disconnection from SM \u0026lsquo;Everything is DDR\u0026rsquo; pathing ❕✅ Fixed BMS parser substrings, so difficulty and subtitles now show as they should ❕✅ Fixed BMS difficulty selection and titles, and add the proper number of difficulties ❕✅ Fixed BMS not having D6 and D7 for Hyper/Insane difficulty support ❕✅ Fixed BMS header data loading to speed up the game in general OutFox 5.0.0 Pre-Release Candidate 024 - October 17th 2022 THEME: (From Jose)\n❕✅ Rewritten Judgement loading procedure. This basically now lets the game record each judgment graphic per timing window instead of a singular option to rule them all. This would\u0026rsquo;ve become messy if we\u0026rsquo;ve kept it like that. NOTE: This will run locally on the theme for now, to test if the new functionality is stable to transfer to fallback.\n❕✅ Music wheel is now dimmable when entering options\n❕✅ Touch controls are now a toggle Now looking back, I can see that this whole thing can become a mess if we let everything be shown at once, so now the Touch controls are part of a toggle located on the Options menu, which is off by default.\n❕✅ Speed is now the main option on Player Options\n❕✅ Fixed PrevScreen on KnownBugs (Reported by Moneko)\n❕✅ Apply PlayMode upon entering the music wheel\n❕✅ Hide menu timer from ScreenEvaluation for now.\n❕✅ Fix last difficulty selection when returning the wheel\n❕✅ Tweaked Song Info box to include a banner.\n❕✅ Fixed video banners not respecting fading.\n❕✅ Tweaked player information pane on select music\n❕✅ Noteskin now applies when changing noteskins.\n❕✅ Fix update for Measure Count display\n❕✅ Cleanup debug messages\nBMS/PMS/DTX/GDA\n❕✅ Auto switch to HQ mp4 movie BGA if available ❕✅ Fixed title being overwritten resulting in the directory name being used ❕✅ Fixed regex causing title to be empty ❕✅ Removed SM3.9 era cruft from the parsers ❕✅ Removed defunct Unicode conversion as we do it properly now ❕✅ Fixed commonsubstring overflows resulting in bad title/translit title ❕✅ Fixed bad SM4 code breaking some #subtitle entries ❕✅ Fixed multi-layer backgrounds not being initialised correctly ❕✅ Removed bad converting code for artist and genre ❕✅ Fixed bug causing cache generation lagging on initial parsing on first boot ❕✅ Fixed missing #subtitle support on BMS files ❕✅ Added subtitle options for BMS files ❕✅ Added new Chartsubtitle option for lua SSM ❕✅ Added new ChartTitle options for lua SSM ❕✅ Added new ScreenGameplay GetSound() ❕✅ Fixed sounds not ending ❕✅ Fixed Background Crash that was reported ❕✅ Fixed lag on loading window ❕✅ Added new Peaks for audio visualiser ❕✅ Added new def.AudioVisualiser Def.AudioVisualizer Info:\nIt can be added to any existing actorframe, in themes, modfiles and noteskins!\nTo use it just use the following commands (UpdateRate is in seconds: 0.01s to 10s)\nreturn Def.ActorFrame{ Def.AudioVisualzer{ Amount=128, -- The amount of colums, its from min of 16 to a max of 128. LinearPeaks=true, -- define if we want lenear peaks, as in a slow animation when it goes back to 0. PeakHeight=40, -- the hight of the columns, UpdateRate=0.01, -- the update rate of the columns, the lower the faster, between 10 and 0.01. OnCommand=function(self) self:SetSound(--[[ A RageSound to set--]]) -- if SetSound is not set, it will fallback to the cur playing music, this does not work for screen gameplay, in screengameplay do self:SetSound(SCREENMAN:GetTopScreen():GetSound()) end } } OutFox 5.0.0 Pre-Release Candidate 023 - October 12th 2022 OutFox 5.0.0 Pre-Release Candidate 014 - August 26th 2022 ❕✅ NEW! Added bongo note types and .tja/.osu parser support ready for implmentation ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Fixed bug with crash when unplugging MIDI keyboards on Mac 12/13 ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed bug with missing kickbox items ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted spheremapping ❕✅ Fixed crash with missing noteskins ❕✅ Added new TTFActor Prototype; documentation to come shortly ❕✅ Fixed bug with mutex unlocking when file get fails ❕✅ Fixed bug with limited inline on row resolution ❕✅ Fixed crash with unreleased threads ❕✅ Fixed bug with spheremapping in GLAD ❕✅ Fixed \u0026lsquo;permanentlydeletechart\u0026rsquo; ❕✅ Fixed bug with race condition between file threads ❕✅ Fixed bug with renderstates being dereferenced in windows ❕✅ Fixed bug with scrolling BGAs ❕✅ Fixed scrolling actor bugs OutFox 5.0.0 Pre-Release Candidate 013 - August 16th 2022 ❕✅ Fixed bug with windows derefs ❕✅ Fixed texture scroll overflowing onto the ui ❕✅ NEW! - Added FourV2Lane Pump Noteskins ❕✅ NEW! - Added Global Board Noteskin ❕✅ NEW! - Dynamic Mode Icons for Discord RPC ❕✅ NEW! - Darkfox icons for Discord RPC ❕✅ Fixed bug with long windows names on Discord RPC ❕✅ Fixed crash on new M2 chip Macs ❕✅ Fixed bug with no bit type returned on linux ❕✅ Fixed crassh on PIU loader ❕✅ NEW! - SteamAPI setup and init (not active on these builds ofc) ❕✅ Fixed bug with build deps on steam builds ❕✅ Updated steam libs to 155 ❕✅ NEW! PandaLog ❕✅ NEW! Crashlog system OutFox 5.0.0 Pre-Release Candidate 012 - August 14th 2022 OutFox 5.0.0 Pre-Release Candidate 011 - August 11th 2022 The Crash Dash Part III edition:\n❕✅ Fixed bug with discord lib working preventing the core initialising ❕✅ Set finger id for 1 for now. ❕✅ Fixed bug with missing touch events ❕✅ Fixed missing finger events on actors ❕✅ Fixed cross platform touch support ❕✅ Fixed bug with FailImmediate not being saved to profile ❕✅ Fixed simpleholds bottomcap ❕✅ Fixed bug with texture translation ❕✅ Fixed colour buffers ❕✅ Fixed docker builds for linux alpha V ❕✅ Fixed refcount on model manager causing edge crashes ❕✅ Fixed bug with density generation ❕✅ Added GetWorstTapNoteScore() ❕✅ Added GetAbsoluteDest X/Y ❕✅ Added UpdateThemeLanguage() ❕✅ Added AVMod for pump ❕✅ Added NoMines for simplePO ❕✅ Added DebounceCoinInputTime() to ScreenOptionsMasterPrefs OutFox 5.0.0 Pre-Release Candidate 010 - August 8th 2022 OutFox 5.0.0 Pre-Release Candidate 009 - August 6th 2022 The Crash Dash Part I edition:\n❕✅ Fixed crash with windows input handler ❕✅ Fixed crash with resetting graphics mode ❕✅ Fixed crash with changing themes ❕✅ Fixed hang with changing themes to infinitessimal/starlight ❕✅ Fixed hang on some screen changes ❕✅ Fixed hang on screen gameplay with pump charts and dance mod-files ❕✅ Fixed crash with some mod-files ❕✅ Fixed hang with SL on main menu/profile screen ❕✅ Fixed crash on screen evaluation on non-default themes ❕✅ Fixed multiple crashes on game close ❕✅ Fixed hang on adding or removing a controller on Windows ❕✅ Fixed crash on SMX pad initialisation on Windows ❕✅ Fixed crash with GameState calls being out of order on game shutdown ❕✅ Fixed crash on editor exit ❕✅ Fixed crash with game being left on for longer than 62 minutes ❕✅ Fixed crash with game releasing devices on Windows ❕✅ Fixed crash in screengameplay ❕✅ Fixed crash when \u0026lsquo;reloading songs\u0026rsquo; on any theme ❕✅ Fixed crash on alt-tab on non-default themes ❕✅ Fixed crash on some older (pre2013) GPUs crashing when using alt+enter ❕✅ Fixed crash with the sound buffer overflowing ❕✅ Fixed crash with editing chart playback when stops/warps are used ❕✅ Fixed crash with sounds on keysound thread at evaluation screen on be-mu/po-mu \u0026hellip;sigh ❕✅ Fixed bug with missing 7key BMS not being parsed (Thanks Scrypts) ❕✅ Fixed bug with almost all charts from legacy (2007 and older) BME files spawning as pomu9 ❕✅ Fixed registry issues in Windows 11 ❕✅ Added \u0026lsquo;dependonmusicthread\u0026rsquo; for those who must have the stepmania lockup experience. set it to false to get better performance, but the music will not block the main thread. ❕✅ Added GetCaloriesBurnedByDate for calorie information on a specific day ❕✅ Fixed bug with kbx pump chart length ❕✅ Fixed bug with fonts reloading in the wrong order on theme change. WE NEED SOMEONE TO TEST MIDI / LIGHTS ON THIS BUILD!!\nOutFox 5.0.0 Pre-Release Candidate 007 - August 5th 2022 ❕✅ Fixed bug with modernffmpeg not being chosen correctly on supported systems ❕✅ Fixed bug with missing functions on ffmpegmodern driver ❕✅ Fixed bug with sound thread crashing ❕✅ Fixed bug with discord RPC crashing on game exit ❕✅ Set failtype default to \u0026lsquo;EndOfSong\u0026rsquo; ❕✅ Added SongDisplayBPMModern ❕✅ Fixed bug with missing PIU loader flags ❕✅ Fixed bug with \u0026lsquo;ForcePIU\u0026rsquo; hint not being loaded correctly ❕✅ Fixed Mac Modules not being compiled correctly ❕✅ Fixed bug with incomplete string support on MacOS ❕✅ Fixed bug with incorrect redir targets causing a crash ❕✅ Fixed bug with invalid scores being generated due to tickhold math logic ❕✅ Added Darkfox Icons and branding so it\u0026rsquo;s different in the Taskbar. ❕✅ WINDOWS ONLY: Added new install location: Project OutFox V ❕✅ Fix be-mu parsing due to squirrel\u0026rsquo;s oopsie Known Issues:\n❌❕ Win32 direct input crashing still happens a bit on some race conditions ❌❕ Crash on song select options due to non-foot noteskins/noteskins with not all the support ","description":"Release Date: From 2022 \u0026ldquo;Full Alpha V Changelog\u0026rdquo; Upcoming Alpha V Play Test Build pre042 - September 2023 Last \u0026lsquo;Stable\u0026rsquo; Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update."},{"id":1,"href":"/releases/A4.18.0/","title":"OutFox Alpha 0.4.18 Build","parent":"Release History","content":" Release Date: 26th October 2022 \u0026ldquo;LTS Status Engaged - Damnit Jim, I\u0026rsquo;m a doctor!\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play. As the whole point of this LTS programme is to ensure stability and remove opportunity for the game to crash or have problems in general play this was unacceptable, and we went back to deep bug fixing which is why this release is later than planned, but provides a much more stable environment for play.\nAs with development we cannot guarantee you\u0026rsquo;ll never crash, but we have reduced bugs and situations where that could happen while you\u0026rsquo;re playing the game.\nWe hope you enjoy the fruits of our work, with this proper stable build, and appreciate your continued support!\nNew Mode: bongo! Based on a game for home consoles released in the early 2000s, this mode brings in a highly requested fan favourite to OutFox!\nPlayed using the left drum, right drum, and clapping, this fun mode at the moment uses the games TJA and OTO loaders to support fan created TJA content, and Mode 1 from osu files, though bear in mind, many of the osu files are not designed with fun in mind, so it may become painful using your hands to play these files!\nYou do NOT need to enable auto-gen for this mode! It uses any TJA or OSU files in your folders already to generate tracks! Remember our taiko support is ongoing, so some holds and effects do break sync, but we will be fixing these in time. We do not have a theme yet for this mode, so game-play is with the basic \u0026lsquo;default\u0026rsquo; for now, so you can have a play and feel for it!\nThis is our 18th Working Game Mode that this engine supports, and we are truly humbled by the awesome support you, the players, provide us to continue to improve and expand on what this museum contains within it\u0026rsquo;s wall of code!\nWe have designed this mode alongside the project OpenTaiko so that charts made using the new TJA letter types in the charting format will be cross-compatible between the two simulators moving forward.\nLong Term Stable Builds Are Here! (Take 2!) As part of our commitment to getting the game out of the eventual development hell, we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on finalising the alpha V branch.\nWhat this means to you, the end user, is that if you do not want to have to change builds all the time and deal with \u0026rsquo;new feature\u0026rsquo; bugs, then this branch will be maintained (for bug fixes only) in a 1 month bug fixing schedule until December 2022, then will move to a quarterly release schedule (so 4 more updates) until it is retired at the end of December 2023 with the final release being 4.24.\nThis branch is stable enough for the removal of the \u0026lsquo;alpha\u0026rsquo; prefix, and if you get any bugs or issues do report it. Things deemed important will be back-ported to the 0.4.x branch, but the team will be focussing more on 0.5.x in 2023 and beyond.\nNew PandaLog File System This month we also added a new logging system which will greatly help with any debugging needs that you have. We have changed the system, so that there is a main, a theme, and a crash-log now, and these have varying levels of detail, depending on need. If you happen to have a crash or need to debug a theme, or lua mod, this is now much easier to do.\nOn the log level preference, 0 shows full detail, where 5 will give you a reduced log-file, usually when you have everything set up and working well.\nPLEASE NOTE: As we no longer follow the SM logging system, we have added a dummy \u0026lsquo;info.txt\u0026rsquo; for the Windows launcher of GrooveStats so the launcher for that system still works. New FFMPEG system This release also sees some changes to the FFMPEG builds used in OutFox. We had discovered there is a memory leaking bug in upstream which doesn\u0026rsquo;t really affect many of the video players out there generally, the code we use to acquire and display video data is based on the functions that are bugged in newer versions, so folks using banners or video backgrounds would end up with crashing and freezes due to this.\nWe have reverted back to a much older \u0026lsquo;bug free\u0026rsquo; build of 4.x for the time being until it is fixed by upstream. If you get any quirks or errors on videos, do let us know; we tried a lot of different formats and videos commonly used, but we didn\u0026rsquo;t cover everything!\nLinux Joystick Pref This build adds a support option for those folks on some builds which have had evdev issues with the newer kernels (5.1+) making pads not show up.\nBy default OutFox uses the event system as this is recommended by distros like Ubuntu and Debian but with recent updates these can miss seeing pads and controllers.\nThe new pref UseLinuxJS (Use Linux JoyStick) sets /js* by default, so folks can access the controllers correctly. If you want the older behaviour, take a moment to set this to 0 in your preference.ini file in the /save folder. We will keep an eye on this for now, and if you get any errors about \u0026lsquo;access denied\u0026rsquo; ensure your user is in the \u0026lsquo;input\u0026rsquo; group using a terminal and:\nsudo usermod -a -G input USERNAME\nwhere USERNAME is your current user (type whoami) to see what this is in a terminal.\nLet us know if you have any issues, and pop into the Discord server if you need any help!\npump fixes! This month we have been working with the players and developers of the Infinitesimal theme for pump with fixing the hold situation in the simulation of this mode. With a lot of revisions and testing, we can happily report that the holds are operating properly now, and we are grateful to those that gave their time helping us perfect it!\nNew Always on Top Preference! This preference was requested by a lot of our streamer players, as they said it can cause issues with the streaming and capture methods they use.\nThis preference which is simply entitled AlwaysOnTop is set to 0 (false) by default, which is the normal behaviour of the game. To enable it while you stream you can set this to 1 and the game will always be on the top of the screen even if you click off or have a window behind it.\nThanks to Zui and Shrmp0 in the Discord for making the suggestion known to us and for our streamer friends for enjoying the game on different platforms.\nNew AllowRotation Preference! This preference was back-ported from Alpha V as some of our users have requested support for rotational options. This pref is off by default, and allows rotation for vertical based screens where the resolution/display is rotated, mainly for vertical options.\nStepLastSeconds Changes! For songs which have a multiple chart in the folder, like pump, be-mu, po-mu, kbx via osu etc, there is a slight bug in the way the game sends the \u0026rsquo;length\u0026rsquo; data to the theme/engine that counts stages at the moment. This is a long upstream bug and we are working on a fix in Alpha V, and will backport it when it is ready.\nThe issue is, if some charts are different lengths, they will show correctly in screen game-play, but only display the LONGEST length in the music wheel, or \u0026lsquo;ScreenSelectMusic\u0026rsquo; as it\u0026rsquo;s known to themers. Fixing this bug will also benefit other modes so it is something we want to work on.\nNew Installer for Windows! This release has an updated installer that better reflects the feel of OutFox, and gives us a better platform to use moving forward. We hope you like it!\nVersion 0.4.18 Fixes: KNOWN ISSUES: Alpha 4.18.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ bongo: NEW! Added new bongo mode\n❕✅ bongo: Added support for tja file chart auto-generation\n❕✅ bongo: Added support for osu file chart auto-generation\n❕✅ bongo: Added new note-skin support\n❕✅ bongo: Added editor support\n❕✅ be-mu: Fixed bug with MusicThread endlessly looping on BMS/PMS files\n❕✅ pump: Fixed mini-holds (128ths/192nds) from auto-hitting themselves\n❕✅ pump: Added new code path for hold checkpoints and mini holds so they work and are not incorrectly scored / hit according to SM5 dance\n❕✅ pump: Fixed hold display issue\n❕✅ pump: Fixed timing on holds for misses\n❕✅ pump: Fixed pump hold issue with hit timing\n❕✅ pump: Adjust pump micro-holds to be closer to what players expect\n❕✅ dance/smx/techno: Fixed bug with life on non-pump holds killing the player\n❕✅ be-mu/po-mu/gddm/gdgf: Auto switch to HQ mp4 movie BGA if available\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed title being overwritten resulting in the directory name being used\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed regex causing #TITLE to be empty\n❕✅ be-mu/po-mu/gddm/gdgf: Removed SM3.9 era cruft from the parsers\n❕✅ be-mu/po-mu/gddm/gdgf: Removed defunct Unicode conversion as we do it properly now\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed CommonSubstring overflows resulting in bad #TITLE/#SUBTITLE title\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed bad SM4 code breaking some #SUBTITLE entries\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed multi-layer backgrounds not being initialised correctly\n❕✅ be-mu/po-mu/gddm/gdgf: Removed bad converting code for #ARTIST and #GENRE\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed bug causing cache generation lagging on initial parsing on first boot\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with MusicThread endlessly looping on BM*/PMS files\n❕✅ be-mu \u0026amp; po-mu: Fixed bugs with keysounds returning empty, which fixes extended BMS/PMS\n❕✅ kbx: Fixed bug with early ending holds in osu files\n❕✅ taitai: Fixed bug with songs ending 2 notes early\n❕✅ taitai: Fixed note placement on editor\nEngine\n❕✅ Fixed function reference in ArrowEffects ❕✅ Fixed FFMPEG memory leak problems ❕✅ Fixed FFMPEG SWScale bugs ❕✅ Fixed math glitch in ArrowEffects giving us an 8-21% performance increase ❕✅ Fixed legacy code in GLAD giving us a 4-9% performance increase ❕✅ Fixed mouse warnings ❕✅ Fixed Valgrind warnings and reported leaks ❕✅ Fixed texture crash ❕✅ Fixed double buffer call in input ❕✅ Avoid needless divides in RageMath ❕✅ Added Preference to allow OutFox to rotate with the option to match OS Screen. Options are landscape, landscape flipped, portrait, and portrait flipped, which are provided by the operating system. Set AllowRotation=1 in the preference.ini if you use a vertical orientated monitor ❕✅ Added Preference to allow OutFox to have it\u0026rsquo;s window \u0026ldquo;Always On Top\u0026rdquo;. This means it will not minimise or disappear if clicked, so remember this! Set AlwaysOnTop=1 in the preference.ini to enable this. Good for streaming! ❕✅ Fixed bug with out of date CMake causing runtime issues on newer linux / windows versions ❕✅ Fixed crash with style compatibility ❕✅ Fixed bug with a race condition in the RageFile ❕✅ Fixed bug with reset rates being called in the wrong place in themes ❕✅ Fixed crash with texture creation on some files ❕✅ Fixed bug with massive memory leak in FFMPEG frame delivery ❕✅ Fixed crash with FFMPEG on some older systems ❕✅ Build brand new FFMPEG libs for all platforms ❕✅ Added new gif loader, please let us know if you have any issues with gifs ❕✅ Fixed crash with InputFilter on usb devices/pads with the new threading system ❕✅ Fixed crash with song/video loading when the song was created in linux/mac but loaded in windows ❕✅ Fixed a couple of race condition crashes in windows/linux ❕✅ Fixed small math overflow on finger pressure value ❕✅ Fixed crash with FFMPEG leaking memory ❕✅ Removed legacy assert on arcade crashing the game ❕✅ Fixed bug with missing malloc/free pair ❕✅ Fixed missing crash headers on PandaLog ❕✅ Fixed GameState calls ❕✅ Fixed bug with StepLastSeconds not being set correctly on some charts - Please note: Some songs that have multiple LENGTHS in the same folder may still display the longest chart length - This is being looked at! ❕✅ Updated splash to 4.18 ❕✅ Fixed dancing characters always being enabled when setting up the game ❕✅ Fixed bug with keysounds not being preloaded correctly ❕✅ Fixed bug with no video found not using RandomMovies ❕✅ Fixed bug with no random movies being found in the folder ❕✅ Fixed old upstream bug with song movies not being loaded ❕✅ Fixed fallback system on movies ❕✅ Fixed level cast in InputHandler ❕✅ Fixed bug with fail-type being released and not saved ❕✅ Forced false for hash-stats ❕✅ Fixed bug with plain texture drawing on AMVs ❕✅ Fixed bug with AMV vertex arrays in modern GLAD ❕✅ Fixed MiniSDL cache miss ❕✅ Fixed data stride in GL driver ❕✅ Fixed WindowTitleRef ❕✅ Fixed a few math bugs in GLAD drawing ❕✅ Increased the tween stack to 99 at community request, this allows for less stuttering and lag on lua wheels and mod-files to have a bit more breathing room for effects ❕✅ Fixed crash with URL strip functions ❕✅ Fixed bug with style incompatibility issues ❕✅ Fixed a mutex unlock within the file system ❕✅ Added a new glyph pack: latin-extended-additional and updated the Texture Font Generator to V0.36 ❕✅ Fixed missing link in soundwaves for new glyph pack ❕✅ Fixed empty names showing on display ID\u0026rsquo;s if one is not given by the OS ❕✅ Fixed crash with legacy controllers and haptic devices ❕✅ Fixed performance issue with \u0026ldquo;optimisations\u0026rdquo; made in 2019 ❕✅ Fixed display-bpm showing when \u0026lsquo;random\u0026rsquo; should be used ❕✅ Fixed crash with DebugLevel ❕✅ Fixed legacy pathing issue with GrooveStats needing info.txt with the new PandaLog system on windows ❕✅ Fixed lag on older systems with the note loading system ❕✅ Fixed crash on sprites loading with bad or not parsed resolutions ❕✅ Fixed crash with Discord core on shutdown ❕✅ Fixed crash with log shutting down faster than GameState ❕✅ Fixed memory corruption on discord core source ❕✅ Fixed upstream bug with SDL source ❕✅ Fixed autogen missing some songs ❕✅ Fixed crash on recentlog ❕✅ Fixed crash preventing use of Oni/Endless/Extended modes using player 2 controls (Reported by BSG) ❕✅ Fixed crash with corrupt backgrounds being used on Oni/Endless/Extended modes (Reported by BSG) ❕✅ Fixed Background Crash that was reported ❕✅ Fixed lag on loading window ❕✅ Fixed MiniFFMPEG parsing ❕✅ Fixed MiniFFMPEG threading ❕✅ Optimise MiniFFMPEG decoding ❕✅ Fix frame decoding algorithm ❕✅ Tweak loading speed on initial cache ❕✅ Add new updated NSIS installer with custom OutFox branding Windows 7+ (Win32 and x64):\n❕✅ Fixed bug in legacy win32 driver causing delayed response, 3% increase in performance for windows ❕✅ Fixed one of the phantom input crashes in windows ❕✅ Fixed crash when game closes ❕✅ Fixed crash on Windows Vista/7 on inserting \u0026ldquo;PSX\u0026rdquo; converters connected to a PS2 official Bemani/Pop\u0026rsquo;n controller ❕✅ Fixed bug with InputHandler on Windows 7 and 8 not being the same calls ❕✅ Modernised acio to support Windows 11 quirks ❕✅ Fixed minimaid crash due to legacy coding practices ❕✅ Removed lights drivers popping up dialogue boxes - requested by DesktopMan Linux:\n❕✅ Fixed some latency issues with profile loading/saving on SD cards on SteamDeck ❕✅ Fixed crash with udev being initialised in the incorrect manner ❕✅ Fixed build system pulling in deprecated udev library crashing 20.04-\u0026gt; distros ❕✅ Fixed evdev mismatch ❕✅ Added pref to force /dev/input/js* to be default over /dev/input/event*. Set UsingLinuxJS to 0 to set to use /dev/input/event and use evdev. ❕✅ Fixed MESA crash on OutFox modern when trying to init the display driver closes #444 ❕✅ Fixed libOpengl0 crash on newer hardware ❕✅ Fixed crash on Pop! OS, Fedora, Mint ❕✅ Fixed startup crash on ubuntu/debian with a weird log, (closes #444) ❕✅ Added new Wayland bindings so we can properly support Wayland ❕✅ Added new pipewire bindings so we can properly support pipewire moving forward ❕✅ Removed legacy code paths preventing older GPUs running properly on mesa 21.4 ❕✅ Fixed build environment and dev libs for x64 ❕✅ Fixed build commands MacOS (Universal):\n❕✅ Fixed ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash with FFMPEG on Vita/Switch ❕✅ Fixed some latency issues with profile loading/saving on SD cards on Raspberry pi Community content Noteskins ✅ New default noteskin for bongo Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 Version 0.4.17 Fixes: ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with 2 old BMS channel layouts left in by accident ❕✅ be-mu \u0026amp; po-mu: Fixed bug with endless loops on long charts ❕✅ dance: Fixed bug with hang on lights on menus in some weird cases ❕✅ dance: Fixed bug with some older charts causing a \u0026rsquo;loading\u0026rsquo; hang ❕✅ pump: New! Added AVMod scrolling mode ❕✅ pump: New! Added fourV2lane colour noteskins ❕✅ kbx: New! Added NoMines to PlayerOptionsSimple() ❕✅ kbx: Fixed bug with pump auto-gen charts not working correctly ❕✅ kickbox: Fixed bug with missing items and layouts ❕✅ kbx: Fixed crash on loading .qp and .osz packed charts Engine\n❕✅ Fixed order of draw buffers in GLAD ❕✅ Fixed order of shader buffers in GLAD ❕✅ Fixed font reload order ❕✅ Fixed legacy call causing stability issues ❕✅ New! Added DebounceCoinInputTime to screenoptionsmasterprefs ❕✅ Fixed bug with negative refCount on models and their texture counts ❕✅ Fixed bug with colour buffer so translated textures work on new GLAD driver (noteskins like cel3d used these) ❕✅ Fixed with SimpleHolds bottomcap ❕✅ Allowed FailImmediate to be saved properly ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Added New game information for 0.4.xx branch ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted Sphere mapping ❕✅ Fixed crash with missing noteskins ❕✅ Fixed 20 year old bug in RageDisplay causing stuttering on Modern GPUs ❕✅ Set Windows system to LTS and remove the alpha prefix ❕✅ Added new LTS Splash ❕✅ Fixed overflow in timing ❕✅ Added new Panda Thread system to remove deprecated RageThreads ❕✅ Added new PandaLog system to remove deprecated RageLog, crashlogs and logs are now restored ❕✅ Fixed crash on loading songs ❕✅ Fixed vsync timings ❕✅ Fixed logger crash info detail ❕✅ Fixed crashes with ReceptorArrowRow and GhostArrowRow Windows 7+ (Win32 and x64):\n❕✅ Added Windows 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Added FourV2Lane to the NSIS so folks can now use it for pump ❕✅ Fixed bug windows affinity on Windows 20H1 onwards, and Windows 11 21H1 onwards Linux:\n❕✅ Added Linux 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed minimum build environments, so linux builds are more stable MacOS (Universal):\n❕✅ Fixed bug with crash when unplugging MIDI keyboards on MacOS 12/13 ❕✅ Fixed bug with dangling pointer in the MIDI drivers, thanks M1MacGaming for the report! ❕✅ Fixed crash on Mac M2 systems with rtMIDI ❕✅ Added Mac 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed bug with new M2 Macs crashing with \u0026lsquo;unknown arch?\u0026rsquo; ❕✅ Fixed bug with string reading due to non-standard char16 support ❕✅ Fixed crash with legacy darwin code still hanging around from SM3.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash when using Roland e-drums on non-raspi distros Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 26th October 2022 \u0026ldquo;LTS Status Engaged - Damnit Jim, I\u0026rsquo;m a doctor!\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play."},{"id":2,"href":"/releases/A4.17.0/","title":"OutFox Alpha 4.17.0 Build","parent":"Release History","content":" Release Date: 4th September 2022 \u0026ldquo;LTS Status Engaged\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.\nWhat this means to you, the end user, is that if you want to not have to change builds all the time and deal with \u0026rsquo;new feature\u0026rsquo; bugs, then this branch will be maintained (for bug fixes only) in a monthly schedule until december, then will move to a quarterly release schedule until it is retired, likely next summer, but that date is very likely to change.\nThis branch is stable enough to be considered for the removal of the \u0026lsquo;alpha\u0026rsquo; prefix, and if you get anything awry do report it.\nNew PandaLog File System This month we also added a new logging system which will greatly help with any debugging needs that you have. We have changed the system, so that there is a main, a theme, and a crash-log now, and these have varying levels of detail, depending on need. If you happen to have a crash or need to debug a theme, or lua mod, this is now much easier to do.\nOn the log level preference, 0 shows full detail, where 5 will give you a reduced log-file, usually when you have everything set up and working well.\nLTS Updates: This month again has been mostly bug fixes. Some small updates and back-ports from Alpha V will always happen, as we cannot have things too unstable of course.\nKNOWN ISSUES: Alpha 4.17.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with 2 old BMS channel layouts left in by accident ❕✅ be-mu \u0026amp; po-mu: Fixed bug with endless loops on long charts ❕✅ dance: Fixed bug with hang on lights on menus in some weird cases ❕✅ dance: Fixed bug with some older charts causing a \u0026rsquo;loading\u0026rsquo; hang ❕✅ pump: New! Added AVMod scrolling mode ❕✅ pump: New! Added fourV2lane colour noteskins ❕✅ kbx: New! Added NoMines to PlayerOptionsSimple() ❕✅ kbx: Fixed bug with pump auto-gen charts not working correctly ❕✅ kickbox: Fixed bug with missing items and layouts ❕✅ kbx: Fixed crash on loading .qp and .osz packed charts Engine\n❕✅ Fixed order of draw buffers in GLAD ❕✅ Fixed order of shader buffers in GLAD ❕✅ Fixed font reload order ❕✅ Fixed legacy call causing stability issues ❕✅ New! Added DebounceCoinInputTime to screenoptionsmasterprefs ❕✅ Fixed bug with negative refCount on models and their texture counts ❕✅ Fixed bug with colour buffer so translated textures work on new GLAD driver (noteskins like cel3d used these) ❕✅ Fixed with SimpleHolds bottomcap ❕✅ Allowed FailImmediate to be saved properly ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Added New game information for 0.4.xx branch ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted Sphere mapping ❕✅ Fixed crash with missing noteskins ❕✅ Fixed 20 year old bug in RageDisplay causing stuttering on Modern GPUs ❕✅ Set Windows system to LTS and remove the alpha prefix ❕✅ Added new LTS Splash ❕✅ Fixed overflow in timing ❕✅ Added new Panda Thread system to remove deprecated RageThreads ❕✅ Added new PandaLog system to remove deprecated RageLog, crashlogs and logs are now restored ❕✅ Fixed crash on loading songs ❕✅ Fixed vsync timings ❕✅ Fixed logger crash info detail ❕✅ Fixed crashes with ReceptorArrowRow and GhostArrowRow Windows 7+ (Win32 and x64):\n❕✅ Added Windows 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Added FourV2Lane to the NSIS so folks can now use it for pump ❕✅ Fixed bug windows affinity on Windows 20H1 onwards, and Windows 11 21H1 onwards Linux:\n❕✅ Added Linux 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed minimum build environments, so linux builds are more stable MacOS (Universal):\n❕✅ Fixed bug with crash when unplugging MIDI keyboards on MacOS 12/13 ❕✅ Fixed bug with dangling pointer in the MIDI drivers, thanks M1MacGaming for the report! ❕✅ Fixed crash on Mac M2 systems with rtMIDI ❕✅ Added Mac 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed bug with new M2 Macs crashing with \u0026lsquo;unknown arch?\u0026rsquo; ❕✅ Fixed bug with string reading due to non-standard char16 support ❕✅ Fixed crash with legacy darwin code still hanging around from SM3.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash when using Roland e-drums on non-raspi distros Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 4th September 2022 \u0026ldquo;LTS Status Engaged\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch."},{"id":3,"href":"/releases/A4.16.0/","title":"OutFox Alpha 4.16.0 Build","parent":"Release History","content":" Release Date: 30th July 2022 \u0026ldquo;32 bits of this, 64 bits of that\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes. We have stabilised the way keysounds are loaded, and in this release we have also fixed hidden \u0026rsquo;lanes\u0026rsquo; that the mode supported that were not played.\nThe parsing system has also seen another update, moving away from the legacy SM5 method and utilising the new OF style of properly defining and enabling all the lanes. In the past, StepMania could only mainly play a number of sounds related to the number of columns (lanes) and as the BMS reader was created for the historic DDR in BMS style charts, we had a lot of work to do to ensure proper expansion. In this release, the mode has seen some spring cleaning, enabling full keysound range, and properly displays and parses charts as it should.\npo-mu mode now also supports Player 1 11-19 channel modes, featured in nanasi and some other simulators from the early 2010s. This is sometimes known as \u0026rsquo;extended pomu\u0026rsquo;. be-mu now can also play back the correct keysounds, including the player hidden, and any effect channels that can be used.\nCharts which did not use all the lanes for their mode, (7k o2j inspired lanes without scratch are an example) would often also not show up correctly, or be shifted by an entire column, or just parsed incorrectly. This has been fixed in this release, so 5K / 7K / 10K / 14K (no scratch) charts now read correctly. Thanks to Daniel and our friends at the BMS international community for reporting this to us.\nIntroducing 64bit Windows Builds We have been testing the 64 bit windows builds for some time, but have yet to publicly release a build alongside our normal release programme, so this month changes that! The community have heavily requested the need for a 64bit build, especially with our multi-modal support system in place, which needs more songs/packs installed. Moving forward to our Steam integration, we needed to have a 64bit build for the users available on that platform.\nMoving forward, as a lot of you will have questions;\nNo, we will not be discontinuing Win32.\nYes, we will continue to provide Win32 builds as many of you with cabs will need them\nSteam will default to the 64bit build unless your system is 32bit.\nInternal library updates This month we have done several parity pulls from our upstream dependencies, as progress has been made on a lot of the bugs we had in the past. Vorbis and our other sound readers have enjoyed several bugfixes, as well as a big jump in bugs fixed in SDL has meant performance in this build has increased, especially for those on pre-2016 hardware, although everyone should see an improvement.\nWe have begun to add a few back-ports from the Alpha V Panda collection, designed to build stability as we look to sunset Alpha 4 next Spring. Alpha 4 Officially goes into LTS this month, being limited to only stability and bug fixes only. The main development push from August will be into Alpha V.\nWe will continue to support Alpha 4.xx until March 2023, but maintaining two separate branches would be too much to deal with for such a small volunteer team, and as a result, it\u0026rsquo;ll be retired properly when Alpha V has matured and stabilised enough to be considered a suitable replacement.\nKNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with wry columns being selected by mistake on initial parsing ❕✅ be-mu \u0026amp; po-mu: Fixed bug with charts that skipped a column or player channel not loading ❕✅ be-mu \u0026amp; po-mu: Fixed bug with charts that used 2 less than the chart style being parsed wrong ❕✅ be-mu \u0026amp; po-mu: Fixed bug where wrong style would be selected for \u0026rsquo;no-scratch/no button\u0026rsquo; charts (02jam/ez2/etc) ❕✅ be-mu \u0026amp; po-mu: Fixed bug with missing hidden keysounds not playing on charts with no player \u0026lsquo;chips\u0026rsquo; in that channel ❕✅ be-mu \u0026amp; po-mu: Fixed bug with sound effects missing on player columns \u0026gt; 8 ❕✅ be-mu \u0026amp; po-mu: Fixed bug with keysounds missing on dance 4 panel / 8 panel charts ❕✅ be-mu \u0026amp; po-mu: Fixed bug with parser discarding keysounds for player lanes without a hittable note ❕✅ be-mu \u0026amp; po-mu: Fixed bug in game manager which set some 5k charts to dance ones ❕✅ po-mu: Fixed bug with some pomu9 charts parsing as pomu4 due to \u0026lsquo;beginner\u0026rsquo; charts ❕✅ po-mu: Fixed bug with some pomu9 charts not being parsed at all ❕✅ po-mu: Added the \u0026rsquo;extended pomu\u0026rsquo; pomu9 support from nanasi and other simulations ❕✅ dance: Fixed bug with some .sm files having a different length than what the chart shows ❕✅ dance: Fixed bug with some charts never ending ❕✅ dance: Fixed bug with some charts ending 10 seconds too early ❕✅ dance \u0026amp; pump: Fixed bug with LastSecond sometimes overflowing on pump/dance charts ❕✅ pump: Fixed bug with lane layouts, these are correctly set in the engine now ❕✅ pump: Fixed bug some gimmicks setting LastSecond to a ridiculously high value ❕✅ all: Changed LaneLocation in noteskins to new LaneXOffset, noteskins will need to be edited if you used this! ❕✅ all: Added theme support to allow setting of LaneXOffset ❕✅ all: Fixed bug with mismatched rotation in player/notefield ❕✅ all: Fixed bug with miscalculated reverse on backplates ❕✅ all: Fixed bug with zoom on backplates Engine\n❕✅ Fixed bug with board texture log output spam ❕✅ Fixed namespace redefinition ❕✅ Fixed bug with legacy networking breaking new code pathways ❕✅ Fixed quirk with FoxClock sometimes being called from the wrong place on old 5.0.x themes ❕✅ Fixed bug with input on NetworkOptions ❕✅ NEW Added new PandaArray and PandaVector for the optimising of x64, without breaking our 32bit legacy support ❕✅ Fixed font translation oopsie ❕✅ NEW Added new logging skeleton ❕✅ Fixed millisecond counting on FoxClock ❕✅ Fixed error in crash message ❕✅ Fixed louder audio in customise profile screens (Closes #390) ❕✅ Fixed case with lang items comparing returning 1 all the time ❕✅ Updated Discord SDK to version 3 ❕✅ Fixed 18 year old bug with dead code ❕✅ Fixed double to float math in SetPercent ❕✅ Fixed sum order in Timer ❕✅ Fixed bug in style for Def.NoteField() ❕✅ Fixed bug in column value for Def.NoteField() ❕✅ Fixed crash within Def.NoteField() ❕✅ Fixed bug in set style for columns per player in Def.NoteField() ❕✅ Fixed bug in resetting hidden notefield too early ❕✅ Added new debug info to column range error ❕✅ Fixed bug with some edge cases in Def.NoteField() ❕✅ Fixed bug on resetting notes on notefield ❕✅ Fixed bug that wasn\u0026rsquo;t applying noteskin when reloading notefield ❕✅ Fixed bug with no notes being inserted into a table on Def.NoteField() ❕✅ Fixed crash on new cache generation when timing has not been initialised ❕✅ Fixed bug with 2001 alias system causing crashes ❕✅ Fixed crash with older Vorbis files ❕✅ Fixed bug in SDL for win64 compiling ❕✅ Fixed RageSound oob crash ❕✅ Fixed crash in Enum ❕✅ Update SDL2 to 2.23.1 and add OutFox Patches ❕✅ Fixed bug in SDL mouse code ❕✅ Fixed bug with SSC Writer overflowing ❕✅ Fixed bug with SM SongLength *Windows 7+ (Win32 and x64):\n❕✅ New x64 optimisations added to the engine ❕✅ Fixed NSI quirks pulling in wrong 32bit libs on 64bit creation ❕✅ Fixed bug with missing LIBC calls in 64bit ❕✅ NEW Added new 64bit Windows Memory debug information ❕✅ NEW Added support for 64bit pacdrive (pacdrive32.dll for win32/pacdrive64.dll for x64) (Thanks Simon!) ❕✅ Fixed bug with 64bit libusb support - we still need to test python etc! ❕✅ Fixed bug with driver calls in rage breaking on x64 ❕✅ Reworked a lot of the variable memory usage for x64 ❕✅ Fixed bad libc problems compiling win32 with our build system ❕✅ Fixed missing \u0026lsquo;graphic\u0026rsquo; fonts ❕✅ Added flags for better 32/64 bit support in Windows ❕✅ Fixed bug with some 64bit code not being compiled correctly causing crashes on win7x64 ❕✅ Fixed bug with the memory value on x64 overflowing when swapping from OutFox 32bit to OutFox 64bit ❕✅ Fixed bug where the client type was not recorded in the log for debugging purposes ❕✅ Fixed bugs with win32 compiling due to MSVC quirks ❕✅ Fixed memory display for Win32/X64 on the debug stats Linux:\n❕✅ Fixed bad calls crashing new discord RPC on linux ❕✅ Fixed bad log output calls crashing older hardware MacOS (Universal):\n❕✅ NEW Updated Discord RPC to support Arm M1 MacOS (Thanks HeySora!) ❕✅ Updated Discord libs for MacOS 12.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed bad log output calls crashing older hardware ❕✅ Fixed timeout on loading on some slower SD cards Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 30th July 2022 \u0026ldquo;32 bits of this, 64 bits of that\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes."},{"id":4,"href":"/releases/A4.15.1/","title":"OutFox Alpha 4.15.1 Build","parent":"Release History","content":" Release Date: 19th June 2022 \u0026ldquo;Pump or Dump?\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set. Good job. it means that the metric ShowBoard=true has been set. You can undo this to set it to false in modes that are not gh. It may show a message at the top of the screen if you have errors enabled, this will be here just as a temporary measure to see how often that metric was being set.\n❕✅ Fixed crash on playback when revert from disk was used in the editor ❕✅ Fixed bpm \u0026gt; 100000000 to be warps again ❕✅ Fixed minefields flashing on the receptor - Closes #558 ❕✅ Fixed quirk with autoplay not ignoring release ❕✅ Fixed check with type != group - Closes #557 pump mode updates. This month has has a plethora of updates and fixes added to the pump mode; we have been working a lot in the background for this mode, but it required a lot of other things to be implemented beforehand, so it has taken a bit longer than planned to get these stuff off the ground.\nThis release has fixed a lot of the music length issues, charts ending early, charts not ending at all, charts having missing notes due to the song finishing at the incorrect time, and charts ending after 2 seconds (single) / 7 seconds (double). The reason for a lot of all these quirks was due to the charting methods used in stepf2 and stepp1 being based off an older version of StepMania which then had some custom code added by xMAx for those versions targeting pump only. We would like to thank xMAx for the insight and assistance with implementing some of those features into Project OutFox, but due to the fact we are a multi-modal simulator we had to heavily rewrite and redesign a lot of the functions and systems behind the original ideas they had.\nWe have written a custom parser for the stepf2 charts which internally is called NotesLoaderPIU. This focuses on only parsing charts using the old editor and targets pump mode, including the custom note types, and the effects and systems the mode needs. The parser uses the SSC header #VERSION: 0.81 to initialise this pathway for those charts.\nThis can lead to a few issues if you have any dance charts using version 0.81, if you get any quirks, you can just change this version number to 0.83 and it\u0026rsquo;ll use the normal SSC parser.\nNew for this alpha, we have also added the feature for charts not set to 0.81, where you can create a blank file with the title ForcePIU in the group folder, and the game will use the PIU loader automatically. This is case sensitive, so use it as written here for it to work.\nThis alpha also begins to add support for notes within braces { 0 | h | 1 | v }. At the moment only h notes are implemented, with s and v planned for the next main alpha.\npumpholds have also had a major rewrite this release as well, with the stepping and judgement logic being more appropriate to the game system, with ticks and head logic being fixed as well. There are still likely to be a few quirks with it, as it\u0026rsquo;s new code, and do let us know if there are things you notice that are incorrect.\nWarps and how they are hit were also reworked, along with some notes and rows overflowing which caused a lot of the issues on how the game calcuated some of the file/song lengths in the musicwheel and evaluation screens. The values sometimes recorded in the #LASTSECONDHINT and #MUSICLENGTH in the cache file may not actually marry up - the game has several options internally for ensuring that songs do not go crazy on time. Again, this logic is new, so there may be edge cases that need to be ironed out. If you find a chart that is not behaving, let the team know so we can see what is happening.\nThere was also a lot of older code removed from the ScreenGamePlay branches of code that we inherited from older builds (3.x era) that we have removed as it was not really doing anything, and in some cases actually caused the new pump code to not function correctly. A few tweaks were also done for older .sm and .ksf charts and we fixed a lot of the math overflows due to the way the charts were implemented into the older SM build.\nYou can have a better experience than the \u0026lsquo;default theme\u0026rsquo; by downloading the new pump theme that is being developed called Infinitesimal from here; it will be incorporated into Project OutFox as a default theme for pump coming in Alpha V. The theme is created to give you a faithful experience, using original assets and textures.\nWe hope you guys have fun with the fixes, and we have more planned in time!\nbe-mu (and po-mu) fixes We had reports of the game being very unhappy with a lot of the earlier community charts from the BMS of Fighters series, and charts mainly created before 2009, so we have fixed a few of these not being parsed correctly.\nWe also have restored the 4k \u0026ldquo;DDR in BMS\u0026rdquo; chart support that Squirrel accidentally broke when adjusting the channel support. This has now been fixed and those simfile are recognised as dance charts once again.\nThere were also several crashes with the vs modes of po-mu and be-mu as well and these have been fixed as well, so 2 player works as intended.\nrtMIDI and portMIDI driver updates We have had a few requests to reimagine the midi drivers for those with DJ controllers or systems which use channels but send the same notes. The MIDI standard states a controller should be able to do this with the client application supporting the note/channel sent data, so we have changed the way this is done to ensure we are compliant. Crossfaders and rotary controls, as well as some pitch bend triggers do have some weird quirks at the moment, but as we don\u0026rsquo;t have any modes that support these at the moment do not try to map them as a control.\nWe added up/down jog wheel support for those who play be-mu on MIDI, so this works as designed now for everyone using midi for their jogs.\n(Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu: Fixed doubles column location ❕✅ be-mu: Fixed crash with 5k versus ❕✅ be-mu: Fixed crash with legacy BMS and some BML files ❕✅ dance: Fixed left arrow for doubles ❕✅ dance: Fixed multi-row holds not being hit correctly on new hold mechanics ❕✅ dance: Fixed old .sm charts ending early ❕✅ dance: Added SetRequireStepOnHoldHeads() back for modding support ❕✅ dance: Fixed bug with missing 4k Dance support in BMS files ❕✅ ds3ddx: New Added 5 panel support! ❕✅ ds3ddx: New Added pump chart to ds3ddx smart autogen ❕✅ ds3ddx: Fixed bug with ds3ddx 5 panel not working due to invalid metrics ❕✅ ds3ddx: Fixed noteskin column locations and 5 panel ds3ddx layout ❕✅ gh: Fixed typo in last strum logic ❕✅ gh: Tweak fever in GH mode ❕✅ gh: New Added support for all sound layers in .chart and .midi files ❕✅ gh: Fixed crash with chart loading ❕✅ gh: Fixed bug with BGAs on .chart and .midi files ❕✅ gh: Fixed bug with missing loaded features on .chart and .midi files ❕✅ gh: Fixed bug with end of song evaluation crashes on .chart loader ❕✅ gh: Fixed \u0026lsquo;out of range\u0026rsquo; ghost crashes when loading .chart files ❕✅ kbx: Fixed hold mechanics ❕✅ kbx: New Added arrow noteskins via global noteskins ❕✅ kbx: Fixed kbx tick-hold damage values ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ po-mu: Fixed crash with 3/5/7/9 versus ❕✅ po-mu: Fixed icon for po-mu18 button style ❕✅ para: Fixed old .sm charts ending early ❕✅ para: New Added proper second hinting ❕✅ pump: Fixed bug with row overflow causing some charts to be 2.57 years in length ❕✅ pump: Fixed bug with notes at end of warp being unhittable ❕✅ pump: New Added classical3d+ noteskin for pump ❕✅ pump: Fixed bug with fake notes ❕✅ pump: Fixed clamp and overflow on beat locations on warps ❕✅ pump: Restored {} note support for pump ❕✅ pump: Fixed bug with mis-parsed hidden notes for pump ❕✅ pump: New Added support for \u0026lsquo;h\u0026rsquo; notes ❕✅ pump: New Added skeleton for \u0026rsquo;s\u0026rsquo; and \u0026lsquo;v\u0026rsquo; notes (coming in 0.4.16) ❕✅ pump: Fixed bug with checkpoint ticks ❕✅ pump: Fixed overflow on bpmMax ❕✅ pump: Fixed warps to behave properly once again ❕✅ pump: Fixed Musiclength overflowing ❕✅ pump: Fixed bug with pump #LASTSECOND ❕✅ pump: Fixed issue with #LASTSECONDHINT not respecting chart length correctly ❕✅ pump: New Added support for group file \u0026ldquo;ForcePIU\u0026rdquo; to force use the PIUloader ❕✅ pump: Fixed bug with hold end fixes ❕✅ pump: Fixed pump hold mechanics ❕✅ pump: Fixed bug with 2 second restart on older charts (pre 2010) ❕✅ pump: Fixed bug with 7 second restart on older .ksf charts (pre 2007) ❕✅ pump: Fixed bug with some charts ending early with extremely long \u0026rsquo;ending\u0026rsquo; holds ❕✅ pump: Fixed pump holds stepping logic to be more accurate ❕✅ pump: Removed pointless 3.x era code breaking several features ❕✅ pump: Fixed hold notes judge for pump ❕✅ pump: Fixed pump doubles layout ❕✅ pump: Fixed pump life damage on tick-holds ❕✅ pump: Removed legacy \u0026rsquo;time\u0026rsquo; methods for calculating pump length which have been broken since 2007 ❕✅ pump: Fixed dead code with \u0026lsquo;First\u0026rsquo; and \u0026lsquo;Last\u0026rsquo; second not being used except to overwrite with wrong information ❕✅ pump: Fixed bug with math in #LastSecondHint ❕✅ pump: Fixed \u0026lsquo;centre\u0026rsquo; overlapping for noteskins ❕✅ pump: Fixed missing notes on receptors ❕✅ pump: Fixed bug with Pump Holds punishing life on checkpoint misses ❕✅ taiko: Added #BALLOON .tja note parsing, count logic needs to be added ❕✅ taiko: Fixed bug with missing A \u0026amp; B notes on .tja parser ❕✅ taiko: Added Note Type A B D E to .tja parser ❕✅ taiko: Fixed Missing #NOTESDESIGNER tags in .TJA files ❕✅ all: Fixed bug with hold ticks after a warp transition forgetting there was a hold ❕✅ all: Fixed tween overflow on holds ❕✅ all: Fixed bug with clamped BPM being weird on warps and bpm calculation ❕✅ all: New Only load keysounds on chart load, to speed up caching for BMS/PMS/DTX/GDA/BGF ❕✅ all: Fixed bug in cache being overwritten ❕✅ all: Fixed bug in cache values being written to in wrong order ❕✅ all: Fixed bug in the way cache is written for charts with slightly different lengths in .SSC and .SM files ❕✅ all: Rewrote SSC/SM/PIU loaders to respect proper chart lengths, removing the old SM 3.x methods ❕✅ all: Fixed #LASTSECOND overriding the hint and breaking musiclength values ❕✅ all: Fixed order for caching last second ❕✅ all: Fixed #LASTSECONDHINT not returning a value Engine\n❕✅ Fixed bug with bHeld not functioning as expected on auto play ❕✅ Some small general optimisations of entire math pipe ❕✅ Removed legacy SSC era lua function causing errors on infinitesimal and waiei themes ❕✅ Optimised lua stack to reduce odd edge case crash ❕✅ Fixed bug with head/tail switch on simpleholds ❕✅ Fixed bug with ScreenGameplay() overlay ❕✅ Fixed bug with several edge cases of the Lua stack overflowing ❕✅ Fixed bad sleep command in judgements ❕✅ Fixed menu event sounds to be proper action events in the sound engine ❕✅ Added proper IsAction support for PlayOnce() ❕✅ Fixed Autoplay missing holds and rolls with the new mechanics ❕✅ Updated ScreenSelectGame() for ds3ddx5 and po-mu18 ❕✅ Fixed issue with missing default drivers ❕✅ Fixed crash with themes setting empty noteskins ❕✅ Fixed engine crash with some themes setting infinite fadeout ❕✅ Fixed engine crash with the notefield when some themes set infinity ❕✅ Fixed bug with Autoplay desync on SplitTiming ❕✅ Fixed file flush hang locking up the game ❕✅ Fixed SextetStream message pushing so lights work again (Thanks P.S. May) ❕✅ Fixed potential edge case with some SextetStream outputs not creating a suitable FIFO buffer (Thanks P.S. May) ❕✅ Fixed crash with difficulty selection on the engine music wheel ❕✅ Fixed buffer crash in RageSound ❕✅ Fixed memory leak in RageSound ❕✅ Fixed bad access in FLAC/Opus audio loaders ❕✅ Removed dead code in RageSoundDriver ❕✅ Fixed missing global headers ❕✅ Fixed race condition causing crashes when scrolling fast on some third party themes in the music wheel ❕✅ Added control channel support for rtMIDI ❕✅ Cut character count in MIDI button names for readability ❕✅ Fixed bug with channel mapping on LSB for rtMIDI ❕✅ Optimised MIDI inputhandler code for all systems ❕✅ Fixed bug with everything being portMIDI ❕✅ Enabled missing Pitch bend support in PortMIDI ❕✅ Added up/down jog-wheel logic to rtMIDI/portMIDI ❕✅ Added MIDI channel support for duplicate buttons ❕✅ Fixed bug with velocity on Event 0x09 ❕✅ Fixed bug with channel value overflowing on portmidi ❕✅ Fixed bug with some MIDI messages being dropped on rtmidi ❕✅ Fixed rotary/slider support on both midi drivers ❕✅ Fixed memory leak in ffmpeg context creation ❕✅ Fixed stretch check on some videos ❕✅ Added support for \u0026lsquo;AdditionalTextureHint\u0026rsquo; \u0026ldquo;stretch\u0026rdquo; in ffmpeg ❕✅ Fixed exception on rtMIDI 5.0.0 ❕✅ Fixed bug with some quirky metrics, they have been Removed ❕✅ Fixed bug where some messages are sent when not playing ❕✅ Fixed LONG_MAX overflowing on BPM ❕✅ Fixed bug with missing CustomBeatBars metric ❕✅ Fixed bug with invalid song length in ScreenGameplay returning -1 and locking up the game ❕✅ Removed Song being able to overwrite values with incorrect ones ❕✅ Removed the need for the stencil buffer which was being set up automatically ❕✅ Fixed bug with shift+F2 bringing up the debug menu ❕✅ Fixed bug with head taps showing if a minefield is present, stops taps turning into hold/roll heads ❕✅ Fixed bug with the Profile Score loading ❕✅ Fixed rtmidi\u0026rsquo;s implementation of pthreads ❕✅ Fixed crash with mutex not being unlocked causing an endless loop ❕✅ Fixed hard crash when loading game with \u0026gt;1000 songs ❕✅ Fixed bug with a buffer overflow on the sound buffer ❕✅ Added GetTotalScoresWithGrade() function \u0026ndash; This lets you get the total number of scores with the specified grade. ❕✅ Added missing noteskins on installer, thanks Mikex5 ❕✅ Fixed note group type adding on TapNoteGroupType ❕✅ Added scroll factor calculations to beat bars ❕✅ Fixed bug with missing Lift and Roll explosions on the receptor ❕✅ Fixed bug in GetFileSet() causing an endless loop on some theme calls ❕✅ Fix crash with some mutex locks not being released ❕✅ Cleaned up timing data skew on loading on some edge cases ❕✅ Fixed Ago() inaccuracy on the sound position ❕✅ Removed High Resolution Clock for systems that do not support it ❕✅ Fixed ArchHooks() returning the wrong clock() type ❕✅ Fixed GetTimeSinceStart() not being as accurate as it pretends to be ❕✅ Fixed DeltaTime from rounding the wrong way and causing a stutter ❕✅ Added new time aliases, for modding will expose to lua later ❕✅ Fixed bug with Double -\u0026gt; Float -\u0026gt; UInt64 rounding\u0026hellip; why ❕✅ Fixed bug in Lights driver where everything was 1-3ms behind the game ❕✅ Fixed bug in our \u0026lsquo;FuncTimer\u0026rsquo; where it wasn\u0026rsquo;t as accurate as it could be ❕✅ Fixed bug in TimingData for SSC caching and delivery ❕✅ Added support for new noteskin measure bars! ❕✅ Fixed bug with GIF files being automatically set as BGA ❕✅ Fixed bug with random BGA being force loaded when the file had programmed BGAs ❕✅ Fixed bug with styles not being correctly set with players available ❕✅ Fixed bug with simfiles with many scroll/stop/bpm change effects causing a crash ❕✅ Fixed crash with noteskins not honouring the datatype in lua *Editor:\n❕✅ Begin *Windows 7+:\n❕✅ Updated portMIDI for windows 11 ❕✅ Updated NSI to fix unneeded files being called ❕✅ Updated NSI on Windows to ensure proper cleanup - Thanks drumbs ❕✅ Fixed sound artifacts due to buffer underrun ❕✅ Forced legacy sampler to reduce WaveOut glitches on Windows 11 ❕✅ Fixed bug with evaluation screen crashes on windows 7/8/8.1 ❕✅ Fixed bug with BEX underflow error on windows 7 ❕✅ Fixed stack overflows in Vista and 7 ❕✅ Fixed \u0026lsquo;This program has closed unexpectedly\u0026rsquo; on Windows 7 ❕✅ Fixed Windows sound clock reporting the incorrect value ❕✅ Removed legacy Windows code that was running twice Linux:\n❕✅ Fixed size_t adjustments ❕✅ Fixed nil push on GetCurrentSong() ❕✅ Fixed sound clipping due to buffer underrun - Thanks SheepyChris ❕✅ Added a bug\u0026hellip; Underflow the sound driver to fix pulseaudio potential skipping/scratching ❕✅ Fixed compile on new rtMIDI version ❕✅ Fixed bug with MIDI drivers not returning a device on Arch/Fedora linux on 5.5+ kernels ❕✅ Fixed segfaults on non-debian distros with kernel 5.10+ ❕✅ Fixed Linux thread math overflow on Timer MacOS (Universal):\n❕✅ Updated portMIDI for MacOSX11+ ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some quirks on context generation thanks to MESA ❕✅ Fixed bug with evaluation screen crashes ❕✅ Fixed Segfaults on ARM systems Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 19th June 2022 \u0026ldquo;Pump or Dump?\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set."},{"id":5,"href":"/releases/A4.15.0/","title":"OutFox Alpha 4.15.0 Build","parent":"Release History","content":" Release Date: 14th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu: Fixed doubles column location ❕✅ be-mu: Fixed crash with 5k versus ❕✅ be-mu: Fixed crash with legacy BMS and some BML files ❕✅ dance: Fixed left arrow for doubles ❕✅ dance: Fixed multi-row holds not being hit correctly on new hold mechanics ❕✅ dance: Fixed old .sm charts ending early ❕✅ dance: Added SetRequireStepOnHoldHeads() back for modding support ❕✅ dance: Fixed bug with missing 4k Dance support in BMS files ❕✅ ds3ddx: New Added 5 panel support! ❕✅ ds3ddx: New Added pump chart to ds3ddx smart autogen ❕✅ ds3ddx: Fixed bug with ds3ddx 5 panel not working due to invalid metrics ❕✅ ds3ddx: Fixed noteskin column locations and 5 panel ds3ddx layout ❕✅ gh: Fixed typo in last strum logic ❕✅ gh: Tweak fever in GH mode ❕✅ gh: New Added support for all sound layers in .chart and .midi files ❕✅ gh: Fixed crash with chart loading ❕✅ gh: Fixed bug with BGAs on .chart and .midi files ❕✅ gh: Fixed bug with missing loaded features on .chart and .midi files ❕✅ gh: Fixed bug with end of song evaluation crashes on .chart loader ❕✅ gh: Fixed \u0026lsquo;out of range\u0026rsquo; ghost crashes when loading .chart files ❕✅ kbx: Fixed hold mechanics ❕✅ kbx: New Added arrow noteskins via global noteskins ❕✅ kbx: Fixed kbx tick-hold damage values ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ po-mu: Fixed crash with 3/5/7/9 versus ❕✅ po-mu: Fixed icon for po-mu18 button style ❕✅ para: Fixed old .sm charts ending early ❕✅ para: New Added proper second hinting ❕✅ pump: Fixed bug with row overflow causing some charts to be 2.57 years in length ❕✅ pump: Fixed bug with notes at end of warp being unhittable ❕✅ pump: New Added classical3d+ noteskin for pump ❕✅ pump: Fixed bug with fake notes ❕✅ pump: Fixed clamp and overflow on beat locations on warps ❕✅ pump: Restored {} note support for pump ❕✅ pump: Fixed bug with mis-parsed hidden notes for pump ❕✅ pump: New Added support for \u0026lsquo;h\u0026rsquo; notes ❕✅ pump: New Added skeleton for \u0026rsquo;s\u0026rsquo; and \u0026lsquo;v\u0026rsquo; notes (coming in 0.4.16) ❕✅ pump: Fixed bug with checkpoint ticks ❕✅ pump: Fixed overflow on bpmMax ❕✅ pump: Fixed warps to behave properly once again ❕✅ pump: Fixed Musiclength overflowing ❕✅ pump: Fixed bug with pump #LASTSECOND ❕✅ pump: Fixed issue with #LASTSECONDHINT not respecting chart length correctly ❕✅ pump: New Added support for group file \u0026ldquo;ForcePIU\u0026rdquo; to force use the PIUloader ❕✅ pump: Fixed bug with hold end fixes ❕✅ pump: Fixed pump hold mechanics ❕✅ pump: Fixed bug with 2 second restart on older charts (pre 2010) ❕✅ pump: Fixed bug with 7 second restart on older .ksf charts (pre 2007) ❕✅ pump: Fixed bug with some charts ending early with extremely long \u0026rsquo;ending\u0026rsquo; holds ❕✅ pump: Fixed pump holds stepping logic to be more accurate ❕✅ pump: Removed pointless 3.x era code breaking several features ❕✅ pump: Fixed hold notes judge for pump ❕✅ pump: Fixed pump doubles layout ❕✅ pump: Fixed pump life damage on tick-holds ❕✅ pump: Removed legacy \u0026rsquo;time\u0026rsquo; methods for calculating pump length which have been broken since 2007 ❕✅ pump: Fixed dead code with \u0026lsquo;First\u0026rsquo; and \u0026lsquo;Last\u0026rsquo; second not being used except to overwrite with wrong information ❕✅ pump: Fixed bug with math in #LastSecondHint ❕✅ pump: Fixed \u0026lsquo;centre\u0026rsquo; overlapping for noteskins ❕✅ pump: Fixed missing notes on receptors ❕✅ pump: Fixed bug with Pump Holds punishing life on checkpoint misses ❕✅ taiko: Added #BALLOON .tja note parsing, count logic needs to be added ❕✅ taiko: Fixed bug with missing A \u0026amp; B notes on .tja parser ❕✅ taiko: Added Note Type A B D E to .tja parser ❕✅ taiko: Fixed Missing #NOTESDESIGNER tags in .TJA files ❕✅ all: Fixed bug with hold ticks after a warp transition forgetting there was a hold ❕✅ all: Fixed tween overflow on holds ❕✅ all: Fixed bug with clamped BPM being weird on warps and bpm calculation ❕✅ all: New Only load keysounds on chart load, to speed up caching for BMS/PMS/DTX/GDA/BGF ❕✅ all: Fixed bug in cache being overwritten ❕✅ all: Fixed bug in cache values being written to in wrong order ❕✅ all: Fixed bug in the way cache is written for charts with slightly different lengths in .SSC and .SM files ❕✅ all: Rewrote SSC/SM/PIU loaders to respect proper chart lengths, removing the old SM 3.x methods ❕✅ all: Fixed #LASTSECOND overriding the hint and breaking musiclength values ❕✅ all: Fixed order for caching last second ❕✅ all: Fixed #LASTSECONDHINT not returning a value Engine\n❕✅ Fixed bug with bHeld not functioning as expected on auto play ❕✅ Some small general optimisations of entire math pipe ❕✅ Removed legacy SSC era lua function causing errors on infinitesimal and waiei themes ❕✅ Optimised lua stack to reduce odd edge case crash ❕✅ Fixed bug with head/tail switch on simpleholds ❕✅ Fixed bug with ScreenGameplay() overlay ❕✅ Fixed bug with several edge cases of the Lua stack overflowing ❕✅ Fixed bad sleep command in judgements ❕✅ Fixed menu event sounds to be proper action events in the sound engine ❕✅ Added proper IsAction support for PlayOnce() ❕✅ Fixed Autoplay missing holds and rolls with the new mechanics ❕✅ Updated ScreenSelectGame() for ds3ddx5 and po-mu18 ❕✅ Fixed issue with missing default drivers ❕✅ Fixed crash with themes setting empty noteskins ❕✅ Fixed engine crash with some themes setting infinite fadeout ❕✅ Fixed engine crash with the notefield when some themes set infinity ❕✅ Fixed bug with Autoplay desync on SplitTiming ❕✅ Fixed file flush hang locking up the game ❕✅ Fixed SextetStream message pushing so lights work again (Thanks P.S. May) ❕✅ Fixed potential edge case with some SextetStream outputs not creating a suitable FIFO buffer (Thanks P.S. May) ❕✅ Fixed crash with difficulty selection on the engine music wheel ❕✅ Fixed buffer crash in RageSound ❕✅ Fixed memory leak in RageSound ❕✅ Fixed bad access in FLAC/Opus audio loaders ❕✅ Removed dead code in RageSoundDriver ❕✅ Fixed missing global headers ❕✅ Fixed race condition causing crashes when scrolling fast on some third party themes in the music wheel ❕✅ Added control channel support for rtMIDI ❕✅ Cut character count in MIDI button names for readability ❕✅ Fixed bug with channel mapping on LSB for rtMIDI ❕✅ Optimised MIDI inputhandler code for all systems ❕✅ Fixed bug with everything being portMIDI ❕✅ Enabled missing Pitch bend support in PortMIDI ❕✅ Added up/down jog-wheel logic to rtMIDI/portMIDI ❕✅ Added MIDI channel support for duplicate buttons ❕✅ Fixed bug with velocity on Event 0x09 ❕✅ Fixed bug with channel value overflowing on portmidi ❕✅ Fixed bug with some MIDI messages being dropped on rtmidi ❕✅ Fixed rotary/slider support on both midi drivers ❕✅ Fixed memory leak in ffmpeg context creation ❕✅ Fixed stretch check on some videos ❕✅ Added support for \u0026lsquo;AdditionalTextureHint\u0026rsquo; \u0026ldquo;stretch\u0026rdquo; in ffmpeg ❕✅ Fixed exception on rtMIDI 5.0.0 ❕✅ Fixed bug with some quirky metrics, they have been Removed ❕✅ Fixed bug where some messages are sent when not playing ❕✅ Fixed LONG_MAX overflowing on BPM ❕✅ Fixed bug with missing CustomBeatBars metric ❕✅ Fixed bug with invalid song length in ScreenGameplay returning -1 and locking up the game ❕✅ Removed Song being able to overwrite values with incorrect ones ❕✅ Removed the need for the stencil buffer which was being set up automatically ❕✅ Fixed bug with shift+F2 bringing up the debug menu ❕✅ Fixed bug with head taps showing if a minefield is present, stops taps turning into hold/roll heads ❕✅ Fixed bug with the Profile Score loading ❕✅ Fixed rtmidi\u0026rsquo;s implementation of pthreads ❕✅ Fixed crash with mutex not being unlocked causing an endless loop ❕✅ Fixed hard crash when loading game with \u0026gt;1000 songs ❕✅ Fixed bug with a buffer overflow on the sound buffer ❕✅ Added GetTotalScoresWithGrade() function \u0026ndash; This lets you get the total number of scores with the specified grade. ❕✅ Added missing noteskins on installer, thanks Mikex5 ❕✅ Fixed note group type adding on TapNoteGroupType ❕✅ Added scroll factor calculations to beat bars ❕✅ Fixed bug with missing Lift and Roll explosions on the receptor ❕✅ Fixed bug in GetFileSet() causing an endless loop on some theme calls ❕✅ Fix crash with some mutex locks not being released ❕✅ Cleaned up timing data skew on loading on some edge cases ❕✅ Fixed Ago() inaccuracy on the sound position ❕✅ Removed High Resolution Clock for systems that do not support it ❕✅ Fixed ArchHooks() returning the wrong clock() type ❕✅ Fixed GetTimeSinceStart() not being as accurate as it pretends to be ❕✅ Fixed DeltaTime from rounding the wrong way and causing a stutter ❕✅ Added new time aliases, for modding will expose to lua later ❕✅ Fixed bug with Double -\u0026gt; Float -\u0026gt; UInt64 rounding\u0026hellip; why ❕✅ Fixed bug in Lights driver where everything was 1-3ms behind the game ❕✅ Fixed bug in our \u0026lsquo;FuncTimer\u0026rsquo; where it wasn\u0026rsquo;t as accurate as it could be ❕✅ Fixed bug in TimingData for SSC caching and delivery ❕✅ Added support for new noteskin measure bars! ❕✅ Fixed bug with GIF files being automatically set as BGA ❕✅ Fixed bug with random BGA being force loaded when the file had programmed BGAs ❕✅ Fixed bug with styles not being correctly set with players available ❕✅ Fixed bug with simfiles with many scroll/stop/bpm change effects causing a crash ❕✅ Fixed crash with noteskins not honouring the datatype in lua *Windows 7+:\n❕✅ Updated portMIDI for windows 11 ❕✅ Updated NSI to fix unneeded files being called ❕✅ Updated NSI on Windows to ensure proper cleanup - Thanks drumbs ❕✅ Fixed sound artifacts due to buffer underrun ❕✅ Forced legacy sampler to reduce WaveOut glitches on Windows 11 ❕✅ Fixed bug with evaluation screen crashes on windows 7/8/8.1 ❕✅ Fixed bug with BEX underflow error on windows 7 ❕✅ Fixed stack overflows in Vista and 7 ❕✅ Fixed \u0026lsquo;This program has closed unexpectedly\u0026rsquo; on Windows 7 ❕✅ Fixed Windows sound clock reporting the incorrect value ❕✅ Removed legacy Windows code that was running twice Linux:\n❕✅ Fixed size_t adjustments ❕✅ Fixed nil push on GetCurrentSong() ❕✅ Fixed sound clipping due to buffer underrun - Thanks SheepyChris ❕✅ Added a bug\u0026hellip; Underflow the sound driver to fix pulseaudio potential skipping/scratching ❕✅ Fixed compile on new rtMIDI version ❕✅ Fixed bug with MIDI drivers not returning a device on Arch/Fedora linux on 5.5+ kernels ❕✅ Fixed segfaults on non-debian distros with kernel 5.10+ ❕✅ Fixed Linux thread math overflow on Timer MacOS (Universal):\n❕✅ Updated portMIDI for MacOSX11+ ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some quirks on context generation thanks to MESA ❕✅ Fixed bug with evaluation screen crashes ❕✅ Fixed Segfaults on ARM systems Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 14th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!"},{"id":6,"href":"/releases/A4.14.0/","title":"OutFox Alpha 4.14.0 Build","parent":"Release History","content":" Release Date: 25th March 2022 \u0026ldquo;You\u0026rsquo;ve upset the cat!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.xx versioning, leaving the 5.3 alone. Following consultation with ensuring we are compliant with our binary signing requirements, we have decided to drop this long version number and just use the 0.x.y.z which is a lot easier to read.\nInternally we were using the alpha builds like this to simplify our own understanding, and it seemed the easiest way to move forward. This build is formally known as 0.4.14, and we will be dropping versioning from folders and suchlike moving onward. We have removed the final parts that we needed for validation, so we are pleased to announce signed binaries for Windows will be available in the summer.\nThemes or systems which check for \u0026lsquo;StepMania\u0026rsquo; in the product family may fail to find OutFox until updated, we have reached out to the developers of Simply Love and let them know about our updates and they have let us know it will be updated in due course.\nIf you are using using Simply Love please follow the guide on the GitHub to replace the files in the mean time. Announcing a cross platform ParaPara Paradise Driver! Thanks to eks-d parapara for the image! (https://paramania.kirakira.org/ has an OutFox supported theme!) Following an overwhelming demand from the community, we have rewritten the old legacy PPP controller driver from the PS2 to work on all devices OutFox supports.\nTo use this new driver on your Mac or linux machine, go to your preferences.ini and use one of the following to get your controller to work:\nPlease Note: You will need to add one of these so your controller will work!\nWindows\n(para only): InputDrivers=para,legacy,minisdl (para and rtmidi): InputDrivers=para,rtmidi,legacy,minisdl Mac OS (M1 and Intel)\n(para only): InputDrivers=para,SDL (para and rtmidi): InputDrivers=para,rtmidi,SDL Linux (x86_64/ARM/Raspberry Pi)\n(para only): InputDrivers=para,SDL (para and rtmidi): InputDrivers=para,rtmidi,SDL The controller must be plugged in before you start OutFox, and it is recommended for M1 based Macs you have a USB C hub that has built in USB2 ports. This will give you the greatest compatibility with older hardware. Do send us your ParaPara setups, we\u0026rsquo;d love to see them!\nKNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ taiko: New Added TJA parser support! ❕✅ taiko: New Added TJA note type support ❕✅ taiko: New Added TJA #BPM adjustment support ❕✅ taiko: New Added math and base 4 measure support to TJA parser ❕✅ taiko: New Added multi-chart support in TJA parser ❕✅ taiko: New Added OTO taiko SV (scroll gimmick) support ❕✅ taiko: New Added OTO taiko multi-chart in one folder support ❕✅ taiko: Fixed crash in TJA parser on some linux distros ❕✅ taiko: Fixed ratio overflow on OTO taiko mode ❕✅ taiko: Fixed crash with older community TJA files (pre 2014 era) ❕✅ taiko: Adjusted drum hitsounds on taitai noteskins to be more accurate ❕✅ taiko: Adjusted the drum hitsounds to be less laggy when rapid hitting ❕✅ taiko: Finished OTO Taiko Note Parsing (we now can read everything, though holds/balloon are single notes at the moment) ❕✅ pump: Fixed PIU loader crash ❕✅ pump: Fixed bug with some .SM and .SSC breaking the cache ❕✅ pump: Fixed bug with pump (.sm/.ssc/.ksh) files snapping to completed on start ❕✅ pump: Fixed bug with pump charts showing a negative song length ❕✅ pump: Fixed bug with pump charts being set a 2 second chart length ❕✅ pump: Fixed bug with \u0026rsquo;extended\u0026rsquo; pump charts (longer than 9:59) not being parsed ❕✅ pump: Fixed bug with pump charts with no set song length from crashing the game ❕✅ pump: Fixed bug with pump charts being set an invalid steps seconds value ❕✅ pump: New Added new skeleton for AV mod, math to be added, (not finished yet) ❕✅ pump: Fixed hashing being called with autogensteps causing lag on pump and dance wheels ❕✅ pump: Fixed legacy bug with the KSF loader causing songs to end early ❕✅ kbx: New Added OTO mania SV (scroll gimmick) support, Warps to come ❕✅ kbx: Fixed bug with bad osu charts crashing the game (Thanks Yuki) ❕✅ kbx: Fixed initial scroll flags for o!mania charts ❕✅ kbx: Fixed inverse math algorithm on gimmicks so they aren\u0026rsquo;t back to front ❕✅ kbx: Fixed \u0026lsquo;correction\u0026rsquo; and \u0026lsquo;chapter\u0026rsquo; timing points on o!mania charts (Thanks Matthew - The Lagger) ❕✅ kbx: Fixed lane math overflow in the QUA parser ❕✅ kbx: Fixed some 7K holds being skipped in the QUA parser ❕✅ kbx: New Added SV support to QUA parser ❕✅ kbx: Fixed songs with different steps lengths from ending at odd times ❕✅ kbx: Fixed math overflow on some o!mania gimmicks ❕✅ kbx: Fixed math for OTO parser, scroll gimmicks and such now work ❕✅ kbx: New Added scroll factor support to QUA parser ❕✅ kbx: Fixed crash on OTO/QUA parsing of osu/osz and qua/qp files when loading a mix of archives and non-archives ❕✅ kbx: Fixed punishment with hold mashing ❕✅ kbx: Made lift holds less harsh ❕✅ kbx: New Added KBX 16/17/18/19 lane support! ❕✅ kbx: Fixed noteskin support for new KBX 16-19 lanes ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ para: New cross platform Para Para Paradise Controller Driver! ❕✅ stepstage: Make stepstage available on editor ❕✅ dance: Fixed bug with Hashsplit and SSC hashing ❕✅ dance: Fixed quirk with some SSC cache files for old SM5 era modfiles ❕✅ dance: New Rewrote and optimised the SSC loader ❕✅ dance: Fixed Memory leak with writing SSC files for the cache ❕✅ dance: Fixed potential infinite loop on some dance songs causing crash ❕✅ dance: Fixed crash with dance charts when selecting different styles ❕✅ dance: Fixed scoring and correct ITG windows in timing.lua ❕✅ dance: Fixed DDR Ace timing in timing.lua ❕✅ dance: Fixed bug with missing split-timing checks ❕✅ dance/smx: Fixed \u0026lsquo;REQUIRE_STEP_ON_MINES\u0026rsquo; logic, thanks to din ❕✅ techno: Fixed crash when using 4k 5k 8k 9k interchangeably ❕✅ all: Fixed Notedata memory leak on SSC files when initial loading ❕✅ all: Fixed crash on parsing when loading more than 9000 SSC files ❕✅ all: Fixed crash on parsing when loading more than 3000 non-SSC files ❕✅ all: Fixed crash on music wheel when going through SSC/SM files ❕✅ all: Fixed bug with some crashes on non-SSC files having no or missing preview songs/sounds ❕✅ all: Fixed bug with some po-mu/be-mu/gddm/pump/ charts ending after \u0026lt; 2 seconds of starting ❕✅ all: Fixed bug with songlength math overflow on some pump/osu charts ❕✅ gh: Allowed gh charts to be genned for styles ❕✅ po-mu: Fixed crash when trying to play with different key values. Keysounds will be weird, as there needs to be new logic for this as it is new ground ❕✅ po-mu: Fixed playback on 3 lane charts being shifted to channel 12 ❕✅ po-mu: Fixed parsing of 3 lane charts ❕✅ po-mu: New pomu-nine-double support ❕✅ po-mu: New pomu-nine-double native parsing from BME/PMS files ❕✅ po-mu: New pomu-nine-double Mines and Long Note support (extended PMS spec) ❕✅ be-mu: Fixed crash when playing 5k and 7k at the same time Engine\n❕✅ Fixed Charts with similar difficulties in a folder having scores assigned to them weirdly, due to the old SM paradigm. ❕✅ Fixed Charts with different song lengths being finished at wrong times due to the audio of the main song being incorrect. ❕✅ New OutFox branded init screens, bye bye Team Rizu! ❕✅ Fixed selection reset on 2 player confirmation on the music wheel, closes #489 ❕✅ Added TimingData support to \u0026lsquo;PlayMusicPart()\u0026rsquo; ❕✅ Fix missing Localised \u0026lsquo;Exit\u0026rsquo; on OptionsRow - will need to be added to the other langs ❕✅ Fixed bug with some sextet streams missing ❕✅ Fixed bug with chart audio being forced on selected song ❕✅ Allowed PlayerState() access from Def.NoteField() ❕✅ Added new mouse support to miniSDL\u0026rsquo;s aux handler ❕✅ Fixed missing finger presses ❕✅ Fixed alignment issues with Boxy noteskins ❕✅ New Added Cubeism Framework ❕✅ Fixed Excessive memory use on parsing songs - wipe cache and prefs for this one! ❕✅ Added new minisdl aux driver access to lua for proper mouse/touchscreen support ❕✅ Add new modstring aliases ❕✅ New Added new CA (ConstAverage) mod to the game ❕✅ New Added new skeleton for CX (ConstMultiplier) mod, math to be added, (not finished yet) ❕✅ Fixed double note loading being called causing lag on music wheels ❕✅ Fixed bug with bad AMod initialisation ❕✅ Fixed bug with crashing on enumhelper ❕✅ Fixed Mismatched charthash generation ❕✅ Fixed cache not being generated with hashkeys that the game recognised ❕✅ Fixed hash generation on SSC ❕✅ Fixed bug in loading window that slowed down chart loading and memory use ❕✅ Fixed bug with Centered1Player on course mode ❕✅ Fixed bug with missing BGA calls on several notes loaders ❕✅ Fixed bug with FGA/BGA data being written to cache but not being used ❕✅ Fixed missing FG commands that broke a few modfiles ❕✅ Fixed a few things with textentry (highlight/clipboard/etc) ❕✅ Fixed bug with font size on music wheel for subtitle ❕✅ Fixed bug with BG/FG screens not being correctly called on some mod files ❕✅ Updated libjson (SM#2188) and added OutFox patches ❕✅ Fixed TextEntry overflow support ❕✅ New Added GameSoundManager:GetMusicPath() ❕✅ Fixed bug with odd offsets and fSongBeat() at the beginning of gameplay ❕✅ New Added TextEntry:Clear() ❕✅ Fixed bug with missing mine count on modes other than dance ❕✅ Added FoxClock() snippets for frame calc ❕✅ Added new max()/min() functions to support newer types ❕✅ Fixed math with flow operations causing stutters on newer gpu drivers (500+ for nvidia/21.6+ for AMD) ❕✅ Fixed CMake issues and we are now 0.4.14 - 5.3 is gone ❕✅ Fixed bug with root access - #SM2187 ❕✅ Fixed bug with sorting by song length returning garbage - #SM2192 ❕✅ Fixed bug with resorting sections when not required - #SM2193 ❕✅ Fixed bug with not reporting \u0026lsquo;OutFox\u0026rsquo; in PRODUCTFAMILY ❕✅ Fixed bug in BeatBarsDistanceDraw() for reverse points *Editor:\n❕✅ Begin work on new side information text layout ❕✅ Added option to toggle chart autosaving ❕✅ Added \u0026ldquo;Set Current Section as Attack Time\u0026rdquo; ❕✅ Fixed Stop highlight colour ❕✅ Restored text information for this release ❕✅ Increased editor movement speed when holding button ❕✅ Moved \u0026ldquo;Record Mode Lean In\u0026rdquo; and \u0026ldquo;Clear Prompt Threshold\u0026rdquo; to Editor settings. ❕✅ Marginal system for beat bar drawing during editing (To become a setting later) ❕✅ Changed button combination for Screenshot in MacOS (CMD + F12) ❕✅ Converted Record Note data into a pointer, fixes the missing visual representation during record. ❕✅ Added notefield zoom scaling via the mouse wheel ❕✅ Added support for adding Note Group types for Taitai and StepStage ❕ Reverted change for play selection ❕✅ Meter editing in chart now support floating numbers ❕ Added Lua hooks: IsStepTiming, SetSnapMode, ChangeToStepTiming, SetHighlightSelection, SetBPM, SetStop, SetDelay, SetWarp, SetLabel, SetTickCount, SetScroll, GetEditorPosition Note: These Lua hooks can be subject to change. *Windows 7+:\n❕✅ Fixed bug in ParaPara Controller on windows 11 not detecting input ❕✅ Removed deprecated Win32_Para driver ❕✅ Removed broken Legacy Mouse from Win32_Legacy Driver ❕✅ Fixed bug with Windows 10 \u0026amp; 11 low level window potentially trying to triple buffer due to latest update ❕✅ Fixed bug with Focus glitches on win32 legacy due to Nvidia 5xx drivers ❕✅ Fixed bug with Windows 98 era calls being used for some window options ❕✅ Fixed 2004 era bug with redundant code causing stutters on windows 11 ❕✅ Fixed bugs with missing delete commands in uninstaller. Closes #498 Linux:\n❕✅ Fixed GLAD static libraries for Linux MacOS (Universal):\n❕✅ Fixed bug with M1 Macs forgetting the para controller is plugged in ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed GLAD generation causing issues on RPi 3/4 Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 25th March 2022 \u0026ldquo;You\u0026rsquo;ve upset the cat!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4."},{"id":7,"href":"/releases/A4.13.0/","title":"OutFox Alpha 4.13.0 Build","parent":"Release History","content":" Release Date: 9th February 2022 \u0026ldquo;Back to the Normality\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000.\nThis game featured quite a unique layout, having 3 panels of input per column. The game used a dual column layout for the \u0026rsquo;normal\u0026rsquo; mode, which had 6 inputs total, with the left hand side of the pad being for left, and right side being right. There is a much easier \u0026lsquo;single\u0026rsquo; mode where all 6 pads are placed on a single column, but only the colour is needed to be hit, with the \u0026rsquo;left or right\u0026rsquo; side being ignored.\nThere was a home release of this game called Stepping Selection released for the PlayStation 2, and naturally, Project OutFox supports the use of this pad via the usual adapter, so you can play at home on the original dance mat.\nI took a photo of my dance mat as there weren\u0026rsquo;t many clear photos online - Squirrel The mode supports autoGen and can use dance/pump/kb6 charts to great success, and does support modfile cross-generation, so you can see the cool effects in this mode.\nWhat about other dance pads? If you have a dance pad with has the input buttons there are noteskins to help remind you of this so you can play this mode with the far right column, and far left:\nThis can allow you to play on any 9/8 panel mat made for other games with this mode, using Top Left / Left / Bottom Left and Top Right / Right / Bottom Right for the inputs.\nAnnouncing OutFox Serenity Volume 1 Winter Update! Welcome to OutFox Serenity, the official community song pack project for Project OutFox! Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the extended mode support of Project OutFox by offering charts for multiple game types beyond just 4-key styles.\nInitially released on August 27, 2021, OutFox Serenity Volume I featured music by Aspid Cat, Drazil, Jack5, Matduke, mmry, PizeroFox, Seo, and Sevish. Alongside 4-panel dance and 5-panel pump charts, most of its songs also have be-mu, po-mu, techno (8- and 9-panel), gddm, gdgf, and gh charts.\nThe Winter Update to OutFox Serenity Volume I features three new songs by DJ Megas, Matduke and Pekoneko (ペコネコ). It also includes changes to some of the existing songs from Volume 1, including additional charts, and key-sounded be-mu/po-mu and gh charts for selected songs.\nFind out more here: https://github.com/TeamRizu/OutFox-Serenity/releases/latest\nTo download the game including the Serenity Pack, look for the download for your system which has Serenity in the Filename. KNOWN ISSUES: Alpha 4.13.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE Charts with similar difficulties in a folder will have scores assigned to them weirdly, due to the old SM paradigm. This will be fixed in a future update. ALL: Mode Specific\n❕✅ dance/smx: New Added the Mine Fix for dance and smx modes only so it doesn\u0026rsquo;t break others (theme metric - EnableMineFix) ❕✅ stepstage: New stepstage Game mode, based on Jaleco\u0026rsquo;s arcade/ps2 game from 2000 ❕✅ dance: New 3 panel versus / double style ❕✅ dance: New solo versus / double style ❕✅ ds3ddx: New ds3ddx versus / double style ❕✅ stepstage: New Added support for combined notes ❕✅ smx: New OutFox-note and OutFox-ITG noteskins ❕✅ kbx: Fix kbx noteskin display for keyboard/controller ❕✅ kbx: Add XInput buttons to kbx noteskin support ❕✅ kbx: Support .qua/.qp files (no time signature changes yet) ❕✅ kbx: New QUA parser! ( for KB4 and KB7 support!) ❕✅ kbx: Fixed hash system for OTO \u0026lsquo;many charts in a folder\u0026rsquo; system for KBX ❕✅ kbx: Fixed checkpoint scoring for KBX ❕✅ kbx: New \u0026ldquo;exactbar\u0026rdquo; noteskin for kbx ❕✅ smx: Fix Stop / BPM colours on the measure lines ❕✅ kbx: Lessen the harshness on scoring on kbx mode ❕✅ kbx: Restore AutoPlay to POsimple (kbx mode) ❕✅ ALL: Finally fix GetHash() - fixes edit/same difficulty in folder scoring applying to all charts for that song ❕✅ ds3ddx: Fixed bug with layers and default noteskins ❕✅ be-mu/po-mu: Fixed options menu crash (Closes #434) ❕✅ be-mu/po-mu/gddm: Fixed overflow with files that have 1280+ keysounds ❕✅ be-mu/po-mu: Fixed crash with missing noteskin metrics ❕✅ be-mu/po-mu: Fixed hang on with some charts (Closes #434) ❕✅ taitai: New basic taiko parsing on .osu files! ❕✅ stepstage: Fixed support for the unique display mode on stepstage ❕✅ stepstage: New compat-PS/XB noteskins for those with normal 8/9 panel dance mats ❕✅ djh: Added DJH 2 scratch support (future mode) ❕✅ djh: Added DJH controller support (future mode) ❕✅ ds3ddx: New ds3ddx noteskin ❕✅ stepstage: New StepStage noteskins ❕✅ gdgf: New gdgf noteskins ❕✅ smx: New smx noteskins ❕✅ ds3ddx: New and fixed ds3ddx sprites ❕✅ stepstage: Fixed missing strings ❕✅ kbx: Fixed bug where the mode did not select AutoSetStyle ❕✅ pump: Fixed piu loader overflow ❕✅ pump: Fixed piu loader rare recursive bug crashing the game (thanks notnola) ❕✅ ds3ddx: Fixed crash with ds3ddx on screen demonstration Engine\n❕✅ Sync OutFox to match the support added in 0.35 of the TFG, adding Latin extended C and D ❕✅ Add new noto medium fonts for added Latin Ext C/D ❕✅ Add new noto semibold fonts for added Latin Ext C/D ❕✅ Fixed bug with unloading font maps ❕✅ Fixed bug with unloading song audio files (Closes #110) ❕✅ Fixed bug with noteskin caching on gamestate refresh ❕✅ New cpr libraries ❕✅ Fixed issue with cmake trying to set the wrong path ❕✅ New OFMath lua namespace for better optimised math options ❕✅ Load noteskins for non mod-files ❕✅ Remove deprecated openSSL libraries ❕✅ Fix long overdue NSKINMAN removal and bugs ❕✅ Fix issues with no options on global skins ❕✅ Work on the new TJA parser (still in progress) ❕✅ Fix quirk with noteskin loading ❕✅ Add reverse support for retrobar noteskin ❕✅ Fixed crash with def.notefield() in editor ❕✅ Fixed input passthrough with def.notefield() and AutoPlay ❕✅ Added new LuaLife which can override internal life systems for modes which need custom ones ❕✅ Added feature to set score limit ❕✅ Enable new checkpoint scoring support ❕✅ Added new \u0026lsquo;GaveUp()\u0026rsquo; lua feature to let themes know when a file is given up by holding start ❕✅ Stop quirk with song preview breaking ❕✅ Added lua exposure to m_iMenuStackSelection ❕✅ Add new Lua Math functions ❕✅ Add new Lua Random Functions, though these need optimising ❕✅ New UpdateMeshPosition() for def.model ❕✅ Fix noteskin recursive depth to level 9 so older noteskins work ❕✅ Add new faster math functions, namespace tbc ❕✅ Add new faster sine/cosine math ❕✅ Re-enable pixel fonts (restore setexturefiltering() features without blur) (Closes #450) ❕✅ Fixed erroneous half-width math ❕✅ Change \u0026lsquo;song length seconds\u0026rsquo; to SM5.x behaviour for theme compatibility and to fix older modfiles ❕✅ Fixed crash to desktop on loading songs (Closes #448) ❕✅ Fixed crash to desktop on loading cached songs ❕✅ Fixed Encoding crash on loading window on ZIV (pre 2019) song packs ❕✅ Fixed Korean characters causing a CTD on loading window ❕✅ Fixed encoding cache issues on song loading ❕✅ Fixed cache crashing on FS corruption/bad sim files/audio (Closes #449) ❕✅ Fixed crashes on any bad encoded file (Closes #436) ❕✅ Fixed crash with badly unzipped file ❕✅ Fixed new filesystem loader crashing on race condition (Closes #452) ❕✅ Fixed crash/hang with keysounds loading erratically. ❕✅ Fixed crash on thread trying to load things that weren\u0026rsquo;t there ❕✅ Fixed crash with overflow on file size if the file was 0 bytes ❕✅ Fixed hash data reloading lag spikes ❕✅ Fixed music wheel \u0026rsquo;lag\u0026rsquo; due to note data being loaded on song select ❕✅ Fixed massive lag spikes on all music wheels due to legacy SM5.x method conflicting with new code pathways ❕✅ Restored 3.x era legacy \u0026lsquo;StepsTypes\u0026rsquo; iidx/bm/para if you spot any that do not work ping Squirrel ❕✅ Fixed crash with \u0026lsquo;unknown\u0026rsquo; StepsTypes breaking on 3.x SM files ❕✅ Fixed crash on some noteskins asking for game/currentgame/currentstyle information before the game is available ❕✅ Fixed another crash with noteskins on legacy/vintage hardware (Closes #476) ❕✅ Fixed bug with autogen on modes ❕✅ Fixed player 2 crash on some modes ❕✅ Added new rate/pitch theme-metric for legacy theme support ❕✅ Fixed Initial screen animations on themes lower than 480p ❕✅ Editor: Fixed crash on pressing Insert key on an incomplete marker selection ❕✅ Editor: Restored note speeds to their actual values ❕✅ Editor: Fixed iterator race condition on ActorFrame updates (This fixes a situation where deleting the last child of an Actorframe by an external source would crash the game) ❕✅ Editor: Restored \u0026ldquo;Paste at current beat/marker\u0026rdquo; on Chart options ❕✅ Editor: Added key combination to jump to end of audio file (Shift + End) ❕✅ Editor: Help screen now auto-resizable across different themes ❕✅ Editor: Fixed crash on loading some song types (Closes #125) ❕✅ Added new encode/decode json commands from SM#2154 for Simply Love ❕✅ Fixed bug with 0 frame index on models (Closes #472) ❕✅ Fixed bug with bone index being incorrectly initialised (Closes #472) ❕✅ Fixed bug with dynamic random BGChanges ❕✅ Fixed bug with corrupted font glyphs on some themes/screens on a resolution change ❕✅ Fixed bug with random crashing/no shaders available on Nvidia 500+ series drivers ❕✅ Fixed bug with simplehold top caps ❕✅ Fixed beat bar draw stops ❕✅ Fixed bug with a recursive GetHash() (Thanks notnola) ❕✅ Fixed accuracy precision output of ATTACKS to 6dp (Closes #285) ❕✅ Fixed empty BG/FGChanges being spawned ❕✅ Fixed bug with some mods needing a tweak to the cosine math ❕✅ Fixed issue with ScreenGameplay not being reset in course mode (Closes #91) ❕✅ Fixed bug with missing wireframe on notes ❕✅ Added new wireframe command into Actor instead of it being in model ❕✅ Fixed bug with simfile ATTACKS not working in course mode (Closes #89) ❕✅ Fixed bug that stopped mod file changes being reset for the next song *Windows 7+:\n❕✅ Fixed compile for windows \u0026lt; 8 ❕✅ Fixed crash on Windows 7 with visual studio setting the wrong build version ❕✅ Fixed crash on Windows 7 due to wrong library support ❕✅ Fixed crash with wry Windows 8+ call being selected for Windows 7 binaries ❕✅ Fixed random crash on MK9/Konami PCs with Windows 7 due to dispatcher Linux:\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed quirk in some file systems crashing ❕✅ New multi-build script for our linux dev environment ❕✅ Fixed crash with badly encoded mp3s (mostly pre 2010) (Closes #478) ❕✅ New DJHero controller fixes for linux, dual mode and dual turntable mode added for input ❕✅ Fixed GL dispatcher for arm/i386 systems MacOS (Universal):\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed crash on some song charts from ZIV ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed quirk in some file systems crashing ❕✅ Fixed libssl for the Raspberry Pi 3b/3b+/4/400 ❕✅ Fixed bug with aarch64 and some GL drivers ❕✅ Fixed bug with cmake causing crashes on TwisterOS (Closes #216) Community content Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to game-play. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Jerrymxy (Simplified Chinese) ","description":"Release Date: 9th February 2022 \u0026ldquo;Back to the Normality\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000.\nThis game featured quite a unique layout, having 3 panels of input per column."},{"id":8,"href":"/releases/A4.12.0/","title":"OutFox Alpha 4.12.0 Build","parent":"Release History","content":" Release Date: 31st December 2021 \u0026ldquo;Onegai Muscle!\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary, OutFox!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder. You will need to move your profiles over to this new version. The old version will also need to be uninstalled manually, sorry about all of this, it is just for this update.\nThere is no conspiracy behind the name change, we have to do this for application signing on the Mac and for the \u0026lsquo;MS Smart Screen\u0026rsquo; requirements for the certificates we need on Windows. This allows us to continue to be a free rhythm game that is now signed to ensure your confidence in the project, as well as ensuring the installers and packages are not tampered with. The Windows builds will be signed starting from next year, as it has taken time for the verification to complete. Our MacOS builds have been signed for a few alpha versions now, and with the \u0026lsquo;universal\u0026rsquo; binaries we are making the Mac experience better for our Apple Players.\nWith this release we are announcing that Project OutFox is becoming it\u0026rsquo;s own official fork. This gives an end to the confusion about our direction and this also allows those who wish to keep 5.1 installed having no risk of OutFox over-writing or damaging profiles or stored scores.\nI\u0026rsquo;d like to thank the StepMania community for making this decision a lot easier. The project is not the same as we started out in early 2019, and we are sorry we were unable to have a clearer \u0026lsquo;direction\u0026rsquo; than just \u0026lsquo;modernising the codebase\u0026rsquo; when we started. It is not our place to shoehorn this project into the StepMania repo, and a lot of you were very open about your feelings about that and as a result, Project OutFox will be on it\u0026rsquo;s own moving forward, and we will discuss with the StepMania community about what support we can bring in the future.\nThis month, we start off on our journey as a new standalone project, and thus a very exciting time ahead for our team. We have a new touch based theming system coming, new online, new leader-boards, (more new modes of course!) new platforms and modernisations to come over the next year. With the 2nd anniversary of the Public Alpha Programme, the team thanks you for the support and the good vibes you have brought us as we work on this project, and we hope you\u0026rsquo;ll stay with us for the rest of the journey!\nSigned Mac builds update! We have continued to work on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected.\nNew Unicode/SHIFT-JIS support! This build also has very long overdue extended character support in the file handlers. BeMusic Script, and DTXMania files use different encodings to .SSC and .SM simfiles, and in the past, they often showed up as garbage characters, or mojibake characters which could not be easily read into the game. A simple fix for this was to convert the simfile into UTF8, but with many hundreds of files, this is not reasonable to ask of players!\n(DTXMania Files natively loading) This build correctly can detect the encoding with no user interaction, and will load them as expected into the correct game mode.\nThe new supported encoding types are:\nANSI/Windows Extended (SMA/BMS/DWI/KSF) SHIFT-JIS (BMS/BME/PMS/DTX/GDA/TJA) UTF-8 (DTX/BME/SSC/SM/OTO) UTF-8 BOM (GDA/DTX/TJA) UTF-8 Extended (TJA/BME/DTX) UTF-16 (DTX) UTF-16LE (DTX) UTF-16LE BOM (DTX) UCS-2 (DTX) This will mean songs using the new code paths for the encoding support will take a little bit longer to parse the first time, but having the support over not having it is worth it.\nThere will be opportunities to optimise the loading path, so it will get faster again!\n(BME files encoded in SHIFT-JIS natively loading) New and Updated Input Options! ALL OS: portmidi comes out of beta! prototype fsr midi controller This driver was written to accommodate the new DTXMania like mode, as the drum kits a lot of players use are MIDI based. This was the first time that our engine contained a fully functioning cross platform MIDI driver, the previous semi-broken win32-midi being Windows only. This new driver offers a 1ms clock timer and near realtime input on Linux and Mac OSX, but only supports one device connected to the system.\nWe are in the process of designing a MIDI based FSR controller for modes which need it as the MIDI system is currently the lowest latency for Windows based systems, and we hope to open source this in time, when the code is better (and Squirrel has the time!)\nThe reason we kept it in beta for so long was there was an identified need to have a MIDI driver capable of supporting more than one MIDI input device, as had been requested by be-mu and gddm players, like DTXMania has, being able to add a second device to enable menu control, or to enable non-standard setups, for example pedals or ride cymbals from a second kit.\nTo assist with this need, we added another MIDI driver to the game:\nrtmidi\nThis driver allows for more than one device support compared to our portmidi driver, which is limited to a single device, like an e-drum kit, or a DJ controller. rtmidi allows for more than one device to be connected for 2 player use, or for extra control for menu options for example.\nThe new rtmidi or portmidi driver can be added to your preference.ini if you wish to use it:\nPlease Note: You will need to add one of these so your controller will work!\nWindows\n(portmidi - you only have one device): InputDrivers=portmidi,legacy,minisdl (rtmidi - you have more than one device): InputDrivers=rtmidi,legacy,minisdl Mac OS (M1 and Intel)\n(portmidi - you only have one device): InputDrivers=portmidi,SDL (rtmidi - you have more than one device): InputDrivers=rtmidi,SDL Linux (x86_64/ARM/Raspberry Pi)\n(portmidi - you only have one device): InputDrivers=portmidi,SDL (rtmidi - you have more than one device): InputDrivers=rtmidi,SDL WINDOWS: legacy set to be the default and is out of beta! If you have been reading the previous changelogs, we have been testing a slightly modified version of the old SM4/5 input driver for those that prefer the \u0026lsquo;feel\u0026rsquo; of that era in input timing, and until the new GA driver is finished, (we are waiting for the Q1 2022 Win10/Win11 update) we will set this driver as default from this alpha.\nIf you are on an established preference.ini, to use it you can follow the style above:\nlegacy (Windows Only) InputDrivers=legacy,minisdl You can also leave this blank, or add MIDI if you plan to play DTX or use a MIDI based input device in the future. You will need the minisdl input driver for your window and operating system controllers, it allows for a smaller footprint on the game, and for your windows based playback this is important at the moment. It shows up in the \u0026rsquo;test input\u0026rsquo; screen as \u0026lsquo;Window Handler (aux)\u0026rsquo; so you have window controls, and full-screen etc support while keeping the base drivers compact. This driver will be default on all operating systems in due course, when the GA driver is complete.\nif you however need to have an Xinput supported device, or you have an advanced setup, you can reset the driver to how it was before this alpha with a simple change in your preference.ini:\nSDL Driver (Windows Only) InputDrivers=SDL This will enable the support for the Xinput system, and the legacy system in the default theme experimental options, (the UseOldJoystickMapping one) which will allow you to switch between the options.\nIf you use a ParaParaParadise controller you will need to add the Para Driver (windows only right now!) before your options in preferences.\nLegacy Driver (Windows Only) InputDrivers=Para,legacy,minisdl SDL Driver (Windows Only) InputDrivers=Para,SDL If you use a Reflex controller, you have several options, however it is best on Windows if you use the new legacy driver for now. To enable the Reflex controller , you need to add the following to your entry: (please note: You need legacy for keyboard input and to avoid HIDAPI problems!)\n(Only one player is supported at this time, however if there is demand we can add more player support! Bug Squirrel for more information!)\nReflex Driver (Windows Only) InputDrivers=Reflex,legacy,minisdl If you have a Python2/3 controller, like the above set up for the Reflex you can simply add your entry here, (remember to set up your COM ports etc as seen in the Windows Device Manager) and remember that this device is not seen in Windows 8 or higher due to the change in the way USB controllers became emulated.\nWindows Only InputDrivers=Python23IO,legacy,minisdl If you have a Rtio controller, you need to add this as the other controllers, remember that legacy gives you keyboard and mouse support.\nWindows Only InputDrivers=Rtio,legacy,minisdl Announcing smx mode! This month we are proud to announce initial support for the smx mode. This mode is a simulation of the game StepManiaX (https://stepmaniax.com/) by Step Revolution, and are long time friends of our project. You can join their discord here and give them some support!\nWe respectfully ask you to not try to rip or use official assets or songs as we want to keep the arcade scene alive and support the guys over at SMX! OutFox will not support the arcade timings or the smx sim file format, so please do not ask us for this! This mode was planned to be an Alpha V release, but with the pandemic, and the fact many of our players with SMX pads requested it. The pads are released when ready but you can Buy the pads here! and see when they are available again.\nThis mode will have some of the first non-arcade charted SMX files coming in the winter update of the OutFox Serenity Pack Volume 1.5 coming soon!\nSerenity smx charts The game mode is best played with the itg based timing, and the layout is familiar:\nIn game footage This mode has several cool new features with the beat bars, and with popular request we have added the colour differences to show the BPM/Stop changes on the notefield:\nPlease be aware that autoGen does work with this mode, and that we\u0026rsquo;ve been working on improving the memory use with the autogeneration until we have talented charters creating new content for it. Any other 5K sim-files that OutFox supports will work.\nWe say farewell to kb7 mode! The mode introduced with Team SSC has been retired in this alpha. There were many players who wanted it to be more than it was, and the use of the mode was generally for a small set of players, and the original creators of the mode also wished for it to be retired as well when we got the chance.\nWe salute the mode and what it did for StepMania at the time when it was released, but fear not kb fans and players, we are proud to announce:\nIntroducing kbx Mode! This is a revamp and rewrite of the KB7 mode, aimed at players that wanted a specific down-scrolling game mode, but with different sets of columns. We of course have varying modes with different sets and styles already, but there was no actual option to have things set in one specific place and one specific mode for it.\nThis mode supports 1 to 15 columns, and is a single player option. It will eventually get it\u0026rsquo;s own theme and other mechanics, but for now, it will fall back to our usual theme, but this does not make it any less playable!\nWe have decided to follow along the play style of ez2, or o2jam style of games, but giving our own little twist on things as is common with OutFox modes. In the future, there will be options to set this mode up to how you prefer, with styles and timing/scoring available to change up and adjust as always.\nThere is one specific thing about this mode however, The mod system is disabled. You may be wondering why we took the time to write a \u0026lsquo;slimmer\u0026rsquo; player options for this mode, well, in honesty there are a lot of things happening in the background we don\u0026rsquo;t use in some modes, and we wanted to try out turning some of these things off to see how it works with the game and performance styles.\nThe default noteskin for this game is based off of a synthwave style from the 80s, and we will continue to create the theme with this aesthetic.\nPLEASE NOTE: You do NOT need to turn on autoGen for this mode! The game will automatically create charts in the format and column size of supported sim files already on your system! The mode comes with a variety of noteskins and features out of the box, alongside a new interface and feature!\nThis skin reads the input assigned to each column and prints it within the space for you to remember where things are. This is helpful for you to learn the mode, and to discover play methods that you are comfortable with.\nThe default mapping for this mode is as follows: Please bear in mind, the button layout still needs work!\nkb1 = space kb2 = f j kb3 = f space j kb4 = d f j k kb5 = d f space j k kb6 = s d f j k l kb7 = s d f space j k l kb8 = a s d f j k l ; kb9 = a s d space f j k l ; kb10 = a w s d f j k l p ; kb11 = a w s d f space j k l p ; kb12 = a w s d r f j i k l p ; kb13 = a w s d r f space j i k l p ; kb14 = a w s e d r f j i k o l p ; kb15 = a w s e d r f space j i k o l p ; This set is just the auto-mapping, and as is always with OutFox everything is completely remappable, you can also assign controllers, MIDI input, drums, DJ controllers, pads etc to this and play in any way you like!\nThis is the o2jous noteskin which has the same feature that shows the keyboard mapping, but is less vibrant on the eyes.\nThe other news about this mode, is we have begun work on the OTO parser to enable osu \u0026amp; osz file support. We support the mania mode (3) at this time - (we were unable to finish the taitai (1) support in time, it will come soon!) The game reads them and can play them with synched video and bg changes, but we do not support osr or osb at this time.\nYou must place the files in the group folder as you would as normal with sim files from other modes. They will be created as a kbx chart type, they will NOT change over to dance or any other mode at this time! (unless you autoGen for them)\nThis mode supports multiple difficulty per folder, and will not make some versions \u0026lsquo;disappear\u0026rsquo; as the old versions did, and if there are multiple different songs in the same folder, the OTO parser can read and differentiate between the chart and it\u0026rsquo;s song/background, meaning you do not need to swap out anything or move stuff to individual folders. We will look into making this option available to other modes in the future. This new parser is based off of the .chart parser using line by line, splitting up each section into it\u0026rsquo;s own loading function.\nAs we were testing this mode, many of our awesome testing players suggested that we should have a \u0026lsquo;Lift-Hold\u0026rsquo; to \u0026lsquo;Normal Hold\u0026rsquo; modifier, to make the game more accessible and fun as sometimes the lift-hold requirement raised the difficulty of the chart too much, or players felt overly punished by the placement of the lift holds.\nThis alpha has a new modifier for this, it is available on the song options -\u0026gt; modifiers as seen in the screenshot below. Remember to access this you need to double tap when you have selected a song on the music wheel!\nThese options give a different play style to the pink game, and makes it a lot more accessible to folks playing.\nWe hope you have fun with it, and do let us know what you think!\nKNOWN ISSUES: Alpha 4.12.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE Charts with similar difficulties in a folder will have scores assigned to them weirdly, due to the old SM paradigm. This will be fixed in a future update. ALL: Mode Specific\n❕✅ smx: New! Created a new smx mode! ❕✅ smx: New! Added display for stops and bpm changes on the note-field ❕✅ smx: New! Added new default noteskin ❕✅ smx: New! Added single, double6, double10 styles ❕✅ smx: New! Added 2 player support ❕✅ smx: New! Adapted lift-holds to work with this mode ❕✅ smx: New! Adapted minefields to work with this mode ❕✅ smx: New! Adapted roll-types to work with this mode ❕✅ smx: New! Added custom beat bar render distance ❕✅ smx: New! Added special column spacing ❕✅ kb7: New! removed kb7 mode from the game ❕✅ kbx: New! Created a new kbx mode! ❕✅ kbx: New! Created a new mod-less path for kbx for better performance ❕✅ kbx: New! Added 1 to 15 Column style support ❕✅ kbx: New! Added proper BGA/Video sync ❕✅ kbx: New! Added Background 1 and 2 support ❕✅ kbx: New! Added mash prevention ❕✅ kbx: New! Added per-chart music support for folders with different songs inside ❕✅ kbx: New! Added style support and noteskins ❕✅ kbx: New! Added new bpm and segment styles ❕✅ kbx: New! Adjusted offset drift with some BPM methods ❕✅ kbx: New! Repurposed old KB7 noteskins, thanks shakesoda and AJ! ❕✅ kbx: New! SmartGen - You do not need to turn on autogen for this mode! ❕✅ kbx: New! OTO Parser for kbx for osz and osu files ❕✅ kbx: New! Added Modifier option to remove lift-holds in kbx ❕✅ dtx: New! Only load Unicode based simfiles on the new code paths ❕✅ dance: New! def.NoteField() command for mod creators Engine\n❕✅ Fixed SDL handle dereference (closes #465) ❕✅ Updated base SDL libraries ❕✅ Fixed SDL with OutFox patches ❕✅ Fixed Reflex Driver OS calls ❕✅ Fixed non-repeating input on Editor ❕✅ Fixed negative position scrolling on preview ❕✅ New! Add support for lift holds and mine fields to editor ❕✅ Fixed lirocode causing hang on some screens in SoundWaves ❕✅ Fixed bug with Out of Bounds Access Violation on some Actor calls ❕✅ Fixed bug where courses could crash with an Access Violation when a course actually existed ❕✅ Fixed header includes to respect Actor calls ❕✅ Fixed bug with some float logic always returning true ❕✅ New! ICU and Boost library to support Unicode properly ❕✅ New! Meter floating point numbers display in the wheel etc ❕✅ New! Groove Radar support for all note loaders ❕✅ New! SimpleHold() functions to reduce load on playback ❕✅ Fixed bug with math overflow in Lua, by setting lua numbers to float ❕✅ Fixed bug in ArrowEffects with PlayerData being dereferenced ❕✅ Reverted code optimisations to keep Simply Love and it\u0026rsquo;s derivatives working as expected ❕✅ Fixed bug with strings causing some themes to display rate at 0.05x ❕✅ Fixed bug with some PlayerOptions functions returning a clamped value ❕✅ Fixed issue with Notefield states ❕✅ Fixed crash with loading empty files ❕✅ New! Text entry movement and behaviour in editor ❕✅ New! Fixed bug with note flashes would eat notes in editor ❕✅ New! Fixed turn and long note functions in editor ❕✅ New! PlayerOptionsSimple() a mod-less option for modes which are not gimmick based ❕✅ New! Optimise and streamlined the note loading system for the modes which need them ❕✅ Fixed bug with song offset causing crashes ❕✅ Fixed hang with new parser and longer than 12second introductions before first note ❕✅ Fixed slow parsing speed with new code, it needs more work ❕✅ Fixed bug with cmake properties ❕✅ Fixed bug with banner disappearing on some charts in smzip/osz files ❕✅ New! Added Tags support for future search options ❕✅ New! Added game type next to stage count on screen select music ❕✅ Fixed bug with floating point numbers displaying oddly on themes Windows 7+:\n❕✅ Fixed Reflex Driver breaking on latest Windows 10 update ❕✅ Fixed Sound device truncation in Win 8+ Linux:\n❕✅ Fixed L-Tek Dance pad missing on *Ubuntu and Debian ❕✅ Fixed Cobalt Flux Dance pad missing on *Ubuntu and Debian MacOS (Universal):\n❕✅ Fixed L-Tek Dance pad missing on MacOS Sierra/High Sierra ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed L-Tek Dance pad missing on Twister OS/Armbian ❕✅ Fixed bug with newer boards crashing with hashing ❕✅ Fixed compiling with newer tomCrypt ❕✅ Fixed bug with the new Unicode support crashing TwisterOS and Armbian OSs Community content Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to gameplay. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ","description":"Release Date: 31st December 2021 \u0026ldquo;Onegai Muscle!\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary, OutFox!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder."},{"id":9,"href":"/releases/A4.11.0/","title":"OutFox Alpha 4.11.0 Build","parent":"Release History","content":" Release Date: 12th December 2021 \u0026ldquo;Do you know why we stopped the car?\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary Release, OutFox!\u0026rdquo; (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder. You will need to move your profiles over to this new version. The old version will also need to be uninstalled manually, sorry about all of this, it is just for this update.\nThere is no conspiracy behind the name change, we have to do this for application signing on the Mac and for the \u0026lsquo;MS Smart Screen\u0026rsquo; requirements for the certificates we need on Windows. This allows us to continue to be a free rhythm game that is now signed to ensure your confidence in the project, as well as ensuring the installers and packages are not tampered with. The Windows builds will be signed starting from next year, as it has taken time for the verification to complete. Our MacOS builds have been signed for a few alpha versions now, and with the \u0026lsquo;universal\u0026rsquo; binaries we are making the Mac experience better for our Apple Players.\nWith this release we are announcing that Project OutFox is becoming it\u0026rsquo;s own official fork. This gives an end to the confusion about our direction and this also allows those who wish to keep 5.1 installed having no risk of OutFox over-writing or damaging profiles or stored scores.\nI\u0026rsquo;d like to thank the StepMania community for making this decision a lot easier. The project is not the same as we started out in early 2019, and we are sorry we were unable to have a clearer \u0026lsquo;direction\u0026rsquo; than just \u0026lsquo;modernising the codebase\u0026rsquo; when we started. It is not our place to shoehorn this project into the StepMania repo, and a lot of you were very open about your feelings about that and as a result, Project OutFox will be on it\u0026rsquo;s own moving forward, and we will discuss with the StepMania community about what support we can bring in the future.\nWith this release, we start off on our journey as a new standalone project, and thus a very exciting time ahead for our team. We have a new touch based theming system coming, new online, new leaderboards, (more new modes of course!) new platforms and modernisations to come over the next year. With the 2nd anniversary of the Public Alpha Programme, the team thanks you for the support and the good vibes you have brought us as we work on this project, and we hope you\u0026rsquo;ll stay with us for the rest of the journey!\nSigned Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected. KNOWN ISSUES: Alpha 4.11.0 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ALL: Mode Specific\n❕✅ be-mu: New! renamed beat to be-mu (BE-MUsic) ❕✅ po-mu: New! renamed popn to po-mu (POpn-MUsic) ❕✅ be-mu: New! Base36/Full BME / BML Parser Support ❕✅ be-mu: New! BMS #SCROLL and #SPEED channel support stub. Full support will be in the next alpha ❕✅ po-mu: Fixed 3 Key parser layout ❕✅ po-mu: Fixed doubles missing graphics ❕✅ pump: New! PIU parser pathway, designed for F2/P1 charts ❕✅ pump: New! Added bga one line support ❕✅ pump: New! Added long \u0026rsquo;edit\u0026rsquo; chart support ❕✅ pump: New! GetSongFolder() support ❕✅ pump: New! pump Custom Notesloader pathway, for themers to use ❕✅ be-mu: New! Column lines for supported themes ❕✅ be-mu: New! Fixed spinning turntable support for noteskins ❕✅ pump: Fixed warp calculations due to ancient code paths being used instead of the new ones ❕✅ pump: New! Added SongCategory()/#SONGCATEGORY support to parser ❕✅ pump: New! Added SongType()/#SONGTYPE support to parser ❕✅ gh: Tweaked strum methods ❕✅ gh: Fixed overly punishing players ❕✅ kbx: New! OTO parser in progress ❕✅ gh: Fixed fever issues ❕✅ gdgf: Began hold support - still a work in progress ❕✅ be-mu / po-mu: Fixed mines auto hitting ❕✅ gdgf: New! wailing support engine ❕✅ be-mu / po-mu: Began #TOTAL scoring system support ❕✅ be-mu / po-mu: Fixed parser overflows (closes #448) ❕✅ gh: Fixed strum sound crash ❕✅ be-mu / po-mu / gddm / gdgf: Fixed \u0026lsquo;fill\u0026rsquo; and \u0026lsquo;auto\u0026rsquo; auto keysounds not playing ❕✅ gh: Fixed HighNoteCheck check ❕✅ gh: Fixed #RESOLUTION, #OFFSET on .chart files not working correctly ❕✅ gh: Fixed tap notes being missed when correctly hit on a controller ❕✅ gh: Fixed fever combo effects ❕✅ gh: Fixed gh mode measure line drawing ❕✅ gdgf / gddm: New! Channel 54 Support for Video playback, thanks APPROVED! ❕✅ gdgf / gddm: New! Channel 54 sync support, thanks APPROVED! ❕✅ gdgf / gddm: New! GDACreator support added to the DTX parser, thanks APPROVED! ❕✅ gdgf / gddm: New! Fixed bug with .DTX based charts converted from .GDA having no BPM ❕✅ gdgf / gddm: New! Fixed bug with .DTX based charts converted from .GDA having an extra space in the channel commands ❕✅ gdgf / gddm: New! Removed legacy .GDA code from the .DTX parser to fix Drum hidden notes missing ❕✅ gdgf / gddm: New! Added Drum Empty Note channels ❕✅ gdgf / gddm: New! Fixed some charts that abused channel 01 from overly playing too much of the same keysound ❕✅ gdgf / gddm: New! Fixed video playback not being on the correct background layer ❕✅ gdgf / gddm: New! Added mp3 preview support to .GDA / .DTX files ❕✅ gdgf / gddm: New! Added missing Sound Effect Channels ❕✅ gdgf / gddm: New! Added missing BGA/Start/Metronome Sound Channels ❕✅ be-mu / po-mu / gdgf / gddm: Fixed #RANDOM parsing ❕✅ dance: Fixed calculation in haste ❕✅ dance: Fixed chart length discovery and tweaked this for modfiles ❕✅ dance: Stopped pump chart parsing breaking Simply Love users ❕✅ dance: New! Editor preview! ❕✅ dance: Fixed extreme BPM warp calls making files last 2+ years in time ❕✅ dance: Fixed ghost \u0026lsquo;hold tails\u0026rsquo; left over from older charts ❕✅ dance: Fixed warp detection Engine\n❕✅ Fixed stoi overflows (closes #432) ❕✅ Fixed stof underflows (closes #432) ❕✅ New! BW / WIDE stoi/stof functions to unclamp when required (closes #434) ❕✅ Fixed XML input overflows ❕✅ Fixed logic errors in FileDB ❕✅ Fixed Hold endings being left over from deleted entries on the editor (closes #331) ❕✅ Fixed bug in Chart Length descriptors ❕✅ New! Use Chart Length properly in Steps ❕✅ New! GetChartLength() lua command ❕✅ New! Fix Player overflow in music length ❕✅ New! Added support for #LASTSECONDHINT in ssc files ❕✅ New! Fixed bugs with first and last second of charts ❕✅ New! Added new generation of step length ❕✅ New! Added new GetFGChanges() lua command ❕✅ Fixed haste() math in resampler ❕✅ Fixed how haste is calculated in notedata ❕✅ Fixed bug with GL initialisation ❕✅ New! Added new HasSignificantBPMChanges() lua command ❕✅ New! Added new IsDisplayBpmSpecified() lua command ❕✅ New! Added new song:PlayPreviewMusic() lua command for Lua based wheels ❕✅ Fixed bug with some stops being \u0026lsquo;ignored\u0026rsquo; by the game engine ❕✅ Fixed bug with edit files being truncated ❕✅ Removed the edit file limits to the parsers ❕✅ Fixed crash with parsing some F2 charts ❕✅ Adjusted how longest charts are displayed ❕✅ Fixed math overflow with astronomical BPM values ❕✅ Fixed bug with sPath sometimes not finding files ❕✅ Fixed math values on warp creation ❕✅ Fixed warp points having duplicated notes ❕✅ Added sanity check for verifying scroll application ❕✅ Fixed timer overflow in player ❕✅ New! Project and Name now set to Project OutFox ❕✅ Fixed SDL Video Initialisation sometimes causing a white screen ❕✅ Added SDL 2.0.17 ❕✅ Fixed underflow with some Chart calculations ❕✅ New! LuathreadVariables to reduce conversions ❕✅ New! iCol support for noteskins ❕✅ Fixed animation length on receptor explosions ❕✅ Fixed deprecated NSIS ini files ❕✅ Fixed auto keysounds duplicated playback ❕✅ Added playcommand for special keys in receptors ❕✅ Added filetype check on foreground loading ❕✅ New! JoyCon controller full support via HIDAPI ❕✅ New! Stadia controller full support via HIDAPI ❕✅ New! Luna controller full support via HIDAPI ❕✅ New! Steam controller full support via HIDAPI ❕✅ New! PS4/PS5 controller full support via HIDAPI ❕✅ New! rtMIDI cross platform device driver support ❕✅ Added rtmidi multi-device support, this allows for more than 1 MIDI device at a time! ❕✅ New! Added SetAutoplayForColumn() for autoplay options for modes that need them ❕✅ Fixed 3DP saving on SSC files ❕✅ Fixed crash on some edit files with 6+ charts within ❕✅ Fixed crash on userlog string buffer ❕✅ Corrected Input behaviour with some controllers ❕✅ Fixed iterator in ClearRange for Long Notes ❕✅ Fixed log trace calls in the notes loader running out of memory ❕✅ Added new preference: UseSongNameOnGameWindow to show the song name on the window title bar ❕✅ Fixed Autoplay not being respected on the editor ❕✅ Fixed editor Autoplay not using the correct GamePreferences ❕✅ Fixed elements not hiding when autoplaying in editor ❕✅ Added new preference: JoyStickDeadzone to allow the user to tweak a deadzone of an older pad ❕✅ Added scrolling while previewing chart on editor ❕✅ Added repeat input while previewing chart on editor ❕✅ Added snap change during preview on editor ❕✅ Added function to calculate beat to scroll ❕✅ Added option to allow a toggle for clap on editor preview ❕✅ Changed method for MMod/AMod to approach faster ❕✅ Fixed bug with wrapper states not being cleared on playback ❕✅ Fixed missing notes and mines in charts ❕✅ Fixed loading window init system ❕✅ Fixed parsing of pump charts causing a math overflow ❕✅ Fixed note-data crash with some older chart types ❕✅ Fixed Alt button not being spotted by the editor or some third party themes ❕✅ Added option to allow notefield changes on editor preview ❕✅ Fixed CMod editor scrolling on step specific timing areas ❕✅ Fixed odd condition states in AllowNotefieldChanges ❕✅ Added psv/nsw build chains ❕✅ Added new LoadFromFont() Lua command (closes #451) ❕✅ Updated .flac / .mp3 / .wav Audio libs ❕✅ Fixed old sm build chains ❕✅ Fixed BitmapText\u0026rsquo;s missing returns ❕✅ Fixed lua_number being defined as double when it should be float ❕✅ Fixed lua_number overflows in LuaManager ❕✅ Added new memory optimised lua bindings ❕✅ Fixed actor overflows in LuaManager ❕✅ Fixed the engine converting everything Lua to double ❕✅ Respected the correct Lua Types ❕✅ Fixed PlayerOptions being overly clamped ❕✅ Fixed lua stack issues - stack uses 65% less resources ❕✅ Removed 428 pointless static casts ❕✅ Fixed use of protected keywords in commands ❕✅ Modernised code of AFT/AMV/AMT ❕✅ Fixed bug in WheelBase which caused a crash ❕✅ Added new safer comparison function for floating points ❕✅ Fixed access specifier warnings in the compiler ❕✅ Fixed edge case bad_access due to the archaic ARRAYLEN() ❕✅ Fixed coloring state for DrawBeatBars() ❕✅ Fixed bug with MeterDisplay crashing SimplyLove/Melody users due to lack of sanitisation in the code ❕✅ Fixed bug with GameplayElements sometimes freezing the game ❕✅ Fixed math underflow bug from 2009 in tweens Windows 7+:\n❕✅ Fixed the NSIS target warnings for deprecated operating systems ❕✅ Fixed deprecated NSIS ini files ❕✅ Fixed XInput correlation when the extended windows 10/11 driver is used ❕✅ Fixed context grabbing by the Intel GPU when 2 or more GPUs are installed ❕✅ Removed deprecated 2002 era OS calls causing crashes on Windows 11 ❕✅ Added new default settings to set the dedicated GPU if one is installed (This can be overridden in windows settings if you prefer) ❕✅ Added some new code paths to better support unicode in the future ❕✅ Fixed a crash on windows 11 with the new ISST Intel Integrated Sound Chips ❕✅ Fixed bug with Windows 11 and users with HDMI Audio, will be fixed in Feb 2022 by Microsoft ❕✅ Fixed GL Pipeline for windows 10 21H1 and higher Linux:\n❕✅ Fixed crash in MESA 21+ with 5.3 -\u0026gt; kernels (closes #436) ❕✅ Fixed edge crash with older cards on newer kernels (closes #436) ❕✅ Corrected method to ensure X11 does not think we have hung ❕✅ Fixed bug on Nvidia legacy drivers (340 and below) that would force a crash after song loading ❕✅ Forced ATI era cards to respect what the system provided and to not override it in driver ❕✅ Fixed rtmidi spawning 3 virtual devices on Ubuntu Studio and other Audio featured distros MacOS (Universal):\n❕✅ Fixed compiler warnings on XCode 12 ❕✅ Fixed crash on M1 macs (Monterey) while paused ❕✅ Fixed FPS running to the application above the game (closes #337) ❕✅ Fixed crash on Intel macs (Big Sur) in windowed mode and selecting app store ❕✅ Fixed rtmidi spawning 2-5 virtual devices on Big Sur and Monterey ❕✅ Fixed rtmidi port opening on M1 Mac Pros (It supports Iphone Virtual MIDI) ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed StringToFloat causing a segfault on the Pi3 and Armv7 CPUs ❕✅ Fixed crash on rockpi 4 panfrost GPUs on newer MESA versions ❕✅ Changed clocks to monotonic on arm ❕✅ Corrected method to ensure X11 does not think we have hung Community content Noteskins Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to gameplay. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ","description":"Release Date: 12th December 2021 \u0026ldquo;Do you know why we stopped the car?\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary Release, OutFox!\u0026rdquo; (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder."},{"id":10,"href":"/releases/A4.10.0/","title":"OutFox Alpha 4.10.0 Build","parent":"Release History","content":" Release Date: 1st October 2021 \u0026ldquo;Believe it or not, the bus can\u0026rsquo;t swim\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected.\nBMS updates! Difficulty Changes:\nWe have adjusted the way the game reads these files, and as a lot of the charts are seen as the same difficulty we would end up losing a lot of the information in them, and half of the charts would be missing and unplayable. We are in the process of improving this further for the new theming, so it will be better in time.\nThis month continues our work on BMS support, and we can happily announce we have proper Land Mine channel support in the game for the first time! In previous versions there was a blanket math overflow which meant that a lot of the channels were not being identified correctly, and thus flagging for extended channels were not being used.\nThis month also sees some fixes with the Long Note support offered by the game, we did not seem to parse these correctly due to the flag sometimes being applied in the wrong manner, which meant some of the holds were not being applied in charts.\nWe have also restored #RANDOM support again this alpha, as it was still using a legacy codepath we did not clear up in 4.9.10, apologies for that! This alpha allows for the #RANDOM n where n is 1 onwards.\nThis alpha also included several behavioural changes in the way the files are parsed, allowing for the correct Base to be used in reading channels and allowing us to enable the missing hidden sounds as well as the missing channels that were inaccessible before.\nLand Mine damage based on the channel value will be added next alpha, so we can add this final part to the game.\npo-mu updates! Like with BMS, the fixes with the difficulty are passed along to all of the BMS-like parsers, so we are now able to view all of the difficulties a file may contain.\nWe have been able to adjust the channels used for po-mu to support Land Mines for the first time as well, and this also includes BME based po-mu files are properly supported as well in this alpha, though without locale emulation, they will not load in native Windows 10 at this time. A fix for this is coming soon.\ngddm updates! This mode has had some internal reworking due to recommendations from some of the DTXMania community (thanks APPROVED!) to ensure that we do a few things a little bit more to how players expect. One of the important features was the ability to change the lane setting from 10 to 9 lane, or 9 to 10 lane, depending on the e-drum kit you have.\nWe were already able to read and support multiple lanes in older alpha builds depending on the \u0026lsquo;dominant\u0026rsquo; right hand lane, but now if the game does not spot it as the style you wish you can change this in the options menu.\nReal mode is 10 lane, and New mode is 9 lane. This gives you the flexibility to play the game how you wish moving forwards with the new theme and makes things less awkward if you do not have a 10 piece e-drum kit.\nThis alpha has also worked a bit more on the latency issues plaguing some users, we have tweaked the keysound flow a lot this build, so please give it a try and let us know if this has improved gameplay for this mode.\nThis build also has had work on the \u0026lsquo;Channel 02/BL\u0026rsquo; support to remove the old BMS era restriction. This means any measure change/time signature change is now respected, and thanks to APPROVED to making this chart which was a literal BPM Change / Time Signature Change Spam Chart we were able to effectively fix this for good. This change is also reflected in the gdgf mode as well as the GDA parser.\ngdgf updates! Before this alpha, all the game was able to use on this mode was Autogen based charts. Thanks to Squirrel and Jousway, the parser has been finally fixed and implemented to allow 3 fret and 5 fret guitar and bass charts to finally load natively in engine.\nThank you all for your patience while we worked on this, it was a slog to try to transpose the system to something our game recognises!\nGDGF is based on a row system, and our internal mechanism is column based, and has been for some time, so ensuring this methodology is carried over was important. We still have a lot to do before simulation is better here, so please bear with us. We do NOT support the holds yet that were introduced in DTXMania AL, these will be done at a later date.\nThis mode also has had the 6 fret custom mode that we promised back in the spring, as we know a lot of folks wanted 6 fret availability in OutFox. We have chosen cyan as the sixth fret to follow the colour scheme of Yellow Pink Cyan from the original.\nThis mode also supports full up, down, and forward WAIL controls, as requested by members of the community. To map this you will need to ensure your controller has the options to allow for wailing, as many newer guitar controllers have special \u0026lsquo;button\u0026rsquo; modes for wailing. We will add new controller pages to the wiki to help players set up their games in due course.\nWe have also begun a project to release a new proposal for a BMS-like BGF based parser for this mode which will include all 6 frets. Squirrel will be adding the information for this on the wiki for discussion and feedback is more than welcome! Remember! The game styles have changed for GDGF in this alpha. We will update the OutFox Serenity pack to reflect this during October\ngh updates! We have continued to work on the internal mechanics on this mode, so do forgive us while we fix things! This alpha sees new backplate (highway) support, (thanks Jous!) and new noteskin support within the engine. the measure lines and textures now behave as expected and thanks to those of you that requested these features.\nThe internal notefield and scrolling system has seen some updates as well as we move towards Alpha V.\ndance updates! This mode also saw some updates this month; the RNG system was given a revamp, the stageseed generation was also fixed, as well as better audio parsing. Thanks for all the reports of the odd edge cases with some of the odd \u0026lsquo;stuttering\u0026rsquo; bits and pieces you sent in! this was due to an undesirable response in the sampler expecting a calculation from the \u0026lsquo;old\u0026rsquo; resampler path that didn\u0026rsquo;t exist on the new resampler so we tweaked it to stop this.\nThere has been other engine adjustments, we discovered a few other weird bugs in how the buffer works due to the new Keysound code for BMS and po-mu and this has resolved a bug for dance modes.\ntechno updates! We fixed the methodology of the lifebars and the odd crashes with the styles and different play styles available to this mode. There were a lot of edge case crashes which we have fixed for now. In regards to styles, we WILL be fixing the ability to play different styles per player. It\u0026rsquo;s disabled for now to just prevent arcade cab crashes.\nKNOWN ISSUES: Alpha 4.10.0 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ALL: Mode Specific\n❕✅ Updated gdgf graphics for wailing ❕✅ Updated gh graphics for highway ❕✅ Fixed BMS/PMS missing background on channel 04 support ❕✅ Fixed BMS/PMS missing background on channel 07 support ❕✅ New! GDA Parser Support ❕✅ New! BMS Fixed #RANDOM math overflow ❕✅ New! gddm REAL to NEW mode (10 Lane to 9 Lane support) ❕✅ New! added bass3, bass5, bass6 to gdgf ❕✅ New! added guitar3, guitar5, guitar6 to gdgf ❕✅ Fixed crash in non-guitar modes due to the new gh backplates/highways ❕✅ New! BGF Parser Support, in prep for proposal ❕✅ Updated gdgf parsing channels to support the new methods ❕✅ Fixed crash in BGA and guitar channels overflow into drum charts ❕✅ Fixed invalid channels being parsed in DTX loader ❕✅ Fixed B36 GDA parsing ❕✅ Fixed DetermineStepsType on DTX/GDA guitar/bass ❕✅ Fixed PMS channel layouts ❕✅ Fixed DTX channels not being correctly interpreted as \u0026lsquo;admin\u0026rsquo; channels ❕✅ New! added \u0026lsquo;ChartType\u0026rsquo; system for correctly identifying DTX/GDA chart splits ❕✅ Fixed gddm 5 panel layout ❕✅ Fixed ❕✅ New! implemented true BMS/BME/BML/PMS Long Note support ❕✅ New! implemented true BMS/BME/BML/PMS LandMine support ❕✅ Fixed missing hidden channels on BMS/PMS files ❕✅ Fixed wail overflow due to \u0026lsquo;wail up\u0026rsquo; and \u0026lsquo;wail down\u0026rsquo; existing ❕✅ New! Hidden layers of channels for DTX/GDA ❕✅ New! #BGAxx support finally restored for BMS/PMS ends 19 year old bug. ❕✅ New! #AVIxx support added to BMS/PMS ❕✅ New! #OGGxx support added to BMS/PMS ❕✅ New! Channel 02 support for DTX/GDA parsers for variable measures/time signatures ❕✅ New! Engine side Taiko hitsounds to reduce playback lag ❕✅ New! Loading screen for any mode with keysounds ❕✅ Fixed offset missing in CHART parsing closes #376 Engine\n❕✅ Fixed CD Audio style loading methodology being called from 2006 ❕✅ Fixed CDDA Audio hard coded lag amount being added to everything ❕✅ Fixed Edge Crash with \u0026lsquo;EOF\u0026rsquo; being reached in Keysound Loading ❕✅ Fixed Freeze with Pre-2001 BMS/BM98 files with Keysound playback ❕✅ Added Sanity Check on themeprefs from StepMania#2153 ❕✅ Added binarytohex lua command from StepMania#2150 ❕✅ Fixed #PAN math causing playback blackouts for some arcade cabinets ❕✅ Fixed #PAN clipping with 2 players ❕✅ Fixed editor IsFake detection ❕✅ Fixed radar calculation of rolls ❕✅ Fixed #RANDOM generation - Thanks Taro for recommending a file to test with ❕✅ New! added GetCrop() functions for lua actors ❕✅ New! Ovceptor system for placement of receptors over notes ❕✅ Fixed crash with style clashes in legacy themes ❕✅ Fixed \u0026lsquo;Folder Contains Music Files\u0026rsquo; warnings and logging ❕✅ Fixed notepath not drawing from ovceptor ❕✅ Fixed HoldTail entries in NoteData tables ❕✅ New! functimer() for C++17 ❕✅ Fixed math overflow on timer, from 2008 ❕✅ Fixed pos handler being interpreted for zoom handler ❕✅ Fixed Tipsy/TanTipsy take ModTimer into account when calculating results ❕✅ New! New Lua functions: FlipCoin() and RolltheDie() ❕✅ Fixed punishmultitap being active on autoplay ❕✅ Fixed missing keysound tracks ❕✅ Fixed keysounds sometimes crashing recycled pre2014 po-mu cabinet hardware ❕✅ New! Added non-clamped version of SetDancePointLimits ❕✅ New! Added Ex versions of the Back and Elastic tweens ❕✅ New! Added new method to allow Sprite.LinearFrames to have a variable starting point ❕✅ Fixed Colour values being converted 3 times ❕✅ Fixed Matrix math overflowing due to compiler optimisation ❕✅ New! Added short/ushort/long/ulong/longlong/ulonglong RNG engines for mode support ❕✅ Fixed unsigned RNG overflow in compiler for armhf/aarch64 ❕✅ Fixed math error on seeding the global RNG system ❕✅ Fixed missing RNG generation on return to game main screen ❕✅ Fixed PlayerOptions storing two players values in several for loops ❕✅ Fixed divide by zero edge crash closes #414 ❕✅ Fixed race condition in new sampler due to old rounding errors in legacy code ❕✅ Fixed jukebox mode selection and two player crashing shenanigans ❕✅ Fixed final syncmachine edge crash on pre-2010 cabs Windows 7+:\n❕✅ Fixed compilation warnings ❕✅ Fixed crash on creative drivers on Windows 11 Linux:\n❕✅ Fixed GL dispatcher based on Ubuntu advice (may break other distros, do report this) ❕✅ Fixed potential infinite loop in seek() on audio playback MacOS (Universal):\n❕✅ New Universal binary - no more 2 package issues ❕✅ Fixed crash on plugging in a PS4/PS5 controller on Monterey (Mac OS 12) ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some latency with ALSA causing broken pipe() errors on Pi3/3b ❕✅ Fixed potential infinite loop in seek() on audio playback Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 1st October 2021 \u0026ldquo;Believe it or not, the bus can\u0026rsquo;t swim\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work."},{"id":11,"href":"/releases/A4.9.10/","title":"OutFox Alpha 4.9.10 Build","parent":"Release History","content":" Release Date: 27th August 2021 \u0026ldquo;Because 4 hotfixes is too far\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I\u0026rsquo;m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds.\nSo let me describe what happened and why we did what we did.\nTo prepare for the new parsing and profile system that is upcoming for Alpha V, it is time that the engine is modernised to support more than just \u0026ldquo;American English\u0026rdquo; and the ANSI/ASCII standard. For those who don\u0026rsquo;t like the abbreviations, it means text in English. OutFox, and historically StepMania was never really written with foreign language support or any type of loading or conversion support for files or text in different languages other than American English.\nAs you know we are expanding the game modes the engine supports and as a result of this, it adds new improvements to the \u0026ldquo;bread and butter modes\u0026rdquo; (dance, pump) so it benefits everyone in the long run. Last month we upgraded the internal parsing system to proper understand Japanese and Korean loading as well as SHIFT-JIS internal text for our pop\u0026rsquo;n/po-mu, BMS, DTX and the DDR charts which used them. This was a really successful update, and fixed around 18 bugs in SM5, and allowed a lot more charts to be successfully loaded into the game.\nBuilding on this success, we then decided to fix the long standing issue of \u0026ldquo;one simfile to rule them all\u0026rdquo; which was: if there were more than one simfile, it only loaded one of those simfiles, usually spotting the SSC then forgetting everything else. As we will be supporting a wide range of new notes loaders in the future, we wanted to remove this bug to expand on specifically BMS/PMS and the Dance charts. This worked once again with great success.\nHowever, it was all about to come undone as our players with cabinets found out.\nFixing these bugs to our horror we were hit with a lot of reports of missing scores, no history found, groovestats and the SRPG groups, as well as everybody.dance and other things built on SM5 literally crashed and burned, due to the reliance on those bugs being included in the code.\nWe rushed to adjust how we did the loading, and we had to for the moment readd the bugs back for groovestats as this was completely broken for folks who wished to share their scores.\nIt also broke saved scores, and hashed lists because we fixed the loading paths, but folks had years of scores on a bugged loader. To top it off, we allowed the evil that was DWI to load, so folks ended up with duplicate listings and all sorts of craziness we did not expect. My own cabinet fell foul of the DWI problem: I had converted them years ago, but never deleted the files. So now we loaded more than one loader, this was a problem!\nI will say thanks to DomITG and Zankoku from the stamina community for taking the time to work through fixing these bugs as we were lost a bit on how the hashing and loading system affected groovestats and the other score sharing systems.\nThe reason we had such a flurry of hotfixes is due to we would solve one bug to have another reported almost an hour or two after we released, so it was a cat and mouse chase to get them fixed as they were affecting cabinets and folks\u0026rsquo; scores. These bugs only affected dance and ITG due to the fact all of these APIs had been built on them. I am not making excuses here, we should have been more thorough.\nWe had discovered that 21 issues arise within the folder/file parsing system, and that most things depend on this being the way it has been for around 15 years. We have enabled multi loading for other modes and file types, but have returned the SSC -\u0026gt; SM -\u0026gt; DWI rule that was common to the bugs in 5.1.\nWe humbly apologise for this, as we were not expecting that level of damage to established systems in the community. We had to re-enable the bugged code for now until we can look at a new way to fix scores and hashes so that the score shares and players histories are not affected by the new loading system.\nFor the tl;dr - we updated something in our parsers and file loaders, that broke all the scores and share systems due to them being built on bugged code. We had to release loads of fixes as folks reported the bugs.\nI hope that clears things up a bit, and that you don\u0026rsquo;t hate us too much for the errors, we did revert the code to ensure backwards compatibility was maintained. It sometimes happens in alpha development, we do sometimes update things with the best intentions, which breaks a \u0026ldquo;StepMania thing\u0026rdquo; horribly. The codebase is still a massive adventure for us too.\nThis update brings together all the hotfixes and finally puts a lot of the little niggles to rest.\nALL: ❕✅ Fixed Pitch being offsync a bit ❕✅ Fixed crash with missing GDDM Strings ❕✅ Fixed hang crash with leaving screens ❕✅ Fixed resampler ❕✅ NEW Column Judgements for modes that need it: gddm/popn ❕✅ NEW PomuPlus judgements ❕✅ Fixed crash in DTX with some files not using the full 9 lane width ❕✅ NEW Add KeySound loading Screen ❕✅ Fixed Crash with SM/SSC loaders ❕✅ Fixed Crash with OpenGL \u0026lt; 2.1 initialisation ❕✅ Added new loading screen animation for BMS/PMS etc ❕✅ Fixed resampling of \u0026lt; 32kHz sound files ❕✅ Fixed downsampling of 48kHz sound files ❕✅ Fixed block on ragesound causing edge case crash ❕✅ Allowed loading window to be software if system has no DRI on linux ❕✅ Fixed AFT overflow in texture generation, caused issues on Mac M1/RPi ❕✅ Fixed attacks disappearing on Linux and MacOS ❕✅ Fixed orient math ❕✅ Fixed non column judgement modes having lua errors on mods/autogen ports ❕✅ Fixed visibility with PIU noteskins ❕✅ Removed SM4 era remaining sprites. ❕✅ Optimised BMS and PMS parsing ❕✅ Added #SUBARTIST and #CREDIT support to BMS/PMS ❕✅ Fixed time-spacing calculation of graphs in gameplay ❕✅ Added new drumDTX noteskin ❕✅ Changed sound on taiko keysound ❕✅ Fixed holds on paw noteskin pixel offset ❕✅ NEW GDA parser for BandJAM/GDAMania era 6 lane drum charts ❕✅ Fixed bug in RTIO not noticing player 2 ❕✅ Fixed quirky edge case bugs in DTX and PMS ❕✅ Fixed AV crash in course loader on windows 7-\u0026gt; and MacOS 10.12/10.13 ❕✅ Fixed timing data in BMS derived parsers ❕✅ NEW Keysound notedata layer, reduces lag ❕✅ Fixed measure count update ❕✅ Fixed XInput crash on windows 8/8.1 ❕✅ Fixed keysound calling ❕✅ Fixed crash on syncmachine ❕✅ Fixed crash on autogen when using 32 bit windows 8.x ❕✅ Fixed autokeysounds quirk ❕✅ Fixed error checking in loading window ❕✅ Fixed elements not resetting in SelectMusic Panels ❕✅ Removed all cmd() references from BGAnimations and Background Effects ❕✅ Restored old .SM 3.x/4.x named styles (bm-* / iidx-* /etc) so they use the modern equivalent (ask if any show up with the \u0026lsquo;unknown style/stepstype\u0026rsquo; in the log) ❕✅ Fix Unjoin player being in the wrong place ❕✅ Add maniax default notes ❕✅ CloseFolder message added to CodeDetector ❕✅ Fix Entries for Techno Mode ❕✅ Fix pump noteskin aesthetics ❕✅ Fix steps played in graph display / combo display ❕✅ Add pump luatimings ❕✅ Fix glider note down ❕✅ Add pump judgements ❕✅ Fixed overflow in BM98 channel calls Hotfix tweak updates ❕ Fixed missing score issue by restoring bugged SM5.1 code ❕✅ Fixed stats.xml glitch due to bad parse - Thanks Zankoku for the assistance on this! ❕✅ Fixed ScreenMessage Overflow on some systems ❕✅ New libsamplerate resampler - faster pipeline ❕✅ Fixed pointless crash on ScreenMessage ❕✅ Fixed crash/hang when using GrooveStats ❕✅ Fixed hang on Simply Love when using Solo ❕✅ Increased RageLog buffering to prevent overflow crashes with lots of files/Key Sounds ❕✅ Reduced Log output on DTX ❕✅ Fixed visual request on GLX/X11 ❕✅ Removed Windows 98 calls ❕✅ Fixed some obscure 2001 DWI files crash ❕✅ Fixed DWI title destroying hash keys ❕✅ Fixed DWI loading\u0026hellip; nothing at all\u0026hellip; ❕✅ Fixed PMS table corruption ❕✅ Fixed BMS hash table creation ❕✅ Fixed SSC/SM hash generation ❕✅ Fixed Sound buffer width sometimes getting to the max ❕✅ Fixed freeze on Jukebox with some non-dance modes ❕✅ Fixed sound scheduler on Windows/Linux ❕✅ NEW Sound tweaks for haste and rate, based off of new code ❕✅ NEW Sound resample preference, leave it alone for now, as it replicates RageSoundResample fine. ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. KNOWN ISSUES: Alpha 4.9.10 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issues as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\n","description":"Release Date: 27th August 2021 \u0026ldquo;Because 4 hotfixes is too far\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I\u0026rsquo;m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds.\nSo let me describe what happened and why we did what we did."},{"id":12,"href":"/releases/A4.9.9HF3/","title":"OutFox Alpha 4.9.9HF3 Build","parent":"Release History","content":" Release Date: 8th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5.1/5.0.12. Sorry about all this hassle, we fixed a wedge of bugs in the loading system, but did not expect everyone to have built massive amounts of stuff on top of these bugs being there, so we have adjusted the system so backward compatible themes / API / ScoreShare / Groovestats etc once more work again.\nThanks for being so patient while we ironed this out! it has been a pain!\nWhy the hotfix rush?! For those curious about the flurry of hotfix patches, we fixed the way the game sees a lot of non-ASCII based file names and folder names. This allowed for us to support accented characters as well as glyphs and japanese characters, alongside with what we found before. This allowed for us to finally fix the bug of \u0026lsquo;one file per folder\u0026rsquo; which was done for DWI way back in 2002, so as we move to a more mode agnostic (we support more than one game mode) we can allow users to have simfiles for different modes/games in the same folder. This was perfect on OutFox specific things - but broke most stuff on 5.1/5.0.12 horribly.\nWhat we had not realised was that a lot of things had been built up on this old bugged behaviour over the years, and that for some reason, there was a hash of the path of the simfile which was being picked up by all these systems. This completely changed the reported hash, and thus score reporting things or sharing things suddenly didn\u0026rsquo;t know their hash and it also didn\u0026rsquo;t help with DWI being so jank it broke even how SM saw some of the charts.\nWe have kept the multiloading system in place. We need this for other modes, however we have adjusted carefully the loading system for SM/SSC/DWI so it matches back to how past versions work, so all of these things can remain intact and working.\nWe\u0026rsquo;ll need to think hard on how to apply the fixes in the future, as we don\u0026rsquo;t really want all of this all over again!\nALL: ❕ Fixed missing score issue by restoring bugged SM5.1 code ❕✅ Fixed stats.xml glitch due to bad parse - Thanks Zankoku for the assistance on this! ❕✅ Fixed ScreenMessage Overflow on some systems ❕✅ New libsamplerate resampler - faster pipeline ❕✅ Fixed pointless crash on ScreenMessage ❕✅ Fixed crash/hang when using GrooveStats ❕✅ Fixed hang on Simply Love when using Solo ❕✅ Increased RageLog buffering to prevent overflow crashes with lots of files/Key Sounds ❕✅ Reduced Log output on DTX ❕✅ Fixed visual request on GLX/X11 ❕✅ Removed Windows 98 calls ❕✅ Fixed some obscure 2001 DWI files crash ❕✅ Fixed DWI title destroying hash keys ❕✅ Fixed DWI loading\u0026hellip; nothing at all\u0026hellip; ❕✅ Fixed PMS table corruption ❕✅ Fixed BMS hash table creation ❕✅ Fixed SSC/SM hash generation ❕✅ Fixed Sound buffer width sometimes getting to the max ❕✅ Fixed freeze on Jukebox with some non-dance modes ❕✅ Fixed sound scheduler on Windows/Linux ❕✅ NEW Sound tweaks for haste and rate, based off of new code ❕✅ NEW Sound resample preference, leave it alone for now, as it replicates RageSoundResample fine. This mini hotfix (HF2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nALL: ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 8th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5."},{"id":13,"href":"/releases/A4.9.9HF2/","title":"OutFox Alpha 4.9.9HF2 Build","parent":"Release History","content":" Release Date: 6th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix (v2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nALL: ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 6th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix (v2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply."},{"id":14,"href":"/releases/A4.9.9HF/","title":"OutFox Alpha 4.9.9HF Build","parent":"Release History","content":" Release Date: 4th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nSigned Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 4th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply."},{"id":15,"href":"/releases/A4.9.9/","title":"OutFox Alpha 4.9.9 Build","parent":"Release History","content":"\rRelease Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE)\n(Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. We do support the #PAN and #VOLUME tags, (shoutout to Jous!) we managed to get this in before the release. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE)\n(Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month."},{"id":16,"href":"/releases/A4.9.8/","title":"OutFox Alpha 4.9.8 Build","parent":"Release History","content":" Release Date: 25th April 2021 \u0026ldquo;An Alpha is never late, it arrives precisely when it means to!\u0026rdquo; (Incorporates Internal Builds 4.9.7.1, 4.9.7.2 and 4.9.7.3)\n(Alpha Statistics - 562 commits, 1,255 changed files with 33,866 additions and 6,663 deletions)\nThis build requires a cache reset if you are on Linux or MacOSX, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.8 slightly longer as it has to rebuild the index, but it is to accomodate the new modes/setup etc. This alpha has tweaked the way the delta clock works, take care to read the information below! If you find that your histogram is slightly skewed one side or the other, like the example below, please take a moment to go into options -\u0026gt; audio offsync and recalibrate your offset. Since 4.9.7GG we have slightly adjusted the renderer pipeline to optimise how we deal with frames within the Kernel Timer of the OS. This is to prepare for new sound/render drivers coming in the near future, but as we\u0026rsquo;ve found with a lot in this game, baby steps to fix little blockers before we do major updates. We also have removed more of the Rage Engine in favour of modern mathematics algorithms, and this has needed a slight tweak to the order on how we draw things.\nThis example above shows the mismatched offset from 4.9.7GG\nUsing the sound offset menu to sync your system, you can get a much tighter response, and this will enable you to chase those fantastics!\nPlease do the sound calibration in dance mode! This may not be available in your custom theme, so do it before you swap over! PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED BACK TO THE F2 KEY!!! (for now as it will be a modders debug menu in the future) New (and some Old!) Modes Update. This (slightly delayed) month\u0026rsquo;s update beings some inner reworkings to the gameplay and modes available to play. We are listing them here for your awareness so you can help test them with us, but they will be officially announced in a future release, so please be aware these new modes ARE NOT COMPLETE, and DO NOT REFLECT the final finished versions for their type, due to the fact most of them have no dedicated theme or style setup as they\u0026rsquo;ve not been touched in 7-15 years. We are going to stop the trend of \u0026lsquo;adding new stuff then doing nothing with it\u0026rsquo; that was so common in the project we are formed from, so that is not going to continue with OutFox. All modes support all the modding systems that dance does, so for those of you that wish to explore, have at it! Most of these modes are sadly neglected and have been without support or a maintainer for upwards of a decade, so be a touch sympathetic to them if you decide to take the time to explore, they will be given the love they deserve.\nFirstly, lets talk about the new modes. These are still a work in progress, but are functional for you to experience.\nIf you wish to autogen charts, you can go to Options -\u0026gt; System Settings -\u0026gt; Project OutFox Settings -\u0026gt; Autogen Steps to ON. Restart your game, and the autogen will make some charts for you to play the new modes. For a better experience, go to the \u0026lsquo;modifiers\u0026rsquo; menu on player options (when you have selected a song, double tap start) and select super shuffle as it will rebalance the notes across the new modes, instead of favouring the left hand side. We will be fixing the auto-generator in a future release, but this works well for now for you to at least have a play.\nThe new keybindings for the modes will be updated shortly on our wiki.\ngddm This is a 9 panel (and 10 panel) drum mode based off of the DTX drum kits and inspired by DrumMania, that supports Midi drums and original controllers. Midi support is only on Windows at this time, but we will have a working driver for all platforms by the end of the summer. Gameplay is played on drums, (or keyboard!) and follows the drum use in a chart.\nThe theming for this mode is incomplete, as is common with a lot of the project at the moment, but again there is enough there to play and experiment with! The editor can be used to create charts, as the new DTX loader for this mode is being built and will be made available in the future. If you have comments or thoughts about this mode, let us know.\ngdgf This mode is based off of the 3 fret/lane guitar mode inspired from Guitarfreaks, however, we have chosen to expand it to include the 5 lane (and a new exclusive 6 lane mode!) for OutFox\u0026rsquo;s inspired mode.\ngdgf uses much tighter timing than the other guitar mode, so take a moment and test yourself if you\u0026rsquo;re feeling brave! This mode will use the new DTX loader when it\u0026rsquo;s complete, but you can also use Autogen or the editor to have a play with some charts in the meantime. Again, we have yet to build a theme for this mode, so please bear with us while we create new stuff for these modes.\ngh This is a 5 lane (and 6 lane coming soon!) mode based off of a collection of popular games that used a guitar styled controller to press frets and strum along to bass and guitar parts of a song. We have added a new .CHART and .MIDI loader, and new note types and internal changes so this mode works without being squished around the old 4K dance engine side.\nThere will be new theme and broken down menu options for this mode in due course, when we introduce a new experience for those who wish to try it.\nWe support Jam Mode where one player can be one play type, and the other can backup or be rhythm. This has the benefit of adding variety into the play, and allows you both to play different parts of the song at the same time. You can do this on several of the styles. One thing to note! You should go into the player options when selecting a song and ensure that you set the modifications to Constant BPM, and set the speed mod to around C450 to emulate the speed from clone hero or similar. At the bottom of this menu, if you go to effects and scroll down towards the bottom, you will also see a new selection of modifiers available exclusively in gh mode: The evaluation and results screens will be reworked in the next version, so ignore the fact it\u0026rsquo;s counting calories and pretending to be dance mode!\npopn This mode has been around for a very long time, but has not really had any support or been looked at since before 2010. It was side-lined into the BMS loader, which actually broke a lot of the needed changes PMS actually uses, and as a result most PMS files with 7 or 9 lanes, would be added to the game as beat 10 lane or 14 lane charts. It was known there were issues with this mode, but we were not aware it was broken as bad as it was.\nSquirrel would like to thank the anonymous japanese player we\u0026rsquo;ll name \u0026ldquo;竹 (Take)\u0026rdquo; girl, for reporting this bug, who wanted to play Nitro\u0026rsquo;s PMS chart of the song on OutFox, but experienced the issue above, and there were also issues with how the keysounds were being loaded for this song in popn mode and she took the time to give a very detailed report in DM on discord, but deleted her account before we could see her username. I thank you a lot for the report, and if you ever read this, please come and say hi in our discord!\nSquirrel took the time to investigate it and it was decided to code a new modernised PMS loader to the game, which now correctly loads PMS songs as they should be. This also removes the oddity and edge crashes when anyone wished to play popn mode on OutFox. This song, \u0026lsquo;竹\u0026rsquo; (Bamboo) charted by Nitro was used as a testbed to debug and ensure it properly works correctly in the game, so we took time to fix it so it would be recognised as a 9 Button PMS file. I\u0026rsquo;d like to thank Nitro for charting this as we would never have had the report which meant we could fix 13 year old bugs on our PMS and BMS loaders, and to 竹 girl for taking the time to bring it to our attention so we could fix this properly and have a restored mode. You can find them at https://twitter.com/NitroX72 - Thanks again Nitro!\nWe also have added 2 new noteskins from our community member Daniel, which really add to the style of the game. We have cat, cat-retro, bun, and bun retro!\n(The theme will be complete for the summer)\nWe have taken some older PMS files from the talented folks at Colorful Channel that also did not parse and work correctly, and these now do show up and play as expected once again.\nAs per the BMS/PMS specification, we also have added for the first time, new #BGA channel 06 (POOR), 07 (BG2) and 0A (LAYER 2) support, and will code these effectively when the theme for this mode is complete. We also support the missing LN# (Long Notes) that have never been in this game before, as well as the #ITEM channels.\nWe will continue to adapt and add the missing functionality from PMS moving forward, now it has it\u0026rsquo;s own loader. This loader now also supports 3 lane (in preparation for battle support), 4 lane for hello pop\u0026rsquo;n (ハロー!ポップンミュージック) and 5/7 lanes for pop\u0026rsquo;n portable (ポップンミュージックポータブル). These have been coded and added to the game, with the 3 lane awaiting new PMS code and subtype item code to be added before it will work. There is also a rumoured 18 lane mode, which I\u0026rsquo;m trying to research. If you know any sources/samples/charts, let Squirrel know!\nbeat Just adding this here to show the \u0026lsquo;miss\u0026rsquo; or #BGA06 POOR layer in action. As is typical, we have no theme\u0026hellip;\nThis needs coding and the proper layout supported, as moving forward we also want to add and support the missing BMS specification as well as add new support via BMSON in the future. It is just part of our pledge to support new and interesting modes moving forwards that we hope folks will enjoy!\ntechno We have added the missing 9panel/18panel support from this mode, as requested by a few folks. There was enough demand to add the extra panel. You can create charts for this on the editor, as we do not believe there are any sims for this yet!\n18 panel example gameplay is here: This mode requires good mobility and that you don\u0026rsquo;t use too much polish as slippery pads can lead to falls!\nA Techno 18 panel in the wild, with a cat token collector!\nChanges to Default Theme Pause Menu This one is important. Due to the need to change the system for the new BGA/Layer system for the BMS/PMS/DTX etc mode support, we have had to adjust the methodology in how the pause menu is drawn by the theme. On the default theme, the hold escape to give up option has been swapped to give an instant display of the menu. Older/OutFox supported themes that are specifically for dance will experience no change here, as we have kept backwards compatibility for them. We will look at re-adding this \u0026lsquo;hold\u0026rsquo; option in the future perhaps if it can be sorted within the new modes.\n** New Feature **\nHold/Roll Tail Type - Lift This function will add a tail note to all holds and lifts, making it so that you have to lift your foot/finger/etc from the end of a hold. This adds a little bit of a challenge for files, and can help with training for foot positions for players that wish to progress to higher chart difficulties. The benefits of removing the foot at the correct time can enable better preparedness for upcoming streams or any technical that the chart may have, which could be lost because of inaccurate foot removal from holds or rolls.\nOn rolls, they have the same behaviour as before, however, the last lift will be done on the \u0026lsquo;beat\u0026rsquo; of that roll. Once more, this trains for better foot stance and movement when a roll ends especially for stamina play. The player will be recorded a normal note \u0026lsquo;miss\u0026rsquo; if the tail lift is not performed at the correct moment.\nThese modifiers are available in all game modes, however, not all noteskins will have the support for them, and some themers will need to add these to their player options menus if they wish to add the availability to their theme.\nKNOWN ISSUES: Alpha 4.9.8 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gdgf mode: The input mode doesn\u0026rsquo;t correctly register strums ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE Nvidia 460 series drivers: Some issues have been reported and we are investigating ❕❌ ISSUE beat/popn some early (pre2013) songs may play some sound samples / keysounds at the wrong speed ALL: ❕✅ Fixed video banners ❕✅ Fixed missing str2int support ❕✅ Added new sanity check for notes in the StepCollector ❕✅ Added multiBaO support stub for future use ❕✅📝Fixed F6+F3+3 restart on screen gameplay crash #23 (Thanks @pcboygames!) ❕✅📝Fixed Video Rates not being in time to beat #220 (Thanks @SilentTempest83!) ❕✅ Fixed DrawMode C style error with some legacy modfiles using -1 ❕✅ Fixed initial scoring tables to ensure fallback scoring was consistent ❕✅🐲 Added Random Unsigned capabilities ❕✅🐲 Added DDR style random generator for BG Anim ❕✅🐲📝 Fix Python2/3/ExtIO/Satellite from sitting in a never ending loop (Thanks Dalcor!) ❕✅🐲📝 Fix Crash on Python2 boards on windows 7 (Thanks Dalcor!) ❕✅🐲 New working touchscreen code ❕✅🐲 Multi-touch finger support ❕✅🐲📝 Fix Menu buttons remapping on restart #278 (Thanks @Areldyb!) ❕✅ New Higher Res icons for the default theme ❕✅🐲 Add new Reflex and SMX HIDAPI driver stubs ❕✅🐲 Add new Reflex Player 2 and SMX Player 2 HIDAPI driver stubs ❕✅ Optimise VideoModeParams ❕✅🐲📝 Fix Math in Tween Sub systems #271 ❕✅🐲📝 Remove Heap and Memory Stack issues with Tween System #272 ❕✅🐲📝 Add Remaining 4 point Tween animation functions #273 ❕✅📝Fixed Game Crash when song preview ends #305 ❕✅📝Removed final batch of cmd in fallback #298 ❕✅📝Removed Pause Menu from the game due to QA #269 ❕✅📝Make Profile information load upon loading #297 ❕✅ Add support for multi-layered press check on mouse input for Lua ❕✅ Fixed \u0026lsquo;sticky\u0026rsquo; mouse keys on some screens not honouring bIsPressed = false ❕✅ Added proper Mouse / Touch co-ordinate system to the game ❕✅ Added 1080/720/480p screen co-ordinate support for non-default / legacy / 5.x themes ❕✅ Added new streamlined pause menu which is not hidden when mods or gimmicks are used ❕✅ Fixed missing pause menu on BMS/PMS ❕✅ Fixed index overflow with some background movies ❕✅ Fixed duplicate start sound playing on edit menu ❕✅🐲 Restored smooth tween back to the game ❕✅ Removed smooth tween from Lua ❕✅ Adjusted behaviour on orient to be more accurate on placement when close to notes ❕✅ Renamed guitar to gdgf to ensure clarity ❕✅📝Corrected \u0026lsquo;moteskin\u0026rsquo; typo (Thanks Moneko!) ❕✅ Fixed Para noteskin ❕✅🐲 Added new upscale filter options for FFMPEG ❕✅🐲 Added new DTX loader skeleton ❕✅🐲 Added new BMS-DTX space support ❕✅🐲 Added new #BGA 06/07/0A support for PMS/BMS files ❕✅🐲 Added new BMP loader stub ❕✅🐲 Added new TJA loader skeleton ❕✅🐲 Added new CHART loader stub inspired by Mikex5 ❕✅🐲 Reworked and rewrote CHART loader to function effectively with OutFox ❕✅🐲 Added new MIDI loader stub inspired by Mikex5 ❕✅🐲 Reworked and rewrote MIDI loader to function effectively with OutFox ❕✅🐲 Fixed initial parsing modes with chart and midi not producing playable charts ❕✅🐲 Added gh Guitar 5/Bass 5 mode to the game ❕✅🐲 Added new note groups: hopo, open, strum ❕✅🐲 Added gh fever system ❕✅🐲 Added gh multiplier system ❕✅🐲 Added gh anchor system ❕✅🐲 Added ability to play as main and backing in gh mode ❕✅🐲 Added new gh noteskins ❕✅🐲 Fixed and rewrote midi parser to support expected note types ❕✅🐲 Fixed and rewrote chart parser to support expected note types ❕✅ Fixed bug with some songs generating NULL after being loaded with the midi loader ❕✅ Added 5 and 6 lane modes to gh mode ❕✅ Added 6 lane mode to gdgf mode ❕✅ Added anchor support to gh mode ❕✅ Fixed holds in gh / gdgf / beat / popn / para fading to black when hit ❕✅🐲 Fixed #LN holds being drawn erratically on beat/popn modes when using older parser ❕✅🐲 Fixed unable to hit \u0026gt;4 pop-kuns at the same time bug in popn ❕✅🐲 Fixed unable to hit row of 9 in a row pop-kuns at end of \u0026rsquo;take\u0026rsquo; in popn ❕✅🐲 Fixed unable to hold more than 2 pop-kuns at the same time bug in popn ❕✅🐲 Added new popn PMS loader rewritten for OutFox ❕✅🐲 Added new popn loader modes and styles missing from the game ❕✅🐲 Fixed Vorbis overflow with some PMS files when loading a mix of .wav and .ogg keysounds ❕✅🐲 Fixed crash on restarting song from pause menu when loading a mix of .wav and .ogg keysounds ❕✅🐲 Added new colour key effect, mainly in preparation for new BGM support ❕✅ Fixed overflow in notefield on techno 16 and 18 styles ❕✅ Fixed merge error in Game manager that lost gddm on some options ❕✅ Added new Vorbis check statements for new formats ❕✅🐲 Fixed missing GL1.1 hook that mis-fired and allowed ancient hardware to crash ❕✅ Added 9/18/20 lane support for missing modes ❕✅ Remove RageVector4 from the game ❕✅ Remove RageVector3 from the game ❕✅ Remove RageMatrix from the game ❕✅ Remove RageColor from the game ❕✅📝Add additional actor support for noteskins (Thanks chairodactyl!) ❕✅ Fix renderer context handover ❕✅ Fix diffuse errors on theme elements ❕✅ Added Techno support for Broadhead ❕✅ Fix duplicated function calls in BMS/PMS parser ❕✅ Modernised Fallback code (Thanks Moru!) ❕✅ Removed broken song selection for gh ❕✅ Fixed Pause Menu System drawing errors when BGM/Modfiles could hide it by accident ❕✅ Fixed Pause Menu counting collection ❕✅ Fixed NextSong unpausing ❕✅ Fixed ScreenMessage handles being corrupted ❕✅ Fixed Crash on HandleMessage ❕✅ Fixed Crash on GetTopScreen() when pause was hidden ❕✅ Fixed White fade in quads on the new fallback updates ❕✅ Added new support for 240/280hz Monitors by adding a new delta clocks call. (You may need to readjust your offsets!) ❕✅ Set fallback to skip caution menu on non dance modes ❕✅ Change the \u0026rsquo;effects\u0026rsquo; menu to Modifiers, as it should be ❕✅ Don\u0026rsquo;t show dance specific stats outside of dance modes ❕✅ Fix spinning requirement on modern-2d ❕✅ Modernise the Lua Mouse Broadcasting methods to be system wide supported ❕✅ Fix libusb causing crashes on linux and mac ❕✅ Remove life punishment from gh mode ❕✅ Modernise note types ❕✅ Fix AV crash when loading more than 254 wav files on a PMS, caused by a pointless ASSERT\u0026hellip; ❕✅ Fix AV crash when loading more than 254 ogg files on BMS/DTX, caused by a pointless ASSERT\u0026hellip; ** New Feature **\n❕✅ Added New VideoUpScaleFilter Preference This is for people who took the time to request this availability in the video renderer. The default value is 0, which will do no filtering. If you have an older system, take the time to experiment and see how it affects your performance, as this will add a little load onto your system.\nThe accepted numbered values are: 0 - none \u0026lt;- Recommended for Rpi/Low end machines 1 - fast bilinear 2 - bilinear 3 - bicubic 4 - X Sharpens + Contrast 5 - Point 6 - Area 7 - Bicublin \u0026lt;- Recommended 8 - Gaussian 9 - Sinc 10 - Lanczos 11 - Spline\nTake your time and experiment with the aesthetic you want for your videos, and your performance of course.\nWindows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ Fixed SDL2 issue where sound would crackle and pop on MK9 cabs ❕✅ Fixed Issue where XInput controllers wouldn\u0026rsquo;t be seen when in arcade pad mode ❕✅ Fixed issue with HIDAPI handles freezing on older Intel OHCI boards ❕✅ Changed 2 options to fix a crash with older Intel GPU chips ❕✅🐲 Fix buffer overflow on Reflex Pad Driver ❕✅🐲 Fix edge crash on 3000+ combo flashes on Reflex Pad Driver ❕✅ Add RTIO driver stub ** New Feature **\n❕✅ Added New UsingArcadePads Preference This is for people who have Python Boards, You can set this to enable the driver to work natively without any freezes. As per the work on \u0026lsquo;starworlds\u0026rsquo; you need to set your preference.ini InputDrivers=Python23IO,SDL. This will set up your board driver, and allow you to use keyboard/XInput/Bluetooth controllers to control the game while you\u0026rsquo;re on your pad. You will need to set UseOldJoystickMapping=0 so the game will initialise the XInput controller driver alongside your Python board.\nThis preference only currently supports the Python23IO driver, but will be expanded to Reflex and other drivers in the future. PLEASE NOTE: You need to add the SDL on your InputDrivers or you will have no keyboard input!!\nWindows XP Service Pack 3 (32bit):\n❕❌ ISSUE Identified the issue that is preventing builds running on this OS, fix is in testing for next alpha ❕❌ ISSUE Identified an issue with compilation that is currently being investigated with FFMPEG Linux:\n❕✅ Added tweaks to the initialisation method for low level windows to prevent X sometimes hanging ❕✅ Added new WayLand stub, full support hopefully next alpha ❕✅ Added LightsDriver Linux Stac, (Thanks Din!) ❕✅ Fixed Edge Crash with ScreenMessage on Ubuntu 18.04/19.x ❕✅ Fixed Rare Game Freeze with ScreenMessage on Mint 16+ ❕✅ Fixed Edge Crash when plugging in Red Octane dance pads on Ubuntu 16.04+ ❕✅ Fix Linux compile for actors MacOSX (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window from never closing on Sierra/High Sierra MacOSX (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅🐲 Fixed issue where playing some songs could crash the M1 Air ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed compilation issue on Raspberry Pi 3 that prevented the game from running for folks with 1.0/1.1 revision boards ❕✅ Fixed bug with Raspberry Pi 3 and Orange Pi that didn\u0026rsquo;t expose 64bit support properly ❕✅ Fixed AARCH64 hooks causing a memory segfault New community content: Colors\n❕✅ New colour scheme Y2K from jack5github ❕✅ New colour scheme DragonFire from Lirodon Music\n❕✅ Added new menu music courtesy of https://sanxion7.com/album/rush (Go see them @ https://twitter.com/SaxxonFox ) NoteSkins\n❕✅ New popn noteskin: cat from Daniel Rotwind ❕✅ New popn noteskin: cat-retro from Daniel Rotwind ❕✅ New popn noteskin: bun from Daniel Rotwind ❕✅ New popn noteskin: bun-retro from Daniel Rotwind ❕✅ New popn noteskin: default from Lirodon ❕✅ New gh noteskin: default from Jousway ❕✅ New gh noteskin: shotrhythm from Jousway ❕✅ New gh noteskin: modern-2d from Lirodon ❕✅ New gdgf noteskin: default from Jousway ❕✅ New gddm noteskin: default from Jousway ❕✅ New techno noteskin: default from Lirodon ❕✅ New global noteskin: broadhead-columns from Lirodon ❕✅ New global noteskin: webbed from Lirodon Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 25th April 2021 \u0026ldquo;An Alpha is never late, it arrives precisely when it means to!\u0026rdquo; (Incorporates Internal Builds 4.9.7.1, 4.9.7.2 and 4.9.7.3)\n(Alpha Statistics - 562 commits, 1,255 changed files with 33,866 additions and 6,663 deletions)\nThis build requires a cache reset if you are on Linux or MacOSX, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4."},{"id":17,"href":"/releases/A4.9.7GG/","title":"OutFox Alpha 4.9.7GG Build","parent":"Release History","content":" Release Date: 23rd February 2021 \u0026ldquo;Good Game, Well Played\u0026hellip;\u0026rdquo; SDL is SUS\nPlease take a moment to understand that there is a lot in this Alpha Release, so please take a moment to read over the changes! LINUX USERS! IF YOU HAVE A BLACK SCREEN ON LOADING DUE TO NOUVEAU/ATI DRIVERS, GO INTO YOUR PREFERENCE.INI AND SET HIGHRES_TEXTURES TO AUTO!!!! HighResolutionTextures=ForceOn needs to be HighResolutionTextures=Auto However, some machines may need it to be HighResolutionTextures=ForceOff You may also need to set your MaxTextureResolution=2048 to MaxTextureResolution=1024 as well.\nGG HotFix patch Thanks to several upstream issues, we\u0026rsquo;ve taken the decision to move the underlying version of the SDL engine back to how it was on 4.9.6, and we\u0026rsquo;ll monitor and troubleshoot the issues some of you guys faced in 4.9.7. We apologise for those on Linux for the issues, and we have now forked our own SDL branch to doublecheck for issues in the future.\n4.9.7GG Specific Fixes\n❕✅📝 Fixed Crash when entering Extended/Course Mode [Dance] when entering options #29 (Thanks Jubo!) ❕✅📝 Fixed System Lockup on certain nouveau drivers when launching the game #209 (Thanks Din!) ❕✅📝 Fixed Segfault on game launch with older ATI cards on linux #208 (Thanks Din!) ❕✅📝 Fixed Crash on Twister OS on the RPi #216 (Thanks snil4!) ❕✅📝 Fixed Smoothlines Issue #164 (thanks natano!) ❕✅📝 Fixed Crash after load screen on RPi 4 64bit #211 (Thanks eudes!) ❕✅📝 Fixed Crash on Calibrate Audio Sync on pump #210 (Thanks Shrmp0, Kaede573!) ❕✅ Fixed Performance Drop due to renderer present context ❕✅ Removed nvidia driver debug code causing some issues ❕✅ Tweaked GLEW to not cause a race condition ❕✅ Fixed bug where window was presenting a GL version not supported by the system ❕✅ Fixed one of my oopsies by leaving in a forced Nvidia GL debug option ❕✅ Force High Res Textures to auto since we\u0026rsquo;re now as size 2048 ❕✅ Force High Res Textures to auto to fix crash on mesa on ARM32 based boards ❕✅ Fixed Crash on Pinebook/RockPi4 due to bad opengl initialisation ❕✅ Downgraded SDL back to OutFox 2.0.13modded ❕✅ Fixed font size and life bar on pump mode ❕✅ Fixed icon sizing on the application itself ❕✅ Add missing visuals for pump mode ❕✅ Fix GLAD being wrongly selected on some systems, causing a crash ❕✅ Added 41 new tween system for further use in the future ❕✅📝 Moved profile size to 20MB #215 (Thanks Kellykato!) ❕✅ Updated docker build system to support new changes OutFox 5.3.0-alpha.4.9.7 Build - 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation. There is no way to \u0026lsquo;force\u0026rsquo; a bit per pixel or bpp in this version, as it\u0026rsquo;s being moved into a different function, that we will re-expose in the next alpha. This has no affect on gameplay or mode changes in the game, however it means if you\u0026rsquo;re on a system we consider historic (\u0026lt;1999) or vintage (2000 - 2007), you may need to force the settings in the preference.ini to set your \u0026rsquo;texture color depth\u0026rsquo; to 16. as always if you have any questions or need help, do not hesitate to reach out to us in our discord server https://discord.gg/hSHPAU37t8\nWe are still working on restoring some settings changed in the operating system in the 20H2, which can limit frame rate, force your GPU to change delta clock accuracy and even affect the kernel poll/tick rate. These issues will be resolved in a future update as we find out more from Windows Dev support/MSDN.\nNvidia Specific Fixes\n❕✅ Fixed Crash with Generating Avatars for profiles due to texture format ❕✅ Fixed Crash with Changing VSync via F3 + 7 (Thanks Shockdude) ❕✅ Fixed Race Condition Crash with debugoverlay (Thanks Shockdude) ❕✅ Fixed Crash with Setting Refresh Rate (Thanks Moneko, Moru) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Texture overflow (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Context Splice problem (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles not clearing correctly on song close (Thanks Moru, Paraph) ❕✅ Fixed Crash caused in method to intialise the OpenGL and GLAD render pipes ❕✅ Forced OpenGL \u0026lt;4.1 as the new driver is unstable on anything newer at this time ❕✅ Fixed Crash with Theme changes from default ❕✅ Add Object Flags to prevent crash with some of the more exotic mod files StepMania Random Number Generation Since the beginning of this project, we have had a few bug reports about the \u0026lsquo;random\u0026rsquo; number generator in the game not being\u0026hellip; well, random at all. We have been spending some of the time in the downtime over the holiday to actually look into this and we discovered that the system was indeed not performing remotely as designed, and has been broken since late 2004. The main bug report was #22 and #59 by @PCBoyGames and well, we discovered that on further investigation, those bugs were caused to a misinterpretation of the way that the random generator was designed and how it should be used in getting/acquiring a random number.\nSuperShuffle/Blender and Soft_Shuffle This was further crushed in it\u0026rsquo;s delivery with shuffle and super shuffle, and anything really that relied on these broken systems. To resolve them we have removed the 1999 era code and modernised it to current modern standards. This has the benefit of completely fixing SuperShuffle (Blender on old versions) and now the distribution is as expected, not to the left.\nThis has the side effect of making the randomness different for each player so bear this in mind if you\u0026rsquo;re going to play! We will add a Mirror function for this so Player 1 = Player 2 in the future.\nPORTAL on the Music Wheel Those of you that use the default theme, we have returned a feature that was oddly missing on 5.3, and that was the Portal slot next to Roulette and Random.\nWhat is Portal? Portal will pick at random from an open folder/group and if you move on it and away from it it will select a different song. If you close your folder so none are open, then portal will pick at random from your whole collection for that mode.\nExtended Mode Most Played should now spawn songs, I sadly have a low level of played songs due to this being a development build, but you can get the general gist of how this system works.\nFolder Courses now spawn a collection as expected, and should be different ONI Mode With the new random modes now working as expected, this has been a welcome quality of life for ONI mode: Artist songs are now shuffled as expected!\nEndless Mode This mode has never been given any love so far from the dev team, so much so even the layout hasn\u0026rsquo;t been finalised! We will look at fixing this and making this mode consistent in the future, so forgive the \u0026lsquo;default\u0026rsquo; looking layout.\nRandom Attacks There were issues with how this methodology was supposed to actually work, as it likely has been broken for so long. Well in this release, we have unique per player random attacks for that extra challenge! The text file RandomAttacks.txt in your /Data file can be filled with fiendish ideas that can help or hinder a player, so do take a moment to be naughty (or nice!) and populate that file with some cool effects!\nWith the removal of the legacy code and the new updates, we can happily say that we have squashed 37 upstream bugs that have been around since the SM 3.0 era.\nRandom Number Generator Specifc Fixes\n❕✅ Fixed Edge Case Crash with random background movies when only one movie was present ❕✅ Fixed Random Movies only selecting 0, 1, or 2, movies in a folder ❕✅ Fixed Random Backgrounds only selecting 0, 1, or 2 backgrounds in a folder ❕✅ Fixed Random Movies showing the same movie on song start ❕✅ Fixed Random Backgrounds showing the same movie on song start ❕✅ Fixed Course Generation on Extended Mode ❕✅ Fixed Course Generation on Oni Mode ❕✅ Fixed Course Generation on Endless Mode ❕✅ Fixed Course Generation on Survival Mode ❕✅ Fixed Shuffle Mode on the Music Wheel for Roulette ❕✅ Fixed Random Stage Seed generation ❕✅ Fixed GameState Seed generation ❕✅ Fixed Seed generation in NoteDataUtil, Allowing for better AutoGen ❕✅ Fixed Kickbox Autogen ❕✅ Fixed Song Shuffle being pushed to duplicates in SongManager ❕✅ Add new RandomInt function to allow for course generation without crashing ❕✅ Add new RandomFloat function for equivalent support for older content using it ❕✅ Fixed Math.Random being linked to a function that didn\u0026rsquo;t work as designed ❕✅ Fixed Random Attacks only selecting a maximum of 5 different during a song ❕✅ Fixed Random Attacks not actually being Random ❕✅ Fixed Random Attacks edge crash on Raspberry pi/M1 due to bad math function ❕✅ Fixed Random Attacks not completely loading the text file and making attacks available to the players ❕✅ Fixed Jukebox Mode not using the full available mode song selection ❕✅ Fixed Jukebox Mode not using the correct random mode for mod selection during playback ❕✅ Fixed Portal Mode not accessing folder based songs ❕✅ Fixed Portal Mode not selecting the available mode song list ❕✅ Fixed Edge Crash on Portal Mode with 2 Players selected ❕✅ Fixed Jitter Generation on BitMapText ❕✅ Fixed Distortion Generation on BitMapText ❕✅ Fixed Array Overflow where returned index was out of bounds ❕✅ Fixed now defunct RandomGen calls in course generation as they are no longer required ❕✅ Fixed bit underflow when Song Index is NULL PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED TO THE INSERT KEY!!! Sorry, we got tired of mishitting it to use F3, and F2 will become a new mod debug menu in a future update, so watch this space.\nTweens We have also added new tween types for actors (30!) that were missing from the game, as they have been popularly requested to be available over the 4 we have in game at the moment. I promised Mr.ThatKid that we\u0026rsquo;d add them, so now they are available for all from Squirrel\u0026rsquo;s dragons branch. New documentation will be available in the Spring for these!\nTween Updates and Fixes\n❕✅🐲 Optimised Tween calls ❕✅🐲 Added Tween fix for legacy tweentypes/selections ❕✅🐲 Added Tweens for EaseInSine/EaseOutSine/EaseInOutSine ❕✅🐲 Added Tweens for EaseInQuad/EaseOutquad/EaseInOutQuad ❕✅🐲 Added Tweens for EaseInCubic/EaseOutCubic/EaseInOutCubic ❕✅🐲 Added Tweens for EaseInQuart/EaseOutQuart/EaseInOutQuart ❕✅🐲 Added Tweens for EaseInQuint/EaseOutQuint/EaseInOutQuint ❕✅🐲 Added Tweens for EaseInExpo/EaseOutExpo/EaseInOutExpo ❕✅🐲 Added Tweens for EaseInBack/EaseOutBack/EaseInOutBack ❕✅🐲 Added Tweens for EaseInCircle/EaseOutCircle/EaseInOutCircle ❕✅🐲 Added Tweens for EaseInElastic/EaseOutElastic/EaseInOutElastic ❕✅🐲 Added Tweens for EaseInBounce/EaseOutBounce/EaseInOutBounce ❕✅🐲 Fixed bug on Sine Curve Drawing on 460+ Nvidia Driver ❕✅🐲 Fixed time based crashes in Actors ❕✅🐲 Fixed SetEffectPeriod crashing with some negative BPM effects ❕✅🐲 Fixed bug with compiler overoptimisation killing the tween curves ❕✅ Added new Actor functions for the eases (Thanks Mr.ThatKid!) And finally back to normal business! ALL: ❕✅🐲 Added new colorkey effect ❕✅ Restored backwards compatible draw modes to support older content ❕✅ Fix Sine function floating point overflow ❕✅ Add new HIDAPI compliant library support for all platforms ❕✅ Fix Orient in reverse ❕✅ Stop game halting on mistapped ` Key while holding tab ❕✅ Add new PolyLineStrip DrawMode ❕✅ Make DefaultFailTypes Translatable ❕✅ Fix Player Unjoin ❕✅ Fix String to Int in reference to #168 (Thanks Natano!) ❕✅ Remove dependency on LibGLU (full removal in next release) ❕✅ Speed up Texgen functions (Thanks Arctic!) ❕✅ Update SDL2 and add OutFox patches ❕✅ Fix rotationy on holds with splines ❕✅ Optimise NoteColorActor/NoteColorSprite to not memory leak ❕✅ Fix MinTNSToHideNotes ordering ❕✅ Fix Field Flip check calling GameState too often ❕✅ Move Field Flip check to a less demanding section of playeroptions ❕✅ Fix int overflow on RageSoundPosMap causing stuttering ❕✅ Add New forward and back debug options for the camera in ScreenDebugOverlay F3 + S and F3 + D Upside down mirrored mode is available if you zoom out far enough! Reset with F3 + E ❕✅ Fix JoyStick and Controller instanceID being reset on hotplugging ❕✅ Fix JOY Index resetting on removal ❕✅ Set Console Command to use Tilde ~ instead of Pause ❕✅ Fix Finger Events on Touch Screens ❕✅ Fix Finger Movement and ensure mouse co-ordinates are taken into consideration if both move at the same time ❕✅ Add LuaScoring - Now fixes a lot of issues with timing systems, and allows for custom ones! ❕✅ Autosave Profiles when the game closes, as sometimes SetUserQuit() is interrupted when the window is closed ❕✅ Readd Portal function to the Music Wheel, welcome back! ❕✅ Fix the AvarageBPM typo - If your mode used AvarageBPM fix this! ❕✅ Cull the ancient PRNG code ❕✅ Fix the edges of the number font used for combo in Soundwaves. ❕✅ Add FAPlus timing mode (similar to existing ECFA, except Fantastic and Fantastic+ are scored the same with no percentage above 100%, and the lower Fantastic window is coloured white in the judgement font) ❕✅ Advanced timing modes are now scored out of 100%. ❕✅ Fix non-module based themes crashing on new SmartTiming entries, when they had their own LuaTiming entries ❕✅ Fix Start sound being played twice on controller menu ❕✅ Add pro-judgements to pump noteskins ❕✅ Fix invalid judgechoice on initialisation ❕✅ Change Arrows to our new Blue Brand Choice Windows 7+:\n❕✅ Fix MSVC warnings due to new windows updates ❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Windows XP Service Pack 3 (32bit):\n❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix edge case bluescreen on some Cmedia Audio sound cards / AC97 codec based cards ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Linux:\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW ❕✅ Add Wayland Preliminary Support - Needs more work yet however! MacOSX (Intel):\n❕✅ Fix SDL compilation ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings MacOSX (Arm M1):\n❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW New community content: Colors\n❕✅ Two new colour schemes from Moneko ❕✅ Some changes to the shadowtip 3D versions from R.O.B.-bot Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 23rd February 2021 \u0026ldquo;Good Game, Well Played\u0026hellip;\u0026rdquo; SDL is SUS\nPlease take a moment to understand that there is a lot in this Alpha Release, so please take a moment to read over the changes! LINUX USERS! IF YOU HAVE A BLACK SCREEN ON LOADING DUE TO NOUVEAU/ATI DRIVERS, GO INTO YOUR PREFERENCE.INI AND SET HIGHRES_TEXTURES TO AUTO!!!! HighResolutionTextures=ForceOn needs to be HighResolutionTextures=Auto However, some machines may need it to be HighResolutionTextures=ForceOff You may also need to set your MaxTextureResolution=2048 to MaxTextureResolution=1024 as well."},{"id":18,"href":"/releases/A4.9.7/","title":"OutFox Alpha 4.9.7 Build","parent":"Release History","content":" Release Date: 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation. There is no way to \u0026lsquo;force\u0026rsquo; a bit per pixel or bpp in this version, as it\u0026rsquo;s being moved into a different function, that we will re-expose in the next alpha. This has no affect on gameplay or mode changes in the game, however it means if you\u0026rsquo;re on a system we consider historic (\u0026lt;1999) or vintage (2000 - 2007), you may need to force the settings in the preference.ini to set your \u0026rsquo;texture color depth\u0026rsquo; to 16. as always if you have any questions or need help, do not hesitate to reach out to us in our discord server https://discord.gg/hSHPAU37t8\nWe are still working on restoring some settings changed in the operating system in the 20H2, which can limit frame rate, force your GPU to change delta clock accuracy and even affect the kernel poll/tick rate. These issues will be resolved in a future update as we find out more from Windows Dev support/MSDN.\nNvidia Specific Fixes\n❕✅ Fixed Crash with Generating Avatars for profiles due to texture format ❕✅ Fixed Crash with Changing VSync via F3 + 7 (Thanks Shockdude) ❕✅ Fixed Race Condition Crash with debugoverlay (Thanks Shockdude) ❕✅ Fixed Crash with Setting Refresh Rate (Thanks Moneko, Moru) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Texture overflow (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Context Splice problem (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles not clearing correctly on song close (Thanks Moru, Paraph) ❕✅ Fixed Crash caused in method to intialise the OpenGL and GLAD render pipes ❕✅ Forced OpenGL \u0026lt;4.1 as the new driver is unstable on anything newer at this time ❕✅ Fixed Crash with Theme changes from default ❕✅ Add Object Flags to prevent crash with some of the more exotic mod files StepMania Random Number Generation Since the beginning of this project, we have had a few bug reports about the \u0026lsquo;random\u0026rsquo; number generator in the game not being\u0026hellip; well, random at all. We have been spending some of the time in the downtime over the holiday to actually look into this and we discovered that the system was indeed not performing remotely as designed, and has been broken since late 2004. The main bug report was #22 and #59 by @PCBoyGames and well, we discovered that on further investigation, those bugs were caused to a misinterpretation of the way that the random generator was designed and how it should be used in getting/acquiring a random number.\nSuperShuffle/Blender and Soft_Shuffle This was further crushed in it\u0026rsquo;s delivery with shuffle and super shuffle, and anything really that relied on these broken systems. To resolve them we have removed the 1999 era code and modernised it to current modern standards. This has the benefit of completely fixing SuperShuffle (Blender on old versions) and now the distribution is as expected, not to the left.\nThis has the side effect of making the randomness different for each player so bear this in mind if you\u0026rsquo;re going to play! We will add a Mirror function for this so Player 1 = Player 2 in the future.\nPORTAL on the Music Wheel Those of you that use the default theme, we have returned a feature that was oddly missing on 5.3, and that was the Portal slot next to Roulette and Random.\nWhat is Portal? Portal will pick at random from an open folder/group and if you move on it and away from it it will select a different song. If you close your folder so none are open, then portal will pick at random from your whole collection for that mode.\nExtended Mode Most Played should now spawn songs, I sadly have a low level of played songs due to this being a development build, but you can get the general gist of how this system works.\nFolder Courses now spawn a collection as expected, and should be different ONI Mode With the new random modes now working as expected, this has been a welcome quality of life for ONI mode: Artist songs are now shuffled as expected!\nEndless Mode This mode has never been given any love so far from the dev team, so much so even the layout hasn\u0026rsquo;t been finalised! We will look at fixing this and making this mode consistent in the future, so forgive the \u0026lsquo;default\u0026rsquo; looking layout.\nRandom Attacks There were issues with how this methodology was supposed to actually work, as it likely has been broken for so long. Well in this release, we have unique per player random attacks for that extra challenge! The text file RandomAttacks.txt in your /Data file can be filled with fiendish ideas that can help or hinder a player, so do take a moment to be naughty (or nice!) and populate that file with some cool effects!\nWith the removal of the legacy code and the new updates, we can happily say that we have squashed 37 upstream bugs that have been around since the SM 3.0 era.\nRandom Number Generator Specifc Fixes\n❕✅ Fixed Edge Case Crash with random background movies when only one movie was present ❕✅ Fixed Random Movies only selecting 0, 1, or 2, movies in a folder ❕✅ Fixed Random Backgrounds only selecting 0, 1, or 2 backgrounds in a folder ❕✅ Fixed Random Movies showing the same movie on song start ❕✅ Fixed Random Backgrounds showing the same movie on song start ❕✅ Fixed Course Generation on Extended Mode ❕✅ Fixed Course Generation on Oni Mode ❕✅ Fixed Course Generation on Endless Mode ❕✅ Fixed Course Generation on Survival Mode ❕✅ Fixed Shuffle Mode on the Music Wheel for Roulette ❕✅ Fixed Random Stage Seed generation ❕✅ Fixed GameState Seed generation ❕✅ Fixed Seed generation in NoteDataUtil, Allowing for better AutoGen ❕✅ Fixed Kickbox Autogen ❕✅ Fixed Song Shuffle being pushed to duplicates in SongManager ❕✅ Add new RandomInt function to allow for course generation without crashing ❕✅ Add new RandomFloat function for equivalent support for older content using it ❕✅ Fixed Math.Random being linked to a function that didn\u0026rsquo;t work as designed ❕✅ Fixed Random Attacks only selecting a maximum of 5 different during a song ❕✅ Fixed Random Attacks not actually being Random ❕✅ Fixed Random Attacks edge crash on Raspberry pi/M1 due to bad math function ❕✅ Fixed Random Attacks not completely loading the text file and making attacks available to the players ❕✅ Fixed Jukebox Mode not using the full available mode song selection ❕✅ Fixed Jukebox Mode not using the correct random mode for mod selection during playback ❕✅ Fixed Portal Mode not accessing folder based songs ❕✅ Fixed Portal Mode not selecting the available mode song list ❕✅ Fixed Edge Crash on Portal Mode with 2 Players selected ❕✅ Fixed Jitter Generation on BitMapText ❕✅ Fixed Distortion Generation on BitMapText ❕✅ Fixed Array Overflow where returned index was out of bounds ❕✅ Fixed now defunct RandomGen calls in course generation as they are no longer required ❕✅ Fixed bit underflow when Song Index is NULL PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED TO THE INSERT KEY!!! Sorry, we got tired of mishitting it to use F3, and F2 will become a new mod debug menu in a future update, so watch this space.\nTweens We have also added new tween types for actors (30!) that were missing from the game, as they have been popularly requested to be available over the 4 we have in game at the moment. I promised Mr.ThatKid that we\u0026rsquo;d add them, so now they are available for all from Squirrel\u0026rsquo;s dragons branch. New documentation will be available in the Spring for these!\nTween Updates and Fixes\n❕✅🐲 Optimised Tween calls ❕✅🐲 Added Tween fix for legacy tweentypes/selections ❕✅🐲 Added Tweens for EaseInSine/EaseOutSine/EaseInOutSine ❕✅🐲 Added Tweens for EaseInQuad/EaseOutquad/EaseInOutQuad ❕✅🐲 Added Tweens for EaseInCubic/EaseOutCubic/EaseInOutCubic ❕✅🐲 Added Tweens for EaseInQuart/EaseOutQuart/EaseInOutQuart ❕✅🐲 Added Tweens for EaseInQuint/EaseOutQuint/EaseInOutQuint ❕✅🐲 Added Tweens for EaseInExpo/EaseOutExpo/EaseInOutExpo ❕✅🐲 Added Tweens for EaseInBack/EaseOutBack/EaseInOutBack ❕✅🐲 Added Tweens for EaseInCircle/EaseOutCircle/EaseInOutCircle ❕✅🐲 Added Tweens for EaseInElastic/EaseOutElastic/EaseInOutElastic ❕✅🐲 Added Tweens for EaseInBounce/EaseOutBounce/EaseInOutBounce ❕✅🐲 Fixed bug on Sine Curve Drawing on 460+ Nvidia Driver ❕✅🐲 Fixed time based crashes in Actors ❕✅🐲 Fixed SetEffectPeriod crashing with some negative BPM effects ❕✅🐲 Fixed bug with compiler overoptimisation killing the tween curves ❕✅ Added new Actor functions for the eases (Thanks Mr.ThatKid!) And finally back to normal business! ALL: ❕✅🐲 Added new colorkey effect ❕✅ Restored backwards compatible draw modes to support older content ❕✅ Fix Sine function floating point overflow ❕✅ Add new HIDAPI compliant library support for all platforms ❕✅ Fix Orient in reverse ❕✅ Stop game halting on mistapped ` Key while holding tab ❕✅ Add new PolyLineStrip DrawMode ❕✅ Make DefaultFailTypes Translatable ❕✅ Fix Player Unjoin ❕✅ Fix String to Int in reference to #168 (Thanks Natano!) ❕✅ Remove dependency on LibGLU (full removal in next release) ❕✅ Speed up Texgen functions (Thanks Arctic!) ❕✅ Update SDL2 and add OutFox patches ❕✅ Fix rotationy on holds with splines ❕✅ Optimise NoteColorActor/NoteColorSprite to not memory leak ❕✅ Fix MinTNSToHideNotes ordering ❕✅ Fix Field Flip check calling GameState too often ❕✅ Move Field Flip check to a less demanding section of playeroptions ❕✅ Fix int overflow on RageSoundPosMap causing stuttering ❕✅ Add New forward and back debug options for the camera in ScreenDebugOverlay F3 + S and F3 + D Upside down mirrored mode is available if you zoom out far enough! Reset with F3 + E ❕✅ Fix JoyStick and Controller instanceID being reset on hotplugging ❕✅ Fix JOY Index resetting on removal ❕✅ Set Console Command to use Tilde ~ instead of Pause ❕✅ Fix Finger Events on Touch Screens ❕✅ Fix Finger Movement and ensure mouse co-ordinates are taken into consideration if both move at the same time ❕✅ Add LuaScoring - Now fixes a lot of issues with timing systems, and allows for custom ones! ❕✅ Autosave Profiles when the game closes, as sometimes SetUserQuit() is interrupted when the window is closed ❕✅ Readd Portal function to the Music Wheel, welcome back! ❕✅ Fix the AvarageBPM typo - If your mode used AvarageBPM fix this! ❕✅ Cull the ancient PRNG code ❕✅ Fix the edges of the number font used for combo in Soundwaves. ❕✅ Add FAPlus timing mode (similar to existing ECFA, except Fantastic and Fantastic+ are scored the same with no percentage above 100%, and the lower Fantastic window is coloured white in the judgement font) ❕✅ Advanced timing modes are now scored out of 100%. ❕✅ Fix non-module based themes crashing on new SmartTiming entries, when they had their own LuaTiming entries ❕✅ Fix Start sound being played twice on controller menu ❕✅ Add pro-judgements to pump noteskins ❕✅ Fix invalid judgechoice on initialisation ❕✅ Change Arrows to our new Blue Brand Choice Windows 7+:\n❕✅ Fix MSVC warnings due to new windows updates ❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Windows XP Service Pack 3 (32bit):\n❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix edge case bluescreen on some Cmedia Audio sound cards / AC97 codec based cards ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Linux:\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW ❕✅ Add Wayland Preliminary Support - Needs more work yet however! MacOSX (Intel):\n❕✅ Fix SDL compilation ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings MacOSX (Arm M1):\n❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW New community content: Colors\n❕✅ Two new colour schemes from Moneko ❕✅ Some changes to the shadowtip 3D versions from R.O.B.-bot Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation."},{"id":19,"href":"/releases/A4.9.6/","title":"OutFox Alpha 4.9.6 Build","parent":"Release History","content":" Release Date: 16th December 2020 \u0026ldquo;Single-Frame Don-Chan is not amused\u0026rdquo; (Taiko no Tatsujin - © 2001 Namco/Bandai Namco Studios)\nThe hot-fix patch that delayed Alpha 5, da-don! We have fixed the crash on startup on windows 8/10, da-don! If you have downloaded the windows build and have a crash, please redownload the new build!\n❕✅ Fixed Crash with generating profiles due to weird windows error (Thanks Ultra for reporting!) ❕✅ Fixed Buggy crash due to Intel driver ❕✅ Removed OpenGL 4.3 availability on Win 8/10 due to update breaking Intel Drivers on Pre 8th Gen Chips Announcing Apple M1 controller support! We have worked through several days and nights of trying to get this to work, and we can happily announce that we are one of the first native apps to have full HIDAPI and XInput support on Apple Silicon!\nThis means you can play with pad/controller, and use some of your jank pre-2010 madness! We are super proud of this achievement and you can now move to the M1 macs without worry of your pads not working.\nTo support this new input methods available to Mac M1, we have a fully native build. No more Rosetta!\nWE HAVE SET THE GAME TO USE HIDAPI BY DEFAULT, DUE TO THE LACK OF SUPPORT FOR XINPUT PADS AT THIS TIME. THIS IS AN SDL2 AND APPLE ISSUE, AND IS NOT FIXED IN 11.1.\nWe have full support for pads in HIDAPI, and XInput pads do work when mapped, however, just to keep it simple, use HIDAPI 👍\nOn the Keymap screen, we added new secondary and tertiary inputs, unintentionally mirroring the @taronuke nitg project. Inspired I think. When we were discussing the feature request, two of the developers were unaware that the input menu for NiTG had 5 input rows. However, I will credit our sister project, I don\u0026rsquo;t want folks to think we take inspired options without reporting the origins, we work together to benefit all of our community.\nYou can now map multiple controllers and keys for players, as by request of several community players.\nALL: ❕✅ Fix adjusted FFMPEG libraries to allow for more supported formats ❕✅ New Game Select Screen ❕✅ New Lua game selector ❕✅ Allow user to select game on first run ❕✅ Fix Pump fakes not being referenced ❕✅ Fix theme changing method now Lua is an option ❕✅ Update Lua to 5.3.6 ❕✅ Restore SM OutFox lexicon for backwards compatibility with cmd() based content ❕✅ Restore SM OutFox %d patch for backwards compatibility (Thanks ArcticFqx!) ❕✅ Fix Lua intregral floats to match current behaviour (Thanks Mr.ThatKid!) ❕✅ Fix noteskin switching after first play ❕✅ Update SDL2 ❕✅ Restore OutFox patches to SDL2 for International and Language support ❕✅ Tighten up animation/screen change timings to be quicker ❕✅ Fix drawing of characters with masking backgrounds ❕✅ Added \u0026rsquo;legacy\u0026rsquo; draw mode to match 5.1/5.0 themer expectation (Slower, but use sparingly!) ❕✅ Added Smoothlines Matrix Options for Backwards Compatibility ❕✅ Added new LineStripM to allow for newer options moving forward, so older content is not broken accidentally ❕✅ Added Allow Player to have controllable vanish point \u0026amp; FOV ❕✅ Added function for controlling the vanish point\u0026rsquo;s X \u0026amp; Y separately ❕✅ Added Allow NotePath to use the secondary DrawMode ❕✅ Fixed Array overflow on P3IO, marquee lights should work as designed now ❕✅ Created a separate FOV+VanishPoint for Player ❕✅ Fixed potential crash in FOV in DrawFunctions ❕✅ Changed \u0026lsquo;cement mixer\u0026rsquo; to \u0026lsquo;super shuffle\u0026rsquo; in mods (blender in SL) ❕✅ Add new Lua patch for random to work as before in older themes/content ❕✅ Fix errant reference and allow math.random(seed) to operate as designed ❕✅ New Feature: New NoteDataUtil random generator to fix shuffle mods ❕✅ Patch other \u0026ldquo;Random\u0026rdquo; generation to work for now - more work is required ❕✅ Reimplement color variable for noteskins ❕✅ Allow LoadActorForNoteSkin to properly use the new color variable ❕✅ Implement NoteSkin draw order metric ❕✅ Make PeakNPS a 2 decimal value ❕✅ Stop Smoothlines option setting selection restarting the game ❕✅ Change option text for input method in the Experimental Menu to HIDAPI/XInput ❕✅ Added missing font fallbacks Windows 7+:\n❕✅ Fixed LibUSB libraries causing game crash ❕✅ Built new LibUSB dlls to ensure compatibility Windows XP (32bit):\n❕✅ Fixed LibUSB libraries causing game crash Linux:\n❕✅ Fixed lib linking with new FFMPEG version MacOSX (Intel):\n❕✅ Fixed Compile with new SDL version ❕✅ Fixed LibUSB not picking up plugged in xbox controllers MacOSX (M1):\n❕✅ Remove Redundant Darwin (\u0026lt;10.9) calls preventing compile on M1 ❕✅ Allow the arm64 arch to be exposed so XCode can actually see our M1 even in Rosetta Brew mode ❕✅ Allow the OS Functions to be taken into consideration on the compile so we can see USB ❕✅ Fix warnings with XCode in the input handler, and updated the plist to ensure we are current ❕✅ Added new libs for LibUSB ❕✅ Added new libs for FFMPEG ❕✅ Fixed SDL2 compile options so dynamic input works! ❕✅ Fixed PlayStation 1/2/3/4/5 controllers not detecting their buttons on HIDAPI mode ❕✅ Fixed Controllers from Pre-2005 not being detected in HIDAPI mode ❕✅ New Database will need to be added to in the future when SDL is updated for mac. ARM/ARM64: (Raspberry Pi etc)\n❕✅ Added new libs for LibUSB New community content: Noteskins\n❕✅ Added new popn noteskin ❕✅ Added outfox-note based noteskin with 192nd support and coloured holds Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 16th December 2020 \u0026ldquo;Single-Frame Don-Chan is not amused\u0026rdquo; (Taiko no Tatsujin - © 2001 Namco/Bandai Namco Studios)\nThe hot-fix patch that delayed Alpha 5, da-don! We have fixed the crash on startup on windows 8/10, da-don! If you have downloaded the windows build and have a crash, please redownload the new build!\n❕✅ Fixed Crash with generating profiles due to weird windows error (Thanks Ultra for reporting!) ❕✅ Fixed Buggy crash due to Intel driver ❕✅ Removed OpenGL 4."},{"id":20,"href":"/releases/A4.9.5/","title":"OutFox Alpha 4.9.5 Build","parent":"Release History","content":" Release Date: 30th November 2020 \u0026ldquo;Step into tha game!\u0026rdquo; (Yakitate!! Japan - © 2004 Sunrise/TV Tokyo)\nThe Alpha of many changes\u0026hellip; Introducing Both At Once! What is Both At Once? Both at once is a popular feature option used in @taronuke\u0026rsquo;s project Not in the Groove. It allows player one to input to player two, while playing mod files. As many of the mod files ported from NitG require two joined players, and before this alpha, the method to enable autoplay for the alternate player was a bit sketchy on SM5, we have taken the time to add this feature to OutFox.\nHow do we use it? Ever accidentally turned on \u0026lsquo;Monkey Input\u0026rsquo; and wondered why the game doesn\u0026rsquo;t work anymore? Well, we removed Monkey Input from the F3 Debug Menu, and in it\u0026rsquo;s place, we have added the BAO option!\nYou need to be in a game menu, and have added 2 players to activate it, (So after you have selected a mode, or on the music wheel) - or you simply will not be able to activate it. This is to protect you having settings or menus operate as both players at once, which could be a pain!\nWhen you are in a game mode, you can add two players and then turn the option on: Press and Hold F3, then press 5\nYou will then be in BAO mode, and can play mod files! (You can find a collection of ported and original files from our community)\n(Screen Select Music - Setting both at once mode on)\nYou can also select menu options and settings in BAO mode for the song, but do bear in mind many mod files set their own speed mods and noteskins:\nYou can then play the game as one player, but it will fill in for two!\nThings to note!\nIf you are player 2, then player 1 will be your \u0026lsquo;ghost\u0026rsquo; and vice versa If there is a mini-game in the mod file, which checks for individual player input, we will not override this with BAO! (This is to mirror NitG Behaviour, and is as designed) The player you are not playing on will be disqualified, and it\u0026rsquo;s score won\u0026rsquo;t be saved, even if it is displayed in the evaluation screen You can turn off and on BAO during a song, using F3 + 5 BAO will be reset when leaving the Select Music Screen, or if the System Switch is pressed On evaluation, you will note player 1 matches player 2:\nWe also have some different pages on the evaluation page - if you press left or right you will change \u0026lsquo;page\u0026rsquo; to reveal more details.\nThe scatter graph in this alpha is drawn a lot more efficiently, which should prevent the slowdown when looking at many presses.\nThe \u0026lsquo;histogram\u0026rsquo; is another highly requested feature for outfox, adapted from the features from https://github.com/Simply-Love/Simply-Love-SM5, we draw it differently in OutFox, as we have the different timing windows.\nNew Actor Multi Vertex Draw options! This alpha also introduces a few new options for controlling your draw commands when creating an actormultivertex(). There were some issues we found in the methodology used in the older code which sometimes allowed the game to fall back to CPU based rendering/calculation for drawing some objects and lines, causing stuttering and arrow lag in screen gameplay, and would cause odd slowdowns in the evaluation screen (as noted by many of our stamina players, when playing marathon mode!)\nWe added two new draw options, and optimised some of the older modes to be less heavy on the game while drawing effects or UI objects.\nNote the VPF (Vertices per Frame) Count. Higher counts mean higher loads on the system: (Before with drawmode_quadstrip) The draw mode has been changed to just use points, dropping the value considerably. (After with the new drawmode_points) Another thing that can be decided in the Lua command is the state of the points, which allow for square or circle points: Square: Circle: New lua commands: self:SetDrawState{Mode=\u0026quot;DrawMode_Points\u0026quot;}:SetVertices(verts)\nNew Draw Modes, we have DrawMode_Points and DrawMode_Lines!\nself:SetPointState(boolean) (so false or true - Alias the Points. if the size is too big, or it is not supported on the GPU\u0026rsquo;s driver, it will be drawn as a square, but won\u0026rsquo;t crash.)\nexample: circle: self:SetPointState(true) square: self:SetPointState(false)\nresizable points: self:SetPointSize(float) - Size in PIXELS of the point to draw. This will often round to a whole number on older systems, but most cards will use subpixel sampling to keep these as designed. For better performance, use a whole number, so 6.0.\nExample: self:SetPointSize(10.5)\nThese are called in your actormultivertex like so:\nlocal amv = Def.ActorMultiVertex { OnCommand=function(self) self:SetDrawState{Mode=\u0026#34;DrawMode_Points\u0026#34;}:SetVertices(verts) self:SetPointSize(10.5) self:SetPointState(1) end } Example drawn with thin DrawMode_Lines: Oh, we built a Windows XP build for those with cabinets.\nTEXTURE FONT GENERATOR V0.33 https://github.com/TeamRizu/Texture-Font-Generator-2020-Squirrel ❕✅🐲📝 Added Hebrew (Thanks Snil4 for the request) ❕✅🐲📝 Set the \u0026rsquo;example\u0026rsquo; glyph to be 0000058 so it is usually displayed by obscure fonts. ALL: ❕✅ Fixed Discord RPC compiling on newer GCC versions ❕✅📝 Readd the minimaid option to the build scripts ❕✅ Fixed miscasts of ActorUtil causing some actors in mods to be drawn with corruption ❕✅ Fixed the Analogue Input Screen so players can exit/enter as designed ❕✅ Fixed DetailStatsEdit Screen (Thanks MDR/Moneko!) ❕✅ Add New Opus SoundReader ❕✅ Add New FLAC SoundReader ❕✅ Add New Wave SoundReader, removed legacy WAV pipe ❕✅ Update MP3 SoundReader pipe ❕✅ Update Ogg SoundReader pipe ❕✅ Update Vorbis and Ogg Libraries ❕✅ Fix CMake building for the sound components ❕✅ Force SoundWriteAhead to 4096 to alleviate some skipping on older systems ❕✅ Force SoundPreferredSampleRate to 44.1khz to fix skipping on older systems ❕✅ Fix Resolution display checking ❕✅ Fix Display Sorting ❕✅ Fix Texture debug log spam, we only need to do this internally, and saves our time going through crash logs ❕✅📝 Add missing Aspect Ratios - Closes TeamRizu/OutFox#179 and Simply-Love/Simply-Love-SM5#214 ❕✅📝 Fix coloured glow missing from ActorFrames - Closes TeamRizu/OutFox#155 ❕✅📝 Fix ScreenGamePlay player resize math calculations - Closes TeamRizu/OutFox#63 (Thanks @JapanYoshi) ❕✅📝 Fix location of field when player zoom is larger than one - Closes TeamRizu/OutFox#63 (Thanks @JapanYoshi) ❕✅ Implement SetBaseLocation ❕✅ Fix Metronome Clap/sound type being quiet and not correct ❕✅📝 Fix Endless mode not working - Closes TeamRizu/OutFox#159 ❕✅📝 Added option to \u0026ldquo;inputfocus\u0026rdquo; preference to \u0026rsquo;not minimise screen on focus loss\u0026rsquo; - (Thanks Digital Dancer!) ❕✅ Added Median page to Screen Evaluation (Page 4) to display the input histogram ❕✅ Fixed Miss offsets being included on calculations in the Median page ❕✅📝 Added 2 decimal places to FPS stats as requested by the community ❕✅ Added Delta Clock second counter, if the log shows \u0026gt;1.00 then DeltaTime() has skipped ❕✅ Fixed misrepresented fonts on Median page ❕✅📝 Added Hebrew Font Maps - (Thanks @snil4 for the request!) ❕✅ Fix font alignment to support Hebrew ❕✅📝 Implemented P3IO Driver - (Thanks @chrispable for the initial work https://github.com/chrispable/stepmania/tree/starworlds) ❕✅📝 Implemented P2IO Driver - (Thanks @chrispable for the initial work https://github.com/chrispable/stepmania/tree/starworlds) ❕✅📝 Implemented PacDrive Linux Driver - (Thanks @lqbombjack for the initial work PR at stepmania/stepmania#1479) ❕✅📝 Implemented ITGIO Linux Driver - (Thanks @DinsFire64 for the commit stepmania/stepmania#1994) ❕✅📝 Added the SM Mainline PacDrive fixes (Thanks @DinsFire64 and @KevinTurner / stepmania/stepmania#2056 and stepmania/stepmania#1819) ❕✅📝 Fixed Win32 Parallel on Dance - (Thanks @ArcticFqx!) ❕✅📝 Set Textures to be 2048 and Hi-Res by default - Closes TeamRizu/OutFox#166 (Thanks @natano!) ❕✅📝 Set Smoothlines behaviour to mimic 5.1 by default - Closes TeamRizu/OutFox#164 (Thanks @natano!) ❕✅📝 Set Pad Input behaviour to mimic 5.1 by default - Simply-Love/Simply-Love-SM5#214 (Requested by @natano!) ❕✅ Fix fonts not falling back onto provided extended UTF-8 glyphs. ❕✅📝 Fix bad bitmap textures causing a dialogue message which cannot be cleared - Closes TeamRizu/OutFox#157 (Thanks @NekoIncardine!) ❕✅ Fixed Bad Math calls on the Display Draw pipe for Actors ❕✅ Fixed an issue where a few edge case systems could cause a crash due to a malformed check in the GLAD Renderer ❕✅ Resized the fonts on stats overlay ❕✅ Fixed several type warnings on stats overlay ❕✅ Added both at once on basic input types (inspired from @TaroNuke\u0026rsquo;s NitG Project) ❕✅ Fixed both at once being set and causing menu lock options ❕✅ Fixed both at once messing up the system switch menu ❕✅ Fixed option in screen select music that sometimes caused the game to crash on some mod files ❕✅ Forced 2 players joined to enable both at once ❕✅ Forced non playing player on both at once to be disqualified ❕✅ Modernise and optimise the screen options menu system ❕✅ Optimise the menu up/down process for both at once ❕✅ Match difficulties on screen select music for both at once ❕✅ Fixed issues with both at once being on for screens which really do not work well for this feature ❕✅ Make the BMS loader smarter at finding a preview to play ❕✅ Renamed the old SM5 beat default noteskin to defaultsm5 ❕✅ Fixed the issue where INVALID_PLAYER_OPTION would produce a dialog, it now warns in the log file ❕✅ Fixed bug in the loading window where course counters could produce a value above 100% ❕✅ Added new CI options to build nightly packages for testers moving into 2021 ❕✅ Fixed issue with music sometimes not playing after ScreenGamePlay ❕✅ Add a background switching system to SoundWaves ❕✅ Change combo milestone animation to match current design paradigms ❕✅ Fixed outdated \u0026lsquo;hexagon\u0026rsquo; banners ❕✅ Fixed issue where returning from pause could trigger transitions to be run ❕✅ Fixed metronome being the same sound as clap ❕✅ Fixed a rare Access Violation being triggered due to an operating system adjustment of the sound buffer ❕✅ Fixed an issue with the USB IO Driver sometimes hanging the game ❕✅ Added the defaults that modes that should be upside down (down scrolling) ARE upside down ❕✅ Fixed a bug which caused a crash in the mp3 driver - (Thanks mattbisme!) ❕✅ Added new ActorMultiVertex options to allow for wider draw methods ❕✅ Optimised the drawing methods from AMV calls ❕✅ Fixed smooth lines causing lag on some mod files ❕✅ Added AMV points to the lua command ❕✅ Added AMV pointsize to lua ❕✅ Added AMV lines to the lua command ❕✅ Added the lua option to set points to circle or square ❕✅📝 Fixed FFMPEG Memory leaks due to a bug in the way the Surface was allocating textures - Closes TeamRizu/OutFox#85 (Thanks @EngineMachiner!) ❕✅📝 Fixed FFMPEG Memory leak causing the game to crash with GL_OUT_OF_MEMORY - Closes TeamRizu/OutFox#153 (Thanks @igormclven!) ❕✅ Added new debug information for GL\u0026rsquo;s line and point width as it is dependent on graphics hardware (if people have a tiny line) ❕✅ Modernised the scatter graph to use the new points system ❕✅ Fixed IsUsingWidescreen() ❕✅ Added IsUsingPortrait() ❕✅ Fixed DrawTap creation to be more streamlined ❕✅ Separate loading of notes per Routine and Regular ❕✅ Fixed single frame movies/images that use FFMPEG to work as designed ❕✅ Fixed FFMPEG not being freed correctly when being used with legacy DivX/XViD/AVI/MPEG files from prior to 2008 ❕✅ Fixed regression in sound readers defaulting to the beginning of the song on the music wheel (Thanks Moneko/Moru) ❕✅ Fixed FFMPEG thread sometimes speeding up on movie looping ❕✅ Fixed FFMPEG resize/scale from causing skips on older hardware ❕✅ Fixed method where the game forgets that background is an effect ❕✅ Fixed FFMPEG sprite allocation from being leaked ❕✅ Fixed Context generation leaking memory ❕✅ Fixed float overflow in RageSoundPosMap ❕✅📝 Fixed regression that prevented the background from showing when a file was missing - Closes TeamRizu/OutFox#172 (Thanks @SheepyChris!) ❕✅ Fixed library version mismatch with some of the newer compiled libs ❕✅ Fixed centering of player in demonstration screen. ❕✅ Fixed issue with compilation of AV1 support ❕✅ Fixed crash issue in ScreenSelectLanguage ❕✅ Fixed issue with player scaling code being set incorrectly ❕✅ Added GetTexture for FFMPEG to fall back to image instead of a null movie overlay on screen gameplay ❕✅ Added a proper pause mode to movies, so the DeltaTime() no longer slips while the game is paused. ❕✅ New Feature: Ability to change SOUNDMAN volume in lua ❕✅ New Feature: Added fade option to SOUNDMAN Windows 7+:\n❕✅ Fixed NSIS branding and missing items ❕✅ Added the beginnings of 64bit windows support ❕✅ Segregated calls and API objects for 64bit windows support ❕✅ Removed the deprecated files inside the win32 arch util folder ❕✅ Fix Midi input mapping missing extended button types ❕✅ GetArch() now returns windows version Windows XP (32bit):\n❕✅ Yea, we went here ❕✅ Fixed FFMPEG generation so the formats supported match Win 7 ❕✅ Fixed Memory leak causing the game to crash with GL_OUT_OF_MEMORY ❕✅ Fixed uninitialised locale crashing the game and preventing startup ❕✅ GetArch() now returns Windows XP Linux:\n❕✅ Fix compile for file operations ❕✅ Fix build scripts to correctly label the bundled libraries - Closes TeamRizu/OutFox#165 (Thanks natano!) ❕✅ Fixed libusb0 being built against the wrong version of libraries MacOSX (Intel):\n❕✅ Fixed libusb0 libs ❕✅ Fixed FFMPEG sometimes not initialising for supported ❕✅ Fixed FFMPEG Memory leak causing the game to freeze MacOSX (M1):\n❕✅ Fixed FFMPEG support for arm64 ❕✅ Fixed Opus Support ❕✅ Fixed LibUSB support ❕✅ NATIVE BUILD - NO NEED FOR ROSETTA! ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fixed uninitialised locale crashing the game and preventing startup New community content: Noteskins\n❕✅ New 3D versions of Outfox, Broadhead, and Shadowtip noteskins by R.O.B.-Bot ❕✅ Added new BMS noteskin ❕✅ Added new 3DDX note types to crystal Colours\n✅ Alien Alien by Moneko Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 30th November 2020 \u0026ldquo;Step into tha game!\u0026rdquo; (Yakitate!! Japan - © 2004 Sunrise/TV Tokyo)\nThe Alpha of many changes\u0026hellip; Introducing Both At Once! What is Both At Once? Both at once is a popular feature option used in @taronuke\u0026rsquo;s project Not in the Groove. It allows player one to input to player two, while playing mod files. As many of the mod files ported from NitG require two joined players, and before this alpha, the method to enable autoplay for the alternate player was a bit sketchy on SM5, we have taken the time to add this feature to OutFox."},{"id":21,"href":"/releases/A4.9.1/","title":"OutFox Alpha 4.9.1 Build","parent":"Release History","content":" Release Date: 31st October 2020 \u0026ldquo;Spooky Scary Bugs\u0026rdquo; Turn smoothlines off to get a better play experience if your lines are being drawn thickly! TEXTURE FONT GENERATOR V0.32 ❕✅🐲📝 Added Armenian #136 (Thanks @AngledLuffa!) ❕✅🐲📝 Added IPA Extended ❕✅🐲📝 Added Spacer Modifiers #126 (Thanks @EngineMachiner!) ❕✅🐲📝 Fixed Japanese overwriting other characters #123 (Thanks @JapanYoshi!) ❕✅🐲 Changed a few methods of Cyrillic to be better supported in the future ALL: ❕✅🐲 Fixed Font Interpretations, removed [main] ❕✅ Added new internal \u0026lsquo;ToUpper()\u0026rsquo; on default themes ✅ Returned branding to use Stepmania once again ❕✅ Regenerated fonts for Soundwaves ❕✅📝 Added Allow InputBackgroundEvents for controllers preference (Thanks digitaldancer on Stamina Nation!) ❕✅ Fixed ImageCache memory bloating ❕✅📝 Added display version on evaluation screen (Thanks Jummy!) ❕✅📝 Fixed recursive scaling of TimingWindows #138 (Thanks pucgenie, neowzeo, maractus) ❕✅ Fixed new methods on Ragesurface/Ragedisplay ❕✅ Fixed FFMPEG crashing ❕✅ Moved xyz alias into fallback so it can be more useful ❕✅📝added tween tweaks (true) from upstream PR https://github.com/stepmania/stepmania/pull/2062 (Thanks @FMS_Cat) ❕✅📝added music wheel code from upstream PR #27 https://github.com/stepmania/stepmania/pull/2002 (Thanks @RhythmLunatic) ❕✅ Fixed musicwheel quirks ❕✅ Fixed AMod issue where having a second player would override Player 1 timing (Thanks @JapanYoshi!) ❕✅ Allow random movies to play when video not available ❕✅ Fixed cursong being used instead of cursteps to get displaybpms ❕✅ Fixed banners playing too fast #129 Windows:\n❕✅ add minimaid back to mainline. ❕✅📝added new serial lights driver upstream PR https://github.com/stepmania/stepmania/pull/2041 (Thanks @skogaby!) ❕✅ Add MIDI input support that works ❕✅ Add new wider MIDI input spectrum ❕✅ Add Rotary MIDI input support ❕✅ Add Crossfader MIDI input support ❕✅ Add Acceleration/Deceleration MIDI support (Disc spinning) ❕✅ Add MIDI Extra Support ❕✅ Add MIDI lua messages ❕✅ Add MIDI analogue lua support Linux:\n❕✅ add minimaid back to mainline. ❕✅ add JACK back to mainline. ❕✅ fix discord building on newer GCC (\u0026gt;8.4) MacOSX:\n❕✅🐲 Nonion Rings. Community Content: Graphics\n✅ New sharper grade graphics by MDR ✅ New Narumi avatars #115 ✅ New noteskins to address #111 #112 Colours\n✅ Dark Mode by infinitephantasm ✅ Chaos by moruzerinho6 ✅ Ice by PCBoyGames ✅ Wave by AppleArcade120 Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 31st October 2020 \u0026ldquo;Spooky Scary Bugs\u0026rdquo; Turn smoothlines off to get a better play experience if your lines are being drawn thickly! TEXTURE FONT GENERATOR V0.32 ❕✅🐲📝 Added Armenian #136 (Thanks @AngledLuffa!) ❕✅🐲📝 Added IPA Extended ❕✅🐲📝 Added Spacer Modifiers #126 (Thanks @EngineMachiner!) ❕✅🐲📝 Fixed Japanese overwriting other characters #123 (Thanks @JapanYoshi!) ❕✅🐲 Changed a few methods of Cyrillic to be better supported in the future ALL: ❕✅🐲 Fixed Font Interpretations, removed [main] ❕✅ Added new internal \u0026lsquo;ToUpper()\u0026rsquo; on default themes ✅ Returned branding to use Stepmania once again ❕✅ Regenerated fonts for Soundwaves ❕✅📝 Added Allow InputBackgroundEvents for controllers preference (Thanks digitaldancer on Stamina Nation!"},{"id":22,"href":"/releases/A4.9.0HF/","title":"OutFox Alpha 4.9.0/HF Build","parent":"Release History","content":" Release Date: 7th October 2020 \u0026ldquo;The new Glyph System pleases Imhotep\u0026rdquo; (The Mummy - © 1999 Universal Pictures)\nTurn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.6 September 30th 2020 \u0026ldquo;The options just do nothing\u0026hellip;\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4.8.6 and 4.9.0 are together in this update.\nWe have sorted out the issues with the misunderstanding of the StepMania project name and this will return to the project for the next alpha, with a re-brand. It was all done amicably, and it had to be acted upon due to it being reported, so no problems there.\nFonts and Language: This month sees a pretty big revamp to the font system used in OutFox. Due to the numerous issues we have had reported to us since our project began, (missing symbols, missing characters, missing language support, missing Korean and Japanese support, etc), We have rewritten the font maps.\nWhat this means for you? - Well, the fonts will be sharper as they are newer now, and you can generate the correct fonts for theming and such for OutFox in the future. We have a new repository for the Texture Font Generator which is a side project from @Scraticus and @Hanubeki to bring more charmaps to the game. These can be regenerated to support 5.0/5.1 and even 3.9/ITG era with a bit of work. If you do generate new fonts, please check out the guide that will be up on the MoonDance site shortly. We also have revamped the fonts that are used by mod files to be sharper and to add backwards support for the new fonts. (Beware of [main] duplication causing squares to be displayed by the game!). There is a new release of the Texture Font Generator, which includes new euro support, and legacy mapping generation for prior versions of StepMania.\nTEXTURE FONT GENERATOR V0.2 / OutFox Alpha 4.9.0 - ❕✅🐲📝 Fixed Missing Korean Basic Characters #109 (Thanks AngledLuffa!) ❕✅🐲 Fixed Missing Symbol Characters from Kanji ❕✅🐲 Fixed Missing Characters from Korean Hangul ❕✅🐲 Fixed Missing Characters from Kanji JIS ❕✅🐲 Fixed Missing Characters from Kanji Hojo ❕✅🐲 Fixed Missing Characters from Kanji GBK for Traditional Chinese ❕✅🐲 Fixed Missing Characters from Cyrillic and Extended Latin ❕✅🐲 Regenerated outline fonts for the theme and mods ❕✅🐲 Added Characters from Legacy maps - (ASCII/CP1252/ISO8859) ❕✅🐲 Fixed Build system on windows 10, but the MFC system needs a bit of hacking - compiled binaries are available to grab We have also have had to add a new set of Lua Commands for this alpha. (See #121) We have been aware of this for some time, but delayed the alpha a touch so they were ready. For backwards compatibility string.upper() and string.lower() have not been touched.\nThe new lua commands in this build are ToUpper() and ToLower().\nTo display upper case text - done on the troublesome polish characters: Text=ToUpper(Screen.String(\u0026quot;Start To Join\u0026quot;)) produces:\nWe even can do a proper UTF friendly lower case as well: Text=ToLower(Screen.String(\u0026quot;Start To Join\u0026quot;)) USING ALT+ENTER TO SWITCH IN AND OUT OF FULLSCREEN: We have added the option to all operating systems to be able to access this function, but be warned: the SDL window does not scale modes which your Monitor does not support in fullscreen. It will draw a border around the window if the mode is not a suitable mode. You can find these modes in the log.txt, as SDL is kind enough to display everything supported there.\nWe have allowed the other OS\u0026rsquo;s this function for familiarity and the fact we didn\u0026rsquo;t think it\u0026rsquo;d work on mac/linux, but it did.\nALL:\n❕✅ Set locale for the game to use en_US.UTF-8 for now - This will be extended soon ❕✅ Fix Missing font paths in the default theme ❕✅ Remove Lua macro which did nothing to the font display ❕✅📝 Fixed Bug with BeginnerHelper hiding/unhiding backgrounds causing unwanted behaviour. #104 \u0026amp; #105 (Thanks @SilentTempest83 !) ❕✅📝 Fixed crash with resizing window on some older windows versions (7/8) #102 (Thanks @Emilovesdoubles) ❕✅📝 Fixed Lirocode in Hold / Roll anchors #106 (Thanks @JapanYoshi!) ❕✅📝 Fixed Lirocode in Note colours and 24th\u0026rsquo;s being wrong. #111 \u0026amp; #112 (Thanks @AngledLuffa!) ❕✅📝 Fixed missing Narumi Mascot avatar images not being available as usable avatars in game #115 (Thanks @Joehuu!) ❕✅📝 Added Precision Dance Pad config entry to our GameControllerDB #117 (Thanks @AngledLuffa!) ❕✅ Fixed Timing windows for ITG/ITG Advanced and ECFA ❕✅ Fixed Alt+Enter leaving weird screen blackness on 75% of the space ❕✅ Fixed lua timing tables and optimised the loading method ❕✅📝 Fixed bug with toasties loading on the Machine Sync causing an AV (Thanks @JapanYoshi!) ❕✅📝 Fixed bug with left over commands being available to the Machine Sync system causing edge crashes (Thanks @JapanYoshi!) ❕✅📝 Fixed issue with missing UTF string conversion on the loading window (Thanks @Hanubeki / @JapanYoshi!) ❕✅📝 Added correct font (Code2000) support in loading window (Thanks @Hanubeki / @JapanYoshi!) ❕✅ Added preview to progress bar on screenselectmusic ❕✅ Fixed audio preview on song select #65 (Thanks @SHRMP0!) ❕✅ Fixed font presentation for soundwaves and default/fallback ❕✅ Fixed missing/incorrect font redirection files ❕✅ Fixed missing constructors on ActorFrameTexture ❕✅🐲 Beginning of making SM Locale Aware ❕✅🐲 Fix overflow on font index now we are using proper UTF-8 ❕✅🐲 Fix archaic practice on wide strings in font manager ❕✅🐲 Fix arithmetic overflow in rageutil preventing correct bytecode allocation ❕✅ Fix table indexing for high score entries overwriting previous results being shown ❕✅ Rename the 5.3 default noteskin to reinstate the 5.0 default for backwards compatibility support ❕✅ Make minimenu rows place on native position Windows:\n❕✅🐲📝 Removed potential crash on invalid DPI scaling detection - part of #88 (Thanks AngledLuffa!) ❕✅🐲 Fixed Alt+Enter not being able to leave full-screen causing the need for a restart ❕✅ Fixed uninstaller missing shortcuts due to windows 1903 update Linux:\n❕✅🐲 Fixed Alt+Enter not being able to leave full-screen MacOSX:\n❕✅🐲 NEW FEATURE: Added Alt-Enter full-screen switch ❕✅🐲 Fixed missing locale selection for \u0026ldquo;LC_ALL\u0026rdquo; causing a crash ARM/ARM64: (Raspberry Pi etc)\n❕✅🐲 NEW FEATURE: Added Alt-Enter full-screen switch ❕✅🐲 Fixed EGL initialisation on RPi 3B/4 trying to call the wrong driver ❕✅🐲 Fixed missing locale selection for \u0026ldquo;LC_ALL\u0026rdquo; causing a crash Community Content: Colours\n✅ Dark Mode by infinitephantasm ✅ Chaos by moruzerinho6 ✅ Ice by PCBoyGames ✅ Wave by AppleArcade120 Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 7th October 2020 \u0026ldquo;The new Glyph System pleases Imhotep\u0026rdquo; (The Mummy - © 1999 Universal Pictures)\nTurn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.6 September 30th 2020 \u0026ldquo;The options just do nothing\u0026hellip;\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4."},{"id":23,"href":"/releases/A4.8.5/","title":"OutFox Alpha 4.8.5 Build","parent":"Release History","content":" Release Date: 19th September 2020 \u0026ldquo;A Change is Afoot!\u0026rdquo; Please note if your Download did not include HF in the title, download the en.ini and put it in your installation folder at the following path windows: (X:\\Outfoxfolder\\Appearance\\Themes_fallback\\Languages) macosx: (Outfoxfolder\\Appearance\\Themes_fallback\\Languages)\nOr just download the HF version now we have repackaged. Turn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.3 September 08th 2020 \u0026ldquo;Throw us a bone (index)\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4.8.3 and 4.8.5 are together in this monthly update.\nThere has also been a need to temporarily remove the \u0026lsquo;StepMania\u0026rsquo; name from the project due to a complaint received and we have been requested to rebrand the project to Project OutFox until we sort out the paperwork.\nALL:\n❕✅🐲📝 Fixed Bug with Loading Window seemingly \u0026lsquo;freezing\u0026rsquo; when indexing files #87 (Thanks Moru/AngledLuffa!)\n❕✅🐲 Fixed Crash on changing theme\n❕✅🐲 Fixed SoundManager crash on para/beat mode swap\n❕✅🐲 Fixed Crash on changing game mode (Thanks Omicron!)\n❕✅🐲📝 Fixed Edge Case Lua Overflow Crash (Thanks JapanYoshi!)\n❕✅🐲 Fixed Memory leak in Loading Window, when user has 15000 or more simfiles (Thanks Jubo!)\n❕✅ Added Column specific modifiers handling nil to activate on all columns\n❕✅ Fixed the Bone Index being de-referenced and causing an Access Violation. #94 (Thanks EngineMachiner!)\n❕✅ Fixed Random Movies failing to obtain a proper seed\n❕✅ Fixed undefined behaviour causing some delays on initial playback\n❕✅ Fixed math overflow in ffmpeg renderer\n❕✅ Fixed memory leak in ffmpeg playback\n❕✅ Fixed lockup/freeze when 1 movie is selected for random movies\n❕✅🐲 Fixed issues with math overflow in Actor Framework\n❕✅ Added a better implementation of HoldTriggerNotes\n❕✅📝 Fixed Crash when taking screenshot in fullscreen mode. #99 (Thanks JapanYoshi!)\n❕✅📝 Fixed Crash with \u0026lsquo;Too many open files\u0026rsquo; #92 (Thanks Level99OCR/Maractus/Jubo!)\n❕✅ Remove the last references to older dependencies in CMake to prevent bad compilation problems\n❕✅ Turn off the Haptic Vibrations on supported controllers on startup\n❕✅ Fix the random engine to ensure we actually get a proper random seed\n❕✅ Optimise several variable systems for C++ 17\n❕✅ Fixed RageUtil causing some micro-stutters and widen code-page support\n❕✅ Fixed Player vanish point not being set correctly\n❕✅ Fixed RageDisplay casts rounding incorrectly\n❕✅ Fixed Luna Definitions for the singletons\n❕✅ Fixed the screen message system bug which is 16 years old\n❕✅ Fixed missing SDL Video include and reference use\n❕✅ Fixed AMod Exploit causing an overflow in Beat Detection (Thanks JapanYoshi!)\n❕✅📝Fixed Negative Approach rates through modstrings crashing the game #61 (Thanks PCBoyGames!)\n❕✅📝Fixed missing difficulty types from other unsupported game (MungyoDance) being missed in OutFox #76 (Thanks PCBoyGames!)\n❕✅📝Fixed skipping in MP3 playback causing crashing in Windows and Linux #75 (Thanks LightningSkunk!)\n❕✅ Add Judgement scaling into SmartTiming\n❕✅ Fixed incorrect function type in RageModelGeometry\n❕✅ Fixed ftruncf and Quantize not setting the right return type\n❕✅ Fixed issue where some noteskins were breaking due to a fallback error (Thanks Moru!)\n❕✅ Fixed explosion on Lambda noteskin (Thanks Moru!)\n❕✅ Fixed incorrect bone initialisation causing crashes on ARM and Linux\n❕✅ Fixed incorrect bone declaration type causing crashes on ARM and Linux\n❕✅ Fixed FFMPEG buffers not clearing from memory correctly\n❕✅ Fixed bug in the 5.0 beginnerhelper\n❕✅ Fixed bug with AMod not being initialised correctly in some cases (This caused a crash sometimes in Simply Love)\n❕✅ Adjusted a few duplicated menu options\n❕✅ Fix Edge case bug with beginnerhelper causing black screens\n❕✅ Fixed Metrics so grade weights are correctly measured against dance points\n❕✅📝 NEW FEATURE: Set Thickness of ArrowPath (Experimental Settings)\n❕✅📝 NEW FEATURE: Enable GLBlend/Points for ArrowPath (Experimental Settings)\n❕✅📝 NEW FEATURE: OptionRow change of choice Externally #96\n❕✅📝 NEW FEATURE: ContinueHold for para mode, allows for a hold to never fail if it is picked up again by the player\n❕✅📝 NEW FEATURE: ShowMouseCursor - ALL OPERATING SYSTEMS SUPPORTED! Hides the mouse cursor in play. Works in fullscreen, borderless and windowed modes (Experimental Settings)\nWindows:\n❕✅ NEW FEATURE: Better Memory detection ❕✅ Fixed Win32 calls causing odd lag on some sound cards ❕✅ Fixed NSIS Installer missing newer items Linux:\n❕✅ NEW FEATURE: Add EGL Preference for Linux Users. Disabled by default to prevent the missing \u0026rsquo;libopengl.so.2\u0026rsquo; errors. Set if you have a distro that supports it, as it is faster. MacOSX:\n❕✅ Fixed Input issue in Xinput #79 (Thanks omgitsraven!) ARM/ARM64: (Raspberry Pi etc)\n❕✅ NEW FEATURE: Add EGL Preference for Linux Users. Disabled by default to prevent the missing \u0026rsquo;libopengl.so.2\u0026rsquo; errors. Set it to true for ARM! Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 19th September 2020 \u0026ldquo;A Change is Afoot!\u0026rdquo; Please note if your Download did not include HF in the title, download the en.ini and put it in your installation folder at the following path windows: (X:\\Outfoxfolder\\Appearance\\Themes_fallback\\Languages) macosx: (Outfoxfolder\\Appearance\\Themes_fallback\\Languages)\nOr just download the HF version now we have repackaged. Turn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.3 September 08th 2020 \u0026ldquo;Throw us a bone (index)\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams."},{"id":24,"href":"/releases/A4.8.2/","title":"OutFox Alpha 4.8.2 Build","parent":"Release History","content":" Release Date: 19th August 2020 \u0026ldquo;Release the (Git)Kraken!\u0026rdquo; Hotfix MK2 Build! These bugs were fixed about 3 weeks ago, however due to a bad branch merge, GitKraken did not recognise the commits were actually missing, and they were added into the main code branch which got to release. The only way to even recognise this bug is if you had \u0026gt;100,000 songs and over 18,000 MP3 files.\n❕✅🐲 Fixed Bug with locking up on loading songs (Thanks Kaede!) ❕✅🐲 Fixed Crash with too many handles hitting ulimits on linux (Thanks Kaede!) ❕✅🐲 Fixed Bug with MP3 driver creating two handles per file (Thanks Kaede!) ❕✅🐲 Fixed Crash on Windows due to I/O error (Thanks Kaede!) ❕✅🐲 Fixed Crash with MP3 driver not seeking or reporting position (Thanks Keade!) ❕✅🐲 Fixed Bug with missing error checking on Mp3 Driver (Thanks Jose_Varela and Kaede!) ❕✅🐲 Fixed Crash with NTFS journal errors on NTFS-3G Driver hitting ulimits on Linux (Thanks Kaede!) ❕✅🐲 Fixed Edge Crash with invalid characters in RageUtil (Thanks Jubo!) ❕✅🐲 Fixed Overflow in log buffer due to missing Unicode references ❕✅🐲 Fixed Odd behaviour with sound layering. Issue #62 (Thanks Mr.ThatKid) ❕✅🐲 Fixed Missing/Corrupted fonts on loading Window (Thanks Moneko, Hanubeki) ❕✅🐲📝 Fixed Bug with missing dylib on MacOSX 10.16.5 Issue #67 (Thanks PianoGal/Sebychu/garfieldnate) ❕✅🐲📝 Fixed Crash with loading window on MacOSX 10.16.5 Issue #67 (Thanks PianoGal/Sebychu/garfieldnate) ❕✅🐲 Removed unused libraries due to new MacOSX 10.16.5 update ❕✅🐲📝 Fixed missing glyphs on some simfiles being displayed (Thanks PCBoyGames/Jubo) ❕✅🐲📝 Fixed missing controller mapping Issue #70 (Thanks Kaede!) ❕✅🐲📝 Fixed Crash in the custom controller screen [Issue #72] (https://github.com/TeamRizu/OutFox/issues/72) (Thanks ScottBrenner/Kaede) ❕✅🐲📝 Fixed L-Tek pads not presenting their start and select buttons ❕✅🐲 Fixed Issue in Input MacOSX failing on XInput Mode Issue #45 (Thanks cmhoneycutt343! ) ❕✅🐲 Fixed bug with old Xbox 360 Guitar Controllers being unable to be mapped in HIDAPI Mode (Thanks Confuzled) ❕✅🐲 Fixed deprecated WIN32 Macro preventing Linux/MacOS compiling 4.8.1 Build! ❕✅🐲 Fixed Bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed Bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 19th August 2020 \u0026ldquo;Release the (Git)Kraken!\u0026rdquo; Hotfix MK2 Build! These bugs were fixed about 3 weeks ago, however due to a bad branch merge, GitKraken did not recognise the commits were actually missing, and they were added into the main code branch which got to release. The only way to even recognise this bug is if you had \u0026gt;100,000 songs and over 18,000 MP3 files.\n❕✅🐲 Fixed Bug with locking up on loading songs (Thanks Kaede!"},{"id":25,"href":"/releases/A4.8.1/","title":"OutFox Alpha 4.8.1 Build","parent":"Release History","content":" Release Date: 14th August 2020 \u0026ldquo;RageFile Against the Loading Window\u0026rdquo; Hotfix Build! ❕✅🐲 Fixed bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 14th August 2020 \u0026ldquo;RageFile Against the Loading Window\u0026rdquo; Hotfix Build! ❕✅🐲 Fixed bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value."},{"id":26,"href":"/releases/A4.8.0/","title":"OutFox Alpha 4.8.0 Build","parent":"Release History","content":" Release Date: 14th August 2020 \u0026ldquo;Chocolate Keyboards and Frikandel\u0026rdquo; New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 14th August 2020 \u0026ldquo;Chocolate Keyboards and Frikandel\u0026rdquo; New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value."},{"id":27,"href":"/releases/A4.6.0/","title":"OutFox Alpha 4.6.0 Build","parent":"Release History","content":" Release Date: 11th July 2020 \u0026ldquo;Ogre\u0026rsquo;s Have Layers\u0026rdquo; Do not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll Platforms ❕✅ Add Narumi Mascot by Leojiaz!! ❕✅ Fix model index overflow ❕✅ Use 4-byte width for modeltypes ❕✅ Fix FFMPEG 4.3 upstream bug ❕✅🐲 Fix incorrect lua commands in notedisplay ❕✅ Fix invert for modes with odd numbered column count ❕✅ Fix and modernise all compile settings in ffmpeg ❕✅ Switch to shared dynamic linking of libraries ❕✅ Remove hardcoded file types in RandomMovies ❕✅ Fix Lua errors in generating credits OptionRow ❕✅ Fixed pump noteskin rotation to be consistent with other modes Windows ❕✅ Fixed dll crashes on course length ❕✅ Fixed video crashes on certain MP4 files Linux ❕✅ Fixed SWScale crash on courses ❕✅ Fixed AVI/MP4 crash on courses MacOS ❕✅ Fix discord linking for status updates ❕✅ New lib packaging to be compliant with MacOSX ❕✅ Fix dynamic linking causing crashes on avi videos ARM/ARM64: (Raspberry Pi etc) ❕✅ Fix crash on start due misconfigured library defaults ❕✅ Fix SWScale crash preventing boot ❕✅ Fix slowdown due to back texture code ❕✅ Tweaked method for graphics renderer choice Community Content ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) Arm Notices NOTE 1: If you are on newer AARCH64 based distributions of linux, (Manjaro/Arch) you will need to do: $ sudo pacman -Sy glu mesa-git You will need to follow the tutorial here to get better performance on your ARM device: https://forum.armbian.com/topic/8352-tutorial-opengl-apps-on-opengl-es-gl4es\nNOTE 2: If you are on a raspberry Pi 3B/3B+ or 4 and want 64bit, you have native GL2.1 desktop drivers on the following image direct from the Raspberry Pi foundation: http://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/\nNOTE 3: If the game boots into the GLAD renderer, exit on the menu and set the game to use opengl in Preferences.ini. It will be within your ~home/.stepmania 5.3/save folder.\nNOTE 4: NO SOUND! As per some of the issues with the inbuilt systems on the RPi, if you have many entries of broken pipe in your log files and ALSA errors, this is often worked around with a usb sound card or similar. I have not seen anything on Manjaro which matches this so far it appears to be a Debian issue on the PI.\nNOTE 5: Don\u0026rsquo;t expect crazy performance/perfect playback! We are still learning to tweak the engine for better ARM based performance, so please be patient!\n(The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 11th July 2020 \u0026ldquo;Ogre\u0026rsquo;s Have Layers\u0026rdquo; Do not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll Platforms ❕✅ Add Narumi Mascot by Leojiaz!! ❕✅ Fix model index overflow ❕✅ Use 4-byte width for modeltypes ❕✅ Fix FFMPEG 4.3 upstream bug ❕✅🐲 Fix incorrect lua commands in notedisplay ❕✅ Fix invert for modes with odd numbered column count ❕✅ Fix and modernise all compile settings in ffmpeg ❕✅ Switch to shared dynamic linking of libraries ❕✅ Remove hardcoded file types in RandomMovies ❕✅ Fix Lua errors in generating credits OptionRow ❕✅ Fixed pump noteskin rotation to be consistent with other modes Windows ❕✅ Fixed dll crashes on course length ❕✅ Fixed video crashes on certain MP4 files Linux ❕✅ Fixed SWScale crash on courses ❕✅ Fixed AVI/MP4 crash on courses MacOS ❕✅ Fix discord linking for status updates ❕✅ New lib packaging to be compliant with MacOSX ❕✅ Fix dynamic linking causing crashes on avi videos ARM/ARM64: (Raspberry Pi etc) ❕✅ Fix crash on start due misconfigured library defaults ❕✅ Fix SWScale crash preventing boot ❕✅ Fix slowdown due to back texture code ❕✅ Tweaked method for graphics renderer choice Community Content ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) Arm Notices NOTE 1: If you are on newer AARCH64 based distributions of linux, (Manjaro/Arch) you will need to do: $ sudo pacman -Sy glu mesa-git You will need to follow the tutorial here to get better performance on your ARM device: https://forum."},{"id":28,"href":"/releases/A4.6.0RC3/","title":"OutFox Alpha 4.6.0 RC3 Build","parent":"Release History","content":" Release Date: 1st July 2020 Do not enable 8K texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms ❕✅ Bring over some mod specific fonts from oITG ❕✅ Editor Fixes (Thanks VILEWORX!) ❕✅ Modernise FTOC to not use double math ❕✅ Fix math offset in RageSquare ❕✅ Theme optimisations ❕✅ Fix crash when joysticks are unplugged ❕✅ Remove FTOC from the game, (Thanks shakesoda!) ❕✅ Remove Symmetric Quadstrip calls ❕✅ Fix dereferencing in several texture calls ❕✅ Fix time based overflow ❕✅ Fix not logic in RageTextureManager ❕✅ Remove GL quad calls from pipeline in favour of triangles ❕✅ Update legacy and GLAD pipeline with new triangle code ❕✅ ArrowEffects optimisations to fix stutter showdown ❕✅ Cleaned up cmake and added ARCH check file for new systems ❕✅🐲 Add some legacy GL pipeline optimisations ❕✅🐲 Fix polygon mode for the legacy Driver ❕✅🐲 Fix blendmode crash on modfiles ❕✅ Upgrade FFMPEG to 4.3 Windows ❕✅ Fixed GL context creation Linux ❕✅ Remove visual acceleration to keep compatibility with Xserver macOS ❕✅ Don\u0026rsquo;t use /Desktop as a mount point ❕✅ Update functions to read directories ❕✅ Fix closing of sound files ❕✅🐲 Kill 10.16 programming choices due to MacOSX 11 ❕✅🐲 Support macOS 11.0 \u0026ldquo;Big Sur\u0026rdquo; ❕✅ Deprecated support for Application Support folder ARM/ARM64 (Raspberry Pi, etc) ❕✅ Add support for Rockchip/Pine64 3399, 3219 chips (arm64) ❕✅ Add support for Raspberry Pi 4,3B+ (thanks shakesoda, Jousway) ❕✅ Add support for armhf Raspberry Pi 2/3/3b+ ❕✅ Fix Bone and Models causing a crash on the Pi ❕✅ Fix geometry crashing on some distros ❕✅🐲 Add GL4GLES/Desktop GL friendly modifications to the legacy driver Community content: ✅ Guitar3 and Guitar5 graphics - Lirodon ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ARM notes If you are on newer AARCH64 based Linux distributions such as Arch/Manjaro, you will need to install glu and mesa-git (sudo pacman -Sy glu mesa-git) If the game boots into the GLAD renderer, exit the game and edit VideoRenderers in ~/.stepmania 5.3/Save/Preferences.ini to list opengl first. Follow this tutorial to get better performance on your ARM device: If you are on a Raspberry Pi 3B/3B+ or 4 and want 64-bit, this image of Raspberry Pi OS has native OpenGL 2.1 drivers. As per some of the issues with the in-built systems on the RPi, if you have many entries of broken pipe in your log files and ALSA errors, this is often worked around with a USB sound card or similar. We have not seen anything on Manjaro which matches this, so far it appears to be a Debian issue. Don\u0026rsquo;t expect crazy performance/perfect playback! We are still learning to tweak the engine for better performance on ARM, so please be patient! ","description":"Release Date: 1st July 2020 Do not enable 8K texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms ❕✅ Bring over some mod specific fonts from oITG ❕✅ Editor Fixes (Thanks VILEWORX!) ❕✅ Modernise FTOC to not use double math ❕✅ Fix math offset in RageSquare ❕✅ Theme optimisations ❕✅ Fix crash when joysticks are unplugged ❕✅ Remove FTOC from the game, (Thanks shakesoda!"},{"id":29,"href":"/releases/A4.6.0RC2/","title":"OutFox Alpha 4.6.0 RC2 Build","parent":"Release History","content":" Release Date: 23th June 2020 \u0026ldquo;Jous, Jous, Jous \u0026amp; Jous Big Sur\u0026hellip;..prise Edition\u0026rdquo; Next main update will be August 2020 as we have to get up to date with our documentation and new features.\nDo not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms Fixed FFMpeg return nullptr when not able to load a video (thanks SheepyChris) Fixed notefield not displaying on howtoplay and demonstration (thanks TacvicomGN) Make p2 use keypad - instead of normal Add GDDM part names Add secondary button check for controllers Add strum bass modes for guitar Give GameManager some Fixes Fix spacing and margins in ScreenGameplay Optimise notefield positional options Add PnM Portable 7 Button Mode Lua fixes for multistyle support macOS Build with XCode 11 to keep backwards compatibility with 10.12-14 (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 23th June 2020 \u0026ldquo;Jous, Jous, Jous \u0026amp; Jous Big Sur\u0026hellip;..prise Edition\u0026rdquo; Next main update will be August 2020 as we have to get up to date with our documentation and new features.\nDo not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms Fixed FFMpeg return nullptr when not able to load a video (thanks SheepyChris) Fixed notefield not displaying on howtoplay and demonstration (thanks TacvicomGN) Make p2 use keypad - instead of normal Add GDDM part names Add secondary button check for controllers Add strum bass modes for guitar Give GameManager some Fixes Fix spacing and margins in ScreenGameplay Optimise notefield positional options Add PnM Portable 7 Button Mode Lua fixes for multistyle support macOS Build with XCode 11 to keep backwards compatibility with 10."},{"id":30,"href":"/releases/A4.6.0RC1/","title":"OutFox Alpha 4.6.0 RC1 Build","parent":"Release History","content":" Release Date: 19th June 2020 All platforms Fix caching edge crash Fix a message not being called when a player unjoins Fixed an edge crash with folks with 2+ monitors Fixed a problem with a refcount causing a crash to desktop on SongSelect (Thanks Moru!) Fixed gifs being wrongly assigned in Song.cpp (Thanks Moneko!) Fixed looping on videos (Thanks Dims and Jubo!) Fixed a problem with GL 1.1 legacy textures Added a new rounding method for the stats collection Fixed Discord showing some corrupted text for some modes Implement Squish Actor effect Added new GDDM gamemode Set first start of game to be 50% volume Fix XNode loading of sprites not used in the normal pipeline Windows Allowed GL1.1 users to actually get a proper display Updated Installer scripts to fix a few bugs Linux GL1.1 will no longer cause an X server reset on Linux Mint Community content Updated pump default noteskins with a newer design and high res graphics Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 19th June 2020 All platforms Fix caching edge crash Fix a message not being called when a player unjoins Fixed an edge crash with folks with 2+ monitors Fixed a problem with a refcount causing a crash to desktop on SongSelect (Thanks Moru!) Fixed gifs being wrongly assigned in Song.cpp (Thanks Moneko!) Fixed looping on videos (Thanks Dims and Jubo!) Fixed a problem with GL 1.1 legacy textures Added a new rounding method for the stats collection Fixed Discord showing some corrupted text for some modes Implement Squish Actor effect Added new GDDM gamemode Set first start of game to be 50% volume Fix XNode loading of sprites not used in the normal pipeline Windows Allowed GL1."},{"id":31,"href":"/dev/mods/Mods-0-Overview/","title":"Overview of modifiers","parent":"Guide to Modifiers","content":" Modifiers Modifiers often change or affect some aspect of the gameplay, usually by messing with the game\u0026rsquo;s notefield. Some modifiers can be selected through the options menu before starting a song, but there are also simfiles with scripted modifiers that tend to have a wildly different experience than just a regular simfile. (Generally, they\u0026rsquo;re known as \u0026ldquo;modfiles\u0026rdquo;)\nGeneral notes Often, modifiers (or \u0026ldquo;mods\u0026rdquo;) have what\u0026rsquo;s called an \u0026ldquo;approach rate\u0026rdquo;, which is how fast it\u0026rsquo;ll go to reach the specified value. When not specified, an approach rate of 1 is used, which means 100% per second.\nSo, if you have a modifier that goes from 0 to 200%, it will take 2 seconds, while 200% to -150% would take 3.5 seconds. The approach rate can be a floating point number, so values like 0.24523 or 3.7 are valid.\nApproach rates cannot be negative in OutFox alpha 4.8.2 or earlier, or it will crash.\nIn \u0026ldquo;NotITG\u0026rdquo; \u0026amp; OutFox alpha 4.8.3 and later, negative approach rates (specifically -1 in NotITG, but in general on SM5) are used to signify \u0026ldquo;instant\u0026rdquo; rates. in older versions of SM5, you can use large approach rate numbers (such as 10000 or 9e9) to achieve this.\nMagnitude is usually shown in the form of percentages for modifiers, and are capable of being negative, unless otherwise noted.\nThere are also column-specific modifiers. This affect a single column instead of the whole notefield. In NotITG, column numbering starts at 0, while it starts at 1 in SM5.\nFor the column-specific lua functions (except for gradients, mentioned later), nil can be given as the column to affect all columns of a player. (Does not work in alpha 4.8.2 of OutFox or earlier)\nModstrings Normally these modifiers will have a modstring form that follows this general format: *\u0026lt;approach rate\u0026gt; \u0026lt;percentage\u0026gt;% \u0026lt;mod name\u0026gt; but some modifiers, like speed mods, may not follow that format.\nWhen not given a percentage, 100% is assumed. no is another way to say 0% as well.\neg: *2 bumpy is the same as *2 100% bumpy.\nThe % is optional and modstrings can work without it, but it\u0026rsquo;s there for visual convenience.\neg: *2 200 bumpy is the same as *2 200% bumpy.\nThe mod name is case insensitive.\nThese modstrings can be used either by simfile ATTACKS, course MODS, or through PlayerOptions\u0026rsquo; FromString function. Smaller numbers like 0.5 require the preceding 0.\nAny modifier or sub modifier that is boolean has a turning point of 50%. Giving 50% or more will turn it on, while 49% or lower will turn it off.\nPlayerOptions Functions Going from modstrings to PlayerOptions functions, the magnitude has to be divided by 100 most of the time, and mod names are now case sensitive.\nWhen calling a PlayerOptions function, they often have an optional final boolean parameter that can be placed after all of the parameters that allows for function chaining similar to what Actor does, allowing for something like this:\nXMod(2.5, 3, true):Drunk(-0.75, 2.7)\nWhen passed nothing in the parameters, the function returns two values: the current magnitude, the current approach rate. However, when passed in parameters, the previous values for magnitude and rate are returned.\nYou can grab a player\u0026rsquo;s PlayerOptions for scripting purposes by doing the following:\nlocal po = {GAMESTATE:GetPlayerState(\u0026#39;PlayerNumber_P1\u0026#39;):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;),GAMESTATE:GetPlayerState(\u0026#39;PlayerNumber_P2\u0026#39;):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} This stores them into a table for easy access at any point during the song. po[1] is what you\u0026rsquo;d use to affect Player 1, while po[2] affects Player 2. Both will need to be used to affect both players with the same mods.\nSimfile ATTACKS and course MODS will override \u0026amp; reset anything set through lua on the Song level, and cannot be player-specific.\nVideo Examples The video examples for the modifiers use an excerpt of GPOP\u0026rsquo;s expert chart for \u0026ldquo;My Story\u0026rdquo; from the \u0026ldquo;G.P.O.P.S. 3\u0026rdquo; pack.\nThe speed mod used is 1.5x, and the noteskin usually is the default noteskin for dance mode, with Exact3D used when needed.\nThe magnitude used in the video examples also may not be the value used in the textual example.\n","description":"Modifiers Modifiers often change or affect some aspect of the gameplay, usually by messing with the game\u0026rsquo;s notefield. Some modifiers can be selected through the options menu before starting a song, but there are also simfiles with scripted modifiers that tend to have a wildly different experience than just a regular simfile. (Generally, they\u0026rsquo;re known as \u0026ldquo;modfiles\u0026rdquo;)\nGeneral notes Often, modifiers (or \u0026ldquo;mods\u0026rdquo;) have what\u0026rsquo;s called an \u0026ldquo;approach rate\u0026rdquo;, which is how fast it\u0026rsquo;ll go to reach the specified value."},{"id":32,"href":"/releases/A4.5.9/","title":"OutFox Alpha 4.5.9 Build","parent":"Release History","content":" Release Date: 14th June 2020 All platforms Fix OpenGL context math overflow edge crash Fix math overflow in arroweffects Added math speedups in notedisplay Fix wayward frame counting on pump and para Added new math functions for 2 dimensional actors 🐲 Removed RageVector2 from the game 🐲 Added new catch all to move users on \u0026lt;= GL 2.0 to the OpenGL Renderer 🐲 Fixed Texture Size overflow Fixed Sprite Overflow causing edge crash (Thanks HeySora!) Fixed Texture Refcount underflow causing a crash on modfiles (Thanks HeySora!) Added new Resolution/Aspect Ratio support 🐲 Fix Tan types in the Math 🐲 Fixed Memory leaks in RageMath 🐲 Fixed Memory leaks in RageTextureManager 🐲 Fixed Errors in some of the new ‘fast’ options Fixed mismatch causing keysounds to stutter Removed an edge case causing songs encoded in mp3/wave prior to 2008 to play at doublespeed Fixed resampling to prevent overflow Math speedups Fixed a few missing performance opportunities in the note system Fixed Texture diagnostics Windows Fixed Intel DLL “unhandled c++” error on newer windows 10 builds (newer than fall 2019) Fixed Intel entrypoint errors when windows 8+ forgets that it does actually support GL 3 onwards… Fixed Intel force crashing the game with an invalid context due to a bad call in the driver Fixed the issue when people using GL 1.1 would get a crash Fixed an issue with ATI cards reporting bad GL contexts when falling back to GDI OpenGL 1.1 Added back support for 1.1. The game will warn you that playing with this version is not recommended, but it wont crash on the opengl renderer driver Added GL 2.1 entrypoints to GLAD so those on it can cheekily use the modern pipe Linux Fixed GL Mesa Endpoints macOS: Fixed GL Call Endpoints for new detections. Crashes should be gone Community content: Added New Crystal noteskins from Lirodon (normal and 4K for high-resolution displays) Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 14th June 2020 All platforms Fix OpenGL context math overflow edge crash Fix math overflow in arroweffects Added math speedups in notedisplay Fix wayward frame counting on pump and para Added new math functions for 2 dimensional actors 🐲 Removed RageVector2 from the game 🐲 Added new catch all to move users on \u0026lt;= GL 2.0 to the OpenGL Renderer 🐲 Fixed Texture Size overflow Fixed Sprite Overflow causing edge crash (Thanks HeySora!"},{"id":33,"href":"/dev/mods/Mods-1-Speed-Mods/","title":"Speed","parent":"Guide to Modifiers","content":"These modifiers are used to control the scroll speed of notes in gameplay. These modifiers are not column-specific, unlike later mods described elsewhere.\nNegative speed modifiers cannot be selected from the Player Options menu, nor can it be set through the lua functions PlayerOptions provides, but it can become negative through the use of mod strings (and some modfiles have taken advantage of that).\nXMod Desc: The \u0026ldquo;X\u0026rdquo; in \u0026ldquo;XMod\u0026rdquo; is for multiply, with it often showing as 1x or 2.5x or some other multiplier value followed by an x. Larger multiplier numbers result in a faster scroll. This speed mod type is capable of showing BPM changes, stops and other chart segment types. Often ranges of 1 to 4 (and in between at practically any specified granularity) can be common.\nQuirks: When setting this through the lua function it will immediately override CMod, MMod or AMod unlike how it functions in courses or modstring-based modfiles.\nPlayerOptions format: XMod(\u0026lt;multiplier\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: XMod(2.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;multiplier\u0026gt;x\nExample: *0.5 2.5x\nCMod Desc: The \u0026ldquo;C\u0026rdquo; in \u0026ldquo;CMod\u0026rdquo; is for \u0026ldquo;Constant BPM Scroll\u0026rdquo;, with it often showing as C200 or C450.5 or some other BPM value preceded by a C. Larger BPM values result in faster scroll speeds. This speed mod type visibly ignores chart segments and only shows a constant speed. (some forks of SM even disqualify if the chart has BPM changes and CMod is used!) Other modifiers still work on CMod, though.\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: When setting this through the lua function it will immediately override XMod, MMod or AMod unlike how it functions in courses or modstring-based modfiles.\nPlayerOptions format: CMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: CMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; c\u0026lt;BPM value\u0026gt;\nExample: *0.5 c200\nMMod Desc: The \u0026ldquo;M\u0026rdquo; in \u0026ldquo;MMod\u0026rdquo; is for \u0026ldquo;Maximum BPM Scroll\u0026rdquo;, with it often showing as m200 or m450.5 or some other BPM value preceded by an m. Unlike CMod, this speed modifier supports everything that XMod does. Instead of specifying a BPM speed for the whole song, this specifies the maximum scroll speed that will be used.\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: The magnitude is in the hundreds most of the time, so a larger approach rate might be needed.\nPlayerOptions format: MMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: MMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; m\u0026lt;BPM value\u0026gt;\nExample: *0.5 m200\nAMod Desc: The \u0026ldquo;A\u0026rdquo; in \u0026ldquo;AMod\u0026rdquo; is for \u0026ldquo;Average BPM Scroll\u0026rdquo;, with it often showing as a200 or a450.5 or some other BPM value preceded by an a. Like MMod, this modifier supports everything XMod supports, and the song\u0026rsquo;s BPM is used in calculations, the average of the song\u0026rsquo;s BPMs is calculated instead of the maximum BPM being used. (and the amount of time a BPM lasts for is taken into account, too)\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: The magnitude is in the hundreds most of the time, so a larger approach rate might be needed.\nPlayerOptions format: AMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: AMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; a\u0026lt;BPM value\u0026gt;\nExample: *0.5 a200\nRandomSpeed Desc: Each note is given a random addition to its\u0026rsquo; speed mod, with larger additions being applied when a higher magnitude is used. This does not have column-specific controls.\nNormally, 100 is the magnitude used (as it\u0026rsquo;s not commonly used in modfiles), but other values are valid.\nQuirks: Only values greater than zero have any visual effect. Missed notes revert to the actual speed mod upon passing the receptors.\nPlayerOptions format: RandomSpeed(\u0026lt;magnitude\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: RandomSpeed(1, 0.125)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; randomspeed\nExample: *0.125 100% randomspeed\nSpeed Modifier Controllers These modifiers control the internal parts of the speed modifiers above, and usually shouldn\u0026rsquo;t be used unless there\u0026rsquo;s a good reason to. Like the speed mods above, these aren\u0026rsquo;t column-specific either, but can support negative numbers like how the modstrings do. Unlike the speed modifiers listed above, there is no modstring form for any of these.\nTimeSpacing Desc: Allows one to switch between CMod and the remaining mods. At 100%, this tells the game to use CMods. 0% means use XMod/MMod/AMod.\nIt\u0026rsquo;s tweenable like other modifiers, which allows one to tween \u0026lsquo;between\u0026rsquo; CMods and the other mods.\nOften the values used only range between 0 and 100%\nQuirks: The \u0026rsquo;tweening\u0026rsquo; capability can cause interesting stutter effects while tweening. Some modfiles take advantage of this. This cannot be replicated with the plain CMod \u0026amp; XMod PlayerOptions functions, but can be replicated with modstrings.\nPlayerOptions format: TimeSpacing(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: TimeSpacing(1)\nScrollBPM (Used for CMod, values are BPMs) Desc: This is the underlying BPM value that CMod uses. Common values are the same as those for CMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: ScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ScrollBPM(1, 2)\nAvarageScrollBPM Desc: This is the underlying BPM value that AMod uses. When this is zero, AMod is turned off. Common values are the same as those for AMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: AvarageScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: AvarageScrollBPM(200, 0.5)\nMaxScrollBPM Desc: This is the underlying BPM value that MMod uses. When this is zero, MMod is turned off, and AMod is able to be used. Common values are the same as those for MMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: MaxScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: MaxScrollBPM(200, 0.5)\nScrollSpeed Desc: This is the underlying multiplier value that XMod uses. Common values are the same as those for XMod.\nQuirks: N/A\nPlayerOptions format: ScrollSpeed(\u0026lt;multiplier\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ScrollSpeed(2.5, 0.5)\n","description":"These modifiers are used to control the scroll speed of notes in gameplay. These modifiers are not column-specific, unlike later mods described elsewhere.\nNegative speed modifiers cannot be selected from the Player Options menu, nor can it be set through the lua functions PlayerOptions provides, but it can become negative through the use of mod strings (and some modfiles have taken advantage of that).\nXMod Desc: The \u0026ldquo;X\u0026rdquo; in \u0026ldquo;XMod\u0026rdquo; is for multiply, with it often showing as 1x or 2."},{"id":34,"href":"/releases/A4.5.8/","title":"OutFox Alpha 4.5.8 Build","parent":"Release History","content":" Release Date: 31st May 2020 This is a QoL update.\nAll platforms Fix PitchRate/DownRate crash (Thanks to Nhan and indigo for reporting!) Fix Pump status entries Added Missing reset functions in PlayerOptions for column specific noteskews Fix discord game_SDK core dump if user goes offline/discord has problems Added ParaParaParadise controller support (Thanks Taikora for the support!) Fix a plethora of coverage recommendations Remove a few ‘virtual’ functions which were not in fact virtual Added avatar examples to the installer Added multi-option option rows. Fixed out of bounds check which always defaulted to true Fixed bad rounding on banner scrolling 🐲 Fixed a few missing performance opportunities in the sprite handler Fixed new GL Asserts not being defined Fixed “Disable Way Off” disabling “Decent” AutoPlayCPU is now disqualified and no longer saves scores. Fixed saved controller mapping saving ‘Joy1-Unknown’ (Thanks Moneko, Take Walker) Windows Changed versioning system to say 5.3 finally Linux Fixed memory reporting on newer Linux builds Adjust ALSA driver hooks MacOSX: Input tweaks, should be less crazy on really sensitive pads Theme Optimizations and visual streamlining for the Soundwaves theme. New ColorTable variables for ScreenSelectMusic and gameplay. Enable timing bar and milliseconds display independently. Community content: Dancing Style Judgements By MattMayuga Mikado and Jewelry Judgements by Haley Halcyon Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 31st May 2020 This is a QoL update.\nAll platforms Fix PitchRate/DownRate crash (Thanks to Nhan and indigo for reporting!) Fix Pump status entries Added Missing reset functions in PlayerOptions for column specific noteskews Fix discord game_SDK core dump if user goes offline/discord has problems Added ParaParaParadise controller support (Thanks Taikora for the support!) Fix a plethora of coverage recommendations Remove a few ‘virtual’ functions which were not in fact virtual Added avatar examples to the installer Added multi-option option rows."},{"id":35,"href":"/dev/mods/Mods-2-Perspective-Mods/","title":"Perspective","parent":"Guide to Modifiers","content":"Perspective modifiers tilt and skew the notefield itself to allow for a feeling of depth. Scripted modfiles can use these to do effects like rocking the notefield back and forth among other effects (And is definitely noticable with 3D noteskins).\nUnlike most modifiers available through PlayerOptions, these functions only return values in terms of tilt and skew and don\u0026rsquo;t return the current/previous approach rate. Perspecitve modifiers aren\u0026rsquo;t column-specific either.\nHallway Desc: The notefield is tilted away from the player, so that notes start far away and come closer. Very noticable with 3D noteskins.\nTilt is negative, while Skew is at zero.\nCommon ranges can go from 50% to 150%, while the Player Options menu uses 100%.\nNegative magnitudes activate Distant instead.\nQuirks: Going over 150% Hallway may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Hallway(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Hallway(1.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hallway\nExample: *1 150% hallway\nDistant Desc: The notefield is tilted towards the player, so that notes start close to the screen and go away. Very noticable with 3D noteskins.\nTilt is positive, while Skew is at zero.\nCommon ranges can go from 50% to 200%, while the Player Options menu uses 100%.\nNegative magnitudes activate Hallway instead.\nQuirks: Going over 200% Distant may result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Distant(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Distant(2, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; distant\nExample: *2 200% distant\nDistant video example\nIncoming Desc: The notefield is tilted away from the player, like Hallway, but the notefield is also skewed so that notes approach from the middle of the screen.\nTilt is negative, while Skew is positive.\nCommon ranges can go from -150% to 150%, while the Player Options menu uses 100%.\nQuirks: Going over 150% Incoming may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Incoming(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Incoming(1.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; incoming\nExample: *1 150 incoming\nIncoming video example\nSpace Desc: The notefield is tilted away from the player, like Distant, but the notefield is also skewed so that notes approach from the sides of the screen.\nTilt and Skew are positive.\nCommon ranges can go from -150% to 200%, while the Player Options menu uses 100%.\nQuirks: Going beyond the common range may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Space(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Space(1, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; space\nExample: *3 100% space\nSpace video example\nOverhead Desc: The notefield is parallel to the screen, and appears directly flat. Returns whether both tilt and skew are at zero before the function was called.\nBoth Tilt and Skew are at zero.\nQuirks: N/A\nPlayerOptions format: Overhead(\u0026lt;Set Overhead?\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Overhead(true, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; overhead\nExample: *0.2 overhead\nPerspective Modifier Controllers These modifiers control the internal parts of the modifiers above, and generally shouldn\u0026rsquo;t be used unless finer control is desired. Like the perspective modifiers, these aren\u0026rsquo;t column-specific either. Unlike the perspective modifiers, there is no modstring form for any of these, and the standard current/previous magnitude \u0026amp; approach rate are returned.\nSkew Desc: Alters the vanish point of the notefield. Positive values move the point towards the middle of the screen, with 100% being fully on the center, while negative values move it towards the sides of the screen.\nNormally, this has the same ranges as Incoming \u0026amp; Space.\nQuirks: Will have no visible effect when players are centered on the screen. Can result in interesting x axis movements from z axis modifiers.\nPlayerOptions format: Skew(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Skew(10, 3)\nSkew video example\nTilt Desc: Rotates the notefield on the x axis near the receptors so the arrows get closer or farther from the player when they initially appear. Positive values tilt the notefield away from the player, while negative values point it towards the player.\nNormally, this has the same ranges as Distant \u0026amp; Hallway.\nQuirks: Same as Distant and Hallway.\nPlayerOptions format: Tilt(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tilt(2, 4)\nVideo example: See Distant \u0026amp; Hallway.\n","description":"Perspective modifiers tilt and skew the notefield itself to allow for a feeling of depth. Scripted modfiles can use these to do effects like rocking the notefield back and forth among other effects (And is definitely noticable with 3D noteskins).\nUnlike most modifiers available through PlayerOptions, these functions only return values in terms of tilt and skew and don\u0026rsquo;t return the current/previous approach rate. Perspecitve modifiers aren\u0026rsquo;t column-specific either.\nHallway Desc: The notefield is tilted away from the player, so that notes start far away and come closer."},{"id":36,"href":"/dev/mods/Mods-3-Column-Movement-Mods/","title":"Column movement","parent":"Guide to Modifiers","content":"Column movement modifiers allow one to move the columns in any direction. Usually, these are used to create \u0026ldquo;column swaps\u0026rdquo;, which alter the visual order of the columns in gameplay.\nFlip Desc: Flip alters the column order to make it appear backwards. For Example, if the column order is usually left down up right, the order becomes right up down left.\nNegative values have been used to space out the columns, so values from -200% to 100% could be possible.\n50% coverges all columns to the same horizontal spot.\nDifferent amounts could be used in combination with Invert.\nQuirks: N/A\nPlayerOptions format: Flip(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Flip(1.25, 10)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; flip\nExample: *10 125% flip\nFlip video example\nInvert Desc: Invert flips each half of the notefield. When doubles charts are being played, the two \u0026ldquo;players\u0026rdquo; are inverted separately.\nCommonly, 100% is used, but different amounts could be used in combination with Flip.\nQuirks: If used in 5.2 and earlier, Invert may act in unexpected ways on modes with an odd number of columns (eg. Pump).\nIn OutFox, Invert will have no visual effect if the mode has three columns per side or less (eg. Pump halfdoubles).\nPlayerOptions format: Invert(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Invert(1, 0.3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; invert\nExample: *0.3 100% invert\nInvert video example\nMove Desc: Move is a set of modifiers that are column-specific by nature and has variants for the X,Y, and Z axis. 100% moves a column forward on an axis by one dance mode column width. This can allow for column swaps that can\u0026rsquo;t be achieved through just Flip and Invert, but can take more time to set up.\nQuirks: Since alpha 4.8.3, all columns can\u0026rsquo;t be hit from the modstring (possible in NotITG), but can be done through the lua function. Right now (as of Project OutFox alpha 4.7), Pump mode\u0026rsquo;s column-spacing is 48 pixels instead of 64, so use multiples of 0.75 instead when working with Pump mode. It\u0026rsquo;s also the only way to move the center panel with any of the column-movement mods.\nAvailable Variants: MoveXCol, MoveYCol, MoveZCol\nAvailable Variants (modstring): movex, movey, movez\nPlayerOptions format: \u0026lt;Move variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: MoveXCol(1, -0.5, 4, true):MoveYCol(2, 1, 0.5, true):MoveZCol(3, 5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\u0026lt;column\u0026gt;\nExamples: *4 -50 movex1, *0.5 100 movey2, *1 500 movez3\nMove video example\nTipsy Desc: Tipsy makes the columns bob up and down in a sinusoidal pattern. There is a tangent-based variant as well.\nCommon ranges go from -300 to 300%\nQuirks: When combined with Drunk in SM5.1 or earlier, hold bodies may detach from the hold head.\nAvailable Variants: Tipsy, TanTipsy\nAvailable Variants (modstring): tipsy, tantipsy\nPlayerOptions format: \u0026lt;Tipsy variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tipsy(1.5, 3) TanTipsy(1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *3 150% tipsy *3 150% tantipsy\nTipsy video example\nAvailable sub modifiers: TipsyOffset Desc: TipsyOffset shifts the point in time of where Tipsy is in its\u0026rsquo; sinusoidal pattern.\nValues of -100 to 100% have a noticable effect.\nAvailable Variants: TipsyOffset, TanTipsyOffset\nAvailable Variants (modstring): tipsyoffset, tantipsyoffset\nTipsySpacing Desc: TipsySpacing shifts the phase for each column after the first column.\nValues of -100 to 100% have a noticable effect.\nAvailable Variants: TipsySpacing, TanTipsySpacing\nAvailable Variants (modstring): tipsyspacing, tantipsyspacing\nTipsySpeed Desc: TipsySpeed affects how fast Tipsy goes through its\u0026rsquo; sinusoidal pattern with a multiplier. Lower magnitudes slow it down, while higher magnitudes speed it up. -100% freezes the effect completely. Results in a very jittery effect when using game uptime as the mod timer.\nCommon ranges can go from -100 to 100%\nAvailable Variants: TipsySpeed, TanTipsySpeed\nAvailable Variants (modstring): tipsyspeed, tantipsyspeed\nCombining Flip \u0026amp; Invert Flip and invert, when paired together, allow for unusual column ordering. Here\u0026rsquo;s what\u0026rsquo;s possible in dance \u0026amp; pump modes.\nDance mode (4 panel) Pump mode (5 panel) 75\u0026percnt; flip + 75\u0026percnt; invert 66.666667\u0026percnt; (AKA 2/3) flip + 133.333333\u0026percnt; (AKA 4/3) invert 25\u0026percnt; flip + -75\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + -133.333333\u0026percnt; (AKA -4/3) invert 100\u0026percnt; flip + -100\u0026percnt; invert 100\u0026percnt; flip + -100\u0026percnt; invert 25\u0026percnt; flip + 125\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + 166.666666\u0026percnt; (AKA 5/3) invert 75\u0026percnt; flip + -125\u0026percnt; invert 66.666666\u0026percnt; (AKA 2/3) flip + -166.666666\u0026percnt; (AKA -5/3) invert 25\u0026percnt; flip + -25\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + -33.333333\u0026percnt; (AKA -1/3) invert ","description":"Column movement modifiers allow one to move the columns in any direction. Usually, these are used to create \u0026ldquo;column swaps\u0026rdquo;, which alter the visual order of the columns in gameplay.\nFlip Desc: Flip alters the column order to make it appear backwards. For Example, if the column order is usually left down up right, the order becomes right up down left.\nNegative values have been used to space out the columns, so values from -200% to 100% could be possible."},{"id":37,"href":"/releases/A4.5.6/","title":"OutFox Alpha 4.5.6 Build","parent":"Release History","content":" Release Date: 8th May 2020 All platforms Aligned inline sine math with NotITG. Fine-tune the Discord SDK integration added on 4.5.5. Fix RPC core being required to run the game. Additional Soundwaves bug fixes and details. Fix the Avatar preference line not being found. Fix failed initialisations on some of the theme statistics. Windows Update EXE resource metadata to display 5.3 version number (should also help prevent false positives from antivirus software) ","description":" Release Date: 8th May 2020 All platforms Aligned inline sine math with NotITG. Fine-tune the Discord SDK integration added on 4.5.5. Fix RPC core being required to run the game. Additional Soundwaves bug fixes and details. Fix the Avatar preference line not being found. Fix failed initialisations on some of the theme statistics. Windows Update EXE resource metadata to display 5.3 version number (should also help prevent false positives from antivirus software) "},{"id":38,"href":"/releases/A4.5/","title":"OutFox Alpha 4.5.0 Build","parent":"Release History","content":" Release Date: 4th May 2020 All platforms Fix no input for axis U/D and L/R (reported by Julius) 🐲 Fix Obscure Pad Buttons 🐲 Add Multi-point Analog Support 🐲 Fix analogue AXIS being mapped incorrectly 🐲 Fix PS2/PS1/GC pad converter adapters 🐲 Add Nintendo Joy-Con/Pro/SNES/NES/8Bit DO Pad support 🐲 Add PS1/PS2/PS3/PS4 pad Support 🐲 Add Xbox/Xbox 360 pad Support 🐲 Add HORI Arcade pad support (PS4/Switch) 🐲 Add Project Diva pad support (PS3/PS4) 🐲 Add Stadia/Steam pad support 🐲 Add custom game pad/dance pad mapping support and associated user interface. 🐲 Added gamepad database support we can add to! Fix crash on joystick index Add and modify Actor functions to allow getting mid-tween values and skew values Add extra modifiers, such as \u0026ldquo;Orient\u0026rdquo; Add mid-gameplay combo manipulation to Players Re-add old SM-SSC lighting Fix 1-pixel overlap and gap on holds (Thanks waiei!) Fix arrow hold drawing order Theme Add sub-themes to Soundwaves. Add CDtitles. Option to disable W4 and/or W5 timing windows (ITG Decent and Way Off) More detailed stats display Scatter MS judgment bar. Players can select their own life type individually. Measure counter for streams and breaks (Thanks rin!) Display summary of last-played songs on evaluation in 1-player mode. Linux: Fix 5.1 Folders being overwritten with 5.3 data due to hardcoded paths New 5.3 Folder Location beginning this Alpha Alternate binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nmacOS No longer causes program softlocks Support new input methods removing lag. Windows Fix bad renderer selection on pre-2011 graphics cards Fix rare crash on axis overflow. ","description":"Release Date: 4th May 2020 All platforms Fix no input for axis U/D and L/R (reported by Julius) 🐲 Fix Obscure Pad Buttons 🐲 Add Multi-point Analog Support 🐲 Fix analogue AXIS being mapped incorrectly 🐲 Fix PS2/PS1/GC pad converter adapters 🐲 Add Nintendo Joy-Con/Pro/SNES/NES/8Bit DO Pad support 🐲 Add PS1/PS2/PS3/PS4 pad Support 🐲 Add Xbox/Xbox 360 pad Support 🐲 Add HORI Arcade pad support (PS4/Switch) 🐲 Add Project Diva pad support (PS3/PS4) 🐲 Add Stadia/Steam pad support 🐲 Add custom game pad/dance pad mapping support and associated user interface."},{"id":39,"href":"/dev/mods/Mods-4-Scroll-Mods/","title":"Scroll","parent":"Guide to Modifiers","content":"Scroll modifiers affect the general scroll of the notefield. This is often used to change from upscroll to downscroll among other effects.\nReverse Desc: Reverse flips the scroll of the whole notefield from upscroll to downscroll. There is also a column-specific version that adds onto the value of normal Reverse.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: When going over 100%, the effect goes backwards, with 200% being normal upscroll again. Negative values go upward resulting in a longer notefield. This applies to the column-specific version, too. Going to 100% on column 1 will also make the judgment \u0026amp; combo swap positions.\nFor example, 100% reverse + 100% reverse on a single column would result in that single column having upscroll and the rest being downscroll.\nAvailable Variants (modstring): reverse, reverse\u0026lt;column\u0026gt;\nPlayerOptions format: Reverse(\u0026lt;magnitude\u0026gt; \u0026lt;approach rate\u0026gt;)\nExample: Reverse(1, 2)\nColumn-specific format: ReverseCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ReverseCol(2, 0.25, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nexample: *2 100% reverse *0.25 25% reverse2\nReverse video example\nAvailable sub modifiers: UnboundedReverse Desc: UnboundedReverse is a boolean modifier that makes it so Reverse no longer bounces back when going over 100% (Acts similar to negative reverse, behavior-wise). This affects all reverse-type modifiers, including Split, Alternate and Cross. In NotITG, this is known as reversetype.\nPlayerOptions format: UnboundedReverse(\u0026lt;enable\u0026gt;)\nmodstring format: \u0026lt;enable\u0026gt; unboundedreverse\nSplit Desc: The second half of the notefield gets reversed.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse. If used in modes with an odd number of columns, the middle column also gets affected.\nPlayerOptions format: Split(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Split(0.75,3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; split\nexample: *3 75% reverse\nSplit video example\nAlternate Desc: Every other column gets reversed, starting with the second column. Also can be activated with ultraman in NotITG.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse.\nPlayerOptions format: Alternate(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Alternate(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; alternate\nexample: *1 100% alternate\nAlternate video example\nCross Desc: The inner part of the notefield gets reversed with the outer sides staying as upscroll.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse.\nPlayerOptions format: Cross(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Cross(0.25, 4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; cross\nexample: *4 25% cross\nCross video example\nCentered Desc: Centered moves the notefield down to where the receptors are at the center of the whole field at 100% (which is usually around the middle of the screen), taking the above scroll modifiers into account (As seen with Alternate in the video example). Commonly used to create \u0026ldquo;driven drops\u0026rdquo;. Can also be activated with converge in modstring form.\nAlso often combined with other scroll modifiers above.\nCommonly used at 100%, but more or less can be used. Negative values move the notefield up.\nQuirks: The speed it has when going to the center depends on multiple theme metrics, so \u0026ldquo;driven drop\u0026rdquo; effects may be inconsistent across multiple themes. Most modfiles expect ITG positioning, which is available as the \u0026ldquo;Lower\u0026rdquo; note position setting in the default theme. The player\u0026rsquo;s Combo also moves down based on the current amount of Centered.\nPlayerOptions format: Centered(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Centered(1. 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; centered\nexample: *0.5 100% centered\nCentered video example\nCenteredPath Desc: While Centered moves the notefield down in position, CenteredPath moves the columns down their current path in multiples of the column\u0026rsquo;s width (Commonly 64 pixels for dance mode). This consist amount allows for more consistent \u0026ldquo;driven drops\u0026rdquo; across different setups. In NotITG, this modifier is called centered2.\nLarge amounts of CenteredPath may be used because \u0026ldquo;driven drops\u0026rdquo; can span the whole screen height.\nWhen combined with the opposite amount of MoveY in upscroll, interesting movement effects can be achieved.\nQuirks: Because CenteredPath moves columns down the path, receptors may become affected by mods that otherwise would not affect them (As seen in the video example with Tornado), and note paths may look different.\nPlayerOptions format: CenteredPath(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CenteredPath(2.5,0.23)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; centeredpath\nexample: *0.23 250% centeredpath\nCenteredPath video example\nWhat\u0026rsquo;s a \u0026ldquo;Driven Drop\u0026rdquo;? Driven Drops are an effect where the notes are stationary while the receptor moves down to hit the notes. (As seen in the ITG course, \u0026ldquo;Driven\u0026rdquo;)\nOften, speed mod has to be taken into account for these (which can be made simpler by forcing a speed mod).\nCenteredPath makes it easier due to using a consistent amount that doesn\u0026rsquo;t depend on multiple theme metrics, but the resulting effect may look different.\n\u0026ldquo;SCAR\u0026rdquo; Gimmicks Before column-specific Reverse existed, Combinations of Split, Cross, Alternate and Reverse (SCAR, for short) were used to generate column-specific reverse in 4 panel modes. Here\u0026rsquo;s what\u0026rsquo;s possible when combining the modifiers.\nSPLIT CROSS ALTERNATE Reverse LDUR reversed (1 = reversed) 50% -50% 50% 0% 0001 50% 50% -50% 0% 0010 -50% 50% -50% 0% 0100 50% 50% 50% 0% 0111 -50% -50% -50% 100% 1000 0% -100% 0% 100% 1001 50% 0% -100% 100% 1010 50% -50% -50% 100% 1011 -100% 0% 0% 100% 1100 -50% -50% 50% 100% 1101 -50% 50% -50% 100% 1110 ","description":"Scroll modifiers affect the general scroll of the notefield. This is often used to change from upscroll to downscroll among other effects.\nReverse Desc: Reverse flips the scroll of the whole notefield from upscroll to downscroll. There is also a column-specific version that adds onto the value of normal Reverse.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: When going over 100%, the effect goes backwards, with 200% being normal upscroll again."},{"id":40,"href":"/releases/A4.4/","title":"OutFox Alpha 4.4 Build","parent":"Release History","content":" Release Date: 4th March 2020 Alpha 4.4.1 changes Properly removed the obsolete input handlers - seems there was a separate one added to a lone screen. Cheers, Glenn. Fixed missing keystrokes on profile creation and high score name entry. All platforms Removed extra input debug output from Alpha 4.3; thank you for your reports and updates. 🐲 Fixed missing scancodes on keyboard input. Fixed old %d number behaviour in Lua. Returns to 5.0/5/1 behaviour. Thanks Tatsh for reporting. Removed \u0026lsquo;Frameskipcode\u0026rsquo; - It will be readded in a later build. Fixed a few more bugs in the render pipeline\u0026hellip; added in 2004. 🐲 Properly removed the obsolete input handlers. Fixed some old cmake typos and cleaned up code for linux. Fixed regression in not supporting smzip/zip archives. Thanks to Jubo for the report. Add new keyboard input system. Fixed InputHandler issues, no more skipping on pads. Fixed missing SDL options in input causing a break error. 🐲 Added new entry-points for OpenGL. 🐲 Fixed Matrix calculation errors, resulting in a small performance boost. 🐲 Added new math functions. Added new GL support for older Intel Cards. Thanks Astolfo, Gabrielpivotyt, Aqui and Wilycel for reporting. Added new noteskins. ArrowEffect fixes to prevent math errors. 🐲 Fixed matrix errors in GL causing odd crashes. Fixed missing ImageCache setting causing odd slowdowns on launch. Theme New options menu appearance. New two-row speed mod selector (pick a speed type, increment the value in a second row, similar to Simply Love) and note skin preview on ScreenPlayerOptions. New ScreenStageInformation design with song background. Updated Japanese language strings by hanubeki Downplay references to \u0026ldquo;Event Mode\u0026rdquo; in the gameplay user interface. Adjustment to ScreenSelectMusic heading to fix misalignment of the sort mode box\u0026rsquo;s fill. Thanks MoNeko for reporting. In a related change, refresh header on ScreenEvaluation. Fix missing option (ScreenOptionsTheme) for mascot on title screen. Change ScreenOptionsService (options menu from title screen) and submenus to use a minimalistic, static background. macOS Fixed another weird issue with compiling. Fixed dmg creation. Linux Fixed weird Mesa edge crash. Fixed odd missing entry-points on GLX, thanks Hālian for reporting. Windows Fixed missing GLAD definitions. ","description":"Release Date: 4th March 2020 Alpha 4.4.1 changes Properly removed the obsolete input handlers - seems there was a separate one added to a lone screen. Cheers, Glenn. Fixed missing keystrokes on profile creation and high score name entry. All platforms Removed extra input debug output from Alpha 4.3; thank you for your reports and updates. 🐲 Fixed missing scancodes on keyboard input. Fixed old %d number behaviour in Lua."},{"id":41,"href":"/dev/mods/Mods-5-Rotation-Mods/","title":"Rotation","parent":"Guide to Modifiers","content":"Rotation modifiers rotate the notes on the x, y or z axis, and can also rotate the receptors in some cases.\nSome noteskins may affect how the effect looks due to how rotation and zoom interact in the notefield.\nOutFox and Open/NotITG act the same way, while earlier versions of SM5 may act differently.\nDizzy Desc: Notes spin as they reach the receptor, with more rotationz added the farther away from the receptor a note is.\nCommon values involve multiples of PI to make some amount of rotation happen per beat.\nFor example, 628% means the notes do a full rotation every beat before hitting the receptor.\nQuirks: Unlike Twirl \u0026amp; Roll, the rotation is based on beat distance and not physical distance. Hold heads aren\u0026rsquo;t affected unless DizzyHolds is used.\nPlayerOptions format: Dizzy(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Dizzy(3.14, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; dizzy\nExample: *2 314% dizzy\nDizzy video example\nAvailable sub modifiers: DizzyHolds Desc: Enables Dizzy to affect hold heads. When used in 5.1, hold heads will still turn while held.\nPlayerOptions format: DizzyHolds(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; dizzyholds\nTwirl Desc: Notes twirl as they reach the receptor, with more rotationy added the farther away from the receptor a note is.\nValues can go from -200 to 200% and beyond.\nQuirks: Also affects holds in their entirety. Single-sided noteskins may result in invisible notes sometimes (As seen in the video example).\nPlayerOptions format: Twirl(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Twirl(2.2, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; twirl\nExample: *3 220% twirl\nTwirl video example\nRoll Desc: Notes roll as they reach the receptor, with more rotationx added the farther away from the receptor a note is.\nValues can go from -200 to 200% and beyond.\nQuirks: Single-sided noteskins may result in invisible notes sometimes (As seen in the video example). Does not affect hold heads.\nPlayerOptions format: Roll(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Roll(1.7, 3.4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; roll\nExample: *3.4 170% roll\nRoll video example\nConfusion Desc: The notes and receptors spin constantly. Has X, Y and Z variants available. Not commonly used in modfiles compared to its\u0026rsquo; Offset sub-modifier. 100% usually works as a magnitude.\nQuirks: The effect is beat-based, with the magnitude being a multiplier. 100% means a full rotation every ~6.28 (2*PI) beats\nAvailable Variants: Confusion, ConfusionX, ConfusionY\nAvailable Variants (modstring): confusion, confusionx, confusiony, confusionz (NotITG alias for confusion)\nPlayerOptions format: \u0026lt;Confusion variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Confusion(0.5, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 50% confusion\nConfusion video example\nAvailable sub modifiers: ConfusionOffset Desc: Allows one to rotate the notes and receptors by a static amount. Good for keeping the notes \u0026amp; receptors oriented properly while rotating the Player. Note that the magnitude is in radians.\n628.3185% is enough for a full rotation. (Another way to put it is PI * 200 if used in modstrings and PI * 2 if using PlayerOptions.)\nAvailable Variants: ConfusionOffset, ConfusionXOffset, ConfusionYOffset\nAvailable Variants (Column-Specific): ConfusionOffsetCol, ConfusionXOffsetCol, ConfusionYOffsetCol\nAvailable Variants (modstring): confusionoffset, confusionoffset\u0026lt;column\u0026gt;, confusionxoffset, confusionxoffset\u0026lt;column\u0026gt;, confusionyoffset, confusionyoffset\u0026lt;column\u0026gt;, confusionzoffset (NotITG alias for confusionoffset), confusionzoffset\u0026lt;column\u0026gt; (NotITG alias for confusionoffset\u0026lt;column\u0026gt;)\nPlayerOptions format: \u0026lt;ConfusionOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nOrient Desc: Orient rotates the notes and receptors based on their travel direction. That means other mods, like Drunk, can influence this modifier.\nOften 50% to 100% is good enough for an effect, as too much may make notes unreadable.\nQuirks: When a column is Reversed, 314% ConfusionOffset may be desired for the column (or field if the whole field is reversed)\nPlayerOptions format: Orient(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Orient(1, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; orient\nExample: *0.25 100% orient\nOrient video example\n","description":"Rotation modifiers rotate the notes on the x, y or z axis, and can also rotate the receptors in some cases.\nSome noteskins may affect how the effect looks due to how rotation and zoom interact in the notefield.\nOutFox and Open/NotITG act the same way, while earlier versions of SM5 may act differently.\nDizzy Desc: Notes spin as they reach the receptor, with more rotationz added the farther away from the receptor a note is."},{"id":42,"href":"/releases/A4.3/","title":"OutFox Alpha 4.3 Build","parent":"Release History","content":" Release Date: 9th February 2020 All platforms Fixed various missing keyboard inputs, including symbol keys (;:\u0026rsquo;@#,\u0026lt;\u0026gt;./?|`{}[])(\u0026amp;^%$\u0026quot;), the ~ key for localised keyboards, and the number pad. Fixed missing options for no mapping on localised keyboards. 🐲 Add touchscreen and mouse input hooks 🐲 Added hooks for haptic/rumble support on controllers. Why? Why not? 🐲 Fixed odd skipping on inputfilters. Removed average FPS gauge from debug overlay; caused skew on mod files. 🐲 Fixed a few bugs in the render pipeline\u0026hellip; added in 2004. 🐲 Properly integrated buffering. Rewritten triangle logic to prevent errors in ActorMultiVertex. Fixed a small lights bug. Added a cleaner way to shut the game down. Added new window states in preparation for the removal of RageDisplay (check the logs for events!) Fixed draw issue reported by some users. Linux Removed obsolete X11 input hook code. macOS This build will only run on 10.14/10.15 due to work in progress code. Fixed an integer overflow that messed with Catalina\u0026rsquo;s guiding of our output windows. Fixed a vertex overflow causing a very rare crash 🐲 Fixed polling error. Windows Removed obsolete win32 input hook code. ","description":"Release Date: 9th February 2020 All platforms Fixed various missing keyboard inputs, including symbol keys (;:\u0026rsquo;@#,\u0026lt;\u0026gt;./?|`{}[])(\u0026amp;^%$\u0026quot;), the ~ key for localised keyboards, and the number pad. Fixed missing options for no mapping on localised keyboards. 🐲 Add touchscreen and mouse input hooks 🐲 Added hooks for haptic/rumble support on controllers. Why? Why not? 🐲 Fixed odd skipping on inputfilters. Removed average FPS gauge from debug overlay; caused skew on mod files."},{"id":43,"href":"/dev/mods/Mods-6-Zoom-Mods/","title":"Zoom","parent":"Guide to Modifiers","content":"Zoom modifiers affect the size of the notefield or notes \u0026amp; receptors. Zoom works a bit differently in SM5 in that it also affects the z axis unlike in ITG/SM3.95, which only affect x \u0026amp; y.\nExtra scaling may be required if recreating effects between ITG and SM5.\nMods that work on the note and column-level may make holds look a bit weird due to how hold scaling works.\nMini Desc: Mini scales down the entire notefield, while maintaining the receptor position.\nThe following equation for calculating the zoom is this:\n1 - (0.5*mini), with mini being the magnitude as input into the PlayerOptions function.\n100% is half-size, and 200% is zero zoom.\nNegative values make the notefield bigger.\nQuirks: Positive and negative values increase how far down the notefield draws, Judgment \u0026amp; combo scale down with Mini, but will not scale up when Mini is negative (Unlike OpenITG/NotITG, where the judgment scales down or up and the combo is unaffected). Going beyond 200% will result in the notefield having a negative zoom, which might look weird.\nPlayerOptions format: Mini(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Mini(1,0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; mini\nExample: *0.2 100% mini\nMini video example\nTiny Desc: Tiny scales down the notes and receptors instead of the entire field. Variants for all three axis are available, as are column-specific variants. These are multiplied onto the whole field variants.\nThe following equation for calculating the zoom is this:\n0.5^tiny, with tiny being the magnitude as input into the PlayerOptions function.\nNotITG uses the equation from Mini instead of this one for the zoom.\nCommon values can be from -100 to 100%.\nQuirks: Judgment \u0026amp; combo scale down with Tiny, but will not scale up when Tiny is negative. Positive values bring the columns closer to simulate what Mini does, unlike NotITG. (Use the column-specific version if that effect is desired.)\nAvailable Variants: Tiny, TinyX, TinyY, TinyZ\nAvailable Variants (Column-Specific): TinyCol, TinyXCol, TinyYCol, TinyZCol, HoldTinyXCol (Hold bodies only, HoldTinyCol is an alias)\nAvailable Variants (modstring): tiny, tiny\u0026lt;column\u0026gt;, tinyx, tinyx\u0026lt;column\u0026gt;, tinyy, tinyy\u0026lt;column\u0026gt;, tinyz, tinyz\u0026lt;column\u0026gt;, holdtiny (NotITG alias that hits all columns, Hold bodies only, holdgirth is also an alias), holdtinyx\u0026lt;column\u0026gt; (Hold bodies only, holdtiny\u0026lt;column\u0026gt; is an alias (NotITG uses this name instead), holdgirth\u0026lt;column\u0026gt; is a NotITG alias)\nPlayerOptions format: \u0026lt;Tiny variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: Tiny(2, 0.5)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: TinyXCol(1, 1, 1, true):TinyYCol(2, -2, 0.5, true):TinyZCol(3, -4, 10, true):HoldTinyXCol(4, 3, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *0.5 -200% tinyy *1 100% tinyx1, *0.5 -200% tinyy2, *10 -400% tinyz3, *0.2 300% holdtinyx4\nTiny video example\nAvailable sub modifiers: TinyUsesMiniCalc Desc: When active, all Tiny mods use the zoom equation from Mini instead of the normal one. This allows for negative zooms and is useful for replicating NotITG effects that expect this behavior.\nPlayerOptions format: TinyUsesMiniCalc(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; tinyusesminicalc\nPulse Desc: Pulse is a set of mods that make the notes zoom in and out as they approach the receptors.\nPulseOuter affects the main pulsing effect, while PulseInner offsets the maximum \u0026amp; minumum zoom. Also has a tangent-based variant.\nPulseOuter is noticable at 100%, and 100% PulseInner offsets the zoom to between 2x and 1x zoom.\nQuirks: N/A\nAvailable Variants: PulseInner, PulseOuter, TanPulseInner, TanPulseOuter\nAvailable Variants (modstring): pulseinner, pulseouter, pulse (NotITG alias that hits both inner \u0026amp; outer), tanpulseinner, tanpulseouter, tanpulse (NotITG alias that hits both inner \u0026amp; outer)\nPlayerOptions format: \u0026lt;Pulse variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: PulseInner(1, 0.5, true):PulseOuter(1, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *0.5 100% pulseinner, *0.5 100% pulseouter\nPulse video example\nAvailable sub modifiers: PulseOffset Desc: Affects the phase of the sinusoidal pattern used for Pulse.\nAvailable Variants: PulseOffset, TanPulseOffset\nAvailable Variants (modstring): pulseoffset, tanpulseoffset\nPlayerOptions format: \u0026lt;PulseOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nPulsePeriod Desc: Affects the speed of the pulsing with a multiplier (1 + magnitude).\nPositive magnitudes slow down the pulsing, negative magnitudes speed it up.\n-100% freezes the effect at the minumum.\nAvailable Variants: PulsePeriod, TanPulsePeriod\nAvailable Variants (modstring): pulseperiod, tanpulseperiod\nPlayerOptions format: \u0026lt;PulsePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nShrinkLinear Desc: ShrinkLinear has notes start out zoomed in, and linearly go down to normal size based on how far away the note is from hitting the receptor. There are also separate variants for all three axis.\n50% is still readable in normal circumstances.\nNegative amounts may result in notes starting backwards and ending normally.\nQuirks: N/A\nAvailable Variants: ShrinkLinear, ShrinkLinearX, ShrinkLinearY, ShrinkLinearZ\nAvailable Variants (modstring): shrinklinear, shrinklinearx, shrinklineary, shrinklinearz\nPlayerOptions format: \u0026lt;ShrinkLinear variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: ShrinkLinear(0.5,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *1 50% shrinklinear\nShrinklinear video example\nShrinkMult Desc: ShrinkMult has notes that start zoomed out and decelerate to normal zoom. There are also separate variants for all three axis.\n100% is a decent amount.\nQuirks: Using negative amounts will result in notes going to negative infinity zoom before going back to normal.\nAvailable Variants: ShrinkMult, ShrinkMultX, ShrinkMultY, ShrinkMultZ\nAvailable Variants (modstring): shrinkmult, shrinkmultx, shrinkmulty, shrinkmultz\nPlayerOptions format: \u0026lt;ShrinkMult variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: ShrinkMult(1, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *2 100% shrinkmult\nShrinkmult video example\n","description":"Zoom modifiers affect the size of the notefield or notes \u0026amp; receptors. Zoom works a bit differently in SM5 in that it also affects the z axis unlike in ITG/SM3.95, which only affect x \u0026amp; y.\nExtra scaling may be required if recreating effects between ITG and SM5.\nMods that work on the note and column-level may make holds look a bit weird due to how hold scaling works.\nMini Desc: Mini scales down the entire notefield, while maintaining the receptor position."},{"id":44,"href":"/dev/mods/Mods-7-Acceleration-Mods/","title":"Acceleration","parent":"Guide to Modifiers","content":"Acceleration modifiers mess with the vertical acceleration of the note. It lets people have notes speed up, slow down, or do a 180 among other things.\nBoomerang Desc: Notes start flying out from the top of the screen, do a 180 at around the bottom of the screen, and go back towards the receptors.\nThe modifier has a simple on/off nature, so any nonzero magnitude will work. (Unless the VariableBoomerang sub modifier is in play)\nQuirks: Hold bodies will draw only after the hold head does the 180. NotITG changed Boomerang\u0026rsquo;s behavior to work with the magnitude by default. See the VariableBoomerang sub modifier for replicating NotITG\u0026rsquo;s behavior.\nPlayerOptions format: Boomerang(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Boomerang(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; boomerang\nExample: *1 100% boomerang\nBoomerang video example\nAvailable sub modifiers: VariableBoomerang Desc: When active, Boomerang now takes its\u0026rsquo; magnitude into account, allowing for more varied effects.\nPlayerOptions format: VariableBoomerang(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; variableboomerang\nBrake Desc: Notes start fast at the bottom, but slow down as they approach the receptors.\nCommon values range from 50 to 200%\nQuirks: Going over 100% can result in notes going past the receptors and then rebounding back.\nAvailable variants (modstring): brake, land (alias for brake)\nPlayerOptions format: Brake(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Brake(2, 5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *5 200% brake\nBrake video example\nBoost Desc: Notes start slow at the bottom, but speed up as they approach the receptors.\nCommon values range from -100% to 200%.\nQuirks: Going over 100% may result in notes bobing at the bottom before going up.\nPlayerOptions format: Boost(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Boost(1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; boost\nExample: *3 150% boost\nBoost video example\nExpand Desc: the visual speed of the field\u0026rsquo;s notes oscilates back and forth, as if the notefield is expanding and contracting. Also has a tangent variant.\nCommon values range from -50 to 100%\nQuirks: When using a negative magnitude, the notes may go beyond the receptor. Stops and Delays will pause the effect altogether.\nAvailable variants: Expand, TanExpand\nAvailable variants (modstring): expand, tanexpand\nPlayerOptions format: \u0026lt;Expand variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Expand(1.2, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.25 120% Expand\nExpand video example\nAvailable sub modifiers: ExpandPeriod Desc: Can speed up or slow down the oscilation. Positive speeds up, while negative slows down, -100% stops the effect.\nAvailable variants: ExpandPeriod, TanExpandPeriod\nAvailable variants (modstring): expandperiod, tanexpandperiod, expandsize (alias in NotITG), tanexpandsize (alias in NotITG)\nPlayerOptions format: \u0026lt;ExpandPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nWave Desc: Notes slow down in the middle and then speed up to the receptors. 200% makes notes effectively stop at the middle before going up to the receptors. Also has a column-specific version.\nCommon values range from 50 to 200%.\nQuirks: N/A\nAvailable variants (modstring): wave, wave\u0026lt;column\u0026gt;\nPlayerOptions format: Wave(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Wave(2, 0.5)\nColumn-specific format: WaveCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: WaveCol(1, -2, 10, true):WaveCol(2, -1, 5, true):WaveCol(3, 1, 5, true):WaveCol(4, 2, 10, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt; Example: *0.5 200% wave *10 -200 wave1, *5 -100% wave2, *5 100% wave3, *10 200% wave4\nWave video example\nAvailable sub modifiers: WavePeriod Desc: Affects how many times the notes slow down. Positive values increase the period (less times the notes slow down), while negative values decrease the period (more times the notes slow down). -100% stops the effect.\nModstring variants: waveperiod, wavesize (NotITG alias), waveperiod\u0026lt;column\u0026gt;\nPlayerOptions format: WavePeriod(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: WavePeriodCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nWaveOffset Desc: Shifts where the slow down point is. Positive values shift towards the receptor, negative values shift away from the receptor.\nModstring variants: waveoffset, waveoffset\u0026lt;column\u0026gt;\nPlayerOptions format: WaveOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: WaveOffsetCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\n","description":"Acceleration modifiers mess with the vertical acceleration of the note. It lets people have notes speed up, slow down, or do a 180 among other things.\nBoomerang Desc: Notes start flying out from the top of the screen, do a 180 at around the bottom of the screen, and go back towards the receptors.\nThe modifier has a simple on/off nature, so any nonzero magnitude will work. (Unless the VariableBoomerang sub modifier is in play)"},{"id":45,"href":"/releases/A4.2/","title":"OutFox Alpha 4.2 Build","parent":"Release History","content":" Release Date: 5th February 2020 Windows build was pulled due to bugs.\n🐉 Fix Shader initialisation being skipped due to new LLW pipeline. Fix Detection returning false when actually true. Added new Delta2019 noteskin (Thanks shakesoda). Fix StepMania 5.0 noteskins to not use .redir files or fall back on assets from Default. Fix SDL init not being set up correctly on older hardware. Fix static linking of libs on windows. Add SDL patchfix to fix input lag. New GLAD renderer pipeline. 🐉 Input has been completely rewritten to test controller input. Player 2\u0026rsquo;s keyboard mappings will need resetting to numpad as it sets +-/* as keys. (This is a hooks bug we will remove). Lua\u0026rsquo;s backend code has been made a little more stable. Removed several cachemiss overflows, an important one being in the math pipe. 🐉 Experimental touch support added. (There is no code at the moment, but it is on our roadmap.) 🐉 Experimental hotplugging Support. DrunkOffset and TipsyOffset changed to match their behaviour on NotITG v4; the previous versions have been renamed to DrunkSpacing and TipsySpacing. HiddenRegions has been added Optimise old ssc code from NoteDisplay. Add option for hiding the mascot character on the title screen in Soundwaves 🐉 Gatekeeper no longer gets upset on macOS Core input modules are now macOS Sierra (10.12)+ compliant. Sound modules are now 10.12+ compliant. HiDPI is enabled, but the resize window will still fail on a resize if the computer has 2 monitors. (known bug) Memory usage display on renderer stats overlay now functions on macOS. Fix clock errors. 🐉 Remove DirectX code from the game on Windows. Fixed edge case heap crash on Windows caused by game controllers. Fix bad Xinput crash on Linux. Fix lag on gameplay on Linux. ","description":"Release Date: 5th February 2020 Windows build was pulled due to bugs.\n🐉 Fix Shader initialisation being skipped due to new LLW pipeline. Fix Detection returning false when actually true. Added new Delta2019 noteskin (Thanks shakesoda). Fix StepMania 5.0 noteskins to not use .redir files or fall back on assets from Default. Fix SDL init not being set up correctly on older hardware. Fix static linking of libs on windows."},{"id":46,"href":"/user-guide/meta/","title":"Front Matter","parent":"User Guide","content":"","description":""},{"id":47,"href":"/dev/mode-support/","title":"NoteLoader support","parent":"Developers and Creators","content":"This section lists the different types of NoteLoaders (file parsers that can load up different simfiles/charts or maps) that we support and their current amount of completion. These pages are a living document, so are a work in progress. If you see a parser format we do not support but you think we should, do let us know!\nClick on a button below to learn more about the parsers!\nBMS/BME/PMS DTX/GDA/G2A KSF SM OSU/OTO TJA TXT Written and Maintained with ♡ by Squirrel\n","description":"This section lists the different types of NoteLoaders (file parsers that can load up different simfiles/charts or maps) that we support and their current amount of completion. These pages are a living document, so are a work in progress. If you see a parser format we do not support but you think we should, do let us know!\nClick on a button below to learn more about the parsers!\nBMS/BME/PMS DTX/GDA/G2A KSF SM OSU/OTO TJA TXT Written and Maintained with ♡ by Squirrel"},{"id":48,"href":"/releases/A4.1/","title":"OutFox Alpha 4.1 Build","parent":"Release History","content":" Release Date: 4th January 2020 Alternate Linux binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nNew GLFW Renderer Pipeline. 🐉Added Xwindow SDL2 support. 🐉Tweak to remove dependency on ancient colour handling that actually slowed the game down, instead of giving it the intended performance. Re-purposed GL Entrypoints to re-support ancient GL\u0026lt;1.5 Hardware, for Native Arcade Hardware support. 🐉Fix LLW to allow for set contexts. 🐉Experimental GLES2 support from Dragons. Add new Lua hook for getrenderer now we have a choice. 🐉Experimental HiDPI support. Add Mascot to home screen. Fix missing external SDL code. Fix NaN crash on Actors. Fix GLHandleARB mismatch. Add better openGL handling for contexts on different systems. 🐉Fix ImageCache forcing a D3D format causing unnecessary conversions in RageSurface. Remove float based textures as they were unused. Remove Rageformat PAL from the game as it\u0026rsquo;s been unsupported since 2007. Fix apple compiling with new pipeline. Fix float errors in Gameloop. ","description":"Release Date: 4th January 2020 Alternate Linux binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nNew GLFW Renderer Pipeline. 🐉Added Xwindow SDL2 support. 🐉Tweak to remove dependency on ancient colour handling that actually slowed the game down, instead of giving it the intended performance. Re-purposed GL Entrypoints to re-support ancient GL\u0026lt;1.5 Hardware, for Native Arcade Hardware support. 🐉Fix LLW to allow for set contexts. 🐉Experimental GLES2 support from Dragons."},{"id":49,"href":"/user-guide/","title":"User Guide","parent":"Project OutFox Wiki","content":"","description":""},{"id":50,"href":"/dev/mods/Mods-8-Visibility-Mods/","title":"Visibility","parent":"Guide to Modifiers","content":" Visibility Modifiers Visibility modifiers hide various parts of the gameplay screen, such as the background, notes, receptors and other things.\nCover Desc: Cover hides the song background. The range between fully lit and fully hidden scales based on the current value of the BGBrightness preference.\nUse negative amounts to bring back the background if BGBrightness is less than 1. A lot of modfiles use large amounts of negative cover to deal with any positive value BGBrightness could have.\nIf used on only one player, only that player\u0026rsquo;s side will have the background dimmed/hidden, with a fade in the middle between the two players.\nQuirks: If BGBrightness is at 0, then no amount of negative Cover can bring back the background.\nPlayerOptions format: Cover(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Cover(0.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; cover\nExample: *0.5 50% cover\nBlind Desc: Blind hides the information relating to judgment \u0026amp; combo.\nUnlike most On/Off modifiers, this modifier is float-based. Any positive magnitude will turn it on.\nQuirks: In OpenITG, the noteflashes also turn into all fantastic (W1) noteflashes, which is why some of the modding community discourages its\u0026rsquo; use.\nPlayerOptions format: Blind(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Blind(1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; blind\nExample: *1 100% blind\nHideHoldJudgments Desc: Hides the OK/NG judgments that appear upon the end of a hold note. It\u0026rsquo;s called \u0026ldquo;hoholdjudge\u0026rdquo; or \u0026ldquo;halgun\u0026rdquo; in NotITG.\nQuirks: N/A\nPlayerOptions format: HideHoldJudgments(\u0026lt;enable\u0026gt;)\nExample: HideHoldJudgments(true)\nModstring format: \u0026lt;enable\u0026gt; hideholdjudgments\nExample: 100% hideholdjudgments\nHideNoteFlash Desc: Turns off the noteflashes for a given column. Since alpha 4.8.3, all columns can\u0026rsquo;t be hit from the modstring (possible in NotITG), but can be done through the lua function. Also known as \u0026ldquo;hidenoteflashes\u0026rdquo; in NotITG.\nQuirks: N/A\nAvailable variants (modstring): hidenoteflash\u0026lt;column\u0026gt;, hidenoteflash (NotITG alias that hits all columns), hidenoteflashes\u0026lt;column\u0026gt; (NotITG alias), hidenoteflashes (NotITG alias that hits all columns)\nPlayerOptions format: HideNoteFlashCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: HideNoteFlashCol(2, true)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: 100% hidenoteflash2\nMinTNSToHideNotes Desc: This sets the minimum judgment that is needed to hide the notes upon hitting. There is no modstring form.\nQuirks: The default is set in Preferences.ini, holds aren\u0026rsquo;t subject to this setting.\nPlayerOptions format: MinTNSToHideNotes(\u0026lt;TapNoteScore enum\u0026gt;)\nExample: MinTNSToHideNotes('TapNoteScore_W1')\nDrawSize Desc: DrawSize is a set of modifiers that affect how far down and up the notefield will draw notes.\nDrawSize affects notes below the receptor (usually notes that have yet to be hit), while DrawSizeBack affects notes above the receptor (usually notes that were visibly missed)\nNot often used unless some mod effects need a longer or shorter field, but can be used to ensure a consistent field length across multiple setups through ratios.\nQuirks: The farther the notefield is allowed to draw, the more notes will be on-screen, which can hurt game performance. This is a multiplier, so it depends on your theme\u0026rsquo;s metrics.\nAvailable variants: DrawSize, DrawSizeBack\nAvailable variants (modstring): drawsize, drawsizefront (NotITG alias for drawsize), drawdistance (NotITG alias for drawsize), drawdistancefront (NotITG alias for drawsize), drawsizeback, drawdistanceback (NotITG alias for drawsizeback)\nPlayerOptions format: \u0026lt;DrawSize variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: DrawSize(-0.5,1)\nModstring format: *\u0026lt;approach rate\u0026gt;, \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 -50% drawsize\nDark Desc: Dark hides the receptors (but not the noteflashes). There is a column-specific variant and it adds onto the normal variant.\nBecause of this additive property, the range often used can go between -100 and 100%.\nQuirks: N/A\nAvailable variants: Dark, DarkCol\nAvailable variants (modstring): dark, dark\u0026lt;column\u0026gt;\nPlayerOptions format: Dark(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Dark(1, 0.125)\nColumn-specific format: DarkCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: DarkCol(1, 0.25, 1, true):DarkCol(2, 0.5, 1, true):DarkCol(3, 0.75, 1, true):DarkCol(4, 0.90, 1, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.125 100% dark *1 25% dark1, *1 50% dark2, *1 75% dark3, *1 90% dark4\nDark video example\nStealth Desc: Stealth hides the notes. When activating, notes start glowing white (0 to 50%), and then the glow fades away to an invisible note (50 to 100%). There\u0026rsquo;s a column-specific version. All variants add onto eachother, so it\u0026rsquo;s possible to have one variant at 100%, and undo it for another type with a different variant at -100%.\nBecause of this additive property, the range often used can go between -100 and 100%.\nStealthMines affects the mines only, while StealthHolds only affects the hold bodies (topcap, body, bottomcap)\nNotITG has column-specific versions of those variants, too.\nQuirks: N/A\nAvailable variants: Stealth, StealthCol, StealthHolds, StealthMines\nAvailable variants (modstring): stealth, stealth\u0026lt;column\u0026gt;, stealthmines, minestealth (NotITG\u0026rsquo;s name for stealthmines), minestealth\u0026lt;column\u0026gt; (NotITG only), hidemines (NotITG alias), hidemines\u0026lt;column\u0026gt; (NotITG alias), stealthholds, holdstealth (NotITG\u0026rsquo;s name for stealthholds), holdstealth\u0026lt;columns\u0026gt; (NotITG\u0026rsquo;s only), hideholds (NotITG alias), hideholds\u0026lt;column\u0026gt; (NotITG alias)\nPlayerOptions format: \u0026lt;Stealth variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Stealth(0.90, 1, true):StealthMines(-0.4, 1)\nColumn-specific format: StealthCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthCol(1, 0.25, 1, true):StealthCol(2, 0.5, 1, true):StealthCol(3, 0.75, 1, true):StealthCol(4, 0.90, 1, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 90% stealth, *1 -40% stealthmines *1 25% stealth1, *1 50% stealth2, *1 75% stealth3, *1 90% stealth4\nStealth video example\nAvailable sub modifiers: StealthType Desc: When active, Stealth, Sudden, Hidden, Blink and RandomVanish act based on y offset (distance from the receptor) instead of the visible y position on the screen.\nPlayerOptions format: StealthType(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; stealthtype\nStealthPastReceptors Desc: When active, Stealth, Sudden, Hidden, Blink and RandomVanish will not revert to zero upon passing the receptors.\nPlayerOptions format: StealthPastReceptors(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; stealthpastreceptors\nSudden Desc: Notes start invisible and appear at around the middle of the notefield.\nDue to how Stealth works, values between -100 and 100% usually get used.\nQuirks: When combined with Hidden, the appearance point moves down.\nPlayerOptions format: Sudden(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Sudden(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; sudden\nExample: *1 100% sudden\nSudden video example\nAvailable sub modifiers: SuddenOffset Desc: Shifts the point where the notes appear. Positive values shifts the point away from the receptors, while negative values shift it towards the receptors.\nPlayerOptions format: SuddenOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; suddenoffset\nHidden Desc: Notes start visible and disappear at around the middle of the notefield.\nDue to how Stealth works, values between -100 and 100% usually get used.\nQuirks: When combined with Sudden, the disappearance point moves up.\nPlayerOptions format: Hidden(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Hidden(0.75, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hidden\nExample: *1 75% hidden\nHidden video example\nAvailable sub modifiers: HiddenOffset Desc: Shifts the point where the notes disappear. Positive values shifts the point away from the receptors, while negative values shift it towards the receptors.\nPlayerOptions format: HiddenOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hiddenoffset\nBlink Desc: The notes blink in and out of sight. The blinking itself is based on game uptime.\nUnlike most modifiers, this only has an on and off state. Any positive magnitude will work.\nQuirks: Due to the magnitude not affecting anything and the clock being based on game uptime (unless ModTimer is changed), Blink is considered a bad mod in terms of scripted modfiles, and its\u0026rsquo; use is discouraged.\nPlayerOptions format: Blink(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Blink(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; blink\nExample: *1 100% blink\nBlink video example\nRandomVanish Desc: The notes disappear, then reappear in a different/random column. NotITG supposedly has an offset sub modifier. NotITG also split this modifier into separate \u0026ldquo;Randomize\u0026rdquo; and \u0026ldquo;Vanish\u0026rdquo; modifiers.\nNot used that much.\nQuirks: The \u0026ldquo;Random\u0026rdquo; feature of \u0026ldquo;RandomVanish\u0026rdquo; was removed in SM5 beta2a, but should fully work in NotITG.\nPlayerOptions format: RandomVanish(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: RandomVanish(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; randomvanish\nExample: *1 100% randomvanish\nRandomVanish video example\n","description":"Visibility Modifiers Visibility modifiers hide various parts of the gameplay screen, such as the background, notes, receptors and other things.\nCover Desc: Cover hides the song background. The range between fully lit and fully hidden scales based on the current value of the BGBrightness preference.\nUse negative amounts to bring back the background if BGBrightness is less than 1. A lot of modfiles use large amounts of negative cover to deal with any positive value BGBrightness could have."},{"id":51,"href":"/dev/","title":"Developers and Creators","parent":"Project OutFox Wiki","content":" Lua and Actors Descriptions about the actor types available on OutFox and the general anatomy on how to create one. Effect Simfiles Guide to Modifiers An explanation on how modifiers (mods) work and how to include them in your simfile. Introduction to Theming Learn how to create custom themes for the engine. ","description":" Lua and Actors Descriptions about the actor types available on OutFox and the general anatomy on how to create one. Effect Simfiles Guide to Modifiers An explanation on how modifiers (mods) work and how to include them in your simfile. Introduction to Theming Learn how to create custom themes for the engine. "},{"id":52,"href":"/dev/editor/","title":"Editor","parent":"Developers and Creators","content":"The OutFox chart editor brings a lot of new elements that can assist you on chart and modfile creations. The editor is constantly being updated, so a lot of changes might happen between versions. These changes will be tagged with the version number next to it (ex. (4.11.0)) to determine the version that introduced this change. Adding/Manipulating notes Defining Timing Data Editor Preferences ","description":"The OutFox chart editor brings a lot of new elements that can assist you on chart and modfile creations. The editor is constantly being updated, so a lot of changes might happen between versions. These changes will be tagged with the version number next to it (ex. (4.11.0)) to determine the version that introduced this change. Adding/Manipulating notes Defining Timing Data Editor Preferences "},{"id":53,"href":"/roadmap/","title":"Our Project Roadmap","parent":"Project OutFox Wiki","content":" OutFox Alpha 3.0 to 4.0 Roadmap ","description":" OutFox Alpha 3.0 to 4.0 Roadmap "},{"id":54,"href":"/roadmap/2019/","title":"OutFox Alpha 3.0 to 4.0 Roadmap","parent":"Our Project Roadmap","content":" OutFox Alpha 3.0 to 4.0 Roadmap The following list is what the project planned and needed to have ready in time for our first public Alpha build that was released on the 16th December 2019. This roadmap was what we targeted during our alpha 3 stage, commonly known as \u0026lsquo;bronze\u0026rsquo; internally. We had a branch running alongside which was known as \u0026lsquo;silver\u0026rsquo; as it had been tried and tested code from a lot of work done before.\nDue to how little time we had and after the branch merge fail which lost us around 5 months work on this fork, \u0026lsquo;silver\u0026rsquo; was abandoned and restarted as alpha 4. We did not have a properly defined direction during this part of the project, it was more about fixing massive glaring bugs to make the game smoother to build upon, as the base game did not like being changed at all. The other main part of the project at this point was to get MacOSX compiling and moving in the right direction. The game didn\u0026rsquo;t work at all, nor did it even run correctly when we got it working. That ate most of 2019\u0026rsquo;s development time. This was worth it in the long run, as it has made it a lot easier to support newer versions of the OS, as well as the new M1 architecture from Apple.\n✅ Update GLEW ✅ Update and fix MacOSX building and compiling ✅ Fix Windows 7 compiling and crashing ✅ Fix libraries ✅ Change math system ✅ Fix ALSA referencing so the driver works ✅ Fix InputDevice referencing in Linux ✅ Fix clock methodology on MacOSX ✅ Move internal systems to support SDL ✅ LLW fixes on Linux and MacOSX ✅ Rewrite most of darwin code to support Catalina Beta ✅ Move codebase to C++11 Completion Date: 30th December 2019 ","description":"OutFox Alpha 3.0 to 4.0 Roadmap The following list is what the project planned and needed to have ready in time for our first public Alpha build that was released on the 16th December 2019. This roadmap was what we targeted during our alpha 3 stage, commonly known as \u0026lsquo;bronze\u0026rsquo; internally. We had a branch running alongside which was known as \u0026lsquo;silver\u0026rsquo; as it had been tried and tested code from a lot of work done before."},{"id":55,"href":"/releases/A4.0/","title":"OutFox Alpha 4.0 Build","parent":"Release History","content":" Release Date: 16th December 2019 Fix up NoteField zoom and positioning math for soundwaves. Fix Linux Compile. Fix Mine Rotation. Fix FFMPEG memory leak. Fix Credits with inconsistent shakesoda. Add back select button menu, but also change the presentation of the options themselves to make it more prominent. Set Loading Window Size on Linux. Allow any splash size on windows. Ensure Frame is persistent and not lose data. Fix screengameplay background.lua calling the old func instead of the updated one. Fix splash being width locked. Make Eval\u0026rsquo;s noteskin actors grab from the Stage ModsLevel. Fix making Credit\u0026rsquo;s and Openings work on any Theme\u0026rsquo;s screen height. Fix typing issue with DrawDistanceBeforeTargetsPixels. Fix TapNoteScore_Attack being invalid by replacing it with a valid TNS. Allow PLayerAI to use Pro Judgments. Remove delete on sharedptr in D3D. Fix any image file extension support for avatars. 🐉Update soundman earlier to stop usb cards lagging. Hotfix Crash fixes. 🐉Fix Colour Profile on D3D. Fix Input detection on MacOS. Update MacOS App Icon. Fix typo pointed out by shakesoda. Make map controllers screen BG more minimal, strip down overlay on input calibration gameplay. New HD Noteskins. Include new core mediaframeworks into CMake. NSIS and Installer fixes. Fix Lua Compile Warning. Allow Lua access to new Module system Fix Lua Module file permission issues Apply Lua Module system to default theme objects Fix Topcap Effects. Add Stretch and shrink holds. Make BitmapText Accept floats and then convert to int to prevent Lua errors. Tweak lifebar and judgment for shake, explain ComboIsPerRow option in theme. ","description":"Release Date: 16th December 2019 Fix up NoteField zoom and positioning math for soundwaves. Fix Linux Compile. Fix Mine Rotation. Fix FFMPEG memory leak. Fix Credits with inconsistent shakesoda. Add back select button menu, but also change the presentation of the options themselves to make it more prominent. Set Loading Window Size on Linux. Allow any splash size on windows. Ensure Frame is persistent and not lose data. Fix screengameplay background."},{"id":56,"href":"/dev/mods/Mods-9-Path-Mods/","title":"Path modifiers","parent":"Guide to Modifiers","content":"Path modifiers affect the path a note takes to the receptor, often curving it in some way or creating a type of wave in the movement.\nDrunk Desc: Drunk makes the notes and receptors move left and right in a constantly shifting sinusoidal wave. There are extra variants for the Y and Z axis, as well as tangent variants.\nCommon values can be practically any value, due to its\u0026rsquo; wide use in modfiles. Try starting with -200 to 200% for an initial effect.\nQuirks: When combined with Tipsy in SM5.1 and earlier, hold bodies may detatch from the hold head. The phase of the sinusoidal wave depends on game uptime unless the mod timer is changed.\nAvailable variants: Drunk, DrunkY, DrunkZ, TanDrunk, TanDrunkY, TanDrunkZ\nAvailable variants (modstring): drunk, drunky, drunkz, tandrunk, tandrunky, tandrunkz\nPlayerOptions format: \u0026lt;Drunk variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Drunk(3, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 300% drunk\nDrunk video example\nAvailable sub modifiers: DrunkOffset Desc: Offsets the phase of the sinusoidal wave, which is added onto the offset caused by time.\nAvailable variants: DrunkOffset, DrunkYOffset, DrunkZOffset, TanDrunkOffset, TanDrunkYOffset, TanDrunkZOffset\nAvailable variants (modstring): drunkoffset, drunkyoffset, drunkzoffset, tandrunkoffset, tandrunkyoffset, tandrunkzoffset\nPlayerOptions format: \u0026lt;DrunkOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkPeriod Desc: Alters the period of the sinusoidal wave. Positive values decrease the period, negative values increase the period. -100% just results in the columns moving, but the notes won\u0026rsquo;t go back and forth.\nAvailable variants: DrunkPeriod, DrunkYPeriod, DrunkZPeriod, TanDrunkPeriod, TanDrunkYPeriod, TanDrunkZPeriod\nAvailable variants (modstring): drunkperiod, drunksize (NotITG alias for drunkperiod), drunkyperiod, drunkysize (NotITG alias for drunkyperiod), drunkzperiod, drunkzsize (NotITG alias for drunkzperiod), tandrunkperiod, tandrunksize (NotITG alias for tandrunkperiod), tandrunkyperiod, tandrunkysize (NotITG alias for tandrunkyperiod), tandrunkzperiod, tandrunkzsize (NotITG alias for tandrunkzperiod)\nPlayerOptions format: \u0026lt;DrunkPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkSpacing Desc: Alters the amount of space between the columns, and is cyclical like DrunkOffset. Used to be called \u0026ldquo;DrunkOffset\u0026rdquo; before OutFox and NotITG v4.\nAvailable variants: DrunkSpacing, DrunkYSpacing, DrunkZSpacing, TanDrunkSpacing, TanDrunkYSpacing, TanDrunkZSpacing\nAvailable variants (modstring): drunkspacing, drunkyspacing, drunkzspacing, tandrunkspacing, tandrunkyspacing, tandrunkzspacing\nPlayerOptions format: \u0026lt;DrunkSpacing variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkSpeed Desc: Affects the speed of Drunk through a multiplier. Positive numbers speed it up, negative numbers slow it down, -100% freezes the effect. Will look really jittery when using game uptime as the mod timer.\nAvailable variants: DrunkSpeed, DrunkYSpeed, DrunkZSpeed, TanDrunkSpeed, TanDrunkYSpeed, TanDrunkZSpeed\nAvailable variants (modstring): drunkspeed, drunkyspeed, drunkzspeed, tandrunkspeed, tandrunkyspeed, tandrunkzspeed\nPlayerOptions format: \u0026lt;DrunkSpeed variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBounce Desc: Notes bounce to the right. There\u0026rsquo;s also a Z axis variant that has notes bounce towards the player.\n100% is good enough to give a good idea for the effect.\nQuirks: N/A\nAvailable variants: Bounce, BounceZ\nAvailable variants (modstring): bounce, bouncez\nPlayerOptions format: \u0026lt;Bounce variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Bounce(1, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.25 100% bounce\nBounce video example\nAvailable sub modifiers: BouncePeriod Desc: Affects the period of the bouncing. Positive numbers increase the period, while negative numbers decrease the period. -100% moves the columns to the highest point of the bounce.\nAvailable variants: BouncePeriod, BounceZPeriod\nAvailable variants (modstring): bounceperiod, bouncezperiod\nPlayerOptions format: \u0026lt;BouncePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBounceOffset Desc: Offsets the phase of the bounce.\nAvailable variants: BounceOffset, BounceZOffset\nAvailable variants (modstring): bounceoffset, bouncezoffset\nPlayerOptions format: \u0026lt;BounceOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nTornado Desc: Notes swirl around as they go to the receptor. Has a Z axis variant, as well as tangent variants.\nCommon values range from -200 to 200%\nQuirks: N/A\nAvailable variants: Tornado, TornadoZ, TanTornado, TanTornadoZ\nAvailable variants (modstring): tornado, tornadoz, tantornado, tantornadoz\nPlayerOptions format: \u0026lt;Tornado variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tornado(1, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 100% tornado\nTornado video example\nAvailable sub modifiers: TornadoOffset Desc: Offsets the phase of the sinusoidal curves for each column. Large values are needed for noticable effects.\nAvailable variants: TornadoOffset, TornadoZOffset, TanTornadoOffset, TanTornadoZOffset\nAvailable variants (modstring): tornadooffset, tornadozoffset, tantornadooffset, tantornadozoffset\nPlayerOptions format: \u0026lt;TornadoOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nTornadoPeriod Desc: Affects the period of the sinusoidal curves for each column. Positive values decrease the period, while negative values increase the period. -100% visually removes the effect.\nAvailable variants:\nAvailable variants (modstring):\nPlayerOptions format: \u0026lt;TornadoPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBumpy Desc: Notes go back and forth on the z axis as they go towards the receptor. Has variants for all axis as well as tangent variants and column-specific variants. Unlike the variants for Stealth and Dark, this does not add onto the values for normal Bumpy.\nCommon values could be practically anywhere due to its\u0026rsquo; wide use in modfiles. Try starting with -300 to 300% for an initial amount.\nQuirks: N/A\nAvailable variants: Bumpy, BumpyX, BumpyY, TanBumpy, TanBumpyY, TanBumpyZ\nAvailable variants (column-specific): BumpyCol, BumpyXCol, BumpyYCol, TanBumpyCol, TanBumpyXCol, TanBumpyYCol\nAvailable variants (modstring): bumpy, bumpyx, bumpyy, bumpyz (NotITG alias for bumpy), bumpy\u0026lt;column\u0026gt;, bumpyx\u0026lt;column\u0026gt;, bumpyy\u0026lt;column\u0026gt;, bumpyz\u0026lt;column\u0026gt; (NotITG alias for bumpy\u0026lt;column\u0026gt;), tanbumpy, tanbumpyx, tanbumpyy, tanbumpyz (NotITG alias for tanbumpy), tanbumpy\u0026lt;column\u0026gt;, tanbumpyx\u0026lt;column\u0026gt;, tanbumpyy\u0026lt;column\u0026gt;, tanbumpyz\u0026lt;column\u0026gt; (NotITG alias for tanbumpy\u0026lt;column\u0026gt;)\nPlayerOptions format: \u0026lt;Bumpy variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Bumpy(3, 0.5)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: BumpyCol(1, -3, 3, true):BumpyCol(2, -1, 1, true):BumpyCol(3, 1, 1, true):BumpyCol(4, 3, 3) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.5 300% Bumpy\nBumpy video example\nAvailable sub modifiers: BumpyOffset Desc: Offsets the phase of the back and forth wave. The min/max and middle points are reachable through increments of 25%.\nAvailable variants: BumpyOffset, BumpyXOffset, BumpyYOffset, TanBumpyOffset, TanBumpyXOffset, TanBumpyYOffset\nAvailable variants (column-specific): BumpyOffsetCol, BumpyXOffsetCol, BumpyYOffsetCol, TanBumpyOffsetCol, TanBumpyXOffsetCol, TanBumpyYOffsetCol\nAvailable variants (modstring): bumpyoffset, bumpyxoffset, bumpyyoffset, bumpyzoffset (NotITG alias for bumpyoffset), bumpyoffset\u0026lt;column\u0026gt;, bumpyxoffset\u0026lt;column\u0026gt;, bumpyyoffset\u0026lt;column\u0026gt;, bumpyzoffset\u0026lt;column\u0026gt; (NotITG alias for bumpyoffset\u0026lt;column\u0026gt;), tanbumpyoffset, tanbumpyxoffset, tanbumpyyoffset, tanbumpyoffset\u0026lt;column\u0026gt;, tanbumpyxoffset\u0026lt;column\u0026gt;, tanbumpyyoffset\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;BumpyOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBumpyPeriod Desc: Affects the period of the back and forth wave. Positive values increase the period, while negative values decrease the period. -100% stops the effect and moves the columns to the negative-most value.\nAvailable variants: BumpyPeriod, BumpyXPeriod, BumpyYPeriod, TanBumpyPeriod, TanBumpyXPeriod, TanBumpyYPeriod\nAvailable variants (column-specific): BumpyPeriodCol, BumpyXPeriodCol, BumpyYPeriodCol, TanBumpyPeriodCol, TanBumpyXPeriodCol, TanBumpyYPeriodCol\nAvailable variants (modstring): bumpyperiod, bumpyxperiod, bumpyyperiod, bumpyzperiod (NotITG alias for bumpyperiod), bumpysize (NotITG alias for bumpyperiod), bumpyxsize (NotITG alias for bumpyxperiod), bumpyysize (NotITG alias for bumpyyperiod), bumpyzsize (NotITG alias for bumpyperiod), bumpyperiod\u0026lt;column\u0026gt;, bumpyxperiod\u0026lt;column\u0026gt;, bumpyyperiod\u0026lt;column\u0026gt;, bumpyzperiod\u0026lt;column\u0026gt; (NotITG alias for bumpyperiod\u0026lt;column\u0026gt;), tanbumpyperiod, tanbumpyxperiod, tanbumpyyperiod, tanbumpyzperiod (NotITG alias for tanbumpyperiod), tanbumpysize (NotITG alias for tanbumpyperiod), tanbumpyxsize (NotITG alias for tanbumpyxperiod), tanbumpyysize (NotITG alias for tanbumpyyperiod), tanbumpyzsize (NotITG alias for tanbumpyperiod), tanbumpyperiod\u0026lt;column\u0026gt;, tanbumpyxperiod\u0026lt;column\u0026gt;, tanbumpyyperiod\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;BumpyPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeat Desc: Notes \u0026amp; receptors pulse to the left and right to the beat. Contrary to popular belief, it is not the only mod. There are variants for each axis.\nCommon values range from -250% to 200%, but could be practically anything because of its\u0026rsquo; wide use in modfiles.\nQuirks: Beat in OpenITG \u0026amp; NotITG does not respond well to very high BPMs.\nAvailable variants: Beat, BeatY, BeatZ\nAvailable variants (modstring): beat, beaty, beatz\nPlayerOptions format: \u0026lt;Beat variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Beat(1.5, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 150% Beat\nBeat video example\nAvailable sub modifiers: BeatMult Desc: Multiply the BPM that Beat is reacting to. Negative values slow down, while positive values speed up. -50% is half, while 100% is double.\nAvailable variants: BeatMult, BeatYMult, BeatZMult\nAvailable variants (modstring): beatmult, beatymult, beatzmult\nPlayerOptions format: \u0026lt;BeatMult variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatOffset Desc: Offset the beat that the effect is going off of. 50% makes the effect act on the half beat instead of on the beat.\nAvailable variants: BeatOffset, BeatYOffset, BeatZOffset\nAvailable variants (modstring): beatoffset, beatyoffset, beatzoffset\nPlayerOptions format: \u0026lt;BeatOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatPeriod Desc: Affects the period of the wave used. Positive values increase the period, negative values reduce the period. -100% makes the field shift back and forth to the beat.\nAvailable variants: BeatPeriod, BeatYPeriod, BeatZPeriod\nAvailable variants (modstring): beatperiod, beatyperiod, beatzperiod, beatsize (NotITG alias for beatperiod), beatysize (NotITG alias for beatyperiod), beatzsize (NotITG alias for beatzperiod)\nPlayerOptions format: \u0026lt;BeatPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatCap (NotITG only) Desc: When active (any nonzero magnitude), Beat acts like it does in SM5, being able to properly react to high BPMs.\nAvailable variants (modstring): beatcap, beatcapy, beatcapz\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nZigzag Desc: Notes move left and right on a triangle wave. There is also a Z axis variant.\nCommon values range from -400 to 400%\nQuirks: N/A\nAvailable variants: Zigzag, ZigzagZ\nAvailable variants (modstring): zigzag, zigzagz\nPlayerOptions format: \u0026lt;Zigzag variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Zigzag(2, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 200% zigzag\nZigzag video example\nAvailable sub modifiers: ZigzagOffset Desc: Offsets the phase of the triangle wave used.\nAvailable variants: ZigzagOffset, ZigzagZOffset\nAvailable variants (modstring): zigzagoffset, zigzagzoffset\nPlayerOptions format: \u0026lt;ZigzagOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nZigzagPeriod Desc: Affects the period of the triangle wave. Positive values increase the period, negative values decrease the period, -100% shifts the field to the negative extrema.\nAvailable variants: ZigzagPeriod, ZigzagZPeriod\nAvailable variants (modstring): zigzagperiod, zigzagzperiod, zigzagsize (NotITG alias for zigzagperiod), zigzagzsize (NotITG alias for zigzagzperiod)\nPlayerOptions format: \u0026lt;ZigzagPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSawtooth Desc: Notes move left and right on a sawtooth wave. There is also a Z axis variant.\nCommon values range from -200 to 200%.\nQuirks: N/A\nAvailable variants: Sawtooth, SawtoothZ\nAvailable variants (modstring): sawtooth, sawtoothz\nPlayerOptions format: \u0026lt;Sawtooth variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Sawtooth(2, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 200% sawtooth\nSawtooth video example\nAvailable sub modifiers: SawtoothOffset (NotITG only) Desc: Offsets the sawtooth wave.\nAvailable variants (modstring): sawtoothoffset, sawtoothzoffset\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSawtoothPeriod Desc: Affects the period of the sawtooth wave. Positive values increase the period, negative values decrease the period. -100% makes the notefield disappear.\nAvailable variants: SawtoothPeriod, SawtoothZPeriod\nAvailable variants (modstring): sawtoothperiod, sawtoothzperiod, sawtoothsize (NotITG alias for sawtoothperiod), sawtoothzsize (NotITG alias for sawtoothzperiod)\nPlayerOptions format: \u0026lt;SawtoothPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSquare Desc: Notes \u0026amp; receptors are placed onto a (mostly) square wave. There is also a Z axis variant.\nCommon values range from -150 to 150%\nQuirks: The wave period is different from NotITG. Refer to https://gist.github.com/MrThatKid/2a8525a1abe1cb95073ef4eb64590b00\nAvailable variants: Square, SquareZ\nAvailable variants (modstring): square, squarez\nPlayerOptions format: \u0026lt;Square variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Square(-0.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 -50% square\nSquare video example\nAvailable sub modifiers: SquareOffset Desc: Offsets the square wave used.\nAvailable variants: SquareOffset, SquareZOffset\nAvailable variants (modstring): squareoffset, squarezoffset\nPlayerOptions format: \u0026lt;SquareOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSquarePeriod Desc: Alters the period of the square wave. Positive values increase the period, negative values decrease the period. -100% shifts the field to the positive extrema.\nAvailable variants: SquarePeriod, SquareZPeriod\nAvailable variants (modstring): squareperiod, sqaurezperiod\nPlayerOptions format: \u0026lt;SquarePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigital Desc: Notes are placed onto a \u0026lsquo;digital\u0026rsquo; sine wave. (Think of a sine wave, but more blocky looking). There is a variant for the Z axis, as well as tangent variants. Common values range from -400 to 400%\nQuirks: The wave period is different from NotITG. Refer to https://gist.github.com/MrThatKid/2a8525a1abe1cb95073ef4eb64590b00\nAvailable variants: Digital, DigitalZ, TanDigital, TanDigitalZ\nAvailable variants (modstring): Digital, DigitalZ, TanDigital, TanDigitalZ\nPlayerOptions format: \u0026lt;Digital variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Digital(-1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *3 -150% digital\nDigital video example\nAvailable sub modifiers: DigitalSteps Desc: Affects how many \u0026rsquo;levels\u0026rsquo; the digital sine wave has. Positive values make the wave smoother, while negative values make the wave more blocky. -50% visually removes the effect, -100% hides the notefield.\nAvailable variants: DigitalSteps, DigitalZSteps, TanDigitalSteps, TanDigitalZSteps\nAvailable variants (modstring): digitalsteps, digitalzsteps, tandigitalsteps, tandigitalzsteps\nPlayerOptions format: \u0026lt;DigitalSteps variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigitalOffset Desc: Offsets the sine wave used in Digital. It\u0026rsquo;s really granular, so large amounts and large approach rates may be needed.\nAvailable variants: DigitalOffset, DigitalZOffset, TanDigitalOffset, TanDigitalZOffset\nAvailable variants (modstring): digitaloffset, digitalzoffset, tandigitaloffset, tandigitalzoffset\nPlayerOptions format: \u0026lt;DigitalOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigitalPeriod Desc: Affects the period of the sine wave. Positive values increase the period, negative values decrease the period. -100% shifts the field to the negative extrema.\nAvailable variants: DigitalPeriod, DigitalZPeriod, TanDigitalPeriod, TanDigitalZPeriod\nAvailable variants (modstring): digitalperiod, digitalzperiod, tandigitalperiod, tandigitalzperiod\nPlayerOptions format: \u0026lt;DigitalPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiral Desc: Spiral is a set of modifiers that move notes in a spiral towards the receptors. There are three axis variants that are usually combined to make the full spiral effect (X + Y, Y + Z, X + Z)\nCommon values range from -200 to 200%, with a period of -99% as a starting point.\nQuirks: When at 50% Reverse, the spiral effect looks much more like a full spiral. SpiralY does not affect holds in OutFox unless some NoteField functions are used (Refer to the SpiralHolds sub modifier for more details. The video example uses NoteField:set_holds_use_nonstandard_y_pos only.)\nAvailable variants: SpiralX, SpiralY, SpiralZ\nAvailable variants (modstring): spiralx, spiraly, spiralz\nPlayerOptions format: \u0026lt;Spiral variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: SpiralX(1,1,true):SpiralY(1,1,true):SpiralXPeriod(-0.99,1,true):SpiralYPeriod(-0.99,1,true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% spiralx, *1 100% spiraly, *1 -99% spiralxperiod, *1 -99% spiralyperiod\nSpiral video example\nAvailable sub modifiers: SpiralOffset Desc: Offsets the waves used for the spiral.\nAvailable variants: SpiralXOffset, SpiralYOffset, SpiralZOffset\nAvailable variants (modstring): spiralxoffset, spiralyoffset, spiralzoffset\nPlayerOptions format: \u0026lt;SpiralOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiralPeriod Desc: Affects the period of the waves used in spiral. Positive values decrease the period, negative values increase the period, -100% just has notes come in at a diagonal line.\nAvailable variants: SpiralXPeriod, SpiralYPeriod, SpiralZPeriod\nAvailable variants (modstring): spiralxperiod, spiralyperiod, spiralzperiod\nPlayerOptions format: \u0026lt;SpiralPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiralHolds (NotITG only) Desc: When at a positive amount, the hold renderer is switched out for one that can handle spirals better with proper uv scaling. When at -100%, the hold render uses unscaled uvs for the holds, emulating old spiralholds behavior.\nThe old behavior can be mostly replicated in SM5 by combining NoteField:set_holds_orient_to_travel_dir with NoteField:set_holds_use_nonstandard_y_pos (works for most cases) or NoteField:set_hold_length_uses_beats (when dealing with ~50% reverse, holds become much more smooth)\nAvailable variants (modstring): spiralholds, holdtype (alias)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nAsymptote Desc: The receptors become the zero point of an asymptote on the x axis, while notes get closer to it on the x axis.\nThere aren\u0026rsquo;t any real common values because this modifier isn\u0026rsquo;t used that much.\nQuirks: N/A\nPlayerOptions format: \u0026lt;Asymptote variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Asymptote(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% asymptote\nAsymptote video example\nAvailable sub modifiers: AsymptoteOffset Desc: Moves the asymptote line. Negative values move it down.\nPlayerOptions format: AsymptoteOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; asymptoteoffset\nAsymptoteScale Desc: Affects the curve before veering off towards the asymptote. Negative values make the curve more noticable. Going past -100% flips the curve. Being at -100% hides the notefield. (Has an alias of \u0026ldquo;asymptotesize\u0026rdquo; in NotITG)\nPlayerOptions format: AsymptoteScale(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; asymptotescale\nParabola Desc: A set of modifiers that turn the path into a parabola, with the zero point being the receptors. There are variants for all axis.\nCommon values range from -500 to 500%\nQuirks: N/A\nAvailable variants: ParabolaX, ParabolaY, ParabolaZ\nAvailable variants (modstring): parabolax, parabolay, parabolaz\nPlayerOptions format: \u0026lt;Parabola variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ParabolaX(2, 0.125)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.125 200% parabolax\nParabola video example\nAvailable sub modifiers: ParabolaOffset Desc: Moves the zero point of the parabola.\nAvailable variants: ParabolaXOffset, ParabolaYOffset, ParabolaZOffset\nAvailable variants (modstring): parabolaxoffset, parabolayoffset, parabolazoffset\nPlayerOptions format: \u0026lt; variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nCubic Desc: A set of modifiers that turn the path into a cubic graph, with the zero point being the receptors. There are variants for all axis.\nCommon values range from -200% to 200%\nQuirks: N/A\nAvailable variants: CubicX, CubicY, CubicZ\nAvailable variants (modstring): cubicx, cubicy, cubicz\nPlayerOptions format: \u0026lt;Cubic variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CubicZ(3, 10)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *10 300% cubicz\nCubic video example\nAvailable sub modifiers: CubicOffset Desc: Moves the zero point of the cubic graph. This modifier is really granular, so use large amounts.\nAvailable variants: CubicXOffset, CubicYOffset, CubicZOffset\nAvailable variants (modstring): cubicxoffset, cubicyoffset, cubiczoffset\nPlayerOptions format: \u0026lt;CubicOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nXmode (SM5 only) Desc: A replication of Pump It Up\u0026rsquo;s X scroll mode.\nThis is rarely used, so 100% should work fine.\nQuirks: The effect is reversed on player 2 in singles mode and is reversed on the second half of the notefield if doubles modes are used. (The video example shows player 1)\nPlayerOptions format: Xmode(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Xmode(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; xmode\nExample: *1 100% xmode\nXmode video example\nAttenuate Desc: Emphasises the note position the further a note gets away from the receptor. Has variants for all axis. NotITG V3 and later does not have the Y axis variant.\nCommon values range from -300 to 300%\nQuirks: This modifier is applied after every other modifier has run, so all path modifiers are taken into account for this.\nAvailable variants: AttenuateX, AttenuateY, AttenuateZ\nAvailable variants (modstring): attenuatex, attenuate (NotITG name), attenuatey, attenuatez\nPlayerOptions format: \u0026lt;Attenuate variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: AttenuateX(2, 4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *4 200% attenuatex\nAttenuate video example\nAvailable sub modifiers: AttenuateOffset Desc: Offset the position emphasis used in Attenuate. Available variants: AttenuateXOffset, AttenuateYOffset, AttenuateZOffset\nAvailable variants (modstring): attenuatexoffset, attenuateoffset (NotITG name), attenuateyoffset, attenuatezoffset\nPlayerOptions format: \u0026lt;AttenuateOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\n","description":"Path modifiers affect the path a note takes to the receptor, often curving it in some way or creating a type of wave in the movement.\nDrunk Desc: Drunk makes the notes and receptors move left and right in a constantly shifting sinusoidal wave. There are extra variants for the Y and Z axis, as well as tangent variants.\nCommon values can be practically any value, due to its\u0026rsquo; wide use in modfiles."},{"id":57,"href":"/releases/","title":"Release History","parent":"Project OutFox Wiki","content":" OutFox Alpha 0.5.0 Full Changelog Build OutFox Alpha 0.4.18 Build OutFox Alpha 4.17.0 Build OutFox Alpha 4.16.0 Build OutFox Alpha 4.15.1 Build OutFox Alpha 4.15.0 Build OutFox Alpha 4.14.0 Build OutFox Alpha 4.13.0 Build OutFox Alpha 4.12.0 Build OutFox Alpha 4.11.0 Build OutFox Alpha 4.10.0 Build OutFox Alpha 4.9.10 Build OutFox Alpha 4.9.9HF3 Build OutFox Alpha 4.9.9HF2 Build OutFox Alpha 4.9.9HF Build OutFox Alpha 4.9.9 Build OutFox Alpha 4.9.8 Build OutFox Alpha 4.9.7GG Build OutFox Alpha 4.9.7 Build OutFox Alpha 4.9.6 Build OutFox Alpha 4.9.5 Build OutFox Alpha 4.9.1 Build OutFox Alpha 4.9.0/HF Build OutFox Alpha 4.8.5 Build OutFox Alpha 4.8.2 Build OutFox Alpha 4.8.1 Build OutFox Alpha 4.8.0 Build OutFox Alpha 4.6.0 Build OutFox Alpha 4.6.0 RC3 Build OutFox Alpha 4.6.0 RC2 Build OutFox Alpha 4.6.0 RC1 Build OutFox Alpha 4.5.9 Build OutFox Alpha 4.5.8 Build OutFox Alpha 4.5.6 Build OutFox Alpha 4.5.0 Build OutFox Alpha 4.4 Build OutFox Alpha 4.3 Build OutFox Alpha 4.2 Build OutFox Alpha 4.1 Build OutFox Alpha 4.0 Build ","description":"OutFox Alpha 0.5.0 Full Changelog Build OutFox Alpha 0.4.18 Build OutFox Alpha 4.17.0 Build OutFox Alpha 4.16.0 Build OutFox Alpha 4.15.1 Build OutFox Alpha 4.15.0 Build OutFox Alpha 4.14.0 Build OutFox Alpha 4.13.0 Build OutFox Alpha 4.12.0 Build OutFox Alpha 4.11.0 Build OutFox Alpha 4.10.0 Build OutFox Alpha 4.9.10 Build OutFox Alpha 4.9.9HF3 Build OutFox Alpha 4.9.9HF2 Build OutFox Alpha 4.9.9HF Build OutFox Alpha 4.9.9 Build OutFox Alpha 4.9.8 Build OutFox Alpha 4."},{"id":58,"href":"/user-guide/setup/","title":"Setup","parent":"User Guide","content":"","description":""},{"id":59,"href":"/user-guide/meta/about/","title":"About Project OutFox","parent":"Front Matter","content":" What is Project OutFox? Project OutFox is a fork of StepMania 5.1. The project began to improve the main repo and it\u0026rsquo;s codebase, however due to community feedback and response the project changed direction into what it is today; A working museum of scrolling rhythm games playable within a single client.\nThe team provides a free-to-play cross-platform engine supporting and supported by the many new communities and areas that OutFox now supports. It continues the legacy of the early pre 3.0 StepMania developers: to enable everyone to enjoy the rhythm no matter what game they play, or what they play it on.\nThe original aims (kept here for history) were as follows, most of these have now been met:\nRefactoring its internal codebase to improve performance, adhere to modern coding practices, and enhance its capabilities on modern hardware and other platforms. Working on support for single-board ARM systems such as Raspberry Pi, including the new M1 ARM systems, and improve performance on legacy systems. Continue the legacy of StepMania 3; Refactor the ideas and visions from the early developers in making the game a fully fledged engine, not just focused primarily on one mode. Restoring and improving support for other modes beyond dance. Provide the facility to allow better customisation and \u0026lsquo;modding\u0026rsquo; of the UI and functions. We are planning to make the project a cross-platform \u0026ldquo;sandbox\u0026rdquo; for rhythm games, rather than simply a simulator for popular dance game franchises. Create a working museum of rhythm games for the newer generation to experience the major Boom of the early 2000s in a convenient way. As Project OutFox is a continuation of the 5.0.12 and 5.1 codebase (not “5.2”), it remains compatible with almost all existing songs, themes, and noteskins that are supported on these versions (if you do encounter odd behaviour or other issues with older content, please report it to us as a bug). Project OutFox is unrelated to 5.1 -3 (sometimes written as 5.1-3), which was a prior build of 5.2 before it was renamed.\nProject OutFox Teams Development Squirrel Jousway Cube MrThatKid Jose Varela Design Jose Varela Lirodon dj505 Community Moru Zerinho6 Moneko Hanubeki Gabrimax98 RodentVienna Serenity Daniel Rotwind shockdude Sevish Melone Colin The development members are the ones that make OutFox possible. They\u0026rsquo;re the people working on the game engine.\nThe design members are the ones who work on assets, themes and frontend.\nThe community members assists by creating, maintaining and expanding community projects and organizations, such as:\nModerating the Discord Server, Forum, Subreddit and our Bug Hunter Repository; Coordinating Tiny-Foxes, a community group focusing on add-ons and localizations for Project OutFox. The Serenity Team is a subset of Community team, created to help work on the creation and organization of OutFox Community Pack.\n","description":"What is Project OutFox? Project OutFox is a fork of StepMania 5.1. The project began to improve the main repo and it\u0026rsquo;s codebase, however due to community feedback and response the project changed direction into what it is today; A working museum of scrolling rhythm games playable within a single client.\nThe team provides a free-to-play cross-platform engine supporting and supported by the many new communities and areas that OutFox now supports."},{"id":60,"href":"/dev/actors/actortypes/","title":"Actor Types","parent":"Lua and Actors","content":"StepMania (and it\u0026rsquo;s many forks) use what\u0026rsquo;s known as the Actor model. OutFox inherits this behaviour. Everything in the engine is an Actor at its\u0026rsquo; very core.\nBecause everything is an actor, there are many types of actors, which are described below. Not everything listed is able to be created in Lua. Those that aren\u0026rsquo;t will be noted as such. However, all of these can be found in the Lua environment.\nA note on LoadActor() This is a helper function that can be used to dynamically load an actor based on the file type. However, this should not be used as it is more resource intensive and can be easily avoided when the filetype is known. For loading external lua files, loadfile(path)() can be used, though the full path is required.\nDef.Actor Def.ActorFrame Def.ActorFrameTexture Def.ActorMultiVertex Def.ActorProxy Def.ActorScroller Def.BGAnimation Def.BitmapText Def.BPMDisplay Def.ControllerStateDisplay Def.DeviceList Def.DynamicActorScroller Def.GradeDisplay Def.HelpDisplay Def.InputList Def.MemoryCardDisplay Def.MeterDisplay Def.Model Def.NoteField Def.PercentageDisplay Def.Quad Def.ScoreDisplayAliveTime Def.ScoreDisplayCalories Def.SongBPMDisplay Def.SongMeterDisplay Def.Sound Def.Sprite Def.StepsDisplay Def.TextBanner Def.WorkoutGraph ActorFrameTexture It\u0026rsquo;s like an ActorFrame, but instead of displaying what\u0026rsquo;s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its\u0026rsquo; use in NotITG, although the behavior is different. NotITG\u0026rsquo;s version places the screen itself onto a texture instead of what\u0026rsquo;s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window.\nExample:\n--[[ This example will create an ActorFrameTexture that uses a sample BitmapText, and project it to the center to the screen in half of the available size of the viewport window. ]] -- This ActorFrame will contain everything. local t = Def.ActorFrame{} -- First, create the ActorFrameTexture. local AFT = Def.ActorFrameTexture{ InitCommand = function(self) -- Start by adding a name to the texture. This is optional, but best to provide one, -- in case you need to work with several ActorFrameTextures in the same screen. self:SetTextureName( \u0026#34;MyAFT\u0026#34; ) -- Now we need to give the ActorFrameTexture a resolution, which will be -- how much is available to render. -- As this example will be half the size of the available screen, we\u0026#39;ll give the size -- half of the screen. self:SetWidth( SCREEN_WIDTH*.5 ):SetHeight( SCREEN_HEIGHT*.5 ) -- By default this option is disabled, but you can enable it to allow transparency -- in your ActorFrameTexture. -- In this case, it will disabled to show the available render area (shown as black) self:EnableAlphaBuffer( false ) -- We are done with the AFT, so now we have to create it. self:Create() end, -- After the initializer command, any actors included inside will be projected. -- The actors here act exactly the same as a ActorFrame, so they will start on the top-left -- corner of the available draw area given (in this case, half of the screen.) Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;Testing String!\u0026#34;, BeginCommand = function(self) self:zoom(2):spin() -- In order to see the texture, let\u0026#39;s center it. -- Calculations in actors inside of the AFT will need conversion as dimensions are -- different, so for example: -- Since we\u0026#39;re doing half of the screen for dimensions, to center it, we need to half -- that size as well. -- 1280 / 2 = 640 (Screen Size) -- 640 / 2 = 320 (Actor Position) -- 0 - 640 = 0 .. 1 (Size Area, using Screen Size) -- (320/640) = 0.5 (Point of Actor Position using above calculation) self:xy( SCREEN_WIDTH*.25, SCREEN_HEIGHT*.25 ) end } } t[#t+1] = AFT -- Now that we\u0026#39;ve created the ActorFrameTexture, it will be sent into a global texture, that we -- can then grab into a sprite, and it can be done in two ways. These will be shown inside the -- OnCommand in the sprite. -- Method 1: Load sprite directly into sprite. t[#t+1] = Def.Sprite{ -- Sprite name given inside the SetTextureName command in your AFT. Texture = \u0026#34;MyAFT\u0026#34;, -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } -- Method 2: Load sprite on demand on runtime. t[#t+1] = Def.Sprite{ -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) -- Sprite name given inside the SetTextureName command in your AFT. self:Load( \u0026#34;MyAFT\u0026#34; ) end } return t ActorMultiTexture A quad that allows for layering of multiple textures. Every layer\u0026rsquo;s TextureMode can be manipulated using SetTextureMode (Note that it\u0026rsquo;s 0-indexed).\nCan be manipulated like how a Sprite would. once textures are added. By default, every layer is multiplicative.\nActorProxy Creates a visual clone of any Actor given as a target. Anything done to the Target Actor shows up in the Proxy, but anything done to the Proxy will not show up on the Target.\nlocal t = Def.ActorFrame{} -- Let\u0026#39;s say you want to clone this object, it\u0026#39;s a bitmaptext actor that contains some words. -- An example using an object assigned to a local variable. local mytext t[#t+1] = Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Hello There!\u0026#34; InitCommand=function(self) -- We assign this BitmapText to become mytext, so any actor who uses mytext can control this BitmapText. -- Note the InitCommand, this is neccesary so the object can be assigned at construction time, leaving space for it to be properly -- generated. mytext = self end } t[#t+1] = Def.ActorProxy{ BeginCommand=function(self) -- With mytext generated, using a later command in the pipeline, like [On/Begin]Command, we call SetTarget to get mytext, -- and clone the actor that\u0026#39;s in it. self:SetTarget( mytext ) end } -- You can also grab from nested ActorFrames, and even outside of the scope. t[#t+1] = Def.ActorFrame{ Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Hello There!\u0026#34;, Name=\u0026#34;MyText\u0026#34;, }, Def.ActorProxy{ BeginCommand=function(self) -- For information about the GetParent and GetChild functions, check \u0026#34;Anatomy of a Lua Actor: Obtaining Childs and ActorFrame Levels\u0026#34;. self:SetTarget( self:GetParent():GetChild(\u0026#34;MyText\u0026#34;) ) end } } return t -- Finish by returning the ActorFrame. ActorScroller An actor that allows for creating scrolling displays. If BitmapTexts are used, they have to be encased in an ActorFrame.\nBanner A song or course banner, meant for use with custom music wheels or any other place a song\u0026rsquo;s banner would show up.\nBGAnimation A background animation that can be used during gameplay Can either be loaded from a BGAnimation.ini file (Only if Quirks Mode is enabled), or constructed like an ActorFrame would.\nBitmapText Used to display text on screen.\nBPMDisplay Shows the BPMs of the song currently selected. What shows depends on what the simfile sets for the display BPM.\nUsually used as part of ScreenSelectMusic.\nComboGraph Shows the combos that were held throughout the song, with combo breaks separating the blocks, and the largest combo being colored.\nDef.ComboGraph{ InitCommand=function(self) -- Load the MetricsGroup that will create the basis for the graph. self:Load(\u0026#34;ComboGraph\u0026#34;) local playerStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player) local stageStats = STATSMAN:GetCurStageStats() -- Data is graph from the current stage stats and the player\u0026#39;s stats. self:Set(stageStats, playerStageStats) end } ControllerStateDisplay Appears to show the status of controllers/pads.\nCourseContentsList A list of the songs for a given course. Can be given a limit for how many songs to show and how many to show at a time.\nDeviceList Displays a list of all input devices. Often, Keyboard and Mouse will be listed.\nFunctions like most other BitmapText actors.\nDifficultyIcon A Sprite-type actor that shows a different icon for each difficulty.\nIf there number of frames are double the amount of difficulties available in the engine, the player number will offset the icon shown.\nDynamicActorScroller Inherits from ActorScroller, uses only one child Actor to draw all items.\nFadingBanner A song or course banner that can fade between the banner for different songs or courses.\nOften seen in ScreenSelectMusic.\nGradeDisplay Shows the grade a player has gotten for a given song\u0026rsquo;s chart.\nGraphDisplay Displays a graph containing data points for a player\u0026rsquo;s life throughout the stage.\nSettings for a GraphDisplay can only be defined through metrics.\nDef.GraphDisplay{ InitCommand=function(self) -- Load the MetricsGroup that will create the basis for the graph. self:Load(\u0026#34;GraphDisplay\u0026#34;) local playerStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player) local stageStats = STATSMAN:GetCurStageStats() -- Data is graph from the current stage stats and the player\u0026#39;s stats. self:Set(stageStats, playerStageStats) end } GrooveRadar A recreation of the five-point \u0026ldquo;Groove Radar\u0026rdquo; from DDR. Can take arbitrary values as well as the song\u0026rsquo;s radar values. Note that the visual aspect of the GrooveRadar depends on metrics set on the GrooveRadar metrics group, and the GrooveRadar graphics set.\nDef.GrooveRadar { InitCommand=function(self) -- Let\u0026#39;s use random values to fill the graph. self:SetFromValues({1,0.5,0.8,0.4,1}) end } HelpDisplay A BitmapText-type actor that allows for cycling automatically through tips.\nDef.HelpDisplay { File=\u0026#34;Common Normal\u0026#34;, InitCommand=function(self) local s = \u0026#34;Hello\u0026#34; .. \u0026#34;::\u0026#34; .. \u0026#34;This is a new line\u0026#34; .. \u0026#34;::\u0026#34; .. \u0026#34;And another one!\u0026#34; -- We\u0026#39;ll set the next to toggle between each line (Separated by double colons) by 0.5 seconds. self:SetSecsBetweenSwitches(0.5) -- And tell the HelpDisplay to show that text. :SetTipsColonSeparated(s) end } HoldJudgment Often found in Player, though there is no way to grab the ones that are in Player.\nThe judgment that shows up on a column when dropping or clearing a hold \u0026amp; roll.\nThere is an extra function to allow tracking the hold judgments from a MultiPlayer.\nDef.HoldJudgment{ File=THEME:GetPathG(\u0026#34;Hold\u0026#34;,\u0026#34;Judgment\u0026#34;), InitCommand=function(self) end } InputList Displays a list of inputs as they occur. Can show unmapped and mapped inputs.\nFunctions like most other BitmapText actors.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34;, InitCommand=function (self) self:x(SCREEN_CENTER_X-250):y(SCREEN_CENTER_Y):halign(0):vertspacing(8) end } LogDisplay This is an actor type created from _fallback\u0026rsquo;s scripts.\nDisplays lua script errors as they happen. Most themers shouldn\u0026rsquo;t need to touch this.\nLifeMeter Cannot be created from lua, but can be grabbed from ScreenGameplay.\nOften used in gameplay screens. This shows how much life a Player currently has.\nLifeMeterBattery Cannot be created from lua.\nOften used in gameplay screens. This shows how many more mistakes a player is allowed before failing.\nMemoryCardDisplay Shows the current state of a player\u0026rsquo;s inserted memory card. Made of images, with one for each state.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } MenuTimer Cannot be created from lua, but is a part of every screen that inherits from ScreenWithMenuElements.\nA Timer that counts down and proceeds to the next screen when it reaches 0.\nMeterDisplay Shows the current progress of an operation. It appears to only show the progress as 50%.\nModIconRow Shows icons for the currently set modifiers of a player.\nNot all modifiers have an icon, and the settings can only be set through metrics.\nMusicWheel Cannot be created from lua, but can be grabbed from the TopScreen.\nThe wheel used to select songs in ScreenSelectMusic or courses in ScreenSelectCourse.\nNoteColumnRenderer Cannot be created from lua, but can be grabbed from NoteField.\nThis is a dedicated actor for a column in the notefield, and can be treated like any other actor.\nOptionRow Cannot be created from lua.\nOften seen in options screens, this actor allows for picking and choosing various options for a given setting.\nPaneDisplay Shows the number of steps, jumps, holds, rolls, mines, hands, lifts, fakes, the machine profile\u0026rsquo;s highscore \u0026amp; name and the current profile\u0026rsquo;s high score for a given chart.\nSettings must be defined through Metrics.\nPlayer Cannot be created from lua, but is part of ScreenGameplay\nThe entirety of the playfield. Holds the judgment, hold judgments, combo and the NoteField.\nQuad An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } RollingNumbers A BitmapText with a number that transitions to the target number.\nRequires metrics for it to be loaded before anything else is done with it.\nDef.RollingNumbers{ -- Load the font that the numbers will be rendered with. File = THEME:GetPathF(\u0026#34;Common\u0026#34;, \u0026#34;Normal\u0026#34;), InitCommand=function(self) -- Loads the MetricsGroup to use it\u0026#39;s settings on. self:Load(\u0026#34;RollingNumbers\u0026#34;) -- To update the value, use the targetnumber function. self:targetnumber(300) end } ScoreDisplayAliveTime A BitmapText-type actor that shows how long a player has survived through the stage.\nScoreDisplayCalories A RollingNumbers-type actor that shows how many calories a player has burned through the stage.\nScreen Can\u0026rsquo;t be defined in lua, but can be defined in a theme\u0026rsquo;s metrics.\nA screen the theme can go to. There are screens for gameplay, selecting music, pre-gameplay, etc. Each screen has a background, underlay, overlay and decorations that can be used.\nSongBPMDisplay Shows the current BPM during gameplay. Does not appear to take split timing into account.\nStepsDisplay Displays the data for a given chart. Can show difficulty number, description, credit, if it\u0026rsquo;s autogen and steps type.\nCurrently, all setings are done through metrics.\nStepsDisplayList Shows the list of steps available for a given song.\nThe name given determines what metrics group to load from.\nDef.StepsDisplayList { Name=\u0026#34;StepsDisplayList\u0026#34;, -- These define the cursor the players will be controlling. The rest of the elements are defined -- by the metrics. CursorP1=Def.Actor{}, CursorP2=Def.Actor{}, CursorP1Frame=Def.Actor{}, CursorP2Frame=Def.Actor{} } TextBanner A \u0026ldquo;Banner\u0026rdquo; that contains the song name, artist and subtitle.\nUsually seen in the CourseContentsList of ScreenSelectMusic or the ScrollerItem in ScreenHighScores.\n-- This example uses this set from a CourseContentsList, hence the SetSong command. Def.TextBanner { InitCommand=function(self) self:Load(\u0026#34;TextBannerCourse\u0026#34;):SetFromString(\u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;) end, SetSongCommand=function(self, params) if params.Song then self:SetFromSong( params.Song ) self:diffuse(color(\u0026#34;#FFFFFF\u0026#34;)) else self:SetFromString( \u0026#34;??????????\u0026#34;, \u0026#34;??????????\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34; ) self:diffuse( color(\u0026#34;#FFFFFF\u0026#34;) ) end end } WheelBase Cannot be created from lua.\nA base class for wheels. Currently, the MusicWheel and RoomWheel inherit from this.\nWheelItemBase Cannot be created from lua.\nA base class for items residing in wheels. MusicWheelItems inherit from this.\nWorkoutGraph A graph showing the calories burned over time during a workout.\nDef.WorkoutGraph{ } ","description":"StepMania (and it\u0026rsquo;s many forks) use what\u0026rsquo;s known as the Actor model. OutFox inherits this behaviour. Everything in the engine is an Actor at its\u0026rsquo; very core.\nBecause everything is an actor, there are many types of actors, which are described below. Not everything listed is able to be created in Lua. Those that aren\u0026rsquo;t will be noted as such. However, all of these can be found in the Lua environment."},{"id":61,"href":"/dev/mode-support/bms-pms-support/","title":"BMS/BME/PMS Support","parent":"NoteLoader support","content":"Project OutFox contains parsers for the BMS and PMS chart formats, which are the standard formats used in conjunction with mostly the be-mu and po-mu game types. The following page contains details on the BMS/PMS channels that Project OutFox currently supports. This is a living document, and will be updated as progress is made to expand the work to support as much of these as possible.\nIntroduction The BMS file standard was devised by Urao Yane in 1998. It was originally created to be a format to simulate the game Beatmania by Konami. There have been several dozen iterations over the years, and we will talk about some of them here in one easy to contain and read page. Do not be afraid of this format, it is incredibly versatile and have been used to simulate a variety of games.\nProject OutFox uses mostly BM98 (1998 to 2003) era definitions for this file standard, though it is improving all the time. The format is used to simulate most of the \u0026lsquo;Down Scroll Rhythm Game Systems\u0026rsquo; and is known by several other derivatives which we are also slowly building support for.\nBMS charts are mostly composed by artists from Asia, so reading them in non-asian locales can be difficult. OutFox has overcome this limitation in 2022, so if you see any charts in the music wheel with ?????????? and you are updating from a previous build, reset your cache. If you do find a glyph the game does not understand, do let Squirrel know so it can be added.\nThe other two file types on this page, PMS and BME were born from this format and are used for other types of games. PMS was originally designed to simulate Keyboardmania and had a very different channel layout than BMS, but it\u0026rsquo;s use moved towards po-mu / feeling po-mu (po-mu is short for Pop\u0026rsquo;n Music). This had a unique layout for 9 key/button charts.\nBME is an Extension of BMS and offers newer features that were not offered in raw simulators of BM98. This was also used in the actual arcade and console games for a few years in the early 2000s. Project OutFox recently fixed a lot of support for this parser, along with adding several of the missing modes often charted by simfile authors. This extension allowed for channel numbers beyond 00-99 (99 values), then extended to base16 for 00-FF (255 values), which was then finally extended to 00-ZZ (1295 values), being based on base36.\nThe other system we support is BML files, which PMS incorporated by default in 2002. BML adds Long Note (known as holds in StepMania), which again extends the BMS specification. We now fully support both BME and BML fully, including mines and extended hidden note keysounds, as well as player 2 wide channel support.\nAgain, if you feel any particular command or object should be included, do let us know. There are quite a few bits of the specification that just simply have not been considered or added at this time, I\u0026rsquo;m documenting what we do have, and you are more than welcome to give suggestions for future additions. - Squirrel\nBasic Format The BMS file format describes how notes are arranged and how the game is meant to behave if/when a player takes a specific action. It is usually a simple plain text file with the command lines starting with the # character.\nThe file consists of a HEADER FIELD section and a MAIN DATA FIELD section. We will be going through in detail on the most commonly used commands and channels so you have the information here. A lot of the available commands ever offered to BMS/PMS over the years have faded into deprecation/not being used, but the ones we have seen in actual files include what we will be supporting.\nIf you find a file that is not showing up in OutFox you may need to switch the encoding options of the chart, or just wait until the new string system is added in the future.\nCommands are in the header formatted as the following: #[Command] [Value]\nFor these commands, a space between the command and value is required or you will have offset issues in most simulators. A Simple Example of some common commands used in the header field are:\n*---------------------- HEADER FIELD #PLAYER 3 #GENRE Dance #TITLE My Dance Classics #ARTIST DJ Superstar #BPM 128 #PLAYLEVEL 5 #TOTAL 100 #RANK 2 #bmp00 miss.bmp #bmp01 01.bmp #wav01 01.wav *---------------------- MAIN DATA FIELD #00111:01010101 #00211:0101010001010100 Common HEADER FIELD commands #PLAYER n [1 - 4] Status: ✅ Supported\nUsage Example:\n#PLAYER 3 This command defines the play style that the chart is set for. In the earlier versions of BMS they also specified the number of players.\n1 = 1 Player or Single Play, with 1 life gauge. 2 = 1 + 2 Player or Couples Play, with 2 life gauges. Mostly deprecated and not used. OutFox mostly supports these and can parse them under the old iidx-* styles from SM3.x 3 = 1 Player on 2 sides, or Double play. Modern sims use this value the most, or just ignore the PLAYER setting completely. Often a lot of PMS files have value of 3, though I have not been able to find out why. OutFox supports the odd use of this command but again most simulators post 2015 ignore this value. 4 = 1 vs 2 Player, or Battle Play, with two life gauges, which was removed in iidx19, has fallen out of favour in use. I have actually only found PMS battle mode files with 3 key vs 3 key chart styles from portable 2. OutFox currently can parse these files, but has no battle mode support. Project OutFox also supports \u0026lsquo;duet\u0026rsquo; or normal 2 player mode without needing to be set in the file itself, by joining a second player on the select music screen. As of Alpha 4.9.8 this was extended to PMS offering new modes with a 2 player option of po-mu for the first time. All po-mu styles (3k, 4k, 5k, 7k, 9k) have 2 player support now, with battle mode planned in the future.\n#GENRE genre [string] Status: ✅ Supported\nUsage Example:\n#GENRE Blues This command sets the genre or type of music that the chart is going to play. It could be used by the simulator for sorting or grouping charts, or to allow for just more information to be displayed on the song select screen. The genre is usually written in SHIFT-JIS on older charts, but UTF8/UTF16 are becoming a lot more common, so do check.\n#TITLE title [string] Status: ✅ Supported\nUsage Example:\n#TITLE Take (Bamboo) The title command sets the SongTitle and this will be displayed on the song wheel to be selected, as well on the screen game-play and evaluation screen. It will also be recorded in high scores and on your profile etc. Older charts used SHIFT-JIS.\n#ARTIST artist [string] Status: ✅ Supported\nUsage Example:\n#ARTIST 立秋 feat.ちょこ The artist command sets the SongArtist and this is usually displayed on the song wheel when selected and on the evaluation screen. The artist information is usually recorded in high scores and on your profile. Older charts used SHIFT-JIS.\n#BPM n [0.0-1400.00]/[0-255] Status: ✅ Supported\nUsage Example:\n#BPM 140.35 This setting allows the chart to specify the beginning (or starting) BPM of a song. This value will also be shown in the music wheel, and will be setting the speed that will be used as part of the modifiers / scrolling of the notes. This value used to require a whole number. Project OutFox allows for floats here - you are limited to 6 decimal places - so 143.000290 as an example.\nOlder simulators do not support decimal point BPM values, and you cannot enter a value above 255 as it can crash the simulator. If you are wishing to make your chart portable to other programs, bear this in mind; not every simulator supports this!\nThis value also can (and will!) be overwritten by channel commands/settings later on in the chart.\n#PLAYLEVEL n [0-6]/[0-9]/[0/15]/[1-49] Status: ✅ Supported\nUsage Example:\n#PLAYLEVEL 5 The playlevel sets the number of \u0026lsquo;stars\u0026rsquo; (from the old games) or the difficulty specified. In BMS files this difficulty ranges normally from 0 to 6 - 6 being the hardest. The older scale from 0 to 9 was from the BM98 spec, which was never really used much or supported.\nIn some BME and most PMS files, the playlevel can be from 1 to 49. This reflects the style from other games with the wider difficulty ranges, and po-mu has had a wider difficulty rating for some years.\nIn older versions of StepMania, this difficulty used to be squished into a 5 tier difficulty system and sometimes didn\u0026rsquo;t really work that well. It needed to use a hint from the file name to ensure it didn\u0026rsquo;t make everything an EDIT. This also meant that a lot of charts disappeared/were not parsed correctly and was generally not that suitable for use. OutFox has remedied this by fixing how the parser sees difficulties, and also widens the difficulty arc to out of 10 fields.\n#RANK n [0-4] Status: ❌ Unsupported\nUsage Example:\n#RANK 2 The rank entry used in the old BMS specification used to allow the chart artist to select a difficulty on how the \u0026rsquo;timing window\u0026rsquo; would be set when playing the chart. It was designed for those simulators that didn\u0026rsquo;t have ways of difficulty or setting different timing windows.\nThere were 5 different ranks, the last being added by nanasi which was a more relaxed timing window compared to the other simulators. Almost all of the simulators that are active today set 2 as the default. The old ranking timing windows are listed below for historical purposes. They are ignored on OutFox as we have a custom timing window solution, but if you would like us to add this to set a timing system in the future, do let us know!\nValue Label COOL Time window 0 VERY HARD +/- 8ms 1 HARD +/- 15ms 2 NORMAL +/- 18ms 3 EASY +/- 21ms 4 VERY EASY +/- 33ms Most of these timing windows are not really tied to any specific game or methodology of timing, so it is why we made the decision to not support any of the RANK commands: we also do not support the timing system used by Angolmois which uses 6 ranks. We do not support #DEFEXRANK / #EXRANK as they were additions by nanasi and it seems they did not carry over to be commonly used in other simulators. Changing timing mid song is something we could support, but we do not really see a need to add that to the engine at this time.\nThe \u0026rsquo;timing\u0026rsquo; windows used in Project OutFox are closer to RANK 2 to follow the standard others use.\n#TOTAL n [0-999] Status: ❌ Unsupported\nUsage Example:\n#TOTAL 430 The TOTAL command is to set the value of what could be considered an extension of the \u0026lsquo;gauge\u0026rsquo; in older simulators, before life gauges existed. The value of TOTAL is added to a normal gauge to increase it\u0026rsquo;s length. if the value was 300, then the gauge would go from 0 to 100% in size, to the intial value (normally around 25% + 300% for a total gauge size of 325%).\nThis only occurs when the notes are hit and combo is kept, otherwise things would return to the old gauge size. It was more of a consideration on gauge/groove/clear amounts (what you needed to reach to be considered a pass in that song). This did lead to some confusion on how TOTAL should affect the gameplay/level of the chart.\nThe gauge never changed size; it was an off screen calculation on how you could \u0026lsquo;score\u0026rsquo; your chart. Several simulators over the years have changed this value if TOTAL was omitted, we at the moment do not honour the value, mainly because we do not follow the iidx scoring system since 2005.\n#MAKER maker [string] or #CREDIT credit [string] or #SUBARTIST subartist [string] Status: ✅ Supported\nUsage Example:\n#MAKER Ima StepChart or\n#CREDIT Ima StepChart or\n#SUBARTIST Ima StepChart The MAKER or CREDIT command simply allows the author or maker of the chart to add their credit so it will be displayed in the simulator. The main support for MAKER comes from around 2002 onwards. It is common in most 5 Key styles to be used, as well as being used on 10 Key (double play) styles. CREDIT is more recent, being seen from around 2013 in charts. I know not it\u0026rsquo;s origin, we support both as to not ignore honouring those that take the time to make charts for us to enjoy.\nSince around 2017, another command, SUBARTIST began to be used more commonly in BME/PMS files, which was inherited from DTX. The sub artist is not normally displayed until the evaluation screen on earlier simulators, but in OutFox we treat all three of these in the same manner. If you are creating a new BMS chart, then #MAKER is usually safer to use for other simulator support.\n#STAGEFILE stagefile [string] Status: ✅ Supported\nUsage Example:\n#STAGEFILE loadingscreen.png The stagefile command is used to set an image to the \u0026rsquo;loading screen\u0026rsquo; of the simulator - when the song and options/modifiers have been set, this file is then placed as part of the loading process on the \u0026rsquo;loading screen\u0026rsquo;.\nOn older simulators, this loading process could take a long time, so it was wise to incorporate a loading screen system into the simulator. This has also been recently done in Project OutFox so we do not need to freeze the game while loading these files any more. This file is read in and parsed, just no theme at the moment takes advantage of the loading screen as of yet.\nMain DATA FIELD commands #SCROLLxx n.n [-999.0 - 999.0] Status: ✅ Supported\nDefinition Usage Example:\n#SCROLL01 0.5 #SCROLL02 1.0 #SCROLL03 -2.75 Channel Usage Example:\n#003SC:02010001 #005SC:03000002 The scroll command works similar to how it does in native SM5, but if you are unfamiliar with the system, the value is a multiplier of the speed of the movement of any note on the screen.\nIf your notes were moving at 130BPM, but you did not wish to edit the BPM directly, you could use scroll to change that speed. The game also supports negative values (this has the affect of moving things in the opposite direction), which can provide some very interesting affects.\nThe channel command to action #SCROLL values are a Base36 value which are #xxxSC. There are several benefits to using this system as legacy BMS use items you need to name on each measure, whereas #xxxSC can last beyond this restriction. You need to be aware, not many clients support this system, so it is not backwards compatible if you are making your chart available to other simulators.\nKey: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used PMSX listed below on some channels, is the wider 2 player mode that outfox supports for 18k mode.\nBMS / BME / PMS Channel Support Table The earlier versions of BMS were based on a 0-9 supported channel value, being 00 to 99. Over time, it was extended to base16 (00 to FF), and then to base36. I won\u0026rsquo;t list the tables in full base 36, as those extra channels are mostly used for player notes and keysounds, so it would be very long and hard to read. This table takes the most common layout which is base 16 based, and is also the most common supported by most of the other simulators. There are parts where *0 to *Z can be used, and those will be noted.\nThis table will be updated and modified as information is found out or addenda needed to fix mistakes. If you notice anything on this page that needs correcting, do let Squirrel know, or make a PR to the wiki\u0026rsquo;s repo!\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 01 Background Music ✅ Background Music ✅ Background Music ✅ Supported 02 Measure Length ✅ Measure Length ✅ Measure length ✅ Supported 03 Set Initial BPM ✅ Set Initial BPM ✅ Set Initial BPM ✅ Supported 04 BGA Base ✅ BGA Base ✅ BG Base ✅ Supported - needs enabling 05 eXtended Object ✅ eXtended Object ✅ eXtended Object ✅ Supported 06 BGA Layer Miss ✅ BGA Layer Miss ✅ BGA Poor ✅ Supported - needs enabling 07 BGA Layer ✅ BGA Layer ✅ BG Layer ✅ Supported - needs enabling sits above channel 4 08 Extended BPM ✅ Extended BPM ✅ Set BPM ✅ Supported - Changes bpm to value 09 Stop ✅ Stop ✅ Stop ✓ Supported 0A Not Used ~ BGA Layer 2 ✅ BGA Layer 2 ✅ Supported 0B Not Used ~ BGA Base Opacity ❌ BGA Base Opacity ❌ Not Supported 0C Not Used ~ BGA Layer Opacity ❌ Not Used ~ Not Supported 0D Not Used ~ BGA Layer 2 Opacity ❌ Not Used ~ Not Supported 0E Not Used ~ BGA Poor Opacity ❌ BGA Poor Opacity ❌ Not Supported 0F Not Used ~ Not Used ~ Not Used ~ Not Used Channel 00 to 0F The lower channels on a BMS / PMS file mostly set up the specifics of the musical side of the chart, enabling BPM, backgrounds, and special effects like Stops and BGA (background) changes and selection.\nThe most important channel on this table is 01 which sets the \u0026lsquo;backing\u0026rsquo; track or \u0026lsquo;master keysound\u0026rsquo; of this track as created by some users. Most of the community do not use a completed file here however, it is better practice for the chart author to create keysounded files, as charting for a \u0026lsquo;single\u0026rsquo; file is often thought of as lazy.\nOn PMS files, the BGA transparency settings are set here as well for effects and \u0026lsquo;cool/miss\u0026rsquo; events that happen during the song if the user triggers those. On OutFox we support this mechanic, but as of yet we have not seen any files or have had any reported bugs with this, so it is a low priority option. Do reach out to us if you spot a pack or a song which has these channels within them so we can see what they are and how the effects work.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS / PMSX Name OutFox PMS Support OutFox BMS/PMS Status Comments 10 Not Used ~ Not Used ~ Not Used ~ Not Used 11 P1 Key 1 ✅ P1 Key 1 ✅ P1 Left White / P1 Left White ✅ Supported 12 P1 Key 2 ✅ P1 Key 2 ✅ P1 Left Yellow / P1 Left Yellow ✅ Supported 13 P1 Key 3 ✅ P1 Key 3 ✅ P1 Left Green / P1 Left Green ✅ Supported 14 P1 Key 4 ✅ P1 Key 4 ✅ P1 Left Blue / P1 Left Blue ✅ Supported 15 P1 Key 5 ✅ P1 Key 5 ✅ P1 Red / P1 Red ✅ Supported 16 P1 Turn/Scratch ✅ P1 Turn/Scratch ✅ Not Used / P1 Right Blue ✅ Supported 17 P1 FootPedal ✅ P1 FootPedal ✅ Not Used / P1 Right Green ✅ Supported in Alpha 4.16.0 18 P1 Key 6 ✅ P1 Key 6 ✅ Not Used / P1 Right Yellow ✅ Supported 19 P1 Key 7 ✅ P1 Key 7 ✅ Not Used / P1 Right White ✅ Supported 1A Not Used ~ Not Used ~ Not Used ~ Not Used 1B Not Used ~ Not Used ~ Not Used ~ Not Used 1C Not Used ~ Not Used ~ Not Used ~ Not Used 1D Not Used ~ Not Used ~ Not Used ~ Not Used 1E Not Used ~ Not Used ~ Not Used ~ Not Used 1F Not Used ~ Not Used ~ Not Used ~ Not Used Channel 10 to 1F This block of channels is used for visible player notes for player 1. This selection of channels from 10 to 19 is ordered and swapped around depending on the game chosen. This is why in the early 2000s there were arrangements made for pomu / PMS to be split into it\u0026rsquo;s own file name, as it reused a lot of notes which on some simulators were loaded as BMS files. Do remember your target mode/game/style when you create your chart! This is especially important if you plan to have support with other simulators as they will not be as relaxed and \u0026lsquo;wide supporting\u0026rsquo; as OutFox is.\nThe pomu-extended mode which is very common in BME files is one such example. It uses 11 to 19 which on some simulations are incorrectly loaded. This type of chart was common in nanasi and we have aligned our support to this as it seems to be more common for the extended options than other \u0026lsquo;formats\u0026rsquo;.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS / PMSX Name OutFox PMS Support OutFox BMS/PMS Status Comments 20 Not Used ~ Not Used ~ Not Used ~ Not Used 21 P2 Key 1 ✅ P2 Key 1 ✅ Not Used ✅ Supported 22 P2 Key 2 ✅ P2 Key 2 ✅ P1 Right Blue / P2 Left White ✅ Supported 23 P2 Key 3 ✅ P2 Key 3 ✅ P1 Right Green / P2 Left Yellow ✅ Supported 24 P2 Key 4 ✅ P2 Key 4 ✅ P1 Right Yellow / P2 Left Green ✅ Supported 25 P2 Key 5 ✅ P2 Key 5 ✅ P1 Right White / P2 Red ✅ Supported 26 P2 Turn/Scratch ✅ P2 Turn/Scratch ✅ Not Used / P2 Right Blue ✅ Supported 27 P2 FootPedal ✅ P2 FootPedal ✅ Not Used / P2 Right Green ✅ Supported in Alpha 4.16.0 28 P2 Key 6 ✅ P2 Key 6 ✅ Not Used / P2 Right Yellow ✅ Supported 29 P2 Key 7 ✅ P2 Key 7 ✅ Not Used / P2 Right White ✅ Supported 2A Not Used ~ Not Used ~ Not Used ~ Not Used 2B Not Used ~ Not Used ~ Not Used ~ Not Used 2C Not Used ~ Not Used ~ Not Used ~ Not Used 2D Not Used ~ Not Used ~ Not Used ~ Not Used 2E Not Used ~ Not Used ~ Not Used ~ Not Used 2F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 30 Not Used ~ Not Used ~ Not Used ~ Not Used 31 P1 Key 1 Hidden ✅ P1 Key 1 Hidden ✅ P1 Left White Hidden ✅ Supported in 4.10.0 32 P1 Key 2 Hidden ✅ P1 Key 2 Hidden ✅ P1 Left Yellow Hidden ✅ Supported in 4.10.0 33 P1 Key 3 Hidden ✅ P1 Key 3 Hidden ✅ P1 Left Green Hidden ✅ Supported in 4.10.0 34 P1 Key 4 Hidden ✅ P1 Key 4 Hidden ✅ P1 Left Blue Hidden ✅ Supported in 4.10.0 35 P1 Key 5 Hidden ✅ P1 Key 5 Hidden ✅ P1 Left Red Hidden ✅ Supported in 4.10.0 36 P1 Turn/Scratch Hidden ✅ P1 Turn/Scratch Hidden ✅ Not Used ~ Supported in 4.10.0 37 P1 FootPedal Hidden ✅ P1 FootPedal Hidden ✅ Not Used ~ Supported in 4.10.0 38 P1 Key 6 Hidden ✅ P1 Key 6 Hidden ✅ Not Used ~ Supported in 4.10.0 39 P1 Key 7 Hidden ✅ P1 Key 7 Hidden ✅ Not Used ~ Supported in 4.10.0 3A Not Used ~ Not Used ~ Not Used ~ Not Used 3B Not Used ~ Not Used ~ Not Used ~ Not Used 3C Not Used ~ Not Used ~ Not Used ~ Not Used 3D Not Used ~ Not Used ~ Not Used ~ Not Used 3E Not Used ~ Not Used ~ Not Used ~ Not Used 3F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 40 Not Used ~ Not Used ~ Not Used ~ Not Used 41 P2 Key 1 Hidden ✅ P2 Key 1 Hidden ✅ Not Used ~ Supported in 4.10.0 42 P2 Key 2 Hidden ✅ P2 Key 2 Hidden ✅ P1 Right Blue Hidden ✅ Supported in 4.10.0 43 P2 Key 3 Hidden ✅ P2 Key 3 Hidden ✅ P1 Right Green Hidden ✅ Supported in 4.10.0 44 P2 Key 4 Hidden ✅ P2 Key 4 Hidden ✅ P1 Right Yellow Hidden ✅ Supported in 4.10.0 45 P2 Key 5 Hidden ✅ P2 Key 5 Hidden ✅ P1 Right White Hidden ✅ Supported in 4.10.0 46 P2 Turn/Scratch Hidden ✅ P2 Turn/Scratch Hidden ✅ Not Used ~ Supported in 4.10.0 47 P2 FootPedal Hidden ✅ P2 FootPedal Hidden ✅ Not Used ~ Supported in 4.10.0 48 P2 Key 6 Hidden ✅ P2 Key 6 Hidden ✅ Not Used ~ Supported in 4.10.0 49 P2 Key 7 Hidden ✅ P2 Key 7 Hidden ✅ Not Used ~ Supported in 4.10.0 4A Not Used ~ Not Used ~ Not Used ~ Not Used 4B Not Used ~ Not Used ~ Not Used ~ Not Used 4C Not Used ~ Not Used ~ Not Used ~ Not Used 4D Not Used ~ Not Used ~ Not Used ~ Not Used 4E Not Used ~ Not Used ~ Not Used ~ Not Used 4F Not Used ~ Not Used ~ Not Used ~ Not Used Long Note Sections #xxx51-69 - #LNTYPE1, #LNTYPE2 (BML/PMS) The original Long Note Implementation is now supported in OutFox, and we do parse #LNTYPE. We have tested these with a lot of different charts from the mid 2000s and we are now reproduce these perfectly.\nBME and PMS support for these channels is to the LR2 specification, where Player 1 channels are used. The Player 2 Channel options are not included in this specification.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 50 Not Used ~ Not Used ~ Not Used ~ Not Supported 51 P1 Key 1 LongNote ✅ P1 Key 1 LongNote ✅ P1 Left While LongNote ✅ Supported in 4.10.0 52 P1 Key 2 LongNote ✅ P1 Key 2 LongNote ✅ P1 Left Yellow LongNote ✅ Supported in 4.10.0 53 P1 Key 3 LongNote ✅ P1 Key 3 LongNote ✅ P1 Left Green LongNote ✅ Supported in 4.10.0 54 P1 Key 4 LongNote ✅ P1 Key 4 LongNote ✅ P1 Left Blue LongNote ✅ Supported in 4.10.0 55 P1 Key 5 LongNote ✅ P1 Key 5 LongNote ✅ P1 Red LongNote ✅ Supported in 4.10.0 56 P1 Turn/Scratch LongNote ✅ P1 Turn/Scratch LongNote ✅ Not Used ~ Supported in 4.10.0 57 P1 FootPedal LongNote ✅ P1 FootPedal LongNote ✅ Not Used ~ Supported in 4.10.0 58 P1 Key 6 LongNote ✅ P1 Key 6 LongNote ✅ Not Used ~ Supported in 4.10.0 59 P1 Key 7 LongNote ✅ P1 Key 7 LongNote ✅ Not Used ~ Supported in 4.10.0 5A Not Used ~ Not Used ~ Not Used ~ Not Used 5B Not Used ~ Not Used ~ Not Used ~ Not Used 5C Not Used ~ Not Used ~ Not Used ~ Not Used 5D Not Used ~ Not Used ~ Not Used ~ Not Used 5E Not Used ~ Not Used ~ Not Used ~ Not Used 5F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 60 Not Used ~ Not Used ~ Not Used ~ Not Used 61 P2 Key 1 LongNote ✅ P2 Key 1 LongNote ✅ Not Used ~ Supported in 4.10.0 62 P2 Key 2 LongNote ✅ P2 Key 2 LongNote ✅ P1 Right Blue LongNote ✅ Supported in 4.10.0 63 P2 Key 3 LongNote ✅ P2 Key 3 LongNote ✅ P1 Right Green LongNote ✅ Supported in 4.10.0 64 P2 Key 4 LongNote ✅ P2 Key 4 LongNote ✅ P1 Right Yellow LongNote ✅ Supported in 4.10.0 65 P2 Key 5 LongNote ✅ P2 Key 5 LongNote ✅ P1 Right White LongNote ✅ Supported in 4.10.0 66 P2 Turn/Scratch LongNote ✅ P2 Turn/Scratch LongNote ✅ Not Used ~ Supported in 4.10.0 67 P2 FootPedal LongNote ✅ P2 FootPedal LongNote ✅ Not Used ~ Supported in 4.10.0 68 P2 Key 6 LongNote ✅ P2 Key 6 LongNote ✅ Not Used ~ Supported in 4.10.0 69 P2 Key 7 LongNote ✅ P2 Key 7 LongNote ✅ Not Used ~ Supported in 4.10.0 6A Not Used ~ Not Used ~ Not Used ~ Not Used 6B Not Used ~ Not Used ~ Not Used ~ Not Used 6C Not Used ~ Not Used ~ Not Used ~ Not Used 6D Not Used ~ Not Used ~ Not Used ~ Not Used 6E Not Used ~ Not Used ~ Not Used ~ Not Used 6F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 70 Not Used ~ Not Used ~ Not Used ~ Not Used 71 Not Used ~ Not Used ~ Not Used ~ Not Used 72 Not Used ~ Not Used ~ Not Used ~ Not Used 73 Not Used ~ Not Used ~ Not Used ~ Not Used 74 Not Used ~ Not Used ~ Not Used ~ Not Used 75 Not Used ~ Not Used ~ Not Used ~ Not Used 76 Not Used ~ Not Used ~ Not Used ~ Not Used 77 Not Used ~ Not Used ~ Not Used ~ Not Used 78 Not Used ~ Not Used ~ Not Used ~ Not Used 79 Not Used ~ Not Used ~ Not Used ~ Not Used 7A Not Used ~ Not Used ~ Not Used ~ Not Used 7B Not Used ~ Not Used ~ Not Used ~ Not Used 7C Not Used ~ Not Used ~ Not Used ~ Not Used 7D Not Used ~ Not Used ~ Not Used ~ Not Used 7E Not Used ~ Not Used ~ Not Used ~ Not Used 7F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 80 Not Used ~ Not Used ~ Not Used ~ Not Used 81 Not Used ~ Not Used ~ Not Used ~ Not Used 82 Not Used ~ Not Used ~ Not Used ~ Not Used 83 Not Used ~ Not Used ~ Not Used ~ Not Used 84 Not Used ~ Not Used ~ Not Used ~ Not Used 85 Not Used ~ Not Used ~ Not Used ~ Not Used 86 Not Used ~ Not Used ~ Not Used ~ Not Used 87 Not Used ~ Not Used ~ Not Used ~ Not Used 88 Not Used ~ Not Used ~ Not Used ~ Not Used 89 Not Used ~ Not Used ~ Not Used ~ Not Used 8A Not Used ~ Not Used ~ Not Used ~ Not Used 8B Not Used ~ Not Used ~ Not Used ~ Not Used 8C Not Used ~ Not Used ~ Not Used ~ Not Used 8D Not Used ~ Not Used ~ Not Used ~ Not Used 8E Not Used ~ Not Used ~ Not Used ~ Not Used 8F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 90 Not Used ~ Not Used ~ Not Used ~ Not Used 91 Not Used ~ Not Used ~ Not Used ~ Not Used 92 Not Used ~ Not Used ~ Not Used ~ Not Used 93 Not Used ~ Not Used ~ Not Used ~ Not Used 94 Not Used ~ Not Used ~ Not Used ~ Not Used 95 Not Used ~ Not Used ~ Not Used ~ Not Used 96 Not Used ~ Not Used ~ Not Used ~ Not Used 97 Not Used ~ Not Used ~ BGM Volume ❌ Not Supported 98 Not Used ~ Not Used ~ KeySound Volume ❌ Not Supported 99 Not Used ~ Not Used ~ TEXT String ❌ Not Supported 9A Not Used ~ Not Used ~ Not Used ~ Not Used 9B Not Used ~ Not Used ~ Not Used ~ Not Used 9C Not Used ~ Not Used ~ Not Used ~ Not Used 9D Not Used ~ Not Used ~ Not Used ~ Not Used 9E Not Used ~ Not Used ~ Not Used ~ Not Used 9F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments A0 Not Used ~ Not Used ~ Not Used ~ Not Used A1 Not Used ~ Not Used ~ Not Used ~ Not Used A2 Not Used ~ Not Used ~ Not Used ~ Not Used A3 Not Used ~ Not Used ~ Not Used ~ Not Used A4 Not Used ~ Not Used ~ Not Used ~ Not Used A5 Not Used ~ Not Used ~ Not Used ~ Not Used A6 Not Used ~ Change Option ❌ Change Option ❌ This was the deprecated mod system for BMS and PMS. A7 Not Used ~ Not Used ~ Not Used ~ Not Used A8 Not Used ~ Not Used ~ Not Used ~ Not Used A9 Not Used ~ Not Used ~ Not Used ~ Not Used AA Not Used ~ Not Used ~ Not Used ~ Not Used AB Not Used ~ Not Used ~ Not Used ~ Not Used AC Not Used ~ Not Used ~ Not Used ~ Not Used AD Not Used ~ Not Used ~ Not Used ~ Not Used AE Not Used ~ Not Used ~ Not Used ~ Not Used AF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments B0 Not Used ~ Not Used ~ Not Used ~ Not Used B1 Not Used ~ Not Used ~ Not Used ~ Not Used B2 Not Used ~ Not Used ~ Not Used ~ Not Used B3 Not Used ~ Not Used ~ Not Used ~ Not Used B4 Not Used ~ Not Used ~ Not Used ~ Not Used B5 Not Used ~ Not Used ~ Not Used ~ Not Used B6 Not Used ~ Not Used ~ Not Used ~ Not Used B7 Not Used ~ Not Used ~ Not Used ~ Not Used B8 Not Used ~ Not Used ~ Not Used ~ Not Used B9 Not Used ~ Not Used ~ Not Used ~ Not Used BA Not Used ~ Not Used ~ Not Used ~ Not Used BB Not Used ~ Not Used ~ Not Used ~ Not Used BC Not Used ~ Not Used ~ Not Used ~ Not Used BD Not Used ~ Not Used ~ Not Used ~ Not Used BE Not Used ~ Not Used ~ Not Used ~ Not Used BF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments C0 Not Used ~ Not Used ~ Not Used ~ Not Used C1 Not Used ~ Not Used ~ Not Used ~ Not Used C2 Not Used ~ Not Used ~ Not Used ~ Not Used C3 Not Used ~ Not Used ~ Not Used ~ Not Used C4 Not Used ~ Not Used ~ Not Used ~ Not Used C5 Not Used ~ Not Used ~ Not Used ~ Not Used C6 Not Used ~ Not Used ~ Not Used ~ Not Used C7 Not Used ~ Not Used ~ Not Used ~ Not Used C8 Not Used ~ Not Used ~ Not Used ~ Not Used C9 Not Used ~ Not Used ~ Not Used ~ Not Used CA Not Used ~ Not Used ~ Not Used ~ Not Used CB Not Used ~ Not Used ~ Not Used ~ Not Used CC Not Used ~ Not Used ~ Not Used ~ Not Used CD Not Used ~ Not Used ~ Not Used ~ Not Used CE Not Used ~ Not Used ~ Not Used ~ Not Used CF Not Used ~ Not Used ~ Not Used ~ Not Used LandMine Sections #xxxD1-E9 - (BMS/PMS) The original Land Mine Implementation is now supported in OutFox after some serious rewriting of the code to ensure these extended (greater than 9) channels were supported. We have tested these with a lot of different charts from the mid 2000s and we are now reproduce these perfectly with mines behaving as expected on BMS/BME and PMS files. Thanks to Bobini for the suggestion on ensuring that these channels were supported.\nBME and PMS support for the landmines (mines) is now 100% complete, and work as planned.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments D0 Not Used ~ Not Used ~ Not Used ~ Not Used D1 Not Used ~ P1 Key 1 LandMine ✅ P1 Left White LandMine ✅ Supported in 4.10.0 D2 Not Used ~ P1 Key 2 LandMine ✅ P1 Left Yellow LandMine ✅ Supported in 4.10.0 D3 Not Used ~ P1 Key 3 LandMine ✅ P1 Left Green LandMine ✅ Supported in 4.10.0 D4 Not Used ~ P1 Key 4 LandMine ✅ P1 Left Blue LandMine ✅ Supported in 4.10.0 D5 Not Used ~ P1 Key 5 LandMine ✅ P1 Red LandMine ✅ Supported in 4.10.0 D6 Not Used ~ P1 Turn/Scratch LandMine ✅ Not Used ~ Supported in 4.10.0 D7 Not Used ~ P1 FootPedal LandMine ✅ Not Used ~ Supported in 4.10.0 D8 Not Used ~ P1 Key 6 LandMine ✅ Not Used ~ Supported in 4.10.0 D9 Not Used ~ P1 Key 7 LandMine ✅ Not Used ~ Supported in 4.10.0 DA Not Used ~ Not Used ~ Not Used ~ Not Used DB Not Used ~ Not Used ~ Not Used ~ Not Used DC Not Used ~ Not Used ~ Not Used ~ Not Used DD Not Used ~ Not Used ~ Not Used ~ Not Used DE Not Used ~ Not Used ~ Not Used ~ Not Used DF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments E0 Not Used ~ Not Used ~ Not Used ~ Not Used E1 Not Used ~ P2 Key 1 LandMine ✅ Not Used ~ Supported in 4.10.0 E2 Not Used ~ P2 Key 2 LandMine ✅ P1 Right Blue LandMine ✅ Supported in 4.10.0 E3 Not Used ~ P2 Key 3 LandMine ✅ P1 Right Green LandMine ✅ Supported in 4.10.0 E4 Not Used ~ P2 Key 4 LandMine ✅ P1 Right Yellow LandMine ✅ Supported in 4.10.0 E5 Not Used ~ P2 Key 5 LandMine ✅ P1 Right White LandMine ✅ Supported in 4.10.0 E6 Not Used ~ P2 Turn/Scratch LandMine ✅ Not Used ~ Supported in 4.10.0 E7 Not Used ~ P2 FootPedal LandMine ✅ Not Used ~ Supported in 4.10.0 E8 Not Used ~ P2 Key 6 LandMine ✅ Not Used ~ Supported in 4.10.0 E9 Not Used ~ P2 Key 7 LandMine ✅ Not Used ~ Supported in 4.10.0 EA Not Used ~ Not Used ~ Not Used ~ Not Used EB Not Used ~ Not Used ~ Not Used ~ Not Used EC Not Used ~ Not Used ~ Not Used ~ Not Used ED Not Used ~ Not Used ~ Not Used ~ Not Used EE Not Used ~ Not Used ~ Not Used ~ Not Used EF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments F0 Not Used ~ Not Used ~ Not Used ~ Not Used F1 Not Used ~ Not Used ~ Not Used ~ Not Used F2 Not Used ~ Not Used ~ Not Used ~ Not Used F3 Not Used ~ Not Used ~ Not Used ~ Not Used F4 Not Used ~ Not Used ~ Not Used ~ Not Used F5 Not Used ~ Not Used ~ Not Used ~ Not Used F6 Not Used ~ Not Used ~ Not Used ~ Not Used F7 Not Used ~ Not Used ~ Not Used ~ Not Used F8 Not Used ~ Not Used ~ Not Used ~ Not Used F9 Not Used ~ Not Used ~ Not Used ~ Not Used FA Not Used ~ Not Used ~ Not Used ~ Not Used FB Not Used ~ Not Used ~ Not Used ~ Not Used FC Not Used ~ Not Used ~ Not Used ~ Not Used FD Not Used ~ Not Used ~ Not Used ~ Not Used FE Not Used ~ Not Used ~ Not Used ~ Not Used FF Not Used ~ Not Used ~ Not Used ~ Not Used Scroll #xxxSC / Speed #xxxSP Sections - (BMS/PMS) These two channels were recent additions to the specification used in the beatoraja and bemuse clients, and are done slightly differently to the specification. Rather than using one of the 30 spare channels in the lower ranges, these two options require full base 36 (00-ZZ) support to work as they use SC/SP instead of a Hex (00-FF) value. OutFox\u0026rsquo;s BMS-like parsers were updated in 4.9.9 to support base 36 channel values even though not required by specification, so these channels were a trivial addition to our support.\nSpeed and Scroll segments replicate behaviour done with Channel 02/08/09, without relying on these channels changing. They were introduced in the SSC updates to StepMania and are natively supported in the engine in OutFox. These add a new layer of effects to be utlised without using #BPMxx or #STOPxx.\nBMS / BME / PMS Channel BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments SC Scroll Adjustment ❌ Not Used ~ Not Supported Yet SP Speed Adjustment ❌ Not Used ~ Not Supported Yet Written and Maintained with ♡ by Squirrel, with thanks to the feeling-po-mu, BMS command memo, BMS Discord, and Japanese BMS/PMS community\n","description":"Project OutFox contains parsers for the BMS and PMS chart formats, which are the standard formats used in conjunction with mostly the be-mu and po-mu game types. The following page contains details on the BMS/PMS channels that Project OutFox currently supports. This is a living document, and will be updated as progress is made to expand the work to support as much of these as possible.\nIntroduction The BMS file standard was devised by Urao Yane in 1998."},{"id":62,"href":"/dev/mods/Mods-10-Color+Gradient-Mods/","title":"Color modifiers","parent":"Guide to Modifiers","content":"Color modifiers affect the color of notes in some way. A lot of these follow similar behaviors to the Visibility modifiers, alongside with some extra functionalities.\n\u0026lt;color\u0026gt; can be 'ColorType_Red', 'ColorType_Blue' or 'ColorType_Green', and is how one chooses the color channel to affect.\nThese modifiers generally share usable values between 0 to 100%.\nStealthColor Desc: Bring a color channel of the notes down to zero (This does not affect the actual glow color). Unlike normal Stealth, this doesn\u0026rsquo;t have column-specific variants.\nQuirks: N/A\nAvailable variants (modstring): stealthred, stealthr (NotITG alias), stealthblue, stealthb (NotITG alias), stealthgreen, stealthg (NotITG alias), diffuse|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias)\nPlayerOptions format: StealthColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthColor('ColorType_Red',1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% stealthred\nStealthColor video example\nSuddenColor Desc: The color channel starts turned off, and turns on at the middle of the field.\nQuirks: N/A\nAvailable variants (modstring): suddenred, suddenr (NotITG alias), suddenblue, suddenb (NotITG name), suddengreen, suddeng (NotITG alias)\nPlayerOptions format: SuddenColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: SuddenColor('ColorType_Green',1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% suddengreen\nSuddenColor video example\nAvailable sub modifiers: SuddenOffsetColor Desc: Offsets the point where the color channel turns on.\nAvailable variants (modstring): suddenoffsetred, suddenredoffset (NotITG name), suddenro (NotITG alias), suddenoffsetblue, suddenblueoffset (NotITG name), suddenbo (NotITG alias), suddenoffsetgreen, suddengreenoffset (NotITG name), suddengo (NotITG alias)\nPlayerOptions format: SuddenOffsetColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nHiddenColor Desc: The color channel starts turned on, and turns off at the middle of the field.\nQuirks: N/A\nAvailable variants (modstring): hiddenred, hiddenr (NotITG alias), hiddenblue, hiddenb (NotITG name), hiddengreen, hiddeng (NotITG alias)\nPlayerOptions format: HiddenColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Example: HiddenColor('ColorType_Blue',1,1) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt; Example: *1 100% hiddenblue\nHiddenColor video example\nAvailable sub modifiers: HiddenOffsetColor Desc: Offsets the point where the color channel turns on.\nAvailable variants (modstring): hiddenoffsetred, hiddenredoffset (NotITG name), hiddenro (NotITG alias), hiddenoffsetblue, hiddenblueoffset (NotITG name), hiddenbo (NotITG alias), hiddenoffsetgreen, hiddengreenoffset (NotITG name), hiddengo (NotITG alias)\nPlayerOptions format: HiddenOffsetColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBlinkColor Desc: The color channel blinks on and off. Still considered as bad of a mod as normal Blink.\nQuirks: Same as Blink.\nAvailable variants (modstring): blinkred, blinkr (NotITG alias), blinkblue, blinkb (NotITG alias), blinkgreen, blinkg (NotITG alias)\nPlayerOptions format: BlinkColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: BlinkColor('ColorType_Red',1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% blinkred\nBlinkColor video example\nStealthGlowColor Desc: Allows one to modify the color used for the glow effect of the Visibility mods.\nQuirks: Unlike most modifiers (including NotITG\u0026rsquo;s implementation of this modifier), this starts at 100%, mimicking how glow\u0026rsquo;s red, green, and blue values start at 1.\nAvailable variants (modstring): stealthglowred, stealthgr (NotITG alias), stealthglowred\u0026lt;column\u0026gt;, stealthglowblue, stealthgb (NotITG alias), stealthglowblue\u0026lt;column\u0026gt;, stealthglowgreen, stealthgg (NotITG alias), stealthglowgreen\u0026lt;column\u0026gt;, stealthglow|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias), stealthglow\u0026lt;column\u0026gt;|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias)\nPlayerOptions format: StealthGlowColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthGlowColor('ColorType_Red',0, 1, true):StealthGlowColor('ColorType_Green',0, 1, true):Stealth(0.25, 1)\nColumn-specific format: StealthGlowColorCol(\u0026lt;color\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthGlowColorCol('ColorType_Green',1,0,1,true):StealthGlowColorCol('ColorType_Blue',1,0,1,true):StealthGlowColorCol('ColorType_Red',2,0,1,true):StealthGlowColorCol('ColorType_Blue',2,0,1,true):StealthGlowColorCol('ColorType_Red',3,0,1,true):StealthGlowColorCol('ColorType_Green',3,0,1,true):StealthGlowColorCol('ColorType_Blue',4,0,1,true):Stealth(0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 0% stealthglowred, *1 0% stealthglowgreen, *1 25% stealth *1 0% stealthglowgreen1, *1 0% stealthglowblue1, *1 0% stealthglowred2, *1 0% stealthglowblue2, *1 0% stealthglowred3, *1 0% stealthglowgreen3, *1 0% stealthglowblue4, 25% stealth\nStealthGlowColor video example\nGradient Modifiers Gradient modifiers allow for arbitrary color pathing, and are not compatible with the color modifiers.\nActivating these will turn off the color modifiers above in terms of rendering.\nIn SM5, these are accessed through PlayerOptions like most modifiers (And have the same chaining mechanics as the other functions). In NotITG, this is accessed through the Player instead.\nThere are three types available (It\u0026rsquo;ll be denoted as \u0026lt;type\u0026gt; in the function listing below):\n\u0026ldquo;Diffuse\u0026rdquo; (Affects the diffuse of the notes \u0026amp; holds), known as \u0026ldquo;Arrow\u0026rdquo; in NotITG. \u0026ldquo;NotePath\u0026rdquo; (Affects the color of the NotePath), known as \u0026ldquo;Path\u0026rdquo; in NotITG. \u0026ldquo;StealthGlow\u0026rdquo; (Affects the color used for Stealth and other Visibility modifiers), known as \u0026ldquo;Stealth\u0026rdquo; in NotITG. Will not visibly work on noteskin elements that are wrapped in ActorFrames. \u0026lt;type\u0026gt;NumGradientPoints Desc: Sets how many points the gradient has for the column. Resets the path to all white at the start.\n0 points means the gradient is turned off (color = white) 1 point means the whole path is given a single color 2 or more points allows for more arbitrary path coloring. PlayerOptions format: \u0026lt;type\u0026gt;NumGradientPoints(\u0026lt;column\u0026gt;, \u0026lt;point count\u0026gt;)\nNotITG format: SetNum\u0026lt;type\u0026gt;GradientPoints(\u0026lt;column\u0026gt;, \u0026lt;point count\u0026gt;)\n\u0026lt;type\u0026gt;GradientPoint Desc: Set the position for a given point in the column\u0026rsquo;s gradient. The magnitude given translates into multiples of ARROW_SIZE (commonly 64 pixels).\nPlayerOptions format: \u0026lt;type\u0026gt;GradientPoint(\u0026lt;column\u0026gt;, \u0026lt;point\u0026gt;, \u0026lt;position\u0026gt;)\nNotITG format: Set\u0026lt;type\u0026gt;GradientPoint(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;position\u0026gt;)\n\u0026lt;type\u0026gt;GradientColor Desc: Set the color for a given point in the column\u0026rsquo;s gradient.\nPlayerOptions format: \u0026lt;type\u0026gt;GradientColor(\u0026lt;column\u0026gt;, \u0026lt;point\u0026gt;, \u0026lt;red\u0026gt;, \u0026lt;green\u0026gt;, \u0026lt;blue\u0026gt;, \u0026lt;alpha\u0026gt;)\nNotITG format: Set\u0026lt;type\u0026gt;GradientColor(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;red\u0026gt;, \u0026lt;green\u0026gt;, \u0026lt;blue\u0026gt;, \u0026lt;alpha\u0026gt;)\nExample code (SM5):\nlocal color = { -- c1, c2, c3, c4, p2 {{1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {0,1,0,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}},--point1 {{0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}},--point2 {{0,0,1,1}, {0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}},--point3 {{1,1,1,0}, {0,0,1,0}, {0,1,0,0}, {1,0,0,0}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}},--point4 } for pn = 1,2 do -- Do this for both players local a = po[pn] if a then for col = 1,4 do-- Do this for four columns. a:StealthGlowNumGradientPoints(col,4) -- Each column will have 4 points. -- Each point is 1 ARROW_SIZE below the previous point. a:StealthGlowGradientPoint(col,1,1) a:StealthGlowGradientPoint(col,2,2) a:StealthGlowGradientPoint(col,3,3) a:StealthGlowGradientPoint(col,4,4) -- Each column will have their own color pattern, as defined in the color table. local pla = pn == 2 and col+4 or col a:StealthGlowGradientColor(col,1,color[1][pla][1],color[1][pla][2],color[1][pla][3],color[1][pla][4]) a:StealthGlowGradientColor(col,2,color[2][pla][1],color[2][pla][2],color[2][pla][3],color[2][pla][4]) a:StealthGlowGradientColor(col,3,color[3][pla][1],color[3][pla][2],color[3][pla][3],color[3][pla][4]) a:StealthGlowGradientColor(col,4,color[4][pla][1],color[4][pla][2],color[4][pla][3],color[4][pla][4]) end a:Stealth(0.25) -- 25% Stealth, use currently set approach rate (default = 1) end end Example code (NotITG):\nlocal color = { -- c1, c2, c3, c4, p2 {{1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {0,1,0,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}},--point1 {{0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}},--point2 {{0,0,1,1}, {0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}},--point3 {{1,1,1,0}, {0,0,1,0}, {0,1,0,0}, {1,0,0,0}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}},--point4 } for pn = 1,2 do -- Do this for both players local a = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP\u0026#39;..pn) if a then for col = 0,3 do-- Do this for four columns. a:SetNumStealthGradientPoints(col,4) -- Each column will have 4 points. -- Each point is 1 ARROW_SIZE below the previous point. a:SetStealthGradientPoint(0,col,1) a:SetStealthGradientPoint(1,col,2) a:SetStealthGradientPoint(2,col,3) a:SetStealthGradientPoint(3,col,4) -- Each column will have their own color pattern, as defined in the color table. local pla = pn == 2 and col+5 or col+1 a:SetStealthGradientColor(0,col,color[1][pla][1],color[1][pla][2],color[1][pla][3],color[1][pla][4]) a:SetStealthGradientColor(1,col,color[2][pla][1],color[2][pla][2],color[2][pla][3],color[2][pla][4]) a:SetStealthGradientColor(2,col,color[3][pla][1],color[3][pla][2],color[3][pla][3],color[3][pla][4]) a:SetStealthGradientColor(3,col,color[4][pla][1],color[4][pla][2],color[4][pla][3],color[4][pla][4]) end GAMESTATE:ApplyModifiers(\u0026#39;25% Stealth\u0026#39;,pn) -- 25% Stealth, use default approach rate (default = 1) end end Video Example (Shows colors set for Player 2):\nGradient video example\n","description":"Color modifiers affect the color of notes in some way. A lot of these follow similar behaviors to the Visibility modifiers, alongside with some extra functionalities.\n\u0026lt;color\u0026gt; can be 'ColorType_Red', 'ColorType_Blue' or 'ColorType_Green', and is how one chooses the color channel to affect.\nThese modifiers generally share usable values between 0 to 100%.\nStealthColor Desc: Bring a color channel of the notes down to zero (This does not affect the actual glow color)."},{"id":63,"href":"/dev/actors/actortypes/sound/Sound-ControllingSound/","title":"Controlling Sound","parent":"Sound","content":"The Def.Sound actor is part of RageSound, another component in the engine that deals with audio, and they both work together to provide playback of said sounds. That said, in order to control specific elements from them, you must understand how to access them.\nOnly using commands directly inside Def.Sound will provide commands related to the sound actor; to use commands related to its RageSound component, you must get() the component.\n-- To control actions like volume, you need to access the ActorSound\u0026#39;s RageSound, by using the get function. local MyRageSound = self:get() With this object obtained, you can control elements like the sound\u0026rsquo;s position, volume, pitch and speed. Note that some components need some flags to be enabled which have been pointed out as commments alongside them.\n-- This function will return the value for the Def.Sound\u0026#39;s RageSound component, which allows for expanded -- controls. local MyRageSound = self:get() MyRageSound:volume( 0.5 ) -- Changes volume (0 to 1). MyRageSound:pitch( 1.2 ) -- Requires SupportRateChanging to work. MyRageSound:speed( 1.4 ) -- Requires SupportRateChanging to work. Adjusting Properties With RageSound, you have access to different kinds of sound properties to determine how you want your sound to be played.\nMyRageSound:SetParam( \u0026#34;Property Name\u0026#34;, Value ) The available properties to change are detailed on the table below.\nName of Property Description Speed Determines how fast the speed will play. Pitch Determines the notation for the sound\u0026rsquo;s tune. StartSecond Sets the initial time of the sound to play. LengthSeconds Sets the length of the sound. FadeInSeconds How long the audio transition to full volume at the start. FadeSeconds / FadeOutSeconds How long the audio transition to silence at the end. Volume How loud will the sound be (0 to 1 value). ","description":"The Def.Sound actor is part of RageSound, another component in the engine that deals with audio, and they both work together to provide playback of said sounds. That said, in order to control specific elements from them, you must understand how to access them.\nOnly using commands directly inside Def.Sound will provide commands related to the sound actor; to use commands related to its RageSound component, you must get() the component."},{"id":64,"href":"/dev/actors/actortypes/notefield/DefNoteField-RunningModifiers/","title":"Doing Mods with Def.NoteField","parent":"NoteField","content":"Usually, a Player controls a NoteField, which includes positioning, zooming, rotation and vanish point manipulation. The game itself would also handle approach rates for modifiers used on a Player.\nWith Def.NoteField, this is now done manually, since there is no \u0026ldquo;Player\u0026rdquo; to handle everything.\nApplying modifiers Applying modifiers is instant, unlike the approach rate behavior usually seen.\nThis can be done through multiple ways:\n1. Using the ModsFromString function in the NoteField. Allows one to easilly set the modifiers on the NoteField through modstrings. Some modifiers will not be usable through modstrings. Def.NoteField{ OnCommand= function() self:ModsFromString(\u0026#39;drunk\u0026#39;) end, } 2. Grabbing the PlayerOptions of the NoteField For now, \u0026quot;ModsLevel_Current\u0026quot; has to be used, since the game will no longer handle approaching from \u0026quot;ModsLevel_Song\u0026quot;. Allows for the use of all modifiers a Player can access. Requires knowning how to use the PlayerOptions functions. Def.NoteField{ OnCommand= function() self:GetPlayerOptions(\u0026#39;ModsLevel_Current\u0026#39;):Drunk(1) end, } NoteData A NoteField starts with the chart the specified player used. However, SetNoteDataFromLua is usable on a Def.NoteField, allowing one to change the chart used. Unlike player, there is no SetNoteData function (for now), so the table format from GetNoteData has to be followed.\nReplicating Mini and Perspective Refer to the section How a Player Manipulates its\u0026rsquo; NoteField.\n","description":"Usually, a Player controls a NoteField, which includes positioning, zooming, rotation and vanish point manipulation. The game itself would also handle approach rates for modifiers used on a Player.\nWith Def.NoteField, this is now done manually, since there is no \u0026ldquo;Player\u0026rdquo; to handle everything.\nApplying modifiers Applying modifiers is instant, unlike the approach rate behavior usually seen.\nThis can be done through multiple ways:\n1. Using the ModsFromString function in the NoteField."},{"id":65,"href":"/dev/mode-support/dtx-gda-support/","title":"DTX \u0026 GDA/G2D Support","parent":"NoteLoader support","content":"Preview shot of this mode from Alpha 4.9.8 with fallback theme Project OutFox contains parsers for the DTX and GDA/G2D chart formats, which are the standard formats used in conjunction with the gddm and gdgf game types. The following table contains details on the DTX/GDA/G2D channels that Project OutFox currently supports.\nWe have recently added parsing support for the guitar/bass side of this chart format, and we will also look at creating a new easier to use format for gdgf in the future which supports 3/5 and 6 fret which has been requested by our community.\nDTX/GDA Notedata support as of Alpha 4.12.0 New for Alpha 4.12.0 - SHIFT-JIS, UTF8 and UTF16LE Support! This alpha includes complete support for all types of dtx/gda files, no matter which creator made it, including the newer standards. You do not need to change locale on windows, nor convert the encoding, the game will just load them up.\nTable of Symbols Key: Comment ✅ Fully supported and used in Mode ✓ Fully supported, but not used in this Mode 📝? No Documentation on this channel\u0026rsquo;s support ⌛ Game Supports this, but awaiting on documentation ❌ Not Supported / Not Available ~ Not Used Channel Support Table DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 01 Background Music ✅ Background Music ✅ ✅ Supported 02 Measure Multiplication factor ✅ Measure Multiplication factor ✅ ✅ Supported in 4.10.0 03 Set Initial BPM ✅ Set Initial BPM ✅ ✅ Supported 04 BG Layer 1 ✅ BG Layer 1 ✅ ✅ Supported - needs enabling 05 eXtended Object ✅ eXtended Object ✅ 📝? Supported 06 Not Used ✓ Not Used ✓ ~ Supported - needs enabling 07 BG Layer 2 ✅ BG Layer 2 ✅ ✅ Supported - needs enabling sits above channel 4 08 Extended BPM ✅ Extended BPM ✅ ✅ Supported - Changes bpm to value 09 Not Used ✓ Not Used ✓ ~ Supported 0A Not Used ✓ Not Used ✓ ~ Supported 0B Not Used ~ Not Used ~ ~ Not Used 0C Not Used ~ Not Used ~ ~ Not Used 0D Not Used ~ Not Used ~ ~ Not Used 0E Not Used ~ Not Used ~ ~ Not Used 0F Not Used ~ Not Used ~ ~ Not Used 10 Not Used ~ Not Used ~ ~ Not Used 11 HiHatClose ✅ HiHatClose ✅ ✅ Supported 12 Snare ✅ Snare ✅ ✅ Supported 13 Bass Drum ✅ Bass Drum ✅ ✅ Supported 14 High Tom ✅ High Tom ✅ ✅ Supported 15 Low Tom ✅ Low Tom ✅ ✅ Supported 16 Cymbal ✅ Cymbal ✅ ✅ Supported 17 Floor Tom ✅ Floor Tom ✅ ✅ Supported 18 High Hat Open ✅ High Hat Open ✅ ✅ Supported 19 Ride Cymbal ✅ Ride Cymbal ✅ ✅ Supported 1A Not Used ~ Left Cymbal ✅ ✅ Supported 1B Not Used ~ Left Pedal ✅ ✅ Supported 1C Not Used ~ Left Bass Drum ✅ ✅ Supported 1D Not Used ~ Not Used ~ ~ Not Used 1E Not Used ~ Not Used ~ ~ Not Used 1F Drums Fill in Sound ✅ Drums Fill in Sound ✅ ✅ Supported DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 20 Guitar OPEN ✅ Guitar OPEN ✅ ✅ Supported in 4.10.0 21 Guitar xxBxx ✅ Guitar xxBxx ✅ ✅ Supported in 4.10.0 22 Guitar xGxxx ✅ Guitar xGxxx ✅ ✅ Supported in 4.10.0 23 Guitar xGBxx ✅ Guitar xGBxx ✅ ✅ Supported in 4.10.0 24 Guitar Rxxxx ✅ Guitar Rxxxx ✅ ✅ Supported in 4.10.0 25 Guitar RxBxx ✅ Guitar RxBxx ✅ ✅ Supported in 4.10.0 26 Guitar RGxxx ✅ Guitar RGxxx ✅ ✅ Supported in 4.10.0 27 Guitar RGBxx ✅ Guitar RGBxx ✅ ✅ Supported in 4.10.0 28 Guitar Wail ✅ Guitar Wail ✅ ✅ Supported in 4.10.0 29 Not Supported ~ Not Supported ~ ~ Not Supported 2A Not Supported ~ Not Supported ~ ~ Not Supported 2B Not Used ~ Not Used ~ ~ Not Used 2C Not Used ~ Guitar Long Note Start/End Point ⌛ ✅ AL Not Supported 2D Not Used ~ Bass Long Note Start/End Point ⌛ ✅ AL Not Supported 2E Not Used ~ Not Used ~ ~ Not Used 2F Guitar Wailing Sound ✅ Guitar Wailing Sound ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 30 Rate Speed ~ Rate Speed ~ ~ Not Used 31 HiHatClose Hidden Note ✅ HiHatClose Hidden Note ✅ ✅ Supported 32 Snare Hidden Note ✅ Snare Hidden Note ✅ ✅ Supported 33 Bass Drum Hidden Note ✅ Bass Drum Hidden Note ✅ ✅ Supported 34 High Tom Hidden Note ✅ High Tom Hidden Note ✅ ✅ Supported 35 Low Tom Hidden Note ✅ Low Tom Hidden Note ✅ ✅ Supported 36 Cymbal Hidden Note ✅ Cymbal Hidden Note ✅ ✅ Supported 37 Floor Tom Hidden Note ✅ Floor Tom Hidden Note ✅ ✅ Supported 38 High Hat Open Hidden Note ✅ High Hat Open Hidden Note ✅ ✅ Supported 39 Ride Cymbal Hidden Note ✅ Ride Cymbal Hidden Note ✅ ✅ Supported 3A Not Used ~ Left Cymbal Hidden Note ✅ ✅ Supported 3B Not Used ~ Left Pedal Hidden Note ✅ ✅ Supported 3C Not Used ~ Left Bass Drum Hidden Note ✅ ✅ Supported 3D Not Used ~ Not Used ~ ~ Not Used 3E Not Used ~ Not Used ~ ~ Not Used 3F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 40 Not Used ~ Not Used ~ ~ Not Used 41 Not Used ~ Not Used ~ ~ Not Used 42 Not Used ~ Not Used ~ ~ Not Used 43 Not Used ~ Not Used ~ ~ Not Used 44 Not Used ~ Not Used ~ ~ Not Used 45 Not Used ~ Not Used ~ ~ Not Used 46 Not Used ~ Not Used ~ ~ Not Used 47 Not Used ~ Not Used ~ ~ Not Used 48 Not Used ~ Not Used ~ ~ Not Used 49 Not Used ~ Not Used ~ ~ Not Used 4A Not Used ~ Not Used ~ ~ Not Used 4B Not Used ~ Not Used ~ ~ Not Used 4C Bonus 04 ✅ Bonus 04 ✅ ✅ Supported in 4.10.0 4D Bonus 03 ✅ Bonus 03 ✅ ✅ Supported in 4.10.0 4E Bonus 02 ✅ Bonus 02 ✅ ✅ Supported in 4.10.0 4F Bonus 01 ✅ Bonus 01 ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 50 Show Beat Line ❌ Show Beat Line ⌛ ✅ Not Supported 51 Show Measure Line ❌ Show Measure Line ⌛ ✅ Not Supported 52 MIDI Drum Chorus ❌ MIDI Drum Chorus ❌ ✅ Not Supported 53 Fill In ~ Fill In ~ ~ Not Supported 54 Video Playback ✅ Sync Video Playback ✅ ✅ Supported in 4.11.0 55 BGA Layer 3 ❌ BGA Layer 3 ❌ ✅ Not Supported 56 BGA Layer 4 ❌ BGA Layer 4 ❌ ✅ Not Supported 57 BGA Layer 5 ❌ BGA Layer 5 ❌ ✅ Not Supported 58 BGA Layer 6 ❌ BGA Layer 6 ❌ ✅ Not Supported 59 BGA Layer 7 ❌ BGA Layer 7 ❌ ✅ Not Supported 5A Background Video Playback ~ Background Video Playback ~ ~ Not Used 5B Not Used ~ Not Used ~ ~ Not Used 5C Not Used ~ Not Used ~ ~ Not Used 5D Not Used ~ Not Used ~ ~ Not Used 5E Not Used ~ Not Used ~ ~ Not Used 5F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 60 BGA Layer 8 ❌ BGA Layer 8 ❌ ✅ Not Supported 61 Sound Effect 01 ✅ Sound Effect 01 ✅ ✅ Supported in 4.11.0 62 Sound Effect 02 ✅ Sound Effect 02 ✅ ✅ Supported in 4.11.0 63 Sound Effect 03 ✅ Sound Effect 03 ✅ ✅ Supported in 4.11.0 64 Sound Effect 04 ✅ Sound Effect 04 ✅ ✅ Supported in 4.11.0 65 Sound Effect 05 ✅ Sound Effect 05 ✅ ✅ Supported in 4.11.0 66 Sound Effect 06 ✅ Sound Effect 06 ✅ ✅ Supported in 4.11.0 67 Sound Effect 07 ✅ Sound Effect 07 ✅ ✅ Supported in 4.11.0 68 Sound Effect 08 ✅ Sound Effect 08 ✅ ✅ Supported in 4.11.0 69 Sound Effect 09 ✅ Sound Effect 09 ✅ ✅ Supported in 4.11.0 6A Not Used ~ Not Used ~ ~ Not Used 6B Not Used ~ Not Used ~ ~ Not Used 6C Not Used ~ Not Used ~ ~ Not Used 6D Not Used ~ Not Used ~ ~ Not Used 6E Not Used ~ Not Used ~ ~ Not Used 6F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 70 Sound Effect 10 ✅ Sound Effect 10 ✅ ✅ Supported in 4.11.0 71 Sound Effect 11 ✅ Sound Effect 11 ✅ ✅ Supported in 4.11.0 72 Sound Effect 12 ✅ Sound Effect 12 ✅ ✅ Supported in 4.11.0 73 Sound Effect 13 ✅ Sound Effect 13 ✅ ✅ Supported in 4.11.0 74 Sound Effect 14 ✅ Sound Effect 14 ✅ ✅ Supported in 4.11.0 75 Sound Effect 15 ✅ Sound Effect 15 ✅ ✅ Supported in 4.11.0 76 Sound Effect 16 ✅ Sound Effect 16 ✅ ✅ Supported in 4.11.0 77 Sound Effect 17 ✅ Sound Effect 17 ✅ ✅ Supported in 4.11.0 78 Sound Effect 18 ✅ Sound Effect 18 ✅ ✅ Supported in 4.11.0 79 Sound Effect 19 ✅ Sound Effect 19 ✅ ✅ Supported in 4.11.0 7A Not Used ~ Not Used ~ ~ Not Used 7B Not Used ~ Not Used ~ ~ Not Used 7C Not Used ~ Not Used ~ ~ Not Used 7D Not Used ~ Not Used ~ ~ Not Used 7E Not Used ~ Not Used ~ ~ Not Used 7F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 80 Sound Effect 20 ✅ Sound Effect 20 ✅ ✅ Supported in 4.11.0 81 Sound Effect 21 ✅ Sound Effect 21 ✅ ✅ Supported in 4.11.0 82 Sound Effect 22 ✅ Sound Effect 22 ✅ ✅ Supported in 4.11.0 83 Sound Effect 23 ✅ Sound Effect 23 ✅ ✅ Supported in 4.11.0 84 Sound Effect 24 ✅ Sound Effect 24 ✅ ✅ Supported in 4.11.0 85 Sound Effect 25 ✅ Sound Effect 25 ✅ ✅ Supported in 4.11.0 86 Sound Effect 26 ✅ Sound Effect 26 ✅ ✅ Supported in 4.11.0 87 Sound Effect 27 ✅ Sound Effect 27 ✅ ✅ Supported in 4.11.0 88 Sound Effect 28 ✅ Sound Effect 28 ✅ ✅ Supported in 4.11.0 89 Sound Effect 29 ✅ Sound Effect 29 ✅ ✅ Supported in 4.11.0 8A Not Used ~ Not Used ~ ~ Not Used 8B Not Used ~ Not Used ~ ~ Not Used 8C Not Used ~ Not Used ~ ~ Not Used 8D Not Used ~ Not Used ~ ~ Not Used 8E Not Used ~ Not Used ~ ~ Not Used 8F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 90 Sound Effect 30 ✅ Sound Effect 30 ✅ ✅ Supported in 4.11.0 91 Sound Effect 31 ✅ Sound Effect 31 ✅ ✅ Supported in 4.11.0 92 Sound Effect 32 ✅ Sound Effect 32 ✅ ✅ Supported in 4.11.0 93 Not Used ~ Guitar xxxYx ✅ ✅ Supported in 4.10.0 94 Not Used ~ Guitar xxBYx ✅ ✅ Supported in 4.10.0 95 Not Used ~ Guitar xGxYx ✅ ✅ Supported in 4.10.0 96 Not Used ~ Guitar xGBYx ✅ ✅ Supported in 4.10.0 97 Not Used ~ Guitar RxxYx ✅ ✅ Supported in 4.10.0 98 Not Used ~ Guitar RxBYx ✅ ✅ Supported in 4.10.0 99 Not Used ~ Guitar RGxYx ✅ ✅ Supported in 4.10.0 9A Not Used ~ Guitar RGBYx ✅ ✅ Supported in 4.10.0 9B Not Used ~ Guitar xxxxP ✅ ✅ Supported in 4.10.0 9C Not Used ~ Guitar xxBxP ✅ ✅ Supported in 4.10.0 9D Not Used ~ Guitar xGxxP ✅ ✅ Supported in 4.10.0 9E Not Used ~ Guitar xGBxP ✅ ✅ Supported in 4.10.0 9F Not Used ~ Guitar RxxxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments A0 Bass OPEN ✅ Bass OPEN ✅ ✅ Supported in 4.10.0 A1 Bass xxBxx ✅ Bass xxBxx ✅ ✅ Supported in 4.10.0 A2 Bass xGxxx ✅ Bass xGxxx ✅ ✅ Supported in 4.10.0 A3 Bass xGBxx ✅ Bass xGBxx ✅ ✅ Supported in 4.10.0 A4 Bass Rxxxx ✅ Bass Rxxxx ✅ ✅ Supported in 4.10.0 A5 Bass RxBxx ✅ Bass RxBxx ✅ ✅ Supported in 4.10.0 A6 Bass RGxxx ✅ Bass RGxxx ✅ ✅ Supported in 4.10.0 A7 Bass RGBxx ✅ Bass RGBxx ✅ ✅ Supported in 4.10.0 A8 Bass Wail ✅ Bass Wail ✅ ✅ Supported in 4.10.0 A9 Not Used ~ Guitar RxBxP ✅ ✅ Supported in 4.10.0 AA Not Used ~ Guitar RGxxP ✅ ✅ Supported in 4.10.0 AB Not Used ~ Guitar RGBxP ✅ ✅ Supported in 4.10.0 AC Not Used ~ Guitar xxxYP ✅ ✅ Supported in 4.10.0 AD Not Used ~ Guitar xxBYP ✅ ✅ Supported in 4.10.0 AE Not Used ~ Guitar xGxYP ✅ ✅ Supported in 4.10.0 AF Not Used ~ Guitar xGBYP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments B0 Not Used ~ Not Used ~ ~ Not Used B1 HiHatClose Empty ⌛ HiHatClose Empty ✅ ✅ Supported in 4.11.0 B2 Snare Empty ⌛ Snare Empty ✅ ✅ Supported in 4.11.0 B3 Bass Drum Empty ⌛ Bass Drum Empty ✅ ✅ Supported in 4.11.0 B4 High Tom Empty ⌛ High Tom Empty ✅ ✅ Supported in 4.11.0 B5 Low Tom Empty ⌛ Low Tom Empty ✅ ✅ Supported in 4.11.0 B6 Cymbal Empty ⌛ Cymbal Empty ✅ ✅ Supported in 4.11.0 B7 Floor Tom Empty ⌛ Floor Tom Empty ✅ ✅ Supported in 4.11.0 B8 High Hat Open Empty ⌛ High Hat Open Empty ✅ ✅ Supported in 4.11.0 B9 Ride Cymbal Empty ⌛ Ride Cymbal Empty ✅ ✅ Supported in 4.11.0 BA Guitar Empty ⌛ Guitar Empty ✅ ✅ Supported in 4.11.0 BB Bass Empty ⌛ Bass Empty ✅ ✅ Supported in 4.11.0 BC Not Used ~ LeftCymbal Empty ✅ ✅ Supported in 4.11.0 BD Not Used ~ LeftPedal Empty ✅ ✅ Supported in 4.11.0 BE Not Used ~ LeftBassDrum Empty ✅ ✅ Supported in 4.11.0 BF Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments C0 Not Used ~ Not Used ~ ~ Not Used C1 Beat Bar Offset ❌ Beat Bar Offset ❌ ✅ Not Supported C2 Hide Beat/Measure bar ⌛ Hide Beat/Measure bar ⌛ ✅ Not Supported C3 Not Used ~ Not Used ~ ~ Not Used C4 Replacing BGA Layer 1 ❌ Replacing BGA Layer 1 ❌ ✅ Not Supported C5 Not Used ~ Bass xxxYx ✅ ✅ Supported in 4.10.0 C6 Not Used ~ Bass xxBYx ✅ ✅ Supported in 4.10.0 C7 Replacing BGA Layer 2 ❌ Replacing BGA Layer 2 ❌ ✅ Not Supported C8 Not Used ~ Bass xGxYx ✅ ✅ Supported in 4.10.0 C9 Not Used ~ Bass xGBYx ✅ ✅ Supported in 4.10.0 CA Not Used ~ Bass RxxYx ✅ ✅ Supported in 4.10.0 CB Not Used ~ Bass RxBYx ✅ ✅ Supported in 4.10.0 CC Not Used ~ Bass RGxYx ✅ ✅ Supported in 4.10.0 CD Not Used ~ Bass RGBYx ✅ ✅ Supported in 4.10.0 CE Not Used ~ Bass xxxxP ✅ ✅ Supported in 4.10.0 CF Not Used ~ Bass xxBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments D0 Not Used ~ Guitar RxxYP ✅ ✅ Supported in 4.10.0 D1 Not Used ~ Guitar RxBYP ✅ ✅ Supported in 4.10.0 D2 Not Used ~ Guitar RGxYP ✅ ✅ Supported in 4.10.0 D3 Not Used ~ Guitar RGBYP ✅ ✅ Supported in 4.10.0 D4 Not Used ~ Not Used ~ ~ Not Used D5 Replacing BGA Layer 3 ❌ Replacing BGA Layer 3 ❌ ✅ Not Supported D6 Replacing BGA Layer 4 ❌ Replacing BGA Layer 4 ❌ ✅ Not Supported D7 Replacing BGA Layer 5 ❌ Replacing BGA Layer 5 ❌ ✅ Not Supported D8 Replacing BGA Layer 6 ❌ Replacing BGA Layer 6 ❌ ✅ Not Supported D9 Replacing BGA Layer 7 ❌ Replacing BGA Layer 7 ❌ ✅ Not Supported DA Not Used ~ Bass xGxxP ✅ ✅ Supported in 4.10.0 DB Not Used ~ Bass xGBxP ✅ ✅ Supported in 4.10.0 DC Not Used ~ Bass RxxxP ✅ ✅ Supported in 4.10.0 DD Not Used ~ Bass RxBxP ✅ ✅ Supported in 4.10.0 DE Not Used ~ Bass RGxxP ✅ ✅ Supported in 4.10.0 DF Not Used ~ Bass RGBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments E0 Replacing BGA Layer 8 ❌ Replacing BGA Layer 8 ❌ ✅ Not Supported E1 Not Used ~ Bass xxxYP ✅ ✅ Supported in 4.10.0 E2 Not Used ~ Bass xxBYP ✅ ✅ Supported in 4.10.0 E3 Not Used ~ Bass xGxYP ✅ ✅ Supported in 4.10.0 E4 Not Used ~ Bass xGBYP ✅ ✅ Supported in 4.10.0 E5 Not Used ~ Bass RxxYP ✅ ✅ Supported in 4.10.0 E6 Not Used ~ Bass RxBYP ✅ ✅ Supported in 4.10.0 E7 Not Used ~ Bass RGxYP ✅ ✅ Supported in 4.10.0 E8 Not Used ~ Bass RGBYP ✅ ✅ Supported in 4.10.0 E9 Not Used ~ Not Used ~ ~ Not Used EA Not Used ~ Not Used ~ ~ Not Used EB Not Used ~ Not Used ~ ~ Not Used EC Metronome ⌛ Metronome ✅ ✅ Supported in 4.11.0 ED Start Sound ⌛ Start Sound ✅ ✅ Supported in 4.11.0 EE Not Used ~ Bass RGxxP ✅ ✅ Supported in 4.10.0 EF Not Used ~ Bass RGBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments F0 Not Used ~ Not Used ~ ~ Not Used F1 Not Used ~ Not Used ~ ~ Not Used F2 Not Used ~ Not Used ~ ~ Not Used F3 Not Used ~ Not Used ~ ~ Not Used F4 Not Used ~ Not Used ~ ~ Not Used F5 Not Used ~ Not Used ~ ~ Not Used F6 Not Used ~ Not Used ~ ~ Not Used F7 Not Used ~ Not Used ~ ~ Not Used F8 Not Used ~ Not Used ~ ~ Not Used F9 Not Used ~ Not Used ~ ~ Not Used FA Not Used ~ Not Used ~ ~ Not Used FB Not Used ~ Not Used ~ ~ Not Used FC Metronome ⌛ Metronome ✅ ✅ Supported in 4.11.0 FD Start Sound ⌛ Start Sound ✅ ✅ Supported in 4.11.0 FE Not Used ~ Not Used ~ ~ Not Used FF Not Used ~ Not Used ~ ~ Not Used Written and Maintained with ♡ by Squirrel, with thanks to the BMS command memo, the Japanese DTX and BandJAM community, APPROVED and sub from DTXMania\u0026rsquo;s Discord community, dridi for the GDA help and to Kangalioo for the VSRG docs\n","description":"Preview shot of this mode from Alpha 4.9.8 with fallback theme Project OutFox contains parsers for the DTX and GDA/G2D chart formats, which are the standard formats used in conjunction with the gddm and gdgf game types. The following table contains details on the DTX/GDA/G2D channels that Project OutFox currently supports.\nWe have recently added parsing support for the guitar/bass side of this chart format, and we will also look at creating a new easier to use format for gdgf in the future which supports 3/5 and 6 fret which has been requested by our community."},{"id":66,"href":"/dev/effects/","title":"Effect Simfiles","parent":"Developers and Creators","content":"Normal gameplay is as follows: Notes move up or down towards the target on a usually static background, and the player hits the notes when they reach the target. Simple.\nEffect simfiles change this up, which can result in interesting gameplay results.\nThere are multiple \u0026lsquo;catagories\u0026rsquo; of effect files:\n\u0026ldquo;Gimmick\u0026rdquo; charts\nWhile not really an \u0026rsquo;effect\u0026rsquo;, per-say, gimmick charts can change up how one reads a chart. A single BPM or stop doesn\u0026rsquo;t really count as a \u0026lsquo;gimmick\u0026rsquo;. Done with SM or SSC chart segments. \u0026ldquo;BGA\u0026rdquo; charts\nUses BGChanges to load lua or image files to alter the Background of a song. Can be used to add in visual effects as needed. \u0026ldquo;Foreground\u0026rdquo; charts\nUses FGChanges to load lua files that can alter or obstruct the player\u0026rsquo;s view of the notefield Requires one to keep track of notes and the notefield itself. \u0026ldquo;Modifier\u0026rdquo; charts (or \u0026ldquo;modcharts\u0026rdquo;/\u0026ldquo;modfiles\u0026rdquo;)\nUsually uses FGChanges or BGChanges to load lua files that can script modifiers to run at given points of the song. Requires one to use various information given, such as column order, note color or direction to figure out what note to hit and when to hit it. Older mod charts tend to use course files or the #ATTACKS field in simfiles to apply scripted modifiers. Newer mod charts tend to hide the UI, which allows for more screen-estate when utilizing modifiers. These are not mutually exclusive categories. One simfile could be a combination of \u0026ldquo;Foreground\u0026rdquo; and \u0026ldquo;Modifier\u0026rdquo;, while another could be a combination of \u0026ldquo;Gimmick\u0026rdquo; and \u0026ldquo;Foreground\u0026rdquo;.\n","description":"Normal gameplay is as follows: Notes move up or down towards the target on a usually static background, and the player hits the notes when they reach the target. Simple.\nEffect simfiles change this up, which can result in interesting gameplay results.\nThere are multiple \u0026lsquo;catagories\u0026rsquo; of effect files:\n\u0026ldquo;Gimmick\u0026rdquo; charts\nWhile not really an \u0026rsquo;effect\u0026rsquo;, per-say, gimmick charts can change up how one reads a chart. A single BPM or stop doesn\u0026rsquo;t really count as a \u0026lsquo;gimmick\u0026rsquo;."},{"id":67,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-EnsuringStringComp/","title":"Ensuring string compatibility","parent":"BitmapText","content":"When applying text on a BitmapText actor, depending on the font, some glyphs might not present themselves properly. Let\u0026rsquo;s take the following example, which attempts to load a text with the value H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶, which is Headgrinder with some special unicode to add non-spacing strikes in the text.\nIn this example, the glyphs representing the special unicode symbols are not found in this custom font, so they show ? symbols instead (from the Common default glyph image list), to indicate the missing element. All glyphs are available on this font, so the text is properly shown. If the need comes to use a font but glyphs are not possible to be retrieved, then you can use the AltText variable from within settext, which can be used as a failsafe if the current string includes an unavailable glyph.\n-- First argument is the original text, while the second is the alternative variant for compatibility. self:settext( \u0026#34;H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶\u0026#34;, \u0026#34;Headgrinder\u0026#34; ) With the code above, the case will be that the first image on the left will default to the second variable, given the missing glyphs from its sheet.\n","description":"When applying text on a BitmapText actor, depending on the font, some glyphs might not present themselves properly. Let\u0026rsquo;s take the following example, which attempts to load a text with the value H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶, which is Headgrinder with some special unicode to add non-spacing strikes in the text.\nIn this example, the glyphs representing the special unicode symbols are not found in this custom font, so they show ? symbols instead (from the Common default glyph image list), to indicate the missing element."},{"id":68,"href":"/user-guide/config/","title":"Features \u0026 Config","parent":"User Guide","content":"","description":""},{"id":69,"href":"/dev/actors/actortypes/notefield/NoteField-HiddenRegions+NoteTypeMult/","title":"Hidden Regions \u0026 NoteType Multipliers","parent":"NoteField","content":"Hidden Regions \u0026amp; NoteType Mult are two sets of functions that allow for manipulating notes.\nHidden Regions Hidden Regions specify parts of the chart to not draw. If a hold head is in the segment, the entire hold will not draw.\nCan be cleared with clear_hidden_regions or ClearHiddenRegions and also takes an optional parameter for column.\nInput format The input is a table of tables. Each inner table follows the same format. At least one inner table is required. Note that col is optional and 1-indexed, and affects all columns if not provided.\n{ {start_beat, end_beat, [col]}, {start_beat, end_beat, [col]}, ... } Example local P1 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP1\u0026#39;) local P2 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP2\u0026#39;) if P1 then P1:GetChild(\u0026#39;NoteField\u0026#39;):add_hidden_regions{ {12, 24}, {32, 64, 1}, -- Hide the notes in the 1st and 3rd column {32, 64, 3}, } end if P2 then P2:GetChild(\u0026#39;NoteField\u0026#39;):AddHiddenRegions{ -- Also has CamelCase function name {0, 12}, {24, 32}, {32, 64, 2}, {32, 64, 4}, } end NoteType Multipliers NoteType Multipliers allow one to affect the note quantization throughout a chart.\nCan be cleared with clear_note_type_mults or ClearNoteTypeMults.\nInput format Like Hidden Regions, this also uses a table of tables as its\u0026rsquo; input. At least one table with an entry for beat 0 is required for the first call to add_note_type_mults/AddNoteTypeMults. This affects all columns in the NoteField. Negative beats are not allowed for input.\n{ {start_beat, multiplier}, {start_beat, multiplier}, ... } Example local P1 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP1\u0026#39;) if P1 then P1:GetChild(\u0026#39;NoteField\u0026#39;):add_note_type_mults{ {0, 0.5}, -- beat 0 to 33 will look like a chart at half the BPM {33, 0}, -- beat 33 to 64.5 will look like they\u0026#39;re all at beat 16.5 {64.5, 1}, -- Everything onwards will now flow normally as if they\u0026#39;re from beat 16.5 onwards. } end ","description":"Hidden Regions \u0026amp; NoteType Mult are two sets of functions that allow for manipulating notes.\nHidden Regions Hidden Regions specify parts of the chart to not draw. If a hold head is in the segment, the entire hold will not draw.\nCan be cleared with clear_hidden_regions or ClearHiddenRegions and also takes an optional parameter for column.\nInput format The input is a table of tables. Each inner table follows the same format."},{"id":70,"href":"/dev/actors/actortypes/notefield/NoteField-PlayerManipulation/","title":"How a Player Manipulates its' NoteField","parent":"NoteField","content":"Some modifiers require the Player to perform some adjustments to the NoteField. This page documents what gets affected and how.\nNote that this is useful knowledge if trying to replicate some modifiers on a Def.NoteField by itself or if you need something to follow what a Player does. Any part that relies in reverse/downscroll only takes effect when the first column is more than 50% towards downscroll.\nAll modifiers mentioned are calculated in floating point format, so 150% would be represented as 1.5.\nScaling zoom and position based on SCREEN_HEIGHT/480 is only needed if using a Def.NoteField outside of a scaled ActorFrame.\nY Position This is based on metrics and the tilt modifier (100% Hallway/Incoming = -1 tilt and 100% Distant/Space = 1 tilt) Note that the amount tilt adds goes positive when in reverse/downscroll.\nBase amount: (upscroll receptor position + downscroll receptor position) / 2\nPositive tilt (Distant/Space): scale(tilt, 0, 1, 0, -45) or -45*tilt\nNegative tilt (Hallway/Incoming): scale(tilt, 0, -1, 0, -20)or 20*tilt\nHere\u0026rsquo;s how to grab the relevant metrics in lua:\nlocal receptposup = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposdown = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) -- This is your base amount of y position. The amount from tilt adds onto this. local notefieldy = (receptposup + receptposdown)/2 X Rotation / rotationx This is based on the tilt modifier. (100% Hallway/Incoming = -100% tilt and 100% Distant/Space = 100% tilt) Note that the amount of rotation gets *-1 when in reverse/downscroll.\nBase amount: scale(tilt, -1, 1, 30, -30) or -30*tilt\nZoom This is based on the mini and tilt modifiers. (100% Hallway/Incoming = -100% tilt and 100% Distant/Space = 100% tilt)\nMini: scale(mini, 0, 1, 1, .5) or 1 - (0.5*mini)\nTilt: scale(tilt, 0, 1, 1, 0.9) (positive) or scale(tilt, 0, -1, 1, 0.9) (negative) or 1 - 0.1*abs(tilt)\nThese two are multiplied together. If the z axis shouldn\u0026rsquo;t be scaled, then zoomz becomes 1/(mini zoom * tilt zoom), taking care to not divide by zero.\nVanish Point This is dependant on metrics, skew and Player position and is added onto by what is given through vanishpointx/vanishpointy. This is applied on the ActorFrame containing the NoteField.\n(100% Space/Incoming = 100% skew)\nX position: scale(skew, 0, 1, Player:GetX(), SCREEN_CENTER_X) +layer\u0026rsquo;s vanish point x\nY position: Player:GetY() + NoteField base y position + player\u0026rsquo;s vanish point y\nThe metrics can be grabbed as seen in the Y Position section. Note that the base notefield position isn\u0026rsquo;t scaled in this as of now.\nFOV A NoteField does not have its\u0026rsquo; own FOV, and instead relies on Player to have an FOV for 3d effects. This is applied on the ActorFrame containing the NoteField.\nThe default value is 45.\n","description":"Some modifiers require the Player to perform some adjustments to the NoteField. This page documents what gets affected and how.\nNote that this is useful knowledge if trying to replicate some modifiers on a Def.NoteField by itself or if you need something to follow what a Player does. Any part that relies in reverse/downscroll only takes effect when the first column is more than 50% towards downscroll.\nAll modifiers mentioned are calculated in floating point format, so 150% would be represented as 1."},{"id":71,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-InlineColoring/","title":"Inline-Text manipulation","parent":"BitmapText","content":"Starting from SM5 Preview 1, BitmapText actors can include special instructions to manipulate separate glyphs with things like color. Operations from this use the AddAttribute function to insert these instructions.\n-- This adds an attribute to the BitmapText. These are stacked. self:AddAttribute( [starting point], {[attribute to add]} ) -- This removes all attributes applied on the BitmapText. self:ClearAttributes() Any time the BitmapText calls settext or its own text changes, all attributes assigned to it will be cleared and will need to be reapplied. The Attributes table Examples Squared-Bracketed string conversion Utilizing the Diffuses attribute The Attributes table The following are the attributes available via the AddAttribute function.\nName Type Action Diffuse color Color for the attribute segment. This applies for all the coloring of the glyph. Length int How long is the attribute going to be (size is in number of glyphs) Diffuses table Table version of the Diffuse attribute, iterates through them all to give different corner colors for the glyph. An example is shown below. Glow color Color to apply as additional color for the attribute segment. Examples Squared-Bracketed string conversion The following example converts a string that includes square brackets into red colored sections.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 local function ConvertText( child ) local str = child:GetText() -- This will contain all possible changes to change the color method. local charindex = 0 -- Here we\u0026#39;ll store the all the possible matches to color. local ColoringProcess = {} -- Let\u0026#39;s use gmatch to get all matches where a string is enclosed on square brackets. -- A trick being used here are the empty parenthesis, as gmatch doesn\u0026#39;t provide a general index value -- when there\u0026#39;s a proper match found. However, if you include parenthesis before or after a successful match, -- you\u0026#39;ll get the index value of the the start and the end of the match relative to the entire string, which is -- useful to get the position to apply each attribute. for p1,m,p2 in str:gmatch(\u0026#34;()(%[.-%])()\u0026#34; ) do ColoringProcess[#ColoringProcess+1] = { -- The attributes need the value to be 0-indexed, hence the -1, as Lua provides all results starting with 1. Start = p1-1, Attr = { Diffuse = Color.Red, Length = m:len() } } end -- We\u0026#39;re done. Apply the resulting table\u0026#39;s atributes to the text. for k,v in pairs( ColoringProcess ) do child:AddAttribute( v.Start, v.Attr ) end end return Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;I\u0026#39;m [Text]\u0026#34;, OnCommand = function(self) self:Center() -- Center the BitmapText so it\u0026#39;s visible -- Call the function above. ConvertText(self) end } The result of this example, makes the Text segment of the BitmapText\u0026rsquo;s Text attribute red. Utilizing the Diffuses attribute This attribute is a special case, as it requires a table to go through them all, and each will apply to the glyphs corners. Given this, it has a limit of 4 on the table, any other diffuse in the table past that will be ignored. If there are less than 4 on the table, the rest will be filled with #ffffff.\nOnCommand = function(self) local myColors = { Color.Red, Color.Blue, Color.Blue, Color.Red, } -- Apply the diffuses to all characters in the text. self:AddAttribute( 0, { Diffuses = myColors, Length = -1 } ) end The result ends up being that each glyph has red on the top left and bottom right corner, while having blue on the top right and bottom left corners. ","description":"Starting from SM5 Preview 1, BitmapText actors can include special instructions to manipulate separate glyphs with things like color. Operations from this use the AddAttribute function to insert these instructions.\n-- This adds an attribute to the BitmapText. These are stacked. self:AddAttribute( [starting point], {[attribute to add]} ) -- This removes all attributes applied on the BitmapText. self:ClearAttributes() Any time the BitmapText calls settext or its own text changes, all attributes assigned to it will be cleared and will need to be reapplied."},{"id":72,"href":"/dev/actors/actortypes/notefield/NoteField-InputManipulation/","title":"Input Manipulation","parent":"NoteField","content":"NoteField has multiple functions that allow for faking and manipulating input \u0026amp; judgments. Every function mentioned has a snake case alias.\nDidTapNote / DidHoldNote These two functions allow for forcing a noteflash on the columns.\nBoth functions take three parameters: Column (First column is 1), a TapNoteScore/HoldNoteScore and whether to use the \u0026ldquo;bright\u0026rdquo; variant. (\u0026ldquo;Bright\u0026rdquo; is what\u0026rsquo;s normally used when the current combo is over a certain threshold.)\nSetPressed Makes the NoteField act like the given column is pressed.\nThe function takes a column (First column is 1).\nStep Makes the NoteField act like a step happened on a given column.\nThe function takes a column (First column is 1), and a TapNoteScore enum.\nCallbacks A NoteField can have functions attatched to various actions.\nThe given callback function are allowed to return its\u0026rsquo; own values, which the NoteField will respect instead.\nPass nil into a set function to clear the callback function.\nSetDidTapNoteCallback / SetDidHoldNoteCallback\nRuns when a tap note is hit or a hold note is judged. The function is passed the column, score enum and the bright boolean. SetSetPressedCallback\nRuns when a press happens. The function is passed the column. SetStepCallback\nRuns when a step happens. The function is passed the column and a TapNoteScore enum. ","description":"NoteField has multiple functions that allow for faking and manipulating input \u0026amp; judgments. Every function mentioned has a snake case alias.\nDidTapNote / DidHoldNote These two functions allow for forcing a noteflash on the columns.\nBoth functions take three parameters: Column (First column is 1), a TapNoteScore/HoldNoteScore and whether to use the \u0026ldquo;bright\u0026rdquo; variant. (\u0026ldquo;Bright\u0026rdquo; is what\u0026rsquo;s normally used when the current combo is over a certain threshold.)\nSetPressed Makes the NoteField act like the given column is pressed."},{"id":73,"href":"/user-guide/setup/install/","title":"Installation","parent":"Setup","content":" System requirements Project OutFox has builds for Windows, macOS, and Linux. We also have specific builds for ARM-based Linux devices and Apple M1-based computers. It should run on just about any computer from the mid-2000s onward, depending on the operating system and hardware specifications. We have had alphas running on CPUs as old as the Pentium E2180.\nThe Windows build of Project OutFox requires Windows 7 or later. Windows XP builds are available for selected releases, which require Service Pack 3.\nParts of the game are so well-optimised now that they\u0026rsquo;re running too fast, and the rest of the game needs to catch up. We will have a proper fix later, but increasing the amount of background activity (i.e. having other programs running in the background, etc.) is a temporary solution.\nHow to install Project OutFox Download the installer or package for your respective operating system on the Project OutFox website.\nLinux \u0026 Raspberry Pi Mac OS Windows Next steps Once Project OutFox is installed, you can move on to setting the game up.\n","description":"System requirements Project OutFox has builds for Windows, macOS, and Linux. We also have specific builds for ARM-based Linux devices and Apple M1-based computers. It should run on just about any computer from the mid-2000s onward, depending on the operating system and hardware specifications. We have had alphas running on CPUs as old as the Pentium E2180.\nThe Windows build of Project OutFox requires Windows 7 or later. Windows XP builds are available for selected releases, which require Service Pack 3."},{"id":74,"href":"/user-guide/setup/install-linux/","title":"Installation on Linux \u0026 Raspberry Pi","parent":"Setup","content":" Important note Determining what version to download Installing the game Portable vs Non-portable mode Running the game Extra NoteSkins Common problems Missing libraries Audio not playing / going to the wrong device Needing to force ALSA instead of PulseAudio. Needing to force a different audio driver Arcade Machine Conversion With Pi LITBoard/Arduino Instructions Important note Do not extract or run the game as the root user. It\u0026rsquo;s considered very unsafe, and you will have permission issues.\nDetermining what version to download There are multiple versions for linux setups. Use uname -a in a terminal to find out what to download.\nFor example, the above output says x86_64, so the amd64 download would be used. (amd64 legacy would be used on older systems/linux distributions)\nRaspberry Pi users would use arm64v8 if uname shows \u0026ldquo;aarch64\u0026rdquo;, while arm32v7 would be used if uname has \u0026ldquo;armv7\u0026rdquo; in it.\nInstalling the game Project OutFox is currently distributed as .tar.gz files for linux distributions. Through a GUI Most distributions have a right click item in their file manager for extracting archives.\nIf the menu doesn\u0026rsquo;t have an option to extract the archive, open the file in your archive manager and extract it to somewhere convenient. (ex: the user\u0026rsquo;s home or Desktop directory)\nUsing \u0026#39;tar\u0026#39; Open a terminal and get to the directory the archive is in.\nRun this in your terminal, replacing the name of the archive file with what you named it.\ntar -xvf OutFox-5.3.0-alpha-4.9.9HF3b-amd64-legacy-date-20210809.tar.gz This should create a directory that holds the install of Project OutFox.\nPortable vs Non-portable mode When booting, the game looks for a file in its\u0026rsquo; root directory called portable.ini. If this file is found, the game switches to \u0026ldquo;portable\u0026rdquo; mode, which has all save data placed in the program\u0026rsquo;s root directory.\nOtherwise, the save data will be placed in .project-outfox in the user\u0026rsquo;s home directory.\nRunning the game Through a Launcher The following is an example launcher file named \u0026ldquo;Project OutFox.desktop\u0026rdquo;.\nCreate a file on the desktop with this name and base the contents on the section below.\n#!/usr/bin/env xdg-open [Desktop Entry] Type=Application Name=Project OutFox Icon=/home/mtk/Desktop/Icons/dance_icon.png Exec=/home/mtk/Desktop/OutFox/outfox Note that the Exec line is a full path to the OutFox executable, while the Icon line can be a full path to any png on the system.\nOnce created, the launcher can be double-clicked to run the game.\nThrough the terminal In the game\u0026rsquo;s root directory, type this into the terminal and press enter:\n./outfox This will start the game and have some extra output in the terminal that is usually seen in the logs.\nTo force a theme, run the following, replacing the theme name with the desired theme\u0026rsquo;s directory name.\n./outfox --theme=SM5-GrooveNights Extra NoteSkins The NoteSkinsSM5 directory in Appearance contains the noteskins that came with StepMania 5.1/5.0.12. The contents can be dragged into the NoteSkins directory if one wants to use the old noteskins.\nCommon problems Missing libraries The game might not launch if libraries are missing. ldd can be used to help determine what packages need to be installed without having to run the game multiple times.\nRun this in the game\u0026rsquo;s directory from a terminal to find what libraries are missing:\nldd outfox Here is example output from ldd:\nIn this example, libbz2.so.1.0 is missing.\nHere\u0026rsquo;s a list of what libraries it looks for and what Debian/Ubuntu/Fedora package it corresponds to. Most systems should have most of these already.\nLibrary name Debian/Ubuntu pacakge Fedora package libOpenGL.so.0 libopengl0 libglvnd-opengl libGLX.so.0 libglx0 libglvnd-glx libasound.so.2 libasound2 alsa-lib libjack.so.0 libjack-jackd2-0 jack-audio-connection-kit or pipewire-jack-audio-connection-kit libpulse.so.0 libpulse0 pulseaudio-libs libbz2.so.1.0 libbz2-1.0 bzip2-libs libusb-1.0.so.0 libusb-1.0-0 libusb1 or libusbx liblzma.so.5 liblzma5 xz-libs liblz4.so.1 liblz4-1 lz4-libs libFLAC.so.8 libflac8 flac-libs libogg.so.0 libogg0 libogg libvorbis.so.0 libvorbis0a libvorbis libvorbisenc.so.2 libvorbisenc2 libvorbis Audio not playing / going to the wrong device Be sure to check the SoundDevice preference.\nWhen the game boots, it writes the available audio devices into the logs and terminal output.\nAssuming the third device is where the audio should be, the whole line for SoundDevice should be SoundDevice=plughw:1,3.\nNeeding to force ALSA instead of PulseAudio. A wrapper program called pasuspender can be used to temporarilly disable pulseaudio and make OutFox use the ALSA drivers.\nIn the terminal, it would be used like this:\npasuspender ./outfox Needing to force a different audio driver Be sure to check the SoundDriver preference for forcing the audio driver.\nHere\u0026rsquo;s what can be put into the preference, and what it means\nPreference setting Audio Driver Pulse PulseAudio ALSA-sw ALSA, software renderer. JACK JACK Null No audio Arcade Machine Conversion With Pi LITBoard/Arduino Instructions In the terminal, navigate to the /Data folder of your Outfox installation.\nexample: cd /home/pi/Desktop/OutFox/Data\nCreate a FIFO file that Outfox will write to:\nmkfifo \u0026quot;StepMania-Lights-SextetStream.out\u0026quot;\nEnsure this FIFO file has the proper read/write permissions as the same account running Outfox.\nNext, navigate to the Outfox save folder. In most cases, this will be in your home directory and be something like .project-outfox:\ncd /home/pi/.project-outfox\nOpen up \u0026ldquo;Preferences.ini\u0026rdquo;:\nnano Preferences.ini\nScroll down to find a line that starts with LightsDriver= and change it to:\nLightsDriver=SextetStreamToFile\nPress crtl+o and hit return, then press ctrl+x to save the file and exit nano. We need to now make sure that something is going to use that file, otherwise you\u0026rsquo;ll find your system will eventually crash as that file fills up without getting emptied.\nMake sure that socat is installed on your pi:\nsudo apt install socat\nNext open up cron to have socat start at reboot by typing:\ncrontab -e\nAt the end of that window, add this line (replacing the path with the path to you FIFO file):\n@reboot socat \u0026quot;/home/pi/Desktop/OutFox/Data/StepMania-Lights-SextetStream.out\u0026quot; /dev/ttyUSB0,raw,echo=0,b155200 \u0026amp;\nPress crtl+o, return, ctrl+x to save and exit crontab. Notice the \u0026amp; at the end of the line. That\u0026rsquo;s important to let it run in the background. Otherwise your system will just sit there waiting for it to quit\u0026hellip;\nNext, create a launcher file that will run on startup. In order to do this, it should reside in the autostart folder of xdg. Easy way to do this is:\nnano /etc/xdg/autostart/OutFox.desktop\nWhen nano opens, put the following into the text file:\n#!/usr/bin/env xdg-open [Desktop Entry] Type=Application Name=Project OutFox Exec=/home/pi/Desktop/OutFox/outfox Ctrl+o, return, ctrl+x to save and exit the file. Make sure you also give it executable permission:\nchmod a+x /etc/xdg/autostart/OutFox.desktop\nNow if you reboot the pi, it should automatically load socat and OutFox for a session of great fun.\n(thanks to Random Hajile for the PiCab information)\n","description":"Important note Determining what version to download Installing the game Portable vs Non-portable mode Running the game Extra NoteSkins Common problems Missing libraries Audio not playing / going to the wrong device Needing to force ALSA instead of PulseAudio. Needing to force a different audio driver Arcade Machine Conversion With Pi LITBoard/Arduino Instructions Important note Do not extract or run the game as the root user. It\u0026rsquo;s considered very unsafe, and you will have permission issues."},{"id":75,"href":"/user-guide/setup/install-mac/","title":"Installation on Mac OS","parent":"Setup","content":" Note to users using \u0026ldquo;App Store Only Applications\u0026rdquo; Using this permission will make Gatekeeper revoke necessary permissions that Project OutFox needs to read the game content (Given the app loads files externally). So, if you are using this option instead of \u0026ldquo;App Store and Identified Developers\u0026rdquo;, change it before downloading the software.\nThis option can be found on System Preferences -\u0026gt; Security and Privacy -\u0026gt; \u0026ldquo;Allow apps downloaded from:\u0026rdquo;\nOpen the DMG file and drag the game to your Applications directory. Additional Notes Dequarantine Project OutFox from macOS (4.9.9 and below) ↕ On pre-digitally-signed builds, you will have to change macOS security settings in order for Project OutFox to operate correctly. macOS prevents access to external files by unsigned apps unless given manual permission by the user.\nTo do this, open Terminal and run the following command: xattr -dr com.apple.quarantine /path/to/outfox, replacing /path/to/outfox with the path to the directory containing the OutFox executable (manually typing it out, or dragging the folder containing the game executable directly onto the window to fill it automatically). If no errors show up after pressing enter, then you’re ready to start the game.\nOn older builds, macOS Catalina also generated a message stating that the game was requesting permission to receive keystrokes from any application. This was a side effect of previous code that has since been removed.\n","description":"Note to users using \u0026ldquo;App Store Only Applications\u0026rdquo; Using this permission will make Gatekeeper revoke necessary permissions that Project OutFox needs to read the game content (Given the app loads files externally). So, if you are using this option instead of \u0026ldquo;App Store and Identified Developers\u0026rdquo;, change it before downloading the software.\nThis option can be found on System Preferences -\u0026gt; Security and Privacy -\u0026gt; \u0026ldquo;Allow apps downloaded from:\u0026rdquo;"},{"id":76,"href":"/user-guide/setup/install-windows/","title":"Installation on Windows","parent":"Setup","content":"Windows builds of Project OutFox use an installer; follow the instructions, and launch the game using the provided shortcuts.\nIt is recommended that you do not install it to the Program Files directory, as this is known to cause problems. The installer offers optional components, such as the noteskins that were included with StepMania 5.0.12 and 5.1, and \u0026ldquo;Toasties\u0026rdquo; - animations that can trigger on combo milestones in-game. By default, the game is installed in \u0026ldquo;Portable Mode\u0026rdquo;; save data is stored in the installation directory. If you disable portable mode, your save data will be stored in your user directory under %APPDATA%\\Project OutFox. If your log file (Installation directory/Logs) shows WDDM1.0 or WDDM1.1 at the end of the graphics card name (i.e. \u0026ldquo;Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0)\u0026rdquo;) or the log shows \u0026ldquo;Microsoft GDI\u0026rdquo; as the renderer, then you are running the OpenGL-crippled \u0026ldquo;Windows\u0026rdquo; driver that is downloaded on a fresh install. Project OutFox will not work on these drivers, as we do not support DirectX anymore (the old D3D renderer that 5.0.12/5.1 has) There is a list of drivers at here but for some of these cards, you need to keep your Windows 7 install disc handy!\n","description":"Windows builds of Project OutFox use an installer; follow the instructions, and launch the game using the provided shortcuts.\nIt is recommended that you do not install it to the Program Files directory, as this is known to cause problems. The installer offers optional components, such as the noteskins that were included with StepMania 5.0.12 and 5.1, and \u0026ldquo;Toasties\u0026rdquo; - animations that can trigger on combo milestones in-game. By default, the game is installed in \u0026ldquo;Portable Mode\u0026rdquo;; save data is stored in the installation directory."},{"id":77,"href":"/user-guide/setup/key_shortcuts/","title":"Keyboard Shortcuts","parent":"Setup","content":"Project OutFox has quite a few keyboard shortcuts to make certain tasks easier.\nGlobal Shortcuts These shortcuts work everywhere in OutFox unless otherwise specified (or used in another section).\nF1: Insert Coin\nF2: Reload metrics, textures, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+F2: Reload theme scripts (Does nothing in edit mode)\nShift+F2: Reload metrics, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+Shift+F2: Reload overlay screens \u0026amp; metrics (Does nothing in edit mode)\nF3: Show debug menu Scroll Lock: Operator Button (Go directly to the theme\u0026rsquo;s operator menu screen. Will not work if the current screen doesn\u0026rsquo;t allow the operator menu button)\n~ (tilde): Broadcasts \u0026ldquo;ToggleConsoleDisplay\u0026rdquo; globally\nPrintScreen: Take a screenshot\nShift+PrintScreen: Take a high quality screenshot (If HighRes Screenshots are off by default)\nShift+PrintScreen: Take a low quality screenshot (If HighRes Screenshots are on by default)\nAlt+Enter: Toggle fullscreen\n` (accent): Slow the game\u0026rsquo;s tweens down Tab: Speed the game\u0026rsquo;s tweens up\nPauseBreak: Toggle \u0026ldquo;Mute Actions\u0026rdquo;\nEditor Shortcuts These shortcuts only work in the edit screens. All Edit Modes Up: Scroll up one \u0026rsquo;line\u0026rsquo; (If 4ths are selected, you go up one 4th, if 8ths are selected, you go up one 8th, etc.)\nDown: Scroll down one \u0026rsquo;line'\nF1: Show the help menu\n; (semicolon) / PageUp: Scroll up by 4 beats\n\u0026rsquo; (apostrophe / single quote) / PageDown: Scroll down by 4 beats\nCtrl+; (semicolon) / Ctrl+PageUp: Scroll up by the number of beats in a measure\nCtrl+\u0026rsquo; (apostrophe / single quote) / Ctrl+PageDown: Scroll down by the number of beats in a measure\nHome: Scroll up to beat 0\nEnd: Scroll down to the last beat of the chart\n. (period): Scroll down to next note in the chart\n, (comma): Scroll up to previous note in the chart\nCtrl+. (period): Scroll down to next chosen chart segment type in the chart\nCtrl+, (comma): Scroll up to previous chosen chart segment type in the chart\nShift+Up / Shift+Down: Create a section from where shift was held\nSpace: Set the start and stop points of a selection\np: Play the selected section of the chart (plays from start if no selection)\nCtrl+p: Play the chart from the start\nShift+p: Play the chart from the current beat\nEsc / Start / Enter / Back: Open the edit menu (When previewing the chart)\nEsc / Start / Enter / Back: Exit the play mode (When practicing / recording / playing the chart)\nPractice Mode Up: Scroll up one measure (Overrides all other modes)\nDown: Scroll down one measure (Overrides all other modes)\nLeft: Lower the scroll speed\nRight: Raise the scroll speed\nCourse / Mods Edit Mode Left: Go to the higher snap (8th to 4th, etc.)\nRight: Go to the lower snap (4th to 8th, etc.)\nFull Edit Mode F4: Show timing menu\nF5: Move to the previous chart for the Song\nF6: Move to the next chart for the Song\nF7: Lower BPM at current beat\nF8: Raise BPM at current beat\nF9: Decrease stop length at current beat\nShift+F9: Decrease delay length at current beat\nF10: Increase stop length at current beat\nShift+F10: Increase delay length at current beat\nF11: Decrease beat 0 offset\nF12: Increase beat 0 offset\n[: Decreases the music sample\u0026rsquo;s starting point\n]: Increases the music sample\u0026rsquo;s starting point\nShift+[: Decreases the music sample\u0026rsquo;s length\nShift+]: Increases the music sample\u0026rsquo;s length\nl: Play the sample music for the song.\nb: Open the Background Change menu for layer 1\nShift+b: Open the Background Change menu for layer 2\nCtrl+Insert: Shifts all timing changes down\nCtrl+Delete: Deletes timing segments and shifts the later ones up to the beginning of the deleted areas\nq: Decrease the amount of time a column has to be held to create a hold in record mode\nw: Increase the amount of time a column has to be held to create a hold in record mode\ne: Reset the amount of time a column has to be held to create a hold in record mode\nr: Turn off the ability to create a hold in record mode\n0-9: add notes to columns 1-10 (holding while pressing Up / Down creates a hold)\nAlt+0-9: add notes to columns 11-20 (holding while pressing Up / Down creates a hold)\nShift while creating a hold: Create a roll\nn: Switch to the previous note type\nm: Switch to the next note type\nCtrl+n: Switch to the previous segment type\nCtrl+m: Switch to the next segment type\nCtrl+Up: Increase the scroll speed\nCtrl+Down: Decrease the scroll speed\nLeft: Go to the higher snap (8th to 4th, etc.)\nRight: Go to the lower snap (4th to 8th, etc.)\nEnter (when not in a menu): Open the area menu\na: Open the alter menu\nAlt+b: Bake in a random video from the song group\nCtrl+b: Bake in a random video from the song\u0026rsquo;s group or genre\nCtrl+r: Go into record mode for the selected area\nInsert / \\(backslash): Inserts a beat and shifts everything after down\nDelete: Deletes a note/selection, and shifts the later notes up to where the deleted note/start of deleted section was\nHolding Alt when adjusting a value: Use a smaller adjust amount\nCtrl+s: Save (Windows, Linux, Pi, etc.)\nMeta+s: Save (Mac OS)\nu: Undo the last action\n/ (slash): switch which player is being charted for in a couples chart\nt: Switch between chart timing and song timing\nAlt (during Record mode): Remove notes\nShift (during Record mode): Add rolls\np (During Record Paused mode): Play selection\nr (During Record Paused mode): Record from the current beat\nCtrl+r (During Record Paused mode): Record the selection\nGameplay Shortcuts These shortcuts only work in gameplay screens.\nF4: Revert sync changes\nF6: Autosync\nF7: Toggle Assist Tick\nShift+F7: Toggle Metronome\nF8: AutoPlay (+Alt = hide autoplay text)\nShift+F8: AutoPlayCPU (+Alt = hide autoplay text)\nF9: Decrease song BPM\nF10: Increase song BPM\nF11: Decrease global offset\nShift+F11: Decrease song offset\nF12: Increase global offset\nShift+F12: Increase song offset\nMusic Wheel Shortcuts These shortcuts only work in the music wheel screen.\nF9: Toggle between actual titles and transliterated titles.\nCtrl+Shift+r: reload the currently selected song\nCtrl+a-z: Sort the songs by letter and go to the group of all songs that start with that letter.\nCtrl+Backspace: Delete the song from the system. (Actually deletes from the drive!)\nCtrl+Shift+Backspace: Delete the selected chart from the system.\n","description":"Project OutFox has quite a few keyboard shortcuts to make certain tasks easier.\nGlobal Shortcuts These shortcuts work everywhere in OutFox unless otherwise specified (or used in another section).\nF1: Insert Coin\nF2: Reload metrics, textures, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+F2: Reload theme scripts (Does nothing in edit mode)\nShift+F2: Reload metrics, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+Shift+F2: Reload overlay screens \u0026amp; metrics (Does nothing in edit mode)"},{"id":78,"href":"/dev/mode-support/ksf-support/","title":"KSF","parent":"NoteLoader support","content":"Project OutFox contains a parser for the KSF chart format, which is used for Kick It Up and \u0026lsquo;Pump it Up\u0026rsquo;-style charts. This has been supported as early as StepMania 3.9, so everything listed here is what OutFox supports. At this point, most everyone has moved away from the KSF format in favor of SM or SSC. Like SM and SSC, sections follow this format: #SECTION:DATA;, which means #, : and ; shouldn\u0026rsquo;t be used in the data segment.\nFile Naming Most KSF files have the difficulty and chart type as its\u0026rsquo; file name. The following tables show what names translate to which difficulty, default rating and chart type\nDifficulty File Name Chart Rating StepMania 5.1 and older Project OutFox alpha 4.9.9 another 25 Edit D6 wild / wd / hardcore 20 Challenge D5 crazy+ / cz+ 20 Challenge D5 crazy / cz / crazydouble 14 Hard D4 nightmare / nm 14 Hard D4 hard / hd / double 8 Medium D3 freestyle / fs 8 Medium D3 easy / ez / normal 4 Easy D2 Beginner / practice 4 Beginner D1 If not specified, it gets set to Hard/D4 and is given a rating of 10.\nChart Type File Name Resulting Steps Type halfdouble / half-double / h_double / hdb halfdouble double / db double freestyle / fs double nm double _1 single _2 couple Sections TITLE This gives both the song name and artist. There are three acceptable formats for this section:\nsong name This just gives a song name only. artist name - song name This gives both a song name and artist name, separated by a - artist name - song name - difficulty This gives both a song name, artist name and difficulty, separated by a -. In this case, the difficulty is ignored, since it\u0026rsquo;s read from the file name instead. Example:\n#TITLE:L.F.O; With artist \u0026amp; title:\n#TITLE:aran - L.F.O; TICKCOUNT Sets the starting tick count for the file. This specifies how many lines of notes is needed to pass one beat.\nFor example: a tick count of 4 means 4 lines of notes are needed for a whole beat, allowing for 16ths.\nExample:\n#TICKCOUNT:4; BPM This defines the starting BPM.\nExample:\n#BPM:135.01; BPM2 / BPM3 Kick It Up uses these to define the BPMs to change to. You can have up to two BPM changes.\nExample:\n#BPM2:164; #BPM3:174; BUNKI / BUNKI2 Kick It Up uses these to handle the positioning of BPM changes. You can have up to two BPM changes.\nThis is specified in centiseconds in SM.\nExample:\n#BUNKI:2000; #BUNKI2:6500; DIFFICULTY Sets the rating of the chart. Otherwise, values from the Difficulty secion above are used.\nExample:\n#DIFFICULTY:7; STARTTIME Sets the beat 0 offset of the chart. SM interprets this in centiseconds.\nExample:\n#STARTTIME:829; STARTTIME2 / STARTTIME3 Kick It Up uses these to help ensure more accurate BPM changes. STARTTIME3 is ignored in SM.\nExample:\n#STARTTIME2:9; #STARTTIME3:0; PLAYER From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nIf \u0026ldquo;double\u0026rdquo; is found, the file is marked as a doubles chart.\nExample:\n#PLAYER:DOUBLE; or\n#PLAYER:SINGLE; MUSICINTRO / INTRO From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the start point of the music sample. It\u0026rsquo;s parsed in HH:MM:SS format\nExample:\n#MUSICINTRO:1:20; TITLEFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the background location of the song.\nExample:\n#TITLEFILE:CoolTitle.png; DISCFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the banner location of the song.\nExample:\n#DISCFILE:FunnyDisc.png; SONGFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the file name of the song\u0026rsquo;s audio.\nIf not specified, the game looks for an audio file named \u0026ldquo;song\u0026rdquo; in the same folder as the KSF.\nExample:\n#SONGFILE:SweetTunes.mp3; #STEP: This is the notedata of the file.\nNotedata specs Each row of notes is 13 characters long, with all 2s marking the end of the chart.\nIf any holds are unfinished at that point, they automatically capped off at the end of the chart.\nFor half-doubles, the first two columns are always 0.\nNote types Character Note Type Quirks 0 empty N/A 1 Tap Note N/A 4 Hold Note The hold finishes upon the first non-4 character in the column. M / m Mines N/A F / f Fake Note N/A L / l Lift Note N/A Example:\n#STEP: 1000010000000 0010000400000 0000000400000 0000000400000 2222222222222 Segment types Direct Move 0.5 had segment definitions to allow for more extendable charting.\n|Tn| Sets the tick count at the current beat.\nExample: |T512| sets the tick count to 512.\n|Bn| Sets the BPM at the current beat.\nExample: |B128.5| sets the BPM to 128.5.\n|En| Sets a delay segment at the given beat for n beats\nExample: |E12| Makes a 12 beat delay segment.\n|Dn| Sets a delay segment at the given beat for n miliseconds\nExample: |D1000| Makes a 1000 milisecond (1 second) delay segment.\n|Mn| / |Cn| Sets the combo multiplier at the given beat\nExample: |M2| sets the combo multiplier to 2.\n|Xn| Sets the scroll segment at the current beat.\nExample: |X3| sets the scroll to 3x.\nWritten and Maintained with ♡ by MTK\n","description":"Project OutFox contains a parser for the KSF chart format, which is used for Kick It Up and \u0026lsquo;Pump it Up\u0026rsquo;-style charts. This has been supported as early as StepMania 3.9, so everything listed here is what OutFox supports. At this point, most everyone has moved away from the KSF format in favor of SM or SSC. Like SM and SSC, sections follow this format: #SECTION:DATA;, which means #, : and ; shouldn\u0026rsquo;t be used in the data segment."},{"id":79,"href":"/dev/actors/actortypes/model/Model-LoadingMoreBones/","title":"Loading Additional Bones","parent":"Model","content":"Starting on Project OutFox Alpha 4.1, Models can now load more than one bone at a time to playback different animations on demand. For this, it is suggested to separate the bone animation data to a separate text file, to not have repeat model data on each animation file, the parser already deals with the job of only loading bone data.\nTo add a new animation to the model, use the LoadBones command. It requires a name for the animation, and a relative path to the animation file.\n-- This will load a animation called \u0026#34;WarmUp\u0026#34; to the model. self:LoadBones( \u0026#34;WarmUp\u0026#34;, \u0026#34;Warm1.txt\u0026#34; ) When the need for using the new animation arrives, use the playanimation command to start it.\n-- Since the previous animation loaded that was recently added was called \u0026#34;Warmup\u0026#34;, we\u0026#39;ll use that -- as the argument to use. The second value determines the speed scale of the animation. self:playanimation( \u0026#34;Warmup\u0026#34;, 1 ) In some cases, you may want to use existing dancing data that you might have on a particular character. Given this, you can load directly from it, by loading your character model from the CHARACTER\u0026rsquo;s GetModelPath() and render it to the scene.\nThen when the need comes to add animation data, use the LoadBones command to load additional bones, in which you can still use the Character\u0026rsquo;s functions to get specific animation files like a Break, Warmup or Dance animation.\n-- Store a random character that will be used on the model object below. -- This will look for any available characters on the \u0026#39;Characters\u0026#39; folder -- on the root directory of the game. -- If none are found, it will report back as null, so remember to check for its validity. local randomCharacter = CHARACTER:GetRandomCharacter() return Def.Model{ -- In this example, we\u0026#39;ll load the animation data on demand, so -- it won\u0026#39;t be added during construction, but in the OnCommand. Meshes=randomCharacter:GetModelPath(), Materials=randomCharacter:GetModelPath(), Bones=randomCharacter:GetModelPath(), OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) -- Now let\u0026#39;s load a bone animation from the character to the model. We\u0026#39;ll use a dancing animation. -- There are functions available to obtain the path for each area for the animation types, -- so in order to choose one at random, we need to convert this into a table that contains the available -- animations. local danceAnims = FILEMAN:GetDirListing( randomCharacter:GetDanceAnimationPath() ) -- Load the random input from the table to the model. self:LoadBones( danceAnims[ math.random(1,#danceAnims) ], \u0026#34;dance\u0026#34; ) -- now play the animation. self:playanimation(\u0026#34;dance\u0026#34;,1) end } ","description":"Starting on Project OutFox Alpha 4.1, Models can now load more than one bone at a time to playback different animations on demand. For this, it is suggested to separate the bone animation data to a separate text file, to not have repeat model data on each animation file, the parser already deals with the job of only loading bone data.\nTo add a new animation to the model, use the LoadBones command."},{"id":80,"href":"/dev/actors/actortypes/sprite/Frames/","title":"Managing Frames","parent":"Sprite","content":"The frames in a sprite are composed of an array containing arrays of two values, Frame and Delay. These describe what frame in a spritesheet the actor should focus on and for how long in seconds.\nSprites that use a video file do not apply for this guide, as the sprite only recognizes it as a single frame, given it\u0026rsquo;s now using FFMpeg to handle playback of said video. For this, you\u0026rsquo;ll need to obtain the Sprite\u0026rsquo;s RageTexture and use the position function, which handles its value in seconds.\nself:GetTexture():position( --[[Time in secs]] ) As an example to demonstate each sprite table, we\u0026rsquo;ll utilize the fox from the staff roll.\nStandard format Utilizing Sprite.LinearFrames Utilizing SetAllStateDelays on existing frames Utilizing SetStateProperties Standard format Frames = { { Frame = 0, Delay = 0.1 }, { Frame = 1, Delay = 0.1 }, { Frame = 2, Delay = 0.1 }, { Frame = 3, Delay = 0.1 } }, In this example, we\u0026rsquo;re creating an animation of 4 frames (these are 0-indexed), that will last 0.4 seconds total, given the sum of each Delay.\nUtilizing Sprite.LinearFrames This is a helper function inside the Sprite namespace that facilitates the creation of the Frames table, by automating the creation of the table with just 2 arguments, the amount of frames to use, and how long in general the animation will be.\nFrames = Sprite.LinearFrames( 4, 2 ) -- Will return --[[ { { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 3, Delay = 0.5 }, }, ]] Utilizing SetAllStateDelays on existing frames This function can be utilized to update all delay amounts of the current frames in the sprite on the fly.\nIn the example, I have a sprite that already loads a sprite that has 4 frames, and plays on 0.1 second delays, making the animation on the top of the page, but now we want to make it slightly slower.\nFrames = { { Frame = 0, Delay = 0.1 }, { Frame = 1, Delay = 0.1 }, { Frame = 2, Delay = 0.1 }, { Frame = 3, Delay = 0.1 } }, OnCommand=function(self) self:SetAllStateDelays(0.5) end before\nafter\nUtilizing SetStateProperties The SetStateProperties function can be utilized to update frame information on a sprite on the fly, by updating the entire table.\nIn this example, let\u0026rsquo;s assume that the current sprite has the table describe above, and now we want to update the sprite to only show two frames of animation instead of 4. In this case, we just need to return a table into the function that only has the two frames.\nself:SetStateProperties({ { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 } }) ","description":"The frames in a sprite are composed of an array containing arrays of two values, Frame and Delay. These describe what frame in a spritesheet the actor should focus on and for how long in seconds.\nSprites that use a video file do not apply for this guide, as the sprite only recognizes it as a single frame, given it\u0026rsquo;s now using FFMpeg to handle playback of said video. For this, you\u0026rsquo;ll need to obtain the Sprite\u0026rsquo;s RageTexture and use the position function, which handles its value in seconds."},{"id":81,"href":"/dev/actors/actortypes/actor/obtainlevels/","title":"Obtaining Childs and ActorFrame Levels","parent":"Actor","content":"When using Actors, you can use self:GetParent() and self:GetChild() to get elements from other ActorFrames or Actors. self:GetChild() can only be used by ActorFrames. You can think of an ActorFrame as a tree of objects. This is the original table. And now you\u0026rsquo;ve called GetParent on the ActorProxy. Def.ActorFrame{ Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, * Def.ActorProxy{ OnCommand=function(self) self:GetParent() end }, } graph LR AF[Def.ActorFrame] --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy) style AF stroke-width:4px style BT stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px When calling it, you go back up a level, which in this case, it will become ActorFrame. graph LR AF(Def.ActorFrame) --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy); style AF fill:#585,color:#fff,stroke-width:4px style BT stroke-width:4px style AP stroke-width:4px In this new location, we get the MyText actor, which can be achieved by calling the GetChild command, and can also return back to the ActorProxy, as we\u0026rsquo;re now in a level that can get both actors (shown in orange). Def.ActorFrame{ * Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, Def.ActorProxy{ OnCommand=function(self) self:GetParent():GetChild(\u0026#34;MyText\u0026#34;):spin() end }, } graph LR AF(Def.ActorFrame ) --\u003e BT(Def.BitmapText) \u0026 AP(Def.ActorProxy); style AF fill:#f85,color:#fff,stroke-width:4px style BT fill:#585,color:#fff,stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px The command uses a String argument, but can also grab from nested tables in case of an ActorFrame not having actors with names assigned. On those cases, actors are just indexed on that ActorFrame set.\nExample Without Names Def.ActorFrame{ OnCommand=function(self) -- If we want to get to the BitmapText, we\u0026#39;ll need to get -- the second entry on the ActorFrame. self:GetChild(\u0026#34;\u0026#34;)[2] -- returns the BitmapText actor. end, Def.Sprite{}, Def.BitmapText{} } Example With Names Def.ActorFrame{ OnCommand=function(self) -- If we want to get to the BitmapText, -- we\u0026#39;ll need to get the \u0026#34;Text\u0026#34; actor. self:GetChild(\u0026#34;Text\u0026#34;) -- returns the BitmapText actor. end, Def.Sprite{ Name = \u0026#34;Image\u0026#34; }, Def.BitmapText{ Name = \u0026#34;Text\u0026#34; } } ","description":"When using Actors, you can use self:GetParent() and self:GetChild() to get elements from other ActorFrames or Actors. self:GetChild() can only be used by ActorFrames. You can think of an ActorFrame as a tree of objects. This is the original table. And now you\u0026rsquo;ve called GetParent on the ActorProxy. Def.ActorFrame{ Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, * Def.ActorProxy{ OnCommand=function(self) self:GetParent() end }, } graph LR AF[Def.ActorFrame] --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy) style AF stroke-width:4px style BT stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px When calling it, you go back up a level, which in this case, it will become ActorFrame."},{"id":82,"href":"/dev/mode-support/oto-support/","title":"OTO Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on a new OTO notesloader that supports the .osu (Osu) chart format, which is the standard format used in conjunction with the kb and taiko game types. The following page contains details on the .osu parsing options that Project OutFox currently supports. This is a living document - it will be updated as time allows and we add the support or features within.\nThis documentation exists as a mental \u0026rsquo;layout\u0026rsquo; for me to learn about the format and how best to parse it for the way OutFox needs. It will be updated in a few segments - There may be errors, but do let me know so i can update and clarify them, thanks for joining me on this ride! - (Squirrel)\nWe are calling it the OTO parser as we chose to follow the Osu Tatakae Ouendan name.\nOTO Notedata support as of Alpha 4.12.0 - IN PROGRESS We have a partially working implementation of Mode 3 (Mania)! Trivia .osu is a format containing information about Osu beatmaps, which confusingly contain charts for other game modes as well. We use the term chart around the Scrolling Rhythm Game genre, because we do not use specific co-ordinates like on a map. The Osu Tatakae Ouendan mode uses both x and y mapping for the circles, curves and spinners etc, so this is why a lot of players who play the game call the other modes\u0026rsquo; charts beatmaps, because of the original game.\nAlthough catch, taiko and mania do not use co-ordinate systems, similar to almost all the other modes in OutFox, they inherit the beatmap definition by players of the game.\nThroughout this page, we will be using the chart term, as we do not support the Osu Tatakae Ouendan (Mode=0) mode, as we have no way of mapping the circles/hit objects to the screen at this time.\nLayout .osu files are constructed using sections which contain content within to describe and give information about the map or chart detailed within. Each file will only contain one set of data; it is not like SSC or DTX which can contain several charts.\nMost beatmap artists will include different difficulty levels to what they have created, usually with different mode support in some cases. This allows access to different skill levels and more availability to players, as not everyone is highly competitive or have the means to play one specific mode.\nBasic Format The .osu file format describes how notes are arranged and how the game is meant to behave if/when a player takes a specific action. It is usually a simple plain text file with the command lines made up of key:value pairs.\nPlease note! There are 3 layouts to the pairs, which will be explained further down in the page, so if you are parsing this file, do take note about the spaces around the pairs.\nThe format consists of 8 different sections which detail specifics about the chart. We will be going through in detail on the most commonly used commands and features of this format on this page. We will not be supporting editing or creating this format; The support in OutFox is parse (read) only.\nSection What it\u0026rsquo;s for Command / Content type Supported? [General] Chart general information key: value pairs Yes, Some [Editor] Settings saved from the Osu editor key: value pairs Ignored [Metadata] Song Information (title/artist etc) key:value pairs Yes [Difficulty] Osu difficulty settings key:value pairs Some. CircleSize / KeyCount [Events] Osu graphical events comma separated values Only Background [TimingPoints] Timing and Control Points comma separated values Yes, Some [Colours] Settings for the artist to change combo or theme colours key : value pairs Ignored [HitObjects] Hit Objects / Note Types and Holds comma separated values Yes, Some File Format Layout osu file format vn [1 - 14] Status: ✅ Supported\nUsage Example:\nosu file format v14 This value is at the very beginning of the file, and sets the version of the specification that the file uses. As of January 2022, This is Version 14.\nThis variable is used in OutFox just to check for the supported version (charts under version 5 are not supported).\n[General] Section An example of the layout of this section is below. There are several items not included on most charts, but we will cover all of the values you may see in a file so to avoid confusion. Like with the other loader support pages, it is better to be complete than omit things. The commands for this section are done as Command: Value. Do note the space!\nThis section covers settings and options for the chart and game-play screen. As OutFox has a very different setup and internal system, most of the options in this section do not apply. It\u0026rsquo;s here primarily for completeness and to explain what bits do.\n[General] AudioFilename: audio.mp3 AudioLeadIn: 0 PreviewTime: 35841 Countdown: 0 SampleSet: Soft StackLeniency: 0.8 Mode: 3 LetterboxInBreaks: 0 CountdownOffset: 0 SpecialStyle: 0 WidescreenStoryboard: 1 AudioFilename: filename [string] Status: ✅ Supported\nUsage Example:\nAudioFilename: song.mp3 This entry in the list tells the game what music file to use for the chart. It will be case sensitive on Linux/Mac so bear this in mind if you have a chart which cannot find it\u0026rsquo;s music file, this will be the issue.\nThis variable is equivalent to the #MUSIC entry on SM/SSC files.\n#MUSIC:song.mp3; AudioLeadIn: n [0-212] Status: ❌ Ignored (Unsupported)\nUsage Example:\nAudioLeadIn: 0 This entry in the list tells the game the number of milliseconds of silence to add before the first sample of the music that plays. It is used for effects or to prepare players for the beginning of the chart, however with how OutFox does timing, this would act more as an offset, and our clock system does not work in milliseconds.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nPreviewTime: n [time in ms] Status: ✅ Supported\nUsage Example:\nPreviewTime: 35841 This value tells the game the time in milliseconds to play the preview section of the song in the music wheel. There is no separate option for a preview file in this format, so it uses a time offset based on the music file detailed in the AudioFilename entry.\nUnlike SM/SSC there is no #SAMPLELENGTH in this format that tells the game to loop or reset the point of playback. It will fall back to the default 15 second length when parsing.\nTo make this variable compatible with OutFox it needs to be divided by 1000 to get the seconds value, as per the #SAMPLESTART SM/SSC variable.\n#SAMPLESTART:35.841; Countdown: n [0-3] Status: ❌ Ignored (Unsupported)\nUsage Example:\nCountdown: 0 The countdown happens before the beginning of the first hit object or note, allowing the option to \u0026lsquo;ready\u0026rsquo; the player before the song starts. This option allows the chart author to set 4 different speed values. Most modern day charts set this to 0 (disabled).\n0 = Set the countdown to be disabled, so the chart will begin as soon as everything loads. 1 = Set the countdown to be normal, thus adding a 3, 2, 1\u0026hellip;GO! option that happens before the music plays. This only happens if there is an offset before the beginning from what the documentation says, so it is not always guaranteed. 2 = Sets a half speed countdown; one that is half the speed of 1. 3 = Sets a double speed countdown; one that is double the speed of 1. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nSampleSet: set [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSampleSet: Normal This variable allows for the chart artist to specify a selection of sound samples to be used when setting a hit object. These sounds play when an object (note) is hit, much like keysounds in BMS or DTX modes.\nThe definition seems to imply that there are 3 base types that can be set for the whole song, and one can also change this variable in the [HitObjects] and the [TimingPoints] sections described further down.\nOutFox will honour specific hitsounds as keysounds in modes that support them, but at this time we do not have a custom sound sample pack for this command. If you wish to have this supported, do let us know for consideration!\nNormal = Set the sound sample packs to normal. Soft = Set the sound sample packs to softer less distracting sounds. Drum = Set the sound sample packs to drum based sounds. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nStackLeniency: n.n [0.0-1.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nStackLeniency: 0.7 StackLeniency is used in the Osu Tatakae Ouendan mode to \u0026lsquo;stack\u0026rsquo; circles upon one another if they are in the same place (or within a few osupixels) as one previously drawn on the screen.\nThere is some confusion as to what this modifier actually does, and it seems this is a multiplier in time, most likely from 0-1 seconds, so the closer to 1.0 the more likely you will have a stack of circles, (which will have a number within to show the number of circles one needs to hit).\nAs the stack leniency heads towards 0 there is less chance of the \u0026lsquo;multitap\u0026rsquo; circles forming on the notefield so this I believe is what the variable is for.\nOutFox does not support the Osu Tatakae Ouendan mode, so this variable is ignored.\nIf there is anyone out there with a better/more comprehensive explanation of this variable, I\u0026rsquo;d love to have it so we can update it here. This is just my rough guess on seeing it in game - Squirrel\nThis variable has no equivalent SM/SSC value.\nMode: n [0-3] Status: ✅ Supported\nUsage Example:\nMode: 1 This command sets the game mode the chart (or map) is for.\n0 = Sets the mode to circles, the basic Osu Tatakae Ouendan mode. The file is a beatmap with correct co-ordinates. Status:❌ Unsupported 1 = Sets the mode to taiko, a drum based game. The file is a note chart with adapted variables, drumrolls and denden multihit notes. These charts will be selectable in the Outfox taiko gamemode. Status:✅ Supported 2 = Sets the mode to catch, a vertical item drop game. The file is a item chart with adapted variables. Status:❌ Unsupported 3 = Sets the mode to mania, a vertical scrolling note game. The file is a note chart with adapted variables and holds. These charts will be selectable in the Outfox kb gamemode. Status:✅ Supported This variable has no equivalent SM/SSC value.\nLetterboxInBreaks: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nLetterboxInBreaks: 0 This command controls an [Effect], such as a background or a video. Setting this to 1 will add a cinematic \u0026rsquo;letterbox\u0026rsquo; (black bars) within the edges of the screen.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nUseSkinSprites: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nUseSkinSprites: 0 This command controls a [Storyboard] setting, which sets whether or not the storyboard script can use the image files for the skin in use.\nOutFox does not plan to implement the [Storyboard] feature as we have a modding system built in already, so this setting is ignored.\nThis variable has no equivalent SM/SSC value.\nOverlayPosition: position [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nOverlayPosition: NoChange This command affects the readability of hit circles in Osu Tatakae Ouendan mode. It allows the chart author to control how the overlays (the circle animations or hit animations) are drawn. This can make the \u0026rsquo;numbers\u0026rsquo; within the circle easier to see, as well as making stacks work slightly better for those with colour issues.\nNoChange = Sets the mode to the default. Below = Sets the mode to draw the effects below the numbers. This makes the value easier to read. Above = Sets the draw above the numbers. Can affect how easy it is to read, but does look cool. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nSkinPreference: preference [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSkinPreference: Ice This command allows the chart author to select a custom \u0026lsquo;skin\u0026rsquo; (theme) to use when the chart is played. This allows for a new level of immersion if your charts are based on a subject type or theme.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nEpilepsyWarning: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nEpilepsyWarning: 0 This command controls an option to show a setting to warn about flashing colours or lights before the song plays.\nThis variable has no equivalent SM/SSC value.\nCountdownOffset: n [0-256] Status: ❌ Ignored (Unsupported)\nUsage Example:\nCountdownOffset: 28 This command sets the time (in beats) that the countdown starts before the first hit object or note.\nThis variable has no equivalent SM/SSC value.\nSpecialStyle: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSpecialStyle: 0 This command sets a different key layout named \u0026lsquo;N+1\u0026rsquo; for mania mode. This option is not used as apparently this can be set within the options of the actual game. Setting this requires compatible noteskins / skins to be available, and a suitable mode layout or it can render the song unplayable on the client due to missing assets.\nThis is not available in Outfox as keys can be assigned as required by the player.\nThis variable has no equivalent SM/SSC value.\nWidescreenStoryboard: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nWidescreenStoryboard: 0 This option sets the [Storyboard] as available to be viewed as widescreen on systems that support it or not. The default is 4:3 for normal play, due to the osupixels 640x480 setup\nThis variable has no equivalent SM/SSC value.\n[Editor] Section This section contains entries for the editor of Osu so won\u0026rsquo;t be used or processed in OutFox.\n[Metadata] Section This section details the main song metadata used in the chart or beatmap that is used when caching, being used in the music wheel, saving scores, and online profiles.\nOutFox does not have some of those features yet as they are being built, but almost all of this section is used in some way within our caching, scoring and music wheel system.\nThe commands for this section are done as Command:Value. Do note the lack of spaces!\n[Metadata] Title:My Great Song TitleUnicode:私の素晴らしい歌 Artist:OutFox Sound Team ArtistUnicode:「OutFox」音楽 Creator:Squirrel Version:OutFox Easy Mod File 2021 Source:Serenity Volume 2 Tags:japanese j-pop modfile BeatmapID:0123456789 BeatmapSetID:0987654 Title:title [string] Status: ✅ Supported\nUsage Example:\nTitle:My Great Song This entry in the list tells the game what the song title is for this chart in roman form.\nOn OutFox this entry is usually the transliterated (translation) of the title, so we will be parsing this as that entry. If there is no TitleUnicode entry it will use this as the title.\nThis variable is equivalent to the #TITLETRANSLIT entry on SM/SSC files.\n#TITLETRANSLIT:My Great Song; TitleUnicode:title [string] Status: ✅ Supported\nUsage Example:\nTitleUnicode:私の素晴らしい歌 This entry in the list tells the game what the song title is for this chart in utf8.\nOn OutFox this entry is usually the original title, so we will be parsing this as that entry.\nThis variable is equivalent to the #TITLE entry on SM/SSC files.\n#TITLE:私の素晴らしい歌; Artist:artist [string] Status: ✅ Supported\nUsage Example:\nArtist:OutFox Sound Team This entry in the list tells the game what the song artist is for this chart in roman form.\nOn OutFox this entry is usually the transliterated (translation) of the artist name, so we will be parsing this as that entry. If there is no ArtistUnicode entry it will use this as the artist name.\nThis variable is equivalent to the #ARTISTTRANSLIT entry on SM/SSC files.\n#ARTISTTRANSLIT:OutFox Sound Team; ArtistUnicode:artist [string] Status: ✅ Supported\nUsage Example:\nArtistUnicode:「OutFox」音楽 This entry in the list tells the game what the song artist name is for this chart in utf8.\nOn OutFox this entry is usually the original artist name, so we will be parsing this as that entry.\nThis variable is equivalent to the #ARTIST entry on SM/SSC files.\n#ARTIST:「OutFox」音楽; Creator:creator [string] Status: ✅ Supported\nUsage Example:\nCreator:Squirrel This entry in the list tells the game the creator or author of the beatmap or chart.\nOn OutFox this entry is referred to as the chart credit, and is used as a given entry on the music wheel.\nThis variable is equivalent to the #CREDIT entry on SM/SSC files.\n#CREDIT:Squirrel; Version:version [string] Status: ✅ Supported\nUsage Example:\nVersion:OutFox Easy Mod File 2021 This entry in the list allows a chart author to name a difficulty \u0026lsquo;version\u0026rsquo; for the particular .osu file within a collection for one song. It is usually used for descriptive difficulty information, or to \u0026rsquo;theme\u0026rsquo; difficulties, for example (spring easy, summer hard, autumn extreme, winter death).\nOther authors use this field to also add the number of keys the chart has in mania mode, for example [3k], [6k], [10k] would let people know it uses 3 columns, 6 columns and 10 columns respectively before the difficulty name.\nThere is no specific detail given for this entry, other than it being used within the online portion of the game for difficulty and to give information on the music wheel when choosing a song. It is better to give some detail about the difficulty in the entry given, as you can risk not being ranked, and upsetting players.\nOn OutFox this entry is used for the \u0026lsquo;multi-chart per folder\u0026rsquo; setup some packs have in the new kbx mode. This gives you seamless loading capabilities without having to split up multi-song chart packs.\nThis variable has no equivalent SM/SSC value.\nSource:source [string] Status: ✅ Supported\nUsage Example:\nSource:Serenity Volume 2 This entry in the list identifies the source of the song, or the original media it was produced for (in the case of anime openings/themes etc). It can also be used as the pack source if the song was created specifically for games, as our example.\nOn OutFox this entry is likely going to be parsed as the \u0026lsquo;subtitle\u0026rsquo; entry until we fit another option for this information.\nThis variable has no equivalent SM/SSC value. Tag:tags [string string string] Status: ✅ Supported\nUsage Example:\nTags:japanese j-pop modfile This command adds a selection of words that the chart can be searched by on the online system, and within the music wheel. They are simply space separated, and act like tags on a youtube video or instagram post, allowing players to find the chart.\nIt is important you put useful or meaningful tags in this section that reflect the chart so it can be found!\nOutFox supports this function for chart searching in supported wheels.\nThis variable has no equivalent SM/SSC value. BeatmapID:id [n] BeatmapSetID:id [n] Status: ❌ Ignored (Unsupported)\nUsage Example:\nBeatmapID:0123456789 BeatmapSetID:0987654 The BeatmapID is used as an identifier for the \u0026lsquo;Difficulty ID\u0026rsquo; according to the official documentation, with the BeatmapSetID being used as the identification of the chart or beatmap itself.\nThe use of these is mainly for the upload content system so the web side can catalogue and add the entries to the database. Without these one would not be able to tie scores or combos to the charts played. These identifiers also are likely used for ranking and high scoring/music wheels internally for the client.\nOutFox has it\u0026rsquo;s own unique hashing system and database system planned which will be used as the IDs in this format are not compatible.\nThis variable has no equivalent SM/SSC value.\n[Difficulty] Section This section details the main difficulty setup that the chart or beatmap will use. There are several values which change depending on the mode type, as well as the sizes of the circles and other settings.\nOutFox will not be using many of these as they are for circles mode primarily, but the taiko and mania mode changes will be detailed here.\nThe commands for this section are done as Command:Value. Do note the lack of spaces!\nHPDrainRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nHPDrainRate:7.2 HP Drain Rate, usually shortened to HP, sets the rate of health increase or decrease depending on how a note is hit. This is usually a set amount of time before or after, which we call a timing window. The closer to the notes actual time it is hit, the high the \u0026lsquo;category\u0026rsquo; or \u0026lsquo;judgment\u0026rsquo; the game records for that hit.\nIt allows for a recovery (health is added to the life bar) on a GOOD hit or better. The scale is from 0.0 to 10.0, with lower values giving more health returns. A higher value lowers the health return gained on the note.\nIn reflection, the drain of this value, which is given when a note is hit badly is different to the value. so a lower value affects the health bar less on a bad hit, and a higher value punishes the player more.\nIn circles and catch this value can also modify the passive rate of drain. These modes have a constant drain on the life-bar. If the life bar drains to 0 the player counts as failing the chart.\nIn OutFox we do not have a life draining mechanism at this time, so this value isn\u0026rsquo;t supported. If catch mode is ever implemented this mechanism will of course be required.\nThis variable has no equivalent SM/SSC value.\nCircleSize:n.n/n [0.0-10.0]/[0-10] Status: ✅ Supported (mania only)\nUsage Example:\nCircleSize:3.2 CircleSize:4 Circle Size (CS) is a variable that lives a double life in the beatmaps or charts. In circles it defines the size of the hit objects, within the range of 1 to 10. Higher values helpfully make the circles smaller. In the community it is seen that the majority of the beatmaps use between 2.5 and 4.0. This is followed by 4.0 to 5.7, with values outside of these ranges almost never being used, mainly due to them being too small on some devices to hit, or just too big to make an efficient beatmap that flows with effects (Sliders/spinners overlapping etc due to scale).\nIf the chart is above 7, it is likely that one of the Osu games mods, Hard Rock is being used. Outside of this, it is very unlikely to be used. The sliders in the editor do not permit for values outside of 2.0 to 7.0, so one needs to manually edit this value in the .osu file.\nThe other life this value leads, is within the catch mode. In this mode, the Circle Size defines the size of the fruit and the catcher sprites. It works as above, higher numbers make the fruit and catch smaller. This mode usually has values between 2 and 7, which is commonly seen as 3-4.\nIf the value is set to the highest value, 10, the hit objects will be the same size as the cursor that is shown on the screen to show the location of the mouse/pointer/pen/touch etc.\nThis value is also \u0026lsquo;seen\u0026rsquo; in the taiko mode, however, it does nothing. It is also ignored in the OutFox taiko mode.\nHowever, if the mode is mania, this value becomes something completely different. In the editor it is an automatic switch to a variable called 'KeyCount'. As this mode is a vertical scrolling game, this value is the number of \u0026lsquo;keys\u0026rsquo; (on a keyboard or controller) you will be using to play that particular chart. This is also the same as the \u0026lsquo;column count\u0026rsquo; we have in OutFox.\nThe .osu file does not reflect the KeyCount word. It remains as CircleSize. The difference is, the mode uses whole numbers, so there will be no CircleSize:4.3.\nThe values used for this version of CircleSize you will see 3 to 10. This is contrary to what the official documentation says, it is not 1 to 9.\nOutFox computes these column amounts as CircleSize - 1 as our columns begin at 0. The new kb mode will support all key modes from 1 to 10, with 2 player support.\nThis variable has no equivalent SM/SSC value.\nOverallDifficulty:n.n [0.0-10.0] Status: ✅ Supported\nUsage Example:\nOverallDifficulty:1.3 ApproachRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nApproachRate:4.8 SliderMultiplier:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSliderMultiplier:3.7 SliderTickRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSliderTickRate:7.2 Written and Maintained with ♡ by Squirrel, containing information with thanks from the Osu! Wiki and members of the international Taikojira and Mania! communities.\n","description":"Project OutFox is working on a new OTO notesloader that supports the .osu (Osu) chart format, which is the standard format used in conjunction with the kb and taiko game types. The following page contains details on the .osu parsing options that Project OutFox currently supports. This is a living document - it will be updated as time allows and we add the support or features within.\nThis documentation exists as a mental \u0026rsquo;layout\u0026rsquo; for me to learn about the format and how best to parse it for the way OutFox needs."},{"id":83,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-Segments/","title":"Segments of a BitmapText","parent":"BitmapText","content":"The BitmapText actor consists of 2 sets of glyphs, Inner and Stroke. Inner is the main use of a glyph, which is drawn character by default. Stroke is used to make bordered text without risking modification of the original glyph map, which allows for coloring on the fly.\nSetting a Text Glow Mode When using the glow function, the BitmapText actor automatically applies the glow color to both layers by default. You can change this with the textglowmode function, which uses a TextGlowMode enumerator to determine which area to apply its glow, one or the other or both.\nHere we have applied a stroke color of green, which will make the border color green, and then a glow blue with 50% opacity. However, because the glow mode has been set to TextGlowMode_Inner, that glow will only apply to the inner layer, leaving the border untouched.\nreturn Def.ActorFrame{ Def.BitmapText{ Font = \u0026#34;_ibm plex sans cond smbld/20px\u0026#34;, OnCommand = function(self) self:xy( SCREEN_CENTER_X, 50 ) :settext( \u0026#34;i am text\u0026#34; ) :strokecolor(color(\u0026#34;#ffffff00\u0026#34;)) end } } ","description":"The BitmapText actor consists of 2 sets of glyphs, Inner and Stroke. Inner is the main use of a glyph, which is drawn character by default. Stroke is used to make bordered text without risking modification of the original glyph map, which allows for coloring on the fly.\nSetting a Text Glow Mode When using the glow function, the BitmapText actor automatically applies the glow color to both layers by default."},{"id":84,"href":"/dev/mode-support/sm-support/","title":"SM","parent":"NoteLoader support","content":"Project OutFox contains a parser for the SM chart format, which has existed as early as StepMania 3.9, and is what most StepMania-based engines support as a base format \u0026amp; simfile cache format. With SM5, this has been succeeded by the SSC format, but for completeness, the following page contains details about what the SM format supports and used to support.\nEvery section follows this format: #SECTION:DATA;, which means #, ; and : shouldn\u0026rsquo;t be used in the data section.\nTo note, some sections parsed are from SSC, so the current implementation of SM is both SM and a bit of SSC.\nSections TITLE This gives the title of the song.\nIf not defined, the game falls back on the simfile directory name.\nExample:\n#TITLE:Blow My Mind; SUBTITLE This gives the subtitle of the song. It\u0026rsquo;s often shown underneath the song title.\nIf TITLE wasn\u0026rsquo;t defined, the game falls back on the simfile directory name for this as well.\nExample:\n#SUBTITLE:Tournament Stage 2; ARTIST This gives the artist of the song.\nIf not defined, the game shows \u0026ldquo;Unknown artist\u0026rdquo; instead.\nExample:\n#ARTIST:かめりあ; TITLETRANSLIT This is the transliterated song title that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the TITLE section is used in all cases.\nExample:\n#TITLETRANSLIT:Ame agari no uta; SUBTITLETRANSLIT This is the transliterated subtitle that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the SUBTITLE section is used in all cases.\nExample:\n#SUBTITLETRANSLIT:Touhou Koumakyou; ARTISTTRANSLIT This is the transliterated song artist that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the ARTIST section is used in all cases.\nExample:\n#ARTISTTRANSLIT:Camellia; GENRE This is the genre of the song. Some examples are Rock, Dubstep, and Classical. Anythng can be put here as a genre.\nExample:\n#GENRE:Techno Pop; CREDIT This field is for crediting someone, usually the author of the chart\nExample:\n#CREDIT:Narumi; BANNER This defines the file to use for the song\u0026rsquo;s banner. It\u0026rsquo;s usually in the same folder as the simfile. This is a relative path.\nIf not defined, the game looks for image files that contain \u0026ldquo;banner\u0026rdquo; or end with \u0026ldquo;bn\u0026rdquo;.\nExample:\n#BANNER:crazy-bn.png; BACKGROUND This defines the file to use for the song\u0026rsquo;s background. It\u0026rsquo;s usually in the same folder as the simfile. This is a relative path.\nIf not defined, the game looks for image files that contain \u0026ldquo;background\u0026rdquo; or end with \u0026ldquo;bg\u0026rdquo;.\nExample:\n#BACKGROUND:awesome-image.png; LYRICSPATH This defines the file to use for the song\u0026rsquo;s lyrics. This is a relative path.\nExample:\n#LYRICSFILE:speed.lrc; CDTITLE This defines the file to use for the song\u0026rsquo;s CD Title. Usually the simfile author uses this to put their author image. This is a relative path.\nExample:\n#CDTITLE:nonsense.png; MUSIC This defines the file to use for the song\u0026rsquo;s music. This is usualy in the same folder as the simfile. This is a relative path.\nExample:\n#MUSIC:dondadon.ogg; INSTRUMENTTRACK Specifies a song file to use for an instrument track. This is a relative path. Valid intrument tracks are: \u0026ldquo;Guitar\u0026rdquo;, \u0026ldquo;Rhythm\u0026rdquo;, \u0026ldquo;Bass\u0026rdquo;, \u0026ldquo;Vocal\u0026rdquo;, \u0026ldquo;Drum1\u0026rdquo;, \u0026ldquo;Drum2\u0026rdquo;, \u0026ldquo;Drum3\u0026rdquo; and \u0026ldquo;Drum4\u0026rdquo;\nExample:\n#INSTRUMENTTRACK:track1.ogg=Guitar, track2.ogg=Drum1; SAMPLESTART Defines the starting point of the same taken from the main audio file, in seconds.\nExample:\n#SAMPLESTART:20.421; SAMPLELENGTH Defines how long the song\u0026rsquo;s sample plays for, in seconds.\nExample:\n#SAMPLELENGTH:5.000; DISPLAYBPM Sets the BPM to be shown in the music wheel.\n* means it\u0026rsquo;s random, and constantly changing characters are shown for BPM.\nIf not set, the song\u0026rsquo;s min and max BPM are shown instead.\nExample:\n#DISPLAYBPM:240; or\n#DISPLAYBPM:*; SELECTABLE Sets whether the song is shown in the music wheel or not. This is ignored if the HiddenSongs preference is turned off.\n\u0026ldquo;YES\u0026rdquo;, \u0026ldquo;1\u0026rdquo;, \u0026ldquo;ES\u0026rdquo;(3.9+) and \u0026ldquo;OMES\u0026rdquo;(3.9+) are the same, while \u0026ldquo;NO\u0026rdquo; or \u0026ldquo;0\u0026rdquo; set it to unselectable.\nExample:\n#SELECTABLE:NO; BGCHANGES / BGCHANGES2 / BGCHANGES3 / ANIMATIONS Specifies what the background of a song changes to throughout the chart. This allows lua files to be loaded.\nBGCHANGES with numbers specifies what layer it shows up on. (BGCHANGES2 = Layer 2)\nBGCHANGE format: beat=file_or_folder=update_rate=crossfade=stretchrewind=stretchnoloop=Effect=File2=Transition=Color1=Color2\nbeat: The beat this BGCHANGE occurs on. Can be negative to start before the first beat. file_or_folder: The relative path to the file to use for the BGCHANGE. Lua files are allowed. If a folder is given, it looks for \u0026ldquo;default.lua\u0026rdquo;. update_rate: The update rate of the BGCHANGE. crossfade: set to 1 if using a crossfade. Overriden by Effect. stretchrewind: set to 1 if using stretchrewind. Overriden by Effect. stretchnoloop: set to 1 if using stretchnoloop. Overriden by Effect. Effect: What BackgroundEffect to use. File2: The second file to load for this BGCHANGE. Transition: How the background transitions to this. Color1/Color2: Formatted as red^green^blue^alpha, with the values being from 1 to 0, Passed to the BackgroundEffect with the LuaThreadVaraible \u0026ldquo;Color1\u0026rdquo;/\u0026ldquo;Color2\u0026rdquo; in web hexadecimal format as a string. Alpha is optional. Often, a last entry with \u0026ldquo;-nosongbg-\u0026rdquo; as the file is placed so the song\u0026rsquo;s starting background doesn\u0026rsquo;t show up at the end.\nExample:\n#BGCHANGES:0.000=blossom1.jpg=1.000=1=0=1===CrossFade==, 52.000=blossom2.jpg=1.000=0=0=1=====, 164.000=blossom1.jpg=1.000=0=0=1=====, 229.000=blossom3.jpg=1.000=0=0=1=====, 302.000=blossom1.jpg=1.000=0=0=1=====, 99999=-nosongbg-=1.000=0=0=0 // don\u0026#39;t automatically add -songbackground- ; The second line explained: 52.000=blossom2.jpg=1.000=0=0=1=====\nBeat = 52 File = \u0026ldquo;blossom2.jpg\u0026rdquo; Update rate = 1 Crossfade: off stretchrewind: off stretchnoloop: on Effect: none (Does not override the above three) File2: none (Nothing loads in the second slot) Transition: none (The first line uses \u0026ldquo;CrossFade\u0026rdquo;) Color1: none Color2: none FGCHANGES Like BGCHANGES, FGCHANGES follow the same format, but happen in a Foregound layer, above the players and most everything else. Commonly used in gimmick files to script modifiers or other visual aspects.\nExample:\n#FGCHANGES:0.000=lua=1.000=0=0=1=====; KEYSOUNDS Specifies what files to load as keysounds. Uses relative paths.\nExample:\n#KEYSOUNDS:pf_24_c#+.ogg,ba_op1.ogg,dr_hho.ogg,dr_rs.ogg,dr_bd8.ogg,dr_cs8.ogg,sq_a.ogg,pc_c.ogg,pf_op11.ogg; OFFSET Defines when beat 0 starts, in seconds. Charts made for the ITG meta tend to have an extra positive 9 ms added.\nExample:\n#OFFSET:-0.611000; STOPS / FREEZES Defines where stops in the song happen. The first parameter is the beat, and the second parameter is how long the stop is, in seconds.\nExample:\n#STOPS:46.250000=0.030000, 46.500000=0.030000, 46.750000=0.030000; BPMS Defines the BPMs the song has. A song must have at least one BPM at beat 0.\nThe first parameter is the beat, and the second parameter is the actual BPM.\nExample:\n#BPMS:0.000=140.250, 48.000=93.500, 48.333=62.333; TIMESIGNATURES Defines the time signatures of the song. Most songs default to 4/4 as their starting signature. There are three parameters: beat, numerator and denominator. The last two parameters must be greater than or equal to 1.\nCurrently, this only affects the measure lines.\nExample:\n#TIMESIGNATURES:0.000=4=4; ATTACKS These are course-style scripted modifiers written into the simfile. Unlike most sections, this is seconds-based instead of beat-based, to allow for modifiers during stops.\nThe format of an attacks entry is this: TIME=seconds:END/LEN=endtime/lengthtime:MODS=modstring\nInternally, entries that use END are converted into LEN.\nExample:\n#ATTACKS:TIME=1.618:END=3.166:MODS=*32 Invert, *32 No Flip :TIME=2.004:END=3.166:MODS=*32 No Invert, *32 No Flip :TIME=2.392:LEN=0.1:MODS=*64 30% Mini :TIME=2.489:LEN=0.1:MODS=*64 60% Mini; DELAYS Specifies the Delay segments for the song. The first parameter is the beat, and the second parameter is the duration in seconds. Appears to have been added since SM-SSC.\nExample:\n#DELAYS:488.000=0.050; TICKCOUNTS Specifies how many checkpoints a hold has in a beat. The default value is 4. This only gets used in the pump game mode. The first parameter is the beat, and the second parameter is the number of checkpoints to use. Appears to have been added since SM-SSC.\nExample:\n#TICKCOUNTS:0.000000=4, 50.000=16; NOTES / NOTES2 NOTES2 is written when keysounds are used, but both are read in the same way.\nNotedata specs Notedata has 6 parameters:\nSteps Type: follows the format game-style. eg: pump-doubles Description: a string that usually has the chart creator\u0026rsquo;s name or chart information. Difficulty: The difficulty of the chart. Chart Meter: the difficulty number. Various chart metas follow different number scales. Radar Values: The 5 radar values based off of DDR\u0026rsquo;s. The order is this: Stream, Voltage, Air, Freeze, Chaos. The game calculates this itself when writing the SM file. Notes: the actual notedata the game reads in to create the chart one plays. Special cases There are two special cases involving the Hard difficulty. If the description is \u0026ldquo;smaniac\u0026rdquo; or \u0026ldquo;challenge\u0026rdquo;, it gets read into the Challenge difficulty.\nNote layout Each measure has a minumum of four lines, with each measure being comma separated. The number of characters per row corresponds to the number of columns the mode has. (eg: dance-single has four columns, so each row has four characters)\n4 rows per measure allows for 4ths, 8 rows per measure allows for 8ths, 16 rows per measure allows for 16ths, etc.\nNote Types The following table shows what character corresponds to what note type (not including characters introduced by SSC)\nNote Character Note Type Quirks 0 empty N/A 1 Tap Note N/A 2 Hold Note Head N/A 4 Roll Note Head N/A 3 Hold \u0026amp; Roll Note Tail Having a 3 without a corresponding 2 or 4 will result in warnings. M Mines N/A K AutoKeysounds N/A L Lifts N/A F Fakes They can only be fake taps. You can\u0026rsquo;t do fake holds with this. Attack Notes Attacks can be attatched to notes by having {} after the note.\nThe format is {modstring:lengthseconds}\nWhen hitting a note with an attack, the attack gets applied for the player as a whole for the given duration.\nKeysounds Keysounds can be attached to a note by having [] after the note.\nThe format is [index], with index starting at 0, and corresponding to the order listed in #KEYSOUNDS.\nExample:\n#NOTES: dance-single: Charter Man: Easy: 4: 0.503,7.2,0,0,0: L000 00F4 0000 0003 , 1000 0200 00M0 A[0]000 0300 0000 0001{tipsy,50%bumpy:5.2} 0000 ; Deprecated / Cache Sections These sections are considered unused or ignored in normal simfiles due to being replaced, removed or being used in cache files instead.\nMUSICLENGTH Specifies how long the music is, in seconds. Used in the cache variant of the SM format.\nExample:\n#MUSICLENGTH:64.052; MUSICBYTES Just flat out ignored. No-one seems to know what this was for. LASTBEATHINT Specifies a custom last beat for the song. Phased out at some point. Example:\n#LASTBEATHINT:211.000000; FIRSTBEAT Specifies the first beat in the song. Used in the cache variant of the SM format. Phased out at some point. Example:\n#FIRSTBEAT:10.348; LASTBEAT Specifies the last beat in the song. Used in the cache variant of the SM format. Phased out at some point. Example:\n#LASTBEAT:128.600; SONGFILENAME The full path to the simfile itself. Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#SONGFILENAME:/AdditionalSongs/UPS 4/Brain Power/Noma - Brain Power.sm; HASMUSIC Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#HASMUSIC:1; HASBANNER Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#HASBANNER:0; SAMPLEPATH Defines the path to the separate sample audio. Phased out at some point. LEADTRACK Unknown.\nWritten and Maintained with ♡ by MTK\n","description":"Project OutFox contains a parser for the SM chart format, which has existed as early as StepMania 3.9, and is what most StepMania-based engines support as a base format \u0026amp; simfile cache format. With SM5, this has been succeeded by the SSC format, but for completeness, the following page contains details about what the SM format supports and used to support.\nEvery section follows this format: #SECTION:DATA;, which means #, ; and : shouldn\u0026rsquo;t be used in the data section."},{"id":85,"href":"/dev/theming/Theming-1-Folders/","title":"The Structure of folders","parent":"Introduction to theming","content":"A theme can consist of the following folders. All of them are optional, but needed to perform certain operations on how to load / fetch files.\nIt is important to understand that themes in newer versions of StepMania/OutFox rely on _fallback, a special theme folder located on Appearance/Themes/ which contains all of the information neccessary to run any kind of theme. Earlier in the day, since there was no such thing, every theme distributed had to contain the same information in order to run, which in term would lead to a lot of repeated code for something that was never used.\nYou can create more/less folders than this and call them in your theme by fetching the location of your theme\u0026rsquo;s folder and then accessing the data that you need, but for the purposes of this guide, we\u0026rsquo;ll stick to these folders.\nBGAnimations Contains the lua scripts that control the visual elements of screens. Fonts Text and images containing individual glyphs, or graphical representations of each character on a font. Graphics Contains images of gameplay objects. Language Contains INI files that with the transliterated strings. For more information, visit the Translation guide. Modules An optional folder that contains Lua files with simple functions or tables that can be called on demand, rather than storing the file on memory all the time. Other An optional folder that contains special files, but also can contain other kinds of files that don\u0026rsquo;t have a particular folder to reside in. Scripts Lua files that will be loaded into memory, that can be accessed at any time. ","description":"A theme can consist of the following folders. All of them are optional, but needed to perform certain operations on how to load / fetch files.\nIt is important to understand that themes in newer versions of StepMania/OutFox rely on _fallback, a special theme folder located on Appearance/Themes/ which contains all of the information neccessary to run any kind of theme. Earlier in the day, since there was no such thing, every theme distributed had to contain the same information in order to run, which in term would lead to a lot of repeated code for something that was never used."},{"id":86,"href":"/dev/mode-support/tja-support/","title":"TJA Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on support on the parser for the TJA (Taikojiro) chart format, which is the standard format used in conjunction with the taiko game types. The following page contains details on the Taiko parsing options that Project OutFox currently supports. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTJA Notedata support as of Alpha 4.19.0 - 60% Complete! Headers The mode uses a selection of headers to set up the playfield/notefield, which appear to be based off of the old BMS style loading mechanisms. We\u0026rsquo;ll list the known ones and whether or not Project OutFox supports them.\nUnlike it\u0026rsquo;s BMS History, TJA files do not use the # delimiter to begin a line. In BMS to note the title of a song, it would be #TITLE, and in TJA, it uses just TITLE. Bear this in mind if you are converting from BMS/PMS files that the parsers for other simulators will not expect the # to be used. We will list them as per what we can find out about the TJA Specification, so do check back regularly, as this information will change from time to time as we get more familiar with this game mode and the format nuances it uses.\nSomething important to note, There are no spaces after the : in the headers. If you are using a known editor, this won\u0026rsquo;t be a problem. However if you are converting from BMS/PMS, these will not have a : at all and this can lead to information being missed in the way the game parses your chart. It will also make your .tja incompatible with other taikojiro simulators.\nTITLE This header is self explanatory, and it sets the title of the song/chart that will be played. It is very often done in SHIFT-JIS encoding on older files, however on more modern charts, this is using UTF-8 / UTF-8 BOM.\nExample:\nTITLE:My Favourite Song SUBTITLE This header replaces the #ARTIST tag that BMS/PMS uses, so remember to use it in this way. It again used to be written in SHIFT-JIS on older files, but please use UTF-8, as this is the standard now.\nSubtitles can be hidden on the evaluation screen by adding -- before the title begins. If you wish to show the subtitle on the evaluation screen (the default) you can add ++. It is not actually necessary to use this notation on OutFox, but for compatibility with other simulators, it is best to set this to either visible or hide. Be aware, only -- works on other simulations, so if you want to keep compatibility, do not use the other two options (++SUBTITLE/SUBTITLE).\nExample:\nSUBTITLE:My Favourite Artists To hide on evaluation:\nSUBTITLE:--My Favourite Artists To show on evaluation\nSUBTITLE:++My Favourite Artists BPM This header specifies the beginning or \u0026lsquo;starting\u0026rsquo; BPM (Beats Per Minute) of a song. This is the same as the #BPM used in BMS. It is usually a whole number, but floating point/decimal point is also permitted, though these are not completely in the specification.\nExample:\nBPM:145 or\nBPM:128.35 OFFSET The offset of a song, or where you want the song to begin, is set using seconds. In Taiko mode, this will correspond to the first \u0026lsquo;beat bar\u0026rsquo; you see, then the metronome system will continue from that. If you do not use an editor that allows you to see the waveform, this can be trial and error until it is synched up. You can use negative values, to start before the song starts, or positive values, which is after the song starts. Either of these are supported.\nExample\nOFFSET:-1.785 or\nOFFSET:3.32 WAVE This header sets the file name of the song you wish to play. You do need to bear in mind, this is case sensitive. On Linux and Mac OS specifically, you must ensure that this entry matches the file name on the disc EXACTLY, or you will be greeted with silence when in game. For OutFox, you have the choice of the following supported file formats:\nOGG (Recommended if you wish to make your .tja compatible with other simulators) MP3 WAV OPUS FLAC This header is similar to the #WAVzz header used in BMS, except we\u0026rsquo;re only calling the one for this mode. Do ensure your file is encoded to 44.1kHz (44,100) as some older OGG encoders can do weird things to your file. If you\u0026rsquo;re ever unsure, use the program MediaInfo which is a handy little program for media file information. Most simulators will not play bad or slightly corrupted files, so this is something to take into consideration when creating your chart, so take a moment to check the file is good.\nExample\nWAVE:Iliketodrum.ogg or\nWAVE:HitMeinmyFace.flac SONGVOL This header sets the play volume of the song when screen gameplay starts. It is independent of the game volume, or the volume you set with the F3 option. Use this sparingly! You can make the sound of your chart be bad for players if you set it too quietly for example. It defaults to 100, which is the normal setting for a sound in the game, and in other simulators as well. It is not recommended to use values over 100, as this will cause distortion and clipping in the output, and will potentially sound awful.\nExample\nSONGVOL:100 SEVOL This header sets the play volume of the sound effects used when screen gameplay starts. It is independent of the game volume, or the volume you set with the F3 option. Use this sparingly! You can make the sound of your chart be bad for players if you set it too quietly for example. It defaults to 100, which is the normal setting for a sound in the game, and in other simulators as well. It is not recommended to use values over 100, as this will cause distortion and clipping in the output, and will potentially sound awful.\nExample\nSEVOL:100 DEMOSTART This allows for the preview of the song file set in WAVE. It is set to play when in screen select music, (The music wheel) and will play from the point chosen here. This system mimicks the #PREVIEW system in BMS, but does not require you to load two files. It simply uses the one song file, and will play from the point selected.\nYou need to set a time within the file, or this can cause issues with some simulators. If your song file was 93 seconds long, and you set DEMOSTART:99, this can cause undesirable behaviour in other simulators. If the number is invalid in OutFox, it will just play from the beginning, so do set this right!\nExample\nDEMOSTART:22.65 LEVEL The level entry sets the amount of stars that the player will see and this will signify the difficulty of the chart. It is set from a scale of 1 to 10, and will set the difficulty in the game. Some simulators can also take the COURSE name to set the difficulty. It is similar to how the PLAYLEVEL works in BMS. Bear in mind that maximum star ratings aren\u0026rsquo;t the same between difficulties:\n1-5 kantan (Easy) 1-7 futsuu (Normal) 1-8 muzu (Hard) 1-10 oni/ura (Extreme) Example\nLEVEL:4 COURSE This header is somewhat misleading. It is in fact the difficulty of the chart, and it can be set either as a number, or by a name.\nEasy or 0 Normal or 1 Hard or 2 Oni or 3 Edit or 4 Tower or 5 Dan or 6 Due to the competitive nature of the PC based simulators this normally defaults to oni or 3, so be warned if your chart is easier than this difficulty, and make sure you add the correct name in the course setting. It is named Extreme so this should give you an idea of the difficulty! Edit refers to Ura Oni, and doesn\u0026rsquo;t have any impact alone on the genre of the song.\nUra Oni is an alternative to the Oni charts, which are not necessarily harder, but can include 2 player or gimmicks. Remember OutFox\u0026rsquo;s Mod system is quite varied, and try to keep these out of your files if you wish to make them compatible with other simulators.\nTower is based on the style from the PS2 era of the game.\nThis setting is similar to how PLAYLEVEL works in BMS, but gives a finer set of controls.\nExample\nCOURSE:4 or\nCOURSE:hard GENRE This header works very differently to the BMS equivalent with the same name. In Taiko, you have a choice of 8 different Genres. These will then be \u0026lsquo;set\u0026rsquo; into groups depending on this value. Use UTF-8 when setting these, to ensure full compatibility across the board.\nThese names will override any settings in box.def, the configuration file.\nSeveral of the older clients need SHIFT-JIS, but if you are targeting newer simulators (and OutFox!) then the following genre names should be used:\nJ-POP This is the J-Pop genre, used for mainstream/uplifting tracks. アニメ This is the anime genre, used for anime based songs, opening/closing credit songs, or songs based or remixed from music within an anime. In the western community, this genre also covers western animated cartoons and movies, and the \u0026lsquo;western\u0026rsquo; based animes that are produced by the like of Netflix et al. どうよう This genre is not used that much in modern versions of the game, as it is the \u0026rsquo;nursery rhymes\u0026rsquo; genre. If you are being true to the historical versions of the game then use this genre, but most now have moved into variety and classical. They tend to be more biased towards the easier side of difficulty, as it was meant to open up the game to a younger audience. バラエティ This genre is \u0026lsquo;variety\u0026rsquo;. It is the genre where you can put charts that do not really \u0026lsquo;fit\u0026rsquo; in anything else. In most simulators, a lot of the edit charts go into variety. A lot of songs from BMS and Touhou fit in this category. ボーカロイド or VOCALOID The vocaloid genre has two possible entries to the genre tag, and you can use either of them. This genre is for music made using the vocaloid based virtual idol singers, including IA, Miku, Luka, Gumi etc. クラシック This genre is for classical music or remixes of classical tracks. ゲームミュージック This genre has all the game music charts. This can be almost anything, as long as it\u0026rsquo;s tied to a game; Boss and title music, to BGM/Ambient music, remixes and even songs from other rhythm games go in here. ナムコオリジナル This genre is for the \u0026lsquo;Namco Original\u0026rsquo; based songs and remixes. キッズ This genre is similar to the nursery rhymes set, with the song charts being set for kids. 段位道場の課題曲 This genre is for Danjo Dojo based charts. These are the task based charts used in some simulators. We are not sure if this setting has been used in custom charting as of yet. Example\nGENRE:VOCALOID or\nGenre:アニメ SCOREMODE This tag allows the chart maker to set the game version used when it comes to setting and sorting out the final score of the song. There have been 17 Arcade versions of Taiko and this tag can specify the scoring method. Some simulators do not support score methods other than 1. However, OutFox will support the full range. On most simulators, the default is 1.\n0 This sets Arcade Version 1 to 7 scoring: Less than 200 combo: SCOREINIT or 1000pts per note. When the player then hits 200 combo, it is SCOREINIT + SCOREDIFF, or 2000pts (1000x2 for double) for the 200+ combo bonus. So if the player scored 184 combo in a song which had 184 notes: it would be 184x1000. Scoring Formula: SCOREINIT * COMBO (when COMBO \u0026lt; 200) + (SCORINIT + SCOREDIFF * COMBO (when COMBO \u0026gt;200) Scoring Formula: 1000 * COMBO (when COMBO \u0026lt; 200) + (2000 * COMBO (when COMBO \u0026gt; 200)) 1 This sets Arcade Version 8 to 14 scoring: With this arcade version, we use the SCOREDIFF variable. The combo multiplier rises by SCOREDIFF with each 10 combo until it hits 100, then it doesn\u0026rsquo;t change unless there is a break. Scoring Formula: SCOREINIT + max(0, SCOREDIFF * floor((min(COMBO, 100) - 1) / 10)) 2 This sets the Arcade version to 0, which is similar to how 1 works, but with some different combo multipliers. This scoring system is not commonly used, but it\u0026rsquo;s included here for completeness. There are a lot more Japanese charts with this setting. This scoring system refers to the always-online HD cabinet versions between 2011 and 2020 (normally named after colours \u0026ndash; kimidori, murasaki, red, blue, green, etc) Scoring Formula: SCOREINIT + SCOREDIFF * (if combo over 100; 8) (if combo over 50; 4) (if combo over 30; 2) (if combo over 10; 1) 3This sets the scoring to the newest taiko arcade (nijiiro) mathematically calculates score to mean all-good (dfc, =mfc/AJ/perfect) is equal to at least 1 million with combo no longer being a factor, with much more precision than AC0 (where scores of 1.2 million were possible on note-heavy charts and scores of 800k were possible on less note-heavy charts, all oni). It\u0026rsquo;s comparable to the shin-uchi/true hit mode (other than it not accounting for big notes anymore) Scoring Formula: ((1000000-(time of balloon (sec)*100*16.6 OR hit count of balloon×100)-time of drumroll (sec)*100*16.6)/total note count/10)then unconditional carry to single digit * 10 Example\nSCOREMODE:1 SCOREINIT This tag sets the INITial score for the scoring method. This is commonly set to 610 on Japanese charts, but many other values are seen as well. See #SCOREMODE above.\nExample\nSCOREINIT:380 SCOREDIFF This tag sets the score DIFFerence for the scoring method. This is commonly set to 140 on Japanese charts, but many other values are seen as well. See #SCOREMODE above.\nExample\nSCOREDIFF:90 MAKER This tag is used for the name of the chart artist. It is not often seen in the simulators options, but the tag is available for credit. Works as per #MAKER in BMS.\nExample\nMAKER:Squirrel Taiko Mode Note Types 0 = No Notes Placed, empty Space 1 = Small Don (Orange Note) 2 = Small Kat (Blue Note) 3 = Large Don (Orange Note) 4 = Large Kat (Blue Note) 5 = Small Drum Roll Start Point (Yellow Roll) - Ends with an 8 6 = Large Drum Roll Start Point (Yellow Roll) - Ends with an 8 7 = Where the \u0026lsquo;Balloon\u0026rsquo; (Long) Note Begin - Ends with an 8 8 = Where the Drum Roll / Balloon Long Notes End 9 = Where the \u0026lsquo;Kusudama, yam, oimo, or big balloon\u0026rsquo; (Long) Note Begins - Ends with an 8 A = Large Don Partner, Multiplayer, with the hands (This does not work on most sims) B = Large Kat Partner, Multiplayer, with the hands (This does not work on most sims) C = Mine or Bomb (OutFox and OpenTaiko specific) D = Not Used? (Potential Fuse Roll OutFox Specific) E = Not Used? F = Adlib; hidden note that will increase combo if spotted, but won\u0026rsquo;t give bad/miss when not hit G = Purple note; don + kat simultaneously. (This note is green on taikoweb) H = Small Don Roll - Ends with an 8 (Proposed) I = Small Kat Roll - Ends with an 8 (Proposed) Added in LTS 0.4.18, the new bongo mode also uses .tja to parse, with autogenerated transcribing at the moment.\nThe table below shows the \u0026lsquo;alternative\u0026rsquo; note types used by the bongo mode. These have been agreed upon with the OpenTaiko / TJADB community so files created for OutFox will work on all simulators moving forward.\nBongo Mode Note Types 0 = No Notes Placed, empty Space 1 = Red Right Hit 2 = Yellow Left Hit 3 = Pink Note (Double Bongo Hit) 4 = Clap Note (Clap your hands) 5 = Red Right Roll Begin - Ends with an 8 6 = Pink Note Roll Begin - Ends with an 8 (Double Bongo Roll) 7 = Where the \u0026lsquo;Balloon\u0026rsquo; (Long) Note Begin - Ends with an 8 8 = Where the Drum Roll / Balloon Long Notes End 9 = Where the \u0026lsquo;Kusudama, yam, oimo, or big balloon\u0026rsquo; (Long) Note Begins - Ends with an 8 A = Pink Note (Double Bongo Hit) B = Clap Note (Clap your hands) C = Mine or Bomb (OutFox and OpenTaiko specific) D = Not Used? (Potential Fuse Roll OutFox Specific) E = Not Used? F = Adlib; hidden note that will increase combo if spotted, but won\u0026rsquo;t give bad/miss when not hit G = Pink Note H = Clap Note Roll - Ends with an 8 (Proposed) I = Yellow Left Roll - Ends with an 8 (Proposed) Written and Maintained with ♡ by Squirrel, with thanks to OpenTaiko, Taiko-web, and members of the TJADB and Taiko international community\n","description":"Project OutFox is working on support on the parser for the TJA (Taikojiro) chart format, which is the standard format used in conjunction with the taiko game types. The following page contains details on the Taiko parsing options that Project OutFox currently supports. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTJA Notedata support as of Alpha 4."},{"id":87,"href":"/dev/mode-support/txt-support/","title":"TXT Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on support on the parser for the Karaoke TXT (UltraStar) chart format, which is the standard format used in conjunction with the karaoke game types. The following page contains details on the Karaoke file parsing options that Project OutFox will support. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTXT Notedata support as of Alpha 0.5.0 - TBC Headers The mode uses a selection of headers to set up the song metadata, which appear to be based off of the old BMS style loading mechanisms. We\u0026rsquo;ll list the known ones and whether or not Project OutFox supports them.\nUltraStar TXT files only follow the Header metadata of the old BMS system; it uses the #COMMAND:KEY structure. Something important to note, There are no spaces after the : in the headers. If you are using a known editor, this won\u0026rsquo;t be a problem. If converting from other karaoke formats, ensure these headers are set up correctly, or most of the simulators will not read your file!\nAn Example Header Section\n#TITLE:Into My Dream #ARTIST:Lagoona #MP3:Into My Dream.ogg #CREATOR:-YOSEFU- in a Dream #LANGUAGE:English #COVER:Into My Dream-bn.mp4 #BACKGROUND: #VIDEO:Into My Dream-bga.mp4 #BPM:140.000 #GAP:121 #EDITION:OutFox Serenity Volume 2 #GENRE:Trance #UPDATED:20-oct-2022 #YEAR:2022 #COMMENT:https://projectoutfox.com/ NOTE: The chart MUST have the following headers to be considered a valid karaoke file: #TITLE #ARTIST #MP3 #GAP (Offset) (Not all UltraStar versions need this.) #BPM Common HEADER commands #TITLE:title [string] Status: ✅ Supported\nUsage Example:\n#TITLE:Into My Dream The title command sets the SongTitle and this will be displayed on the song wheel to be selected, as well on the screen game-play and evaluation screen. It will also be recorded in high scores and on your profile etc.\n#ARTIST:artist [string] Status: ✅ Supported\nUsage Example:\n#ARTIST:Lagoona The artist command sets the SongArtist and this is usually displayed on the song wheel when selected and on the evaluation screen. The artist information is usually recorded in high scores and on your profile.\n#GAP:gap [float] Status: ✅ Supported\nUsage Example:\n#GAP:121 This setting allows the chart to specify the offset to use at the beginning of a song. This has the effect of shifting all the lyrics based on the value entered here.\nThe value is in milliseconds, and a positive value will delay the lyrics, a negative value start them sooner. This value is used for songs with instrumentals or lead-ins at the start.\nIf the value is not set to 0, then a formula must be used to set the actual time in seconds for the text to be displayed. Using an example line from the lyric (Notedata), we can work it out:\n: 21 2 2 We\u0026#39;ve ^^ Second Column (We use the FIRST timestamp and the second column value for this calculation)\nThe formula to use is:\nDisplay Time = Time stamp of first lyric / BPM / 4 * 60 seconds + GAP so replacing this with numbers:\n21 / 140 / 4 * 60 + 0.121 = 2.371 seconds This means the lyrics will be displayed after 2.371 seconds of the song starting.\nRelative files use starttime=GAP but Project OutFox does not support these files.\n#BPM:bpm [0.0-1400.00] / [0-1400] Status: ✅ Supported\nUsage Example:\n#BPM:140.000 #BPM:140 This setting allows the chart to specify the beginning (or starting) Beats per minute (BPM) of a song. This value will also be shown in the music wheel. This value used to require a whole number. Project OutFox allows for floats here - you are limited to 6 decimal places - so 143.000290 as an example.\nThis value sets the speed at which the lyrics will display, a high bpm means they will show quickly, and a lower bpm will be slower. Chart creators can use \u0026lsquo;double\u0026rsquo; or \u0026lsquo;half\u0026rsquo; bpm to adjust the lyric speed to help the singer, or to add a slightly different level of difficulty.\nIn UltraStar there is sometimes strange behaviour when using #BPM values of under 120, with the notes moving faster than they should. Most chart creators use a \u0026lsquo;double time\u0026rsquo; BPM to work around this. Bear this in mind! We do not have this issue in OutFox, and not all versions of UltraStar have it, so check before you release.\nUsing floating point values in #BPM can cause issues with tools and features that work with the txt files, as they can sometimes misinterpret what the . or , can mean. If possible if you wish to maintain full UltraStar compatibility, use whole number #BPM values for major support.\n#MP3:songfile [string] Status: ✅ Supported\nUsage Example:\n#MP3:Into My Dream.ogg The #MP3 tag is a bit misleading here; it actually should just be #SONG as it can load several different formats.\nProject OutFox is not limited in wave file bit depth, and supports the following file formats:\nwav, ogg, .mp3, .m4a, .FLAC, and .opus. If you plan to make your Karaoke file support other simulators, remember not all of them support these, or have limits on bit depth and sample rates!\nFor UltraStar, if you use audio formats other than mp3, be prepared that those files won\u0026rsquo;t work on all the different systems, and remember any audio format where FFMPEG doesn\u0026rsquo;t need slow indexing for predictive frame access is supported.\n#GENRE:genre [string] Status: ✅ Supported\nUsage Example:\n#GENRE:Trance This command sets the genre or type of music that the chart is going to play. It could be used by the simulator for sorting or grouping charts, or to allow for just more information to be displayed on the song select screen.\n#EDITION:edition [string] Status: ✅ Supported\nUsage Example:\n#EDITION:OutFox Serenity Volume 2 This command sets the edition of the song, similar to ORIGIN in SSC files. UltraStar creators often put the game, or TV show, anime etc that the song was originally featured in.\n#CREATOR:creator [string] Status: ✅ Supported\nUsage Example:\n#CREATOR:-YOSEFU- in a Dream The CREATOR command simply allows the author that timed the chart to add their credit so it will be displayed in the simulator.\n#LANGUAGE:language [string] Status: ✅ Supported\nUsage Example:\n#LANGUAGE:English This command is used to give information on the language of a karaoke chart when a user has international song packs, or plays with different languages installed. Project OutFox at the moment parses this data, but the theme will need to be updated to show this information on the music wheel so it is available to all users.\n#COVER:cover [string] Status: ✅ Supported\nUsage Example:\n#COVER:Into My Dream-bn.mp4 This command is used to set an image for the song on the music selection screen of the simulator - when the song is scrolled to and is highlighted.\nThis can be most image formats, or a video, but remember the limitations, video covers may not work on other karaoke simulations.\nThese are usually square in Karaoke, and we will use a theme which uses square covers to ensure compatibility with already created content.\nIn Project OutFox we call these files banners.\n#VIDEO:videofile [string] Status: ✅ Supported\nUsage Example:\n#VIDEO:Into My Dream-bga.mp4 This command is used to set a video to be played when the song starts on the game-play. It is similar to #BACKGROUND on SSC files. Remember, OutFox supports BGCHANGES which can be used to add effects and flair to your files, but this would need to be done within an SSC in the editor, when we have added support for karaoke in the future.\nThis can be most video formats, but remember the limitations, videos may not work on other karaoke simulations!\nFor UltraStar, if you use files with video, be prepared that those files won\u0026rsquo;t work on all the different systems, and remember any video format where FFMPEG doesn\u0026rsquo;t need slow indexing for predictive frame access is supported. It is common for chart creators to use one file for their video which contains the audio for the song within, and this is placed within both the #MP3 and #VIDEO tags. We will need to add support for these charts in Project OutFox.\n#VIDEOGAP:videogap [float] Status: ❌ Unsupported TBC\nUsage Example:\n#VIDEOGAP:0.635 This setting allows the chart to specify the offset to use for when the video should be started at the beginning of a song. This has the effect of shifting the video playback time.\nThe value is in seconds, and a positive value will delay the video, a negative value start the video sooner. This value is used for songs which may have a slightly offset video.\nIf the value is not set to 0, then a formula must be used to set the actual time in seconds for the text to be displayed. Using an example line from the lyric (Notedata), we can work it out:\n: 21 2 2 We\u0026#39;ve ^^ Second Column (We use the FIRST timestamp and the second column value for this calculation)\nThe formula to use is:\nDisplay Time = Time stamp of first lyric / BPM / 4 * 60 seconds + VIDEOGAP so replacing this with numbers:\n21 / 140 / 4 * 60 + 0.635 = 2.885 seconds This means the video will start after 2.885 seconds of the song starting.\nRelative files use starttime=VIDEOGAP but Project OutFox does not support these files.\nIt is often that files do not contain the VIDEOGAP command, when this happens and a video is specified, it will default to start when the song starts, rather than the lyrics.\n#YEAR:year [int] Status: ✅ Supported\nUsage Example:\n#YEAR:2022 This tag simply sets the year the song was created, and is used as a sort option by other karaoke simulators.\n#PREVIEWSTART:previewstart [float] Status: ✅ Supported\nUsage Example:\n#PREVIEWSTART:17.488 This value tells the game the time in seconds to play the preview section of the song in the music wheel.\nUnlike SM/SSC there is no #SAMPLELENGTH in this format that tells the game to loop or reset the point of playback. It will fall back to the default 15 second length when parsing. Most simulators just play from the middle of the song until the end.\nAs this variable uses the seconds value, it is usable as per the #SAMPLESTART SM/SSC variable.\n#START:start [float] Status: ⌛ TBC\nUsage Example:\n#START:27.759 This value tells the game the time in seconds when to begin the song playback. This is usually used in chart creation, as it can skip a long intro to jump straight to the lyrics/notes, or to test a specific part of the song.\nThese are used extensively on \u0026lsquo;multi-song\u0026rsquo; music files that have \u0026lsquo;chapters\u0026rsquo; (One file with different songs inside). These can also be \u0026lsquo;parts\u0026rsquo; of the song, like chorus or verses.\nThere will usually be one txt file for the complete file, with extra txt files for the \u0026lsquo;chapters\u0026rsquo;.\nThe main advantage for using this command is not having to create a dozen audio files for the same song, plus merging corrections from the main txt files to the chapter txt files is easier in this method.\n#END:end [float] Status: ⌛ TBC\nUsage Example:\n#END:187488 This value tells the game the time in milliseconds when to end the song playback. This is usually used in chart creation, as it can stop playing at a specific part of the song. We haven\u0026rsquo;t decided yet on this one, as many of the charts we have found do not use these commands, as we have the end data in the \u0026lsquo;NoteData\u0026rsquo; section below.\n#DUETSINGERP1:duetsingerp1 [string] #DUETSINGERP2:duetsingerp2 [string] Status: ⌛ TBC\nUsage Example:\n#DUETSINGERP1:Shrek #DUETSINGERP2:Donkey These two values tell the game to change the name in duet mode, so instead of just saying player1 and player2 it changes the name listed in that command. Used in charts for a bit of fun. Some UltraStar versions do not support this and will crash, just be warned!\n#VOCALS:vocalsfile [string] Status: ⌛ TBC\nUsage Example:\n#VOCALS:song.ogg This command tells the game where vocals version of the song is for the selected chart. I haven\u0026rsquo;t been able to find many uses for this, as many songs seem to have song.ogg in the #MP3 tag, and leave the instrumental (Karaoke) version not used. I guess this is to allow folks to have the vocals in the background when someone is learning the song, or provides an option in game to set either the \u0026lsquo;song.ogg\u0026rsquo; or \u0026lsquo;instrumental.ogg\u0026rsquo; versions.\nProject OutFox will likely have an option to select which one to use in time at the music wheel, if these are found, but if you know any other information about the #VOCALS tag, please let Squirrel know via our Discord server!\nIn earlier versions of UltraStar on older files, #MP3 would have the instrumental version, and #VOCALS would contain an a cappella track with just the vocals, and the game would mix the two together when selected to play the full track.\n#RESOLUTION:resolution [1-16] Status: ❌ Not Supported\nUsage Example:\n#RESOLUTION:4 This command seems to be an UltraStar editor only value that affects the lines drawn on beats, with every #RESOLUTION beat being drawn black. It defaults to a value of 4, and should not be set to 0 as it can make the game unstable.\nWe have no plans to support this in Project OutFox, as our editor is different.\n#RELATIVE:relative [0/1] Status: ❌ Not Supported\nUsage Example:\n#RELATIVE:0 This value defaults to 0 if it is not added to the header part of the chart. Project OutFox does not support this value, as it was used some time ago as an alternative method of charting. What this command does is it makes each line set relative to itself. The timestamp (Column 2) is reset to 0 for each line. The engine would need to keep a \u0026lsquo;running tally\u0026rsquo; of the beats/time separately in this mode. We have spoken to a few people in regards to supporting this value, but most say it is deprecated/legacy and it is not used often enough to warrant adding the code for it.\nIf the demand is there, we can look at supporting it, but for the first instance, we will not.\nNote data in this mode is also set up differently as it resets on each line as so:\n: 0 2 2 Some : 3 3 2 body : 7 4 2 once : 12 3 4 told * 16 9 6 me - 36 : 0 3 4 the \u0026lt;-- Resets here to 0 : 4 6 2 world : 12 7 4 is : 20 7 6 gon : 23 4 6 na The timestamp resets to 0 on each line, rather than counting from the beginning of the song. These files are considered legacy in the community, and will be ignored by Project OutFox when parsing. You will see a warning in the log about the file being unsupported, but the game will not crash like some other simulators.\nNoteData Example NoteData:\n: 0 2 2 Some : 3 3 2 body : 7 4 2 once : 12 3 4 told * 16 9 6 me - 36 : 40 3 4 the : 44 6 2 world : 52 7 4 is : 60 7 6 gon : 63 4 6 na E Lyric / Note Data Column Commands The note data is arranged in five columns for lyrics, but there are exceptions. When a new line is required, there are only two or three columns, and to set a player or end a song, there is only one. We will go through these below.\nFor a lyric note it is typically arranged as so:\nColumn 1 Column 2 Column 3 Column 4 Column 5 Note Type Beat Start TimeStamp Beat Length TimeStamp Pitch / MIDI note Lyric / Syllable : 0 2 2 Some Line Break Column Commands A Line break is arranged as so:\nLine Break Beat start (Beat End) - 36 Note it is optional to include the beat end, as for the line break, the first number sets when the previous line disappears and the second one when included, sets when the next line appears. This is useful for controlling lyric lines on fast songs, or when you want to control slower lyrics that may disappear too soon, or too slowly.\nLine Break Beat start (Beat End) - 132 264 Line breaks with two numbers usually are used when there are songs which have a long instrumental or solo break where there are no lyrics for a time. This prevents the game placing up the next line of words too early, and allows the player to enjoy the solo/instrumental.\nSingle Column Note Commands Note Type P1 P2 P3 These types are for player set lyrics in duet mode. (See below)\nNote Type E This command sets the ending of the track, placed at the very end of the file. Do not place anything after this, as your file will not be considered clean.\nColumn One : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column One The first column is usually a single character, except for duet mode (see below). They tell the game how to display the note, or if the note is freestyle, a bonus, or a line break. Every chart also has an \u0026rsquo;ending note\u0026rsquo; which is placed at the end of the chart when the last lyric note is finished.\nThe table below lists all the note types that UltraStar commonly uses, and a definition of what those notes do in game. Do ensure you follow the correct layouts and setup for your chart, as the simulator will ignore it if there are any errors!\nKaraoke \u0026ldquo;Note\u0026rdquo; Types The file uses line beginnings to set the \u0026rsquo;note type\u0026rsquo; (lyric type) that the player will see on the screen. UltraStar supports a range of these, and they will be detailed below.\n# = Commands in the note data section are ignored. Some versions of UltraStar will crash if this character is found, and your chart will not be considered a \u0026lsquo;clean\u0026rsquo; txt with any of these characters at the beginning of a line. : = Regular Note. This is one of the most common things you will see in the chart, as it sets most of the song lyrics to be displayed on the screen. These lyrics can be assigned to either Player 1 or Player 2 if that note type is seen before a block, (see P1/P2 below). * = Golden Note. This note often has a sparkly or glow/shine affect around it in game to show the player it is a special note. The notes hit are set for \u0026lsquo;pitch\u0026rsquo; accuracy and can account for up to 10% of the players\u0026rsquo; final score if hit correctly. It is worthwhile tuning those vocal chords (or humming chords)! F = Freestyle Note. This note (or syllable) is usually displayed without a \u0026lsquo;pitch\u0026rsquo; value in game. This allows for songs which have \u0026lsquo;spoken word\u0026rsquo; or normal \u0026lsquo;dialogue\u0026rsquo; pieces, where the singer only needs to speak. These notes sometimes show up when a \u0026lsquo;clap\u0026rsquo; is required in the song as well on some rarer charts. R = Rap Note. This note (or syllable) is usually displayed without a \u0026lsquo;pitch\u0026rsquo; value in game. This allows for songs which have rapping or rhyming style sections, which need to finish on time (OutFox special mode), or the player can be punished. Most simulators do not follow the \u0026lsquo;finish on time\u0026rsquo; rules, and just require the singer to reach a specific input loudness when rapping on per beat analysis. G = Rap Golden Note. This note (syllable) is displayed with a sparkly or glow/shine affect around it in game to show the player it is a special note. It has the affects of the Rap Note above. - = Line Break \u0026lsquo;Note\u0026rsquo;. See \u0026lsquo;Line Break Column Commands\u0026rsquo; above for more details. P1 = Player 1 note. Set Lyrics to Player 1 (Duet only). This allows for songs that require two singers to have distinct colours that signifies player 1 should be singing. This note sets the chart to a duet (see below), which means it is more like a \u0026lsquo;doubles\u0026rsquo; or \u0026lsquo;couples\u0026rsquo; song in the Project OutFox engine. P2 = Player 2 note. Set Lyrics to Player 2 (Duet only). This allows for songs that require two singers to have distinct colours that signifies player 2 should be singing. This note sets the chart to a duet (see below), which means it is more like a \u0026lsquo;doubles\u0026rsquo; or \u0026lsquo;couples\u0026rsquo; song in the Project OutFox engine. P3 = Both Players note. Set Lyrics to BOTH players (Legacy Duet charts only). This allows for songs that require two singers to have a distinct colour that signifies both player 1 and player 2 should be singing. The use of P3 is not common, and we want to use P3 as a third player in a future Harmony option for karaoke mode. E = End Chart note. This character is placed as the end of the chart to set the ending time of the song, and on some versions of UltraStar can be overwritten by #END, though this is uncommonly used by modern charters these days. OutFox Specific Player Blocks P3 = Player 3 note. Set Lyrics to Player 3 (Harmony only). This allows for songs that require three singers to have distinct colours that signifies player 3 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. P4 = Player 4 note. Set Lyrics to Player 4 (Harmony only). This allows for songs that require four singers to have distinct colours that signifies player 4 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. P5 = Player 5 note. Set Lyrics to Player 5 (Harmony only). This allows for songs that require five singers to have distinct colours that signifies player 5 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. Column Two : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Two This column value is in beats and sets the time in the chart when the lyric or syllable appears. This is dependent on BPM, with higher BPM songs showing the note sooner, and lower BPM will take longer to show. Although Project OutFox supports BPM changes and gimmicks, the format itself provides no options for this at all.\nColumn Three : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Three This column value is in beats and specifies the length of time the lyric or syllable lasts. In the example above, the syllable of \u0026lsquo;Some\u0026rsquo; lasts for 2 beats, with \u0026lsquo;body\u0026rsquo; coming in on beat 3. This is important to remember as technically you cannot sing two notes at the same time, and it will be impossible to score this.\nMany simulators will either throw an error or crash on badly formed charts if syllables overlap, for example if \u0026lsquo;Some\u0026rsquo; finished on beat 2, but \u0026lsquo;body\u0026rsquo; started on beat 1, this would be considered an overlap. However, \u0026lsquo;body\u0026rsquo; could start on beat 2 as \u0026lsquo;Some\u0026rsquo; would be considered complete, this is accepted. Just ensure that you never overlap your syllables!\nColumn Four : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Four This column is responsible for the musical pitch of the syllable or lyric that the singer is expected to match or reproduce as the words are displayed on the screen.\nMost UltraStar clients are limited to displaying a single octave on the screen that the singer can see.\nWithout going into too much musical theory, that is usually C -\u0026gt; C. (If you remember the \u0026quot;doe ray me far so la tea doe\u0026quot; song from the Sound of Music These were the main notes of the octave.) At this moment in time we haven\u0026rsquo;t confirmed how our pitch grid will be constructed, as we do not have the limitations of UltraStar or it\u0026rsquo;s derivatives. If you have any thoughts on this, do pop into the discord and give us them!\nThe values used in the UltraStar karaoke files start at 0. I have done a lot of research around the internet, and some people claim that this begins at C3, C1, C0, even C5 in one case!\nBut balancing a midi file of several example tracks and then cross referencing those notes with the syllables / lyric notes provided in the karaoke file shows that the 0 almost always runs on middle C or C4. We have learned that the game shifts the notes by 60 (Middle C MIDI Note) and bases the chart parsing of C0 = 0.\nThe following picture shows a standard piano 88 key layout. I have put this here to show how the format works out pitch and where to put the syllable layout on the screen.\nA common layout showing C4 (Middle C) Let\u0026rsquo;s take a few lines from an UltraStar file:\n: 0 5 4 Hey, : 9 6 4 hey, : 18 4 4 eve : 23 3 4 ry : 28 4 6 bo : 33 4 8 dy! Lets take the note values in column four: 4 4 4 4 6 8.\nUsing the piano layout above, count right the number of piano keys to match the numbers, remembering to count the sharp # black keys as well!\nFour notes on from C4 is E4, six notes on from C4 is F4#, and eight notes on from C4 is G4#. So replacing the numbered notes in musical notation: E E E E F4# G4#. These are the values the game uses for pitch matching, and to display on the pitch grid on screen.\nThis notation also works for negative numbers, you simply count backwards from C4 if the notes required are a lower pitch. Some songs do indeed have the whole base notes below 0, but this is often common with some genres. Be warned not every UltraStar version supports this!\nMost songs that have been charted tend to be within a 6 to 12 note range, so the pitch grids are not massive, and also to prevent the issue on some UltraStar clients where a note from a higher Octave, for example if the chart starts at G4 and there is a note for G5 this higher note would be drawn in the same place as the lower note, as the note would be considered an \u0026lsquo;overflow\u0026rsquo;, and would just be in the normal G4 row on screen.\nWe will add support to shift key for singers in Project OutFox to make it easier for players to sing in their natural range.\nColumn Five : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Five As I am sure you have realised by this point, there has been a glaring error in column 5 on this little example song code snippet! body has two syllables and should be on two different lines!\nAs you can probably tell by now, this column represents the syllable or \u0026rsquo;lyrics\u0026rsquo; that the player will sing in time to the music.\nEach line in the chart specifies a syllable, it\u0026rsquo;s duration, the pitch, and the time (in beats) it is meant to be sung. This format does not support \u0026lsquo;pitch bending\u0026rsquo; during a syllable, to \u0026lsquo;support\u0026rsquo; this, extra lines are often added which have simply a ~ for the syllable, to show that this is a \u0026rsquo;long\u0026rsquo; syllable to the singer. If we were to extend \u0026lsquo;Some\u0026rsquo; above, with a different pitch, the chart would be:\n: 0 2 2 Some : 2 2 4 ~ : 4 3 2 body The game would show Some~ which is used to tell the singer that there is a pitch change, and to sing it as a different pitch.\nAnother important thing to realise is that the words in column 5 will automatically be joined together. If you forget where your spaces are, you will end up having a sentence with no spaces!\nLet\u0026rsquo;s take this chart we used for the column four example:\n: 0 5 4 Hey, : 9 6 4 hey, : 18 4 4 eve : 23 3 4 ry : 28 4 6 bo : 33 4 8 dy! You can see that there are spaces added at the beginning of the lines for \u0026quot; hey,\u0026quot; this is by design; you must pick your space arrangement when making your charts, some editors use \u0026lsquo;space first\u0026rsquo;, and some use \u0026lsquo;space last\u0026rsquo;. \u0026lsquo;Space last\u0026rsquo; places a space after the syllable, so would not begin with one. In the example above, the game would show \u0026quot;Hey, hey, everybody!\u0026quot; in the lyric section.\nIf you are creating charts yourself and tend to leave spaces at the end of lines, or use windows a lot, do take care to see where these spaces are in the file. We will write the parser to support both spacing modes, as is commonly done by UltraStar clients.\nDuet Mode This mode is available for songs which have two singers handling different parts of the song, and often singing the chorus together.\nEach player sings their words, and are scored as normal on the words they sing only.\nIn txt files, these are split up with the use of P1 and P2 in the note section of the file, with many charts repeating words which are sung by both players, but there has been a few charts that use P3 for this.\nIn Project OutFox we\u0026rsquo;re planning to add a \u0026lsquo;Harmony\u0026rsquo; Mode which could support up to five or six singers at once, and this would require the availability of P3 to P6, so it is likely where we will go on this, as P3 usage does not seem common in almost all charts.\nWritten and Maintained with ♡ by Squirrel, with updates from barbeque, and support from Twilight from UltraStar Play, with thanks to My Little Karaoke and the UltraStar community, and Kokairu for their blog at https://thebrickyblog.wordpress.com\n","description":"Project OutFox is working on support on the parser for the Karaoke TXT (UltraStar) chart format, which is the standard format used in conjunction with the karaoke game types. The following page contains details on the Karaoke file parsing options that Project OutFox will support. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTXT Notedata support as of Alpha 0."},{"id":88,"href":"/dev/actors/General-DifferencesfromOlderSM/","title":"Behavioral differences from SM 3.95/ITG","parent":"Lua and Actors","content":" OpenITG, NotITG and SM 3.95 are popular engines based on older versions of StepMania that have communities that continue to support by making new content.\nOutFox contains a similar feature set as the previous revisions of the game, but with some notable differences. This document aims to provide help with porting content to and from the different versions of the game.\n\u0026ldquo;Command\u0026rdquo; format vs \u0026ldquo;Function\u0026rdquo; format Converting commands to the newer function format is generally recommended when porting content to SM5. The following sections detail what these processes.\n\u0026ldquo;Command\u0026rdquo; format In SM3.95 \u0026amp; related engines, commands can be defined inside xml nodes like this:\nOnCommand=\u0026#34;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoom,2;rotationz,180;linear,50;rotationy,-5000;rotationx,750;rotationz,750;sleep,100\u0026#34; (Taken from WinDEU\u0026rsquo;s \u0026ldquo;Golden Slaughterer\u0026rdquo; file from \u0026ldquo;WinDEU Hates You 5EVR\u0026rdquo;.)\nThis is what can be considered \u0026ldquo;Command\u0026rdquo; format, which allowed for easy chaining of actor functions tweens.\nFor a quick translation into SM5, this can be wrapped with cmd(), but this is considered bad practice and inefficient (And it\u0026rsquo;s still counted as \u0026ldquo;Command\u0026rdquo; format). However, it\u0026rsquo;s used a lot in the past, so it\u0026rsquo;s still here for backwards compatibility.\nAnother thing to note is that the functions inside this format (eg: x, rotationz, zoom, etc.) appear to be case-insensitive, all being converted to lowercase in the end. (Although in SM5, this appears to not be the case.)\n\u0026ldquo;Function\u0026rdquo; format In SM5, commands can be defined inside lua tables like this:\nOnCommand= function(self) self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):zoom(2):rotationz(180):linear(50):rotationy(-5000):rotationx(750):rotationz(750):sleep(100) end (The function format version of the earlier command)\nThis is what can be considered \u0026ldquo;Function\u0026rdquo; format.\nThis is not exclusive to SM5, however. SM3.95 \u0026amp; friends can use lua functions inside xml nodes. But there is a caveat: Actor function chaining as seen in the example is not possible in SM3.95/OpenITG/NotITG. Instead, a separate self: would be needed for each function call.\nEverything is case-sensitive in this format, so take care to ensure the casing is corrent.\nActor Differences Because the internals of the engines are different, actors may work differently with the same lines of code.\nZoom and rotation order SM3.95 (and as a result, OpenITG \u0026amp; NotITG) apply the rotation, then apply the zoom. SM5 applies the zoom and then applies the rotation.\nIn Project OutFox, this can be worked around by setting the rotafterzoom attribute to false, returning the SM3.95 behavior.\nThe notes \u0026amp; receptors already have this active to help with easilly replicating modifier effects from the other engines.\nIn SM5.2 and earlier, this has to be done with wrapper states or actorframes. This is done by having the wrapper do the positioning and zooming, while the main actor gets everything else. (This is still doable in Project OutFox if you\u0026rsquo;re aiming to write content for multiple SM5s)\nZoom\u0026rsquo;s effect on the axis SM3.95\u0026rsquo;s zoom function only affected the x \u0026amp; y axis, while zoom affects all three axis in SM5.\nIt\u0026rsquo;s fine for actors like Sprites or BitmapTexts, but it stops being \u0026rsquo;normal\u0026rsquo; when actors like Models come into play.\nThis not only affects actors, but also affects modifiers that play with zoom (eg: Mini, Tiny).\nA workaround is to either use only the x \u0026amp; y zooms or undo any scaling done to the z axis when performing a normal zoom.\nActorFrameTexture\u0026rsquo;s capture method. In NotITG, an ActorFrameTexture (AFT), captures everything that was rendered before it and places it into a texture.\nSM5\u0026rsquo;s AFT captures everything inside of it (Hence, ActorFrameTexture), and places that into a texture.\nThis difference makes for a nontrivial challenge to port content across if AFTs are in use.\nDue to how AFTs work in nITG, lumikey or chromakey shaders are needed if transparent textures of an actor are needed.\nAttribute renames A few of the attributes got renamed, so when porting content, take care to ensure these are dealt with:\neffectdelay (SM3.95) becomes effect_hold_at_full (SM5)\nhidden(0) and hidden(1) (SM3.95) becomes visible(false) and visible(true) (SM5)\nScaling across multiple themes Most themes made for the SM3.95 era are considered \u0026ldquo;480p\u0026rdquo; because it\u0026rsquo;s internal height was always 480 pixels.\nSM5 changes this, with SM5.1\u0026rsquo;s default theme shifting towards a hight of 720 pixels, which can be considered an \u0026ldquo;HD\u0026rdquo; Theme.\nSeveral things have to be scaled in accordance to this, such as:\nZoom (All axis are involved) Positioning (All axis are involved) Effects (Not all need to be scaled.) A Common ratio would be this: SCREEN_HEIGHT/intended_height (for SM3.95-style content, intended_height is 480)\nHowever, this does not apply to every actor. If an actor is inside something that\u0026rsquo;s already scaled (eg: the NoteField inside the scaled Player), it does not require the above scaling.\nModifier Differences Some modifiers have completely different behavior, which can make porting modifier-related content less trivial.\nTiny In SM5, positive tiny brings the columns together similar to what Mini visually does. NotITG instead only zooms the notes.\nThe only options are to combine column movement modifiers to counteract the movement, use the column-specific variants instead, or use tinyx \u0026amp; tinyy (which is technically closer to what nITG\u0026rsquo;s Tiny actually does).\nThis only affects the original Tiny modifier, and not its\u0026rsquo; variants.\nThe zoom equation is different. SM5 uses this equation: 0.5^strength, while NotITG uses this one: 1 - 0.5*strength. (100% == 1.0 for the strength) It just so happens that NotITG\u0026rsquo;s equation is the exact same one Mini uses for notefield zoom.\nIn OutFox, this can be altered with the TinyUsesMiniCalc sub-modifier. When active, it switches to NotITG\u0026rsquo;s equation, which allows for a wider range of zooms.\nIn SM5.2 and earlier, this can be somewhat replicated by taking the two equations and solving for the equivalent strength. (Doesn\u0026rsquo;t work for negative strengths in NotITG, through)\nThis affects every variant of Tiny.\nDifferences from older SM5 builds Project OutFox changes the default behavior from the older SM5 builds. This section documents those changes.\nColumn-specific function changes Instead of typing \u0026lt;mod name\u0026gt;\u0026lt;\\column number\u0026gt; (As in SM5.1), you now type \u0026lt;Mod Name\u0026gt;Col, and the first parameter is the column number. It also allows for mass applications by passing nil as the column number.\nPlayer vanish point In SM5.2 and earlier (due to a math error), the player\u0026rsquo;s vanish point at the x axis is skewed towards their side of the screen instead of being directly at the center of the notefield. This is not an issue in SM5.0.7 and earlier or in OutFox and later.\nFor example: P1 is at the left half of the screen, so its\u0026rsquo; vanish point is slightly skewed towards the left edge of the screen.\nvibrate() now takes the current zoom into account This is similar to how it behaves in SM3.95/ITG.\nSM5.1 and earlier take the endpoint zoom and use that for vibrate.\nFor example:\nactor:vibrate():zoom(20):linear(2):zoom(0) Would result in no visible vibration because the end point is 0, while in OutFox and SM3.95, one would see the vibration start at 20 and go down as the zoom reaches 0.\nLua is more strict with escape sequences. In older builds of SM, an invalid escape sequence is ignored, with the offending \\ removed. In Lua 5.3 (and consequentally, Project OutFox), this now causes a lua error, which may result in themes or effect files not running correctly or at all.\n","description":"OpenITG, NotITG and SM 3.95 are popular engines based on older versions of StepMania that have communities that continue to support by making new content.\nOutFox contains a similar feature set as the previous revisions of the game, but with some notable differences. This document aims to provide help with porting content to and from the different versions of the game.\n\u0026ldquo;Command\u0026rdquo; format vs \u0026ldquo;Function\u0026rdquo; format Converting commands to the newer function format is generally recommended when porting content to SM5."},{"id":89,"href":"/dev/effects/EffectFiles-ChartSegments/","title":"Chart segments","parent":"Effect Simfiles","content":"Gimmick charts often involve a large amount of BPM changes or stops to create various effects like stutters, wave-type scrolling or switching notes with other types of notes (ex: notes become mines).\nThis is done with \u0026ldquo;segments\u0026rdquo;. One can have many instances of a segment type.\nThe SSC simfile format has extra \u0026ldquo;segments\u0026rdquo;, which allow for other effects. The following list notes what is available and what it is supposed to do.\nSM-era segments These segments can be found in .sm files, but they can also be in .ssc files, too.\nBPM changes (BPMS) Every chart has a BPM, but it doesn\u0026rsquo;t have to stay at one BPM. Some songs do change BPM throughout, but some charts do this for doing stutters (when combined with stops) or having notes speed towards or slow down. Visually ignored if CMod is used (But may result in weird spacing with regards to note quantization).\nIn the simfile, it\u0026rsquo;s listed as the beat the change happens, and then the BPM to change to. The BPM listed at beat 0 is the starting BPM.\nIn SM3.95 and oITG/nITG, negative BPMs can be used to \u0026lsquo;warp\u0026rsquo; through the chart. SM5 converts these to warp segments automatically, but the result may not be perfect. (SM3.95 can use this to make autohit notes, or artificially lower the possible score. SM5 can\u0026rsquo;t)\n#BPMS:0.000=256.000,42.000=128.000,56.000=256.000; (ex: a chart that starts at 256 BPM, changes to 128 BPM at beat 42, then changes back to 256 BPM at beat 56)\nStop segments (STOPS) Stop segments tell the game to stop scrolling the chart for a given amount of seconds. Visually ignored if CMod is used.\nThis also makes the beat stop while one is active. (So, if you were printing the beat, it would stop incrementing during the stop segment)\nIn the simfile, it\u0026rsquo;s listed as the beat the stop happens, and then how long the stop is (in seconds).\n#STOPS:27.000=3.141; (ex: at beat 27, the chart stops scrolling for 3.141 seconds)\nKeysounding (KEYSOUNDS) SSC-era segments When SSC created the .ssc format, new segment types were added.\nDelay segments (DELAYS) Warp segments (WARPS) Tells the game to teleport foreward a given number of beats into a chart. Any notes that are skipped get counted as fake.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, then how many beats foreward to teleport.\n#WARPS:28.000=4.000; (ex: at beat 28, teleport foreward by 4 beats.)\nTime Signature segments (TIMESIGNATURES) Tick Count segments (TICKCOUNTS) Sets how many hold ticks happen in a hold per measure. Starting value defaults to 4. Only really used in pump mode, due to other games not having hold checkpoints.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, then the actual tickcount amount.\n#TICKCOUNTS:0.000=4, 28.000=8 (ex: At beat 28, a hit becomes 2 combo, and a miss becomes 4 misses.)\nCombo segments (COMBOS) Sets how much combo a hit or miss adds. The default is 1/1, which means a hit gets 1 combo and a miss gets 1 miss.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, how much combo a hit is and then how much combo a miss is. If a single number is listed, both hits and misses get the same value. Weird behavior, such as underflows can happen if negative values are used.\n#COMBOS:0.000=1, 28.000=2=4; (ex: At beat 28, a hit becomes 2 combo, and a miss becomes 4 misses.)\nSpeed segments (SPEEDS) Sets the speed of the chart by ratio. 1 is the normal speed. If given a length of 0, the change happens instantly. The default starts with a speed of 1, applying at beat 0 instantly. Visually ignored if CMod is used.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, the speed to go to, how long the change takes and whether it\u0026rsquo;s in beats or seconds.\n#SPEEDS:0.000=2.000=0.000=0, 16.000=4.000=1.000=0, 24.000=1.000=2.000=1; (ex: Chart starts at a speed of 2, on beat 16, it turns to a speed of 4 in 1 beat, and on beat 24, it turns to a speed of 1 in 2 seconds.\nScroll segments (SCROLLS) Allows one to alter the scrolling factor for a section (as opposed to the whole field). When given a factor of 0, the chart stops visibly scrollnig, but notes can still be hit. Visually ignored if CMod is used.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, and then the factor to switch to.\n#SCROLLS:0.000=1.000, 24.000=0.000, 28.000=2.000; (ex: The chart starts with a factor of 1, switches to a factor of 0 at beat 24, and switches to a factor of 2 at beat 28)\nFake segments (FAKES) Allows one to mark a section of the chart as fake, which means the notes can\u0026rsquo;t be hit or judged.\nIn the simfile, it\u0026rsquo;s listed as the beat the fake segment is at, and then how long the section is in beats.\n#FAKES:24.000=8.000; (ex: at beat 24, don\u0026rsquo;t judge the notes for 8 beats)\nLabel segments (LABELS) Allows one to mark the start of a section with a name. The default label is \u0026ldquo;Song Start\u0026rdquo; at beat 0.\nIn the simfile, it\u0026rsquo;s listed as the beat the label is at, and then the name of the label.\n#LABELS:0.000=Song Start;\nNotITG has an advanced version called \u0026ldquo;Spellcards\u0026rdquo;, which have a start beat, end beat, difficulty, name and color\n","description":"Gimmick charts often involve a large amount of BPM changes or stops to create various effects like stutters, wave-type scrolling or switching notes with other types of notes (ex: notes become mines).\nThis is done with \u0026ldquo;segments\u0026rdquo;. One can have many instances of a segment type.\nThe SSC simfile format has extra \u0026ldquo;segments\u0026rdquo;, which allow for other effects. The following list notes what is available and what it is supposed to do."},{"id":90,"href":"/dev/theming/Theming-2-Screen-Creation/","title":"Creating a custom screen","parent":"Introduction to theming","content":"OutFox allows for creations of screens outside of the engine scope. This can be useful for elements that want to, for example, have no involvement with the engine at all, and want to process information with your own custom code.\nCreation of screen definitions For this, you will need to add the following to the metrics.ini file, mentioned on a previous chapter.\n# This will be the name for the screen, which we can access in a moment using a metric command or lua. [MyCustomScreen] # This will determine what elements will take for loading as a failsafe once it begins. # For this example, we\u0026#39;ll use ScreenWithMenuElements. Fallback=\u0026#34;ScreenWithMenuElements\u0026#34; As you notice, we\u0026rsquo;re using the Fallback item. This is to have an existing screen as a fail-safe which makes the engine call existing elements that this new screen does not have at the moment, such as its screen overlays, sounds, graphics, etc. By using this, it also fetches its class. Every single screen created must contain some kind of class, otherwise the engine will not know how to respond to it and crash or send out an error. If you are unsure which class to use, you can rely on ScreenWithMenuElements, as it is the most basic screen class type, and the skeleton for every other class. Acessing the screen Now with the metric information added, we have to have a way to enter the screen. There are mainly 3 ways to send the user to the screen.\nMethod 1: Using InitialScreen This method will make the screen be the first one loaded as soon as the engine is loaded, which is useful for testing elements that may require a full restart or need quick access to such screen when performing extensive development.\nFor this, the following needs to be added to the metrics.ini file.\n[Common] # Replace the string with the name of your new screen. InitialScreen=\u0026#34;YourScreenName\u0026#34; Method 2: Using metrics This makes use of an existing ScreenSelectMaster object to use one of its Choice option commands to include the new screen. For this example, we\u0026rsquo;ll use a ScreenTitleMenu metric set, which only contains the minimum to modify what the choices will perform.\n[ScreenTitleMenu] # ChoiceNames will deal with what are options to create on the scroller. # Notice that some of the options here are not present below, and that\u0026#39;s because # _fallback will take care of filling that information in as a fail-safe. ChoiceNames=\u0026#34;GameStart,Options,Edit,Jukebox,GameSelect,Exit\u0026#34; # The actual choices. Notice the applydefaultoptions segment in the string. # This is used to reset the player\u0026#39;s options back to default given some arcade settings. ChoiceGameStart=\u0026#34;applydefaultoptions;text,Game Start;screen,\u0026#34;..Branch.AfterTitleMenu() ChoiceOptions=\u0026#34;screen,ScreenOptionsService;text,Options\u0026#34; ChoiceEdit=\u0026#34;text,Edit/Share;screen,\u0026#34;..Branch.OptionsEdit() ChoiceExit=\u0026#34;screen,ScreenExit;text,Exit\u0026#34; To change what screen to move into, just change the value of any of the screen segments on that example, and then reload your metrics with Shift + F2. Let\u0026rsquo;s use ChoiceOptions as an example.\nChoiceOptions=\u0026#34;screen,YourScreenName;text,Options\u0026#34; Method 3: Using Lua to redirect In an existing Lua file, you can call ScreenManager to set a new screen, using SetNewScreen. As soon as this command is called, the new screen is created.\nSCREENMAN:SetNewScreen( \u0026#34;YourScreenName\u0026#34; ) Another method to set a new screen within Lua, is to change the name of the NextScreen to the new screen that has been created.\n-- Set the next screen to our new one. -- With this, you would be done for most screens that only need a start press to go to the next screen. SCREENMAN:GetTopScreen():SetNextScreenName( \u0026#34;YourScreenName\u0026#34; ) -- However, if your screen needs to loaded now but you want transitions to be played, use -- the PostScreenMessage command to call the out animation. SCREENMAN:GetTopScreen():PostScreenMessage( \u0026#34;SM_GoToNextScreen\u0026#34;, 0 ) Both of these commands can be chained to avoid fetching all screen data multiple times.\nSCREENMAN:GetTopScreen():SetNextScreenName( \u0026#34;YourScreenName\u0026#34; ):PostScreenMessage( \u0026#34;SM_GoToNextScreen\u0026#34;, 0 ) ","description":"OutFox allows for creations of screens outside of the engine scope. This can be useful for elements that want to, for example, have no involvement with the engine at all, and want to process information with your own custom code.\nCreation of screen definitions For this, you will need to add the following to the metrics.ini file, mentioned on a previous chapter.\n# This will be the name for the screen, which we can access in a moment using a metric command or lua."},{"id":91,"href":"/user-guide/meta/faq/","title":"FAQ","parent":"Front Matter","content":"This page has some of the more commonly asked questions pitched to us from the community, remember if you cannot find your answer here, feel free to ask in the discord server!\nWill OutFox still work with my old songs/themes/etc..? Project OutFox builds upon the existing StepMania 5.0.12/5.1 beta codebase, and maintaining backwards compatibility with older content is one of our main priorities. Content that worked on StepMania 5.0.12/5.1 (including songs, themes, and noteskins) should still work on OutFox. If you experience any issues/weirdness, please report it to us.\nSide note for developers\nPlease note that we are deprecating the use of semicolon-separated cmd() blocks (i.e. OnCommand=cmd(linear,1.5;diffusealpha,1); ) as a means of placing commands on actors in Lua scripts, as this method is a non-standard Lua function that was created for StepMania, and OutFox is not optimized with this coding style in mind (themes may experience performance penalties if they use this method). It is strongly recommended that function chaining (i.e. code such as OnCommand=function(self) self:linear(1.5):diffusealpha(1) end, ) be used instead.\nCan I install it alongside existing versions? Yes. Our installer on Windows also defaults to portable mode, so user profile data is stored in your installation directory.\nIf you would like to have a shared song library between multiple builds, you can use the AdditionalSongFolders preference in Save/Preferences.ini to specify a path. Learn how to here\nWhere should I report Bugs, request features and post game crashes? If you can, do those in our Issue Tracker Repository, by creating an issue it\u0026rsquo;ll give you those exact options that I mentioned in the question.\nYou can also use this Discord Server:\nUse \u0026ldquo;feature-request\u0026rdquo; channel to request features or give ideas. Use \u0026ldquo;bugs-crashlogs\u0026rdquo; channel to report bugs and game crashes.\nYou can also use our forum\nAre there ways I can contribute? You can report bugs and make feature suggestions on our Discord server. TinyFoxes is coordinating and hosting community-produced content for Project OutFox, such as translations and other add-ons. How do I get logs? Go into your game folder and check if there\u0026rsquo;s a file called portable.ini (or just portable if your system doesn\u0026rsquo;t display file extensions). If there\u0026rsquo;s a portable.ini in your game folder then all you need to do is open the Logs folder and you\u0026rsquo;ll find all logs, the most important one being log.txt. (Try to do this after closing the game)\nIf there\u0026rsquo;s no portable.ini in your game folder, then you need to go into a specific path based on your OS:\nWindows: appdata/roaming/Project OutFox Mac: ~/Library/Logs/OutFox/ Linux: /home/user/.OutFox Why do I have to configure my pad while older versions of StepMania could work with no problem? Project OutFox uses XInput, it means controllers need to get mapped first and then never again. It means every single controller should work with Project OutFox\nThe game doesn\u0026rsquo;t even try to auto-map things yet, there\u0026rsquo;s a tutorial step-by-step how to map\nI\u0026rsquo;m new to this community and I don\u0026rsquo;t understand many terms, could you explain what they mean? Chart: How we call Songs that you can play in OutFox. (osu! players calls them Maps) Mods: Modded charts that uses Lua to change how the game operates. Pad Chart/Keyboard Chart: If the chart was design for people that play in pad or for keyboard. Hold: A note that you have to hold to not miss it. Drill/Roll: A note that you have to keep hitting to not miss it. NG: Missed Hold/(Drill or Roll) Doublestep: When you have to use the same foot to hit 2 different notes. RUDRU for example (R = Right, U = Up, D = Down) Ghosttap: When you hit a place where there\u0026rsquo;s no step. 4th,8th,12th: Note types and colors, 4th: red arrow (hit after each beat), 8th: blue arrow (hit after each half beat), 12th: green arrow (hit after each 1/3 beat)..it goes on. Playfield/Notefield/Receptors/PlayerBoards: The targets that notes are going to reach. In dance, the 4 notes that are always at the top. In pump, the 5 notes that are always at the top. Lifts: Note that you have to stop holding the moment they reach the play field. Will Project OutFox go open source? Yes, in the future.\nFrom the Team:\nThe project began as a method to add online and profiles to SM5, but when we looked into the engine to see how this could be appropriated it was discovered just how much in a sorry state the code base was, and it looked mostly abandoned. We spoke to Shakesoda in hopes of a resurrection in the form of a team project, and it was requested rather than breaking 10 years of content and community to take the time to make a proper 5.x build that is stable and supports what the community as a whole wants from the game. This backward compatibility support has been very problematic to maintain, but it\u0026rsquo;s something now we are down the line which we are proud of, as it has brought many newcomers and veteran players back to the community, and provided a very stable experience for folks during the lock down. We will continue to try to attain a near 100% compatibility where we can, and this is taken into consideration whenever we plan a new feature or change engine components.\nIn the beginning of the project we wanted to be the natural progression of 5.1, but due to resistance and feedback from the community, we have made the decision to adjust the returning of code back to the repo in the future. The aim has always been to open source when the project is in a releasable state, which gives us enough time to realise our plans for the project and the direction we wanted to take OutFox in. We read the community loud and clear in terms of their wishes and needs for StepMania, so we will not disturb that paradigm.\nWe asked if it was ok to close the source while this process was done, and it was deemed wise for the health of the repo and the need of people who are just wanting to play. Its why we\u0026rsquo;ve been around the repo but not on it as taint can happen and we do not wish this. SSC did this same behaviour before us, so we did not see it as a problem. Some vocal members of the community disagreed, including some of the previous SMDev Team. We have also been compared to past SM repo contributors who may have left a less than savoury memory in the minds of some, and it has also been hard to differentiate from history we have no involvement with.\nMoving forward with the project, it has become apparent that OutFox has moved beyond a lot of what the community expects StepMania to be, and has grown into a project that is well beyond just being a DDR or ITG clone. We have had to \u0026lsquo;rename\u0026rsquo; our internal branding and naming conventions away from StepMania, this was due to us wishing to license/digitally sign the binaries we make, and with gaining this with the SM name being almost impossible, we had to change name to OutFox. Moving forward we continue to keep this promise to ensure our builds are signed on Mac OS (and soon Windows) so it makes the game play experience better for everyone. With us also releasing on Steam it has become even more important that we continue consistent naming conventions.\nThe project is about providing a free game with unencumbered assets and also packs of properly licensed content for the community, and this covers more than dance alone. We are not for profit, we do not ever wish to profit from this community, as we have been part of it for so long. We will announce more information in due course about our future, for now we are as excited as you on the progression of this project.\nMy controller doesn\u0026rsquo;t work, but it did on older versions of StepMania. Currently the game features two modes: a HIDAPI-based \u0026ldquo;Legacy\u0026rdquo; input system, similar in behaviour to the input system seen in StepMania 5.0, and an XInput-compliant input system (additional configuration is needed to use unrecognized controllers in this mode, see here for more information). If you are unable to map any buttons to the game, try switching modes to Legacy, available as an option in the Experimental Settings menu, or follow the guide mentioned above on how to map your controller with XInput.\nIs online mode available yet? If not, is it coming? Short answer: no it\u0026rsquo;s not available, yes it\u0026rsquo;s coming. Long answer: It\u0026rsquo;ll take a while, the engine is still being optimised and the online system is still in development (being done by Cube).\nThis doesn\u0026rsquo;t mean Online isn\u0026rsquo;t important for us, it\u0026rsquo;s a lot, it was one of Team Rizu first plans but the engine just wasn\u0026rsquo;t ready for their plans.\nResume: As your read this, both the game engine and online mode are still in development.\nHow do I insert Noteskins/Themes/Avatars/Judgments/Toasties into Project OutFox? In the game folder there\u0026rsquo;s a folder called Appearance, where you\u0026rsquo;ll find a folder for each of those mentioned features.\nFor Avatars Open Avatars folder and drop any png, jpg, gif into there with any name you want. Now in-game go into Options \u0026gt; Profiles \u0026gt; Select any already created profile (or create one) \u0026gt; edit \u0026gt; change avatar image, now you can select any image that is inside the Avatars folder.\nFor Themes Open Themes folder and drop here any theme that supports 5.x.\nFor Noteskins Open NoteSkins folder, open the folder that represents what game mode the noteskin is made for, drop the NoteSkin Folder there.\nYou can find more noteskins in https://projectoutfox.com/addons/noteskins\nFor Judgments Open Judgments, drop the judgment image there. Do not change the name of the judgments you download, they\u0026rsquo;re important so the game knows what part of the image the game should get)\nFor Toasties Open Toasties, drop the game Toasty folder there. (The game can come with 2 toasties in the installer options)\nI have an ancient Intel Card and the game does nothing but crash! If your log shows WDDM1.0 or WDDM1.1 at the end of the graphics card name:\n00:00.505: Last seen video driver: Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0) or the log shows Microsoft GDI as the Renderer\nThen you are running the OpenGL crippled \u0026lsquo;windows\u0026rsquo; driver that is downloaded on a fresh install. Project OutFox will not work on these drivers, as we do not support DirectX anymore (the old D3D renderer that 5.0.12/5.1 has)\nThere is a list of drivers at this site location that may help, but for some of these cards, you need to keep your windows 7 install disc handy!\nhttps://www.intel.com/content/www/us/en/support/articles/000005733/graphics.html\nUpdate: If you accidentally updated your windows to beyond the support given to you by Intel, so you moved to windows 8.1/10 from 7 then there is still hope! you can take a chance with the Mesa OpenGL replacer for legacy software, which adds an API extension over Microsoft. You can find it here: https://github.com/pal1000/mesa-dist-win/releases/latest\nHOW TO USE?\nDownload Mesa3d for Windows: mesa3d-xxxx-release-msvc.exe\nExtract it (either with a double-click or right-click 7-zip) In the extraction folder of Mesa, go to x64, select and copy opengl32.dll In the extraction folder of Project OutFox, go to /program and paste opengl32.dll it may now use the proper dll Also see https://fdossena.com/?p=mesa/index.frag for a windows working solution.\nAnd for a detailed guide for intel users: (Some computer literacy needed) https://gist.github.com/rb-dahlb/26f316c5b6089807a139fc44ee69f0d1\nHow can I know who works on OutFox and who to trust? Everyone on this list is part of OutFox Team and works on OutFox: see list\nInternational Moderators/Translators/Alpha Testers/Tiny-Foxes indirectly helps OutFox development but they aren\u0026rsquo;t part of the OutFox Team.\nIf you see anyone else saying they work on OutFox then do not trust and please report to us. You can always ask at our Discord Server\nLinux I get the error \u0026ldquo;error while loading shared libraries: libOpenGL.so.0:\u0026rdquo; Install either libglvnd and/or libopengl0 based on your distro. On some distros the package is known as libglvnd-opengl.\nMac I\u0026rsquo;m having issues launching the game and I have Alpha 4.9.5 or lower. If you receive errors such as \u0026ldquo;No noteskins found\u0026rdquo; or other unusual behavior, you will have to change macOS security settings in order for Project OutFox to operate correctly. MacOS performs a process every time a new program has been downloaded called quarantine, which will require Gatekeeper (The OS\u0026rsquo;s security manager) to verify its signature. The OS does not trust unsigned applications, and prevents access to external files unless given manual permission by the user.\nTo do this, open Terminal and run the following command: xattr -dr com.apple.quarantine /path/to/OutFox, replacing /path/to/OutFox with the path to the directory containing the OutFox executable (manually typing it out, or dragging the folder containing the game executable directly onto the window to fill it automatically).\nQuarantine video example\nOn older builds, macOS Catalina also generated a message stating that the game was requesting permission to receive keystrokes from any application. This was a side effect of previous code that has since been removed.\nThe game is rendering small in the bottom corner of the window. This is due to the renderer not supporting scaled screens yet. To fix this, right-click the game executable and select \u0026ldquo;Get info\u0026rdquo; (or highlight the file and press Command (⌘)+I, and toggle the \u0026ldquo;Open in Low Resolution\u0026rdquo; option under General.\nWhat modes does OutFox currently support? The modes as of Alpha 4.14.0 (April 2022) are as follows:\nName | Description ----------|------------ dance | The classic 4k dance game + Solo (3, 4, 6 and 8 (Double) Panels) pump | 5k diagonal dance game (5, 6 (HalfDouble), 10 (Double)) based off of the pro era (SM4) kbx | 1-19 Keys ez2 | Ez2Dancer (3 Panels with 2 Sensors, 3 Panels with 4 Sensors and 6 Panels with 4 Sensors (Double)) para | Para Para Paradise (5, 8, and 10 Sensor) ds3ddx | Dance Station 3DDX (4 Panels with 4 Sensors, 5 Panels with 4 Sensors and (Double) versions of these) be-mu | (formally beat) BMS (5, 7, 10 (Double) and 14 (Double) Keys + Scratch) maniax | Dance Maniax (4 and 8 (Double) Sensors) techno | TechnoMotion (4, 5, 8. 9, 8 (Double), 10 (Double), 16 (Double) and 18 (Double) Panels) taitai | A \u0026#39;don da don\u0026#39; styled mode po-mu | PMS (3, 4, 5, 7, 9 and 18 Keys) gddm | DTX drum style (5, 9 and 10 piece) gdgf | DTX based guitar style (5 Guitar/Bass, 3 Guitar/Bass) (6 Guitar support Coming soon!) gh | Guitar style (5 Solo/Backup, 6 Solo/Backup) smx | 5k cardinal style dance game (5 Solo/Backup, 6 Solo/Backup) stepstage | Based on the defunct game Stepping Stage by Jaleco in 2000 (single and twin) kickbox | Obscure lash a soft dance pad to a punching bag mode (4, 6, 8 sensor Mode) The Modes we can talk about are as follows: PLEASE NOTE: These are proposed and are scheduled on the road map, limitations or code problems may delay or change these modes, so it is why there is no date or ETA given.\nName | Description ----------|------------ piu | A major refactoring to a more accurate mode, to update it to closer to mainline style djh | Some DJ\u0026#39;s could be the hero cdj | Some DJ\u0026#39;s are just crackin! kbm | bmson 24/48k support piano | up to 88k piano support drum | A midi based drum mode with 20 parts simulating a full yamaha DTX drum kit karaoke | A (.. do i need to explain this?) singing mode. Will happen if squirrel gets off his butt jam | A mode properly supporting O2Jam and it\u0026#39;s modes, with full .OJM loader support d86.4 | Feet dance Station Radio 3 panel rb | band style drums (5 lane) What NotesLoaders Does OutFox Support? The NoteLoaders as of Alpha 4.15.0 (June 2022) OutFox Supports and their level of completeness to the specifications:\nName | Notes: ---------|------------ BMS | 92% See Wiki for more details BME | 92% (beat loader for extended/PMS) BML | 100% (beat loader for long notes extension) BGF | 100% (beat loader for GF proposed) BMSON | 10% (beat loader for 24/48k) CHART | 90% (gh/rb loader) DTX | 95% (gddm 95% / gdgf 90%) DWI | 100% (as we know) GDA | 100% (gddm 95%) KSF | 100% (as we know) MC | 10% (Malody loader) MID | 80% (gh/rb loader) OTO/.osz | 70% (O!Mania 95%, O!Taiko 60%) PIU | 80% (+ SSC v0.81 parser for F2/P1 specific) PMS | 100% BMS98 / 94% BME 2004 QUA/.qp | 94% (Missing Warps) SM | 100% (+ OF fixes) SSC | 100% (+ OF fixes v0.84 proposed) TJA | 65% (Taiko loader in progress) PLEASE NOTE: These are proposed and are scheduled on the road map, limitations or code problems may delay or change these modes, so it is why there is no date or ETA given.\nName | Notes: ------|------------ OJM | 0% ??? | 0% ??? | 0% ","description":"This page has some of the more commonly asked questions pitched to us from the community, remember if you cannot find your answer here, feel free to ask in the discord server!\nWill OutFox still work with my old songs/themes/etc..? Project OutFox builds upon the existing StepMania 5.0.12/5.1 beta codebase, and maintaining backwards compatibility with older content is one of our main priorities. Content that worked on StepMania 5.0.12/5.1 (including songs, themes, and noteskins) should still work on OutFox."},{"id":92,"href":"/user-guide/games/bemu/","title":"Game Module: be-mu","parent":"Supported Game Modules","content":"\nbe-mu seven key long note game-play, default legacy theme\nbe-mu seven key mine game-play, default legacy theme\nAbout History: This mode started life as a notes loader for obscure dance charts created in 1998, with 4 key and 6 key being supported. 4k doubles seemed to appear around 2000, before being replaced completely with MSD/DWI around the same time. The loader has been present for a very long time in the games history, not adding actual BMS support until 2003. There are still a number of charters that prefer keysounded dance charts, and for that reason we keep support for those in the engine to this day.\nThe mode was added in the 3.0 beta era, starting off life as a simple mode with no keysounds or even using the correct keys. The familiar 7K setup we know and love was added later in 2005.\nThe mode did not see much use and fell into having a broken notesloader around the summer of 2010, making it not work with older BMS files, or files with BME or BML extensions. Many files were misinterpreted or just did not load at all, and some were even seen as po-mu songs when they were not. The game also wiped any BMS charts with the same difficulty or \u0026rsquo;level\u0026rsquo;, meaning the multichart methods BMS authors used were non-functional. The overdue revamp of the loading system in 2021 and 2022 fixed many of these bugs, allowing this mode to function and flourish once more. As of Alpha 4.14.0 the be-mu mode parsing support is almost complete, with only #TOTAL and #RANK support left to implement.\nIntroduced: (These styles are not in this mode, they are here for completion as being history for the BMS protocol)\n4 Key (Up/Down/Left/Right): Between StepMania 0.64 and 0.9 - (ddr-single4) (17 October 2001) 8 Key (Up/Down/Left/Right-Up/Down/Left/Right): Between StepMania 0.64 and 0.9 - (ddr-double4) (20 November 2001) Main BMS styles:\n5 Key (LW/LB/CW/RB/RW/Scratch): First Seen:\nStepMania v3.0 beta 6 - (BM-Single) (1 January 2003) StepMania v3.0.2 - (BM-double) (28 October 2003) sm-ssc v1.2.5 - (beat-versus5) (11 May 2011) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) Replaced by:\nStepMania v3.0.2 - (single5) (25 September 2004) StepMania v3.0.2 - (double5) (25 September 2004) Replaced by:\nStepMania v4.0 CVS - (beat-single5) (7 October 2005) StepMania v4.0 CVS - (beat-double) (7 October 2005) Replaced by:\nsm-ssc v1.2.5 - - (beat-double5) (7 October 2005) 7 Key (FLW/LB/LW/CB/RW/RB/FLW/Scratch): First Seen:\nStepMania v3.0 beta 6 - (BM-Single) (1 January 2003) (Non-Functional) StepMania v3.0.2 - (BM-double7) (28 October 2003) sm-ssc v1.2.5 - (beat-versus7) (11 May 2011) Replaced by:\nStepMania v3.0.2 - (BM-single7) (28 October 2003) Replaced by:\nStepMania v3.0.2 - (single7) (25 September 2004) StepMania v3.0.2 - (double7) (25 September 2004) Replaced by:\nStepMania v4.0 CVS - (beat-single7) (7 October 2005) StepMania v4.0 CVS - (beat-double7) (7 October 2005) Replaced by:\nStepMania v4.0 CVS - (beat-single7) (7 October 2005) StepMania v4.0 CVS - (beat-double7) (7 October 2005) mode renamed to be-mu (12th December 2021) IIDX 5 and 7 Key (FLW/LB/LW/CB/RW/RB/FLW/Scratch): First Seen:\nStepMania v3.0.2 - (single7) (13 February 2004) StepMania v3.0.2 - (double7) (13 February 2004) StepMania v3.0.2 - (single5) (13 February 2004) StepMania v3.0.2 - (double5) (13 February 2004) StepMania v3.0.2 - (single5 (edit)) (13 February 2004) StepMania v3.0.2 - (double5 (edit)) (13 February 2004) Removed:\nStepMania v3.0.2 - (single7) (25 September 2004) StepMania v3.0.2 - (double7) (25 September 2004) StepMania v3.0.2 - (single5) (25 September 2004) StepMania v3.0.2 - (double5) (25 September 2004) StepMania v3.0.2 - (single5 (edit)) (25 September 2004) StepMania v3.0.2 - (double5 (edit)) (25 September 2004) This mode was merged back into the \u0026lsquo;bm\u0026rsquo; mode due to a duplication of styles. The IIDX side of the simulator was barely used, so it made sense to move towards the BMS specification which was more common at the time.\nSupported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script.\nThe table below lists the supported files and their types that be-mu supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms/.bme/.bml BMS be-mu 6k / 12k / 8k / 16k 5k+scratch / 7k+scratch be-mu charts .bms/.bme/.bml BMS be-mu 5k / 10k / 7k / 14k 5k / 7k be-mu charts without scratch (as of alpha 4.16) Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. There is a \u0026lsquo;scratch\u0026rsquo; lane designed to be a rotary controller, and 5 or 7 buttons which need to be pressed when the item reaches the receptor. This game mode cannot accidentally play po-mu charts any longer as that now is done via a different loader.\nMechanics key sounded\nThe notes in this mode are based off of small clips of audio that react when you press a key. This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for be-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\n#TOTAL can edit the gauge, and this is a new feature to Project OutFox, as our health bar system was inherited by StepMania so needed a rewrite and new code implemented.\nModding Charting Controls The game is played best on a controller. It uses a jog wheel \u0026lsquo;scratch\u0026rsquo; and two rows of keys diagonally aligned (almost like a piano style), with 2 black 3 white for 5k, and 3 black 4 white for 7k.\nThe player uses a combination of button presses to pass the songs, often using a wrist movement to trigger the \u0026lsquo;scratch\u0026rsquo; support. OutFox supports the arcade style and home console controllers out there, and several players have reported success playing the game on a MIDI DJ controller. Since 4.15.1 with the Up/Down jogwheel support, this mode is even more playable.\nThe original PSX/PS2 era controllers can be unusually difficult to use, so be mindful if they stick or are a bit stiff, they likely need a good service and clean.\nTrivia BMS charts originally were used for DDR and SOLO mapping in 1999 for dance style simulations, and had some obscure channel mapping long since lost to the known world - (no-one uses this older methodology anymore). However, the notes-loaders can still load the common layouts, when the BMS load was expanded, it was decided to keep this legacy in the code. This functionality was broken for a short time in alpha 4.12 and restored in 4.15 due to Squirrel making an oopsie.\nbe-mu once incorporated loading all of the BMS type charts, including PMS, this unfortunately caused a lot of charts to break and not load correctly in older builds of SM5 so this behaviour was removed.\nThe old kb7 mode used a custom channel methodology built into BMS in the early SSC builds. This behaviour was also maintained in the rewrite so those old charts work, however the mode style is different in Project OutFox now.\nAlthough the original spec of BMS supported mines, these were not implemented in older builds of SM5. This support has been added in Project OutFox.\nThe BMS format has spawned many derived formats, with many of these slowly being supported in the game.\nWritten and Maintained with ♡ by Squirrel\n","description":"be-mu seven key long note game-play, default legacy theme\nbe-mu seven key mine game-play, default legacy theme\nAbout History: This mode started life as a notes loader for obscure dance charts created in 1998, with 4 key and 6 key being supported. 4k doubles seemed to appear around 2000, before being replaced completely with MSD/DWI around the same time. The loader has been present for a very long time in the games history, not adding actual BMS support until 2003."},{"id":93,"href":"/user-guide/games/bongo/","title":"Game Module: bongo","parent":"Supported Game Modules","content":" About It parses files made for taitai into a lane mode to play on a bongo based controller, or bongo based midi controller. One must hit the left or right bongo drum when it reaches the receptor, or clap your hands when the star appears. Scoring and timing windows are yet to be decided.\nHistory: The parser support for the mode is currently actively developed, and the chart support will be aligned with the taiko simulator based parser support. We can parse .osu/.osz (Mode 1 taiko) and .tja files, although some of the scroll and time signature math needs to be concluded. As of alpha 4.18 the parsers are about 60% complete.\nIntroduced: Bongo (LeftDrum, RightDrum, clap): First Seen:\nProject OutFox LTS 4.18.0 / alpha 5.0.0-pre21 - (bongo-single) (26th October 2022) Project OutFox LTS 4.18.0 / alpha 5.0.0-pre21 - (bongo-versus) (26th October 2022) This mode is parser specific. It will only load and parse items designed for taitai.\nThe table below lists the supported files and their types that bongo supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .osu OTO taitai single Mode 1 only (60% complete), (Mode 0 support coming soon!) .tja TJA taitai single Work in progress, about 60% complete. Gameplay Mechanics drum rolls\nYou will need to ensure you hit the long note at least once for it to count!\nmines\nThese notes should be avoided, as they will damage your life gauge\nbig notes\nAre notes that require you to hit the both edges of the left bongo drum at the same time if it is blue, or both sides of the right bongo if it is red. These notes can be hit with one tap, but you will not get the full bonus. Hitting with one tap will not drop your combo.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls There are also notes which need to be hit a certain amount within a set time.\nTrivia It is the second horizontal scroll game we support in Project OutFox.\nWritten and Maintained with ♡ by Squirrel\n","description":"About It parses files made for taitai into a lane mode to play on a bongo based controller, or bongo based midi controller. One must hit the left or right bongo drum when it reaches the receptor, or clap your hands when the star appears. Scoring and timing windows are yet to be decided.\nHistory: The parser support for the mode is currently actively developed, and the chart support will be aligned with the taiko simulator based parser support."},{"id":94,"href":"/user-guide/games/dance/","title":"Game Module: dance","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: This history does not include the original years before the project was announced and given to the community. If you know of any builds or information missing, do let us know! you can find some of these earlier builds at the archive here https://josevarela.net/SMArchive/Builds/\n4 Panel (Up/Down/Left/Right): First Seen:\nDDR PC Edition m1 - (single) (21 August 2001) DDR PC Edition m1 - (double) (21 August 2001) Replaced by:\nBetween StepMania 0.64 and 0.9 - (single4) (17 October 2001) Between StepMania 0.64 and 0.9 - (versus4) (20 November 2001) Between StepMania 0.64 and 0.9 - (double4) (20 November 2001) StepMania v3.0 beta 6 - (dance-edit-couple) (17 August 2002) StepMania v4.0 CVS - (routine) (17 June 2006) Replaced by:\nStepMania 1.64 - (single) (19 March 2002) StepMania 1.64 - (versus) (19 March 2002) StepMania 1.64 - (double) (19 March 2002) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-single) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-versus) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-double) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-couple) (27 May 2002) Replaced by:\nStepMania v3.0 beta 6 - (DDR Single) (6 September 2002) StepMania v3.0 beta 6 - (DDR Versus) (6 September 2002) StepMania v3.0 beta 6 - (DDR Double) (6 September 2002) StepMania v3.0 beta 6 - (DDR Couple) (6 September 2002) StepMania v3.0 beta 6 - (DDR Couple) (6 September 2002) (Note: Edit Couple) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (couple) (15 September 2002) StepMania v3.0 beta 6 - (couple (edit only)) (15 September 2002) Replaced by: (dance-)\nStepMania v4.0 CVS - (single) (15 September 2002) StepMania v4.0 CVS - (versus) (15 September 2002) StepMania v4.0 CVS - (double) (15 September 2002) StepMania v4.0 CVS - (couple) (15 September 2002) StepMania v4.0 CVS - (couple (edit only)) (15 September 2002) StepMania v4.0 CVS - (routine) (17 June 2006) 6 Panel Up/Down/Left/Right/UpLeft/UpRight: First Seen:\nDDR PC Edition m1 - (solo6) (21 August 2001) Replaced by:\nStepMania 0.94 - (single6) (20 November 2001) Replaced by:\nStepMania 1.64 - (solo) (19 March 2002) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-solo) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-solo-versus) (27 May 2002) Replaced by:\nStepMania v3.0 beta 6 - (DDR Solo) (6 September 2002) StepMania v3.0 beta 6 - (dance-solo-versus) (6 September 2002) This style was commented out for removal Replaced by:\nProject OutFox alpha 4.13.0 - (solo-double) (31 January 2022) Project OutFox alpha 4.13.0 - (solo-versus) (31 January 2022) 3 Panel Left/Right/Down Arrangement: First Seen:\nStepMania v4.0 SVN - (three) (15 February 2010) Replaced by:\nsm-ssc v1.0 beta 3 - (threepanel) (2 May 2010) Replaced by:\n3 Panel UpLeft/UpRight/Down Arrangement: First Seen:\nStepMania 5.2 - (threepanel) (circa 2015) Project OutFox alpha 4.2.0 - (threepanel) (5 February 2020) Project OutFox alpha 4.13.0 - (threepanel-double) (31 January 2022) Project OutFox alpha 4.13.0 - (threepanel-versus) (31 January 2022) Supported Parser Types: This mode is parser agnostic. It will load 4k charts from a variety of formats.\nThe table below lists the supported files and their types that dance supports, their panel/key value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms BMS dance 4k / 6k / 8k 4k dance / 6k dance / 4k dance doubles in be-mu charts .dwi DWI dance 4k / 6K legacy dance with intensity charts .sm/.ssc SM dance 3k / 4k / 6k / 8k 3k dance / 4k dance / 6k dance / 4k dance doubles Project OutFox added double and versus modes to solo and threepanel at the beginning of 2022 due to community request and demand. These charts will not parse on legacy builds of StepMania.\nGameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: This history does not include the original years before the project was announced and given to the community. If you know of any builds or information missing, do let us know! you can find some of these earlier builds at the archive here https://josevarela."},{"id":95,"href":"/user-guide/games/ds3ddx/","title":"Game Module: ds3ddx","parent":"Supported Game Modules","content":"\n3ddx single game-play, default legacy theme 3ddx double game-play, default legacy theme About This mode simulates the game play from the Korean game Dance Station 3DDX which was released in the summer of 2000. The machine was designed with 2 dance pads in front of the cabinet which contained 4 depressible areas in the corners, alongside infra-red sensors which the player would need to wave hands over to count as a \u0026lsquo;hit\u0026rsquo; in the up down left right areas of the pad. This meant that the game contained 8 hit options. Unlike other dance games of the time, this cabinet did not have a bar to allow more \u0026lsquo;freestyle\u0026rsquo; dancing.\nThe game was only released in the arcade, and was revived by the Chinese company EZ2Dancer in 2004 for the Asian markets, renaming the game to Dance Master Super Station Arcade 3DDX and once again re-releasing it with a new interface and user experience under the title Ez5 Dancer.\nThere are 5 releases based on forks of 3DDX in China, 3DDX-DSS, 3DDX-DSS2 (also known as Super China), 3DDX-DSS3, 3DDX-DSS4 and 3DDX-DSS5, The last release for this series was 2011, and cabinets are still for sale.\nIn 2014, a new revision was released in China called Dance Master Super Station (also known as E5 Online). This game added a 5th panel, making it more like a Pump it Up clone with the cardinal sensors. This game is still massively popular in the Chinese dancing communities and with the sheer number of cabinets made, some say it is the most popular game being played in China at this time. The game uses a mostly Chinese audience focussed music collection, with several being \u0026lsquo;borrowed\u0026rsquo; from o2jam, k-pop and other rhythm games.\nDance Master Super Station has a very wide selection of chart types, targeting the complete range of player levels, with the harder options almost having no hand sensor options, as they tend to mess up the flow of the chart. Many of the charts are brought in from other games, and some do not include any hands at all, following more the Pump style of play.\nIntroduced: 4 Panel 4 Sensor: First Seen:\nStepMania v3.0 final - (single) (28th December 2002) Project OutFox alpha 4.13.0 - (double) (31 January 2022) Project OutFox alpha 4.13.0 - (versus) (31 January 2022) 5 Panel 4 Sensor: First Seen:\nProject OutFox alpha 4.15.0 - (single) (12th June 2022) Project OutFox alpha 4.15.0 - (double) (12th June 2022) Project OutFox alpha 4.15.0 - (versus) (12th June 2022) This mode is parser specific. It will only load and parse items designed for ds3ddx including pump. It will also autogenerate charts based on the pump game mode automatically, though the extended features are not available yet.\nThe table below lists the supported files and their types that ds3ddx supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .ssc SSC ds3ddx 4k / 8k 4k and 4k doubles ds3ddx charts .ssc SSC dance 4k / 8k 4k and 4k doubles dance charts .ssc PIU pump 5k / 10k 5k and 5k doubles pump (v0.81) charts Gameplay The game is played in a total of 8 directions, with 4 being for the legs, (the oblique corner areas on the pad) and 4 sensors for the hands (the cardinal directions). There were two types of cabinet produced, some with sensors in the pad area itself, and the other with sensors above the player akin to Para Para Paradise.\nThe game was designed to allow a lot of freestyle movement and provided the opportunity for a good workout while playing. The game screen featured a wider than normal note field with arrows and sensors moving up to receptors. The colours of the oblique arrows mirrors that of Pump it Up using red for the top arrows and blue for the bottom arrows, with the sensor based hand arrows are yellow for up and down (again following the Pump style), with left and right being green. The centre panel on a lot of the earlier cabinets was inactive, and just used for a place for the player to place their feet.\nE5 Online added the yellow centre button which sits under the up and down hand receptors in the note field. This is one of the reasons a lot of the harder charts do not use those hands, as sometimes it has harder to see in a stream of notes. Many of the charts used in early PIU games were commonly used on this game, and the mechanics of later pump games were \u0026lsquo;borrowed\u0026rsquo; for the 5 panel mode. Support for this will be added in a later Project OutFox release.\nMechanics pump holds\nThere is a special system for how pump holds are judged, which is different to dance or smx. These holds can be picked up and regained on a loss.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase combo per tick.\nfree-style\nA lot of the charts made for this mode do not make use of the sensors, or encourage full body movement to complement a workout style way of playing the game. This is extremely popular in Chinese Arcades.\nsensors\nThis mode uses PIR or photo sensors to measure a movement passing by them or for checking a movement has been met.\nPlay Styles Single - This style is played on 4 or 5 panels and 4 sensors for hands.\nDual - This style is played on 8 or 10 panels and 8 sensors for hands, across 2 single player areas.\nGrading / Accuracy The original 3DDX as released borrowed the accuracy rating from DDR 1st using (Perfect, Great, Boo and Miss), with the revived version of the game using the Pump style of accuracy (Perfect, Great, Good and Miss).\nThe timing windows for this grading system is very similar to the one used in the game TechnoMotion. There is very little information on the later games based on the E5 Online system.\nIf you have any information on this system, do reach out to us!\nScoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel, with thanks to community member MKNK for the detailed information on the Chinese Versions.\n","description":"3ddx single game-play, default legacy theme 3ddx double game-play, default legacy theme About This mode simulates the game play from the Korean game Dance Station 3DDX which was released in the summer of 2000. The machine was designed with 2 dance pads in front of the cabinet which contained 4 depressible areas in the corners, alongside infra-red sensors which the player would need to wave hands over to count as a \u0026lsquo;hit\u0026rsquo; in the up down left right areas of the pad."},{"id":96,"href":"/user-guide/games/ez2d/","title":"Game Module: ez2d","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpperLeftHand/UpperRightHand/LowerLeftHand/LowerRightHand): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-single) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-double) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-real) (20 June 2002) StepMania v3.0 beta 1 - (ez2-single-versus) (8 July 2002) StepMania v3.0 beta 1 - (ez2-real-versus) (8 July 2002) StepMania v3.0 beta 4 - (ez2-single-hard) (22 July 2002) StepMania v3.0 beta 4 - (ez2-single-hard-versus) (22 July 2002) Replaced by:\nStepMania v3.0 beta 6 - (EZ2 Single) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 SingleHard) (6 September 2002) StepMania v3.0 beta 6 - (EZ2Double) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 Real) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 Versus) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 VersusHard) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 VersusReal) (6 September 2002) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (singleHard) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (real) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (versusHard) (15 September 2002) StepMania v3.0 beta 6 - (versusReal) (15 September 2002) Removed:\nStepMania v3.0 beta 6 - (singleHard) (29 September 2002) StepMania v3.0 beta 6 - (versusHard) (29 September 2002) Renamed:\nOutFox Alpha 4.10.0 - (ez2d) (23 September 2021) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpperLeftHand/UpperRightHand/LowerLeftHand/LowerRightHand): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-single) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-double) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-real) (20 June 2002) StepMania v3.0 beta 1 - (ez2-single-versus) (8 July 2002) StepMania v3."},{"id":97,"href":"/user-guide/games/gddm/","title":"Game Module: gddm","parent":"Supported Game Modules","content":"\nEarly GDDM playback, default legacy theme\nAbout History: This mode was added in Project OutFox. It was added to provide users with a 5/9/10 lane drum mode that works on Linux and Mac OS.\nWhen added, players could use the auto-gen system to test it out, and there was noticeable lag on Windows due to the sound drivers. This was resolved in Alpha 4.12, when we rewrote the MIDI input system. This mode mirrors the keysounded options of be-mu and po-mu and will take a little time loading your songs due to the nature of mapping and ensuring smooth playback.\nThis mode is best played on MIDI drums due to the superior lower latency, as well as no input overhead.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6.0 - \u0026quot;gddm-new\u0026quot; (19 Jun 2020) (9 lane style simulating DrumMania play) OutFox Alpha 4.6.0 - \u0026quot;gddm-old\u0026quot; (19 Jun 2020) (5 lane style simulating BandJam/old Gitadora play) OutFox Alpha 4.9.9HF - \u0026quot;gddm-real\u0026quot; (July 26 2021) (10 lane style) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the DTX Mania series of simulations, which itself is based off of BMS, but is not channel compatible with it.\nThe table below lists the supported files and their types that gddm supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .gda GDA gddm 5 piece drum parser based on the \u0026lsquo;gda\u0026rsquo; era up until around 2011 .g2a GDA gddm 5 piece drum parser based on the \u0026lsquo;gda\u0026rsquo; era up until around 2011 .dtx DTX gddm 5 / 9 / 10 piece drum parser based on the rewritten \u0026lsquo;dtx\u0026rsquo; era, mostly used for DTXMania Gameplay This mode is played default in down scroll, with the animated notes indicating which piece of the drum set to hit at the moment as it hits the base line at the bottom of the screen. Most columns are drawn to make it easier to read for the player, as well as this mode has \u0026lsquo;superseded lanes\u0026rsquo;. This means that there are two types of notes in one column.\nThis mode is typically played using a midi enabled electronic drum kit and hit like a normal drum kit.\nThis mode has default \u0026lsquo;fail at song end\u0026rsquo; as it allows the player to continue to practice as needed to get a better grip of the song being played.\ngddm is a single player game, and is usually played in a wide area of space because of the size needed for the drum kit and pedals, swinging range of arms etc.\nMechanics key sounded\nkey sounded notes exist in this mode! This means drum pieces you hit will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for gddm charts!\nfail at end\nfail at end is set by default, so you can look at accuracy and playback over stopping and restarting continuously if you \u0026lsquo;fail\u0026rsquo; like other modes.\nPlay Styles Grading / Accuracy Scoring Health Bar The concept of a health bar is not used within this mode, the player is scored on accuracy and judgement timings. Combo is included, but not something most players care about.\nModding Charting Controls The easiest way to play this mode is with MIDI enabled electronic drums. The new cross platform MIDI drivers added to Project OutFox made setting this up a breeze, and allowed for better response times and a more stable playing experience.\nThere is a MIDI guide here on this wiki, which explains in detail how to set up controllers better for this mode.\nWe have had reports that the rb drum kit can be set up to work within the 5 piece version of this mode, however, as it uses a different input system, you may experience latency (a slight delay from when you hit the drum to it being recognised) which could affect your ability to play. You can adjust your offsets for this, however if you can play via MIDI is recommended.\nTrivia This game mode was added to the engine as a \u0026lsquo;why not?\u0026rsquo; joke between the main developers of Project OutFox. When the community noticed it existed then there was a demand for a parser and proper support. It led to the creation of the GDA/DTX parser, and 2 new cross platform MIDI drivers being added to the engine, as well as 2 previously undiscovered sound bugs being fixed.\nA keysound in this mode is called a \u0026lsquo;chip\u0026rsquo;.\nThis mode needed \u0026lsquo;hidden lane\u0026rsquo; support. That is, two different note lanes occupying the same column. It is a special feature of OutFox.\nThis mode simulates DTXMania, as there is more content for that simulator, and it follows a practice. There are many forks of this project, so we spent some time with the community working out the features to add/discard from OutFox.\nThe parser for this mode inherits a lot of the functionality of the BMS extended set, so OutFox by nature has a wider optional set of features due to this. One can also use PMS, or any other of the BMS derived parser features. We do not recommend this option if you want to keep your charts compatible with the orginal DTXMania of course!\nWritten and Maintained with ♡ by Squirrel, with thanks to the DTXMania community; APPROVED, np_sub and Furukon.\n","description":"Early GDDM playback, default legacy theme\nAbout History: This mode was added in Project OutFox. It was added to provide users with a 5/9/10 lane drum mode that works on Linux and Mac OS.\nWhen added, players could use the auto-gen system to test it out, and there was noticeable lag on Windows due to the sound drivers. This was resolved in Alpha 4.12, when we rewrote the MIDI input system."},{"id":98,"href":"/user-guide/games/gdgf/","title":"Game Module: gdgf","parent":"Supported Game Modules","content":" About History: This mode was added in Project OutFox. It started as the \u0026ldquo;guitar\u0026rdquo; mode, before the \u0026ldquo;gh\u0026rdquo; mode existed. Around the time the \u0026ldquo;gh\u0026rdquo; mode came into being, this mode was renamed to \u0026ldquo;gdgf\u0026rdquo;, which is the current name.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6 RC2 - \u0026quot;Guitar5\u0026quot; (21 June 2020, The game is known as \u0026ldquo;Guitar\u0026rdquo; at this point) OutFox Alpha 4.6 RC2 - \u0026quot;Versus5\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Guitar3\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus3\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Bass6\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus6\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Bass4\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus4\u0026quot; (22 June 2020) OutFox Alpha 4.9.7.2 - \u0026quot;guitar-six (12 march 2021, the game is renamed to \u0026ldquo;GDGF\u0026rdquo; at this point) OutFox Alpha 4.9.7.2 - \u0026quot;guitar-versus-six (12 march 2021) Replaced with:\nOutFox Alpha 4.6.0 - \u0026quot;guitar-five\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-five\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;guitar-three\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-three\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;bass-six\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-six\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;bass-four\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-four\u0026quot; (24 June 2020) Replaced with:\nOutFox Alpha 4.10 - \u0026quot;five-fret\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;five-fret-versus\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;three-fret\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;three-fret-versus\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;six-fret (8 September 2021) OutFox Alpha 4.10 - \u0026quot;six-fret-versus (8 September 2021) Removed\nOutFox Alpha 4.10 - \u0026quot;bass-six\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;versus-six\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;bass-four\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;versus-four\u0026quot; (8 September 2021) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in Project OutFox. It started as the \u0026ldquo;guitar\u0026rdquo; mode, before the \u0026ldquo;gh\u0026rdquo; mode existed. Around the time the \u0026ldquo;gh\u0026rdquo; mode came into being, this mode was renamed to \u0026ldquo;gdgf\u0026rdquo;, which is the current name.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6 RC2 - \u0026quot;Guitar5\u0026quot; (21 June 2020, The game is known as \u0026ldquo;Guitar\u0026rdquo; at this point) OutFox Alpha 4."},{"id":99,"href":"/user-guide/games/gh/","title":"Game Module: gh","parent":"Supported Game Modules","content":" About History: This mode was originally created to simulate a popular game using a guitar shaped controller. It was added in StepMania 4, however work to finish it was not completed. It was rewritten and added back in Project OutFox in Spring 2021.\nIntroduced (StepMania 4): 5 Key: First Seen:\nStepMania v4.0 CVS - (guitar-five) (23 September 2006) (Non-Functional) Removed\nStepMania v5.0 preview 2 - (guitar-five) (30 July 2011) (sm-ssc v2.1) The mode was removed completely, along with the note types and midi loader support. The fact the mode was only partially working with no wail support, and that there had been no further work completed to solve those issues sounded the end of this mode in mainline SM.\nIntroduced (Project OutFox): 5 Key: First Seen:\nProject OutFox alpha 4.9.7.2 - (solo) (12 March 2021) Project OutFox alpha 4.9.7.2 - (versus) (12 March 2021) Project OutFox alpha 4.9.7.2 - (group) (12 March 2021) (Non-Functional) Project OutFox alpha 4.9.7.2 - (backup) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup-versus) (26 March 2021) Replaced by:\nProject OutFox alpha 4.9.7.2 - (solo-versus) (26 March 2021) (renamed from versus) 6 Key: First Seen:\nProject OutFox alpha 4.9.7.2 - (solo6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (group6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup-versus6) (26 March 2021) Replaced by:\nProject OutFox alpha 4.9.7.2 - (solo-versus6) (26 March 2021) (renamed from group6) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the gh series of simulations.\nThe table below lists the supported files and their types that gh supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .chart CHART gh easy/normal/pro parser based on the \u0026lsquo;gh\u0026rsquo; era up until around 2014. .midi MIDI gh easy/normal/normal5/pro Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was originally created to simulate a popular game using a guitar shaped controller. It was added in StepMania 4, however work to finish it was not completed. It was rewritten and added back in Project OutFox in Spring 2021.\nIntroduced (StepMania 4): 5 Key: First Seen:\nStepMania v4.0 CVS - (guitar-five) (23 September 2006) (Non-Functional) Removed\nStepMania v5.0 preview 2 - (guitar-five) (30 July 2011) (sm-ssc v2."},{"id":100,"href":"/user-guide/games/karaoke/","title":"Game Module: karaoke","parent":"Supported Game Modules","content":" This mode will be added in a future release of alpha 5 of Project OutFox. About History: There was a lot of code produced by Chris Danford for this mode back in 2008, that went seemingly completely unused until it\u0026rsquo;s removal 2 years later. OutFox will use more modern techniques that what was written at the time, and we will restore the vision of the engine having a karaoke mode once again.\nThe parser support for the mode (txt) is currently in development as it requires a new parser system to be written from scratch. .xml files may be supported in the future depending on community demand.\nOutFox has no plans to support the legacy #RELATIVE:YES files that were written in the late 2000s, as these seem to be not used anymore by the wider community.\nThis mode is not selectable in the game select screen at the moment as it is not on any public builds.\nIntroduced: Song Grid MIDI note style: First Seen:\nStepMania v4.0 CVS - (karaoke) (12 Mar 2008) (Non-Functional) Removed\nsm-ssc v1.0 RC2 - (karaoke) (20 August 2010) 1 Song Grid: First Seen:\nProject OutFox alpha 5.0.0 - (karaoke) TBC Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the UltraStar TXT format(txt).\nThe table below lists the supported files and their types that karaoke supports, their key/button value and the original mode the parser is used for (if any). We can look at other formats in time.\nFile Type Label Original Mode Key Values Supported Notes .txt TXT karaoke 1 grid / duet grid Solo / Duet Charts Game play This mode is played default in a left to right side scroll, where a singer needs to sing at the designated pitch to mark the \u0026lsquo;word segments\u0026rsquo; complete and score points. Depending on demand, the mode will auto adjust the octave the singer\u0026rsquo;s range is within, in case of songs with high or low notes. Ping Squirrel about this if you want it added to the game!\nMechanics lyric snippets\nThe notes in this mode are based off of small syllables of words that make up the lyrics of the song. Depending on the sung notes, the \u0026lsquo;completion\u0026rsquo; of the syllable will be good or bad depending on pitch achieved and length of the syllable.\npitch detection\nThe system that simulators use is to measure the sung sound based on pitch, rather than the direct words. This allows for folks that do not fully know a song to hum the chorus or that troublesome second verse that is always forgotten!\ngolden notes\nThese \u0026rsquo;notes\u0026rsquo; are sung to gain points and bonuses through the song as it\u0026rsquo;s played.\nPlay Styles Grading / Accuracy Scoring Health Bar There is no main functioning life bar in the basic karaoke mode. Other systems later on will use one, but that\u0026rsquo;s in the future.\nModding Charting Controls This mode uses a microphone.\nTrivia Written and Maintained with ♡ by Squirrel\n","description":"This mode will be added in a future release of alpha 5 of Project OutFox. About History: There was a lot of code produced by Chris Danford for this mode back in 2008, that went seemingly completely unused until it\u0026rsquo;s removal 2 years later. OutFox will use more modern techniques that what was written at the time, and we will restore the vision of the engine having a karaoke mode once again."},{"id":101,"href":"/user-guide/games/kbm/","title":"Game Module: kbm","parent":"Supported Game Modules","content":" This mode will be added around alpha 4.19.0/alpha 5.0.0-pre45-ish of Project OutFox. About This mode parses files made in the bmson format, and usually is arranged into a two octave keyboard layout, sporting 24 keys in a piano style layout. This mode also supports 4 octave mode, or 48 keys. It is Highly recommended that this mode is played on a MIDI controller, or if you can find one, an original keyboardmania Playstation 2 controller from the early 2000s\nHistory: The parser support for the mode (bmson) is currently in development as it requires a new parser system to be initialised and set up for this type of chart.\nThis mode is not selectable in the game select screen at the moment.\nIntroduced: 24 Key 2 Octave: First Seen:\nProject OutFox alpha 4.18.0 - (kbm24-single) (November 2022) Project OutFox alpha 4.18.0 - (kbm24-versus) (November 2022) 48 Key 4 Octave: First Seen:\nProject OutFox alpha 4.18.0 - (kbm48-single) (November 2022) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script JSON (bmson).\nThe table below lists the supported files and their types that kbm supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bmson BMSON kbm 24k / 48k 2 Octave / 4 Octave kbm charts Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. The player then hits the piano notes depending on how they fall.\nMechanics key sounded\nThe notes in this mode are based off of small clips of audio that react when you press a key. This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for be-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\nModding Charting Controls The game is played best on a MIDI piano or mini-keyboard controller.\nThe original PSX/PS2 era controllers can be unusually difficult to use, so be mindful if they stick or are a bit stiff, they likely need a good service and clean.\nTrivia bmson is based on a rewrite of the BMS format, but with an attempt to make it easier to make/parse for creators.\nWritten and Maintained with ♡ by Squirrel\n","description":"This mode will be added around alpha 4.19.0/alpha 5.0.0-pre45-ish of Project OutFox. About This mode parses files made in the bmson format, and usually is arranged into a two octave keyboard layout, sporting 24 keys in a piano style layout. This mode also supports 4 octave mode, or 48 keys. It is Highly recommended that this mode is played on a MIDI controller, or if you can find one, an original keyboardmania Playstation 2 controller from the early 2000s"},{"id":102,"href":"/user-guide/games/kbx/","title":"Game Module: kbx","parent":"Supported Game Modules","content":"\nkb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: The mode (kb7) was added in StepMania 4 CVS. It was designed to be a keyboard based mode using 7 keys (6 normal keys and the spacebar) and was requested by the community, as an alternative to the dance only focus at the time, with a view of providing keyboard players a better streamlined experience in the engine.\nkb7-small was a modded version of the mode, with a much smaller \u0026lsquo;space bar\u0026rsquo; or middle button so the notefield was easier to read. This made it more popular than the standard wide mode, and due to this, it replaced the original kb7-single as the mode in Project OutFox.\nIn the final release of 2021, Project OutFox 4.12 replaced the original mode completely with a new rewritten version which allowed players to use a differing number of lanes, ranging from 1 to 15 in total. It also created a newer streamlined version of the system to give a small performance boost to this mode. Community member MDR has contributed some ideas to this mode.\nNicknamed Key Button eXtreme it has become a quite popular option for those who wish to trial/learn charts or just play in a slightly more efficient sandbox for other modes.\nDue to the observations of community members Tarben and Yuki, this mode did not effectively support all of the expanded \u0026lsquo;doubles\u0026rsquo; support of be-mu 7\u0026rsquo;s (so 16k) and techno 18k / po-mu 18k. These charts were not being made available in a suitable playable format for this mode. kb16, kb17, kb18 and kb19 were added in the spring alpha release of alpha 4.14 at the end of March 2022.\nThis mode is still being developed, so feedback and suggestion is welcome!\nIntroduced: 7 Key: First Seen:\nStepMania v4.0 CVS - (kb7-single) (30 May 2008) StepMania v5.0 alpha 3 - (kb7-small) (21 November 2012) Replaced by:\nsm-ssc v1.0 beta 3 - (single) (28 June 2010) Removed\nProject OutFox alpha4.6.0 - (single) (23 June 2020) Replaced by: (kb7-small -\u0026gt; kb7-single)\nProject OutFox alpha4.6.0 - (single) (23 June 2020) Replaced by:\nProject OutFox alpha4.12.0 - kb7-single (31 December 2021) 1 Key: First Seen:\nProject OutFox alpha4.12.0 - kb1-single (31 December 2021) 2 Key: First Seen:\nProject OutFox alpha4.12.0 - kb2-single (31 December 2021) 3 Key: First Seen:\nProject OutFox alpha4.12.0 - kb3-single (31 December 2021) 4 Key: First Seen:\nProject OutFox alpha4.12.0 - kb4-single (31 December 2021) 5 Key: First Seen:\nProject OutFox alpha4.12.0 - kb5-single (31 December 2021) 6 Key: First Seen:\nProject OutFox alpha4.12.0 - kb6-single (31 December 2021) 8 Key: First Seen:\nProject OutFox alpha4.12.0 - kb8-single (31 December 2021) 9 Key: First Seen:\nProject OutFox alpha4.12.0 - kb9-single (31 December 2021) 10 Key: First Seen:\nProject OutFox alpha4.12.0 - kb10-single (31 December 2021) 11 Key: First Seen:\nProject OutFox alpha4.12.0 - kb11-single (31 December 2021) 12 Key: First Seen:\nProject OutFox alpha4.12.0 - kb12-single (31 December 2021) 13 Key: First Seen:\nProject OutFox alpha4.12.0 - kb13-single (31 December 2021) 14 Key: First Seen:\nProject OutFox alpha4.12.0 - kb14-single (31 December 2021) 15 Key: First Seen:\nProject OutFox alpha4.12.0 - kb15-single (31 December 2021) 16 Key: First Seen:\nProject OutFox alpha4.14.0 - kb16-single (27 March 2022) 17 Key: First Seen:\nProject OutFox alpha4.14.0 - kb17-single (27 March 2022) 18 Key: First Seen:\nProject OutFox alpha4.14.0 - kb18-single (27 March 2022) 19 Key: First Seen:\nProject OutFox alpha4.14.0 - kb19-single (27 March 2022) Supported Parser Types: This mode is parser agnostic. It will happily load and parse items for you without hassle. It will do one-to-one parsing however! If you wish to do conversions to a specific key/button amount that will be a feature in a future update.\nThe table below lists the supported files and their types that kbx supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms/.bme/.bml BMS be-mu 6k / 12k / 8k / 16k 5k+scratch / 7k+scratch be-mu charts .bms BMS dance 4k / 6k 4k dance / 6k dance in be-mu charts .chart CHART gh 6k 5 lane clone hero guitar charts with open notes .dwi DWI dance 4k legacy dance with intensity charts .gda/.g2a/.dtx DTX gddm 6k / 9k / 10k 6/9/10 piece DTXMania drum charts .gda/.dtx DTX gdgf 4k / 7k 3 lane / 5 lane DTXMania guitar charts with wailing notes .mid MIDI gh 6k 5 lane clone hero guitar charts with open notes .osu/.osz OTO kbx 3 - 10k charts created in the game osu for the mode \u0026lsquo;mania\u0026rsquo; - OSZ files are the compressed charts .osu/.osz OTO taiko 1k charts created in the game osu for the mode \u0026rsquo;taiko\u0026rsquo; - OSZ files are the compressed charts .pms/.bme PMS po-mu 3k / 4k / 5k / 7k / 9k / 18k po-mu charts .qua/.qp QUA kbx 4k / 7k charts created in the game quaver - QP files are the compressed charts .sm/.ssc SM dance / pump / para / techno / smx / ds3ddx / maniax / ez2 3k / 4k / 5k / 6k / 8k / 9k / 10k / 12k / 16k / 18k main format of stepmania covering a lot of game types and lanes .tja TJA taitai 1k taikojira charts This mode needs no autogen to be configured! There is a setting in the preferences that enables or disables the pre-caching when the game loads.\nGame play This mode is played default in down scroll, with the note receptors at the bottom of the screen. The mode has several different noteskins available to it, with some of them reflecting the currently mapped button to the lane you need to press when the note hits the receptor.\nMechanics lift holds\nYou will need to lift at the end of each long note in time, or you will be judged a miss. You can turn it off in the modifier menu.\nanti-mash\nThis is enabled to prevent button spam on some of the difficult charts, and the game will judge you as a miss and will break combo.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase combo per tick.\nanything loaded\nIn this mode, as it is able to read almost everything the game supports.\ndisabled mods\nThis setting exists in this mode, as this mode is aimed to be better optimised for better playback. Mod files will play, but without any gimmick or effects. If a file/chart uses any FGCHANGES for movies or backgrounds, they too will sometimes fail to play.\nKey Mapping: The default mapping for this mode is as follows: Please bear in mind, the button layout still needs work!\nkb1 = space kb2 = f j kb3 = f space j kb4 = d f j k kb5 = d f space j k kb6 = s d f j k l kb7 = s d f space j k l kb8 = a s d f j k l ; kb9 = a s d space f j k l ; kb10 = a w s d f j k l p ; kb11 = a w s d f space j k l p ; kb12 = a w s d r f j i k l p ; kb13 = a w s d r f space j i k l p ; kb14 = a w s e d r f j i k o l p ; kb15 = a w s e d r f space j i k o l p ; kb16 = q a w s e d r f j i k o l p ; [ kb17 = q a w s e d r f space j i k o l p ; [ kb18 = caps q a w s e d r f j i k o l p ; [ \u0026#39; kb19 = caps q a w s e d r f space j i k o l p ; [ \u0026#39; Play Styles Grading / Accuracy Scoring Health Bar Modding No Modding is available in this mode.\nCharting Controls Trivia The legacy kb7 mode initially started life with 6 columns, but this was changed to include the spacebar when the SSC builds began.\nAlthough the name for this mode is kbx it was decided to not use the SSC era title of 'keyboard X' where X is the number of keys used, because this mode can be played on any device.\nThere was a completed theme for the legacy kb7 mode exclusive to SM4/SSC 1.x made by the SSC team, but it was never released.\nWritten and Maintained with ♡ by Squirrel\n","description":"kb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: The mode (kb7) was added in StepMania 4 CVS. It was designed to be a keyboard based mode using 7 keys (6 normal keys and the spacebar) and was requested by the community, as an alternative to the dance only focus at the time, with a view of providing keyboard players a better streamlined experience in the engine."},{"id":103,"href":"/user-guide/games/kickbox/","title":"Game Module: kickbox","parent":"Supported Game Modules","content":"\nkb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: This mode was added in StepMania 5. It was designed to be a fitness based punch and kick mode commissioned by a member of the community.\nIt has always been considered obscure, but it does have a functioning autogen system, and is functional again from Project OutFox 4.10.0.\nYou need to ensure you click the \u0026lsquo;use SM5 noteskins\u0026rsquo; on the windows installer to allow yourself access to this mode if you are using Project OutFox.\nIntroduced: First Seen:\nStepMania v5.0 beta 4a - (kickbox-human) (4 Dec 2014) (2 Punch/2 Kick) StepMania v5.0 beta 4a - (kickbox-quadarm) (4 Dec 2014) (4 Punch) StepMania v5.0 beta 4a - (kickbox-insect) (4 Dec 2014) (4 punch/2 kick) StepMania v5.0 beta 4a - (kickbox-arachnid) (4 Dec 2014) (4 punch/4 kick) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"kb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: This mode was added in StepMania 5. It was designed to be a fitness based punch and kick mode commissioned by a member of the community.\nIt has always been considered obscure, but it does have a functioning autogen system, and is functional again from Project OutFox 4.10.0.\nYou need to ensure you click the \u0026lsquo;use SM5 noteskins\u0026rsquo; on the windows installer to allow yourself access to this mode if you are using Project OutFox."},{"id":104,"href":"/user-guide/games/maniax/","title":"Game Module: maniax","parent":"Supported Game Modules","content":" About History: This mode was added in 3.0.2, starting off life as a keyboard mode. There were several styles added later on. The sensors were called either Hand Upper or Hand Lower\nIntroduced: 4 Sensor (HUL/HUR/HLL/HLR): First Seen:\nStepMania v3.0.2 - (single) (3 September 2003) StepMania v3.0.2 - (double) (3 September 2003) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in 3.0.2, starting off life as a keyboard mode. There were several styles added later on. The sensors were called either Hand Upper or Hand Lower\nIntroduced: 4 Sensor (HUL/HUR/HLL/HLR): First Seen:\nStepMania v3.0.2 - (single) (3 September 2003) StepMania v3.0.2 - (double) (3 September 2003) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel"},{"id":105,"href":"/user-guide/games/para/","title":"Game Module: para","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpLeft/UpRight/Up/Left/Right): First Seen:\nStepMania v3.0 beta 6 - (Para Single) (7th September 2002) StepMania v3.0.2 - (para-versus) (10th July 2004) Project OutFox alpha 4.9.7.3 - (double) (April 4 2021) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) 8 Panel (UpLeft/UpRight/Up/Left/Right/BackRight/Back/BackLeft): First Seen:\nProject OutFox alpha 4.9.9HF - (single-eight) (April 30 2021) Gameplay The game is played with sensors on the floor representing a half circle. The genre for the content was predominantly EuroBeat and featured moves from the scene that were to be replicated from dances or arrows placed on the screen. The player then has to wave their arms over the sensors to complete the movements matching the routine in time to the music. Project OutFox fully supports the PS2/Dreamcast Para controller on a cross platform environment as of 4.12.0, allowing anyone able to play our game access to the controller for the complete experience.\nThe sensors used primarily PIR tech and were bright pink (PS2) or green (DC) in colour, and had adjustments for length and height of the player for better accuracy.\nThe game received several quality of life updates in the beginnings of the project, and the hold system was fixed to be more accurate to how the actual game played on both the console and arcade versions.\nMechanics para holds\nThe official games allowed a player to wave a hand over the sensor before the hold begins to allow them to catch the hold and not be penalised for the \u0026lsquo;wave\u0026rsquo; effect which would happen on a dance based game. The head triggers if the sensor detects a hand in place.\npump holds\nThere is a special system for how pump holds are judged, which is different to dance or smx. These holds can be picked up and regained on a loss.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase score per tick.\nfree-style\nA lot of the charts made for this mode do not make use of the sensors, or encourage full body movement to complement a workout style way of playing the game.\nmines\nThese notes should be avoided, as they will damage your life gauge. They are supported, but extremely rare to see in para mode.\nsensors\nThis mode uses PIR or photo sensors to measure a movement passing by them or for checking a movement has been met.\nwhat combo?\nThe original para games worked more on the replication of the dance moves and the enjoyment of playing rather than displaying a combo or \u0026lsquo;accuracy\u0026rsquo; score at the end of the song. Project OutFox supports either methodology, as the console builds did have some combo/hit accuracy included in the evaluation, and it is purely up to the themer/creator to add this or just have the score for optional enjoyment.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Setting up the Para controller is different depending on the operating system you are using. We will be working with the Pink PlayStation 2 controller in this guide, as it is much much more common and we have yet to have anyone ask about the DC version.\nBefore you start Project OutFox, you must make sure you have laid out the controller on the floor, within a suitable distance from your screen, and away from any shelving or things which could be knocked off from swinging arms, ensure good clearance as well from the second player, as you do not want to be hitting each other as you play the game!\nThe example above shows a two-player layout at a convention from 2010, with the PS2 game running on it\u0026rsquo;s actual hardware. For the first time Project OutFox now supports up to 4 simultaneous controllers, (though more than 2 player is not available yet!). It is recommended to use the provided template to place on the floor so the controllers are correctly spaced and you are aware of the space required.\nPlug in the controller(s) into a spare USB slot on your computer, or the dock of the Mac/Steam Deck once you are happy with your placement.\nYou need to run the game once to generate the file we will be editing to set up the controller.\nRun the game as per your Operating system and then find the /Save/Preferences.ini file, that usually is edited for your specific choices. In the future we won\u0026rsquo;t need to do this step, but for now, we rely on it to configure things.\nYou MUST always plug in the controllers BEFORE running the game! This is because the hardware was designed for the PS2, and needs a special routine in the code to function correctly, and this is done as the game starts up!\nThe following controls are only available on Alpha V 041 or later (May 2023) Scroll down the preferences file until you find the section that begins with Input and set up your system as follows depending on your operating system:\nWindows: 7+\nInputDrivers=para,legacy,minisdl InputSetArcade=0 InputSetDInput=1 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=0 Linux: (Desktop - Arch/Ubuntu/Debian etc)\nInputDrivers=para,SDL InputSetArcade=0 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Linux: (Steam Deck)\nInputDrivers=para,SDL InputSetArcade=1 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Linux: (Raspberry Pi / RockPi / Arm Generic)\nInputDrivers=para,SDL InputSetArcade=0 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 MacOS\nInputDrivers=para,SDL InputSetArcade=1 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Please Note: If you are running a hardened version of Linux (SELinux/Gentoo/Some Arch variants), OutFox may not set up and initialise your controller automatically. If so you probably have restrictive udev rules for unknown input devices. Quit OutFox and try placing the following udev rule in /etc/udev/rules.d (in a file such as 70-ppp.rules):\nKERNEL==\u0026quot;hidraw*\u0026quot;, ATTRS{idVendor}==\u0026quot;0507\u0026quot;, ATTRS{idProduct}==\u0026quot;0011\u0026quot;, TAG+=\u0026quot;uaccess\u0026quot;\nNote that the file name must come before 73-seat-late.rules, as this is where uaccess is applied.\nThanks to @Tatsh and @TheNathannator for contributing this information The Para Driver will be set up to init automatically from Alpha V pre-041, so you do not need to change anything else in the system for this.\nFor calibrating and setup, we recommend watching the video from our friends at EKS-D ParaMania, which have provided a great tutorial here: https://www.youtube.com/watch?v=u-cpsnGrFXQ\nTrivia The old official Konami controller used to have a bug on non Windows based systems until alpha 4.12.0 which prevented the device waking up correctly on those systems.\nAlthough Project OutFox has had two player support for some time, it has only recently been able to utilise two controllers being plugged in at once. You will need to wait until Alpha V 041 is available to use this feature, it is NOT available on Alpha 4 / LTS 4.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpLeft/UpRight/Up/Left/Right): First Seen:\nStepMania v3.0 beta 6 - (Para Single) (7th September 2002) StepMania v3.0.2 - (para-versus) (10th July 2004) Project OutFox alpha 4.9.7.3 - (double) (April 4 2021) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) 8 Panel (UpLeft/UpRight/Up/Left/Right/BackRight/Back/BackLeft): First Seen:"},{"id":106,"href":"/user-guide/games/pomu/","title":"Game Module: po-mu","parent":"Supported Game Modules","content":" po-mu nine playback, bun noteskin, default legacy theme\nAbout History: This mode was added in version 3.0.2. There was no support for the associated loaders at this time, nor any theme or scoring updates. Po-mu was rendered accidentally broken during the CVS era of development on StepMania 4 (January 2007), where it was not restored until Project OutFox Alpha 4.9.8 (25th April 2021) with a new notesloader and rewritten internal code.\nThis mode has been around for a very long time, but has not really had any support or been looked at since before 2010. It was side-lined into the BMS loader, which actually broke a lot of the needed changes PMS actually uses, and as a result most PMS files with 7 or 9 lanes, would be added to the game as be-mu 10 lane or 14 lane charts. It was known there were issues with this mode, but we were not aware it was broken as bad as it was.\nSquirrel would like to thank the anonymous japanese player we\u0026rsquo;ll name \u0026ldquo;竹 (Take)\u0026rdquo; girl, for reporting this bug, who wanted to play Nitro\u0026rsquo;s PMS chart of the song on OutFox, but experienced the issue above, and there were also issues with how the keysounds were being loaded for this song in po-mu mode and she took the time to give a very detailed report, but deleted her account before we could see her username. I thank you a lot for the report, and if you ever read this, please come and say hi in our discord!\nWe took the time to investigate it and it was decided to code a new modernised PMS loader to the game, which now correctly loads PMS songs as they should be. This also removes the oddity and edge crashes when anyone wished to play po-mu mode on OutFox. This song, \u0026lsquo;竹\u0026rsquo; (Bamboo) charted by Nitro was used as a testbed to debug and ensure it properly works correctly in the game, so we took time to fix it so it would be recognised as a 9 Button PMS file. I\u0026rsquo;d like to thank Nitro for charting this as we would never have had the report which meant we could fix 13 year old bugs on our PMS and BMS loaders, and to 竹 girl for taking the time to bring it to our attention so we could fix this properly and have a restored mode. You can find the author of the song at https://twitter.com/NitroX72 - Thanks again Nitro!\nIntroduced: 3 Key (LW/LY/LG): First Seen:\nProject OutFox alpha 4.9.8 - (popn-three) (17 April 2021) Project OutFox alpha 4.9.9HF - (popn-three-versus) (27 April 2021) 4 Key (Red/Blue/Yellow/Green): First Seen:\nProject OutFox alpha 4.9.8 - (popn-four) (17 April 2021) Project OutFox alpha 4.9.9HF - (popn-four-versus) (27 April 2021) 5 Key (LG/LB/Red/RB/RG): First Seen:\nStepMania v3.0.2 - (pnm-five) (7 October 2003) Project OutFox alpha 4.9.9HF - (popn-five-versus) (27 April 2021) Replaced by:\nStepMania v4.0 CVS - (popn-five) (7 October 2005) 7 Key (LY/LG/LB/Red/RB/RG/RY): First Seen:\nProject OutFox alpha 4.6 RC2 - (popn-seven) (23 June 2020) Project OutFox alpha 4.9.9HF - (popn-seven-versus) (27 April 2021) 9 Key (LW/LY/LG/LB/Red/RB/RG/RY/RW): First Seen:\nStepMania v3.0.2 - (pnm-nine) (7 October 2003) Project OutFox alpha 4.9.9HF - (popn-nine-versus) (27 April 2021) Replaced by:\nStepMania v4.0 CVS - (popn-nine) (7 October 2005) mode renamed to po-mu (12th December 2021) 18 Key (LW/LY/LG/LB/Red/RB/RG/RY/RW-LW/LY/LG/LB/Red/RB/RG/RY/RW): First Seen:\nProject OutFox alpha 4.9.9HF - (popn-eighteen) (27 April 2021) There was no parser support, and charts were mostly autogenerated from other modes. It was mostly abandoned until the end of 2021 when the mode was renamed.\nReplaced by:\nProject OutFox alpha 4.14.0 - (pomu-nine-double) (25 March 2022) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script.\nThe table below lists the supported files and their types that po-mu supports, their key/button value and the original mode the parser is used for (if any). 18K and full player 2 channel width was added in alpha 4.14.0 so the main support for all chart types is now complete.\nFile Type Label Original Mode Key Values Supported Notes .bme BMS be-mu 5k / 7k / 9k / 18k po-mu in BMS Extended files .pms PMS po-mu 3k / 4k / 5k / 7k / 9k / 18k po-mu charts Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. There is a selection of different coloured lanes that match a set colour on a large controller. The mode has been extended to support the obscure/rare modes that were charted and these have a slightly different colour layout to the standard 9 key mode. The little notes fall down to be pressed when the item reaches the receptor. This game mode can still play po-mu charts in BME/BML files, which was a common practice up until around 2014. Play is usually on a dome based button controller, layed out in a 4 top 5 bottom button arrangement.\npo-mu also supports 2 player mode on Project OutFox as this was a missing feature from all simulations from the past and was highly requested by the community.\nMechanics key sounded\nkey sounded notes exist in this mode! This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for po-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\n#TOTAL can edit the gauge, and this is a new feature to Project OutFox, as our health bar system was inherited by StepMania so needed a rewrite and new code implemented.\nModding Charting Controls While playable on keyboard, this mode really comes alive when played with a 9 button dome controller. The Arcade style ones can be up to 3 feet / 91cm wide, and provide a really good base for passing the higher level charts. The only mode which can be troublesome is 4 button, as this uses a slightly different mapping.\nTwo player po-mu is a new feature for our simulator, and is still experimental. Let us know if there are any issues if you find any!\nTrivia When this game mode was added in 2003, it actually supported all 9 buttons available on the controller, Yet no 3/4/5 or 7 button mode was created.\nThis mode has been \u0026lsquo;broken\u0026rsquo; the longest in the game\u0026rsquo;s (StepMania\u0026rsquo;s) history. Due to the lack of users, no-one reported any bugs until development began on the new BMS loader during the Project OutFox era. An anonymous Japanese player reported a series of bugs and then this mode was properly restored and is now very playable.\npo-mu 3 button was broken due to a channel issue as Squirrel misread the Japanese documentation on PMS so they did not play properly. This was fixed in March 2022.\nPMS began life as a piano format, and when the project sadly faded away, it was adopted for po-mu charts around 2004-5. 5 or 7 key charts need to be in their PMS file to not accidentally be parsed by simulators as 5K BMS.\n18K po-mu was a design by a simulator in the early 2010s, and still is in use today. Support for it was heavily requested, so it has been added as of 4.14.0.\nThe mode has several special background layers that need to have the code finished when the new theme is complete. BGA MISS, BGA Layer 2 and BGA Layer 3 are now in game, but not activated as of 4.15.1. The side effect of these layers is that they can be exposed to the other game modes for special effects too.\nWritten and Maintained with ♡ by Squirrel\n","description":"po-mu nine playback, bun noteskin, default legacy theme\nAbout History: This mode was added in version 3.0.2. There was no support for the associated loaders at this time, nor any theme or scoring updates. Po-mu was rendered accidentally broken during the CVS era of development on StepMania 4 (January 2007), where it was not restored until Project OutFox Alpha 4.9.8 (25th April 2021) with a new notesloader and rewritten internal code."},{"id":107,"href":"/user-guide/games/pump/","title":"Game Module: pump","parent":"Supported Game Modules","content":" About History: This mode was added from very early on in the 3.0 development cycle. Since then, it has benefitted from having several different tweaks and fixes done throughout the years. In the SSC era of development, pump was actually set as the default (main) game mode for a while, but it has since moved to the second on the game select option. There have been several forks and adaptations of this mode since the sm-ssc 1.2 version into targeted game versions with this mode being the only one available.\nIn Project OutFox, it was decided to add another game mode based on the simulation of this game, due to the differences between the era this mode is based on, and how a lot of the newer community play the game. When this mode is added, it will be listed here as piu.\nIntroduced: 5 Panel (UpLeft/UpRight/Centre/DownLeft/DownRight): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (single) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-versus) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-double) (28 May 2002) StepMania v3.0 beta 6 - (pump-couple) (23 August 2002) StepMania v4.0 alpha 5 - (routine) (25 January 2010) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-single) (14 June 2002) Replaced by:\nStepMania v3.0 beta 6 - (Pump Single) (6 September 2002) StepMania v3.0 beta 6 - (Pump Versus) (6 September 2002) StepMania v3.0 beta 6 - (Pump Double) (6 September 2002) StepMania v3.0 beta 6 - (Pump Couple) (6 September 2002) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (couple) (15 September 2002) StepMania v3.0 beta 6 - (couple (edit only)) (15 September 2002) 6 Panel (UpLeft/UpRight/Centre/DownLeft/DownRight/Centre (2 Pads)): First Seen:\nStepMania v3.0.2 - (halfdouble) (22 May 2003) This mode is parser specific. It will only load and parse items designed for pump including SF2 charts.\nThere is a special version number of the ssc format that other forks used which is set to 0.81. Project OutFox parses these special charts along a different code path than to dance charts, so that the extra effects/quirks from this era can be contained. If you have a chart which does not seem to function, always check the #VERSION value and see if it needs to be changed.\nThe parser support for the 0.81 version branch is being actively developed to add support for the extra note types and effects, with a view of making the system for charting/designing the charts in the future more simpler and easier to use.\nThe table below lists the supported files and their types that pump supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .ssc PIU pump 5k / 10k 6k half doubles, 5k, 5k doubles pump (v0.81) charts .ksf KSF pump 5k / 10k 5k and 5k doubles pump charts Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from very early on in the 3.0 development cycle. Since then, it has benefitted from having several different tweaks and fixes done throughout the years. In the SSC era of development, pump was actually set as the default (main) game mode for a while, but it has since moved to the second on the game select option. There have been several forks and adaptations of this mode since the sm-ssc 1."},{"id":108,"href":"/user-guide/games/rb/","title":"Game Module: rb","parent":"Supported Game Modules","content":" About History: This mode supports the drum layouts added to the console guitar games of the late 2000s. Following support that was added for the guitar modes back in 2004 it was possible that support for drums was a potential option in the future, although looking within the codebase we have been unable to find any evidence the mode was planned.\nThis mode was heavily requested after full midi notes loader support was added for the gh mode, and as of writing only midi charts with drums will load in Outfox.\nIt began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): rbdrums: First Seen:\nFoxMania 1b - (rbdrums-normal) (10 April 2018) FoxMania 1b - (rbdrums-pro) (10 April 2018) Lost Introduced (Project OutFox): rb: First Seen:\nProject OutFox alpha 5.0.0-pre042 - (rb-easy) (5 August 2023) Project OutFox alpha 5.0.0-pre042 - (rb-normal) (5 August 2023) Project OutFox alpha 5.0.0-pre042 - (rb-pro) (5 August 2023) Those of you that are paying attention will know that there is no rb-easy mode normally. This mode is for those that have original kits and the notoriously fragile kick pedal that\u0026rsquo;s broken. It is simply the 4 drum layout with the kicks removed.\ngh-drums: First Seen:\nProject OutFox alpha 5.0.0-pre042 - (rb-normal5) (10 August 2023) With there being several different instrument layouts supported within the .midi spec for the simulation, support for gh-drums were added and titled normal5 on 10th August 2023.\nSupported Parser Types: This mode is parser specific. It will only load and parse items designed for the gh or rb series of simulations.\nThe table below lists the supported files and their types that rb supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .chart CHART gh easy/normal/pro parser based on the \u0026lsquo;gh\u0026rsquo; era up until around 2014. .midi MIDI gh easy/normal/normal5/pro Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Due to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode supports the drum layouts added to the console guitar games of the late 2000s. Following support that was added for the guitar modes back in 2004 it was possible that support for drums was a potential option in the future, although looking within the codebase we have been unable to find any evidence the mode was planned.\nThis mode was heavily requested after full midi notes loader support was added for the gh mode, and as of writing only midi charts with drums will load in Outfox."},{"id":109,"href":"/user-guide/games/smx/","title":"Game Module: smx","parent":"Supported Game Modules","content":"\nsmx songs in music wheel, default theme smx game-play, default legacy theme About: History: This mode was re-added towards the end of the alpha 4 development cycle of Project OutFox at the end of 2021. It is a simulation of the game StepManiaX by StepRevolution, and was created with their blessing. It began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): 5 Sensor (L/U/C/R/D): First Seen:\nFoxMania 1b - (single) (10 April 2018) FoxMania 1b - (double6) (10 April 2018) FoxMania 1b - (double10) (10 April 2018) FoxMania 1b - (couple) (10 April 2018) FoxMania 1b - (routine) (10 April 2018) Lost Introduced (Project OutFox): 5 Sensor (L/U/C/R/D): First Seen:\nProject OutFox alpha 4.11.0 - (single) (12 December 2021) Project OutFox alpha 4.11.0 - (double6) (12 December 2021) Project OutFox alpha 4.11.0 - (double10) (12 December 2021) Project OutFox alpha 4.11.0 - (couple) (12 December 2021) (disabled) Project OutFox alpha 4.11.0 - (routine) (12 December 2021) (disabled) Game-play Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia This game module will not support the special timing methodology that is used in the arcade version due to a limitation in the software, and will not support any official \u0026lsquo;data\u0026rsquo; from the sim-files used in the original game.\nDue to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"smx songs in music wheel, default theme smx game-play, default legacy theme About: History: This mode was re-added towards the end of the alpha 4 development cycle of Project OutFox at the end of 2021. It is a simulation of the game StepManiaX by StepRevolution, and was created with their blessing. It began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): 5 Sensor (L/U/C/R/D): First Seen:"},{"id":110,"href":"/user-guide/games/stepstage/","title":"Game Module: stepstage","parent":"Supported Game Modules","content":"\nstepstage game-play, default legacy theme About: History: This mode was added towards the end of the alpha 4 development cycle of Project OutFox at the beginning of 2022. It is a simulation of the game Stepping Stage by Jaleco, released in 2000, featuring 6 panels on 2 columns, with a top middle and bottom pad layout in a hexagon.\nIntroduced: 6 Panel (LTRed/LMBlue/LLYellow/RTRed/RMBlue/RLYellow): First Seen:\nProject OutFox alpha 4.13.0 - (single) (28 January 2022) Project OutFox alpha 4.13.0 - (single-versus) (28 January 2022) Project OutFox alpha 4.13.0 - (twin) (28 January 2022) Project OutFox alpha 4.13.0 - (twin-versus) (28 January 2022) Game-play Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"stepstage game-play, default legacy theme About: History: This mode was added towards the end of the alpha 4 development cycle of Project OutFox at the beginning of 2022. It is a simulation of the game Stepping Stage by Jaleco, released in 2000, featuring 6 panels on 2 columns, with a top middle and bottom pad layout in a hexagon.\nIntroduced: 6 Panel (LTRed/LMBlue/LLYellow/RTRed/RMBlue/RLYellow): First Seen:\nProject OutFox alpha 4.13.0 - (single) (28 January 2022) Project OutFox alpha 4."},{"id":111,"href":"/user-guide/games/taiko/","title":"Game Module: taitai","parent":"Supported Game Modules","content":" About History: This mode was re-added in alpha 4.9.9HF of Project OutFox. In its\u0026rsquo; original form, it was a five-column mode with each note type having its\u0026rsquo; own column. Later, within the same alpha (July 11 2021), it was redone to have the notes be different note types instead of notes in columns, with only one column being needed.\nIn this mode the parser support for the mode is being actively developed, and the chart support will be aligned with other taiko based simulators to provide parity and coherence for the community. We can parse .osu/.osz (Mode 1 taiko) and .tja files, although some of the scroll and time signature math needs to be concluded. As of alpha 4.15 the parsers are about 60% complete.\nThis mode is selectable in the game select screen.\nIt began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): Drum (LeftOuter, LeftInner, RightInner, RightOuter): First Seen:\nFoxMania 1c - (taitai-single) (15 April 2018) Lost Introduced (Project OutFox): Drum (LeftOuter, LeftInner, RightInner, RightOuter): First Seen:\nProject OutFox alpha 4.9.9HF - (taitai-single) (30 May 2021) Project OutFox alpha 4.9.9HF - (taitai-versus) (30 May 2021) This mode is parser specific. It will only load and parse items designed for taitai.\nThe table below lists the supported files and their types that taitai supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .osu OTO taitai single Mode 1 only (60% complete), (Mode 0 support coming soon!) .tja TJA taitai single Work in progress, about 60% complete. Gameplay Mechanics drum rolls\nYou will need to ensure you hit the yellow long note at least once for it to count!\nballoons\nThis is a new type of \u0026lsquo;hold\u0026rsquo; for Project OutFox that needs to be hit the number of times shown on the screen for it to be burst and you gain a points increase.\nmines\nThese notes should be avoided, as they will damage your life gauge\nbig notes\nAre notes that require you to hit the edge of the drum (katsu) on both sides at the same time if it is blue, or either side of the inner drum at the same time if it is red. These notes can be hit with one stick, but you will not get the full bonus. Hitting with one stick will not drop your combo.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls This game can be played as a 4K layout, or on a drum based controller. There were several home based console drum controllers, as well as proper arcade style ones.\nThe drums normally have 4 sections; a outer left, inner left (up until the centre of the drum, down the middle) inner right, and outer right.\nThe inner notes are often red or orange coloured, with the outer being blue. The smaller orange or blue notes can be hit by one of their respective sides, and the large notes should be hit by both the outer for big blue, or both the inner for big red. Hitting the big notes with 1 side gives half the points.\nThere are also drum rolls which allow the user to hit the drum to gain score if they hit the yellow \u0026lsquo;hold\u0026rsquo; as much as possible.\nThere are also notes which need to be hit a certain amount within a set time.\nTrivia It is the first horizontal scroll game we support in Project OutFox.\nThis mode also introduced the concept of \u0026lsquo;count holds\u0026rsquo;. This is effectively to set how the counted hit notes (balloons) are measured and scored.\nThis mode introduced the concept of a non-tick/non-beat based roll hold, which needed a lot of new code added to Outfox to implement.\nThis mode had a prototype back in FoxMania in the early days of the project (Pre Alpha 1).\nDue to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was re-added in alpha 4.9.9HF of Project OutFox. In its\u0026rsquo; original form, it was a five-column mode with each note type having its\u0026rsquo; own column. Later, within the same alpha (July 11 2021), it was redone to have the notes be different note types instead of notes in columns, with only one column being needed.\nIn this mode the parser support for the mode is being actively developed, and the chart support will be aligned with other taiko based simulators to provide parity and coherence for the community."},{"id":112,"href":"/user-guide/games/techno/","title":"Game Module: techno","parent":"Supported Game Modules","content":" About History: This mode was added in the 3.0.2, with the first mode being 8 panel. Like most modes from this period, there were not many theme items or specifics in scoring or timing windows at all. It was rendered almost unplayable due to the rapid code changes of the time, and was fixed in the side fork of 3.9.5 around spring 2004.\nIn the development of SM 4.0, this mode was broken with the rapid changes brought into the game and was then fixed again by Team SSC in StepMania 5 Preview 4 aroun 2010, restoring doubles and noteskin support.\nI have not added the fixes/tweaks done to this mode in the history that were added to the OutFox codebase; though much was done to include the 9 panel support requested by a lot of the community.\nThis mode can happily play most charts for dance and pump modes, as a lot of the chart styles were \u0026lsquo;borrowed\u0026rsquo;.\nIntroduced: 4 Panel (L/U/R/D): StepMania v3.0.2 - (single4) (25 July 2004) StepMania v3.0.2 - (versus4) (25 July 2004) StepMania v3.0.2 - (double4) (25 July 2004) 5 Panel (UL/UR/C/DR/DL) StepMania v3.0.2 - (single5) (25 July 2004) StepMania v3.0.2 - (versus5) (25 July 2004) StepMania v3.0.2 - (double5) (25 July 2004) 8 Panel (L/UL/UR/U/DL/DR/R/D): First Seen:\nStepMania v3.0.2 - (single8) (3 September 2003) StepMania v3.0.2 - (versus8) (7 June 2004) sm-ssc v1.2 - (double8) (9 January 2011) Replaced by:\nStepMania 3.9 CVS \u0026ldquo;random build\u0026rdquo; - (single8) (16 January 2005) Fixed to work once more 9 Panel (L/UL/UR/U/Center/DL/DR/R/D): First Seen:\nProject OutFox alpha 4.9.7.2 - (single9) (March 16 2021) Project OutFox alpha 4.9.7.2 - (versus9) (March 16 2021) Project OutFox alpha 4.9.7.2 - (double9) (March 16 2021) Supported Parser Types: This mode is parser agnostic. It will load 4/5/8/9k charts from a variety of formats.\nThe table below lists the supported files and their types that techno supports, their panel/key value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms BMS dance 4k / 6k / 8k 4k dance / 6k dance / 4k dance doubles in be-mu charts .dwi DWI dance 4k legacy dance with intensity charts .sm/.ssc SM dance / techno 4k / 6k / 8k 4k dance / 6k dance / 8k (4k dance doubles) .sm/.ssc SM pump / techno 5k / 10k / 6k 5k dance / 10k (5k doubles)) / 6k halfdoubles .sm/.ssc SM techno 8k / 16k / 9k / 18k 8k techno / 16k (8k doubles) / 9k techno / 18k (9k doubles ) Gameplay This mode is played in upscroll by default, with arrows moving towards the receptor as per other VSRGs. The mode has a variety of different timing options, and it is a very versatile option for those wishing to experiment with different options or note layouts before moving them to dance or pump options later on.\nThis mode supports mods and gimmicks, and a wide base of chart formats to play.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia When this game mode was added in 2003, it actually supported all 9 buttons available on the pad, Yet no 4/5 or 9 panel mode was created until later in development.\nThis mode was one of the first working custom modes outside of dance to be supported in the earlier versions of the engine.\nThis mode has a big following; we know of a lot of players that enjoy it\u0026rsquo;s freedom and versatility.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in the 3.0.2, with the first mode being 8 panel. Like most modes from this period, there were not many theme items or specifics in scoring or timing windows at all. It was rendered almost unplayable due to the rapid code changes of the time, and was fixed in the side fork of 3.9.5 around spring 2004.\nIn the development of SM 4.0, this mode was broken with the rapid changes brought into the game and was then fixed again by Team SSC in StepMania 5 Preview 4 aroun 2010, restoring doubles and noteskin support."},{"id":113,"href":"/user-guide/setup/getting-started/","title":"Getting started","parent":"Setup","content":"There are a few things you should do after installing Project OutFox.\nSome of these instructions assume usage of the included default theme (Soundwaves).\nSelecting a game type When launching Project OutFox for the first time (or without save data present), you will be prompted to select which game type you would like to begin with.\nProject OutFox supports a variety of game types, which simulate the button layouts and game mechanics of different types of rhythm games. Game types are further divided into styles, which are permutations such as alternate controller usage.\nThe most popular game type, dance, is placed at the top. If this is your first time playing OutFox, this is a straightforward and easy-to-understand game mode with plenty of content readily available for download.\nSongs that do not support the currently selected game mode will not display in the song list. Please ensure you are using the correct game mode for the content you are trying to play.\nTip: You can switch between game types at any time using the \u0026ldquo;Select Game\u0026rdquo; button on the main menu.\nInstall songs While Project OutFox does include a few sample songs, you will probably want to add more. We support a number of formats, including SM, SSC, SMA, DWI, BMS, DTX, .CHART, and KSF.\nThere are countless community resources for song packs. A great appetizer is our own project, OutFox Serenity.\nPlace downloaded songs into the Songs folder inside the game\u0026rsquo;s installation directory, or alternatively in the User folder.\n~/Library/Preferences/Project OutFox/ on macOS ~/.project-outfox/ on Linux %APPDATA%\\Project OutFox on Windows This folder is divided into Groups (also sometimes known as \u0026ldquo;packs\u0026rdquo;). Groups, in turn, contain folders for each song.\nHere is an example of how the folder structure would look for the song highlighted in the example screenshot.\nSongs │ └───Club Fantastic Season 1 (GROUP) │ │ │ └───COOL_EXCEPTION (SONG) │ │ │ │ COOL_EXCEPTION.ssc │ │ COOL_EXCEPTION.ogg │ │ COOL_EXCEPTION-bg.png │ │ COOL_EXCEPTION-bn.png │ │ COOL_EXCEPTION-jk.png Packs are typically distributed as ZIP files. Extract the archive with your preferred software, and copy the group folder containing the song directories to the Songs folder, matching the structure above.\nNote: If the songs do not appear, be sure to check that you have not accidentally nested your folders too deep inside a redundant folder. Note: If a song is not contained inside a group folder, but instead on the root Songs directory, the game will stop loading to let you know of the Song folder in question. Configuring your controls Project OutFox supports a wide variety of controllers and even arcade hardware. To configure your button mappings, go to Options \u0026gt; Input \u0026amp; Calibration \u0026gt; Config Key/Joy Mappings.\nUse the arrow keys to select an item to map, press Enter, and then press the button on the keyboard or controller you want to use. You can have multiple button assignments for each command.\nEach game type has its own default keyboard configuration. For example, dance maps the first player to the arrow keys. (when playing on keyboard, this is often referred to as the \u0026ldquo;index\u0026rdquo; playstyle).\nController not working? If your controller does not perform as well or function as expected, you can switch to the alternate XInput input mode from Options \u0026gt; Experimental Settings.\nXInput will sometimes also require you to map your controller to the input engine\u0026rsquo;s virtual gamepad, allowing the game to properly interface with the device.\nThis menu can be found at Options \u0026gt; Input \u0026amp; Calibration \u0026gt; Map Controller.\nCalibrate your audio sync In a rhythm game, timing is everything. But latency produced by your audio outputs can affect your accuracy. If you feel like the game is not judging your timing accurately, you can interactively adjust the audio offset.\nOptions \u0026gt; Input \u0026amp; Calibration \u0026gt; Calibrate Audio Sync\nA song will play with a pattern of alternating notes; in the dance game type, they will be left and right arrows.\nTap the notes based on what you HEAR, not what you SEE. This calibration will repeat continuously. Every 24 notes, your inputs will be used to calculate a new offset. Once you feel the judgment has been set correctly, press the Back button (mapped to Escape by default). It will ask you for confirmation in setting the new offset.\nAlternatively, if you wish to automatically calibrate in-game while playing your song of choice, you can press F6 twice during gameplay to enable AutoSync Machine, which will last until the end of the song or when exited with the Back button. A message will appear asking to confirm your changes.\nAudio Latency / ASIO If something still feels off, you might be playing a gamemode with keysounds, which means the user\u0026rsquo;s button inputs will trigger a sound when pressed.\nExamples of keysounded gamemodes: kbm, po-mu, be-mu\nAudio latency is a massive problem for these game modes, because there will be a delay between the user\u0026rsquo;s button press and the sound that is played. Merely calibrating the judgment window will not improve latency.\nOn Windows, it is strongly recommended to use an ASIO driver to ensure lowest possible latency. Mac and Linux users should already obtain low latency output without any special configuration.\nIf you are only interested in dance mode, you can ignore this section. ASIO provides no particular benefit for non-keysounded modes, if you have calibrated correctly. Windows does not include any ASIO drivers, because these are dependent on your specific audio hardware. Do not enable this unless you have an ASIO driver present on your system. To enable the ASIO driver in Outfox, edit your Preferences.ini (located in the Save folder) and set SoundDrivers to asio, like so:\nSoundDrivers=asio\nRealtek ASIO If your computer uses Realtek-based audio hardware, there is a native implementation of ASIO made by Realtek.\nFirst, install the official Realtek audio driver (this is NOT the Windows built-in driver). This is usually available from your motherboard\u0026rsquo;s driver download page. Reboot your computer after installing this driver, and before installing the ASIO module.\nRealtek ASIO Driver\nFL Studio ASIO If your audio hardware does not have a native ASIO implementation, FL Studio provides a wrapper that can \u0026ldquo;simulate\u0026rdquo; ASIO support and achieve lower latency, however this is not ideal as it is not a proper native implementation.\nThe free demo of FL Studio includes FL Studio ASIO. All other optional components can be un-checked. Do note that this requires installation of the full FL Studio software.\nNo license is required to utilize FL Studio ASIO.\nFL Studio\nCreate a profile By default, OutFox saves data to a global \u0026ldquo;machine profile\u0026rdquo;. However, there is certain data that will not persist between sessions, such as high scores and player settings.\nYou can manage profiles from Options \u0026gt; Profiles. From here you can create a profile, and edit existing profiles.\nFrom the profile editor (highlight a profile and press Start, and then select \u0026ldquo;Edit profile\u0026rdquo;), you can input fitness-related information, change the layout of the optional \u0026ldquo;Detailed Stats\u0026rdquo; pane during gameplay, and add an avatar to your profile (avatars are loaded from the Appearance/Avatars directory).\nNext steps The only thing left to do is have fun! If you need more help with Project OutFox, check out the other pages in our wiki documentation, and join other members of our community on our Discord server or forum.\nThank you for supporting Project OutFox!\n","description":"There are a few things you should do after installing Project OutFox.\nSome of these instructions assume usage of the included default theme (Soundwaves).\nSelecting a game type When launching Project OutFox for the first time (or without save data present), you will be prompted to select which game type you would like to begin with.\nProject OutFox supports a variety of game types, which simulate the button layouts and game mechanics of different types of rhythm games."},{"id":114,"href":"/dev/mods/Mods-11-ModSplines/","title":"ModSplines","parent":"Guide to Modifiers","content":"ModSplines is a system that allows for arbitrary note pathing through modifiers. This system is based off the spline system used in NotITG, which means it is usable alongside the pre-existing SM5 spline system and other modifiers, too.\nPoints are positioned like they are for Gradient modifiers, meaning in multiples of ARROW_SIZE away from the receptor.\nIn SM5, this is only accessible through the PlayerOptions functions, while NotITG has functions available in Player and also has modstring versions available (Though, it\u0026rsquo;s recommended to use the lua functions instead.)\nPoint and column numbering start at 1 in SM5, while it starts at 0 in NotITG.\nTo stop the current chain of spline points, a \u0026rsquo;null point\u0026rsquo; (Where both position and magnitude are at zero) can be used as a \u0026rsquo;null terminator\u0026rsquo; or sorts. This is only applicable for points after the first.\nThe following types are avaiable for modsplines (designated as \u0026lt;axis\u0026gt;):\nX (Positioning on the x axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE) Y (Positioning on the y axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE. The quirks of SpiralY apply here if holds or rolls are involved.) Z (Positioning on the z axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE) RotX (Rotation on the x axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationX\u0026rdquo; in NotITG, but uses RotX for functions. Also affects hold heads in SM5 without extra mods needed.) RotY (Rotation on the y axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationY\u0026rdquo; in NotITG, but uses RotY for functions. Also affects hold heads in SM5 without extra mods needed.) RotZ (Rotation on the z axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationZ\u0026rdquo; in NotITG, but uses RotZ for functions. Also affects hold heads in SM5 without extra mods needed.) Zoom (Zoom all three axis with the Mini calculations, affects receptors \u0026amp; notes. Known as \u0026ldquo;Size\u0026rdquo;, \u0026ldquo;Tiny\u0026rdquo; (Modstring only) or \u0026ldquo;Zoom\u0026rdquo; (Modstring only) in NotITG) SkewX (Aribtrary amounts of skewx, affects receptors \u0026amp; notes. Works like NoteSkewX. Known as \u0026ldquo;Skew\u0026rdquo; in NotITG) SkewY (Arbitrary amounts of skewy, affects receptors \u0026amp; notes. Works like NoteSkewY. Not available in NotITG v4.0) Stealth (Arbitrary amounts of stealth.) The limit is 40 points per axis per column.\nModSplineEnable Desc: This function turns on/off splines for the designated axis, allowing for saving performance when modsplines are not needed. In NotITG, this does not exist, as modsplines are always \u0026lsquo;on\u0026rsquo;.\nQuirks: This does not clear the modsplines themselves.\nPlayerOptions format: ModSpline(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;enable\u0026gt;)\nModSpline Desc: This function sets the spline point to have a given position and magnitude.\nQuirks: The position is not tweenable. Giving only three first three parameters returns the current value, position and rate for the point. Using this will not enable modsplines for the given axis. NotITG expects magnitudes and positions in multiples of 100, similar to what a modstring would parse.\nPlayerOptions format: ModSpline(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;column\u0026gt; (nil sets all columns), \u0026lt;point\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;position\u0026gt;, \u0026lt;approach rate\u0026gt;)\nNotITG Player format: Set\u0026lt;axis\u0026gt;Spline(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt; (-1 sets all columns), \u0026lt;magnitude\u0026gt;, \u0026lt;position\u0026gt;, \u0026lt;approach rate\u0026gt;)\nNotITG modstring format: spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;\u0026lt;point\u0026gt; for magnitude (omitting column hits all columns) \u0026amp; spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;offset\u0026lt;point\u0026gt; for position (omitting column hits all columns).\nModSplineTypeSetting Desc: This function sets what interpolation type the modsplines for a given axis will use.\nThe following types are available (denoted as \u0026lt;type\u0026gt;):\n\u0026lsquo;SplineType_Linear\u0026rsquo; (Linear interpolation, the default in both SM5 and NotITG) \u0026lsquo;SplineType_Cosine\u0026rsquo; (Cosine interpolation, magnitude must be between 0 and 100% in NotITG) \u0026lsquo;SplineType_Cubic\u0026rsquo; (Cubic bezier interpolation, magnitude must be over 100% in NotITG) Quirks: NotITG only has this available through modstrings, and affects all columns in both SM5 and NotITG.\nPlayerOptions format: ModSplineTypeSetting(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;type\u0026gt;) NotITG modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; spline\u0026lt;axis\u0026gt;type\nModSplineReset Desc: This function resets all spline points for the given axis on all columns. NotITG allows for column-specific clearing through modstring, but not their functions.\nQuirks: Unlike a normal reset, this instantly resets the splines to zero by setting the approach rate to 100000.\nPlayerOptions format: ModSplineReset(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;)\nNotITG Player format: Reset\u0026lt;axis\u0026gt;Splines()\nNotITG modstring format: spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;reset (omitting column hits all columns)\nPreserveModSplines Desc: When turned on, modsplines will no longer be cleared whenever \u0026ldquo;clearall\u0026rdquo; is passed into the modstring parser. Useful when working with ModSplines in modfile templates that use clearall.\nQuirks: N/A\nPlayerOptions format: PreserveModSplines(\u0026lt;enable\u0026gt;)\nNotITG Player format: NoClearSplines(\u0026lt;enable\u0026gt;)\nExample: SM5:\n--{point position, x magnitude (linear), z magnitude (cosine), rotz magnitude (cubic)} local splinetable = { {0.0, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}},--point 1 (placed at receptor) {1.5, {-1, 1, -1, 1}, {-1, 1, -1, 1}, {-math.pi/2, -math.pi/4, math.pi/4, math.pi/2}},--point 2 {3.0, { 2, 2, -2, -2}, { 3, 3, -3, -3}, { math.pi/2, math.pi/4, -math.pi/4, -math.pi/2}},--point 3 {4.5, {-3, -3, 3, 3}, {-3, -3, 3, 3}, { -math.pi, -math.pi/2, math.pi/2, math.pi}},--point 4 {6.0, { 4, -4, 4, -4}, { 1, -1, 1, -1}, { math.pi, math.pi/2, -math.pi/2, -math.pi}},--point 5 } for pn=1,2 do local a = po[pn] a:ModSplineEnable(\u0026#39;ModSplineAxis_X\u0026#39;, true, true)-- Enable the needed spline axis. :ModSplineEnable(\u0026#39;ModSplineAxis_Z\u0026#39;, true, true) :ModSplineEnable(\u0026#39;ModSplineAxis_RotZ\u0026#39;, true, true) :ModSplineTypeSetting(\u0026#39;ModSplineAxis_Z\u0026#39;, \u0026#39;ModSplineType_Cosine\u0026#39;, true)-- Set the desired interpolation types. :ModSplineTypeSetting(\u0026#39;ModSplineAxis_RotZ\u0026#39;, \u0026#39;ModSplineType_Cubic\u0026#39;, true) for i,v in ipairs(splinetable) do --v is the entry for a point. for col=1,4 do --Comment out the lines below as desired to see the splines on their own. --Note that all three at once may be too messy... --a:ModSpline(\u0026#39;ModSplineAxis_X\u0026#39;, col, i, v[2][col], v[1], 10000) a:ModSpline(\u0026#39;ModSplineAxis_Z\u0026#39;, col, i, v[3][col], v[1], 10000) a:ModSpline(\u0026#39;ModSplineAxis_RotZ\u0026#39;, col, i, v[4][col], v[1], 10000) end end end NotITG:\n--{point position, x magnitude (linear), z magnitude (cosine), rotz magnitude (cubic)} local splinetable = { {0.0, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}},--point 1 (placed at receptor) {1.5, {-1, 1, -1, 1}, {-1, 1, -1, 1}, {-math.pi/2, -math.pi/4, math.pi/4, math.pi/2}},--point 2 {3.0, { 2, 2, -2, -2}, { 3, 3, -3, -3}, { math.pi/2, math.pi/4, -math.pi/4, -math.pi/2}},--point 3 {4.5, {-3, -3, 3, 3}, {-3, -3, 3, 3}, { -math.pi, -math.pi/2, math.pi/2, math.pi}},--point 4 {6.0, { 4, -4, 4, -4}, { 1, -1, 1, -1}, { math.pi, math.pi/2, -math.pi/2, -math.pi}},--point 5 } for pn=1,2 do local a = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP\u0026#39;..pn) GAMESTATE:ApplyModifiers(\u0026#39;*-1 100 splineztype, *-1 200 splinerotationztype\u0026#39;, pn) if a then for i,v in ipairs(splinetable) do --v is the entry for a point. for col=1,4 do --Comment out the lines below as desired to see the splines on their own. --Note that all three at once may be too messy... --a:SetXSpline(i-1, col-1, v[2][col]*100, v[1]*100, -1) a:SetZSpline(i-1, col-1, v[3][col]*100, v[1]*100, -1) a:SetRotZSpline(i-1, col-1, v[4][col]*100, v[1]*100, -1) end end end end Video Example (Shows only the z and rotz splines):\nModSpline video example\n","description":"ModSplines is a system that allows for arbitrary note pathing through modifiers. This system is based off the spline system used in NotITG, which means it is usable alongside the pre-existing SM5 spline system and other modifiers, too.\nPoints are positioned like they are for Gradient modifiers, meaning in multiples of ARROW_SIZE away from the receptor.\nIn SM5, this is only accessible through the PlayerOptions functions, while NotITG has functions available in Player and also has modstring versions available (Though, it\u0026rsquo;s recommended to use the lua functions instead."},{"id":115,"href":"/user-guide/games/","title":"Supported Game Modules","parent":"User Guide","content":"As part of our commitment to rhythm game preservation (The Working Museum), Project OutFox will add a growing number of supported game modules so a new generation can play and enjoy these forgotten gems, and to showcase the creativity and expression our fellow developers employed in the past.\nProject OutFox supports a variety of game modules (modes), which can simulate different types of rhythm games (including note field layouts and, where applicable, game-play behaviour specific to the game being simulated). Game types are further divided into layouts (styles), which define the specific chart type to be played, such as the number of columns used, single layout or double layout, whether or not vs mode is available, number of players, timing windows, judgments, scoring etc. This project is a simulator we do not take code from official releases or use assets from these games. Support the industry!\nThis page will give a little more detail and history about the modes that we support, and new additions and tweaks added to Project OutFox that you may have not noticed. Click on a button below for mode specific information in more detail, and to learn a bit about how the mode has evolved.\nWe are still dedicated to our players from older versions, and this does not mean we are not focussing on working on our core game support! As of OutFox-alpha-4.18.1, they include: Dance / Fitness Pad Based Modes: dance (core) (3k, 3k double, 4k, 4k double, 6k, 6k double)\nParsers: .bms, .dwi, .sm, .ssc The default game type. This game type uses four lanes in the cardinal directions (left, down, up, right). It also contains a 6-lane style, adding up-left and up-right directions, and a 3-lane style using only up-left, down, and up-right. pump (core) (5k, 5k double, 6k (half-double)\nParsers: .ksf, .piu, .sma, .sm, .ssc A five-lane dance game, which uses four diagonal directions and the center rather than cardinal directions. techno (core) (4k, 4k double, 5k, 5k double, 8k, 8k double, 9k, 9k double)\nParsers: .sm, .ssc A dance game type designed for pads with nine panels, including 4-lane (similar to dance), 5-lane (similar to pump), 8-lane (using all but the center panel), and 9-lane styles in single and double versions. smx (core) (3k, 3k double, 5k, 5k double)\nParsers: .ssc A dance game type designed by StepRevolution using a new unique pad which uses the cardinal directions plus middle (left, down, up, right and centre). stepstage (6k, 3k)\nParsers: .ssc A dance game whose format is familiar to those that played it; it had 6 panels over 2 columns, based on a circular design and was made by Jaleco in 2000. kickbox (4k, 6k, 8k)\nParsers: .sm, .ssc An obscure lash-a-soft dance pad-to-a-punching-bag mode. Designed for a boxing style workout, it was requested by a community member in late 2014. Sensor / Mixed Sensor Based Modes: ds3ddx (4k + 4 sensor, 5k + 4 sensor)\nParsers: .ssc A dance game whose format is common among Chinese arcade dance games, which uses four diagonal foot panels, and four hand sensors around the pad in the cardinal directions. The extended version which used the centre panel as well as the diagonals was added to the game in the Spring of 2022, simulating E5Online style play. para (5 sensor, 8 sensor)\nParsers: .sm, .ssc A freestyle game designed for para para routines, which is typically played with five infrared hand sensors in a semicircular layout, and uses a considerably looser scoring system. ez2 (3k + 4 sensor)\nParsers: .sm, .ssc A game type based on the defunct arcade dance game EZ2Dancer, which uses three foot panels and a pair of hand sensors. maniax (4 sensor)\nParsers: .sm, .ssc A game type based on the defunct arcade dance game DanceManiax, which uses four hand sensors arranged into two columns (upper and lower). Instrument Based Modes gddm (core) (6k, 9k, 10k)\nParsers: .dtx, .gda, .g2a A drum mode supporting six-part (five drums and one pedal), nine-part (seven drums, bass pedal, hi-hat pedal), and 10-part (“Real”) styles, played with MIDI electronic drum kits. gdgf (core) (3fret, 5fret, 6fret coming soon)\nParsers: .dtx, .gda (formerly guitar prior to OutFox-alpha-4.9.8) A fiendishly difficult guitar mode supporting three-fret and five-fret styles, often played with a guitar style controller. a highly requested 6 fret mode is coming soon. gh (core) (5fret, 6fret coming soon)\nParsers: .chart, .mid A five-fret guitar mode simulating the mechanics of once-popular console games originating from North America. rb (core) (4 drum, 3 drum 2 cymbal (gh mode drums), 4 drum 3 cymbal)\nParsers: .chart, .mid A drum mode supporting the various different drum options from games originating from North America. This mode can be played with normal PS3/PS4/XBox drum kits, or with MIDI electronic drum kits. taiko (core) (1 drum - 4 hit points)\nParsers: .osu, .osz, .tja A popular game often played with a single drum controller. bongo - (2 bongos + clap)\nParsers: .osu, .osz, .tja A 2 hand drum controller styled mode. Uses content designed for taiko. This mode is often played with a 2 hand drum controller, or 3 midi drums called toms. kbm - (2 octave piano, 4 octave piano) Coming Soon\nParsers: .bmson A piano style game played using a small portion of a normal piano or keyboard. Best played on MIDI, or a normal piano with an arduino MIDI pickup. Most modern 48 key or 61 key MIDI keyboards work well and are recommended if you wish to use a compact option. karaoke - (1 pitch grid) Coming Soon\nParsers: .txt/.xml A karaoke style mode simulating the likes of UltraStar. It allows for the input of singing/rapping into a microphone, and like the other simulators, it uses pitch based detection for scoring. It will read most microphone inputs and can use the official SingStar mics, so keep them around, don\u0026rsquo;t lose that usb dongle! Controller / Key Based Modes: be-mu (core) (5k +scratch, 5k +scratch+foot, 5k +scratch double, 7k +scratch, 7k +scratch double)\nParsers: .bms, .bml, .bme Formally beat. A BMS player mode, supporting 5-key+scratch, 5-key+scratch+foot and 7-key+scratch styles and the ability to load BMS files. Full BME/BML support is almost complete. 5K and 7K charts without scratch are also supported, though will likely play in the 7 lane + scratch layouts. po-mu (core) (3k, 4k, 5k, 7k, 9k, 9k double)\nParsers: .pms, .bme Formally popn. A PMS player mode, supporting 3, 4, 5, 7, and 9-button styles, 2 player mode, and the ability to load PMS/BME po-mu files, with full extended po-mu support. The 4 button mode simulates a short lived arcade game with a different layout kbx (core) (1k to 19k)\nParsers: .bms, .bml, .bme .chart, .dwi, .dtx, .gda, .ksf, .mc, .mid, .osu, .osz, .pms, .qua, .qp, .sma, .sm, .ssc, .tja A 1 to 19 lane game type designed primarily for keyboard play, being able to play songs from any mode using the smartGen system. This is an OutFox-specific game type that does not simulate any specific game. The legacy SSC era kb7 mode charts are still supported and run in this mode instead. These pages below are a work in progress! Please be patient while we work on updating them! - Squirrel Dance / Fitness Pad Based Modes: dance pump techno smx stepstage kickbox Sensor / Mixed Sensor Based Modes: ds3ddx para ez2d maniax MIDI Instrument / Controller Based Modes: gddm gdgf gh rb taitai bongo kbm karaoke Controller / Key Based Modes: be-mu po-mu kbx Future game types These are proposed and are scheduled on the road-map. Limitations or code problems may delay or change these modes, so there is no date or ETA given.\njam - A mode properly supporting o2Jam and its modes, with full .OJM loader support. piu - A major refactoring to make it more accurate to the mainline series. ppr - An obscure \u0026lsquo;Plug in!\u0026rsquo; TV based cartridge marble game from 2001. djh - A Hero isn\u0026rsquo;t always needed, neither are the DJs cdj - The dj\u0026rsquo;s are crackin\u0026rsquo;! d86 - Feet dance Station Radio 3 panel Written and Maintained with ♡ by Squirrel\n","description":"As part of our commitment to rhythm game preservation (The Working Museum), Project OutFox will add a growing number of supported game modules so a new generation can play and enjoy these forgotten gems, and to showcase the creativity and expression our fellow developers employed in the past.\nProject OutFox supports a variety of game modules (modes), which can simulate different types of rhythm games (including note field layouts and, where applicable, game-play behaviour specific to the game being simulated)."},{"id":116,"href":"/dev/theming/Theming-3-Anatomy-Screen/","title":"Anatomy of a screen","parent":"Introduction to theming","content":"A screen generarly consists of 4 separate elements, and 3 special transitional elements, which are its layers. These can contain any kind of object, so they can be Lua scripts, images, video, you name it. These follow a draw order rule to display them.\nFrom draw on top to last (Marked red are the transition-specific layers): graph LR In:::Transition --\u003e Out:::Transition --\u003e Cancel:::Transition --\u003e Decorations --\u003e Overlay --\u003e Underlay --\u003e Background; classDef Transition fill:#f55 To create a file for a specific layer, just name the file as [ScreenName] [layer kind], so for example a Lua file that will control the Overlay layer from ScreenTitleMenu.\nScreenTitleMenu overlay.lua An important thing to mention with screen layers is: every layer MUST return a table. This is needed so the screen manager can create the screen, so either an empty table or an ActorFrame with any kind of content will do. For in-depth information on how to create an ActorFrame base, check ActorFrames and how to build them.\nDue to this draw order, keep in mind that objects created on higher levels will always be shown first before the others. This layering rule also has rules on how objects behave on those layers, with Decorations being the one more reserved for specific elements.\nBackground Layer The lowest drawn layer, being the first drawn. Can be used to elements that will contain visual glare for movement. A rule for this layer is its method for loading, which is cached. This means that any moment that changes are applied, they will not be shown until the user goes to a different screen that does not contain the same background file.\nUnderlay / Overlay The middle layers, where most objects will reside. This can be used for main elements that the user can interact with, or crucial information. No special rules are in these layers, so they can used for all general Lua scripting.\nDecorations A specifically-visual layer, where objects can be placed for decorations. Most actions are limited on this layer:\nLua based input is not available on this layer, as no input is ever sent. Transitional commands are not allowed. Instead, only the initial Init, On and Off commands are allowed. In / Out / Cancel Pure visual layers that serve as entrace, exit and backing out of a screen respectively. They are run as soon as the screen has to perform a change that will end up unloading itself.\nLua based input is not available on this layer, as no input is ever sent. For Cancel, the transition command to run the animation uses StartTransitioningCommand. Using OnCommand or InitCommand will make the animation run as soon as the screen is loaded. ","description":"A screen generarly consists of 4 separate elements, and 3 special transitional elements, which are its layers. These can contain any kind of object, so they can be Lua scripts, images, video, you name it. These follow a draw order rule to display them. From draw on top to last (Marked red are the transition-specific layers): graph LR In:::Transition --\u003e Out:::Transition --\u003e Cancel:::Transition --\u003e Decorations --\u003e Overlay --\u003e Underlay --\u003e Background; classDef Transition fill:#f55 To create a file for a specific layer, just name the file as [ScreenName] [layer kind], so for example a Lua file that will control the Overlay layer from ScreenTitleMenu."},{"id":117,"href":"/dev/mods/Mods-12-Chart-Mods/","title":"Chart modifiers","parent":"Guide to Modifiers","content":"Chart modifiers affect the chart itself, meaning what has to be stepped changes. These cannot be called during gameplay, but can be called through attacks \u0026amp; course files. All of these are boolean modifiers. At the moment, some of these aren\u0026rsquo;t properly set up for any game other than dance.\n\u0026ldquo;Transform\u0026rdquo; Modifiers Transform modifiers add or remove or alter notes from the chart, affecting how the chart has to be played. Some of these might disqualify your score depending on what version of SM is played. The list is shown in application order, from first to apply to last. (With exception to the first one).\nAttackMines (SM5 only) Desc: When active, all mines apply a random attack when hit, and all other effects that come with hitting mines still happens.\nQuirks: Appears to be activatable mid-gameplay?\nPlayerOptions format: AttackMines()\nModstring format: attackmines\nLittle Desc: Removes all notes that aren\u0026rsquo;t on 4ths.\nQuirks: N/A\nPlayerOptions format: Little()\nModstring format: little\nNoRolls Desc: All rolls become normal holds.\nQuirks: N/A\nPlayerOptions format: NoRolls()\nModstring format: norolls\nNoHolds Desc: All holds are replaced with a single tap note where the hold would start. Has a modstring alias of \u0026ldquo;nofreeze\u0026rdquo;.\nQuirks: N/A\nPlayerOptions format: NoHolds()\nModstring format: noholds\nNoMines Desc: All mines are removed from the chart.\nQuirks: N/A\nPlayerOptions format: NoMines()\nModstring format: nomines\nNoJumps Desc: All jumps are removed from the chart, meaning a single note would be left where a jump would have been. Also affects hands (3 notes at once) and quads (4 notes at once).\nQuirks: N/A\nPlayerOptions format: NoJumps()\nModstring format: nojumps\nNoLifts (SM5 only) Desc: Removes all lift notes from the chart.\nQuirks: N/A\nPlayerOptions format: NoLifts()\nModstring format: nolifts\nNoFakes (SM5 only) Desc: Removes all fake notes from the chart.\nQuirks: N/A\nPlayerOptions format: NoFakes()\nModstring format: nofakes\nNoHands Desc: Removes notes until there are no more than two columns being hit at a given time.\nQuirks: N/A\nPlayerOptions format: NoHands()\nModstring format: nohands\nNoQuads Desc: Removes notes until there are no more than three columns being hit at a given time.\nQuirks: N/A\nPlayerOptions format: NoQuads()\nModstring format: noquads\nNoStretch Desc: Eliminates jumps (2 notes at once) such that there\u0026rsquo;s only one note left where there would be two. Does not affect hands (3 notes at once) or quads (4 notes at once).\nQuirks: N/A\nPlayerOptions format: NoStretch()\nModstring format: nostretch\nBig Desc: Adds 8th notes between the 4th notes when possible.\nQuirks: N/A\nPlayerOptions format: Big()\nModstring format: big\nQuick Desc: Adds 16th notes between the 8th notes when possible.\nQuirks: N/A\nPlayerOptions format: Quick()\nModstring format: quick\nBMRize Desc: Performs Big, then Quick on the chart, supposedly \u0026ldquo;BMR-izing\u0026rdquo; it.\nQuirks: N/A\nPlayerOptions format: BMRize()\nModstring format: bmrize\nSkippy Desc: Adds 16th notes between 4th notes.\nQuirks: N/A\nPlayerOptions format: Skippy()\nModstring format: skippy\nMines Desc: Adds more mines.\nQuirks: N/A\nPlayerOptions format: Mines()\nModstring format: mines\nEcho Desc: Adds 8th note \u0026ldquo;echos\u0026rdquo; after all tap notes.\nQuirks: N/A\nPlayerOptions format: Echo()\nModstring format: echo\nWide Desc: Turns all single 4th notes into jumps.\nQuirks: N/A\nPlayerOptions format: Wide()\nModstring format: wide\nStomp Desc: Turns all relatively isolated 4th notes into jumps.\nQuirks: N/A\nPlayerOptions format: Stomp()\nModstring format: stomp\nPlanted Desc: Turns notes into holds such that there is at least one hold being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Planted()\nModstring format: planted\nFloored Desc: Turns notes into holds such that there is at least two holds being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Floored()\nModstring format: floored\nTwister Desc: Turns notes into holds such that there is at least three holds being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Twister()\nModstring format: twister\nHoldRolls Desc: Turns all holds into rolls. Goes by \u0026ldquo;holdstorolls\u0026rdquo; in ITG.\nQuirks: N/A\nPlayerOptions format: HoldRolls()\nModstring format: holdrolls\n\u0026ldquo;Turn\u0026rdquo; Modifiers Turn modifiers shift around the chart, but do not add or remove any notes. These are applied after the transform modifiers, so inserted notes get affected as well. They can be turned off all at once by using this modstring: 0% turn\nMirror Desc: The notes are mirrored across the field.\nQuirks: N/A\nPlayerOptions format: Mirror()\nModstring format: mirror\nBackwards (SM5 only) Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 180 degrees, which may not be the same as \u0026lsquo;mirror\u0026rsquo;.\nQuirks: N/A\nPlayerOptions format: Backwards()\nModstring format: backwards\nLeft Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 90 degrees to the left.\nQuirks: N/A\nPlayerOptions format: Left()\nModstring format: left\nRight Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 90 degrees to the right.\nQuirks: N/A\nPlayerOptions format: Right()\nModstring format: right\nShuffle Desc: Mixes around where the notes are.\nQuirks: N/A\nPlayerOptions format: Shuffle()\nModstring format: shuffle\nSoftShuffle Desc: Randomly performs either not shuffling, swapping of L+R, swapping of U+D or mirroring on every row.\nQuirks: N/A\nPlayerOptions format: SoftShuffle()\nModstring format: softshuffle\nSuperShuffle Desc: Runs Shuffle, then performs an extra shuffle on the tap notes (includes normal taps, fakes, mines and lifts) alone.\nQuirks: N/A\nPlayerOptions format: SuperShuffle()\nModstring format: supershuffle\n","description":"Chart modifiers affect the chart itself, meaning what has to be stepped changes. These cannot be called during gameplay, but can be called through attacks \u0026amp; course files. All of these are boolean modifiers. At the moment, some of these aren\u0026rsquo;t properly set up for any game other than dance.\n\u0026ldquo;Transform\u0026rdquo; Modifiers Transform modifiers add or remove or alter notes from the chart, affecting how the chart has to be played."},{"id":118,"href":"/user-guide/setup/controllers/","title":"Configure controllers","parent":"Setup","content":"On Alpha 4.5 and newer, we switched to using an XInput-compliant input system.\nDue to these changes, not all controllers (such as game-pads, dance pads, and other rhythm game-specific controllers) are guaranteed to function with OutFox out of the box (even if they were supported on earlier versions), unless a controller mapping profile has been created for that specific controller.\nWe would like to thank Josen Tiamat for writing these new instructions for how to configure your controllers for use on OutFox.\nStep 1: Things to check for first So you started up the game and boom you go to “Config Key/Joy Mappings” and set up your controller, skip this guide because you’re done with what you need to do.\nYou can’t configure your Config Key/Joy Mappings! OH NO! (I will get to this) Test your input, see if your keys are mapped and if so which ones. By pushing the buttons on the pad it’ll say something to the effect of “Key B 12 – Not Mapped” and if you step/press on the key and nothing shows up it’s not mapped, no big proceed to the next step to set it up.\nStep 2: The Easy Way So on to the good stuff; OutFox has a built in game-pad tool that will automatically take care of most of this for you\nYou push “Enter” on the keyboard and push the appropriate button on the dance pad/etc. to map the buttons to the button you want.\nI would recommend using this screen for most controllers on pc, it takes a lot of the guess work out of the whole thing. After setting this up repeat Step 1 if your keys show up as “Unmapped” that’s great go to the “Config Key/Joy Mappings” and do your thing, you’re done with the guide!\nIf it still doesn\u0026rsquo;t work\u0026hellip;\nStep 3: The not super intuitive way (SDL2 Game-pad Tool) There is a nifty tool around called SDL2 Game-pad Tool. You connect your controller (via USB or Bluetooth or however you desire to connect your controller to the PC), and it’ll show up on the top drop down menu.\nClick \u0026ldquo;Create a New Mapping\u0026rdquo; Step/Press the input you want for those buttons much like you would on Step 2 of this procedure. Skip the rest. Save the Mapping String. Copy the Mapping String. Go to where you installed the game, and paste the string into Data/gamecontrollerdb.txt A note The “#” is useful for when you want to have different Mapping Strings for the same game-pad, it basically hides the mapping string from the program reading it. I made 3 different mapping for testing the the program would only recognize one, then I hid the mapping string with a hashtag (pound symbol for you oldies around) and the one not hidden was now seen by the program.\nBasically, don’t do multiple mapping strings on the same controller (even if you change the name); the program will work with one at a time and honestly one is all you need. You should be good to go and repeat Step 1 and then go to “Config Key/Joy Mappings” right after and set up your pad.\nStill isn\u0026rsquo;t working? This hasn’t quite happened to me (I tried with the PS3 DDR mat) but there are 2 types of controllers, a “Hat” type and not. So let’s say for example you hook up a pad/controller and the D-Pad you configured up down left and right but “Config Key/Joy Mappings” only allows you to push one of them and the rest don’t work.\nTry configuring the directions to the analog stick instead and then mapping them again. I don’t think you should have to but it works, I’ve tested this with my PS4 Controller and in fact you can play with analog input.\nXInput interfering with HIDAPI mode, and breaking axis pads If you have an axis pad which is showing two sets of buttons, or simply just cancelling out, and you cannot seem to map it in game, this is what you need to do to fix it. The pad showing two buttons will look like this:\nI am pressing the left Arrow, but getting two sets of inputs. On Linux and MacOS, this can be due to an installed xbox360 driver, or the x-pad module intercepting the events, and reporting an axis anyway. The next patch of OutFox mitigates this issue a little bit, but it still is a pain.\nTo fix this, you need to write down the BUTTON numbers shown on screen, so you get a list for all four arrows:\nDown=Joy1_Button 2 Left=Joy1_Button 1 Right=Joy1_Button 4 Up=Joy1_Button 3 Make sure that you close the game. You can now navigate to your save folder, and look for your key-maps.ini file and set the buttons manually, so you can basically ignore the axis values given by the x-pad driver. you need to add the mapping before the ::: as shown below:\nYou can save this, and then start the game again, and your pad will be mapped.\nDown=Joy1_Button 2 Left=Joy1_Button 1 Right=Joy1_Button 4 Up=Joy1_Button 3 Make sure that you close the game. You can now navigate to your save folder, and look for your key-maps.ini file and set the buttons manually, so you can basically ignore the axis values given by the x-pad driver. you need to add the mapping before the ::: as shown below: You can save this, and then start the game again, and your pad will be mapped.\nSteam Deck Layout We have added a quick guide for the layout of the Deck on default buttons. They are set up for 4 panel, so you can then remap them.\nOn some themes which only use the \u0026lsquo;Arcade\u0026rsquo; glyphs, (red/green/grey buttons) we have added these as well so you know which is which.\n","description":"On Alpha 4.5 and newer, we switched to using an XInput-compliant input system.\nDue to these changes, not all controllers (such as game-pads, dance pads, and other rhythm game-specific controllers) are guaranteed to function with OutFox out of the box (even if they were supported on earlier versions), unless a controller mapping profile has been created for that specific controller.\nWe would like to thank Josen Tiamat for writing these new instructions for how to configure your controllers for use on OutFox."},{"id":119,"href":"/user-guide/controllers/controller_mapping_drums/","title":"Drums Mapping","parent":"Controllers and Peripherals","content":" Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name po-mu Button 1 Blue Pad and Cym Right Yellow Button 2 Green Pad and Cym Right Green Button 3 Red Pad Red Button 4 Yellow Pad and Cym Right Blue Button 5 Right Pedal Button 6 Left Pedal ","description":" Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name po-mu Button 1 Blue Pad and Cym Right Yellow Button 2 Green Pad and Cym Right Green Button 3 Red Pad Red Button 4 Yellow Pad and Cym Right Blue Button 5 Right Pedal Button 6 Left Pedal "},{"id":120,"href":"/dev/mods/","title":"Guide to Modifiers","parent":"Developers and Creators","content":"Want your arrows to dance around to the music (as seen in Pump it Up PRO 2 and the StepMania/ITG Modfile Community)?\nWell, if you\u0026rsquo;re a fan of modifiers and attacks, this guide is for you!\nWhat are Mods/Attacks? Modifiers (or Mods) apply all kinds of effects to the notes in a song - they can make the notes scroll in different directions, bounce to the beat, and many, many more things!\nYou can manually turn on modifiers on any song by entering the player options menu (press start twice when you pick a song to play), and choosing Modifiers then Exit at the bottom. Mods in the Acceleration, Effects, Appearance, and Scroll categories work best for attacks - feel free to play around!\nAttacks are one of the easiest ways to add Modifiers to your simfile - Attacks will apply whatever mods you want at specific times you set in the song!\nFor StepMania 5/Outfox-based arcade cabinets (and SM5-based games like PIU Infinity), Attacks can even be used in USB custom songs and charts (if enabled)!\nAdding Attacks to a Simfile We\u0026rsquo;ll assume you\u0026rsquo;ve already created a simfile, and know a bit about how to use the editor here.\nFirst off:\nOpen a Simfile in the Outfox editor (Title Screen \u0026gt; Edit/Share \u0026gt; Edit Songs/Steps). Pick a song, then pick a difficulty (chart).\nWhen editing the chart, press Enter where you want the Modifier to start.\nChoose Modifiy attacks at current beat at the bottom of the menu.\nChoose Add Attack\nHere, you\u0026rsquo;ll enter a Modifier to get applied:\nMany modifiers from the Player Options menu will work (Beat, Drunk, etc), for now just type Beat and press Enter. Any attacks you add will show up to the right of the notes, both when editing and playing a simfile in the editor. Press P to play your song - you should see the attack you added scroll up the screen with the notes.\nWhen the attack with your Beat modifier scrolls to the top of the screen, the arrows will start bouncing to the beat! Editing/Removing Attacks Attacks only last a few seconds by default - to make it last longer you\u0026rsquo;ll need to edit the attack\u0026rsquo;s length.\nEdit an Attack In the editor, go to the beat where the Attack you want to edit is, and press Enter.\nAll Attacks on that beat are listed - pick the one you want to edit (arrow keys/enter).\nIf you don\u0026rsquo;t see the attack you just added, make sure you\u0026rsquo;re lined up to the Exact time the Attack is at! From here, press Enter on any of these options to change them:\nStarting time: When this attack starts. It\u0026rsquo;s better to remove/re-add an attack if you want to change when it starts. Seconds Remaining: How long the attack lasts (defalt: 5 seconds) Attack 1: The mod you just added - press enter to change Add Mod: Pick this to add another mod to this attack Remove an Attack In the editor, go to the beat the Attack is on and press Enter.\nPick the attack you want to remove and press Enter.\nPick the Mod you want to remove and press Enter.\nWhen asked for a new Mod, backspace all the letters in the mod and press Enter.\nWhen all Mods in an attack are removed, the Attack is auto-removed. Mod Strength/Approach Rate Mod Strength Is Beat too wild? Not wild enough? You can fix that!\nTo change how strong a mod is, add a percentage before it, like 50% Beat\nBy default, any mods you add default to 100%. You can dial this down if you don\u0026rsquo;t want a mod to be as strong.\nPercentages above 100% are a-ok if you want really strong mods! Negative percentages like -50% Beat work too if you want to totally invert an effect (it might not be obvious on all mods, but it does work).\nFinally: No means the same thing as 0%. Say, if you have a Beat attack earlier in the song, you can turn it off with 0% Beat or No Beat - either works!\nThe difference between 50% Beat and 100% Beat\nIn the above video - Left = 40% Beat, Right = 125% Beat\nMod Approach Rate Want a mod to slowly fade in over time, or instantly go to max strength? You can change that too!\nTo change how fast/slow a mod is applied, add a * and a number before the mod, like *2 Beat\nHigher numbers apply mods faster, lower numbers (decimals included!) make mods apply slower.\n*0.5 = Half as fast, *2 = Twice as fast.\n(The default *1 applies at a rate of 100% of a mod over 1 second)\nMod approach rate can also combine with any strength, including 0%! If you want to get rid of a mod really fast, you can use an attack like *50 0% Beat.\nThe difference between *0.5 Beat and *10 Beat\nIn the above video - Left = *0.5 Beat (fades in half as fast), Right = *10 Beat (fades in 10x as fast!). They both get to the same strength at the end, but the left side takes longer to do so.\nResources/What\u0026rsquo;s Next Next up is to play around with Modifiers! Experiment with what effects you can get, and discover what you do/don\u0026rsquo;t like!\nWhat Mods Can I Use? Lots, actually!\nCheck out the Guide to Mods in the sidebar for a list of mods you can use!\nMods Resources 0b5vr\u0026rsquo;s Flip-Invert site helps give you combinations of various mods to move the note columns across the screen. Just drag the receptors where you want them on-screen!\n(You can alternatively use the MoveX/Y/Zn mods to move single note columns, like MoveX1, MoveX2, etc) Check out WinDEU\u0026rsquo;s Marathon Tutorial series - it focuses on older versions of StepMania (where some mods, like Drunk and Tipsy, have different names), but a lot of the info still applies to SM5/Outfox. The later videos in the series dive really deep into how some mods behave!\nHow to set up Mods in Courses in also covered in earlier videos in the series (though again, focusing on older versions of StepMania) You can join Project Outfox\u0026rsquo;s Discord server for more help from the community - feel free to ask mods/attacks-related questions in channels like #mods-coding-help.\nMy Mods Don\u0026rsquo;t Work! Double check you\u0026rsquo;ve spelled your Mod name right - mods from older versions of the game (like OpenITG) may have different names in SM5/Outfox! You may get strange behavior if you add new attacks into a simfile before the last attack in the file. Mod Behaviors Across Different Themes Some mods you add (like Drunk, Tornado, Boomerang) may change behavior depending on the theme you\u0026rsquo;re currently using.\nIn older versions (like Stepmania 5.0/5.1), the theme\u0026rsquo;s internal resolution (HD vs non-HD themes, specifically SCREEN_HEIGHT) is used in calculations for certain mods. On these versions, these mods will behave differently on themes with different internal resolutions.\nIn Outfox, these calculations are performed based on a completely separate theme metric instead, ModifierHeight. If the theme changes this value, it will affect those calculations (and therefore mod behaviors, and is noted as doing so).\nPlan accordingly if you plan on playing your simfiles/chart edits on different versions/themes!\nOther Notes Mods obey stops and BPM changes in songs. If your song stops while a mod like Beat is in effect, the notes will freeze in the middle of Beat\u0026rsquo;s animation, skewed to the sides. Earlier versions of StepMania can round the time a mod starts at if you save and exit a simfile in the editor, making it harder/impossible to edit in the future. If this happens, you\u0026rsquo;ll need to manually edit the mod lines under the #ATTACKS tag in your simfile\u0026rsquo;s .sm/.ssc files. ","description":"Want your arrows to dance around to the music (as seen in Pump it Up PRO 2 and the StepMania/ITG Modfile Community)?\nWell, if you\u0026rsquo;re a fan of modifiers and attacks, this guide is for you!\nWhat are Mods/Attacks? Modifiers (or Mods) apply all kinds of effects to the notes in a song - they can make the notes scroll in different directions, bounce to the beat, and many, many more things!"},{"id":121,"href":"/user-guide/controllers/controller_mapping_guitars/","title":"Guitars Mapping","parent":"Controllers and Peripherals","content":" Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name gh gdgf Button 1 Blue Fret Fret 4 Fret 4 Button 2 Green Fret Fret 1 Fret 1 Button 3 Red Fret Fret 2 Fret 2 Button 4 Yellow Fret Fret 3 Fret 3 Button 5 Orange Fret Fret 5 Fret 5 Button 9 Share Button 10 Options Whammy Button 11 Solo Buttons (Any) H-Up Strum Up Strum Up H-Down Strum Down Strum Down ","description":" Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name gh gdgf Button 1 Blue Fret Fret 4 Fret 4 Button 2 Green Fret Fret 1 Fret 1 Button 3 Red Fret Fret 2 Fret 2 Button 4 Yellow Fret Fret 3 Fret 3 Button 5 Orange Fret Fret 5 Fret 5 Button 9 Share Button 10 Options Whammy Button 11 Solo Buttons (Any) H-Up Strum Up Strum Up H-Down Strum Down Strum Down "},{"id":122,"href":"/dev/theming/","title":"Introduction to theming","parent":"Developers and Creators","content":" This guide is still in progress! A lot of elements are still in the works, and are constantly updated. Come back regularly for more information.\nThemes in OutFox (and general StepMania) are visual/gameplay tweaks that can completely change the experience of play, by allowing almost complete customization of the entire game with just Lua, the scripting language for OutFox.\nThis guide will comprise of the process on how to create such theme from scratch, provide tips along the way, as well as best practices and history throughout the years.\nTable of contents: Theming differences between older versions The Structure of folders Creating a custom screen Anatomy of a screen Theming tips and tricks Creating a Font Scripts Custom Input Modules Sounds Guide Written and Maintained by Jose_Varela.\n","description":"This guide is still in progress! A lot of elements are still in the works, and are constantly updated. Come back regularly for more information.\nThemes in OutFox (and general StepMania) are visual/gameplay tweaks that can completely change the experience of play, by allowing almost complete customization of the entire game with just Lua, the scripting language for OutFox.\nThis guide will comprise of the process on how to create such theme from scratch, provide tips along the way, as well as best practices and history throughout the years."},{"id":123,"href":"/dev/effects/EffectFiles-ModifierFiles/","title":"Modifier Files","parent":"Effect Simfiles","content":"These simfiles have modifiers that are scripted to happen at various points of the song. The difficulty can range between \u0026ldquo;trivial to read\u0026rdquo; to \u0026ldquo;may as well memorize the chart\u0026rdquo;.\nOften called \u0026ldquo;Modfiles\u0026rdquo; or \u0026ldquo;Modcharts\u0026rdquo;.\nThese usually use the FGCHANGES or BGCHANGES of a simfile to load the lua files (if any are used).\nDisclaimer: Make sure you\u0026rsquo;ve got making a chart down before starting to make modcharts! Good mods can\u0026rsquo;t save a bad chart!\nHow to Apply Modifiers There are a few ways to go about this, and it varys depending on what version of SM is being used.\nApplyGameCommand (SM3.95/oITG/nITG) ApplyGameCommand is a GameState function that provides a way to send modifiers among other commands. The first paramter is the command type followed by the parameters. (In this case, a modstring) The second parameter is what player to apply the command (1 = player 1). If not specified, it applies to all players.\nGAMESTATE:ApplyGameCommand(\u0026#34;mod, *0.5 420 beat\u0026#34;, 1) While it\u0026rsquo;s still available in SM5 (including OutFox), it\u0026rsquo;s not recommended because it applies mods to the \u0026ldquo;Preferred\u0026rdquo; ModsLevel, which means modifiers apply instantly (no transition), and they persist outside of the simfile. SM5.2 Doesn\u0026rsquo;t even have this function available.\n#MODS (Course files, SM3.95/oITG/nITG/SM5) Old modfiles used to require going into marathon mode to play the scripted modifiers. Unlike most things, this is time-based due to charts being able to have stops.\n#MODS:TIME=0.000:END=10.000:MODS=*0.5 420 beat; #MODS:TIME=5.000:LEN=1.600:MODS=*2 50 stealth; (ex: Beat starts at 0 seconds and ends at 10. Stealth turns on at 5 seconds and ends 1.6 seconds later)\nNowadays, this is considered obsolete in favor of lua-powered modifiers. It\u0026rsquo;s still usuable in SM5.\n#ATTACKS (Simfiles, nITG/SM5) Allows for the application of modifiers similar to what course files have. The syntax is exactly the same, just with MODS becoming ATTACKS.\n#ATTACKS:TIME=0.000:END=10.000:MODS=*0.5 420 beat; #ATTACKS:TIME=5.000:LEN=1.600:MODS=*2 50 stealth; nITG accepts #ATTACKS or #MODS inside the .sm file, while SM5 only accepts #ATTACKS in sm \u0026amp; ssc.\nThese do not load in course mode, however.\nApplyModifiers (nITG) A dedicated function for applying modifiers without needing the processing overhead and \u0026ldquo;mod, \u0026quot; that ApplyGameCommand does.\nGAMESTATE:ApplyModifiers(\u0026#34;*0.5 420 beat\u0026#34;, 1) Often used as a replacement for ApplyGameCommand in nITG modfiles.\nPlayerOptions functions (SM5) Every modifier has a setter function in PlayerOptions. This can be used in place of other functions. These are case-sensitive, though. If using strings, they\u0026rsquo;ll have to be parsed to make use of these functions.\nlocal po = {GAMESTATE:GetPlayerState(0):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;), GAMESTATE:GetPlayerState(1):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} po[1]:Beat(4.2, 0.5) SetPlayerOptions (SM5) This function works by resetting the PlayerOptions for the given level, and setting it according to the string.\nGAMESTATE:GetPlayerState(PLAYER_1):SetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;, \u0026#39;*0.5 420 beat\u0026#39;) Because it resets PlayerOptions, it might not be so useful for applying scripted modifiers.\nFromString (SM5.1 and onwards) Like how ApplyModifiers is specifically for modstrings in nITG, FromString provides direct access to the string parser used for modifiers in ApplyGameCommand, and works very much like how ApplyGameCommand would.\nlocal po = {GAMESTATE:GetPlayerState(0):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;), GAMESTATE:GetPlayerState(1):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} po[1]:FromString(\u0026#34;*0.5 420 beat\u0026#34;) Modfile templates Starting to make a modfile can seem really daunting if one does not know how to begin. Luckilly, there are many templates out there to help with creating modfiles.\nOnes made for Open/NotITG and SM3.95 are usually done with .xml files, and some rare .lua files.\nOnes made for SM5 are almost always .lua files.\nStepMania 5-Based templates MTK\u0026rsquo;s OutFox port of Exschwasion\u0026rsquo;s easing template\nhttps://drive.google.com/open?id=1HfCFvTHZUI4dO_eAk4iN5mO3H61caHzE Lost of local variables used up in the main scope to preserve syntax. The place to put the actual calls is a little different. XeroOl\u0026rsquo;s port of the \u0026ldquo;Mirin\u0026rdquo; template\nhttps://github.com/XeroOl/sm5-mirin Unknown if up to date. Sudospective\u0026rsquo;s Kitsu Template\nhttps://github.com/Tiny-Foxes/kitsu-template Up to date: fully supports Project OutFox Fully compatible with the new tween system Object Orientated Template Easy to find update loop OpenITG/NotITG/SM3.95 templates Exschwasion\u0026rsquo;s easing template\nOpenITG: https://drive.google.com/open?id=1q_d8bJw80uJ4UBUWRj-4iKtTe1ORNkDl NotITG: https://drive.google.com/open?id=10J7B8EOeMAcS0WSvfcnni8UG7xbq2X66 Very popular \u0026amp; widely used. Modstrings are fully usable. Has ease functions so you\u0026rsquo;re not limited to just linear, accelerate, decelerate \u0026amp; spring. These can be applied to modifiers \u0026amp; functions. Needs sustains to ensure the eases fully complete. Has an \u0026ldquo;actions\u0026rdquo; table (at a given beat, a function runs or a message is broadcast) XeroOl\u0026rsquo;s \u0026ldquo;Mirin\u0026rdquo; template\nhttps://github.com/XeroOl/notitg-mirin Documentation: https://xerool.github.io/notitg-mirin/ Gaining popularity. Supposed to be optimized (a lot more than the ease template) Allows for \u0026lsquo;custom\u0026rsquo; modifiers through node Has a plugin system to allow for extending the template. https://github.com/XeroOl/notitg-mirin-plugins Has ease functions No sustains needed. Aims to not leave behind global variables. [citation needed] Cannot use modstrings? [citation needed] difficulty to use vs ease template [citations needed] TaroNuke\u0026rsquo;s \u0026ldquo;Wow! It\u0026rsquo;s Made\u0026rdquo; template\nUsed during TaroNuke\u0026rsquo;s \u0026ldquo;Wow! It\u0026rsquo;s Made\u0026rdquo; streams where he wrote a modfile live. https://www.twitch.tv/videos/321383917 https://www.twitch.tv/videos/321386003 https://www.twitch.tv/videos/321379794 https://www.twitch.tv/videos/321380780 Also pretty much how mods boot camp 3 files were made. What does it have? Daikyi\u0026rsquo;s simple template\nhttps://cdn.discordapp.com/attachments/227819834480656384/493515557216452638/default.xml Super simple \u0026amp; basic. (So, might be good for beginners) Modstrings are fully usable via mods table. Has an \u0026ldquo;actions\u0026rdquo; table. Lots of comments for documentation. Ky_Dash\u0026rsquo;s template\nhttps://github.com/KyDash/nitg-template \u0026ldquo;somewhat cursed\u0026rdquo; ??? FMS_Cat\u0026rsquo;s template\nUsed in FMS_Cat\u0026rsquo;s modfiles. Mainly uses \u0026ldquo;build.js\u0026rdquo; to construct the xml files. CatEvent system for queueing everything? Everything is a function? XeroOl\u0026rsquo;s Galaxy Mod Loader (XGML) template\nhttps://github.com/XeroOl/notitg-xgml Predecesor to mirin Considered deprecated/obsolete? Has addons to extend template functionality https://github.com/XeroOl/notitg-xgml-addons What else? BrotherMojo\u0026rsquo;s template\nAs seen in babaroque \u0026amp; blaster \u0026amp; mkdr? WinDEU\u0026rsquo;s template\nAs seen in Mods Boot Camp? Cering\u0026rsquo;s template (forked from exsch?)\nAs seen in NJSRT \u0026amp; Aster\u0026rsquo;s Astral Adventures + Conflict? HeySora\u0026rsquo;s template\nAs seen in purple people eater? FMS_Cat\u0026rsquo;s Automaton template\nhttps://github.com/FMS-Cat/automaton-notitg-template Jaezmien\u0026rsquo;s template\nhttps://github.com/Jaezmien/NotITG_Template ","description":"These simfiles have modifiers that are scripted to happen at various points of the song. The difficulty can range between \u0026ldquo;trivial to read\u0026rdquo; to \u0026ldquo;may as well memorize the chart\u0026rdquo;.\nOften called \u0026ldquo;Modfiles\u0026rdquo; or \u0026ldquo;Modcharts\u0026rdquo;.\nThese usually use the FGCHANGES or BGCHANGES of a simfile to load the lua files (if any are used).\nDisclaimer: Make sure you\u0026rsquo;ve got making a chart down before starting to make modcharts! Good mods can\u0026rsquo;t save a bad chart!"},{"id":124,"href":"/user-guide/meta/serenity/","title":"OutFox Serenity","parent":"Front Matter","content":" Hey! There are new pages with more info about OutFox Serenity, check them out!\nSerenity User Profiles Serenity Volume Resume What is OutFox Serenity? OutFox Serenity is the official community song pack project made primarily for Project OutFox. Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the functionality of Project Outfox by offering charts for multiple game types beyond just 4-key/dance.\nHow was OutFox Serenity created? During Project OutFox Alpha 4.8.0 development, we started to release many modes, however, some of those modes have complicated chart standards or no longer have support. We decided then that it was right to create a community pack based on StepMania StepMix where the community would contribute for songs to be bundled with the game, but this time, songs for every mode OutFox supports.\nHow can I contribute to OutFox Serenity? Make sure to read our guidelines to understand the rules of contribution and submission. Fill our online form selecting the option of which you want to submit and any other required information. If you have music that follows our Music guidelines, then please submit it using our online form, once you submit you have agreed that we have permission to store/share your content with members of our team to organize the selection of future volumes of OutFox Serenity and that the public has permission to Stream/Record and Upload Videos playing Project OutFox with your songs, our channel will upload your song to Project OutFox Youtube Channel and that your song can be featured in arcades, as long as your song is selected.\nWe will request you to use our templates which can be found on the Project OutFox Discord Server. Make sure to check the pinned messages as they include each game mode scaling.\nDoes OutFox Serenity work with other StepMania forks? No, the packages we provide include content which will not work with other StepMania forks and can even cause crashes when trying to load them.\nContributors and the Serenity Team prepare the pack with Project OutFox performance and behavior in mind, even if some individual chart works with those older forks.\nHow do I update my packs? When a new version comes out, we release multiple packages, usually it will be like this:\nAll in One, this package will include all content from all volumes X Volume Only, this package will include only the new volume and its content. (It WON\u0026rsquo;T include new content for older volumes that were produced during the development of the new volume) We recommend you to download the \u0026ldquo;All in One\u0026rdquo;, delete the content inside your local OutFox Serenity groups and replace with what is inside the new All in One package, this way you avoid losing scores (Unless the chart has been updated), the general idea is to keep everything with the same directory path. It is not recommened to just add an replace content this can introduce problems in the future.\nHow will Volume 3 work? Volume 3 will work very different from past volumes, but to make it simple:\nWe will reveal 3 songs with SSC Templates and that will be a season. Contributors can contribute with charts and graphics. After 3 month from the season reveal, we will release that season package and start development of the next season. Important:\nTTC (Time to Chart) for every season will be 3 months. There\u0026rsquo;s no Testing Weeks, make sure your content is final and meets all our requirements before sending. Each season will always have 3 songs at max. If a song has charts but no graphics yet, it will use the pack graphics, if after 2 months of the song reveal there\u0026rsquo;s still no graphic for that song, then it will be made by members of the Serenity Team. Can I Stream/Record and Upload Videos of me playing Serenity Songs or use them in a Arcade? Yes! In case you want to be extra secure, each song folder in our package includes a text file with licenses for the Song and Graphics. (If a section isn\u0026rsquo;t include for one of those, you can assume you\u0026rsquo;re safe.)\nWhat are OutFox Serenity Volumes? Volume 1 OutFox Serenity Volume I Released August 27, 2021, OutFox Serenity Volume I features music by Aspid Cat, Drazil, Jack5, Matduke, mmry, PizeroFox, Seo, and Sevish. Alongside 4-panel (dance) and 5-panel (pump) charts, some of its songs also have be-mu, po-mu, techno (8- and 9-panel), gddm, and gdgf, and gh charts.\nView Chart Table Mode Charts dance 110 pump 59 gh 28 gddm 18 po-mu 16 smx 16 be-mu 14 techno 10 gdgf 8 maniax 2 kb6 1 ds3ddx 1 ez2 1 There are a total of 284 charts available to play in 11 songs for OutFox Serenity Volume 1.\nWatch video here Volume 1.5 OutFox Serenity Volume I Winter Update The Winter Update to OutFox Serenity Volume I features three new songs by DJ Megas, Matduke and Pekoneko (ペコネコ). It also includes changes to some of the existing songs from Volume 1, including additional charts, and key sounded be-mu/po-mu and gh charts for selected songs.\nView Chart Table Mode Charts dance 26 gh 8 bemu 8 pump 5 pomu 2 kb6 1 There are a total of 50 charts available to play in 3 songs from OutFox Serenity Volume 1 Winter Update.\nWatch video here Volume 2 OutFox Serenity Volume II Released September 4, 2022, Serenity Volume II features music by Ace of Beat, Finite Limit, Jack5, Kurio Prokos, Lagoona, Rilliam, rN, SiLiS, and td.\nView Chart Table Mode Charts dance 66 gh 33 pump 25 bemu 15 pomu 14 smx 9 ds3ddx 5 kb4 4 kickbox 4 kb8 3 ez2 1 kb6 1 There are a total of 180 charts available to play in 10 songs for OutFox Serenity Volume 2.\nWatch video here Volume 2.5 OutFox Serenity Volume II Winter Update Released February 21, 2023, the Winter Update (version 2.5) adds three new songs by Akako Hinami and Zenth, as well as new charts for other songs from previous versions.\nView Chart Table Mode Charts dance 28 kb6 8 pump 4 pomu 3 bomu 3 There are a total of 46 charts available to play in 3 songs from OutFox Serenity Volume 2 Winter Update.\nWatch video here Are modfiles allowed to be submitted? Yes. But make sure its gimmicks only work with your specific chart/difficulty, no chart should impact other\u0026rsquo;s charts in any way.\nI submitted music but it wasn\u0026rsquo;t featured on the next volume/season, why? Our team has a list of music submitted by members of the community, we try to select a safe amount of music that guarantees a healthy amount of charts will be made for each one since chart and graphic submissions are made purely by the interest of the authors and at the moment of writing this document, Project OutFox has no dedicated Chart Creation Team.\nAnother possible reason is that your submission does not follow the music guidelines, if you think that is the case then you can contact us using the following socials:\nDiscord Reddit (Post or Private Message any Mods) Project OutFox Forum (Create a post) Twitter (Private Message) Facebook (Private Message) Github (New Discussion) Make sure to check any of the socials you provided to us, if we are considering using your music but it\u0026rsquo;s missing something, we will try to contact you.\nWhy are some music files missing from the repository? Those are special as they use a license that doesn\u0026rsquo;t allow us to publicly host them on Github, they are still bundled with our release zips.\nWhich artists have had their music released with OutFox Serenity? Matduke Low End Theory (Volume I Winter Update) Heartbeat (Volume I) Let Me See You (Volume I) Broken (Volume I) Sevish Some Things Must (OutFox Edit) (Volume I) PizeroFox Tagebuch der vergangenen Erinnerungen (Volume I) mmry After the Ending (Volume I) Jack5 Nexen II (Phase Two) (Volume I) Sweetners (Volume II) Aspid Cat Abandoned Doll (Volume I) Conflicting Revenge (Volume I) Seo brokenHeart resurrection ~estele~ (Volume I) spirai project \u0026ldquo;drazil\u0026rdquo; synthborn lovebirds (Volume I) DJ Megas Plasma (Volume I Winter Update) Pekoneko (ペコネコ) Umi\u0026rsquo;s Secret (Chiptune Mix) (Volume I Winter Update) Rilliam chop chop (Volume II) Kurio Prokos Beatucada (Volume II) Lagoona Into My Dream (Volume II) SiLiS Bounded Quietude (Volume II) Phycietiia (Volume II) Neutralize (PTB10 Mix) (Volume II) Finite Limit Bounded Quietude (Volume II) rN Phycietiia (Volume II) Thomas Dingwall a.k.a td CRUSH THE DEVIL (IN MY BRAIN) (Volume II) Ace of Beat Technological ≠ Emotional (Volume II) B-Happy (Volume II) Akako Hinami Summer Overload (Volume II Winter Update) Halcyon (Volume II Winter Update) Zenth Relaxation Piece of Conclusion (Volume II Winter Update) Which charters have had their charts released with OutFox Serenity? Author Charts Daniel Rotwind 89 Chriszo 70 shockdude 69 Marukomuru 62 Jack5 56 Yosefu 33 Xiddy 25 K.TURN 23 Fingy 18 48productions 16 Rippy Ripster 15 Melone 11 Telperion 11 Kawafumi 9 A Dancing Maractus 8 Gr00txD 8 Kaede 7 Homeee 5 dj505 4 kals 4 DJGRS 4 Drazil 3 Snil4 3 SHRMP0 3 Kurio Prokos 3 Timo Kitsune 2 Jose_Varela 1 Sevish 1 Ario 1 Jose Varela 1 Sevish 1 Sudospective 1 PCBoyGames 1 Which graphic makers have had their artwork released with OutFox Serenity? Lirodon Plasma (Background, Jacket, Banner) Broken (Background, Jacket, Banner) Heartbeat (Background, Jacket, Banner) Let Me See You (Background, Jacket, Banner) Conflicting Revenge (Background, Jacket, Banner) After the Ending (Jacket) Sweetners (Background, Jacket, Banner) Phycietiia (Background, Jacket, Banner) Technological ≠ Emotional (Background, Jacket, Banner) Summer Overload (Background, Jacket, Banner) Halcyon (Background, Jacket, Banner) Daniel Rotwind Umi\u0026rsquo;s Secret (Chiptune Mix) (Background, Jacket, Banner) *Art commissioned from Trinitoid Low End Theory (Background, Jacket, Banner) *Art commissioned from Khayos Tagebuch der vergangenen Erinnerungen (Background, Jacket, Banner, BGA) *Art comissioned from ArtPhantom17 brokenHeart resurrection ~estele~ (Background, Jacket, Banner) Bounded Quietude (Background, Jacket, Banner) *Art comissioned from Axl_fox Neutralize (PTB10 Mix) (Background, Jacket, Banner) *Art comissioned from Zeta-Neubourn Jack5 Nexen II (Background, Jacket, Banner) Some Things Must (OutFox Edit) (Background, Jacket, Banner) Jousway After the Ending (Background, Banner) Drazil synthborn lovebirds (Background, Jacket, Banner) Aqui Abandoned Doll (Background, Jacket, Banner) Jose_Varela Heartbeat (BGA) Beatucada (Background, Jacket, Banner) Dramis chop chop (Background, Jacket, Banner) K.TURN Into My Dream (Background, Jacket, Banner, BGA) Telperion CRUSH THE DEVIL (IN MY BRAIN) (Background, Jacket, Banner) Kaimaruz B-Happy (Background, Jacket, Banner) Melone Relaxation Piece of Conclusion (Background, Jacket, Banner) Who organizes the project? Most of the work is handled by OutFox Community Team with occasional help from OutFox Design Team and feedback from OutFox Development Team. In Specific:\nMoru Zerinho6: Serenity Project Lead, Serenity Server Organization, Music Selection, Pack Organization, Serenity Website Section, Serenity Wiki, Simfile Templates. Lirodon: Pack Assets, Serenity Trailer, Serenity Website Section, Guidelines Rules, Pack Advertisement. Daniel Rotwind: Creation of templates for be-mu/po-mu game modes, Pack Assets, Chart Creation. shockdude: Creation of GH game mode templates, Chart Creation. Sevish: Sound Normalization, Music Feedback, Chart Creation. Melone: Chart Creation, Chart Feedback, Music Selection. Jose_Varela: Chart Creation, Pack Assets. Colin: Chart Creation, Music Feedback. dj505: Chart Creation and Feedback. Moneko: Music Selection. We\u0026rsquo;re looking for people to join the serenity team to help with the creation of simfile templates, by defining song metadata such as BPM, Artist, Stops\u0026hellip;etc, if you\u0026rsquo;re interested then join the Project OutFox Discord Server and contact the moderators.\nWritten and Maintained by Moru Zerinho6\n","description":"Hey! There are new pages with more info about OutFox Serenity, check them out!\nSerenity User Profiles Serenity Volume Resume What is OutFox Serenity? OutFox Serenity is the official community song pack project made primarily for Project OutFox. Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the functionality of Project Outfox by offering charts for multiple game types beyond just 4-key/dance."},{"id":125,"href":"/user-guide/config/preferences/","title":"Preferences.ini","parent":"Features \u0026 Config","content":"Preferences.ini is a file that contains many of the system preferences. Some of them are accessible within Project OutFox\u0026rsquo;s settings menu, but some of them are only accessible by editing the file. Manual edits to Preferences.ini must be performed when the game is closed, or else they may be automatically overwritten.\nIt is located in the Save folder.\nList of parameters AdditionalCourseFolders Takes a comma-separated list of directories where additional course (.crs) files are stored.\nDefault value: nothing\nSee folder.\nAdditionalFolders Takes a comma-separated list of directories where additional content folders are stored. Those additional folders could have all folders your OutFox installation root has.\nWhat\u0026rsquo;s the usage of this? Simple, share themes/noteskins/avatars..etc with any other installation of OutFox you have.\nValue Example:\nAdditionalFolders=C:\\AdditionalFolder\nC:\\AdditionalFolder │ └───Appearance │ │ │ └───Themes │ │Infinitesimal │ │SoundWaves Community Edition Default value: nothing\nSee folder.\nAdditionalSongFolders Takes a comma-separated list of directories where additional song groups are stored. Those additional song folders are expected to have Group folders inside.\nWhat\u0026rsquo;s the usage of this? The best usage of this preference would be to have songs on another disk with maybe more space or faster so your main drive doesn\u0026rsquo;t get filled with songs.\nValue Example:\nAdditionalSongFolders=C:\\AdditionalSongs\nWhere C:\\AdditionalSongs should look like this\nC:\\AdditionalSongs │ └───PackName │ │ │ └───SongName │ │Music.ogg │ │Chart.sm AdditionalSongFolders can point to any valid path and don\u0026rsquo;t have to be on the same disk as OutFox.\nDefault value: nothing\nSee folder.\nAllowEditorAutoSaving If enabled, chart data will be saved every 5 minutes while editing a chart.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAllowExtraStage When event mode is off, allow the player to qualify for an extra stage.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAllowHoldForOptions Allow the user to enter the player options menu by holding the start button when selecting a song. If set to 0, the user must press the start button twice instead.\nPossible values are 0 or 1. 0 is \u0026quot;Double tap\u0026quot; and 1 is \u0026quot;Hold\u0026quot;.\nDefault value: 1\nAllowMultipleHighScoreWithSameName Allows multiple high score entries by the same user.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAllowMultipleInstances Allows multiple instances of Project OutFox to be opened.\nPossible values: 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowMultipleToasties Allows the legacy toasty animation to play multiple times in a single song.\nPossible values are 0 or 1. 0 is Of and 1 is On.\nDefault value: 1\nAllowMultitexture Allows models to use multitextures when rendering.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nAllowNotefieldChangesOnPreview Allows any changes to the notefield to be made while using preview mode on editor.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowSongDeletion Allows the ability to delete a song on the Music Wheel by performing the following combination on the selected song:\nCTRL + Backspace\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAllowUnacceleratedRenderer Allows the game to continue using a software renderer if the graphics card cannot support the renderer.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowW1 Enables the W1 judgement (\u0026ldquo;Flawless\u0026rdquo;, \u0026ldquo;Marevelous\u0026rdquo;, \u0026ldquo;Fantastic\u0026rdquo; depending on the theme) in regular gameplay.\nPossible values are \u0026quot;Never\u0026quot;, \u0026quot;Courses Only\u0026quot; and \u0026quot;Always\u0026quot;.\nDefault value: everywhere\nAnisotropicFiltering Makes textures use \u0026ldquo;Anisotropic Filtering\u0026rdquo;. Noted to have no effect without mipmaps on, and is not mutually exclusive with TrilinearFiltering.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAnnouncer Specifies the name of the current announcer.\nDefault value: nothing\nArcadeOptionsNavigation Determines how menus are navigated. StepMania Style has up \u0026amp; down switch option lines, and start moves to the end. Arcade Style has up \u0026amp; down ignored, while start moves to the next option line.\nPossible values are 0 and 1. 0 is StepMania Style and 1 is Arcade Style.\nDefault value: 0\nAttractSoundFrequency Determines how often sound is enabled during the attract mode loop in arcade mode.\nPossible values are Never, Always (EveryTime), 2 Times (Every2Times), 3 Times (Every3Times), 4 Times (Every4Times), and 5 Times (Every5Times).\nDefault value: EveryTime\nAutoJoin Allow both players to automatically join upon a single start press.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAutoMapOnJoyChange Perform automapping when a change in joysticks or controllers is detected.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On (recommended)\u0026rdquo;.\nDefault value: 1\nAutoPlay Has the notefield play the chart by itself. CPU-controlled involves the AI.ini file inside the game\u0026rsquo;s Data folder.\nPossible values are Off (Human), On (Autoplay) and CPU-Controlled (CPU).\nDefault value: \u0026ldquo;Human\u0026rdquo;\nAutogenGroupCourses Automatically generates nonstop courses based on installed songs.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAutogenSteps Allows charts to be generated for other game types and styles that a song does not have its charts for.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAxisFix Enables an input workaround for certain devices where the D-Pad won\u0026rsquo;t allow two inputs of opposing directions.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBGBrightness Sets the brightness of background visuals in gameplay.\nPossible values are 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.700000\nBGBrightnessNoZero Similar to BGBrightness, but without a 0% option. meant for use in options menus.\nPossible values are 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nBGBrightnessOrStatic Sets the brightness of the background or disables it. Meant for use on options menus. Disabled sets SongBackgrounds to Off.\nPossible values are Disabled, 25% Bright, 50% Bright and 75% Bright.\nBackUpAllSongSaves When enabled, all SSC saving saves a secondary backup file.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBackgroundFitMode Determines scaling/cropping of song backgrounds based on resolution and aspect ratio.\nPossible values are CoverDistort, CoverPreserve, FitInside, FitInsideAvoidLetter and FitInsideAvoidPillar\nDefault value: CoverPreserve\nBlinkGameplayButtonLightsOnNote Make game lights blink when chart notes cross the receptors.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBothAtOnce This preference controls BothAtOnce, an input mode that mirrors input across both players.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nBreakComboToGetItem Require breaking combo to earn items in a player\u0026rsquo;s inventory.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nCelShadeModels Currently only used on Legacy Dancing Characters, which makes the characters have a toon-styled shade applied.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nCenter1Player In single-player modes, renders the notefield in the center of the screen rather than to the left or right.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nCenterImage CenterImageAddHeight, CenterImageAddWidth, CenterImageTranslateX, and CenterImageTranslateY are used to adjust overscan.\nDefault values:\nCenterImageTranslateX = 0 CenterImageTranslateY = 0 CenterImageAddWidth = 0.000000 CenterImageAddHeight = 0.000000 CoinMode This setting determines whether Project OutFox will behave as an arcade game or not;\nIf set to Pay, coins and credits must be inserted to play. The game will use an attract loop, and the main menu will not be accessible. If set to Free Play, the game will behave similarly to Pay mode, except credits are not required to play. If set to Home, Project OutFox\u0026rsquo;s arcade workflows will be disabled. The game will use its default user experience, including access to the main menu. Possible values are Home, Pay and Free Play.\nDefault value: Home\nCoinModeNoHome This is meant for use in options menus. It only lets one choose between pay and free play modes.\nPossible values are Pay and Free Play.\nCoinRecoveryExpirationHours How many hours can pass before previously inserted coins from a different instance expire.\nDefault value: 0\nCoinsPerCredit Specifies the number of coins that must be inserted for each credit.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 and 16.\nDefault value: 1\nComboContinuesBetweenSongs If enabled, the player\u0026rsquo;s combo will carry over between songs rather than start from 0.\nPossible values are 0 or 1. 0 is Of and 1 is On.\nDefault value: 0\nConstantUpdateDeltaSeconds Experimantal feature that forces a specific update loop, in seconds. Having a value of 0.0 disables it.\nDefault value: 0.000000\nCookie Cookies are delicious delicacies.\nUsed by the file downloader functionality. Since this functionality isn\u0026rsquo;t really used, this preference is also mostly unused.\nDefault value: nothing\nCourseSortOrder Chooses how the courses are sorted.\nPossible values are \u0026ldquo;Preferred\u0026rdquo; (Not choosable in options menus), \u0026ldquo;Num Songs\u0026rdquo; (Songs), \u0026ldquo;Average Feet\u0026rdquo; (Meter), \u0026ldquo;Total Feet\u0026rdquo; (MeterSum) and \u0026ldquo;Ranking\u0026rdquo; (MeterRank)\nDefault value: Songs\nCoursesToShowRanking The names of courses to show in the Ranking screen. Only used when showing ranking of specific trails.\nDefault value: nothing\nCurrentGame The game type currently being used.\nPossible values are listed here.\nDefault value: nothing\nCustomSongsEnable If set to 1, players may load their songs from a folder in their profile on a USB media (similar to the \u0026ldquo;r21\u0026rdquo; patch from In the Groove 2).\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nCustomSongsLoadTimeout How long the game will wait for a custom song to be loaded before skipping it, in seconds.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30 and 1000.\nDefault value: 5.000000\nCustomSongsMaxCount The maximum number of songs that can be loaded as custom songs.\nPossible values are 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, and 1000.\nDefault value: 1000\nCustomSongsMaxMegabytes The maximum filesize for audio files of custom songs.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30 and 1000.\nDefault value: 5.000000\nCustomSongsMaxSeconds The maximum length in seconds for custom songs.\nPossible values are 60, 90, 120, 150, 180, 210, 240, and 10000.\nDefault value: 120.000000\nDDRStyleRandom When on, random backrounds use the song\u0026rsquo;s directory as the seed, ensuring a conststent set of backgrounds for each song.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nDebounceCoinInputTime How much the coin detector\u0026rsquo;s input is expected to bounce, in seconds. (Because otherwise, a coin could count as more than one)\nDefault value: 0.000000\nDebugLights Displays a debug overlay for lights outputs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDefaultFailType The fail type to use for every song. Alters the DefaultModifiers preference. Meant for use in options menus.\nPossible values are Immediate, ImmediateContinue, EndOfSong and Off.\nDefaultLocalProfileIDP1 The ID of the local profile that P1 should use by default.\nDefault value: nothing\nDefaultLocalProfileIDP2 The ID of the local profile that P2 should use by default.\nDefault value: nothing\nDefaultModifiers Comma-separated list of modifiers used by players with no profile, or a new profile with no personal settings. This is game-specific (eg: dance and pump could have different default modifiers).\nDefault value: nothing\nDefaultRecordLength How long a recording section in the editor is by defualt, in seconds.\nDefault value: 4.000000\nDefaultTheme Sets the theme that will be loaded as a backup if the current theme cannot be loaded. If theme cannot also be found, then it will look back for \u0026quot;default\u0026quot; as the theme to load.\nDefault value: default\nDelayedBack If enabled, you must hold the back button for 0.5 seconds to exit gameplay.\nPossible values are 0 or 1. 0 is \u0026quot;Instant\u0026quot; and 1 is \u0026quot;Hold\u0026quot;.\nDefault value: 1\nDelayedCreditsReconcile This allows extra credits already present to be used for new plays. Otherwise, the required amount of credits is always required every time.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedModelDelete When enabled, model unloading is delayed.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedScreenLoad When enabled, all unloaded screens are immediately removed from memory. May result in redundant loads.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedTextureDelete When on, textures are held in memory, reducing the amount of times it needs to load.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDisableScreenSaver Disables the X11 screensaver while the game is running. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nDisableUploadDir Turns off writing scores to the profile\u0026rsquo;s Upload folder.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDisabledSongs Defines songs that will be disabled (by not making them visible or selectable) from the selection. Formatting for this follows the structure of _folder._and must be a path to the song.\nDisabledSongs=MyGroup/MySong,MyGroup2/MyOtherSong Default value: nothing\nDisplayAspectRatio The current aspect ratio, expressed as a decimal (i.e. 16:9 = 1.777778, or 16/9).\nPossible values are 9:16, 2:3, 3:4, 1:1, 5:4, 4:3, 3:2, 16:10, 16:9, 21:9, 8:3 and 32:9.\nDefault value: 1.777778\nDisplayColorDepth The current color depth is either 32 or 16. 32 is 32bit and 16 is 16bit.\nDefault value: 32\nDisplayHeight and DisplayWidth Determines the window resolution. This does not change the game\u0026rsquo;s internal resolution which is defined by the theme.\nPossible values = Any positive number.\nDefault value:\nDisplayWidth = 1280 DisplayHeight = 720 Note: The default value of this preference is not constant.\nDisplayResolution Possible values are your GPU supported resolutions.\nDisplayId The display to use for fullscreen.\nDefault value: nothing\nDisqualification If enabled, scores will not be saved if specific modifiers (such as constant BPM) are used.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nEXTIOComPort The COM port to use for the EXTIO lights driver.\nDefault value: COM1\nEasterEggs Enables or disables easter eggs, if a theme is aware of and uses this preference.\nPossible values are 0 or 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 1\nEditClearPromptThreshold Possible values are -1, 10, 50, 100, 1000, and 1000000.\nDefault value: 50\nEditRecordModeLeadIn The amount of time, in seconds, before reaching the start of the recording section in the editor.\nDefault value: 1.000000\nEditorMemoryCardOsMountPoint The mount point for the memory card system that the editor specifically uses.\nDefault value: nothing\nEditorNoteSkinP1 and EditorNoteSkinP2 The noteskin to use for the two players in the editor. P1 also affects the noteskin in the main editor.\nDefault value: default\nEditorShowBGChangesPlay Enables background scripts to be previewed when playing back a song in the editor.\nPossible values are 0 and 1. 0 is Hide and 1 is Show.\nDefault value: 1\nEnableAttackSounds Plays a sound every time an attack starts and ends. Not all themes have sounds for this, and this may not be desired if playing simfiles with a lot of scripted attacks.\nPossible values are 0 and 1. 0 is No and 1 is Yes.\nDefault value: 1\nEnableBeginnerHelperBackgrounds When enabled, a dancing character on a pad will show up during Beginner charts.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nEnableMineHitSound Plays an explosion sound if you hit a mine note.\nPossible values are 0 or 1. 0 is No and 1 is Yes.\nDefault value: 1\nEnableScoreboard Shows an online score board. Only has an effect during networked rounds.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nEventMode Also known as \u0026ldquo;Free Mode\u0026rdquo;; if disabled, each game session is divided into a maximum number of stages (arcade-style).\nPossible values are 0 or 1. 0 is Off and 1 is On (recommended).\nDefault value: 1\nExtendedChineseGlyphs This preference is obsolete.\nEnables extended Chinese glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nExtendedJapaneseGlyphs This preference is obsolete.\nEnables extended Japanese glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nExtendedKoreanGlyphs This preference is obsolete.\nEnables extended Korean glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nEffectVolume The volume used for sounds labeled as an effect. This is multiplied by the SoundVolume preference when Effects are played.\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nFailOffForFirstStageEasy When enabled, the first stage will have failing disabled when on Easy or Beginner.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nFailOffInBeginner When enabled, Beginner charts will have failing disabled.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nFastLoad Caches all songs available in your songs folder, meaning the next time you open the game it won\u0026rsquo;t have to load them again. This is recommended to be 0 when creating your charts otherwise the game might not detect your changes.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 1\nFastLoadAdditionalSongs Caches all songs available in your additionalsongfolder path, meaning the next time you open the game it won\u0026rsquo;t have to load them again. This is recommended to be 0 when creating your charts otherwise the game might not detect your changes. Cached songs will always be saved on the game folder or AppData if the portable mode is disabled.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 1\nFastNoteRendering In short, this makes the renderer stops doing z-axis corrections possibly making the performance better but notes might appear merged with another. This is recommended to be 1 when playing modfiles as those abuse its enabled behavior to make masking effects.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nForceLogFlush All logs are immediately written to disk (\u0026ldquo;Flushed\u0026rdquo;) when logging is performed.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nForceMipMaps Forces mipmapping on all textures. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nFrameLimitPercent How much the game clamps down on performance in terms of a percentage. Having 0.000000 as the value disables this feature.\nDefault value: 0.000000\nFullscreenIsBorderlessWindow Enables borderless fullscreen, which makes the window takes up the size of the screen without changing the actual resolution of the screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nGDDMRealToNew Turns all GDDM \u0026ldquo;Real\u0026rdquo; charts into \u0026ldquo;New\u0026rdquo; charts.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nGetRankingName Determine if the high score name entry screen is shown.\nPossible values are Off, On or Ranking Songs.\nDefault value: On\nGlobalOffsetSeconds The offset that gets added to every song\u0026rsquo;s own offset, in seconds.\nDefault value: -0.008000\nHarshHotLifePenalty When this is on and a player has a full life bar, the penalty when losing health is harsher than it otherwise is.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nHiddenSongs Some songs are meant to be only played courses or through roulette. Turn this off to display all songs regardless of the SELECTABLE setting of the simfile.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nHideIncompleteCourses Hide courses that don\u0026rsquo;t have all the songs it has listed available.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nHighResolutionTextures Set if high resoltuion textures are used. Not all themes support this. Auto makes high resolution happen if the window\u0026rsquo;s height is greather than 480 pixels. Unused by the engine as a whole, but still has an enum for it.\nPossible values are Auto, Force Off, and Force On.\nDefault value: Auto\nHighresScreenshotsBydefault When on, pressing the screenshot button saves high-res png screenshots. Holding shift will result in low-res compressed jpgs being saved instead.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nIgnoredDialogs Dialog types listed here won\u0026rsquo;t pop up a dialog box (Not applicable in linux systems or systems running in fullscreen)\nPossible values are FRAME_DIMENSIONS_WARNING (unused), MissingThemeElement, JSON_PARSE_ERROR (unused), UpdateCheckConfirm (unused), UpdateCheck (unused), LUA_ERROR, INVALID_GAME_COMMAND, NOTESKIN_ERROR, BROKEN_FILE_REFERENCE, SPRITE_INVALID_FRAME, COMMAND_DEFINED_TWICE, INVALID_SCREEN and XML_PARSE_ERROR.\nDefault value: nothing\nImageCache The type of image cache to use. Note that the current image cache system is considered deprecated for now.\nPossible values are Off, LowResPreload, LowResLoadOnDemand and Full.\nDefault value: \u0026ldquo;Off\u0026rdquo;\nInputBackgroundEvents Allow joystick \u0026amp; controller input to be accepted regardless of the application focus.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nInputDebounceTime How much time the input is known to bounce, in seconds. Use this if your input device doesn\u0026rsquo;t stabilize inputs quickly.\nPossible valures are 0ms (0.0), 10ms (0.01), 20ms (0.02), 30ms (0.03), 40ms (0.04), 50ms (0.05), 60ms (0.06), 70ms (0.07), 80ms (0.08), 90ms (0.09) and 100ms (0.1).\nDefault value: 0.000000\nInputDrivers The input drivers the game will use. If nothing is specified, the following defaults will be used:\nWindows: Para,legacy,minisdl\nMac: portmidi,SDL\nLinux: SDL\nThe possible values are Rtio (Windows), legacy (Windows), SDL (All platforms), Reflex (All platforms), rtmidi (All platforms), Python23IO (All platforms), portmidi (All platforms), para (All platforms) and minisdl (All platforms)\nDefault value: nothing\nInterlaced Force interlaced mode. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nJoystickDeadzone Sets the joystick dead zone for the SDL input handler. Useful if inputs are firing off when doing nothing.\nDefault value: 3200\nJointPremium A separate variant of the Premium preference meant for use on options menus. Off corresponds to the Double For 1 Credit option.\nPossible values are Off and 2 Players for 1 Credit.\nLanguage The language the game will display text in. Not all themes support all languages.\nPossible values are de (German), en (English), fr (French), he (Hebrew), ja (Japanese), nl (Dutch), pl (Polish), pt-BR (Portuguese-Brazil), sk (Slovak), zh-Hans (Chinese Simplified) and zh-Hant (Chinese Traditional)\nDefault value: nothing\nNote: The game will default to en (English).\nLastConnectedServer The previously set server to connect to.\nDefault value: nothing\nLastSeenInputDevices The previously seen input devices during the session.\nDefault value: nothing\nLastSeenVideoDriver Identifies the video card last used with the game. Automatically generated.\nDefault value: nothing\nLastSeenMemory The previously seen amount of memory the system had available. Automatically generated.\nDefault value: nothing\nLifeDifficulty How harsh the life bar is. This is meant to be used in options menus and sets the value of LifeDifficultyScale.\nPossible values are 1 (1.6), 2 (1.4), 3 (1.2), 4 (1.0), 5 (0.8), 6 (0.6), and 7 (0.4).\nDefault value: 1.000000\nLifeDifficultyScale The base life difficulty used. Going under 1.0 means smaller gains and larger losses.\nDefault value: 1.000000\nLightsAheadSeconds How far ahead the lights should be from the current song, in seconds.\nDefault value: 0.500000\nLightsComPort The COM port to use in the Win32 Serial lights driver.\nDefault value: COM54\nLightsDriver The lights driver to use for cabinet and controller lights. If nothing is provided, SystemMessage,Export is used.\nPossible values: Win32Serial (Windows), Win32Parallel (Windows), Win32Minimaid (Windows), PacDrive (Windows), SextetStreamToFile (All platforms), Satellite (All platforms), EXTIO (All Platforms), Export (All Platforms), SystemMessage (All platforms, requires DebugLights), LinuxWeedTech (Linux), PIUIO_Leds (Linux), PIUIO (Linux), LinuxParallel (Linux), LinuxPacDrive (Linux), LinuxMinimaid (Linux), ITGIO (Linux)\nDefault value: nothing\nLightsFalloffSeconds How long a cabinet light is on for, in seconds.\nDefault value: 0.100000\nLightsStepsDifficulty If there is no dedicated lights chart, generate lighting patterns from the existing charts on the specified difficulty/difficulties.\nPossible values are beginner, easy, medium, hard, challenge, edit, d7, d8, d9, d10, d11, d12, d13, d14, d15 and selected (Uses the chart selected by the player)\nDefault value: hard, medium\nLockCourseDifficulties When on, difficulties across multiple players are locked for courses.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nLogCheckpoints When on, internal code checkpoints are outputted to the logs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nLogFPS At 1 second intervals, the current FPS, average FPS, VPF, current memory usage, and delta clock data (if enabled) will be appended to the log file.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nLogLevel Determines the detail of the log files.\nPossible values are 0 through 5, with 0 providing the most detail, and 5 providing the least detail.\nDefault value: 2\nLogSkips This preference is obsolete.\nOutputs detected song position skips to the logs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nLogToDisk Enabling this will write log files.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nLongVerSongSeconds Determines how long a song, in seconds, must be for it to be classified as \u0026ldquo;long\u0026rdquo; (which costs two stages outside of Event Mode).\nDefault value: 150.000000\nMarathonVerSongSeconds Determines how long a song must be for it to be classified as a \u0026ldquo;marathon\u0026rdquo; (which costs three stages outside of Event Mode).\nDefault value: 300.000000\nMachineName The display name to use for the machine profile.\nDefault value: nothing\nMaxHighScoresPerListForMachine The maximum number of high scores to save for a song on the machine profile.\nPossible values are 1, 2. 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 and 20.\nDefault value: 10\nMaxHighScoresPerListForPlayer The maximum number of high scores to save for a song on a player\u0026rsquo;s profile.\nPossible values are 1, 2. 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 and 20.\nDefault value: 3\nMaxInputLatencySeconds The amount of latency the input has, in seconds. Only affects the maximum step distance.\nDefault value: 0.000000\nMaxRegenComboAfterMiss The maximum amount of combo needed to start gaining life after a miss.\nDefault value: 5\nMaxSongsInEditCourse The maximum amount of edit charts allowed in a course. -1 turns off the limit.\nDefault value: -1\nMaxTextureResolution Defines the resolution at which the game will load/show textures, textures higher than the defined max resolution will have their resolution lowered. It\u0026rsquo;s not recommended to go above 2048 while OutFox is still in Alpha until further notice. Try going down to 1024 if you want more performance as 2048 is still not much used.\nPossible values are 256, 512, 1024, 2048, 4096, and 8192.\nDefault value: 1024\nMemoryCardDriver The driver to use for reading external profiles.\nPossible values are USB or Directory.\nDefault value: USB\nMemoryCardOsMountPointP1 The system mount point to use for reading USB profile data from for P1.\nDefault value: nothing\nMemoryCardOsMountPointP2 The system mount point to use for reading USB profile data from for P2.\nDefault value: nothing\nMemoryCardPadmissEnabled Allows saving scores in a format made for Padmiss.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault vlaue: 0\nMemoryCardProfileImportSubdirs Default value: nothing\nMemoryCardProfileSubdir The name of the subfolder used to store profile data on a USB device.\nDefault value: Project OutFox\nMemoryCardProfiles Enables saving profiles to USB devices.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nMemoryCardUsbBusP1 The bus to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbBusP2 The bus to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbLevelP1 The level to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbLevelP2 The level to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbPortP1 The port to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbPortP2 The port to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCards Enables the memory card system, allowing USB profiles to be used.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefaut value: 0\nMenuTimer If enabled, a timer is used in gameplay menus. Usually used in arcade or event settings.\nPossible values are 0 and 1. 0 is Off and 1 is On.\nDefault value: 0\nMercifulBeginner Beginner difficulty charts get more lenient score \u0026amp; grade, and the W5 judgment wingow is larger.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMercifulDrain Losses in the life bar are scaled by the player\u0026rsquo;s current life percentage.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMercifulSuperMeter Losses in the super meter are scaled by the player\u0026rsquo;s life percentage.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nMinPercentageForMachineCourseHighScore The minimum course score required for a high score to be saved to the machine profile.\nDefault value: 0.000100\nMinPercentageForMachineSongHighScore The minimum song score required for a high score to be saved to the machine profile.\nDefault value: 0.000100\nMinTNSToHideNotes The minimum judgement window is needed for notes to disappear after hitting them.\nPossible values are TNS_None, TNS_HitMine, TNS_AvoidMine, TNS_CheckpointMiss, TNS_Miss, TNS_W5, TNS_W4, TNS_W3, TNS_W2, TNS_W1, TNS_PRO_W5, TNS_PRO_W4, TNS_PRO_W3, TNS_PRO_W2, TNS_PRO_W1 and TNS_CheckpointHit.\nDefault value: W3\nMinimum1FullSongInCourses Ensures that the first song in a course can be played in its\u0026rsquo; entirety.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMonkeyInput A deprecated input mode no longer used on Project OutFox. This is maintained for compatibility only.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMoveRandomToEnd Moves courses with random songs at the end of the list.\nPossible values are 0 or 1. 0 is \u0026ldquo;No\u0026rdquo; and 1 is \u0026ldquo;Yes\u0026rdquo;.\nDefault value: 0\nMovieColorDepth The color depth for use for movie files.\nPossible values are 16 or 32. 16 is 16bit and 32 is 32bit.\nDefault value: 32\nMovieDrivers The driver to use for viewing movie files.\nPossible values are MiniFFMpeg, ModernFFMpeg and Null\nDefault value: nothing\nMusicWheelSwitchSpeed How fast the music wheel can be scrolled.\nPossible values are Slow (5), Normal (10), Fast (15), and Really fast (25).\nDefault value: 15\nMusicWheelUsesSections The music wheel shows sections.\nPossible values are \u0026ldquo;Never\u0026rdquo;, \u0026ldquo;Always\u0026rdquo; and \u0026ldquo;Title Only\u0026rdquo;\nDefault value: Always\nMuteActions Mutes sound effects in menus.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nNetworkStartOffset An additional start offset, in seconds, to be used when in Gameplay online.\nDefault value: 3.000000\nNeverBoostAppPriority When set to on, the game\u0026rsquo;s priority is never boosted, even when focused.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 0\nNeverCacheList A list of song groups to never create cache for.\nDefault value: nothing\nNumBackgrounds The number of random backgrounds to use in gameplay.\nPossible values are 1, 5, 10, 15, and 20.\nDefault value: 10\nNotePathWidth This preference is obsolete.\nAltered how thick the notepath is.\nPossible values are Thin (1000), 500, 250, 150, 100, and Fat (50).\nOnlyDedicatedMenuButtons When enabled, only the menu buttons can be used to navigate the menus.\nPossible values Use Gameplay Buttons (0) and Only Dedicated Buttons (1).\nDefault value: 0\nOnlyPreferredDifficulties All charts shown in the music wheel match the chosen style and difficulty.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 0\nOITGStyleLights When enabled, lights charts act like they would in OpenITG.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPAL Forces PAL mode. Appears to be unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPacDriveLightOrdering What lights order to send to the PacDrive.\nPossible values are minimaid, lumenar and openitg.\nDefault value: minimaid\nPadStickSeconds How long, in seconds, the pad can stick for.\nDefault value: 0.000000\nPercentageScoring If enabled and themes are aware, scores will be expressed as percentages.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPreCacheAllWheelSorts Precaches the list for all sorting types.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPreferredSortUsesGroups Makes the preferred sort show groups. Only affects Roulette sort.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nPremium Pay Mode-specific setting, allowing styles requiring two controllers (such as Double) to be played without requiring 2 credits.\nPossible values are DoubleFor1Credit, 2PlayersFor1Credit and 1PBothAtOnceFor1Credit,\nDefault value: DoubleFor1Credit\nProductID Used to track software versions for HighScores. Not the same as what the lua function ProductID provides.\nDefault value: 1\nProfileCourseEdits Load course edits from profiles.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nProfileDataCompress Compresses the profile\u0026rsquo;s Stats.xml into Stats.xml.gz.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nProfileStepEdits Load edit steps from profiles.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nProgressiveLifebar Makes every consecutive miss drain more life. Disabled in Extra Stage and the How To Play modes.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, and 8.\nDefault value: 0\nProgressiveNonstopLifebar When enabled, The lifebar gets more difficult based on how many stages in a player is. Affects the NonStop play mode.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, 8, and 9(Insanity).\nDefault value: 0\nProgressiveStageLifebar When enabled, The lifebar gets more difficult based on how many stages in a player is. Affects the Regular play mode.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, 8, and 9(Insanity).\nDefault value: 0\nPruneFonts Prunes any unused fonts. Currently unused.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPseudoLocalize Show different characters with accents to help test the display of those.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPython23IO_HDXB_DEV_ID The device ID of the HDXB device.\nDefault value: 3\nPython23IO_HDXB_PORT What port to use for COM4.\nDefault value: nothing\nPython23IO_Mode The IO mode to use for the Pyton board.\nPossible values are HDP3IO, HDP2IO, SDP2IO, SDP3IOHDXB, SDP3IO and ``none.\nDefault value: SDP3IO\nPython23IO_P2IO_EXTIO Specifies if the Python board has EXTIO.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPickExtraStage Allows one to pick what to play for the Extra Stage. Currently unused.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nQuirksMode Allows legacy loading of .xml files.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nRageSoundSampleCountClamp The maximum amount of samples the audio driver should expect to avoid driver skipping. Used only in the generic software audio driver.\nDefault value: 0\nRandomBackgroundMode What is used when random backgrounds are enabled in gameplay. Animations reads from the game\u0026rsquo;s BGAnimations folder, while RandomMovies reads from the game\u0026rsquo;s RandomMovies folder.\nPossible values are \u0026quot;Off\u0026quot;, \u0026quot;Animations\u0026quot; and Random Movies\nDefault value: RandomMovies\nRateModsAffectFGChanges When active, actor tweens and modifier approaching in gameplay are affected by the music rate.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nRefreshRate The refresh rate to use when in VSync.\nPossible values are Default (0), 60, 70, 72, 75, 90, 100, 120, 144, 165, 200, and 240.\nDefault value: 0\nRegenComboAfterMiss How much combo is needed to start gaining life after a miss.\nDefault value: 5\nReverseMouseButtons Flip the left and right button inputs. Only used in the SDL input handler.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSatelliteComPort The COM device to use for the Satellite lights driver.\nDefault value: nothing\nScoreBroadcastURL The URL to send POST requests to upon finishing a song. Data sent there includes machine guid, song path, the md5 of the simfile, title and author of the song, player guid, if it\u0026rsquo;s on event mode, difficulty, chart type, score, percentage, grade and number of players.\nDefault value: nothing\nSextetStreamOutputFilename The file to use as the output pipe for the SextetStream lights driver.\nDefault value: \\.\\pipe\\StepMania-Lights-SextetStream\nShowBanners Show the song\u0026rsquo;s banner on the music wheel screen.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nShowBeginnerHelper Shows a helper if a beginner difficulty chart is currently playing.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowCaution Displays a caution screen before gameplay begins.\nPossible values are 0 or 1. 0 is \u0026ldquo;Skip\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowDancingCharacters Determines if a dancing character shows up in gameplay and how the character is chosen.\nPossible values are Default to Off, Default to Random, and Select.\nDefault value: Random\nShowDanger If the theme is aware, this can toggle visual effects used to signify low health.\nPossible values are 0 or 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowDeltaClock Adds additional information about frametime to the top right of the screen. Those values can be used to view how much time your script (from Themes or modfiles) adds to the frametime, anything above 16ms is very slow and calls for optimization, the more consistant those values are, the better the game will feel.\nPossible values are 0 or 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 0\nShowInstructions If the theme is aware, this can toggle additional tutorial screens shown in-game.\nPossible values are 0 or 1. 0 is \u0026ldquo;Skip\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowLoadingWindow Toggles the splash screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nShowLogOutput On Windows, this will open a cmd.exe window to display log output when the game is running.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nShowLyrics Shows lyrics from a .lrc file in-game if present.\nPossible values are 0 and 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowMasks Shows actors set up to be masks when they would otherwise be invisible.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowMeasureLinesInEditorPlayback Shows chart measure lines \u0026amp; beat bars in the editor\u0026rsquo;s playback mode if on.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nShowMouseCursor Determines whether the OS mouse cursor will disappear if hovered over the game window.\nPossible values: 0 or 1. 0 is Off and 1 is On. Changing this in-game might require a game restart.\nDefault value: 1\nShowNativeLanguage Toggles whether song titles are displayed in their native language (1), or a transliterated or translated form as determined in their metadata (0)\nPossible values are 0 or 1. 0 is \u0026ldquo;Romanization\u0026rdquo; and 1 is \u0026ldquo;Native Language\u0026rdquo;.\nDefault value: 1\nShowPlayerModifiersInEditor Shows a list of currently active modifiers while using preview mode.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowSongOptions Toggles whether the game will ask players if they wish to view the Song Options menu when exiting the player options menu, whether the screen will always be displayed, or if song options will not be accessible.\nPossible values are Ask, Hide and Show\nDefault value: Ask\nShowStats Shows an overlay in the top corner of the screen with information such as frame rate and memory usage.\nPossible values are 0 and 1. 0 is Off and 1 is On.\nDefault value: 0 (1 if in debug mode)\nShowThemeErrors If enabled, Lua errors will be displayed in an overlay at the top of the screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nShowTwoPlayersInEditor Show two players in the editor\u0026rsquo;s playback mode. Useful for testing modfiles that make use of two players.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nSignProfileData Sign any profiles that are loaded. May result in unusable profiles if the signing isn\u0026rsquo;t set up properly.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSmartAutoKbx Allow the game to autogen kbx mode charts from all other modes.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSmoothLines LineStrips are drawn via GPU functions instead of quads if this is turned on. Note that the thickness of the line depends on the GPU being used.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nSongBackgrounds Show the backround of the song being played.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSongBroadcastURL The URL to send POST requests to when playing a song. Data sent there includes machine guid, song path, the md5 of the ssc, the transliterated song title, song artist and if it\u0026rsquo;s in event mode.\nDefault value: nothing\nSongMinTNSToHideNotes A version of MinTNSToHideNotes meant to be used in the song-level Preferences.ini.\nDefault value: nothing\nSongNoteskins Which NoteSkins to preload when playing a song. Usually used in the song-level Preferences.ini.\nDefault value: nothing\nSongsPerPlay A number of songs per session (excluding extra stages) if EventMode is disabled.\nPossible values are 1, 2, 3, 4, and 5.\nDefault value: 3\nSongsPerPlayOrEvent Meant to be used in an options screen where it would set SongsPerPlay on the first five choices, and turn on EventMode for the last choice.\nPossible values are 1, 2, 3, 4, 5, and Event.\nSoundDevice The sound device to try to use, which is passed into the audio driver. If not specified, the audio driver will grab a device on its\u0026rsquo; own.\nDefault value: nothing\nSoundDrivers What sound driver Project OutFox will use. If not specified, the game will attempt to auto-detect which driver to use.\nPossible values are DirectSound-sw (Windows), WaveOut (Windows), ALSA-sw (Linux), alsa (Linux), Pulse (Linux), OSS (Linux), JACK (Linux), AudioUnit (MacOS) and Null.\nDefault value: nothing\nSoundLibSampleRateMode What converter libresamplerate uses when resampling audio.\nPossible values are 0 (Sinc, Best Quality), 1 (Sinc, Medium Quality), 2 (Sinc, Fastest), 3 (Zero Order Hold), 4 (Linear).\nDefault value: 2\nSoundPreferredSampleRate What sample rate the audio drivers will try to use by default.\nDefault value: 44100\nSoundPreload16bit Make the preload system use 16-bit buffers internally.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSoundPreloadMaxSamples If an audio file has more samples than this amount, the Preload system won\u0026rsquo;t bother preloading it.\nDefault value: 1048576\nSoundVolume System sound volume.\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nSoundVolumeAttract Volume used in arcade attract mode. (Usually used to catch a person\u0026rsquo;s interest in an arcade setting)\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nSoundWriteAhead How many frames the audio driver should read ahead. Used in the ALSA, ALSA-sw and DSound drivers.\nDefault value: 4096\nStretchBackgrounds Stretch the song\u0026rsquo;s background image. Used only in a few theme\u0026rsquo;s ScreenGameplay in transition. Unused otherwise.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nStreamerMode Removes the framerate cap when the window is not focused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSubSortByNumSteps When enabled, the number of taps and holds in a chart are also taken into account when sorting by chart type and meter.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSuperMeterPercentChange Determines how much gets added to the Rave Mode\u0026rsquo;s \u0026ldquo;Super Meter\u0026rdquo; (Charges attacks on the opponent).\nDefault values:\nSuperMeterPercentChangeCheckpointHit = 0.050000 SuperMeterPercentChangeCheckpointMiss = -0.200000 SuperMeterPercentChangeHeld = 0.040000 SuperMeterPercentChangeHitMine = -0.400000 SuperMeterPercentChangeLetGo = -0.200000 SuperMeterPercentChangeMiss = -0.200000 SuperMeterPercentChangeMissedHold = -0.000000 SuperMeterPercentChangeProW1 = 0.080000 SuperMeterPercentChangeProW2 = 0.100000 SuperMeterPercentChangeProW3 = 0.120000 SuperMeterPercentChangeProW4 = 0.140000 SuperMeterPercentChangeProW5 = 0.160000 SuperMeterPercentChangeW1 = 0.050000 SuperMeterPercentChangeW2 = 0.040000 SuperMeterPercentChangeW3 = 0.020000 SuperMeterPercentChangeW4 = 0.000000 SuperMeterPercentChangeW5 = 0.000000 TestInitialScreen Sets the first screen to go to upon opening the game. Useful for working on themes. If empty or invalid, the game uses the current theme\u0026rsquo;s InitialScreen metric.\nDefault value: nothing\nTextureColorDepth Sets the color depth of textures. Most current-day systems should work fine with 32.\nPossible values are 16 and 32. 16 is 16bit and 32 is 32bit.\nDefault value: 32\nTheme Sets what theme is used. Can be Game-specific. Note that if a theme starts with _, it cannot be used as a normal theme and will default back to default.\nBuilt-in themes: default, home\nDefault value: _fallback\nThreadedInput Creates a thread for the input driver if enabled. Affects the Windows legacy and Pump input drivers.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nThreadedMovieDecode Enabled threaded movie decoding. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nThreeKeyNavigation Determines if navigation is done with three buttons (Left/Right/Start) or five buttons (Left/Right/Up/Down/Start).\nPossible values are 0 or 1. 0 is \u0026quot;Five Key Menu\u0026quot; and 1 is \u0026quot;Three Key Menu\u0026quot;.\nDefault value: 0\nTimeMeterSecondsChange These settings define how much time (in seconds) one gains or loses based on judgment. This affects the Time-type lifebar.\nDefault values:\nTimeMeterSecondsChangeCheckpointHit = 0.000000 TimeMeterSecondsChangeCheckpointMiss = -0.000000 TimeMeterSecondsChangeHeld = 0.000000 TimeMeterSecondsChangeHitMine = -2.000000 TimeMeterSecondsChangeLetGo = -1.000000 TimeMeterSecondsChangeMiss = -4.000000 TimeMeterSecondsChangeMissedHold = -0.000000 TimeMeterSecondsChangeProW1 = 0.400000 TimeMeterSecondsChangeProW2 = 0.500000 TimeMeterSecondsChangeProW3 = 0.600000 TimeMeterSecondsChangeProW4 = 0.800000 TimeMeterSecondsChangeProW5 = 1.000000 TimeMeterSecondsChangeW1 = 0.200000 TimeMeterSecondsChangeW2 = 0.000000 TimeMeterSecondsChangeW3 = -0.500000 TimeMeterSecondsChangeW4 = -1.000000 TimeMeterSecondsChangeW5 = -2.000000 TimingWindowAdd Adds a static amount, in seconds, to all judgment windows. ITG uses 0.0015.\nDefault value: 0.000000\nTimingWindowJump How far apart simultaneous steps can be to be counted as a jump, in seconds. Only used for counting the calories used during a song.\nDefault value: 0.250000\nTimingWindowScale Applies a multiplier on the judgment windows. A higher number means tighter judgment windows.\nPossible values are 1 (1.500000), 2 (1.330000), 3 (1.160000), 4 (1.000000), 5 (0.840000), 6 (0.660000), 7 (0.500000), 8 (0.330000), and Justice (0.200000).\nDefault value: 1.000000 (4)\nTimingWindowSeconds These settings define the timing windows used in themes that do not use the Project OutFox LuaTiming system. These settings are provided for backwards compatibility purposes.\nDefault values:\nTimingWindowSecondsAttack = 0.135000 TimingWindowSecondsCheckpoint = 0.166400 TimingWindowSecondsHold = 0.250000 TimingWindowSecondsMine = 0.090000 TimingWindowSecondsProW1 = 0.000000 TimingWindowSecondsProW2 = 0.000000 TimingWindowSecondsProW3 = 0.000000 TimingWindowSecondsProW4 = 0.000000 TimingWindowSecondsProW5 = 0.000000 TimingWindowSecondsRoll = 0.500000 TimingWindowSecondsW1 = 0.022500 TimingWindowSecondsW2 = 0.045000 TimingWindowSecondsW3 = 0.090000 TimingWindowSecondsW4 = 0.135000 TimingWindowSecondsW5 = 0.180000 TrilinearFiltering Turns on trilinear filtering in the opengl renderer. This is unused in the glad renderer.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nTugMeterPercentChange These settings are used for the lifebar in battle mode.\nDefault values:\nTugMeterPercentChangeCheckpointHit = 0.002000 TugMeterPercentChangeCheckpointMiss = -0.002000 TugMeterPercentChangeHeld = 0.008000 TugMeterPercentChangeHitMine = -0.040000 TugMeterPercentChangeLetGo = -0.020000 TugMeterPercentChangeMiss = -0.020000 TugMeterPercentChangeMissedHold = 0.000000 TugMeterPercentChangeProW1 = 0.012000 TugMeterPercentChangeProW2 = 0.014000 TugMeterPercentChangeProW3 = 0.016000 TugMeterPercentChangeProW4 = 0.018000 TugMeterPercentChangeProW5 = 0.020000 TugMeterPercentChangeW1 = 0.010000 TugMeterPercentChangeW2 = 0.008000 TugMeterPercentChangeW3 = 0.004000 TugMeterPercentChangeW4 = 0.000000 TugMeterPercentChangeW5 = -0.010000 TurnOffWMCompositor Disable the current Window Manager\u0026rsquo;s compositing on linux.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUpdateCheckEnable When enabled, the game checks for online updates. Currently unused since early 2012.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nUseEGLonLinux When enabled, SDL attempts to use EGL for the OpenGL context. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUseOldJoystickMapping Toggles between HIDAPI and XInput modes. Useful for when a controller doesn\u0026rsquo;t work in one of the modes.\nPossible values are 0 or 1. 0 is \u0026quot;XInput\u0026quot; and 1 is \u0026quot;HIDAPI\u0026quot;.\nDefault value: 1\nUsePointsandBlending Enable or disable the use of points between each section of an ActorMultiVertex or NotePath and use blending modes into it.\nPossible values are 0 or 1. 0 is No and 1 is Yes.\nDefault value: 1\nUseSongNameOnGameWindow When enabled, the title of the song currently being edited will show on the game window\u0026rsquo;s title.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUseUnlockSystem Enables the metrics.ini-driven unlock system. This affects courses, selectable mods, songs and charts.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUsingArcadePads Tells the SDL input handler that arcade dance pads are in use, and to act accordingly based on what input system is used.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nVideoRenderers Determines the renderer used by Project OutFox.\nPossible values are opengl (Legacy OpenGL), glad (Modern OpenGL) and null (Null renderer)\nDefault value: opengl\nVisualDelaySeconds Sets how much display lag to compensate for, in seconds. In-game, the choices are represented as -5 to +5\nPossible choices are -0.125, -0.100, -0.075, -0.050, -0.025, 0.000, 0.025, 0.050, 0.075, 0.100 and 0.125\nDefault value: 0.000000\nVideoUpscaleFilter Determines what upscale filter FFMPEG uses when playing videos.\nPossible values are 0 (None, fastest), 1 (Fast bilinear), 2 (Bilinear), 3 (Bicubic), 4 (X Sharpens + Contrast, 5 (Point), 6 (Area), 7 (Bicublin, recommended), 8 (Gaussian), 9 (Sinc), 10 (Lanczos) and 11 (Spline).\nDefault value: 0\nVsync Enables vertical sync (Vsync), which limits the framerate to the display\u0026rsquo;s refresh rate.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nWideScreen16_10 Meant to be used in an options screen as a simple replacement for the DisplayAspectRatio preference.\nThis is used for switching between 4:3 and 16:10.\nPossible values are On and Off.\nWhen On, DisplayAspectRatio becomes 1.600000 (16:10). Off sets it to 1.333333 (4:3) instead.\nWideScreen16_9 Meant to be used in an options screen as a simple replacement for the DisplayAspectRatio preference.\nThis is used for switching between 4:3 and 16:9.\nPossible values are On and Off.\nWhen On, DisplayAspectRatio becomes 1.777778 (16:9). Off sets it to 1.333333 (4:3) instead.\nWindowed Enables windowed mode.\nPossible values are 0 or 1. 0 is Full Screen and 1 is Windowed.\nDefault value: 1\nWritten and Maintained by Moru Zerinho6 \u0026amp; MTK\n","description":"Preferences.ini is a file that contains many of the system preferences. Some of them are accessible within Project OutFox\u0026rsquo;s settings menu, but some of them are only accessible by editing the file. Manual edits to Preferences.ini must be performed when the game is closed, or else they may be automatically overwritten.\nIt is located in the Save folder.\nList of parameters AdditionalCourseFolders Takes a comma-separated list of directories where additional course (."},{"id":126,"href":"/dev/theming/tips/","title":"Theming tips and tricks","parent":"Introduction to theming","content":"This section is meant to showcase methods to create certain kinds of actors and recommended practices that are commonly found in themes.\nVerifying Command availability While developing a theme, you may come across commands and functions that are available for current or future versions of OutFox, however it is recommended to make sure that your theme is still compatible for users that run older versions of OutFox or StepMania, and this can be done via a check for its existance.\nLet\u0026rsquo;s say for example that you want to use the GetTotalScoresWithGrade Profile function that is available in OutFox Alpha 4.15. That command is not available on previous versions nor in StepMania, so you can use an if check to verify that it exists.\n-- Since the GetTotalScoresWithGrade command is part of the Profile namespace, we need to verify it after we have -- obtained our profile from the ProfileManager namespace. local myProfile = PROFILEMAN:GetProfile( GAMESTATE:GetMasterPlayerNumber() ) -- Now let\u0026#39;s verify that the command is available. -- Note we\u0026#39;re using myProfile to verify this operation rather than PROFILE, -- and this is because the object PROFILE:GetProfile returns is the PROFILE object itself. if myProfile.GetTotalScoresWithGrade then SCREENMAN:SystemMessage(\u0026#34;Command Available!\u0026#34;) end When running OutFox Alpha 4.15 or higher, you\u0026rsquo;ll recieve the message \u0026ldquo;Command Available!\u0026rdquo; when executed; while any other build will not report the message given it\u0026rsquo;s not available on the Profile namespace.\nYou can also use this search when assigning values to provide a failsafe value in the case the function is not available via a ternary operator.\n-- If the operator passes, it will return the amount of scores from the Tier01 grade, otherwise it\u0026#39;ll return 0. local GradedScores = myProfile.GetTotalScoresWithGrade and myProfile:GetTotalScoresWithGrade(\u0026#34;Grade_Tier01\u0026#34;) or 0 Make sure to cover edge cases for commands This is a specially common case on the Music Wheel. A fundamental change was done around the 5.0.11 era that remove the wheel verification for items, making the themes responsible of dealing with such task. So in the case arrives where items need to be fetched, make sure to verify that the Index/Song/Course you\u0026rsquo;re obtaining for the SongWheelItem is not null; otherwise you\u0026rsquo;ll start recieving a lot of error messages.\n-- Let\u0026#39;s say you have a text actor that will display the name of the song of the current item on the wheel. return Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, SetMessageCommand = function(self,params) -- Setting the value like this will work and display the song name, but a moment will arrive when the wheel -- will start generating folders, or special items like random, roulette or portal, making the variable invalid while regenerating, which will throw errors. self:settext(params.Song:GetDisplayFullTitle()) -- So a better method to perform this is verifying that params exists and also params.Song exists. -- For this wheel example, params is available available, but params.Song can become null on groups. if params.Song then self:settext(params.Song:GetDisplayFullTitle()) else -- If it\u0026#39;s not available, then let\u0026#39;s clear the text so it doesn\u0026#39;t show up -- on any item that isn\u0026#39;t a song. self:settext(\u0026#34;\u0026#34;) end end } ","description":"This section is meant to showcase methods to create certain kinds of actors and recommended practices that are commonly found in themes.\nVerifying Command availability While developing a theme, you may come across commands and functions that are available for current or future versions of OutFox, however it is recommended to make sure that your theme is still compatible for users that run older versions of OutFox or StepMania, and this can be done via a check for its existance."},{"id":127,"href":"/dev/actors/ActorsLua-CommandList/","title":"Command List","parent":"Lua and Actors","content":"OutFox has actors and actors can have commands. Makes sense that there would be a lot of commands pre-defined by the game, so this is a list of what commands the game has, how and when they\u0026rsquo;re used and what parameters they give.\nCommands InitCommand\nOnCommand\nOffCommand\nBeginCommand\nEndCommand\nSetAttackCommand Called on the noteskin actor before drawing an Attack-type TapNote\nParameters:\nModifiers (string, The attack associated with the tap note.)\nUnsetAttackCommand Called on the noteskin actor after drawing an Attack-type TapNote\nScreenGainFocusCommand Called when processing the SM_GainFocus Screen Message.\nOnly used in ScreenOptionsManageProfiles, ScreenOptionsManageEditSteps and ScreenOptionsManageCourses.\nScreenLoseFocusCommand Called when processing the SM_LoseFocus Screen Message.\nOnly used in ScreenOptionsManageProfiles, ScreenOptionsManageEditSteps and ScreenOptionsManageCourses.\nLoseLifeCommand Called when losing a battery.\nPrefixed in metrics with \u0026ldquo;NumLivesP1\u0026rdquo; and \u0026ldquo;NumLivesP2\u0026rdquo;.\nGainLifeCommand Called when gaining a battery.\nPrefixed in metrics with \u0026ldquo;NumLivesP1\u0026rdquo; and \u0026ldquo;NumLivesP2\u0026rdquo;.\nAfterSetCommand Called on the TextBanner after having set the title, subtitle and artist fields. (Runs after calling SetFromSong or SetFromString)\nLoseFocusCommand Called on BGAs when fading away, on ScreenDebugOverlay\u0026rsquo;s pages when switching away, on OptionRows when switching away from a row, and other places\nGainFocusCommand Called on BGAs when fading in, on ScreenDebugOverlay\u0026rsquo;s pages when switching to them, on OptionRows when switching to a row, and other places\nFadeCommand Called when setting the brightness overlay to the actual brightness (based on cover \u0026amp; BGBrightness)\nPrefixed in metrics with \u0026ldquo;BrightnessOverlay\u0026rdquo;.\nNextPageCommand Called when switching to the next page in ScreenRanking.\nSwitchedPageCommand Called when handling the SM_HidePage Screen Message in ScreenRanking.\nReverseOnCommand Called on a column\u0026rsquo;s Receptor when the column goes beyond 50% reverse\nReverseOffCommand Called on a column\u0026rsquo;s Receptor when the column goes below 50% reverse\nLiftCommand Called on a column\u0026rsquo;s Receptor when the column stops being pressed.\nPressCommand Called on a column\u0026rsquo;s Receptor when the column gets pressed.\nProW1/ProW2/ProW3/ProW4/ProW5/W1/W2/W3/W4/W5/MissCommand Called on a column\u0026rsquo;s Receptor and noteflash when a column gets the relevant judgment.\nShowNoteUpcomingCommand Called on a column\u0026rsquo;s Receptor when the column has notes approaching\nHideNoteUpcomingCommand Called on a column\u0026rsquo;s Receptor when the column has no notes approaching\nEditCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Edit state.\nRecordCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Record state.\nRecordPausedCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the RecordPaused state.\nPlayingCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Playing state.\nAnimationFinishedCommand Called on a Sprite when looping an animation.\nHoldingOffCommand Called on a noteflash when ending a hold.\nRollOffCommand Called on a noteflash when ending a roll.\nHoldingOnCommand Called on a noteflash when starting a hold.\nRollOnCommand Called on a noteflash when starting a roll.\nColumnJudgmentCommand Called on a noteflash when a judgment happens. Also seen as a MessageCommand.\nParameters:\nTapNoteScore (TapNoteScore enum, The related judgment. nil for hold notes) HoldNoteScore (HoldNoteScore enum, The related judgment. nil for tap notes) Column (integer, The column the judgment happened on.) Color (string, The last color seen on the noteskin. ScreenNetSelectBase appears to modify this) JudgmentCommand (Not to be confused with the Judgment MessageCommand!)\nCalled on a noteflash when a judgment happens.\nBrightCommand Called on a noteflash when the combo is higher than the bright threshold.\nDimCommand Called on a noteflash when the combo is lower than the bright threshold.\nToggledCommand Called on the button text of ScreenDebugOverlay when the button is pressed.\nPrefixed in metrics with \u0026quot;ButtonText\u0026quot;\nDeSelCommand Called when pressing menuup or menudown on ScreenNetEvaluation.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nSelCommand Called when pressing menuup or menudown on ScreenNetEvaluation.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nTier02OrBetterCommand Called in ScreenNetEvaluation when a player got a grade of tier 2 or better.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nShowCommand Called in ScreenGameplayLesson when showing a page, in OptionsList when something is selected, in DifficultyList, and on the ScreenSyncOverlay when showing help.\nHideCommand Called in ScreenGameplayLesson when hiding a page, in OptionsList when something is deselected, in DifficultyList, and on the ScreenSyncOverlay when hiding help.\nStartTransitioningCommand Called when starting a screen transition.\nGoToOptionsCommand Called when going into the Song Options menu.\nAskFroGoToOptionsCommand Called when asking if the player wants to go into the Song Options menu.\nDisabledCommand Called when showing that an OptionRow or ScreenSelectMaster choice is disabled.\nRefreshCommand Called on OptionRow when setting the ModIcon.\nParameters:\nGameCommand (GameCommand object, The related commands.) Text (string, The text that goes with the commands.) LevelCommand Called when setting the content of a PaneDisplay.\nConnectedCommand Called in ControllerStateDisplay.\nUnpluggedCommand Called in ControllerStateDisplay.\nNeedsMultitapCommand Called in ControllerStateDisplay.\nNoInputHandlerCommand Called in ControllerStateDisplay.\nSetTwoRowsCommand Called when setting an OptionsList underline to work with items in two rows.\nPrefixed in metrics with \u0026quot;Underline\u0026quot;.\nSetOneRowCommand Called when setting an OptionsList underline to work with items in one row.\nPrefixed in metrics with \u0026quot;Underline\u0026quot;.\nPositionTwoRowsCommand Called when setting an OptionsList cursor to work with items in two rows.\nPrefixed in metrics with \u0026quot;Cursor\u0026quot;.\nPositionOneRowCommand Called when setting an OptionsList cursor to work with items in one row.\nPrefixed in metrics with \u0026quot;Cursor\u0026quot;.\nTweenOffCommand Called when loading or closing an OptionRow, tweening off the debug text in ScreenGameplay, and in ScreenMapControllers.\nTransformCommand Called on the Player\u0026rsquo;s Judgment \u0026amp; Combo during `Player::Init``\nPrefixed in metrics with \u0026quot;Judgment\u0026quot; and \u0026quot;Combo\u0026quot;\nParameters:\nPlayer (PlayerNumber enum, The PlayerNumber for the combo \u0026amp; judgment.) MultiPlayer (MultiPlayer enum, The MultiPlayer for the combo \u0026amp; judgment.) iEnabledPlayerIndex (integer, The enabled player index) iNumEnabledPlayers (integer, The number of total enabled players) bPlayerUsingBothSides (boolean, If the current style has one player on both \u0026ldquo;sides\u0026rdquo;, like Doubles) bReverse (boolean, Is the player on Reverse?) bCentered (boolean, Is the player on Centered?) ResetCommand Called when resetting an OptionRow or Player Judgment.\nTweenOffCommand Called when opening an OptionRow, displaying the debug text in ScreenGameplay, and in ScreenMapControllers.\nTweenOutForwardCommand Called when tweening out of an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenOutBackwardCommand Called when tweening out of an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenInForwardCommand Called when tweening into an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenInBackwardCommand Called when tweening into an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nEnabledCommand Called when showing that a ScreenSelectMaster choice is enabled.\nSwitchToPage1Command / SwitchToPage2Command Called when switching to a different page in ScreenSelectMaster.\nPrefixed in metrics with \u0026quot;IconChoice1/2/3/4\u0026quot;, \u0026quot;ExplanationPage1/2\u0026quot;, \u0026quot;MorePage1/2\u0026quot;\nLostSelectedLoseFocusCommand Called when canceling a selection in ScreenSelectMaster.\nLostSelectedGainFocusCommand Called when canceling a selection in ScreenSelectMaster.\nChangeCommand Called when changing a selection in ScreenSelectMaster, when updating a StepsDisplayList/DifficultyList or when updating ScreenOptions.\nPrefixed in metrics with \u0026quot;CursorP1\u0026quot; and \u0026quot;CursorP2\u0026quot;in the case of ScreenSelectMaster.\nMadeChoiceP1Command / MadeChoiceP2Command Called when making a selection in ScreenSelectMaster.\nChooseCommand Called on the cursor when making a selection in ScreenSelectMaster.\nInitialSelectionCommand Called when making a selection in ScreenSelectMaster during a two-step selection.\nOffFocusedCommand Called when tweening off ScreenSelectMaster.\nOffUnfocusedCommand Called when tweening off ScreenSelectMaster.\nBackCommand Called when turning on a BG in ScreenPackages? Also when setting up the backside of the CDTitle.\nPrefixed in metrics with \u0026quot;PackagesBG\u0026quot;, \u0026quot;WebBG\u0026quot; and \u0026quot;CDTitle\u0026quot;\nAwayCommand Called when turning off a BG in ScreenPackages?\nPrefixed in metrics with \u0026quot;PackagesBG\u0026quot; and \u0026quot;WebBG\u0026quot;\nHeldCommand Called on a HoldJudgment when a hold or roll is completed.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nLetGoCommand Called on a HoldJudgment when a hold or roll is dropped.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nMissedHoldCommand Called on a HoldJudgment when a hold or roll is missed.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nTwentyFiveMilestoneCommand Called on Player when displaying a 25 combo milestone.\nFiftyMilestoneCommand Called on Player when displaying a 50 combo milestone.\nHundredMilestoneCommand Called on Player when displaying a 100 combo milestone.\nTwoHundredFiftyMilestoneCommand Called on Player when displaying a 250 combo milestone.\nThousandMilestoneCommand Called on Player when displaying a 1000 combo milestone.\nComboCommand Called on the Player when updating the combo amount.\nParameters:\nCombo (integer, The current combo.) Misses (integer, The current number of misses.) FullComboW1 (boolean, The player currently has a full combo and the lowest TNS is W1.) FullComboW2 (boolean, The player currently has a full combo and the lowest TNS is W2.) FullComboW3 (boolean, The player currently has a full combo and the lowest TNS is W3.) FullComboW4 (boolean, The player currently has a full combo and the lowest TNS is W4.) SortOnCommand Called when tweening on the sorting screen in Music Wheels.\nPrefixed in metrics with \u0026quot;MusicWheel\u0026quot;, \u0026quot;MusicWheelItem\u0026quot; and \u0026quot;Highlight\u0026quot;\nSortOffCommand Called when tweening off the sorting screen in Music Wheels.\nPrefixed in metrics with \u0026quot;MusicWheel\u0026quot;, \u0026quot;MusicWheelItem\u0026quot; and \u0026quot;Highlight\u0026quot;\nDieCommand Called when a Player dies in Oni mode\nPrefixed in metrics with \u0026quot;OniGameOverP1\u0026quot; and \u0026quot;OniGameOverP2\u0026quot;\nSetCommand (ScreenGameplay) Called when setting a Player\u0026rsquo;s StepsDisplay?\nPrefixed in c++ with \u0026quot;SetDummy%i\u0026quot;, \u0026quot;SetP1\u0026quot; and \u0026quot;SetP2\u0026quot;\nSetReverseCommand Called on LyricsDisplay and StepsDisplay when Reverse is on.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;, \u0026quot;StepsDisplayP1\u0026quot; and \u0026quot;StepsDisplayP2\u0026quot;\nSetNoReverseCommand Called on LyricsDisplay and StepsDisplay when Reverse is off.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;, \u0026quot;StepsDisplayP1\u0026quot; and \u0026quot;StepsDisplayP2\u0026quot;\nSetOneReverseCommand Called on LyricsDisplay when Reverse is on at least one Player, but not all.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;\nPauseCommand Called on ScreenGameplay when pausing the game.\nUnpauseCommand Called on ScreenGameplay when unpausing the game.\nStartOnCommand Called on ScreenGameplay\u0026rsquo;s debug text when start is held\nPrefixed in metrics with \u0026quot;Debug\u0026quot;\nBackOnCommand Called on ScreenGameplay\u0026rsquo;s debug text when the back button is held\nPrefixed in metrics with \u0026quot;Debug\u0026quot;\nStartCommand Called on ScreenGameplay\u0026rsquo;s next course song item when starting to load the next song.\nFinishCommand Called on ScreenGameplay\u0026rsquo;s next course song item when switching to the next song.\nFadeFromCachedCommand Called on FadingBanner when loading from a cached image to the actual image.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nFadeOffCommand Called on FadingBanner when loading from nothing to the actual image.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nResetFadeCommand Called on FadingBanner after performing the fade.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nRouletteCommand Called on FadingBanner when fading to the roulette banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nRandomCommand Called on FadingBanner when fading to the random banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\n\u0026lt;custom\u0026gt;Command Called on FadingBanner when fading to a custom banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nSpecialKey Called on ScreenTextEntry\u0026rsquo;s cursor when on a special key.\nRegularKey Called on ScreenTextEntry\u0026rsquo;s cursor when on a regular key.\nNeverShow Called on ScreenMapControllers\u0026rsquo; warning actor if it exists.\nMappedInputCommand Called in ScreenMapControllers after having mapped a key.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nLoseMarkCommand Called in ScreenMapControllers when removing an element from the set list.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nGainMarkCommand Called in ScreenMapControllers when adding an element to the set list.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nWaitingCommand Called in ScreenMapControllers when waiting for the player to set a key after hitting enter.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nSetTextCommand Called when sanity checking the input from ScreenMapControllers.\nParameters:\nText (string, The reasons a sanity check failed.) FirstUpdateCommand Called when ScreenWithMenuElements begins the screen.\nSetHelptextCommand Called when ScreenWithMenuElements updates the HelpText.\nParameters:\nText (string, The help text.) CancelCommand Called when canceling out of a ScreenWithMenuElements menu.\nPrefixed in metrics with \u0026quot;Out\u0026quot;, \u0026quot;Cancel\u0026quot;\nChangeCommand Called when ScreenWithMenuElements begins the screen.\nFrontCommand Called when setting up the frontside of the CDTitle.\nPrefixed in metrics with \u0026quot;CDTitle\u0026quot;\nModsCommand Called during ScreenSelectMusic\u0026rsquo;s BeginScreen.\nShowEnteringOptionsCommand Called when entering the PlayerOptions menu after selecting a song.\nHidePressStartForOptionsCommand Called when hiding the prompt to enter the Player Options menu.\nSortChangeCommand Called when changing the sort order of ScreenSelectMusic\nShowPressStartForOptionsCommand Called when showing the prompt to enter the Player Options menu.\nChangeToExitCommand Called when moving the highlight line to the exit button.\nPrefixed in metrics with \u0026quot;LineHighlight\u0026quot;, \u0026quot;LineHighlightP1\u0026quot; and \u0026quot;LineHighlightP2\u0026quot;\nSelectedCommand Called when changing a value in ScreenOptions?\nUnselectedCommand Called when changing a value in ScreenOptions?\n``ChangedCommand` Called when changing the group \u0026amp; song banner in ScreenEdit as well as when updating the LyricDisplay.\nPrefixed in metrics for LyricDisplay with \u0026quot;LyricFront\u0026quot; and \u0026quot;LyricBack\u0026quot;\nPlayerStateSetCommand Called when running NoteField::Init(), can be seen in 5.0.12\u0026rsquo;s default theme with NoteField board.\nParameters:\nPlayerNumber (PlayerNumber enum, The player number for the notefield\u0026rsquo;s PlayerState.) LoadCommand (StepsDisplay) Called when running StepsDisplay::Load.\nPrefixed in metrics with \u0026quot;Frame\u0026quot; and maybe others?\nParameters:\nPlayerState (PlayerState object, The PlayerState for the given StepsDisplay.) SetCommand (StepsDisplay) Called when running StepsDisplay::SetInternal.\nPrefixed in metrics with \u0026quot;Frame\u0026quot;, \u0026quot;Ticks\u0026quot;, \u0026quot;Meter\u0026quot;, \u0026quot;Description\u0026quot;, \u0026quot;Credit\u0026quot;, \u0026quot;Autogen\u0026quot; and \u0026quot;StepsType\u0026quot;\nParameters:\nCustomDifficulty (string, Representation of the difficulty.) DisplayDescription (string, The chart\u0026rsquo;s related description.) Steps (Steps object, The steps of the chart. nil if not available.) Trail (Trail object, The trail for the course. nil if not available.) Meter (integer, The chart meter value.) StepsType (StepsType enum, The type of chart being shown.) AnalogInputCommand Called on TopScreen from InputHandler when doing analog input. As seen in ScreenTestLuaAnalog\nParameters:\nDevice (integer, The device ID(?) recorded from the input.) Button (string, The button recorded from the input.) Value` (float, The level recorded from the input.) PostSwitchPageCommand Called on ScreenSelectMaster after switching the page? Also has a MessageCommand variant?\nParameters:\nNewPageIndex (integer, The page to switch to.) PreSwitchPageCommand Called on ScreenSelectMaster before switching the page? Also has a MessageCommand variant?\nParameters:\nOldPageIndex (integer, The page to switch from.) NewPageIndex (integer, The page to switch to.) SetCommand (MusicWheelItem) Called on MusicWheelItem when loading from WheelItemData or when handling a change message.\nParameters:\nSong (Song object, The song for the wheel item.) Course (Course object, The course for the wheel item.) Index (integer, The index of the wheel item. nil if done through a change message) HasFocus (boolean, Is the wheel item focused? nil if done through a change message) Text (string, The text of the wheel item?) DrawIndex (integer, The draw index of the wheel item. nil if done through a change message) Type (string, The MusicWheelItemType.) Color (RageColor?, The color associated with the wheel item.) Label (string, The label for the wheel item.) SetGradeCommand Called on MusicWheelItem when refreshing grades.\nParameters:\nPlayerNumber (PlayerNumber enum, The player who has the grade) Grade (Grade enum, The highest grade gotten. nil if there\u0026rsquo;s no HighScoreList.) NumTimesPlayed (integer, How many times the song or course was played. nil if there\u0026rsquo;s no HighScoreList.) MenuTimerExpired Called on ScreenNameEntryTraditional when the menu timer hits zero. Also seen as a MessageCommand.\nPlayerFinishedCommand Called on ScreenNameEntryTraditional when a player finishes entering their name. Also seen as a MessageCommand.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that finished.) EntryChangedCommand Called on ScreenNameEntryTraditional when a player updates their selection text.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that updated their selection text.) Text (string, The current text. Has a _ at the end if more characters can be entered.) SelectKeyCommand Called on ScreenNameEntryTraditional when a player changes which key is being selected.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that changed the key.) Key (string, The currently selected key) SetSongCommand Called on CourseContentsList when setting the item from GameState.\nParameters:\nPlayerNumber (PlayerNumber enum, The player who selected the course) Song (Song object, The song for this part of the course) Steps (Steps object, The Steps of the song.) Difficulty (Difficulty enum, The Difficulty of the course) Meter (integer, The difficulty meter) Number (integer, The position in the course) Modifiers (string, The modifiers to apply for the song) Secret (boolean, Is the song considered a secret?) HurryTimerCommand Called on ScreenContinue when hurrying up the timer.\nParameters:\nPlayerNumber (PlayerNumber enum, The player hurrying up the timer.) LoadCommand (ScoreDisplayNormal) Called when running ScoreDisplayNormal::Init\nParameters:\nPlayerState (PlayerState object, The associated PlayerState.) PlayerStageStats (PlayerStageStats object, The associated PlayerStageStats.) SetStatusCommand Called when updating ScreenSyncOverlay.\nParameters:\nText (string, The status text.) SetAdjustmentsCommand Called when updating ScreenSyncOverlay.\nParameters:\nText (string, The adjustment text.) SetCommand (ScreenHighScores) Called when configuring the ScoreScroller.\nParameters:\nSong (Song object, The song with the high score. nil if it\u0026rsquo;s a course high score.) Course (Course object, The course with the high score. nil if it\u0026rsquo;s a song high score.) Entries (lua table, Steps data. Iterate with pairs and not ipairs.) ScrolledCommand Called when scrolling ScreenHighScores.\nParameters:\nDirection (integer, the direction.) Messages (Suffix with MessageCommand) RouletteStoppedMessageCommand Called when the music wheel is slowing down during roulette.\nStartRouletteMessageCommand Called when the music wheel is starting the roulette\nStartRandomMessageCommand Called when the music wheel chosing a random song from the Random item.\nCoinInsertedMessageCommand Called when insering a coin and clearing credits.\nThemes can use this command to update other actors about coin information (Does not send any data).\nToggleConsoleDisplayMessageCommand Called when pressing the pause key on the keyboard. Its\u0026rsquo; use in fallback is commented out and the keybind conflicts with the mute actions keybind.\nLifeChangedMessageCommand Called when updating the LifeMeter. Different LifeMeter types give different parameters.\nParameters:\nPlayer (PlayerNumber enum, The Player who\u0026rsquo;s having life differences.) LifeMeter (LifeMeter object, The LifeMeter for that player.) LivesLeft (integer, number of batteries left. nil if not using LifeMeterBattery.) LostLife (boolean, Did the player lose a life? nil if not using LifeMeterBattery.) TapNoteScore (TapNoteScore enum LuaReference, the TapNoteScore the player got. nil if not using LifeMeterTime.) HoldNoteScore (HoldNoteScore enum LuaReference, the HoldNoteScore the player got. nil if not using LifeMeterTime.) OldLife (float, the previous amount of time nil if not using LifeMeterTime.) Difference (float, the difference between the old amount of life and current amount. nil if not using LifeMeterTime.) ShowDangerAllMessageCommand Called in Background when all players are in danger of failing.\nHideDangerAllMessageCommand Called in background when all players are not in danger of failing (or if they\u0026rsquo;re all dead).\nScreenChangedMessageCommand Called when running ScreenManager::LoadDelayedScreen\nPrefixed in metrics with \u0026quot;CreditsP1\u0026quot; and \u0026quot;CreditsP2\u0026quot; when dealing with the credits text.\nSystemMessageMessageCommand Called when creating a SystemMessage\nParameters:\nMessage (string, The message itself.) NoAnimate (boolean, Do we do an animated SystemMessage?) HideSystemMessageMessageCommand Called when hiding the SystemMessage. Seemingly unused?\nRefreshCreditTextMessageCommand Called when refreshing the credits text.\nPrefixed in metrics with \u0026quot;CreditsP1\u0026quot; and \u0026quot;CreditsP2\u0026quot;.\nAutosyncChangedMessageCommand Called when changing the Autosync type from ScreenDebugOverlay.\nToggleScriptErrorMessageCommand Called when toggling the error display from ScreenDebugOverlay.\nClearScriptErrorMessageCommand Called when clearing the current lua errors from ScreenDebugOverlay.\nUpdateNetEvalStatsMessageCommand Called when updating the evaluation stats during net play.\nParameters:\nActivePlayerIndex (integer, The current active player.) Difficulty (Difficulty enum, The song\u0026rsquo;s difficulty.) Score (integer, The player\u0026rsquo;s score.) Grade (integer, The player\u0026rsquo;s grade.) PlayerOptions (string, The player\u0026rsquo;s playeroptions.) Steps (Steps object, The song\u0026rsquo;s steps. nil if they don\u0026rsquo;t exist.) ScoreChangedMessageCommand Called when loading ScoreKeeperNormal and handling score.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the score.) MultiPlayer (MultiPlayer enum, The MultiPlayer associated with the score.) ToastyCombo (integer, The current combo as the toasty sees it. nil if not coming from ScoreKeeperNormal::HandleTapRowScore) CurrentComboChangedP1MessageCommand / CurrentComboChangedP2MessageCommand Called when dealing with combo in ScoreKeeperNormal.\nToastyAchievedMessageCommand Called when a player gets the toasty.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the toasty.) ToastyCombo (integer, The current combo as the toasty sees it. nil if not coming from ScoreKeeperNormal::HandleTapRowScore) Level (integer, How many times has the player gotten a toasty?) ToastyDroppedMessageCommand Called when a player drops the toasty.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the dropped toasty.) AutoJoyMappingAppliedMessageCommand Called when automapping a joystick.\nCrossedBeatMessageCommand Called every time a beat is crossed?\nParameters:\nBeat (integer, The beat that was just crossed?) LessonClearedMessageCommand Called when clearing a lesson?\nLessonFailedMessageCommand Called when failing a lesson?\nLessonTry1MessageCommand / LessonTry2MessageCommand Called when attempting a lesson?\nStorageDevicesChangedMessageCommand Called when updating the MemoryCardManager.\nCardRemovedP1MessageCommand / CardRemovedP2MessageCommand Called when a memory card is removed?\nSongModifiedMessageCommand Called when saving sync changes while in EditMode.\nOptionsListOpenedMessageCommand Called every time an OptionsList is opened.\nParameters:\nPlayer (PlayerNumber enum, The player that opened the OptionsList.) OptionsListClosedMessageCommand Called every time an OptionsList is closed.\nParameters:\nPlayer (PlayerNumber enum, The player that closed the OptionsList.) OptionsListQuickChangeMessageCommand Called every time an OptionsList selection changes. Used when Start is used as down, and the button is left or right.\nParameters:\nPlayer (PlayerNumber enum, The player that changed the OptionsList.) Direction (integer, The direction to move.) Selection (integer, The item being selected.) OptionsListLeftMessageCommand / OptionsListRightMessageCommand Called every time an player moves on the OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that moved through the OptionsList.) Selection (integer, The item being selected.) OptionsMenuChangedMessageCommand Called when switching to a different row.\nParameters:\nPlayer (PlayerNumber enum, The player that changed to the row.) Menu (string, The menu being switched to?) OptionsListPopMessageCommand Called when popping off an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that popped off the list.) OptionsListResetMessageCommand Called when resetting an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that reset the list.) OptionsListPushMessageCommand Called when pushing an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed the list.) OptionsListStartMessageCommand Called when pushing the start button in an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed the start button.) Selection (integer, The item being selected.) DownloadFinishedMessageCommand Called when a download finishes in ScreenInstallOverlay.\nMenuLeftP1MessageCommand / MenuLeftP2MessageCommand / MenuDownP1MessageCommand / MenuDownP2MessageCommand / MenuUpP1MessageCommand / MenuUpP2MessageCommand / MenuRightP1MessageCommand / MenuRightP2MessageCommand Called when moving around ScreenSelectMaster, ScreenOptions or ScreenSelectProfile.\nMenuSelectionChangedMessageCommand Called when updating a menu selection on ScreenSelectMaster or ScreenOptions.\nMenuStartP1MessageCommand / MenuStartP2MessageCommand Called when pushing the start button ScreenSelectMaster or ScreenOptions.\nParameters:\nScreenEmpty (boolean, Is the screen empty?) (Is this the screen we\u0026rsquo;re about to go to?) CurrentCourseChangedMessageCommand Called when changing the course, shuffling the Workout or shuffling the course.\nComboChangedMessageCommand Called when updating the player\u0026rsquo;s Combo.\nParameters:\nPlayer (PlayerNumber enum, The player whose combo is getting updated.) OldCombo (integer, the old combo) OldMissCombo (integer, the old miss combo) PlayerState (PlayerState object LuaReference, the Player\u0026rsquo;s PlayerState. nil if it doesn\u0026rsquo;t exist.) PlayerStageStats (PlayerStageStats object LuaReference, the Player\u0026rsquo;s PlayerStageStats. nil if it doesn\u0026rsquo;t exist.) ScoreNoneMessageCommand Called when processing a TapNoteScore_None in Player.\nStepMessageCommand Called when any player steps.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that did the step.) MultiPlayer (MultiPlayer enum, The MultiPlayer that did the step.) Column (integer, the column getting stepped. 0-indexed?) StepP1MessageCommand / StepP2MessageCommand Called when any player steps. For backwards compatbility with older content.\nJudgmentMessageCommand (Not to be confused with JudgmentCommand!)\nCalled when any player gets a judgment.\nParameters:\nPlayer (PlayerNumber enum, the player that did the step.) MultiPlayer (MultiPlayer enum, The MultiPlayer that did the step.) FirstTrack (integer, The first column to hit the note.) NumTracks (integer, Number of columns with a hold? Only seen with Hold judgments.) TapNoteScore (TapNoteScore enum, the tap note score that was gotten.) HoldNoteScore (HoldNoteScore enum, the hold note score that was gotten.) Early (boolean, Was the hit early? Only seen with non-Hold judgments.) TapNoteOffset (float, How far away was the hit in seconds?) Holds (lua table, indexable by column number for everything that has a hold running. Only seen with non-Hold judgments.) Notes (lua table of TapNotes, indexable by column number for everything that has a note hit at once. Only seen with non-Hold judgments.) TapNote (TapNote object?, The TapNote for the hold. Only seen with Hold Judgments.) JudgmentMessageCommand (Mines) (Not to be confused with JudgmentCommand!)\nCalled when any player gets a judgment relating to a mine.\nParameters:\nPlayer (PlayerNumber enum, the player that did the step.) TapNoteScore (TapNoteScore enum, the tap note score that was gotten.) FirstTrack (integer, The first column to hit the mine.) JudgmentWindowMessageCommand Called when making use of luajudgments.\nParameters:\nType (string, The thing being judged.) Window (float, How far away the note was when it was hit.) score (TapNoteScore enum, Set from lua, determines the score a player should get.) timing (float, Set from lua, determines the timing window a player should use.) \u0026lt;DeviceInput\u0026gt;PressedMessageCommand / \u0026lt;DeviceInput\u0026gt;ReleasedMessageCommand Called from ScreenTestInput when recieving input. \u0026lt;DeviceInput\u0026gt; is replaced with a ToString\u0026rsquo;d input name.\nUpdateScreenheaderMessageCommand Called when updating a NetRoom\u0026rsquo;s room title.\nParameters:\nHeader (string, The header text.) Subheader (string, The subheader text.) DoneLoadingNextSongMessageCommand Called when ScreenGameplay finishes loading the next song in a course. Seems unused?\nHealthStateMessageCommand Called when a player\u0026rsquo;s HealthState changes.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that\u0026rsquo;s having their health state change.) HealthState (HealthState enum, The current health state.) OldHealthState (HealthState enum, The previous health state.) PlayerFailedMessageCommand Called when a player fails.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that failed.) BeatCrossedMessageCommand Called every time a beat is crossed in ScreenGameplay. Seems unused?\nNoteCrossedMessageCommand / NoteWillCrossMessageCommand Called when a player\u0026rsquo;s note will cross or has crossed.\nParameters:\nPlayerNumber (PlayerNumber enum, the player whose note is gonna cross. nil if both players have the same style.) ButtonName (string, The column\u0026rsquo;s button.) NumTracks (integer, The number of tracks with a tap or hold head.) IsMine (boolean, Is the note a mine?) NumMessagesFromCrossed (integer, How many messages is the note away from crossing? 0 = crossed.) NoteWillCrossIn400Ms / NoteWillCrossIn800Ms / NoteWillCrossIn1200Ms Called when a note is going to cross. Refer to message names for distance?\nNoteCrossedJumpMessageCommand Called when a jump crosses.\nBeforeLoadingNextCourseSongMessageCommand Called before playing the next song transition in a course.\nChangeCourseSongInMessageCommand Called after playing the next song transition in a course.\nChangeCourseSongOutMessageCommand Called when loading the next song in a course.\n\u0026lt;PreferenceName\u0026gt;ChangedMessageCommand Called when a preference changes. \u0026lt;PreferenceName\u0026gt; is replaced with the actual preference name.\nPlayerJoinedMessageCommand Called when a player joins.\nParameters:\nPlayer (PlayerNumber enum, the player that joined.) PlayerUnjoinedMessageCommand Called when a player leaves.\nParameters:\nPlayer (PlayerNumber enum, the player that left.) GoalCompleteP1MessageCommand / GoalCompleteP2MessageCommand Called when a player completes a workout goal?\nWorkoutGoalCompleteMessageCommand Called when a player completes a workout goal during a course.\nScriptErrorMessageCommand Called when a lua script errors or reports an error.\nParameters:\nmessage (string, The error message.) DisplayLanguageChangedMessageCommand Called when switching between transliterated and native language on the music wheel (Press F9).\nStepsUnchosenMessageCommand Called when a player unselects steps.\nParameters:\nPlayer (PlayerNumber enum, The player that backed out.) SelectMenuInputMessageCommand Called in ScreenSelectMusic. Not sure when.\nParameters:\nPlayer (PlayerNumber enum, The player that caused this.) Button (string, The button that was pressed) PreviousSongMessageCommand Called when moving to the previous song in ScreenSelectMusic.\nNextSongMessageCommand Called when moving to the next song in ScreenSelectMusic.\nPreviousGroupMessageCommand Called when moving to the previous group in ScreenSelectMusic.\nNextGroupMessageCommand Called when moving to the next group in ScreenSelectMusic.\nTwoPartConfirmCanceledMessageCommand Called when canceling out of a Two-Part confirm.\nSongUnchosenMessageCommand Called when a player unselects a song.\nParameters:\nPlayer (PlayerNumber enum, The player that backed out.) PlayerOptionsChangedMessageCommand Called when a player changes their PlayerOptions through CodeDetector (ScreenSelectMusic).\nParameters:\nPlayerNumber (PlayerNumber enum, The player that performed the code.) SongOptionsChangedMessageCommand Called when a player changes the SongOptions through CodeDetector (ScreenSelectMusic).\nSelectMenuOpenedMessageCommand / SelectMenuClosedMessageCommand Called when updating the select button status on ScreenSelectMusic.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed select.) ChangeStepsMessageCommand Called when changing the current steps.\nParameters:\nPlayer (PlayerNumber enum, The player that changed the steps.) Direction (integer, The direction the player went.) SongChosenMessageCommand Called when choosing the steps like in pump pro.\nStepsChosenMessageCommand Called when choosing the steps.\nParameters:\nPlayer (PlayerNumber enum, The player that chose the steps.) StartSelectingSongMessageCommand / StartSelectingStepsMessageCommand / StartFinalizedMessageCommand Called at some point in ScreenSelectMusic?\nSelectMultipleMessageCommand Called when changing the rows in ScreenOptions.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChoiceInRow (integer, The current selection in the row.) Selected (boolean, Is the current item selected?) ChangeValueMessageCommand Called when changing the value in ScreenOptions.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChangeRowMessageCommand Called when changing the rows in ScreenOptions in an absolute amount.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChangedToExit (boolean, Is the current row an exit?) LifeMeterChangedP1MessageCommand / LifeMeterChangedP2MessageCommand Called when setting the life meter state for a given point of time.\nParameters:\nLife (float, The current amount of life.) StepsSecond (float, The point of time in the song/course) FriendsUpdateMessageCommand Called when updating the friends list?\nUsersUpdateMessageCommand Called when updating the users list?\nCurrentGameChangedMessageCommand Called when the current game changes? Seems unused?\nPlayModeChangedMessageCommand Called when the play mode changes? Seems unused?\nCoinsChangedMessageCommand Called when the amount of coins changes? Seems unused?\nPreferredSongGroupChangedMessageCommand Called when the preferred song group changes? Seems unused?\nPreferredCourseGroupChangedMessageCommand Called when the preferred course group changes? Seems unused?\nPreferredStepsTypeChangedMessageCommand Called when the preferred steps type changes? Seems unused?\nPreferredDifficultyP1ChangedMessageCommand / PreferredDifficultyP2ChangedMessageCommand Called when the preferred difficulty changes? Seems unused?\nPreferredCourseDifficultyP1ChangedMessageCommand / PreferredCourseDifficultyP2ChangedMessageCommand Called when the preferred course difficulty changes? Seems unused?\nSortOrderChangedMessageCommand Called when the sort order changes?\nCurrentSongChangedMessageCommand Called when the current song changes?\nCurrentStepsP1ChangedMessageCommand / CurrentStepsP2ChangedMessageCommand Called when the current steps change?\nCurrentCourseChangedMessageCommand Called when the current course changes?\nCurrentTrailP1ChangedMessageCommand / CurrentTrailP2ChangedMessageCommand Called when the current trail changes?\nGameplayLeadInChangedMessageCommand Called when changing the Gameplay lead-in?\nEditStepsTypeChangedMessageCommand Called when the edit steps type changes? Seems unused?\nEditCourseDifficultyChangedMessageCommand Called when the edit course difficulty changes? Seems unused?\nEditSourceStepsChangedMessageCommand Called when the edit source steps changes? Seems unused?\nEditSourceStepsTypeChangedMessageCommand Called when the edit source steps type changes? Seems unused?\nEditCourseEntryIndexChangedMessageCommand Called when the edit course entry index changes? Seems unused?\nEditLocalProfileIDChangedMessageCommand Called when the edit local profile ID changes? Seems unused?\nCurrentStyleChangedMessageCommand Called when the current style changes? Seems unused?\n","description":"OutFox has actors and actors can have commands. Makes sense that there would be a lot of commands pre-defined by the game, so this is a list of what commands the game has, how and when they\u0026rsquo;re used and what parameters they give.\nCommands InitCommand\nOnCommand\nOffCommand\nBeginCommand\nEndCommand\nSetAttackCommand Called on the noteskin actor before drawing an Attack-type TapNote\nParameters:\nModifiers (string, The attack associated with the tap note.)"},{"id":128,"href":"/dev/theming/Theming-4-Creating-Font/","title":"Creating a Font","parent":"Introduction to theming","content":"Most themes use custom fonts, which are bitmap images with a bundled INI file that contains information about its width and height information for the engine to then process as glyphs. You can think of them as images that represent each letter.\nWe have a BitmapText actor, with a default font (Common Normal) that has the following text:\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor. self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor becomes We have a BitmapText actor, with a custom that has the following text:\nDef.BitmapText{ Font = \u0026#34;_eurostile normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor. self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor becomes To create these fonts, we have a tool called Texture Font Generator, which can create the font bitmaps. Keep in mind that this software currently is Windows only.\nThe Texture Font Generator\u0026rsquo;s more recent versions export glyphs that are only compatible with OutFox. If you\u0026rsquo;d like to use the tool to generate fonts for earlier StepMania releases, use the Legacy version of the tool. Open the program and a window will pop up with a font preview and selections.\nThe smaller window area provides info into what font to use, its size to render, and vertical spacing control buttons, these are tagged on the \u0026ldquo;Overlap\u0026rdquo; text area.\nMaximum size: indicates the size of each glyph.\nPadding: changes the vertical and horizontal spacing on each glyph.\nPage: is the glyph map to render out with the current font.\nIt is recommended to use a monospaced font for GUI elements, as it allows readability and accesibility for dyslexic individuals. The tool allows for different kinds of options on what glyphs to export, which are the following:\nExporting to only numbers, which are commonly used on scoring text (shown on screenshot above) Export strokes (a separate layer of fonts that can be used for bordering) Double Resolution (A flag added to the filename, which tells the engine to render the glyph half the size for sharper text, but it will need a bigger sized font for better results) When you\u0026rsquo;re ready to export the font, click on File \u0026gt; Save, and a prompt window will appear asking the location on where to save the file. You can give the font a name, and this will be applied to all of the files exported. It\u0026rsquo;ll export the image itself containing the glyphs of the font, an Ini file containing the spacing data for each glyph and additional stroke images if the option to export strokes was enabled.\n","description":"Most themes use custom fonts, which are bitmap images with a bundled INI file that contains information about its width and height information for the engine to then process as glyphs. You can think of them as images that represent each letter.\nWe have a BitmapText actor, with a default font (Common Normal) that has the following text:\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor."},{"id":129,"href":"/dev/mods/Mods-13-Miscellaneous-Mods/","title":"Miscellaneous Modifiers","parent":"Guide to Modifiers","content":"These modifiers don\u0026rsquo;t really fit into any of the above categories, so they\u0026rsquo;re here instead.\n\u0026ldquo;clearall\u0026rdquo; Desc: Tells PlayerOptions to do a reset. Often used in modfiles to mimic crs-style resetting. Only available in modstring form right now.\nQuirks: N/A\nModstring format: clearall\nHoldGrainMult Desc: Adds a multiplier to the \u0026lsquo;step size\u0026rsquo; of holds, allowing one to control how \u0026lsquo;granular\u0026rsquo; a hold is. In NotITG, this is known as \u0026ldquo;granulate\u0026rdquo; or \u0026ldquo;grain\u0026rdquo; (alias).\nNegative values make the hold smoother (with a \u0026rsquo;limit\u0026rsquo; of -93.75% which results in a step size of 1 pixel), but could cost performance due to the extra calculations being done. Positive values make the hold look more polygonal (with no real limit). Very noticable on modifiers that work on position, like Drunk.\nCommon values can range from practically anywhere due to it being a multiplier. Try starting with -50% or 100% and go further if extra points or less points are desired.\nQuirks: In NotITG, this modifier works a bit differently. At 0%, the holds are drawn with the normal stepsize, but the magnitude when nonzero controls the step size in pixels (100% = step size of 1 pixel, 400% = step size of 4 pixels (normal in NotITG)). This means NotITG can have step sizes below 1 pixel.\nPlayerOptions format: HoldGrainMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: HoldGrainMult(4, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; holdgrainmult\nExample: *2 400% holdgrainmult\nHoldGrainMult video example\nExtendHolds Desc: Adds a multiplier to the visual length of holds. In NotITG, this is known as \u0026ldquo;longholds\u0026rdquo;, \u0026ldquo;longboy\u0026rdquo; (alias) or \u0026ldquo;longboys\u0026rdquo; (alias).\nCommon values range from -100% to 300%\nQuirks: N/A\nPlayerOptions format: ExtendHolds(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ExtendHolds(0.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; extendholds\nExample: *1 50% extendholds\nExtendHolds video example\nStraightHolds Desc: Makes holds react less to mods, similar to what holds do in \u0026ldquo;Pump It Up\u0026rdquo;. NotITG has an alias called \u0026ldquo;gayholds\u0026rdquo;, which applies negative straightholds (so 100% gayholds = -100% straightholds). There is also a column-specific variant.\nCommon values range from -100 to 200%\nQuirks: N/A\nAvailable variants (modstring): straightholds, gayholds (NotITG negative alias), straightholds\u0026lt;column\u0026gt;, gayholds\u0026lt;column\u0026gt; (NotITG negative alias for straightholds\u0026lt;column\u0026gt;)\nPlayerOptions format: StraightHolds(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StraightHolds(1, 0.2)\nColumn-specific format: StraightHoldsCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StraightHoldsCol(3, 2, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 100% straightholds *0.5 200% straightholds3\nStraightHolds video example\nNotePath Desc: Draws a line that shows the path a note takes to the receptor and beyond, which means it depends on all position mods that are in the game. Known as \u0026ldquo;arrowpath\u0026rdquo; in NotITG. Effectively a \u0026lsquo;hold\u0026rsquo; that lasts the whole notefield, so it could hurt performance depending on what mods are being used. Has a column-specific variant available which is additive like Stealth \u0026amp; Dark.\nCommon values range from -100 to 100% due to the additive nature.\nQuirks: N/A\nAvailable variants (modstring): notepath, notepath\u0026lt;column\u0026gt;, arrowpath (NotITG name), arrowpath\u0026lt;column\u0026gt; (NotITG name)\nPlayerOptions format: NotePath(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NotePath(1, 0.4)\nColumn-specific format: NotePathCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NotePathCol(4, 1, 0.4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.4 100% notepath *0.4 100% notepath4\nNotePath video example\nAvailable sub modifiers: NotePathBlendMode Desc: Set the blend mode used for the NotePath. This does not have a modstring form, and in NotITG, is only available in Player.\nPlayerOptions format: NotePathBlendMode(\u0026lt;blend mode\u0026gt;)\nNotITG Player format: SetArrowPathBlendMode(\u0026lt;blend mode\u0026gt;)\nNotePathDrawMode Desc: Set the secondary draw mode used for the NotePath. It allows for different \u0026rsquo;looks\u0026rsquo; for the notepath. For example, \u0026ldquo;DrawMode_Fan\u0026rdquo; creates a veil-type visual with 50% NotePath, while \u0026ldquo;DrawMode_Lines\u0026rdquo; creates a dotted line.\nThis does not have a modstring form and does not reset with a clearall.\nPlayerOptions format: NotePathDrawMode(\u0026lt;draw mode\u0026gt;)\nNotePathGrainMult Desc: Allows for adjusting the step size like what HoldGrainMult does for holds. The same notes from there apply here.\nAvailable variants (modstring): notepathgrainmult, arrowpathgranulate (NotITG name), arrowpathgrain (NotITG alias)\nPlayerOptions format: NotePathGrainMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNotePathWidth Desc: Allows for adjusting how wide the notepath is. It\u0026rsquo;s added onto the default, which is one pixel in theme-space.\nAt the moment, there is a GPU-enforced limit on the actual width. In NotITG, this can be worked around by turning off smoothlines (Which uses CPU-based quads, also has a side-effect of showing depth in the lines)\nAvailable variants (modstring): notepathwidth, arrowpathsize (NotITG name), arrowpathgirth (NotITG alias), arrowpathwidth (NotITG alias)\nPlayerOptions format: NotePathWidth(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNotePathDrawSize Desc: Where DrawSize affects the notefield\u0026rsquo;s rendering space, this affects the rendering space of NotePath. This is unaffected by normal DrawSize, but the rendering space starts out the same as a whole notefield.\nAvailable variants: NotePathDrawSize (Affects area below the receptors), NotePathDrawSizeBack (Affects area above the receptors)\nAvailable variants (modstring): notepathdrawsize, notepathdrawsizeback, arrowpathdrawsize (NotITG name for notepathdrawsize), arrowpathdrawsizefront (NotITG alias for notepathdrawsize), arrowpathdrawdistance (NotITG alias for notepathdrawsize), arrowpathdrawdistancefront (NotITG alias for notepathdrawsize), arrowpathdrawsizeback (NotITG name for notepathdrawsizeback), arrowpathdrawdistanceback (NotITG alias for notepathdrawsizeback)\nPlayerOptions format: \u0026lt;NotePathDrawSize variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nModTimer Desc: Allows one to set the timer used by many modifiers.\nThese are the following types (denoted as \u0026lt;type\u0026gt;):\n\u0026lsquo;ModTimerType_Default\u0026rsquo; just go with the game\u0026rsquo;s default timer type (5.2 defaults to song, 5.1 \u0026amp; OutFox default to game) \u0026lsquo;ModTimerType_Game\u0026rsquo; (Use the game\u0026rsquo;s current uptime in seconds.) \u0026lsquo;ModTimerType_Song\u0026rsquo; (Use the song\u0026rsquo;s current time in seconds.) \u0026lsquo;ModTimerType_Beat\u0026rsquo; (Use the song\u0026rsquo;s current beat.) Often, song time is used as the setting.\nQuirks: In NotITG, this is done by a single name (\u0026ldquo;modtimer\u0026rdquo;, \u0026ldquo;timer\u0026rdquo; or \u0026ldquo;globalmodtimer\u0026rdquo;) with magnitudes. 0% = game time, 100% = song time, 200% = song beat.\nAvailable variants (modstring): modtimerdefault, modtimergame, modtimersong, modtimerbeat\nPlayerOptions format: ModTimerSetting(\u0026lt;type\u0026gt;)\nExample: ModTimerSetting('ModTimerType_Beat')\nModstring format: \u0026lt;modstring variant\u0026gt;\nExample: modtimerbeat\nAvailable sub modifiers:\nModTimerMult Desc: Add a multiplier onto the timer used for modifiers. 100% = 2x, -50% = 0.5x.\nAvailable variants (modstring): modtimermult, timermult (NotITG alias), globalmodtimermult (NotITG alias)\nPlayerOptions format: ModTimerMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nModTimerOffset Desc: Offset the timer used for modifiers. 100% = 1 time unit.\nAvailable variants (modstring): modtimeroffset, timeroffset (NotITG alias), globalmodtimeroffset (NotITG alias)\nPlayerOptions format: ModTimerOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNoteSkew Desc: Applies skew on the notes and receptors. Does not affect holds. Comes in skewx \u0026amp; skewy variants, and is also column-specific. NotITG calls the skewx variant \u0026ldquo;noteskew\u0026rdquo; because they originally only had skewx.\nCommon values range from -200 to 200%\nQuirks: N/A\nAvailable variants: NoteSkewX, NoteSkewY\nColumn-specific variants: NoteSkewXCol, NoteSkewYCol\nAvailable variants (modstring): noteskewx, noteskewx\u0026lt;column\u0026gt;, noteskew (NotITG name), noteskew\u0026lt;column\u0026gt; (NotITG name), noteskewy, noteskewy\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;NoteSkew variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Example: NoteSkewX(0.7, 4)\nColumn-specific format: \u0026lt;NoteSkewCol variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NoteSkewXCol(1, 0.25, 0.25, true):NoteSkewXCol(2, 0.5, 0.5, true):NoteSkewXCol(3, 0.75, 0.75, true):NoteSkewXCol(4, 1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *4 70% noteskewx *0.25 25% noteskewx1, *0.5 50% noteskewx2, *0.75 75% noteskewx3, *1 100% noteskewx4\nNoteSkewX video example\nAvailable sub modifiers: noteskewtype (NotITG only) Desc: When active, the note skews get rotated (but not the receptors). In SM5, this can be often (mostly) replicated in dance by using the negative amount of NoteSkewY on columns 1 and 4.\nAvailable variants (modstring): noteskewtype, skewtype (alias)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nTrigClip Desc: Performs clipping on the trigonometric waves used in many modifiers and their variants.\nThe following are available:\nSinClip (sine wave clipping. Affects Wave (all non-tan variants), SpiralY, Bumpy (all non-tan variants), Beat (all variants), Zigzag (All variants), Digital (All non-tan variants), Bounce (All variants), Blink (All variants), Pulse (all non-tan variants), CosClip (cosine wave clipping. Affects Tornado (all non-tan varians), Tipsy (all non-tan variants), Expand, Drunk (all non-tan variants), SpiralX TanClip (tangent wave clipping, use values close to 100% for visible effects. Affects all tangent variants of all modifiers) Quirks: Going beyond 100% may result in interesting effects on some modifiers. In NotITG, this was \u0026lsquo;fixed\u0026rsquo;.\nCommon values range from 50 to 100%\nPlayerOptions format: \u0026lt;TrigClip variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CosClip(0.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.5 50% cosclip\nCosClip video example\nDisableMines Desc: When active, stepping on mines will not have any effect. Useful if you want to place mines for aesthetic purposes, but don\u0026rsquo;t want to penalize players for ghost-tapping.\nQuirks: N/A\nPlayerOptions format: DisableMines(\u0026lt;enable\u0026gt;)\nExample: DisableMines(true)\nModstring format: \u0026lt;enable\u0026gt; disablemines\nExample: disablemines\nZBuffer Desc: When active, the zbuffer gets enabled regardless of modifiers active. Can act as an alternate way to enable zbuffer instead of using low amounts of z position modifiers. NotITG also allows having negative values to force it off. When the zbuffer is enabled, holds draw at a step size of 4 instead of 16. Also has \u0026ldquo;ztest\u0026rdquo; as an alias in NotITG.\nQuirks: N/A\nPlayerOptions format: ZBuffer(\u0026lt;enable\u0026gt;)\nExample: ZBuffer(true)\nModstring format: \u0026lt;enable\u0026gt; zbuffer\nExample: zbuffer\nCosecant Desc: When active, all tangent modifiers use a cosecant wave instead of a tangent wave, mimicking how NotITG v1 did tangent wave modifiers. Known as \u0026ldquo;cosec\u0026rdquo; or \u0026ldquo;glitchytan\u0026rdquo; (alias) in NotITG.\nQuirks: N/A\nPlayerOptions format: Cosecant(\u0026lt;enable\u0026gt;)\nExample: Cosecant(true)\nModstring format: \u0026lt;enable\u0026gt; cosecant\nExample: cosecant\nCosecant video example\nWireFrame Desc: A Column-specific modifier that allows setting the column to use wireframe mode for notes and holds. NotITG has a modstring alias that hits all columns.\nQuirks: Using a 3D noteskin is recommended if using this modifier.\nAvailable variants (modstring): wireframe\u0026lt;column\u0026gt;, wireframe (NotITG alias that hits all columns)\nPlayerOptions format: WireFrameCol(\u0026lt;column\u0026gt;, \u0026lt;enable\u0026gt;)\nExample: WireFrameCol(2, true)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: wireframe2\nWireFrame video example\nAvailable sub modifiers: WireFrameWidth Desc: Like how NotePath has a width sub modifier, this affects the width of the wireframe lines.\nAvailable variants (modstring): wireframewidth\u0026lt;column\u0026gt;, wireframegirth\u0026lt;column\u0026gt; (NotITG alias), wireframewidth (NotITG alias that hits all columns), wireframegirth (NotITG alias that hits all columns)\nPlayerOptions format: WireFrameWidthCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNoteSkin Desc: Get and set the NoteSkin for the player.\nQuirks: Returns both the previous name \u0026amp; if the set succeeded upon being given a string. Cannot be used to change noteskins mid-song (If forcing a noteskin, you have to reload the screen) like what OpenITG/SM3.95/NotITG has.\nPlayerOptions format: NoteSkin(\u0026lt;noteskin name\u0026gt;)\nExample: NoteSkin('Metal')\nModstring format: \u0026lt;noteskin name\u0026gt;\nExample: metal\nNoteSkinCol Desc: Allow getting and setting the noteskin on a column-basis. Unlike NoteSkin, this allows for changing the noteskin mid-song.\nWhen used on a single column, the receptors will not change.\nWhen \u0026lt;column\u0026gt; is nil, all columns will use the requested noteskin, and the receptors will change to match.\nQuirks: Requires a Preferences.ini for the song that lists the noteskins to load. May not play nice when the noteskin isn\u0026rsquo;t loaded. NOTESKIN:DoesNoteSkinExist could be used to ensure the noteskin exists before setting. The change is instant unlike noteskin changes done through attacks in OpenITG/SM3.95/NotITG.\nPlayerOptions format: NoteSkinCol(\u0026lt;column\u0026gt;, \u0026lt;noteskin name\u0026gt;)\nExample: NoteSkinCol(nil, 'lambda')\nModstring format: \u0026lt;noteskin name\u0026gt; noteskin\u0026lt;column\u0026gt; (ommitting column will hit all columns)\nExample: lambda noteskin\nNoteSkinCol video example\nLifeSetting Desc: Set the lifebar type to be used. There are three types (denoted as \u0026lt;type\u0026gt;):\nBar (The normal lifebar most people are used to.) Modstring form is \u0026ldquo;bar\u0026rdquo;. Battery (Mess up a certain number of times and you fail the song) Modstring form is \u0026ldquo;battery\u0026rdquo;. Time (You have a limited amount of time to live. Hit notes better to gain time.) Modstring form is \u0026ldquo;lifetime\u0026rdquo;. Quirks: This cannot be set during gameplay. It must be set before entering ScreenGameplay.\nPlayerOptions format: LifeSetting(\u0026lsquo;LifeType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: LifeSetting('LifeType_Time')\nModstring format: \u0026lt;type\u0026gt;\nExample: lifetime\nDrainSetting Desc: Set how the lifebar\u0026rsquo;s health behavior works. There are three drain types (denoted as \u0026lt;type\u0026gt;):\nNormal (The health goes up and down at the expected rate.) Modstring form is \u0026ldquo;normal-drain\u0026rdquo;. NoRecover (The health only goes down.) Modstring form is \u0026ldquo;norecover\u0026rdquo; or \u0026ldquo;power-drop\u0026rdquo;. SuddenDeath (Getting any judgment below the required one will instantly kill you.) Modstring form is \u0026ldquo;suddendeath\u0026rdquo; or \u0026ldquo;death\u0026rdquo;. Quirks: Initial health will start at 100% when not using Normal drain. Initial health for Normal is a theme metric, as well as the minimum judgment for SuddenDeath. This also works mid-gameplay, allowing for sections that require good accuracy.\nPlayerOptions format: DrainSetting(\u0026lsquo;DrainType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: DrainSetting('DrainType_NoRecover')\nModstring format: \u0026lt;type\u0026gt;\nExample: norecover\nBatteryLives Desc: Set how many lives are available in the Battery life bar at the start. Probably shouldn\u0026rsquo;t be set mid-gameplay.\nQuirks: N/A\nPlayerOptions format: BatteryLives(\u0026lt;number of lives\u0026gt;)\nExample: BatteryLives(5)\nModstring format: \u0026lt;number of lives divided by 100\u0026gt; lives\nExample: 0.05% lives\nRandAttack Desc: When active, random attacks will be launched throughout the song. Any nonzero magnitude will activate it. Cannot be set through modstrings.\nQuirks: The attacks chosen come from /Data/RandomAttacks.txt\nPlayerOptions format: RandAttack(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: RandAttack(1,1)\nNoAttack Desc: When active, RandAttack is canceled out. Any nonzero magnitude will activate it. Cannot be activated through modstrings.\nQuirks: N/A\nPlayerOptions format: NoAttack(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NoAttack(1,1)\nPlayerAutoPlay Desc: When active, AutoPlay will be set on the player. Cannot be set through modstrings.\nQuirks: Do not set this during gameplay. Attempting to enable it will result in no input for the player and no autoplay, which will result in a stage fail.\nPlayerOptions format: PlayerAutoPlay(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: PlayerAutoPlay(1, 1)\nPassmark Desc: Set what life amount is required to pass a stage. Cannot be set through modstrings.\nQuirks: N/A\nPlayerOptions format: Passmark(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Passmark(0.5, 2)\nMuteOnError Desc: When active, keysounds will not play upon errors (letting go hold notes and/or missing).\nQuirks: N/A\nPlayerOptions format: MuteOnError(\u0026lt;enable\u0026gt;)\nExample: MuteOnError(true)\nModstring format: \u0026lt;enable\u0026gt; muteonerror\nExample: muteonerror\nFailSetting Desc: Set how failing a song works. There are four drain types (denoted as \u0026lt;type\u0026gt;):\nImmediate (Song ends the moment you fail) Modstring forms are \u0026ldquo;failimmediate\u0026rdquo; and \u0026ldquo;failarcade\u0026rdquo;. ImmediateContinue (Song continues after failure, but you still fail at the end) Modstring forms are \u0026ldquo;failendofsong\u0026rdquo; and \u0026ldquo;failimmediatecontinue\u0026rdquo;. EndOfSong (Failure status is determined at the end of the song) Modstring form is \u0026ldquo;failatend\u0026rdquo;. Off (You cannot fail.) Modstring form is \u0026ldquo;failoff\u0026rdquo;. The default can be set in modstrings through \u0026ldquo;faildefault\u0026rdquo;\nQuirks: N/A\nPlayerOptions format: FailSetting(\u0026lsquo;FailType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: FailSetting('FailType_Off')\nModstring format: \u0026lt;type\u0026gt;\nExample: failoff\n","description":"These modifiers don\u0026rsquo;t really fit into any of the above categories, so they\u0026rsquo;re here instead.\n\u0026ldquo;clearall\u0026rdquo; Desc: Tells PlayerOptions to do a reset. Often used in modfiles to mimic crs-style resetting. Only available in modstring form right now.\nQuirks: N/A\nModstring format: clearall\nHoldGrainMult Desc: Adds a multiplier to the \u0026lsquo;step size\u0026rsquo; of holds, allowing one to control how \u0026lsquo;granular\u0026rsquo; a hold is. In NotITG, this is known as \u0026ldquo;granulate\u0026rdquo; or \u0026ldquo;grain\u0026rdquo; (alias)."},{"id":130,"href":"/dev/theming/Theming-Scripts/","title":"Scripts","parent":"Introduction to theming","content":"Introduced in StepMania 3.95, Scripts are Lua files that are loaded globally to the engine. These are always available to use, from anywhere in the theme. However, it is advised to use these sparingly to avoid unnecesary carry over of data, overlapping variable names with other existing Lua naming scopes, and others.\nIt is recommended practice to ensure script data is kept to a minimum to avoid collision with objects like song data, scores, player data, mods, profile information, song rates, and others.\nAn example of a script file can be the following:\nMyGlobalObject = {} -- Add some objets to this variable. MyGlobalObject.CustomFunction = function( val ) SCREENMAN:SystemMessage( \u0026#34;I\u0026#39;ve just recieved \u0026#34;.. val ) end Usage example:\nreturn Def.Actor{ OnCommand=function(self) -- Notice how this object is called, but there\u0026#39;s no presence of MyGlobalObject on this actor or even -- the file at all; given it\u0026#39;s loaded into memory. MyGlobalObject.CustomFunction( \u0026#34;a custom string!\u0026#34; ) end } Clearing an object As mentioned on the introduction, it is advised to keep this at a minimum, and also to clean these objects when not in use anymore.\n-- Let\u0026#39;s say MyGlobalObject is filled to the brim with number objects. MyGlobalObject = { 0.41534, 0.23452342, 0.23452342, ... } -- to clean the object, just reasign the value back to an empty table. MyGlobalObject = {} ","description":"Introduced in StepMania 3.95, Scripts are Lua files that are loaded globally to the engine. These are always available to use, from anywhere in the theme. However, it is advised to use these sparingly to avoid unnecesary carry over of data, overlapping variable names with other existing Lua naming scopes, and others.\nIt is recommended practice to ensure script data is kept to a minimum to avoid collision with objects like song data, scores, player data, mods, profile information, song rates, and others."},{"id":131,"href":"/dev/translation/","title":"Translation","parent":"Developers and Creators","content":"Are you translating a theme to another language? Reading this might help you.\nWhere are language files stored Inside every theme, there\u0026rsquo;ll be a Languages folder. Inside that folder is where language files are stored. Example:\nLanguages/ en.ini ja.ini Here we can see 2 language files: en for English and ja for Japanese. It\u0026rsquo;s a standard to name language files in that format (language-COUNTRY.ini). For example: In this case, there\u0026rsquo;s a Portuguese translation, but since there\u0026rsquo;s also Portuguese from Portugal, the file was named pt-BR (BR = Brazil).\nFallback You probably already noticed a _fallback theme in the themes folder, but in case you didn\u0026rsquo;t: it\u0026rsquo;s where things that are necessary for every theme gets stored, so when someone is making a theme the game doesn\u0026rsquo;t blow up. The same goes for Languages: it\u0026rsquo;s important to also translate the fallback for your language because the theme you\u0026rsquo;re translating might not have every string that it uses on its folder.\nStarting a translation To start your work, create a new file for your language(-COUNTRY, if needed), and don\u0026rsquo;t forget to use the .ini extension. You can do this on Notepad with no problem but it\u0026rsquo;s recommended to use an editor like Visual Studio Code or Notepad++.\nNow open en.ini and your new language file, then copy all the content from en.ini to your language file. You can close en.ini now.\nLanguage file name standard The language code used for your language file should follow ISO-1 Language codes, while the COUNTRY CODE should follow ISO 3166-1 Alpha-2 code.\n⚠️ StepMania Engine doesn\u0026rsquo;t have proper support for more than 2 letters language files: Both StepMania and OutFox, as the date of writting this document, do not follow ISO-1 and ISO 3166-1 standards, however, new languages should not abide by non-standards of StepMania Engine quirks. Your language will still be able to be selected and used, however, instead of showing the Language name, it will show the language code and users won\u0026rsquo;t have the game auto-select the language for them. This will later be fixed at least for OutFox, following this issue.\nWhat you should translate This is a code example taken from the Soundwaves theme.\n[Common] WindowTitle=Project OutFox StepMania=Project OutFox # Dedicated Character Display strings ModelLoadError=Model for %s (%s) Has a invalid model. Please check if the model.txt file is correctly named and formatted. ModelAnimLoadError=An animation file for %s\u0026#39;s model (%s) is invalid or non-existant. Please check the animation folders and see if there\u0026#39;s any file missing. LocationLoadError=Current Location (%s) is missing its location model. Please check if the model.txt file is correctly named and formatted. SongLoaderSingleSong=Random Song Play: Current Folder only contains 1 song. OutFox might get confused when picking the song via random. Selecting to index 1. SongLoaderNoSongs=Random Song Play: No songs were found in your OutFox install folder! Switching back to fallback music. Do not translate WindowTitle or StepMania keys. Do not translate the name \u0026ldquo;Project OutFox\u0026rdquo;.\nYou can see on this image and your file that every line has a Title=Value, and that\u0026rsquo;s how translation works on OutFox, you need to translate the value of the titles and you\u0026rsquo;re done. The theme does all the work of what string it should use.\nNow, you can\u0026rsquo;t just translate everything that you see. On ModelLoadError for example, there\u0026rsquo;s a \u0026ldquo;%s\u0026rdquo; that means the theme or the game will put a string replacing that %s.\nAn example of that can be seen on the string %d Song Played that you\u0026rsquo;ll see on the next image.\n[Screen] HelpText=\u0026amp;BACK; Exit \u0026amp;START; Select \u0026amp;SELECT; Options \u0026amp;MENULEFT;\u0026amp;MENURIGHT;\u0026amp;MENUUP;\u0026amp;MENUDOWN; Move [ScreenWithMenuElements] HelpText=\u0026amp;BACK; Exit \u0026amp;START; Select \u0026amp;MENULEFT;\u0026amp;MENURIGHT; Move StageCounter=%s Stage EventStageCounter=Song %i You\u0026rsquo;ll also see lines like \u0026amp;START;, \u0026amp;SELECT; etc. They\u0026rsquo;re buttons that will be replaced once the game draws that string. Let\u0026rsquo;s see one of those strings in action?\n[ScreenSelectProfile] SingularSongPlayed=%d Song Played SeveralSongsPlayed=%d Songs Played PressStart=Press \u0026amp;START; to join. Here we can see that \u0026amp;START; gets replaced by a green square that represents the start button, and %d gets replaced by a number that\u0026rsquo;s how many songs that profile played.\nAnother special string is \\n. It creates a line break. For example, First Line\\nSecondLine would result in:\nFirst Line\nSecond Line\nHere\u0026rsquo;s an example in action from _fallback/en.ini:\nText Context You might also want to translate the theme in a way that someone who has never played before will understand, instead of expecting everyone to already know what everything is. A new player might not understand what \u0026ldquo;holds\u0026rdquo; means if that word is translated to your language, but if it was kept as \u0026ldquo;holds\u0026rdquo; the user would know that it\u0026rsquo;s the literal name of the thing and not something that should make sense in your language.\nAnother hard example is steps: in OutFox, there are 2 kinds of steps. The ones that you press in gameplay and the steps of the chart made by the author (easy steps, hard steps\u0026hellip;). In English, it\u0026rsquo;s easy to only say steps because it makes sense for both, but that isn\u0026rsquo;t the case with every language. That\u0026rsquo;s why it was decided to keep it named \u0026ldquo;steps\u0026rdquo; for the pt-BR translation of Soundwaves, for example.\nCommunity Translations for Soundwaves (OutFox default until Alpha V) Many folks are already helping translate the new Soundwaves theme for various languages. As requested by one of our translators, we\u0026rsquo;ll mention those projects below to give them some visibility and encourage more people to join and help.\n° Polish - Done by Moneko\n° Japanese - Done by はぬべき(hanubeki)\n° Portuguese-Brazilian - Done by zerinho6, SHRMP0 and SheepyChris\n° German - Done by DanielRotwind\n° Hebrew - Done by Snil4\n° French - Done by Ksempac and Kaede573\n° Español - Done by JoseVarelaP\n° Hungarian - Done by KaZo75\n° Italian - Done by Gabrimax\n° Simplified Chinese - Done by jerrymyx\n° Slovak - Done by jose1711\nTools and Practices Translating can be tedious. Sometimes it\u0026rsquo;s hard to locate \u0026amp; remove lines that shouldn\u0026rsquo;t be there or find missing ones. Because of that, translators themselves create tools to make our job easier and faster.\nTranslation Toolkit Translation Toolkit is a tool made by Ksempac to help remove lines that are not needed anymore, warn about lines that are missing, check your progress, etc. It supports Linux, Mac, and Windows.\nThis project is intended as a small application to automate some tasks for translators.\nIt is able to parse, analyze and fix the OutFox translation files.\nStepmania-TranslatorViewMaker Stepmania-TranslatorViewMaker is a tool made by Snil4. It supports any OS that has Python 3 installed.\nHave you ever tried to translate a program like OutFox and wondered \u0026ldquo;Hmm, now where can I find that line in the .ini?\u0026rdquo; Now there\u0026rsquo;s no need to wonder! This program will make a translator view file for your translation .ini and make your translation job easier.\nfini fini is a tool made by moruzerinho6\nAdds a extra build process where you can additional features that are not available on default ini file. Use:\n\u0026ldquo;Fini-\u0026rdquo; lines that allow you to specify another file to load it and expert a section/line/value from it. You can separate whole screens to specific files and only merger then together when building. You can make many lines depend on a specific file line, meaning you\u0026rsquo;ll later only need to change that file and effect many others. RTL variable to reverse the text only after you build the files. Any valid ini file is supported, meaning you don\u0026rsquo;t have to remake all your previous work Best practices Be constant with your words When doing a mention of \u0026ldquo;Steps\u0026rdquo;, ask yourself: is it clear which \u0026ldquo;type of Steps\u0026rdquo; you\u0026rsquo;re referring to? We have the following \u0026ldquo;types of steps\u0026rdquo;:\nSteps, which means the notes inside of the chart or the note count. StepDifficulty, which means the difficulty selected of the chart, such as Novice, Expert, Hard. Step, which means the action of stepping in the pad or a single note. StepType, which means the quantization (timing/color) of the note (e.g. 4th = red, an entire beat; 8th = blue, half a beat; etc). Soundwaves does not have this issue as it says \u0026ldquo;Taps\u0026rdquo; instead of Steps and directly says the difficulty.\nReload translations Imagine you\u0026rsquo;re editing the Soundwaves ScreenCaution and want to see how the translated string looks. You don\u0026rsquo;t need to restart the entire game to see the changes, here\u0026rsquo;s what you should do instead: Exit the screen you just translated, reload the metrics (Shift + Insert; or Shift + F2 on older alpha versions) and enter the screen again.\nSome themes might have a problem where not all strings are updated when metrics are reloaded due to how they are made. In that case, unfortunately, the only option is to restart the game.\nOutFox Releases Now that you have translated the latest alpha, you need to send it to OutFox somehow. This tutorial explains how you can do it!\nThe first thing to keep in mind is that each OutFox translation is hosted inside Tiny-Foxes to easily maintain and keep track of updates, so contact Team Rizu through any of their available social media profiles to get invited into Tiny-Foxes.\nIt is also required to know how git and Github work.\nThe exact steps are:\nCreate a Github account Download and learn basic git commands such as (git status, git push, git pull, git commit and git checkout) Learn how GitHub organization works. Having an editor such as Visual Studio Code will make git interactions way easier as those commands are available by the interface.\nRepository OutFox translation repositories adhere to a standard style. The repository title should be:\n\u0026ldquo;OutFox-[languageFileName[-COUNTRY]]\u0026rdquo;\n\u0026quot;-COUNTRY\u0026quot; should only be added in special cases (example: there\u0026rsquo;s Portuguese from Portugal and Brazilian Portuguese, so the Portuguese-Brazilian language file is \u0026ldquo;pt-BR.ini\u0026rdquo;).\nThe description of the repository should be:\n\u0026ldquo;[Language Name] ([languageFileName]) Translation for Project OutFox\u0026rdquo;\u0026quot;\nHere\u0026rsquo;s an example:\nOutFox-ja Japanese (ja) Translation for Project OutFox Repository Format The repository should have 2 folders: \u0026ldquo;_fallback\u0026rdquo; and \u0026ldquo;default\u0026rdquo;. Inside the _fallback will be the _fallback translation and default translation inside the default folder.\nOnly the translation file is required to be inside the folders/repository.\nKeep track It\u0026rsquo;s recommended that you include the version that the translation is targeting inside the files. Here\u0026rsquo;s an example:\n# Version: 4.9.7 Alpha [Common] WindowTitle=Project OutFox StepMania=OutFox Submitting to OutFox So you finished the translation for this alpha before the release? You can then commit directly to master OR make a Pull Request with your files to OutFox-Translations so Jose_Varela includes them in the next alpha release.\nThis all assumes that you\u0026rsquo;re already a member of Tiny-Foxes and the translator team.\nWebmasters Project Webmasters is an internal OutFox initiative to translate OutFox Website. Being a webmaster means:\nPartial access to the website backend to implement your translation files; Closer contact with the OutFox Community team for quick updates and help; Having a special role in our Discord Server. The requirements to join Webmasters are having previous experience as a long-term OutFox translator, being a Discord Server member, and receiving a special invitation from the OutFox Team.\nWritten and Maintained by Moru Zerinho6\n","description":"Are you translating a theme to another language? Reading this might help you.\nWhere are language files stored Inside every theme, there\u0026rsquo;ll be a Languages folder. Inside that folder is where language files are stored. Example:\nLanguages/ en.ini ja.ini Here we can see 2 language files: en for English and ja for Japanese. It\u0026rsquo;s a standard to name language files in that format (language-COUNTRY.ini). For example: In this case, there\u0026rsquo;s a Portuguese translation, but since there\u0026rsquo;s also Portuguese from Portugal, the file was named pt-BR (BR = Brazil)."},{"id":132,"href":"/dev/actors/ActorsLua-Tweening/","title":"Tweening","parent":"Lua and Actors","content":"Actors have the ability to transition from point A to point B using Tweening.\nIt allows for queueing up movements \u0026amp; transitions on position, size, color and other attributes as well as commands and messages.\nQueueing-style tweens These help with queueing actions after a certain amount of time.\nSleep The actor waits for a given amount of seconds before performing the next command.\nhibernate Like sleep, but the actor is also hidden for the duration of the hibernate.\nTween manipulation These functions manipulate the flow of the tweening\nstoptweening finishtweening hurrytweening SM3.95-era tweens These tweens are what most people would be familiar to those who work with ITG and SM3.95\nlinear The actor transitions at a constant rate.\naccelerate decelerate bouncebegin It\u0026rsquo;s done in Lua in SM5 for some reason.\nbounceend It\u0026rsquo;s done in Lua in SM5 for some reason.\nspring tween (NotITG only) Takes a string that references a global function\nSM5-era tweens These tween functions were added in SM5.\n\u0026ldquo;ease\u0026rdquo; smooth drop bezier A 2D or 3D bezier curve can be passed into the function to allow for extra tweening options.\nOutFox-era tweens OutFox added all of the standard easing functions. All of these are prefixed with ease and in/out/inout\nsine in: easeinsine, out: easeoutsine, inOut: easeinoutsine\nquad in: easeinquad, out: easeoutquad, inOut: easeinoutquad\ncubic in: easeincubic, out: easeoutcubic, inOut: easeinoutcubic\nquart in: easeinquart, out: easeoutquart, inOut: easeinoutquart\nquint in: easeinquint, out: easeoutquint, inOut: easeinoutquint\nexpo in: easeinexpo, out: easeoutexpo, inOut: easeinoutexpo\nback in: easeinback, out: easeoutback, inOut: easeinoutback\ncircle in: easeincircle, out: easeoutcircle, inOut: easeinoutcircle\nelastic in: easeinelastic, out: easeoutelastic, inOut: easeinoutelastic\nbounce in: easeinbounce, out: easeoutbounce, inOut: easeinoutbounce\n","description":"Actors have the ability to transition from point A to point B using Tweening.\nIt allows for queueing up movements \u0026amp; transitions on position, size, color and other attributes as well as commands and messages.\nQueueing-style tweens These help with queueing actions after a certain amount of time.\nSleep The actor waits for a given amount of seconds before performing the next command.\nhibernate Like sleep, but the actor is also hidden for the duration of the hibernate."},{"id":133,"href":"/dev/actors/Converting-ini-to-Lua/","title":"Converting INI files to Lua","parent":"Lua and Actors","content":" Converting BGAnimation INI files into lua files. StepMania 3.9 \u0026amp; ITG are capable of using BGAnimation.ini files to define actors in place of xml files.\nIn StepMania 5, these have to be converted into .lua files instead.\nGeneral Layout of a BGAnimation.ini file. [BGAnimation] [Layer2] File=path/to/a/different_file.png InitCommand=zoomx,3;zoomy,4;diffuse,1,0,0,0 OnCommand=diffusealpha,0;linear,3;diffusealpha,1 CommandRepeatSeconds=20 [Layer3] File=Common Normal Text=Help Me InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,-100 [Layer1] File=path/to/a/file InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,100 Here, layers are defined with the section name of Layer, followed by numbers or letters.\nThey are sorted by the characters used after Layer (so Layer1 comes before Layer2, even if Layer2 was placed first.)\nThe actual actor type has to be inferred from the path given in File. (Often, it\u0026rsquo;s a Sprite)\nCommands are done in command format.\nCreating the .lua equivalent. The entire ini can be expressed as a single ActorFrame. In this example, both are sprites, and they have to be sorted manually.\nCommandRepeatSeconds isn\u0026rsquo;t a feature in lua actors, so it has to be replicated with queuecommand and sleep. (It would loop the OnCommand every given amount of seconds)\nThe commands have to be converted into function format as well.\nreturn Def.ActorFrame{ Def.Sprite{ Name=\u0026#34;Layer1\u0026#34;, InitCommand= function(self) self:diffusealpha(0.5) end, OnCommand= function(self) self:spin():effectmagnitude(0,0,100) end, }, Def.Sprite{ Name=\u0026#34;Layer2\u0026#34;, InitCommand= function(self) self:zoomx(3):zoomy(4):diffuse(1,0,0,0) end, OnCommand= function(self) self:diffusealpha(0):linear(3):diffusealpha(1):sleep(20-3):queuecommand(\u0026#34;On\u0026#34;) end, }, Def.BitmapText{ File=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Help Me\u0026#34;. InitCommand= function(self) self:diffusealpha(0.5) end, OnCommand= function(self) self:spin():effectmagnitude(0,0,-100) end, }, } Other ini-style files (.sprite, .model) Older SM also has alternate files that follow the ini format to define other actor types.\n.sprite files have an extra set of attributes for defining frames.\nFrame0000=0 Delay0000=0.25 Frame0001=4 Delay0001=0.25 Frame0002=2 Delay0002=0.25 Frame0003=1 Delay0003=0.25 Frame0004=3 Delay0004=0.25 These can be turned into Frames tables for a Def.Sprite.\nFrames= { {Frame= 0, Delay= 0.25}, {Frame= 4, Delay= 0.25}, {Frame= 2, Delay= 0.25}, {Frame= 1, Delay= 0.25}, {Frame= 3, Delay= 0.25}, } If all frames from the animation are the same and in order, you can use the Sprite.LinearFrames function helper to alieviate the amount of lines. -- This will tell the function to create a frame table that goes through -- 5 frames within 1 second. Frames = Sprite.LinearFrames( 5, 1 ) .model files have extra attributes to define bones, meshes and materials. These translate almost-1:1 into lua.\n[Model] Meshes=arrowmesh.txt Materials=4th.txt Bones=arrowmesh.txt becomes\nDef.Model{ Meshes=\u0026#34;arrowmesh.txt\u0026#34;, Materials=\u0026#34;4th.txt\u0026#34;, Bones=\u0026#34;arrowmesh.txt\u0026#34; } ","description":"Converting BGAnimation INI files into lua files. StepMania 3.9 \u0026amp; ITG are capable of using BGAnimation.ini files to define actors in place of xml files.\nIn StepMania 5, these have to be converted into .lua files instead.\nGeneral Layout of a BGAnimation.ini file. [BGAnimation] [Layer2] File=path/to/a/different_file.png InitCommand=zoomx,3;zoomy,4;diffuse,1,0,0,0 OnCommand=diffusealpha,0;linear,3;diffusealpha,1 CommandRepeatSeconds=20 [Layer3] File=Common Normal Text=Help Me InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,-100 [Layer1] File=path/to/a/file InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,100 Here, layers are defined with the section name of Layer, followed by numbers or letters."},{"id":134,"href":"/dev/theming/Theming-Custom-Input/","title":"Custom Input","parent":"Introduction to theming","content":"OutFox allows custom input to be managed by the theme itself. This allows you full sandboxed control of the game for the purposes of the theme.\nImplementing Input Module method (OutFox Alpha 4 and onwards) More direct method (Works on legacy versions of SM5) Anatomy of the event variable The Device Input Table Understanding Press Events Mouse Input General Recommendations Remove the callback when leaving the screen Implementing Input There are a few ways to implement input, but the general action is to call Screen:AddInputCallback( input function ) to the ActorFrame responsible for the input. This can be either a function or a module that will deal with listening and sending instructions back to the engine, that actors can then pick up to provide feedback.\nModule method (OutFox Alpha 4 and onwards) -- In the actorframe, we just call the module to handle the input. return Def.ActorFrame{ OnCommand = function(self) -- The module needs the actor handle itself to send commands back to it, so we give `self` as the -- argument. SCREENMAN:GetTopScreen():AddInputCallback( LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) ) end, -- With this, the actorframe is now responsible for handling input and sending it to others. StartCommand = function(self) SCREENMAN:SystemMessage(\u0026#34;I have pressed START!\u0026#34;) end } More direct method (Works on legacy versions of SM5) -- This function will deal with a simple input set. -- Let\u0026#39;s make the input send a message when we press the player\u0026#39;s assignated Start button. -- event is sent over from InputCallback, and contains all the information needed to obtain input. local function myCustomInput(event) -- First, let\u0026#39;s verify that the input is being performed when pressing. -- There are three modes of input, which will be explain later in this chapter. if event.type == \u0026#34;InputEventType_FirstPress\u0026#34; then -- Ok, we have pressed the button once. Time to detect what button was pressed. if event.GameButton == \u0026#34;Start\u0026#34; then SCREENMAN:SystemMessage(\u0026#34;I have pressed START!\u0026#34;) end end end -- On this actorframe, we\u0026#39;ll load the function. return Def.ActorFrame{ OnCommand = function(self) -- In this case, the function itself is now responsible of handling input and sending results to others. SCREENMAN:GetTopScreen():AddInputCallback( myCustomInput ) end } Anatomy of the event variable When recieving input, you will be given a table by the name of event. It gives you base elements, which contain all the information you need to determine what the user has performed to then report back to the theme.\nName Returns Description controller string The GameController the event was mapped to, which will depend on what controller was the input mapped to. Will return nil if the button is not mapped to any controller. button string The semi-raw button that was pressed. This is what the button was mapped to by the keymap settings, but without the conversions that occur when OnlyDedicatedMenuButtons is true. Will be empty if the button was not mapped. type string The type of event. For more information, go to Understanding Press Events. GameButton string The cooked button that was pressed. This is applied with mapping that occurs when OnlyDedicatedMenuButtons is true applied. This is nil for unmapped buttons. PlayerNumber PlayerNumber The player that the input is mapped to. Can be nil if its not on either player. MultiPlayer MultiPlayer A MultiPlayer enumerator that is mapped to the input, can be used on MultiPlayer matches, can be nil if the input is not mapped to any MultiPlayer. Do not confuse this to PlayerNumber. The Device Input Table Inside this table, is another table called DeviceInput (can be accessed from event.DeviceInput), which are the raw details on the InputEvent the player has performed, which give the device the event has been performed on, the button that was pressed, if its still pressed, how long ago was the button pressed, a Z level counter for mouse input devices, as well as checks for joystick and mouse.\nName Returns Description device string Type of the device, which will start with \u0026quot;Device_\u0026quot;, and then followed with a InputDeviceNames entry. button string The button that was pressed, which will start with \u0026quot;DeviceButton_\u0026quot;, and then followed with the key correspondant on the device. level float A floating point value for analog input. z float A floating point value for determining what level is the mousewheel at. down bool Determines if the button is down. This is a combination of level with a threshold. and debouncing applied. ago float How long ago this input occurred, in seconds. is_joystick bool Checks if the device is a joystick. is_mouse bool Checks if the device is a mouse. Understanding Press Events When calling an input, you have event.type, which is the moment where the button has been pressed, and contains three states:\ngraph TB A[\"InputEventType_FirstPress\n(When pressing the button for the first time)\"]:::Transition --\u003e B[\"InputEventType_Repeat\n(When holding the button)\"]:::Transition --\u003e C[\"InputEventType_Release\n(When lifting the button from being pressed)\"]:::Transition; The repeat rate for InputEventType_Repeat is dependant on the current screen\u0026rsquo;s RepeatRate metric, which determines how fast the input will be repeated every second. In order to filter what kind of input you want for specific actions, just include them in a if conditional check.\n-- Let\u0026#39;s say I want my start press to increase a variable and report it, -- but also increase it while holding the button, but not when lifting it. -- Initialize the variable to use as the counter. local count = 0 local function myCustomInput(event) -- In this case, we\u0026#39;ll check that the input is NOT Release, because that\u0026#39;s the only InputEventType -- that we don\u0026#39;t want verified on this check. if event.type ~= \u0026#34;InputEventType_Release\u0026#34; then -- Ok, we have pressed the button. time to count and report! if event.GameButton == \u0026#34;Start\u0026#34; then count = count + 1 SCREENMAN:SystemMessage(\u0026#34;The counter is now \u0026#34;.. count) end end end -- Now let\u0026#39;s load the function to the actorframe. return Def.ActorFrame{ OnCommand = function(self) SCREENMAN:GetTopScreen():AddInputCallback( myCustomInput ) end } Mouse Input Mouse input is supported on OutFox and earlier releases of SM5 via a MessageCommand system that determines which button was pressed to perform actions.\nMessage Name Segment of Mouse MouseLeftClick Left Mouse Click MouseRightClick Right Mouse Click MouseMiddleClick Middle Mouse Click MouseThumb1 Additional Mouse Click 1 MouseThumb2 Additional Mouse Click 2 MouseWheelUp Mouse Wheel Up MouseWheelDown Mouse Wheel Down -- Example script to show a message when the left click of the mouse is pressed. MouseLeftClickMessageCommand = function(self) SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click!\u0026#34;) end Starting on OutFox Alpha 4.9.7GG, these MessageCommands now contain an argument to determine if the mouse click was lifted or not. -- Example script to show a message when the left click of the mouse is pressed. MouseLeftClickMessageCommand = function(self,param) if param.IsPressed then SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click being pressed!\u0026#34;) else SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click being lifted!\u0026#34;) end end General Recommendations Remove the callback when leaving the screen Upon adding the callback into the screen, it will be stored in memory for input to be processed, but won\u0026rsquo;t be cleared when leaving, which can cause input problems on the long run in the session.\n-- Using the manual function method OffCommand = function(self) -- To remove it, just call the same function that was used to control the screen. SCREENMAN:GetTopScreen():RemoveInputCallback( myCustomInput ) end -- Using the InputSystem module -- Before anything, set the function inside the actor itself. OnCommand = function(self) self.callback = LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) SCREENMAN:GetTopScreen():AddInputCallback( self.callback ) end, -- And now, when leaving, it will have the right actor to remove. OffCommmand = function(self) SCREENMAN:GetTopScreen():RemoveInputCallback( self.callback ) end ","description":"OutFox allows custom input to be managed by the theme itself. This allows you full sandboxed control of the game for the purposes of the theme.\nImplementing Input Module method (OutFox Alpha 4 and onwards) More direct method (Works on legacy versions of SM5) Anatomy of the event variable The Device Input Table Understanding Press Events Mouse Input General Recommendations Remove the callback when leaving the screen Implementing Input There are a few ways to implement input, but the general action is to call Screen:AddInputCallback( input function ) to the ActorFrame responsible for the input."},{"id":135,"href":"/dev/theming/Theming-Modules/","title":"Modules","parent":"Introduction to theming","content":"Introduced in OutFox Alpha 4, Modules are Lua files that provide snippet-like functions, tables, and metatables that can be quickly used and unloaded from memory when done. These can be loaded by using the LoadModule function. Depending on the return methodology from the module, it can be called in several ways.\nGiven the loading nature of modules, it is not recommended to use LoadModule directly if the function that will load it is called too quickly (like calling the module inside of a JudgmentMessageCommand), specially with modules that require file loading/saving. For that, it is recommended to cache the value returned by the module to then use.\n-- An example: caching the result from the Load Configuration module into a variable. local moduleResult = LoadModule(\u0026#34;Config.Load.lua\u0026#34;)(\u0026#34;ShowOffsetBar\u0026#34;,\u0026#34;OutFoxPrefs.ini\u0026#34;) If the module gives a table:\nreturn { \u0026#34;objects!\u0026#34; } -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; ) If the module gives a function:\nreturn function(arguments) print( arguments ) end -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; )( arguments ) If the module needs a table:\nlocal function(requiredtable) for i = 1,#requiredtable do print( requiredtable[i] ) end end -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; ){ arguments } -- Or LoadModule( \u0026#34;MyModule.lua\u0026#34; )({ arguments }) If the module needs a string:\nreturn function(theString) print( \u0026#34;i\u0026#39;m printing \u0026#34;.. theString ) end LoadModule( \u0026#34;MyModule.lua\u0026#34; )\u0026#34;a string\u0026#34; -- This is technically valid syntax, but it\u0026#39;s not great for readability. -- Or LoadModule( \u0026#34;MyModule.lua\u0026#34; )( \u0026#34;a string\u0026#34; ) ","description":"Introduced in OutFox Alpha 4, Modules are Lua files that provide snippet-like functions, tables, and metatables that can be quickly used and unloaded from memory when done. These can be loaded by using the LoadModule function. Depending on the return methodology from the module, it can be called in several ways.\nGiven the loading nature of modules, it is not recommended to use LoadModule directly if the function that will load it is called too quickly (like calling the module inside of a JudgmentMessageCommand), specially with modules that require file loading/saving."},{"id":136,"href":"/user-guide/meta/serenity_user_profile/","title":"Serenity User Profile","parent":"Front Matter","content":" Select User:\nSelect an option Tags Resume Select user to view resume.\nMost Charted Song: Select User to View.\nMost Charted Mode: Select User to View\nSocials Song Submissions Graphic Submissions Chart Submission If you want a social add/removed from your profile then join the Project OutFox Discord Server and contact the moderator team.\nWant the data that we have stored for this profile? Click the button bellow and the JSON Object will be copied to your clipboard. (Tags not included!) Copy Data to Clipboard Written and Maintained by Moru Zerinho6\n","description":"Select User:\nSelect an option Tags Resume Select user to view resume.\nMost Charted Song: Select User to View.\nMost Charted Mode: Select User to View\nSocials Song Submissions Graphic Submissions Chart Submission If you want a social add/removed from your profile then join the Project OutFox Discord Server and contact the moderator team.\nWant the data that we have stored for this profile? Click the button bellow and the JSON Object will be copied to your clipboard."},{"id":137,"href":"/user-guide/meta/serenity_volume_resume/","title":"Serenity Volumes Resume","parent":"Front Matter","content":" This page requires JavaScript to work. Select Volume: Select an option Written and Maintained by Moru Zerinho6\n","description":"This page requires JavaScript to work. Select Volume: Select an option Written and Maintained by Moru Zerinho6"},{"id":138,"href":"/dev/theming/Theming-Sounds/","title":"Sounds","parent":"Introduction to theming","content":"Your theme can contain sounds, which are either sound effects or music that will play across screens or actions. You can find the difference between these items by looking at their file names. The structure goes as follows:\n[The name of the screen] [engine defined action / music / custom set controlled by lua] There are specific elements that are loaded by the engine to perform sound playback, for example, when moving up or down on a options menu, it will grab ScreenOptions prev/next for its sound effects. The hierarchy of screens applies here as well, so for example, if you have an options screen that wants to use custom sounds rather than the global sounds that other option menus will use on the same theme, just apply the name of the screen that will use those new sounds.\nConditional Music Originally introduced on SM-SSC, this feature allows for music to be defined by lua rather than a fixed audio file. This can be useful on situations where you want a screen to play different music files based on performance.\n-- Lets say that my fallback sound (the one that will play if anything fails) will be Sound1. local mySound = \u0026#34;Sound1\u0026#34; -- Now, let\u0026#39;s check for a condition that will update that variable if true. if GAMESTATE:IsEventMode() then -- If my current session is in event mode (no stage limit), then it will swap the value -- to Sound2, a different sound file. mySound = \u0026#34;Sound2\u0026#34; end -- And now, let\u0026#39;s return the result of the variable back to the engine. return THEME:GetPathS(\u0026#34;\u0026#34;,mySound) The value requested by this file is an absolute path, which is why THEME:GetPathS has been included, as it fills the path directory to the current theme\u0026rsquo;s Sounds folder. ","description":"Your theme can contain sounds, which are either sound effects or music that will play across screens or actions. You can find the difference between these items by looking at their file names. The structure goes as follows:\n[The name of the screen] [engine defined action / music / custom set controlled by lua] There are specific elements that are loaded by the engine to perform sound playback, for example, when moving up or down on a options menu, it will grab ScreenOptions prev/next for its sound effects."},{"id":139,"href":"/dev/actors/Converting-xml-to-Lua/","title":"Converting XML files to Lua","parent":"Lua and Actors","content":" Converting xml files into lua files. StepMania 3.95 \u0026amp; ITG use xml files for both themeing and effect scripting. It also allows embedding lua functions to perform more complex effects \u0026amp; scripting.\nIn StepMania 5, these have to be converted into .lua files instead.\nThe \u0026rsquo;easy way\u0026rsquo; of converting There are two semi-automatic ways to convert xml files into lua.\nStepMania 5\u0026rsquo;s built-in XML to LUA converter Converts positions to be based off of SCREEN_CENTER_X (which can result in some lost position information.) Condition attributes are turned into uses of a local function Commands are left in command format Misses commands in .sprite files Accessible from the debug menu Rearranges commands to be in alphabetical order XeroOl\u0026rsquo;s xmlconvert tool Requires some extra libraries on your system Does not touch positions Condition attributes are turned into ternary expressions Commands are turned into function format. performs a bit more work when dealing with modifier-related calls Sorts the actors to match what the xml tag sorting would do The result isn\u0026rsquo;t going to always work, but should do a good amount of the grunt-work needed.\nGeneral layout of an xml file. \u0026lt;ActorFrame\u0026gt; \u0026lt;children\u0026gt; \u0026lt;ZZZActor Type=\u0026#34;Quad\u0026#34; InitCommand=\u0026#34;hidden,1\u0026#34; OnCommand=\u0026#34;sleep,1000\u0026#34; /\u0026gt; \u0026lt;Special Type=\u0026#34;Sprite\u0026#34; File=\u0026#34;funny.png\u0026#34; OnCommand=\u0026#34;%function(self) SCREENMAN:SystemMessage(\u0026#39;hi\u0026#39;) end\u0026#34; /\u0026gt; \u0026lt;Sprite File=\u0026#34;circle\u0026#34; Condition=\u0026#34;GAMESTATE:IsHumanPlayer(0)\u0026#34; /\u0026gt; \u0026lt;/children\u0026gt; \u0026lt;/ActorFrame\u0026gt; Here, layers can have a name as well as a tag or Type. Either the tag name or the Type attribute defines what type of actor it is. If neither of these are given, the game would have to infer the actor type by itself.\nActorFrames have a children tag for holding their inner actors.\nUnlike .ini files, layers can have practically any name in the tag, instead of a required Layer prefix.\nThe layer sorting is somewhat like ini files, with the tag name being used to determine actor order. (This is separate from the Name attribute)\nFor example, the layer tagged as ZZZActor gets sorted to be after Special, even though it was written the other way around.\nCreating the .lua equivalent manually. return Def.ActorFrame{ -- Special -- Def.Sprite{ Texture=\u0026#34;funny.png\u0026#34;, OnCommand= function(self) SCREENMAN:SystemMessage(\u0026#39;hi\u0026#39;) end, }, -- Sprite -- GAMESTATE:IsHumanPlayer(PLAYER_1) and Def.Sprite{ Texture=\u0026#34;circle\u0026#34;, } or Def.Actor{}, -- ZZZActor -- Def.Quad{ Texture=\u0026#34;funny.png\u0026#34;, InitCommand=function(self) self:visible(false) end, OnCommand=function(self) self:sleep(1000) end, }, } Often, the main xml file is an ActorFrame, with the inner actors matching the layout of the xml after sorting.\nConditions can be turned into ternary expressions, though they now run at different times compared to the original xml file.\nJust like in ini files, commands have to be turned into function format.\nThe commands that are already in function format are mostly 1:1. The \u0026ldquo;% \u0026quot; that are around the functions must be removed.\n","description":"Converting xml files into lua files. StepMania 3.95 \u0026amp; ITG use xml files for both themeing and effect scripting. It also allows embedding lua functions to perform more complex effects \u0026amp; scripting.\nIn StepMania 5, these have to be converted into .lua files instead.\nThe \u0026rsquo;easy way\u0026rsquo; of converting There are two semi-automatic ways to convert xml files into lua.\nStepMania 5\u0026rsquo;s built-in XML to LUA converter Converts positions to be based off of SCREEN_CENTER_X (which can result in some lost position information."},{"id":140,"href":"/dev/actors/actortypes/actor/","title":"Actor","parent":"Actor Types","content":"This is the base that everything derives from. Whatever an Actor can do, everything else can as well. It can be useful for creating control variables without creating something visible on screen.\n-- Actors can be very useful as variable controllers since it does not perform any kind of -- overhead to the draw pipe. local Value = 2 Def.Actor{ InitCommand=function(self) Value = Value + 2 Trace(\u0026#34;My Value is now \u0026#34;.. Value) end } Attributes Name Type Description [Name]Command function The basis for any command. Check Commands for more information. Name string The name for the actor. Giving this a value allows this actor to be obtain by its name by any other actor. Check Obtaining Childs and ActorFrame Levels for more information. BaseRotationX number The base rotation for the X axis. Any rotation value is added ON TOP of this value. BaseRotationY number The base rotation for the Y axis. Any rotation value is added ON TOP of this value. BaseRotationZ number The base rotation for the Z axis. Any rotation value is added ON TOP of this value. BaseZoomX number The base zoom for the X axis. Any zoom value is added ON TOP of this value. BaseZoomY number The base zoom for the Y axis. Any zoom value is added ON TOP of this value. BaseZoomZ number The base zoom for the Z axis. Any zoom value is added ON TOP of this value. Table of Contents Anatomy of an Actor Obtaining Childs and ActorFrame Levels ","description":"This is the base that everything derives from. Whatever an Actor can do, everything else can as well. It can be useful for creating control variables without creating something visible on screen.\n-- Actors can be very useful as variable controllers since it does not perform any kind of -- overhead to the draw pipe. local Value = 2 Def.Actor{ InitCommand=function(self) Value = Value + 2 Trace(\u0026#34;My Value is now \u0026#34;."},{"id":141,"href":"/dev/actors/actortypes/actorframe/","title":"ActorFrame","parent":"Actor Types","content":"ActorFrames can hold other actors. The Def. format is set up like any other lua table, allowing for creating actors in batches. Because of this, there are multiple ways to build an ActorFrame.\nDef.ActorFrame{ -- This sprite is now included inside of the ActorFrame. -- Any changes from the ActorFrame will affect the sprite, such as position, rotation, -- zoom and such. Def.Sprite{} } Attributes Inline building Concatenation Method 1 (indexing) Method 2 (lua concatenation) Attributes Name Type Action UpdateRate number Defines the update rate for the actorframe to update. FOV number The Field of View value for the items inside of the ActorFrame. VanishX number Sets the X vanish for the ActorFrame. VanishY number Sets the X vanish for the ActorFrame. FarDistZ number Sets the Z draw distance for the ActorFrame. Lighting bool Enables lighting for the ActorFrame (unused). The following require Lighting to be enabled. However, only the ambient color seems to work. This bug has been present since sm-ssc. Name Type Action AmbientColor color Ambient coloring for the ActorFrame. DiffuseColor color Diffuse coloring for the ActorFrame. SpecularColor color Specular coloring for the ActorFrame. LightDirection {0,0,0} The direction of the lighting for the ActorFrame. This actor inherits attributes from Actor.\nInline building Actors can be explicitly placed into an ActorFrame like this:\nDef.ActorFrame{ Def.Actor{ --Commands and stuff go here. }, Def.Sprite{ --More commands and stuff go here. } } Concatenation Because lua tables can be concatenated (added) to each other, so can ActorFrames.\nThis can allow for programatically creating Actors in batches as needed.\nHowever, if one does not plan on creating Actors programmaticly, then a simple return Def.ActorFrame{... is all that\u0026rsquo;s needed. Storing it into a local variable that gets returned will waste resources.\nThere are two ways to add onto an ActorFrame.\nMethod 1 (indexing) local t = Def.ActorFrame{ Def.Sprite{ --commands \u0026amp; stuff }, Def.BitmapText{ --who even knows }, } t[#t+1] = Def.Actor{ --It\u0026#39;s the third actor } return t Method 2 (lua concatenation) return Def.ActorFrame{ Def.Sprite{ --commands \u0026amp; stuff }, Def.BitmapText{ --who even knows }, } .. Def.Actor{ --It\u0026#39;s the third actor } ","description":"ActorFrames can hold other actors. The Def. format is set up like any other lua table, allowing for creating actors in batches. Because of this, there are multiple ways to build an ActorFrame.\nDef.ActorFrame{ -- This sprite is now included inside of the ActorFrame. -- Any changes from the ActorFrame will affect the sprite, such as position, rotation, -- zoom and such. Def.Sprite{} } Attributes Inline building Concatenation Method 1 (indexing) Method 2 (lua concatenation) Attributes Name Type Action UpdateRate number Defines the update rate for the actorframe to update."},{"id":142,"href":"/dev/actors/actortypes/actorframetexture/","title":"ActorFrameTexture","parent":"Actor Types","content":"It’s like an ActorFrame, but instead of displaying what’s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its’ use in NotITG, although the behavior is different. NotITG’s version places the screen itself onto a texture instead of what’s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window.\nUsage Example This example will create an ActorFrameTexture that uses a sample BitmapText, and project it to the center to the screen in half of the available size of the viewport window.\n-- This ActorFrame will contain everything. local t = Def.ActorFrame{} -- First, create the ActorFrameTexture. local AFT = Def.ActorFrameTexture{ InitCommand = function(self) -- Start by adding a name to the texture. This is optional, but best to provide one, -- in case you need to work with several ActorFrameTextures in the same screen. self:SetTextureName( \u0026#34;MyAFT\u0026#34; ) -- Now we need to give the ActorFrameTexture a resolution, which will be -- how much is available to render. -- As this example will be half the size of the available screen, we\u0026#39;ll give the size -- half of the screen. self:SetWidth( SCREEN_WIDTH*.5 ):SetHeight( SCREEN_HEIGHT*.5 ) -- By default this option is disabled, but you can enable it to allow transparency -- in your ActorFrameTexture. -- In this case, it will disabled to show the available render area (shown as black) self:EnableAlphaBuffer( false ) -- We are done with the AFT, so now we have to create it. self:Create() end, -- After the initializer command, any actors included inside will be projected. -- The actors here act exactly the same as a ActorFrame, so they will start on the top-left -- corner of the available draw area given (in this case, half of the screen.) Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;Testing String!\u0026#34;, BeginCommand = function(self) self:zoom(2):spin() -- In order to see the texture, let\u0026#39;s center it. -- Calculations in actors inside of the AFT will need conversion as dimensions are -- different, so for example: -- Since we\u0026#39;re doing half of the screen for dimensions, to center it, we need to half -- that size as well. -- 1280 / 2 = 640 (Screen Size) -- 640 / 2 = 320 (Actor Position) -- 0 - 640 = 0 .. 1 (Size Area, using Screen Size) -- (320/640) = 0.5 (Point of Actor Position using above calculation) self:xy( SCREEN_WIDTH*.25, SCREEN_HEIGHT*.25 ) end } } t[#t+1] = AFT Now that we\u0026rsquo;ve created the ActorFrameTexture, it will be sent into a global texture, that we can then grab into a Sprite, and it can be done in two ways. These will be shown inside the OnCommand in the Sprite.\n-- Method 1: Load sprite directly into sprite. t[#t+1] = Def.Sprite{ -- Sprite name given inside the SetTextureName command in your AFT. Texture = \u0026#34;MyAFT\u0026#34;, -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } -- Method 2: Load sprite on demand on runtime. t[#t+1] = Def.Sprite{ -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) -- Sprite name given inside the SetTextureName command in your AFT. self:Load( \u0026#34;MyAFT\u0026#34; ) end } return t ","description":"It’s like an ActorFrame, but instead of displaying what’s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its’ use in NotITG, although the behavior is different. NotITG’s version places the screen itself onto a texture instead of what’s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window."},{"id":143,"href":"/dev/actors/actortypes/actormultivertex/","title":"ActorMultiVertex","parent":"Actor Types","content":" Setting a Draw State List of DrawModes Usage Examples DrawMode_Quad DrawMode_QuadStrip / DrawMode_Strip DrawMode_Fan DrawMode_Triangles DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points DrawMode_Lines Allows for arbitrary polygons to be created. Every vertex has a position on the xyz plane, a color formatted like diffuse values, and a uv coordinate for textures. In NotITG, this is known as \u0026ldquo;Polygon\u0026rdquo;, and the functions available are different, even though it achieves the same thing.\nreturn Def.ActorMultiVertex{ OnCommand=function(self) -- First, setup the kind of DrawMode is going to be performed. There are several kinds available. -- In this example, we\u0026#39;ll use Lines, to use a two point example. self:SetDrawState{ Mode=\u0026#34;Lines\u0026#34; } -- Time to generate the vertices that will become the vertex map. local vertices = { -- Data is inserted as the following: -- { { x, y, z }, Color, { TextureOffsetX, TextureOffsetY } } -- First table is the position of the vertex relative to the position of the ActorMultiVertex. -- Second table is the color that vertex will contain. -- Third table is optional for when you have a texture loaded into the AMV, and mapping is needed for the texture. -- Value goes from 0 to 1. -- Since no textures will be used in this example, the third table can be ignored. { {0, 0, 0}, Color.White }, { {15, 15, 0}, Color.Green } } -- Now with the vertices assigned, now it\u0026#39;s time to send them back to the AMV for it to generate them. self:SetVertices( vertices ) end } Vertices from the ActorMultiVertex can also be tweened to create animations. This must be done by modifying an existing vertice already assigned on the table, otherwise, it won\u0026rsquo;t be recognized and will just snap into the new position assigned.\n-- Let\u0026#39;s say this is your original vertex data, using Lines. -- This creates a line going from the topleft to bottom right by 15 pixels. local verts = { { {0, 0, 0}, Color.White }, { {15, 15, 0}, Color.Green } } -- Generate the verts so they can be rendered on screen. self:SetVertices(verts) -- Now let\u0026#39;s begin a transition using linear for 2 seconds. self:linear(2) -- Let\u0026#39;s modify the ending vertice so its Y position becomes the same as the starting vertex. -- There are two ways to modify vertex data here: -- METHOD 1: SetVertex. -- Simply call the SetVertex command that is available for ActorMultiVertex, and assign its new values. -- int index, table { table pos, table color, table textcoords } self:SetVertex( 2, { {15, 15, 0} } ) -- METHOD 2: Modifying the table itself. -- (This is recommended if you\u0026#39;re planning to modify a lot of points at the same time, or just need to modify a specific data type rather than the entire entry data) verts[2][1][2] = 0 --[[ Let\u0026#39;s analyze what\u0026#39;s going on here: verts[2]\tGo to the second entry on the verts table [1]\tGo to the first table of that entry, which contains the position of the vertex. [2]\tGo to the second value on that table, which is the Y position. ]] -- With this value now modified, generate the new set of vertices. self:SetVertices(verts) Setting a Draw State The SetDrawState function requires a table with parameters to determine the current state of the polygon being drawn. The following is the list of parameters. All of them are optional, but some of them are needed when initializing to draw a polygon on screen.\n-- Notice the curly braces here. That\u0026#39;s because this function expects a table, rather than typical variables. self:SetDrawState{ Mode=\u0026#34;DrawMode_Quad\u0026#34;, First=0, Num=-1 } -- It can also be inserted this way. self:SetDrawState({ Mode=\u0026#34;DrawMode_Quad\u0026#34;, First=0, Num=-1 }) For more information about how Lua handles functions, check out the Functions page. Name Description Mode Fetches the draw mode if provided, check List of DrawModes for a list of draw modes. First Which point will be the first to draw? Num How many polygons after First will be drawn? If set to -1 (default), it will be the rest of available polygons set. The First argument is 1-indexed, while the Num argument is not. List of DrawModes With an ActorMultiVertex, there are multiple kinds of Draw Modes that can be used to draw polygons on the screen. The following is a list of the modes currently available on OutFox (as of Alpha 4.18.1): These are assigned using the SetDrawMode command or via SetDrawState.\nFor written examples, please check Usage Examples.\nName Description Image Quads Draws a 4 point polygonal shape that is separated from any adjacent or subsequent point. QuadStrip Draws a 4 point polygonal shape that connects to the next adjacent point at the end. Fan Constructs an 8 polygonal shape that can be used to resemble a fan. Strip Suspiciously similar to DrawMode_QuadStrip. Triangles Draws a 3 point polygonal shape that is separated from any adjacent or subsequent point. LineStrip Draws a continous line based on the points given to the Polygon. Width of the line is scaled by the theme\u0026rsquo;s internal height, plus the manual value assigned. SymmetricQuadStrip todo todo The following are introduced for OutFox.\nName Description Image LineStripM Modern implementation of LineStrip. Outputs the work to the GPU to perform operations. Line width limits here are defined by the GPU. PolyLineStrip todo todo Points 1 vertex shapes, which are rendered by the GPU. Size can be defined using SetPointSize, and depends on the GPU. Lines A 2 point line that is separated on each group. Usage Examples The examples here provide how to insert points for the polygon related to each Draw Mode.\nDrawMode_Quad { {{0, 0, 0}, Color.Red}, {{0, 20, 0}, Color.Blue}, {{20, 20, 0}, Color.Green}, {{20, 0, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{40, 20, 0}, Color.Purple}, {{60, 20, 0}, Color.Black}, {{60, 0, 0}, Color.White}, } DrawMode_QuadStrip / DrawMode_Strip { {{0, 0, 0}, Color.Red}, {{0, 20, 0}, Color.Blue}, {{20, 0, 0}, Color.Green}, {{20, 20, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{40, 20, 0}, Color.Purple}, {{60, 0, 0}, Color.Black}, {{60, 20, 0}, Color.White}, } Take a moment to notice that Quad and QuadStrip, while similar in nature, have a different order. The graphics being DrawMode_Quad and DrawMode_QuadStrip respectively.\nDrawMode_Fan { {{0, 0, 0}, Color.Red}, {{0, -20, 0}, Color.Blue}, {{20, -20, 0}, Color.Green}, {{20, 0, 0}, Color.Yellow}, {{20, 20, 0}, Color.Orange}, {{0, 20, 0}, Color.Purple}, {{-20, 20, 0}, Color.Black}, {{-20, 0, 0}, Color.White}, } DrawMode_Triangles { {{0, 0, 0}, Color.Red}, {{10, -20, 0}, Color.Blue}, {{20, 0, 0}, Color.Green}, -- {{30, 0, 0}, Color.Yellow}, {{40, -20, 0}, Color.Orange}, {{50, 0, 0}, Color.Purple}, -- {{60, 20, 0}, Color.Black}, {{70, 0, 0}, Color.White}, {{80, 20, 0}, Color.Orange}, } DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points Take a moment to notice that LineStrip and Points, while similar in nature, have a different layout. The graphics being DrawMode_LineStrip and DrawMode_Points respectively.\n{ {{-40, -40, 0}, Color.Red}, -- {{0, -40, 0}, Color.Blue}, -- {{40, -40, 0}, Color.Green}, -- {{40, 0, 0}, Color.Yellow}, -- {{40, 40, 0}, Color.Orange}, -- {{0, 40, 0}, Color.Purple}, -- {{-40, 40, 0}, Color.Black}, -- {{-40, 0, 0}, Color.White}, } DrawMode_Lines { {{0, 0, 0}, Color.Red}, {{10, 0, 0}, Color.Blue}, -- {{20, 0, 0}, Color.Green}, {{30, 0, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{50, 0, 0}, Color.Purple}, -- {{60, 0, 0}, Color.Blue}, {{70, 0, 0}, Color.White}, -- {{80, 0, 0}, Color.Orange}, {{90, 0, 0}, Color.Orange}, } ","description":"Setting a Draw State List of DrawModes Usage Examples DrawMode_Quad DrawMode_QuadStrip / DrawMode_Strip DrawMode_Fan DrawMode_Triangles DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points DrawMode_Lines Allows for arbitrary polygons to be created. Every vertex has a position on the xyz plane, a color formatted like diffuse values, and a uv coordinate for textures. In NotITG, this is known as \u0026ldquo;Polygon\u0026rdquo;, and the functions available are different, even though it achieves the same thing."},{"id":144,"href":"/dev/actors/actortypes/actorproxy/","title":"ActorProxy","parent":"Actor Types","content":"An ActorProxy is an actor that allows rendering of other Actors without the need to create the logic for it again.\nDef.ActorProxy{ OnCommand=function(self) self:SetTarget( [target actor] ) end } Attributes Draw logic Functions SetTarget GetTarget Attributes There are no special attributes for this actor class.\nDraw logic As long as the target Actor is present, it will draw it. If it\u0026rsquo;s deleted during runtime, it will stop drawing.\nFunctions SetTarget (Actor targetActor)\nTells the ActorProxy to use targetActor as its draw target.\nGetTarget Returns the current actor this ActorProxy is currently rendering. Returns nil if no actor is assigned previously.\n","description":"An ActorProxy is an actor that allows rendering of other Actors without the need to create the logic for it again.\nDef.ActorProxy{ OnCommand=function(self) self:SetTarget( [target actor] ) end } Attributes Draw logic Functions SetTarget GetTarget Attributes There are no special attributes for this actor class.\nDraw logic As long as the target Actor is present, it will draw it. If it\u0026rsquo;s deleted during runtime, it will stop drawing.\nFunctions SetTarget (Actor targetActor)"},{"id":145,"href":"/dev/actors/actortypes/actorscroller/","title":"ActorScroller","parent":"Actor Types","content":"The Actorscroller is an ActorFrame that acts as a scroller, allowing for a selection-styled menu with choices and animations.\nDef.ActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Adding actors The direct method. The function method Transforming the Scroller Subdivisions Functions PositionItems SetTransformFromFunction SetTransformFromHeight SetTransformFromWidth SetCurrentAndDestinationItem SetDestinationItem GetSecondsToDestination SetSecondsPerItem SetSecondsPauseBetweenItems GetSecondsPauseBetweenItems SetPauseCountdownSeconds SetNumSubdivisions ScrollThroughAllItems ScrollWithPadding SetFastCatchup SetLoop SetWrap SetMask SetNumItemsToDraw GetFullScrollLengthSeconds GetCurrentItem GetDestinationItem GetNumItems Attributes Name Type Action NumItemsToDraw number How many items will be drawn at once on the ActorScroller. SecondsPerItem number How long will the scroller take before moving to the next item. TransformFunction function The function that positions every item in the ActorScroller. For more information, check Transforming the Scroller. Subdivisions number How many subdivisions should there be between each item? This allows for smoother movement for scrollers that contain any mathematical curve. UseMask bool Toggles a mask on the top and bottom of the ActorScroller. MaskHeight number Height of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. MaskWidth number Width of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. LoopScroller bool Loops the selection of the scroller to wrap around. WrapScroller bool Wraps the items of the scroller to attempt a seamless transition back. Adding actors To add actors to the ActorScroller, simply add them directly to the scroller, or using the children attribute for ActorFrame.\nThe direct method. local af = Def.ActorFrame{} af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 15, TransformFunction=function(self, offset, itemIndex, numItems) self:y( 10 * offset ) end, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 1\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 2\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 3\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 4\u0026#34; }, } return af The function method All actors being added via the children method have to be added to an ActorFrame wrapper, which will be included in this demonstration. local af = Def.ActorFrame{} local function generateItemsForScroller() -- When using the children attribute, the result of the function must -- be wrapped in an ActorFrame, which in this case is t. local t = Def.ActorFrame{} for i = 1,4 do t[#t+1] = Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item \u0026#34;.. i } end return t end af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 15, TransformFunction=function(self, offset, itemIndex, numItems) self:y( 10 * offset ) end, children = generateItemsForScroller() } return af Transforming the Scroller To perform a different scroll to the ActorScroller, the TransformFunction is used. This function provides 4 arguments:\nself (Actor): The actor in question. offset (number): The relative 0 offset of the current item. By this, it means that, if the value is 0, That\u0026rsquo;s the current item. Anything before or after is - 1 / + 1 respectively. itemIndex (number): The index of the current item to the entire list of items. numItems (number): The total amount of items currently available. For this example, let\u0026rsquo;s make a vertical scroller. When we say vertical, we mean that we want each item to scroll through the Y axis. So, taking that into consideration, we can end up with a function like this:\nTransformFunction=function(self, offset, itemIndex, numItems) -- We\u0026#39;re telling the game here that each item has a space -- of 60 vertical pixels between each item. self:y( 60 * offset ) end This next example let\u0026rsquo;s us create a circular scroller. This is by using cosine and sine functions.\nTransformFunction=function(self, offset, itemIndex, numItems) self:xy( math.cos(offset) * 150, math.sin(offset) * 150 ) end Here we\u0026rsquo;re telling the game to perform the operation on the X and Y axis, and they\u0026rsquo;re using cosine and sine respectively. These two values return a value of -1 to 1. By having these two values in sync with each other, we\u0026rsquo;re effectively creating a circunference, which in turns provides us with a circle.\nSubdivisions You may have noticed that while scrolling with this, it won\u0026rsquo;t scroll like a circle, and that\u0026rsquo;s because there aren\u0026rsquo;t that many items to scroll through to provide the motion. You could either add more items to fulfill the item criteria or use Subdivisions.\nThe general (very summarized) rule with subdivisions on the actor scroller is that it adds N amount of items in-between existing items to provide a smoother scroll when using functions.\nSubdivisions = 2 --[[ Item 1 -- -- Item 2 -- -- Item 3 ]] Example with full code ↕ local af = Def.ActorFrame{ InitCommand=function(self) self:Center() end } local function generateItemsForScroller() -- When using the children attribute, the result of the function must -- be wrapped in an ActorFrame, which in this case is t. local t = Def.ActorFrame{} for i = 1,20 do t[#t+1] = Def.ActorFrame{ Def.BitmapText{ Font=\"_eurostile normal\", Text=\"I am Item \".. i, } } end return t end af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 20, SecondsPerItem = 0.2, Subdivisions = 4, WrapScroller = true, LoopScroller = true, OnCommand=function(self) self:SetFastCatchup(true) -- For more information about this Input Controller, check \"Custom Input\". -- https://outfox.wiki/dev/theming/Theming-Custom-Input/ self.controller = LoadModule(\"Lua.InputSystem.lua\")(self) SCREENMAN:GetTopScreen():AddInputCallback(self.controller) end, OffCommand=function(self) SCREENMAN:GetTopScreen():RemoveInputCallback(self.controller) end, TransformFunction=function(self, offset, itemIndex, numItems) self:xy( math.cos(offset) * 150, math.sin(offset) * 150 ) -- Let's mark the current choice with the color green. if offset == 0 then self:diffuse(Color.Green) else self:diffuse(Color.Orange) end -- You can also interpret that if statement with a ternary method. -- self:diffuse( offset == 0 and Color.Green or Color.Orange ) end, children = generateItemsForScroller(), -- Let's add input to this scroller. MenuLeftCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() - 1 ) end, MenuRightCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() + 1 ) end } return af Functions PositionItems Forces all items to position themselves back into position. Useful if you happen to encounter a situation where the scroller doesn\u0026rsquo;t end exactly on the item you\u0026rsquo;ve selected.\nSetTransformFromFunction (function transformFunction)\nThe equivalent of the TransformFunction provided on the Attributes list. Allows you to add a new function in runtime, such as for example, converting the list from a vertical one to a horizontal one once the user has selected something.\nSetTransformFromHeight (number itemHeight)\nAn alias for SetTransformFromFunction that will convert the scroller to a vertical one.\nSetTransformFromWidth (number itemWidth)\nAn alias for SetTransformFromFunction that will convert the scroller to a horizontal one.\nSetCurrentAndDestinationItem (number index)\nTells the ActorScroller to set both Current and Destination to index. This can be useful if you want to move to the option index instantly.\nSetDestinationItem (number index)\nTells the scroller to move to index for its destination.\nGetSecondsToDestination Gives you a number indicating how long it will take before reaching the destination, which is the newly selected item.\nSetSecondsPerItem (number seconds)\nChanges the scroll length for each item.\nSetSecondsPauseBetweenItems (number seconds)\nChanges how long the scroller must wait while scrolling through an item.\nGetSecondsPauseBetweenItems Gets the amount of time the scroller must wait while scrolling through an item.\nSetPauseCountdownSeconds (number state)\nSet the amount of time to wait fully when pressing a button. This value works alongside SetSecondsPauseBetweenItems to calculate a pause time.\nSetNumSubdivisions (number numDivisions)\nSets the amount of Subdivisions for the scroller.\nScrollThroughAllItems Forces the scroll to scroll through all of the items present.\nScrollWithPadding (number beforeItems, number afterItems)\nMakes the scroller move automatically with a number of empty items to add at the start and end. You can use this to create credit sequences.\nSetFastCatchup (bool state)\nAccelerates the amount of time it takes to go from an item to another if it\u0026rsquo;s more than 1.\nFor example, let\u0026rsquo;s say you\u0026rsquo;re in position 1, and you want to go to 5. You have SecondsPerItem set to 1; so it would take a second to go through each item, totalling 5 seconds.\nWith SetFastCatchup, it will speed up based on how many items it needs to jump through to scroll roughly the same amount of time it takes to scroll to one.\nSetLoop (bool state) Toggles looping.\nSetWrap (bool state)\nToggles wrapping.\nSetMask (bool state)\nToggles the Mask.\nSetNumItemsToDraw (number numItems)\nChanges the value of items to draw at once.\nGetFullScrollLengthSeconds Returns the total amount of time it would take to do a full rotation of the entire scroller. This is counting all of the items and subdivisions with the amount of time set in per item (SecondsPerItem).\nGetCurrentItem Returns the currently selected item.\nGetDestinationItem Gets the item that the scroller is currently traveling to.\nGetNumItems Returns the number of items available on the ActorScroller.\n","description":"The Actorscroller is an ActorFrame that acts as a scroller, allowing for a selection-styled menu with choices and animations.\nDef.ActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Adding actors The direct method. The function method Transforming the Scroller Subdivisions Functions PositionItems SetTransformFromFunction SetTransformFromHeight SetTransformFromWidth SetCurrentAndDestinationItem SetDestinationItem GetSecondsToDestination SetSecondsPerItem SetSecondsPauseBetweenItems GetSecondsPauseBetweenItems SetPauseCountdownSeconds SetNumSubdivisions ScrollThroughAllItems ScrollWithPadding SetFastCatchup SetLoop SetWrap SetMask SetNumItemsToDraw GetFullScrollLengthSeconds GetCurrentItem GetDestinationItem GetNumItems Attributes Name Type Action NumItemsToDraw number How many items will be drawn at once on the ActorScroller."},{"id":146,"href":"/dev/editor/2-Adding-Notes/","title":"Adding/Manipulating notes","parent":"Editor","content":" In the editor, you can add notes by using the 1-0 keys on the keyboard, which correspond to the column on the current mode you\u0026rsquo;re in.\nDetermining the type of note to use is set via the N/M keys, which change the type of notes to the following list:\nTap The regular note type, adds tap notes when using the 1-0 keys. While holding left shift, it creates a roll note depending on how long you hold the column specific key. Holding the column key alone creates a long note, otherwise known as a Hold, which requires players to hold the button until the entire hold has transpired.\nMine This note should be avoided by the player, as they lose life if they hit it. Holding Left Shift will create a roll-based MineField, which is a hold note that should be avoided, as any press can cause the player to lose life. Holding the column key alone will create a hold-based Minefield, which behaves the same way as the roll version.\nLift These notes require the player to release the column when the note arrives to its corresponding receptor. Creating holds or rolls (Left Shift) in this mode creates a Lift-Hold/Roll, which behaves like a regular hold or roll, but contains a lift at the end, which requires the player to perform the same action as a lift, releasing at the right time at the end of the hold/roll.\nFake These notes are purely visual, and do not affect score. They can be used to confuse the player or to construct visual gimmicks. Currently holds/rolls created in this mode will be transformed to regular holds/rolls from the Tap type.\nThe Alter Menu Beat This option allows you to either compress or expand a selected area in both notes and timing, which can be useful if you want to create areas that have a faster or slower feeling.\nStutter segment Introduced in OutFox Alpha ??, this option generates a \u0026ldquo;stutter\u0026rdquo; segment, which comprises of each note including a stop that retains the original timing of the song, giving the illusion of multiple stops in quick succession. An option is included to toggle the inclusion of mines in the calculation, if they\u0026rsquo;re off, mines are skipped in the calculation and are not stopped in playback.\nPlay Selection Plays the currently selected section. Once the cursor has passed the section, it will be looped.\nRecord Selection Allows you to record the currently selected section. This mode enters Record Mode, where you can use the regular keys to place notes in real time with the music.\nAssign as Preview Makes the current selection become the music preview that is played while selecting the song. Note that most themes have a potential fade out of about 3 seconds.\nConvert selection to stop Converts the selected area into a stop, by compressing the area and placing a stop with the duration of the selection. Keep in mind however that any notes that are included inside the area will be deleted.\nConvert selection to delay Converts the selected area into a delay, by compressing the area and placing a delay with the duration of the selection. Keep in mind however that any notes that are included inside the area will be deleted.\nFor information about the difference between stops and delays, check out Defining Timing Data.\n","description":"In the editor, you can add notes by using the 1-0 keys on the keyboard, which correspond to the column on the current mode you\u0026rsquo;re in.\nDetermining the type of note to use is set via the N/M keys, which change the type of notes to the following list:\nTap The regular note type, adds tap notes when using the 1-0 keys. While holding left shift, it creates a roll note depending on how long you hold the column specific key."},{"id":147,"href":"/dev/actors/actortypes/actor/ActorsLua-Anatomy+Structure/","title":"Anatomy of an Actor","parent":"Actor","content":" Every actor in SM5 follows a standard general structure, with ActorFrames being more flexible in how they\u0026rsquo;re constructed.\nGeneral layout Commands General layout Def.Actor { Name= \u0026#34;Example Actor\u0026#34;, InitCommand= function(self) self:zoom(100) end, OnCommand= function(self) self:linear(2):x(30) end, } Every actor starts with a Def. prefix, followed by the actor type itself. An actor can have a name and commands. These commands could be anything, as long as it\u0026rsquo;s suffixed with a Command or MessageCommand, depending on the type of commands needed.\nNames allow one to easily grab the actor through functions like GetChild, but there are other exampled given later.\nWhen the definition is complete, the actor has to be \u0026ldquo;returned\u0026rdquo; for the game to see it. Most of the time, ActorFrames are usually what\u0026rsquo;s returned instead of just a single actor.\nCommands Commands come in two variants: \u0026ldquo;Commands\u0026rdquo; and \u0026ldquo;Messages\u0026rdquo;.\nCommands are usually isolated to a single actor, with a few exceptions. Messages are commands that are meant to be in multiple actors and can be invoked at around the same time on all actors with a \u0026ldquo;Broadcast\u0026rdquo;.\nMESSAGEMAN:Broadcast(\u0026#34;SpecialMove\u0026#34;, {funnymove = 10, absolute = false}) This would run \u0026ldquo;SpecialMoveMessageCommand\u0026rdquo; on all actors that have this command defined, with a parameter table being passed in. Not all actors might use this table, even though they might have the command defined.\nIf one needs to manually queue a command or message, the queuecommand or queuemessage functions can be used.\nThese queued commands run only after all previous tweens have finished.\nself:queuecommand(\u0026#34;Action\u0026#34;):queuecommand(\u0026#34;AnotherOne\u0026#34;) -- The actor itself ActionCommand=function(self) -- an action is performed first end AnotherOneCommand=function(self) -- an action is performed after \u0026#39;Action\u0026#39; end If a command has to run instantly, playcommand can be used for that.\nself:playcommand(\u0026#34;Action\u0026#34;) -- The actor itself ActionCommand=function(self) -- an action is performed end If one wants to pass custom parameters into the command, a single table has to be used to wrap every parameter passed.\nThese command functions generally take two paramters: The actor calling the function (often called self), and the parameters table passed into the command. The paramters table is optional.\nself:playcommand(\u0026#34;Action\u0026#34;, { --[[Values are added here like a regular table.]] }) -- example self:playcommand(\u0026#34;Action\u0026#34;, { Value = 2 }) -- In the actor ActionCommand=function(self,param) SCREENMAN:SystemMessage(\u0026#34;I\u0026#39;ve got value which has \u0026#34;.. param.Value) end ","description":"Every actor in SM5 follows a standard general structure, with ActorFrames being more flexible in how they\u0026rsquo;re constructed.\nGeneral layout Commands General layout Def.Actor { Name= \u0026#34;Example Actor\u0026#34;, InitCommand= function(self) self:zoom(100) end, OnCommand= function(self) self:linear(2):x(30) end, } Every actor starts with a Def. prefix, followed by the actor type itself. An actor can have a name and commands. These commands could be anything, as long as it\u0026rsquo;s suffixed with a Command or MessageCommand, depending on the type of commands needed."},{"id":148,"href":"/dev/announcers/","title":"Announcers","parent":"Developers and Creators","content":"Announcers are a set of folders containing audio data for various kinds of situations. These can usually be a voice encouraging the player for their performance, comments about particular songs, among other things.\nLocation of Announcers Funcionality Engine-defined sounds For ScreenTitleMenu title menu game name For ScreenWithMenuElements \u0026lt;Screen Name\u0026gt; intro hurry up For ScreenSelect \u0026lt;Screen Name\u0026gt; IdleComment For ScreenSelectMaster select difficulty challenge \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; For ScreenSelectMusic select music intro select music comment repeat select music comment new select music comment hard select music comment general select course comment general For ScreenGameplay gameplay intro gameplay ready gameplay here we go normal gameplay here we go extra gameplay here we go final gameplay battle damage level3 gameplay extra gameplay cleared gameplay oni failed halfway gameplay oni failed gameplay failed gameplay \u0026lt;amount\u0026gt; combo gameplay combo overflow gameplay combo stopped gameplay battle trick level\u0026lt;n\u0026gt; gameplay battle damage level\u0026lt;n\u0026gt; gameplay comment hot gameplay comment danger gameplay comment good gameplay comment oni For ScreenEvaluation evaluation new record evaluation full combo W1 evaluation full combo W2 evaluation full combo W3 evaluation full combo W4 evaluation \u0026lt;Grade\u0026gt; evaluation final \u0026lt;Grade\u0026gt; evaluation win evaluation lose evaluation win evaluation cheer For ScreenPlayerOptions player options intro For ScreenSelectCharacter select group intro For ScreenNameEntry name entry For ScreenEnding music scroll Custom announcer sounds Location of Announcers The default location for announcers are in Project OutFox/Announcers, with the following structure:\nProject OutFox/Announcers/ │ └───────My Announcer | └───title menu game name └───Welcome to the game.ogg └───OutFox.ogg Funcionality Depending on the screen the player is currently on, certain announcer sounds will play. Here we will list the items used in the engine, and talk about custom sounds.\nEach item folder on the following list can contain any amount of sounds inside it. The game will pick randomly which one to play.\nEngine-defined sounds The engine can play certain sounds from the announcer, as long as the name is named correctly based on the following list:\nFor ScreenTitleMenu title menu game name Plays when entering the title menu. Usually recites the name of the game.\nFor ScreenWithMenuElements As noted on the Introduction to Theming\u0026rsquo;s guide to creating a custom screen, almost every screen is inherited on ScreenWithMenuElements, meaning that all screens that use this class as a base will play announcers like this, where \u0026lt;Screen Name\u0026gt; applies.\n\u0026lt;Screen Name\u0026gt; intro A message played when the player enters this screen.\nhurry up Plays when the timer is running low on time.\nFor ScreenSelect Same rules apply from ScreenWithMenuElements, meaning that the intro message can also be used here.\n\u0026lt;Screen Name\u0026gt; IdleComment Plays after every specified amount of seconds have passed. This if often used to remind the player to do something in the game.\nThe amount of time can be changed on the screen\u0026rsquo;s IdleCommentSeconds metric.\nFor ScreenSelectMaster ScreenSelectMaster is the name of the class type of several different screens, so these will actually occur on any of the following: ScreenTitleMenu, ScreenSelectLanguage, ScreenUnlockBrowse, ScreenSelectStyle, ScreenSelectPlayMode, ScreenGameInformation, or any other screen that has ScreenSelectMaster as its Class metric.\nselect difficulty challenge Plays when the player enters the second page.\nChoices on ScreenSelectMaster are split into two pages, all choices after the amount set by the NumChoicesOnPage1 metric are on the second page. The default is 1024, so this will never play unless the theme sets the metric lower to have a second page. \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; Players when the player has picked their Choice.\nFor example: In ScreenSelectStyle2, a screen that could select the kind of style to play; you are presented with 3 choices: single, versus or double, and the player chooses double. Then the end result would end up looking like this:\nScreen Name: ScreenSelectStyle2 Choice Name: double Thus:\nScreenSelectStyle2 comment double \u0026lt;Choice Name\u0026gt; will be the name field of the gamecommand that defines the choice, so this could be literally anything the themer feels like.\nFor this example, it ended up being double, which would look something like this:\n# Note here that the 3 can also change, but DOES NOT apply to the scope of announcers, only the name field. Choice3=\u0026#34;name,double\u0026#34; For ScreenSelectMusic Rules from ScreenWithMenuElements also apply here.\nselect music intro A special rule here for the SelectMusic screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nselect music comment repeat Plays when a player chooses a song that was already played on this session.\nselect music comment new Playes when a player chooses a song that hasn\u0026rsquo;t been played at all on the machine.\nselect music comment hard Plays when a player chooses a song that exceeds the value of ScreenSelectMusic::HardCommentMeter, which is 10 by default.\nselect music comment general Regular comment that plays when a player chooses a song that doesn\u0026rsquo;t apply to the rules from the previous 3 comment types.\nselect course comment general Plays when a player chooses a course.\nFor ScreenGameplay The following occur after certain actions.\ngameplay intro The player has entered gameplay. This happens when the gameplay screen begins to fade in.\ngameplay ready The in transition has ended, on some themes, a text saying \u0026ldquo;Are you ready?\u0026rdquo; would appear here.\ngameplay here we go normal The ready transition is done. Some themes would display a \u0026ldquo;Let\u0026rsquo;s go!\u0026rdquo; text.\ngameplay here we go extra Same aspect as gameplay here we go normal, but in the case the player is currently on an extra stage.\ngameplay here we go final Same aspect as gameplay here we go normal, but in the case the player is on the last stage.\ngameplay battle damage level3 gameplay extra Plays at the end of a final stage if they\u0026rsquo;ve reached the Extra Stage criteria. The player has earned the chance to play the extra stage.\ngameplay cleared Plays at the end of a normal stage.\ngameplay oni failed halfway The player has failed at halfway or higher of an Oni course.\ngameplay oni failed The player has failed at \u0026lt;50% of an Oni course.\ngameplay failed The player has failed the stage.\ngameplay \u0026lt;amount\u0026gt; combo The announcer recites the amount of combo the player has achieved without breaking it. The game performs a check for the first 1000 combo, in successions of 100 (100 -\u0026gt; 200 -\u0026gt; 300, etc) in which after that it will then call the gameplay combo overflow sound on every 100 combo.\ngameplay combo overflow Plays every 100 combo after 1000 combo.\ngameplay combo stopped Happens when the player has broken their combo. The default value for the minimum combo to be broken to play the sound is 50, but can be changed with the metric Player::ComboStoppedAt.\ngameplay battle trick level\u0026lt;n\u0026gt; This is leftover code from In The Groove\u0026rsquo;s alpha inventory system. These have no function today. Plays when a battle trick occurs. In other terms, when a player as sent a trick to the other player. Has 3 stages.\ngameplay battle damage level\u0026lt;n\u0026gt; This is leftover code from In The Groove\u0026rsquo;s alpha inventory system. These have no function today. Plays when a battle damage occurs. Has 3 stages.\nThe following play on every set amount of seconds defined by the ScreenGameplay::SecondsBetweenComments metric.\ngameplay comment hot Plays when a player has their lifebar full.\ngameplay comment danger Player when a player is in danger, which is almost a depleted lifebar.\ngameplay comment good Plays while the player is doing okay in the song. It\u0026rsquo;s the last case from hot and danger.\ngameplay comment oni Plays while the player is on a course (either Nonstop, Oni or Endless).\nFor ScreenEvaluation Only one of these sounds will play depending on the condition.\nevaluation new record Plays if any of the players have achieved a record.\nevaluation full combo W1 Plays if any of the players has achieved a full combo consisting of only Flawless.\nevaluation full combo W2 Plays if any of the players has achieved a full combo consisting of only Excellents.\nevaluation full combo W3 Plays if any of the players has achieved a full combo consisting of only Greats.\nevaluation full combo W4 Plays if any of the players has achieved a full combo consisting of only Goods.\nevaluation \u0026lt;Grade\u0026gt; Plays if any of the players have achieved any tier related to \u0026lt;Grade\u0026gt;. The player with the highest Grade is the one that will be played.\nBecause of the Tier system in modern SM, the tier is converted into a human readable string, which is represented by an \u0026ldquo;old grade\u0026rdquo;. Click here for the list of old grades correspondant to the tier. ↕ Tier Old Grade conversion Grade_Tier01 AAAA Grade_Tier02 AAA Grade_Tier03 AA Grade_Tier04 A Grade_Tier05 B Grade_Tier06 C Grade_Tier07 D Grade_Failed E Grade_NoData N evaluation final \u0026lt;Grade\u0026gt; Plays at the summary screen, which is after all stages have been played. Same old grade logic from evaluation \u0026lt;Grade\u0026gt; applies here.\nevaluation win Plays only on rave mode, when someone wins the match.\nevaluation lose Plays only on rave mode, when someone loses the match.\nevaluation win Plays only on rave mode, when someone wins the match.\nThere\u0026rsquo;s no internal call to play a sound when the rave match is a draw, but can be added in Lua with a custom announcer sound. evaluation cheer If a player has achieved a grade tier of Tier_03 (A) or higher, after a set amount of seconds, this sound will play. The default is 2.5 seconds.\nThe amount of time can be changed by editing ScreenEvaluation::CheerDelaySeconds.\nFor ScreenPlayerOptions player options intro A special rule here for the ScreenPlayerOptions screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenSelectCharacter select group intro A special rule here for the ScreenSelectCharacter screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenNameEntry name entry A special rule here for the ScreenNameEntry screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenEnding music scroll A special rule here for the ScreenEnding screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nCustom announcer sounds You may have noticed by peeking into some announcer packs, that they sometimes contain folders that do not follow the naming convention described on Engine-defined sounds. This is because themes can play their any sound from the announcers, without a name limit.\nBecause of this however, you need to be wary about compatibility with said announcers on other themes, as there can be situations where the announcer pack is compatible with the theme it was designed for, and other themes won\u0026rsquo;t play all the sounds that come with the announcer.\nAn example of custom playback:\nSOUND:PlayAnnouncer(\u0026#34;My Custom Sound\u0026#34;) If the announcer doesn\u0026rsquo;t contain a folder named My Custom Sound with a sound file inside, it will be ignored.\n","description":"Announcers are a set of folders containing audio data for various kinds of situations. These can usually be a voice encouraging the player for their performance, comments about particular songs, among other things.\nLocation of Announcers Funcionality Engine-defined sounds For ScreenTitleMenu title menu game name For ScreenWithMenuElements \u0026lt;Screen Name\u0026gt; intro hurry up For ScreenSelect \u0026lt;Screen Name\u0026gt; IdleComment For ScreenSelectMaster select difficulty challenge \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; For ScreenSelectMusic select music intro select music comment repeat select music comment new select music comment hard select music comment general select course comment general For ScreenGameplay gameplay intro gameplay ready gameplay here we go normal gameplay here we go extra gameplay here we go final gameplay battle damage level3 gameplay extra gameplay cleared gameplay oni failed halfway gameplay oni failed gameplay failed gameplay \u0026lt;amount\u0026gt; combo gameplay combo overflow gameplay combo stopped gameplay battle trick level\u0026lt;n\u0026gt; gameplay battle damage level\u0026lt;n\u0026gt; gameplay comment hot gameplay comment danger gameplay comment good gameplay comment oni For ScreenEvaluation evaluation new record evaluation full combo W1 evaluation full combo W2 evaluation full combo W3 evaluation full combo W4 evaluation \u0026lt;Grade\u0026gt; evaluation final \u0026lt;Grade\u0026gt; evaluation win evaluation lose evaluation win evaluation cheer For ScreenPlayerOptions player options intro For ScreenSelectCharacter select group intro For ScreenNameEntry name entry For ScreenEnding music scroll Custom announcer sounds Location of Announcers The default location for announcers are in Project OutFox/Announcers, with the following structure:"},{"id":149,"href":"/dev/actors/actortypes/bganimation/","title":"BGAnimation","parent":"Actor Types","content":"A compatibility actor class that allows you to run older .ini files for background animations. Requires Quirks Mode to be enabled to function.\nDef.BGAnimation{ AniDir=\u0026#34;MyAnimationFolder\u0026#34;, LengthSeconds=10 } Attributes Name Type Description AniDir string The directory to find the animation data from. LengthSeconds number Backwards-Compatibility: If this is given, it will create a dummy actor that sleeps for the given amount of time. It inherits attributes from ActorFrame.\nLoading process If a BGAnimation.ini file is present on the folder to look up for, it is assumed to run a 3.9-type BGAnimation, which then it will run the process as a regular ini file.\nIf it\u0026rsquo;s not present, it assumes it\u0026rsquo;s a 3.0-type BGAnimation, which only contains video files. It will skip any files that start with an underscore.\n","description":"A compatibility actor class that allows you to run older .ini files for background animations. Requires Quirks Mode to be enabled to function.\nDef.BGAnimation{ AniDir=\u0026#34;MyAnimationFolder\u0026#34;, LengthSeconds=10 } Attributes Name Type Description AniDir string The directory to find the animation data from. LengthSeconds number Backwards-Compatibility: If this is given, it will create a dummy actor that sleeps for the given amount of time. It inherits attributes from ActorFrame.\nLoading process If a BGAnimation."},{"id":150,"href":"/dev/actors/actortypes/bitmaptext/","title":"BitmapText","parent":"Actor Types","content":"The BitmapText actor allows you to insert text into the theme, with any font that has been created and located on the Fonts folder from either your theme or _fallback.\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font Text = \u0026#34;Hello!\u0026#34; } Table of Contents Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText Attributes Name Type Action Font string The font to be utilized for this BitmapText. If it\u0026rsquo;s not available, Common Normal will be utilized instead. File string Alternative alias to Font. Text string The text to show to the BitmapText. AltText string An alternative version of Text that will be used if there\u0026rsquo;s a missing glyph (or a glyph that the game doesn\u0026rsquo;t recognize or can\u0026rsquo;t render) in Text. For more information, see Ensuring string compatibility. ","description":"The BitmapText actor allows you to insert text into the theme, with any font that has been created and located on the Fonts folder from either your theme or _fallback.\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font Text = \u0026#34;Hello!\u0026#34; } Table of Contents Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText Attributes Name Type Action Font string The font to be utilized for this BitmapText."},{"id":151,"href":"/dev/actors/actortypes/bpmdisplay/","title":"BPMDisplay","parent":"Actor Types","content":"A general-purpose BPM display. Can cycle between two states of values in a rolling motion.\nDef.BPMDisplay{} Attributes There are no special attributes with this actor type. It inherits its attributes from BitmapText.\nFunctions These functions also work on SongBPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)\nSets the BPM to the song\u0026rsquo;s BPM range. This value can be tricked if the chart is using a specified BPM rather than the actual BPM, or even jumbled if it\u0026rsquo;s tagged as random.\nSetFromSteps (Steps data)\nSets the BPM to the steps\u0026rsquo;s BPM range. Useful if the current steps contain different timing data.\nSetFromCourse (Course pCourse)\nObtains the BPM range from the course. A couple of rules are applied here:\nThe operation will fail if there are no steps available on the course for the current StepsType. If there are more entries than the value of Common::MaxCourseEntriesBeforeShowVarious (Default: 10), the course is considered various, and instead will output the text defined on BPMDisplay::VariousText (Default: \u0026quot;000\u0026quot;). GetText Gets the current value that the SongBPMDisplay contains.\n","description":"A general-purpose BPM display. Can cycle between two states of values in a rolling motion.\nDef.BPMDisplay{} Attributes There are no special attributes with this actor type. It inherits its attributes from BitmapText.\nFunctions These functions also work on SongBPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)"},{"id":152,"href":"/categories/","title":"Categories","parent":"Project OutFox Wiki","content":"","description":""},{"id":153,"href":"/user-guide/config/folders/","title":"Content folders","parent":"Features \u0026 Config","content":"Project OutFox uses various folders to store content, such as songs, save data, themes, noteskins, etc. Content is stored in one of the three following locations;\nGlobal folders are located within the Project OutFox installation directory. If you are on a multi-user operating system, content in these folders will be accessible to all users. When Portable Mode is enabled by placing a blank file named Portable.ini at the root of the installation directory, save data (including profiles and preference files) will be place in a subfolder of the installation directory named \u0026ldquo;Save\u0026rdquo;. User folders are where user save data is stored if Portable Mode is disabled. They are created in the operating system\u0026rsquo;s home/user directory. As of 0.4.14 (released 2022-03-25), they are located in: ~/Library/Preferences/Project OutFox/ on macOS ~/.project-outfox/ on Linux %APPDATA%\\Project OutFox on Windows On versions prior to 0.4.14, the user folder was named either OutFox 5.3 (macOS and Windows) or outfox-5.3 (Linux). Additional folders are paths configured in the Preferences.ini file; for instance, you can store your song library on a second hard drive and link to it there, or share content between multiple installations. These content folders comprise the game\u0026rsquo;s \u0026ldquo;Virtual File System\u0026rdquo; (VFS). They are, in turn, divided into various subdirectories for storing specific types of content.\nAnnouncers Announcers are a collection of audio files that play automatically based on specific triggers, such as in-game events or navigating to specific screens.\nAppearance Avatars Square images that can be used as avatars for your profile.\nJudgments If supported by the current theme, you can pick a different design for in-game judgement displays from images in this folder.\nJudgement fonts are divided into equally-sized sprites for each judgement. Fonts designed for specific timing modes have a modifier in their file name, such as [Advanced], [FAPlus], etc. A judgement font can also be divided into two columns to display indicators for early or late timing.\nNoteSkins NoteSkins affect the appearance of notes. They could be arrows, bars, circles, pawprints, etc.\nNoteSkins that are compatible with StepMania 5.0.12 and 5.1 are compatible with Project OutFox.\nThe NoteSkins folder is divided into subfolders for specific game types. A global noteskin appears in all game types.\nNoteSkins │ └───dance │ │ │ └───metal │ │NoteSkin.lua │ │... Themes Themes determine the look, feel, and functionality of the game.\nThemes compatible with StepMania 5.0.12 and 5.1 are compatible with Project OutFox.\nThemes │ └───My Theme │ │ Metrics.ini │ │ ... Toasties Combinations of an image and sound played when a specific combo milestone is reached. They are inspired by the famous Mortal Kombat easter egg.\nBackgroundEffects Visual effects used for background script sequences in songs.\nBackgroundTransitions Transition effects used for background script sequences in songs.\nBGAnimations Actor-based animations that can be played in the background in-game. They can also be used as part of background script sequences in songs.\nCache The cache generated by Project OutFox when loading songs. Delete this folder to force the game to reload all songs.\nCharacters 3D character models that can be displayed in-game.\nCourses Playlists of songs used in course modes (such as Extended).\nLogs When Project OutFox is running, it generates various log files to record diagnostic information and errors. If you are having issues with the game, the log file is a good place to begin.\nRandomMovies Video clips that can be played in the background in-game. They can also be used as part of background script sequences in songs.\nSave This is where data such as preferences, profiles, high scores, etc. are stored. If portable mode is enabled, the game will load the Save folder from your installation directory. It is otherwise located in your user folders.\nScreenshots Screenshots taken in-game are stored here.\nSongMovies Similar in use to RandomMovies, except that they will be excluded from the RandomMovies pool.\nSongs Songs that are used to play the game. They are stored in folders known as Groups.\nSongs │ └───My Group │ │ │ └───My Song │ │ mysong.ssc │ │ mysong.ogg │ │ mysong-bg.png │ │ mysong-bn.png │ │ mysong-jk.png Additional folders Via the preferences file (Save/Preferences.ini), you can specify additional folders to store content. For example, you can keep your song library in a centralized location (such as in a separate folder or on a different storage device), and share them between multiple installations of OutFox or StepMania-based games.\nBoth of these parameters accept multiple directory paths, comma-separated.\nAdditionalSongFolders The AdditionalSongFolders option allows you to specify other locations for where Project OutFox can search for songs. As with the installation directory\u0026rsquo;s song folder, they are divided into groups. For example (assuming a location such as D:\\AdditionalSongs);\nD:\\AdditionalSongs │ └───My Group │ │ │ └───My Song │ │ mysong.ssc │ │ mysong.ogg │ │ mysong-bg.png │ │ mysong-bn.png │ │ mysong-jk.png AdditionalFolders AdditionalFolders is like the above, except they can contain any of the other content subdirectories like so;\nD:\\OutFoxExtra │ └───Announcers │ └───Appearance │ └───etc. ","description":"Project OutFox uses various folders to store content, such as songs, save data, themes, noteskins, etc. Content is stored in one of the three following locations;\nGlobal folders are located within the Project OutFox installation directory. If you are on a multi-user operating system, content in these folders will be accessible to all users. When Portable Mode is enabled by placing a blank file named Portable.ini at the root of the installation directory, save data (including profiles and preference files) will be place in a subfolder of the installation directory named \u0026ldquo;Save\u0026rdquo;."},{"id":154,"href":"/user-guide/controllers/","title":"Controllers and Peripherals","parent":"User Guide","content":"","description":""},{"id":155,"href":"/dev/actors/actortypes/controllerstatedisplay/","title":"ControllerStateDisplay","parent":"Actor Types","content":"Creates an ActorFrame that contains button sprites for a specific game mode to indicate their pressed state. A more visual version of Test Input.\nThe class only detects input from MultiPlayer players. These are a different kind of player that are exclusively on controllers. The ControllerStateDisplay only detects pump buttons. It has been like this since July, 2007. Def.ControllerStateDisplay{ } Attributes There are no special attributes to this actor class. It inherits from ActorFrame.\nLoaded Graphics When running either LoadMultiPlayer or LoadGameController, the following textures are loaded.\nsType in this context is the Type provided as the first argument on both functions.\n[sType] frame: The background frame for the buttons [sType] [ControllerState]: A [Sprite] that represents the button. Functions LoadGameController (string type, GameController gc)\nLoads a GameController to be used on the ControllerStateDisplay. It is automatically given a MultiPlayer of MultiPlayer_Invalid.\nYou can theoretically use this function to have functionality on a regular controller / player, given those also use GameController. LoadMultiPlayer (string type, MultiPlayer mp)\nLoads a MultiPlayer mp to detect its input. Calling this function will make the ControllerStateDisplay use a controller of GameController_1.\n","description":"Creates an ActorFrame that contains button sprites for a specific game mode to indicate their pressed state. A more visual version of Test Input.\nThe class only detects input from MultiPlayer players. These are a different kind of player that are exclusively on controllers. The ControllerStateDisplay only detects pump buttons. It has been like this since July, 2007. Def.ControllerStateDisplay{ } Attributes There are no special attributes to this actor class. It inherits from ActorFrame."},{"id":156,"href":"/dev/courses/","title":"Courses","parent":"Developers and Creators","content":" Location of Courses Example Course File Playing Courses Tags #COURSE (Required) #SONG (Required) Additional Tags Special #SONG tags Random Songs (*) #COURSETRANSLIT #BANNER #BACKGROUND #DESCRIPTION #REPEAT #LIVES #GAINSECONDS #METER #RADAR #STYLE #SCRIPTER #MODS Unused tags #DISPLAYCOURSE #COMBO #COMBOMODE Location of Courses The default location for courses are in Project OutFox/Courses, with the following structure:\nProject OutFox/Courses/ │ └───Some Creative Course Collection Name │ │ │ └───My Course.crs │ └───My Course.png (Optional) └───Singular course.crs A colection (folder) can have as many courses inside of it as it wishes. The name of the folder is not used on selection however, as described on the instruction.txt file.\nCourse files (.crs) typically go in folders, though they aren\u0026rsquo;t shown like that on the wheel\u0026hellip; yet. (Coming soon: a metric that allows a theme to do that, once we get the wheel to treat course directories like song directories)\nExample Course File #COURSE:My Course File; #SCRIPTER:Jose_Varela; #DESCRIPTION:This is an example course to showcase how it\u0026#39;s written!; #METER:Medium:8; // Given the GAINSECONDS defined here, this course uses the survival life meter bar, // which uses a timed lifebar. #GAINSECONDS:120; #SONG:OutFox/Credits:Medium;nodifficult; // These tags must be added before the song that it will be applied to. #GAINSECONDS:25; #MODS:TIME=2.580000:LEN=8.000000:MODS=Drunk, Overhead; #MODS:TIME=8.580000:LEN=5.000000:MODS=Dizzy; // Looks for a random song on the \u0026#34;OutFox Serenity Volume 1 Winter Update\u0026#34; pack. #SONG:OutFox Serenity Volume 1 Winter Update/*:Hard;nodifficult; Playing Courses To play courses, you can choose by the \u0026ldquo;Extended\u0026rdquo;, \u0026ldquo;Oni\u0026rdquo; and \u0026ldquo;Nonstop\u0026rdquo; modes.\nTags #COURSE (Required) Defines the course name to be shown during the music wheel.\n#COURSE:Very creative course name; #SONG (Required) This defines which song(s) will be played in the course.\n#SONG:Pack Name/Song Name:Difficulty:[showcourse/noshowcourse/nodifficult/award]; Additional Tags Tag Description showcourse (Default) Shows the song in the course list. noshowcourse Hides the song in the course list, and instead reports ?????. nodifficult Prevents the player from changing difficulties from the one provided in the course. award* Defines how many lives the player will earn upon clearing the song (Used on battery life meter / Oni). Example\nPlaceholder Value Pack OutFox Song Credits Difficulty Hard The difficulty value can also represent a range of difficulties, by placing two values separated by two dots. (..)\n#SONG:Pack Name/Song Name:5..9:[showcourse/noshowcourse/nodifficult/award]; If no difficulties are found in the range, a guess of 3 to 6 is used instead, otherwise it picks the closest difficulty.\nSpecial #SONG tags For the #SONG tag in particular, special data types are available to obtain certain songs that are dependant on playback of the game.\nThe following are defined by the song\u0026rsquo;s popularity rank, which is determined by how often the song is played. The N value can be any number up to the number of available songs in your installation.\nTag Description BEST[N] Provides the best song from the N ranking. BEST[N] Provides the worst songs from the N ranking. GRADEBEST[N] Provides the songs with the best achieved grades from the N ranking. GRADEWORST[N] Provides the songs with the worst achieved grades from the N ranking. Random Songs (*) Instead of a particular song, a random one can be chosen by using the wildcard operator (*).\n#SONG:My Song Folder/*; # Will pick a random song from the \u0026#34;My Song Folder\u0026#34; folder. #SONG:*; # Will pick a random song from the entire instalation.\t#COURSETRANSLIT Defines the transliterate name of the course to be shown during the music wheel when the user has the \u0026ldquo;Translate Song Titles\u0026rdquo; option enabled.\n#COURSE:A translation of the course name; #BANNER Set a custom banner made specifically for the course which will be displayed upon selection. The banner must be on the same folder as the course file.\n#BANNER:MyBanner.png; #BACKGROUND Set a custom background made specifically for the course which will be displayed before starting the course. The background must be on the same folder as the course file.\n#BANNER:MyBackground.png; #DESCRIPTION Defines a description about the course. This applies to the entire course, not each individual song.\n#DESCRIPTION:This is a course!; #REPEAT This tag determines if this course is considered an \u0026ldquo;Endless\u0026rdquo; course, which will repeat its entries upon completion until the player loses.\n#REPEAT:[yes/no]; #LIVES Defines the number of lives available to the player to start with. If this value is set, the course automatically becomes an \u0026ldquo;Oni\u0026rdquo; course with the \u0026ldquo;Lives\u0026rdquo; meter bar. #LIVES:3; #GAINSECONDS Defines how many seconds the player will earn upon completion of a song. Upon defining this tag, the course is considered an \u0026ldquo;Oni\u0026rdquo; course, with the \u0026ldquo;survival\u0026rdquo; meter bar. #GAINSECONDS:2.5; #METER Defines a general meter for the course. Most themes don\u0026rsquo;t display this value, and opt instead to show each meter from the available songs in the course.\n#METER:Medium:6; #RADAR Defines the radar values for the entire course. Takes the same data type as regular simfiles.\n#RADAR:0.598892,0.736598,0.254626,0.309189,0.736598,461.000000,433.000000,28.000000,34.000000,19.000000,0.000000,10.000000,6.000000,0.000000,0.598892,0.736598,0.254626,0.309189,0.736598,461.000000,433.000000,28.000000,34.000000,19.000000,0.000000,10.000000,6.000000,0.000000; #STYLE Sets the style that this course will be compatible with.\n#STYLE:single,versus; #SCRIPTER Defines the author of the course to be shown during the music wheel\n#SCRIPTER:You!; #MODS Defines a scripted attack to happen at a given time. This tag can be used multiple times to define multiple attacks. This tag must be inserted before the #SONG tag to apply the attacks to that song.\n#MODS:TIME=2.580000:LEN=0.310000:MODS=Drunk, Overhead; Using this line, we\u0026rsquo;re making so 100% Drunk and 100% Overhead are applied at 2.580000 seconds in when playing the song, those attacks will also last 0.310000 seconds and then slowly decay back to their default values. Read more about Attack/Modifiers here\nUnused tags These tags are ignored by the engine, but are described here for history.\n#DISPLAYCOURSE Toggles visibility of the course on the music wheel.\n#COMBO Unsure what this command would perform.\n#COMBOMODE Unsure what this command would perform.\nWritten by Jose_Varela, suggested and contributed by moruzerinho6.\n","description":"Location of Courses Example Course File Playing Courses Tags #COURSE (Required) #SONG (Required) Additional Tags Special #SONG tags Random Songs (*) #COURSETRANSLIT #BANNER #BACKGROUND #DESCRIPTION #REPEAT #LIVES #GAINSECONDS #METER #RADAR #STYLE #SCRIPTER #MODS Unused tags #DISPLAYCOURSE #COMBO #COMBOMODE Location of Courses The default location for courses are in Project OutFox/Courses, with the following structure:\nProject OutFox/Courses/ │ └───Some Creative Course Collection Name │ │ │ └───My Course.crs │ └───My Course."},{"id":157,"href":"/dev/editor/1-Defining-Timing-Data/","title":"Defining Timing Data","parent":"Editor","content":"when playing a song, several aspects of the chart will be used for timing information. These are essential to have a nicely timed chart that people can enjoy.\nBeat 0 offset This determines the starting point of the audio file to begin counting beats. This should be on the very start of any indication of audio in the song. It is important that you consider changing this value if you notice your chart is off-sync, chances are the beat 0 offset is off.\nBPM Beats per Minute, or BPM are the measurement for how many beats will amount on 60 seconds. This is used to calculate the speed of the chart at a given point in time. A chart can contain many BPM segments, that can vary the speed.\nStops Stops will pause the chart for the given amount of time. Scrolling resumes once the time assigned has passed.\nDelays (SSC) Delays will also pause the chart for the given amount of time. Scrolling resumes once the time has passed.\nDifference between Stops and Delays Given the previous descriptions of Stops and Delays, they do seem to behave the exact same, and they do; the difference is how notes interact on their start and end segments. Stops let you hit notes at the very start of the segment, while Delays let you hit notes at the very end of the segment. This is important to note in case you\u0026rsquo;d want to create segments that stop the chart for a given amount of time, to then make the player hit a note to the timing of the song picking back up to then resume scrolling.\nTime Signatures Currently only a visual aspect in the game for the editor,\nLabel Labels can be used to mark segments of notes with notes, that will be shown on the editor on the right side of the notefield\n","description":"when playing a song, several aspects of the chart will be used for timing information. These are essential to have a nicely timed chart that people can enjoy.\nBeat 0 offset This determines the starting point of the audio file to begin counting beats. This should be on the very start of any indication of audio in the song. It is important that you consider changing this value if you notice your chart is off-sync, chances are the beat 0 offset is off."},{"id":158,"href":"/dev/actors/actortypes/devicelist/","title":"DeviceList","parent":"Actor Types","content":"A BitmapText actor that shows the current list of devices connected and recognized by the game.\nDef.DeviceList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which controllers are detected.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current devices. ","description":"A BitmapText actor that shows the current list of devices connected and recognized by the game.\nDef.DeviceList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which controllers are detected.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current devices. "},{"id":159,"href":"/dev/actors/actortypes/dynamicactorscroller/","title":"DynamicActorScroller","parent":"Actor Types","content":"The DynamicActorScroller is an ActorScroller that fills in its children on the fly.\nThe best example for the use of this class is the HighScore scroller, which constantly updates itself with new information everytime an item is deloaded from the screen.\nThe biggest different about this and ActorScroller is that DynamicActorScroller requires only 1 [Actor] to be inside it. It cannot be more than 1.\nDef.DynamicActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, LoadFunction = function() end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Utilization Behavior changes Full code example Attributes The attributes for DynamicActorScroller are the same as ActorScroller, except for an addition.\nName Type Action LoadFunction function New to DynamicActorScroller, determines the ammount of items to be generated. provides two arguments which are nil. NumItemsToDraw number How many items will be drawn at once on the ActorScroller. SecondsPerItem number How long will the scroller take before moving to the next item. TransformFunction function The function that positions every item in the ActorScroller. For more information, check Transforming the Scroller. Subdivisions number How many subdivisions should there be between each item? This allows for smoother movement for scrollers that contain any mathematical curve. UseMask bool Toggles a mask on the top and bottom of the ActorScroller. MaskHeight number Height of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. MaskWidth number Width of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. LoopScroller bool Loops the selection of the scroller to wrap around. WrapScroller bool Wraps the items of the scroller to attempt a seamless transition back. Utilization As mentioned previously, this actor class only allows 1 actor in it, which will be processed to be filled on the fly. If more are provided, it will complain about it, and stop the game due to a failed assert.\nAdding actors can be done with the same methods presented on Adding Actors on ActorScroller.\nUpon adding the actor, a new attribute is added to the list, which is LoadFunction. This attribute is responsible to manage and update the actors based on the relative position of the current choice.\nBehavior changes With this actor type, the TransformFunction has a different behavior.\nitemIndex won\u0026rsquo;t update anymore, as LoadFunction is now the one doing the work. Full code example local af = Def.ActorFrame{ InitCommand=function(self) self:Center() end } local numItems = 10 af[#af+1] = Def.DynamicActorScroller{ NumItemsToDraw = 5, SecondsPerItem = 0.1, LoopScroller = true, OnCommand=function(self) -- For more information about this Input Controller, check \u0026#34;Custom Input\u0026#34;. -- https://outfox.wiki/dev/theming/Theming-Custom-Input/ self.controller = LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) SCREENMAN:GetTopScreen():AddInputCallback(self.controller) end, OffCommand=function(self) SCREENMAN:GetTopScreen():RemoveInputCallback(self.controller) end, LoadFunction = function(self, itemIndex) -- This will tell the scroller how many items will be generated for the scroller. It just needs a number. -- \u0026#34;Call the expression with line = nil to find out the number of lines.\u0026#34; -- Self is the actor represented for the actor set. -- itemIndex is the item relative to the current selection from the user. if self then self:GetChild(\u0026#34;Text\u0026#34;):settext( \u0026#34;I am line \u0026#34;.. itemIndex ) end return numItems end, TransformFunction=function(self, offset, itemIndex, numItems) self:y( offset * 40 ) end, -- By the rules, this is only adding a single item, which is an ActorFrame holding a BitmapText. -- The actor in this case will be provided with a ItemIndex attribute attached. This can be accessed -- using self. This is only given initially and doesn\u0026#39;t update. Use the LoadFunction to get a new -- version of the value. Def.ActorFrame{ OnCommand=function(self) self:GetChild(\u0026#34;Text\u0026#34;):diffuse(color(\u0026#34;#000000\u0026#34;)) end, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Name=\u0026#34;Text\u0026#34; } }, -- Let\u0026#39;s add input to this scroller. MenuLeftCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() - 1 ) end, MenuRightCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() + 1 ) end, } return af ","description":"The DynamicActorScroller is an ActorScroller that fills in its children on the fly.\nThe best example for the use of this class is the HighScore scroller, which constantly updates itself with new information everytime an item is deloaded from the screen.\nThe biggest different about this and ActorScroller is that DynamicActorScroller requires only 1 [Actor] to be inside it. It cannot be more than 1.\nDef.DynamicActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, LoadFunction = function() end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Utilization Behavior changes Full code example Attributes The attributes for DynamicActorScroller are the same as ActorScroller, except for an addition."},{"id":160,"href":"/dev/editor/0-Editor-Preferences/","title":"Editor Preferences","parent":"Editor","content":"The editor brings editor specific changes that allow you to tweak certain aspects for editing your content.\nPreferences introduced on 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27 Preference Name Action Show Both Players Toggles the display of both players during playback.\nNote: Both players are generated anyway during charts that allow for more than one player (like Single, or Versus). Other chart types won\u0026rsquo;t be affected by this setting. Show Measure Lines on Playback Toggles the measure lines during playback. These are the horizontal lines shown during editing, which you may want to disable when previewing sections of a file that you may need full clarity. Show Modifiers List Shows a list of modifiers currently active on the player on their respective side that updates in real time. Auto Advance Upon Note Placement Auto advances the cursor to the next quantized beat from the currently selected snap after placing a note. (Experimental) Show Backgrounds Choose whenever to display song backgrounds while playing. This also affects the display of the backgrounds on the Foreground layer, which are used for chart modding. Allow Notefield Changes on Preview Enables the preview notefield (Which is enabled by pressing Space) to display chart-related changes like Scroll Speed changes, that change the spacing of the notes. ","description":"The editor brings editor specific changes that allow you to tweak certain aspects for editing your content.\nPreferences introduced on 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27 Preference Name Action Show Both Players Toggles the display of both players during playback.\nNote: Both players are generated anyway during charts that allow for more than one player (like Single, or Versus). Other chart types won\u0026rsquo;t be affected by this setting. Show Measure Lines on Playback Toggles the measure lines during playback."},{"id":161,"href":"/dev/actors/actortypes/gradedisplay/","title":"GradeDisplay","parent":"Actor Types","content":"An ActorFrame containing AutoActors based on the number of grades available that are assigned by the theme (PlayerStageStats::NumGradeTiersUsed).\nDef.GradeDisplay{ } Attributes This actor inherits the attributes from ActorFrame.\nFunctions Load (string sMetricsGroup)\nLoad the graphics from a defined \u0026ldquo;metrics\u0026rdquo; group. It will seek for grade images with the following format:\n[sMetricsGroup] Grade Internally it is called metrics, but this actor doesn\u0026rsquo;t use any kind of graphics directly, other than the ammount of grades defined by PlayerStageStats::NumGradeTiersUsed. SetGrade (Grade newGrade)\nSet the grade to display. Requires Load to have been called before, otherwise it will fail.\n","description":"An ActorFrame containing AutoActors based on the number of grades available that are assigned by the theme (PlayerStageStats::NumGradeTiersUsed).\nDef.GradeDisplay{ } Attributes This actor inherits the attributes from ActorFrame.\nFunctions Load (string sMetricsGroup)\nLoad the graphics from a defined \u0026ldquo;metrics\u0026rdquo; group. It will seek for grade images with the following format:\n[sMetricsGroup] Grade Internally it is called metrics, but this actor doesn\u0026rsquo;t use any kind of graphics directly, other than the ammount of grades defined by PlayerStageStats::NumGradeTiersUsed."},{"id":162,"href":"/dev/actors/actortypes/grooveradar/","title":"GrooveRadar","parent":"Actor Types","content":"An ActorFrame which generates a pentagon-shaped radar indicating various values that correspond to several aspects of a selected or given chart.\nDef.GrooveRadar{ OnCommand=function(self) self:SetFromValues( PLAYER_1, { 0.5, 0.3, 0.5, 0.8, 1 } ) -- Depending on where this sample code is loaded at, this next call can be successful, or will result empty based on the case -- that PLAYER_2 has steps selected. local PlayerTwoSteps = GAMESTATE:GetCurrentSteps(PLAYER_2) self:SetFromRadarValues( PlayerTwoSteps:GetRadarValues(PLAYER_2) ) end } Attributes Loaded Metrics Functions SetFromRadarValues SetFromValues SetEmpty Attributes There are no special attributes for this actor class. It inherits the attributes from ActorFrame.\nLoaded Metrics The GrooveRadar uses the following metrics for settings:\n[GrooveRadar] # How thick should the edges of the radar be? EdgeWidth=2 # How opaque should the color base of the radar be? CenterAlpha=0.25 # These define what should be done with each player\u0026#39;s part of the graph. # By default, these are used to color the individual players. RadarValueMapP1OnCommand=diffuse,PlayerColor(PLAYER_1) RadarValueMapP2OnCommand=diffuse,PlayerColor(PLAYER_2) Functions SetFromRadarValues (PlayerNumber player, RadarValues data)\nSets the data for the GrooveRadar from a chart\u0026rsquo;s RadarValues. These values are generated data when saving the chart which precalculate information like jump intensity, chaos charting, ammount of holds, etc.\nIf RadarValues is nil, it will perform the same action as SetEmpty.\nYou can obtain a chart\u0026rsquo;s RadarValues by running GetRadarValues for a player\u0026rsquo;s steps.\nlocal chart = GAMESTATE:GetCurrentSteps(PLAYER_1) -- Get the values self:SetFromRadarValues( chart:GetRadarValues(PLAYER_1) ) SetFromValues (PlayerNumber player, {number val1, number val2, number val3, number val4, number val5})\nAllows you to insert custom data into the GrooveRadar. This requires 5 numbers which (usually) correspond to the following categories:\nStream Voltage Air Freeze Chaos It is suggested to limit the values here to be from 0 to 1. The radar is not clamped to these limits when using SetFromValues, so higher values can make the radar draw outside of its intended area. Internally, these are just indexed in a number form, they do not follow a fixed category, so you can name these by using the graphics required for the GrooveRadar. If the values table isn\u0026rsquo;t table or is nil, it will perform the same action as SetEmpty.\nSetEmpty (PlayerNumber player)\nClears out the information from the GrooveRadar for a specific player.\n","description":"An ActorFrame which generates a pentagon-shaped radar indicating various values that correspond to several aspects of a selected or given chart.\nDef.GrooveRadar{ OnCommand=function(self) self:SetFromValues( PLAYER_1, { 0.5, 0.3, 0.5, 0.8, 1 } ) -- Depending on where this sample code is loaded at, this next call can be successful, or will result empty based on the case -- that PLAYER_2 has steps selected. local PlayerTwoSteps = GAMESTATE:GetCurrentSteps(PLAYER_2) self:SetFromRadarValues( PlayerTwoSteps:GetRadarValues(PLAYER_2) ) end } Attributes Loaded Metrics Functions SetFromRadarValues SetFromValues SetEmpty Attributes There are no special attributes for this actor class."},{"id":163,"href":"/dev/actors/actortypes/helpdisplay/","title":"HelpDisplay","parent":"Actor Types","content":"The HelpDisplay is an actor which relies on BitmapText to draw text meant to guide the player in interacting with the interface with helpful text that flips to segments in a given amount of time.\nBy default it uses the [HelpDisplay] metrics group to get information about the OnCommand, time to how the tip (TipShowTime) and how often it needs to switch the help block (TipSwitchTime).\nDef.HelpDisplay { Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font OnCommand = function(self) local helpText = \u0026#34;I can provide helpful text::Like moving left and right to change songs!::Or pressing Esc to go back!\u0026#34; self:SetTipsColonSeparated( helpText ) end } Please check the BitmapText page for the list of attributes.\nFormatting Help Text (SetTipsColonSeparated) Functions SetTipsColonSeparated settips gettips() SetSecsBetweenSwitches Formatting Help Text (SetTipsColonSeparated) Help text in HelpDisplay can be just regular text, but the actor allows for this text to be in \u0026ldquo;pages\u0026rdquo;, which splits the text into multiple segments that will be shown in a determined amount of time. These are separated using the :: (two Colon characters) sequence.\nFor example, if my HelpDisplay has a interval time of 5 seconds and a help text of \u0026quot;I am::Help Text\u0026quot;, the following will happen:\nI am will be shown flashing for the first five seconds. After 5 seconds, Help Text will be shown for the next five. Once those 5 seconds pases, it will return back to I am and the process restarts. Functions SetTipsColonSeparated ( string text )\nAlias of settips. Splits the text using the :: flag. Check Formatting Help Text for SetTipsColonSeparated for info on how to format it.\nsettips ( table\u0026lt;string\u0026gt; text, table\u0026lt;string\u0026gt; textAlt )\nUsing a table of strings, it formats the text to contain the help information.\n-- Using the example from above, \u0026#39;I am \u0026lt;split\u0026gt; Help Text`. local myHelpText = { \u0026#34;I am\u0026#34;, \u0026#34;Help Text\u0026#34; } self:settips(myHelpText) textAlt is an optional table to have text in case there are missing glyphs on the current font. Check Ensuring string compatibility for more information.\ngettips() Returns two tables which contain the help text currently being displayed on the HelpDisplay.\nlocal helpText, helpTextAit = self:gettips() -- Now you can obtain the help text. for data in ivalues(helpText) do Trace(data) end SetSecsBetweenSwitches ( float seconds )\nTells the help display how long it has to wait before switching to the next help block.\n","description":"The HelpDisplay is an actor which relies on BitmapText to draw text meant to guide the player in interacting with the interface with helpful text that flips to segments in a given amount of time.\nBy default it uses the [HelpDisplay] metrics group to get information about the OnCommand, time to how the tip (TipShowTime) and how often it needs to switch the help block (TipSwitchTime).\nDef.HelpDisplay { Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font OnCommand = function(self) local helpText = \u0026#34;I can provide helpful text::Like moving left and right to change songs!"},{"id":164,"href":"/dev/actors/actortypes/inputlist/","title":"InputList","parent":"Actor Types","content":"A BitmapText actor that shows the current list of buttons pressed.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which buttons are being pressed.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current buttons. ","description":"A BitmapText actor that shows the current list of buttons pressed.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which buttons are being pressed.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current buttons. "},{"id":165,"href":"/dev/actors/","title":"Lua and Actors","parent":"Developers and Creators","content":" Actor Types Actor Anatomy of an Actor Obtaining Childs and ActorFrame Levels ActorFrame ActorFrameTexture ActorMultiVertex ActorProxy ActorScroller BGAnimation BitmapText Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText BPMDisplay ControllerStateDisplay DeviceList DynamicActorScroller GradeDisplay GrooveRadar HelpDisplay InputList MemoryCardDisplay MeterDisplay Model Loading Additional Bones NoteField Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation PercentageDisplay Quad ScoreDisplayAliveTime ScoreDisplayCalories SongBPMDisplay SongMeterDisplay Sound Controlling Sound Sprite Managing Frames StepsDisplay TextBanner WorkoutGraph Behavioral differences from SM 3.95/ITG Command List Tweening Converting INI files to Lua Converting XML files to Lua ","description":"Actor Types Actor Anatomy of an Actor Obtaining Childs and ActorFrame Levels ActorFrame ActorFrameTexture ActorMultiVertex ActorProxy ActorScroller BGAnimation BitmapText Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText BPMDisplay ControllerStateDisplay DeviceList DynamicActorScroller GradeDisplay GrooveRadar HelpDisplay InputList MemoryCardDisplay MeterDisplay Model Loading Additional Bones NoteField Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation PercentageDisplay Quad ScoreDisplayAliveTime ScoreDisplayCalories SongBPMDisplay SongMeterDisplay Sound Controlling Sound Sprite Managing Frames StepsDisplay TextBanner WorkoutGraph Behavioral differences from SM 3."},{"id":166,"href":"/dev/actors/actortypes/memorycarddisplay/","title":"MemoryCardDisplay","parent":"Actor Types","content":"Creates an ActorFrame that contains a Sprite with the current status for a Player\u0026rsquo;s MemoryCard.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } On each memory card update, the actor will be updated to detect if the card is loaded, ejected, checking, toolate, non-existent, and others.\nThe graphics used to update this actor are located in Graphics/MemoryCardDisplay [Card State] p[PlayerNumber index]. List of MemoryCard states used by MemoryCardDisplay. ↕ MemoryCardDisplay checking p1 MemoryCardDisplay checking p2 MemoryCardDisplay error p1 MemoryCardDisplay error p2 MemoryCardDisplay late p1 MemoryCardDisplay late p2 MemoryCardDisplay none p1 MemoryCardDisplay none p2 MemoryCardDisplay ready p1 MemoryCardDisplay ready p2 MemoryCardDisplay removed p1 MemoryCardDisplay removed p2 Attributes Name Type Action PlayerNumber PlayerNumber The player to check its current MemoryCard state. ","description":"Creates an ActorFrame that contains a Sprite with the current status for a Player\u0026rsquo;s MemoryCard.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } On each memory card update, the actor will be updated to detect if the card is loaded, ejected, checking, toolate, non-existent, and others.\nThe graphics used to update this actor are located in Graphics/MemoryCardDisplay [Card State] p[PlayerNumber index]. List of MemoryCard states used by MemoryCardDisplay. ↕ MemoryCardDisplay checking p1 MemoryCardDisplay checking p2 MemoryCardDisplay error p1 MemoryCardDisplay error p2 MemoryCardDisplay late p1 MemoryCardDisplay late p2 MemoryCardDisplay none p1 MemoryCardDisplay none p2 MemoryCardDisplay ready p1 MemoryCardDisplay ready p2 MemoryCardDisplay removed p1 MemoryCardDisplay removed p2 Attributes Name Type Action PlayerNumber PlayerNumber The player to check its current MemoryCard state."},{"id":167,"href":"/dev/actors/actortypes/meterdisplay/","title":"MeterDisplay","parent":"Actor Types","content":"The base for SongMeterDisplay, which uses two Actors to render the progress of a given value.\nUnlike SongMeterDisplay, MeterDisplay doesn\u0026rsquo;t update by itself. In order to perform updates, you have to manually set a new width and position value for Stream and Tip. Def.MeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type. Stream=Def.Sprite{ Texture=\u0026#34;MyStreamBar\u0026#34; }, Tip=Def.Sprite{ Texture=\u0026#34;MyTip\u0026#34; } } Attributes Name Type Action StreamWidth number The width the MeterDisplay. Can be adjusted later with SetStreamWidth. Stream Actor The actor that will represent the progress of the song. Tip Actor The actor that will represent the current position of the song. The Stream attribute is required for the SongMeterDisplay to be created. Otherwise it will return an empty Actor. Both Stream and Tip can be any kind of Actor. Functions SetStreamWidth (float Width)\nAdjusts the width of the MeterDisplay to the desired Width.\n","description":"The base for SongMeterDisplay, which uses two Actors to render the progress of a given value.\nUnlike SongMeterDisplay, MeterDisplay doesn\u0026rsquo;t update by itself. In order to perform updates, you have to manually set a new width and position value for Stream and Tip. Def.MeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played."},{"id":168,"href":"/dev/actors/actortypes/model/","title":"Model","parent":"Actor Types","content":"Allows one to display MilkShape3D ASCII models, having separate attributes for materials, bones and meshes.\nDef.Model{ Meshes=\u0026#34;MyModel.txt\u0026#34;, Materials=\u0026#34;MyModel.txt\u0026#34;, Bones=\u0026#34;MyModel.txt\u0026#34;, OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) end } Meshes are the composition and structure of the Model. This data represents the vertices that make the Model take shape.\nMaterials are the textures that the model will use. These can be any of the image formats listed in the Supported File Extensions page. They can also be .ini files that define animated textures on a Def.Sprite.\nBones make the model come to life. They can be defined within the primary model file, or, in the case of dancing characters, be controlled via a separate file that only contains the bones.\nIn the above example, all three attributes used the same filepath; all the necessary data was contained within a single file. It is possible to configure the MilkShape 3D software to output distinct files for meshes, materials, and bones, and set each Def.Model attribute accordingly, but that is outside the scope of this lesson.\nAll three attributes must be provided within Def.Model as paths to resources that can be loaded or the game will crash. Table of Contents Loading Additional Bones Attributes Name Type Action Meshes string Path to a MilkShape 3D ASCII text file containing model meshes. Materials string Path to a MilkShape 3D ASCII text file containing model materials. Bones string Path to a MilkShape 3D ASCII text file containing model bones. ","description":"Allows one to display MilkShape3D ASCII models, having separate attributes for materials, bones and meshes.\nDef.Model{ Meshes=\u0026#34;MyModel.txt\u0026#34;, Materials=\u0026#34;MyModel.txt\u0026#34;, Bones=\u0026#34;MyModel.txt\u0026#34;, OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) end } Meshes are the composition and structure of the Model. This data represents the vertices that make the Model take shape.\nMaterials are the textures that the model will use."},{"id":169,"href":"/dev/actors/actortypes/notefield/","title":"NoteField","parent":"Actor Types","content":" Contains the receptors and notes that are seen in gameplay. Normally seen in Player actors.\nDef.NoteField through lua allows one to create extra NoteFields that aren\u0026rsquo;t bound to a Player actor.\nlocal receptposnorm = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposreve = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) local yoffset = receptposreve-receptposnorm local notefieldmid = (receptposnorm + receptposreve)/2 local def_dda = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceAfterTargetsPixels\u0026#34;) local def_ddb = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceBeforeTargetsPixels\u0026#34;) Def.ActorFrame{ FOV=45, InitCommand= function(self) self:zoom(SCREEN_HEIGHT/480):Center() end, Def.NoteField{ Player= PLAYER_1, NoteSkin= \u0026#34;Exact3D\u0026#34;, DrawDistanceAfterTargetsPixels= def_dda, DrawDistanceBeforeTargetsPixels= def_ddb, YReverseOffsetPixels= yoffset, FieldID= 3, InitCommand= function(self) self:y(notefieldmid) end, } } In the above example, The resulting NoteField is relatively close to what a NoteField in a Player would be like. The NoteSkin chosen is \u0026ldquo;Exact3D\u0026rdquo;, while the positioning is based off of theme metrics.\nBecause Player is set to PLAYER_1, it will also grab the Chart that Player 1 selected and read from Player 1\u0026rsquo;s input.\nBecause this NoteField is not drawn by an actual Player actor, Mini won\u0026rsquo;t zoom the NoteField, and perspective modifiers will do nothing. Those will have to be replicated manually. Check How a Player Manipulates its\u0026rsquo; NoteField for more information on how to recreate it. Table of Contents Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation Attributes Name Type Action Default NoteSkin string The NoteSkin to use for the NoteField. \u0026ldquo;default\u0026rdquo; DrawDistanceAfterTargetsPixels float How far back missed notes draw (in pixels) -128 DrawDistanceBeforeTargetsPixels float How far down the NoteField draws (in pixels) 480 YReverseOffsetPixels float The center-point of the NoteField 288 Chart string Chart to load \u0026ldquo;Invalid\u0026rdquo; (Grab from chosen Player) Player int Player to grab chart and input from 0 (Player 1) InitMods string Modifiers the NoteField start with. \u0026quot;\u0026quot; (No modifiers) FieldID int What ID the NoteField uses (Affects Tornado, Invert, Tipsy, Expand \u0026amp; Beat) 0 AutoPlay boolean AutoPlay the given chart. false ","description":"Contains the receptors and notes that are seen in gameplay. Normally seen in Player actors.\nDef.NoteField through lua allows one to create extra NoteFields that aren\u0026rsquo;t bound to a Player actor.\nlocal receptposnorm = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposreve = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) local yoffset = receptposreve-receptposnorm local notefieldmid = (receptposnorm + receptposreve)/2 local def_dda = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceAfterTargetsPixels\u0026#34;) local def_ddb = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceBeforeTargetsPixels\u0026#34;) Def.ActorFrame{ FOV=45, InitCommand= function(self) self:zoom(SCREEN_HEIGHT/480):Center() end, Def.NoteField{ Player= PLAYER_1, NoteSkin= \u0026#34;Exact3D\u0026#34;, DrawDistanceAfterTargetsPixels= def_dda, DrawDistanceBeforeTargetsPixels= def_ddb, YReverseOffsetPixels= yoffset, FieldID= 3, InitCommand= function(self) self:y(notefieldmid) end, } } In the above example, The resulting NoteField is relatively close to what a NoteField in a Player would be like."},{"id":170,"href":"/dev/actors/actortypes/percentagedisplay/","title":"PercentageDisplay","parent":"Actor Types","content":"The PercentageDisplay is an actor which relies on BitmapText to draw a player\u0026rsquo;s current score in a percentage (%).\nWhile using this actor, any kind of text string manipulation won\u0026rsquo;t work if AutoRefresh is enabled, as it constantly updates the BitmapText for Percent and PercentRemainder (if defined) with the current percent data.\nIf Percentage Scoring is disabled, this actor will show the score in Dance Points instead (000000000).\nNote that this won\u0026rsquo;t add commas to the score, so it will need to be declared using the commify function on the FormatPercentScore Attribute.\nDef.PercentageDisplay{ DancePointsDigits = 2, AutoRefresh = true, FormatPercentScore = Percent = Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34; -- Alias of the default font. } PercentRemainder = Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34; -- Alias of the default font. } } Table of Contents Attributes Name Type Action DancePointsDigits int Defines how many digits should be shown when the score needs to be presented as dance points. Applicable if Percentage Scoring is disabled. AutoRefresh bool Tells the actor to automatically update if there\u0026rsquo;s any update to the player\u0026rsquo;s score. FormatPercentScore function Tells the actor how to present this percentage score for the Percent and PercentRemainder actors. Applicable if Percentage Scoring is enabled. Percent BitmapText The text that will draw the main percentage. Can also draw the entire percentage (including decimals) if PercentRemainder is not defined. PercentRemainder BitmapText The text that will draw the decimals for the percentage score. Functions LoadFromStats ( PlayerState state, PlayerStageStats stats )\nLoads the player information so the PercentageDisplay can update based on the player data.\nIf AutoRefresh is off, this data won\u0026rsquo;t be updated automatically and the function will need to be called again manually to perform the same thing. ","description":"The PercentageDisplay is an actor which relies on BitmapText to draw a player\u0026rsquo;s current score in a percentage (%).\nWhile using this actor, any kind of text string manipulation won\u0026rsquo;t work if AutoRefresh is enabled, as it constantly updates the BitmapText for Percent and PercentRemainder (if defined) with the current percent data.\nIf Percentage Scoring is disabled, this actor will show the score in Dance Points instead (000000000).\nNote that this won\u0026rsquo;t add commas to the score, so it will need to be declared using the commify function on the FormatPercentScore Attribute."},{"id":171,"href":"/","title":"Project OutFox Wiki","parent":"","content":"Welcome to the documentation wiki for Project OutFox! Project OutFox is a multi-moded rhythm game sandbox. It features 17 (and growing!) different simulation styles allowing players to create unique experiences in charting, gimmicks and effects to outfox their friends! The game allows for full customisation and supports a number of community led custom chart formats.\nThis wiki is still a work in progress, so keep checking back for updates on new content! It is edited via a Git repository; commit access is limited to the development team, but you can always perform pull requests too.\nTable of contents Info on Project OutFox About FAQ The Team Release History Our Project Roadmap OutFox Serenity User\u0026rsquo;s guide Installing OutFox Let's Get Started Configure Controllers Supported Game Modes Content folders Preferences.ini file For Developers and Creators NoteLoader support Lua and Actors Effects and Gimmicks Chart Editor Modifiers Translation Theming Credits and license Text available under the CC-BY SA 4.0 licence, attributed to Team Rizu unless otherwise noted.\nPowered by GitHub Pages, Hugo, and Geekdocs.\n","description":"Welcome to the documentation wiki for Project OutFox! Project OutFox is a multi-moded rhythm game sandbox. It features 17 (and growing!) different simulation styles allowing players to create unique experiences in charting, gimmicks and effects to outfox their friends! The game allows for full customisation and supports a number of community led custom chart formats.\nThis wiki is still a work in progress, so keep checking back for updates on new content!"},{"id":172,"href":"/dev/actors/actortypes/quad/","title":"Quad","parent":"Actor Types","content":"An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor does not contain any attributes, and uses all the functions available for Actor.\n","description":"An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor does not contain any attributes, and uses all the functions available for Actor."},{"id":173,"href":"/dev/actors/actortypes/scoredisplayalivetime/","title":"ScoreDisplayAliveTime","parent":"Actor Types","content":"A BitmapText that provides the amount of time the player has survived throughout the current session.\nDef.ScoreDisplayAliveTime{ PlayerNumber = PLAYER_1, MultiPlayer = \u0026#34;MultiPlayer_P1\u0026#34; } Attributes Only one of the attributes is needed to make the actor function. Name Type Action PlayerNumber PlayerNumber The player to obtain its alive time during the session. MultiPlayer Multiplayer The multiplayer to obtain its alive time during the session. This actor inherits the attributes from BitmapText.\n","description":"A BitmapText that provides the amount of time the player has survived throughout the current session.\nDef.ScoreDisplayAliveTime{ PlayerNumber = PLAYER_1, MultiPlayer = \u0026#34;MultiPlayer_P1\u0026#34; } Attributes Only one of the attributes is needed to make the actor function. Name Type Action PlayerNumber PlayerNumber The player to obtain its alive time during the session. MultiPlayer Multiplayer The multiplayer to obtain its alive time during the session. This actor inherits the attributes from BitmapText."},{"id":174,"href":"/dev/actors/actortypes/scoredisplaycalories/","title":"ScoreDisplayCalories","parent":"Actor Types","content":"A BitmapText that provides the amount of calories burned throughout the session.\nDef.ScoreDisplayCalories{ PlayerNumber = PLAYER_1, } Attributes Name Type Action PlayerNumber PlayerNumber The player to obtain the amount of calories burned throughout the session. This actor inherits the attributes from BitmapText.\n","description":"A BitmapText that provides the amount of calories burned throughout the session.\nDef.ScoreDisplayCalories{ PlayerNumber = PLAYER_1, } Attributes Name Type Action PlayerNumber PlayerNumber The player to obtain the amount of calories burned throughout the session. This actor inherits the attributes from BitmapText."},{"id":175,"href":"/dev/actors/actortypes/songbpmdisplay/","title":"SongBPMDisplay","parent":"Actor Types","content":"A slightly automated version of BPMDisplay that automatically updates the text to the BPM range from a given player.\nDef.SongBPMDisplay{ Player = PLAYER_1, } Attributes Functions SetFromGameState SetFromSong SetFromSteps SetFromCourse GetText Attributes Name Type Action Player PlayerNumber The player to obtain the current BPM from. This actor inherits the attributes from BitmapText.\nFunctions These functions also work on BPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)\nSets the BPM to the song\u0026rsquo;s BPM range. This value can be tricked if the chart is using a specified BPM rather than the actual BPM, or even jumbled if it\u0026rsquo;s tagged as random.\nSetFromSteps (Steps data)\nSets the BPM to the steps\u0026rsquo;s BPM range. Useful if the current steps contain different timing data.\nSetFromCourse (Course pCourse)\nObtains the BPM range from the course. A couple of rules are applied here:\nThe operation will fail if there are no steps available on the course for the current StepsType. If there are more entries than the value of Common::MaxCourseEntriesBeforeShowVarious (Default: 10), the course is considered various, and instead will output the text defined on BPMDisplay::VariousText (Default: \u0026quot;000\u0026quot;). GetText Gets the current value that the SongBPMDisplay contains.\n","description":"A slightly automated version of BPMDisplay that automatically updates the text to the BPM range from a given player.\nDef.SongBPMDisplay{ Player = PLAYER_1, } Attributes Functions SetFromGameState SetFromSong SetFromSteps SetFromCourse GetText Attributes Name Type Action Player PlayerNumber The player to obtain the current BPM from. This actor inherits the attributes from BitmapText.\nFunctions These functions also work on BPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead."},{"id":176,"href":"/dev/actors/actortypes/songmeterdisplay/","title":"SongMeterDisplay","parent":"Actor Types","content":"An automated MeterDisplay that shows the current position of the song being played.\nDef.SongMeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type. Stream=Def.Sprite{ Texture=\u0026#34;MyStreamBar\u0026#34; }, Tip=Def.Sprite{ Texture=\u0026#34;MyTip\u0026#34; } -- New to OutFox: Allows the SongMeterDisplay to start from second 0, rather than the restart of the StartFromZero=false, } Attributes Name Type Action StreamWidth number The width the MeterDisplay. Can be adjusted later with SetStreamWidth. Stream Actor The actor that will represent the progress of the song. Tip Actor The actor that will represent the current position of the song. StartFromZero bool New to OutFox: Allows the SongMeterDisplay to start from second 0, rather than the start of the chart. The Stream is the background of the meter, which denotes how far you are in the song, while the Tip is the current position.\nThe Stream attribute is required for the SongMeterDisplay to be created. Otherwise it will return an empty Actor. Both Stream and Tip can be any kind of Actor. Position Logic When a song is playing, it will detect both player\u0026rsquo;s positions, and check which one has the longest position to determine as the end, as the song will end once everyone\u0026rsquo;s steps are over. If only player is present, it will automatically grab that player instead.\nFunctions SetStreamWidth (float Width)\nAdjusts the width of the MeterDisplay to the desired Width.\n","description":"An automated MeterDisplay that shows the current position of the song being played.\nDef.SongMeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type."},{"id":177,"href":"/dev/actors/actortypes/sound/","title":"Sound","parent":"Actor Types","content":"Used to play sound files outside of the common theme sound effects and the simfile\u0026rsquo;s song itself.\nRemoves the need to use SOUND:PlayOnce(), as it allows for pre-loading the sound file at the start instead of loading (possibly many times) and playing the sound mid-screen.\nDef.Sound{ -- Load the audio called MySound, which is a ogg file in this example. File=\u0026#34;MySound.ogg\u0026#34;, -- Lets the audio pane from side to side. Useful for audios that need to play on a specific player side. SupportPan=true, -- Allows the audio to change rate and pitch. SupportRateChanging=false, -- this assigns the audio to be an Action, which is a flag for sounds that allows it to be muted by the player, -- with the use of the Mute Actions key (Default to \u0026#34;Pause\u0026#34;). IsAction=true, OnCommand=function(self) -- When creating the actor, sound will not play automatically, so you need to use the play command -- to perform such action. self:play() -- If the audio has the \u0026#34;(loop)\u0026#34; flag set on its filename, it will loop infinetly. So to top it, use the -- appropiate command. self:stop() -- If the sound needs to be paused on a particular frame, and not to reset, use the pause command. self:pause( true ) -- Use false to resume it. end } Table of Contents Controlling Sound Attributes Name Type Action File string The audio file to be utilized for this Sound. SupportPan bool Lets the audio pane from side to side. Useful for audios that need to play on a specific player side. SupportsRateChanging bool Allows the audio to change rate and pitch. IsAction bool Assigns the audio to become a Sound Effect, which allows it to be muted by the player if they so choose from the Effect Volume Introduced in Project OutFox 4.9.9 or by the MuteActions preference. Precache bool Tells the engine to store this sound on memory for later use. ","description":"Used to play sound files outside of the common theme sound effects and the simfile\u0026rsquo;s song itself.\nRemoves the need to use SOUND:PlayOnce(), as it allows for pre-loading the sound file at the start instead of loading (possibly many times) and playing the sound mid-screen.\nDef.Sound{ -- Load the audio called MySound, which is a ogg file in this example. File=\u0026#34;MySound.ogg\u0026#34;, -- Lets the audio pane from side to side. Useful for audios that need to play on a specific player side."},{"id":178,"href":"/dev/actors/actortypes/sprite/","title":"Sprite","parent":"Actor Types","content":"Allows one to display images on screen. These images can be a png, jpeg, gif or even a video file.\nDef.Sprite{ Texture=\u0026#34;MyTexture.png\u0026#34;, -- The Texture is optional, you can start a sprite without a texture. -- You can manipulate the amount of frames that a sprite can use using the Sprite argument. Frames={ -- The structure for the Frame is as follows: --{ Frame = int, Delay = float , {float,float}, {float,float} } -- The two tables are optional upper left and lower right corners of the fraction of the -- frame to use. -- This will make a 4 frame sprite toggle between its frames for 0.5 seconds, -- making a 2 second animation. { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 3, Delay = 0.5 }, }, OnCommand=function(self) -- You can also load new textures after assigning one beforehand. -- The path in Load is absolute, so you must put the entire path to the new image. self:Load( --[[ [Path to another texture] ]] ) -- You can pause or jump to other sprites with the following commands. self:animate(0) -- 0 pauses the animation, 1 resumes it (Can be used as well for Models). self:pause() -- An alias for animate(0) (Can be used as well for Models). self:play() -- An alias for animate(1) (Can be used as well for Models). -- setstate jumps to a frame of the animation assigned. Animation states are 0-indexed. self:setstate( 2 ) -- Jumps to the third frame of the animation. -- If an out-of-range value is assigned ( \u0026lt; 0 or \u0026gt; #Frames ), an error is displayed -- displaying the total amount of frames available on the current sprite. -- The Frames set can also be manipulated during runtime, by using the SetStateProperties -- function. This example now inverts the animation. self:SetStateProperties( { { Frame = 3, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 0, Delay = 0.5 }, } ) end } Table of Contents Managing Frames Attributes Name Type Action Texture string Path to the texture to use for this sprite actor. Frames table The table containing the frame per frame information to be interpreted by the actor. For more information, see Managing Frames. Frame[NNNN] number Alternative method for Frames\u0026rsquo;s version of { Frame = number }, used for backwards compatibility with older actors. Delay[NNNN] number Alternative method for Frames\u0026rsquo;s version of { Delay = number }, used for backwards compatibility with older actors. ","description":"Allows one to display images on screen. These images can be a png, jpeg, gif or even a video file.\nDef.Sprite{ Texture=\u0026#34;MyTexture.png\u0026#34;, -- The Texture is optional, you can start a sprite without a texture. -- You can manipulate the amount of frames that a sprite can use using the Sprite argument. Frames={ -- The structure for the Frame is as follows: --{ Frame = int, Delay = float , {float,float}, {float,float} } -- The two tables are optional upper left and lower right corners of the fraction of the -- frame to use."},{"id":179,"href":"/dev/actors/actortypes/stepsdisplay/","title":"StepsDisplay","parent":"Actor Types","content":"Displays the data for a given chart. Can show difficulty number, description, credit, if it’s autogen and steps type. Currently, all setings are done through metrics.\nDef.StepsDisplay{} Attributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame. All special actions are performed with its functions.\nMetrics Loading When using the Load command, the following metrics are read to generate the StepsDisplay.\nName Type Action NumTicks number Amount of ticks to show all the time. MaxTicks number The max ammount of ticks to draw. ShowTicks bool Enables the ticks. These are graphics that indicate the number of difficulty in individual blocks. ShowMeter bool Enables the meter number. ShowDescription bool Enables the chart description (if available). ShowCredit bool Enables the chart credit for the steps (if available). ShowAutogen bool Enables an icon to indicate this chart has been auto-generated. ShowStepsType bool Enables the Steps type to the StepsDisplay. ZeroMeterString string The string to show when the value is 0. MeterFormatString string The string to format the value for the difficulty meter. The display frame, Autogen and StepsType are AutoActors; while Ticks, Meter, Description and Credit are BitmapText. All of these actors contain their own On, Load and Set commands. Default values ↕ [StepsDisplay] FrameX=0 FrameY=0 FrameOnCommand= FrameLoadCommand=%function(self,param) local bFlip = param.PlayerState and param.PlayerState:GetPlayerNumber() ~= PLAYER_1; self:zoomx(bFlip and -1 or 1); end FrameSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)) end end NumTicks=10 MaxTicks=14 TicksX=0 TicksY=0 TicksOnCommand=shadowlength,0; TicksSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)) if param.Meter \u003e 9 then self:glowshift() else self:stopeffect() end end end ShowTicks=false ShowMeter=true MeterFormatString=\"%i\" ZeroMeterString=\"?\" MeterX=30 MeterY=0 MeterOnCommand=shadowlength,0 MeterSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end ShowDescription=true DescriptionX=-10 DescriptionY=0 DescriptionOnCommand=shadowlength,0;uppercase,true; DescriptionSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end ShowCredit=false CreditX=0 CreditY=0 CreditOnCommand= CreditSetCommand= ShowAutogen=true AutogenX=40 AutogenY=0 AutogenOnCommand= AutogenSetCommand= ShowStepsType=false StepsTypeX=0 StepsTypeY=0 StepsTypeOnCommand= Updating information When an update occurs to the StepsDisplay, the Set command is triggered, which contains a parameters table with the following information:\nName Type Description CustomDifficulty string The difficulty for this item. The reason why it\u0026rsquo;s called CustomDifficulty is due to it using the CustomDifficulty metrics table, which allows you to customize the name of the difficulties in the theme to your liking. Meter number The chart meter for this item. DisplayDescription string The description for the chart. Can be empty. Steps Steps The whole steps object. This object contains the information for Meter. Not available in Course Mode. Trail Trail The whole trail object. Not available in Regular Mode. StepsType StepsType The steps type that corresponds to this item. Functions Load (string sMetricsGroup)\nLoads the settings from the sMetricsGroup in the theme\u0026rsquo;s metrics.ini.\nSetFromSteps (Steps steps)\nLoad the data for the StepsDisplay with the steps provided.\nSetFromTrail (Trail trail)\nLoad the data for the StepsDisplay with the trail provided.\nSetFromGameState Loads the data for the StepsDisplay with the currently available data from GameState.\n","description":"Displays the data for a given chart. Can show difficulty number, description, credit, if it’s autogen and steps type. Currently, all setings are done through metrics.\nDef.StepsDisplay{} Attributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame. All special actions are performed with its functions.\nMetrics Loading When using the Load command, the following metrics are read to generate the StepsDisplay.\nName Type Action NumTicks number Amount of ticks to show all the time."},{"id":180,"href":"/tags/","title":"Tags","parent":"Project OutFox Wiki","content":"","description":""},{"id":181,"href":"/dev/actors/actortypes/textbanner/","title":"TextBanner","parent":"Actor Types","content":"TextBanner is an automated ActorFrame that processes information from a Song or Course to fill in data to several included BitmapText actors.\nThis is used by the music wheel and the editor song selection screens to show the information of each song in the wheel or about the current song being selected to edit respectively.\nThe following example uses the SetSong command present in CourseContentsList, which automatically calls SetSong with its own data. Def.TextBanner { InitCommand=function(self) self:Load(\u0026#34;TextBannerCourse\u0026#34;):SetFromString(\u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;) end, SetSongCommand=function(self, params) if params.Song then self:SetFromSong( params.Song ) else self:SetFromString( \u0026#34;??????????\u0026#34;, \u0026#34;??????????\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34; ) end end } Atributes Data used on load Data used on fetch Functions Load SetFromSong SetFromString Atributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame.\nData used on load When using the load function, it will requests multiple metrics from the theme.\n[TextBanner] # The name of the group can be different depending on the group that you want. TitleOnCommand=function SubtitleOnCommand=function ArtistOnCommand=function ArtistPrependString=string AfterSetCommand=function Title, SubTitle, and Artist OnCommands define how the BitmapText actors will be shown.\nArtistPrependString is a special metric that appends before the Artist data. And example, would be \u0026quot;/\u0026quot;.\nIf there\u0026#39;s no PrependString.. Artist 1 Artist 2 If there is a PrependString of \u0026#34;/\u0026#34;.. / Artist 1 / Artist 2 AfterSetCommand is a function that is called after all data has been processed on the TextBanner. This can be useful to fix any visual errors that might happen like overflowing text, incorrect sizing, and others.\nYou may notice on the mayority of themes, this metric contains a value like this:\nAfterSetCommand=%TextBannerAfterSet This a special case of using a Lua function directly on the metrics. For more information about this, check out Function loading in metrics.\nData used on fetch TextBanner uses 3 BitmapText actors to determine the following:\nTitle Subtitle Artist This can either be from a song, or from a course.\nFunctions Load (string sMetricsGroup)\nRequests the TextBanner to load up settings present on the sMetricsGroup provided on the current theme\u0026rsquo;s metrics.ini file. For more information about what metrics are used, check Data used on load.\nSetFromSong (song pSong)\nUpdates the TextBanner to show information from the Song given.\nSetFromString (string displayTitle, string translitTitle, string displaySubTitle, string translitSubTitle, string displayArtist, string translitArtist)\nUpdates the TextBanner to display custom information based on the strings provided.\nAll parameters must contain some kind of string, otherwise it will error. If there\u0026rsquo;s no information needed on one of the sections, use an empty string instead. ","description":"TextBanner is an automated ActorFrame that processes information from a Song or Course to fill in data to several included BitmapText actors.\nThis is used by the music wheel and the editor song selection screens to show the information of each song in the wheel or about the current song being selected to edit respectively.\nThe following example uses the SetSong command present in CourseContentsList, which automatically calls SetSong with its own data."},{"id":182,"href":"/dev/theming/Theming-0-Differences/","title":"Theming differences between older versions","parent":"Introduction to theming","content":"It is important to note the following aspects when starting to make your theme, depending on how much you\u0026rsquo;ve experimented on existing themes, and compare the practices of such actions compared to now.\nThere are no things such as \u0026ldquo;header\u0026rdquo;, \u0026ldquo;help\u0026rdquo; and \u0026ldquo;footer\u0026rdquo; by default Date of change: starting on SM-SSC\nYou may have noticed themes even in SM5 and later that include header and footer, while technically they exist on those theme\u0026rsquo;s scopes, they are not created by the engine. It is usually created on ScreenWithMenuElements decorations in a conditional function called StandardDecorationFromFileOptional, which looks for a metric on the current screen (or ScreenWithMenuElements as a fallback), to determine if it should be created or not.\nHere\u0026rsquo;s an implementation of such thing in Soundwaves.\n-- Loads up a slew of objects to load into the screen, like how 3.9 does. -- I prefer to keep these optional, incase another screen wants to hide -- these elements. return Def.ActorFrame { StandardDecorationFromFileOptional(\u0026#34;Header\u0026#34;,\u0026#34;Header\u0026#34;), StandardDecorationFromFileOptional(\u0026#34;Footer\u0026#34;,\u0026#34;Footer\u0026#34;), StandardDecorationFromFileOptional( \u0026#34;Help\u0026#34;, \u0026#34;Help\u0026#34; )\t} And its application on a screen that, for example, does not want both header and footer.\n[ScreenInit] ShowHeader=false ShowFooter=false Numbers folder does not exist Date of change: starting on SM-SSC\nStarting in SM-SSC, fonts that were only number implemented now reside alongside the standard font glyphs in the Fonts folder (and are indicated with the [numbers] tag on their filename).\nXML loading of files is not applicable Date of change: SM4 Beta 5\nLua is the scripting language for modern StepMania builds. If any kind of XML loading is needed, you will need to instruct the user to enable \u0026ldquo;Quirks Mode\u0026rdquo;, an option on the Preferences.ini file that allows loading of XML files in a compatibility layer.\nCMD is deprecated Date of change: OutFox Alpha 3\ncmd() is a string-like command that allows application of commands without performing the entire syntax in plain Lua. However, it is not recommended to use this for commands, as it can bring bugs which will be mentioned below, but also introduces loading overhead as it has to convert the string back into actual Lua.\n-- cmd example OnCommand=cmd(Center;rainbow;zoom,0.5); -- Lua example OnCommand=function(self) self:Center():rainbow():zoom(0.5) end Some bugs to point out from CMD self cannot be utilized to obtain itself as self is a non-existant object in its scope. -- This will fail because the engine doesn\u0026#39;t know what self is in this scope. OnCommand=cmd(zoomx,self:GetZoomedWidth()*.5); ","description":"It is important to note the following aspects when starting to make your theme, depending on how much you\u0026rsquo;ve experimented on existing themes, and compare the practices of such actions compared to now.\nThere are no things such as \u0026ldquo;header\u0026rdquo;, \u0026ldquo;help\u0026rdquo; and \u0026ldquo;footer\u0026rdquo; by default Date of change: starting on SM-SSC\nYou may have noticed themes even in SM5 and later that include header and footer, while technically they exist on those theme\u0026rsquo;s scopes, they are not created by the engine."},{"id":183,"href":"/dev/actors/actortypes/workoutgraph/","title":"WorkoutGraph","parent":"Actor Types","content":"A graph showing the difficulty meter values of each entry on a course. Despite its name, it doesn\u0026rsquo;t actually calculate anything about calories or workout.\nThe graph has a hardcoded ceiling of 35, being tied to the maximum difficulty value allowed in legacy SM.\nThis actor will only work on Course Mode! Def.WorkoutGraph{ OnCommand=function(self) self:SetFromCurrentWorkout() end } An example of the WorkoutGraph in action, after a 5-song course.\nThis image is using custom graphics to demonstrate the functionality of the actor. It is empty graphics by default. Attributes Graphics used Functions SetFromCurrentWorkout SetFromGameStateAndHighlightSong Attributes There are no special attributes for this actor class. It inherits from ActorFrame.\nGraphics used This actor loads special graphics to create the graph.\nWorkoutGraph empty Background for the workout graph.\nWorkoutGraph bar The vertical bar to indicate the calories burned on each song.\nFunctions SetFromCurrentWorkout Calls the data to be obtained from the \u0026ldquo;current workout\u0026rdquo;, which is the current session of your course.\nSetFromGameStateAndHighlightSong (number numSongs)\nPerforms the same action as SetFromCurrentWorkout, but allows you to set a limit on how many songs should be shown in the graph.\n","description":"A graph showing the difficulty meter values of each entry on a course. Despite its name, it doesn\u0026rsquo;t actually calculate anything about calories or workout.\nThe graph has a hardcoded ceiling of 35, being tied to the maximum difficulty value allowed in legacy SM.\nThis actor will only work on Course Mode! Def.WorkoutGraph{ OnCommand=function(self) self:SetFromCurrentWorkout() end } An example of the WorkoutGraph in action, after a 5-song course.\nThis image is using custom graphics to demonstrate the functionality of the actor."}] \ No newline at end of file +[{"id":0,"href":"/releases/A0.5.0-full/","title":"OutFox Alpha 0.5.0 Full Changelog Build","parent":"Release History","content":" Release Date: From 2022 \u0026ldquo;Full Alpha V Changelog\u0026rdquo; Upcoming Alpha V Play Test Build pre042 - October 2023 Last \u0026lsquo;Stable\u0026rsquo; Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update. Sorry the release took over 2 months! We were working hard all that time!\nThank you for all the reports, and the playing time guys, it is really appreciated, it\u0026rsquo;s allowed us to push on with newer parts of the project that would have been delayed a bit longer if we didn\u0026rsquo;t have you kind folks playing this work-in-progress game.\nThe ChangeLog is a bit vast for this month, I hope you take a moment to sift through it, but if you have questions, either ping us in discord or leave us a message!\nWe have fixed the OS issues on Linux and MacOS 12.6.x and 13.x, sorry this update took a while!\nWe didn\u0026rsquo;t want to patch up all the tiny bits on Steam so we felt it better to just get a big update done - but we won\u0026rsquo;t do that again, it\u0026rsquo;s a bit too hairy for us!\nThank you to all the Mac and Linux users that reported the issues for us to fix, and to you guys for continuing to support our little project, as well as the players signing up to the playtest - we will be opening this up for you all very very soon!\nThis change list is pretty long, as we have several mini updates in it! I hope you enjoy reading through these, do let us know if there are things we can do to improve this experience for you guys!\nOutFox 042 is in progress! Please be patient while we work on this new build for you all!\nOutFox 0.5.0 Pre-Release Candidate 042-a24 SSE3 (Main PRETEST PlayTest Build) - September 27th 2023 ❕✅ Fixed one of the course generation issues ❕✅ Temporarily Fixed crash on RemoveAllButOneOfEachName() ❕✅ Fixed crash with bad DWI era .LRC files ❕✅ Optimise Pixel Encode/Decode (Thanks RAvenGEr) ❕✅ Fixed a small typo with playeroptions OutFox 0.5.0 Pre-Release Candidate 042-a23 SSE3 (Main PRETEST PlayTest Build) - September 24th 2023 ❕✅ Fixed crash with piuio initialisation on linux ❕✅ Fixed freezes with some load elements ❕✅ Fixed and optimised some bugs in Def.Visualiser ❕✅ Fixed memory leaks from our framebuffers ❕✅ Added ScreenTextEntry:GetText() (see lua docs for more information) ❕✅ Added self:GetSound to editor ❕✅ Editor: Fixed mouse cursor selection ❕✅ Editor: Fixed mouse drag states ❕✅ Editor: Fixed misplaced input cycles ❕✅ Editor: Fixed mouse cycles and updates ❕✅ Editor: Added new Mouse X/Y functions that are correctly scaled for legacy themes/content ❕✅ Editor: Fixed issue with speed mods, now the system uses ArbitrarySpeedMods() on options ❕✅ Fixed ancient issue with automatically translated DWI songs overwriting song titles ❕✅ Sync up the Dance theme with our upstream ❕✅ Fixed logo for theme being the playtest ❕✅ Fixed mute actions not working after first press ❕✅ Fixed couples on pump layout ❕✅ Fixed couples on smx layout ❕✅ Renamed the new userspace PIUIO driver to mk6piuio OutFox 0.5.0 Pre-Release Candidate 042-a22 SSE3 (Main PRETEST PlayTest Build) - September 10th 2023 ❕✅ Fixed bug with #LASTBEATHINT ending songs early due to StepMania 3.x editor shenanigans. ❕✅ Added \u0026ldquo;PacDriveLightOrdering=\u0026rdquo; preference to select lighting system wiring via PacDrive (Thanks jsirex) ❕✅ Added \u0026ldquo;original\u0026rdquo; legacy wiring layouts on PacDrive Linux and Windows 32/64 ❕✅ Added \u0026ldquo;lumenar\u0026rdquo;/\u0026ldquo;openitg\u0026rdquo; layout for PacDrive Linux and Windows 32/64 ❕✅ Added \u0026ldquo;minimaid\u0026rdquo; wiring layout for PacDrive Linux and Windows 32/64 ❕✅ Fixed casts in DebugTimer ❕✅ Fixed overengineered fix in gameloop ❕✅ Fixed missing Halt/Slow debug functions ❕✅ Fixed TapNote init msvc compiler warnings ❕✅ Fix and optimise DebugTimer ❕✅ Fixed missing cast lua_num in togglesongs ❕✅ Fixed type method in FailCombo ❕✅ Fixed EffectColours map to vector ❕✅ Fixed compile with Win32 / Linux UserSpace MK6PIUIO driver (it needs light init fixing) ❕✅ Fixed legacy LibUSB calls for MK6PIUIO ❕✅ Added legacy SM4 DebugTimer functions and features for gimmicks and drivers ❕✅ Added new EffectColoursMap for effects in actor ❕✅ Fixed axisfix being on all the time on SDL driver ❕✅ Allow RandomMovie picker to get from song group ❕✅ Fixed missing backplates for KBX ❕✅ Fixed parser optimisation warning ❕✅ Fixed missing banners ❕✅ Fixed NetworkServices: Disconnect ❕✅ Fixed background changes ❕✅ Fixed docker environment builds as canonical has broken gcc ❕✅ Fixed intel compiler derp in zlib ❕✅ Added data pass to arroweffects ❕✅ Added HoldLetGoGrayPercent for SimpleHolds ❕✅ Added GetNumCoOpPlayers for pump ❕✅ Fixed Missing steps lookup in ScreenDemonstration/Jukebox ❕✅ Added allow Profile to create Song folder for customsongs ❕✅ Optimised ShaderMan use and calling methods ❕✅ Added shaders to notepath ❕✅ Fixed ProcessBPMs in PIU parsers ❕✅ Added Player.SetMineSound() ❕✅ Fixed edge case PIU file loading crash ❕✅ Editor: Fixed options menu from crashing on course exit ❕✅ Editor: Added option to toggle Minimap and classic info ❕✅ Editor: Fixed backgrounds not displaying/saving ❕✅ Editor: Fixed Edit Menu - Set last edited steps when entering ❕✅ Editor: Fixed legacy .edit chart loading ❕✅ Editor: Send text info during preview mode ❕✅ LuaConsole: Add support for paste, help text ❕✅ Editor: Minimap: Draw Warp Areas ❕✅ Editor: Minimap: Support for mouse drag ❕✅ Editor: Minimap: Support for reverse ❕✅ Editor: Minimap: Scrollable area set ❕✅ Editor: Minimap: Optimise draw calls ❕✅ Editor: Minimap: Set to own class for performance ❕✅ Editor: Minimap: Initialise and set up new platform ❕✅ Editor: Allow keysounds to play on Preview ❕✅ Editor: Fixed misses not being generated on play ❕✅ Editor: Fixed marathon charts not being loaded HF Addenda:\n❕✅ Fixed bad math with Stop calculations in piu parser ❕✅ Fixed bad math with bpm changes in piu parser ❕✅ Fixed underflow in piu parser OutFox 0.5.0 Pre-Release Candidate 042-a21 SSE3 (Main PRETEST PlayTest Build) - August 23rd 2023 ❕✅ Fixed crash with PIU 0.81 StepF2 files ❕✅ Added new internal PIUIO Driver stubs to RageInputDevice ❕✅ Added new bitwise helpers for future PIUIO/ITGIO drivers for cabs ❕✅ Added new Mk5PIUIO Driver for Windows 32 ❕✅ Fixed tapnotes for non co-op charts displaying as P4 ❕✅ Fixed \u0026lsquo;dumb\u0026rsquo; compiler notes for Python23IO so it doesn\u0026rsquo;t mess up Linux/Mac compiling ❕✅ Added new Linux_PIUIO driver, Thanks D. Pohly ❕✅ Added new Linux SextetStream Support, Thanks Peter s. May ❕✅ Added Linux_TTY keyboard driver from SM4 ❕✅ Fixed buffer underrun in SteamDeck driver on Windows ❕✅ Modernised BPMsAndStops() in PIU Parser ❕✅ Fixed MSVC compiler warnings in our parsers with a small performance boost ❕✅ Fixed version stub on MacOSX as we were showing 5.3 from our legacy days OutFox 0.5.0 Pre-Release Candidate 042-a20 SSE3 (Main PRETEST PlayTest Build) - August 20th 2023 (Win32 driver test build)\n❕✅ Fixed F4 causing crashes in editor ❕✅ Fixed Warp Marker for SM parser ❕✅ Fixed Parsing iterator initialisation ❕✅ We had to move our minimum supported MacOS to 10.13, this was an apple thing sadly :( ❕✅ Fixed Python 2/3 Driver for windows 7 32bit - PLEASE TEST OutFox 0.5.0 Pre-Release Candidate 042-a19 SSE3 (Main PRETEST PlayTest Build) - August 18th 2023 ❕✅ Fixed build env for legacy systems as we\u0026rsquo;re using newer libraries ❕✅ Fixed dual input on def.optionslist ❕✅ Fixed missing playernumber on def.optionslist ❕✅ NEW!! Working SteamDeck standalone driver! This driver allows the game to properly work with the deck\u0026rsquo;s controls, which allows for extra joystick/pads/controllers to be plugged in, without Steam overwriting the input causing some of those buttons to be lost when pressed. it requires a different driver setup. You need to use: InputDrivers=sdeck,SDL\nor if you\u0026rsquo;re using midi as well, InputDrivers=portmidi,sdeck,SDL\nor just the deck: InputDrivers=sdeck,minisdl\nThis driver works on windows and linux - it\u0026rsquo;s not complete, I need to disable the mouse/keyboard emulation, but once that is done, we\u0026rsquo;re golden.\nOutFox 0.5.0 Pre-Release Candidate 042-a18 SSE3 (Main PRETEST PlayTest Build) - August 18th 2023 Compiling sucks as half past midnight\u0026hellip; Pump Bros\u0026hellip;\n❕✅ Fixed crash with people that had .mid files included in 2004-2008 dance packs from ziv\u0026hellip; ❕✅ Fixed cringe rounding error in screen width math ❕✅ Fixed method in how CopyTexture works in returning references ❕✅ Fixed ASTs to work with the new system ❕✅ Fixed placement of test input screen so it shows more button ❕✅ Fixed Def.OptionsList bugs preventing it working properly Editor Fixes\n❕✅ Added Save and load last edited song. (Needs tweaks to get the steps as well, already saving the diff and style for this!) ❕✅ Rewrote XMod/CMod scrolling for editor preview. ❕✅ Fixed render distance to not be ridiculous. ❕✅ Allow notefield to hit notes in-between warp areas. ❕✅ Made transition from XMod to CMod instant. ❕✅ Fixed render distance for Stop block areas, as they kept drawing outside of the intended area. ❕✅ Fixed CMod editor scrolling being offset by the global offset from the player. OutFox 0.5.0 Pre-Release Candidate 042-a17b SSE3 (Main PRETEST PlayTest Build) - August 15th 2023 Windows Addenda -\n❕✅ Fixed Judgement folder being wiped on uninstall, so custom judgements will not be wiped anymore. ❕✅ New Build process. Those of you on Windows, if you have time, please try between Option A and Option B for performance/feel so we can choose a suitable development path for the future. OutFox 0.5.0 Pre-Release Candidate 042-a17 SSE3 (Main PRETEST PlayTest Build) - August 13th 2023 ❕✅ Fixed frame limiter system - if you have an unstable vsync, you can now force a frame rate using the UpdateDrawLoopSeconds pref, which will give you a set FPS update! NOTE: If you have an ASUS/Alienware/ACER Gaming/DELL Gaming/MSI Gaming/Medion Gaming/Sapphire Gaming/Sammsung Gaming/HP Gaming system and are running Windows 11 - it will try to throttle your machine to reduce your \u0026lsquo;carbon footprint\u0026rsquo; check your control centre, and your GPU/Controlpanel settings. My own Laptop was throttled to 30FPS on \u0026lsquo;office mode\u0026rsquo; but when switched to gaming mode, this was unlimited FPS! This update has been pushed out over the past 6 weeks, but it is affecting Outfox and many other games as well.\n❕✅ Fixed DIV0 exploits in the loop ❕✅ Added new Reset() command to Timer ❕✅ Fixed stuck keys on MacOS ❕✅ Fixed stuck key repeat on input ❕✅ Fixed Tab not speeding up the game on some systems ❕✅ \u0026ldquo;Fixed\u0026rdquo; Lyric display for faster and slower rates, it\u0026rsquo;s a workaround, not a permanent fix, we plan to rewrite the whole system in time. ❕✅ Fixed lyrics not showing when the rate was below 0.5 on pi and linux systems OutFox 0.5.0 Pre-Release Candidate 042-a16 SSE3 (Main PRETEST PlayTest Build) - August 12th 2023 ❕✅ Fixed SetActiveFrame() animation ❕✅ Fixed missing arch specifc MacOS cmake options ❕✅ Fixed missing templating for SetActiveFrame() ❕✅ Removed JACK support on MacOS as Apple have removed it from the OS ❕✅ Fixed SelectGameMode not allowing selection on MacOS ❕✅ Fixed GameMan Crash on MacOS ❕✅ Introducing MacOS 14 Sonoma Support! ❕✅ Fixed GAMEMAN init order ❕✅ Fixed Memory overflow in gameloop ❕✅ Fixed Small optimisation in gameloop ❕✅ Fixed crash on GH/RB parsing ❕✅ Fixed crash on TJA parsing ❕✅ Fixed crash on DTX parsing OutFox 0.5.0 Pre-Release Candidate 042-a15 SSE3 (Main PRETEST PlayTest Build) - August 11th 2023 ❕✅ Updated gddm icon ❕✅ Fixed GetDuration on midi parser ❕✅ Added gh drum support in midi parser ❕✅ Added gh drum (normal5) style to playable options in rb ❕✅ Added new normal5 icon ❕✅ Fixed strum stutter on windows (please test) ❕✅ Fixed white dot in rb noteskin ❕✅ Optmised gh notedata, and set things to instrument ❕✅ Fixed crash on empty charts in midi parser ❕✅ Added TNS_W4 to pump miss for correct combo checking ❕✅ Added new cross code for gh to rb drum support in parser ❕✅ Added new combo support for pump: bad now breaks miss combo, good no longer increments combo, bad zeros hit combo - thanks to andrey for bitching at us to fix it ❕✅ Fixed errors in gameplay.lua to ensure the combocontinue and combomaintain function correctly in pump OutFox 0.5.0 Pre-Release Candidate 042-a14 SSE3 (Main PRETEST PlayTest Build) - August 8th 2023 ❕✅ NEW!! Introducing support for OutFox\u0026rsquo;s 19th Game Mode - Boxing! This mode is designed to be set up at a gym and played with joy-cons or a similar setup. It\u0026rsquo;s great fun and has a variety of punch styles. We are working on gyro/VRK support so you can play this with those controllers.\n❕✅ NEW!! Introducing support for OutFox\u0026rsquo;s 20th Game Mode - rb! This mode compliments our gh mode and is based on the familiar chart format .mid The game supports. the mode is made up of rb-easy, which is the normal 4 drum lane without the kick, rb-normal, which is the usual 4 drum lane and supporting the kick, and rb-pro, which is 4 drums, 1 kick and 3 cymbals. You can utilise songs from gh which contain drum charts easily enough!\n.chart is going to be worked on later on, this is just the skeleton remember, so a theme and mode specification and changes will happen to improve the game module, as is done with all our supported games.\nThis mode also makes OutFox the only sim in the world to support 4 Different game drum modules: gddm, taiko, bongo, rb. We hope you\u0026rsquo;ll be as hype as us for this milestone, and to continue improving our coverage and accuracy in the modules that we support.\nrb supports PRO DRUMS out of the box, again the theme is lacking as we need to stop developing crap and focus on it in Q3/4 of this year. This mode also supports our MIDI drivers for eDrum kits! you can now use your eDrums on more than one drum mode!\n❕✅ NEW!! drum, pro-drum lane support for the mid parser! This required a major rewrite of the parsing system to match one similar to gddm/gdgf so the game knew which part of the chart was drum and such. Please test and let us know if there are any MIDI songs that have issues. Remember .chart hasn\u0026rsquo;t been adjusted yet!\n❕✅ Fixed quirk with LXIO hanging on Windows 11\n❕✅ Fixed some prefs being broken in the default metrics.ini file\n❕✅ Fixed incorrect fret notes in midi parser\n❕✅ Fixed multi-track support in midi parser\n❕✅ Fixed songs with only 1 track being used incorrectly in midi parser\n❕✅ Fixed lane allocation within midi parser\n❕✅ Fixed missing note types in the midi parser\n❕✅ Fixed detection of forced notes in the midi parser\n❕✅ Fixed detection of pro-drums in midi parser\n❕✅ Fixed missing expansion of notes needed for drum charts\n❕✅ Fixed difficulty detection in midi parser\n❕✅ Fixed missing event text support in midi parser\n❕✅ Added new enums for difficulty and chart types in midi parser\n❕✅ Added new opus support for songs in the midi parser\n❕✅ Fixed missing backgrounds in the midi parser\n❕✅ Added new guitar support: pro guitar, 6 fret guitar skeletons in midi parser\n❕✅ Added new drum support: pro drums, easy drums, normal drums in midi parser\n❕✅ Added new keys support: pro keys and normal keys skeletons in midi parser\n09-08-2023 addenda ❕✅ Fixed missing graphics on new mode ❕✅ Fixed quirk with bad bpm calls on midi parser ❕✅ Fixed quirk with time signatures on midi parser ❕✅ New!! Added digital control driver for SteamDeck using HIDRAW. Analogue is to be finished. Ask squirrel if you have windows on your deck on how to test, i will build linux in the mornin as i\u0026rsquo;m dead. OutFox 0.5.0 Pre-Release Candidate 042-a13 SSE3 (Main PRETEST PlayTest Build) - August 5th 2023 ❕✅ Forced best guess pref on Linux to fix Kernel 5.13+ issues ❕✅ Added new #Metadata tag to the SSC specification. ❕✅ Added TNS_W5 to reset combo for pump ❕✅ Fixed crash with non existing driver being presented ❕✅ Fixed quirk with game mode resetting ❕✅ Fixed bug in lua not being reset correctly when changing game mode ❕✅ Fixed crash on some systems that do not present a loading window ❕✅ Fixed crash on rendertargets ❕✅ Fixed crash on screens which do not require notedata ❕✅ Fixed crash with lateplayerjoin() on some modes by rewriting the function completely OutFox 0.5.0 Pre-Release Candidate 042-a12 SSE3 (Main PRETEST PlayTest Build) - July 30th 2023 Two builds in one day edition!!\n❕✅ Added FailPlayerInstantly when FailComboAt is reached (optional for pump) ❕✅ Fixed missing pushback for optionslists (for pump) ❕✅ Fixed Missing OptionsLists Clear (for pump) ❕✅ Fixed bug with erasing mods lists on the new modstring system ❕✅ Fixed crash with ShaderManger on some Linux/Mac versions ❕✅ Added \u0026lsquo;AddCheckpointToHead\u0026rsquo; for pump holds, means hold heads no longer count as tap notes. OutFox 0.5.0 Pre-Release Candidate 042-a11 SSE3 (Main PRETEST PlayTest Build) - July 30th 2023 ❕✅ Added a PointSize() function for Actors to compliment Points Polygon Mode ❕✅ Added NoteCullMode, that lets you set culling for notes ❕✅ Added F\u0026amp;B cull mode option to Actors, for 3D Models ❕✅ Added Note-Specific WireFrame ❕✅ Added Column-Specific NotePathWidth ❕✅ Added Note-Specific ScrollSpeedMult ❕✅ Added Note-Specific ExtendHolds ❕✅ Added Def.OptionsList, For Pump themes, and other modes [Please Test] ❕✅ Fixed bug with MIDI parser not loading some older CH files ❕✅ Added Actor Matrix Rotation commands and lua hooks ❕✅ Fixed bug with 2003 code in DirectX matrix math rounding\u0026hellip; we don\u0026rsquo;t use DirectX anymore ❕✅ Fixed bug with slow loading on legacy/SD card systems ❕✅ Fixed bug with Screen hanging on Linux/Mac ❕✅ Fixed bug with the Garbage Collector hanging theme refreshes on reboots of the game ❕✅ Fixed bug with CLANG compiling on Mac ❕✅ PUMP: Added combo effects for good and boo judges ❕✅ PUMP: Added new FailType_MissCombo which will fail players for 51 misses in a row. OutFox 0.5.0 Pre-Release Candidate 042-a10 SSE3 (Main PRETEST PlayTest Build) - July 28th 2023 ❕✅ Fixed bug with 1bit and 2 bit bmp corruption on vintage (1998-2002) BMS files ❕✅ Updated stb to reduce memory leaks on texture loading ❕✅ Fixed ManageProfiles not running OnCommand functions ❕✅ Added a new screen: ScreenOptionsToggleSongs to allow operators to select what songs are available from the music wheel. This menu is available in \u0026lsquo;Operator Options\u0026rsquo; in fallback. ❕✅ Fixed bug with ScreenEditMenu not being alphabetical ❕✅ Fixed bug with FFMPEG videos not working on Intel Macs ❕✅ Fixed bug with 2001 resolution math breaking theme layouts from SM4_beta and \u0026lt; SM 5.0.7, and some content from other forks. This resolves the framebuffer bugs added in 0.5.0-r021 ❕✅ Fixed bug with width not being a flat number ❕✅ Added points support to Polygon Mode ❕✅ Fixed Profile Editor screen from removing the current profileID when restarting ❕✅ Fixed Mac compile in NoteTypes ❕✅ Added judgeable row condition on notefield autoplay to prevent hits on warp areas ❕✅ Added basic obj condition when loading a .obj file in a def.model() ❕✅ Added NoteGroupTypes to GetNoteData() and SaveToLua(): Mentioned in TeamRizu/OutFox#666, this adds the NoteGroupType to the Lua table result that indicates the kind of group. This is necessary for the hold types as we have included MineHolds and tail-end holds. For tails, a special rule was added to only include it on the list if said tail was part of a Lift-Hold. If not, it will be reported as a standard note in the table.\nOutFox 0.5.0 Pre-Release Candidate 042-a9 SSE3 (Main PRETEST PlayTest Build) - July 8th 2023 ❕✅ AlphaV Dance Theme: Fixed player centre alignment ❕✅ AlphaV Dance Theme: Fixed longsong label ❕✅ AlphaV Dance Theme: Fixed cancel in EditProfile ❕✅ AlphaV Dance Theme: Notefield fixes ❕✅ AlphaV Dance Theme: Fixed bug with outer filter failing on Select Music ❕✅ Fixed compiler warnings ❕✅ Fixed TextEntry not being available via lua ❕✅ Removed legacy calls choking the glad renderer ❕✅ Fixed compile on mac/linux ❕✅ Fixed bug with rendertarget stack corruption ❕✅ Added new bg shader support - this is called via compilebg and compileimmediatebg and doesn\u0026rsquo;t rely on songbeat or fmusicseconds ❕✅ Fixed crash with texture deletion calls on linux ❕✅ Fixed crash with texture free calls on linux ❕✅ Fixed offset player math in soundwaves ❕✅ Updated SDL to 2.28.2 ❕✅ Fixed onemodstring narrowed math calls ❕✅ Fixed shadermanager quirks and edge case crash OutFox 0.5.0 Pre-Release Candidate 042-a8 SSE 3 TEST BUILD (Main PRETEST PlayTest Build) - July 7th 2023 ❕✅ Fixed bug with text entry sound calls crashing ❕✅ Fixed a few bugs with math calls ❕✅ Added flat map ❕✅ Fixed crash with imagecache ❕✅ Fixed crash with oob animation remaining time ❕✅ Fixed crash with tapnotes ❕✅ Fixed static cast with luna numbers ❕✅ Fixed song loading crashes ❕✅ Fixed mutex lock on song loading causing a forever hang ❕✅ Fixed crash on render target stack with ARM boards ❕✅ Fixed crash with changing screen resolution ❕✅ Fixed missing controllers on MacOS ❕✅ Fixed missing controllers on *nix and ARM ❕✅ Optimised the game to support SSE3 intrinsics - test this for now so we can see how it behaves OutFox 0.5.0 Pre-Release Candidate 042-a7 (Main PRETEST PlayTest Build) - July 5th 2023 ❕✅ AlphaV Dance Theme: Fixed instance when the user has not enough profiles to fill up the entire list in SelectProfile. ❕✅ AlphaV Dance Theme: Fixed instance when there are no profiles at all on SelectProfile. ❕✅ AlphaV Dance Theme: Fix scrolling for SelectProfile ❕✅ AlphaV Dance Theme: Fixed the scrolling for items on the right side. ❕✅ AlphaV Dance Theme: Fixed items not being selectable when connecting to OutFox Online. ❕✅ AlphaV Dance Theme: Moved Link Account to Profile to a proper spot. ❕✅ AlphaV Dance Theme: Changed font for search to be monospaced. To preserve the \u0026ldquo;SEARCH\u0026rdquo; label, it is kept as a static bitmapText. ❕✅ AlphaV Dance Theme: Changed design for next/prev buttons for OptionList. ❕✅ AlphaV Dance Theme: Set an \u0026ldquo;Off\u0026rdquo; label for Announcer picker. Will be useful for later entries. ❕✅ AlphaV Dance Theme: Made dropdown transitions and movement faster. ❕✅ AlphaV Dance Theme: Avoid making Game Select dropdown set the game on the current one. ❕✅ AlphaV Dance Theme: Changed the Game Select dropdown icons with the StyleVector ones. ❕✅ AlphaV Dance Theme: Fixed mouse input when selecting profile in ScreenSelectProfile. ❕✅ AlphaV Dance Theme: Fixed movement for supplemental input modes in InitialSetup. ❕✅ AlphaV Dance Theme: Added \u0026ldquo;groove\u0026rdquo; to game mode listings. ❕✅ AlphaV Dance Theme: GridSystem: CheckBoundry now returns the cursor for quicker lookup. ❕✅ Fixed bug with missing paths on linux memory cards due to new kernels ❕✅ Fixed bug with attacklist eating resources ❕✅ Fixed bug with missing attack approach rate calculations ❕✅ Fixed bug with selectprofile screen ❕✅ Fixed bug with missing fScale boolean check causing a few quirks ❕✅ Added new client linking skeleton (Features to come soon!) ❕✅ Fixed bug with ScoreSave lua hook ❕✅ Fixed bug with lifeweights for itg timing ❕✅ Fixed edge crash with game changing KNOWN BUGS: we are working on them!\n❌ - Changing resolution will crash the game on some systems ❌ - Steam Deck Input issues with LTek pads, will be fixed soon, I just need to write the new driver ❌ - The crashes on Windows 7 we are investigating still ❌ - Let us know if you have other issues so they can be fixed! Note: Mods will be called Gimmicks in Project OutFox moving forward, as we have more modes that use this term, and \u0026lsquo;mods\u0026rsquo; are used for speed, rather than snazzy arrow/object effects. Thanks for understanding! To play Gimmick Charts on this build of OutFox, you need to select the GROOVE mode. We have removed the main Gimmick lists and crazy sides from the Dance Mode for performance concerns for folks that play Acc/Stamina.\nThanks for your support as always, and we hope you like these changes, I know it\u0026rsquo;s a bit mad with all the new gimmicks, but these have been requested for some time.\nOutFox 0.5.0 Pre-Release Candidate 042-a6 (Main PRETEST PlayTest Build) - June 28th 2023 Poptions and AllTheMods (Part 2 of 2) build. MTK\u0026rsquo;s Power Level is over 9000! - Squirrel\n❕✅ Fixed bad boolean math with fScale narrowing \u0026lsquo;close to zero\u0026rsquo; ❕✅ Fixed bug with EndOfSong from failing on FailCombo ❕✅ AlphaV Dance Theme: Fixed init screen ❕✅ AlphaV Dance Theme: Fixed wheel favourites ❕✅ AlphaV Dance Theme: Fixed bug with minixoffset on screengameplay ❕✅ AlphaV Dance Theme: Fixed color change issues ❕✅ AlphaV Dance Theme: Added new screen avatar fixes ❕✅ AlphaV Dance Theme: Added new options and profile fixes ❕✅ AlphaV Dance Theme: Added new initial setup screens ❕✅ AlphaV Dance Theme: Fixed wheel items ❕✅ AlphaV Dance Theme: Added new click helper areas for mouse/touch panel users ❕✅ New! Added metric to themes to allow chart audio to be hidden for chart specific files - Closes TeamRizu/OutFox#645 ❕✅ Added link to original SM credits screen in fallback for folks that requested it ❕✅ Fixed bad logarithmic transcription in tiny, we needed base10 ❕✅ Fixed missing none image to be-mu/po-mu backplate ❕✅ Fixed cached images showing on jackets instead of HD versions ❕✅ Added new lua hooks for favourites ❕✅ Added new Profile:GetLastdifficulty ❕✅ Fixed invalid colours in ScreenOptionsManageProfiles ❕✅ Added Note Specific asymptote ❕✅ Added Note Specific attenuateX, attenuateY, attenuateZ ❕✅ Added Note Specific beat, beatY, beatZ ❕✅ Added Note Specific blink ❕✅ Added Note Specific blinkred, blinkgreen, blinkblue, blinkalpha ❕✅ Added Note Specific boost ❕✅ Added Note Specific boomerang ❕✅ Added Note Specific bounce, bounceZ ❕✅ Added Note Specific brake ❕✅ Added Note Specific bumpy, bumpyX, bumpyY ❕✅ Added Note Specific centered ❕✅ Added Note Specific confusion ❕✅ Added Note Specific confusionoffset ❕✅ Added Note Specific confusionX ❕✅ Added Note Specific confusionxoffset ❕✅ Added Note Specific confusionY ❕✅ Added Note Specific confusionyoffset ❕✅ Added Note Specific cubicX, cubicY, cubicZ ❕✅ Added Note Specific digital, digitalZ ❕✅ Added Note Specific dizzy ❕✅ Added Note Specific drunk, drunkY, drunkZ ❕✅ Added Note Specific expand ❕✅ Added Note Specific flip ❕✅ Added Note Specific hidden ❕✅ Added Note Specific hiddenred, hiddengreen, hiddenblue, hiddenalpha ❕✅ Added Note Specific hiddenoffset ❕✅ Added Note Specific hiddenoffsetred, hiddenoffsetgreen, hiddenoffsetblue, hiddenoffsetalpha ❕✅ Added Note Specific invert ❕✅ Added Note Specific moveX, moveY, moveZ ❕✅ Added Note Specific noteskewX, noteskewY, ❕✅ Added Note Specific orient, orientX, orientY ❕✅ Added Note Specific parabolaX, parabolaY, parabolaZ ❕✅ Added Note Specific pulseinner, pulseouter ❕✅ Added Note Specific randomspeed ❕✅ Added Note Specific reverse ❕✅ Added Note Specific roll ❕✅ Added Note Specific sawtooth, sawtoothZ ❕✅ Added Note Specific shrinkmultX ❕✅ Added Note Specific shrinklinearX ❕✅ Added Note Specific shrinkmultY ❕✅ Added Note Specific shrinklinearY ❕✅ Added Note Specific shrinkmultZ ❕✅ Added Note Specific shrinklinearZ ❕✅ Added Note Specific spiralX ❕✅ Added Note Specific spiralXoffset ❕✅ Added Note Specific spiralXperiod ❕✅ Added Note Specific spiralY ❕✅ Added Note Specific spiralYoffset ❕✅ Added Note Specific spiralYperiod ❕✅ Added Note Specific spiralZ ❕✅ Added Note Specific spiralZoffset ❕✅ Added Note Specific spiralZperiod ❕✅ Added Note Specific stealth ❕✅ Added Note Specific stealthred, stealthgreen, stealthblue, stealthalpha ❕✅ Added Note Specific sudden ❕✅ Added Note Specific suddenred, suddengreen, suddenblue, suddenalpha ❕✅ Added Note Specific suddenoffset ❕✅ Added Note Specific suddenoffsetred, suddenoffsetgreen, suddenoffsetblue,suddenoffsetalpha ❕✅ Added Note Specific square, squareZ ❕✅ Added Note Specific tanbumpy, tanbumpyX, tanbumpyY ❕✅ Added Note Specific tandigital, tandigitalZ ❕✅ Added Note Specific tandrunk, tandrunkY, tandrunkZ ❕✅ Added Note Specific tanexpand ❕✅ Added Note Specific tanpulseinner, tanpulseouter ❕✅ Added Note Specific tantornado, tantornadoZ ❕✅ Added Note Specific tornado, tornadoZ ❕✅ Added Note Specific tiny, tinyX, tinyY, tinyZ ❕✅ Added Note Specific twirl ❕✅ Added Note Specific vanish ❕✅ Added Note Specific wave ❕✅ Added Note Specific xmode ❕✅ Added Note Specific zigzag, zigzagZ OutFox 5.0.0 Pre-Release Candidate 042-a5 (Main PRETEST PlayTest Build) - June 24th 2023 Poptions and AllTheMods (part 1) build. God help me writing this\u0026hellip; - Squirrel\n❕✅ Fixed crash with some modfiles due to wrong function ❕✅ Remove 2003 era float overruns from game ❕✅ Fixed bug with legacy GL1.1 calls being used instead of 2.0-\u0026gt; ones when available ❕✅ Added ModsMap to the game ❕✅ Added new lua binding to enable backwards compatibility to the new mods system ❕✅ Added new fast abs function (xabs(x)) to the game ❕✅ Added new ActiveModsCol to the game ❕✅ Optimised comparisons in ArrowEffects ❕✅ Fixed bug with non-combo highscores overflowing and being saved incorrectly ❕✅ Fixed bug with alpha being applied on the be-mu/po-mu miss layers ❕✅ Fixed float compares on critical approach functions ❕✅ Fixed bug with tan mods in ragedisplay ❕✅ Fixed crash with game mode switching ❕✅ Fixed crash with theme switching on some modes ❕✅ Fixed some file closure calls being in the wrong place due to squirrel oopsie ❕✅ Optimised Column Specific mod reading so they don\u0026rsquo;t run like ass ❕✅ Fixed bug with duplicate variables being pushed into our stack ❕✅ Fixed fake judgements being added when there is no player stage ❕✅ Added a new \u0026lsquo;GetNoteAmount\u0026rsquo; system to the game ❕✅ Added new tapnote enums to the game ❕✅ Added new NoteBeatAdj to the game ❕✅ Added new def.notefield update loops to the game ❕✅ Added new shader support to notes and receptors ❕✅ Added new playeroptionssimple to ensure no performance loss in modes that do not need modding support ❕✅ Added new imagecache compression system to the game ❕✅ Added new Networkservicemanager system to the game ❕✅ Added new score saving and new user registration to the game ❕✅ Added new \u0026lsquo;rate\u0026rsquo; system to limit updates and frame changes for models ❕✅ Added new API token system to the game ❕✅ Fixed Matrix math for shaders ❕✅ Added SSL support for the networking system ❕✅ Fixed compiling and support for windows and mac for SSL, ensuring they sign correctly ❕✅ Added ThemeSoundModes to the game ❕✅ Added server send and receive for scores, timing, judgements and user attributes ❕✅ Fixed missing player profile saving items ❕✅ Added a new way to load a NSkin board, so it doesn\u0026rsquo;t leak memory ❕✅ Added new notefield previews to the game to support song wheels ❕✅ Added new Poptions system ❕✅ Added new methods to simplify the player options used on performance critical modes ❕✅ Fixed crashes with imagecache on SimplyLove and A3/Starlight ❕✅ Fixed order of calls for luaglobals ❕✅ Added new music wheel sorting to leak less memory ❕✅ Fixed crash on older themes when a player late joins ❕✅ Added new method to call some mods that were not properly set ❕✅ Added new faster math operations for mods ❕✅ Added new column checks so the array does not overflow ❕✅ Raised stats.xml size ❕✅ Added new column mod system to the game ❕✅ Added new approach mod snap system ❕✅ Fixed bug with songgroup vector ❕✅ Added new GetLogsPath for win32, though it should have been there a long time before ❕✅ Fixed bugs with legacy hard coded paths ❕✅ Fixed bugs with speed mods in new poptions code ❕✅ Added new KBX system support ❕✅ Fixed tween endings sometimes being skipped ❕✅ Fixed bug with mod replay/call order ❕✅ Added new clock system for some calls ❕✅ Fixed a microstutter bug call from 2005 ❕✅ Fixed spline issues ❕✅ Removed legacy asserts on button calls ❕✅ Added Actor VanishPoint to the game ❕✅ Added new favourites system to the game ❕✅ Fixed crash on miniholds ❕✅ Added new mod aliases ❕✅ Added new lua functions to properly affect ActiveMods ❕✅ Added new ActiveMods list ❕✅ Added new Hitsound system to reduce lag ❕✅ Added new FT_Sound fixes to work with the timing system ❕✅ Added new CAMOD for taitai mode ❕✅ Changed BGA to be chart based for SSC/SM chart systems, to allow for per chart backgrounds ❕✅ Added new osu based key/hitsound support ❕✅ Added support for steps in getbga() ❕✅ Added new sound mutexes ❕✅ Added new SSC hold metric features ❕✅ Added new ArrowEffectsOriginal for backwards support ❕✅ Added fixes to SimpleMods ❕✅ Added new randomseed ❕✅ Added new Groove mode, designed for modding, to prevent the normal dance mode from running mod systems it doesn\u0026rsquo;t always need. ❕✅ Fixed bug with tinyycol approach ❕✅ Added Drawholdsandtapsinsameloop pref ❕✅ Added XScrolls segment type ❕✅ Added playeroptions.getstring ❕✅ Added change with tiny, old behaviour is TinyPull ❕✅ Added HoldCullMode ❕✅ Added ApproachType Modifier ❕✅ Added Alpha channel variations for the visibility of mods ❕✅ Restored RandomVanish ❕✅ Added two new mods, Randomise and Vanish to split randomvanish ❕✅ Added OrientX and OrientY ❕✅ Added column specific Zigzag and ZigzagZ ❕✅ Added column specific Sawtooth and SawtoothZ ❕✅ Added new caching method to fix deadlocks ❕✅ Added column specific Dizzy ❕✅ Added column specific Twirl ❕✅ Added column specific Roll ❕✅ Added column specific (Tan)Drunk ❕✅ Added column specific (Tan)DrunkY ❕✅ Added column specific (Tan)DrunkZ ❕✅ Added column specific Beat, BeatY, BeatZ ❕✅ Added GetFirst/GetLast DisplayedBeat take a column ❕✅ Added column specific Boost ❕✅ Added column specific Brake ❕✅ Added column specific ScrollSpeedMult ❕✅ Added column specific Timespacing ❕✅ Added column specific StealthMines ❕✅ Added column specific StealthHolds ❕✅ Added column specific ExtendHolds ❕✅ Added column specific Orient, OrientX, OrientY ❕✅ Added column specific (Tan)Tornado and (Tan)TornadoZ ❕✅ Added column specific Square and SquareZ ❕✅ Added column specific SpiralX, SpiralY and SpiralZ ❕✅ Added column specific ParabolaX, ParabolaY and ParabolaZ ❕✅ Added column specific CubicX, CubicY and CubicZ ❕✅ Added column specific CenteredPath ❕✅ Added column specific (Tan)Tipsy ❕✅ Added SetCurrentBeat and SetcurrentMusicSeconds ❕✅ Added JudgeScale from oITG ❕✅ Added Player.SendFakeJudgment ❕✅ Fixed bug with redundant islua command ❕✅ Fixed bug with sound copying OutFox 5.0.0 Pre-Release Candidate 042-a4 (Main PRETEST PlayTest Build) - June 18th 2023 ❕✅ Fixed string.format breaking with no integer form ❕✅ Fixed CVE in cpr lib so we can compile for older OSs ❕✅ Fixed legacy linux build support ❕✅ Fixed compiler guards for cpr lib so it works with our system ❕✅ Added new be-mu/po-mu miss threshold for how long the miss layer remains visible ❕✅ Removed 2 pointless ASSERT calls as they no longer are relevant ❕✅ Fixed background draw in po-mu layers ❕✅ Fixed mac compile ❕✅ Adjusted singleton system to assist with memory management ❕✅ Fixed but with conditional states on pandathread ❕✅ Fixed backup/fallback for the new \u0026lsquo;groove\u0026rsquo; mode option ❕✅ Fixed thread calling order, as we run slightly differently now to SM ❕✅ Fixed quirk in sound driver that can cause a lock ❕✅ Fixed win compile and loading ❕✅ Fixed endless loop with unlockman ❕✅ Fixed shader calls so they now use memory cleaner ❕✅ Allowed shaders to have wide multitexture support ❕✅ Allowed our shader system to use 16 TUs for modding ❕✅ Added new gettuslots() call for modders to know how many units they have available ❕✅ Make drivers TU Alloc shader aware ❕✅ Fixed TU used in our ffmpeg driver to be RPi and legacy ATI/AMD/Nvidia friendly OutFox 5.0.0 Pre-Release Candidate 042-a3 (Main PRETEST PlayTest Build) - June 9th 2023 ❕✅ Fixed leak in be-mu backgrounds ❕✅ Added Fe-Dora build environment to support 37-\u0026gt; ❕✅ Fixed background data loading in be-mu and po-mu ❕✅ Fixed quirk with invalid background changes on older BMS/PMS files ❕✅ Added MISS/POOR support for be-mu / po-mu ❕✅ Fixed Mac sound issues ❕✅ Fixed bug in fileopen ❕✅ Fixed memory leaks in file loading ❕✅ Fixed memory leaks in song parsing ❕✅ Fixed fonts double loading ❕✅ Fixed LoadingWindow memory leaks ❕✅ Tidied up all our macros ❕✅ Fixed performance issues with the notefields OutFox 5.0.0 Pre-Release Candidate 042-a1 + a2 (Main PRETEST PlayTest Build) - May 13th 2023 ❕✅ Fixed leaks with file handles ❕✅ Fixed leaks with bad pointers ❕✅ Fixed loading window double cast, fixes a lag issue when loading on pi ❕✅ Fixed macro calls and optimised methods for tweens ❕✅ Fixed bugs with c-style code not being optimised ❕✅ Sped up tween math for mods ❕✅ Added ASin Math ❕✅ Fixed crash in lua with math.random ❕✅ Poptions optimisations for A-C - cleaning up the games code ❕✅ Fixed crash on newer linux clients requesting higher than supported colour profiles ❕✅ Optimised parser code pathways ❕✅ Fixed portaudio compile on linux ❕✅ Fixed getposition on portaudio ❕✅ Fixed wasapi link on rtaudio ❕✅ Sped up math calculations for sine based tweens ❕✅ Fixed missing posmap on audio optimisations ❕✅ Fixed wheelbase item data sorting for future options for non-dance modes ❕✅ Removed autoptr from the game ❕✅ Let math.random accept numbers ❕✅ Fixed cmd lua support for 5.4.6 ❕✅ Updated lua to 5.4.6 ❕✅ Fixed gamemode pointer system ❕✅ Added more debug options on windows ❕✅ Fixed taiko noteskin count rolls ❕✅ Fixed buffer issue with msdfile ❕✅ Cleaned up notedisplay destruction ❕✅ Fixed pointer issues with ragetexture OutFox 5.0.0 Pre-Release Candidate 041 -a9 - April 29th 2023 ❕✅ Synced updates with the alphav-theme ❕✅ NEW! return to the portal link if portal was selected ❕✅ Auto Resize ScreenDebugOverlay on low definition (480p) themes ❕✅ NEW! restore #LASTBEATHINT to .sm files ❕✅ Fixed a slew of parsing bugs in the .sm parser ❕✅ Fixed leaked memory in the .sm parser ❕✅ Fixed bad update call in DrawPrimitives breaking some mod calls ❕✅ Fixed bug with access calls on GameSoundManager ❕✅ Fixed potential crash/freeze with ImageCache OutFox 5.0.0 Pre-Release Candidate 041 -a8 - April 25th 2023 ❕✅ Fixed bug with favourites not being found sometimes on some systems ❕✅ Fixed crash with favourites folder ❕✅ Fixed FileWrite Call ❕✅ Replaced library used for ImageCache to improve stability and Memory use ❕✅ Fixed bug with MIDI buttons not being seen after being saved to keymaps.ini ❕✅ Fixed bug with MIDI buttons not being saved on the Map Controller screen for MIDI controllers ❕✅ Fixed missing entries on InputDevice ❕✅ Added Wii \u0026amp; Wii-U controller support to our HIDAPI Driver ❕✅ Fixed stuck buttons on MIDI drumkits due to Channel 09 varying non-zero values. ❕✅ Fixed bug with buffer underrun on some sound cards ❕✅ NEW! 2 Player ParaPara Mode support with official PS2 controllers! ❕✅ Fixed missing official PS2 ParaParaParadise controllers on Mac and Linux ❕✅ Fixed bug in ParaPara input driver by rewriting it ❕✅ Fixed bug with duplicate controllers on Mac/Linux/Steam OutFox 5.0.0 Pre-Release Candidate 041 -a7 - April 22nd 2023 ❕✅ Fixed bug with multiple loads of FGChanges ❕✅ Fixed bug with some lua definitions not quite being nil ❕✅ Fixed bug with BGChanges crashing on invalid Enums ❕✅ Fixed bug with CheckEnum corrupting the lua stack ❕✅ Brought over 1-4 player PS2 official parapara controller input driver from Dragons ❕✅ Fixed bug with some vectors not being correctly handled in the background calls ❕✅ Fixed crash with bad math calls in music wheel ❕✅ Fixed chartkey loading 3 times on every action on the music wheel ❕✅ Fixed PlayCopy() crash ❕✅ Fixed incorrect usage of pushnil in NETMAN ❕✅ Fixed crash with enum call in ActorUtil ❕✅ Fixed pointer crash on file closing on some modfile calls ❕✅ Made the OTO (osu) parser much more stable, and added samplesounds/hitsound support ❕✅ Fixed a few wry mutex issues now we are planning for lower latency ❕✅ Fixed a reported tickhold bug ❕✅ Fixed the reported GetBGChanges() \u0026lsquo;bug\u0026rsquo; by rewriting the methods, as they are now chart specific ❕✅ Fixed bug with mod columns calling 88 instances when we don\u0026rsquo;t plan to have piano mode moddable ❕✅ Fixed crash with updateholdnotes ❕✅ Fixed crash in GameSoundManager ❕✅ Re-implement SSC hold metric features - Penalise tap score none/Judge hold notes on same row together/checkpoints flash on hold/immediate hold let go/combo break on immediate hold let go/require step on hold heads/checkpoint taps separate judgement ❕✅ Fix issue with GetBGA, by rewriting it to support steps ❕✅ Fixed bug with no keysoundfile clearance ❕✅ Added new support for OTO (osu) keysounds ❕✅ Fixed bug with missing FGChanges calls ❕✅ Fixed weird draw issue with some themes and GLAD renderer ❕✅ Fixed crash in steps creation ❕✅ Changed BGA to be chart based for SSC/SM files ❕✅ Fixed crash with favourites affecting speed mods ❕✅ Updated Docker builds ❕✅ Fixed crashes with Python2/Python3 IO boards ❕✅ Fixed bug with ASIO support on win32 ❕✅ Added pulseaudio to PortAudio in prep for new sound back end ❕✅ Fixed clocks for rtAudio on mac/linux ❕✅ Added more info for statsoverlay ❕✅ Fixed crash with some lower() command calls ❕✅ Fixed CODESET offset bug reported by Rythmlunatic OutFox 5.0.0 Pre-Release Candidate 041 -a6 - April 08th 2023 ❕✅ Fixed crash on refcount ❕✅ Fixed bug with pro-explosions not falling back when not provided ❕✅ Fixed bug with calories being default goal on the alpha-v theme ❕✅ Fixed def.notefield preview autoplay not reloading on looped audio ❕✅ Restore Add and Scale check to smart timing windows ❕✅ Fixed ddrio for 32bit machines ❕✅ Fixed lua errors on course and endless modes ❕✅ Added sound options to themes ❕✅ Fixed favourites not loading BGAs ❕✅ Added SongPreviewVolume ❕✅ Added additional song folder master folder for BMS file support ❕✅ Changed UpdateDrawLoopSeconds to take FPS values ❕✅ Added option to disable hotswap controller support for performance ❕✅ Added set loops per second to ease CPU usage ❕✅ Fixed bug with buffer type in rtaudio ❕✅ Fixed bug with rounding error on syncing machine ❕✅ Fixed FPS inaccuracies ❕✅ Fixed bug with misplaced drawloop ❕✅ Fixed bug with overflow on sound buffers ❕✅ Show shader compile errors onscreen ❕✅ Added themepref for NoteDataLimit ❕✅ Fixed cast with clock resolution ❕✅ Fixed bug with large size notedata loading ❕✅ Fixed cache miss OutFox 5.0.0 Pre-Release Candidate 041 -a5 - April 08th 2023 ❕✅ Fixed clock method in new audio back end for linux/mac ❕✅ Added new round method for sound buffer ❕✅ Restored legacy SM-5 driver options for those that requested it ❕✅ Fixed bug with repeated samplerate calls ❕✅ Fixed missing API support in the main sound driver ❕✅ Fixed linux compile with rtAudio ❕✅ Fixed correct flags on device initialisation ❕✅ Fixed bad code in ragesound ❕✅ Fixed panda logger creation ❕✅ Added new soundwaves links on main page OutFox 5.0.0 Pre-Release Candidate 041 -a4 - March 27th 2023 ❕✅ Fixed Linux builds compiling for modern systems ❕✅ Fixed bug with a temp patch for uniformtextures overriding each other ❕✅ Added new FBO status information ❕✅ NEW! rtAudio stub and skeleton ❕✅ Fixed latency with some of the internal audio code ❕✅ Fixed audio latency and compile ❕✅ Fixed bug in Mac/Linux steam variants by downgrading to 5.2 rtaudio ❕✅ Fixed logging and device detection in Linux ❕✅ Fixed stuttering on rt-pulseaudio ❕✅ Fixed preference information and buffer edits ❕✅ Fixed 3.0 era particle animation processes ❕✅ Fixed bug with pandalog not using correct loc when set ❕✅ Added a new sound logfile for the new systems ❕✅ Fixed internal streamtime polling for audio ❕✅ Fixed bug with unavailable streams not being available due to a windows quirk ❕✅ NEW!! rt-Asio Driver ❕✅ NEW!! rt-DirectSound Driver ❕✅ NEW!! rt-WASAPI Driver ❕✅ NEW!! rt-JACK Driver ❕✅ NEW!! rt-ALSA Driver ❕✅ NEW!! rt-Pulse Driver ❕✅ NEW!! rt-OSS (4+) Driver ❕✅ NEW!! rt-CoreAudio Driver ❕✅ Fixed bug with legacy SM drivers trying to set a rate that\u0026rsquo;s not supported ❕✅ Fixed bug in accuracy of sound by removing SM 2.5x era cruft ❕✅ Added new sound driver selection in the debug stats ❕✅ Fixed bug with missing favourites folder stuff on soundwaves, you can now use this ❕✅ Fixed crash on Jack not available - do not use this driver unless you run jack for now, we need to code the path for it. THIS BUILD HAS A NEW SOUND BACK END!! This build utilises a new back end and completely does away with the old SM5 drivers. It was super heavily requested by the community that we have something configurable that could be used to lower latency in the game for key-sounded and hit sounded modes, so we delayed this build to squeeze it in. There are still a couple of bugs which will be ironed out, but for 99% of users, this build will work fine.\nLOW LATENCY AUDIO GET!\nWith lower latency, comes some compromises. It is super clear and sharp, you have better clarity, it obviously uses new drivers, which include some new preferences, see below.\nWe have discovered Discord does NOT like low latency based drivers\u0026hellip; AT ALL. please bear this in mind if you decide to play with ASIO/set your CoreAudio below 1024, and ensure you have a secondary sound card Discord can use, so you aren\u0026rsquo;t greeted with silence.\nWINDOWS: ASIO supports down to a blocksize of 32 in the internal driver, now while you can set this in the new preferences (see below) if you hear crackling or garbled audio, just raise this a bit. You can use anything from 32 to 4096 as your block size, higher values being higher latency.\nWASAPI supports from 64 to 4096, and replaces waveout as the default driver. It has the benefit of not being legacy or using an old back end to output, and can have it\u0026rsquo;s buffer lowered to suit the system.\nLastly we have DirectSound, mainly due to the fact it has been requested for older windows builds, but users should always try to see if WASAPI (which is Vista -\u0026gt;) is available. DirectSound is 512 -\u0026gt;\nThe new driver has had to be sample rate locked and hardcoded to 44.1kHz right now due to limitations in the back end, but we will be removing all the old legacy code in the coming months, so you will be able to enjoy 48kHz clarity really soon.\nLINUX: ALSA now uses a new back end, as well as no longer using a 15 year out of date code pathway, we no longer have to patch it for OutFox. It fully supports shared mode, so no more silence on calls when you\u0026rsquo;re using it, and it also behaves better on the Raspberry Pi/SoC board for arm, fixing the 10+ year old bugs. If your kernel is pre 4.12, you may get a crash on the first run due to the old kernel code, but the game should find your system devices properly on the second run. We\u0026rsquo;re looking into this atm.\nPulseAudio now runs without the ALSA hook, and again isn\u0026rsquo;t exclusive or forces weirdness. It can run with low latency as well, as well as sharing properly. At this release, it will likely use the ALSA device, but we will be adding the option to choose the device the specific APIs can use, so watch this space for that. There is also a quirk with Pulse where it reports the output and input devices back to front, so we have put in a workaround for this too.\nJACK - Jack now is built in without the need for extra hooks or compiler options, and simply just\u0026hellip; works. If you do not use this driver, do not add it to your preferences, as this can cause a crash right now, it will be fixed in the final version of 041. JACK is also available on MacOS, a bonus feature there.\nBSD/CONSOLE: OSS 4+ is available for BSD builds\nMACOS: CoreAudio now runs newer code as well, which also fixes the odd quirk in Ventura with the audio thread sometimes dropping out. We will also add code for audio device handover, as this new driver supports it, so no more crashing when your bluetooth headphones die and disconnect. Be warned, however, Bluetooth audio can not take a too low block setting, so experiment.\nNew Preferences in this build SextetStreamInputFilename= Used for the new Sextet input handler I forgot to code in \u0026gt;.\u0026gt;\nSoundrtAudioAPIName= This selects the audio back end for your system. It will be self populated on first run with a safe default, but you can override it with a comma\u0026rsquo;ed list of inputs.\nYou have a choice of the following:\nMacOS core - Use for CoreAudio jack - Use for JACK\nLinux alsa - Use for ALSA jack - Use for Jack pulse - Use for PulseAudio oss - Use for the Linux OpenSoundSystem\nWindows asio - Use for ASIO wasapi - Use for WASAPI ds - Use for DirectSound\nThey can be used as a list with commas, so \u0026ldquo;wasapi,ds,asio\u0026rdquo;\nSoundrtAudioLastUsedCard= This is a pref to highlight the last used card, it\u0026rsquo;s purely for the internal driver, like \u0026rsquo;lastseenvideocard\u0026rsquo;\nSoundrtAudioNumberofChannels= This pref is for number of output channels/speakers your system supports. It will be up to 8 when the code is written, but for now, leave it at 2, due to the legacy code. It will be ignored if you add anything else!\nSoundrtAudioPreferredSampleRate= This pref is for the samplerate of your device, and will be settable in time. It will return the preferred rate your card wants, but will sadly be set to 44.1 due to the restrictions of the legacy code. Will be unlocked when we remove the rest of RageSound\nSoundrtAudioSetBufferSize= This pref is where you set your latency block size. It supports 32 frame to 4096 frames as per the ASIO/latency standards. If your audio crackles or glitches, remember to adjust this, it is not a bug in the game! With lower latency comes a bit more instability, so bear this in mind when you adjust this value.\nLinux users will need a lowlatency compiled kernel and preferrably a kernel newer than 4.12 to take advantage of this. MacOS users need Big Sur to use \u0026lt; 256, and Windows 7+ for \u0026lt; 128\nThis driver is not enabled on windows yet due to some quirks with windows 10/11 which we are looking into.\nOutFox 5.0.0 Pre-Release Candidate 041 -a3 - March 19th 2023 ❕✅ Fixed bug with some windows versions crashing on boot with a weird waveout quirk ❕✅ Fixed misaligned pomu noteskin layouts on bun/cat/retro skins ❕✅ NEW! Be-mu/Po-mu backplate support - they run like gh/backplates ❕✅ Fixed crash with textbanner if steps are empty ❕✅ NEW! Actor Screen Textures!! These work similar to nitg AFTs ❕✅ Fixed transparency issues with opengl ❕✅ Fixed bug with AFTs not affecting FOV outside of itself ❕✅ Fixed triple sort call on musicwheel ❕✅ Fixed visible list on EffectModes ❕✅ Fixed FOV for AST/AFT so they are the same ❕✅ Fixed cache bugs with bannercache ❕✅ Fixed crash when taking screenshot ❕✅ Fixed hang when taking screenshot ❕✅ Fixed odd setlocale bug ❕✅ Fixed leegacy GL pipe for AFT/AST ❕✅ Fixed re-sorting stutter on musicwheel ❕✅ NEW! Added Din\u0026rsquo;s DDRIO Driver adjusted for OF ❕✅ NEW! Added Din\u0026rsquo;s ITGIO lights fixes ❕✅ NEW! Added Din\u0026rsquo;s Lights Exports Fixes ❕✅ NEW! Added Din\u0026rsquo;s PIUIO/LEDs/stac drivers and fixes ❕✅ Fixed sextetstream compiling ❕✅ NEW!! Input SextetStream driver ❕✅ Fixed bug with missing lights on sextetstream ❕✅ Fixed typo so pacdrive now works on 32 AND 64bit windows ❕✅ Fixed bug with density data so it\u0026rsquo;s now done by engine ❕✅ Fixed lag with datagen from decompress ❕✅ Fixed crash with filedriver if the type isn\u0026rsquo;t in map OutFox 5.0.0 Pre-Release Candidate 041 -a1+a2 - March 7th 2023 ❕✅ Fixed crash with legacy arm builds ❕✅ Fixed crash on miniholds ❕✅ Fixed crash with ubuntu \u0026lt;= 17.10 users ❕✅ Fixed crash with arm + legacy builds ❕✅ Fixed crash with soundcards on Windows 8+ (Thanks EvieUwO for report) ❕✅ Fixed stuck buttons on rtMIDI input (Thanks LightHexagon for report) ❕✅ Fixed e-drums MIDI velocity channel quirk (Thanks LightHexagon for report) ❕✅ Fixed latency/lag in BMS/be-mu mode making it unplayable (Thanks Daniel Rotwind for report) ❕✅ Fixed latency/lag in PMS/po-mu mode making it unplayable (Thanks goodsun for report) ❕✅ Fixed latency/lag in DTX/gddm mode making it unplayable (Thanks goodsun for report) ❕✅ Fixed AMod/CAMod/AVMod speed mod issues ❕✅ NEW! FBO DoubleBuffer System for our render pipe ❕✅ Fixed bug with lack of stencil support on FBOs in MacOS ❕✅ Fixed FBO Transparency with modfiles ❕✅ NEW! Added new \u0026lsquo;PowerOfTwo\u0026rsquo; variable for AFTs (Requested by our Modding community) ❕✅ Fixed GLAD FBO system for ARM systems ❕✅ Fixed bug with draw update with receptors and note flashes OutFox 5.0.0 Pre-Release Candidate 040 (Main + Steam Playtest Build) - March 7th 2023 ❕✅ Fixed micro-stutter math overflow bugs in the approach code introduced in upstream in 2005 ❕✅ Fixed math code-paths that caused a lag stall on Pre-2017 architecture ❕✅ Fixed order of draw for SimpleHolds BottomCap ❕✅ Fixed missing items on NSIS installer for our non-steam Windows builds ❕✅ Fixed winding order on our GL pipe - Raspberry Pi, and older systems should love us a bit more now ❕✅ Fixed bug with missing Fake notes writing to cache so they weren\u0026rsquo;t miss on the first load ❕✅ NEW!! - Built in favourites system to the default (soundwaves 0.4.x) theme! ❕✅ Fixed bug with SaveMachineProfile\u0026hellip; not saving on some newer Linux Builds ❕✅ NEW!! - Created a new ActorNoteFieldBoard metric to avoid legacy (StepMania 5.x) Noteskin problems/lua asserts ❕✅ Fixed bug in .TJA parser missing credits for #NOTEDESIGNER ❕✅ Fixed 21 year old bug in MenuTimer ❕✅ Fixed Accuracy in Player Options on the snapping options ❕✅ Fixed crash sometimes in profiles where the theme didn\u0026rsquo;t support fitness/calories ❕✅ Fixed banner cache system on both themes ❕✅ Fixed bug with Auto generated chart loading on LuaWheel ❕✅ Fixed theme layout bugs OutFox 5.0.0 Pre-Release Candidate 039 (NON Steam Playtest Build) - February 24th 2023 ❕✅ Fixed Linux building platform ❕✅ Updated Alpha V theme - should be less buggy now ❕✅ NEW!! - Use SoundDevice=0 (device number) to pick a sound card the game uses to output on the wave out sound driver on windows. (Thanks SenPi/Teej from ITGM, though we had to rewrite it for OF) ❕✅ Fixed crash on .osu/.osz files that were broken ❕✅ Fixed bug with approach mods occasionally skewing with a new snap feature ❕✅ Fixed bug with SongGroup vector causing leaks on the wheel ❕✅ Fixed edge crash on windows 7/10/11 with the logs folder when not using a portable.ini ❕✅ Fixed hardcoded logpath crashing non-mac OSs ❕✅ Fixed bug with KBX mode crashing on jukebox ❕✅ Fixed bug with some tween ending times being skipped ❕✅ Fixed bug in main loop with some \u0026lsquo;modern\u0026rsquo; 2003 windows XP optimisations ❕✅ Fixed bug with \u0026lsquo;framey\u0026rsquo; (slightly stuttery) files ❕✅ Fixed frame jitter bug added in 2005, that was causing fDelta to reverse ❕✅ Fixed bug with ready bar not clearing at the beginning of a song ❕✅ Fixed bug with group folder banners not loading ❕✅ Fixed bug with low quality banners not loading/being used OutFox 5.0.0 Pre-Release Candidate 038 (NON Steam Playtest Build) - February 21st 2023 ❕✅ Fixed bug with mac bundle modules ❕✅ Add new PREIMAGE support for taiko tja file banners ❕✅ Fixed bug with windows compilation ❕✅ Fixed bugs with imagecache crashing ❕✅ Fixed some memory leaks in imagecache/musicwheel ❕✅ Fixed loading call for NSkin boards ❕✅ Fixed crash with AU on mac when external output sources are disconnected ❕✅ Fixed Def.Text not showing textures on macos ❕✅ Added lane colours to pomu noteskins ❕✅ Added new LyricLoader class which will support SRT/SSA/VTT files in time! ❕✅ Fixed bug with incorrect delete on music wheel ❕✅ Fixed crash with scrolling too quickly on music wheel ❕✅ Fixed loading of banners on music wheel causing a crash ❕✅ Fixed compiler being odd with zlib variables clashing ❕✅ Fixed bug with win32 locale ❕✅ Fixed slowdown in lua parsing ❕✅ Fixed glcontext creation ❕✅ Fixed bug with updateluaglobals not working on language change ❕✅ Added new math functions to reduce stutter on the SBC/Pi builds ❕✅ Fixed missing garbage collection on music wheel (reported by Dom) ❕✅ Fixed around 150 rounding issues in our math compilation causing slowdowns ❕✅ Added Editor support for TapNoteSource_Fake - to make the note a fake, use shift + n or shift + m, and remember if you use them! They will allow all things to be fakes. Requested by Mostly_Harmless ❕✅ Raised Stats.xml max size to 144MB ❕✅ Fixed crash with late joining on some systems and themes ❕✅ Fixed more bad math ❕✅ Fixed edge case crashing with creeping NaNs ❕✅ Fixed crash on column mods that were requesting values out of range OutFox 5.0.0 Pre-Release Candidate 037 (NON Steam Playtest Build) - January 24th 2023 ❕✅ Fixed zlib compile that was blocking linux builds ❕✅ Fixed merger with SDL breaking some controllers on mac/linux ❕✅ Fixed duplicate definition in OF SDL patches breaking keypad enter ❕✅ Rewrote PacDrive to not use broken libUSB deps ❕✅ Fixed lua errors crashing the game on invalid enums, we can safely warn ❕✅ Added new Actor Screen Texture Skeleton WIP ❕✅ Fixed beginLine()/endLine() overflow on SSC/Pump parser/writer causing edited songs to sometimes be infinite ❕✅ NEW! Added OG-Classic be-mu noteskin ❕✅ NEW! Added TapNoteSource_Fake - now any note can be a fake; NO Editor Support yet, coming in later build! ❕✅ Fixed percentage done from directory to total songlist in the loading window ❕✅ Fixed some math overflows in RageDisplay ❕✅ Fixed hold rendering and checking due to overflow ❕✅ Fixed crash in RageFileManager locking up the cache ❕✅ Reset fDeltaTime correctly in the actor stack ❕✅ Fixed heap crash with discord\u0026hellip; OutFox 5.0.0 Pre-Release Candidate 036 (NON Steam Playtest Build) - January 1st 2023 ❕✅ Fixed bad call in linux build process ❕✅ Fixed USBDriver remaining calls left in unix and mac now they are gone. ❕✅ Fixed math overflow preventing the AxisFix working on windows 10 (win32 legacy input driver) ❕✅ Fixed math overflow on win32 legacy preventing the AxisFix pref working on Windows 7 and 8, thanks Microsoft ❕✅ NEW! Added Axis Fix support to Linux/Mac via SDL2 driver. If you have a pad and are on one of these operating systems, let me know so I can write up how to prepare and set up your fix. ❕✅ NEW! Added Axis Fix XInput support to windows 10/11 on the SDL Driver. ❕✅ Fixed bug with Para Para controller not being detected when some pad configurations were set. ❕✅ Fixed bug with HIDRAW on Windows and MacOs crashing when a controller was plugged in. ❕✅ NEW! Added new InputSet* Preferences to bring all the Input systems closer together than using odd settings. Do not use InputSetHIDAPI/InputSetRAWAPI at this time as it needs to be finished: The new preferences are as follows:\nAllows a player to specify if they are using arcade or custom controller hardware. m_bInputSetArcade\nAllows SDL to toggle the mapping method for joysticks via XInput. m_bInputSetXInput\nAllows SDL to toggle the mapping method for joysticks via DInput. (Windows Only) m_bInputSetDInput\nAllows SDL to toggle the mapping method for joysticks via HIDAPI. m_bInputSetHIDAPI\nAllows SDL to toggle the mapping method for joysticks via RAWINPUT. m_bInputSetRAWAPI\nAllows the user to set a DeadZone value. Useful for Axis Fixing and Configuring m_iInputSetJSDeadzoneValue\nAllows the user to set the desired input system on Linux, either /jsX or /eventX. m_bInputSetLinuxJSEndpoint\n❕✅ Removed m_bXInputUseOldJoyStickMapping, m_iJoystickDeadZone, m_bUsingArcadePads, m_bUseLinuxJS ❕✅ Added new CRC support to SDL driver for future use OutFox 5.0.0 Pre-Release Candidate 035 (NON Steam Playtest Build) - December 30th 2022 ❕✅ Updated Taiko noteskins with the new features ❕✅ Began pipewire/wayland support on drivers ❕✅ Added missing climits header where required ❕✅ Add GameState:GetGoalPercentComplete functions ❕✅ Sync up changes in the alphav-dance theme ❕✅ Remove bad C code in RageUtil ❕✅ Update upstream SDL2 to 2.26.1 ❕✅ Added SDL OutFox patches ❕✅ Fixed FreeType building ❕✅ Tried to fix corrupted iTrack which causes a crash on MacOSX ❕✅ Fixed crash on shitpost osu charts ❕✅ Fixed OTO scientific notation crashes ❕✅ Remove LibUSB - PLEASE TEST ON WINDOWS 7!!!! ❕✅ Added new VTT/SRT/SSA/LRC parser skeleton in prep for new lyric filetype support ❕✅ Added new .obj file loader - Thanks to Jewel from UKSRT for the help! OutFox 5.0.0 Pre-Release Candidate 034 (NON Steam Playtest Build) - December 28th 2022 (MACOS SPECIFIC UPDATES) This build addresses issues related with the parser modules not loading on other Macs due to the linker process.\nOutFox 5.0.0 Pre-Release Candidate 033 (NON Steam Playtest Build) - December 27th 2022 (MACOS SPECIFIC UPDATES) This addresses bugs related with crashes on macOS introduced on Ventura.\n❕✅ Updated SDL to 2.26.1 ❕✅ Remove bad C code from RageUtil ❕✅ Removed libUSB dependency causing crashes on macOS. OutFox 5.0.0 Pre-Release Candidate 032 (NON Steam Playtest Build) - December 22nd 2022 (LINUX SPECIFIC UPDATES) ❕✅ Fixed xrandr version mismatch preventing the game seeing it installed ❕✅ Fixed missing wayland compatibility (test if you like, probably still needs work) ❕✅ Fixed missing pulseaudio hooks on newer ubuntu 20-\u0026gt; ❕✅ Fixed missing pipewire hooks on newer ubuntu 20-\u0026gt; ❕✅ Fixed bug with XCB not initialising correctly ❕✅ Fixed missing XTST lib not being used causing a crash on newer ubuntu (21-\u0026gt;) ❕✅ Fixed missing DRM support ❕✅ Fixed version mismatch on VA and X11 on newer ubuntu ❕✅ Fixed mismatch with sndio on newer ubuntu ❕✅ Added new build environment for Modern Ubuntu (20-\u0026gt;) if you use this on 18.04, you WILL need to ensure you have updated your system and have the -backports repositories for some of the newer libraries. This is purely testing at the moment for linux users, but please let me know if there are any issues - Squirrel\nOutFox 5.0.0 Pre-Release Candidate 032 (NON Steam Playtest Build) - December 22nd 2022 ❕✅ Fixed crash with empty string on TJA parsing ❕✅ Fix crash with Count Holds on TJA parsing ❕✅ Fixed missing BALLOON support on TJA parsing ❕✅ Fixed missing Counted Hit support on TJA parsing ❕✅ Added Taitai count hold support ❕✅ Fixed Audio Unit panics on macos 13+ ❕✅ Fixed Audio Unit buffer allocation on macos 13+ ❕✅ Fixed Audio Unit device selection on macos 13+ ❕✅ Fixed Audio Unit log spam on macos 13+ ❕✅ Fixed issue with no normals being sent on CompiledGeometry ❕✅ Added setting the rate of the animation of the material on a model ❕✅ Fixed crash with empty string on TJA parsing ❕✅ Fixed issue with double press on taiko drum inputs ❕✅ NEW! Changed options for Audio Volume in the debug menu. Sounds can be assigned to either Attract/Effect/Sound, and can be controlled in the menu. The old \u0026lsquo;Effect Menu\u0026rsquo; is gone, and allows you to set the type of audio you wish to edit. Attract volume works on the Jukebox/Attract screen, and can now also be set ABOVE 100%, to a maxium of 200%, for situations where audio lines are quiet and you need a boost for a cabinet.\nPLEASE NOTE: This can cause the audio to clip/distort at high volumes, and we are not responsible for your use of this. It has been a very highly requested community feature and we are happy to be able to bring it to you in this build.\nUse R to change the Sound Type, and T and Y to set the volume Down and Up respectively.\n❕✅ Added matrix splitting options for CompiledGeometry ❕✅ Fixed oversight on SetSecondsIntoAnimation ❕✅ Fixed font reloading on resolution change ❕✅ Fixed font corruption on resolution change ❕✅ Added new sound types to be supported and run within the themes ❕✅ Fixed issue with missing hiddenregions and hold noteflashes ❕✅ Fixed issue with pump holds missing and not being able to be reclaimed ❕✅ Fixed crash with notepath vertex data ❕✅ Fixed offset on TJA files, causing skew on playback, thank you to tana. in the TJADB server for the assistance! ❕✅ Removed ancient HighScoreList::RemoveAllButOneOfEachName() for a newer function - Needs testing ❕✅ Fixed crash with \u0026lsquo;phantom\u0026rsquo; BALLOONs in TJA files - Charts that do not specify a value for each BALLOON ❕✅ Added BALLOON default hit value of 5 to align with the expectations of the taiko community. ❕✅ Added SMA support back from LTS4 due to the number of community requests - please check them if you use this format ❕✅ Fixed crash with Windows XP era macros confusing the compiler on 32bit windows ❕✅ Fixed errors with SMA files being offset due to a math overflow ❕✅ Fixed crash with all parsers due to a legacy 2004 bug ❕✅ Fixed timeout bug with MEMCARDMAN preventing memory cards working in the game ❕✅ Fixed missing memory card support for cabinets - please test and let us know! OutFox 5.0.0 Pre-Release Candidate 031 (Steam Playtest Master) - November 26th 2022 ❕✅ Fix crash with lxio on win32/linux 32bit operating systems ❕✅ Change behaviour of assist clap and metronome to continue even if player is dead at community request ❕✅ NEW! Added ImageCache 2022, with an improved system for GPU ready textures etc ❕✅ Fixed crash with notedata ❕✅ Fixed crash on first note press on some modes ❕✅ Fixed crash with music wheel freeze on para mode ❕✅ Fixed forever loop in legacy stepmaniaonline code ❕✅ Fixed system capabilities issue for windows 7 ❕✅ Fixed issue with needless image preload system ❕✅ Fixed offsets for column renderer ❕✅ Fixed digitaloffset math ❕✅ Fixed missing techno graphics ❕✅ Fixed legacy FFMPEG code path breaking on slow loading systems - Themers need to be aware of tween times on loading charts on music wheels, these can still cause a crash if not set right due to a race condition. Tween waiting times should be around 0.4 to 0.8 if a user is scrolling so the wheel doesn\u0026rsquo;t load resources the game doesn\u0026rsquo;t need. ❕✅ Fixed compatibility issue with formatting pixel data ❕✅ Fixed TJA Measure commands ❕✅ Fixed TJA BPM changes from making charts out of sync ❕✅ Fixed TJA Scroll commands making charts out of sync ❕✅ Fixed TJA fast scrolling - SET YOUR GAME TO CAMOD IN SONG OPTIONS ❕✅ Fixed TJA timing entries OutFox 5.0.0 Pre-Release Candidate 029 \u0026amp; 030 (Steam Playtest Master) - November 11th 2022 ❕✅ Fix crash with Matrix generation on some older modfiles ❕✅ Added new game generation to cmake for windows api ❕✅ Fix crash with object deletion in draw pipe ❕✅ Add new boxing mode ❕✅ Fixed dynamic library loading for steam ❕✅ Fix missing failimmediate option being saved on KBX mode ❕✅ Fixed bug with missing thread mutex on song loading ❕✅ Fixed crash with missing stagemodel init ❕✅ Fixed crash with steam builds on linux ❕✅ NEW! Fixed legacy arm builds for embedded armv7 boards ❕✅ Fixed Opengl selection for linux builds should fix resolution issue ❕✅ Modernised build environment for new outfox specific options ❕✅ Fix mines on pump and dance ❕✅ Fixed type boolean ❕✅ Fixed be-mu/po-mu/gddm/gdgf preview sounds ❕✅ Fixed crashes with minimaid on linux, needs to be rebuilt ❕✅ NEW! Added new 80% pass failtype for be-mu/po-mu ❕✅ Fixed bug with DTX loadheader ❕✅ Fixed crash with hiddendata calls on editor ❕✅ Fixed offset support on Autokeysounds ❕✅ Added language functions for thememanager ❕✅ Fixed mac build chain and command scripts for XCode ❕✅ Fixed crash with legacy opengl on legacy linux distros (pre 2010) OutFox 5.0.0 Pre-Release Candidate 028 - November 8th 2022 ❕✅ Fix crash with GLAD on ATI era cards ❕✅ Fix GameSelect ❕✅ NEW! Added new \u0026ldquo;Ex\u0026rdquo; versions of Back and Elastic tween eases for Actors ❕✅ Fixed bug with texture resolutions rounding incorrectly on some functions ❕✅ NEW! Added new SetUpdateFPS() function to set the desired FPS of the update loop for Actors ❕✅ Fixed ez2 real from crashing on Versus ❕✅ Fixed crash on deltatime on Actors ❕✅ Fixed crash with Def.Notefield() not getting a defined playernumber ❕✅ Widened autokeysound track allowance to 32 ❕✅ Added Beatin po-mu Judgement ❕✅ NEW! BMS-like parser override functions to bind and prevent duplication and bad code use ❕✅ Fixed upstream bug with keysounds ending early on BMS-like songs ❕✅ Fixed bug with sounds unloading not at EOF ❕✅ Fixed vorbis flags ❕✅ Restored PMS/BME extended hidden keysound channels ❕✅ Fixed hold keysound spam ❕✅ Fixed texture handle get functions ❕✅ NEW! Added Experimental Option \u0026amp; Pref: AutoKeySoundBMS. This preference changes how the keysounds play in be-mu/po-mu/gddm/gdgf, with the option of OutFox being usual behaviour, setting BMS plays the keysound when you hit the button, and FULL all the keysounds are set to BGM layer so you can miss without it affecting the melody of the song ❕✅ Fixed crash with bad GL detection, if you crash try re-running the game to set the pref correctly ❕✅ Cleaned up code in LLW ❕✅ Fixed bug where game would hang on musicwheel with high note/mine/etc counts over 9000 on NPS chart ❕✅ NEW! Added new BMSHeaderLoad pref to disable loading header files on older HDDs/Rpi/SteamDeck ❕✅ NEW! Added threaded songloader, with a preference m_NumSongLoadThreads to select the number of threads. Default is 2, but you can up this to a maximum of 8 on NVME/SSD drives ❕✅ NEW! Fixed MineFix from affecting other Modes ❕✅ NEW! NSIS installer ❕✅ Fixed DTX parsing difficulties OutFox 5.0.0 Pre-Release Candidate 027 - October 31st 2022 ❕✅ Fix bongo notes sometimes clashing with taiko ones in the parser ❕✅ Fix mode graphics to allow players to use bongo ❕✅ Fix GameSelect.lua ❕✅ NEW! Initial ShaderManager skeleton ❕✅ Fix crash with needless commands in GLAD renderer ❕✅ Fix ShaderManager scope in the renderers ❕✅ Fix Branding for future builds ❕✅ Add Steam Playtest Code and API ready for approval from Valve ❕✅ Fix Steam build compilation for MacOS OutFox 5.0.0 Pre-Release Candidate 026 - October 25th 2022 ❕✅ Fix Krazy noteskin crashing ❕✅ Fix NSIS code OutFox 5.0.0 Pre-Release Candidate 025 - October 25th 2022 ❕✅ NEW! Bongo Mode! ❕✅ NEW! Bongo Autogen from TJA \u0026amp; Osu (though due to chart quality, osu can be sketchy) ❕✅ NEW! Krazy noteskin for bemu/kbx/pomu ❕✅ Fixed dynamic libs for ffmpeg base ❕✅ Fixed bug with non-shader ffmpeg not being used in some cases ❕✅ Fixed flags in ffmpeg causing slow decoding ❕✅ Fixed shader ffmpeg passing diffuse instead of alpha ❕✅ Fixed some floats ❕✅ Added new TextureModes: Decal, Replace, Blend, Invisible ❕✅ Removed old mipmap code that didn\u0026rsquo;t do anything, to restore in later driver ❕✅ Fixed lirocode crash on bms ❕✅ Fixed mine check in bms parser so mine gimmick charts are parsed correctly ❕✅ Add \u0026lsquo;DanceLegacyMode\u0026rsquo; to ensure disconnection from SM \u0026lsquo;Everything is DDR\u0026rsquo; pathing ❕✅ Fixed BMS parser substrings, so difficulty and subtitles now show as they should ❕✅ Fixed BMS difficulty selection and titles, and add the proper number of difficulties ❕✅ Fixed BMS not having D6 and D7 for Hyper/Insane difficulty support ❕✅ Fixed BMS header data loading to speed up the game in general OutFox 5.0.0 Pre-Release Candidate 024 - October 17th 2022 THEME: (From Jose)\n❕✅ Rewritten Judgement loading procedure. This basically now lets the game record each judgment graphic per timing window instead of a singular option to rule them all. This would\u0026rsquo;ve become messy if we\u0026rsquo;ve kept it like that. NOTE: This will run locally on the theme for now, to test if the new functionality is stable to transfer to fallback.\n❕✅ Music wheel is now dimmable when entering options\n❕✅ Touch controls are now a toggle Now looking back, I can see that this whole thing can become a mess if we let everything be shown at once, so now the Touch controls are part of a toggle located on the Options menu, which is off by default.\n❕✅ Speed is now the main option on Player Options\n❕✅ Fixed PrevScreen on KnownBugs (Reported by Moneko)\n❕✅ Apply PlayMode upon entering the music wheel\n❕✅ Hide menu timer from ScreenEvaluation for now.\n❕✅ Fix last difficulty selection when returning the wheel\n❕✅ Tweaked Song Info box to include a banner.\n❕✅ Fixed video banners not respecting fading.\n❕✅ Tweaked player information pane on select music\n❕✅ Noteskin now applies when changing noteskins.\n❕✅ Fix update for Measure Count display\n❕✅ Cleanup debug messages\nBMS/PMS/DTX/GDA\n❕✅ Auto switch to HQ mp4 movie BGA if available ❕✅ Fixed title being overwritten resulting in the directory name being used ❕✅ Fixed regex causing title to be empty ❕✅ Removed SM3.9 era cruft from the parsers ❕✅ Removed defunct Unicode conversion as we do it properly now ❕✅ Fixed commonsubstring overflows resulting in bad title/translit title ❕✅ Fixed bad SM4 code breaking some #subtitle entries ❕✅ Fixed multi-layer backgrounds not being initialised correctly ❕✅ Removed bad converting code for artist and genre ❕✅ Fixed bug causing cache generation lagging on initial parsing on first boot ❕✅ Fixed missing #subtitle support on BMS files ❕✅ Added subtitle options for BMS files ❕✅ Added new Chartsubtitle option for lua SSM ❕✅ Added new ChartTitle options for lua SSM ❕✅ Added new ScreenGameplay GetSound() ❕✅ Fixed sounds not ending ❕✅ Fixed Background Crash that was reported ❕✅ Fixed lag on loading window ❕✅ Added new Peaks for audio visualiser ❕✅ Added new def.AudioVisualiser Def.AudioVisualizer Info:\nIt can be added to any existing actorframe, in themes, modfiles and noteskins!\nTo use it just use the following commands (UpdateRate is in seconds: 0.01s to 10s)\nreturn Def.ActorFrame{ Def.AudioVisualzer{ Amount=128, -- The amount of colums, its from min of 16 to a max of 128. LinearPeaks=true, -- define if we want lenear peaks, as in a slow animation when it goes back to 0. PeakHeight=40, -- the hight of the columns, UpdateRate=0.01, -- the update rate of the columns, the lower the faster, between 10 and 0.01. OnCommand=function(self) self:SetSound(--[[ A RageSound to set--]]) -- if SetSound is not set, it will fallback to the cur playing music, this does not work for screen gameplay, in screengameplay do self:SetSound(SCREENMAN:GetTopScreen():GetSound()) end } } OutFox 5.0.0 Pre-Release Candidate 023 - October 12th 2022 OutFox 5.0.0 Pre-Release Candidate 014 - August 26th 2022 ❕✅ NEW! Added bongo note types and .tja/.osu parser support ready for implmentation ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Fixed bug with crash when unplugging MIDI keyboards on Mac 12/13 ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed bug with missing kickbox items ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted spheremapping ❕✅ Fixed crash with missing noteskins ❕✅ Added new TTFActor Prototype; documentation to come shortly ❕✅ Fixed bug with mutex unlocking when file get fails ❕✅ Fixed bug with limited inline on row resolution ❕✅ Fixed crash with unreleased threads ❕✅ Fixed bug with spheremapping in GLAD ❕✅ Fixed \u0026lsquo;permanentlydeletechart\u0026rsquo; ❕✅ Fixed bug with race condition between file threads ❕✅ Fixed bug with renderstates being dereferenced in windows ❕✅ Fixed bug with scrolling BGAs ❕✅ Fixed scrolling actor bugs OutFox 5.0.0 Pre-Release Candidate 013 - August 16th 2022 ❕✅ Fixed bug with windows derefs ❕✅ Fixed texture scroll overflowing onto the ui ❕✅ NEW! - Added FourV2Lane Pump Noteskins ❕✅ NEW! - Added Global Board Noteskin ❕✅ NEW! - Dynamic Mode Icons for Discord RPC ❕✅ NEW! - Darkfox icons for Discord RPC ❕✅ Fixed bug with long windows names on Discord RPC ❕✅ Fixed crash on new M2 chip Macs ❕✅ Fixed bug with no bit type returned on linux ❕✅ Fixed crassh on PIU loader ❕✅ NEW! - SteamAPI setup and init (not active on these builds ofc) ❕✅ Fixed bug with build deps on steam builds ❕✅ Updated steam libs to 155 ❕✅ NEW! PandaLog ❕✅ NEW! Crashlog system OutFox 5.0.0 Pre-Release Candidate 012 - August 14th 2022 OutFox 5.0.0 Pre-Release Candidate 011 - August 11th 2022 The Crash Dash Part III edition:\n❕✅ Fixed bug with discord lib working preventing the core initialising ❕✅ Set finger id for 1 for now. ❕✅ Fixed bug with missing touch events ❕✅ Fixed missing finger events on actors ❕✅ Fixed cross platform touch support ❕✅ Fixed bug with FailImmediate not being saved to profile ❕✅ Fixed simpleholds bottomcap ❕✅ Fixed bug with texture translation ❕✅ Fixed colour buffers ❕✅ Fixed docker builds for linux alpha V ❕✅ Fixed refcount on model manager causing edge crashes ❕✅ Fixed bug with density generation ❕✅ Added GetWorstTapNoteScore() ❕✅ Added GetAbsoluteDest X/Y ❕✅ Added UpdateThemeLanguage() ❕✅ Added AVMod for pump ❕✅ Added NoMines for simplePO ❕✅ Added DebounceCoinInputTime() to ScreenOptionsMasterPrefs OutFox 5.0.0 Pre-Release Candidate 010 - August 8th 2022 OutFox 5.0.0 Pre-Release Candidate 009 - August 6th 2022 The Crash Dash Part I edition:\n❕✅ Fixed crash with windows input handler ❕✅ Fixed crash with resetting graphics mode ❕✅ Fixed crash with changing themes ❕✅ Fixed hang with changing themes to infinitessimal/starlight ❕✅ Fixed hang on some screen changes ❕✅ Fixed hang on screen gameplay with pump charts and dance mod-files ❕✅ Fixed crash with some mod-files ❕✅ Fixed hang with SL on main menu/profile screen ❕✅ Fixed crash on screen evaluation on non-default themes ❕✅ Fixed multiple crashes on game close ❕✅ Fixed hang on adding or removing a controller on Windows ❕✅ Fixed crash on SMX pad initialisation on Windows ❕✅ Fixed crash with GameState calls being out of order on game shutdown ❕✅ Fixed crash on editor exit ❕✅ Fixed crash with game being left on for longer than 62 minutes ❕✅ Fixed crash with game releasing devices on Windows ❕✅ Fixed crash in screengameplay ❕✅ Fixed crash when \u0026lsquo;reloading songs\u0026rsquo; on any theme ❕✅ Fixed crash on alt-tab on non-default themes ❕✅ Fixed crash on some older (pre2013) GPUs crashing when using alt+enter ❕✅ Fixed crash with the sound buffer overflowing ❕✅ Fixed crash with editing chart playback when stops/warps are used ❕✅ Fixed crash with sounds on keysound thread at evaluation screen on be-mu/po-mu \u0026hellip;sigh ❕✅ Fixed bug with missing 7key BMS not being parsed (Thanks Scrypts) ❕✅ Fixed bug with almost all charts from legacy (2007 and older) BME files spawning as pomu9 ❕✅ Fixed registry issues in Windows 11 ❕✅ Added \u0026lsquo;dependonmusicthread\u0026rsquo; for those who must have the stepmania lockup experience. set it to false to get better performance, but the music will not block the main thread. ❕✅ Added GetCaloriesBurnedByDate for calorie information on a specific day ❕✅ Fixed bug with kbx pump chart length ❕✅ Fixed bug with fonts reloading in the wrong order on theme change. WE NEED SOMEONE TO TEST MIDI / LIGHTS ON THIS BUILD!!\nOutFox 5.0.0 Pre-Release Candidate 007 - August 5th 2022 ❕✅ Fixed bug with modernffmpeg not being chosen correctly on supported systems ❕✅ Fixed bug with missing functions on ffmpegmodern driver ❕✅ Fixed bug with sound thread crashing ❕✅ Fixed bug with discord RPC crashing on game exit ❕✅ Set failtype default to \u0026lsquo;EndOfSong\u0026rsquo; ❕✅ Added SongDisplayBPMModern ❕✅ Fixed bug with missing PIU loader flags ❕✅ Fixed bug with \u0026lsquo;ForcePIU\u0026rsquo; hint not being loaded correctly ❕✅ Fixed Mac Modules not being compiled correctly ❕✅ Fixed bug with incomplete string support on MacOS ❕✅ Fixed bug with incorrect redir targets causing a crash ❕✅ Fixed bug with invalid scores being generated due to tickhold math logic ❕✅ Added Darkfox Icons and branding so it\u0026rsquo;s different in the Taskbar. ❕✅ WINDOWS ONLY: Added new install location: Project OutFox V ❕✅ Fix be-mu parsing due to squirrel\u0026rsquo;s oopsie Known Issues:\n❌❕ Win32 direct input crashing still happens a bit on some race conditions ❌❕ Crash on song select options due to non-foot noteskins/noteskins with not all the support ","description":"Release Date: From 2022 \u0026ldquo;Full Alpha V Changelog\u0026rdquo; Upcoming Alpha V Play Test Build pre042 - October 2023 Last \u0026lsquo;Stable\u0026rsquo; Release Date: 1st May 2023 Alpha V Playtest Public Build pre041 - 1st Anniversary Celebration (Incorporates Internal Builds 0.5.0-000 to 0.5.0-041) (Incorporates Internal Builds alpha5-silver A0 to A19) These builds continue to stabilise and work on fixes we had begun to work on in 040, which was our last update."},{"id":1,"href":"/releases/A4.18.0/","title":"OutFox Alpha 0.4.18 Build","parent":"Release History","content":" Release Date: 26th October 2022 \u0026ldquo;LTS Status Engaged - Damnit Jim, I\u0026rsquo;m a doctor!\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play. As the whole point of this LTS programme is to ensure stability and remove opportunity for the game to crash or have problems in general play this was unacceptable, and we went back to deep bug fixing which is why this release is later than planned, but provides a much more stable environment for play.\nAs with development we cannot guarantee you\u0026rsquo;ll never crash, but we have reduced bugs and situations where that could happen while you\u0026rsquo;re playing the game.\nWe hope you enjoy the fruits of our work, with this proper stable build, and appreciate your continued support!\nNew Mode: bongo! Based on a game for home consoles released in the early 2000s, this mode brings in a highly requested fan favourite to OutFox!\nPlayed using the left drum, right drum, and clapping, this fun mode at the moment uses the games TJA and OTO loaders to support fan created TJA content, and Mode 1 from osu files, though bear in mind, many of the osu files are not designed with fun in mind, so it may become painful using your hands to play these files!\nYou do NOT need to enable auto-gen for this mode! It uses any TJA or OSU files in your folders already to generate tracks! Remember our taiko support is ongoing, so some holds and effects do break sync, but we will be fixing these in time. We do not have a theme yet for this mode, so game-play is with the basic \u0026lsquo;default\u0026rsquo; for now, so you can have a play and feel for it!\nThis is our 18th Working Game Mode that this engine supports, and we are truly humbled by the awesome support you, the players, provide us to continue to improve and expand on what this museum contains within it\u0026rsquo;s wall of code!\nWe have designed this mode alongside the project OpenTaiko so that charts made using the new TJA letter types in the charting format will be cross-compatible between the two simulators moving forward.\nLong Term Stable Builds Are Here! (Take 2!) As part of our commitment to getting the game out of the eventual development hell, we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on finalising the alpha V branch.\nWhat this means to you, the end user, is that if you do not want to have to change builds all the time and deal with \u0026rsquo;new feature\u0026rsquo; bugs, then this branch will be maintained (for bug fixes only) in a 1 month bug fixing schedule until December 2022, then will move to a quarterly release schedule (so 4 more updates) until it is retired at the end of December 2023 with the final release being 4.24.\nThis branch is stable enough for the removal of the \u0026lsquo;alpha\u0026rsquo; prefix, and if you get any bugs or issues do report it. Things deemed important will be back-ported to the 0.4.x branch, but the team will be focussing more on 0.5.x in 2023 and beyond.\nNew PandaLog File System This month we also added a new logging system which will greatly help with any debugging needs that you have. We have changed the system, so that there is a main, a theme, and a crash-log now, and these have varying levels of detail, depending on need. If you happen to have a crash or need to debug a theme, or lua mod, this is now much easier to do.\nOn the log level preference, 0 shows full detail, where 5 will give you a reduced log-file, usually when you have everything set up and working well.\nPLEASE NOTE: As we no longer follow the SM logging system, we have added a dummy \u0026lsquo;info.txt\u0026rsquo; for the Windows launcher of GrooveStats so the launcher for that system still works. New FFMPEG system This release also sees some changes to the FFMPEG builds used in OutFox. We had discovered there is a memory leaking bug in upstream which doesn\u0026rsquo;t really affect many of the video players out there generally, the code we use to acquire and display video data is based on the functions that are bugged in newer versions, so folks using banners or video backgrounds would end up with crashing and freezes due to this.\nWe have reverted back to a much older \u0026lsquo;bug free\u0026rsquo; build of 4.x for the time being until it is fixed by upstream. If you get any quirks or errors on videos, do let us know; we tried a lot of different formats and videos commonly used, but we didn\u0026rsquo;t cover everything!\nLinux Joystick Pref This build adds a support option for those folks on some builds which have had evdev issues with the newer kernels (5.1+) making pads not show up.\nBy default OutFox uses the event system as this is recommended by distros like Ubuntu and Debian but with recent updates these can miss seeing pads and controllers.\nThe new pref UseLinuxJS (Use Linux JoyStick) sets /js* by default, so folks can access the controllers correctly. If you want the older behaviour, take a moment to set this to 0 in your preference.ini file in the /save folder. We will keep an eye on this for now, and if you get any errors about \u0026lsquo;access denied\u0026rsquo; ensure your user is in the \u0026lsquo;input\u0026rsquo; group using a terminal and:\nsudo usermod -a -G input USERNAME\nwhere USERNAME is your current user (type whoami) to see what this is in a terminal.\nLet us know if you have any issues, and pop into the Discord server if you need any help!\npump fixes! This month we have been working with the players and developers of the Infinitesimal theme for pump with fixing the hold situation in the simulation of this mode. With a lot of revisions and testing, we can happily report that the holds are operating properly now, and we are grateful to those that gave their time helping us perfect it!\nNew Always on Top Preference! This preference was requested by a lot of our streamer players, as they said it can cause issues with the streaming and capture methods they use.\nThis preference which is simply entitled AlwaysOnTop is set to 0 (false) by default, which is the normal behaviour of the game. To enable it while you stream you can set this to 1 and the game will always be on the top of the screen even if you click off or have a window behind it.\nThanks to Zui and Shrmp0 in the Discord for making the suggestion known to us and for our streamer friends for enjoying the game on different platforms.\nNew AllowRotation Preference! This preference was back-ported from Alpha V as some of our users have requested support for rotational options. This pref is off by default, and allows rotation for vertical based screens where the resolution/display is rotated, mainly for vertical options.\nStepLastSeconds Changes! For songs which have a multiple chart in the folder, like pump, be-mu, po-mu, kbx via osu etc, there is a slight bug in the way the game sends the \u0026rsquo;length\u0026rsquo; data to the theme/engine that counts stages at the moment. This is a long upstream bug and we are working on a fix in Alpha V, and will backport it when it is ready.\nThe issue is, if some charts are different lengths, they will show correctly in screen game-play, but only display the LONGEST length in the music wheel, or \u0026lsquo;ScreenSelectMusic\u0026rsquo; as it\u0026rsquo;s known to themers. Fixing this bug will also benefit other modes so it is something we want to work on.\nNew Installer for Windows! This release has an updated installer that better reflects the feel of OutFox, and gives us a better platform to use moving forward. We hope you like it!\nVersion 0.4.18 Fixes: KNOWN ISSUES: Alpha 4.18.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ bongo: NEW! Added new bongo mode\n❕✅ bongo: Added support for tja file chart auto-generation\n❕✅ bongo: Added support for osu file chart auto-generation\n❕✅ bongo: Added new note-skin support\n❕✅ bongo: Added editor support\n❕✅ be-mu: Fixed bug with MusicThread endlessly looping on BMS/PMS files\n❕✅ pump: Fixed mini-holds (128ths/192nds) from auto-hitting themselves\n❕✅ pump: Added new code path for hold checkpoints and mini holds so they work and are not incorrectly scored / hit according to SM5 dance\n❕✅ pump: Fixed hold display issue\n❕✅ pump: Fixed timing on holds for misses\n❕✅ pump: Fixed pump hold issue with hit timing\n❕✅ pump: Adjust pump micro-holds to be closer to what players expect\n❕✅ dance/smx/techno: Fixed bug with life on non-pump holds killing the player\n❕✅ be-mu/po-mu/gddm/gdgf: Auto switch to HQ mp4 movie BGA if available\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed title being overwritten resulting in the directory name being used\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed regex causing #TITLE to be empty\n❕✅ be-mu/po-mu/gddm/gdgf: Removed SM3.9 era cruft from the parsers\n❕✅ be-mu/po-mu/gddm/gdgf: Removed defunct Unicode conversion as we do it properly now\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed CommonSubstring overflows resulting in bad #TITLE/#SUBTITLE title\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed bad SM4 code breaking some #SUBTITLE entries\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed multi-layer backgrounds not being initialised correctly\n❕✅ be-mu/po-mu/gddm/gdgf: Removed bad converting code for #ARTIST and #GENRE\n❕✅ be-mu/po-mu/gddm/gdgf: Fixed bug causing cache generation lagging on initial parsing on first boot\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with MusicThread endlessly looping on BM*/PMS files\n❕✅ be-mu \u0026amp; po-mu: Fixed bugs with keysounds returning empty, which fixes extended BMS/PMS\n❕✅ kbx: Fixed bug with early ending holds in osu files\n❕✅ taitai: Fixed bug with songs ending 2 notes early\n❕✅ taitai: Fixed note placement on editor\nEngine\n❕✅ Fixed function reference in ArrowEffects ❕✅ Fixed FFMPEG memory leak problems ❕✅ Fixed FFMPEG SWScale bugs ❕✅ Fixed math glitch in ArrowEffects giving us an 8-21% performance increase ❕✅ Fixed legacy code in GLAD giving us a 4-9% performance increase ❕✅ Fixed mouse warnings ❕✅ Fixed Valgrind warnings and reported leaks ❕✅ Fixed texture crash ❕✅ Fixed double buffer call in input ❕✅ Avoid needless divides in RageMath ❕✅ Added Preference to allow OutFox to rotate with the option to match OS Screen. Options are landscape, landscape flipped, portrait, and portrait flipped, which are provided by the operating system. Set AllowRotation=1 in the preference.ini if you use a vertical orientated monitor ❕✅ Added Preference to allow OutFox to have it\u0026rsquo;s window \u0026ldquo;Always On Top\u0026rdquo;. This means it will not minimise or disappear if clicked, so remember this! Set AlwaysOnTop=1 in the preference.ini to enable this. Good for streaming! ❕✅ Fixed bug with out of date CMake causing runtime issues on newer linux / windows versions ❕✅ Fixed crash with style compatibility ❕✅ Fixed bug with a race condition in the RageFile ❕✅ Fixed bug with reset rates being called in the wrong place in themes ❕✅ Fixed crash with texture creation on some files ❕✅ Fixed bug with massive memory leak in FFMPEG frame delivery ❕✅ Fixed crash with FFMPEG on some older systems ❕✅ Build brand new FFMPEG libs for all platforms ❕✅ Added new gif loader, please let us know if you have any issues with gifs ❕✅ Fixed crash with InputFilter on usb devices/pads with the new threading system ❕✅ Fixed crash with song/video loading when the song was created in linux/mac but loaded in windows ❕✅ Fixed a couple of race condition crashes in windows/linux ❕✅ Fixed small math overflow on finger pressure value ❕✅ Fixed crash with FFMPEG leaking memory ❕✅ Removed legacy assert on arcade crashing the game ❕✅ Fixed bug with missing malloc/free pair ❕✅ Fixed missing crash headers on PandaLog ❕✅ Fixed GameState calls ❕✅ Fixed bug with StepLastSeconds not being set correctly on some charts - Please note: Some songs that have multiple LENGTHS in the same folder may still display the longest chart length - This is being looked at! ❕✅ Updated splash to 4.18 ❕✅ Fixed dancing characters always being enabled when setting up the game ❕✅ Fixed bug with keysounds not being preloaded correctly ❕✅ Fixed bug with no video found not using RandomMovies ❕✅ Fixed bug with no random movies being found in the folder ❕✅ Fixed old upstream bug with song movies not being loaded ❕✅ Fixed fallback system on movies ❕✅ Fixed level cast in InputHandler ❕✅ Fixed bug with fail-type being released and not saved ❕✅ Forced false for hash-stats ❕✅ Fixed bug with plain texture drawing on AMVs ❕✅ Fixed bug with AMV vertex arrays in modern GLAD ❕✅ Fixed MiniSDL cache miss ❕✅ Fixed data stride in GL driver ❕✅ Fixed WindowTitleRef ❕✅ Fixed a few math bugs in GLAD drawing ❕✅ Increased the tween stack to 99 at community request, this allows for less stuttering and lag on lua wheels and mod-files to have a bit more breathing room for effects ❕✅ Fixed crash with URL strip functions ❕✅ Fixed bug with style incompatibility issues ❕✅ Fixed a mutex unlock within the file system ❕✅ Added a new glyph pack: latin-extended-additional and updated the Texture Font Generator to V0.36 ❕✅ Fixed missing link in soundwaves for new glyph pack ❕✅ Fixed empty names showing on display ID\u0026rsquo;s if one is not given by the OS ❕✅ Fixed crash with legacy controllers and haptic devices ❕✅ Fixed performance issue with \u0026ldquo;optimisations\u0026rdquo; made in 2019 ❕✅ Fixed display-bpm showing when \u0026lsquo;random\u0026rsquo; should be used ❕✅ Fixed crash with DebugLevel ❕✅ Fixed legacy pathing issue with GrooveStats needing info.txt with the new PandaLog system on windows ❕✅ Fixed lag on older systems with the note loading system ❕✅ Fixed crash on sprites loading with bad or not parsed resolutions ❕✅ Fixed crash with Discord core on shutdown ❕✅ Fixed crash with log shutting down faster than GameState ❕✅ Fixed memory corruption on discord core source ❕✅ Fixed upstream bug with SDL source ❕✅ Fixed autogen missing some songs ❕✅ Fixed crash on recentlog ❕✅ Fixed crash preventing use of Oni/Endless/Extended modes using player 2 controls (Reported by BSG) ❕✅ Fixed crash with corrupt backgrounds being used on Oni/Endless/Extended modes (Reported by BSG) ❕✅ Fixed Background Crash that was reported ❕✅ Fixed lag on loading window ❕✅ Fixed MiniFFMPEG parsing ❕✅ Fixed MiniFFMPEG threading ❕✅ Optimise MiniFFMPEG decoding ❕✅ Fix frame decoding algorithm ❕✅ Tweak loading speed on initial cache ❕✅ Add new updated NSIS installer with custom OutFox branding Windows 7+ (Win32 and x64):\n❕✅ Fixed bug in legacy win32 driver causing delayed response, 3% increase in performance for windows ❕✅ Fixed one of the phantom input crashes in windows ❕✅ Fixed crash when game closes ❕✅ Fixed crash on Windows Vista/7 on inserting \u0026ldquo;PSX\u0026rdquo; converters connected to a PS2 official Bemani/Pop\u0026rsquo;n controller ❕✅ Fixed bug with InputHandler on Windows 7 and 8 not being the same calls ❕✅ Modernised acio to support Windows 11 quirks ❕✅ Fixed minimaid crash due to legacy coding practices ❕✅ Removed lights drivers popping up dialogue boxes - requested by DesktopMan Linux:\n❕✅ Fixed some latency issues with profile loading/saving on SD cards on SteamDeck ❕✅ Fixed crash with udev being initialised in the incorrect manner ❕✅ Fixed build system pulling in deprecated udev library crashing 20.04-\u0026gt; distros ❕✅ Fixed evdev mismatch ❕✅ Added pref to force /dev/input/js* to be default over /dev/input/event*. Set UsingLinuxJS to 0 to set to use /dev/input/event and use evdev. ❕✅ Fixed MESA crash on OutFox modern when trying to init the display driver closes #444 ❕✅ Fixed libOpengl0 crash on newer hardware ❕✅ Fixed crash on Pop! OS, Fedora, Mint ❕✅ Fixed startup crash on ubuntu/debian with a weird log, (closes #444) ❕✅ Added new Wayland bindings so we can properly support Wayland ❕✅ Added new pipewire bindings so we can properly support pipewire moving forward ❕✅ Removed legacy code paths preventing older GPUs running properly on mesa 21.4 ❕✅ Fixed build environment and dev libs for x64 ❕✅ Fixed build commands MacOS (Universal):\n❕✅ Fixed ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash with FFMPEG on Vita/Switch ❕✅ Fixed some latency issues with profile loading/saving on SD cards on Raspberry pi Community content Noteskins ✅ New default noteskin for bongo Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 Version 0.4.17 Fixes: ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with 2 old BMS channel layouts left in by accident ❕✅ be-mu \u0026amp; po-mu: Fixed bug with endless loops on long charts ❕✅ dance: Fixed bug with hang on lights on menus in some weird cases ❕✅ dance: Fixed bug with some older charts causing a \u0026rsquo;loading\u0026rsquo; hang ❕✅ pump: New! Added AVMod scrolling mode ❕✅ pump: New! Added fourV2lane colour noteskins ❕✅ kbx: New! Added NoMines to PlayerOptionsSimple() ❕✅ kbx: Fixed bug with pump auto-gen charts not working correctly ❕✅ kickbox: Fixed bug with missing items and layouts ❕✅ kbx: Fixed crash on loading .qp and .osz packed charts Engine\n❕✅ Fixed order of draw buffers in GLAD ❕✅ Fixed order of shader buffers in GLAD ❕✅ Fixed font reload order ❕✅ Fixed legacy call causing stability issues ❕✅ New! Added DebounceCoinInputTime to screenoptionsmasterprefs ❕✅ Fixed bug with negative refCount on models and their texture counts ❕✅ Fixed bug with colour buffer so translated textures work on new GLAD driver (noteskins like cel3d used these) ❕✅ Fixed with SimpleHolds bottomcap ❕✅ Allowed FailImmediate to be saved properly ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Added New game information for 0.4.xx branch ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted Sphere mapping ❕✅ Fixed crash with missing noteskins ❕✅ Fixed 20 year old bug in RageDisplay causing stuttering on Modern GPUs ❕✅ Set Windows system to LTS and remove the alpha prefix ❕✅ Added new LTS Splash ❕✅ Fixed overflow in timing ❕✅ Added new Panda Thread system to remove deprecated RageThreads ❕✅ Added new PandaLog system to remove deprecated RageLog, crashlogs and logs are now restored ❕✅ Fixed crash on loading songs ❕✅ Fixed vsync timings ❕✅ Fixed logger crash info detail ❕✅ Fixed crashes with ReceptorArrowRow and GhostArrowRow Windows 7+ (Win32 and x64):\n❕✅ Added Windows 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Added FourV2Lane to the NSIS so folks can now use it for pump ❕✅ Fixed bug windows affinity on Windows 20H1 onwards, and Windows 11 21H1 onwards Linux:\n❕✅ Added Linux 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed minimum build environments, so linux builds are more stable MacOS (Universal):\n❕✅ Fixed bug with crash when unplugging MIDI keyboards on MacOS 12/13 ❕✅ Fixed bug with dangling pointer in the MIDI drivers, thanks M1MacGaming for the report! ❕✅ Fixed crash on Mac M2 systems with rtMIDI ❕✅ Added Mac 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed bug with new M2 Macs crashing with \u0026lsquo;unknown arch?\u0026rsquo; ❕✅ Fixed bug with string reading due to non-standard char16 support ❕✅ Fixed crash with legacy darwin code still hanging around from SM3.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash when using Roland e-drums on non-raspi distros Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 26th October 2022 \u0026ldquo;LTS Status Engaged - Damnit Jim, I\u0026rsquo;m a doctor!\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) (Incorporates Internal Builds 4.17.1-rc0 to 4.17.1-rc6) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc15) Please read the change log! What Happened to 0.4.17? 0.4.17 passed initial testing from our valiant testing volunteers, however it failed the testing on cabinets and for those who use dance and pump modes for skill/technical based play."},{"id":2,"href":"/releases/A4.17.0/","title":"OutFox Alpha 4.17.0 Build","parent":"Release History","content":" Release Date: 4th September 2022 \u0026ldquo;LTS Status Engaged\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch.\nWhat this means to you, the end user, is that if you want to not have to change builds all the time and deal with \u0026rsquo;new feature\u0026rsquo; bugs, then this branch will be maintained (for bug fixes only) in a monthly schedule until december, then will move to a quarterly release schedule until it is retired, likely next summer, but that date is very likely to change.\nThis branch is stable enough to be considered for the removal of the \u0026lsquo;alpha\u0026rsquo; prefix, and if you get anything awry do report it.\nNew PandaLog File System This month we also added a new logging system which will greatly help with any debugging needs that you have. We have changed the system, so that there is a main, a theme, and a crash-log now, and these have varying levels of detail, depending on need. If you happen to have a crash or need to debug a theme, or lua mod, this is now much easier to do.\nOn the log level preference, 0 shows full detail, where 5 will give you a reduced log-file, usually when you have everything set up and working well.\nLTS Updates: This month again has been mostly bug fixes. Some small updates and back-ports from Alpha V will always happen, as we cannot have things too unstable of course.\nKNOWN ISSUES: Alpha 4.17.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with 2 old BMS channel layouts left in by accident ❕✅ be-mu \u0026amp; po-mu: Fixed bug with endless loops on long charts ❕✅ dance: Fixed bug with hang on lights on menus in some weird cases ❕✅ dance: Fixed bug with some older charts causing a \u0026rsquo;loading\u0026rsquo; hang ❕✅ pump: New! Added AVMod scrolling mode ❕✅ pump: New! Added fourV2lane colour noteskins ❕✅ kbx: New! Added NoMines to PlayerOptionsSimple() ❕✅ kbx: Fixed bug with pump auto-gen charts not working correctly ❕✅ kickbox: Fixed bug with missing items and layouts ❕✅ kbx: Fixed crash on loading .qp and .osz packed charts Engine\n❕✅ Fixed order of draw buffers in GLAD ❕✅ Fixed order of shader buffers in GLAD ❕✅ Fixed font reload order ❕✅ Fixed legacy call causing stability issues ❕✅ New! Added DebounceCoinInputTime to screenoptionsmasterprefs ❕✅ Fixed bug with negative refCount on models and their texture counts ❕✅ Fixed bug with colour buffer so translated textures work on new GLAD driver (noteskins like cel3d used these) ❕✅ Fixed with SimpleHolds bottomcap ❕✅ Allowed FailImmediate to be saved properly ❕✅ Fixed bug with MIDI where there would be a crash when shutting down ❕✅ Added New game information for 0.4.xx branch ❕✅ Added new method to generate notefields to fix crashes ❕✅ Fixed legacy bug with files being deleted twice ❕✅ Fixed SM5 era bug with glyphs disappearing ❕✅ Fixed bug with misinterpreted Sphere mapping ❕✅ Fixed crash with missing noteskins ❕✅ Fixed 20 year old bug in RageDisplay causing stuttering on Modern GPUs ❕✅ Set Windows system to LTS and remove the alpha prefix ❕✅ Added new LTS Splash ❕✅ Fixed overflow in timing ❕✅ Added new Panda Thread system to remove deprecated RageThreads ❕✅ Added new PandaLog system to remove deprecated RageLog, crashlogs and logs are now restored ❕✅ Fixed crash on loading songs ❕✅ Fixed vsync timings ❕✅ Fixed logger crash info detail ❕✅ Fixed crashes with ReceptorArrowRow and GhostArrowRow Windows 7+ (Win32 and x64):\n❕✅ Added Windows 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Added FourV2Lane to the NSIS so folks can now use it for pump ❕✅ Fixed bug windows affinity on Windows 20H1 onwards, and Windows 11 21H1 onwards Linux:\n❕✅ Added Linux 32 \u0026amp; 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed minimum build environments, so linux builds are more stable MacOS (Universal):\n❕✅ Fixed bug with crash when unplugging MIDI keyboards on MacOS 12/13 ❕✅ Fixed bug with dangling pointer in the MIDI drivers, thanks M1MacGaming for the report! ❕✅ Fixed crash on Mac M2 systems with rtMIDI ❕✅ Added Mac 64 bit, theme, mode icons to Discord RPC ❕✅ Fixed bug with new M2 Macs crashing with \u0026lsquo;unknown arch?\u0026rsquo; ❕✅ Fixed bug with string reading due to non-standard char16 support ❕✅ Fixed crash with legacy darwin code still hanging around from SM3.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed crash when using Roland e-drums on non-raspi distros Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 4th September 2022 \u0026ldquo;LTS Status Engaged\u0026rdquo; (Incorporates Internal Builds 4.16.1-rc0 to 4.16.1-rc3) (Incorporates Internal Builds 4.17.0-rc0 to 4.17.0-rc5) Please read the change log! Introducing 0.4.17-LTS! LONG TERM STABLE BUILDS ARE HERE! As part of our commitment to getting the game out of eventual development spaghetti we have had a discussion and all agreed to keep the alpha 4.xx branch active for the next year while we work on the alpha V branch."},{"id":3,"href":"/releases/A4.16.0/","title":"OutFox Alpha 4.16.0 Build","parent":"Release History","content":" Release Date: 30th July 2022 \u0026ldquo;32 bits of this, 64 bits of that\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes. We have stabilised the way keysounds are loaded, and in this release we have also fixed hidden \u0026rsquo;lanes\u0026rsquo; that the mode supported that were not played.\nThe parsing system has also seen another update, moving away from the legacy SM5 method and utilising the new OF style of properly defining and enabling all the lanes. In the past, StepMania could only mainly play a number of sounds related to the number of columns (lanes) and as the BMS reader was created for the historic DDR in BMS style charts, we had a lot of work to do to ensure proper expansion. In this release, the mode has seen some spring cleaning, enabling full keysound range, and properly displays and parses charts as it should.\npo-mu mode now also supports Player 1 11-19 channel modes, featured in nanasi and some other simulators from the early 2010s. This is sometimes known as \u0026rsquo;extended pomu\u0026rsquo;. be-mu now can also play back the correct keysounds, including the player hidden, and any effect channels that can be used.\nCharts which did not use all the lanes for their mode, (7k o2j inspired lanes without scratch are an example) would often also not show up correctly, or be shifted by an entire column, or just parsed incorrectly. This has been fixed in this release, so 5K / 7K / 10K / 14K (no scratch) charts now read correctly. Thanks to Daniel and our friends at the BMS international community for reporting this to us.\nIntroducing 64bit Windows Builds We have been testing the 64 bit windows builds for some time, but have yet to publicly release a build alongside our normal release programme, so this month changes that! The community have heavily requested the need for a 64bit build, especially with our multi-modal support system in place, which needs more songs/packs installed. Moving forward to our Steam integration, we needed to have a 64bit build for the users available on that platform.\nMoving forward, as a lot of you will have questions;\nNo, we will not be discontinuing Win32.\nYes, we will continue to provide Win32 builds as many of you with cabs will need them\nSteam will default to the 64bit build unless your system is 32bit.\nInternal library updates This month we have done several parity pulls from our upstream dependencies, as progress has been made on a lot of the bugs we had in the past. Vorbis and our other sound readers have enjoyed several bugfixes, as well as a big jump in bugs fixed in SDL has meant performance in this build has increased, especially for those on pre-2016 hardware, although everyone should see an improvement.\nWe have begun to add a few back-ports from the Alpha V Panda collection, designed to build stability as we look to sunset Alpha 4 next Spring. Alpha 4 Officially goes into LTS this month, being limited to only stability and bug fixes only. The main development push from August will be into Alpha V.\nWe will continue to support Alpha 4.xx until March 2023, but maintaining two separate branches would be too much to deal with for such a small volunteer team, and as a result, it\u0026rsquo;ll be retired properly when Alpha V has matured and stabilised enough to be considered a suitable replacement.\nKNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu \u0026amp; po-mu: Fixed bug with wry columns being selected by mistake on initial parsing ❕✅ be-mu \u0026amp; po-mu: Fixed bug with charts that skipped a column or player channel not loading ❕✅ be-mu \u0026amp; po-mu: Fixed bug with charts that used 2 less than the chart style being parsed wrong ❕✅ be-mu \u0026amp; po-mu: Fixed bug where wrong style would be selected for \u0026rsquo;no-scratch/no button\u0026rsquo; charts (02jam/ez2/etc) ❕✅ be-mu \u0026amp; po-mu: Fixed bug with missing hidden keysounds not playing on charts with no player \u0026lsquo;chips\u0026rsquo; in that channel ❕✅ be-mu \u0026amp; po-mu: Fixed bug with sound effects missing on player columns \u0026gt; 8 ❕✅ be-mu \u0026amp; po-mu: Fixed bug with keysounds missing on dance 4 panel / 8 panel charts ❕✅ be-mu \u0026amp; po-mu: Fixed bug with parser discarding keysounds for player lanes without a hittable note ❕✅ be-mu \u0026amp; po-mu: Fixed bug in game manager which set some 5k charts to dance ones ❕✅ po-mu: Fixed bug with some pomu9 charts parsing as pomu4 due to \u0026lsquo;beginner\u0026rsquo; charts ❕✅ po-mu: Fixed bug with some pomu9 charts not being parsed at all ❕✅ po-mu: Added the \u0026rsquo;extended pomu\u0026rsquo; pomu9 support from nanasi and other simulations ❕✅ dance: Fixed bug with some .sm files having a different length than what the chart shows ❕✅ dance: Fixed bug with some charts never ending ❕✅ dance: Fixed bug with some charts ending 10 seconds too early ❕✅ dance \u0026amp; pump: Fixed bug with LastSecond sometimes overflowing on pump/dance charts ❕✅ pump: Fixed bug with lane layouts, these are correctly set in the engine now ❕✅ pump: Fixed bug some gimmicks setting LastSecond to a ridiculously high value ❕✅ all: Changed LaneLocation in noteskins to new LaneXOffset, noteskins will need to be edited if you used this! ❕✅ all: Added theme support to allow setting of LaneXOffset ❕✅ all: Fixed bug with mismatched rotation in player/notefield ❕✅ all: Fixed bug with miscalculated reverse on backplates ❕✅ all: Fixed bug with zoom on backplates Engine\n❕✅ Fixed bug with board texture log output spam ❕✅ Fixed namespace redefinition ❕✅ Fixed bug with legacy networking breaking new code pathways ❕✅ Fixed quirk with FoxClock sometimes being called from the wrong place on old 5.0.x themes ❕✅ Fixed bug with input on NetworkOptions ❕✅ NEW Added new PandaArray and PandaVector for the optimising of x64, without breaking our 32bit legacy support ❕✅ Fixed font translation oopsie ❕✅ NEW Added new logging skeleton ❕✅ Fixed millisecond counting on FoxClock ❕✅ Fixed error in crash message ❕✅ Fixed louder audio in customise profile screens (Closes #390) ❕✅ Fixed case with lang items comparing returning 1 all the time ❕✅ Updated Discord SDK to version 3 ❕✅ Fixed 18 year old bug with dead code ❕✅ Fixed double to float math in SetPercent ❕✅ Fixed sum order in Timer ❕✅ Fixed bug in style for Def.NoteField() ❕✅ Fixed bug in column value for Def.NoteField() ❕✅ Fixed crash within Def.NoteField() ❕✅ Fixed bug in set style for columns per player in Def.NoteField() ❕✅ Fixed bug in resetting hidden notefield too early ❕✅ Added new debug info to column range error ❕✅ Fixed bug with some edge cases in Def.NoteField() ❕✅ Fixed bug on resetting notes on notefield ❕✅ Fixed bug that wasn\u0026rsquo;t applying noteskin when reloading notefield ❕✅ Fixed bug with no notes being inserted into a table on Def.NoteField() ❕✅ Fixed crash on new cache generation when timing has not been initialised ❕✅ Fixed bug with 2001 alias system causing crashes ❕✅ Fixed crash with older Vorbis files ❕✅ Fixed bug in SDL for win64 compiling ❕✅ Fixed RageSound oob crash ❕✅ Fixed crash in Enum ❕✅ Update SDL2 to 2.23.1 and add OutFox Patches ❕✅ Fixed bug in SDL mouse code ❕✅ Fixed bug with SSC Writer overflowing ❕✅ Fixed bug with SM SongLength *Windows 7+ (Win32 and x64):\n❕✅ New x64 optimisations added to the engine ❕✅ Fixed NSI quirks pulling in wrong 32bit libs on 64bit creation ❕✅ Fixed bug with missing LIBC calls in 64bit ❕✅ NEW Added new 64bit Windows Memory debug information ❕✅ NEW Added support for 64bit pacdrive (pacdrive32.dll for win32/pacdrive64.dll for x64) (Thanks Simon!) ❕✅ Fixed bug with 64bit libusb support - we still need to test python etc! ❕✅ Fixed bug with driver calls in rage breaking on x64 ❕✅ Reworked a lot of the variable memory usage for x64 ❕✅ Fixed bad libc problems compiling win32 with our build system ❕✅ Fixed missing \u0026lsquo;graphic\u0026rsquo; fonts ❕✅ Added flags for better 32/64 bit support in Windows ❕✅ Fixed bug with some 64bit code not being compiled correctly causing crashes on win7x64 ❕✅ Fixed bug with the memory value on x64 overflowing when swapping from OutFox 32bit to OutFox 64bit ❕✅ Fixed bug where the client type was not recorded in the log for debugging purposes ❕✅ Fixed bugs with win32 compiling due to MSVC quirks ❕✅ Fixed memory display for Win32/X64 on the debug stats Linux:\n❕✅ Fixed bad calls crashing new discord RPC on linux ❕✅ Fixed bad log output calls crashing older hardware MacOS (Universal):\n❕✅ NEW Updated Discord RPC to support Arm M1 MacOS (Thanks HeySora!) ❕✅ Updated Discord libs for MacOS 12.x ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed bad log output calls crashing older hardware ❕✅ Fixed timeout on loading on some slower SD cards Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Slovak translation by jose1711 ","description":"Release Date: 30th July 2022 \u0026ldquo;32 bits of this, 64 bits of that\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) (Incorporates Internal Builds 4.15.2-x64-rc0 to 4.15.2-x64-rc4) (Incorporates Internal Builds 4.15.2-rc0 to 4.15.2-rc9) This page is about a future release! Please be aware it can be added to until the release is confirmed! Please read the change log! More be-mu (and po-mu) fixes This month we have been polishing the modes ready for their Alpha V debut with proper themes."},{"id":4,"href":"/releases/A4.15.1/","title":"OutFox Alpha 4.15.1 Build","parent":"Release History","content":" Release Date: 19th June 2022 \u0026ldquo;Pump or Dump?\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set. Good job. it means that the metric ShowBoard=true has been set. You can undo this to set it to false in modes that are not gh. It may show a message at the top of the screen if you have errors enabled, this will be here just as a temporary measure to see how often that metric was being set.\n❕✅ Fixed crash on playback when revert from disk was used in the editor ❕✅ Fixed bpm \u0026gt; 100000000 to be warps again ❕✅ Fixed minefields flashing on the receptor - Closes #558 ❕✅ Fixed quirk with autoplay not ignoring release ❕✅ Fixed check with type != group - Closes #557 pump mode updates. This month has has a plethora of updates and fixes added to the pump mode; we have been working a lot in the background for this mode, but it required a lot of other things to be implemented beforehand, so it has taken a bit longer than planned to get these stuff off the ground.\nThis release has fixed a lot of the music length issues, charts ending early, charts not ending at all, charts having missing notes due to the song finishing at the incorrect time, and charts ending after 2 seconds (single) / 7 seconds (double). The reason for a lot of all these quirks was due to the charting methods used in stepf2 and stepp1 being based off an older version of StepMania which then had some custom code added by xMAx for those versions targeting pump only. We would like to thank xMAx for the insight and assistance with implementing some of those features into Project OutFox, but due to the fact we are a multi-modal simulator we had to heavily rewrite and redesign a lot of the functions and systems behind the original ideas they had.\nWe have written a custom parser for the stepf2 charts which internally is called NotesLoaderPIU. This focuses on only parsing charts using the old editor and targets pump mode, including the custom note types, and the effects and systems the mode needs. The parser uses the SSC header #VERSION: 0.81 to initialise this pathway for those charts.\nThis can lead to a few issues if you have any dance charts using version 0.81, if you get any quirks, you can just change this version number to 0.83 and it\u0026rsquo;ll use the normal SSC parser.\nNew for this alpha, we have also added the feature for charts not set to 0.81, where you can create a blank file with the title ForcePIU in the group folder, and the game will use the PIU loader automatically. This is case sensitive, so use it as written here for it to work.\nThis alpha also begins to add support for notes within braces { 0 | h | 1 | v }. At the moment only h notes are implemented, with s and v planned for the next main alpha.\npumpholds have also had a major rewrite this release as well, with the stepping and judgement logic being more appropriate to the game system, with ticks and head logic being fixed as well. There are still likely to be a few quirks with it, as it\u0026rsquo;s new code, and do let us know if there are things you notice that are incorrect.\nWarps and how they are hit were also reworked, along with some notes and rows overflowing which caused a lot of the issues on how the game calcuated some of the file/song lengths in the musicwheel and evaluation screens. The values sometimes recorded in the #LASTSECONDHINT and #MUSICLENGTH in the cache file may not actually marry up - the game has several options internally for ensuring that songs do not go crazy on time. Again, this logic is new, so there may be edge cases that need to be ironed out. If you find a chart that is not behaving, let the team know so we can see what is happening.\nThere was also a lot of older code removed from the ScreenGamePlay branches of code that we inherited from older builds (3.x era) that we have removed as it was not really doing anything, and in some cases actually caused the new pump code to not function correctly. A few tweaks were also done for older .sm and .ksf charts and we fixed a lot of the math overflows due to the way the charts were implemented into the older SM build.\nYou can have a better experience than the \u0026lsquo;default theme\u0026rsquo; by downloading the new pump theme that is being developed called Infinitesimal from here; it will be incorporated into Project OutFox as a default theme for pump coming in Alpha V. The theme is created to give you a faithful experience, using original assets and textures.\nWe hope you guys have fun with the fixes, and we have more planned in time!\nbe-mu (and po-mu) fixes We had reports of the game being very unhappy with a lot of the earlier community charts from the BMS of Fighters series, and charts mainly created before 2009, so we have fixed a few of these not being parsed correctly.\nWe also have restored the 4k \u0026ldquo;DDR in BMS\u0026rdquo; chart support that Squirrel accidentally broke when adjusting the channel support. This has now been fixed and those simfile are recognised as dance charts once again.\nThere were also several crashes with the vs modes of po-mu and be-mu as well and these have been fixed as well, so 2 player works as intended.\nrtMIDI and portMIDI driver updates We have had a few requests to reimagine the midi drivers for those with DJ controllers or systems which use channels but send the same notes. The MIDI standard states a controller should be able to do this with the client application supporting the note/channel sent data, so we have changed the way this is done to ensure we are compliant. Crossfaders and rotary controls, as well as some pitch bend triggers do have some weird quirks at the moment, but as we don\u0026rsquo;t have any modes that support these at the moment do not try to map them as a control.\nWe added up/down jog wheel support for those who play be-mu on MIDI, so this works as designed now for everyone using midi for their jogs.\n(Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu: Fixed doubles column location ❕✅ be-mu: Fixed crash with 5k versus ❕✅ be-mu: Fixed crash with legacy BMS and some BML files ❕✅ dance: Fixed left arrow for doubles ❕✅ dance: Fixed multi-row holds not being hit correctly on new hold mechanics ❕✅ dance: Fixed old .sm charts ending early ❕✅ dance: Added SetRequireStepOnHoldHeads() back for modding support ❕✅ dance: Fixed bug with missing 4k Dance support in BMS files ❕✅ ds3ddx: New Added 5 panel support! ❕✅ ds3ddx: New Added pump chart to ds3ddx smart autogen ❕✅ ds3ddx: Fixed bug with ds3ddx 5 panel not working due to invalid metrics ❕✅ ds3ddx: Fixed noteskin column locations and 5 panel ds3ddx layout ❕✅ gh: Fixed typo in last strum logic ❕✅ gh: Tweak fever in GH mode ❕✅ gh: New Added support for all sound layers in .chart and .midi files ❕✅ gh: Fixed crash with chart loading ❕✅ gh: Fixed bug with BGAs on .chart and .midi files ❕✅ gh: Fixed bug with missing loaded features on .chart and .midi files ❕✅ gh: Fixed bug with end of song evaluation crashes on .chart loader ❕✅ gh: Fixed \u0026lsquo;out of range\u0026rsquo; ghost crashes when loading .chart files ❕✅ kbx: Fixed hold mechanics ❕✅ kbx: New Added arrow noteskins via global noteskins ❕✅ kbx: Fixed kbx tick-hold damage values ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ po-mu: Fixed crash with 3/5/7/9 versus ❕✅ po-mu: Fixed icon for po-mu18 button style ❕✅ para: Fixed old .sm charts ending early ❕✅ para: New Added proper second hinting ❕✅ pump: Fixed bug with row overflow causing some charts to be 2.57 years in length ❕✅ pump: Fixed bug with notes at end of warp being unhittable ❕✅ pump: New Added classical3d+ noteskin for pump ❕✅ pump: Fixed bug with fake notes ❕✅ pump: Fixed clamp and overflow on beat locations on warps ❕✅ pump: Restored {} note support for pump ❕✅ pump: Fixed bug with mis-parsed hidden notes for pump ❕✅ pump: New Added support for \u0026lsquo;h\u0026rsquo; notes ❕✅ pump: New Added skeleton for \u0026rsquo;s\u0026rsquo; and \u0026lsquo;v\u0026rsquo; notes (coming in 0.4.16) ❕✅ pump: Fixed bug with checkpoint ticks ❕✅ pump: Fixed overflow on bpmMax ❕✅ pump: Fixed warps to behave properly once again ❕✅ pump: Fixed Musiclength overflowing ❕✅ pump: Fixed bug with pump #LASTSECOND ❕✅ pump: Fixed issue with #LASTSECONDHINT not respecting chart length correctly ❕✅ pump: New Added support for group file \u0026ldquo;ForcePIU\u0026rdquo; to force use the PIUloader ❕✅ pump: Fixed bug with hold end fixes ❕✅ pump: Fixed pump hold mechanics ❕✅ pump: Fixed bug with 2 second restart on older charts (pre 2010) ❕✅ pump: Fixed bug with 7 second restart on older .ksf charts (pre 2007) ❕✅ pump: Fixed bug with some charts ending early with extremely long \u0026rsquo;ending\u0026rsquo; holds ❕✅ pump: Fixed pump holds stepping logic to be more accurate ❕✅ pump: Removed pointless 3.x era code breaking several features ❕✅ pump: Fixed hold notes judge for pump ❕✅ pump: Fixed pump doubles layout ❕✅ pump: Fixed pump life damage on tick-holds ❕✅ pump: Removed legacy \u0026rsquo;time\u0026rsquo; methods for calculating pump length which have been broken since 2007 ❕✅ pump: Fixed dead code with \u0026lsquo;First\u0026rsquo; and \u0026lsquo;Last\u0026rsquo; second not being used except to overwrite with wrong information ❕✅ pump: Fixed bug with math in #LastSecondHint ❕✅ pump: Fixed \u0026lsquo;centre\u0026rsquo; overlapping for noteskins ❕✅ pump: Fixed missing notes on receptors ❕✅ pump: Fixed bug with Pump Holds punishing life on checkpoint misses ❕✅ taiko: Added #BALLOON .tja note parsing, count logic needs to be added ❕✅ taiko: Fixed bug with missing A \u0026amp; B notes on .tja parser ❕✅ taiko: Added Note Type A B D E to .tja parser ❕✅ taiko: Fixed Missing #NOTESDESIGNER tags in .TJA files ❕✅ all: Fixed bug with hold ticks after a warp transition forgetting there was a hold ❕✅ all: Fixed tween overflow on holds ❕✅ all: Fixed bug with clamped BPM being weird on warps and bpm calculation ❕✅ all: New Only load keysounds on chart load, to speed up caching for BMS/PMS/DTX/GDA/BGF ❕✅ all: Fixed bug in cache being overwritten ❕✅ all: Fixed bug in cache values being written to in wrong order ❕✅ all: Fixed bug in the way cache is written for charts with slightly different lengths in .SSC and .SM files ❕✅ all: Rewrote SSC/SM/PIU loaders to respect proper chart lengths, removing the old SM 3.x methods ❕✅ all: Fixed #LASTSECOND overriding the hint and breaking musiclength values ❕✅ all: Fixed order for caching last second ❕✅ all: Fixed #LASTSECONDHINT not returning a value Engine\n❕✅ Fixed bug with bHeld not functioning as expected on auto play ❕✅ Some small general optimisations of entire math pipe ❕✅ Removed legacy SSC era lua function causing errors on infinitesimal and waiei themes ❕✅ Optimised lua stack to reduce odd edge case crash ❕✅ Fixed bug with head/tail switch on simpleholds ❕✅ Fixed bug with ScreenGameplay() overlay ❕✅ Fixed bug with several edge cases of the Lua stack overflowing ❕✅ Fixed bad sleep command in judgements ❕✅ Fixed menu event sounds to be proper action events in the sound engine ❕✅ Added proper IsAction support for PlayOnce() ❕✅ Fixed Autoplay missing holds and rolls with the new mechanics ❕✅ Updated ScreenSelectGame() for ds3ddx5 and po-mu18 ❕✅ Fixed issue with missing default drivers ❕✅ Fixed crash with themes setting empty noteskins ❕✅ Fixed engine crash with some themes setting infinite fadeout ❕✅ Fixed engine crash with the notefield when some themes set infinity ❕✅ Fixed bug with Autoplay desync on SplitTiming ❕✅ Fixed file flush hang locking up the game ❕✅ Fixed SextetStream message pushing so lights work again (Thanks P.S. May) ❕✅ Fixed potential edge case with some SextetStream outputs not creating a suitable FIFO buffer (Thanks P.S. May) ❕✅ Fixed crash with difficulty selection on the engine music wheel ❕✅ Fixed buffer crash in RageSound ❕✅ Fixed memory leak in RageSound ❕✅ Fixed bad access in FLAC/Opus audio loaders ❕✅ Removed dead code in RageSoundDriver ❕✅ Fixed missing global headers ❕✅ Fixed race condition causing crashes when scrolling fast on some third party themes in the music wheel ❕✅ Added control channel support for rtMIDI ❕✅ Cut character count in MIDI button names for readability ❕✅ Fixed bug with channel mapping on LSB for rtMIDI ❕✅ Optimised MIDI inputhandler code for all systems ❕✅ Fixed bug with everything being portMIDI ❕✅ Enabled missing Pitch bend support in PortMIDI ❕✅ Added up/down jog-wheel logic to rtMIDI/portMIDI ❕✅ Added MIDI channel support for duplicate buttons ❕✅ Fixed bug with velocity on Event 0x09 ❕✅ Fixed bug with channel value overflowing on portmidi ❕✅ Fixed bug with some MIDI messages being dropped on rtmidi ❕✅ Fixed rotary/slider support on both midi drivers ❕✅ Fixed memory leak in ffmpeg context creation ❕✅ Fixed stretch check on some videos ❕✅ Added support for \u0026lsquo;AdditionalTextureHint\u0026rsquo; \u0026ldquo;stretch\u0026rdquo; in ffmpeg ❕✅ Fixed exception on rtMIDI 5.0.0 ❕✅ Fixed bug with some quirky metrics, they have been Removed ❕✅ Fixed bug where some messages are sent when not playing ❕✅ Fixed LONG_MAX overflowing on BPM ❕✅ Fixed bug with missing CustomBeatBars metric ❕✅ Fixed bug with invalid song length in ScreenGameplay returning -1 and locking up the game ❕✅ Removed Song being able to overwrite values with incorrect ones ❕✅ Removed the need for the stencil buffer which was being set up automatically ❕✅ Fixed bug with shift+F2 bringing up the debug menu ❕✅ Fixed bug with head taps showing if a minefield is present, stops taps turning into hold/roll heads ❕✅ Fixed bug with the Profile Score loading ❕✅ Fixed rtmidi\u0026rsquo;s implementation of pthreads ❕✅ Fixed crash with mutex not being unlocked causing an endless loop ❕✅ Fixed hard crash when loading game with \u0026gt;1000 songs ❕✅ Fixed bug with a buffer overflow on the sound buffer ❕✅ Added GetTotalScoresWithGrade() function \u0026ndash; This lets you get the total number of scores with the specified grade. ❕✅ Added missing noteskins on installer, thanks Mikex5 ❕✅ Fixed note group type adding on TapNoteGroupType ❕✅ Added scroll factor calculations to beat bars ❕✅ Fixed bug with missing Lift and Roll explosions on the receptor ❕✅ Fixed bug in GetFileSet() causing an endless loop on some theme calls ❕✅ Fix crash with some mutex locks not being released ❕✅ Cleaned up timing data skew on loading on some edge cases ❕✅ Fixed Ago() inaccuracy on the sound position ❕✅ Removed High Resolution Clock for systems that do not support it ❕✅ Fixed ArchHooks() returning the wrong clock() type ❕✅ Fixed GetTimeSinceStart() not being as accurate as it pretends to be ❕✅ Fixed DeltaTime from rounding the wrong way and causing a stutter ❕✅ Added new time aliases, for modding will expose to lua later ❕✅ Fixed bug with Double -\u0026gt; Float -\u0026gt; UInt64 rounding\u0026hellip; why ❕✅ Fixed bug in Lights driver where everything was 1-3ms behind the game ❕✅ Fixed bug in our \u0026lsquo;FuncTimer\u0026rsquo; where it wasn\u0026rsquo;t as accurate as it could be ❕✅ Fixed bug in TimingData for SSC caching and delivery ❕✅ Added support for new noteskin measure bars! ❕✅ Fixed bug with GIF files being automatically set as BGA ❕✅ Fixed bug with random BGA being force loaded when the file had programmed BGAs ❕✅ Fixed bug with styles not being correctly set with players available ❕✅ Fixed bug with simfiles with many scroll/stop/bpm change effects causing a crash ❕✅ Fixed crash with noteskins not honouring the datatype in lua *Editor:\n❕✅ Begin *Windows 7+:\n❕✅ Updated portMIDI for windows 11 ❕✅ Updated NSI to fix unneeded files being called ❕✅ Updated NSI on Windows to ensure proper cleanup - Thanks drumbs ❕✅ Fixed sound artifacts due to buffer underrun ❕✅ Forced legacy sampler to reduce WaveOut glitches on Windows 11 ❕✅ Fixed bug with evaluation screen crashes on windows 7/8/8.1 ❕✅ Fixed bug with BEX underflow error on windows 7 ❕✅ Fixed stack overflows in Vista and 7 ❕✅ Fixed \u0026lsquo;This program has closed unexpectedly\u0026rsquo; on Windows 7 ❕✅ Fixed Windows sound clock reporting the incorrect value ❕✅ Removed legacy Windows code that was running twice Linux:\n❕✅ Fixed size_t adjustments ❕✅ Fixed nil push on GetCurrentSong() ❕✅ Fixed sound clipping due to buffer underrun - Thanks SheepyChris ❕✅ Added a bug\u0026hellip; Underflow the sound driver to fix pulseaudio potential skipping/scratching ❕✅ Fixed compile on new rtMIDI version ❕✅ Fixed bug with MIDI drivers not returning a device on Arch/Fedora linux on 5.5+ kernels ❕✅ Fixed segfaults on non-debian distros with kernel 5.10+ ❕✅ Fixed Linux thread math overflow on Timer MacOS (Universal):\n❕✅ Updated portMIDI for MacOSX11+ ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some quirks on context generation thanks to MESA ❕✅ Fixed bug with evaluation screen crashes ❕✅ Fixed Segfaults on ARM systems Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 19th June 2022 \u0026ldquo;Pump or Dump?\u0026rdquo; (Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1) Please read the change log! Hotfix release! Release Date: 19th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; ALL: ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560 ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563 ❕✅ Fixed crash on board being set outside of gh - closes #559 If you see a message that says The board texture has not been set."},{"id":5,"href":"/releases/A4.15.0/","title":"OutFox Alpha 4.15.0 Build","parent":"Release History","content":" Release Date: 14th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ be-mu: Fixed doubles column location ❕✅ be-mu: Fixed crash with 5k versus ❕✅ be-mu: Fixed crash with legacy BMS and some BML files ❕✅ dance: Fixed left arrow for doubles ❕✅ dance: Fixed multi-row holds not being hit correctly on new hold mechanics ❕✅ dance: Fixed old .sm charts ending early ❕✅ dance: Added SetRequireStepOnHoldHeads() back for modding support ❕✅ dance: Fixed bug with missing 4k Dance support in BMS files ❕✅ ds3ddx: New Added 5 panel support! ❕✅ ds3ddx: New Added pump chart to ds3ddx smart autogen ❕✅ ds3ddx: Fixed bug with ds3ddx 5 panel not working due to invalid metrics ❕✅ ds3ddx: Fixed noteskin column locations and 5 panel ds3ddx layout ❕✅ gh: Fixed typo in last strum logic ❕✅ gh: Tweak fever in GH mode ❕✅ gh: New Added support for all sound layers in .chart and .midi files ❕✅ gh: Fixed crash with chart loading ❕✅ gh: Fixed bug with BGAs on .chart and .midi files ❕✅ gh: Fixed bug with missing loaded features on .chart and .midi files ❕✅ gh: Fixed bug with end of song evaluation crashes on .chart loader ❕✅ gh: Fixed \u0026lsquo;out of range\u0026rsquo; ghost crashes when loading .chart files ❕✅ kbx: Fixed hold mechanics ❕✅ kbx: New Added arrow noteskins via global noteskins ❕✅ kbx: Fixed kbx tick-hold damage values ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ po-mu: Fixed crash with 3/5/7/9 versus ❕✅ po-mu: Fixed icon for po-mu18 button style ❕✅ para: Fixed old .sm charts ending early ❕✅ para: New Added proper second hinting ❕✅ pump: Fixed bug with row overflow causing some charts to be 2.57 years in length ❕✅ pump: Fixed bug with notes at end of warp being unhittable ❕✅ pump: New Added classical3d+ noteskin for pump ❕✅ pump: Fixed bug with fake notes ❕✅ pump: Fixed clamp and overflow on beat locations on warps ❕✅ pump: Restored {} note support for pump ❕✅ pump: Fixed bug with mis-parsed hidden notes for pump ❕✅ pump: New Added support for \u0026lsquo;h\u0026rsquo; notes ❕✅ pump: New Added skeleton for \u0026rsquo;s\u0026rsquo; and \u0026lsquo;v\u0026rsquo; notes (coming in 0.4.16) ❕✅ pump: Fixed bug with checkpoint ticks ❕✅ pump: Fixed overflow on bpmMax ❕✅ pump: Fixed warps to behave properly once again ❕✅ pump: Fixed Musiclength overflowing ❕✅ pump: Fixed bug with pump #LASTSECOND ❕✅ pump: Fixed issue with #LASTSECONDHINT not respecting chart length correctly ❕✅ pump: New Added support for group file \u0026ldquo;ForcePIU\u0026rdquo; to force use the PIUloader ❕✅ pump: Fixed bug with hold end fixes ❕✅ pump: Fixed pump hold mechanics ❕✅ pump: Fixed bug with 2 second restart on older charts (pre 2010) ❕✅ pump: Fixed bug with 7 second restart on older .ksf charts (pre 2007) ❕✅ pump: Fixed bug with some charts ending early with extremely long \u0026rsquo;ending\u0026rsquo; holds ❕✅ pump: Fixed pump holds stepping logic to be more accurate ❕✅ pump: Removed pointless 3.x era code breaking several features ❕✅ pump: Fixed hold notes judge for pump ❕✅ pump: Fixed pump doubles layout ❕✅ pump: Fixed pump life damage on tick-holds ❕✅ pump: Removed legacy \u0026rsquo;time\u0026rsquo; methods for calculating pump length which have been broken since 2007 ❕✅ pump: Fixed dead code with \u0026lsquo;First\u0026rsquo; and \u0026lsquo;Last\u0026rsquo; second not being used except to overwrite with wrong information ❕✅ pump: Fixed bug with math in #LastSecondHint ❕✅ pump: Fixed \u0026lsquo;centre\u0026rsquo; overlapping for noteskins ❕✅ pump: Fixed missing notes on receptors ❕✅ pump: Fixed bug with Pump Holds punishing life on checkpoint misses ❕✅ taiko: Added #BALLOON .tja note parsing, count logic needs to be added ❕✅ taiko: Fixed bug with missing A \u0026amp; B notes on .tja parser ❕✅ taiko: Added Note Type A B D E to .tja parser ❕✅ taiko: Fixed Missing #NOTESDESIGNER tags in .TJA files ❕✅ all: Fixed bug with hold ticks after a warp transition forgetting there was a hold ❕✅ all: Fixed tween overflow on holds ❕✅ all: Fixed bug with clamped BPM being weird on warps and bpm calculation ❕✅ all: New Only load keysounds on chart load, to speed up caching for BMS/PMS/DTX/GDA/BGF ❕✅ all: Fixed bug in cache being overwritten ❕✅ all: Fixed bug in cache values being written to in wrong order ❕✅ all: Fixed bug in the way cache is written for charts with slightly different lengths in .SSC and .SM files ❕✅ all: Rewrote SSC/SM/PIU loaders to respect proper chart lengths, removing the old SM 3.x methods ❕✅ all: Fixed #LASTSECOND overriding the hint and breaking musiclength values ❕✅ all: Fixed order for caching last second ❕✅ all: Fixed #LASTSECONDHINT not returning a value Engine\n❕✅ Fixed bug with bHeld not functioning as expected on auto play ❕✅ Some small general optimisations of entire math pipe ❕✅ Removed legacy SSC era lua function causing errors on infinitesimal and waiei themes ❕✅ Optimised lua stack to reduce odd edge case crash ❕✅ Fixed bug with head/tail switch on simpleholds ❕✅ Fixed bug with ScreenGameplay() overlay ❕✅ Fixed bug with several edge cases of the Lua stack overflowing ❕✅ Fixed bad sleep command in judgements ❕✅ Fixed menu event sounds to be proper action events in the sound engine ❕✅ Added proper IsAction support for PlayOnce() ❕✅ Fixed Autoplay missing holds and rolls with the new mechanics ❕✅ Updated ScreenSelectGame() for ds3ddx5 and po-mu18 ❕✅ Fixed issue with missing default drivers ❕✅ Fixed crash with themes setting empty noteskins ❕✅ Fixed engine crash with some themes setting infinite fadeout ❕✅ Fixed engine crash with the notefield when some themes set infinity ❕✅ Fixed bug with Autoplay desync on SplitTiming ❕✅ Fixed file flush hang locking up the game ❕✅ Fixed SextetStream message pushing so lights work again (Thanks P.S. May) ❕✅ Fixed potential edge case with some SextetStream outputs not creating a suitable FIFO buffer (Thanks P.S. May) ❕✅ Fixed crash with difficulty selection on the engine music wheel ❕✅ Fixed buffer crash in RageSound ❕✅ Fixed memory leak in RageSound ❕✅ Fixed bad access in FLAC/Opus audio loaders ❕✅ Removed dead code in RageSoundDriver ❕✅ Fixed missing global headers ❕✅ Fixed race condition causing crashes when scrolling fast on some third party themes in the music wheel ❕✅ Added control channel support for rtMIDI ❕✅ Cut character count in MIDI button names for readability ❕✅ Fixed bug with channel mapping on LSB for rtMIDI ❕✅ Optimised MIDI inputhandler code for all systems ❕✅ Fixed bug with everything being portMIDI ❕✅ Enabled missing Pitch bend support in PortMIDI ❕✅ Added up/down jog-wheel logic to rtMIDI/portMIDI ❕✅ Added MIDI channel support for duplicate buttons ❕✅ Fixed bug with velocity on Event 0x09 ❕✅ Fixed bug with channel value overflowing on portmidi ❕✅ Fixed bug with some MIDI messages being dropped on rtmidi ❕✅ Fixed rotary/slider support on both midi drivers ❕✅ Fixed memory leak in ffmpeg context creation ❕✅ Fixed stretch check on some videos ❕✅ Added support for \u0026lsquo;AdditionalTextureHint\u0026rsquo; \u0026ldquo;stretch\u0026rdquo; in ffmpeg ❕✅ Fixed exception on rtMIDI 5.0.0 ❕✅ Fixed bug with some quirky metrics, they have been Removed ❕✅ Fixed bug where some messages are sent when not playing ❕✅ Fixed LONG_MAX overflowing on BPM ❕✅ Fixed bug with missing CustomBeatBars metric ❕✅ Fixed bug with invalid song length in ScreenGameplay returning -1 and locking up the game ❕✅ Removed Song being able to overwrite values with incorrect ones ❕✅ Removed the need for the stencil buffer which was being set up automatically ❕✅ Fixed bug with shift+F2 bringing up the debug menu ❕✅ Fixed bug with head taps showing if a minefield is present, stops taps turning into hold/roll heads ❕✅ Fixed bug with the Profile Score loading ❕✅ Fixed rtmidi\u0026rsquo;s implementation of pthreads ❕✅ Fixed crash with mutex not being unlocked causing an endless loop ❕✅ Fixed hard crash when loading game with \u0026gt;1000 songs ❕✅ Fixed bug with a buffer overflow on the sound buffer ❕✅ Added GetTotalScoresWithGrade() function \u0026ndash; This lets you get the total number of scores with the specified grade. ❕✅ Added missing noteskins on installer, thanks Mikex5 ❕✅ Fixed note group type adding on TapNoteGroupType ❕✅ Added scroll factor calculations to beat bars ❕✅ Fixed bug with missing Lift and Roll explosions on the receptor ❕✅ Fixed bug in GetFileSet() causing an endless loop on some theme calls ❕✅ Fix crash with some mutex locks not being released ❕✅ Cleaned up timing data skew on loading on some edge cases ❕✅ Fixed Ago() inaccuracy on the sound position ❕✅ Removed High Resolution Clock for systems that do not support it ❕✅ Fixed ArchHooks() returning the wrong clock() type ❕✅ Fixed GetTimeSinceStart() not being as accurate as it pretends to be ❕✅ Fixed DeltaTime from rounding the wrong way and causing a stutter ❕✅ Added new time aliases, for modding will expose to lua later ❕✅ Fixed bug with Double -\u0026gt; Float -\u0026gt; UInt64 rounding\u0026hellip; why ❕✅ Fixed bug in Lights driver where everything was 1-3ms behind the game ❕✅ Fixed bug in our \u0026lsquo;FuncTimer\u0026rsquo; where it wasn\u0026rsquo;t as accurate as it could be ❕✅ Fixed bug in TimingData for SSC caching and delivery ❕✅ Added support for new noteskin measure bars! ❕✅ Fixed bug with GIF files being automatically set as BGA ❕✅ Fixed bug with random BGA being force loaded when the file had programmed BGAs ❕✅ Fixed bug with styles not being correctly set with players available ❕✅ Fixed bug with simfiles with many scroll/stop/bpm change effects causing a crash ❕✅ Fixed crash with noteskins not honouring the datatype in lua *Windows 7+:\n❕✅ Updated portMIDI for windows 11 ❕✅ Updated NSI to fix unneeded files being called ❕✅ Updated NSI on Windows to ensure proper cleanup - Thanks drumbs ❕✅ Fixed sound artifacts due to buffer underrun ❕✅ Forced legacy sampler to reduce WaveOut glitches on Windows 11 ❕✅ Fixed bug with evaluation screen crashes on windows 7/8/8.1 ❕✅ Fixed bug with BEX underflow error on windows 7 ❕✅ Fixed stack overflows in Vista and 7 ❕✅ Fixed \u0026lsquo;This program has closed unexpectedly\u0026rsquo; on Windows 7 ❕✅ Fixed Windows sound clock reporting the incorrect value ❕✅ Removed legacy Windows code that was running twice Linux:\n❕✅ Fixed size_t adjustments ❕✅ Fixed nil push on GetCurrentSong() ❕✅ Fixed sound clipping due to buffer underrun - Thanks SheepyChris ❕✅ Added a bug\u0026hellip; Underflow the sound driver to fix pulseaudio potential skipping/scratching ❕✅ Fixed compile on new rtMIDI version ❕✅ Fixed bug with MIDI drivers not returning a device on Arch/Fedora linux on 5.5+ kernels ❕✅ Fixed segfaults on non-debian distros with kernel 5.10+ ❕✅ Fixed Linux thread math overflow on Timer MacOS (Universal):\n❕✅ Updated portMIDI for MacOSX11+ ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some quirks on context generation thanks to MESA ❕✅ Fixed bug with evaluation screen crashes ❕✅ Fixed Segfaults on ARM systems Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New classical3d noteskin for pump ✅ Add 3D rolls to paws-simpleholds Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 14th June 2022 \u0026ldquo;Don’t matter if you tough or gruff\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7) (Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15) The news sections will be completed shortly, the full changelog follows below: (Squirrel) KNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!"},{"id":6,"href":"/releases/A4.14.0/","title":"OutFox Alpha 4.14.0 Build","parent":"Release History","content":" Release Date: 25th March 2022 \u0026ldquo;You\u0026rsquo;ve upset the cat!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4.xx versioning, leaving the 5.3 alone. Following consultation with ensuring we are compliant with our binary signing requirements, we have decided to drop this long version number and just use the 0.x.y.z which is a lot easier to read.\nInternally we were using the alpha builds like this to simplify our own understanding, and it seemed the easiest way to move forward. This build is formally known as 0.4.14, and we will be dropping versioning from folders and suchlike moving onward. We have removed the final parts that we needed for validation, so we are pleased to announce signed binaries for Windows will be available in the summer.\nThemes or systems which check for \u0026lsquo;StepMania\u0026rsquo; in the product family may fail to find OutFox until updated, we have reached out to the developers of Simply Love and let them know about our updates and they have let us know it will be updated in due course.\nIf you are using using Simply Love please follow the guide on the GitHub to replace the files in the mean time. Announcing a cross platform ParaPara Paradise Driver! Thanks to eks-d parapara for the image! (https://paramania.kirakira.org/ has an OutFox supported theme!) Following an overwhelming demand from the community, we have rewritten the old legacy PPP controller driver from the PS2 to work on all devices OutFox supports.\nTo use this new driver on your Mac or linux machine, go to your preferences.ini and use one of the following to get your controller to work:\nPlease Note: You will need to add one of these so your controller will work!\nWindows\n(para only): InputDrivers=para,legacy,minisdl (para and rtmidi): InputDrivers=para,rtmidi,legacy,minisdl Mac OS (M1 and Intel)\n(para only): InputDrivers=para,SDL (para and rtmidi): InputDrivers=para,rtmidi,SDL Linux (x86_64/ARM/Raspberry Pi)\n(para only): InputDrivers=para,SDL (para and rtmidi): InputDrivers=para,rtmidi,SDL The controller must be plugged in before you start OutFox, and it is recommended for M1 based Macs you have a USB C hub that has built in USB2 ports. This will give you the greatest compatibility with older hardware. Do send us your ParaPara setups, we\u0026rsquo;d love to see them!\nKNOWN ISSUES: Alpha 4.14.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play those keysounds silently. ALL: Mode Specific\n❕✅ taiko: New Added TJA parser support! ❕✅ taiko: New Added TJA note type support ❕✅ taiko: New Added TJA #BPM adjustment support ❕✅ taiko: New Added math and base 4 measure support to TJA parser ❕✅ taiko: New Added multi-chart support in TJA parser ❕✅ taiko: New Added OTO taiko SV (scroll gimmick) support ❕✅ taiko: New Added OTO taiko multi-chart in one folder support ❕✅ taiko: Fixed crash in TJA parser on some linux distros ❕✅ taiko: Fixed ratio overflow on OTO taiko mode ❕✅ taiko: Fixed crash with older community TJA files (pre 2014 era) ❕✅ taiko: Adjusted drum hitsounds on taitai noteskins to be more accurate ❕✅ taiko: Adjusted the drum hitsounds to be less laggy when rapid hitting ❕✅ taiko: Finished OTO Taiko Note Parsing (we now can read everything, though holds/balloon are single notes at the moment) ❕✅ pump: Fixed PIU loader crash ❕✅ pump: Fixed bug with some .SM and .SSC breaking the cache ❕✅ pump: Fixed bug with pump (.sm/.ssc/.ksh) files snapping to completed on start ❕✅ pump: Fixed bug with pump charts showing a negative song length ❕✅ pump: Fixed bug with pump charts being set a 2 second chart length ❕✅ pump: Fixed bug with \u0026rsquo;extended\u0026rsquo; pump charts (longer than 9:59) not being parsed ❕✅ pump: Fixed bug with pump charts with no set song length from crashing the game ❕✅ pump: Fixed bug with pump charts being set an invalid steps seconds value ❕✅ pump: New Added new skeleton for AV mod, math to be added, (not finished yet) ❕✅ pump: Fixed hashing being called with autogensteps causing lag on pump and dance wheels ❕✅ pump: Fixed legacy bug with the KSF loader causing songs to end early ❕✅ kbx: New Added OTO mania SV (scroll gimmick) support, Warps to come ❕✅ kbx: Fixed bug with bad osu charts crashing the game (Thanks Yuki) ❕✅ kbx: Fixed initial scroll flags for o!mania charts ❕✅ kbx: Fixed inverse math algorithm on gimmicks so they aren\u0026rsquo;t back to front ❕✅ kbx: Fixed \u0026lsquo;correction\u0026rsquo; and \u0026lsquo;chapter\u0026rsquo; timing points on o!mania charts (Thanks Matthew - The Lagger) ❕✅ kbx: Fixed lane math overflow in the QUA parser ❕✅ kbx: Fixed some 7K holds being skipped in the QUA parser ❕✅ kbx: New Added SV support to QUA parser ❕✅ kbx: Fixed songs with different steps lengths from ending at odd times ❕✅ kbx: Fixed math overflow on some o!mania gimmicks ❕✅ kbx: Fixed math for OTO parser, scroll gimmicks and such now work ❕✅ kbx: New Added scroll factor support to QUA parser ❕✅ kbx: Fixed crash on OTO/QUA parsing of osu/osz and qua/qp files when loading a mix of archives and non-archives ❕✅ kbx: Fixed punishment with hold mashing ❕✅ kbx: Made lift holds less harsh ❕✅ kbx: New Added KBX 16/17/18/19 lane support! ❕✅ kbx: Fixed noteskin support for new KBX 16-19 lanes ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki ❕✅ para: New cross platform Para Para Paradise Controller Driver! ❕✅ stepstage: Make stepstage available on editor ❕✅ dance: Fixed bug with Hashsplit and SSC hashing ❕✅ dance: Fixed quirk with some SSC cache files for old SM5 era modfiles ❕✅ dance: New Rewrote and optimised the SSC loader ❕✅ dance: Fixed Memory leak with writing SSC files for the cache ❕✅ dance: Fixed potential infinite loop on some dance songs causing crash ❕✅ dance: Fixed crash with dance charts when selecting different styles ❕✅ dance: Fixed scoring and correct ITG windows in timing.lua ❕✅ dance: Fixed DDR Ace timing in timing.lua ❕✅ dance: Fixed bug with missing split-timing checks ❕✅ dance/smx: Fixed \u0026lsquo;REQUIRE_STEP_ON_MINES\u0026rsquo; logic, thanks to din ❕✅ techno: Fixed crash when using 4k 5k 8k 9k interchangeably ❕✅ all: Fixed Notedata memory leak on SSC files when initial loading ❕✅ all: Fixed crash on parsing when loading more than 9000 SSC files ❕✅ all: Fixed crash on parsing when loading more than 3000 non-SSC files ❕✅ all: Fixed crash on music wheel when going through SSC/SM files ❕✅ all: Fixed bug with some crashes on non-SSC files having no or missing preview songs/sounds ❕✅ all: Fixed bug with some po-mu/be-mu/gddm/pump/ charts ending after \u0026lt; 2 seconds of starting ❕✅ all: Fixed bug with songlength math overflow on some pump/osu charts ❕✅ gh: Allowed gh charts to be genned for styles ❕✅ po-mu: Fixed crash when trying to play with different key values. Keysounds will be weird, as there needs to be new logic for this as it is new ground ❕✅ po-mu: Fixed playback on 3 lane charts being shifted to channel 12 ❕✅ po-mu: Fixed parsing of 3 lane charts ❕✅ po-mu: New pomu-nine-double support ❕✅ po-mu: New pomu-nine-double native parsing from BME/PMS files ❕✅ po-mu: New pomu-nine-double Mines and Long Note support (extended PMS spec) ❕✅ be-mu: Fixed crash when playing 5k and 7k at the same time Engine\n❕✅ Fixed Charts with similar difficulties in a folder having scores assigned to them weirdly, due to the old SM paradigm. ❕✅ Fixed Charts with different song lengths being finished at wrong times due to the audio of the main song being incorrect. ❕✅ New OutFox branded init screens, bye bye Team Rizu! ❕✅ Fixed selection reset on 2 player confirmation on the music wheel, closes #489 ❕✅ Added TimingData support to \u0026lsquo;PlayMusicPart()\u0026rsquo; ❕✅ Fix missing Localised \u0026lsquo;Exit\u0026rsquo; on OptionsRow - will need to be added to the other langs ❕✅ Fixed bug with some sextet streams missing ❕✅ Fixed bug with chart audio being forced on selected song ❕✅ Allowed PlayerState() access from Def.NoteField() ❕✅ Added new mouse support to miniSDL\u0026rsquo;s aux handler ❕✅ Fixed missing finger presses ❕✅ Fixed alignment issues with Boxy noteskins ❕✅ New Added Cubeism Framework ❕✅ Fixed Excessive memory use on parsing songs - wipe cache and prefs for this one! ❕✅ Added new minisdl aux driver access to lua for proper mouse/touchscreen support ❕✅ Add new modstring aliases ❕✅ New Added new CA (ConstAverage) mod to the game ❕✅ New Added new skeleton for CX (ConstMultiplier) mod, math to be added, (not finished yet) ❕✅ Fixed double note loading being called causing lag on music wheels ❕✅ Fixed bug with bad AMod initialisation ❕✅ Fixed bug with crashing on enumhelper ❕✅ Fixed Mismatched charthash generation ❕✅ Fixed cache not being generated with hashkeys that the game recognised ❕✅ Fixed hash generation on SSC ❕✅ Fixed bug in loading window that slowed down chart loading and memory use ❕✅ Fixed bug with Centered1Player on course mode ❕✅ Fixed bug with missing BGA calls on several notes loaders ❕✅ Fixed bug with FGA/BGA data being written to cache but not being used ❕✅ Fixed missing FG commands that broke a few modfiles ❕✅ Fixed a few things with textentry (highlight/clipboard/etc) ❕✅ Fixed bug with font size on music wheel for subtitle ❕✅ Fixed bug with BG/FG screens not being correctly called on some mod files ❕✅ Updated libjson (SM#2188) and added OutFox patches ❕✅ Fixed TextEntry overflow support ❕✅ New Added GameSoundManager:GetMusicPath() ❕✅ Fixed bug with odd offsets and fSongBeat() at the beginning of gameplay ❕✅ New Added TextEntry:Clear() ❕✅ Fixed bug with missing mine count on modes other than dance ❕✅ Added FoxClock() snippets for frame calc ❕✅ Added new max()/min() functions to support newer types ❕✅ Fixed math with flow operations causing stutters on newer gpu drivers (500+ for nvidia/21.6+ for AMD) ❕✅ Fixed CMake issues and we are now 0.4.14 - 5.3 is gone ❕✅ Fixed bug with root access - #SM2187 ❕✅ Fixed bug with sorting by song length returning garbage - #SM2192 ❕✅ Fixed bug with resorting sections when not required - #SM2193 ❕✅ Fixed bug with not reporting \u0026lsquo;OutFox\u0026rsquo; in PRODUCTFAMILY ❕✅ Fixed bug in BeatBarsDistanceDraw() for reverse points *Editor:\n❕✅ Begin work on new side information text layout ❕✅ Added option to toggle chart autosaving ❕✅ Added \u0026ldquo;Set Current Section as Attack Time\u0026rdquo; ❕✅ Fixed Stop highlight colour ❕✅ Restored text information for this release ❕✅ Increased editor movement speed when holding button ❕✅ Moved \u0026ldquo;Record Mode Lean In\u0026rdquo; and \u0026ldquo;Clear Prompt Threshold\u0026rdquo; to Editor settings. ❕✅ Marginal system for beat bar drawing during editing (To become a setting later) ❕✅ Changed button combination for Screenshot in MacOS (CMD + F12) ❕✅ Converted Record Note data into a pointer, fixes the missing visual representation during record. ❕✅ Added notefield zoom scaling via the mouse wheel ❕✅ Added support for adding Note Group types for Taitai and StepStage ❕ Reverted change for play selection ❕✅ Meter editing in chart now support floating numbers ❕ Added Lua hooks: IsStepTiming, SetSnapMode, ChangeToStepTiming, SetHighlightSelection, SetBPM, SetStop, SetDelay, SetWarp, SetLabel, SetTickCount, SetScroll, GetEditorPosition Note: These Lua hooks can be subject to change. *Windows 7+:\n❕✅ Fixed bug in ParaPara Controller on windows 11 not detecting input ❕✅ Removed deprecated Win32_Para driver ❕✅ Removed broken Legacy Mouse from Win32_Legacy Driver ❕✅ Fixed bug with Windows 10 \u0026amp; 11 low level window potentially trying to triple buffer due to latest update ❕✅ Fixed bug with Focus glitches on win32 legacy due to Nvidia 5xx drivers ❕✅ Fixed bug with Windows 98 era calls being used for some window options ❕✅ Fixed 2004 era bug with redundant code causing stutters on windows 11 ❕✅ Fixed bugs with missing delete commands in uninstaller. Closes #498 Linux:\n❕✅ Fixed GLAD static libraries for Linux MacOS (Universal):\n❕✅ Fixed bug with M1 Macs forgetting the para controller is plugged in ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed GLAD generation causing issues on RPi 3/4 Community content Other ✅ Added OutFox category to the LuaDocs XML Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Judgments ❕✅ Added KBX / BMS judgments from MDR ❕✅ Added Infinitesimal judgments Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ New! Slovak translation by jose1711 ","description":"Release Date: 25th March 2022 \u0026ldquo;You\u0026rsquo;ve upset the cat!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.1-rc0 to 4.13.1-rc9) (Incorporates Internal Builds 4.14.0-rc0 to 4.14.0-rc4) New Versioning, folders, and a short news update. Following this release OutFox will be officially dropping the 5.3 prefix from our versioning to lessen confusion from our user base. We used to be 5.3.0.4.xx.xx as we were working on the game, but many of our users preferred to use the Alpha 4."},{"id":7,"href":"/releases/A4.13.0/","title":"OutFox Alpha 4.13.0 Build","parent":"Release History","content":" Release Date: 9th February 2022 \u0026ldquo;Back to the Normality\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000.\nThis game featured quite a unique layout, having 3 panels of input per column. The game used a dual column layout for the \u0026rsquo;normal\u0026rsquo; mode, which had 6 inputs total, with the left hand side of the pad being for left, and right side being right. There is a much easier \u0026lsquo;single\u0026rsquo; mode where all 6 pads are placed on a single column, but only the colour is needed to be hit, with the \u0026rsquo;left or right\u0026rsquo; side being ignored.\nThere was a home release of this game called Stepping Selection released for the PlayStation 2, and naturally, Project OutFox supports the use of this pad via the usual adapter, so you can play at home on the original dance mat.\nI took a photo of my dance mat as there weren\u0026rsquo;t many clear photos online - Squirrel The mode supports autoGen and can use dance/pump/kb6 charts to great success, and does support modfile cross-generation, so you can see the cool effects in this mode.\nWhat about other dance pads? If you have a dance pad with has the input buttons there are noteskins to help remind you of this so you can play this mode with the far right column, and far left:\nThis can allow you to play on any 9/8 panel mat made for other games with this mode, using Top Left / Left / Bottom Left and Top Right / Right / Bottom Right for the inputs.\nAnnouncing OutFox Serenity Volume 1 Winter Update! Welcome to OutFox Serenity, the official community song pack project for Project OutFox! Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the extended mode support of Project OutFox by offering charts for multiple game types beyond just 4-key styles.\nInitially released on August 27, 2021, OutFox Serenity Volume I featured music by Aspid Cat, Drazil, Jack5, Matduke, mmry, PizeroFox, Seo, and Sevish. Alongside 4-panel dance and 5-panel pump charts, most of its songs also have be-mu, po-mu, techno (8- and 9-panel), gddm, gdgf, and gh charts.\nThe Winter Update to OutFox Serenity Volume I features three new songs by DJ Megas, Matduke and Pekoneko (ペコネコ). It also includes changes to some of the existing songs from Volume 1, including additional charts, and key-sounded be-mu/po-mu and gh charts for selected songs.\nFind out more here: https://github.com/TeamRizu/OutFox-Serenity/releases/latest\nTo download the game including the Serenity Pack, look for the download for your system which has Serenity in the Filename. KNOWN ISSUES: Alpha 4.13.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE Charts with similar difficulties in a folder will have scores assigned to them weirdly, due to the old SM paradigm. This will be fixed in a future update. ALL: Mode Specific\n❕✅ dance/smx: New Added the Mine Fix for dance and smx modes only so it doesn\u0026rsquo;t break others (theme metric - EnableMineFix) ❕✅ stepstage: New stepstage Game mode, based on Jaleco\u0026rsquo;s arcade/ps2 game from 2000 ❕✅ dance: New 3 panel versus / double style ❕✅ dance: New solo versus / double style ❕✅ ds3ddx: New ds3ddx versus / double style ❕✅ stepstage: New Added support for combined notes ❕✅ smx: New OutFox-note and OutFox-ITG noteskins ❕✅ kbx: Fix kbx noteskin display for keyboard/controller ❕✅ kbx: Add XInput buttons to kbx noteskin support ❕✅ kbx: Support .qua/.qp files (no time signature changes yet) ❕✅ kbx: New QUA parser! ( for KB4 and KB7 support!) ❕✅ kbx: Fixed hash system for OTO \u0026lsquo;many charts in a folder\u0026rsquo; system for KBX ❕✅ kbx: Fixed checkpoint scoring for KBX ❕✅ kbx: New \u0026ldquo;exactbar\u0026rdquo; noteskin for kbx ❕✅ smx: Fix Stop / BPM colours on the measure lines ❕✅ kbx: Lessen the harshness on scoring on kbx mode ❕✅ kbx: Restore AutoPlay to POsimple (kbx mode) ❕✅ ALL: Finally fix GetHash() - fixes edit/same difficulty in folder scoring applying to all charts for that song ❕✅ ds3ddx: Fixed bug with layers and default noteskins ❕✅ be-mu/po-mu: Fixed options menu crash (Closes #434) ❕✅ be-mu/po-mu/gddm: Fixed overflow with files that have 1280+ keysounds ❕✅ be-mu/po-mu: Fixed crash with missing noteskin metrics ❕✅ be-mu/po-mu: Fixed hang on with some charts (Closes #434) ❕✅ taitai: New basic taiko parsing on .osu files! ❕✅ stepstage: Fixed support for the unique display mode on stepstage ❕✅ stepstage: New compat-PS/XB noteskins for those with normal 8/9 panel dance mats ❕✅ djh: Added DJH 2 scratch support (future mode) ❕✅ djh: Added DJH controller support (future mode) ❕✅ ds3ddx: New ds3ddx noteskin ❕✅ stepstage: New StepStage noteskins ❕✅ gdgf: New gdgf noteskins ❕✅ smx: New smx noteskins ❕✅ ds3ddx: New and fixed ds3ddx sprites ❕✅ stepstage: Fixed missing strings ❕✅ kbx: Fixed bug where the mode did not select AutoSetStyle ❕✅ pump: Fixed piu loader overflow ❕✅ pump: Fixed piu loader rare recursive bug crashing the game (thanks notnola) ❕✅ ds3ddx: Fixed crash with ds3ddx on screen demonstration Engine\n❕✅ Sync OutFox to match the support added in 0.35 of the TFG, adding Latin extended C and D ❕✅ Add new noto medium fonts for added Latin Ext C/D ❕✅ Add new noto semibold fonts for added Latin Ext C/D ❕✅ Fixed bug with unloading font maps ❕✅ Fixed bug with unloading song audio files (Closes #110) ❕✅ Fixed bug with noteskin caching on gamestate refresh ❕✅ New cpr libraries ❕✅ Fixed issue with cmake trying to set the wrong path ❕✅ New OFMath lua namespace for better optimised math options ❕✅ Load noteskins for non mod-files ❕✅ Remove deprecated openSSL libraries ❕✅ Fix long overdue NSKINMAN removal and bugs ❕✅ Fix issues with no options on global skins ❕✅ Work on the new TJA parser (still in progress) ❕✅ Fix quirk with noteskin loading ❕✅ Add reverse support for retrobar noteskin ❕✅ Fixed crash with def.notefield() in editor ❕✅ Fixed input passthrough with def.notefield() and AutoPlay ❕✅ Added new LuaLife which can override internal life systems for modes which need custom ones ❕✅ Added feature to set score limit ❕✅ Enable new checkpoint scoring support ❕✅ Added new \u0026lsquo;GaveUp()\u0026rsquo; lua feature to let themes know when a file is given up by holding start ❕✅ Stop quirk with song preview breaking ❕✅ Added lua exposure to m_iMenuStackSelection ❕✅ Add new Lua Math functions ❕✅ Add new Lua Random Functions, though these need optimising ❕✅ New UpdateMeshPosition() for def.model ❕✅ Fix noteskin recursive depth to level 9 so older noteskins work ❕✅ Add new faster math functions, namespace tbc ❕✅ Add new faster sine/cosine math ❕✅ Re-enable pixel fonts (restore setexturefiltering() features without blur) (Closes #450) ❕✅ Fixed erroneous half-width math ❕✅ Change \u0026lsquo;song length seconds\u0026rsquo; to SM5.x behaviour for theme compatibility and to fix older modfiles ❕✅ Fixed crash to desktop on loading songs (Closes #448) ❕✅ Fixed crash to desktop on loading cached songs ❕✅ Fixed Encoding crash on loading window on ZIV (pre 2019) song packs ❕✅ Fixed Korean characters causing a CTD on loading window ❕✅ Fixed encoding cache issues on song loading ❕✅ Fixed cache crashing on FS corruption/bad sim files/audio (Closes #449) ❕✅ Fixed crashes on any bad encoded file (Closes #436) ❕✅ Fixed crash with badly unzipped file ❕✅ Fixed new filesystem loader crashing on race condition (Closes #452) ❕✅ Fixed crash/hang with keysounds loading erratically. ❕✅ Fixed crash on thread trying to load things that weren\u0026rsquo;t there ❕✅ Fixed crash with overflow on file size if the file was 0 bytes ❕✅ Fixed hash data reloading lag spikes ❕✅ Fixed music wheel \u0026rsquo;lag\u0026rsquo; due to note data being loaded on song select ❕✅ Fixed massive lag spikes on all music wheels due to legacy SM5.x method conflicting with new code pathways ❕✅ Restored 3.x era legacy \u0026lsquo;StepsTypes\u0026rsquo; iidx/bm/para if you spot any that do not work ping Squirrel ❕✅ Fixed crash with \u0026lsquo;unknown\u0026rsquo; StepsTypes breaking on 3.x SM files ❕✅ Fixed crash on some noteskins asking for game/currentgame/currentstyle information before the game is available ❕✅ Fixed another crash with noteskins on legacy/vintage hardware (Closes #476) ❕✅ Fixed bug with autogen on modes ❕✅ Fixed player 2 crash on some modes ❕✅ Added new rate/pitch theme-metric for legacy theme support ❕✅ Fixed Initial screen animations on themes lower than 480p ❕✅ Editor: Fixed crash on pressing Insert key on an incomplete marker selection ❕✅ Editor: Restored note speeds to their actual values ❕✅ Editor: Fixed iterator race condition on ActorFrame updates (This fixes a situation where deleting the last child of an Actorframe by an external source would crash the game) ❕✅ Editor: Restored \u0026ldquo;Paste at current beat/marker\u0026rdquo; on Chart options ❕✅ Editor: Added key combination to jump to end of audio file (Shift + End) ❕✅ Editor: Help screen now auto-resizable across different themes ❕✅ Editor: Fixed crash on loading some song types (Closes #125) ❕✅ Added new encode/decode json commands from SM#2154 for Simply Love ❕✅ Fixed bug with 0 frame index on models (Closes #472) ❕✅ Fixed bug with bone index being incorrectly initialised (Closes #472) ❕✅ Fixed bug with dynamic random BGChanges ❕✅ Fixed bug with corrupted font glyphs on some themes/screens on a resolution change ❕✅ Fixed bug with random crashing/no shaders available on Nvidia 500+ series drivers ❕✅ Fixed bug with simplehold top caps ❕✅ Fixed beat bar draw stops ❕✅ Fixed bug with a recursive GetHash() (Thanks notnola) ❕✅ Fixed accuracy precision output of ATTACKS to 6dp (Closes #285) ❕✅ Fixed empty BG/FGChanges being spawned ❕✅ Fixed bug with some mods needing a tweak to the cosine math ❕✅ Fixed issue with ScreenGameplay not being reset in course mode (Closes #91) ❕✅ Fixed bug with missing wireframe on notes ❕✅ Added new wireframe command into Actor instead of it being in model ❕✅ Fixed bug with simfile ATTACKS not working in course mode (Closes #89) ❕✅ Fixed bug that stopped mod file changes being reset for the next song *Windows 7+:\n❕✅ Fixed compile for windows \u0026lt; 8 ❕✅ Fixed crash on Windows 7 with visual studio setting the wrong build version ❕✅ Fixed crash on Windows 7 due to wrong library support ❕✅ Fixed crash with wry Windows 8+ call being selected for Windows 7 binaries ❕✅ Fixed random crash on MK9/Konami PCs with Windows 7 due to dispatcher Linux:\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed quirk in some file systems crashing ❕✅ New multi-build script for our linux dev environment ❕✅ Fixed crash with badly encoded mp3s (mostly pre 2010) (Closes #478) ❕✅ New DJHero controller fixes for linux, dual mode and dual turntable mode added for input ❕✅ Fixed GL dispatcher for arm/i386 systems MacOS (Universal):\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed crash on some song charts from ZIV ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed new LTek pad (1000hz / Pro) not detected (Closes #465) ❕✅ Fixed quirk in some file systems crashing ❕✅ Fixed libssl for the Raspberry Pi 3b/3b+/4/400 ❕✅ Fixed bug with aarch64 and some GL drivers ❕✅ Fixed bug with cmake causing crashes on TwisterOS (Closes #216) Community content Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to game-play. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Jerrymxy (Simplified Chinese) ","description":"Release Date: 9th February 2022 \u0026ldquo;Back to the Normality\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.13.0-rc0 to 4.13.0-rc9) (Incorporates Internal Builds 4.12.1-rc0 to 4.12.1-rc7) Announcing stepstage mode! This month we are proud to announce initial support for the stepstage mode. This mode is a simulation of the game Stepping Stage released in the arcade by the company Jaleco in 2000.\nThis game featured quite a unique layout, having 3 panels of input per column."},{"id":8,"href":"/releases/A4.12.0/","title":"OutFox Alpha 4.12.0 Build","parent":"Release History","content":" Release Date: 31st December 2021 \u0026ldquo;Onegai Muscle!\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary, OutFox!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder. You will need to move your profiles over to this new version. The old version will also need to be uninstalled manually, sorry about all of this, it is just for this update.\nThere is no conspiracy behind the name change, we have to do this for application signing on the Mac and for the \u0026lsquo;MS Smart Screen\u0026rsquo; requirements for the certificates we need on Windows. This allows us to continue to be a free rhythm game that is now signed to ensure your confidence in the project, as well as ensuring the installers and packages are not tampered with. The Windows builds will be signed starting from next year, as it has taken time for the verification to complete. Our MacOS builds have been signed for a few alpha versions now, and with the \u0026lsquo;universal\u0026rsquo; binaries we are making the Mac experience better for our Apple Players.\nWith this release we are announcing that Project OutFox is becoming it\u0026rsquo;s own official fork. This gives an end to the confusion about our direction and this also allows those who wish to keep 5.1 installed having no risk of OutFox over-writing or damaging profiles or stored scores.\nI\u0026rsquo;d like to thank the StepMania community for making this decision a lot easier. The project is not the same as we started out in early 2019, and we are sorry we were unable to have a clearer \u0026lsquo;direction\u0026rsquo; than just \u0026lsquo;modernising the codebase\u0026rsquo; when we started. It is not our place to shoehorn this project into the StepMania repo, and a lot of you were very open about your feelings about that and as a result, Project OutFox will be on it\u0026rsquo;s own moving forward, and we will discuss with the StepMania community about what support we can bring in the future.\nThis month, we start off on our journey as a new standalone project, and thus a very exciting time ahead for our team. We have a new touch based theming system coming, new online, new leader-boards, (more new modes of course!) new platforms and modernisations to come over the next year. With the 2nd anniversary of the Public Alpha Programme, the team thanks you for the support and the good vibes you have brought us as we work on this project, and we hope you\u0026rsquo;ll stay with us for the rest of the journey!\nSigned Mac builds update! We have continued to work on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected.\nNew Unicode/SHIFT-JIS support! This build also has very long overdue extended character support in the file handlers. BeMusic Script, and DTXMania files use different encodings to .SSC and .SM simfiles, and in the past, they often showed up as garbage characters, or mojibake characters which could not be easily read into the game. A simple fix for this was to convert the simfile into UTF8, but with many hundreds of files, this is not reasonable to ask of players!\n(DTXMania Files natively loading) This build correctly can detect the encoding with no user interaction, and will load them as expected into the correct game mode.\nThe new supported encoding types are:\nANSI/Windows Extended (SMA/BMS/DWI/KSF) SHIFT-JIS (BMS/BME/PMS/DTX/GDA/TJA) UTF-8 (DTX/BME/SSC/SM/OTO) UTF-8 BOM (GDA/DTX/TJA) UTF-8 Extended (TJA/BME/DTX) UTF-16 (DTX) UTF-16LE (DTX) UTF-16LE BOM (DTX) UCS-2 (DTX) This will mean songs using the new code paths for the encoding support will take a little bit longer to parse the first time, but having the support over not having it is worth it.\nThere will be opportunities to optimise the loading path, so it will get faster again!\n(BME files encoded in SHIFT-JIS natively loading) New and Updated Input Options! ALL OS: portmidi comes out of beta! prototype fsr midi controller This driver was written to accommodate the new DTXMania like mode, as the drum kits a lot of players use are MIDI based. This was the first time that our engine contained a fully functioning cross platform MIDI driver, the previous semi-broken win32-midi being Windows only. This new driver offers a 1ms clock timer and near realtime input on Linux and Mac OSX, but only supports one device connected to the system.\nWe are in the process of designing a MIDI based FSR controller for modes which need it as the MIDI system is currently the lowest latency for Windows based systems, and we hope to open source this in time, when the code is better (and Squirrel has the time!)\nThe reason we kept it in beta for so long was there was an identified need to have a MIDI driver capable of supporting more than one MIDI input device, as had been requested by be-mu and gddm players, like DTXMania has, being able to add a second device to enable menu control, or to enable non-standard setups, for example pedals or ride cymbals from a second kit.\nTo assist with this need, we added another MIDI driver to the game:\nrtmidi\nThis driver allows for more than one device support compared to our portmidi driver, which is limited to a single device, like an e-drum kit, or a DJ controller. rtmidi allows for more than one device to be connected for 2 player use, or for extra control for menu options for example.\nThe new rtmidi or portmidi driver can be added to your preference.ini if you wish to use it:\nPlease Note: You will need to add one of these so your controller will work!\nWindows\n(portmidi - you only have one device): InputDrivers=portmidi,legacy,minisdl (rtmidi - you have more than one device): InputDrivers=rtmidi,legacy,minisdl Mac OS (M1 and Intel)\n(portmidi - you only have one device): InputDrivers=portmidi,SDL (rtmidi - you have more than one device): InputDrivers=rtmidi,SDL Linux (x86_64/ARM/Raspberry Pi)\n(portmidi - you only have one device): InputDrivers=portmidi,SDL (rtmidi - you have more than one device): InputDrivers=rtmidi,SDL WINDOWS: legacy set to be the default and is out of beta! If you have been reading the previous changelogs, we have been testing a slightly modified version of the old SM4/5 input driver for those that prefer the \u0026lsquo;feel\u0026rsquo; of that era in input timing, and until the new GA driver is finished, (we are waiting for the Q1 2022 Win10/Win11 update) we will set this driver as default from this alpha.\nIf you are on an established preference.ini, to use it you can follow the style above:\nlegacy (Windows Only) InputDrivers=legacy,minisdl You can also leave this blank, or add MIDI if you plan to play DTX or use a MIDI based input device in the future. You will need the minisdl input driver for your window and operating system controllers, it allows for a smaller footprint on the game, and for your windows based playback this is important at the moment. It shows up in the \u0026rsquo;test input\u0026rsquo; screen as \u0026lsquo;Window Handler (aux)\u0026rsquo; so you have window controls, and full-screen etc support while keeping the base drivers compact. This driver will be default on all operating systems in due course, when the GA driver is complete.\nif you however need to have an Xinput supported device, or you have an advanced setup, you can reset the driver to how it was before this alpha with a simple change in your preference.ini:\nSDL Driver (Windows Only) InputDrivers=SDL This will enable the support for the Xinput system, and the legacy system in the default theme experimental options, (the UseOldJoystickMapping one) which will allow you to switch between the options.\nIf you use a ParaParaParadise controller you will need to add the Para Driver (windows only right now!) before your options in preferences.\nLegacy Driver (Windows Only) InputDrivers=Para,legacy,minisdl SDL Driver (Windows Only) InputDrivers=Para,SDL If you use a Reflex controller, you have several options, however it is best on Windows if you use the new legacy driver for now. To enable the Reflex controller , you need to add the following to your entry: (please note: You need legacy for keyboard input and to avoid HIDAPI problems!)\n(Only one player is supported at this time, however if there is demand we can add more player support! Bug Squirrel for more information!)\nReflex Driver (Windows Only) InputDrivers=Reflex,legacy,minisdl If you have a Python2/3 controller, like the above set up for the Reflex you can simply add your entry here, (remember to set up your COM ports etc as seen in the Windows Device Manager) and remember that this device is not seen in Windows 8 or higher due to the change in the way USB controllers became emulated.\nWindows Only InputDrivers=Python23IO,legacy,minisdl If you have a Rtio controller, you need to add this as the other controllers, remember that legacy gives you keyboard and mouse support.\nWindows Only InputDrivers=Rtio,legacy,minisdl Announcing smx mode! This month we are proud to announce initial support for the smx mode. This mode is a simulation of the game StepManiaX (https://stepmaniax.com/) by Step Revolution, and are long time friends of our project. You can join their discord here and give them some support!\nWe respectfully ask you to not try to rip or use official assets or songs as we want to keep the arcade scene alive and support the guys over at SMX! OutFox will not support the arcade timings or the smx sim file format, so please do not ask us for this! This mode was planned to be an Alpha V release, but with the pandemic, and the fact many of our players with SMX pads requested it. The pads are released when ready but you can Buy the pads here! and see when they are available again.\nThis mode will have some of the first non-arcade charted SMX files coming in the winter update of the OutFox Serenity Pack Volume 1.5 coming soon!\nSerenity smx charts The game mode is best played with the itg based timing, and the layout is familiar:\nIn game footage This mode has several cool new features with the beat bars, and with popular request we have added the colour differences to show the BPM/Stop changes on the notefield:\nPlease be aware that autoGen does work with this mode, and that we\u0026rsquo;ve been working on improving the memory use with the autogeneration until we have talented charters creating new content for it. Any other 5K sim-files that OutFox supports will work.\nWe say farewell to kb7 mode! The mode introduced with Team SSC has been retired in this alpha. There were many players who wanted it to be more than it was, and the use of the mode was generally for a small set of players, and the original creators of the mode also wished for it to be retired as well when we got the chance.\nWe salute the mode and what it did for StepMania at the time when it was released, but fear not kb fans and players, we are proud to announce:\nIntroducing kbx Mode! This is a revamp and rewrite of the KB7 mode, aimed at players that wanted a specific down-scrolling game mode, but with different sets of columns. We of course have varying modes with different sets and styles already, but there was no actual option to have things set in one specific place and one specific mode for it.\nThis mode supports 1 to 15 columns, and is a single player option. It will eventually get it\u0026rsquo;s own theme and other mechanics, but for now, it will fall back to our usual theme, but this does not make it any less playable!\nWe have decided to follow along the play style of ez2, or o2jam style of games, but giving our own little twist on things as is common with OutFox modes. In the future, there will be options to set this mode up to how you prefer, with styles and timing/scoring available to change up and adjust as always.\nThere is one specific thing about this mode however, The mod system is disabled. You may be wondering why we took the time to write a \u0026lsquo;slimmer\u0026rsquo; player options for this mode, well, in honesty there are a lot of things happening in the background we don\u0026rsquo;t use in some modes, and we wanted to try out turning some of these things off to see how it works with the game and performance styles.\nThe default noteskin for this game is based off of a synthwave style from the 80s, and we will continue to create the theme with this aesthetic.\nPLEASE NOTE: You do NOT need to turn on autoGen for this mode! The game will automatically create charts in the format and column size of supported sim files already on your system! The mode comes with a variety of noteskins and features out of the box, alongside a new interface and feature!\nThis skin reads the input assigned to each column and prints it within the space for you to remember where things are. This is helpful for you to learn the mode, and to discover play methods that you are comfortable with.\nThe default mapping for this mode is as follows: Please bear in mind, the button layout still needs work!\nkb1 = space kb2 = f j kb3 = f space j kb4 = d f j k kb5 = d f space j k kb6 = s d f j k l kb7 = s d f space j k l kb8 = a s d f j k l ; kb9 = a s d space f j k l ; kb10 = a w s d f j k l p ; kb11 = a w s d f space j k l p ; kb12 = a w s d r f j i k l p ; kb13 = a w s d r f space j i k l p ; kb14 = a w s e d r f j i k o l p ; kb15 = a w s e d r f space j i k o l p ; This set is just the auto-mapping, and as is always with OutFox everything is completely remappable, you can also assign controllers, MIDI input, drums, DJ controllers, pads etc to this and play in any way you like!\nThis is the o2jous noteskin which has the same feature that shows the keyboard mapping, but is less vibrant on the eyes.\nThe other news about this mode, is we have begun work on the OTO parser to enable osu \u0026amp; osz file support. We support the mania mode (3) at this time - (we were unable to finish the taitai (1) support in time, it will come soon!) The game reads them and can play them with synched video and bg changes, but we do not support osr or osb at this time.\nYou must place the files in the group folder as you would as normal with sim files from other modes. They will be created as a kbx chart type, they will NOT change over to dance or any other mode at this time! (unless you autoGen for them)\nThis mode supports multiple difficulty per folder, and will not make some versions \u0026lsquo;disappear\u0026rsquo; as the old versions did, and if there are multiple different songs in the same folder, the OTO parser can read and differentiate between the chart and it\u0026rsquo;s song/background, meaning you do not need to swap out anything or move stuff to individual folders. We will look into making this option available to other modes in the future. This new parser is based off of the .chart parser using line by line, splitting up each section into it\u0026rsquo;s own loading function.\nAs we were testing this mode, many of our awesome testing players suggested that we should have a \u0026lsquo;Lift-Hold\u0026rsquo; to \u0026lsquo;Normal Hold\u0026rsquo; modifier, to make the game more accessible and fun as sometimes the lift-hold requirement raised the difficulty of the chart too much, or players felt overly punished by the placement of the lift holds.\nThis alpha has a new modifier for this, it is available on the song options -\u0026gt; modifiers as seen in the screenshot below. Remember to access this you need to double tap when you have selected a song on the music wheel!\nThese options give a different play style to the pink game, and makes it a lot more accessible to folks playing.\nWe hope you have fun with it, and do let us know what you think!\nKNOWN ISSUES: Alpha 4.12.0 ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE Charts with similar difficulties in a folder will have scores assigned to them weirdly, due to the old SM paradigm. This will be fixed in a future update. ALL: Mode Specific\n❕✅ smx: New! Created a new smx mode! ❕✅ smx: New! Added display for stops and bpm changes on the note-field ❕✅ smx: New! Added new default noteskin ❕✅ smx: New! Added single, double6, double10 styles ❕✅ smx: New! Added 2 player support ❕✅ smx: New! Adapted lift-holds to work with this mode ❕✅ smx: New! Adapted minefields to work with this mode ❕✅ smx: New! Adapted roll-types to work with this mode ❕✅ smx: New! Added custom beat bar render distance ❕✅ smx: New! Added special column spacing ❕✅ kb7: New! removed kb7 mode from the game ❕✅ kbx: New! Created a new kbx mode! ❕✅ kbx: New! Created a new mod-less path for kbx for better performance ❕✅ kbx: New! Added 1 to 15 Column style support ❕✅ kbx: New! Added proper BGA/Video sync ❕✅ kbx: New! Added Background 1 and 2 support ❕✅ kbx: New! Added mash prevention ❕✅ kbx: New! Added per-chart music support for folders with different songs inside ❕✅ kbx: New! Added style support and noteskins ❕✅ kbx: New! Added new bpm and segment styles ❕✅ kbx: New! Adjusted offset drift with some BPM methods ❕✅ kbx: New! Repurposed old KB7 noteskins, thanks shakesoda and AJ! ❕✅ kbx: New! SmartGen - You do not need to turn on autogen for this mode! ❕✅ kbx: New! OTO Parser for kbx for osz and osu files ❕✅ kbx: New! Added Modifier option to remove lift-holds in kbx ❕✅ dtx: New! Only load Unicode based simfiles on the new code paths ❕✅ dance: New! def.NoteField() command for mod creators Engine\n❕✅ Fixed SDL handle dereference (closes #465) ❕✅ Updated base SDL libraries ❕✅ Fixed SDL with OutFox patches ❕✅ Fixed Reflex Driver OS calls ❕✅ Fixed non-repeating input on Editor ❕✅ Fixed negative position scrolling on preview ❕✅ New! Add support for lift holds and mine fields to editor ❕✅ Fixed lirocode causing hang on some screens in SoundWaves ❕✅ Fixed bug with Out of Bounds Access Violation on some Actor calls ❕✅ Fixed bug where courses could crash with an Access Violation when a course actually existed ❕✅ Fixed header includes to respect Actor calls ❕✅ Fixed bug with some float logic always returning true ❕✅ New! ICU and Boost library to support Unicode properly ❕✅ New! Meter floating point numbers display in the wheel etc ❕✅ New! Groove Radar support for all note loaders ❕✅ New! SimpleHold() functions to reduce load on playback ❕✅ Fixed bug with math overflow in Lua, by setting lua numbers to float ❕✅ Fixed bug in ArrowEffects with PlayerData being dereferenced ❕✅ Reverted code optimisations to keep Simply Love and it\u0026rsquo;s derivatives working as expected ❕✅ Fixed bug with strings causing some themes to display rate at 0.05x ❕✅ Fixed bug with some PlayerOptions functions returning a clamped value ❕✅ Fixed issue with Notefield states ❕✅ Fixed crash with loading empty files ❕✅ New! Text entry movement and behaviour in editor ❕✅ New! Fixed bug with note flashes would eat notes in editor ❕✅ New! Fixed turn and long note functions in editor ❕✅ New! PlayerOptionsSimple() a mod-less option for modes which are not gimmick based ❕✅ New! Optimise and streamlined the note loading system for the modes which need them ❕✅ Fixed bug with song offset causing crashes ❕✅ Fixed hang with new parser and longer than 12second introductions before first note ❕✅ Fixed slow parsing speed with new code, it needs more work ❕✅ Fixed bug with cmake properties ❕✅ Fixed bug with banner disappearing on some charts in smzip/osz files ❕✅ New! Added Tags support for future search options ❕✅ New! Added game type next to stage count on screen select music ❕✅ Fixed bug with floating point numbers displaying oddly on themes Windows 7+:\n❕✅ Fixed Reflex Driver breaking on latest Windows 10 update ❕✅ Fixed Sound device truncation in Win 8+ Linux:\n❕✅ Fixed L-Tek Dance pad missing on *Ubuntu and Debian ❕✅ Fixed Cobalt Flux Dance pad missing on *Ubuntu and Debian MacOS (Universal):\n❕✅ Fixed L-Tek Dance pad missing on MacOS Sierra/High Sierra ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed L-Tek Dance pad missing on Twister OS/Armbian ❕✅ Fixed bug with newer boards crashing with hashing ❕✅ Fixed compiling with newer tomCrypt ❕✅ Fixed bug with the new Unicode support crashing TwisterOS and Armbian OSs Community content Noteskins ✅ New default noteskin for kbx ✅ New default noteskin for smx ✅ New o2jous noteskin for kbx ✅ New orbital noteskin for kbx ✅ New orbular noteskin for kbx ✅ New retrobar noteskin for kbx ✅ New retrobar-iidx noteskin for kbx ✅ New retrobar-o2jam noteskin for kbx ✅ New retrobar-razor noteskin for kbx ✅ New retrobar-razor_o2 noteskin for kbx ✅ New coloured mine sprites for cat/bun noteskin for po-mu Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to gameplay. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ","description":"Release Date: 31st December 2021 \u0026ldquo;Onegai Muscle!\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary, OutFox!\u0026rdquo; Please read the change log! (Incorporates Internal Builds 4.12.0-rc0 to 4.12.0-rc7) (Incorporates Internal Builds 4.11.1-rc0 to 4.11.1-rc17) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r31) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder."},{"id":9,"href":"/releases/A4.11.0/","title":"OutFox Alpha 4.11.0 Build","parent":"Release History","content":" Release Date: 12th December 2021 \u0026ldquo;Do you know why we stopped the car?\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary Release, OutFox!\u0026rdquo; (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder. You will need to move your profiles over to this new version. The old version will also need to be uninstalled manually, sorry about all of this, it is just for this update.\nThere is no conspiracy behind the name change, we have to do this for application signing on the Mac and for the \u0026lsquo;MS Smart Screen\u0026rsquo; requirements for the certificates we need on Windows. This allows us to continue to be a free rhythm game that is now signed to ensure your confidence in the project, as well as ensuring the installers and packages are not tampered with. The Windows builds will be signed starting from next year, as it has taken time for the verification to complete. Our MacOS builds have been signed for a few alpha versions now, and with the \u0026lsquo;universal\u0026rsquo; binaries we are making the Mac experience better for our Apple Players.\nWith this release we are announcing that Project OutFox is becoming it\u0026rsquo;s own official fork. This gives an end to the confusion about our direction and this also allows those who wish to keep 5.1 installed having no risk of OutFox over-writing or damaging profiles or stored scores.\nI\u0026rsquo;d like to thank the StepMania community for making this decision a lot easier. The project is not the same as we started out in early 2019, and we are sorry we were unable to have a clearer \u0026lsquo;direction\u0026rsquo; than just \u0026lsquo;modernising the codebase\u0026rsquo; when we started. It is not our place to shoehorn this project into the StepMania repo, and a lot of you were very open about your feelings about that and as a result, Project OutFox will be on it\u0026rsquo;s own moving forward, and we will discuss with the StepMania community about what support we can bring in the future.\nWith this release, we start off on our journey as a new standalone project, and thus a very exciting time ahead for our team. We have a new touch based theming system coming, new online, new leaderboards, (more new modes of course!) new platforms and modernisations to come over the next year. With the 2nd anniversary of the Public Alpha Programme, the team thanks you for the support and the good vibes you have brought us as we work on this project, and we hope you\u0026rsquo;ll stay with us for the rest of the journey!\nSigned Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected. KNOWN ISSUES: Alpha 4.11.0 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ALL: Mode Specific\n❕✅ be-mu: New! renamed beat to be-mu (BE-MUsic) ❕✅ po-mu: New! renamed popn to po-mu (POpn-MUsic) ❕✅ be-mu: New! Base36/Full BME / BML Parser Support ❕✅ be-mu: New! BMS #SCROLL and #SPEED channel support stub. Full support will be in the next alpha ❕✅ po-mu: Fixed 3 Key parser layout ❕✅ po-mu: Fixed doubles missing graphics ❕✅ pump: New! PIU parser pathway, designed for F2/P1 charts ❕✅ pump: New! Added bga one line support ❕✅ pump: New! Added long \u0026rsquo;edit\u0026rsquo; chart support ❕✅ pump: New! GetSongFolder() support ❕✅ pump: New! pump Custom Notesloader pathway, for themers to use ❕✅ be-mu: New! Column lines for supported themes ❕✅ be-mu: New! Fixed spinning turntable support for noteskins ❕✅ pump: Fixed warp calculations due to ancient code paths being used instead of the new ones ❕✅ pump: New! Added SongCategory()/#SONGCATEGORY support to parser ❕✅ pump: New! Added SongType()/#SONGTYPE support to parser ❕✅ gh: Tweaked strum methods ❕✅ gh: Fixed overly punishing players ❕✅ kbx: New! OTO parser in progress ❕✅ gh: Fixed fever issues ❕✅ gdgf: Began hold support - still a work in progress ❕✅ be-mu / po-mu: Fixed mines auto hitting ❕✅ gdgf: New! wailing support engine ❕✅ be-mu / po-mu: Began #TOTAL scoring system support ❕✅ be-mu / po-mu: Fixed parser overflows (closes #448) ❕✅ gh: Fixed strum sound crash ❕✅ be-mu / po-mu / gddm / gdgf: Fixed \u0026lsquo;fill\u0026rsquo; and \u0026lsquo;auto\u0026rsquo; auto keysounds not playing ❕✅ gh: Fixed HighNoteCheck check ❕✅ gh: Fixed #RESOLUTION, #OFFSET on .chart files not working correctly ❕✅ gh: Fixed tap notes being missed when correctly hit on a controller ❕✅ gh: Fixed fever combo effects ❕✅ gh: Fixed gh mode measure line drawing ❕✅ gdgf / gddm: New! Channel 54 Support for Video playback, thanks APPROVED! ❕✅ gdgf / gddm: New! Channel 54 sync support, thanks APPROVED! ❕✅ gdgf / gddm: New! GDACreator support added to the DTX parser, thanks APPROVED! ❕✅ gdgf / gddm: New! Fixed bug with .DTX based charts converted from .GDA having no BPM ❕✅ gdgf / gddm: New! Fixed bug with .DTX based charts converted from .GDA having an extra space in the channel commands ❕✅ gdgf / gddm: New! Removed legacy .GDA code from the .DTX parser to fix Drum hidden notes missing ❕✅ gdgf / gddm: New! Added Drum Empty Note channels ❕✅ gdgf / gddm: New! Fixed some charts that abused channel 01 from overly playing too much of the same keysound ❕✅ gdgf / gddm: New! Fixed video playback not being on the correct background layer ❕✅ gdgf / gddm: New! Added mp3 preview support to .GDA / .DTX files ❕✅ gdgf / gddm: New! Added missing Sound Effect Channels ❕✅ gdgf / gddm: New! Added missing BGA/Start/Metronome Sound Channels ❕✅ be-mu / po-mu / gdgf / gddm: Fixed #RANDOM parsing ❕✅ dance: Fixed calculation in haste ❕✅ dance: Fixed chart length discovery and tweaked this for modfiles ❕✅ dance: Stopped pump chart parsing breaking Simply Love users ❕✅ dance: New! Editor preview! ❕✅ dance: Fixed extreme BPM warp calls making files last 2+ years in time ❕✅ dance: Fixed ghost \u0026lsquo;hold tails\u0026rsquo; left over from older charts ❕✅ dance: Fixed warp detection Engine\n❕✅ Fixed stoi overflows (closes #432) ❕✅ Fixed stof underflows (closes #432) ❕✅ New! BW / WIDE stoi/stof functions to unclamp when required (closes #434) ❕✅ Fixed XML input overflows ❕✅ Fixed logic errors in FileDB ❕✅ Fixed Hold endings being left over from deleted entries on the editor (closes #331) ❕✅ Fixed bug in Chart Length descriptors ❕✅ New! Use Chart Length properly in Steps ❕✅ New! GetChartLength() lua command ❕✅ New! Fix Player overflow in music length ❕✅ New! Added support for #LASTSECONDHINT in ssc files ❕✅ New! Fixed bugs with first and last second of charts ❕✅ New! Added new generation of step length ❕✅ New! Added new GetFGChanges() lua command ❕✅ Fixed haste() math in resampler ❕✅ Fixed how haste is calculated in notedata ❕✅ Fixed bug with GL initialisation ❕✅ New! Added new HasSignificantBPMChanges() lua command ❕✅ New! Added new IsDisplayBpmSpecified() lua command ❕✅ New! Added new song:PlayPreviewMusic() lua command for Lua based wheels ❕✅ Fixed bug with some stops being \u0026lsquo;ignored\u0026rsquo; by the game engine ❕✅ Fixed bug with edit files being truncated ❕✅ Removed the edit file limits to the parsers ❕✅ Fixed crash with parsing some F2 charts ❕✅ Adjusted how longest charts are displayed ❕✅ Fixed math overflow with astronomical BPM values ❕✅ Fixed bug with sPath sometimes not finding files ❕✅ Fixed math values on warp creation ❕✅ Fixed warp points having duplicated notes ❕✅ Added sanity check for verifying scroll application ❕✅ Fixed timer overflow in player ❕✅ New! Project and Name now set to Project OutFox ❕✅ Fixed SDL Video Initialisation sometimes causing a white screen ❕✅ Added SDL 2.0.17 ❕✅ Fixed underflow with some Chart calculations ❕✅ New! LuathreadVariables to reduce conversions ❕✅ New! iCol support for noteskins ❕✅ Fixed animation length on receptor explosions ❕✅ Fixed deprecated NSIS ini files ❕✅ Fixed auto keysounds duplicated playback ❕✅ Added playcommand for special keys in receptors ❕✅ Added filetype check on foreground loading ❕✅ New! JoyCon controller full support via HIDAPI ❕✅ New! Stadia controller full support via HIDAPI ❕✅ New! Luna controller full support via HIDAPI ❕✅ New! Steam controller full support via HIDAPI ❕✅ New! PS4/PS5 controller full support via HIDAPI ❕✅ New! rtMIDI cross platform device driver support ❕✅ Added rtmidi multi-device support, this allows for more than 1 MIDI device at a time! ❕✅ New! Added SetAutoplayForColumn() for autoplay options for modes that need them ❕✅ Fixed 3DP saving on SSC files ❕✅ Fixed crash on some edit files with 6+ charts within ❕✅ Fixed crash on userlog string buffer ❕✅ Corrected Input behaviour with some controllers ❕✅ Fixed iterator in ClearRange for Long Notes ❕✅ Fixed log trace calls in the notes loader running out of memory ❕✅ Added new preference: UseSongNameOnGameWindow to show the song name on the window title bar ❕✅ Fixed Autoplay not being respected on the editor ❕✅ Fixed editor Autoplay not using the correct GamePreferences ❕✅ Fixed elements not hiding when autoplaying in editor ❕✅ Added new preference: JoyStickDeadzone to allow the user to tweak a deadzone of an older pad ❕✅ Added scrolling while previewing chart on editor ❕✅ Added repeat input while previewing chart on editor ❕✅ Added snap change during preview on editor ❕✅ Added function to calculate beat to scroll ❕✅ Added option to allow a toggle for clap on editor preview ❕✅ Changed method for MMod/AMod to approach faster ❕✅ Fixed bug with wrapper states not being cleared on playback ❕✅ Fixed missing notes and mines in charts ❕✅ Fixed loading window init system ❕✅ Fixed parsing of pump charts causing a math overflow ❕✅ Fixed note-data crash with some older chart types ❕✅ Fixed Alt button not being spotted by the editor or some third party themes ❕✅ Added option to allow notefield changes on editor preview ❕✅ Fixed CMod editor scrolling on step specific timing areas ❕✅ Fixed odd condition states in AllowNotefieldChanges ❕✅ Added psv/nsw build chains ❕✅ Added new LoadFromFont() Lua command (closes #451) ❕✅ Updated .flac / .mp3 / .wav Audio libs ❕✅ Fixed old sm build chains ❕✅ Fixed BitmapText\u0026rsquo;s missing returns ❕✅ Fixed lua_number being defined as double when it should be float ❕✅ Fixed lua_number overflows in LuaManager ❕✅ Added new memory optimised lua bindings ❕✅ Fixed actor overflows in LuaManager ❕✅ Fixed the engine converting everything Lua to double ❕✅ Respected the correct Lua Types ❕✅ Fixed PlayerOptions being overly clamped ❕✅ Fixed lua stack issues - stack uses 65% less resources ❕✅ Removed 428 pointless static casts ❕✅ Fixed use of protected keywords in commands ❕✅ Modernised code of AFT/AMV/AMT ❕✅ Fixed bug in WheelBase which caused a crash ❕✅ Added new safer comparison function for floating points ❕✅ Fixed access specifier warnings in the compiler ❕✅ Fixed edge case bad_access due to the archaic ARRAYLEN() ❕✅ Fixed coloring state for DrawBeatBars() ❕✅ Fixed bug with MeterDisplay crashing SimplyLove/Melody users due to lack of sanitisation in the code ❕✅ Fixed bug with GameplayElements sometimes freezing the game ❕✅ Fixed math underflow bug from 2009 in tweens Windows 7+:\n❕✅ Fixed the NSIS target warnings for deprecated operating systems ❕✅ Fixed deprecated NSIS ini files ❕✅ Fixed XInput correlation when the extended windows 10/11 driver is used ❕✅ Fixed context grabbing by the Intel GPU when 2 or more GPUs are installed ❕✅ Removed deprecated 2002 era OS calls causing crashes on Windows 11 ❕✅ Added new default settings to set the dedicated GPU if one is installed (This can be overridden in windows settings if you prefer) ❕✅ Added some new code paths to better support unicode in the future ❕✅ Fixed a crash on windows 11 with the new ISST Intel Integrated Sound Chips ❕✅ Fixed bug with Windows 11 and users with HDMI Audio, will be fixed in Feb 2022 by Microsoft ❕✅ Fixed GL Pipeline for windows 10 21H1 and higher Linux:\n❕✅ Fixed crash in MESA 21+ with 5.3 -\u0026gt; kernels (closes #436) ❕✅ Fixed edge crash with older cards on newer kernels (closes #436) ❕✅ Corrected method to ensure X11 does not think we have hung ❕✅ Fixed bug on Nvidia legacy drivers (340 and below) that would force a crash after song loading ❕✅ Forced ATI era cards to respect what the system provided and to not override it in driver ❕✅ Fixed rtmidi spawning 3 virtual devices on Ubuntu Studio and other Audio featured distros MacOS (Universal):\n❕✅ Fixed compiler warnings on XCode 12 ❕✅ Fixed crash on M1 macs (Monterey) while paused ❕✅ Fixed FPS running to the application above the game (closes #337) ❕✅ Fixed crash on Intel macs (Big Sur) in windowed mode and selecting app store ❕✅ Fixed rtmidi spawning 2-5 virtual devices on Big Sur and Monterey ❕✅ Fixed rtmidi port opening on M1 Mac Pros (It supports Iphone Virtual MIDI) ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed StringToFloat causing a segfault on the Pi3 and Armv7 CPUs ❕✅ Fixed crash on rockpi 4 panfrost GPUs on newer MESA versions ❕✅ Changed clocks to monotonic on arm ❕✅ Corrected method to ensure X11 does not think we have hung Community content Noteskins Theme ✅ Remove ScreenStageInformation from Soundwaves to further streamline transition to gameplay. Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ","description":"Release Date: 12th December 2021 \u0026ldquo;Do you know why we stopped the car?\u0026rdquo; \u0026ldquo;Happy 2nd Anniversary Release, OutFox!\u0026rdquo; (Incorporates Internal Builds 4.11.0-rc0 to 4.11.0-rc25) (Incorporates Internal Builds 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27) New Folder Locations and Short News Update. This release will be moving the base application, folders and it\u0026rsquo;s naming to \u0026lsquo;OutFox\u0026rsquo;. This means it will not be using the \u0026lsquo;stepmania5.3\u0026rsquo; folder anymore, and it will install into an outfox folder."},{"id":10,"href":"/releases/A4.10.0/","title":"OutFox Alpha 4.10.0 Build","parent":"Release History","content":" Release Date: 1st October 2021 \u0026ldquo;Believe it or not, the bus can\u0026rsquo;t swim\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work. OutFox is fully signed and notorised, so this means installation is convenient and easy moving forward; you do not need to worry about which build to grab, as both will function as expected.\nBMS updates! Difficulty Changes:\nWe have adjusted the way the game reads these files, and as a lot of the charts are seen as the same difficulty we would end up losing a lot of the information in them, and half of the charts would be missing and unplayable. We are in the process of improving this further for the new theming, so it will be better in time.\nThis month continues our work on BMS support, and we can happily announce we have proper Land Mine channel support in the game for the first time! In previous versions there was a blanket math overflow which meant that a lot of the channels were not being identified correctly, and thus flagging for extended channels were not being used.\nThis month also sees some fixes with the Long Note support offered by the game, we did not seem to parse these correctly due to the flag sometimes being applied in the wrong manner, which meant some of the holds were not being applied in charts.\nWe have also restored #RANDOM support again this alpha, as it was still using a legacy codepath we did not clear up in 4.9.10, apologies for that! This alpha allows for the #RANDOM n where n is 1 onwards.\nThis alpha also included several behavioural changes in the way the files are parsed, allowing for the correct Base to be used in reading channels and allowing us to enable the missing hidden sounds as well as the missing channels that were inaccessible before.\nLand Mine damage based on the channel value will be added next alpha, so we can add this final part to the game.\npo-mu updates! Like with BMS, the fixes with the difficulty are passed along to all of the BMS-like parsers, so we are now able to view all of the difficulties a file may contain.\nWe have been able to adjust the channels used for po-mu to support Land Mines for the first time as well, and this also includes BME based po-mu files are properly supported as well in this alpha, though without locale emulation, they will not load in native Windows 10 at this time. A fix for this is coming soon.\ngddm updates! This mode has had some internal reworking due to recommendations from some of the DTXMania community (thanks APPROVED!) to ensure that we do a few things a little bit more to how players expect. One of the important features was the ability to change the lane setting from 10 to 9 lane, or 9 to 10 lane, depending on the e-drum kit you have.\nWe were already able to read and support multiple lanes in older alpha builds depending on the \u0026lsquo;dominant\u0026rsquo; right hand lane, but now if the game does not spot it as the style you wish you can change this in the options menu.\nReal mode is 10 lane, and New mode is 9 lane. This gives you the flexibility to play the game how you wish moving forwards with the new theme and makes things less awkward if you do not have a 10 piece e-drum kit.\nThis alpha has also worked a bit more on the latency issues plaguing some users, we have tweaked the keysound flow a lot this build, so please give it a try and let us know if this has improved gameplay for this mode.\nThis build also has had work on the \u0026lsquo;Channel 02/BL\u0026rsquo; support to remove the old BMS era restriction. This means any measure change/time signature change is now respected, and thanks to APPROVED to making this chart which was a literal BPM Change / Time Signature Change Spam Chart we were able to effectively fix this for good. This change is also reflected in the gdgf mode as well as the GDA parser.\ngdgf updates! Before this alpha, all the game was able to use on this mode was Autogen based charts. Thanks to Squirrel and Jousway, the parser has been finally fixed and implemented to allow 3 fret and 5 fret guitar and bass charts to finally load natively in engine.\nThank you all for your patience while we worked on this, it was a slog to try to transpose the system to something our game recognises!\nGDGF is based on a row system, and our internal mechanism is column based, and has been for some time, so ensuring this methodology is carried over was important. We still have a lot to do before simulation is better here, so please bear with us. We do NOT support the holds yet that were introduced in DTXMania AL, these will be done at a later date.\nThis mode also has had the 6 fret custom mode that we promised back in the spring, as we know a lot of folks wanted 6 fret availability in OutFox. We have chosen cyan as the sixth fret to follow the colour scheme of Yellow Pink Cyan from the original.\nThis mode also supports full up, down, and forward WAIL controls, as requested by members of the community. To map this you will need to ensure your controller has the options to allow for wailing, as many newer guitar controllers have special \u0026lsquo;button\u0026rsquo; modes for wailing. We will add new controller pages to the wiki to help players set up their games in due course.\nWe have also begun a project to release a new proposal for a BMS-like BGF based parser for this mode which will include all 6 frets. Squirrel will be adding the information for this on the wiki for discussion and feedback is more than welcome! Remember! The game styles have changed for GDGF in this alpha. We will update the OutFox Serenity pack to reflect this during October\ngh updates! We have continued to work on the internal mechanics on this mode, so do forgive us while we fix things! This alpha sees new backplate (highway) support, (thanks Jous!) and new noteskin support within the engine. the measure lines and textures now behave as expected and thanks to those of you that requested these features.\nThe internal notefield and scrolling system has seen some updates as well as we move towards Alpha V.\ndance updates! This mode also saw some updates this month; the RNG system was given a revamp, the stageseed generation was also fixed, as well as better audio parsing. Thanks for all the reports of the odd edge cases with some of the odd \u0026lsquo;stuttering\u0026rsquo; bits and pieces you sent in! this was due to an undesirable response in the sampler expecting a calculation from the \u0026lsquo;old\u0026rsquo; resampler path that didn\u0026rsquo;t exist on the new resampler so we tweaked it to stop this.\nThere has been other engine adjustments, we discovered a few other weird bugs in how the buffer works due to the new Keysound code for BMS and po-mu and this has resolved a bug for dance modes.\ntechno updates! We fixed the methodology of the lifebars and the odd crashes with the styles and different play styles available to this mode. There were a lot of edge case crashes which we have fixed for now. In regards to styles, we WILL be fixing the ability to play different styles per player. It\u0026rsquo;s disabled for now to just prevent arcade cab crashes.\nKNOWN ISSUES: Alpha 4.10.0 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ALL: Mode Specific\n❕✅ Updated gdgf graphics for wailing ❕✅ Updated gh graphics for highway ❕✅ Fixed BMS/PMS missing background on channel 04 support ❕✅ Fixed BMS/PMS missing background on channel 07 support ❕✅ New! GDA Parser Support ❕✅ New! BMS Fixed #RANDOM math overflow ❕✅ New! gddm REAL to NEW mode (10 Lane to 9 Lane support) ❕✅ New! added bass3, bass5, bass6 to gdgf ❕✅ New! added guitar3, guitar5, guitar6 to gdgf ❕✅ Fixed crash in non-guitar modes due to the new gh backplates/highways ❕✅ New! BGF Parser Support, in prep for proposal ❕✅ Updated gdgf parsing channels to support the new methods ❕✅ Fixed crash in BGA and guitar channels overflow into drum charts ❕✅ Fixed invalid channels being parsed in DTX loader ❕✅ Fixed B36 GDA parsing ❕✅ Fixed DetermineStepsType on DTX/GDA guitar/bass ❕✅ Fixed PMS channel layouts ❕✅ Fixed DTX channels not being correctly interpreted as \u0026lsquo;admin\u0026rsquo; channels ❕✅ New! added \u0026lsquo;ChartType\u0026rsquo; system for correctly identifying DTX/GDA chart splits ❕✅ Fixed gddm 5 panel layout ❕✅ Fixed ❕✅ New! implemented true BMS/BME/BML/PMS Long Note support ❕✅ New! implemented true BMS/BME/BML/PMS LandMine support ❕✅ Fixed missing hidden channels on BMS/PMS files ❕✅ Fixed wail overflow due to \u0026lsquo;wail up\u0026rsquo; and \u0026lsquo;wail down\u0026rsquo; existing ❕✅ New! Hidden layers of channels for DTX/GDA ❕✅ New! #BGAxx support finally restored for BMS/PMS ends 19 year old bug. ❕✅ New! #AVIxx support added to BMS/PMS ❕✅ New! #OGGxx support added to BMS/PMS ❕✅ New! Channel 02 support for DTX/GDA parsers for variable measures/time signatures ❕✅ New! Engine side Taiko hitsounds to reduce playback lag ❕✅ New! Loading screen for any mode with keysounds ❕✅ Fixed offset missing in CHART parsing closes #376 Engine\n❕✅ Fixed CD Audio style loading methodology being called from 2006 ❕✅ Fixed CDDA Audio hard coded lag amount being added to everything ❕✅ Fixed Edge Crash with \u0026lsquo;EOF\u0026rsquo; being reached in Keysound Loading ❕✅ Fixed Freeze with Pre-2001 BMS/BM98 files with Keysound playback ❕✅ Added Sanity Check on themeprefs from StepMania#2153 ❕✅ Added binarytohex lua command from StepMania#2150 ❕✅ Fixed #PAN math causing playback blackouts for some arcade cabinets ❕✅ Fixed #PAN clipping with 2 players ❕✅ Fixed editor IsFake detection ❕✅ Fixed radar calculation of rolls ❕✅ Fixed #RANDOM generation - Thanks Taro for recommending a file to test with ❕✅ New! added GetCrop() functions for lua actors ❕✅ New! Ovceptor system for placement of receptors over notes ❕✅ Fixed crash with style clashes in legacy themes ❕✅ Fixed \u0026lsquo;Folder Contains Music Files\u0026rsquo; warnings and logging ❕✅ Fixed notepath not drawing from ovceptor ❕✅ Fixed HoldTail entries in NoteData tables ❕✅ New! functimer() for C++17 ❕✅ Fixed math overflow on timer, from 2008 ❕✅ Fixed pos handler being interpreted for zoom handler ❕✅ Fixed Tipsy/TanTipsy take ModTimer into account when calculating results ❕✅ New! New Lua functions: FlipCoin() and RolltheDie() ❕✅ Fixed punishmultitap being active on autoplay ❕✅ Fixed missing keysound tracks ❕✅ Fixed keysounds sometimes crashing recycled pre2014 po-mu cabinet hardware ❕✅ New! Added non-clamped version of SetDancePointLimits ❕✅ New! Added Ex versions of the Back and Elastic tweens ❕✅ New! Added new method to allow Sprite.LinearFrames to have a variable starting point ❕✅ Fixed Colour values being converted 3 times ❕✅ Fixed Matrix math overflowing due to compiler optimisation ❕✅ New! Added short/ushort/long/ulong/longlong/ulonglong RNG engines for mode support ❕✅ Fixed unsigned RNG overflow in compiler for armhf/aarch64 ❕✅ Fixed math error on seeding the global RNG system ❕✅ Fixed missing RNG generation on return to game main screen ❕✅ Fixed PlayerOptions storing two players values in several for loops ❕✅ Fixed divide by zero edge crash closes #414 ❕✅ Fixed race condition in new sampler due to old rounding errors in legacy code ❕✅ Fixed jukebox mode selection and two player crashing shenanigans ❕✅ Fixed final syncmachine edge crash on pre-2010 cabs Windows 7+:\n❕✅ Fixed compilation warnings ❕✅ Fixed crash on creative drivers on Windows 11 Linux:\n❕✅ Fixed GL dispatcher based on Ubuntu advice (may break other distros, do report this) ❕✅ Fixed potential infinite loop in seek() on audio playback MacOS (Universal):\n❕✅ New Universal binary - no more 2 package issues ❕✅ Fixed crash on plugging in a PS4/PS5 controller on Monterey (Mac OS 12) ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed some latency with ALSA causing broken pipe() errors on Pi3/3b ❕✅ Fixed potential infinite loop in seek() on audio playback Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 1st October 2021 \u0026ldquo;Believe it or not, the bus can\u0026rsquo;t swim\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.10.0-rc0 to 4.10.0-rc10) Signed Mac builds update! We have continued to worked on our Mac builds since the last alpha, and this alpha will be released as a universal binary. This means we do not need to quarantine, nor worry about the systems we needed in the past to get the game to work."},{"id":11,"href":"/releases/A4.9.10/","title":"OutFox Alpha 4.9.10 Build","parent":"Release History","content":" Release Date: 27th August 2021 \u0026ldquo;Because 4 hotfixes is too far\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I\u0026rsquo;m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds.\nSo let me describe what happened and why we did what we did.\nTo prepare for the new parsing and profile system that is upcoming for Alpha V, it is time that the engine is modernised to support more than just \u0026ldquo;American English\u0026rdquo; and the ANSI/ASCII standard. For those who don\u0026rsquo;t like the abbreviations, it means text in English. OutFox, and historically StepMania was never really written with foreign language support or any type of loading or conversion support for files or text in different languages other than American English.\nAs you know we are expanding the game modes the engine supports and as a result of this, it adds new improvements to the \u0026ldquo;bread and butter modes\u0026rdquo; (dance, pump) so it benefits everyone in the long run. Last month we upgraded the internal parsing system to proper understand Japanese and Korean loading as well as SHIFT-JIS internal text for our pop\u0026rsquo;n/po-mu, BMS, DTX and the DDR charts which used them. This was a really successful update, and fixed around 18 bugs in SM5, and allowed a lot more charts to be successfully loaded into the game.\nBuilding on this success, we then decided to fix the long standing issue of \u0026ldquo;one simfile to rule them all\u0026rdquo; which was: if there were more than one simfile, it only loaded one of those simfiles, usually spotting the SSC then forgetting everything else. As we will be supporting a wide range of new notes loaders in the future, we wanted to remove this bug to expand on specifically BMS/PMS and the Dance charts. This worked once again with great success.\nHowever, it was all about to come undone as our players with cabinets found out.\nFixing these bugs to our horror we were hit with a lot of reports of missing scores, no history found, groovestats and the SRPG groups, as well as everybody.dance and other things built on SM5 literally crashed and burned, due to the reliance on those bugs being included in the code.\nWe rushed to adjust how we did the loading, and we had to for the moment readd the bugs back for groovestats as this was completely broken for folks who wished to share their scores.\nIt also broke saved scores, and hashed lists because we fixed the loading paths, but folks had years of scores on a bugged loader. To top it off, we allowed the evil that was DWI to load, so folks ended up with duplicate listings and all sorts of craziness we did not expect. My own cabinet fell foul of the DWI problem: I had converted them years ago, but never deleted the files. So now we loaded more than one loader, this was a problem!\nI will say thanks to DomITG and Zankoku from the stamina community for taking the time to work through fixing these bugs as we were lost a bit on how the hashing and loading system affected groovestats and the other score sharing systems.\nThe reason we had such a flurry of hotfixes is due to we would solve one bug to have another reported almost an hour or two after we released, so it was a cat and mouse chase to get them fixed as they were affecting cabinets and folks\u0026rsquo; scores. These bugs only affected dance and ITG due to the fact all of these APIs had been built on them. I am not making excuses here, we should have been more thorough.\nWe had discovered that 21 issues arise within the folder/file parsing system, and that most things depend on this being the way it has been for around 15 years. We have enabled multi loading for other modes and file types, but have returned the SSC -\u0026gt; SM -\u0026gt; DWI rule that was common to the bugs in 5.1.\nWe humbly apologise for this, as we were not expecting that level of damage to established systems in the community. We had to re-enable the bugged code for now until we can look at a new way to fix scores and hashes so that the score shares and players histories are not affected by the new loading system.\nFor the tl;dr - we updated something in our parsers and file loaders, that broke all the scores and share systems due to them being built on bugged code. We had to release loads of fixes as folks reported the bugs.\nI hope that clears things up a bit, and that you don\u0026rsquo;t hate us too much for the errors, we did revert the code to ensure backwards compatibility was maintained. It sometimes happens in alpha development, we do sometimes update things with the best intentions, which breaks a \u0026ldquo;StepMania thing\u0026rdquo; horribly. The codebase is still a massive adventure for us too.\nThis update brings together all the hotfixes and finally puts a lot of the little niggles to rest.\nALL: ❕✅ Fixed Pitch being offsync a bit ❕✅ Fixed crash with missing GDDM Strings ❕✅ Fixed hang crash with leaving screens ❕✅ Fixed resampler ❕✅ NEW Column Judgements for modes that need it: gddm/popn ❕✅ NEW PomuPlus judgements ❕✅ Fixed crash in DTX with some files not using the full 9 lane width ❕✅ NEW Add KeySound loading Screen ❕✅ Fixed Crash with SM/SSC loaders ❕✅ Fixed Crash with OpenGL \u0026lt; 2.1 initialisation ❕✅ Added new loading screen animation for BMS/PMS etc ❕✅ Fixed resampling of \u0026lt; 32kHz sound files ❕✅ Fixed downsampling of 48kHz sound files ❕✅ Fixed block on ragesound causing edge case crash ❕✅ Allowed loading window to be software if system has no DRI on linux ❕✅ Fixed AFT overflow in texture generation, caused issues on Mac M1/RPi ❕✅ Fixed attacks disappearing on Linux and MacOS ❕✅ Fixed orient math ❕✅ Fixed non column judgement modes having lua errors on mods/autogen ports ❕✅ Fixed visibility with PIU noteskins ❕✅ Removed SM4 era remaining sprites. ❕✅ Optimised BMS and PMS parsing ❕✅ Added #SUBARTIST and #CREDIT support to BMS/PMS ❕✅ Fixed time-spacing calculation of graphs in gameplay ❕✅ Added new drumDTX noteskin ❕✅ Changed sound on taiko keysound ❕✅ Fixed holds on paw noteskin pixel offset ❕✅ NEW GDA parser for BandJAM/GDAMania era 6 lane drum charts ❕✅ Fixed bug in RTIO not noticing player 2 ❕✅ Fixed quirky edge case bugs in DTX and PMS ❕✅ Fixed AV crash in course loader on windows 7-\u0026gt; and MacOS 10.12/10.13 ❕✅ Fixed timing data in BMS derived parsers ❕✅ NEW Keysound notedata layer, reduces lag ❕✅ Fixed measure count update ❕✅ Fixed XInput crash on windows 8/8.1 ❕✅ Fixed keysound calling ❕✅ Fixed crash on syncmachine ❕✅ Fixed crash on autogen when using 32 bit windows 8.x ❕✅ Fixed autokeysounds quirk ❕✅ Fixed error checking in loading window ❕✅ Fixed elements not resetting in SelectMusic Panels ❕✅ Removed all cmd() references from BGAnimations and Background Effects ❕✅ Restored old .SM 3.x/4.x named styles (bm-* / iidx-* /etc) so they use the modern equivalent (ask if any show up with the \u0026lsquo;unknown style/stepstype\u0026rsquo; in the log) ❕✅ Fix Unjoin player being in the wrong place ❕✅ Add maniax default notes ❕✅ CloseFolder message added to CodeDetector ❕✅ Fix Entries for Techno Mode ❕✅ Fix pump noteskin aesthetics ❕✅ Fix steps played in graph display / combo display ❕✅ Add pump luatimings ❕✅ Fix glider note down ❕✅ Add pump judgements ❕✅ Fixed overflow in BM98 channel calls Hotfix tweak updates ❕ Fixed missing score issue by restoring bugged SM5.1 code ❕✅ Fixed stats.xml glitch due to bad parse - Thanks Zankoku for the assistance on this! ❕✅ Fixed ScreenMessage Overflow on some systems ❕✅ New libsamplerate resampler - faster pipeline ❕✅ Fixed pointless crash on ScreenMessage ❕✅ Fixed crash/hang when using GrooveStats ❕✅ Fixed hang on Simply Love when using Solo ❕✅ Increased RageLog buffering to prevent overflow crashes with lots of files/Key Sounds ❕✅ Reduced Log output on DTX ❕✅ Fixed visual request on GLX/X11 ❕✅ Removed Windows 98 calls ❕✅ Fixed some obscure 2001 DWI files crash ❕✅ Fixed DWI title destroying hash keys ❕✅ Fixed DWI loading\u0026hellip; nothing at all\u0026hellip; ❕✅ Fixed PMS table corruption ❕✅ Fixed BMS hash table creation ❕✅ Fixed SSC/SM hash generation ❕✅ Fixed Sound buffer width sometimes getting to the max ❕✅ Fixed freeze on Jukebox with some non-dance modes ❕✅ Fixed sound scheduler on Windows/Linux ❕✅ NEW Sound tweaks for haste and rate, based off of new code ❕✅ NEW Sound resample preference, leave it alone for now, as it replicates RageSoundResample fine. ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. KNOWN ISSUES: Alpha 4.9.10 ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issues as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\n","description":"Release Date: 27th August 2021 \u0026ldquo;Because 4 hotfixes is too far\u0026hellip;\u0026rdquo; (Incorporates Internal Builds 4.9.9HF4-rc0 to 4.9.9-rc7) Developer Note: I hope you all are doing well. I\u0026rsquo;m giving you a little update from OutFox HQ as I am sure you are curious on what went on with the 4.9.9 release and its many tweaks and Hotfix builds.\nSo let me describe what happened and why we did what we did."},{"id":12,"href":"/releases/A4.9.9HF3/","title":"OutFox Alpha 4.9.9HF3 Build","parent":"Release History","content":" Release Date: 8th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5.1/5.0.12. Sorry about all this hassle, we fixed a wedge of bugs in the loading system, but did not expect everyone to have built massive amounts of stuff on top of these bugs being there, so we have adjusted the system so backward compatible themes / API / ScoreShare / Groovestats etc once more work again.\nThanks for being so patient while we ironed this out! it has been a pain!\nWhy the hotfix rush?! For those curious about the flurry of hotfix patches, we fixed the way the game sees a lot of non-ASCII based file names and folder names. This allowed for us to support accented characters as well as glyphs and japanese characters, alongside with what we found before. This allowed for us to finally fix the bug of \u0026lsquo;one file per folder\u0026rsquo; which was done for DWI way back in 2002, so as we move to a more mode agnostic (we support more than one game mode) we can allow users to have simfiles for different modes/games in the same folder. This was perfect on OutFox specific things - but broke most stuff on 5.1/5.0.12 horribly.\nWhat we had not realised was that a lot of things had been built up on this old bugged behaviour over the years, and that for some reason, there was a hash of the path of the simfile which was being picked up by all these systems. This completely changed the reported hash, and thus score reporting things or sharing things suddenly didn\u0026rsquo;t know their hash and it also didn\u0026rsquo;t help with DWI being so jank it broke even how SM saw some of the charts.\nWe have kept the multiloading system in place. We need this for other modes, however we have adjusted carefully the loading system for SM/SSC/DWI so it matches back to how past versions work, so all of these things can remain intact and working.\nWe\u0026rsquo;ll need to think hard on how to apply the fixes in the future, as we don\u0026rsquo;t really want all of this all over again!\nALL: ❕ Fixed missing score issue by restoring bugged SM5.1 code ❕✅ Fixed stats.xml glitch due to bad parse - Thanks Zankoku for the assistance on this! ❕✅ Fixed ScreenMessage Overflow on some systems ❕✅ New libsamplerate resampler - faster pipeline ❕✅ Fixed pointless crash on ScreenMessage ❕✅ Fixed crash/hang when using GrooveStats ❕✅ Fixed hang on Simply Love when using Solo ❕✅ Increased RageLog buffering to prevent overflow crashes with lots of files/Key Sounds ❕✅ Reduced Log output on DTX ❕✅ Fixed visual request on GLX/X11 ❕✅ Removed Windows 98 calls ❕✅ Fixed some obscure 2001 DWI files crash ❕✅ Fixed DWI title destroying hash keys ❕✅ Fixed DWI loading\u0026hellip; nothing at all\u0026hellip; ❕✅ Fixed PMS table corruption ❕✅ Fixed BMS hash table creation ❕✅ Fixed SSC/SM hash generation ❕✅ Fixed Sound buffer width sometimes getting to the max ❕✅ Fixed freeze on Jukebox with some non-dance modes ❕✅ Fixed sound scheduler on Windows/Linux ❕✅ NEW Sound tweaks for haste and rate, based off of new code ❕✅ NEW Sound resample preference, leave it alone for now, as it replicates RageSoundResample fine. This mini hotfix (HF2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nALL: ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 8th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF3a to 4.9.9HF3b) (Incorporates Internal Builds 4.9.9HF3-rc0 to 4.9.9HF3-rc4) (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4) Cabinets now have restored scores! We apologise for the issues this update caused. Ensure you have downloaded 4.9.9HF3b Right, we finally fixed the annoying RageFile glitch that was affecting the hash system to be different to 5."},{"id":13,"href":"/releases/A4.9.9HF2/","title":"OutFox Alpha 4.9.9HF2 Build","parent":"Release History","content":" Release Date: 6th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix (v2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nALL: ❕✅ Fixed SM hash corruption ❕✅ Fixed DWI being loaded due to lazy people not cleaning their simfile folders ❕✅ The system will not load DWI if an ssc or sm is found ❕✅ Fixed odd SM title bug ❕✅ Fixed Crash with older hardware not supporting what it advertises ❕✅ Fixed Crash with course loading that affected some folks with \u0026gt;640 songs ❕✅ Fixed Notesloader issues with Mac and Linux ❕✅ Fixed GCC / Mac compile ❕✅ Fixed Windows 10/11 affinity issues ❕✅ Fixed Occasional spike on Windows 10/11 when using an XInput controller ❕✅ Taiko adjustments for notefield ❕✅ Fixed SM/SSC loading to be more cabinet friendly. Signed Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 6th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF2-rc0 to 4.9.9HF2-rc3) (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix (v2) includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply."},{"id":14,"href":"/releases/A4.9.9HF/","title":"OutFox Alpha 4.9.9HF Build","parent":"Release History","content":" Release Date: 4th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply.\nSigned Mac builds update! The big news is we (now finally!) have passed the prerequisites for GateKeeper on Mac, so this hotfix should behave and work fine, without any issues. Do remember to just drag and drop as the dmg lets you know how to do so, and it will run as other applications. Thanks to Jose and Squirrel for their efforts, and Jose for puzzling through, and Jousway for fixing one of the bugs in gh mode which was causing issuess as well.\nNotes Loading There were several issues with the notes loaders and how antivirus/software protection apps were seeing OutFox when we were loading simfiles. This alpha hotfix now has addressed this by allowing you all to add more than one simfile in a song folder, cutting down on the folder rabbit hole. As we move to a more multi-game engine, this will also allow you to keep things tidy on your drive, and ensure it is a seamless experience for you all. Of course, please check the audio files are the same for the chart you are going to add to the folder, as you may find you have a nasty sync issue, but we also now support multidifficulty setups, as this is required for pump and taiko specifically.\nDifficulty System Revamp This hotfix also sees a tweak to the difficulty system used in OutFox. In the past it was tied to the DDR paradigm and then left to rot as one of those \u0026lsquo;StepMania Things\u0026rsquo;. This however really stifled what we could do within the engine, especially with modes with different names/brackets etc. With the release of gddm and taiko we needed more difficulties than the game offered, so this has now been resolved. Themes which are based off of 5.1/5.0.x will still work due to the numbers being the same as before. If there are any issues with your theme, do let us know, but we have tested several with no issues.\nNew #VOLUME and #PAN These features have been missing from our keysound support since 2002, and we are proud to say that we have them in this hotfix! They are completely supported in gddm from the parser, (do reset your cache of course!) and they also work in beat/popn. taiko will need the support as well, so shout out to Jous for putting up with my waaaahh-luigi on getting it added to the game. This build also supports the hidden chips/keysounds for gddm and we\u0026rsquo;ll work on getting the final compatibility added in due course.\nNew gh Modernisation Due to the need to run with a slightly more secure runtime on Mac OS Catalina/Big Sur/Monterey on the Intel based macs there were some functions in our gh mode which gatekeeper did not approve of. The way the notes were cast have been fixed, fever/star power has been sorted to be more gh3 like, and taps and open strums are also tweaked to be better. Please give them a try and let us know! A theme for this mode is in the works, so apologies for the barebone approach we have at the moment. It\u0026rsquo;s also why we are an alpha after all\u0026hellip;\nALL: Mode Specific\n❕✅ Fixed SM/SSC Noteloader corruption with some Japanese and Korean Titles/Artists on dance notesloaders ❕✅ Fixed DTX Noteloader memory leak ❕✅ Fixed DTX Parser missing some drums in gddm mode ❕✅ Fixed BMS Keysounds not seeking/reading correctly ❕✅ Fixed PMS Keysounds not buffering correctly ❕✅ Modernise Keysound system to prevent buffer under-runs ❕✅ Fix BMS/PMS missing channels, Hidden notes will come next Alpha ❕✅ Fix beat crash with charts that had more than 866 keysounds ❕✅ Fix popn crash with charts that had more than 1022 keysounds ❕✅ Fix #VOLUME not being applied correctly to beat and gddm keysounds ❕✅ Fix #PAN not being applied to beat and popn keysounds ❕✅ Fix gh loading crash with some older charts. ❕✅ Fixed RageSound preload causing missing chips in gddm and notes in beat ❕✅ Fixed gh crash due to an overzealous lightsman double update ❕✅ Fixed crash in DTX/BMS/PMS due to strings being over optimised on Mac Intel/Linux ❕✅ Fixed gh note types to please the Mac OS gatekeeper gods ❕✅ Fixed gh open strum notes ❕✅ Fixed gh fever to be closer to gh3 ❕✅ New gh HOPO notes system ❕✅ Fixed gh tap notes not showing up sometimes on older CHART files Engine\n❕✅ Fixed Screen msg Bug - Closes 17 year old issue ❕✅ Fixed crash in Jukebox with non-dance modes ❕✅ Fixed overflow in tween awareness - Closes 14 year old issue ❕✅ Fixed Actor overflow on tween actions - Closes 14 year old issue ❕✅ Fixed OptionsPrefs issue - Closes #375 ❕✅ Fixed editor scrolling issue ❕✅ Fixed editor buffer overflow when using \u0026gt;496 keysounds ❕✅ Fixed editor input being sent garbage ❕✅ Fixed editor input parser arrays ❕✅ Fixed crash in practice mode ❕✅ Fixed endless loop with some older BMS/PMS charts in practice mode - Thanks EDMSPack ❕✅ Fixed potential buffer overflow exploit in soundreader ❕✅ Fixed keysounds being stopped when they didn\u0026rsquo;t need to be, forcing a reload of the sound ❕✅ Fixed Keysound index system ❕✅ New Added save on exit theme metrics for option screens ❕✅ Fixed freeze on game select screen due to missing module - Thanks Kaede! ❕✅ Modernised the notesloader system in preparation for more loaders ❕✅ Fixed some types of charts being erroroneously skipped during the parse load ❕✅ NEW Multi Sim File Loading from 1 directory ❕✅ NEW Non DDR difficulty system so we can properly support other modes Linux\n❕✅ Fixed crash on linux versions that do not support the new Neutral Vendor libraries ❕✅ Fixed crash on Debian/Ubuntu/Fedora/Arch with inifile due to a race condition ❕✅ Fixed edge case crash on Clear/Fedora preventing the game booting on some 4.x / \u0026lt; 5.1 Kernels ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed edge case crash on Twister/Raspbian preventing the game booting on some 4.x Kernels ❕✅ Fixed crash on Raspbian with inifile due to a race condition ❕✅ Fixed crash on RockPi 4B/4C when not using the first HDMI port/Audio Mac OS\n❕✅ Fixed input with guitar hero based controllers ❕✅ Rewrote internal gh mode to fix overly harsh input restrictions ❕✅ Fixed internal system to be signed compliant ❕✅ New enhanced build pipeline to ensure signing passes on Mac OS Intel ❕✅ New streamlined and optimised code for Mac M1 now we are properly signed KNOWN ISSUES: Alpha 4.9.9HF ❕❌ ISSUE Song Charts will not pan the player correctly when being played ❕❌ ISSUE Playing beat/popnsongs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit tempremental at the moment! ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE) (Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 4th August 2021 \u0026ldquo;How\u0026rsquo;s that new feature coming along?\u0026quot; (Incorporates Internal Builds 4.9.9HF-rc0 to 4.9.9HF-rc4)\nThis build fixes several of the reported bugs, as we had to pull the previous release due to operating system updates between release dates. Sometimes having a monthly release schedule is awesome, but it does tire us out!\nAnyways\u0026hellip; Lets get back to the update.\nThis mini hotfix includes a few things we were going to leave to the next release, but as we had to fix bugs in them anyway, it was easier to apply."},{"id":15,"href":"/releases/A4.9.9/","title":"OutFox Alpha 4.9.9 Build","parent":"Release History","content":"\rRelease Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE)\n(Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month. This alpha, our loading screen is in memory of one of his more famous StepMania Based Charts, Air.\nAir\nDigitalic Rain\nAngellic Layer\nSETSUNA (feat. Hatsune Miku)\nRest In Peace. SHIKI ?? - 6th July 2021. TEXTURE FONT GENERATOR V0.34 ❕✅🐲📝 Added ? \u0026amp; ! to number glyph profile ❕✅🐲📝 Fixed MFC overflow preventing compile ❕✅🐲📝 Fixed PNG causing a crash on legacy codepages ❕✅🐲📝 Fixed compile on visual studio community 2019 This build requires a cache reset if you are on Linux or MacOS, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.9 slightly longer as it has to rebuild the index, but it is to accommodate the new modes/setup etc. Please remember to restart the game after doing a cache build, so you do not have as many issues with memory management. New (and some Old!) Modes Update Version 2 Following on from the last release, we have continued to improve and revamp the note system for the new modes, with Jousway taking the time to make available new types and styles available that were never before. This month fixes some omissions we made from the last release, which slipped through the testing teams.\npump We have fixed the scoring bug that was in the previous build, and thank you for those who took the time to report the issues. Keep in mind that Soundwaves still uses \u0026lsquo;dance\u0026rsquo; paradigms for scoring, but other themes that use different scoring systems based on \u0026lsquo;pump/piu\u0026rsquo; should work correctly now.\nThe tick-count has been tweaked to work correctly as there was a miscalculation in the offset math inherited from upstream. This now behaves as expected.\nGetting random misses on hold heads has been resolved as well as the holds with small tails (mini/micro holds).\nSupport for co-op charts has been added. 5 player is introduced with up to 10 players support, though the noteskins have not been prepared at this time. The numbers on the noteskins are separately labeled so with a few adjustments and extra assets you will be able to update any noteskin to work with co-op. Co-op charts made on StepF2/StepP1 should work on OutFox, however, better note types are currently being developed by Jousway so that there can be more than 3 real players defined. Stay tuned!\nThose of you who have reported that we still have a \u0026lsquo;superb\u0026rsquo; bug on holds, this will be fixed when we introduce the new piu mode - remember the pump mode is getting Quality of Life updates for now, before we move over to updating things properly in the future.\nMicro/Miniholds also do not trigger misses/cause a weird tick to happen anymore, and there also are no \u0026lsquo;phantom\u0026rsquo; mines in long (5+ measure) holds - this was an oddity which has been fixed now.\nWe\u0026rsquo;re still working on improving SF2/SP1 custom charts parsing. Except for a few charts, you can play the majority of content made for it on OutFox with no problems. As always, if you find any oddities make sure you report them to us!\npopn There was also a reported issue where some of the channels (lanes) of the PMS 7 button mode were not parsing correctly, or were actually being missed completely, resulting in a chart \u0026lsquo;misplacing\u0026rsquo; green and blue lanes. This was due to Squirrel misreading the spec on how BMS98/PMS was transcribed and set up the function wrong. It is fixed in this release.\nWe also have added 18 lane mode (No PMS/(BME) File support yet though!)\nThank you to all of those that took the time to report this and to kick us into getting outfox into a proper BMS/PMS parser. There are still a few features missing from po-mu mode, but these will be added to the game as per the spec (see the table below for more information.)\npopn mode also had a few tweaks and adjustments this alpha mainly in how keysounds are loaded within the game. This should now mean the mode should be smoother overall.\nThanks to the channels being set right, we also are happy to announce another feature to \u0026lsquo;popn\u0026rsquo; mode: 2 player! This was not available on the original client, but it did always irk us how there was never 2 player options other than 3 button battle. In a future update, there will be a battle mode for \u0026lsquo;popn\u0026rsquo; but for now, enjoy the 2 player fun. We will finally be having a theme for \u0026lsquo;popn\u0026rsquo; in OutFox really soon, so this is finally a move from the \u0026lsquo;dance\u0026rsquo; centric era of the application\u0026rsquo;s past.\nHave some fun with mod files from dance on popn-four\nbeat will be getting some attention this next quarter! para We have given this mode a polish (and for those with an arcade cab, with 3 sensors doing nothing!) we added the \u0026lsquo;fabled\u0026rsquo; 360, or 8 sensor mode. This mode was designed for in the arcade for when the player twirls or turns, but was never actioned. The sensors for the back are actually there! This mode adds that, and for those who feel adventurous, we will be publishing some information on how to make your own 360 8 sensor panel controller in due course.\ntaitai Announcing our 15th mode!\nTaiTai is based off of a popular game where you hit a drum in it\u0026rsquo;s face. The game is horizontally based, with the notes travelling from right to left, and you hit the drum when the note gets to the receptor. The orange notes are for the inner part of the drum, and the blue ones are for the outer rim of the drum.\nFor the moment, some of the quirkier parts of this mode are a work in progress, bear with us as we also write new parsers for this mode. We plan to add support for the special note types and other effects in the game, as well as improve timing and other bits and pieces that are still yet to do.\nOnce more, we have no theme for this yet! (We are an alpha after all!) However, we will have a theme available for this soon that will give the mode polish and a playable feel.\nWe still have the scoring and timing system to finish, along with effects on double notes/taps and the \u0026lsquo;roll\u0026rsquo; notes which you hit as much as you can. Feel free to give it a run and let us know what you think!\nThere is a collection of noteskins including Shizuka, Crystal TaiTai and others.\nThe autogen for this mode has been rewritten by Jousway to include a more TaiTai aware selection of notes, so that we do not get odd holds/overlaps in things. Give it a try!\ngddm This release sees the long awaited updates to our gddm mode!\nThe lane drawing has been fixed, so that notes or \u0026lsquo;chips\u0026rsquo; as they are referred to display correctly, and we have properly sorted out the \u0026lsquo;merged\u0026rsquo; lane support.\nWe have planned to \u0026lsquo;straddle\u0026rsquo; support for the DTXMania NX/Ver. K layouts for the specified channels from the documentation, as these appear to be the most popular branches of this. A detailed channel support list will follow later on.\nAs of this build we have fixed loading .DTX files and these support most of the DRUM based side of the loading, see the table below. This will be improved in time, as we get better knowledge of this system.\nWe also support the \u0026lsquo;combined\u0026rsquo; lane system which adds lane 2 and lane 3\u0026rsquo;s extra notes, and Real mode (again, REAL filenames are yet to be parsed as such, the engine makes a \u0026lsquo;guess\u0026rsquo; on this!)\ngddm still needs a lot of work, and optimisation before we will consider it \u0026lsquo;ready\u0026rsquo;, so do expect the odd quirk or weird behaviour, and let us know what you think/would like to see as we define the mode and it\u0026rsquo;s featureset and support. we will be working on the gdgf parser in the coming months so that the guitar/bass charts will work as well.\nWe do not support XA file decoding at this time, we are looking into options. If you have a dtx file with XA files contained, they will just be played as silence, but won\u0026rsquo;t crash the game. We do support the #PAN and #VOLUME tags, (shoutout to Jous!) we managed to get this in before the release. Current BMS/PMS/DTX Notedata support as of 4.9.9 Key: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used Channel Support Table BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 01 Background Music Background Music Background Music ✅ ✅ ✅ Supported ✅ 02 Measure Length Measure length Measure Multiplication factor ✅ ✅ ❌ Supported / OutFox Channel 2 lasts a measure on DTX ✅ 03 Set Initial BPM Set Initial BPM Set Initial BPM ✅ ✅ ✅ Supported ✅ 04 BGA Base BG Base BG Layer 1 ✅ ✅ ✅ Supported - needs enabling ✅ 05 eXtended Object eXtended Object eXtended Object ✅ ✅ ✅ Supported 📝? 06 BGA Layer Miss BGA Poor Not Used ✅ ✅ ✓ Supported - needs enabling ~ 07 BGA Layer BG Layer BG Layer 2 ✅ ✅ ✅ Supported - needs enabling sits above channel 4 ✅ 08 Extended BPM Set BPM Extended BPM ✅ ✅ ✅ Supported - Changes bpm to value ✅ 09 Stop Stop Not Used ✅ ✓ ✓ Supported ~ 0A BGA Layer 2 BGA Layer 2 Not Used ✅ ✅ ✓ Supported, used for BMS/PMS ~ 0B BGA Base Opacity BGA Base Opacity Not Used ❌ ❌ ~ Not Supported ~ 0C BGA Layer Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0D BGA Layer 2 Opacity Not Used Not Used ❌ ~ ~ Not Supported ~ 0E BGA Poor Opacity BGA Poor Opacity Not Used ❌ ❌ ~ Not Supported ~ 0F Not Used Not Used Not Used ~ ~ ~ Not Used ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 10 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 11 P1 Key 1 P1 Left White HiHatClose ✅ ✅ ✅ Supported ✅ 12 P1 Key 2 P1 Left Yellow Snare ✅ ✅ ✅ Supported ✅ 13 P1 Key 3 P1 Left Green Bass Drum ✅ ✅ ✅ Supported ✅ 14 P1 Key 4 P1 Left Blue High Tom ✅ ✅ ✅ Supported ✅ 15 P1 Key 5 P1 Red Low Tom ✅ ✅ ✅ Supported ✅ 16 P1 Turn/Scratch Not Used Cymbal ✅ ~ ✅ Supported ✅ 17 P1 FootPedal Not Used Floor Tom ❌ ~ ✅ Supported ✅ 18 P1 Key 6 Not Used High Hat Open ✅ ~ ✅ Supported ✅ 19 P1 Key 7 Not Used Ride Cymbal ✅ ~ ✅ Supported ✅ 1A Not Used Not Used Left Cymbal ~ ~ ✅ Supported ✅ 1B Not Used Not Used Left Pedal ~ ~ ✅ Supported ✅ 1C Not Used Not Used Left Bass Drum ~ ~ ✅ Supported ✅ 1D Not Used Not Used Not Used ~ ~ ~ Supported ~ 1E Not Used Not Used Not Used ~ ~ ~ Supported ~ 1F Not Used Not Used Drums Fill in Sound ~ ~ ✅ Supported ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 20 Not Used Not Used Guitar OPEN ~ ~ ❌ Not Supported yet on DTX ✅ 21 P2 Key 1 Not Used Guitar xxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 22 P2 Key 2 P1 Right Blue Guitar xGxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 23 P2 Key 3 P1 Right Green Guitar xGBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 24 P2 Key 4 P1 Right Yellow Guitar Rxxxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 25 P2 Key 5 P1 Right White Guitar RxBxx ✅ ✅ ❌ Not Supported yet on DTX ✅ 26 P2 Turn/Scratch Not Used Guitar RGxxx ✅ ~ ❌ Not Supported yet on DTX ✅ 27 P2 FootPedal Not Used Guitar RGBxx ❌ ~ ❌ Not Supported yet on DTX ✅ 28 P2 Key 6 Not Used Guitar Wail ✅ ~ ❌ Not Supported yet on DTX ✅ 29 P2 Key 7 Not Used Not Supported ✅ ~ ~ Supported ~ 2A Not Used Not Used Not Supported ~ ~ ~ Not Used ~ 2B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 2C Not Used Not Used Guitar Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2D Not Used Not Used Bass Long Note Start/End Point ~ ~ ~ Not Supported ~ AL 2E Not Used Not Used Not Used ~ ~ ~ Supported ~ 2F Not Used Not Used Guitar Wailing Sound ~ ~ ❌ Not Supported yet on DTX ✅ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 30 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 31 P1 Key 1 Hidden P1 Left White Hidden HiHatClose Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 32 P1 Key 2 Hidden P1 Left Yellow Hidden Snare Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 33 P1 Key 3 Hidden P1 Left Green Hidden Bass Drum Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 34 P1 Key 4 Hidden P1 Left Blue Hidden High Tom Hidden Note ❌ ❌ ✅ BMS/PMS in 4.9.10 \\ Supported ✅ 35 P1 Key 5 Hidden Not Used Low Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 36 P1 Turn/Scratch Hidden Not Used Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 37 P1 FootPedal Hidden Not Used Floor Tom Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 38 P1 Key 6 Hidden Not Used High Hat Open Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 39 P1 Key 7 Hidden Not Used Ride Cymbal Hidden Note ❌ ~ ✅ BMS in 4.9.10 \\ Supported ✅ 3A Not Used Not Used Left Cymbal Hidden Note ~ ~ ✅ Supported ✅ 3B Not Used Not Used Left Pedal Hidden Note ~ ~ ✅ Supported ✅ 3C Not Used Not Used Left Bass Drum Hidden Note ~ ~ ✅ Supported ✅ 3D Not Used Not Used Not Used ~ ~ ~ Supported ~ 3E Not Used Not Used Not Used ~ ~ ~ Supported ~ 3F Not Used Not Used Not Used ~ ~ ~ Supported ~ BMS / PMS / DTX Channel BMS Name PMS Name DTX Name OutFox BMS Support OutFox PMS Support OutFox DTX Support OutFox Status Comments NX/Ver. K Support 40 Not Used Not Used Not Used ~ ~ ~ Not Used ~ 41 P2 Key 1 Hidden Not Used Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 42 P2 Key 2 Hidden P1 Right Blue Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 43 P2 Key 3 Hidden P1 Right Green Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 44 P2 Key 4 Hidden P1 Right Yellow Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 45 P2 Key 5 Hidden P1 Right White Hidden Not Used ❌ ❌ ~ BMS/PMS in 4.9.10 ~ 46 P2 Turn/Scratch Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 47 P2 FootPedal Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 48 P2 Key 6 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 49 P2 Key 7 Hidden Not Used Not Used ❌ ~ ~ BMS/PMS in 4.9.10 ~ 4A Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4B Not Used Not Used Not Used ~ ~ ~ Not Used ~ 4C Not Used Not Used Bonus 04 ~ ~ ❌ Not Supported ✅ 4D Not Used Not Used Bonus 03 ~ ~ ❌ Not Supported ✅ 4E Not Used Not Used Bonus 02 ~ ~ ❌ Not Supported ✅ 4F Not Used Not Used Bonus 01 ~ ~ ❌ Not Supported ✅ Sound Effect Channels 01 to 32 on DTX are also supported.\nFor the complete table see Our Wiki (coming shortly as squirrel needs to finish writing them!)\nReordered Game Mode Select Screen This alpha with the fact we have begun to introduce new modes and features, we have reordered the game modes based on some player/community feedback, with the \u0026rsquo;lesser\u0026rsquo; or \u0026rsquo;niche\u0026rsquo; modes moving down a bit in the order. Makes it easier to find things you need, and please give us feedback if you feel a mode needs more representing/love!\nMac OS builds are now signed! We have finally passed all the requirements to be able to sign the binary, so this means no more xattr stuff anymore! we just act like any other application.\nMode Status: New Cross Platform MIDI Driver! Due to the interest we had been getting from the past two alpha releases in the form of gddm and techno, several players that were not on windows did enquire about the possibility of there being a new MIDI driver available for Mac and Linux users to make use of for their midi fighters, e-drums, etc and we decided as a team to move forward and produce one.\nThe midi driver stands alone, there is no need to have any extra applications \u0026rsquo;translating\u0026rsquo; it to keystrokes, (unless you\u0026rsquo;re doing midi via an iphone or something like that of course), but native midi controllers work a treat. If you have a midi device and want to try this out, you will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=portmidi,SDL\nThis will allow the midi driver to load, and set up your device. We have currently coded it for a single device at a time, but do let us know if you feel there is a need for multiple device support, or if you find a device that doesn\u0026rsquo;t behave!\nI also was able to make a prototype mini FSR pad for midi using a teensy LC and some tiny FSR sensors:\nThis worked a treat, so you can definitely get on to some tinkering if you want to make your own devices to play the game!\nThis driver works on Windows, Linux, RPi, Mac OS (intel) / Mac OS (M1) and Rockchip aarch64 SoCs We are still working on latency and control, so let us know if you find anything quirky!\nWindows legacy input driver There has also been work done on a small side part of the game, while we have been waiting for a fix from upstream in regards to the \u0026lsquo;polling/framerate\u0026rsquo; issue that a lot of folks have helping us diagnose for some time. The long and the short of the issue, it meant on some songs, the input would skew towards the update loop rather than honouring it\u0026rsquo;s timestamp, thus producing \u0026lsquo;spikes\u0026rsquo; on the scoring graph at the end of the song, and make a odd looking \u0026lsquo;stair\u0026rsquo; display on the scatter plot of the steps and judgements taken.\nTo resolve this while we\u0026rsquo;re waiting a fix, we have reimplemented the old legacy driver that was on 5.2/5.1 and adapted it for OutFox. This driver can be tempremental, but it seemed to behave with the devices we tested it with. If you tend to find that your input is affected with the message loop issue, you can set up the driver with the following instructions.\nYou will need to load up your preferences.ini in your save folder, locate the inputdrivers= part, and then make sure it looks like this inputdrivers=legacy,minisdl\n(if you wish to use the new portmidi driver as well you can use InputDrivers=legacy,minisdl,portmidi)\nThis will allow you to run the game with minimal resources, keeping vsync on, and should remove any previous issues of fps/rate/polling problems. When we have the fix from upstream, we\u0026rsquo;ll revisit and modernise this with the newer drivers and processes.\nOn the \u0026rsquo;test input\u0026rsquo; screen, you will see a new Window Handler \u0026lsquo;Aux\u0026rsquo; driver. This is just the driver that manages the window controls, maximises, fullscreens, etc, so no need to worry about it. This will also show you, that you have the correct drivers selected in the inputdrivers setting.\nRate and Pitch Changes: Due to an overwhelming set of requests, we have taken time to fix and modernise the rate/haste system which had been broken for a bit since this project began.\nPitch seemed to be a lottery (though we had not seen it work) and all the rate mod used to do was seemingly speed up the song with no other effect or option being honoured.\nSimilarly, we have moved the ratemod to the first screen of the song options - thanks to the stamina players that popped in to request this, and to mattm for saying that most wanted a speed AND pitch option, which we have called \u0026lsquo;both\u0026rsquo; internally to signify this change.\nThe new layout looks like so:\nWe have fixed the way the off/speed/pitch/speed and pitch options work, so they actually work. This took quite a bit of time to fix the internal pipelines for these, but the end effect is definitely fun. Thanks to Squirrel, Jousway and Jose for bringing this one up the pipeline to get it done for this release!\nTo ensure compatibility with legacy themes, the system \u0026lsquo;defaults\u0026rsquo; to how it was in 5.0.12, with a 0.01x increase, and being on the main menu as folks requested. This is a long overdue Quality of Life update for this, so we\u0026rsquo;re really pleased it\u0026rsquo;s done.\nKNOWN ISSUES: Alpha 4.9.9 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE gddm mode: We do not support the XA codec at this time, it\u0026rsquo;ll play silent. ❕❌ ISSUE beat/popn/gddm some early (pre2013) songs may play some sound samples / keysounds at the wrong speed Full Changelog Follows: ALL: Mode Specific\n❕✅ Fixed DTX Detection of track/lane sizes overflowing the notefield ❕✅ Fixed BMS/DTX/PMS Keysound iterator edge crash ❕✅ New! DTX Fixed Channel allocation ❕✅ New! DTX REAL mode (10 Lane support) ❕✅ New! DTX Dual Note support for lanes that require it ❕✅ New! DTX DTX 1A/1B/1C note channel support ❕✅ New! DTX Parser Support ❕✅ Fixed gh noteskin position issue ❕✅ Fixed popn roll note type explosion ❕✅ Fixed BMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed PMS missing difficulties (Thanks InfinitePhantasm!) ❕✅ Fixed DTX missing difficulties (Thanks InfinitePhantasm!) ❕✅ New! Added main drum types to DTX loader ❕✅ New! para 8 sensor 360 degree arcade style mode ❕✅ New! Added popn 18 lane (effectively popn-doubles) ❕✅ Fixed BMS Loader array ❕✅ Fixed B36 conversion on BMS/PMS/DTX ❕✅ Fixed PMS Loader array ❕✅ Fixed PMS layouts for 2 player ❕✅ Added popn doubles to style metrics ❕✅ New! Added taitai mode ❕✅ Fixed taitai layout and screen gameplay ❕✅ New! Added taitai to game selection screen ❕✅ Fixed dance row restrictions affecting all modes ❕✅ Fixed bug with double image caching on pump and dance ❕✅ Fixed missing beat content not installed ❕✅ Fixed gdgf issues with strumming ❕✅ Fixed crash with 2 player popn not setting locked difficulties ❕✅ Fixed seeded 2 player shuffle for dance/popn/beat ❕✅ Raise maximum player tracks to 20 ❕✅ Fixed \u0026lsquo;roulette\u0026rsquo; of sound volume of game assets ❕✅ Added support to modfiles for 1 column modes ❕✅ Fixed crash on 1 column modes ❕✅ Fixed taitai skins with the rewrite of taitai Engine\n❕✅ New! AutoGen Marker layouts in ScreenSelectMusic ❕✅ New! Haste RateMod control ❕✅ New! Linux RAW support ❕✅ New! JoyStick Threads ❕✅ Fixed x11 title bug in SDL preventing updates to upstream ❕✅ Fixed Ordering of GetBestFullComboTapNoteScore ❕✅ Fixed StepCollector lag in evaluation ❕✅ Fixed NoteDisplay errors in evaluation calculations ❕✅ Fixed common noteskin errors ❕✅ Fixed video banners breaking when backing out (Thanks Jubo!) ❕✅ Fixed video initialisation issue causing some videos to fail to load ❕✅ New! Initial Minefields ❕✅ Fixed extra debug lines ❕✅ Fixed Access Violation on GeForce 4, 100 and 200 series cards ❕✅ Fixed Access Violation on Radeon 5000, 6000 and 7000 series cards ❕✅ New! Optimised compilation chain for AMD based processors ❕✅ Fixed mines appearing in holds issue ❕✅ Fixed ModIconRow cycling into an infinite loop causing freezes on some menus ❕✅ Fixed note updates and crash on HowToPlay ❕✅ Fixed crash with some keysounds while in Editor ❕✅ Fixed hold head active and inactive being swapped on some modes ❕✅ Fixed score calculation on screen evaluation ❕✅ Fixed random mine explosions appearing due to a misplaced math calculation ❕✅ Fixed player calculations ❕✅ Fixed errors in ArrowEffects ❕✅ Fixed RNG engine needlessly being called ❕✅ Fixed RNG stutter ❕✅ Removed RandomGen from the game for a more modern equivalent ❕✅ Fixed global calls and RNG seeds not being used ❕✅ Fixed linux compile and GCC complaints ❕✅ New! Die Rolling / Coin Flip RNG options ❕✅ Fixed duplicate Actor refresh call ❕✅ Fixed spiralz/spiralx overflow in axis calculation ❕✅ New! Added VSync High CPU when not focused pipe ❕✅ New! Added F3 + H for high cpu toggle for streamers ❕✅ Fixed Application knowing whether or not it has focus ❕✅ New! Added faster pow^2 math ❕✅ Forced mipmapping off on things that do not need it ❕✅ New! Added nanosvg support for SVG loading ❕✅ New! Added text support for SVG loading ❕✅ Fixed missing file closure in Rage image loading ❕✅ Fixed parsing of notedata in notedisplay ❕✅ Fixed handle releasing on some textures ❕✅ Fixed bug with notefield math ❕✅ Fixed Soundreader issues with mislabelled songs ❕✅ Fixed Lua Number type casting in NoteField ❕✅ Fixed compiler optimisations causing an AV in note display ❕✅ Fixed surface headers overflow in image loading ❕✅ Fixed bug with GL detection (Thanks Jousway!) ❕✅ Fixed Misaligned notefields with two players ❕✅ Fixed hid issue with some older pads ❕✅ Fixed hold heads being missed when correctly hit ❕✅ Fixed holds shorter than 1/16th being missed ❕✅ Fixed cleanup of elements in screengameplay ❕✅ New! Restored edit mode timing signatures option ❕✅ New! Added modern \u0026lsquo;pseudo\u0026rsquo; RNG to replicate missed \u0026rsquo;expected\u0026rsquo; SM5.x behaviour ❕✅ Fixed bug with missing buttons not being initialised ❕✅ New! Added new Lua hooks to allow consistent modfile RNG generation ❕✅ New! Added new Hardware MIDI handles to allow ultra low latency control ❕✅ Fixed issues with DTX based drumkits only using MIDI channel 9 to send off commands ❕✅ Fixed issues with DJ and Midi fighter style controllers having \u0026lsquo;stuck\u0026rsquo; pad keys ❕✅ New! Added new clap assist sound effect: Drumstick ❕✅ New! Added new metronome sound effect: Pan Lid ❕✅ Fixed bug with metronome and measure sounds ❕✅ New! Added new GL system for initialisation and checking, which is linux safe (Thanks Jous!) ❕✅ New! Added helper message for those with a d3d based renderer entry in their preference.ini ❕✅ Fixed crash with anyone using a 5.0/5.1 d3d entry ❕✅ New! Added effect volume F3 + F / F3 + G option on debug menu ❕✅ Fixed bug that used Windows 98 era code instead of modern equivalents ❕✅ Fixed effect volume turning down the Gameplay music ❕✅ Fixed SDL Init() system ❕✅ Fixed Model animations on P1 when both players are on ❕✅ Fixed Sound reader memory leak issues ❕✅ Fixed SDL input grabbing device handles it shouldn\u0026rsquo;t ❕✅ Fixed adaptable Windows handler so we can detach it from being a massive driver ❕✅ New! Restored Windows resize functions lost due to an SDL bug ❕✅ New! Maximise and Minimise window functions now operate as planned ❕✅ Fixed Lua faults reported in a few noteskins ❕✅ Fixed Bad enumeration generation ❕✅ Adjusted polling system to reduce CPU load ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ Fixed duplicate calls to DrawHoldPart() ❕✅ Fixed some controller events being stuck in the queue ❕✅ Fixed duplicate calls to GetCentreLines() ❕✅ New! restore Haste to the game ❕✅ Fixed math overflow with Haste ❕✅ Fixed application of Haste within the engine, to prevent odd uses outside of gameplay ❕✅ Fixed re-sampler and command queue for Haste ❕✅ New! moved Haste to an easier menu option ❕✅ Fixed crash with Haste not obeying sound effect option ❕✅ New! Added \u0026lsquo;SoundEffectBoth\u0026rsquo; (Speed + Pitch) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectPitch\u0026rsquo; (Pitch Shift) option for rate mods ❕✅ New! Restored \u0026lsquo;SoundEffectOff\u0026rsquo; (No Effect) option for rate mods ❕✅ Fixed speed being applied on every option ❕✅ Fixed crash with rate \u0026lt; 1.0 on pitch shift ❕✅ Fixed crash with rate \u0026gt; 1.7 on pitch shift ❕✅ Fixed crash in re-sampler when using Speed and Pitch options ❕✅ New! Move Rate mods to an easier menu option ❕✅ Fixed speed mod being called twice when rate was used ❕✅ Fixed smartsort on player options ❕✅ Fixed outfox-color-holds ❕✅ Restored set-color and set-effect ❕✅ Fixed BAO charging for 2 credits ❕✅ Fixed luastring parsing causing an edge crash on models ❕✅ Fixed race condition in BGLayer\u0026rsquo;s loading and unloading systems ❕✅ Fixed pre 2011 Ogg encoder bugged 44,099hz tracks crashing the game ❕✅ Fixed Sound loader buffer overflow ❕✅ Fixed image loader sometimes creating a transparent image ❕✅ Fixed mod parsing speed ❕✅ Fixed illegal OS keyworded lua call ❕✅ Fixed UTF uppercase conversion ❕✅ Fixed Locale lag on some parsing modules ❕✅ Fix Attack sync ❕✅ New! LoadActorForNoteSkin to set color and effect variables ❕✅ New! Beginning of Shift-JIS conversion support ❕✅ New! Force Nvidia/Intel Drivers to correctly update ❕✅ Fixed mouse calls in Lua ❕✅ New! Preference to turn off the deltaclock timer on the stats in top right ❕✅ Fixed character loading race condition ❕✅ Fixed StepsSelector module ❕✅ Fixed dangling file handles (closes #110 and #36 ) ❕✅ Fixed KeySound iterator to prevent edge crash on linux ❕✅ Fixed ratemod application for legacy themes ❕✅ Fixed pitch and rate being tied in the effect filter ❕✅ Fixed mismatched placements of notefields on some of the different modes Windows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed issue with win32 midi driver ❕✅ Made the renderer drivers 64bit safe in preparation for 64bit build ❕✅🐲 New! Win32 Legacy Driver - part fixes #48 ❕✅🐲 New! MiniSDL Window handler - part fixes #48 Linux:\n❕✅ Added PipeWire driver stub - work in progress ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Fixed Missing handle in renderer causing some odd edge crashes on KDE ❕✅ New! Cross Platform PortMIDI driver! MacOS (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary MacOS (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅ New! Cross Platform PortMIDI driver! ❕✅ Fixed SDL input system on Monterey (MacOS 12) ❕✅ New! Signed Binary ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Added pipewire driver stub - work in progress ❕✅ Disable Wayland support until SDL fixes a few issues ❕✅ Added TurnOffWMCompositor preference for those on KWIN/MATE/Cinnamon etc ❕✅ New! Cross Platform PortMIDI driver! Community content Noteskins ✅ New! gddmnoteskin: default with real support from Jousway ✅ New! ez2 noteskin: default from Lirodon ✅ New! taiko noteskin: crystal-taitai from Lirodon ✅ New! taiko noteskin: shizuka from Lirodon (graphics) and Jousway ✅ New! taiko noteskin: taitai and taitai3d from Jousway ✅ New! gdgf noteskin guitarDTX by yaladre Theme ✅ New! Soundwaves color scheme Golden Dawn by Moru. ✅ All other color schemes previously exclusive to Soundwaves Community Edition have been brought upstream (\u0026ldquo;BISTRO\u0026rdquo;, \u0026ldquo;Invert Standard\u0026rdquo;, \u0026ldquo;Rainbow FUN\u0026rdquo;, \u0026ldquo;Baby Pink\u0026rdquo;, \u0026ldquo;Sunny Day\u0026rdquo;, and \u0026ldquo;The Blood\u0026rdquo;) ✅ New! Soundwaves feature by Ksempac (merged from Soundwaves Community Edition); color scheme system now supports changing difficulty colors (check out Fuego and CincoCero for examples). Translations ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) ","description":"Release Date: 31st July 2021 \u0026ldquo;Hey! Why don\u0026rsquo;t you just get up and dance, man?\u0026quot; (Incorporates Internal Builds 4.9.8.1 to 4.9.8.6BE)\n(Incorporates Internal Builds 4.9.9-rc0 to 4.9.9-rc8)\nAlpha Statistics Commits Changed files Additions Deletions 433 2079 185,205 29,552 In Memorium of SHIKI, a long running well known game music musician, who gave us over two decades of music spanning dance, vocaloid and techno, most of which was charted into BMS, SM and others, sadly passed away this month."},{"id":16,"href":"/releases/A4.9.8/","title":"OutFox Alpha 4.9.8 Build","parent":"Release History","content":" Release Date: 25th April 2021 \u0026ldquo;An Alpha is never late, it arrives precisely when it means to!\u0026rdquo; (Incorporates Internal Builds 4.9.7.1, 4.9.7.2 and 4.9.7.3)\n(Alpha Statistics - 562 commits, 1,255 changed files with 33,866 additions and 6,663 deletions)\nThis build requires a cache reset if you are on Linux or MacOSX, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4.9.8 slightly longer as it has to rebuild the index, but it is to accomodate the new modes/setup etc. This alpha has tweaked the way the delta clock works, take care to read the information below! If you find that your histogram is slightly skewed one side or the other, like the example below, please take a moment to go into options -\u0026gt; audio offsync and recalibrate your offset. Since 4.9.7GG we have slightly adjusted the renderer pipeline to optimise how we deal with frames within the Kernel Timer of the OS. This is to prepare for new sound/render drivers coming in the near future, but as we\u0026rsquo;ve found with a lot in this game, baby steps to fix little blockers before we do major updates. We also have removed more of the Rage Engine in favour of modern mathematics algorithms, and this has needed a slight tweak to the order on how we draw things.\nThis example above shows the mismatched offset from 4.9.7GG\nUsing the sound offset menu to sync your system, you can get a much tighter response, and this will enable you to chase those fantastics!\nPlease do the sound calibration in dance mode! This may not be available in your custom theme, so do it before you swap over! PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED BACK TO THE F2 KEY!!! (for now as it will be a modders debug menu in the future) New (and some Old!) Modes Update. This (slightly delayed) month\u0026rsquo;s update beings some inner reworkings to the gameplay and modes available to play. We are listing them here for your awareness so you can help test them with us, but they will be officially announced in a future release, so please be aware these new modes ARE NOT COMPLETE, and DO NOT REFLECT the final finished versions for their type, due to the fact most of them have no dedicated theme or style setup as they\u0026rsquo;ve not been touched in 7-15 years. We are going to stop the trend of \u0026lsquo;adding new stuff then doing nothing with it\u0026rsquo; that was so common in the project we are formed from, so that is not going to continue with OutFox. All modes support all the modding systems that dance does, so for those of you that wish to explore, have at it! Most of these modes are sadly neglected and have been without support or a maintainer for upwards of a decade, so be a touch sympathetic to them if you decide to take the time to explore, they will be given the love they deserve.\nFirstly, lets talk about the new modes. These are still a work in progress, but are functional for you to experience.\nIf you wish to autogen charts, you can go to Options -\u0026gt; System Settings -\u0026gt; Project OutFox Settings -\u0026gt; Autogen Steps to ON. Restart your game, and the autogen will make some charts for you to play the new modes. For a better experience, go to the \u0026lsquo;modifiers\u0026rsquo; menu on player options (when you have selected a song, double tap start) and select super shuffle as it will rebalance the notes across the new modes, instead of favouring the left hand side. We will be fixing the auto-generator in a future release, but this works well for now for you to at least have a play.\nThe new keybindings for the modes will be updated shortly on our wiki.\ngddm This is a 9 panel (and 10 panel) drum mode based off of the DTX drum kits and inspired by DrumMania, that supports Midi drums and original controllers. Midi support is only on Windows at this time, but we will have a working driver for all platforms by the end of the summer. Gameplay is played on drums, (or keyboard!) and follows the drum use in a chart.\nThe theming for this mode is incomplete, as is common with a lot of the project at the moment, but again there is enough there to play and experiment with! The editor can be used to create charts, as the new DTX loader for this mode is being built and will be made available in the future. If you have comments or thoughts about this mode, let us know.\ngdgf This mode is based off of the 3 fret/lane guitar mode inspired from Guitarfreaks, however, we have chosen to expand it to include the 5 lane (and a new exclusive 6 lane mode!) for OutFox\u0026rsquo;s inspired mode.\ngdgf uses much tighter timing than the other guitar mode, so take a moment and test yourself if you\u0026rsquo;re feeling brave! This mode will use the new DTX loader when it\u0026rsquo;s complete, but you can also use Autogen or the editor to have a play with some charts in the meantime. Again, we have yet to build a theme for this mode, so please bear with us while we create new stuff for these modes.\ngh This is a 5 lane (and 6 lane coming soon!) mode based off of a collection of popular games that used a guitar styled controller to press frets and strum along to bass and guitar parts of a song. We have added a new .CHART and .MIDI loader, and new note types and internal changes so this mode works without being squished around the old 4K dance engine side.\nThere will be new theme and broken down menu options for this mode in due course, when we introduce a new experience for those who wish to try it.\nWe support Jam Mode where one player can be one play type, and the other can backup or be rhythm. This has the benefit of adding variety into the play, and allows you both to play different parts of the song at the same time. You can do this on several of the styles. One thing to note! You should go into the player options when selecting a song and ensure that you set the modifications to Constant BPM, and set the speed mod to around C450 to emulate the speed from clone hero or similar. At the bottom of this menu, if you go to effects and scroll down towards the bottom, you will also see a new selection of modifiers available exclusively in gh mode: The evaluation and results screens will be reworked in the next version, so ignore the fact it\u0026rsquo;s counting calories and pretending to be dance mode!\npopn This mode has been around for a very long time, but has not really had any support or been looked at since before 2010. It was side-lined into the BMS loader, which actually broke a lot of the needed changes PMS actually uses, and as a result most PMS files with 7 or 9 lanes, would be added to the game as beat 10 lane or 14 lane charts. It was known there were issues with this mode, but we were not aware it was broken as bad as it was.\nSquirrel would like to thank the anonymous japanese player we\u0026rsquo;ll name \u0026ldquo;竹 (Take)\u0026rdquo; girl, for reporting this bug, who wanted to play Nitro\u0026rsquo;s PMS chart of the song on OutFox, but experienced the issue above, and there were also issues with how the keysounds were being loaded for this song in popn mode and she took the time to give a very detailed report in DM on discord, but deleted her account before we could see her username. I thank you a lot for the report, and if you ever read this, please come and say hi in our discord!\nSquirrel took the time to investigate it and it was decided to code a new modernised PMS loader to the game, which now correctly loads PMS songs as they should be. This also removes the oddity and edge crashes when anyone wished to play popn mode on OutFox. This song, \u0026lsquo;竹\u0026rsquo; (Bamboo) charted by Nitro was used as a testbed to debug and ensure it properly works correctly in the game, so we took time to fix it so it would be recognised as a 9 Button PMS file. I\u0026rsquo;d like to thank Nitro for charting this as we would never have had the report which meant we could fix 13 year old bugs on our PMS and BMS loaders, and to 竹 girl for taking the time to bring it to our attention so we could fix this properly and have a restored mode. You can find them at https://twitter.com/NitroX72 - Thanks again Nitro!\nWe also have added 2 new noteskins from our community member Daniel, which really add to the style of the game. We have cat, cat-retro, bun, and bun retro!\n(The theme will be complete for the summer)\nWe have taken some older PMS files from the talented folks at Colorful Channel that also did not parse and work correctly, and these now do show up and play as expected once again.\nAs per the BMS/PMS specification, we also have added for the first time, new #BGA channel 06 (POOR), 07 (BG2) and 0A (LAYER 2) support, and will code these effectively when the theme for this mode is complete. We also support the missing LN# (Long Notes) that have never been in this game before, as well as the #ITEM channels.\nWe will continue to adapt and add the missing functionality from PMS moving forward, now it has it\u0026rsquo;s own loader. This loader now also supports 3 lane (in preparation for battle support), 4 lane for hello pop\u0026rsquo;n (ハロー!ポップンミュージック) and 5/7 lanes for pop\u0026rsquo;n portable (ポップンミュージックポータブル). These have been coded and added to the game, with the 3 lane awaiting new PMS code and subtype item code to be added before it will work. There is also a rumoured 18 lane mode, which I\u0026rsquo;m trying to research. If you know any sources/samples/charts, let Squirrel know!\nbeat Just adding this here to show the \u0026lsquo;miss\u0026rsquo; or #BGA06 POOR layer in action. As is typical, we have no theme\u0026hellip;\nThis needs coding and the proper layout supported, as moving forward we also want to add and support the missing BMS specification as well as add new support via BMSON in the future. It is just part of our pledge to support new and interesting modes moving forwards that we hope folks will enjoy!\ntechno We have added the missing 9panel/18panel support from this mode, as requested by a few folks. There was enough demand to add the extra panel. You can create charts for this on the editor, as we do not believe there are any sims for this yet!\n18 panel example gameplay is here: This mode requires good mobility and that you don\u0026rsquo;t use too much polish as slippery pads can lead to falls!\nA Techno 18 panel in the wild, with a cat token collector!\nChanges to Default Theme Pause Menu This one is important. Due to the need to change the system for the new BGA/Layer system for the BMS/PMS/DTX etc mode support, we have had to adjust the methodology in how the pause menu is drawn by the theme. On the default theme, the hold escape to give up option has been swapped to give an instant display of the menu. Older/OutFox supported themes that are specifically for dance will experience no change here, as we have kept backwards compatibility for them. We will look at re-adding this \u0026lsquo;hold\u0026rsquo; option in the future perhaps if it can be sorted within the new modes.\n** New Feature **\nHold/Roll Tail Type - Lift This function will add a tail note to all holds and lifts, making it so that you have to lift your foot/finger/etc from the end of a hold. This adds a little bit of a challenge for files, and can help with training for foot positions for players that wish to progress to higher chart difficulties. The benefits of removing the foot at the correct time can enable better preparedness for upcoming streams or any technical that the chart may have, which could be lost because of inaccurate foot removal from holds or rolls.\nOn rolls, they have the same behaviour as before, however, the last lift will be done on the \u0026lsquo;beat\u0026rsquo; of that roll. Once more, this trains for better foot stance and movement when a roll ends especially for stamina play. The player will be recorded a normal note \u0026lsquo;miss\u0026rsquo; if the tail lift is not performed at the correct moment.\nThese modifiers are available in all game modes, however, not all noteskins will have the support for them, and some themers will need to add these to their player options menus if they wish to add the availability to their theme.\nKNOWN ISSUES: Alpha 4.9.8 ❕❌ ISSUE gh mode: Some charts have no real \u0026lsquo;standard\u0026rsquo; and will cause a crash when loaded into the game ❕❌ ISSUE gdgf mode: The input mode doesn\u0026rsquo;t correctly register strums ❕❌ ISSUE techno/popn/gdgf/gddm/gh/para mode: Trying to use the sync audio screen will crash the game - Use dance to sync your game for now ❕❌ ISSUE Nvidia 460 series drivers: Some issues have been reported and we are investigating ❕❌ ISSUE beat/popn some early (pre2013) songs may play some sound samples / keysounds at the wrong speed ALL: ❕✅ Fixed video banners ❕✅ Fixed missing str2int support ❕✅ Added new sanity check for notes in the StepCollector ❕✅ Added multiBaO support stub for future use ❕✅📝Fixed F6+F3+3 restart on screen gameplay crash #23 (Thanks @pcboygames!) ❕✅📝Fixed Video Rates not being in time to beat #220 (Thanks @SilentTempest83!) ❕✅ Fixed DrawMode C style error with some legacy modfiles using -1 ❕✅ Fixed initial scoring tables to ensure fallback scoring was consistent ❕✅🐲 Added Random Unsigned capabilities ❕✅🐲 Added DDR style random generator for BG Anim ❕✅🐲📝 Fix Python2/3/ExtIO/Satellite from sitting in a never ending loop (Thanks Dalcor!) ❕✅🐲📝 Fix Crash on Python2 boards on windows 7 (Thanks Dalcor!) ❕✅🐲 New working touchscreen code ❕✅🐲 Multi-touch finger support ❕✅🐲📝 Fix Menu buttons remapping on restart #278 (Thanks @Areldyb!) ❕✅ New Higher Res icons for the default theme ❕✅🐲 Add new Reflex and SMX HIDAPI driver stubs ❕✅🐲 Add new Reflex Player 2 and SMX Player 2 HIDAPI driver stubs ❕✅ Optimise VideoModeParams ❕✅🐲📝 Fix Math in Tween Sub systems #271 ❕✅🐲📝 Remove Heap and Memory Stack issues with Tween System #272 ❕✅🐲📝 Add Remaining 4 point Tween animation functions #273 ❕✅📝Fixed Game Crash when song preview ends #305 ❕✅📝Removed final batch of cmd in fallback #298 ❕✅📝Removed Pause Menu from the game due to QA #269 ❕✅📝Make Profile information load upon loading #297 ❕✅ Add support for multi-layered press check on mouse input for Lua ❕✅ Fixed \u0026lsquo;sticky\u0026rsquo; mouse keys on some screens not honouring bIsPressed = false ❕✅ Added proper Mouse / Touch co-ordinate system to the game ❕✅ Added 1080/720/480p screen co-ordinate support for non-default / legacy / 5.x themes ❕✅ Added new streamlined pause menu which is not hidden when mods or gimmicks are used ❕✅ Fixed missing pause menu on BMS/PMS ❕✅ Fixed index overflow with some background movies ❕✅ Fixed duplicate start sound playing on edit menu ❕✅🐲 Restored smooth tween back to the game ❕✅ Removed smooth tween from Lua ❕✅ Adjusted behaviour on orient to be more accurate on placement when close to notes ❕✅ Renamed guitar to gdgf to ensure clarity ❕✅📝Corrected \u0026lsquo;moteskin\u0026rsquo; typo (Thanks Moneko!) ❕✅ Fixed Para noteskin ❕✅🐲 Added new upscale filter options for FFMPEG ❕✅🐲 Added new DTX loader skeleton ❕✅🐲 Added new BMS-DTX space support ❕✅🐲 Added new #BGA 06/07/0A support for PMS/BMS files ❕✅🐲 Added new BMP loader stub ❕✅🐲 Added new TJA loader skeleton ❕✅🐲 Added new CHART loader stub inspired by Mikex5 ❕✅🐲 Reworked and rewrote CHART loader to function effectively with OutFox ❕✅🐲 Added new MIDI loader stub inspired by Mikex5 ❕✅🐲 Reworked and rewrote MIDI loader to function effectively with OutFox ❕✅🐲 Fixed initial parsing modes with chart and midi not producing playable charts ❕✅🐲 Added gh Guitar 5/Bass 5 mode to the game ❕✅🐲 Added new note groups: hopo, open, strum ❕✅🐲 Added gh fever system ❕✅🐲 Added gh multiplier system ❕✅🐲 Added gh anchor system ❕✅🐲 Added ability to play as main and backing in gh mode ❕✅🐲 Added new gh noteskins ❕✅🐲 Fixed and rewrote midi parser to support expected note types ❕✅🐲 Fixed and rewrote chart parser to support expected note types ❕✅ Fixed bug with some songs generating NULL after being loaded with the midi loader ❕✅ Added 5 and 6 lane modes to gh mode ❕✅ Added 6 lane mode to gdgf mode ❕✅ Added anchor support to gh mode ❕✅ Fixed holds in gh / gdgf / beat / popn / para fading to black when hit ❕✅🐲 Fixed #LN holds being drawn erratically on beat/popn modes when using older parser ❕✅🐲 Fixed unable to hit \u0026gt;4 pop-kuns at the same time bug in popn ❕✅🐲 Fixed unable to hit row of 9 in a row pop-kuns at end of \u0026rsquo;take\u0026rsquo; in popn ❕✅🐲 Fixed unable to hold more than 2 pop-kuns at the same time bug in popn ❕✅🐲 Added new popn PMS loader rewritten for OutFox ❕✅🐲 Added new popn loader modes and styles missing from the game ❕✅🐲 Fixed Vorbis overflow with some PMS files when loading a mix of .wav and .ogg keysounds ❕✅🐲 Fixed crash on restarting song from pause menu when loading a mix of .wav and .ogg keysounds ❕✅🐲 Added new colour key effect, mainly in preparation for new BGM support ❕✅ Fixed overflow in notefield on techno 16 and 18 styles ❕✅ Fixed merge error in Game manager that lost gddm on some options ❕✅ Added new Vorbis check statements for new formats ❕✅🐲 Fixed missing GL1.1 hook that mis-fired and allowed ancient hardware to crash ❕✅ Added 9/18/20 lane support for missing modes ❕✅ Remove RageVector4 from the game ❕✅ Remove RageVector3 from the game ❕✅ Remove RageMatrix from the game ❕✅ Remove RageColor from the game ❕✅📝Add additional actor support for noteskins (Thanks chairodactyl!) ❕✅ Fix renderer context handover ❕✅ Fix diffuse errors on theme elements ❕✅ Added Techno support for Broadhead ❕✅ Fix duplicated function calls in BMS/PMS parser ❕✅ Modernised Fallback code (Thanks Moru!) ❕✅ Removed broken song selection for gh ❕✅ Fixed Pause Menu System drawing errors when BGM/Modfiles could hide it by accident ❕✅ Fixed Pause Menu counting collection ❕✅ Fixed NextSong unpausing ❕✅ Fixed ScreenMessage handles being corrupted ❕✅ Fixed Crash on HandleMessage ❕✅ Fixed Crash on GetTopScreen() when pause was hidden ❕✅ Fixed White fade in quads on the new fallback updates ❕✅ Added new support for 240/280hz Monitors by adding a new delta clocks call. (You may need to readjust your offsets!) ❕✅ Set fallback to skip caution menu on non dance modes ❕✅ Change the \u0026rsquo;effects\u0026rsquo; menu to Modifiers, as it should be ❕✅ Don\u0026rsquo;t show dance specific stats outside of dance modes ❕✅ Fix spinning requirement on modern-2d ❕✅ Modernise the Lua Mouse Broadcasting methods to be system wide supported ❕✅ Fix libusb causing crashes on linux and mac ❕✅ Remove life punishment from gh mode ❕✅ Modernise note types ❕✅ Fix AV crash when loading more than 254 wav files on a PMS, caused by a pointless ASSERT\u0026hellip; ❕✅ Fix AV crash when loading more than 254 ogg files on BMS/DTX, caused by a pointless ASSERT\u0026hellip; ** New Feature **\n❕✅ Added New VideoUpScaleFilter Preference This is for people who took the time to request this availability in the video renderer. The default value is 0, which will do no filtering. If you have an older system, take the time to experiment and see how it affects your performance, as this will add a little load onto your system.\nThe accepted numbered values are: 0 - none \u0026lt;- Recommended for Rpi/Low end machines 1 - fast bilinear 2 - bilinear 3 - bicubic 4 - X Sharpens + Contrast 5 - Point 6 - Area 7 - Bicublin \u0026lt;- Recommended 8 - Gaussian 9 - Sinc 10 - Lanczos 11 - Spline\nTake your time and experiment with the aesthetic you want for your videos, and your performance of course.\nWindows 7+:\n❕✅ Fixed several issues with SDL2\u0026rsquo;s pipeline that was causing weird slowdowns ❕✅ Fixed SDL2 issue where sound would crackle and pop on MK9 cabs ❕✅ Fixed Issue where XInput controllers wouldn\u0026rsquo;t be seen when in arcade pad mode ❕✅ Fixed issue with HIDAPI handles freezing on older Intel OHCI boards ❕✅ Changed 2 options to fix a crash with older Intel GPU chips ❕✅🐲 Fix buffer overflow on Reflex Pad Driver ❕✅🐲 Fix edge crash on 3000+ combo flashes on Reflex Pad Driver ❕✅ Add RTIO driver stub ** New Feature **\n❕✅ Added New UsingArcadePads Preference This is for people who have Python Boards, You can set this to enable the driver to work natively without any freezes. As per the work on \u0026lsquo;starworlds\u0026rsquo; you need to set your preference.ini InputDrivers=Python23IO,SDL. This will set up your board driver, and allow you to use keyboard/XInput/Bluetooth controllers to control the game while you\u0026rsquo;re on your pad. You will need to set UseOldJoystickMapping=0 so the game will initialise the XInput controller driver alongside your Python board.\nThis preference only currently supports the Python23IO driver, but will be expanded to Reflex and other drivers in the future. PLEASE NOTE: You need to add the SDL on your InputDrivers or you will have no keyboard input!!\nWindows XP Service Pack 3 (32bit):\n❕❌ ISSUE Identified the issue that is preventing builds running on this OS, fix is in testing for next alpha ❕❌ ISSUE Identified an issue with compilation that is currently being investigated with FFMPEG Linux:\n❕✅ Added tweaks to the initialisation method for low level windows to prevent X sometimes hanging ❕✅ Added new WayLand stub, full support hopefully next alpha ❕✅ Added LightsDriver Linux Stac, (Thanks Din!) ❕✅ Fixed Edge Crash with ScreenMessage on Ubuntu 18.04/19.x ❕✅ Fixed Rare Game Freeze with ScreenMessage on Mint 16+ ❕✅ Fixed Edge Crash when plugging in Red Octane dance pads on Ubuntu 16.04+ ❕✅ Fix Linux compile for actors MacOSX (Intel):\n❕✅ Added tweaks to the initialisation method for low level windows to prevent the loading window from never closing on Sierra/High Sierra MacOSX (Arm M1):\n❕✅ Fixed issue with an edge case lag spike with M1 Airs with using Bluetooth Sound/Controllers ❕✅🐲 Fixed issue where playing some songs could crash the M1 Air ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fixed compilation issue on Raspberry Pi 3 that prevented the game from running for folks with 1.0/1.1 revision boards ❕✅ Fixed bug with Raspberry Pi 3 and Orange Pi that didn\u0026rsquo;t expose 64bit support properly ❕✅ Fixed AARCH64 hooks causing a memory segfault New community content: Colors\n❕✅ New colour scheme Y2K from jack5github ❕✅ New colour scheme DragonFire from Lirodon Music\n❕✅ Added new menu music courtesy of https://sanxion7.com/album/rush (Go see them @ https://twitter.com/SaxxonFox ) NoteSkins\n❕✅ New popn noteskin: cat from Daniel Rotwind ❕✅ New popn noteskin: cat-retro from Daniel Rotwind ❕✅ New popn noteskin: bun from Daniel Rotwind ❕✅ New popn noteskin: bun-retro from Daniel Rotwind ❕✅ New popn noteskin: default from Lirodon ❕✅ New gh noteskin: default from Jousway ❕✅ New gh noteskin: shotrhythm from Jousway ❕✅ New gh noteskin: modern-2d from Lirodon ❕✅ New gdgf noteskin: default from Jousway ❕✅ New gddm noteskin: default from Jousway ❕✅ New techno noteskin: default from Lirodon ❕✅ New global noteskin: broadhead-columns from Lirodon ❕✅ New global noteskin: webbed from Lirodon Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 25th April 2021 \u0026ldquo;An Alpha is never late, it arrives precisely when it means to!\u0026rdquo; (Incorporates Internal Builds 4.9.7.1, 4.9.7.2 and 4.9.7.3)\n(Alpha Statistics - 562 commits, 1,255 changed files with 33,866 additions and 6,663 deletions)\nThis build requires a cache reset if you are on Linux or MacOSX, due to the internal changes. Please find your save folder and delete the contents of /cache. This will make your first time run of 4."},{"id":17,"href":"/releases/A4.9.7GG/","title":"OutFox Alpha 4.9.7GG Build","parent":"Release History","content":" Release Date: 23rd February 2021 \u0026ldquo;Good Game, Well Played\u0026hellip;\u0026rdquo; SDL is SUS\nPlease take a moment to understand that there is a lot in this Alpha Release, so please take a moment to read over the changes! LINUX USERS! IF YOU HAVE A BLACK SCREEN ON LOADING DUE TO NOUVEAU/ATI DRIVERS, GO INTO YOUR PREFERENCE.INI AND SET HIGHRES_TEXTURES TO AUTO!!!! HighResolutionTextures=ForceOn needs to be HighResolutionTextures=Auto However, some machines may need it to be HighResolutionTextures=ForceOff You may also need to set your MaxTextureResolution=2048 to MaxTextureResolution=1024 as well.\nGG HotFix patch Thanks to several upstream issues, we\u0026rsquo;ve taken the decision to move the underlying version of the SDL engine back to how it was on 4.9.6, and we\u0026rsquo;ll monitor and troubleshoot the issues some of you guys faced in 4.9.7. We apologise for those on Linux for the issues, and we have now forked our own SDL branch to doublecheck for issues in the future.\n4.9.7GG Specific Fixes\n❕✅📝 Fixed Crash when entering Extended/Course Mode [Dance] when entering options #29 (Thanks Jubo!) ❕✅📝 Fixed System Lockup on certain nouveau drivers when launching the game #209 (Thanks Din!) ❕✅📝 Fixed Segfault on game launch with older ATI cards on linux #208 (Thanks Din!) ❕✅📝 Fixed Crash on Twister OS on the RPi #216 (Thanks snil4!) ❕✅📝 Fixed Smoothlines Issue #164 (thanks natano!) ❕✅📝 Fixed Crash after load screen on RPi 4 64bit #211 (Thanks eudes!) ❕✅📝 Fixed Crash on Calibrate Audio Sync on pump #210 (Thanks Shrmp0, Kaede573!) ❕✅ Fixed Performance Drop due to renderer present context ❕✅ Removed nvidia driver debug code causing some issues ❕✅ Tweaked GLEW to not cause a race condition ❕✅ Fixed bug where window was presenting a GL version not supported by the system ❕✅ Fixed one of my oopsies by leaving in a forced Nvidia GL debug option ❕✅ Force High Res Textures to auto since we\u0026rsquo;re now as size 2048 ❕✅ Force High Res Textures to auto to fix crash on mesa on ARM32 based boards ❕✅ Fixed Crash on Pinebook/RockPi4 due to bad opengl initialisation ❕✅ Downgraded SDL back to OutFox 2.0.13modded ❕✅ Fixed font size and life bar on pump mode ❕✅ Fixed icon sizing on the application itself ❕✅ Add missing visuals for pump mode ❕✅ Fix GLAD being wrongly selected on some systems, causing a crash ❕✅ Added 41 new tween system for further use in the future ❕✅📝 Moved profile size to 20MB #215 (Thanks Kellykato!) ❕✅ Updated docker build system to support new changes OutFox 5.3.0-alpha.4.9.7 Build - 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation. There is no way to \u0026lsquo;force\u0026rsquo; a bit per pixel or bpp in this version, as it\u0026rsquo;s being moved into a different function, that we will re-expose in the next alpha. This has no affect on gameplay or mode changes in the game, however it means if you\u0026rsquo;re on a system we consider historic (\u0026lt;1999) or vintage (2000 - 2007), you may need to force the settings in the preference.ini to set your \u0026rsquo;texture color depth\u0026rsquo; to 16. as always if you have any questions or need help, do not hesitate to reach out to us in our discord server https://discord.gg/hSHPAU37t8\nWe are still working on restoring some settings changed in the operating system in the 20H2, which can limit frame rate, force your GPU to change delta clock accuracy and even affect the kernel poll/tick rate. These issues will be resolved in a future update as we find out more from Windows Dev support/MSDN.\nNvidia Specific Fixes\n❕✅ Fixed Crash with Generating Avatars for profiles due to texture format ❕✅ Fixed Crash with Changing VSync via F3 + 7 (Thanks Shockdude) ❕✅ Fixed Race Condition Crash with debugoverlay (Thanks Shockdude) ❕✅ Fixed Crash with Setting Refresh Rate (Thanks Moneko, Moru) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Texture overflow (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Context Splice problem (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles not clearing correctly on song close (Thanks Moru, Paraph) ❕✅ Fixed Crash caused in method to intialise the OpenGL and GLAD render pipes ❕✅ Forced OpenGL \u0026lt;4.1 as the new driver is unstable on anything newer at this time ❕✅ Fixed Crash with Theme changes from default ❕✅ Add Object Flags to prevent crash with some of the more exotic mod files StepMania Random Number Generation Since the beginning of this project, we have had a few bug reports about the \u0026lsquo;random\u0026rsquo; number generator in the game not being\u0026hellip; well, random at all. We have been spending some of the time in the downtime over the holiday to actually look into this and we discovered that the system was indeed not performing remotely as designed, and has been broken since late 2004. The main bug report was #22 and #59 by @PCBoyGames and well, we discovered that on further investigation, those bugs were caused to a misinterpretation of the way that the random generator was designed and how it should be used in getting/acquiring a random number.\nSuperShuffle/Blender and Soft_Shuffle This was further crushed in it\u0026rsquo;s delivery with shuffle and super shuffle, and anything really that relied on these broken systems. To resolve them we have removed the 1999 era code and modernised it to current modern standards. This has the benefit of completely fixing SuperShuffle (Blender on old versions) and now the distribution is as expected, not to the left.\nThis has the side effect of making the randomness different for each player so bear this in mind if you\u0026rsquo;re going to play! We will add a Mirror function for this so Player 1 = Player 2 in the future.\nPORTAL on the Music Wheel Those of you that use the default theme, we have returned a feature that was oddly missing on 5.3, and that was the Portal slot next to Roulette and Random.\nWhat is Portal? Portal will pick at random from an open folder/group and if you move on it and away from it it will select a different song. If you close your folder so none are open, then portal will pick at random from your whole collection for that mode.\nExtended Mode Most Played should now spawn songs, I sadly have a low level of played songs due to this being a development build, but you can get the general gist of how this system works.\nFolder Courses now spawn a collection as expected, and should be different ONI Mode With the new random modes now working as expected, this has been a welcome quality of life for ONI mode: Artist songs are now shuffled as expected!\nEndless Mode This mode has never been given any love so far from the dev team, so much so even the layout hasn\u0026rsquo;t been finalised! We will look at fixing this and making this mode consistent in the future, so forgive the \u0026lsquo;default\u0026rsquo; looking layout.\nRandom Attacks There were issues with how this methodology was supposed to actually work, as it likely has been broken for so long. Well in this release, we have unique per player random attacks for that extra challenge! The text file RandomAttacks.txt in your /Data file can be filled with fiendish ideas that can help or hinder a player, so do take a moment to be naughty (or nice!) and populate that file with some cool effects!\nWith the removal of the legacy code and the new updates, we can happily say that we have squashed 37 upstream bugs that have been around since the SM 3.0 era.\nRandom Number Generator Specifc Fixes\n❕✅ Fixed Edge Case Crash with random background movies when only one movie was present ❕✅ Fixed Random Movies only selecting 0, 1, or 2, movies in a folder ❕✅ Fixed Random Backgrounds only selecting 0, 1, or 2 backgrounds in a folder ❕✅ Fixed Random Movies showing the same movie on song start ❕✅ Fixed Random Backgrounds showing the same movie on song start ❕✅ Fixed Course Generation on Extended Mode ❕✅ Fixed Course Generation on Oni Mode ❕✅ Fixed Course Generation on Endless Mode ❕✅ Fixed Course Generation on Survival Mode ❕✅ Fixed Shuffle Mode on the Music Wheel for Roulette ❕✅ Fixed Random Stage Seed generation ❕✅ Fixed GameState Seed generation ❕✅ Fixed Seed generation in NoteDataUtil, Allowing for better AutoGen ❕✅ Fixed Kickbox Autogen ❕✅ Fixed Song Shuffle being pushed to duplicates in SongManager ❕✅ Add new RandomInt function to allow for course generation without crashing ❕✅ Add new RandomFloat function for equivalent support for older content using it ❕✅ Fixed Math.Random being linked to a function that didn\u0026rsquo;t work as designed ❕✅ Fixed Random Attacks only selecting a maximum of 5 different during a song ❕✅ Fixed Random Attacks not actually being Random ❕✅ Fixed Random Attacks edge crash on Raspberry pi/M1 due to bad math function ❕✅ Fixed Random Attacks not completely loading the text file and making attacks available to the players ❕✅ Fixed Jukebox Mode not using the full available mode song selection ❕✅ Fixed Jukebox Mode not using the correct random mode for mod selection during playback ❕✅ Fixed Portal Mode not accessing folder based songs ❕✅ Fixed Portal Mode not selecting the available mode song list ❕✅ Fixed Edge Crash on Portal Mode with 2 Players selected ❕✅ Fixed Jitter Generation on BitMapText ❕✅ Fixed Distortion Generation on BitMapText ❕✅ Fixed Array Overflow where returned index was out of bounds ❕✅ Fixed now defunct RandomGen calls in course generation as they are no longer required ❕✅ Fixed bit underflow when Song Index is NULL PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED TO THE INSERT KEY!!! Sorry, we got tired of mishitting it to use F3, and F2 will become a new mod debug menu in a future update, so watch this space.\nTweens We have also added new tween types for actors (30!) that were missing from the game, as they have been popularly requested to be available over the 4 we have in game at the moment. I promised Mr.ThatKid that we\u0026rsquo;d add them, so now they are available for all from Squirrel\u0026rsquo;s dragons branch. New documentation will be available in the Spring for these!\nTween Updates and Fixes\n❕✅🐲 Optimised Tween calls ❕✅🐲 Added Tween fix for legacy tweentypes/selections ❕✅🐲 Added Tweens for EaseInSine/EaseOutSine/EaseInOutSine ❕✅🐲 Added Tweens for EaseInQuad/EaseOutquad/EaseInOutQuad ❕✅🐲 Added Tweens for EaseInCubic/EaseOutCubic/EaseInOutCubic ❕✅🐲 Added Tweens for EaseInQuart/EaseOutQuart/EaseInOutQuart ❕✅🐲 Added Tweens for EaseInQuint/EaseOutQuint/EaseInOutQuint ❕✅🐲 Added Tweens for EaseInExpo/EaseOutExpo/EaseInOutExpo ❕✅🐲 Added Tweens for EaseInBack/EaseOutBack/EaseInOutBack ❕✅🐲 Added Tweens for EaseInCircle/EaseOutCircle/EaseInOutCircle ❕✅🐲 Added Tweens for EaseInElastic/EaseOutElastic/EaseInOutElastic ❕✅🐲 Added Tweens for EaseInBounce/EaseOutBounce/EaseInOutBounce ❕✅🐲 Fixed bug on Sine Curve Drawing on 460+ Nvidia Driver ❕✅🐲 Fixed time based crashes in Actors ❕✅🐲 Fixed SetEffectPeriod crashing with some negative BPM effects ❕✅🐲 Fixed bug with compiler overoptimisation killing the tween curves ❕✅ Added new Actor functions for the eases (Thanks Mr.ThatKid!) And finally back to normal business! ALL: ❕✅🐲 Added new colorkey effect ❕✅ Restored backwards compatible draw modes to support older content ❕✅ Fix Sine function floating point overflow ❕✅ Add new HIDAPI compliant library support for all platforms ❕✅ Fix Orient in reverse ❕✅ Stop game halting on mistapped ` Key while holding tab ❕✅ Add new PolyLineStrip DrawMode ❕✅ Make DefaultFailTypes Translatable ❕✅ Fix Player Unjoin ❕✅ Fix String to Int in reference to #168 (Thanks Natano!) ❕✅ Remove dependency on LibGLU (full removal in next release) ❕✅ Speed up Texgen functions (Thanks Arctic!) ❕✅ Update SDL2 and add OutFox patches ❕✅ Fix rotationy on holds with splines ❕✅ Optimise NoteColorActor/NoteColorSprite to not memory leak ❕✅ Fix MinTNSToHideNotes ordering ❕✅ Fix Field Flip check calling GameState too often ❕✅ Move Field Flip check to a less demanding section of playeroptions ❕✅ Fix int overflow on RageSoundPosMap causing stuttering ❕✅ Add New forward and back debug options for the camera in ScreenDebugOverlay F3 + S and F3 + D Upside down mirrored mode is available if you zoom out far enough! Reset with F3 + E ❕✅ Fix JoyStick and Controller instanceID being reset on hotplugging ❕✅ Fix JOY Index resetting on removal ❕✅ Set Console Command to use Tilde ~ instead of Pause ❕✅ Fix Finger Events on Touch Screens ❕✅ Fix Finger Movement and ensure mouse co-ordinates are taken into consideration if both move at the same time ❕✅ Add LuaScoring - Now fixes a lot of issues with timing systems, and allows for custom ones! ❕✅ Autosave Profiles when the game closes, as sometimes SetUserQuit() is interrupted when the window is closed ❕✅ Readd Portal function to the Music Wheel, welcome back! ❕✅ Fix the AvarageBPM typo - If your mode used AvarageBPM fix this! ❕✅ Cull the ancient PRNG code ❕✅ Fix the edges of the number font used for combo in Soundwaves. ❕✅ Add FAPlus timing mode (similar to existing ECFA, except Fantastic and Fantastic+ are scored the same with no percentage above 100%, and the lower Fantastic window is coloured white in the judgement font) ❕✅ Advanced timing modes are now scored out of 100%. ❕✅ Fix non-module based themes crashing on new SmartTiming entries, when they had their own LuaTiming entries ❕✅ Fix Start sound being played twice on controller menu ❕✅ Add pro-judgements to pump noteskins ❕✅ Fix invalid judgechoice on initialisation ❕✅ Change Arrows to our new Blue Brand Choice Windows 7+:\n❕✅ Fix MSVC warnings due to new windows updates ❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Windows XP Service Pack 3 (32bit):\n❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix edge case bluescreen on some Cmedia Audio sound cards / AC97 codec based cards ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Linux:\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW ❕✅ Add Wayland Preliminary Support - Needs more work yet however! MacOSX (Intel):\n❕✅ Fix SDL compilation ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings MacOSX (Arm M1):\n❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW New community content: Colors\n❕✅ Two new colour schemes from Moneko ❕✅ Some changes to the shadowtip 3D versions from R.O.B.-bot Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 23rd February 2021 \u0026ldquo;Good Game, Well Played\u0026hellip;\u0026rdquo; SDL is SUS\nPlease take a moment to understand that there is a lot in this Alpha Release, so please take a moment to read over the changes! LINUX USERS! IF YOU HAVE A BLACK SCREEN ON LOADING DUE TO NOUVEAU/ATI DRIVERS, GO INTO YOUR PREFERENCE.INI AND SET HIGHRES_TEXTURES TO AUTO!!!! HighResolutionTextures=ForceOn needs to be HighResolutionTextures=Auto However, some machines may need it to be HighResolutionTextures=ForceOff You may also need to set your MaxTextureResolution=2048 to MaxTextureResolution=1024 as well."},{"id":18,"href":"/releases/A4.9.7/","title":"OutFox Alpha 4.9.7 Build","parent":"Release History","content":" Release Date: 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation. There is no way to \u0026lsquo;force\u0026rsquo; a bit per pixel or bpp in this version, as it\u0026rsquo;s being moved into a different function, that we will re-expose in the next alpha. This has no affect on gameplay or mode changes in the game, however it means if you\u0026rsquo;re on a system we consider historic (\u0026lt;1999) or vintage (2000 - 2007), you may need to force the settings in the preference.ini to set your \u0026rsquo;texture color depth\u0026rsquo; to 16. as always if you have any questions or need help, do not hesitate to reach out to us in our discord server https://discord.gg/hSHPAU37t8\nWe are still working on restoring some settings changed in the operating system in the 20H2, which can limit frame rate, force your GPU to change delta clock accuracy and even affect the kernel poll/tick rate. These issues will be resolved in a future update as we find out more from Windows Dev support/MSDN.\nNvidia Specific Fixes\n❕✅ Fixed Crash with Generating Avatars for profiles due to texture format ❕✅ Fixed Crash with Changing VSync via F3 + 7 (Thanks Shockdude) ❕✅ Fixed Race Condition Crash with debugoverlay (Thanks Shockdude) ❕✅ Fixed Crash with Setting Refresh Rate (Thanks Moneko, Moru) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Texture overflow (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles causing a Context Splice problem (Thanks Moru, Paraph) ❕✅ Fixed Crash with Paraph AMV Heavy Modfiles not clearing correctly on song close (Thanks Moru, Paraph) ❕✅ Fixed Crash caused in method to intialise the OpenGL and GLAD render pipes ❕✅ Forced OpenGL \u0026lt;4.1 as the new driver is unstable on anything newer at this time ❕✅ Fixed Crash with Theme changes from default ❕✅ Add Object Flags to prevent crash with some of the more exotic mod files StepMania Random Number Generation Since the beginning of this project, we have had a few bug reports about the \u0026lsquo;random\u0026rsquo; number generator in the game not being\u0026hellip; well, random at all. We have been spending some of the time in the downtime over the holiday to actually look into this and we discovered that the system was indeed not performing remotely as designed, and has been broken since late 2004. The main bug report was #22 and #59 by @PCBoyGames and well, we discovered that on further investigation, those bugs were caused to a misinterpretation of the way that the random generator was designed and how it should be used in getting/acquiring a random number.\nSuperShuffle/Blender and Soft_Shuffle This was further crushed in it\u0026rsquo;s delivery with shuffle and super shuffle, and anything really that relied on these broken systems. To resolve them we have removed the 1999 era code and modernised it to current modern standards. This has the benefit of completely fixing SuperShuffle (Blender on old versions) and now the distribution is as expected, not to the left.\nThis has the side effect of making the randomness different for each player so bear this in mind if you\u0026rsquo;re going to play! We will add a Mirror function for this so Player 1 = Player 2 in the future.\nPORTAL on the Music Wheel Those of you that use the default theme, we have returned a feature that was oddly missing on 5.3, and that was the Portal slot next to Roulette and Random.\nWhat is Portal? Portal will pick at random from an open folder/group and if you move on it and away from it it will select a different song. If you close your folder so none are open, then portal will pick at random from your whole collection for that mode.\nExtended Mode Most Played should now spawn songs, I sadly have a low level of played songs due to this being a development build, but you can get the general gist of how this system works.\nFolder Courses now spawn a collection as expected, and should be different ONI Mode With the new random modes now working as expected, this has been a welcome quality of life for ONI mode: Artist songs are now shuffled as expected!\nEndless Mode This mode has never been given any love so far from the dev team, so much so even the layout hasn\u0026rsquo;t been finalised! We will look at fixing this and making this mode consistent in the future, so forgive the \u0026lsquo;default\u0026rsquo; looking layout.\nRandom Attacks There were issues with how this methodology was supposed to actually work, as it likely has been broken for so long. Well in this release, we have unique per player random attacks for that extra challenge! The text file RandomAttacks.txt in your /Data file can be filled with fiendish ideas that can help or hinder a player, so do take a moment to be naughty (or nice!) and populate that file with some cool effects!\nWith the removal of the legacy code and the new updates, we can happily say that we have squashed 37 upstream bugs that have been around since the SM 3.0 era.\nRandom Number Generator Specifc Fixes\n❕✅ Fixed Edge Case Crash with random background movies when only one movie was present ❕✅ Fixed Random Movies only selecting 0, 1, or 2, movies in a folder ❕✅ Fixed Random Backgrounds only selecting 0, 1, or 2 backgrounds in a folder ❕✅ Fixed Random Movies showing the same movie on song start ❕✅ Fixed Random Backgrounds showing the same movie on song start ❕✅ Fixed Course Generation on Extended Mode ❕✅ Fixed Course Generation on Oni Mode ❕✅ Fixed Course Generation on Endless Mode ❕✅ Fixed Course Generation on Survival Mode ❕✅ Fixed Shuffle Mode on the Music Wheel for Roulette ❕✅ Fixed Random Stage Seed generation ❕✅ Fixed GameState Seed generation ❕✅ Fixed Seed generation in NoteDataUtil, Allowing for better AutoGen ❕✅ Fixed Kickbox Autogen ❕✅ Fixed Song Shuffle being pushed to duplicates in SongManager ❕✅ Add new RandomInt function to allow for course generation without crashing ❕✅ Add new RandomFloat function for equivalent support for older content using it ❕✅ Fixed Math.Random being linked to a function that didn\u0026rsquo;t work as designed ❕✅ Fixed Random Attacks only selecting a maximum of 5 different during a song ❕✅ Fixed Random Attacks not actually being Random ❕✅ Fixed Random Attacks edge crash on Raspberry pi/M1 due to bad math function ❕✅ Fixed Random Attacks not completely loading the text file and making attacks available to the players ❕✅ Fixed Jukebox Mode not using the full available mode song selection ❕✅ Fixed Jukebox Mode not using the correct random mode for mod selection during playback ❕✅ Fixed Portal Mode not accessing folder based songs ❕✅ Fixed Portal Mode not selecting the available mode song list ❕✅ Fixed Edge Crash on Portal Mode with 2 Players selected ❕✅ Fixed Jitter Generation on BitMapText ❕✅ Fixed Distortion Generation on BitMapText ❕✅ Fixed Array Overflow where returned index was out of bounds ❕✅ Fixed now defunct RandomGen calls in course generation as they are no longer required ❕✅ Fixed bit underflow when Song Index is NULL PLEASE NOTE F2 TO RELOAD SCRIPTS HAS MOVED TO THE INSERT KEY!!! Sorry, we got tired of mishitting it to use F3, and F2 will become a new mod debug menu in a future update, so watch this space.\nTweens We have also added new tween types for actors (30!) that were missing from the game, as they have been popularly requested to be available over the 4 we have in game at the moment. I promised Mr.ThatKid that we\u0026rsquo;d add them, so now they are available for all from Squirrel\u0026rsquo;s dragons branch. New documentation will be available in the Spring for these!\nTween Updates and Fixes\n❕✅🐲 Optimised Tween calls ❕✅🐲 Added Tween fix for legacy tweentypes/selections ❕✅🐲 Added Tweens for EaseInSine/EaseOutSine/EaseInOutSine ❕✅🐲 Added Tweens for EaseInQuad/EaseOutquad/EaseInOutQuad ❕✅🐲 Added Tweens for EaseInCubic/EaseOutCubic/EaseInOutCubic ❕✅🐲 Added Tweens for EaseInQuart/EaseOutQuart/EaseInOutQuart ❕✅🐲 Added Tweens for EaseInQuint/EaseOutQuint/EaseInOutQuint ❕✅🐲 Added Tweens for EaseInExpo/EaseOutExpo/EaseInOutExpo ❕✅🐲 Added Tweens for EaseInBack/EaseOutBack/EaseInOutBack ❕✅🐲 Added Tweens for EaseInCircle/EaseOutCircle/EaseInOutCircle ❕✅🐲 Added Tweens for EaseInElastic/EaseOutElastic/EaseInOutElastic ❕✅🐲 Added Tweens for EaseInBounce/EaseOutBounce/EaseInOutBounce ❕✅🐲 Fixed bug on Sine Curve Drawing on 460+ Nvidia Driver ❕✅🐲 Fixed time based crashes in Actors ❕✅🐲 Fixed SetEffectPeriod crashing with some negative BPM effects ❕✅🐲 Fixed bug with compiler overoptimisation killing the tween curves ❕✅ Added new Actor functions for the eases (Thanks Mr.ThatKid!) And finally back to normal business! ALL: ❕✅🐲 Added new colorkey effect ❕✅ Restored backwards compatible draw modes to support older content ❕✅ Fix Sine function floating point overflow ❕✅ Add new HIDAPI compliant library support for all platforms ❕✅ Fix Orient in reverse ❕✅ Stop game halting on mistapped ` Key while holding tab ❕✅ Add new PolyLineStrip DrawMode ❕✅ Make DefaultFailTypes Translatable ❕✅ Fix Player Unjoin ❕✅ Fix String to Int in reference to #168 (Thanks Natano!) ❕✅ Remove dependency on LibGLU (full removal in next release) ❕✅ Speed up Texgen functions (Thanks Arctic!) ❕✅ Update SDL2 and add OutFox patches ❕✅ Fix rotationy on holds with splines ❕✅ Optimise NoteColorActor/NoteColorSprite to not memory leak ❕✅ Fix MinTNSToHideNotes ordering ❕✅ Fix Field Flip check calling GameState too often ❕✅ Move Field Flip check to a less demanding section of playeroptions ❕✅ Fix int overflow on RageSoundPosMap causing stuttering ❕✅ Add New forward and back debug options for the camera in ScreenDebugOverlay F3 + S and F3 + D Upside down mirrored mode is available if you zoom out far enough! Reset with F3 + E ❕✅ Fix JoyStick and Controller instanceID being reset on hotplugging ❕✅ Fix JOY Index resetting on removal ❕✅ Set Console Command to use Tilde ~ instead of Pause ❕✅ Fix Finger Events on Touch Screens ❕✅ Fix Finger Movement and ensure mouse co-ordinates are taken into consideration if both move at the same time ❕✅ Add LuaScoring - Now fixes a lot of issues with timing systems, and allows for custom ones! ❕✅ Autosave Profiles when the game closes, as sometimes SetUserQuit() is interrupted when the window is closed ❕✅ Readd Portal function to the Music Wheel, welcome back! ❕✅ Fix the AvarageBPM typo - If your mode used AvarageBPM fix this! ❕✅ Cull the ancient PRNG code ❕✅ Fix the edges of the number font used for combo in Soundwaves. ❕✅ Add FAPlus timing mode (similar to existing ECFA, except Fantastic and Fantastic+ are scored the same with no percentage above 100%, and the lower Fantastic window is coloured white in the judgement font) ❕✅ Advanced timing modes are now scored out of 100%. ❕✅ Fix non-module based themes crashing on new SmartTiming entries, when they had their own LuaTiming entries ❕✅ Fix Start sound being played twice on controller menu ❕✅ Add pro-judgements to pump noteskins ❕✅ Fix invalid judgechoice on initialisation ❕✅ Change Arrows to our new Blue Brand Choice Windows 7+:\n❕✅ Fix MSVC warnings due to new windows updates ❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Windows XP Service Pack 3 (32bit):\n❕✅ Fix edge case crash with sound waveout driver ❕✅ Fix edge case system lockup caused by waveout driver ❕✅ Fix edge case bluescreen on some Cmedia Audio sound cards / AC97 codec based cards ❕✅ Fix Modfile performance due to locale check tanking FPS ❕✅ Fix UTF-8 Calls slowing down mod performance Linux:\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW ❕✅ Add Wayland Preliminary Support - Needs more work yet however! MacOSX (Intel):\n❕✅ Fix SDL compilation ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings MacOSX (Arm M1):\n❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix Xcode warnings ARM32/ARM64: (Raspberry Pi etc)\n❕✅ Fix deltaclock to monotonic to reduce pulseaudio lag ❕✅ Fix XInput trying to overwrite HIDAPI modes on some controllers ❕✅ Fix XInput RAW New community content: Colors\n❕✅ Two new colour schemes from Moneko ❕✅ Some changes to the shadowtip 3D versions from R.O.B.-bot Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 20th February 2021 \u0026ldquo;We\u0026rsquo;re Only Human After All\u0026rdquo; Windows 10 is getting a pain to code for, da-don! Nvidia 460+ Driver Issues + Windows HotFix! There has been a flurry of bug reports due to the new GeForce Experience based drivers moving into 460. There are some quite fundamental changes in this driver that have affected our LowLevelWindow system, and the way we draw. The latter will be fixed over the coming months, so we can be proactive and fix the issue before it becomes a game breaking situation."},{"id":19,"href":"/releases/A4.9.6/","title":"OutFox Alpha 4.9.6 Build","parent":"Release History","content":" Release Date: 16th December 2020 \u0026ldquo;Single-Frame Don-Chan is not amused\u0026rdquo; (Taiko no Tatsujin - © 2001 Namco/Bandai Namco Studios)\nThe hot-fix patch that delayed Alpha 5, da-don! We have fixed the crash on startup on windows 8/10, da-don! If you have downloaded the windows build and have a crash, please redownload the new build!\n❕✅ Fixed Crash with generating profiles due to weird windows error (Thanks Ultra for reporting!) ❕✅ Fixed Buggy crash due to Intel driver ❕✅ Removed OpenGL 4.3 availability on Win 8/10 due to update breaking Intel Drivers on Pre 8th Gen Chips Announcing Apple M1 controller support! We have worked through several days and nights of trying to get this to work, and we can happily announce that we are one of the first native apps to have full HIDAPI and XInput support on Apple Silicon!\nThis means you can play with pad/controller, and use some of your jank pre-2010 madness! We are super proud of this achievement and you can now move to the M1 macs without worry of your pads not working.\nTo support this new input methods available to Mac M1, we have a fully native build. No more Rosetta!\nWE HAVE SET THE GAME TO USE HIDAPI BY DEFAULT, DUE TO THE LACK OF SUPPORT FOR XINPUT PADS AT THIS TIME. THIS IS AN SDL2 AND APPLE ISSUE, AND IS NOT FIXED IN 11.1.\nWe have full support for pads in HIDAPI, and XInput pads do work when mapped, however, just to keep it simple, use HIDAPI 👍\nOn the Keymap screen, we added new secondary and tertiary inputs, unintentionally mirroring the @taronuke nitg project. Inspired I think. When we were discussing the feature request, two of the developers were unaware that the input menu for NiTG had 5 input rows. However, I will credit our sister project, I don\u0026rsquo;t want folks to think we take inspired options without reporting the origins, we work together to benefit all of our community.\nYou can now map multiple controllers and keys for players, as by request of several community players.\nALL: ❕✅ Fix adjusted FFMPEG libraries to allow for more supported formats ❕✅ New Game Select Screen ❕✅ New Lua game selector ❕✅ Allow user to select game on first run ❕✅ Fix Pump fakes not being referenced ❕✅ Fix theme changing method now Lua is an option ❕✅ Update Lua to 5.3.6 ❕✅ Restore SM OutFox lexicon for backwards compatibility with cmd() based content ❕✅ Restore SM OutFox %d patch for backwards compatibility (Thanks ArcticFqx!) ❕✅ Fix Lua intregral floats to match current behaviour (Thanks Mr.ThatKid!) ❕✅ Fix noteskin switching after first play ❕✅ Update SDL2 ❕✅ Restore OutFox patches to SDL2 for International and Language support ❕✅ Tighten up animation/screen change timings to be quicker ❕✅ Fix drawing of characters with masking backgrounds ❕✅ Added \u0026rsquo;legacy\u0026rsquo; draw mode to match 5.1/5.0 themer expectation (Slower, but use sparingly!) ❕✅ Added Smoothlines Matrix Options for Backwards Compatibility ❕✅ Added new LineStripM to allow for newer options moving forward, so older content is not broken accidentally ❕✅ Added Allow Player to have controllable vanish point \u0026amp; FOV ❕✅ Added function for controlling the vanish point\u0026rsquo;s X \u0026amp; Y separately ❕✅ Added Allow NotePath to use the secondary DrawMode ❕✅ Fixed Array overflow on P3IO, marquee lights should work as designed now ❕✅ Created a separate FOV+VanishPoint for Player ❕✅ Fixed potential crash in FOV in DrawFunctions ❕✅ Changed \u0026lsquo;cement mixer\u0026rsquo; to \u0026lsquo;super shuffle\u0026rsquo; in mods (blender in SL) ❕✅ Add new Lua patch for random to work as before in older themes/content ❕✅ Fix errant reference and allow math.random(seed) to operate as designed ❕✅ New Feature: New NoteDataUtil random generator to fix shuffle mods ❕✅ Patch other \u0026ldquo;Random\u0026rdquo; generation to work for now - more work is required ❕✅ Reimplement color variable for noteskins ❕✅ Allow LoadActorForNoteSkin to properly use the new color variable ❕✅ Implement NoteSkin draw order metric ❕✅ Make PeakNPS a 2 decimal value ❕✅ Stop Smoothlines option setting selection restarting the game ❕✅ Change option text for input method in the Experimental Menu to HIDAPI/XInput ❕✅ Added missing font fallbacks Windows 7+:\n❕✅ Fixed LibUSB libraries causing game crash ❕✅ Built new LibUSB dlls to ensure compatibility Windows XP (32bit):\n❕✅ Fixed LibUSB libraries causing game crash Linux:\n❕✅ Fixed lib linking with new FFMPEG version MacOSX (Intel):\n❕✅ Fixed Compile with new SDL version ❕✅ Fixed LibUSB not picking up plugged in xbox controllers MacOSX (M1):\n❕✅ Remove Redundant Darwin (\u0026lt;10.9) calls preventing compile on M1 ❕✅ Allow the arm64 arch to be exposed so XCode can actually see our M1 even in Rosetta Brew mode ❕✅ Allow the OS Functions to be taken into consideration on the compile so we can see USB ❕✅ Fix warnings with XCode in the input handler, and updated the plist to ensure we are current ❕✅ Added new libs for LibUSB ❕✅ Added new libs for FFMPEG ❕✅ Fixed SDL2 compile options so dynamic input works! ❕✅ Fixed PlayStation 1/2/3/4/5 controllers not detecting their buttons on HIDAPI mode ❕✅ Fixed Controllers from Pre-2005 not being detected in HIDAPI mode ❕✅ New Database will need to be added to in the future when SDL is updated for mac. ARM/ARM64: (Raspberry Pi etc)\n❕✅ Added new libs for LibUSB New community content: Noteskins\n❕✅ Added new popn noteskin ❕✅ Added outfox-note based noteskin with 192nd support and coloured holds Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 16th December 2020 \u0026ldquo;Single-Frame Don-Chan is not amused\u0026rdquo; (Taiko no Tatsujin - © 2001 Namco/Bandai Namco Studios)\nThe hot-fix patch that delayed Alpha 5, da-don! We have fixed the crash on startup on windows 8/10, da-don! If you have downloaded the windows build and have a crash, please redownload the new build!\n❕✅ Fixed Crash with generating profiles due to weird windows error (Thanks Ultra for reporting!) ❕✅ Fixed Buggy crash due to Intel driver ❕✅ Removed OpenGL 4."},{"id":20,"href":"/releases/A4.9.5/","title":"OutFox Alpha 4.9.5 Build","parent":"Release History","content":" Release Date: 30th November 2020 \u0026ldquo;Step into tha game!\u0026rdquo; (Yakitate!! Japan - © 2004 Sunrise/TV Tokyo)\nThe Alpha of many changes\u0026hellip; Introducing Both At Once! What is Both At Once? Both at once is a popular feature option used in @taronuke\u0026rsquo;s project Not in the Groove. It allows player one to input to player two, while playing mod files. As many of the mod files ported from NitG require two joined players, and before this alpha, the method to enable autoplay for the alternate player was a bit sketchy on SM5, we have taken the time to add this feature to OutFox.\nHow do we use it? Ever accidentally turned on \u0026lsquo;Monkey Input\u0026rsquo; and wondered why the game doesn\u0026rsquo;t work anymore? Well, we removed Monkey Input from the F3 Debug Menu, and in it\u0026rsquo;s place, we have added the BAO option!\nYou need to be in a game menu, and have added 2 players to activate it, (So after you have selected a mode, or on the music wheel) - or you simply will not be able to activate it. This is to protect you having settings or menus operate as both players at once, which could be a pain!\nWhen you are in a game mode, you can add two players and then turn the option on: Press and Hold F3, then press 5\nYou will then be in BAO mode, and can play mod files! (You can find a collection of ported and original files from our community)\n(Screen Select Music - Setting both at once mode on)\nYou can also select menu options and settings in BAO mode for the song, but do bear in mind many mod files set their own speed mods and noteskins:\nYou can then play the game as one player, but it will fill in for two!\nThings to note!\nIf you are player 2, then player 1 will be your \u0026lsquo;ghost\u0026rsquo; and vice versa If there is a mini-game in the mod file, which checks for individual player input, we will not override this with BAO! (This is to mirror NitG Behaviour, and is as designed) The player you are not playing on will be disqualified, and it\u0026rsquo;s score won\u0026rsquo;t be saved, even if it is displayed in the evaluation screen You can turn off and on BAO during a song, using F3 + 5 BAO will be reset when leaving the Select Music Screen, or if the System Switch is pressed On evaluation, you will note player 1 matches player 2:\nWe also have some different pages on the evaluation page - if you press left or right you will change \u0026lsquo;page\u0026rsquo; to reveal more details.\nThe scatter graph in this alpha is drawn a lot more efficiently, which should prevent the slowdown when looking at many presses.\nThe \u0026lsquo;histogram\u0026rsquo; is another highly requested feature for outfox, adapted from the features from https://github.com/Simply-Love/Simply-Love-SM5, we draw it differently in OutFox, as we have the different timing windows.\nNew Actor Multi Vertex Draw options! This alpha also introduces a few new options for controlling your draw commands when creating an actormultivertex(). There were some issues we found in the methodology used in the older code which sometimes allowed the game to fall back to CPU based rendering/calculation for drawing some objects and lines, causing stuttering and arrow lag in screen gameplay, and would cause odd slowdowns in the evaluation screen (as noted by many of our stamina players, when playing marathon mode!)\nWe added two new draw options, and optimised some of the older modes to be less heavy on the game while drawing effects or UI objects.\nNote the VPF (Vertices per Frame) Count. Higher counts mean higher loads on the system: (Before with drawmode_quadstrip) The draw mode has been changed to just use points, dropping the value considerably. (After with the new drawmode_points) Another thing that can be decided in the Lua command is the state of the points, which allow for square or circle points: Square: Circle: New lua commands: self:SetDrawState{Mode=\u0026quot;DrawMode_Points\u0026quot;}:SetVertices(verts)\nNew Draw Modes, we have DrawMode_Points and DrawMode_Lines!\nself:SetPointState(boolean) (so false or true - Alias the Points. if the size is too big, or it is not supported on the GPU\u0026rsquo;s driver, it will be drawn as a square, but won\u0026rsquo;t crash.)\nexample: circle: self:SetPointState(true) square: self:SetPointState(false)\nresizable points: self:SetPointSize(float) - Size in PIXELS of the point to draw. This will often round to a whole number on older systems, but most cards will use subpixel sampling to keep these as designed. For better performance, use a whole number, so 6.0.\nExample: self:SetPointSize(10.5)\nThese are called in your actormultivertex like so:\nlocal amv = Def.ActorMultiVertex { OnCommand=function(self) self:SetDrawState{Mode=\u0026#34;DrawMode_Points\u0026#34;}:SetVertices(verts) self:SetPointSize(10.5) self:SetPointState(1) end } Example drawn with thin DrawMode_Lines: Oh, we built a Windows XP build for those with cabinets.\nTEXTURE FONT GENERATOR V0.33 https://github.com/TeamRizu/Texture-Font-Generator-2020-Squirrel ❕✅🐲📝 Added Hebrew (Thanks Snil4 for the request) ❕✅🐲📝 Set the \u0026rsquo;example\u0026rsquo; glyph to be 0000058 so it is usually displayed by obscure fonts. ALL: ❕✅ Fixed Discord RPC compiling on newer GCC versions ❕✅📝 Readd the minimaid option to the build scripts ❕✅ Fixed miscasts of ActorUtil causing some actors in mods to be drawn with corruption ❕✅ Fixed the Analogue Input Screen so players can exit/enter as designed ❕✅ Fixed DetailStatsEdit Screen (Thanks MDR/Moneko!) ❕✅ Add New Opus SoundReader ❕✅ Add New FLAC SoundReader ❕✅ Add New Wave SoundReader, removed legacy WAV pipe ❕✅ Update MP3 SoundReader pipe ❕✅ Update Ogg SoundReader pipe ❕✅ Update Vorbis and Ogg Libraries ❕✅ Fix CMake building for the sound components ❕✅ Force SoundWriteAhead to 4096 to alleviate some skipping on older systems ❕✅ Force SoundPreferredSampleRate to 44.1khz to fix skipping on older systems ❕✅ Fix Resolution display checking ❕✅ Fix Display Sorting ❕✅ Fix Texture debug log spam, we only need to do this internally, and saves our time going through crash logs ❕✅📝 Add missing Aspect Ratios - Closes TeamRizu/OutFox#179 and Simply-Love/Simply-Love-SM5#214 ❕✅📝 Fix coloured glow missing from ActorFrames - Closes TeamRizu/OutFox#155 ❕✅📝 Fix ScreenGamePlay player resize math calculations - Closes TeamRizu/OutFox#63 (Thanks @JapanYoshi) ❕✅📝 Fix location of field when player zoom is larger than one - Closes TeamRizu/OutFox#63 (Thanks @JapanYoshi) ❕✅ Implement SetBaseLocation ❕✅ Fix Metronome Clap/sound type being quiet and not correct ❕✅📝 Fix Endless mode not working - Closes TeamRizu/OutFox#159 ❕✅📝 Added option to \u0026ldquo;inputfocus\u0026rdquo; preference to \u0026rsquo;not minimise screen on focus loss\u0026rsquo; - (Thanks Digital Dancer!) ❕✅ Added Median page to Screen Evaluation (Page 4) to display the input histogram ❕✅ Fixed Miss offsets being included on calculations in the Median page ❕✅📝 Added 2 decimal places to FPS stats as requested by the community ❕✅ Added Delta Clock second counter, if the log shows \u0026gt;1.00 then DeltaTime() has skipped ❕✅ Fixed misrepresented fonts on Median page ❕✅📝 Added Hebrew Font Maps - (Thanks @snil4 for the request!) ❕✅ Fix font alignment to support Hebrew ❕✅📝 Implemented P3IO Driver - (Thanks @chrispable for the initial work https://github.com/chrispable/stepmania/tree/starworlds) ❕✅📝 Implemented P2IO Driver - (Thanks @chrispable for the initial work https://github.com/chrispable/stepmania/tree/starworlds) ❕✅📝 Implemented PacDrive Linux Driver - (Thanks @lqbombjack for the initial work PR at stepmania/stepmania#1479) ❕✅📝 Implemented ITGIO Linux Driver - (Thanks @DinsFire64 for the commit stepmania/stepmania#1994) ❕✅📝 Added the SM Mainline PacDrive fixes (Thanks @DinsFire64 and @KevinTurner / stepmania/stepmania#2056 and stepmania/stepmania#1819) ❕✅📝 Fixed Win32 Parallel on Dance - (Thanks @ArcticFqx!) ❕✅📝 Set Textures to be 2048 and Hi-Res by default - Closes TeamRizu/OutFox#166 (Thanks @natano!) ❕✅📝 Set Smoothlines behaviour to mimic 5.1 by default - Closes TeamRizu/OutFox#164 (Thanks @natano!) ❕✅📝 Set Pad Input behaviour to mimic 5.1 by default - Simply-Love/Simply-Love-SM5#214 (Requested by @natano!) ❕✅ Fix fonts not falling back onto provided extended UTF-8 glyphs. ❕✅📝 Fix bad bitmap textures causing a dialogue message which cannot be cleared - Closes TeamRizu/OutFox#157 (Thanks @NekoIncardine!) ❕✅ Fixed Bad Math calls on the Display Draw pipe for Actors ❕✅ Fixed an issue where a few edge case systems could cause a crash due to a malformed check in the GLAD Renderer ❕✅ Resized the fonts on stats overlay ❕✅ Fixed several type warnings on stats overlay ❕✅ Added both at once on basic input types (inspired from @TaroNuke\u0026rsquo;s NitG Project) ❕✅ Fixed both at once being set and causing menu lock options ❕✅ Fixed both at once messing up the system switch menu ❕✅ Fixed option in screen select music that sometimes caused the game to crash on some mod files ❕✅ Forced 2 players joined to enable both at once ❕✅ Forced non playing player on both at once to be disqualified ❕✅ Modernise and optimise the screen options menu system ❕✅ Optimise the menu up/down process for both at once ❕✅ Match difficulties on screen select music for both at once ❕✅ Fixed issues with both at once being on for screens which really do not work well for this feature ❕✅ Make the BMS loader smarter at finding a preview to play ❕✅ Renamed the old SM5 beat default noteskin to defaultsm5 ❕✅ Fixed the issue where INVALID_PLAYER_OPTION would produce a dialog, it now warns in the log file ❕✅ Fixed bug in the loading window where course counters could produce a value above 100% ❕✅ Added new CI options to build nightly packages for testers moving into 2021 ❕✅ Fixed issue with music sometimes not playing after ScreenGamePlay ❕✅ Add a background switching system to SoundWaves ❕✅ Change combo milestone animation to match current design paradigms ❕✅ Fixed outdated \u0026lsquo;hexagon\u0026rsquo; banners ❕✅ Fixed issue where returning from pause could trigger transitions to be run ❕✅ Fixed metronome being the same sound as clap ❕✅ Fixed a rare Access Violation being triggered due to an operating system adjustment of the sound buffer ❕✅ Fixed an issue with the USB IO Driver sometimes hanging the game ❕✅ Added the defaults that modes that should be upside down (down scrolling) ARE upside down ❕✅ Fixed a bug which caused a crash in the mp3 driver - (Thanks mattbisme!) ❕✅ Added new ActorMultiVertex options to allow for wider draw methods ❕✅ Optimised the drawing methods from AMV calls ❕✅ Fixed smooth lines causing lag on some mod files ❕✅ Added AMV points to the lua command ❕✅ Added AMV pointsize to lua ❕✅ Added AMV lines to the lua command ❕✅ Added the lua option to set points to circle or square ❕✅📝 Fixed FFMPEG Memory leaks due to a bug in the way the Surface was allocating textures - Closes TeamRizu/OutFox#85 (Thanks @EngineMachiner!) ❕✅📝 Fixed FFMPEG Memory leak causing the game to crash with GL_OUT_OF_MEMORY - Closes TeamRizu/OutFox#153 (Thanks @igormclven!) ❕✅ Added new debug information for GL\u0026rsquo;s line and point width as it is dependent on graphics hardware (if people have a tiny line) ❕✅ Modernised the scatter graph to use the new points system ❕✅ Fixed IsUsingWidescreen() ❕✅ Added IsUsingPortrait() ❕✅ Fixed DrawTap creation to be more streamlined ❕✅ Separate loading of notes per Routine and Regular ❕✅ Fixed single frame movies/images that use FFMPEG to work as designed ❕✅ Fixed FFMPEG not being freed correctly when being used with legacy DivX/XViD/AVI/MPEG files from prior to 2008 ❕✅ Fixed regression in sound readers defaulting to the beginning of the song on the music wheel (Thanks Moneko/Moru) ❕✅ Fixed FFMPEG thread sometimes speeding up on movie looping ❕✅ Fixed FFMPEG resize/scale from causing skips on older hardware ❕✅ Fixed method where the game forgets that background is an effect ❕✅ Fixed FFMPEG sprite allocation from being leaked ❕✅ Fixed Context generation leaking memory ❕✅ Fixed float overflow in RageSoundPosMap ❕✅📝 Fixed regression that prevented the background from showing when a file was missing - Closes TeamRizu/OutFox#172 (Thanks @SheepyChris!) ❕✅ Fixed library version mismatch with some of the newer compiled libs ❕✅ Fixed centering of player in demonstration screen. ❕✅ Fixed issue with compilation of AV1 support ❕✅ Fixed crash issue in ScreenSelectLanguage ❕✅ Fixed issue with player scaling code being set incorrectly ❕✅ Added GetTexture for FFMPEG to fall back to image instead of a null movie overlay on screen gameplay ❕✅ Added a proper pause mode to movies, so the DeltaTime() no longer slips while the game is paused. ❕✅ New Feature: Ability to change SOUNDMAN volume in lua ❕✅ New Feature: Added fade option to SOUNDMAN Windows 7+:\n❕✅ Fixed NSIS branding and missing items ❕✅ Added the beginnings of 64bit windows support ❕✅ Segregated calls and API objects for 64bit windows support ❕✅ Removed the deprecated files inside the win32 arch util folder ❕✅ Fix Midi input mapping missing extended button types ❕✅ GetArch() now returns windows version Windows XP (32bit):\n❕✅ Yea, we went here ❕✅ Fixed FFMPEG generation so the formats supported match Win 7 ❕✅ Fixed Memory leak causing the game to crash with GL_OUT_OF_MEMORY ❕✅ Fixed uninitialised locale crashing the game and preventing startup ❕✅ GetArch() now returns Windows XP Linux:\n❕✅ Fix compile for file operations ❕✅ Fix build scripts to correctly label the bundled libraries - Closes TeamRizu/OutFox#165 (Thanks natano!) ❕✅ Fixed libusb0 being built against the wrong version of libraries MacOSX (Intel):\n❕✅ Fixed libusb0 libs ❕✅ Fixed FFMPEG sometimes not initialising for supported ❕✅ Fixed FFMPEG Memory leak causing the game to freeze MacOSX (M1):\n❕✅ Fixed FFMPEG support for arm64 ❕✅ Fixed Opus Support ❕✅ Fixed LibUSB support ❕✅ NATIVE BUILD - NO NEED FOR ROSETTA! ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fixed uninitialised locale crashing the game and preventing startup New community content: Noteskins\n❕✅ New 3D versions of Outfox, Broadhead, and Shadowtip noteskins by R.O.B.-Bot ❕✅ Added new BMS noteskin ❕✅ Added new 3DDX note types to crystal Colours\n✅ Alien Alien by Moneko Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from Moneko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) ✅ Translations updated from Snil4 (Hebrew) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 30th November 2020 \u0026ldquo;Step into tha game!\u0026rdquo; (Yakitate!! Japan - © 2004 Sunrise/TV Tokyo)\nThe Alpha of many changes\u0026hellip; Introducing Both At Once! What is Both At Once? Both at once is a popular feature option used in @taronuke\u0026rsquo;s project Not in the Groove. It allows player one to input to player two, while playing mod files. As many of the mod files ported from NitG require two joined players, and before this alpha, the method to enable autoplay for the alternate player was a bit sketchy on SM5, we have taken the time to add this feature to OutFox."},{"id":21,"href":"/releases/A4.9.1/","title":"OutFox Alpha 4.9.1 Build","parent":"Release History","content":" Release Date: 31st October 2020 \u0026ldquo;Spooky Scary Bugs\u0026rdquo; Turn smoothlines off to get a better play experience if your lines are being drawn thickly! TEXTURE FONT GENERATOR V0.32 ❕✅🐲📝 Added Armenian #136 (Thanks @AngledLuffa!) ❕✅🐲📝 Added IPA Extended ❕✅🐲📝 Added Spacer Modifiers #126 (Thanks @EngineMachiner!) ❕✅🐲📝 Fixed Japanese overwriting other characters #123 (Thanks @JapanYoshi!) ❕✅🐲 Changed a few methods of Cyrillic to be better supported in the future ALL: ❕✅🐲 Fixed Font Interpretations, removed [main] ❕✅ Added new internal \u0026lsquo;ToUpper()\u0026rsquo; on default themes ✅ Returned branding to use Stepmania once again ❕✅ Regenerated fonts for Soundwaves ❕✅📝 Added Allow InputBackgroundEvents for controllers preference (Thanks digitaldancer on Stamina Nation!) ❕✅ Fixed ImageCache memory bloating ❕✅📝 Added display version on evaluation screen (Thanks Jummy!) ❕✅📝 Fixed recursive scaling of TimingWindows #138 (Thanks pucgenie, neowzeo, maractus) ❕✅ Fixed new methods on Ragesurface/Ragedisplay ❕✅ Fixed FFMPEG crashing ❕✅ Moved xyz alias into fallback so it can be more useful ❕✅📝added tween tweaks (true) from upstream PR https://github.com/stepmania/stepmania/pull/2062 (Thanks @FMS_Cat) ❕✅📝added music wheel code from upstream PR #27 https://github.com/stepmania/stepmania/pull/2002 (Thanks @RhythmLunatic) ❕✅ Fixed musicwheel quirks ❕✅ Fixed AMod issue where having a second player would override Player 1 timing (Thanks @JapanYoshi!) ❕✅ Allow random movies to play when video not available ❕✅ Fixed cursong being used instead of cursteps to get displaybpms ❕✅ Fixed banners playing too fast #129 Windows:\n❕✅ add minimaid back to mainline. ❕✅📝added new serial lights driver upstream PR https://github.com/stepmania/stepmania/pull/2041 (Thanks @skogaby!) ❕✅ Add MIDI input support that works ❕✅ Add new wider MIDI input spectrum ❕✅ Add Rotary MIDI input support ❕✅ Add Crossfader MIDI input support ❕✅ Add Acceleration/Deceleration MIDI support (Disc spinning) ❕✅ Add MIDI Extra Support ❕✅ Add MIDI lua messages ❕✅ Add MIDI analogue lua support Linux:\n❕✅ add minimaid back to mainline. ❕✅ add JACK back to mainline. ❕✅ fix discord building on newer GCC (\u0026gt;8.4) MacOSX:\n❕✅🐲 Nonion Rings. Community Content: Graphics\n✅ New sharper grade graphics by MDR ✅ New Narumi avatars #115 ✅ New noteskins to address #111 #112 Colours\n✅ Dark Mode by infinitephantasm ✅ Chaos by moruzerinho6 ✅ Ice by PCBoyGames ✅ Wave by AppleArcade120 Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 31st October 2020 \u0026ldquo;Spooky Scary Bugs\u0026rdquo; Turn smoothlines off to get a better play experience if your lines are being drawn thickly! TEXTURE FONT GENERATOR V0.32 ❕✅🐲📝 Added Armenian #136 (Thanks @AngledLuffa!) ❕✅🐲📝 Added IPA Extended ❕✅🐲📝 Added Spacer Modifiers #126 (Thanks @EngineMachiner!) ❕✅🐲📝 Fixed Japanese overwriting other characters #123 (Thanks @JapanYoshi!) ❕✅🐲 Changed a few methods of Cyrillic to be better supported in the future ALL: ❕✅🐲 Fixed Font Interpretations, removed [main] ❕✅ Added new internal \u0026lsquo;ToUpper()\u0026rsquo; on default themes ✅ Returned branding to use Stepmania once again ❕✅ Regenerated fonts for Soundwaves ❕✅📝 Added Allow InputBackgroundEvents for controllers preference (Thanks digitaldancer on Stamina Nation!"},{"id":22,"href":"/releases/A4.9.0HF/","title":"OutFox Alpha 4.9.0/HF Build","parent":"Release History","content":" Release Date: 7th October 2020 \u0026ldquo;The new Glyph System pleases Imhotep\u0026rdquo; (The Mummy - © 1999 Universal Pictures)\nTurn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.6 September 30th 2020 \u0026ldquo;The options just do nothing\u0026hellip;\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4.8.6 and 4.9.0 are together in this update.\nWe have sorted out the issues with the misunderstanding of the StepMania project name and this will return to the project for the next alpha, with a re-brand. It was all done amicably, and it had to be acted upon due to it being reported, so no problems there.\nFonts and Language: This month sees a pretty big revamp to the font system used in OutFox. Due to the numerous issues we have had reported to us since our project began, (missing symbols, missing characters, missing language support, missing Korean and Japanese support, etc), We have rewritten the font maps.\nWhat this means for you? - Well, the fonts will be sharper as they are newer now, and you can generate the correct fonts for theming and such for OutFox in the future. We have a new repository for the Texture Font Generator which is a side project from @Scraticus and @Hanubeki to bring more charmaps to the game. These can be regenerated to support 5.0/5.1 and even 3.9/ITG era with a bit of work. If you do generate new fonts, please check out the guide that will be up on the MoonDance site shortly. We also have revamped the fonts that are used by mod files to be sharper and to add backwards support for the new fonts. (Beware of [main] duplication causing squares to be displayed by the game!). There is a new release of the Texture Font Generator, which includes new euro support, and legacy mapping generation for prior versions of StepMania.\nTEXTURE FONT GENERATOR V0.2 / OutFox Alpha 4.9.0 - ❕✅🐲📝 Fixed Missing Korean Basic Characters #109 (Thanks AngledLuffa!) ❕✅🐲 Fixed Missing Symbol Characters from Kanji ❕✅🐲 Fixed Missing Characters from Korean Hangul ❕✅🐲 Fixed Missing Characters from Kanji JIS ❕✅🐲 Fixed Missing Characters from Kanji Hojo ❕✅🐲 Fixed Missing Characters from Kanji GBK for Traditional Chinese ❕✅🐲 Fixed Missing Characters from Cyrillic and Extended Latin ❕✅🐲 Regenerated outline fonts for the theme and mods ❕✅🐲 Added Characters from Legacy maps - (ASCII/CP1252/ISO8859) ❕✅🐲 Fixed Build system on windows 10, but the MFC system needs a bit of hacking - compiled binaries are available to grab We have also have had to add a new set of Lua Commands for this alpha. (See #121) We have been aware of this for some time, but delayed the alpha a touch so they were ready. For backwards compatibility string.upper() and string.lower() have not been touched.\nThe new lua commands in this build are ToUpper() and ToLower().\nTo display upper case text - done on the troublesome polish characters: Text=ToUpper(Screen.String(\u0026quot;Start To Join\u0026quot;)) produces:\nWe even can do a proper UTF friendly lower case as well: Text=ToLower(Screen.String(\u0026quot;Start To Join\u0026quot;)) USING ALT+ENTER TO SWITCH IN AND OUT OF FULLSCREEN: We have added the option to all operating systems to be able to access this function, but be warned: the SDL window does not scale modes which your Monitor does not support in fullscreen. It will draw a border around the window if the mode is not a suitable mode. You can find these modes in the log.txt, as SDL is kind enough to display everything supported there.\nWe have allowed the other OS\u0026rsquo;s this function for familiarity and the fact we didn\u0026rsquo;t think it\u0026rsquo;d work on mac/linux, but it did.\nALL:\n❕✅ Set locale for the game to use en_US.UTF-8 for now - This will be extended soon ❕✅ Fix Missing font paths in the default theme ❕✅ Remove Lua macro which did nothing to the font display ❕✅📝 Fixed Bug with BeginnerHelper hiding/unhiding backgrounds causing unwanted behaviour. #104 \u0026amp; #105 (Thanks @SilentTempest83 !) ❕✅📝 Fixed crash with resizing window on some older windows versions (7/8) #102 (Thanks @Emilovesdoubles) ❕✅📝 Fixed Lirocode in Hold / Roll anchors #106 (Thanks @JapanYoshi!) ❕✅📝 Fixed Lirocode in Note colours and 24th\u0026rsquo;s being wrong. #111 \u0026amp; #112 (Thanks @AngledLuffa!) ❕✅📝 Fixed missing Narumi Mascot avatar images not being available as usable avatars in game #115 (Thanks @Joehuu!) ❕✅📝 Added Precision Dance Pad config entry to our GameControllerDB #117 (Thanks @AngledLuffa!) ❕✅ Fixed Timing windows for ITG/ITG Advanced and ECFA ❕✅ Fixed Alt+Enter leaving weird screen blackness on 75% of the space ❕✅ Fixed lua timing tables and optimised the loading method ❕✅📝 Fixed bug with toasties loading on the Machine Sync causing an AV (Thanks @JapanYoshi!) ❕✅📝 Fixed bug with left over commands being available to the Machine Sync system causing edge crashes (Thanks @JapanYoshi!) ❕✅📝 Fixed issue with missing UTF string conversion on the loading window (Thanks @Hanubeki / @JapanYoshi!) ❕✅📝 Added correct font (Code2000) support in loading window (Thanks @Hanubeki / @JapanYoshi!) ❕✅ Added preview to progress bar on screenselectmusic ❕✅ Fixed audio preview on song select #65 (Thanks @SHRMP0!) ❕✅ Fixed font presentation for soundwaves and default/fallback ❕✅ Fixed missing/incorrect font redirection files ❕✅ Fixed missing constructors on ActorFrameTexture ❕✅🐲 Beginning of making SM Locale Aware ❕✅🐲 Fix overflow on font index now we are using proper UTF-8 ❕✅🐲 Fix archaic practice on wide strings in font manager ❕✅🐲 Fix arithmetic overflow in rageutil preventing correct bytecode allocation ❕✅ Fix table indexing for high score entries overwriting previous results being shown ❕✅ Rename the 5.3 default noteskin to reinstate the 5.0 default for backwards compatibility support ❕✅ Make minimenu rows place on native position Windows:\n❕✅🐲📝 Removed potential crash on invalid DPI scaling detection - part of #88 (Thanks AngledLuffa!) ❕✅🐲 Fixed Alt+Enter not being able to leave full-screen causing the need for a restart ❕✅ Fixed uninstaller missing shortcuts due to windows 1903 update Linux:\n❕✅🐲 Fixed Alt+Enter not being able to leave full-screen MacOSX:\n❕✅🐲 NEW FEATURE: Added Alt-Enter full-screen switch ❕✅🐲 Fixed missing locale selection for \u0026ldquo;LC_ALL\u0026rdquo; causing a crash ARM/ARM64: (Raspberry Pi etc)\n❕✅🐲 NEW FEATURE: Added Alt-Enter full-screen switch ❕✅🐲 Fixed EGL initialisation on RPi 3B/4 trying to call the wrong driver ❕✅🐲 Fixed missing locale selection for \u0026ldquo;LC_ALL\u0026rdquo; causing a crash Community Content: Colours\n✅ Dark Mode by infinitephantasm ✅ Chaos by moruzerinho6 ✅ Ice by PCBoyGames ✅ Wave by AppleArcade120 Translations\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 7th October 2020 \u0026ldquo;The new Glyph System pleases Imhotep\u0026rdquo; (The Mummy - © 1999 Universal Pictures)\nTurn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.6 September 30th 2020 \u0026ldquo;The options just do nothing\u0026hellip;\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4."},{"id":23,"href":"/releases/A4.8.5/","title":"OutFox Alpha 4.8.5 Build","parent":"Release History","content":" Release Date: 19th September 2020 \u0026ldquo;A Change is Afoot!\u0026rdquo; Please note if your Download did not include HF in the title, download the en.ini and put it in your installation folder at the following path windows: (X:\\Outfoxfolder\\Appearance\\Themes_fallback\\Languages) macosx: (Outfoxfolder\\Appearance\\Themes_fallback\\Languages)\nOr just download the HF version now we have repackaged. Turn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.3 September 08th 2020 \u0026ldquo;Throw us a bone (index)\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams. Apologies for the Delay on this release. The changelog for 4.8.3 and 4.8.5 are together in this monthly update.\nThere has also been a need to temporarily remove the \u0026lsquo;StepMania\u0026rsquo; name from the project due to a complaint received and we have been requested to rebrand the project to Project OutFox until we sort out the paperwork.\nALL:\n❕✅🐲📝 Fixed Bug with Loading Window seemingly \u0026lsquo;freezing\u0026rsquo; when indexing files #87 (Thanks Moru/AngledLuffa!)\n❕✅🐲 Fixed Crash on changing theme\n❕✅🐲 Fixed SoundManager crash on para/beat mode swap\n❕✅🐲 Fixed Crash on changing game mode (Thanks Omicron!)\n❕✅🐲📝 Fixed Edge Case Lua Overflow Crash (Thanks JapanYoshi!)\n❕✅🐲 Fixed Memory leak in Loading Window, when user has 15000 or more simfiles (Thanks Jubo!)\n❕✅ Added Column specific modifiers handling nil to activate on all columns\n❕✅ Fixed the Bone Index being de-referenced and causing an Access Violation. #94 (Thanks EngineMachiner!)\n❕✅ Fixed Random Movies failing to obtain a proper seed\n❕✅ Fixed undefined behaviour causing some delays on initial playback\n❕✅ Fixed math overflow in ffmpeg renderer\n❕✅ Fixed memory leak in ffmpeg playback\n❕✅ Fixed lockup/freeze when 1 movie is selected for random movies\n❕✅🐲 Fixed issues with math overflow in Actor Framework\n❕✅ Added a better implementation of HoldTriggerNotes\n❕✅📝 Fixed Crash when taking screenshot in fullscreen mode. #99 (Thanks JapanYoshi!)\n❕✅📝 Fixed Crash with \u0026lsquo;Too many open files\u0026rsquo; #92 (Thanks Level99OCR/Maractus/Jubo!)\n❕✅ Remove the last references to older dependencies in CMake to prevent bad compilation problems\n❕✅ Turn off the Haptic Vibrations on supported controllers on startup\n❕✅ Fix the random engine to ensure we actually get a proper random seed\n❕✅ Optimise several variable systems for C++ 17\n❕✅ Fixed RageUtil causing some micro-stutters and widen code-page support\n❕✅ Fixed Player vanish point not being set correctly\n❕✅ Fixed RageDisplay casts rounding incorrectly\n❕✅ Fixed Luna Definitions for the singletons\n❕✅ Fixed the screen message system bug which is 16 years old\n❕✅ Fixed missing SDL Video include and reference use\n❕✅ Fixed AMod Exploit causing an overflow in Beat Detection (Thanks JapanYoshi!)\n❕✅📝Fixed Negative Approach rates through modstrings crashing the game #61 (Thanks PCBoyGames!)\n❕✅📝Fixed missing difficulty types from other unsupported game (MungyoDance) being missed in OutFox #76 (Thanks PCBoyGames!)\n❕✅📝Fixed skipping in MP3 playback causing crashing in Windows and Linux #75 (Thanks LightningSkunk!)\n❕✅ Add Judgement scaling into SmartTiming\n❕✅ Fixed incorrect function type in RageModelGeometry\n❕✅ Fixed ftruncf and Quantize not setting the right return type\n❕✅ Fixed issue where some noteskins were breaking due to a fallback error (Thanks Moru!)\n❕✅ Fixed explosion on Lambda noteskin (Thanks Moru!)\n❕✅ Fixed incorrect bone initialisation causing crashes on ARM and Linux\n❕✅ Fixed incorrect bone declaration type causing crashes on ARM and Linux\n❕✅ Fixed FFMPEG buffers not clearing from memory correctly\n❕✅ Fixed bug in the 5.0 beginnerhelper\n❕✅ Fixed bug with AMod not being initialised correctly in some cases (This caused a crash sometimes in Simply Love)\n❕✅ Adjusted a few duplicated menu options\n❕✅ Fix Edge case bug with beginnerhelper causing black screens\n❕✅ Fixed Metrics so grade weights are correctly measured against dance points\n❕✅📝 NEW FEATURE: Set Thickness of ArrowPath (Experimental Settings)\n❕✅📝 NEW FEATURE: Enable GLBlend/Points for ArrowPath (Experimental Settings)\n❕✅📝 NEW FEATURE: OptionRow change of choice Externally #96\n❕✅📝 NEW FEATURE: ContinueHold for para mode, allows for a hold to never fail if it is picked up again by the player\n❕✅📝 NEW FEATURE: ShowMouseCursor - ALL OPERATING SYSTEMS SUPPORTED! Hides the mouse cursor in play. Works in fullscreen, borderless and windowed modes (Experimental Settings)\nWindows:\n❕✅ NEW FEATURE: Better Memory detection ❕✅ Fixed Win32 calls causing odd lag on some sound cards ❕✅ Fixed NSIS Installer missing newer items Linux:\n❕✅ NEW FEATURE: Add EGL Preference for Linux Users. Disabled by default to prevent the missing \u0026rsquo;libopengl.so.2\u0026rsquo; errors. Set if you have a distro that supports it, as it is faster. MacOSX:\n❕✅ Fixed Input issue in Xinput #79 (Thanks omgitsraven!) ARM/ARM64: (Raspberry Pi etc)\n❕✅ NEW FEATURE: Add EGL Preference for Linux Users. Disabled by default to prevent the missing \u0026rsquo;libopengl.so.2\u0026rsquo; errors. Set it to true for ARM! Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) ✅ Translations updated from Ksempac (French) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 19th September 2020 \u0026ldquo;A Change is Afoot!\u0026rdquo; Please note if your Download did not include HF in the title, download the en.ini and put it in your installation folder at the following path windows: (X:\\Outfoxfolder\\Appearance\\Themes_fallback\\Languages) macosx: (Outfoxfolder\\Appearance\\Themes_fallback\\Languages)\nOr just download the HF version now we have repackaged. Turn smoothlines off to get a better play experience if your lines are being drawn thickly! Alpha 4.8.3 September 08th 2020 \u0026ldquo;Throw us a bone (index)\u0026rdquo; This build did not pass Quality Assurance, and was not released outside of the internal Alpha Testing teams."},{"id":24,"href":"/releases/A4.8.2/","title":"OutFox Alpha 4.8.2 Build","parent":"Release History","content":" Release Date: 19th August 2020 \u0026ldquo;Release the (Git)Kraken!\u0026rdquo; Hotfix MK2 Build! These bugs were fixed about 3 weeks ago, however due to a bad branch merge, GitKraken did not recognise the commits were actually missing, and they were added into the main code branch which got to release. The only way to even recognise this bug is if you had \u0026gt;100,000 songs and over 18,000 MP3 files.\n❕✅🐲 Fixed Bug with locking up on loading songs (Thanks Kaede!) ❕✅🐲 Fixed Crash with too many handles hitting ulimits on linux (Thanks Kaede!) ❕✅🐲 Fixed Bug with MP3 driver creating two handles per file (Thanks Kaede!) ❕✅🐲 Fixed Crash on Windows due to I/O error (Thanks Kaede!) ❕✅🐲 Fixed Crash with MP3 driver not seeking or reporting position (Thanks Keade!) ❕✅🐲 Fixed Bug with missing error checking on Mp3 Driver (Thanks Jose_Varela and Kaede!) ❕✅🐲 Fixed Crash with NTFS journal errors on NTFS-3G Driver hitting ulimits on Linux (Thanks Kaede!) ❕✅🐲 Fixed Edge Crash with invalid characters in RageUtil (Thanks Jubo!) ❕✅🐲 Fixed Overflow in log buffer due to missing Unicode references ❕✅🐲 Fixed Odd behaviour with sound layering. Issue #62 (Thanks Mr.ThatKid) ❕✅🐲 Fixed Missing/Corrupted fonts on loading Window (Thanks Moneko, Hanubeki) ❕✅🐲📝 Fixed Bug with missing dylib on MacOSX 10.16.5 Issue #67 (Thanks PianoGal/Sebychu/garfieldnate) ❕✅🐲📝 Fixed Crash with loading window on MacOSX 10.16.5 Issue #67 (Thanks PianoGal/Sebychu/garfieldnate) ❕✅🐲 Removed unused libraries due to new MacOSX 10.16.5 update ❕✅🐲📝 Fixed missing glyphs on some simfiles being displayed (Thanks PCBoyGames/Jubo) ❕✅🐲📝 Fixed missing controller mapping Issue #70 (Thanks Kaede!) ❕✅🐲📝 Fixed Crash in the custom controller screen [Issue #72] (https://github.com/TeamRizu/OutFox/issues/72) (Thanks ScottBrenner/Kaede) ❕✅🐲📝 Fixed L-Tek pads not presenting their start and select buttons ❕✅🐲 Fixed Issue in Input MacOSX failing on XInput Mode Issue #45 (Thanks cmhoneycutt343! ) ❕✅🐲 Fixed bug with old Xbox 360 Guitar Controllers being unable to be mapped in HIDAPI Mode (Thanks Confuzled) ❕✅🐲 Fixed deprecated WIN32 Macro preventing Linux/MacOS compiling 4.8.1 Build! ❕✅🐲 Fixed Bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed Bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 19th August 2020 \u0026ldquo;Release the (Git)Kraken!\u0026rdquo; Hotfix MK2 Build! These bugs were fixed about 3 weeks ago, however due to a bad branch merge, GitKraken did not recognise the commits were actually missing, and they were added into the main code branch which got to release. The only way to even recognise this bug is if you had \u0026gt;100,000 songs and over 18,000 MP3 files.\n❕✅🐲 Fixed Bug with locking up on loading songs (Thanks Kaede!"},{"id":25,"href":"/releases/A4.8.1/","title":"OutFox Alpha 4.8.1 Build","parent":"Release History","content":" Release Date: 14th August 2020 \u0026ldquo;RageFile Against the Loading Window\u0026rdquo; Hotfix Build! ❕✅🐲 Fixed bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 14th August 2020 \u0026ldquo;RageFile Against the Loading Window\u0026rdquo; Hotfix Build! ❕✅🐲 Fixed bug with Locking up on loading songs (RageFile Error) (Thanks Maractus) ❕✅🐲 Fixed Crash with too many handles being created for users with \u0026gt;6700 songs ❕✅🐲 Fixed bug with Update loop lagging on loading window New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value."},{"id":26,"href":"/releases/A4.8.0/","title":"OutFox Alpha 4.8.0 Build","parent":"Release History","content":" Release Date: 14th August 2020 \u0026ldquo;Chocolate Keyboards and Frikandel\u0026rdquo; New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value. ❕✅🐲 Added new UseOldJoystickMapping preference to choose your input system ❕✅🐲 Fixed some older controllers causing a stuck button ❕✅🐲 Fixed controller index being sketchy on USB Host/Hub reset (USB 1.1/1.0) ❕✅🐲 Fixed button assignment reaching a cap and causing an edge crash ❕✅🐲 Fixed availability of Rotary and L - R button assignments on \u0026rsquo;legacy\u0026rsquo; input ❕✅🐲 Fixed analogue inputs on some controllers staying at max range ❕✅🐲 Fixed some older controllers (Pre-2009) from polling at 250ms ❕✅🐲 Fixed some mechanical keyboards polling at 10hz/100hz in Windows 8.1/10 ❕✅ Fix some analogue inputs being seen as \u0026lsquo;depressed\u0026rsquo; when they were not (Thanks JapanYoshi) ❕✅ Fix left analogue sticks not being detected on some controllers (Thanks JapanYoshi) ❕✅ Fix some D-Pad presses (on XInput) not being detected on some controllers (Thanks JapanYoshi) This edition features another rewrite of the Input System for OutFox. Due to windows updates, (and Ubuntu updates) that have directly affected several of our users, we have taken the time to bring forward our plans to fix this sooner rather that later.\nWhat this means to you, our players. You now have a choice of using the XInput which will be enabled by default, (and has been the norm since alpha 4.5) which gives the familiar buttons on the XBox controller. We have added a new controller option row in the \u0026lsquo;Experimental Settings\u0026rsquo; which will allow easy change, you will need to reboot your game to reinitialise the input system, but we will make this a non-game reset option in a future update. There is also a preference you can edit which is called UseOldJoystickMapping setting this to 0 sets the XInput mode, and setting this to 1 enables the legacy (HIDAPI) mode for your controller or pad.\nYou will likely need to check your offset for this update, if you are swapping modes, as some controllers behave slightly different in legacy/XInput. This is true especially of custom Arduino pads, so take time to remember to test this.\nIf you use older controllers, please ensure they are plugged in BEFORE you start the game. Because we do not depend on DirectX anymore, we need to initialise the system on game start. We are looking into this, but once the system is live, controllers can be added and removed as normal. We really do not want to go back to DInput7 or DInput8 as Microsoft is really punishing use of these system and will remove them outright eventually.\nKeyboard players can use either method, this update fixed a couple of awry driver update issues on steelseries/Corsair keyboards to fix their polling issue, so you can play as normal.\nIf you have an SMX 4k/5k/pump pad, you can use either mode, but some players have mentioned that legacy \u0026lsquo;feels tighter\u0026rsquo; than XInput for this pad. Give it a try and let us know your thoughts.\nThis new mode allows for more than 4 controllers (which XInput is limited to by design), and does not require a mapping for the gamecontrollerdb.txt file which XInput pads require. This new mode allows the older Joystick path to run, which is based on HIDAPI, thus giving us a greater level of controller support than ever before. If your controller does not show up in OutFox, or has become troublesome since the operating system updates, this is the mode for you. If you have any issues with the new system (bear in mind, you WILL need to go to Key mapping and map all the buttons for your controller to their actions. YOU DO NOT NEED TO USE CONTROLLER MAPPING WITH THIS MODE!\nThe legacy mode returns to a slightly more familiar system from 5.1/5.0 so those of you with particularly troublesome controllers will no longer have issues. The ParaParaParadise Controller prefers to be on legacy. So if you use OutFox for Para/ParaStar/EKS-D remember to set this in your game, and restart. The PPP Controller needs to be plugged in BEFORE you start the game, due to how windows operates now. This is true for Ubuntu also. Mac OSX now also properly supports this controller.\nOn the subject of ParaPara Paradise, this month has seen a lot of work and collaboration to finally fix some of the glaring issues for this mode. We will continue to do this for all our modes, so look out for updates!\nParaPara Paradise mode has been given a swathe of fixes: ❕✅ Fixed Noteskin loading on PPP mode ❕✅ Fixed missing theme elements on PPP mode ❕✅ Added new timing windows for PPP mode, which match the PS2/2nd Mix games ❕✅ Added new judgement names for PPP mode to match PS2/2nd Mix ❕✅ Added new Tick hit support - This allows for a hit if the sensor is triggered, as per the original games ❕✅ Added new Hold Tick Hit support - Fixes a long overdue bug in holds on PPP mode. ❕✅ Added new column style \u0026lsquo;active\u0026rsquo; when a sensor is triggered, to closer match the original games ❕✅ Added 2 player support for PPP mode ❕✅ Fixed PPP controller buttons not being recognised in game ❕✅ Added new default noteskin for PPP mode ❕✅ Added new Jara noteskin for PPP mode ❕✅ Fixed evaluation screen elements causing an edge case crash ❕✅ Fixed how the game records play details to be more accurate to the original play experience. ❕✅ Fixed Rate mode being set to a weird value ❕✅ Fixed Speed Mod. For accurate arcade experience, use A or C mod, between 100-300, we feel the sweet spot is 100-150 ❕✅ Fixed missing gameplay elements We hope you all enjoy the new revamped Para Mode, and remember it\u0026rsquo;s also playable on MacOS fully for the first time! If you have any feedback or questions please do not hesitate to contact us on the discord!\nNew Loading Window ❕✅🐲 New loading song error checking - The log will tell you about bad songs ❕✅🐲 New loading window system ❕✅🐲 Support UTF-8 on new loading window ❕✅🐲 New themeable loading window ❕✅🐲 Custom Font loading support ❕✅🐲 New font rendering This version sees the launch of a new loading window, which has plagued the game since 2007. We plan to use this new window for more features in the future, and it will become fully themeable for those of you that wish to modify it. It is cross platform so replaces the legacy Linux Loader, and the horribly bugged MacOSX loader. The other good thing about this mode is when you load songs, it will check your audio files for availability. What this means, if the file is corrupted or damaged, or just unable to be loaded by the game, you will get a notice in your log file. For ease of viewing, you can scan the games songs with the new version, then check out info.txt in your /logs folder. if you have any damaged songs or corrupt mp3s etc, they will be logged here. An example from my own simfile collection:\nWARNING: Sound file /AdditionalSongs/parapara/Big O/Big O.ogg couldn't be opened: . Please check it is not corrupted and redownload the file.\nWe hope you find this a welcome addition, as it will prevent some sudden crashing or silence being played in the song wheel. This feature will be worked on in the future, so if you have any ideas please throw them our way! Sometimes the window will look like it\u0026rsquo;s \u0026rsquo;locked up\u0026rsquo; on Windows - this is just the SSC cache being generated! Give it a moment and it\u0026rsquo;ll sort itself out, it only does it once.\nWe have plans to allow the online patcher and for configurations to be changed/set up for the future, so I\u0026rsquo;m hoping it is stable for you all and works as designed.\nNew MP3 Driver: ❕✅ Removed libMAD and it\u0026rsquo;s dependencies ❕✅ Added new dr_mp3 MP3 Driver (clean for closed source phase) ❕✅ Added new libmpeg123 MP3 Driver (not in repo but available for open source phase) ❕✅🐲 Fixed internal Threads overflow ❕✅🐲 Fixed internal buffer sizes ❕✅🐲 Set modern system settings to allow transition This has been in the background for some time. LibMAD has been a bit of a thorn in our side for some years, and as it is also GPL, it does not really fit with our closed source phase, so we have spent the past 3 months working on a resolution. We have two drivers, Libmpeg123, and dr_mp3. Libmpeg123 will be added when we are open source, and currently is on a closed branch not for distribution. dr_mp3 is the new library we have chosen to fully support as it finally adds VBR support, it\u0026rsquo;s lightweight, and also finally stops one of the broken_pipe problems on the Raspberry Pi 2/3 boards. It also has meant we have taken the time to identify more problems with the sound delivery in the game, so we will be fixing these in the future. For now we have tweaked the pipe to be consistent across drivers, so this also has given us a better experience across the different modes. We also will be looking at a new asynchronous loading mode for Keysounds, primarily for beat/popn so the load times will be reduced and this will deliver a better player experience.\nIf you experience any issues with the new sound driver, do let us know, but it has had some serious testing so we\u0026rsquo;re hoping it is stable and sane for you guys!\nThe other fixes for this month include:\nALL:\n❕✅🐲 Fix texture buffer inconsistencies in RageTextureManager ❕✅🐲 Fixed resolution of some broken actorframe calls ❕✅ Fixed several pointer dereferences in actor handling ❕✅ Fixed a few missing casts in the GL pipe ❕✅ Fixed missing oem102 key for foreign keyboards ❕✅ Fixed bad issues with variables in RageSurface ❕✅ Revert C++ opts until the new compile method is finished ❕✅ Fixed absf math issues when calculating locations ❕✅ Fix compiler unoptimised functions causing slowdown on tweens ❕✅ Prevent overlapped centering when - 1p occurs (Thanks Neko²) ❕✅ Fix sizing on - 6/8 panel modes ❕✅ Fix size of notefield via AR over ScreenWidth ❕✅ Allow HoldJudgements to receive Player variables ❕✅ Change round method on stats display ❕✅ Support for toggling audio preview modes for ScreenSelectMusic ❕✅🐲 Changed the use of ragefile within sound engine ❕✅🐲 Removed GL 4.6 and 3.3 due to windows 10 update bugs killing the intel driver ❕✅📝 Fixed Esc not leaving test input screen Issue #41 (Thanks Moru!) ❕✅📝 Allowed early dismissal of input keybind warning Issue 40 ❕✅📝 Fixed non-random Seed generation for game/stage Issue 38 (Thanks JustinLove) ❕✅📝 Fixed Game Crash in Extended/Course Mode Issue 29 (Thanks Jubo) ❕✅📝 Fixed FPS Slowdown on some GPUs Issue 25 (Thanks LightningSkunk) ❕✅📝 Fixed Notefield Overlaps on Center 1 player Issue 24 (Thanks SilentTempest83/Neko²) ❕✅📝 Fixed Random noteskins failing to activate Issue 21 (Thanks bibusdax) ❕✅📝 Make ScreenTextEntry handle caps lock once more Issue #13(Thanks Moru!) Windows:\n❕✅ Fixed dll Access Violation issues with older videos ❕✅ Fixed edge case overflow on ttf loading ❕✅ Fixed missing return path on input ❕✅🐲 Removed Loading Window win32 and its baggage ❕✅🐲 Removed deprecated WINAPI callbacks Linux:\n❕✅ Fixed missing EGL calls ❕✅🐲 Re-add MacOSX 10.16 optimised code as it offers better stability ❕✅🐲 Begun Wayland compatibility code ❕✅🐲 Removed Loading Window linux and its baggage ❕✅🐲 Removed deprecated GTK dependencies ❕✅🐲 Removed deprecated X11/XRandR dependencies ❕✅📝 Added upstream fix to use GLVND SM Issue 1860 (Thanks mwkroening) MacOSX:\n❕✅ Fix discord linking for status updates ❕✅🐲 Removed Loading Window and its baggage ❕✅🐲 Removed Darwin era dependencies ❕✅ Fix CMake folder inclusion ARM/ARM64: (Raspberry Pi etc)\n❕✅ Fix char overflow ❕✅ Fix legacy 32bit FFMPEG builds ❕✅ Adjust Sound buffer sizes to ease CPU load Community Content:\n✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ✅ Translations updated from Daniel Rotwind (German) (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 14th August 2020 \u0026ldquo;Chocolate Keyboards and Frikandel\u0026rdquo; New Input Update (Version 4)! ❕✅🐲 New Selectable Input system via Preference.ini and Experimental Settings in the theme ❕✅🐲 Added new \u0026ldquo;legacy\u0026rdquo;(HIDAPI) Input to fix regressions in Windows and Ubuntu updates ❕✅🐲 Fixed bug with Modern XInput method causing slowdowns ❕✅🐲 Fixed bug with ParaPara Controller not being detected ❕✅🐲 Fixed bug with Bemani Controllers not being detected ❕✅🐲 Fixed bug with Hori PS2 Controllers not being detected ❕✅🐲 Fixed bug with PS2 Adapted Controllers not being detected ❕✅🐲 Added new Init() functions for controllers ❕✅🐲 Added new ReAssign functions for controllers ❕✅🐲 Fixed error in update loop that added controllers twice to the system ❕✅🐲 Fixed error with mapping buttons back to front on legacy ❕✅🐲 Fixed edge case crashes when adding names to controllers plugged in ❕✅🐲 Fixed error in option row not setting the preference value."},{"id":27,"href":"/releases/A4.6.0/","title":"OutFox Alpha 4.6.0 Build","parent":"Release History","content":" Release Date: 11th July 2020 \u0026ldquo;Ogre\u0026rsquo;s Have Layers\u0026rdquo; Do not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll Platforms ❕✅ Add Narumi Mascot by Leojiaz!! ❕✅ Fix model index overflow ❕✅ Use 4-byte width for modeltypes ❕✅ Fix FFMPEG 4.3 upstream bug ❕✅🐲 Fix incorrect lua commands in notedisplay ❕✅ Fix invert for modes with odd numbered column count ❕✅ Fix and modernise all compile settings in ffmpeg ❕✅ Switch to shared dynamic linking of libraries ❕✅ Remove hardcoded file types in RandomMovies ❕✅ Fix Lua errors in generating credits OptionRow ❕✅ Fixed pump noteskin rotation to be consistent with other modes Windows ❕✅ Fixed dll crashes on course length ❕✅ Fixed video crashes on certain MP4 files Linux ❕✅ Fixed SWScale crash on courses ❕✅ Fixed AVI/MP4 crash on courses MacOS ❕✅ Fix discord linking for status updates ❕✅ New lib packaging to be compliant with MacOSX ❕✅ Fix dynamic linking causing crashes on avi videos ARM/ARM64: (Raspberry Pi etc) ❕✅ Fix crash on start due misconfigured library defaults ❕✅ Fix SWScale crash preventing boot ❕✅ Fix slowdown due to back texture code ❕✅ Tweaked method for graphics renderer choice Community Content ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) Arm Notices NOTE 1: If you are on newer AARCH64 based distributions of linux, (Manjaro/Arch) you will need to do: $ sudo pacman -Sy glu mesa-git You will need to follow the tutorial here to get better performance on your ARM device: https://forum.armbian.com/topic/8352-tutorial-opengl-apps-on-opengl-es-gl4es\nNOTE 2: If you are on a raspberry Pi 3B/3B+ or 4 and want 64bit, you have native GL2.1 desktop drivers on the following image direct from the Raspberry Pi foundation: http://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/\nNOTE 3: If the game boots into the GLAD renderer, exit on the menu and set the game to use opengl in Preferences.ini. It will be within your ~home/.stepmania 5.3/save folder.\nNOTE 4: NO SOUND! As per some of the issues with the inbuilt systems on the RPi, if you have many entries of broken pipe in your log files and ALSA errors, this is often worked around with a usb sound card or similar. I have not seen anything on Manjaro which matches this so far it appears to be a Debian issue on the PI.\nNOTE 5: Don\u0026rsquo;t expect crazy performance/perfect playback! We are still learning to tweak the engine for better ARM based performance, so please be patient!\n(The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 11th July 2020 \u0026ldquo;Ogre\u0026rsquo;s Have Layers\u0026rdquo; Do not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll Platforms ❕✅ Add Narumi Mascot by Leojiaz!! ❕✅ Fix model index overflow ❕✅ Use 4-byte width for modeltypes ❕✅ Fix FFMPEG 4.3 upstream bug ❕✅🐲 Fix incorrect lua commands in notedisplay ❕✅ Fix invert for modes with odd numbered column count ❕✅ Fix and modernise all compile settings in ffmpeg ❕✅ Switch to shared dynamic linking of libraries ❕✅ Remove hardcoded file types in RandomMovies ❕✅ Fix Lua errors in generating credits OptionRow ❕✅ Fixed pump noteskin rotation to be consistent with other modes Windows ❕✅ Fixed dll crashes on course length ❕✅ Fixed video crashes on certain MP4 files Linux ❕✅ Fixed SWScale crash on courses ❕✅ Fixed AVI/MP4 crash on courses MacOS ❕✅ Fix discord linking for status updates ❕✅ New lib packaging to be compliant with MacOSX ❕✅ Fix dynamic linking causing crashes on avi videos ARM/ARM64: (Raspberry Pi etc) ❕✅ Fix crash on start due misconfigured library defaults ❕✅ Fix SWScale crash preventing boot ❕✅ Fix slowdown due to back texture code ❕✅ Tweaked method for graphics renderer choice Community Content ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) Arm Notices NOTE 1: If you are on newer AARCH64 based distributions of linux, (Manjaro/Arch) you will need to do: $ sudo pacman -Sy glu mesa-git You will need to follow the tutorial here to get better performance on your ARM device: https://forum."},{"id":28,"href":"/releases/A4.6.0RC3/","title":"OutFox Alpha 4.6.0 RC3 Build","parent":"Release History","content":" Release Date: 1st July 2020 Do not enable 8K texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms ❕✅ Bring over some mod specific fonts from oITG ❕✅ Editor Fixes (Thanks VILEWORX!) ❕✅ Modernise FTOC to not use double math ❕✅ Fix math offset in RageSquare ❕✅ Theme optimisations ❕✅ Fix crash when joysticks are unplugged ❕✅ Remove FTOC from the game, (Thanks shakesoda!) ❕✅ Remove Symmetric Quadstrip calls ❕✅ Fix dereferencing in several texture calls ❕✅ Fix time based overflow ❕✅ Fix not logic in RageTextureManager ❕✅ Remove GL quad calls from pipeline in favour of triangles ❕✅ Update legacy and GLAD pipeline with new triangle code ❕✅ ArrowEffects optimisations to fix stutter showdown ❕✅ Cleaned up cmake and added ARCH check file for new systems ❕✅🐲 Add some legacy GL pipeline optimisations ❕✅🐲 Fix polygon mode for the legacy Driver ❕✅🐲 Fix blendmode crash on modfiles ❕✅ Upgrade FFMPEG to 4.3 Windows ❕✅ Fixed GL context creation Linux ❕✅ Remove visual acceleration to keep compatibility with Xserver macOS ❕✅ Don\u0026rsquo;t use /Desktop as a mount point ❕✅ Update functions to read directories ❕✅ Fix closing of sound files ❕✅🐲 Kill 10.16 programming choices due to MacOSX 11 ❕✅🐲 Support macOS 11.0 \u0026ldquo;Big Sur\u0026rdquo; ❕✅ Deprecated support for Application Support folder ARM/ARM64 (Raspberry Pi, etc) ❕✅ Add support for Rockchip/Pine64 3399, 3219 chips (arm64) ❕✅ Add support for Raspberry Pi 4,3B+ (thanks shakesoda, Jousway) ❕✅ Add support for armhf Raspberry Pi 2/3/3b+ ❕✅ Fix Bone and Models causing a crash on the Pi ❕✅ Fix geometry crashing on some distros ❕✅🐲 Add GL4GLES/Desktop GL friendly modifications to the legacy driver Community content: ✅ Guitar3 and Guitar5 graphics - Lirodon ✅ Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) ✅ Translations updated from MoNeko (Polish) ✅ Translations updated from Hanubeki (Japanese) ✅ Translations updated from Jose_Varela (Spanish) ARM notes If you are on newer AARCH64 based Linux distributions such as Arch/Manjaro, you will need to install glu and mesa-git (sudo pacman -Sy glu mesa-git) If the game boots into the GLAD renderer, exit the game and edit VideoRenderers in ~/.stepmania 5.3/Save/Preferences.ini to list opengl first. Follow this tutorial to get better performance on your ARM device: If you are on a Raspberry Pi 3B/3B+ or 4 and want 64-bit, this image of Raspberry Pi OS has native OpenGL 2.1 drivers. As per some of the issues with the in-built systems on the RPi, if you have many entries of broken pipe in your log files and ALSA errors, this is often worked around with a USB sound card or similar. We have not seen anything on Manjaro which matches this, so far it appears to be a Debian issue. Don\u0026rsquo;t expect crazy performance/perfect playback! We are still learning to tweak the engine for better performance on ARM, so please be patient! ","description":"Release Date: 1st July 2020 Do not enable 8K texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms ❕✅ Bring over some mod specific fonts from oITG ❕✅ Editor Fixes (Thanks VILEWORX!) ❕✅ Modernise FTOC to not use double math ❕✅ Fix math offset in RageSquare ❕✅ Theme optimisations ❕✅ Fix crash when joysticks are unplugged ❕✅ Remove FTOC from the game, (Thanks shakesoda!"},{"id":29,"href":"/releases/A4.6.0RC2/","title":"OutFox Alpha 4.6.0 RC2 Build","parent":"Release History","content":" Release Date: 23th June 2020 \u0026ldquo;Jous, Jous, Jous \u0026amp; Jous Big Sur\u0026hellip;..prise Edition\u0026rdquo; Next main update will be August 2020 as we have to get up to date with our documentation and new features.\nDo not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms Fixed FFMpeg return nullptr when not able to load a video (thanks SheepyChris) Fixed notefield not displaying on howtoplay and demonstration (thanks TacvicomGN) Make p2 use keypad - instead of normal Add GDDM part names Add secondary button check for controllers Add strum bass modes for guitar Give GameManager some Fixes Fix spacing and margins in ScreenGameplay Optimise notefield positional options Add PnM Portable 7 Button Mode Lua fixes for multistyle support macOS Build with XCode 11 to keep backwards compatibility with 10.12-14 (The \u0026lsquo;source\u0026rsquo; code below is the reporting issues template, it is not the source for OutFox)\n","description":"Release Date: 23th June 2020 \u0026ldquo;Jous, Jous, Jous \u0026amp; Jous Big Sur\u0026hellip;..prise Edition\u0026rdquo; Next main update will be August 2020 as we have to get up to date with our documentation and new features.\nDo not enable 8k texture support at this time, as it will give you GL_OUT_OF_MEMORY problems. Please wait until it\u0026rsquo;s mentioned in a later update.\nAll platforms Fixed FFMpeg return nullptr when not able to load a video (thanks SheepyChris) Fixed notefield not displaying on howtoplay and demonstration (thanks TacvicomGN) Make p2 use keypad - instead of normal Add GDDM part names Add secondary button check for controllers Add strum bass modes for guitar Give GameManager some Fixes Fix spacing and margins in ScreenGameplay Optimise notefield positional options Add PnM Portable 7 Button Mode Lua fixes for multistyle support macOS Build with XCode 11 to keep backwards compatibility with 10."},{"id":30,"href":"/releases/A4.6.0RC1/","title":"OutFox Alpha 4.6.0 RC1 Build","parent":"Release History","content":" Release Date: 19th June 2020 All platforms Fix caching edge crash Fix a message not being called when a player unjoins Fixed an edge crash with folks with 2+ monitors Fixed a problem with a refcount causing a crash to desktop on SongSelect (Thanks Moru!) Fixed gifs being wrongly assigned in Song.cpp (Thanks Moneko!) Fixed looping on videos (Thanks Dims and Jubo!) Fixed a problem with GL 1.1 legacy textures Added a new rounding method for the stats collection Fixed Discord showing some corrupted text for some modes Implement Squish Actor effect Added new GDDM gamemode Set first start of game to be 50% volume Fix XNode loading of sprites not used in the normal pipeline Windows Allowed GL1.1 users to actually get a proper display Updated Installer scripts to fix a few bugs Linux GL1.1 will no longer cause an X server reset on Linux Mint Community content Updated pump default noteskins with a newer design and high res graphics Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 19th June 2020 All platforms Fix caching edge crash Fix a message not being called when a player unjoins Fixed an edge crash with folks with 2+ monitors Fixed a problem with a refcount causing a crash to desktop on SongSelect (Thanks Moru!) Fixed gifs being wrongly assigned in Song.cpp (Thanks Moneko!) Fixed looping on videos (Thanks Dims and Jubo!) Fixed a problem with GL 1.1 legacy textures Added a new rounding method for the stats collection Fixed Discord showing some corrupted text for some modes Implement Squish Actor effect Added new GDDM gamemode Set first start of game to be 50% volume Fix XNode loading of sprites not used in the normal pipeline Windows Allowed GL1."},{"id":31,"href":"/dev/mods/Mods-0-Overview/","title":"Overview of modifiers","parent":"Guide to Modifiers","content":" Modifiers Modifiers often change or affect some aspect of the gameplay, usually by messing with the game\u0026rsquo;s notefield. Some modifiers can be selected through the options menu before starting a song, but there are also simfiles with scripted modifiers that tend to have a wildly different experience than just a regular simfile. (Generally, they\u0026rsquo;re known as \u0026ldquo;modfiles\u0026rdquo;)\nGeneral notes Often, modifiers (or \u0026ldquo;mods\u0026rdquo;) have what\u0026rsquo;s called an \u0026ldquo;approach rate\u0026rdquo;, which is how fast it\u0026rsquo;ll go to reach the specified value. When not specified, an approach rate of 1 is used, which means 100% per second.\nSo, if you have a modifier that goes from 0 to 200%, it will take 2 seconds, while 200% to -150% would take 3.5 seconds. The approach rate can be a floating point number, so values like 0.24523 or 3.7 are valid.\nApproach rates cannot be negative in OutFox alpha 4.8.2 or earlier, or it will crash.\nIn \u0026ldquo;NotITG\u0026rdquo; \u0026amp; OutFox alpha 4.8.3 and later, negative approach rates (specifically -1 in NotITG, but in general on SM5) are used to signify \u0026ldquo;instant\u0026rdquo; rates. in older versions of SM5, you can use large approach rate numbers (such as 10000 or 9e9) to achieve this.\nMagnitude is usually shown in the form of percentages for modifiers, and are capable of being negative, unless otherwise noted.\nThere are also column-specific modifiers. This affect a single column instead of the whole notefield. In NotITG, column numbering starts at 0, while it starts at 1 in SM5.\nFor the column-specific lua functions (except for gradients, mentioned later), nil can be given as the column to affect all columns of a player. (Does not work in alpha 4.8.2 of OutFox or earlier)\nModstrings Normally these modifiers will have a modstring form that follows this general format: *\u0026lt;approach rate\u0026gt; \u0026lt;percentage\u0026gt;% \u0026lt;mod name\u0026gt; but some modifiers, like speed mods, may not follow that format.\nWhen not given a percentage, 100% is assumed. no is another way to say 0% as well.\neg: *2 bumpy is the same as *2 100% bumpy.\nThe % is optional and modstrings can work without it, but it\u0026rsquo;s there for visual convenience.\neg: *2 200 bumpy is the same as *2 200% bumpy.\nThe mod name is case insensitive.\nThese modstrings can be used either by simfile ATTACKS, course MODS, or through PlayerOptions\u0026rsquo; FromString function. Smaller numbers like 0.5 require the preceding 0.\nAny modifier or sub modifier that is boolean has a turning point of 50%. Giving 50% or more will turn it on, while 49% or lower will turn it off.\nPlayerOptions Functions Going from modstrings to PlayerOptions functions, the magnitude has to be divided by 100 most of the time, and mod names are now case sensitive.\nWhen calling a PlayerOptions function, they often have an optional final boolean parameter that can be placed after all of the parameters that allows for function chaining similar to what Actor does, allowing for something like this:\nXMod(2.5, 3, true):Drunk(-0.75, 2.7)\nWhen passed nothing in the parameters, the function returns two values: the current magnitude, the current approach rate. However, when passed in parameters, the previous values for magnitude and rate are returned.\nYou can grab a player\u0026rsquo;s PlayerOptions for scripting purposes by doing the following:\nlocal po = {GAMESTATE:GetPlayerState(\u0026#39;PlayerNumber_P1\u0026#39;):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;),GAMESTATE:GetPlayerState(\u0026#39;PlayerNumber_P2\u0026#39;):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} This stores them into a table for easy access at any point during the song. po[1] is what you\u0026rsquo;d use to affect Player 1, while po[2] affects Player 2. Both will need to be used to affect both players with the same mods.\nSimfile ATTACKS and course MODS will override \u0026amp; reset anything set through lua on the Song level, and cannot be player-specific.\nVideo Examples The video examples for the modifiers use an excerpt of GPOP\u0026rsquo;s expert chart for \u0026ldquo;My Story\u0026rdquo; from the \u0026ldquo;G.P.O.P.S. 3\u0026rdquo; pack.\nThe speed mod used is 1.5x, and the noteskin usually is the default noteskin for dance mode, with Exact3D used when needed.\nThe magnitude used in the video examples also may not be the value used in the textual example.\n","description":"Modifiers Modifiers often change or affect some aspect of the gameplay, usually by messing with the game\u0026rsquo;s notefield. Some modifiers can be selected through the options menu before starting a song, but there are also simfiles with scripted modifiers that tend to have a wildly different experience than just a regular simfile. (Generally, they\u0026rsquo;re known as \u0026ldquo;modfiles\u0026rdquo;)\nGeneral notes Often, modifiers (or \u0026ldquo;mods\u0026rdquo;) have what\u0026rsquo;s called an \u0026ldquo;approach rate\u0026rdquo;, which is how fast it\u0026rsquo;ll go to reach the specified value."},{"id":32,"href":"/releases/A4.5.9/","title":"OutFox Alpha 4.5.9 Build","parent":"Release History","content":" Release Date: 14th June 2020 All platforms Fix OpenGL context math overflow edge crash Fix math overflow in arroweffects Added math speedups in notedisplay Fix wayward frame counting on pump and para Added new math functions for 2 dimensional actors 🐲 Removed RageVector2 from the game 🐲 Added new catch all to move users on \u0026lt;= GL 2.0 to the OpenGL Renderer 🐲 Fixed Texture Size overflow Fixed Sprite Overflow causing edge crash (Thanks HeySora!) Fixed Texture Refcount underflow causing a crash on modfiles (Thanks HeySora!) Added new Resolution/Aspect Ratio support 🐲 Fix Tan types in the Math 🐲 Fixed Memory leaks in RageMath 🐲 Fixed Memory leaks in RageTextureManager 🐲 Fixed Errors in some of the new ‘fast’ options Fixed mismatch causing keysounds to stutter Removed an edge case causing songs encoded in mp3/wave prior to 2008 to play at doublespeed Fixed resampling to prevent overflow Math speedups Fixed a few missing performance opportunities in the note system Fixed Texture diagnostics Windows Fixed Intel DLL “unhandled c++” error on newer windows 10 builds (newer than fall 2019) Fixed Intel entrypoint errors when windows 8+ forgets that it does actually support GL 3 onwards… Fixed Intel force crashing the game with an invalid context due to a bad call in the driver Fixed the issue when people using GL 1.1 would get a crash Fixed an issue with ATI cards reporting bad GL contexts when falling back to GDI OpenGL 1.1 Added back support for 1.1. The game will warn you that playing with this version is not recommended, but it wont crash on the opengl renderer driver Added GL 2.1 entrypoints to GLAD so those on it can cheekily use the modern pipe Linux Fixed GL Mesa Endpoints macOS: Fixed GL Call Endpoints for new detections. Crashes should be gone Community content: Added New Crystal noteskins from Lirodon (normal and 4K for high-resolution displays) Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 14th June 2020 All platforms Fix OpenGL context math overflow edge crash Fix math overflow in arroweffects Added math speedups in notedisplay Fix wayward frame counting on pump and para Added new math functions for 2 dimensional actors 🐲 Removed RageVector2 from the game 🐲 Added new catch all to move users on \u0026lt;= GL 2.0 to the OpenGL Renderer 🐲 Fixed Texture Size overflow Fixed Sprite Overflow causing edge crash (Thanks HeySora!"},{"id":33,"href":"/dev/mods/Mods-1-Speed-Mods/","title":"Speed","parent":"Guide to Modifiers","content":"These modifiers are used to control the scroll speed of notes in gameplay. These modifiers are not column-specific, unlike later mods described elsewhere.\nNegative speed modifiers cannot be selected from the Player Options menu, nor can it be set through the lua functions PlayerOptions provides, but it can become negative through the use of mod strings (and some modfiles have taken advantage of that).\nXMod Desc: The \u0026ldquo;X\u0026rdquo; in \u0026ldquo;XMod\u0026rdquo; is for multiply, with it often showing as 1x or 2.5x or some other multiplier value followed by an x. Larger multiplier numbers result in a faster scroll. This speed mod type is capable of showing BPM changes, stops and other chart segment types. Often ranges of 1 to 4 (and in between at practically any specified granularity) can be common.\nQuirks: When setting this through the lua function it will immediately override CMod, MMod or AMod unlike how it functions in courses or modstring-based modfiles.\nPlayerOptions format: XMod(\u0026lt;multiplier\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: XMod(2.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;multiplier\u0026gt;x\nExample: *0.5 2.5x\nCMod Desc: The \u0026ldquo;C\u0026rdquo; in \u0026ldquo;CMod\u0026rdquo; is for \u0026ldquo;Constant BPM Scroll\u0026rdquo;, with it often showing as C200 or C450.5 or some other BPM value preceded by a C. Larger BPM values result in faster scroll speeds. This speed mod type visibly ignores chart segments and only shows a constant speed. (some forks of SM even disqualify if the chart has BPM changes and CMod is used!) Other modifiers still work on CMod, though.\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: When setting this through the lua function it will immediately override XMod, MMod or AMod unlike how it functions in courses or modstring-based modfiles.\nPlayerOptions format: CMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: CMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; c\u0026lt;BPM value\u0026gt;\nExample: *0.5 c200\nMMod Desc: The \u0026ldquo;M\u0026rdquo; in \u0026ldquo;MMod\u0026rdquo; is for \u0026ldquo;Maximum BPM Scroll\u0026rdquo;, with it often showing as m200 or m450.5 or some other BPM value preceded by an m. Unlike CMod, this speed modifier supports everything that XMod does. Instead of specifying a BPM speed for the whole song, this specifies the maximum scroll speed that will be used.\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: The magnitude is in the hundreds most of the time, so a larger approach rate might be needed.\nPlayerOptions format: MMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: MMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; m\u0026lt;BPM value\u0026gt;\nExample: *0.5 m200\nAMod Desc: The \u0026ldquo;A\u0026rdquo; in \u0026ldquo;AMod\u0026rdquo; is for \u0026ldquo;Average BPM Scroll\u0026rdquo;, with it often showing as a200 or a450.5 or some other BPM value preceded by an a. Like MMod, this modifier supports everything XMod supports, and the song\u0026rsquo;s BPM is used in calculations, the average of the song\u0026rsquo;s BPMs is calculated instead of the maximum BPM being used. (and the amount of time a BPM lasts for is taken into account, too)\nOften ranges of 200 to 400 (and in between at practically any specified granularity) can be common, but some people may be more comfortable reading at slower or faster speeds.\nQuirks: The magnitude is in the hundreds most of the time, so a larger approach rate might be needed.\nPlayerOptions format: AMod(\u0026lt;BPM Value\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: AMod(200, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; a\u0026lt;BPM value\u0026gt;\nExample: *0.5 a200\nRandomSpeed Desc: Each note is given a random addition to its\u0026rsquo; speed mod, with larger additions being applied when a higher magnitude is used. This does not have column-specific controls.\nNormally, 100 is the magnitude used (as it\u0026rsquo;s not commonly used in modfiles), but other values are valid.\nQuirks: Only values greater than zero have any visual effect. Missed notes revert to the actual speed mod upon passing the receptors.\nPlayerOptions format: RandomSpeed(\u0026lt;magnitude\u0026gt;,\u0026lt;approach rate\u0026gt;)\nExample: RandomSpeed(1, 0.125)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; randomspeed\nExample: *0.125 100% randomspeed\nSpeed Modifier Controllers These modifiers control the internal parts of the speed modifiers above, and usually shouldn\u0026rsquo;t be used unless there\u0026rsquo;s a good reason to. Like the speed mods above, these aren\u0026rsquo;t column-specific either, but can support negative numbers like how the modstrings do. Unlike the speed modifiers listed above, there is no modstring form for any of these.\nTimeSpacing Desc: Allows one to switch between CMod and the remaining mods. At 100%, this tells the game to use CMods. 0% means use XMod/MMod/AMod.\nIt\u0026rsquo;s tweenable like other modifiers, which allows one to tween \u0026lsquo;between\u0026rsquo; CMods and the other mods.\nOften the values used only range between 0 and 100%\nQuirks: The \u0026rsquo;tweening\u0026rsquo; capability can cause interesting stutter effects while tweening. Some modfiles take advantage of this. This cannot be replicated with the plain CMod \u0026amp; XMod PlayerOptions functions, but can be replicated with modstrings.\nPlayerOptions format: TimeSpacing(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: TimeSpacing(1)\nScrollBPM (Used for CMod, values are BPMs) Desc: This is the underlying BPM value that CMod uses. Common values are the same as those for CMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: ScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ScrollBPM(1, 2)\nAvarageScrollBPM Desc: This is the underlying BPM value that AMod uses. When this is zero, AMod is turned off. Common values are the same as those for AMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: AvarageScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: AvarageScrollBPM(200, 0.5)\nMaxScrollBPM Desc: This is the underlying BPM value that MMod uses. When this is zero, MMod is turned off, and AMod is able to be used. Common values are the same as those for MMod.\nQuirks: Like the BPM-based speed mods, the magnitude is often in the 100s, so a larger approach rate might be needed.\nPlayerOptions format: MaxScrollBPM(\u0026lt;BPM value\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: MaxScrollBPM(200, 0.5)\nScrollSpeed Desc: This is the underlying multiplier value that XMod uses. Common values are the same as those for XMod.\nQuirks: N/A\nPlayerOptions format: ScrollSpeed(\u0026lt;multiplier\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ScrollSpeed(2.5, 0.5)\n","description":"These modifiers are used to control the scroll speed of notes in gameplay. These modifiers are not column-specific, unlike later mods described elsewhere.\nNegative speed modifiers cannot be selected from the Player Options menu, nor can it be set through the lua functions PlayerOptions provides, but it can become negative through the use of mod strings (and some modfiles have taken advantage of that).\nXMod Desc: The \u0026ldquo;X\u0026rdquo; in \u0026ldquo;XMod\u0026rdquo; is for multiply, with it often showing as 1x or 2."},{"id":34,"href":"/releases/A4.5.8/","title":"OutFox Alpha 4.5.8 Build","parent":"Release History","content":" Release Date: 31st May 2020 This is a QoL update.\nAll platforms Fix PitchRate/DownRate crash (Thanks to Nhan and indigo for reporting!) Fix Pump status entries Added Missing reset functions in PlayerOptions for column specific noteskews Fix discord game_SDK core dump if user goes offline/discord has problems Added ParaParaParadise controller support (Thanks Taikora for the support!) Fix a plethora of coverage recommendations Remove a few ‘virtual’ functions which were not in fact virtual Added avatar examples to the installer Added multi-option option rows. Fixed out of bounds check which always defaulted to true Fixed bad rounding on banner scrolling 🐲 Fixed a few missing performance opportunities in the sprite handler Fixed new GL Asserts not being defined Fixed “Disable Way Off” disabling “Decent” AutoPlayCPU is now disqualified and no longer saves scores. Fixed saved controller mapping saving ‘Joy1-Unknown’ (Thanks Moneko, Take Walker) Windows Changed versioning system to say 5.3 finally Linux Fixed memory reporting on newer Linux builds Adjust ALSA driver hooks MacOSX: Input tweaks, should be less crazy on really sensitive pads Theme Optimizations and visual streamlining for the Soundwaves theme. New ColorTable variables for ScreenSelectMusic and gameplay. Enable timing bar and milliseconds display independently. Community content: Dancing Style Judgements By MattMayuga Mikado and Jewelry Judgements by Haley Halcyon Translations updated from Moru, SHRIMP0 and SheepyChris (Brazilian Portuguese) Translations updated from MoNeko (Polish) Translations updated from Hanubeki (Japanese) Translations updated from Jose_Varela (Spanish) ","description":"Release Date: 31st May 2020 This is a QoL update.\nAll platforms Fix PitchRate/DownRate crash (Thanks to Nhan and indigo for reporting!) Fix Pump status entries Added Missing reset functions in PlayerOptions for column specific noteskews Fix discord game_SDK core dump if user goes offline/discord has problems Added ParaParaParadise controller support (Thanks Taikora for the support!) Fix a plethora of coverage recommendations Remove a few ‘virtual’ functions which were not in fact virtual Added avatar examples to the installer Added multi-option option rows."},{"id":35,"href":"/dev/mods/Mods-2-Perspective-Mods/","title":"Perspective","parent":"Guide to Modifiers","content":"Perspective modifiers tilt and skew the notefield itself to allow for a feeling of depth. Scripted modfiles can use these to do effects like rocking the notefield back and forth among other effects (And is definitely noticable with 3D noteskins).\nUnlike most modifiers available through PlayerOptions, these functions only return values in terms of tilt and skew and don\u0026rsquo;t return the current/previous approach rate. Perspecitve modifiers aren\u0026rsquo;t column-specific either.\nHallway Desc: The notefield is tilted away from the player, so that notes start far away and come closer. Very noticable with 3D noteskins.\nTilt is negative, while Skew is at zero.\nCommon ranges can go from 50% to 150%, while the Player Options menu uses 100%.\nNegative magnitudes activate Distant instead.\nQuirks: Going over 150% Hallway may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Hallway(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Hallway(1.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hallway\nExample: *1 150% hallway\nDistant Desc: The notefield is tilted towards the player, so that notes start close to the screen and go away. Very noticable with 3D noteskins.\nTilt is positive, while Skew is at zero.\nCommon ranges can go from 50% to 200%, while the Player Options menu uses 100%.\nNegative magnitudes activate Hallway instead.\nQuirks: Going over 200% Distant may result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Distant(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Distant(2, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; distant\nExample: *2 200% distant\nDistant video example\nIncoming Desc: The notefield is tilted away from the player, like Hallway, but the notefield is also skewed so that notes approach from the middle of the screen.\nTilt is negative, while Skew is positive.\nCommon ranges can go from -150% to 150%, while the Player Options menu uses 100%.\nQuirks: Going over 150% Incoming may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Incoming(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Incoming(1.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; incoming\nExample: *1 150 incoming\nIncoming video example\nSpace Desc: The notefield is tilted away from the player, like Distant, but the notefield is also skewed so that notes approach from the sides of the screen.\nTilt and Skew are positive.\nCommon ranges can go from -150% to 200%, while the Player Options menu uses 100%.\nQuirks: Going beyond the common range may result in the notefield\u0026rsquo;s draw distance limit showing up, or even result in the notefield rotating over 90 degrees and becoming unreadable.\nPlayerOptions format: Space(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Space(1, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; space\nExample: *3 100% space\nSpace video example\nOverhead Desc: The notefield is parallel to the screen, and appears directly flat. Returns whether both tilt and skew are at zero before the function was called.\nBoth Tilt and Skew are at zero.\nQuirks: N/A\nPlayerOptions format: Overhead(\u0026lt;Set Overhead?\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Overhead(true, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; overhead\nExample: *0.2 overhead\nPerspective Modifier Controllers These modifiers control the internal parts of the modifiers above, and generally shouldn\u0026rsquo;t be used unless finer control is desired. Like the perspective modifiers, these aren\u0026rsquo;t column-specific either. Unlike the perspective modifiers, there is no modstring form for any of these, and the standard current/previous magnitude \u0026amp; approach rate are returned.\nSkew Desc: Alters the vanish point of the notefield. Positive values move the point towards the middle of the screen, with 100% being fully on the center, while negative values move it towards the sides of the screen.\nNormally, this has the same ranges as Incoming \u0026amp; Space.\nQuirks: Will have no visible effect when players are centered on the screen. Can result in interesting x axis movements from z axis modifiers.\nPlayerOptions format: Skew(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Skew(10, 3)\nSkew video example\nTilt Desc: Rotates the notefield on the x axis near the receptors so the arrows get closer or farther from the player when they initially appear. Positive values tilt the notefield away from the player, while negative values point it towards the player.\nNormally, this has the same ranges as Distant \u0026amp; Hallway.\nQuirks: Same as Distant and Hallway.\nPlayerOptions format: Tilt(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tilt(2, 4)\nVideo example: See Distant \u0026amp; Hallway.\n","description":"Perspective modifiers tilt and skew the notefield itself to allow for a feeling of depth. Scripted modfiles can use these to do effects like rocking the notefield back and forth among other effects (And is definitely noticable with 3D noteskins).\nUnlike most modifiers available through PlayerOptions, these functions only return values in terms of tilt and skew and don\u0026rsquo;t return the current/previous approach rate. Perspecitve modifiers aren\u0026rsquo;t column-specific either.\nHallway Desc: The notefield is tilted away from the player, so that notes start far away and come closer."},{"id":36,"href":"/dev/mods/Mods-3-Column-Movement-Mods/","title":"Column movement","parent":"Guide to Modifiers","content":"Column movement modifiers allow one to move the columns in any direction. Usually, these are used to create \u0026ldquo;column swaps\u0026rdquo;, which alter the visual order of the columns in gameplay.\nFlip Desc: Flip alters the column order to make it appear backwards. For Example, if the column order is usually left down up right, the order becomes right up down left.\nNegative values have been used to space out the columns, so values from -200% to 100% could be possible.\n50% coverges all columns to the same horizontal spot.\nDifferent amounts could be used in combination with Invert.\nQuirks: N/A\nPlayerOptions format: Flip(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Flip(1.25, 10)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; flip\nExample: *10 125% flip\nFlip video example\nInvert Desc: Invert flips each half of the notefield. When doubles charts are being played, the two \u0026ldquo;players\u0026rdquo; are inverted separately.\nCommonly, 100% is used, but different amounts could be used in combination with Flip.\nQuirks: If used in 5.2 and earlier, Invert may act in unexpected ways on modes with an odd number of columns (eg. Pump).\nIn OutFox, Invert will have no visual effect if the mode has three columns per side or less (eg. Pump halfdoubles).\nPlayerOptions format: Invert(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Invert(1, 0.3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; invert\nExample: *0.3 100% invert\nInvert video example\nMove Desc: Move is a set of modifiers that are column-specific by nature and has variants for the X,Y, and Z axis. 100% moves a column forward on an axis by one dance mode column width. This can allow for column swaps that can\u0026rsquo;t be achieved through just Flip and Invert, but can take more time to set up.\nQuirks: Since alpha 4.8.3, all columns can\u0026rsquo;t be hit from the modstring (possible in NotITG), but can be done through the lua function. Right now (as of Project OutFox alpha 4.7), Pump mode\u0026rsquo;s column-spacing is 48 pixels instead of 64, so use multiples of 0.75 instead when working with Pump mode. It\u0026rsquo;s also the only way to move the center panel with any of the column-movement mods.\nAvailable Variants: MoveXCol, MoveYCol, MoveZCol\nAvailable Variants (modstring): movex, movey, movez\nPlayerOptions format: \u0026lt;Move variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: MoveXCol(1, -0.5, 4, true):MoveYCol(2, 1, 0.5, true):MoveZCol(3, 5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\u0026lt;column\u0026gt;\nExamples: *4 -50 movex1, *0.5 100 movey2, *1 500 movez3\nMove video example\nTipsy Desc: Tipsy makes the columns bob up and down in a sinusoidal pattern. There is a tangent-based variant as well.\nCommon ranges go from -300 to 300%\nQuirks: When combined with Drunk in SM5.1 or earlier, hold bodies may detach from the hold head.\nAvailable Variants: Tipsy, TanTipsy\nAvailable Variants (modstring): tipsy, tantipsy\nPlayerOptions format: \u0026lt;Tipsy variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tipsy(1.5, 3) TanTipsy(1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *3 150% tipsy *3 150% tantipsy\nTipsy video example\nAvailable sub modifiers: TipsyOffset Desc: TipsyOffset shifts the point in time of where Tipsy is in its\u0026rsquo; sinusoidal pattern.\nValues of -100 to 100% have a noticable effect.\nAvailable Variants: TipsyOffset, TanTipsyOffset\nAvailable Variants (modstring): tipsyoffset, tantipsyoffset\nTipsySpacing Desc: TipsySpacing shifts the phase for each column after the first column.\nValues of -100 to 100% have a noticable effect.\nAvailable Variants: TipsySpacing, TanTipsySpacing\nAvailable Variants (modstring): tipsyspacing, tantipsyspacing\nTipsySpeed Desc: TipsySpeed affects how fast Tipsy goes through its\u0026rsquo; sinusoidal pattern with a multiplier. Lower magnitudes slow it down, while higher magnitudes speed it up. -100% freezes the effect completely. Results in a very jittery effect when using game uptime as the mod timer.\nCommon ranges can go from -100 to 100%\nAvailable Variants: TipsySpeed, TanTipsySpeed\nAvailable Variants (modstring): tipsyspeed, tantipsyspeed\nCombining Flip \u0026amp; Invert Flip and invert, when paired together, allow for unusual column ordering. Here\u0026rsquo;s what\u0026rsquo;s possible in dance \u0026amp; pump modes.\nDance mode (4 panel) Pump mode (5 panel) 75\u0026percnt; flip + 75\u0026percnt; invert 66.666667\u0026percnt; (AKA 2/3) flip + 133.333333\u0026percnt; (AKA 4/3) invert 25\u0026percnt; flip + -75\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + -133.333333\u0026percnt; (AKA -4/3) invert 100\u0026percnt; flip + -100\u0026percnt; invert 100\u0026percnt; flip + -100\u0026percnt; invert 25\u0026percnt; flip + 125\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + 166.666666\u0026percnt; (AKA 5/3) invert 75\u0026percnt; flip + -125\u0026percnt; invert 66.666666\u0026percnt; (AKA 2/3) flip + -166.666666\u0026percnt; (AKA -5/3) invert 25\u0026percnt; flip + -25\u0026percnt; invert 33.333333\u0026percnt; (AKA 1/3) flip + -33.333333\u0026percnt; (AKA -1/3) invert ","description":"Column movement modifiers allow one to move the columns in any direction. Usually, these are used to create \u0026ldquo;column swaps\u0026rdquo;, which alter the visual order of the columns in gameplay.\nFlip Desc: Flip alters the column order to make it appear backwards. For Example, if the column order is usually left down up right, the order becomes right up down left.\nNegative values have been used to space out the columns, so values from -200% to 100% could be possible."},{"id":37,"href":"/releases/A4.5.6/","title":"OutFox Alpha 4.5.6 Build","parent":"Release History","content":" Release Date: 8th May 2020 All platforms Aligned inline sine math with NotITG. Fine-tune the Discord SDK integration added on 4.5.5. Fix RPC core being required to run the game. Additional Soundwaves bug fixes and details. Fix the Avatar preference line not being found. Fix failed initialisations on some of the theme statistics. Windows Update EXE resource metadata to display 5.3 version number (should also help prevent false positives from antivirus software) ","description":" Release Date: 8th May 2020 All platforms Aligned inline sine math with NotITG. Fine-tune the Discord SDK integration added on 4.5.5. Fix RPC core being required to run the game. Additional Soundwaves bug fixes and details. Fix the Avatar preference line not being found. Fix failed initialisations on some of the theme statistics. Windows Update EXE resource metadata to display 5.3 version number (should also help prevent false positives from antivirus software) "},{"id":38,"href":"/releases/A4.5/","title":"OutFox Alpha 4.5.0 Build","parent":"Release History","content":" Release Date: 4th May 2020 All platforms Fix no input for axis U/D and L/R (reported by Julius) 🐲 Fix Obscure Pad Buttons 🐲 Add Multi-point Analog Support 🐲 Fix analogue AXIS being mapped incorrectly 🐲 Fix PS2/PS1/GC pad converter adapters 🐲 Add Nintendo Joy-Con/Pro/SNES/NES/8Bit DO Pad support 🐲 Add PS1/PS2/PS3/PS4 pad Support 🐲 Add Xbox/Xbox 360 pad Support 🐲 Add HORI Arcade pad support (PS4/Switch) 🐲 Add Project Diva pad support (PS3/PS4) 🐲 Add Stadia/Steam pad support 🐲 Add custom game pad/dance pad mapping support and associated user interface. 🐲 Added gamepad database support we can add to! Fix crash on joystick index Add and modify Actor functions to allow getting mid-tween values and skew values Add extra modifiers, such as \u0026ldquo;Orient\u0026rdquo; Add mid-gameplay combo manipulation to Players Re-add old SM-SSC lighting Fix 1-pixel overlap and gap on holds (Thanks waiei!) Fix arrow hold drawing order Theme Add sub-themes to Soundwaves. Add CDtitles. Option to disable W4 and/or W5 timing windows (ITG Decent and Way Off) More detailed stats display Scatter MS judgment bar. Players can select their own life type individually. Measure counter for streams and breaks (Thanks rin!) Display summary of last-played songs on evaluation in 1-player mode. Linux: Fix 5.1 Folders being overwritten with 5.3 data due to hardcoded paths New 5.3 Folder Location beginning this Alpha Alternate binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nmacOS No longer causes program softlocks Support new input methods removing lag. Windows Fix bad renderer selection on pre-2011 graphics cards Fix rare crash on axis overflow. ","description":"Release Date: 4th May 2020 All platforms Fix no input for axis U/D and L/R (reported by Julius) 🐲 Fix Obscure Pad Buttons 🐲 Add Multi-point Analog Support 🐲 Fix analogue AXIS being mapped incorrectly 🐲 Fix PS2/PS1/GC pad converter adapters 🐲 Add Nintendo Joy-Con/Pro/SNES/NES/8Bit DO Pad support 🐲 Add PS1/PS2/PS3/PS4 pad Support 🐲 Add Xbox/Xbox 360 pad Support 🐲 Add HORI Arcade pad support (PS4/Switch) 🐲 Add Project Diva pad support (PS3/PS4) 🐲 Add Stadia/Steam pad support 🐲 Add custom game pad/dance pad mapping support and associated user interface."},{"id":39,"href":"/dev/mods/Mods-4-Scroll-Mods/","title":"Scroll","parent":"Guide to Modifiers","content":"Scroll modifiers affect the general scroll of the notefield. This is often used to change from upscroll to downscroll among other effects.\nReverse Desc: Reverse flips the scroll of the whole notefield from upscroll to downscroll. There is also a column-specific version that adds onto the value of normal Reverse.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: When going over 100%, the effect goes backwards, with 200% being normal upscroll again. Negative values go upward resulting in a longer notefield. This applies to the column-specific version, too. Going to 100% on column 1 will also make the judgment \u0026amp; combo swap positions.\nFor example, 100% reverse + 100% reverse on a single column would result in that single column having upscroll and the rest being downscroll.\nAvailable Variants (modstring): reverse, reverse\u0026lt;column\u0026gt;\nPlayerOptions format: Reverse(\u0026lt;magnitude\u0026gt; \u0026lt;approach rate\u0026gt;)\nExample: Reverse(1, 2)\nColumn-specific format: ReverseCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ReverseCol(2, 0.25, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nexample: *2 100% reverse *0.25 25% reverse2\nReverse video example\nAvailable sub modifiers: UnboundedReverse Desc: UnboundedReverse is a boolean modifier that makes it so Reverse no longer bounces back when going over 100% (Acts similar to negative reverse, behavior-wise). This affects all reverse-type modifiers, including Split, Alternate and Cross. In NotITG, this is known as reversetype.\nPlayerOptions format: UnboundedReverse(\u0026lt;enable\u0026gt;)\nmodstring format: \u0026lt;enable\u0026gt; unboundedreverse\nSplit Desc: The second half of the notefield gets reversed.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse. If used in modes with an odd number of columns, the middle column also gets affected.\nPlayerOptions format: Split(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Split(0.75,3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; split\nexample: *3 75% reverse\nSplit video example\nAlternate Desc: Every other column gets reversed, starting with the second column. Also can be activated with ultraman in NotITG.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse.\nPlayerOptions format: Alternate(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Alternate(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; alternate\nexample: *1 100% alternate\nAlternate video example\nCross Desc: The inner part of the notefield gets reversed with the outer sides staying as upscroll.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: Same as Reverse.\nPlayerOptions format: Cross(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Cross(0.25, 4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; cross\nexample: *4 25% cross\nCross video example\nCentered Desc: Centered moves the notefield down to where the receptors are at the center of the whole field at 100% (which is usually around the middle of the screen), taking the above scroll modifiers into account (As seen with Alternate in the video example). Commonly used to create \u0026ldquo;driven drops\u0026rdquo;. Can also be activated with converge in modstring form.\nAlso often combined with other scroll modifiers above.\nCommonly used at 100%, but more or less can be used. Negative values move the notefield up.\nQuirks: The speed it has when going to the center depends on multiple theme metrics, so \u0026ldquo;driven drop\u0026rdquo; effects may be inconsistent across multiple themes. Most modfiles expect ITG positioning, which is available as the \u0026ldquo;Lower\u0026rdquo; note position setting in the default theme. The player\u0026rsquo;s Combo also moves down based on the current amount of Centered.\nPlayerOptions format: Centered(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Centered(1. 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; centered\nexample: *0.5 100% centered\nCentered video example\nCenteredPath Desc: While Centered moves the notefield down in position, CenteredPath moves the columns down their current path in multiples of the column\u0026rsquo;s width (Commonly 64 pixels for dance mode). This consist amount allows for more consistent \u0026ldquo;driven drops\u0026rdquo; across different setups. In NotITG, this modifier is called centered2.\nLarge amounts of CenteredPath may be used because \u0026ldquo;driven drops\u0026rdquo; can span the whole screen height.\nWhen combined with the opposite amount of MoveY in upscroll, interesting movement effects can be achieved.\nQuirks: Because CenteredPath moves columns down the path, receptors may become affected by mods that otherwise would not affect them (As seen in the video example with Tornado), and note paths may look different.\nPlayerOptions format: CenteredPath(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CenteredPath(2.5,0.23)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; centeredpath\nexample: *0.23 250% centeredpath\nCenteredPath video example\nWhat\u0026rsquo;s a \u0026ldquo;Driven Drop\u0026rdquo;? Driven Drops are an effect where the notes are stationary while the receptor moves down to hit the notes. (As seen in the ITG course, \u0026ldquo;Driven\u0026rdquo;)\nOften, speed mod has to be taken into account for these (which can be made simpler by forcing a speed mod).\nCenteredPath makes it easier due to using a consistent amount that doesn\u0026rsquo;t depend on multiple theme metrics, but the resulting effect may look different.\n\u0026ldquo;SCAR\u0026rdquo; Gimmicks Before column-specific Reverse existed, Combinations of Split, Cross, Alternate and Reverse (SCAR, for short) were used to generate column-specific reverse in 4 panel modes. Here\u0026rsquo;s what\u0026rsquo;s possible when combining the modifiers.\nSPLIT CROSS ALTERNATE Reverse LDUR reversed (1 = reversed) 50% -50% 50% 0% 0001 50% 50% -50% 0% 0010 -50% 50% -50% 0% 0100 50% 50% 50% 0% 0111 -50% -50% -50% 100% 1000 0% -100% 0% 100% 1001 50% 0% -100% 100% 1010 50% -50% -50% 100% 1011 -100% 0% 0% 100% 1100 -50% -50% 50% 100% 1101 -50% 50% -50% 100% 1110 ","description":"Scroll modifiers affect the general scroll of the notefield. This is often used to change from upscroll to downscroll among other effects.\nReverse Desc: Reverse flips the scroll of the whole notefield from upscroll to downscroll. There is also a column-specific version that adds onto the value of normal Reverse.\nCommonly, 50% or 100% is used on its\u0026rsquo; own.\nQuirks: When going over 100%, the effect goes backwards, with 200% being normal upscroll again."},{"id":40,"href":"/releases/A4.4/","title":"OutFox Alpha 4.4 Build","parent":"Release History","content":" Release Date: 4th March 2020 Alpha 4.4.1 changes Properly removed the obsolete input handlers - seems there was a separate one added to a lone screen. Cheers, Glenn. Fixed missing keystrokes on profile creation and high score name entry. All platforms Removed extra input debug output from Alpha 4.3; thank you for your reports and updates. 🐲 Fixed missing scancodes on keyboard input. Fixed old %d number behaviour in Lua. Returns to 5.0/5/1 behaviour. Thanks Tatsh for reporting. Removed \u0026lsquo;Frameskipcode\u0026rsquo; - It will be readded in a later build. Fixed a few more bugs in the render pipeline\u0026hellip; added in 2004. 🐲 Properly removed the obsolete input handlers. Fixed some old cmake typos and cleaned up code for linux. Fixed regression in not supporting smzip/zip archives. Thanks to Jubo for the report. Add new keyboard input system. Fixed InputHandler issues, no more skipping on pads. Fixed missing SDL options in input causing a break error. 🐲 Added new entry-points for OpenGL. 🐲 Fixed Matrix calculation errors, resulting in a small performance boost. 🐲 Added new math functions. Added new GL support for older Intel Cards. Thanks Astolfo, Gabrielpivotyt, Aqui and Wilycel for reporting. Added new noteskins. ArrowEffect fixes to prevent math errors. 🐲 Fixed matrix errors in GL causing odd crashes. Fixed missing ImageCache setting causing odd slowdowns on launch. Theme New options menu appearance. New two-row speed mod selector (pick a speed type, increment the value in a second row, similar to Simply Love) and note skin preview on ScreenPlayerOptions. New ScreenStageInformation design with song background. Updated Japanese language strings by hanubeki Downplay references to \u0026ldquo;Event Mode\u0026rdquo; in the gameplay user interface. Adjustment to ScreenSelectMusic heading to fix misalignment of the sort mode box\u0026rsquo;s fill. Thanks MoNeko for reporting. In a related change, refresh header on ScreenEvaluation. Fix missing option (ScreenOptionsTheme) for mascot on title screen. Change ScreenOptionsService (options menu from title screen) and submenus to use a minimalistic, static background. macOS Fixed another weird issue with compiling. Fixed dmg creation. Linux Fixed weird Mesa edge crash. Fixed odd missing entry-points on GLX, thanks Hālian for reporting. Windows Fixed missing GLAD definitions. ","description":"Release Date: 4th March 2020 Alpha 4.4.1 changes Properly removed the obsolete input handlers - seems there was a separate one added to a lone screen. Cheers, Glenn. Fixed missing keystrokes on profile creation and high score name entry. All platforms Removed extra input debug output from Alpha 4.3; thank you for your reports and updates. 🐲 Fixed missing scancodes on keyboard input. Fixed old %d number behaviour in Lua."},{"id":41,"href":"/dev/mods/Mods-5-Rotation-Mods/","title":"Rotation","parent":"Guide to Modifiers","content":"Rotation modifiers rotate the notes on the x, y or z axis, and can also rotate the receptors in some cases.\nSome noteskins may affect how the effect looks due to how rotation and zoom interact in the notefield.\nOutFox and Open/NotITG act the same way, while earlier versions of SM5 may act differently.\nDizzy Desc: Notes spin as they reach the receptor, with more rotationz added the farther away from the receptor a note is.\nCommon values involve multiples of PI to make some amount of rotation happen per beat.\nFor example, 628% means the notes do a full rotation every beat before hitting the receptor.\nQuirks: Unlike Twirl \u0026amp; Roll, the rotation is based on beat distance and not physical distance. Hold heads aren\u0026rsquo;t affected unless DizzyHolds is used.\nPlayerOptions format: Dizzy(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Dizzy(3.14, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; dizzy\nExample: *2 314% dizzy\nDizzy video example\nAvailable sub modifiers: DizzyHolds Desc: Enables Dizzy to affect hold heads. When used in 5.1, hold heads will still turn while held.\nPlayerOptions format: DizzyHolds(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; dizzyholds\nTwirl Desc: Notes twirl as they reach the receptor, with more rotationy added the farther away from the receptor a note is.\nValues can go from -200 to 200% and beyond.\nQuirks: Also affects holds in their entirety. Single-sided noteskins may result in invisible notes sometimes (As seen in the video example).\nPlayerOptions format: Twirl(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Twirl(2.2, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; twirl\nExample: *3 220% twirl\nTwirl video example\nRoll Desc: Notes roll as they reach the receptor, with more rotationx added the farther away from the receptor a note is.\nValues can go from -200 to 200% and beyond.\nQuirks: Single-sided noteskins may result in invisible notes sometimes (As seen in the video example). Does not affect hold heads.\nPlayerOptions format: Roll(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Roll(1.7, 3.4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; roll\nExample: *3.4 170% roll\nRoll video example\nConfusion Desc: The notes and receptors spin constantly. Has X, Y and Z variants available. Not commonly used in modfiles compared to its\u0026rsquo; Offset sub-modifier. 100% usually works as a magnitude.\nQuirks: The effect is beat-based, with the magnitude being a multiplier. 100% means a full rotation every ~6.28 (2*PI) beats\nAvailable Variants: Confusion, ConfusionX, ConfusionY\nAvailable Variants (modstring): confusion, confusionx, confusiony, confusionz (NotITG alias for confusion)\nPlayerOptions format: \u0026lt;Confusion variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Confusion(0.5, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 50% confusion\nConfusion video example\nAvailable sub modifiers: ConfusionOffset Desc: Allows one to rotate the notes and receptors by a static amount. Good for keeping the notes \u0026amp; receptors oriented properly while rotating the Player. Note that the magnitude is in radians.\n628.3185% is enough for a full rotation. (Another way to put it is PI * 200 if used in modstrings and PI * 2 if using PlayerOptions.)\nAvailable Variants: ConfusionOffset, ConfusionXOffset, ConfusionYOffset\nAvailable Variants (Column-Specific): ConfusionOffsetCol, ConfusionXOffsetCol, ConfusionYOffsetCol\nAvailable Variants (modstring): confusionoffset, confusionoffset\u0026lt;column\u0026gt;, confusionxoffset, confusionxoffset\u0026lt;column\u0026gt;, confusionyoffset, confusionyoffset\u0026lt;column\u0026gt;, confusionzoffset (NotITG alias for confusionoffset), confusionzoffset\u0026lt;column\u0026gt; (NotITG alias for confusionoffset\u0026lt;column\u0026gt;)\nPlayerOptions format: \u0026lt;ConfusionOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nOrient Desc: Orient rotates the notes and receptors based on their travel direction. That means other mods, like Drunk, can influence this modifier.\nOften 50% to 100% is good enough for an effect, as too much may make notes unreadable.\nQuirks: When a column is Reversed, 314% ConfusionOffset may be desired for the column (or field if the whole field is reversed)\nPlayerOptions format: Orient(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Orient(1, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; orient\nExample: *0.25 100% orient\nOrient video example\n","description":"Rotation modifiers rotate the notes on the x, y or z axis, and can also rotate the receptors in some cases.\nSome noteskins may affect how the effect looks due to how rotation and zoom interact in the notefield.\nOutFox and Open/NotITG act the same way, while earlier versions of SM5 may act differently.\nDizzy Desc: Notes spin as they reach the receptor, with more rotationz added the farther away from the receptor a note is."},{"id":42,"href":"/releases/A4.3/","title":"OutFox Alpha 4.3 Build","parent":"Release History","content":" Release Date: 9th February 2020 All platforms Fixed various missing keyboard inputs, including symbol keys (;:\u0026rsquo;@#,\u0026lt;\u0026gt;./?|`{}[])(\u0026amp;^%$\u0026quot;), the ~ key for localised keyboards, and the number pad. Fixed missing options for no mapping on localised keyboards. 🐲 Add touchscreen and mouse input hooks 🐲 Added hooks for haptic/rumble support on controllers. Why? Why not? 🐲 Fixed odd skipping on inputfilters. Removed average FPS gauge from debug overlay; caused skew on mod files. 🐲 Fixed a few bugs in the render pipeline\u0026hellip; added in 2004. 🐲 Properly integrated buffering. Rewritten triangle logic to prevent errors in ActorMultiVertex. Fixed a small lights bug. Added a cleaner way to shut the game down. Added new window states in preparation for the removal of RageDisplay (check the logs for events!) Fixed draw issue reported by some users. Linux Removed obsolete X11 input hook code. macOS This build will only run on 10.14/10.15 due to work in progress code. Fixed an integer overflow that messed with Catalina\u0026rsquo;s guiding of our output windows. Fixed a vertex overflow causing a very rare crash 🐲 Fixed polling error. Windows Removed obsolete win32 input hook code. ","description":"Release Date: 9th February 2020 All platforms Fixed various missing keyboard inputs, including symbol keys (;:\u0026rsquo;@#,\u0026lt;\u0026gt;./?|`{}[])(\u0026amp;^%$\u0026quot;), the ~ key for localised keyboards, and the number pad. Fixed missing options for no mapping on localised keyboards. 🐲 Add touchscreen and mouse input hooks 🐲 Added hooks for haptic/rumble support on controllers. Why? Why not? 🐲 Fixed odd skipping on inputfilters. Removed average FPS gauge from debug overlay; caused skew on mod files."},{"id":43,"href":"/dev/mods/Mods-6-Zoom-Mods/","title":"Zoom","parent":"Guide to Modifiers","content":"Zoom modifiers affect the size of the notefield or notes \u0026amp; receptors. Zoom works a bit differently in SM5 in that it also affects the z axis unlike in ITG/SM3.95, which only affect x \u0026amp; y.\nExtra scaling may be required if recreating effects between ITG and SM5.\nMods that work on the note and column-level may make holds look a bit weird due to how hold scaling works.\nMini Desc: Mini scales down the entire notefield, while maintaining the receptor position.\nThe following equation for calculating the zoom is this:\n1 - (0.5*mini), with mini being the magnitude as input into the PlayerOptions function.\n100% is half-size, and 200% is zero zoom.\nNegative values make the notefield bigger.\nQuirks: Positive and negative values increase how far down the notefield draws, Judgment \u0026amp; combo scale down with Mini, but will not scale up when Mini is negative (Unlike OpenITG/NotITG, where the judgment scales down or up and the combo is unaffected). Going beyond 200% will result in the notefield having a negative zoom, which might look weird.\nPlayerOptions format: Mini(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Mini(1,0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; mini\nExample: *0.2 100% mini\nMini video example\nTiny Desc: Tiny scales down the notes and receptors instead of the entire field. Variants for all three axis are available, as are column-specific variants. These are multiplied onto the whole field variants.\nThe following equation for calculating the zoom is this:\n0.5^tiny, with tiny being the magnitude as input into the PlayerOptions function.\nNotITG uses the equation from Mini instead of this one for the zoom.\nCommon values can be from -100 to 100%.\nQuirks: Judgment \u0026amp; combo scale down with Tiny, but will not scale up when Tiny is negative. Positive values bring the columns closer to simulate what Mini does, unlike NotITG. (Use the column-specific version if that effect is desired.)\nAvailable Variants: Tiny, TinyX, TinyY, TinyZ\nAvailable Variants (Column-Specific): TinyCol, TinyXCol, TinyYCol, TinyZCol, HoldTinyXCol (Hold bodies only, HoldTinyCol is an alias)\nAvailable Variants (modstring): tiny, tiny\u0026lt;column\u0026gt;, tinyx, tinyx\u0026lt;column\u0026gt;, tinyy, tinyy\u0026lt;column\u0026gt;, tinyz, tinyz\u0026lt;column\u0026gt;, holdtiny (NotITG alias that hits all columns, Hold bodies only, holdgirth is also an alias), holdtinyx\u0026lt;column\u0026gt; (Hold bodies only, holdtiny\u0026lt;column\u0026gt; is an alias (NotITG uses this name instead), holdgirth\u0026lt;column\u0026gt; is a NotITG alias)\nPlayerOptions format: \u0026lt;Tiny variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: Tiny(2, 0.5)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: TinyXCol(1, 1, 1, true):TinyYCol(2, -2, 0.5, true):TinyZCol(3, -4, 10, true):HoldTinyXCol(4, 3, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *0.5 -200% tinyy *1 100% tinyx1, *0.5 -200% tinyy2, *10 -400% tinyz3, *0.2 300% holdtinyx4\nTiny video example\nAvailable sub modifiers: TinyUsesMiniCalc Desc: When active, all Tiny mods use the zoom equation from Mini instead of the normal one. This allows for negative zooms and is useful for replicating NotITG effects that expect this behavior.\nPlayerOptions format: TinyUsesMiniCalc(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; tinyusesminicalc\nPulse Desc: Pulse is a set of mods that make the notes zoom in and out as they approach the receptors.\nPulseOuter affects the main pulsing effect, while PulseInner offsets the maximum \u0026amp; minumum zoom. Also has a tangent-based variant.\nPulseOuter is noticable at 100%, and 100% PulseInner offsets the zoom to between 2x and 1x zoom.\nQuirks: N/A\nAvailable Variants: PulseInner, PulseOuter, TanPulseInner, TanPulseOuter\nAvailable Variants (modstring): pulseinner, pulseouter, pulse (NotITG alias that hits both inner \u0026amp; outer), tanpulseinner, tanpulseouter, tanpulse (NotITG alias that hits both inner \u0026amp; outer)\nPlayerOptions format: \u0026lt;Pulse variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: PulseInner(1, 0.5, true):PulseOuter(1, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *0.5 100% pulseinner, *0.5 100% pulseouter\nPulse video example\nAvailable sub modifiers: PulseOffset Desc: Affects the phase of the sinusoidal pattern used for Pulse.\nAvailable Variants: PulseOffset, TanPulseOffset\nAvailable Variants (modstring): pulseoffset, tanpulseoffset\nPlayerOptions format: \u0026lt;PulseOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nPulsePeriod Desc: Affects the speed of the pulsing with a multiplier (1 + magnitude).\nPositive magnitudes slow down the pulsing, negative magnitudes speed it up.\n-100% freezes the effect at the minumum.\nAvailable Variants: PulsePeriod, TanPulsePeriod\nAvailable Variants (modstring): pulseperiod, tanpulseperiod\nPlayerOptions format: \u0026lt;PulsePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nShrinkLinear Desc: ShrinkLinear has notes start out zoomed in, and linearly go down to normal size based on how far away the note is from hitting the receptor. There are also separate variants for all three axis.\n50% is still readable in normal circumstances.\nNegative amounts may result in notes starting backwards and ending normally.\nQuirks: N/A\nAvailable Variants: ShrinkLinear, ShrinkLinearX, ShrinkLinearY, ShrinkLinearZ\nAvailable Variants (modstring): shrinklinear, shrinklinearx, shrinklineary, shrinklinearz\nPlayerOptions format: \u0026lt;ShrinkLinear variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: ShrinkLinear(0.5,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *1 50% shrinklinear\nShrinklinear video example\nShrinkMult Desc: ShrinkMult has notes that start zoomed out and decelerate to normal zoom. There are also separate variants for all three axis.\n100% is a decent amount.\nQuirks: Using negative amounts will result in notes going to negative infinity zoom before going back to normal.\nAvailable Variants: ShrinkMult, ShrinkMultX, ShrinkMultY, ShrinkMultZ\nAvailable Variants (modstring): shrinkmult, shrinkmultx, shrinkmulty, shrinkmultz\nPlayerOptions format: \u0026lt;ShrinkMult variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExamples: ShrinkMult(1, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExamples: *2 100% shrinkmult\nShrinkmult video example\n","description":"Zoom modifiers affect the size of the notefield or notes \u0026amp; receptors. Zoom works a bit differently in SM5 in that it also affects the z axis unlike in ITG/SM3.95, which only affect x \u0026amp; y.\nExtra scaling may be required if recreating effects between ITG and SM5.\nMods that work on the note and column-level may make holds look a bit weird due to how hold scaling works.\nMini Desc: Mini scales down the entire notefield, while maintaining the receptor position."},{"id":44,"href":"/dev/mods/Mods-7-Acceleration-Mods/","title":"Acceleration","parent":"Guide to Modifiers","content":"Acceleration modifiers mess with the vertical acceleration of the note. It lets people have notes speed up, slow down, or do a 180 among other things.\nBoomerang Desc: Notes start flying out from the top of the screen, do a 180 at around the bottom of the screen, and go back towards the receptors.\nThe modifier has a simple on/off nature, so any nonzero magnitude will work. (Unless the VariableBoomerang sub modifier is in play)\nQuirks: Hold bodies will draw only after the hold head does the 180. NotITG changed Boomerang\u0026rsquo;s behavior to work with the magnitude by default. See the VariableBoomerang sub modifier for replicating NotITG\u0026rsquo;s behavior.\nPlayerOptions format: Boomerang(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Boomerang(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; boomerang\nExample: *1 100% boomerang\nBoomerang video example\nAvailable sub modifiers: VariableBoomerang Desc: When active, Boomerang now takes its\u0026rsquo; magnitude into account, allowing for more varied effects.\nPlayerOptions format: VariableBoomerang(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; variableboomerang\nBrake Desc: Notes start fast at the bottom, but slow down as they approach the receptors.\nCommon values range from 50 to 200%\nQuirks: Going over 100% can result in notes going past the receptors and then rebounding back.\nAvailable variants (modstring): brake, land (alias for brake)\nPlayerOptions format: Brake(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Brake(2, 5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *5 200% brake\nBrake video example\nBoost Desc: Notes start slow at the bottom, but speed up as they approach the receptors.\nCommon values range from -100% to 200%.\nQuirks: Going over 100% may result in notes bobing at the bottom before going up.\nPlayerOptions format: Boost(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Boost(1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; boost\nExample: *3 150% boost\nBoost video example\nExpand Desc: the visual speed of the field\u0026rsquo;s notes oscilates back and forth, as if the notefield is expanding and contracting. Also has a tangent variant.\nCommon values range from -50 to 100%\nQuirks: When using a negative magnitude, the notes may go beyond the receptor. Stops and Delays will pause the effect altogether.\nAvailable variants: Expand, TanExpand\nAvailable variants (modstring): expand, tanexpand\nPlayerOptions format: \u0026lt;Expand variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Expand(1.2, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.25 120% Expand\nExpand video example\nAvailable sub modifiers: ExpandPeriod Desc: Can speed up or slow down the oscilation. Positive speeds up, while negative slows down, -100% stops the effect.\nAvailable variants: ExpandPeriod, TanExpandPeriod\nAvailable variants (modstring): expandperiod, tanexpandperiod, expandsize (alias in NotITG), tanexpandsize (alias in NotITG)\nPlayerOptions format: \u0026lt;ExpandPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nWave Desc: Notes slow down in the middle and then speed up to the receptors. 200% makes notes effectively stop at the middle before going up to the receptors. Also has a column-specific version.\nCommon values range from 50 to 200%.\nQuirks: N/A\nAvailable variants (modstring): wave, wave\u0026lt;column\u0026gt;\nPlayerOptions format: Wave(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Wave(2, 0.5)\nColumn-specific format: WaveCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: WaveCol(1, -2, 10, true):WaveCol(2, -1, 5, true):WaveCol(3, 1, 5, true):WaveCol(4, 2, 10, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt; Example: *0.5 200% wave *10 -200 wave1, *5 -100% wave2, *5 100% wave3, *10 200% wave4\nWave video example\nAvailable sub modifiers: WavePeriod Desc: Affects how many times the notes slow down. Positive values increase the period (less times the notes slow down), while negative values decrease the period (more times the notes slow down). -100% stops the effect.\nModstring variants: waveperiod, wavesize (NotITG alias), waveperiod\u0026lt;column\u0026gt;\nPlayerOptions format: WavePeriod(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: WavePeriodCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nWaveOffset Desc: Shifts where the slow down point is. Positive values shift towards the receptor, negative values shift away from the receptor.\nModstring variants: waveoffset, waveoffset\u0026lt;column\u0026gt;\nPlayerOptions format: WaveOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: WaveOffsetCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\n","description":"Acceleration modifiers mess with the vertical acceleration of the note. It lets people have notes speed up, slow down, or do a 180 among other things.\nBoomerang Desc: Notes start flying out from the top of the screen, do a 180 at around the bottom of the screen, and go back towards the receptors.\nThe modifier has a simple on/off nature, so any nonzero magnitude will work. (Unless the VariableBoomerang sub modifier is in play)"},{"id":45,"href":"/releases/A4.2/","title":"OutFox Alpha 4.2 Build","parent":"Release History","content":" Release Date: 5th February 2020 Windows build was pulled due to bugs.\n🐉 Fix Shader initialisation being skipped due to new LLW pipeline. Fix Detection returning false when actually true. Added new Delta2019 noteskin (Thanks shakesoda). Fix StepMania 5.0 noteskins to not use .redir files or fall back on assets from Default. Fix SDL init not being set up correctly on older hardware. Fix static linking of libs on windows. Add SDL patchfix to fix input lag. New GLAD renderer pipeline. 🐉 Input has been completely rewritten to test controller input. Player 2\u0026rsquo;s keyboard mappings will need resetting to numpad as it sets +-/* as keys. (This is a hooks bug we will remove). Lua\u0026rsquo;s backend code has been made a little more stable. Removed several cachemiss overflows, an important one being in the math pipe. 🐉 Experimental touch support added. (There is no code at the moment, but it is on our roadmap.) 🐉 Experimental hotplugging Support. DrunkOffset and TipsyOffset changed to match their behaviour on NotITG v4; the previous versions have been renamed to DrunkSpacing and TipsySpacing. HiddenRegions has been added Optimise old ssc code from NoteDisplay. Add option for hiding the mascot character on the title screen in Soundwaves 🐉 Gatekeeper no longer gets upset on macOS Core input modules are now macOS Sierra (10.12)+ compliant. Sound modules are now 10.12+ compliant. HiDPI is enabled, but the resize window will still fail on a resize if the computer has 2 monitors. (known bug) Memory usage display on renderer stats overlay now functions on macOS. Fix clock errors. 🐉 Remove DirectX code from the game on Windows. Fixed edge case heap crash on Windows caused by game controllers. Fix bad Xinput crash on Linux. Fix lag on gameplay on Linux. ","description":"Release Date: 5th February 2020 Windows build was pulled due to bugs.\n🐉 Fix Shader initialisation being skipped due to new LLW pipeline. Fix Detection returning false when actually true. Added new Delta2019 noteskin (Thanks shakesoda). Fix StepMania 5.0 noteskins to not use .redir files or fall back on assets from Default. Fix SDL init not being set up correctly on older hardware. Fix static linking of libs on windows."},{"id":46,"href":"/user-guide/meta/","title":"Front Matter","parent":"User Guide","content":"","description":""},{"id":47,"href":"/dev/mode-support/","title":"NoteLoader support","parent":"Developers and Creators","content":"This section lists the different types of NoteLoaders (file parsers that can load up different simfiles/charts or maps) that we support and their current amount of completion. These pages are a living document, so are a work in progress. If you see a parser format we do not support but you think we should, do let us know!\nClick on a button below to learn more about the parsers!\nBMS/BME/PMS DTX/GDA/G2A KSF SM OSU/OTO TJA TXT Written and Maintained with ♡ by Squirrel\n","description":"This section lists the different types of NoteLoaders (file parsers that can load up different simfiles/charts or maps) that we support and their current amount of completion. These pages are a living document, so are a work in progress. If you see a parser format we do not support but you think we should, do let us know!\nClick on a button below to learn more about the parsers!\nBMS/BME/PMS DTX/GDA/G2A KSF SM OSU/OTO TJA TXT Written and Maintained with ♡ by Squirrel"},{"id":48,"href":"/releases/A4.1/","title":"OutFox Alpha 4.1 Build","parent":"Release History","content":" Release Date: 4th January 2020 Alternate Linux binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nNew GLFW Renderer Pipeline. 🐉Added Xwindow SDL2 support. 🐉Tweak to remove dependency on ancient colour handling that actually slowed the game down, instead of giving it the intended performance. Re-purposed GL Entrypoints to re-support ancient GL\u0026lt;1.5 Hardware, for Native Arcade Hardware support. 🐉Fix LLW to allow for set contexts. 🐉Experimental GLES2 support from Dragons. Add new Lua hook for getrenderer now we have a choice. 🐉Experimental HiDPI support. Add Mascot to home screen. Fix missing external SDL code. Fix NaN crash on Actors. Fix GLHandleARB mismatch. Add better openGL handling for contexts on different systems. 🐉Fix ImageCache forcing a D3D format causing unnecessary conversions in RageSurface. Remove float based textures as they were unused. Remove Rageformat PAL from the game as it\u0026rsquo;s been unsupported since 2007. Fix apple compiling with new pipeline. Fix float errors in Gameloop. ","description":"Release Date: 4th January 2020 Alternate Linux binary compiled on Arch Linux for amd64 (replace existing version in amd64 tarball)\nNew GLFW Renderer Pipeline. 🐉Added Xwindow SDL2 support. 🐉Tweak to remove dependency on ancient colour handling that actually slowed the game down, instead of giving it the intended performance. Re-purposed GL Entrypoints to re-support ancient GL\u0026lt;1.5 Hardware, for Native Arcade Hardware support. 🐉Fix LLW to allow for set contexts. 🐉Experimental GLES2 support from Dragons."},{"id":49,"href":"/user-guide/","title":"User Guide","parent":"Project OutFox Wiki","content":"","description":""},{"id":50,"href":"/dev/mods/Mods-8-Visibility-Mods/","title":"Visibility","parent":"Guide to Modifiers","content":" Visibility Modifiers Visibility modifiers hide various parts of the gameplay screen, such as the background, notes, receptors and other things.\nCover Desc: Cover hides the song background. The range between fully lit and fully hidden scales based on the current value of the BGBrightness preference.\nUse negative amounts to bring back the background if BGBrightness is less than 1. A lot of modfiles use large amounts of negative cover to deal with any positive value BGBrightness could have.\nIf used on only one player, only that player\u0026rsquo;s side will have the background dimmed/hidden, with a fade in the middle between the two players.\nQuirks: If BGBrightness is at 0, then no amount of negative Cover can bring back the background.\nPlayerOptions format: Cover(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Cover(0.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; cover\nExample: *0.5 50% cover\nBlind Desc: Blind hides the information relating to judgment \u0026amp; combo.\nUnlike most On/Off modifiers, this modifier is float-based. Any positive magnitude will turn it on.\nQuirks: In OpenITG, the noteflashes also turn into all fantastic (W1) noteflashes, which is why some of the modding community discourages its\u0026rsquo; use.\nPlayerOptions format: Blind(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Blind(1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; blind\nExample: *1 100% blind\nHideHoldJudgments Desc: Hides the OK/NG judgments that appear upon the end of a hold note. It\u0026rsquo;s called \u0026ldquo;hoholdjudge\u0026rdquo; or \u0026ldquo;halgun\u0026rdquo; in NotITG.\nQuirks: N/A\nPlayerOptions format: HideHoldJudgments(\u0026lt;enable\u0026gt;)\nExample: HideHoldJudgments(true)\nModstring format: \u0026lt;enable\u0026gt; hideholdjudgments\nExample: 100% hideholdjudgments\nHideNoteFlash Desc: Turns off the noteflashes for a given column. Since alpha 4.8.3, all columns can\u0026rsquo;t be hit from the modstring (possible in NotITG), but can be done through the lua function. Also known as \u0026ldquo;hidenoteflashes\u0026rdquo; in NotITG.\nQuirks: N/A\nAvailable variants (modstring): hidenoteflash\u0026lt;column\u0026gt;, hidenoteflash (NotITG alias that hits all columns), hidenoteflashes\u0026lt;column\u0026gt; (NotITG alias), hidenoteflashes (NotITG alias that hits all columns)\nPlayerOptions format: HideNoteFlashCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: HideNoteFlashCol(2, true)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: 100% hidenoteflash2\nMinTNSToHideNotes Desc: This sets the minimum judgment that is needed to hide the notes upon hitting. There is no modstring form.\nQuirks: The default is set in Preferences.ini, holds aren\u0026rsquo;t subject to this setting.\nPlayerOptions format: MinTNSToHideNotes(\u0026lt;TapNoteScore enum\u0026gt;)\nExample: MinTNSToHideNotes('TapNoteScore_W1')\nDrawSize Desc: DrawSize is a set of modifiers that affect how far down and up the notefield will draw notes.\nDrawSize affects notes below the receptor (usually notes that have yet to be hit), while DrawSizeBack affects notes above the receptor (usually notes that were visibly missed)\nNot often used unless some mod effects need a longer or shorter field, but can be used to ensure a consistent field length across multiple setups through ratios.\nQuirks: The farther the notefield is allowed to draw, the more notes will be on-screen, which can hurt game performance. This is a multiplier, so it depends on your theme\u0026rsquo;s metrics.\nAvailable variants: DrawSize, DrawSizeBack\nAvailable variants (modstring): drawsize, drawsizefront (NotITG alias for drawsize), drawdistance (NotITG alias for drawsize), drawdistancefront (NotITG alias for drawsize), drawsizeback, drawdistanceback (NotITG alias for drawsizeback)\nPlayerOptions format: \u0026lt;DrawSize variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: DrawSize(-0.5,1)\nModstring format: *\u0026lt;approach rate\u0026gt;, \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 -50% drawsize\nDark Desc: Dark hides the receptors (but not the noteflashes). There is a column-specific variant and it adds onto the normal variant.\nBecause of this additive property, the range often used can go between -100 and 100%.\nQuirks: N/A\nAvailable variants: Dark, DarkCol\nAvailable variants (modstring): dark, dark\u0026lt;column\u0026gt;\nPlayerOptions format: Dark(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Dark(1, 0.125)\nColumn-specific format: DarkCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: DarkCol(1, 0.25, 1, true):DarkCol(2, 0.5, 1, true):DarkCol(3, 0.75, 1, true):DarkCol(4, 0.90, 1, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.125 100% dark *1 25% dark1, *1 50% dark2, *1 75% dark3, *1 90% dark4\nDark video example\nStealth Desc: Stealth hides the notes. When activating, notes start glowing white (0 to 50%), and then the glow fades away to an invisible note (50 to 100%). There\u0026rsquo;s a column-specific version. All variants add onto eachother, so it\u0026rsquo;s possible to have one variant at 100%, and undo it for another type with a different variant at -100%.\nBecause of this additive property, the range often used can go between -100 and 100%.\nStealthMines affects the mines only, while StealthHolds only affects the hold bodies (topcap, body, bottomcap)\nNotITG has column-specific versions of those variants, too.\nQuirks: N/A\nAvailable variants: Stealth, StealthCol, StealthHolds, StealthMines\nAvailable variants (modstring): stealth, stealth\u0026lt;column\u0026gt;, stealthmines, minestealth (NotITG\u0026rsquo;s name for stealthmines), minestealth\u0026lt;column\u0026gt; (NotITG only), hidemines (NotITG alias), hidemines\u0026lt;column\u0026gt; (NotITG alias), stealthholds, holdstealth (NotITG\u0026rsquo;s name for stealthholds), holdstealth\u0026lt;columns\u0026gt; (NotITG\u0026rsquo;s only), hideholds (NotITG alias), hideholds\u0026lt;column\u0026gt; (NotITG alias)\nPlayerOptions format: \u0026lt;Stealth variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Stealth(0.90, 1, true):StealthMines(-0.4, 1)\nColumn-specific format: StealthCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthCol(1, 0.25, 1, true):StealthCol(2, 0.5, 1, true):StealthCol(3, 0.75, 1, true):StealthCol(4, 0.90, 1, true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 90% stealth, *1 -40% stealthmines *1 25% stealth1, *1 50% stealth2, *1 75% stealth3, *1 90% stealth4\nStealth video example\nAvailable sub modifiers: StealthType Desc: When active, Stealth, Sudden, Hidden, Blink and RandomVanish act based on y offset (distance from the receptor) instead of the visible y position on the screen.\nPlayerOptions format: StealthType(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; stealthtype\nStealthPastReceptors Desc: When active, Stealth, Sudden, Hidden, Blink and RandomVanish will not revert to zero upon passing the receptors.\nPlayerOptions format: StealthPastReceptors(\u0026lt;enable\u0026gt;)\nModstring format: \u0026lt;enable\u0026gt; stealthpastreceptors\nSudden Desc: Notes start invisible and appear at around the middle of the notefield.\nDue to how Stealth works, values between -100 and 100% usually get used.\nQuirks: When combined with Hidden, the appearance point moves down.\nPlayerOptions format: Sudden(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Sudden(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; sudden\nExample: *1 100% sudden\nSudden video example\nAvailable sub modifiers: SuddenOffset Desc: Shifts the point where the notes appear. Positive values shifts the point away from the receptors, while negative values shift it towards the receptors.\nPlayerOptions format: SuddenOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; suddenoffset\nHidden Desc: Notes start visible and disappear at around the middle of the notefield.\nDue to how Stealth works, values between -100 and 100% usually get used.\nQuirks: When combined with Sudden, the disappearance point moves up.\nPlayerOptions format: Hidden(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Hidden(0.75, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hidden\nExample: *1 75% hidden\nHidden video example\nAvailable sub modifiers: HiddenOffset Desc: Shifts the point where the notes disappear. Positive values shifts the point away from the receptors, while negative values shift it towards the receptors.\nPlayerOptions format: HiddenOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; hiddenoffset\nBlink Desc: The notes blink in and out of sight. The blinking itself is based on game uptime.\nUnlike most modifiers, this only has an on and off state. Any positive magnitude will work.\nQuirks: Due to the magnitude not affecting anything and the clock being based on game uptime (unless ModTimer is changed), Blink is considered a bad mod in terms of scripted modfiles, and its\u0026rsquo; use is discouraged.\nPlayerOptions format: Blink(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Blink(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; blink\nExample: *1 100% blink\nBlink video example\nRandomVanish Desc: The notes disappear, then reappear in a different/random column. NotITG supposedly has an offset sub modifier. NotITG also split this modifier into separate \u0026ldquo;Randomize\u0026rdquo; and \u0026ldquo;Vanish\u0026rdquo; modifiers.\nNot used that much.\nQuirks: The \u0026ldquo;Random\u0026rdquo; feature of \u0026ldquo;RandomVanish\u0026rdquo; was removed in SM5 beta2a, but should fully work in NotITG.\nPlayerOptions format: RandomVanish(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: RandomVanish(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; randomvanish\nExample: *1 100% randomvanish\nRandomVanish video example\n","description":"Visibility Modifiers Visibility modifiers hide various parts of the gameplay screen, such as the background, notes, receptors and other things.\nCover Desc: Cover hides the song background. The range between fully lit and fully hidden scales based on the current value of the BGBrightness preference.\nUse negative amounts to bring back the background if BGBrightness is less than 1. A lot of modfiles use large amounts of negative cover to deal with any positive value BGBrightness could have."},{"id":51,"href":"/dev/","title":"Developers and Creators","parent":"Project OutFox Wiki","content":" Lua and Actors Descriptions about the actor types available on OutFox and the general anatomy on how to create one. Effect Simfiles Guide to Modifiers An explanation on how modifiers (mods) work and how to include them in your simfile. Introduction to Theming Learn how to create custom themes for the engine. ","description":" Lua and Actors Descriptions about the actor types available on OutFox and the general anatomy on how to create one. Effect Simfiles Guide to Modifiers An explanation on how modifiers (mods) work and how to include them in your simfile. Introduction to Theming Learn how to create custom themes for the engine. "},{"id":52,"href":"/dev/editor/","title":"Editor","parent":"Developers and Creators","content":"The OutFox chart editor brings a lot of new elements that can assist you on chart and modfile creations. The editor is constantly being updated, so a lot of changes might happen between versions. These changes will be tagged with the version number next to it (ex. (4.11.0)) to determine the version that introduced this change. Adding/Manipulating notes Defining Timing Data Editor Preferences ","description":"The OutFox chart editor brings a lot of new elements that can assist you on chart and modfile creations. The editor is constantly being updated, so a lot of changes might happen between versions. These changes will be tagged with the version number next to it (ex. (4.11.0)) to determine the version that introduced this change. Adding/Manipulating notes Defining Timing Data Editor Preferences "},{"id":53,"href":"/roadmap/","title":"Our Project Roadmap","parent":"Project OutFox Wiki","content":" OutFox Alpha 3.0 to 4.0 Roadmap ","description":" OutFox Alpha 3.0 to 4.0 Roadmap "},{"id":54,"href":"/roadmap/2019/","title":"OutFox Alpha 3.0 to 4.0 Roadmap","parent":"Our Project Roadmap","content":" OutFox Alpha 3.0 to 4.0 Roadmap The following list is what the project planned and needed to have ready in time for our first public Alpha build that was released on the 16th December 2019. This roadmap was what we targeted during our alpha 3 stage, commonly known as \u0026lsquo;bronze\u0026rsquo; internally. We had a branch running alongside which was known as \u0026lsquo;silver\u0026rsquo; as it had been tried and tested code from a lot of work done before.\nDue to how little time we had and after the branch merge fail which lost us around 5 months work on this fork, \u0026lsquo;silver\u0026rsquo; was abandoned and restarted as alpha 4. We did not have a properly defined direction during this part of the project, it was more about fixing massive glaring bugs to make the game smoother to build upon, as the base game did not like being changed at all. The other main part of the project at this point was to get MacOSX compiling and moving in the right direction. The game didn\u0026rsquo;t work at all, nor did it even run correctly when we got it working. That ate most of 2019\u0026rsquo;s development time. This was worth it in the long run, as it has made it a lot easier to support newer versions of the OS, as well as the new M1 architecture from Apple.\n✅ Update GLEW ✅ Update and fix MacOSX building and compiling ✅ Fix Windows 7 compiling and crashing ✅ Fix libraries ✅ Change math system ✅ Fix ALSA referencing so the driver works ✅ Fix InputDevice referencing in Linux ✅ Fix clock methodology on MacOSX ✅ Move internal systems to support SDL ✅ LLW fixes on Linux and MacOSX ✅ Rewrite most of darwin code to support Catalina Beta ✅ Move codebase to C++11 Completion Date: 30th December 2019 ","description":"OutFox Alpha 3.0 to 4.0 Roadmap The following list is what the project planned and needed to have ready in time for our first public Alpha build that was released on the 16th December 2019. This roadmap was what we targeted during our alpha 3 stage, commonly known as \u0026lsquo;bronze\u0026rsquo; internally. We had a branch running alongside which was known as \u0026lsquo;silver\u0026rsquo; as it had been tried and tested code from a lot of work done before."},{"id":55,"href":"/releases/A4.0/","title":"OutFox Alpha 4.0 Build","parent":"Release History","content":" Release Date: 16th December 2019 Fix up NoteField zoom and positioning math for soundwaves. Fix Linux Compile. Fix Mine Rotation. Fix FFMPEG memory leak. Fix Credits with inconsistent shakesoda. Add back select button menu, but also change the presentation of the options themselves to make it more prominent. Set Loading Window Size on Linux. Allow any splash size on windows. Ensure Frame is persistent and not lose data. Fix screengameplay background.lua calling the old func instead of the updated one. Fix splash being width locked. Make Eval\u0026rsquo;s noteskin actors grab from the Stage ModsLevel. Fix making Credit\u0026rsquo;s and Openings work on any Theme\u0026rsquo;s screen height. Fix typing issue with DrawDistanceBeforeTargetsPixels. Fix TapNoteScore_Attack being invalid by replacing it with a valid TNS. Allow PLayerAI to use Pro Judgments. Remove delete on sharedptr in D3D. Fix any image file extension support for avatars. 🐉Update soundman earlier to stop usb cards lagging. Hotfix Crash fixes. 🐉Fix Colour Profile on D3D. Fix Input detection on MacOS. Update MacOS App Icon. Fix typo pointed out by shakesoda. Make map controllers screen BG more minimal, strip down overlay on input calibration gameplay. New HD Noteskins. Include new core mediaframeworks into CMake. NSIS and Installer fixes. Fix Lua Compile Warning. Allow Lua access to new Module system Fix Lua Module file permission issues Apply Lua Module system to default theme objects Fix Topcap Effects. Add Stretch and shrink holds. Make BitmapText Accept floats and then convert to int to prevent Lua errors. Tweak lifebar and judgment for shake, explain ComboIsPerRow option in theme. ","description":"Release Date: 16th December 2019 Fix up NoteField zoom and positioning math for soundwaves. Fix Linux Compile. Fix Mine Rotation. Fix FFMPEG memory leak. Fix Credits with inconsistent shakesoda. Add back select button menu, but also change the presentation of the options themselves to make it more prominent. Set Loading Window Size on Linux. Allow any splash size on windows. Ensure Frame is persistent and not lose data. Fix screengameplay background."},{"id":56,"href":"/dev/mods/Mods-9-Path-Mods/","title":"Path modifiers","parent":"Guide to Modifiers","content":"Path modifiers affect the path a note takes to the receptor, often curving it in some way or creating a type of wave in the movement.\nDrunk Desc: Drunk makes the notes and receptors move left and right in a constantly shifting sinusoidal wave. There are extra variants for the Y and Z axis, as well as tangent variants.\nCommon values can be practically any value, due to its\u0026rsquo; wide use in modfiles. Try starting with -200 to 200% for an initial effect.\nQuirks: When combined with Tipsy in SM5.1 and earlier, hold bodies may detatch from the hold head. The phase of the sinusoidal wave depends on game uptime unless the mod timer is changed.\nAvailable variants: Drunk, DrunkY, DrunkZ, TanDrunk, TanDrunkY, TanDrunkZ\nAvailable variants (modstring): drunk, drunky, drunkz, tandrunk, tandrunky, tandrunkz\nPlayerOptions format: \u0026lt;Drunk variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Drunk(3, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 300% drunk\nDrunk video example\nAvailable sub modifiers: DrunkOffset Desc: Offsets the phase of the sinusoidal wave, which is added onto the offset caused by time.\nAvailable variants: DrunkOffset, DrunkYOffset, DrunkZOffset, TanDrunkOffset, TanDrunkYOffset, TanDrunkZOffset\nAvailable variants (modstring): drunkoffset, drunkyoffset, drunkzoffset, tandrunkoffset, tandrunkyoffset, tandrunkzoffset\nPlayerOptions format: \u0026lt;DrunkOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkPeriod Desc: Alters the period of the sinusoidal wave. Positive values decrease the period, negative values increase the period. -100% just results in the columns moving, but the notes won\u0026rsquo;t go back and forth.\nAvailable variants: DrunkPeriod, DrunkYPeriod, DrunkZPeriod, TanDrunkPeriod, TanDrunkYPeriod, TanDrunkZPeriod\nAvailable variants (modstring): drunkperiod, drunksize (NotITG alias for drunkperiod), drunkyperiod, drunkysize (NotITG alias for drunkyperiod), drunkzperiod, drunkzsize (NotITG alias for drunkzperiod), tandrunkperiod, tandrunksize (NotITG alias for tandrunkperiod), tandrunkyperiod, tandrunkysize (NotITG alias for tandrunkyperiod), tandrunkzperiod, tandrunkzsize (NotITG alias for tandrunkzperiod)\nPlayerOptions format: \u0026lt;DrunkPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkSpacing Desc: Alters the amount of space between the columns, and is cyclical like DrunkOffset. Used to be called \u0026ldquo;DrunkOffset\u0026rdquo; before OutFox and NotITG v4.\nAvailable variants: DrunkSpacing, DrunkYSpacing, DrunkZSpacing, TanDrunkSpacing, TanDrunkYSpacing, TanDrunkZSpacing\nAvailable variants (modstring): drunkspacing, drunkyspacing, drunkzspacing, tandrunkspacing, tandrunkyspacing, tandrunkzspacing\nPlayerOptions format: \u0026lt;DrunkSpacing variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDrunkSpeed Desc: Affects the speed of Drunk through a multiplier. Positive numbers speed it up, negative numbers slow it down, -100% freezes the effect. Will look really jittery when using game uptime as the mod timer.\nAvailable variants: DrunkSpeed, DrunkYSpeed, DrunkZSpeed, TanDrunkSpeed, TanDrunkYSpeed, TanDrunkZSpeed\nAvailable variants (modstring): drunkspeed, drunkyspeed, drunkzspeed, tandrunkspeed, tandrunkyspeed, tandrunkzspeed\nPlayerOptions format: \u0026lt;DrunkSpeed variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBounce Desc: Notes bounce to the right. There\u0026rsquo;s also a Z axis variant that has notes bounce towards the player.\n100% is good enough to give a good idea for the effect.\nQuirks: N/A\nAvailable variants: Bounce, BounceZ\nAvailable variants (modstring): bounce, bouncez\nPlayerOptions format: \u0026lt;Bounce variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Bounce(1, 0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.25 100% bounce\nBounce video example\nAvailable sub modifiers: BouncePeriod Desc: Affects the period of the bouncing. Positive numbers increase the period, while negative numbers decrease the period. -100% moves the columns to the highest point of the bounce.\nAvailable variants: BouncePeriod, BounceZPeriod\nAvailable variants (modstring): bounceperiod, bouncezperiod\nPlayerOptions format: \u0026lt;BouncePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBounceOffset Desc: Offsets the phase of the bounce.\nAvailable variants: BounceOffset, BounceZOffset\nAvailable variants (modstring): bounceoffset, bouncezoffset\nPlayerOptions format: \u0026lt;BounceOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nTornado Desc: Notes swirl around as they go to the receptor. Has a Z axis variant, as well as tangent variants.\nCommon values range from -200 to 200%\nQuirks: N/A\nAvailable variants: Tornado, TornadoZ, TanTornado, TanTornadoZ\nAvailable variants (modstring): tornado, tornadoz, tantornado, tantornadoz\nPlayerOptions format: \u0026lt;Tornado variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Tornado(1, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 100% tornado\nTornado video example\nAvailable sub modifiers: TornadoOffset Desc: Offsets the phase of the sinusoidal curves for each column. Large values are needed for noticable effects.\nAvailable variants: TornadoOffset, TornadoZOffset, TanTornadoOffset, TanTornadoZOffset\nAvailable variants (modstring): tornadooffset, tornadozoffset, tantornadooffset, tantornadozoffset\nPlayerOptions format: \u0026lt;TornadoOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nTornadoPeriod Desc: Affects the period of the sinusoidal curves for each column. Positive values decrease the period, while negative values increase the period. -100% visually removes the effect.\nAvailable variants:\nAvailable variants (modstring):\nPlayerOptions format: \u0026lt;TornadoPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBumpy Desc: Notes go back and forth on the z axis as they go towards the receptor. Has variants for all axis as well as tangent variants and column-specific variants. Unlike the variants for Stealth and Dark, this does not add onto the values for normal Bumpy.\nCommon values could be practically anywhere due to its\u0026rsquo; wide use in modfiles. Try starting with -300 to 300% for an initial amount.\nQuirks: N/A\nAvailable variants: Bumpy, BumpyX, BumpyY, TanBumpy, TanBumpyY, TanBumpyZ\nAvailable variants (column-specific): BumpyCol, BumpyXCol, BumpyYCol, TanBumpyCol, TanBumpyXCol, TanBumpyYCol\nAvailable variants (modstring): bumpy, bumpyx, bumpyy, bumpyz (NotITG alias for bumpy), bumpy\u0026lt;column\u0026gt;, bumpyx\u0026lt;column\u0026gt;, bumpyy\u0026lt;column\u0026gt;, bumpyz\u0026lt;column\u0026gt; (NotITG alias for bumpy\u0026lt;column\u0026gt;), tanbumpy, tanbumpyx, tanbumpyy, tanbumpyz (NotITG alias for tanbumpy), tanbumpy\u0026lt;column\u0026gt;, tanbumpyx\u0026lt;column\u0026gt;, tanbumpyy\u0026lt;column\u0026gt;, tanbumpyz\u0026lt;column\u0026gt; (NotITG alias for tanbumpy\u0026lt;column\u0026gt;)\nPlayerOptions format: \u0026lt;Bumpy variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Bumpy(3, 0.5)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: BumpyCol(1, -3, 3, true):BumpyCol(2, -1, 1, true):BumpyCol(3, 1, 1, true):BumpyCol(4, 3, 3) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.5 300% Bumpy\nBumpy video example\nAvailable sub modifiers: BumpyOffset Desc: Offsets the phase of the back and forth wave. The min/max and middle points are reachable through increments of 25%.\nAvailable variants: BumpyOffset, BumpyXOffset, BumpyYOffset, TanBumpyOffset, TanBumpyXOffset, TanBumpyYOffset\nAvailable variants (column-specific): BumpyOffsetCol, BumpyXOffsetCol, BumpyYOffsetCol, TanBumpyOffsetCol, TanBumpyXOffsetCol, TanBumpyYOffsetCol\nAvailable variants (modstring): bumpyoffset, bumpyxoffset, bumpyyoffset, bumpyzoffset (NotITG alias for bumpyoffset), bumpyoffset\u0026lt;column\u0026gt;, bumpyxoffset\u0026lt;column\u0026gt;, bumpyyoffset\u0026lt;column\u0026gt;, bumpyzoffset\u0026lt;column\u0026gt; (NotITG alias for bumpyoffset\u0026lt;column\u0026gt;), tanbumpyoffset, tanbumpyxoffset, tanbumpyyoffset, tanbumpyoffset\u0026lt;column\u0026gt;, tanbumpyxoffset\u0026lt;column\u0026gt;, tanbumpyyoffset\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;BumpyOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBumpyPeriod Desc: Affects the period of the back and forth wave. Positive values increase the period, while negative values decrease the period. -100% stops the effect and moves the columns to the negative-most value.\nAvailable variants: BumpyPeriod, BumpyXPeriod, BumpyYPeriod, TanBumpyPeriod, TanBumpyXPeriod, TanBumpyYPeriod\nAvailable variants (column-specific): BumpyPeriodCol, BumpyXPeriodCol, BumpyYPeriodCol, TanBumpyPeriodCol, TanBumpyXPeriodCol, TanBumpyYPeriodCol\nAvailable variants (modstring): bumpyperiod, bumpyxperiod, bumpyyperiod, bumpyzperiod (NotITG alias for bumpyperiod), bumpysize (NotITG alias for bumpyperiod), bumpyxsize (NotITG alias for bumpyxperiod), bumpyysize (NotITG alias for bumpyyperiod), bumpyzsize (NotITG alias for bumpyperiod), bumpyperiod\u0026lt;column\u0026gt;, bumpyxperiod\u0026lt;column\u0026gt;, bumpyyperiod\u0026lt;column\u0026gt;, bumpyzperiod\u0026lt;column\u0026gt; (NotITG alias for bumpyperiod\u0026lt;column\u0026gt;), tanbumpyperiod, tanbumpyxperiod, tanbumpyyperiod, tanbumpyzperiod (NotITG alias for tanbumpyperiod), tanbumpysize (NotITG alias for tanbumpyperiod), tanbumpyxsize (NotITG alias for tanbumpyxperiod), tanbumpyysize (NotITG alias for tanbumpyyperiod), tanbumpyzsize (NotITG alias for tanbumpyperiod), tanbumpyperiod\u0026lt;column\u0026gt;, tanbumpyxperiod\u0026lt;column\u0026gt;, tanbumpyyperiod\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;BumpyPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nColumn-specific format: \u0026lt;Column-specific variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeat Desc: Notes \u0026amp; receptors pulse to the left and right to the beat. Contrary to popular belief, it is not the only mod. There are variants for each axis.\nCommon values range from -250% to 200%, but could be practically anything because of its\u0026rsquo; wide use in modfiles.\nQuirks: Beat in OpenITG \u0026amp; NotITG does not respond well to very high BPMs.\nAvailable variants: Beat, BeatY, BeatZ\nAvailable variants (modstring): beat, beaty, beatz\nPlayerOptions format: \u0026lt;Beat variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Beat(1.5, 0.2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 150% Beat\nBeat video example\nAvailable sub modifiers: BeatMult Desc: Multiply the BPM that Beat is reacting to. Negative values slow down, while positive values speed up. -50% is half, while 100% is double.\nAvailable variants: BeatMult, BeatYMult, BeatZMult\nAvailable variants (modstring): beatmult, beatymult, beatzmult\nPlayerOptions format: \u0026lt;BeatMult variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatOffset Desc: Offset the beat that the effect is going off of. 50% makes the effect act on the half beat instead of on the beat.\nAvailable variants: BeatOffset, BeatYOffset, BeatZOffset\nAvailable variants (modstring): beatoffset, beatyoffset, beatzoffset\nPlayerOptions format: \u0026lt;BeatOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatPeriod Desc: Affects the period of the wave used. Positive values increase the period, negative values reduce the period. -100% makes the field shift back and forth to the beat.\nAvailable variants: BeatPeriod, BeatYPeriod, BeatZPeriod\nAvailable variants (modstring): beatperiod, beatyperiod, beatzperiod, beatsize (NotITG alias for beatperiod), beatysize (NotITG alias for beatyperiod), beatzsize (NotITG alias for beatzperiod)\nPlayerOptions format: \u0026lt;BeatPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBeatCap (NotITG only) Desc: When active (any nonzero magnitude), Beat acts like it does in SM5, being able to properly react to high BPMs.\nAvailable variants (modstring): beatcap, beatcapy, beatcapz\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nZigzag Desc: Notes move left and right on a triangle wave. There is also a Z axis variant.\nCommon values range from -400 to 400%\nQuirks: N/A\nAvailable variants: Zigzag, ZigzagZ\nAvailable variants (modstring): zigzag, zigzagz\nPlayerOptions format: \u0026lt;Zigzag variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Zigzag(2, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *2 200% zigzag\nZigzag video example\nAvailable sub modifiers: ZigzagOffset Desc: Offsets the phase of the triangle wave used.\nAvailable variants: ZigzagOffset, ZigzagZOffset\nAvailable variants (modstring): zigzagoffset, zigzagzoffset\nPlayerOptions format: \u0026lt;ZigzagOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nZigzagPeriod Desc: Affects the period of the triangle wave. Positive values increase the period, negative values decrease the period, -100% shifts the field to the negative extrema.\nAvailable variants: ZigzagPeriod, ZigzagZPeriod\nAvailable variants (modstring): zigzagperiod, zigzagzperiod, zigzagsize (NotITG alias for zigzagperiod), zigzagzsize (NotITG alias for zigzagzperiod)\nPlayerOptions format: \u0026lt;ZigzagPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSawtooth Desc: Notes move left and right on a sawtooth wave. There is also a Z axis variant.\nCommon values range from -200 to 200%.\nQuirks: N/A\nAvailable variants: Sawtooth, SawtoothZ\nAvailable variants (modstring): sawtooth, sawtoothz\nPlayerOptions format: \u0026lt;Sawtooth variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Sawtooth(2, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 200% sawtooth\nSawtooth video example\nAvailable sub modifiers: SawtoothOffset (NotITG only) Desc: Offsets the sawtooth wave.\nAvailable variants (modstring): sawtoothoffset, sawtoothzoffset\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSawtoothPeriod Desc: Affects the period of the sawtooth wave. Positive values increase the period, negative values decrease the period. -100% makes the notefield disappear.\nAvailable variants: SawtoothPeriod, SawtoothZPeriod\nAvailable variants (modstring): sawtoothperiod, sawtoothzperiod, sawtoothsize (NotITG alias for sawtoothperiod), sawtoothzsize (NotITG alias for sawtoothzperiod)\nPlayerOptions format: \u0026lt;SawtoothPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSquare Desc: Notes \u0026amp; receptors are placed onto a (mostly) square wave. There is also a Z axis variant.\nCommon values range from -150 to 150%\nQuirks: The wave period is different from NotITG. Refer to https://gist.github.com/MrThatKid/2a8525a1abe1cb95073ef4eb64590b00\nAvailable variants: Square, SquareZ\nAvailable variants (modstring): square, squarez\nPlayerOptions format: \u0026lt;Square variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Square(-0.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 -50% square\nSquare video example\nAvailable sub modifiers: SquareOffset Desc: Offsets the square wave used.\nAvailable variants: SquareOffset, SquareZOffset\nAvailable variants (modstring): squareoffset, squarezoffset\nPlayerOptions format: \u0026lt;SquareOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSquarePeriod Desc: Alters the period of the square wave. Positive values increase the period, negative values decrease the period. -100% shifts the field to the positive extrema.\nAvailable variants: SquarePeriod, SquareZPeriod\nAvailable variants (modstring): squareperiod, sqaurezperiod\nPlayerOptions format: \u0026lt;SquarePeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigital Desc: Notes are placed onto a \u0026lsquo;digital\u0026rsquo; sine wave. (Think of a sine wave, but more blocky looking). There is a variant for the Z axis, as well as tangent variants. Common values range from -400 to 400%\nQuirks: The wave period is different from NotITG. Refer to https://gist.github.com/MrThatKid/2a8525a1abe1cb95073ef4eb64590b00\nAvailable variants: Digital, DigitalZ, TanDigital, TanDigitalZ\nAvailable variants (modstring): Digital, DigitalZ, TanDigital, TanDigitalZ\nPlayerOptions format: \u0026lt;Digital variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Digital(-1.5, 3)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *3 -150% digital\nDigital video example\nAvailable sub modifiers: DigitalSteps Desc: Affects how many \u0026rsquo;levels\u0026rsquo; the digital sine wave has. Positive values make the wave smoother, while negative values make the wave more blocky. -50% visually removes the effect, -100% hides the notefield.\nAvailable variants: DigitalSteps, DigitalZSteps, TanDigitalSteps, TanDigitalZSteps\nAvailable variants (modstring): digitalsteps, digitalzsteps, tandigitalsteps, tandigitalzsteps\nPlayerOptions format: \u0026lt;DigitalSteps variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigitalOffset Desc: Offsets the sine wave used in Digital. It\u0026rsquo;s really granular, so large amounts and large approach rates may be needed.\nAvailable variants: DigitalOffset, DigitalZOffset, TanDigitalOffset, TanDigitalZOffset\nAvailable variants (modstring): digitaloffset, digitalzoffset, tandigitaloffset, tandigitalzoffset\nPlayerOptions format: \u0026lt;DigitalOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nDigitalPeriod Desc: Affects the period of the sine wave. Positive values increase the period, negative values decrease the period. -100% shifts the field to the negative extrema.\nAvailable variants: DigitalPeriod, DigitalZPeriod, TanDigitalPeriod, TanDigitalZPeriod\nAvailable variants (modstring): digitalperiod, digitalzperiod, tandigitalperiod, tandigitalzperiod\nPlayerOptions format: \u0026lt;DigitalPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiral Desc: Spiral is a set of modifiers that move notes in a spiral towards the receptors. There are three axis variants that are usually combined to make the full spiral effect (X + Y, Y + Z, X + Z)\nCommon values range from -200 to 200%, with a period of -99% as a starting point.\nQuirks: When at 50% Reverse, the spiral effect looks much more like a full spiral. SpiralY does not affect holds in OutFox unless some NoteField functions are used (Refer to the SpiralHolds sub modifier for more details. The video example uses NoteField:set_holds_use_nonstandard_y_pos only.)\nAvailable variants: SpiralX, SpiralY, SpiralZ\nAvailable variants (modstring): spiralx, spiraly, spiralz\nPlayerOptions format: \u0026lt;Spiral variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: SpiralX(1,1,true):SpiralY(1,1,true):SpiralXPeriod(-0.99,1,true):SpiralYPeriod(-0.99,1,true)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% spiralx, *1 100% spiraly, *1 -99% spiralxperiod, *1 -99% spiralyperiod\nSpiral video example\nAvailable sub modifiers: SpiralOffset Desc: Offsets the waves used for the spiral.\nAvailable variants: SpiralXOffset, SpiralYOffset, SpiralZOffset\nAvailable variants (modstring): spiralxoffset, spiralyoffset, spiralzoffset\nPlayerOptions format: \u0026lt;SpiralOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiralPeriod Desc: Affects the period of the waves used in spiral. Positive values decrease the period, negative values increase the period, -100% just has notes come in at a diagonal line.\nAvailable variants: SpiralXPeriod, SpiralYPeriod, SpiralZPeriod\nAvailable variants (modstring): spiralxperiod, spiralyperiod, spiralzperiod\nPlayerOptions format: \u0026lt;SpiralPeriod variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nSpiralHolds (NotITG only) Desc: When at a positive amount, the hold renderer is switched out for one that can handle spirals better with proper uv scaling. When at -100%, the hold render uses unscaled uvs for the holds, emulating old spiralholds behavior.\nThe old behavior can be mostly replicated in SM5 by combining NoteField:set_holds_orient_to_travel_dir with NoteField:set_holds_use_nonstandard_y_pos (works for most cases) or NoteField:set_hold_length_uses_beats (when dealing with ~50% reverse, holds become much more smooth)\nAvailable variants (modstring): spiralholds, holdtype (alias)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nAsymptote Desc: The receptors become the zero point of an asymptote on the x axis, while notes get closer to it on the x axis.\nThere aren\u0026rsquo;t any real common values because this modifier isn\u0026rsquo;t used that much.\nQuirks: N/A\nPlayerOptions format: \u0026lt;Asymptote variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Asymptote(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% asymptote\nAsymptote video example\nAvailable sub modifiers: AsymptoteOffset Desc: Moves the asymptote line. Negative values move it down.\nPlayerOptions format: AsymptoteOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; asymptoteoffset\nAsymptoteScale Desc: Affects the curve before veering off towards the asymptote. Negative values make the curve more noticable. Going past -100% flips the curve. Being at -100% hides the notefield. (Has an alias of \u0026ldquo;asymptotesize\u0026rdquo; in NotITG)\nPlayerOptions format: AsymptoteScale(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; asymptotescale\nParabola Desc: A set of modifiers that turn the path into a parabola, with the zero point being the receptors. There are variants for all axis.\nCommon values range from -500 to 500%\nQuirks: N/A\nAvailable variants: ParabolaX, ParabolaY, ParabolaZ\nAvailable variants (modstring): parabolax, parabolay, parabolaz\nPlayerOptions format: \u0026lt;Parabola variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ParabolaX(2, 0.125)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.125 200% parabolax\nParabola video example\nAvailable sub modifiers: ParabolaOffset Desc: Moves the zero point of the parabola.\nAvailable variants: ParabolaXOffset, ParabolaYOffset, ParabolaZOffset\nAvailable variants (modstring): parabolaxoffset, parabolayoffset, parabolazoffset\nPlayerOptions format: \u0026lt; variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nCubic Desc: A set of modifiers that turn the path into a cubic graph, with the zero point being the receptors. There are variants for all axis.\nCommon values range from -200% to 200%\nQuirks: N/A\nAvailable variants: CubicX, CubicY, CubicZ\nAvailable variants (modstring): cubicx, cubicy, cubicz\nPlayerOptions format: \u0026lt;Cubic variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CubicZ(3, 10)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *10 300% cubicz\nCubic video example\nAvailable sub modifiers: CubicOffset Desc: Moves the zero point of the cubic graph. This modifier is really granular, so use large amounts.\nAvailable variants: CubicXOffset, CubicYOffset, CubicZOffset\nAvailable variants (modstring): cubicxoffset, cubicyoffset, cubiczoffset\nPlayerOptions format: \u0026lt;CubicOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nXmode (SM5 only) Desc: A replication of Pump It Up\u0026rsquo;s X scroll mode.\nThis is rarely used, so 100% should work fine.\nQuirks: The effect is reversed on player 2 in singles mode and is reversed on the second half of the notefield if doubles modes are used. (The video example shows player 1)\nPlayerOptions format: Xmode(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Xmode(1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; xmode\nExample: *1 100% xmode\nXmode video example\nAttenuate Desc: Emphasises the note position the further a note gets away from the receptor. Has variants for all axis. NotITG V3 and later does not have the Y axis variant.\nCommon values range from -300 to 300%\nQuirks: This modifier is applied after every other modifier has run, so all path modifiers are taken into account for this.\nAvailable variants: AttenuateX, AttenuateY, AttenuateZ\nAvailable variants (modstring): attenuatex, attenuate (NotITG name), attenuatey, attenuatez\nPlayerOptions format: \u0026lt;Attenuate variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: AttenuateX(2, 4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *4 200% attenuatex\nAttenuate video example\nAvailable sub modifiers: AttenuateOffset Desc: Offset the position emphasis used in Attenuate. Available variants: AttenuateXOffset, AttenuateYOffset, AttenuateZOffset\nAvailable variants (modstring): attenuatexoffset, attenuateoffset (NotITG name), attenuateyoffset, attenuatezoffset\nPlayerOptions format: \u0026lt;AttenuateOffset variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\n","description":"Path modifiers affect the path a note takes to the receptor, often curving it in some way or creating a type of wave in the movement.\nDrunk Desc: Drunk makes the notes and receptors move left and right in a constantly shifting sinusoidal wave. There are extra variants for the Y and Z axis, as well as tangent variants.\nCommon values can be practically any value, due to its\u0026rsquo; wide use in modfiles."},{"id":57,"href":"/releases/","title":"Release History","parent":"Project OutFox Wiki","content":" OutFox Alpha 0.5.0 Full Changelog Build OutFox Alpha 0.4.18 Build OutFox Alpha 4.17.0 Build OutFox Alpha 4.16.0 Build OutFox Alpha 4.15.1 Build OutFox Alpha 4.15.0 Build OutFox Alpha 4.14.0 Build OutFox Alpha 4.13.0 Build OutFox Alpha 4.12.0 Build OutFox Alpha 4.11.0 Build OutFox Alpha 4.10.0 Build OutFox Alpha 4.9.10 Build OutFox Alpha 4.9.9HF3 Build OutFox Alpha 4.9.9HF2 Build OutFox Alpha 4.9.9HF Build OutFox Alpha 4.9.9 Build OutFox Alpha 4.9.8 Build OutFox Alpha 4.9.7GG Build OutFox Alpha 4.9.7 Build OutFox Alpha 4.9.6 Build OutFox Alpha 4.9.5 Build OutFox Alpha 4.9.1 Build OutFox Alpha 4.9.0/HF Build OutFox Alpha 4.8.5 Build OutFox Alpha 4.8.2 Build OutFox Alpha 4.8.1 Build OutFox Alpha 4.8.0 Build OutFox Alpha 4.6.0 Build OutFox Alpha 4.6.0 RC3 Build OutFox Alpha 4.6.0 RC2 Build OutFox Alpha 4.6.0 RC1 Build OutFox Alpha 4.5.9 Build OutFox Alpha 4.5.8 Build OutFox Alpha 4.5.6 Build OutFox Alpha 4.5.0 Build OutFox Alpha 4.4 Build OutFox Alpha 4.3 Build OutFox Alpha 4.2 Build OutFox Alpha 4.1 Build OutFox Alpha 4.0 Build ","description":"OutFox Alpha 0.5.0 Full Changelog Build OutFox Alpha 0.4.18 Build OutFox Alpha 4.17.0 Build OutFox Alpha 4.16.0 Build OutFox Alpha 4.15.1 Build OutFox Alpha 4.15.0 Build OutFox Alpha 4.14.0 Build OutFox Alpha 4.13.0 Build OutFox Alpha 4.12.0 Build OutFox Alpha 4.11.0 Build OutFox Alpha 4.10.0 Build OutFox Alpha 4.9.10 Build OutFox Alpha 4.9.9HF3 Build OutFox Alpha 4.9.9HF2 Build OutFox Alpha 4.9.9HF Build OutFox Alpha 4.9.9 Build OutFox Alpha 4.9.8 Build OutFox Alpha 4."},{"id":58,"href":"/user-guide/setup/","title":"Setup","parent":"User Guide","content":"","description":""},{"id":59,"href":"/user-guide/meta/about/","title":"About Project OutFox","parent":"Front Matter","content":" What is Project OutFox? Project OutFox is a fork of StepMania 5.1. The project began to improve the main repo and it\u0026rsquo;s codebase, however due to community feedback and response the project changed direction into what it is today; A working museum of scrolling rhythm games playable within a single client.\nThe team provides a free-to-play cross-platform engine supporting and supported by the many new communities and areas that OutFox now supports. It continues the legacy of the early pre 3.0 StepMania developers: to enable everyone to enjoy the rhythm no matter what game they play, or what they play it on.\nThe original aims (kept here for history) were as follows, most of these have now been met:\nRefactoring its internal codebase to improve performance, adhere to modern coding practices, and enhance its capabilities on modern hardware and other platforms. Working on support for single-board ARM systems such as Raspberry Pi, including the new M1 ARM systems, and improve performance on legacy systems. Continue the legacy of StepMania 3; Refactor the ideas and visions from the early developers in making the game a fully fledged engine, not just focused primarily on one mode. Restoring and improving support for other modes beyond dance. Provide the facility to allow better customisation and \u0026lsquo;modding\u0026rsquo; of the UI and functions. We are planning to make the project a cross-platform \u0026ldquo;sandbox\u0026rdquo; for rhythm games, rather than simply a simulator for popular dance game franchises. Create a working museum of rhythm games for the newer generation to experience the major Boom of the early 2000s in a convenient way. As Project OutFox is a continuation of the 5.0.12 and 5.1 codebase (not “5.2”), it remains compatible with almost all existing songs, themes, and noteskins that are supported on these versions (if you do encounter odd behaviour or other issues with older content, please report it to us as a bug). Project OutFox is unrelated to 5.1 -3 (sometimes written as 5.1-3), which was a prior build of 5.2 before it was renamed.\nProject OutFox Teams Development Squirrel Jousway Cube MrThatKid Jose Varela Design Jose Varela Lirodon dj505 Community Moru Zerinho6 Moneko Hanubeki Gabrimax98 RodentVienna Serenity Daniel Rotwind shockdude Sevish Melone Colin The development members are the ones that make OutFox possible. They\u0026rsquo;re the people working on the game engine.\nThe design members are the ones who work on assets, themes and frontend.\nThe community members assists by creating, maintaining and expanding community projects and organizations, such as:\nModerating the Discord Server, Forum, Subreddit and our Bug Hunter Repository; Coordinating Tiny-Foxes, a community group focusing on add-ons and localizations for Project OutFox. The Serenity Team is a subset of Community team, created to help work on the creation and organization of OutFox Community Pack.\n","description":"What is Project OutFox? Project OutFox is a fork of StepMania 5.1. The project began to improve the main repo and it\u0026rsquo;s codebase, however due to community feedback and response the project changed direction into what it is today; A working museum of scrolling rhythm games playable within a single client.\nThe team provides a free-to-play cross-platform engine supporting and supported by the many new communities and areas that OutFox now supports."},{"id":60,"href":"/dev/actors/actortypes/","title":"Actor Types","parent":"Lua and Actors","content":"StepMania (and it\u0026rsquo;s many forks) use what\u0026rsquo;s known as the Actor model. OutFox inherits this behaviour. Everything in the engine is an Actor at its\u0026rsquo; very core.\nBecause everything is an actor, there are many types of actors, which are described below. Not everything listed is able to be created in Lua. Those that aren\u0026rsquo;t will be noted as such. However, all of these can be found in the Lua environment.\nA note on LoadActor() This is a helper function that can be used to dynamically load an actor based on the file type. However, this should not be used as it is more resource intensive and can be easily avoided when the filetype is known. For loading external lua files, loadfile(path)() can be used, though the full path is required.\nDef.Actor Def.ActorFrame Def.ActorFrameTexture Def.ActorMultiVertex Def.ActorProxy Def.ActorScroller Def.BGAnimation Def.BitmapText Def.BPMDisplay Def.ControllerStateDisplay Def.DeviceList Def.DynamicActorScroller Def.GradeDisplay Def.HelpDisplay Def.InputList Def.MemoryCardDisplay Def.MeterDisplay Def.Model Def.NoteField Def.PercentageDisplay Def.Quad Def.ScoreDisplayAliveTime Def.ScoreDisplayCalories Def.SongBPMDisplay Def.SongMeterDisplay Def.Sound Def.Sprite Def.StepsDisplay Def.TextBanner Def.WorkoutGraph ActorFrameTexture It\u0026rsquo;s like an ActorFrame, but instead of displaying what\u0026rsquo;s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its\u0026rsquo; use in NotITG, although the behavior is different. NotITG\u0026rsquo;s version places the screen itself onto a texture instead of what\u0026rsquo;s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window.\nExample:\n--[[ This example will create an ActorFrameTexture that uses a sample BitmapText, and project it to the center to the screen in half of the available size of the viewport window. ]] -- This ActorFrame will contain everything. local t = Def.ActorFrame{} -- First, create the ActorFrameTexture. local AFT = Def.ActorFrameTexture{ InitCommand = function(self) -- Start by adding a name to the texture. This is optional, but best to provide one, -- in case you need to work with several ActorFrameTextures in the same screen. self:SetTextureName( \u0026#34;MyAFT\u0026#34; ) -- Now we need to give the ActorFrameTexture a resolution, which will be -- how much is available to render. -- As this example will be half the size of the available screen, we\u0026#39;ll give the size -- half of the screen. self:SetWidth( SCREEN_WIDTH*.5 ):SetHeight( SCREEN_HEIGHT*.5 ) -- By default this option is disabled, but you can enable it to allow transparency -- in your ActorFrameTexture. -- In this case, it will disabled to show the available render area (shown as black) self:EnableAlphaBuffer( false ) -- We are done with the AFT, so now we have to create it. self:Create() end, -- After the initializer command, any actors included inside will be projected. -- The actors here act exactly the same as a ActorFrame, so they will start on the top-left -- corner of the available draw area given (in this case, half of the screen.) Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;Testing String!\u0026#34;, BeginCommand = function(self) self:zoom(2):spin() -- In order to see the texture, let\u0026#39;s center it. -- Calculations in actors inside of the AFT will need conversion as dimensions are -- different, so for example: -- Since we\u0026#39;re doing half of the screen for dimensions, to center it, we need to half -- that size as well. -- 1280 / 2 = 640 (Screen Size) -- 640 / 2 = 320 (Actor Position) -- 0 - 640 = 0 .. 1 (Size Area, using Screen Size) -- (320/640) = 0.5 (Point of Actor Position using above calculation) self:xy( SCREEN_WIDTH*.25, SCREEN_HEIGHT*.25 ) end } } t[#t+1] = AFT -- Now that we\u0026#39;ve created the ActorFrameTexture, it will be sent into a global texture, that we -- can then grab into a sprite, and it can be done in two ways. These will be shown inside the -- OnCommand in the sprite. -- Method 1: Load sprite directly into sprite. t[#t+1] = Def.Sprite{ -- Sprite name given inside the SetTextureName command in your AFT. Texture = \u0026#34;MyAFT\u0026#34;, -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } -- Method 2: Load sprite on demand on runtime. t[#t+1] = Def.Sprite{ -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) -- Sprite name given inside the SetTextureName command in your AFT. self:Load( \u0026#34;MyAFT\u0026#34; ) end } return t ActorMultiTexture A quad that allows for layering of multiple textures. Every layer\u0026rsquo;s TextureMode can be manipulated using SetTextureMode (Note that it\u0026rsquo;s 0-indexed).\nCan be manipulated like how a Sprite would. once textures are added. By default, every layer is multiplicative.\nActorProxy Creates a visual clone of any Actor given as a target. Anything done to the Target Actor shows up in the Proxy, but anything done to the Proxy will not show up on the Target.\nlocal t = Def.ActorFrame{} -- Let\u0026#39;s say you want to clone this object, it\u0026#39;s a bitmaptext actor that contains some words. -- An example using an object assigned to a local variable. local mytext t[#t+1] = Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Hello There!\u0026#34; InitCommand=function(self) -- We assign this BitmapText to become mytext, so any actor who uses mytext can control this BitmapText. -- Note the InitCommand, this is neccesary so the object can be assigned at construction time, leaving space for it to be properly -- generated. mytext = self end } t[#t+1] = Def.ActorProxy{ BeginCommand=function(self) -- With mytext generated, using a later command in the pipeline, like [On/Begin]Command, we call SetTarget to get mytext, -- and clone the actor that\u0026#39;s in it. self:SetTarget( mytext ) end } -- You can also grab from nested ActorFrames, and even outside of the scope. t[#t+1] = Def.ActorFrame{ Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Hello There!\u0026#34;, Name=\u0026#34;MyText\u0026#34;, }, Def.ActorProxy{ BeginCommand=function(self) -- For information about the GetParent and GetChild functions, check \u0026#34;Anatomy of a Lua Actor: Obtaining Childs and ActorFrame Levels\u0026#34;. self:SetTarget( self:GetParent():GetChild(\u0026#34;MyText\u0026#34;) ) end } } return t -- Finish by returning the ActorFrame. ActorScroller An actor that allows for creating scrolling displays. If BitmapTexts are used, they have to be encased in an ActorFrame.\nBanner A song or course banner, meant for use with custom music wheels or any other place a song\u0026rsquo;s banner would show up.\nBGAnimation A background animation that can be used during gameplay Can either be loaded from a BGAnimation.ini file (Only if Quirks Mode is enabled), or constructed like an ActorFrame would.\nBitmapText Used to display text on screen.\nBPMDisplay Shows the BPMs of the song currently selected. What shows depends on what the simfile sets for the display BPM.\nUsually used as part of ScreenSelectMusic.\nComboGraph Shows the combos that were held throughout the song, with combo breaks separating the blocks, and the largest combo being colored.\nDef.ComboGraph{ InitCommand=function(self) -- Load the MetricsGroup that will create the basis for the graph. self:Load(\u0026#34;ComboGraph\u0026#34;) local playerStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player) local stageStats = STATSMAN:GetCurStageStats() -- Data is graph from the current stage stats and the player\u0026#39;s stats. self:Set(stageStats, playerStageStats) end } ControllerStateDisplay Appears to show the status of controllers/pads.\nCourseContentsList A list of the songs for a given course. Can be given a limit for how many songs to show and how many to show at a time.\nDeviceList Displays a list of all input devices. Often, Keyboard and Mouse will be listed.\nFunctions like most other BitmapText actors.\nDifficultyIcon A Sprite-type actor that shows a different icon for each difficulty.\nIf there number of frames are double the amount of difficulties available in the engine, the player number will offset the icon shown.\nDynamicActorScroller Inherits from ActorScroller, uses only one child Actor to draw all items.\nFadingBanner A song or course banner that can fade between the banner for different songs or courses.\nOften seen in ScreenSelectMusic.\nGradeDisplay Shows the grade a player has gotten for a given song\u0026rsquo;s chart.\nGraphDisplay Displays a graph containing data points for a player\u0026rsquo;s life throughout the stage.\nSettings for a GraphDisplay can only be defined through metrics.\nDef.GraphDisplay{ InitCommand=function(self) -- Load the MetricsGroup that will create the basis for the graph. self:Load(\u0026#34;GraphDisplay\u0026#34;) local playerStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(player) local stageStats = STATSMAN:GetCurStageStats() -- Data is graph from the current stage stats and the player\u0026#39;s stats. self:Set(stageStats, playerStageStats) end } GrooveRadar A recreation of the five-point \u0026ldquo;Groove Radar\u0026rdquo; from DDR. Can take arbitrary values as well as the song\u0026rsquo;s radar values. Note that the visual aspect of the GrooveRadar depends on metrics set on the GrooveRadar metrics group, and the GrooveRadar graphics set.\nDef.GrooveRadar { InitCommand=function(self) -- Let\u0026#39;s use random values to fill the graph. self:SetFromValues({1,0.5,0.8,0.4,1}) end } HelpDisplay A BitmapText-type actor that allows for cycling automatically through tips.\nDef.HelpDisplay { File=\u0026#34;Common Normal\u0026#34;, InitCommand=function(self) local s = \u0026#34;Hello\u0026#34; .. \u0026#34;::\u0026#34; .. \u0026#34;This is a new line\u0026#34; .. \u0026#34;::\u0026#34; .. \u0026#34;And another one!\u0026#34; -- We\u0026#39;ll set the next to toggle between each line (Separated by double colons) by 0.5 seconds. self:SetSecsBetweenSwitches(0.5) -- And tell the HelpDisplay to show that text. :SetTipsColonSeparated(s) end } HoldJudgment Often found in Player, though there is no way to grab the ones that are in Player.\nThe judgment that shows up on a column when dropping or clearing a hold \u0026amp; roll.\nThere is an extra function to allow tracking the hold judgments from a MultiPlayer.\nDef.HoldJudgment{ File=THEME:GetPathG(\u0026#34;Hold\u0026#34;,\u0026#34;Judgment\u0026#34;), InitCommand=function(self) end } InputList Displays a list of inputs as they occur. Can show unmapped and mapped inputs.\nFunctions like most other BitmapText actors.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34;, InitCommand=function (self) self:x(SCREEN_CENTER_X-250):y(SCREEN_CENTER_Y):halign(0):vertspacing(8) end } LogDisplay This is an actor type created from _fallback\u0026rsquo;s scripts.\nDisplays lua script errors as they happen. Most themers shouldn\u0026rsquo;t need to touch this.\nLifeMeter Cannot be created from lua, but can be grabbed from ScreenGameplay.\nOften used in gameplay screens. This shows how much life a Player currently has.\nLifeMeterBattery Cannot be created from lua.\nOften used in gameplay screens. This shows how many more mistakes a player is allowed before failing.\nMemoryCardDisplay Shows the current state of a player\u0026rsquo;s inserted memory card. Made of images, with one for each state.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } MenuTimer Cannot be created from lua, but is a part of every screen that inherits from ScreenWithMenuElements.\nA Timer that counts down and proceeds to the next screen when it reaches 0.\nMeterDisplay Shows the current progress of an operation. It appears to only show the progress as 50%.\nModIconRow Shows icons for the currently set modifiers of a player.\nNot all modifiers have an icon, and the settings can only be set through metrics.\nMusicWheel Cannot be created from lua, but can be grabbed from the TopScreen.\nThe wheel used to select songs in ScreenSelectMusic or courses in ScreenSelectCourse.\nNoteColumnRenderer Cannot be created from lua, but can be grabbed from NoteField.\nThis is a dedicated actor for a column in the notefield, and can be treated like any other actor.\nOptionRow Cannot be created from lua.\nOften seen in options screens, this actor allows for picking and choosing various options for a given setting.\nPaneDisplay Shows the number of steps, jumps, holds, rolls, mines, hands, lifts, fakes, the machine profile\u0026rsquo;s highscore \u0026amp; name and the current profile\u0026rsquo;s high score for a given chart.\nSettings must be defined through Metrics.\nPlayer Cannot be created from lua, but is part of ScreenGameplay\nThe entirety of the playfield. Holds the judgment, hold judgments, combo and the NoteField.\nQuad An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } RollingNumbers A BitmapText with a number that transitions to the target number.\nRequires metrics for it to be loaded before anything else is done with it.\nDef.RollingNumbers{ -- Load the font that the numbers will be rendered with. File = THEME:GetPathF(\u0026#34;Common\u0026#34;, \u0026#34;Normal\u0026#34;), InitCommand=function(self) -- Loads the MetricsGroup to use it\u0026#39;s settings on. self:Load(\u0026#34;RollingNumbers\u0026#34;) -- To update the value, use the targetnumber function. self:targetnumber(300) end } ScoreDisplayAliveTime A BitmapText-type actor that shows how long a player has survived through the stage.\nScoreDisplayCalories A RollingNumbers-type actor that shows how many calories a player has burned through the stage.\nScreen Can\u0026rsquo;t be defined in lua, but can be defined in a theme\u0026rsquo;s metrics.\nA screen the theme can go to. There are screens for gameplay, selecting music, pre-gameplay, etc. Each screen has a background, underlay, overlay and decorations that can be used.\nSongBPMDisplay Shows the current BPM during gameplay. Does not appear to take split timing into account.\nStepsDisplay Displays the data for a given chart. Can show difficulty number, description, credit, if it\u0026rsquo;s autogen and steps type.\nCurrently, all setings are done through metrics.\nStepsDisplayList Shows the list of steps available for a given song.\nThe name given determines what metrics group to load from.\nDef.StepsDisplayList { Name=\u0026#34;StepsDisplayList\u0026#34;, -- These define the cursor the players will be controlling. The rest of the elements are defined -- by the metrics. CursorP1=Def.Actor{}, CursorP2=Def.Actor{}, CursorP1Frame=Def.Actor{}, CursorP2Frame=Def.Actor{} } TextBanner A \u0026ldquo;Banner\u0026rdquo; that contains the song name, artist and subtitle.\nUsually seen in the CourseContentsList of ScreenSelectMusic or the ScrollerItem in ScreenHighScores.\n-- This example uses this set from a CourseContentsList, hence the SetSong command. Def.TextBanner { InitCommand=function(self) self:Load(\u0026#34;TextBannerCourse\u0026#34;):SetFromString(\u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;) end, SetSongCommand=function(self, params) if params.Song then self:SetFromSong( params.Song ) self:diffuse(color(\u0026#34;#FFFFFF\u0026#34;)) else self:SetFromString( \u0026#34;??????????\u0026#34;, \u0026#34;??????????\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34; ) self:diffuse( color(\u0026#34;#FFFFFF\u0026#34;) ) end end } WheelBase Cannot be created from lua.\nA base class for wheels. Currently, the MusicWheel and RoomWheel inherit from this.\nWheelItemBase Cannot be created from lua.\nA base class for items residing in wheels. MusicWheelItems inherit from this.\nWorkoutGraph A graph showing the calories burned over time during a workout.\nDef.WorkoutGraph{ } ","description":"StepMania (and it\u0026rsquo;s many forks) use what\u0026rsquo;s known as the Actor model. OutFox inherits this behaviour. Everything in the engine is an Actor at its\u0026rsquo; very core.\nBecause everything is an actor, there are many types of actors, which are described below. Not everything listed is able to be created in Lua. Those that aren\u0026rsquo;t will be noted as such. However, all of these can be found in the Lua environment."},{"id":61,"href":"/dev/mode-support/bms-pms-support/","title":"BMS/BME/PMS Support","parent":"NoteLoader support","content":"Project OutFox contains parsers for the BMS and PMS chart formats, which are the standard formats used in conjunction with mostly the be-mu and po-mu game types. The following page contains details on the BMS/PMS channels that Project OutFox currently supports. This is a living document, and will be updated as progress is made to expand the work to support as much of these as possible.\nIntroduction The BMS file standard was devised by Urao Yane in 1998. It was originally created to be a format to simulate the game Beatmania by Konami. There have been several dozen iterations over the years, and we will talk about some of them here in one easy to contain and read page. Do not be afraid of this format, it is incredibly versatile and have been used to simulate a variety of games.\nProject OutFox uses mostly BM98 (1998 to 2003) era definitions for this file standard, though it is improving all the time. The format is used to simulate most of the \u0026lsquo;Down Scroll Rhythm Game Systems\u0026rsquo; and is known by several other derivatives which we are also slowly building support for.\nBMS charts are mostly composed by artists from Asia, so reading them in non-asian locales can be difficult. OutFox has overcome this limitation in 2022, so if you see any charts in the music wheel with ?????????? and you are updating from a previous build, reset your cache. If you do find a glyph the game does not understand, do let Squirrel know so it can be added.\nThe other two file types on this page, PMS and BME were born from this format and are used for other types of games. PMS was originally designed to simulate Keyboardmania and had a very different channel layout than BMS, but it\u0026rsquo;s use moved towards po-mu / feeling po-mu (po-mu is short for Pop\u0026rsquo;n Music). This had a unique layout for 9 key/button charts.\nBME is an Extension of BMS and offers newer features that were not offered in raw simulators of BM98. This was also used in the actual arcade and console games for a few years in the early 2000s. Project OutFox recently fixed a lot of support for this parser, along with adding several of the missing modes often charted by simfile authors. This extension allowed for channel numbers beyond 00-99 (99 values), then extended to base16 for 00-FF (255 values), which was then finally extended to 00-ZZ (1295 values), being based on base36.\nThe other system we support is BML files, which PMS incorporated by default in 2002. BML adds Long Note (known as holds in StepMania), which again extends the BMS specification. We now fully support both BME and BML fully, including mines and extended hidden note keysounds, as well as player 2 wide channel support.\nAgain, if you feel any particular command or object should be included, do let us know. There are quite a few bits of the specification that just simply have not been considered or added at this time, I\u0026rsquo;m documenting what we do have, and you are more than welcome to give suggestions for future additions. - Squirrel\nBasic Format The BMS file format describes how notes are arranged and how the game is meant to behave if/when a player takes a specific action. It is usually a simple plain text file with the command lines starting with the # character.\nThe file consists of a HEADER FIELD section and a MAIN DATA FIELD section. We will be going through in detail on the most commonly used commands and channels so you have the information here. A lot of the available commands ever offered to BMS/PMS over the years have faded into deprecation/not being used, but the ones we have seen in actual files include what we will be supporting.\nIf you find a file that is not showing up in OutFox you may need to switch the encoding options of the chart, or just wait until the new string system is added in the future.\nCommands are in the header formatted as the following: #[Command] [Value]\nFor these commands, a space between the command and value is required or you will have offset issues in most simulators. A Simple Example of some common commands used in the header field are:\n*---------------------- HEADER FIELD #PLAYER 3 #GENRE Dance #TITLE My Dance Classics #ARTIST DJ Superstar #BPM 128 #PLAYLEVEL 5 #TOTAL 100 #RANK 2 #bmp00 miss.bmp #bmp01 01.bmp #wav01 01.wav *---------------------- MAIN DATA FIELD #00111:01010101 #00211:0101010001010100 Common HEADER FIELD commands #PLAYER n [1 - 4] Status: ✅ Supported\nUsage Example:\n#PLAYER 3 This command defines the play style that the chart is set for. In the earlier versions of BMS they also specified the number of players.\n1 = 1 Player or Single Play, with 1 life gauge. 2 = 1 + 2 Player or Couples Play, with 2 life gauges. Mostly deprecated and not used. OutFox mostly supports these and can parse them under the old iidx-* styles from SM3.x 3 = 1 Player on 2 sides, or Double play. Modern sims use this value the most, or just ignore the PLAYER setting completely. Often a lot of PMS files have value of 3, though I have not been able to find out why. OutFox supports the odd use of this command but again most simulators post 2015 ignore this value. 4 = 1 vs 2 Player, or Battle Play, with two life gauges, which was removed in iidx19, has fallen out of favour in use. I have actually only found PMS battle mode files with 3 key vs 3 key chart styles from portable 2. OutFox currently can parse these files, but has no battle mode support. Project OutFox also supports \u0026lsquo;duet\u0026rsquo; or normal 2 player mode without needing to be set in the file itself, by joining a second player on the select music screen. As of Alpha 4.9.8 this was extended to PMS offering new modes with a 2 player option of po-mu for the first time. All po-mu styles (3k, 4k, 5k, 7k, 9k) have 2 player support now, with battle mode planned in the future.\n#GENRE genre [string] Status: ✅ Supported\nUsage Example:\n#GENRE Blues This command sets the genre or type of music that the chart is going to play. It could be used by the simulator for sorting or grouping charts, or to allow for just more information to be displayed on the song select screen. The genre is usually written in SHIFT-JIS on older charts, but UTF8/UTF16 are becoming a lot more common, so do check.\n#TITLE title [string] Status: ✅ Supported\nUsage Example:\n#TITLE Take (Bamboo) The title command sets the SongTitle and this will be displayed on the song wheel to be selected, as well on the screen game-play and evaluation screen. It will also be recorded in high scores and on your profile etc. Older charts used SHIFT-JIS.\n#ARTIST artist [string] Status: ✅ Supported\nUsage Example:\n#ARTIST 立秋 feat.ちょこ The artist command sets the SongArtist and this is usually displayed on the song wheel when selected and on the evaluation screen. The artist information is usually recorded in high scores and on your profile. Older charts used SHIFT-JIS.\n#BPM n [0.0-1400.00]/[0-255] Status: ✅ Supported\nUsage Example:\n#BPM 140.35 This setting allows the chart to specify the beginning (or starting) BPM of a song. This value will also be shown in the music wheel, and will be setting the speed that will be used as part of the modifiers / scrolling of the notes. This value used to require a whole number. Project OutFox allows for floats here - you are limited to 6 decimal places - so 143.000290 as an example.\nOlder simulators do not support decimal point BPM values, and you cannot enter a value above 255 as it can crash the simulator. If you are wishing to make your chart portable to other programs, bear this in mind; not every simulator supports this!\nThis value also can (and will!) be overwritten by channel commands/settings later on in the chart.\n#PLAYLEVEL n [0-6]/[0-9]/[0/15]/[1-49] Status: ✅ Supported\nUsage Example:\n#PLAYLEVEL 5 The playlevel sets the number of \u0026lsquo;stars\u0026rsquo; (from the old games) or the difficulty specified. In BMS files this difficulty ranges normally from 0 to 6 - 6 being the hardest. The older scale from 0 to 9 was from the BM98 spec, which was never really used much or supported.\nIn some BME and most PMS files, the playlevel can be from 1 to 49. This reflects the style from other games with the wider difficulty ranges, and po-mu has had a wider difficulty rating for some years.\nIn older versions of StepMania, this difficulty used to be squished into a 5 tier difficulty system and sometimes didn\u0026rsquo;t really work that well. It needed to use a hint from the file name to ensure it didn\u0026rsquo;t make everything an EDIT. This also meant that a lot of charts disappeared/were not parsed correctly and was generally not that suitable for use. OutFox has remedied this by fixing how the parser sees difficulties, and also widens the difficulty arc to out of 10 fields.\n#RANK n [0-4] Status: ❌ Unsupported\nUsage Example:\n#RANK 2 The rank entry used in the old BMS specification used to allow the chart artist to select a difficulty on how the \u0026rsquo;timing window\u0026rsquo; would be set when playing the chart. It was designed for those simulators that didn\u0026rsquo;t have ways of difficulty or setting different timing windows.\nThere were 5 different ranks, the last being added by nanasi which was a more relaxed timing window compared to the other simulators. Almost all of the simulators that are active today set 2 as the default. The old ranking timing windows are listed below for historical purposes. They are ignored on OutFox as we have a custom timing window solution, but if you would like us to add this to set a timing system in the future, do let us know!\nValue Label COOL Time window 0 VERY HARD +/- 8ms 1 HARD +/- 15ms 2 NORMAL +/- 18ms 3 EASY +/- 21ms 4 VERY EASY +/- 33ms Most of these timing windows are not really tied to any specific game or methodology of timing, so it is why we made the decision to not support any of the RANK commands: we also do not support the timing system used by Angolmois which uses 6 ranks. We do not support #DEFEXRANK / #EXRANK as they were additions by nanasi and it seems they did not carry over to be commonly used in other simulators. Changing timing mid song is something we could support, but we do not really see a need to add that to the engine at this time.\nThe \u0026rsquo;timing\u0026rsquo; windows used in Project OutFox are closer to RANK 2 to follow the standard others use.\n#TOTAL n [0-999] Status: ❌ Unsupported\nUsage Example:\n#TOTAL 430 The TOTAL command is to set the value of what could be considered an extension of the \u0026lsquo;gauge\u0026rsquo; in older simulators, before life gauges existed. The value of TOTAL is added to a normal gauge to increase it\u0026rsquo;s length. if the value was 300, then the gauge would go from 0 to 100% in size, to the intial value (normally around 25% + 300% for a total gauge size of 325%).\nThis only occurs when the notes are hit and combo is kept, otherwise things would return to the old gauge size. It was more of a consideration on gauge/groove/clear amounts (what you needed to reach to be considered a pass in that song). This did lead to some confusion on how TOTAL should affect the gameplay/level of the chart.\nThe gauge never changed size; it was an off screen calculation on how you could \u0026lsquo;score\u0026rsquo; your chart. Several simulators over the years have changed this value if TOTAL was omitted, we at the moment do not honour the value, mainly because we do not follow the iidx scoring system since 2005.\n#MAKER maker [string] or #CREDIT credit [string] or #SUBARTIST subartist [string] Status: ✅ Supported\nUsage Example:\n#MAKER Ima StepChart or\n#CREDIT Ima StepChart or\n#SUBARTIST Ima StepChart The MAKER or CREDIT command simply allows the author or maker of the chart to add their credit so it will be displayed in the simulator. The main support for MAKER comes from around 2002 onwards. It is common in most 5 Key styles to be used, as well as being used on 10 Key (double play) styles. CREDIT is more recent, being seen from around 2013 in charts. I know not it\u0026rsquo;s origin, we support both as to not ignore honouring those that take the time to make charts for us to enjoy.\nSince around 2017, another command, SUBARTIST began to be used more commonly in BME/PMS files, which was inherited from DTX. The sub artist is not normally displayed until the evaluation screen on earlier simulators, but in OutFox we treat all three of these in the same manner. If you are creating a new BMS chart, then #MAKER is usually safer to use for other simulator support.\n#STAGEFILE stagefile [string] Status: ✅ Supported\nUsage Example:\n#STAGEFILE loadingscreen.png The stagefile command is used to set an image to the \u0026rsquo;loading screen\u0026rsquo; of the simulator - when the song and options/modifiers have been set, this file is then placed as part of the loading process on the \u0026rsquo;loading screen\u0026rsquo;.\nOn older simulators, this loading process could take a long time, so it was wise to incorporate a loading screen system into the simulator. This has also been recently done in Project OutFox so we do not need to freeze the game while loading these files any more. This file is read in and parsed, just no theme at the moment takes advantage of the loading screen as of yet.\nMain DATA FIELD commands #SCROLLxx n.n [-999.0 - 999.0] Status: ✅ Supported\nDefinition Usage Example:\n#SCROLL01 0.5 #SCROLL02 1.0 #SCROLL03 -2.75 Channel Usage Example:\n#003SC:02010001 #005SC:03000002 The scroll command works similar to how it does in native SM5, but if you are unfamiliar with the system, the value is a multiplier of the speed of the movement of any note on the screen.\nIf your notes were moving at 130BPM, but you did not wish to edit the BPM directly, you could use scroll to change that speed. The game also supports negative values (this has the affect of moving things in the opposite direction), which can provide some very interesting affects.\nThe channel command to action #SCROLL values are a Base36 value which are #xxxSC. There are several benefits to using this system as legacy BMS use items you need to name on each measure, whereas #xxxSC can last beyond this restriction. You need to be aware, not many clients support this system, so it is not backwards compatible if you are making your chart available to other simulators.\nKey: ✅ Fully supported and used in Mode ✓ Fully supported and not used in Mode 📝? No Documentation on this channel\u0026rsquo;s support ❌ Not Supported / Not Available ~ Not Used PMSX listed below on some channels, is the wider 2 player mode that outfox supports for 18k mode.\nBMS / BME / PMS Channel Support Table The earlier versions of BMS were based on a 0-9 supported channel value, being 00 to 99. Over time, it was extended to base16 (00 to FF), and then to base36. I won\u0026rsquo;t list the tables in full base 36, as those extra channels are mostly used for player notes and keysounds, so it would be very long and hard to read. This table takes the most common layout which is base 16 based, and is also the most common supported by most of the other simulators. There are parts where *0 to *Z can be used, and those will be noted.\nThis table will be updated and modified as information is found out or addenda needed to fix mistakes. If you notice anything on this page that needs correcting, do let Squirrel know, or make a PR to the wiki\u0026rsquo;s repo!\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 01 Background Music ✅ Background Music ✅ Background Music ✅ Supported 02 Measure Length ✅ Measure Length ✅ Measure length ✅ Supported 03 Set Initial BPM ✅ Set Initial BPM ✅ Set Initial BPM ✅ Supported 04 BGA Base ✅ BGA Base ✅ BG Base ✅ Supported - needs enabling 05 eXtended Object ✅ eXtended Object ✅ eXtended Object ✅ Supported 06 BGA Layer Miss ✅ BGA Layer Miss ✅ BGA Poor ✅ Supported - needs enabling 07 BGA Layer ✅ BGA Layer ✅ BG Layer ✅ Supported - needs enabling sits above channel 4 08 Extended BPM ✅ Extended BPM ✅ Set BPM ✅ Supported - Changes bpm to value 09 Stop ✅ Stop ✅ Stop ✓ Supported 0A Not Used ~ BGA Layer 2 ✅ BGA Layer 2 ✅ Supported 0B Not Used ~ BGA Base Opacity ❌ BGA Base Opacity ❌ Not Supported 0C Not Used ~ BGA Layer Opacity ❌ Not Used ~ Not Supported 0D Not Used ~ BGA Layer 2 Opacity ❌ Not Used ~ Not Supported 0E Not Used ~ BGA Poor Opacity ❌ BGA Poor Opacity ❌ Not Supported 0F Not Used ~ Not Used ~ Not Used ~ Not Used Channel 00 to 0F The lower channels on a BMS / PMS file mostly set up the specifics of the musical side of the chart, enabling BPM, backgrounds, and special effects like Stops and BGA (background) changes and selection.\nThe most important channel on this table is 01 which sets the \u0026lsquo;backing\u0026rsquo; track or \u0026lsquo;master keysound\u0026rsquo; of this track as created by some users. Most of the community do not use a completed file here however, it is better practice for the chart author to create keysounded files, as charting for a \u0026lsquo;single\u0026rsquo; file is often thought of as lazy.\nOn PMS files, the BGA transparency settings are set here as well for effects and \u0026lsquo;cool/miss\u0026rsquo; events that happen during the song if the user triggers those. On OutFox we support this mechanic, but as of yet we have not seen any files or have had any reported bugs with this, so it is a low priority option. Do reach out to us if you spot a pack or a song which has these channels within them so we can see what they are and how the effects work.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS / PMSX Name OutFox PMS Support OutFox BMS/PMS Status Comments 10 Not Used ~ Not Used ~ Not Used ~ Not Used 11 P1 Key 1 ✅ P1 Key 1 ✅ P1 Left White / P1 Left White ✅ Supported 12 P1 Key 2 ✅ P1 Key 2 ✅ P1 Left Yellow / P1 Left Yellow ✅ Supported 13 P1 Key 3 ✅ P1 Key 3 ✅ P1 Left Green / P1 Left Green ✅ Supported 14 P1 Key 4 ✅ P1 Key 4 ✅ P1 Left Blue / P1 Left Blue ✅ Supported 15 P1 Key 5 ✅ P1 Key 5 ✅ P1 Red / P1 Red ✅ Supported 16 P1 Turn/Scratch ✅ P1 Turn/Scratch ✅ Not Used / P1 Right Blue ✅ Supported 17 P1 FootPedal ✅ P1 FootPedal ✅ Not Used / P1 Right Green ✅ Supported in Alpha 4.16.0 18 P1 Key 6 ✅ P1 Key 6 ✅ Not Used / P1 Right Yellow ✅ Supported 19 P1 Key 7 ✅ P1 Key 7 ✅ Not Used / P1 Right White ✅ Supported 1A Not Used ~ Not Used ~ Not Used ~ Not Used 1B Not Used ~ Not Used ~ Not Used ~ Not Used 1C Not Used ~ Not Used ~ Not Used ~ Not Used 1D Not Used ~ Not Used ~ Not Used ~ Not Used 1E Not Used ~ Not Used ~ Not Used ~ Not Used 1F Not Used ~ Not Used ~ Not Used ~ Not Used Channel 10 to 1F This block of channels is used for visible player notes for player 1. This selection of channels from 10 to 19 is ordered and swapped around depending on the game chosen. This is why in the early 2000s there were arrangements made for pomu / PMS to be split into it\u0026rsquo;s own file name, as it reused a lot of notes which on some simulators were loaded as BMS files. Do remember your target mode/game/style when you create your chart! This is especially important if you plan to have support with other simulators as they will not be as relaxed and \u0026lsquo;wide supporting\u0026rsquo; as OutFox is.\nThe pomu-extended mode which is very common in BME files is one such example. It uses 11 to 19 which on some simulations are incorrectly loaded. This type of chart was common in nanasi and we have aligned our support to this as it seems to be more common for the extended options than other \u0026lsquo;formats\u0026rsquo;.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS / PMSX Name OutFox PMS Support OutFox BMS/PMS Status Comments 20 Not Used ~ Not Used ~ Not Used ~ Not Used 21 P2 Key 1 ✅ P2 Key 1 ✅ Not Used ✅ Supported 22 P2 Key 2 ✅ P2 Key 2 ✅ P1 Right Blue / P2 Left White ✅ Supported 23 P2 Key 3 ✅ P2 Key 3 ✅ P1 Right Green / P2 Left Yellow ✅ Supported 24 P2 Key 4 ✅ P2 Key 4 ✅ P1 Right Yellow / P2 Left Green ✅ Supported 25 P2 Key 5 ✅ P2 Key 5 ✅ P1 Right White / P2 Red ✅ Supported 26 P2 Turn/Scratch ✅ P2 Turn/Scratch ✅ Not Used / P2 Right Blue ✅ Supported 27 P2 FootPedal ✅ P2 FootPedal ✅ Not Used / P2 Right Green ✅ Supported in Alpha 4.16.0 28 P2 Key 6 ✅ P2 Key 6 ✅ Not Used / P2 Right Yellow ✅ Supported 29 P2 Key 7 ✅ P2 Key 7 ✅ Not Used / P2 Right White ✅ Supported 2A Not Used ~ Not Used ~ Not Used ~ Not Used 2B Not Used ~ Not Used ~ Not Used ~ Not Used 2C Not Used ~ Not Used ~ Not Used ~ Not Used 2D Not Used ~ Not Used ~ Not Used ~ Not Used 2E Not Used ~ Not Used ~ Not Used ~ Not Used 2F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 30 Not Used ~ Not Used ~ Not Used ~ Not Used 31 P1 Key 1 Hidden ✅ P1 Key 1 Hidden ✅ P1 Left White Hidden ✅ Supported in 4.10.0 32 P1 Key 2 Hidden ✅ P1 Key 2 Hidden ✅ P1 Left Yellow Hidden ✅ Supported in 4.10.0 33 P1 Key 3 Hidden ✅ P1 Key 3 Hidden ✅ P1 Left Green Hidden ✅ Supported in 4.10.0 34 P1 Key 4 Hidden ✅ P1 Key 4 Hidden ✅ P1 Left Blue Hidden ✅ Supported in 4.10.0 35 P1 Key 5 Hidden ✅ P1 Key 5 Hidden ✅ P1 Left Red Hidden ✅ Supported in 4.10.0 36 P1 Turn/Scratch Hidden ✅ P1 Turn/Scratch Hidden ✅ Not Used ~ Supported in 4.10.0 37 P1 FootPedal Hidden ✅ P1 FootPedal Hidden ✅ Not Used ~ Supported in 4.10.0 38 P1 Key 6 Hidden ✅ P1 Key 6 Hidden ✅ Not Used ~ Supported in 4.10.0 39 P1 Key 7 Hidden ✅ P1 Key 7 Hidden ✅ Not Used ~ Supported in 4.10.0 3A Not Used ~ Not Used ~ Not Used ~ Not Used 3B Not Used ~ Not Used ~ Not Used ~ Not Used 3C Not Used ~ Not Used ~ Not Used ~ Not Used 3D Not Used ~ Not Used ~ Not Used ~ Not Used 3E Not Used ~ Not Used ~ Not Used ~ Not Used 3F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 40 Not Used ~ Not Used ~ Not Used ~ Not Used 41 P2 Key 1 Hidden ✅ P2 Key 1 Hidden ✅ Not Used ~ Supported in 4.10.0 42 P2 Key 2 Hidden ✅ P2 Key 2 Hidden ✅ P1 Right Blue Hidden ✅ Supported in 4.10.0 43 P2 Key 3 Hidden ✅ P2 Key 3 Hidden ✅ P1 Right Green Hidden ✅ Supported in 4.10.0 44 P2 Key 4 Hidden ✅ P2 Key 4 Hidden ✅ P1 Right Yellow Hidden ✅ Supported in 4.10.0 45 P2 Key 5 Hidden ✅ P2 Key 5 Hidden ✅ P1 Right White Hidden ✅ Supported in 4.10.0 46 P2 Turn/Scratch Hidden ✅ P2 Turn/Scratch Hidden ✅ Not Used ~ Supported in 4.10.0 47 P2 FootPedal Hidden ✅ P2 FootPedal Hidden ✅ Not Used ~ Supported in 4.10.0 48 P2 Key 6 Hidden ✅ P2 Key 6 Hidden ✅ Not Used ~ Supported in 4.10.0 49 P2 Key 7 Hidden ✅ P2 Key 7 Hidden ✅ Not Used ~ Supported in 4.10.0 4A Not Used ~ Not Used ~ Not Used ~ Not Used 4B Not Used ~ Not Used ~ Not Used ~ Not Used 4C Not Used ~ Not Used ~ Not Used ~ Not Used 4D Not Used ~ Not Used ~ Not Used ~ Not Used 4E Not Used ~ Not Used ~ Not Used ~ Not Used 4F Not Used ~ Not Used ~ Not Used ~ Not Used Long Note Sections #xxx51-69 - #LNTYPE1, #LNTYPE2 (BML/PMS) The original Long Note Implementation is now supported in OutFox, and we do parse #LNTYPE. We have tested these with a lot of different charts from the mid 2000s and we are now reproduce these perfectly.\nBME and PMS support for these channels is to the LR2 specification, where Player 1 channels are used. The Player 2 Channel options are not included in this specification.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 50 Not Used ~ Not Used ~ Not Used ~ Not Supported 51 P1 Key 1 LongNote ✅ P1 Key 1 LongNote ✅ P1 Left While LongNote ✅ Supported in 4.10.0 52 P1 Key 2 LongNote ✅ P1 Key 2 LongNote ✅ P1 Left Yellow LongNote ✅ Supported in 4.10.0 53 P1 Key 3 LongNote ✅ P1 Key 3 LongNote ✅ P1 Left Green LongNote ✅ Supported in 4.10.0 54 P1 Key 4 LongNote ✅ P1 Key 4 LongNote ✅ P1 Left Blue LongNote ✅ Supported in 4.10.0 55 P1 Key 5 LongNote ✅ P1 Key 5 LongNote ✅ P1 Red LongNote ✅ Supported in 4.10.0 56 P1 Turn/Scratch LongNote ✅ P1 Turn/Scratch LongNote ✅ Not Used ~ Supported in 4.10.0 57 P1 FootPedal LongNote ✅ P1 FootPedal LongNote ✅ Not Used ~ Supported in 4.10.0 58 P1 Key 6 LongNote ✅ P1 Key 6 LongNote ✅ Not Used ~ Supported in 4.10.0 59 P1 Key 7 LongNote ✅ P1 Key 7 LongNote ✅ Not Used ~ Supported in 4.10.0 5A Not Used ~ Not Used ~ Not Used ~ Not Used 5B Not Used ~ Not Used ~ Not Used ~ Not Used 5C Not Used ~ Not Used ~ Not Used ~ Not Used 5D Not Used ~ Not Used ~ Not Used ~ Not Used 5E Not Used ~ Not Used ~ Not Used ~ Not Used 5F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 60 Not Used ~ Not Used ~ Not Used ~ Not Used 61 P2 Key 1 LongNote ✅ P2 Key 1 LongNote ✅ Not Used ~ Supported in 4.10.0 62 P2 Key 2 LongNote ✅ P2 Key 2 LongNote ✅ P1 Right Blue LongNote ✅ Supported in 4.10.0 63 P2 Key 3 LongNote ✅ P2 Key 3 LongNote ✅ P1 Right Green LongNote ✅ Supported in 4.10.0 64 P2 Key 4 LongNote ✅ P2 Key 4 LongNote ✅ P1 Right Yellow LongNote ✅ Supported in 4.10.0 65 P2 Key 5 LongNote ✅ P2 Key 5 LongNote ✅ P1 Right White LongNote ✅ Supported in 4.10.0 66 P2 Turn/Scratch LongNote ✅ P2 Turn/Scratch LongNote ✅ Not Used ~ Supported in 4.10.0 67 P2 FootPedal LongNote ✅ P2 FootPedal LongNote ✅ Not Used ~ Supported in 4.10.0 68 P2 Key 6 LongNote ✅ P2 Key 6 LongNote ✅ Not Used ~ Supported in 4.10.0 69 P2 Key 7 LongNote ✅ P2 Key 7 LongNote ✅ Not Used ~ Supported in 4.10.0 6A Not Used ~ Not Used ~ Not Used ~ Not Used 6B Not Used ~ Not Used ~ Not Used ~ Not Used 6C Not Used ~ Not Used ~ Not Used ~ Not Used 6D Not Used ~ Not Used ~ Not Used ~ Not Used 6E Not Used ~ Not Used ~ Not Used ~ Not Used 6F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 70 Not Used ~ Not Used ~ Not Used ~ Not Used 71 Not Used ~ Not Used ~ Not Used ~ Not Used 72 Not Used ~ Not Used ~ Not Used ~ Not Used 73 Not Used ~ Not Used ~ Not Used ~ Not Used 74 Not Used ~ Not Used ~ Not Used ~ Not Used 75 Not Used ~ Not Used ~ Not Used ~ Not Used 76 Not Used ~ Not Used ~ Not Used ~ Not Used 77 Not Used ~ Not Used ~ Not Used ~ Not Used 78 Not Used ~ Not Used ~ Not Used ~ Not Used 79 Not Used ~ Not Used ~ Not Used ~ Not Used 7A Not Used ~ Not Used ~ Not Used ~ Not Used 7B Not Used ~ Not Used ~ Not Used ~ Not Used 7C Not Used ~ Not Used ~ Not Used ~ Not Used 7D Not Used ~ Not Used ~ Not Used ~ Not Used 7E Not Used ~ Not Used ~ Not Used ~ Not Used 7F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 80 Not Used ~ Not Used ~ Not Used ~ Not Used 81 Not Used ~ Not Used ~ Not Used ~ Not Used 82 Not Used ~ Not Used ~ Not Used ~ Not Used 83 Not Used ~ Not Used ~ Not Used ~ Not Used 84 Not Used ~ Not Used ~ Not Used ~ Not Used 85 Not Used ~ Not Used ~ Not Used ~ Not Used 86 Not Used ~ Not Used ~ Not Used ~ Not Used 87 Not Used ~ Not Used ~ Not Used ~ Not Used 88 Not Used ~ Not Used ~ Not Used ~ Not Used 89 Not Used ~ Not Used ~ Not Used ~ Not Used 8A Not Used ~ Not Used ~ Not Used ~ Not Used 8B Not Used ~ Not Used ~ Not Used ~ Not Used 8C Not Used ~ Not Used ~ Not Used ~ Not Used 8D Not Used ~ Not Used ~ Not Used ~ Not Used 8E Not Used ~ Not Used ~ Not Used ~ Not Used 8F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments 90 Not Used ~ Not Used ~ Not Used ~ Not Used 91 Not Used ~ Not Used ~ Not Used ~ Not Used 92 Not Used ~ Not Used ~ Not Used ~ Not Used 93 Not Used ~ Not Used ~ Not Used ~ Not Used 94 Not Used ~ Not Used ~ Not Used ~ Not Used 95 Not Used ~ Not Used ~ Not Used ~ Not Used 96 Not Used ~ Not Used ~ Not Used ~ Not Used 97 Not Used ~ Not Used ~ BGM Volume ❌ Not Supported 98 Not Used ~ Not Used ~ KeySound Volume ❌ Not Supported 99 Not Used ~ Not Used ~ TEXT String ❌ Not Supported 9A Not Used ~ Not Used ~ Not Used ~ Not Used 9B Not Used ~ Not Used ~ Not Used ~ Not Used 9C Not Used ~ Not Used ~ Not Used ~ Not Used 9D Not Used ~ Not Used ~ Not Used ~ Not Used 9E Not Used ~ Not Used ~ Not Used ~ Not Used 9F Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments A0 Not Used ~ Not Used ~ Not Used ~ Not Used A1 Not Used ~ Not Used ~ Not Used ~ Not Used A2 Not Used ~ Not Used ~ Not Used ~ Not Used A3 Not Used ~ Not Used ~ Not Used ~ Not Used A4 Not Used ~ Not Used ~ Not Used ~ Not Used A5 Not Used ~ Not Used ~ Not Used ~ Not Used A6 Not Used ~ Change Option ❌ Change Option ❌ This was the deprecated mod system for BMS and PMS. A7 Not Used ~ Not Used ~ Not Used ~ Not Used A8 Not Used ~ Not Used ~ Not Used ~ Not Used A9 Not Used ~ Not Used ~ Not Used ~ Not Used AA Not Used ~ Not Used ~ Not Used ~ Not Used AB Not Used ~ Not Used ~ Not Used ~ Not Used AC Not Used ~ Not Used ~ Not Used ~ Not Used AD Not Used ~ Not Used ~ Not Used ~ Not Used AE Not Used ~ Not Used ~ Not Used ~ Not Used AF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments B0 Not Used ~ Not Used ~ Not Used ~ Not Used B1 Not Used ~ Not Used ~ Not Used ~ Not Used B2 Not Used ~ Not Used ~ Not Used ~ Not Used B3 Not Used ~ Not Used ~ Not Used ~ Not Used B4 Not Used ~ Not Used ~ Not Used ~ Not Used B5 Not Used ~ Not Used ~ Not Used ~ Not Used B6 Not Used ~ Not Used ~ Not Used ~ Not Used B7 Not Used ~ Not Used ~ Not Used ~ Not Used B8 Not Used ~ Not Used ~ Not Used ~ Not Used B9 Not Used ~ Not Used ~ Not Used ~ Not Used BA Not Used ~ Not Used ~ Not Used ~ Not Used BB Not Used ~ Not Used ~ Not Used ~ Not Used BC Not Used ~ Not Used ~ Not Used ~ Not Used BD Not Used ~ Not Used ~ Not Used ~ Not Used BE Not Used ~ Not Used ~ Not Used ~ Not Used BF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments C0 Not Used ~ Not Used ~ Not Used ~ Not Used C1 Not Used ~ Not Used ~ Not Used ~ Not Used C2 Not Used ~ Not Used ~ Not Used ~ Not Used C3 Not Used ~ Not Used ~ Not Used ~ Not Used C4 Not Used ~ Not Used ~ Not Used ~ Not Used C5 Not Used ~ Not Used ~ Not Used ~ Not Used C6 Not Used ~ Not Used ~ Not Used ~ Not Used C7 Not Used ~ Not Used ~ Not Used ~ Not Used C8 Not Used ~ Not Used ~ Not Used ~ Not Used C9 Not Used ~ Not Used ~ Not Used ~ Not Used CA Not Used ~ Not Used ~ Not Used ~ Not Used CB Not Used ~ Not Used ~ Not Used ~ Not Used CC Not Used ~ Not Used ~ Not Used ~ Not Used CD Not Used ~ Not Used ~ Not Used ~ Not Used CE Not Used ~ Not Used ~ Not Used ~ Not Used CF Not Used ~ Not Used ~ Not Used ~ Not Used LandMine Sections #xxxD1-E9 - (BMS/PMS) The original Land Mine Implementation is now supported in OutFox after some serious rewriting of the code to ensure these extended (greater than 9) channels were supported. We have tested these with a lot of different charts from the mid 2000s and we are now reproduce these perfectly with mines behaving as expected on BMS/BME and PMS files. Thanks to Bobini for the suggestion on ensuring that these channels were supported.\nBME and PMS support for the landmines (mines) is now 100% complete, and work as planned.\nBMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments D0 Not Used ~ Not Used ~ Not Used ~ Not Used D1 Not Used ~ P1 Key 1 LandMine ✅ P1 Left White LandMine ✅ Supported in 4.10.0 D2 Not Used ~ P1 Key 2 LandMine ✅ P1 Left Yellow LandMine ✅ Supported in 4.10.0 D3 Not Used ~ P1 Key 3 LandMine ✅ P1 Left Green LandMine ✅ Supported in 4.10.0 D4 Not Used ~ P1 Key 4 LandMine ✅ P1 Left Blue LandMine ✅ Supported in 4.10.0 D5 Not Used ~ P1 Key 5 LandMine ✅ P1 Red LandMine ✅ Supported in 4.10.0 D6 Not Used ~ P1 Turn/Scratch LandMine ✅ Not Used ~ Supported in 4.10.0 D7 Not Used ~ P1 FootPedal LandMine ✅ Not Used ~ Supported in 4.10.0 D8 Not Used ~ P1 Key 6 LandMine ✅ Not Used ~ Supported in 4.10.0 D9 Not Used ~ P1 Key 7 LandMine ✅ Not Used ~ Supported in 4.10.0 DA Not Used ~ Not Used ~ Not Used ~ Not Used DB Not Used ~ Not Used ~ Not Used ~ Not Used DC Not Used ~ Not Used ~ Not Used ~ Not Used DD Not Used ~ Not Used ~ Not Used ~ Not Used DE Not Used ~ Not Used ~ Not Used ~ Not Used DF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments E0 Not Used ~ Not Used ~ Not Used ~ Not Used E1 Not Used ~ P2 Key 1 LandMine ✅ Not Used ~ Supported in 4.10.0 E2 Not Used ~ P2 Key 2 LandMine ✅ P1 Right Blue LandMine ✅ Supported in 4.10.0 E3 Not Used ~ P2 Key 3 LandMine ✅ P1 Right Green LandMine ✅ Supported in 4.10.0 E4 Not Used ~ P2 Key 4 LandMine ✅ P1 Right Yellow LandMine ✅ Supported in 4.10.0 E5 Not Used ~ P2 Key 5 LandMine ✅ P1 Right White LandMine ✅ Supported in 4.10.0 E6 Not Used ~ P2 Turn/Scratch LandMine ✅ Not Used ~ Supported in 4.10.0 E7 Not Used ~ P2 FootPedal LandMine ✅ Not Used ~ Supported in 4.10.0 E8 Not Used ~ P2 Key 6 LandMine ✅ Not Used ~ Supported in 4.10.0 E9 Not Used ~ P2 Key 7 LandMine ✅ Not Used ~ Supported in 4.10.0 EA Not Used ~ Not Used ~ Not Used ~ Not Used EB Not Used ~ Not Used ~ Not Used ~ Not Used EC Not Used ~ Not Used ~ Not Used ~ Not Used ED Not Used ~ Not Used ~ Not Used ~ Not Used EE Not Used ~ Not Used ~ Not Used ~ Not Used EF Not Used ~ Not Used ~ Not Used ~ Not Used BMS / BME / PMS Channel BMS Name OutFox BMS Support BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments F0 Not Used ~ Not Used ~ Not Used ~ Not Used F1 Not Used ~ Not Used ~ Not Used ~ Not Used F2 Not Used ~ Not Used ~ Not Used ~ Not Used F3 Not Used ~ Not Used ~ Not Used ~ Not Used F4 Not Used ~ Not Used ~ Not Used ~ Not Used F5 Not Used ~ Not Used ~ Not Used ~ Not Used F6 Not Used ~ Not Used ~ Not Used ~ Not Used F7 Not Used ~ Not Used ~ Not Used ~ Not Used F8 Not Used ~ Not Used ~ Not Used ~ Not Used F9 Not Used ~ Not Used ~ Not Used ~ Not Used FA Not Used ~ Not Used ~ Not Used ~ Not Used FB Not Used ~ Not Used ~ Not Used ~ Not Used FC Not Used ~ Not Used ~ Not Used ~ Not Used FD Not Used ~ Not Used ~ Not Used ~ Not Used FE Not Used ~ Not Used ~ Not Used ~ Not Used FF Not Used ~ Not Used ~ Not Used ~ Not Used Scroll #xxxSC / Speed #xxxSP Sections - (BMS/PMS) These two channels were recent additions to the specification used in the beatoraja and bemuse clients, and are done slightly differently to the specification. Rather than using one of the 30 spare channels in the lower ranges, these two options require full base 36 (00-ZZ) support to work as they use SC/SP instead of a Hex (00-FF) value. OutFox\u0026rsquo;s BMS-like parsers were updated in 4.9.9 to support base 36 channel values even though not required by specification, so these channels were a trivial addition to our support.\nSpeed and Scroll segments replicate behaviour done with Channel 02/08/09, without relying on these channels changing. They were introduced in the SSC updates to StepMania and are natively supported in the engine in OutFox. These add a new layer of effects to be utlised without using #BPMxx or #STOPxx.\nBMS / BME / PMS Channel BME Name OutFox BME Support PMS Name OutFox PMS Support OutFox BMS/PMS Status Comments SC Scroll Adjustment ❌ Not Used ~ Not Supported Yet SP Speed Adjustment ❌ Not Used ~ Not Supported Yet Written and Maintained with ♡ by Squirrel, with thanks to the feeling-po-mu, BMS command memo, BMS Discord, and Japanese BMS/PMS community\n","description":"Project OutFox contains parsers for the BMS and PMS chart formats, which are the standard formats used in conjunction with mostly the be-mu and po-mu game types. The following page contains details on the BMS/PMS channels that Project OutFox currently supports. This is a living document, and will be updated as progress is made to expand the work to support as much of these as possible.\nIntroduction The BMS file standard was devised by Urao Yane in 1998."},{"id":62,"href":"/dev/mods/Mods-10-Color+Gradient-Mods/","title":"Color modifiers","parent":"Guide to Modifiers","content":"Color modifiers affect the color of notes in some way. A lot of these follow similar behaviors to the Visibility modifiers, alongside with some extra functionalities.\n\u0026lt;color\u0026gt; can be 'ColorType_Red', 'ColorType_Blue' or 'ColorType_Green', and is how one chooses the color channel to affect.\nThese modifiers generally share usable values between 0 to 100%.\nStealthColor Desc: Bring a color channel of the notes down to zero (This does not affect the actual glow color). Unlike normal Stealth, this doesn\u0026rsquo;t have column-specific variants.\nQuirks: N/A\nAvailable variants (modstring): stealthred, stealthr (NotITG alias), stealthblue, stealthb (NotITG alias), stealthgreen, stealthg (NotITG alias), diffuse|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias)\nPlayerOptions format: StealthColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthColor('ColorType_Red',1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% stealthred\nStealthColor video example\nSuddenColor Desc: The color channel starts turned off, and turns on at the middle of the field.\nQuirks: N/A\nAvailable variants (modstring): suddenred, suddenr (NotITG alias), suddenblue, suddenb (NotITG name), suddengreen, suddeng (NotITG alias)\nPlayerOptions format: SuddenColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: SuddenColor('ColorType_Green',1,1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% suddengreen\nSuddenColor video example\nAvailable sub modifiers: SuddenOffsetColor Desc: Offsets the point where the color channel turns on.\nAvailable variants (modstring): suddenoffsetred, suddenredoffset (NotITG name), suddenro (NotITG alias), suddenoffsetblue, suddenblueoffset (NotITG name), suddenbo (NotITG alias), suddenoffsetgreen, suddengreenoffset (NotITG name), suddengo (NotITG alias)\nPlayerOptions format: SuddenOffsetColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nHiddenColor Desc: The color channel starts turned on, and turns off at the middle of the field.\nQuirks: N/A\nAvailable variants (modstring): hiddenred, hiddenr (NotITG alias), hiddenblue, hiddenb (NotITG name), hiddengreen, hiddeng (NotITG alias)\nPlayerOptions format: HiddenColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Example: HiddenColor('ColorType_Blue',1,1) Modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt; Example: *1 100% hiddenblue\nHiddenColor video example\nAvailable sub modifiers: HiddenOffsetColor Desc: Offsets the point where the color channel turns on.\nAvailable variants (modstring): hiddenoffsetred, hiddenredoffset (NotITG name), hiddenro (NotITG alias), hiddenoffsetblue, hiddenblueoffset (NotITG name), hiddenbo (NotITG alias), hiddenoffsetgreen, hiddengreenoffset (NotITG name), hiddengo (NotITG alias)\nPlayerOptions format: HiddenOffsetColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nBlinkColor Desc: The color channel blinks on and off. Still considered as bad of a mod as normal Blink.\nQuirks: Same as Blink.\nAvailable variants (modstring): blinkred, blinkr (NotITG alias), blinkblue, blinkb (NotITG alias), blinkgreen, blinkg (NotITG alias)\nPlayerOptions format: BlinkColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: BlinkColor('ColorType_Red',1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 100% blinkred\nBlinkColor video example\nStealthGlowColor Desc: Allows one to modify the color used for the glow effect of the Visibility mods.\nQuirks: Unlike most modifiers (including NotITG\u0026rsquo;s implementation of this modifier), this starts at 100%, mimicking how glow\u0026rsquo;s red, green, and blue values start at 1.\nAvailable variants (modstring): stealthglowred, stealthgr (NotITG alias), stealthglowred\u0026lt;column\u0026gt;, stealthglowblue, stealthgb (NotITG alias), stealthglowblue\u0026lt;column\u0026gt;, stealthglowgreen, stealthgg (NotITG alias), stealthglowgreen\u0026lt;column\u0026gt;, stealthglow|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias), stealthglow\u0026lt;column\u0026gt;|\u0026lt;r\u0026gt;|\u0026lt;g\u0026gt;|\u0026lt;b\u0026gt; (NotITG alias)\nPlayerOptions format: StealthGlowColor(\u0026lt;color\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthGlowColor('ColorType_Red',0, 1, true):StealthGlowColor('ColorType_Green',0, 1, true):Stealth(0.25, 1)\nColumn-specific format: StealthGlowColorCol(\u0026lt;color\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StealthGlowColorCol('ColorType_Green',1,0,1,true):StealthGlowColorCol('ColorType_Blue',1,0,1,true):StealthGlowColorCol('ColorType_Red',2,0,1,true):StealthGlowColorCol('ColorType_Blue',2,0,1,true):StealthGlowColorCol('ColorType_Red',3,0,1,true):StealthGlowColorCol('ColorType_Green',3,0,1,true):StealthGlowColorCol('ColorType_Blue',4,0,1,true):Stealth(0.25)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *1 0% stealthglowred, *1 0% stealthglowgreen, *1 25% stealth *1 0% stealthglowgreen1, *1 0% stealthglowblue1, *1 0% stealthglowred2, *1 0% stealthglowblue2, *1 0% stealthglowred3, *1 0% stealthglowgreen3, *1 0% stealthglowblue4, 25% stealth\nStealthGlowColor video example\nGradient Modifiers Gradient modifiers allow for arbitrary color pathing, and are not compatible with the color modifiers.\nActivating these will turn off the color modifiers above in terms of rendering.\nIn SM5, these are accessed through PlayerOptions like most modifiers (And have the same chaining mechanics as the other functions). In NotITG, this is accessed through the Player instead.\nThere are three types available (It\u0026rsquo;ll be denoted as \u0026lt;type\u0026gt; in the function listing below):\n\u0026ldquo;Diffuse\u0026rdquo; (Affects the diffuse of the notes \u0026amp; holds), known as \u0026ldquo;Arrow\u0026rdquo; in NotITG. \u0026ldquo;NotePath\u0026rdquo; (Affects the color of the NotePath), known as \u0026ldquo;Path\u0026rdquo; in NotITG. \u0026ldquo;StealthGlow\u0026rdquo; (Affects the color used for Stealth and other Visibility modifiers), known as \u0026ldquo;Stealth\u0026rdquo; in NotITG. Will not visibly work on noteskin elements that are wrapped in ActorFrames. \u0026lt;type\u0026gt;NumGradientPoints Desc: Sets how many points the gradient has for the column. Resets the path to all white at the start.\n0 points means the gradient is turned off (color = white) 1 point means the whole path is given a single color 2 or more points allows for more arbitrary path coloring. PlayerOptions format: \u0026lt;type\u0026gt;NumGradientPoints(\u0026lt;column\u0026gt;, \u0026lt;point count\u0026gt;)\nNotITG format: SetNum\u0026lt;type\u0026gt;GradientPoints(\u0026lt;column\u0026gt;, \u0026lt;point count\u0026gt;)\n\u0026lt;type\u0026gt;GradientPoint Desc: Set the position for a given point in the column\u0026rsquo;s gradient. The magnitude given translates into multiples of ARROW_SIZE (commonly 64 pixels).\nPlayerOptions format: \u0026lt;type\u0026gt;GradientPoint(\u0026lt;column\u0026gt;, \u0026lt;point\u0026gt;, \u0026lt;position\u0026gt;)\nNotITG format: Set\u0026lt;type\u0026gt;GradientPoint(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;position\u0026gt;)\n\u0026lt;type\u0026gt;GradientColor Desc: Set the color for a given point in the column\u0026rsquo;s gradient.\nPlayerOptions format: \u0026lt;type\u0026gt;GradientColor(\u0026lt;column\u0026gt;, \u0026lt;point\u0026gt;, \u0026lt;red\u0026gt;, \u0026lt;green\u0026gt;, \u0026lt;blue\u0026gt;, \u0026lt;alpha\u0026gt;)\nNotITG format: Set\u0026lt;type\u0026gt;GradientColor(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt;, \u0026lt;red\u0026gt;, \u0026lt;green\u0026gt;, \u0026lt;blue\u0026gt;, \u0026lt;alpha\u0026gt;)\nExample code (SM5):\nlocal color = { -- c1, c2, c3, c4, p2 {{1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {0,1,0,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}},--point1 {{0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}},--point2 {{0,0,1,1}, {0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}},--point3 {{1,1,1,0}, {0,0,1,0}, {0,1,0,0}, {1,0,0,0}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}},--point4 } for pn = 1,2 do -- Do this for both players local a = po[pn] if a then for col = 1,4 do-- Do this for four columns. a:StealthGlowNumGradientPoints(col,4) -- Each column will have 4 points. -- Each point is 1 ARROW_SIZE below the previous point. a:StealthGlowGradientPoint(col,1,1) a:StealthGlowGradientPoint(col,2,2) a:StealthGlowGradientPoint(col,3,3) a:StealthGlowGradientPoint(col,4,4) -- Each column will have their own color pattern, as defined in the color table. local pla = pn == 2 and col+4 or col a:StealthGlowGradientColor(col,1,color[1][pla][1],color[1][pla][2],color[1][pla][3],color[1][pla][4]) a:StealthGlowGradientColor(col,2,color[2][pla][1],color[2][pla][2],color[2][pla][3],color[2][pla][4]) a:StealthGlowGradientColor(col,3,color[3][pla][1],color[3][pla][2],color[3][pla][3],color[3][pla][4]) a:StealthGlowGradientColor(col,4,color[4][pla][1],color[4][pla][2],color[4][pla][3],color[4][pla][4]) end a:Stealth(0.25) -- 25% Stealth, use currently set approach rate (default = 1) end end Example code (NotITG):\nlocal color = { -- c1, c2, c3, c4, p2 {{1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {0,1,0,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}},--point1 {{0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {0,0,1,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}, {1,1,0,1}},--point2 {{0,0,1,1}, {0,1,0,1}, {1,0,0,1}, {1,1,1,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}, {0,0,0,1}},--point3 {{1,1,1,0}, {0,0,1,0}, {0,1,0,0}, {1,0,0,0}, {0,0,0,1}, {1,1,0,1}, {1,0,1,1}, {0,1,1,1}},--point4 } for pn = 1,2 do -- Do this for both players local a = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP\u0026#39;..pn) if a then for col = 0,3 do-- Do this for four columns. a:SetNumStealthGradientPoints(col,4) -- Each column will have 4 points. -- Each point is 1 ARROW_SIZE below the previous point. a:SetStealthGradientPoint(0,col,1) a:SetStealthGradientPoint(1,col,2) a:SetStealthGradientPoint(2,col,3) a:SetStealthGradientPoint(3,col,4) -- Each column will have their own color pattern, as defined in the color table. local pla = pn == 2 and col+5 or col+1 a:SetStealthGradientColor(0,col,color[1][pla][1],color[1][pla][2],color[1][pla][3],color[1][pla][4]) a:SetStealthGradientColor(1,col,color[2][pla][1],color[2][pla][2],color[2][pla][3],color[2][pla][4]) a:SetStealthGradientColor(2,col,color[3][pla][1],color[3][pla][2],color[3][pla][3],color[3][pla][4]) a:SetStealthGradientColor(3,col,color[4][pla][1],color[4][pla][2],color[4][pla][3],color[4][pla][4]) end GAMESTATE:ApplyModifiers(\u0026#39;25% Stealth\u0026#39;,pn) -- 25% Stealth, use default approach rate (default = 1) end end Video Example (Shows colors set for Player 2):\nGradient video example\n","description":"Color modifiers affect the color of notes in some way. A lot of these follow similar behaviors to the Visibility modifiers, alongside with some extra functionalities.\n\u0026lt;color\u0026gt; can be 'ColorType_Red', 'ColorType_Blue' or 'ColorType_Green', and is how one chooses the color channel to affect.\nThese modifiers generally share usable values between 0 to 100%.\nStealthColor Desc: Bring a color channel of the notes down to zero (This does not affect the actual glow color)."},{"id":63,"href":"/dev/actors/actortypes/sound/Sound-ControllingSound/","title":"Controlling Sound","parent":"Sound","content":"The Def.Sound actor is part of RageSound, another component in the engine that deals with audio, and they both work together to provide playback of said sounds. That said, in order to control specific elements from them, you must understand how to access them.\nOnly using commands directly inside Def.Sound will provide commands related to the sound actor; to use commands related to its RageSound component, you must get() the component.\n-- To control actions like volume, you need to access the ActorSound\u0026#39;s RageSound, by using the get function. local MyRageSound = self:get() With this object obtained, you can control elements like the sound\u0026rsquo;s position, volume, pitch and speed. Note that some components need some flags to be enabled which have been pointed out as commments alongside them.\n-- This function will return the value for the Def.Sound\u0026#39;s RageSound component, which allows for expanded -- controls. local MyRageSound = self:get() MyRageSound:volume( 0.5 ) -- Changes volume (0 to 1). MyRageSound:pitch( 1.2 ) -- Requires SupportRateChanging to work. MyRageSound:speed( 1.4 ) -- Requires SupportRateChanging to work. Adjusting Properties With RageSound, you have access to different kinds of sound properties to determine how you want your sound to be played.\nMyRageSound:SetParam( \u0026#34;Property Name\u0026#34;, Value ) The available properties to change are detailed on the table below.\nName of Property Description Speed Determines how fast the speed will play. Pitch Determines the notation for the sound\u0026rsquo;s tune. StartSecond Sets the initial time of the sound to play. LengthSeconds Sets the length of the sound. FadeInSeconds How long the audio transition to full volume at the start. FadeSeconds / FadeOutSeconds How long the audio transition to silence at the end. Volume How loud will the sound be (0 to 1 value). ","description":"The Def.Sound actor is part of RageSound, another component in the engine that deals with audio, and they both work together to provide playback of said sounds. That said, in order to control specific elements from them, you must understand how to access them.\nOnly using commands directly inside Def.Sound will provide commands related to the sound actor; to use commands related to its RageSound component, you must get() the component."},{"id":64,"href":"/dev/actors/actortypes/notefield/DefNoteField-RunningModifiers/","title":"Doing Mods with Def.NoteField","parent":"NoteField","content":"Usually, a Player controls a NoteField, which includes positioning, zooming, rotation and vanish point manipulation. The game itself would also handle approach rates for modifiers used on a Player.\nWith Def.NoteField, this is now done manually, since there is no \u0026ldquo;Player\u0026rdquo; to handle everything.\nApplying modifiers Applying modifiers is instant, unlike the approach rate behavior usually seen.\nThis can be done through multiple ways:\n1. Using the ModsFromString function in the NoteField. Allows one to easilly set the modifiers on the NoteField through modstrings. Some modifiers will not be usable through modstrings. Def.NoteField{ OnCommand= function() self:ModsFromString(\u0026#39;drunk\u0026#39;) end, } 2. Grabbing the PlayerOptions of the NoteField For now, \u0026quot;ModsLevel_Current\u0026quot; has to be used, since the game will no longer handle approaching from \u0026quot;ModsLevel_Song\u0026quot;. Allows for the use of all modifiers a Player can access. Requires knowning how to use the PlayerOptions functions. Def.NoteField{ OnCommand= function() self:GetPlayerOptions(\u0026#39;ModsLevel_Current\u0026#39;):Drunk(1) end, } NoteData A NoteField starts with the chart the specified player used. However, SetNoteDataFromLua is usable on a Def.NoteField, allowing one to change the chart used. Unlike player, there is no SetNoteData function (for now), so the table format from GetNoteData has to be followed.\nReplicating Mini and Perspective Refer to the section How a Player Manipulates its\u0026rsquo; NoteField.\n","description":"Usually, a Player controls a NoteField, which includes positioning, zooming, rotation and vanish point manipulation. The game itself would also handle approach rates for modifiers used on a Player.\nWith Def.NoteField, this is now done manually, since there is no \u0026ldquo;Player\u0026rdquo; to handle everything.\nApplying modifiers Applying modifiers is instant, unlike the approach rate behavior usually seen.\nThis can be done through multiple ways:\n1. Using the ModsFromString function in the NoteField."},{"id":65,"href":"/dev/mode-support/dtx-gda-support/","title":"DTX \u0026 GDA/G2D Support","parent":"NoteLoader support","content":"Preview shot of this mode from Alpha 4.9.8 with fallback theme Project OutFox contains parsers for the DTX and GDA/G2D chart formats, which are the standard formats used in conjunction with the gddm and gdgf game types. The following table contains details on the DTX/GDA/G2D channels that Project OutFox currently supports.\nWe have recently added parsing support for the guitar/bass side of this chart format, and we will also look at creating a new easier to use format for gdgf in the future which supports 3/5 and 6 fret which has been requested by our community.\nDTX/GDA Notedata support as of Alpha 4.12.0 New for Alpha 4.12.0 - SHIFT-JIS, UTF8 and UTF16LE Support! This alpha includes complete support for all types of dtx/gda files, no matter which creator made it, including the newer standards. You do not need to change locale on windows, nor convert the encoding, the game will just load them up.\nTable of Symbols Key: Comment ✅ Fully supported and used in Mode ✓ Fully supported, but not used in this Mode 📝? No Documentation on this channel\u0026rsquo;s support ⌛ Game Supports this, but awaiting on documentation ❌ Not Supported / Not Available ~ Not Used Channel Support Table DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 01 Background Music ✅ Background Music ✅ ✅ Supported 02 Measure Multiplication factor ✅ Measure Multiplication factor ✅ ✅ Supported in 4.10.0 03 Set Initial BPM ✅ Set Initial BPM ✅ ✅ Supported 04 BG Layer 1 ✅ BG Layer 1 ✅ ✅ Supported - needs enabling 05 eXtended Object ✅ eXtended Object ✅ 📝? Supported 06 Not Used ✓ Not Used ✓ ~ Supported - needs enabling 07 BG Layer 2 ✅ BG Layer 2 ✅ ✅ Supported - needs enabling sits above channel 4 08 Extended BPM ✅ Extended BPM ✅ ✅ Supported - Changes bpm to value 09 Not Used ✓ Not Used ✓ ~ Supported 0A Not Used ✓ Not Used ✓ ~ Supported 0B Not Used ~ Not Used ~ ~ Not Used 0C Not Used ~ Not Used ~ ~ Not Used 0D Not Used ~ Not Used ~ ~ Not Used 0E Not Used ~ Not Used ~ ~ Not Used 0F Not Used ~ Not Used ~ ~ Not Used 10 Not Used ~ Not Used ~ ~ Not Used 11 HiHatClose ✅ HiHatClose ✅ ✅ Supported 12 Snare ✅ Snare ✅ ✅ Supported 13 Bass Drum ✅ Bass Drum ✅ ✅ Supported 14 High Tom ✅ High Tom ✅ ✅ Supported 15 Low Tom ✅ Low Tom ✅ ✅ Supported 16 Cymbal ✅ Cymbal ✅ ✅ Supported 17 Floor Tom ✅ Floor Tom ✅ ✅ Supported 18 High Hat Open ✅ High Hat Open ✅ ✅ Supported 19 Ride Cymbal ✅ Ride Cymbal ✅ ✅ Supported 1A Not Used ~ Left Cymbal ✅ ✅ Supported 1B Not Used ~ Left Pedal ✅ ✅ Supported 1C Not Used ~ Left Bass Drum ✅ ✅ Supported 1D Not Used ~ Not Used ~ ~ Not Used 1E Not Used ~ Not Used ~ ~ Not Used 1F Drums Fill in Sound ✅ Drums Fill in Sound ✅ ✅ Supported DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 20 Guitar OPEN ✅ Guitar OPEN ✅ ✅ Supported in 4.10.0 21 Guitar xxBxx ✅ Guitar xxBxx ✅ ✅ Supported in 4.10.0 22 Guitar xGxxx ✅ Guitar xGxxx ✅ ✅ Supported in 4.10.0 23 Guitar xGBxx ✅ Guitar xGBxx ✅ ✅ Supported in 4.10.0 24 Guitar Rxxxx ✅ Guitar Rxxxx ✅ ✅ Supported in 4.10.0 25 Guitar RxBxx ✅ Guitar RxBxx ✅ ✅ Supported in 4.10.0 26 Guitar RGxxx ✅ Guitar RGxxx ✅ ✅ Supported in 4.10.0 27 Guitar RGBxx ✅ Guitar RGBxx ✅ ✅ Supported in 4.10.0 28 Guitar Wail ✅ Guitar Wail ✅ ✅ Supported in 4.10.0 29 Not Supported ~ Not Supported ~ ~ Not Supported 2A Not Supported ~ Not Supported ~ ~ Not Supported 2B Not Used ~ Not Used ~ ~ Not Used 2C Not Used ~ Guitar Long Note Start/End Point ⌛ ✅ AL Not Supported 2D Not Used ~ Bass Long Note Start/End Point ⌛ ✅ AL Not Supported 2E Not Used ~ Not Used ~ ~ Not Used 2F Guitar Wailing Sound ✅ Guitar Wailing Sound ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 30 Rate Speed ~ Rate Speed ~ ~ Not Used 31 HiHatClose Hidden Note ✅ HiHatClose Hidden Note ✅ ✅ Supported 32 Snare Hidden Note ✅ Snare Hidden Note ✅ ✅ Supported 33 Bass Drum Hidden Note ✅ Bass Drum Hidden Note ✅ ✅ Supported 34 High Tom Hidden Note ✅ High Tom Hidden Note ✅ ✅ Supported 35 Low Tom Hidden Note ✅ Low Tom Hidden Note ✅ ✅ Supported 36 Cymbal Hidden Note ✅ Cymbal Hidden Note ✅ ✅ Supported 37 Floor Tom Hidden Note ✅ Floor Tom Hidden Note ✅ ✅ Supported 38 High Hat Open Hidden Note ✅ High Hat Open Hidden Note ✅ ✅ Supported 39 Ride Cymbal Hidden Note ✅ Ride Cymbal Hidden Note ✅ ✅ Supported 3A Not Used ~ Left Cymbal Hidden Note ✅ ✅ Supported 3B Not Used ~ Left Pedal Hidden Note ✅ ✅ Supported 3C Not Used ~ Left Bass Drum Hidden Note ✅ ✅ Supported 3D Not Used ~ Not Used ~ ~ Not Used 3E Not Used ~ Not Used ~ ~ Not Used 3F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 40 Not Used ~ Not Used ~ ~ Not Used 41 Not Used ~ Not Used ~ ~ Not Used 42 Not Used ~ Not Used ~ ~ Not Used 43 Not Used ~ Not Used ~ ~ Not Used 44 Not Used ~ Not Used ~ ~ Not Used 45 Not Used ~ Not Used ~ ~ Not Used 46 Not Used ~ Not Used ~ ~ Not Used 47 Not Used ~ Not Used ~ ~ Not Used 48 Not Used ~ Not Used ~ ~ Not Used 49 Not Used ~ Not Used ~ ~ Not Used 4A Not Used ~ Not Used ~ ~ Not Used 4B Not Used ~ Not Used ~ ~ Not Used 4C Bonus 04 ✅ Bonus 04 ✅ ✅ Supported in 4.10.0 4D Bonus 03 ✅ Bonus 03 ✅ ✅ Supported in 4.10.0 4E Bonus 02 ✅ Bonus 02 ✅ ✅ Supported in 4.10.0 4F Bonus 01 ✅ Bonus 01 ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 50 Show Beat Line ❌ Show Beat Line ⌛ ✅ Not Supported 51 Show Measure Line ❌ Show Measure Line ⌛ ✅ Not Supported 52 MIDI Drum Chorus ❌ MIDI Drum Chorus ❌ ✅ Not Supported 53 Fill In ~ Fill In ~ ~ Not Supported 54 Video Playback ✅ Sync Video Playback ✅ ✅ Supported in 4.11.0 55 BGA Layer 3 ❌ BGA Layer 3 ❌ ✅ Not Supported 56 BGA Layer 4 ❌ BGA Layer 4 ❌ ✅ Not Supported 57 BGA Layer 5 ❌ BGA Layer 5 ❌ ✅ Not Supported 58 BGA Layer 6 ❌ BGA Layer 6 ❌ ✅ Not Supported 59 BGA Layer 7 ❌ BGA Layer 7 ❌ ✅ Not Supported 5A Background Video Playback ~ Background Video Playback ~ ~ Not Used 5B Not Used ~ Not Used ~ ~ Not Used 5C Not Used ~ Not Used ~ ~ Not Used 5D Not Used ~ Not Used ~ ~ Not Used 5E Not Used ~ Not Used ~ ~ Not Used 5F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 60 BGA Layer 8 ❌ BGA Layer 8 ❌ ✅ Not Supported 61 Sound Effect 01 ✅ Sound Effect 01 ✅ ✅ Supported in 4.11.0 62 Sound Effect 02 ✅ Sound Effect 02 ✅ ✅ Supported in 4.11.0 63 Sound Effect 03 ✅ Sound Effect 03 ✅ ✅ Supported in 4.11.0 64 Sound Effect 04 ✅ Sound Effect 04 ✅ ✅ Supported in 4.11.0 65 Sound Effect 05 ✅ Sound Effect 05 ✅ ✅ Supported in 4.11.0 66 Sound Effect 06 ✅ Sound Effect 06 ✅ ✅ Supported in 4.11.0 67 Sound Effect 07 ✅ Sound Effect 07 ✅ ✅ Supported in 4.11.0 68 Sound Effect 08 ✅ Sound Effect 08 ✅ ✅ Supported in 4.11.0 69 Sound Effect 09 ✅ Sound Effect 09 ✅ ✅ Supported in 4.11.0 6A Not Used ~ Not Used ~ ~ Not Used 6B Not Used ~ Not Used ~ ~ Not Used 6C Not Used ~ Not Used ~ ~ Not Used 6D Not Used ~ Not Used ~ ~ Not Used 6E Not Used ~ Not Used ~ ~ Not Used 6F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 70 Sound Effect 10 ✅ Sound Effect 10 ✅ ✅ Supported in 4.11.0 71 Sound Effect 11 ✅ Sound Effect 11 ✅ ✅ Supported in 4.11.0 72 Sound Effect 12 ✅ Sound Effect 12 ✅ ✅ Supported in 4.11.0 73 Sound Effect 13 ✅ Sound Effect 13 ✅ ✅ Supported in 4.11.0 74 Sound Effect 14 ✅ Sound Effect 14 ✅ ✅ Supported in 4.11.0 75 Sound Effect 15 ✅ Sound Effect 15 ✅ ✅ Supported in 4.11.0 76 Sound Effect 16 ✅ Sound Effect 16 ✅ ✅ Supported in 4.11.0 77 Sound Effect 17 ✅ Sound Effect 17 ✅ ✅ Supported in 4.11.0 78 Sound Effect 18 ✅ Sound Effect 18 ✅ ✅ Supported in 4.11.0 79 Sound Effect 19 ✅ Sound Effect 19 ✅ ✅ Supported in 4.11.0 7A Not Used ~ Not Used ~ ~ Not Used 7B Not Used ~ Not Used ~ ~ Not Used 7C Not Used ~ Not Used ~ ~ Not Used 7D Not Used ~ Not Used ~ ~ Not Used 7E Not Used ~ Not Used ~ ~ Not Used 7F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 80 Sound Effect 20 ✅ Sound Effect 20 ✅ ✅ Supported in 4.11.0 81 Sound Effect 21 ✅ Sound Effect 21 ✅ ✅ Supported in 4.11.0 82 Sound Effect 22 ✅ Sound Effect 22 ✅ ✅ Supported in 4.11.0 83 Sound Effect 23 ✅ Sound Effect 23 ✅ ✅ Supported in 4.11.0 84 Sound Effect 24 ✅ Sound Effect 24 ✅ ✅ Supported in 4.11.0 85 Sound Effect 25 ✅ Sound Effect 25 ✅ ✅ Supported in 4.11.0 86 Sound Effect 26 ✅ Sound Effect 26 ✅ ✅ Supported in 4.11.0 87 Sound Effect 27 ✅ Sound Effect 27 ✅ ✅ Supported in 4.11.0 88 Sound Effect 28 ✅ Sound Effect 28 ✅ ✅ Supported in 4.11.0 89 Sound Effect 29 ✅ Sound Effect 29 ✅ ✅ Supported in 4.11.0 8A Not Used ~ Not Used ~ ~ Not Used 8B Not Used ~ Not Used ~ ~ Not Used 8C Not Used ~ Not Used ~ ~ Not Used 8D Not Used ~ Not Used ~ ~ Not Used 8E Not Used ~ Not Used ~ ~ Not Used 8F Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments 90 Sound Effect 30 ✅ Sound Effect 30 ✅ ✅ Supported in 4.11.0 91 Sound Effect 31 ✅ Sound Effect 31 ✅ ✅ Supported in 4.11.0 92 Sound Effect 32 ✅ Sound Effect 32 ✅ ✅ Supported in 4.11.0 93 Not Used ~ Guitar xxxYx ✅ ✅ Supported in 4.10.0 94 Not Used ~ Guitar xxBYx ✅ ✅ Supported in 4.10.0 95 Not Used ~ Guitar xGxYx ✅ ✅ Supported in 4.10.0 96 Not Used ~ Guitar xGBYx ✅ ✅ Supported in 4.10.0 97 Not Used ~ Guitar RxxYx ✅ ✅ Supported in 4.10.0 98 Not Used ~ Guitar RxBYx ✅ ✅ Supported in 4.10.0 99 Not Used ~ Guitar RGxYx ✅ ✅ Supported in 4.10.0 9A Not Used ~ Guitar RGBYx ✅ ✅ Supported in 4.10.0 9B Not Used ~ Guitar xxxxP ✅ ✅ Supported in 4.10.0 9C Not Used ~ Guitar xxBxP ✅ ✅ Supported in 4.10.0 9D Not Used ~ Guitar xGxxP ✅ ✅ Supported in 4.10.0 9E Not Used ~ Guitar xGBxP ✅ ✅ Supported in 4.10.0 9F Not Used ~ Guitar RxxxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments A0 Bass OPEN ✅ Bass OPEN ✅ ✅ Supported in 4.10.0 A1 Bass xxBxx ✅ Bass xxBxx ✅ ✅ Supported in 4.10.0 A2 Bass xGxxx ✅ Bass xGxxx ✅ ✅ Supported in 4.10.0 A3 Bass xGBxx ✅ Bass xGBxx ✅ ✅ Supported in 4.10.0 A4 Bass Rxxxx ✅ Bass Rxxxx ✅ ✅ Supported in 4.10.0 A5 Bass RxBxx ✅ Bass RxBxx ✅ ✅ Supported in 4.10.0 A6 Bass RGxxx ✅ Bass RGxxx ✅ ✅ Supported in 4.10.0 A7 Bass RGBxx ✅ Bass RGBxx ✅ ✅ Supported in 4.10.0 A8 Bass Wail ✅ Bass Wail ✅ ✅ Supported in 4.10.0 A9 Not Used ~ Guitar RxBxP ✅ ✅ Supported in 4.10.0 AA Not Used ~ Guitar RGxxP ✅ ✅ Supported in 4.10.0 AB Not Used ~ Guitar RGBxP ✅ ✅ Supported in 4.10.0 AC Not Used ~ Guitar xxxYP ✅ ✅ Supported in 4.10.0 AD Not Used ~ Guitar xxBYP ✅ ✅ Supported in 4.10.0 AE Not Used ~ Guitar xGxYP ✅ ✅ Supported in 4.10.0 AF Not Used ~ Guitar xGBYP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments B0 Not Used ~ Not Used ~ ~ Not Used B1 HiHatClose Empty ⌛ HiHatClose Empty ✅ ✅ Supported in 4.11.0 B2 Snare Empty ⌛ Snare Empty ✅ ✅ Supported in 4.11.0 B3 Bass Drum Empty ⌛ Bass Drum Empty ✅ ✅ Supported in 4.11.0 B4 High Tom Empty ⌛ High Tom Empty ✅ ✅ Supported in 4.11.0 B5 Low Tom Empty ⌛ Low Tom Empty ✅ ✅ Supported in 4.11.0 B6 Cymbal Empty ⌛ Cymbal Empty ✅ ✅ Supported in 4.11.0 B7 Floor Tom Empty ⌛ Floor Tom Empty ✅ ✅ Supported in 4.11.0 B8 High Hat Open Empty ⌛ High Hat Open Empty ✅ ✅ Supported in 4.11.0 B9 Ride Cymbal Empty ⌛ Ride Cymbal Empty ✅ ✅ Supported in 4.11.0 BA Guitar Empty ⌛ Guitar Empty ✅ ✅ Supported in 4.11.0 BB Bass Empty ⌛ Bass Empty ✅ ✅ Supported in 4.11.0 BC Not Used ~ LeftCymbal Empty ✅ ✅ Supported in 4.11.0 BD Not Used ~ LeftPedal Empty ✅ ✅ Supported in 4.11.0 BE Not Used ~ LeftBassDrum Empty ✅ ✅ Supported in 4.11.0 BF Not Used ~ Not Used ~ ~ Not Used DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments C0 Not Used ~ Not Used ~ ~ Not Used C1 Beat Bar Offset ❌ Beat Bar Offset ❌ ✅ Not Supported C2 Hide Beat/Measure bar ⌛ Hide Beat/Measure bar ⌛ ✅ Not Supported C3 Not Used ~ Not Used ~ ~ Not Used C4 Replacing BGA Layer 1 ❌ Replacing BGA Layer 1 ❌ ✅ Not Supported C5 Not Used ~ Bass xxxYx ✅ ✅ Supported in 4.10.0 C6 Not Used ~ Bass xxBYx ✅ ✅ Supported in 4.10.0 C7 Replacing BGA Layer 2 ❌ Replacing BGA Layer 2 ❌ ✅ Not Supported C8 Not Used ~ Bass xGxYx ✅ ✅ Supported in 4.10.0 C9 Not Used ~ Bass xGBYx ✅ ✅ Supported in 4.10.0 CA Not Used ~ Bass RxxYx ✅ ✅ Supported in 4.10.0 CB Not Used ~ Bass RxBYx ✅ ✅ Supported in 4.10.0 CC Not Used ~ Bass RGxYx ✅ ✅ Supported in 4.10.0 CD Not Used ~ Bass RGBYx ✅ ✅ Supported in 4.10.0 CE Not Used ~ Bass xxxxP ✅ ✅ Supported in 4.10.0 CF Not Used ~ Bass xxBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments D0 Not Used ~ Guitar RxxYP ✅ ✅ Supported in 4.10.0 D1 Not Used ~ Guitar RxBYP ✅ ✅ Supported in 4.10.0 D2 Not Used ~ Guitar RGxYP ✅ ✅ Supported in 4.10.0 D3 Not Used ~ Guitar RGBYP ✅ ✅ Supported in 4.10.0 D4 Not Used ~ Not Used ~ ~ Not Used D5 Replacing BGA Layer 3 ❌ Replacing BGA Layer 3 ❌ ✅ Not Supported D6 Replacing BGA Layer 4 ❌ Replacing BGA Layer 4 ❌ ✅ Not Supported D7 Replacing BGA Layer 5 ❌ Replacing BGA Layer 5 ❌ ✅ Not Supported D8 Replacing BGA Layer 6 ❌ Replacing BGA Layer 6 ❌ ✅ Not Supported D9 Replacing BGA Layer 7 ❌ Replacing BGA Layer 7 ❌ ✅ Not Supported DA Not Used ~ Bass xGxxP ✅ ✅ Supported in 4.10.0 DB Not Used ~ Bass xGBxP ✅ ✅ Supported in 4.10.0 DC Not Used ~ Bass RxxxP ✅ ✅ Supported in 4.10.0 DD Not Used ~ Bass RxBxP ✅ ✅ Supported in 4.10.0 DE Not Used ~ Bass RGxxP ✅ ✅ Supported in 4.10.0 DF Not Used ~ Bass RGBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments E0 Replacing BGA Layer 8 ❌ Replacing BGA Layer 8 ❌ ✅ Not Supported E1 Not Used ~ Bass xxxYP ✅ ✅ Supported in 4.10.0 E2 Not Used ~ Bass xxBYP ✅ ✅ Supported in 4.10.0 E3 Not Used ~ Bass xGxYP ✅ ✅ Supported in 4.10.0 E4 Not Used ~ Bass xGBYP ✅ ✅ Supported in 4.10.0 E5 Not Used ~ Bass RxxYP ✅ ✅ Supported in 4.10.0 E6 Not Used ~ Bass RxBYP ✅ ✅ Supported in 4.10.0 E7 Not Used ~ Bass RGxYP ✅ ✅ Supported in 4.10.0 E8 Not Used ~ Bass RGBYP ✅ ✅ Supported in 4.10.0 E9 Not Used ~ Not Used ~ ~ Not Used EA Not Used ~ Not Used ~ ~ Not Used EB Not Used ~ Not Used ~ ~ Not Used EC Metronome ⌛ Metronome ✅ ✅ Supported in 4.11.0 ED Start Sound ⌛ Start Sound ✅ ✅ Supported in 4.11.0 EE Not Used ~ Bass RGxxP ✅ ✅ Supported in 4.10.0 EF Not Used ~ Bass RGBxP ✅ ✅ Supported in 4.10.0 DTX / GDA Channel GDA Name OutFox GDA Support DTX Name OutFox DTX Support NX/Ver. K Support OutFox DTX Status Comments F0 Not Used ~ Not Used ~ ~ Not Used F1 Not Used ~ Not Used ~ ~ Not Used F2 Not Used ~ Not Used ~ ~ Not Used F3 Not Used ~ Not Used ~ ~ Not Used F4 Not Used ~ Not Used ~ ~ Not Used F5 Not Used ~ Not Used ~ ~ Not Used F6 Not Used ~ Not Used ~ ~ Not Used F7 Not Used ~ Not Used ~ ~ Not Used F8 Not Used ~ Not Used ~ ~ Not Used F9 Not Used ~ Not Used ~ ~ Not Used FA Not Used ~ Not Used ~ ~ Not Used FB Not Used ~ Not Used ~ ~ Not Used FC Metronome ⌛ Metronome ✅ ✅ Supported in 4.11.0 FD Start Sound ⌛ Start Sound ✅ ✅ Supported in 4.11.0 FE Not Used ~ Not Used ~ ~ Not Used FF Not Used ~ Not Used ~ ~ Not Used Written and Maintained with ♡ by Squirrel, with thanks to the BMS command memo, the Japanese DTX and BandJAM community, APPROVED and sub from DTXMania\u0026rsquo;s Discord community, dridi for the GDA help and to Kangalioo for the VSRG docs\n","description":"Preview shot of this mode from Alpha 4.9.8 with fallback theme Project OutFox contains parsers for the DTX and GDA/G2D chart formats, which are the standard formats used in conjunction with the gddm and gdgf game types. The following table contains details on the DTX/GDA/G2D channels that Project OutFox currently supports.\nWe have recently added parsing support for the guitar/bass side of this chart format, and we will also look at creating a new easier to use format for gdgf in the future which supports 3/5 and 6 fret which has been requested by our community."},{"id":66,"href":"/dev/effects/","title":"Effect Simfiles","parent":"Developers and Creators","content":"Normal gameplay is as follows: Notes move up or down towards the target on a usually static background, and the player hits the notes when they reach the target. Simple.\nEffect simfiles change this up, which can result in interesting gameplay results.\nThere are multiple \u0026lsquo;catagories\u0026rsquo; of effect files:\n\u0026ldquo;Gimmick\u0026rdquo; charts\nWhile not really an \u0026rsquo;effect\u0026rsquo;, per-say, gimmick charts can change up how one reads a chart. A single BPM or stop doesn\u0026rsquo;t really count as a \u0026lsquo;gimmick\u0026rsquo;. Done with SM or SSC chart segments. \u0026ldquo;BGA\u0026rdquo; charts\nUses BGChanges to load lua or image files to alter the Background of a song. Can be used to add in visual effects as needed. \u0026ldquo;Foreground\u0026rdquo; charts\nUses FGChanges to load lua files that can alter or obstruct the player\u0026rsquo;s view of the notefield Requires one to keep track of notes and the notefield itself. \u0026ldquo;Modifier\u0026rdquo; charts (or \u0026ldquo;modcharts\u0026rdquo;/\u0026ldquo;modfiles\u0026rdquo;)\nUsually uses FGChanges or BGChanges to load lua files that can script modifiers to run at given points of the song. Requires one to use various information given, such as column order, note color or direction to figure out what note to hit and when to hit it. Older mod charts tend to use course files or the #ATTACKS field in simfiles to apply scripted modifiers. Newer mod charts tend to hide the UI, which allows for more screen-estate when utilizing modifiers. These are not mutually exclusive categories. One simfile could be a combination of \u0026ldquo;Foreground\u0026rdquo; and \u0026ldquo;Modifier\u0026rdquo;, while another could be a combination of \u0026ldquo;Gimmick\u0026rdquo; and \u0026ldquo;Foreground\u0026rdquo;.\n","description":"Normal gameplay is as follows: Notes move up or down towards the target on a usually static background, and the player hits the notes when they reach the target. Simple.\nEffect simfiles change this up, which can result in interesting gameplay results.\nThere are multiple \u0026lsquo;catagories\u0026rsquo; of effect files:\n\u0026ldquo;Gimmick\u0026rdquo; charts\nWhile not really an \u0026rsquo;effect\u0026rsquo;, per-say, gimmick charts can change up how one reads a chart. A single BPM or stop doesn\u0026rsquo;t really count as a \u0026lsquo;gimmick\u0026rsquo;."},{"id":67,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-EnsuringStringComp/","title":"Ensuring string compatibility","parent":"BitmapText","content":"When applying text on a BitmapText actor, depending on the font, some glyphs might not present themselves properly. Let\u0026rsquo;s take the following example, which attempts to load a text with the value H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶, which is Headgrinder with some special unicode to add non-spacing strikes in the text.\nIn this example, the glyphs representing the special unicode symbols are not found in this custom font, so they show ? symbols instead (from the Common default glyph image list), to indicate the missing element. All glyphs are available on this font, so the text is properly shown. If the need comes to use a font but glyphs are not possible to be retrieved, then you can use the AltText variable from within settext, which can be used as a failsafe if the current string includes an unavailable glyph.\n-- First argument is the original text, while the second is the alternative variant for compatibility. self:settext( \u0026#34;H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶\u0026#34;, \u0026#34;Headgrinder\u0026#34; ) With the code above, the case will be that the first image on the left will default to the second variable, given the missing glyphs from its sheet.\n","description":"When applying text on a BitmapText actor, depending on the font, some glyphs might not present themselves properly. Let\u0026rsquo;s take the following example, which attempts to load a text with the value H̶e̵a̶d̸g̷r̴i̸n̶d̴e̴r̶, which is Headgrinder with some special unicode to add non-spacing strikes in the text.\nIn this example, the glyphs representing the special unicode symbols are not found in this custom font, so they show ? symbols instead (from the Common default glyph image list), to indicate the missing element."},{"id":68,"href":"/user-guide/config/","title":"Features \u0026 Config","parent":"User Guide","content":"","description":""},{"id":69,"href":"/dev/actors/actortypes/notefield/NoteField-HiddenRegions+NoteTypeMult/","title":"Hidden Regions \u0026 NoteType Multipliers","parent":"NoteField","content":"Hidden Regions \u0026amp; NoteType Mult are two sets of functions that allow for manipulating notes.\nHidden Regions Hidden Regions specify parts of the chart to not draw. If a hold head is in the segment, the entire hold will not draw.\nCan be cleared with clear_hidden_regions or ClearHiddenRegions and also takes an optional parameter for column.\nInput format The input is a table of tables. Each inner table follows the same format. At least one inner table is required. Note that col is optional and 1-indexed, and affects all columns if not provided.\n{ {start_beat, end_beat, [col]}, {start_beat, end_beat, [col]}, ... } Example local P1 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP1\u0026#39;) local P2 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP2\u0026#39;) if P1 then P1:GetChild(\u0026#39;NoteField\u0026#39;):add_hidden_regions{ {12, 24}, {32, 64, 1}, -- Hide the notes in the 1st and 3rd column {32, 64, 3}, } end if P2 then P2:GetChild(\u0026#39;NoteField\u0026#39;):AddHiddenRegions{ -- Also has CamelCase function name {0, 12}, {24, 32}, {32, 64, 2}, {32, 64, 4}, } end NoteType Multipliers NoteType Multipliers allow one to affect the note quantization throughout a chart.\nCan be cleared with clear_note_type_mults or ClearNoteTypeMults.\nInput format Like Hidden Regions, this also uses a table of tables as its\u0026rsquo; input. At least one table with an entry for beat 0 is required for the first call to add_note_type_mults/AddNoteTypeMults. This affects all columns in the NoteField. Negative beats are not allowed for input.\n{ {start_beat, multiplier}, {start_beat, multiplier}, ... } Example local P1 = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP1\u0026#39;) if P1 then P1:GetChild(\u0026#39;NoteField\u0026#39;):add_note_type_mults{ {0, 0.5}, -- beat 0 to 33 will look like a chart at half the BPM {33, 0}, -- beat 33 to 64.5 will look like they\u0026#39;re all at beat 16.5 {64.5, 1}, -- Everything onwards will now flow normally as if they\u0026#39;re from beat 16.5 onwards. } end ","description":"Hidden Regions \u0026amp; NoteType Mult are two sets of functions that allow for manipulating notes.\nHidden Regions Hidden Regions specify parts of the chart to not draw. If a hold head is in the segment, the entire hold will not draw.\nCan be cleared with clear_hidden_regions or ClearHiddenRegions and also takes an optional parameter for column.\nInput format The input is a table of tables. Each inner table follows the same format."},{"id":70,"href":"/dev/actors/actortypes/notefield/NoteField-PlayerManipulation/","title":"How a Player Manipulates its' NoteField","parent":"NoteField","content":"Some modifiers require the Player to perform some adjustments to the NoteField. This page documents what gets affected and how.\nNote that this is useful knowledge if trying to replicate some modifiers on a Def.NoteField by itself or if you need something to follow what a Player does. Any part that relies in reverse/downscroll only takes effect when the first column is more than 50% towards downscroll.\nAll modifiers mentioned are calculated in floating point format, so 150% would be represented as 1.5.\nScaling zoom and position based on SCREEN_HEIGHT/480 is only needed if using a Def.NoteField outside of a scaled ActorFrame.\nY Position This is based on metrics and the tilt modifier (100% Hallway/Incoming = -1 tilt and 100% Distant/Space = 1 tilt) Note that the amount tilt adds goes positive when in reverse/downscroll.\nBase amount: (upscroll receptor position + downscroll receptor position) / 2\nPositive tilt (Distant/Space): scale(tilt, 0, 1, 0, -45) or -45*tilt\nNegative tilt (Hallway/Incoming): scale(tilt, 0, -1, 0, -20)or 20*tilt\nHere\u0026rsquo;s how to grab the relevant metrics in lua:\nlocal receptposup = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposdown = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) -- This is your base amount of y position. The amount from tilt adds onto this. local notefieldy = (receptposup + receptposdown)/2 X Rotation / rotationx This is based on the tilt modifier. (100% Hallway/Incoming = -100% tilt and 100% Distant/Space = 100% tilt) Note that the amount of rotation gets *-1 when in reverse/downscroll.\nBase amount: scale(tilt, -1, 1, 30, -30) or -30*tilt\nZoom This is based on the mini and tilt modifiers. (100% Hallway/Incoming = -100% tilt and 100% Distant/Space = 100% tilt)\nMini: scale(mini, 0, 1, 1, .5) or 1 - (0.5*mini)\nTilt: scale(tilt, 0, 1, 1, 0.9) (positive) or scale(tilt, 0, -1, 1, 0.9) (negative) or 1 - 0.1*abs(tilt)\nThese two are multiplied together. If the z axis shouldn\u0026rsquo;t be scaled, then zoomz becomes 1/(mini zoom * tilt zoom), taking care to not divide by zero.\nVanish Point This is dependant on metrics, skew and Player position and is added onto by what is given through vanishpointx/vanishpointy. This is applied on the ActorFrame containing the NoteField.\n(100% Space/Incoming = 100% skew)\nX position: scale(skew, 0, 1, Player:GetX(), SCREEN_CENTER_X) +layer\u0026rsquo;s vanish point x\nY position: Player:GetY() + NoteField base y position + player\u0026rsquo;s vanish point y\nThe metrics can be grabbed as seen in the Y Position section. Note that the base notefield position isn\u0026rsquo;t scaled in this as of now.\nFOV A NoteField does not have its\u0026rsquo; own FOV, and instead relies on Player to have an FOV for 3d effects. This is applied on the ActorFrame containing the NoteField.\nThe default value is 45.\n","description":"Some modifiers require the Player to perform some adjustments to the NoteField. This page documents what gets affected and how.\nNote that this is useful knowledge if trying to replicate some modifiers on a Def.NoteField by itself or if you need something to follow what a Player does. Any part that relies in reverse/downscroll only takes effect when the first column is more than 50% towards downscroll.\nAll modifiers mentioned are calculated in floating point format, so 150% would be represented as 1."},{"id":71,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-InlineColoring/","title":"Inline-Text manipulation","parent":"BitmapText","content":"Starting from SM5 Preview 1, BitmapText actors can include special instructions to manipulate separate glyphs with things like color. Operations from this use the AddAttribute function to insert these instructions.\n-- This adds an attribute to the BitmapText. These are stacked. self:AddAttribute( [starting point], {[attribute to add]} ) -- This removes all attributes applied on the BitmapText. self:ClearAttributes() Any time the BitmapText calls settext or its own text changes, all attributes assigned to it will be cleared and will need to be reapplied. The Attributes table Examples Squared-Bracketed string conversion Utilizing the Diffuses attribute The Attributes table The following are the attributes available via the AddAttribute function.\nName Type Action Diffuse color Color for the attribute segment. This applies for all the coloring of the glyph. Length int How long is the attribute going to be (size is in number of glyphs) Diffuses table Table version of the Diffuse attribute, iterates through them all to give different corner colors for the glyph. An example is shown below. Glow color Color to apply as additional color for the attribute segment. Examples Squared-Bracketed string conversion The following example converts a string that includes square brackets into red colored sections.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 local function ConvertText( child ) local str = child:GetText() -- This will contain all possible changes to change the color method. local charindex = 0 -- Here we\u0026#39;ll store the all the possible matches to color. local ColoringProcess = {} -- Let\u0026#39;s use gmatch to get all matches where a string is enclosed on square brackets. -- A trick being used here are the empty parenthesis, as gmatch doesn\u0026#39;t provide a general index value -- when there\u0026#39;s a proper match found. However, if you include parenthesis before or after a successful match, -- you\u0026#39;ll get the index value of the the start and the end of the match relative to the entire string, which is -- useful to get the position to apply each attribute. for p1,m,p2 in str:gmatch(\u0026#34;()(%[.-%])()\u0026#34; ) do ColoringProcess[#ColoringProcess+1] = { -- The attributes need the value to be 0-indexed, hence the -1, as Lua provides all results starting with 1. Start = p1-1, Attr = { Diffuse = Color.Red, Length = m:len() } } end -- We\u0026#39;re done. Apply the resulting table\u0026#39;s atributes to the text. for k,v in pairs( ColoringProcess ) do child:AddAttribute( v.Start, v.Attr ) end end return Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;I\u0026#39;m [Text]\u0026#34;, OnCommand = function(self) self:Center() -- Center the BitmapText so it\u0026#39;s visible -- Call the function above. ConvertText(self) end } The result of this example, makes the Text segment of the BitmapText\u0026rsquo;s Text attribute red. Utilizing the Diffuses attribute This attribute is a special case, as it requires a table to go through them all, and each will apply to the glyphs corners. Given this, it has a limit of 4 on the table, any other diffuse in the table past that will be ignored. If there are less than 4 on the table, the rest will be filled with #ffffff.\nOnCommand = function(self) local myColors = { Color.Red, Color.Blue, Color.Blue, Color.Red, } -- Apply the diffuses to all characters in the text. self:AddAttribute( 0, { Diffuses = myColors, Length = -1 } ) end The result ends up being that each glyph has red on the top left and bottom right corner, while having blue on the top right and bottom left corners. ","description":"Starting from SM5 Preview 1, BitmapText actors can include special instructions to manipulate separate glyphs with things like color. Operations from this use the AddAttribute function to insert these instructions.\n-- This adds an attribute to the BitmapText. These are stacked. self:AddAttribute( [starting point], {[attribute to add]} ) -- This removes all attributes applied on the BitmapText. self:ClearAttributes() Any time the BitmapText calls settext or its own text changes, all attributes assigned to it will be cleared and will need to be reapplied."},{"id":72,"href":"/dev/actors/actortypes/notefield/NoteField-InputManipulation/","title":"Input Manipulation","parent":"NoteField","content":"NoteField has multiple functions that allow for faking and manipulating input \u0026amp; judgments. Every function mentioned has a snake case alias.\nDidTapNote / DidHoldNote These two functions allow for forcing a noteflash on the columns.\nBoth functions take three parameters: Column (First column is 1), a TapNoteScore/HoldNoteScore and whether to use the \u0026ldquo;bright\u0026rdquo; variant. (\u0026ldquo;Bright\u0026rdquo; is what\u0026rsquo;s normally used when the current combo is over a certain threshold.)\nSetPressed Makes the NoteField act like the given column is pressed.\nThe function takes a column (First column is 1).\nStep Makes the NoteField act like a step happened on a given column.\nThe function takes a column (First column is 1), and a TapNoteScore enum.\nCallbacks A NoteField can have functions attatched to various actions.\nThe given callback function are allowed to return its\u0026rsquo; own values, which the NoteField will respect instead.\nPass nil into a set function to clear the callback function.\nSetDidTapNoteCallback / SetDidHoldNoteCallback\nRuns when a tap note is hit or a hold note is judged. The function is passed the column, score enum and the bright boolean. SetSetPressedCallback\nRuns when a press happens. The function is passed the column. SetStepCallback\nRuns when a step happens. The function is passed the column and a TapNoteScore enum. ","description":"NoteField has multiple functions that allow for faking and manipulating input \u0026amp; judgments. Every function mentioned has a snake case alias.\nDidTapNote / DidHoldNote These two functions allow for forcing a noteflash on the columns.\nBoth functions take three parameters: Column (First column is 1), a TapNoteScore/HoldNoteScore and whether to use the \u0026ldquo;bright\u0026rdquo; variant. (\u0026ldquo;Bright\u0026rdquo; is what\u0026rsquo;s normally used when the current combo is over a certain threshold.)\nSetPressed Makes the NoteField act like the given column is pressed."},{"id":73,"href":"/user-guide/setup/install/","title":"Installation","parent":"Setup","content":" System requirements Project OutFox has builds for Windows, macOS, and Linux. We also have specific builds for ARM-based Linux devices and Apple M1-based computers. It should run on just about any computer from the mid-2000s onward, depending on the operating system and hardware specifications. We have had alphas running on CPUs as old as the Pentium E2180.\nThe Windows build of Project OutFox requires Windows 7 or later. Windows XP builds are available for selected releases, which require Service Pack 3.\nParts of the game are so well-optimised now that they\u0026rsquo;re running too fast, and the rest of the game needs to catch up. We will have a proper fix later, but increasing the amount of background activity (i.e. having other programs running in the background, etc.) is a temporary solution.\nHow to install Project OutFox Download the installer or package for your respective operating system on the Project OutFox website.\nLinux \u0026 Raspberry Pi Mac OS Windows Next steps Once Project OutFox is installed, you can move on to setting the game up.\n","description":"System requirements Project OutFox has builds for Windows, macOS, and Linux. We also have specific builds for ARM-based Linux devices and Apple M1-based computers. It should run on just about any computer from the mid-2000s onward, depending on the operating system and hardware specifications. We have had alphas running on CPUs as old as the Pentium E2180.\nThe Windows build of Project OutFox requires Windows 7 or later. Windows XP builds are available for selected releases, which require Service Pack 3."},{"id":74,"href":"/user-guide/setup/install-linux/","title":"Installation on Linux \u0026 Raspberry Pi","parent":"Setup","content":" Important note Determining what version to download Installing the game Portable vs Non-portable mode Running the game Extra NoteSkins Common problems Missing libraries Audio not playing / going to the wrong device Needing to force ALSA instead of PulseAudio. Needing to force a different audio driver Arcade Machine Conversion With Pi LITBoard/Arduino Instructions Important note Do not extract or run the game as the root user. It\u0026rsquo;s considered very unsafe, and you will have permission issues.\nDetermining what version to download There are multiple versions for linux setups. Use uname -a in a terminal to find out what to download.\nFor example, the above output says x86_64, so the amd64 download would be used. (amd64 legacy would be used on older systems/linux distributions)\nRaspberry Pi users would use arm64v8 if uname shows \u0026ldquo;aarch64\u0026rdquo;, while arm32v7 would be used if uname has \u0026ldquo;armv7\u0026rdquo; in it.\nInstalling the game Project OutFox is currently distributed as .tar.gz files for linux distributions. Through a GUI Most distributions have a right click item in their file manager for extracting archives.\nIf the menu doesn\u0026rsquo;t have an option to extract the archive, open the file in your archive manager and extract it to somewhere convenient. (ex: the user\u0026rsquo;s home or Desktop directory)\nUsing \u0026#39;tar\u0026#39; Open a terminal and get to the directory the archive is in.\nRun this in your terminal, replacing the name of the archive file with what you named it.\ntar -xvf OutFox-5.3.0-alpha-4.9.9HF3b-amd64-legacy-date-20210809.tar.gz This should create a directory that holds the install of Project OutFox.\nPortable vs Non-portable mode When booting, the game looks for a file in its\u0026rsquo; root directory called portable.ini. If this file is found, the game switches to \u0026ldquo;portable\u0026rdquo; mode, which has all save data placed in the program\u0026rsquo;s root directory.\nOtherwise, the save data will be placed in .project-outfox in the user\u0026rsquo;s home directory.\nRunning the game Through a Launcher The following is an example launcher file named \u0026ldquo;Project OutFox.desktop\u0026rdquo;.\nCreate a file on the desktop with this name and base the contents on the section below.\n#!/usr/bin/env xdg-open [Desktop Entry] Type=Application Name=Project OutFox Icon=/home/mtk/Desktop/Icons/dance_icon.png Exec=/home/mtk/Desktop/OutFox/outfox Note that the Exec line is a full path to the OutFox executable, while the Icon line can be a full path to any png on the system.\nOnce created, the launcher can be double-clicked to run the game.\nThrough the terminal In the game\u0026rsquo;s root directory, type this into the terminal and press enter:\n./outfox This will start the game and have some extra output in the terminal that is usually seen in the logs.\nTo force a theme, run the following, replacing the theme name with the desired theme\u0026rsquo;s directory name.\n./outfox --theme=SM5-GrooveNights Extra NoteSkins The NoteSkinsSM5 directory in Appearance contains the noteskins that came with StepMania 5.1/5.0.12. The contents can be dragged into the NoteSkins directory if one wants to use the old noteskins.\nCommon problems Missing libraries The game might not launch if libraries are missing. ldd can be used to help determine what packages need to be installed without having to run the game multiple times.\nRun this in the game\u0026rsquo;s directory from a terminal to find what libraries are missing:\nldd outfox Here is example output from ldd:\nIn this example, libbz2.so.1.0 is missing.\nHere\u0026rsquo;s a list of what libraries it looks for and what Debian/Ubuntu/Fedora package it corresponds to. Most systems should have most of these already.\nLibrary name Debian/Ubuntu pacakge Fedora package libOpenGL.so.0 libopengl0 libglvnd-opengl libGLX.so.0 libglx0 libglvnd-glx libasound.so.2 libasound2 alsa-lib libjack.so.0 libjack-jackd2-0 jack-audio-connection-kit or pipewire-jack-audio-connection-kit libpulse.so.0 libpulse0 pulseaudio-libs libbz2.so.1.0 libbz2-1.0 bzip2-libs libusb-1.0.so.0 libusb-1.0-0 libusb1 or libusbx liblzma.so.5 liblzma5 xz-libs liblz4.so.1 liblz4-1 lz4-libs libFLAC.so.8 libflac8 flac-libs libogg.so.0 libogg0 libogg libvorbis.so.0 libvorbis0a libvorbis libvorbisenc.so.2 libvorbisenc2 libvorbis Audio not playing / going to the wrong device Be sure to check the SoundDevice preference.\nWhen the game boots, it writes the available audio devices into the logs and terminal output.\nAssuming the third device is where the audio should be, the whole line for SoundDevice should be SoundDevice=plughw:1,3.\nNeeding to force ALSA instead of PulseAudio. A wrapper program called pasuspender can be used to temporarilly disable pulseaudio and make OutFox use the ALSA drivers.\nIn the terminal, it would be used like this:\npasuspender ./outfox Needing to force a different audio driver Be sure to check the SoundDriver preference for forcing the audio driver.\nHere\u0026rsquo;s what can be put into the preference, and what it means\nPreference setting Audio Driver Pulse PulseAudio ALSA-sw ALSA, software renderer. JACK JACK Null No audio Arcade Machine Conversion With Pi LITBoard/Arduino Instructions In the terminal, navigate to the /Data folder of your Outfox installation.\nexample: cd /home/pi/Desktop/OutFox/Data\nCreate a FIFO file that Outfox will write to:\nmkfifo \u0026quot;StepMania-Lights-SextetStream.out\u0026quot;\nEnsure this FIFO file has the proper read/write permissions as the same account running Outfox.\nNext, navigate to the Outfox save folder. In most cases, this will be in your home directory and be something like .project-outfox:\ncd /home/pi/.project-outfox\nOpen up \u0026ldquo;Preferences.ini\u0026rdquo;:\nnano Preferences.ini\nScroll down to find a line that starts with LightsDriver= and change it to:\nLightsDriver=SextetStreamToFile\nPress crtl+o and hit return, then press ctrl+x to save the file and exit nano. We need to now make sure that something is going to use that file, otherwise you\u0026rsquo;ll find your system will eventually crash as that file fills up without getting emptied.\nMake sure that socat is installed on your pi:\nsudo apt install socat\nNext open up cron to have socat start at reboot by typing:\ncrontab -e\nAt the end of that window, add this line (replacing the path with the path to you FIFO file):\n@reboot socat \u0026quot;/home/pi/Desktop/OutFox/Data/StepMania-Lights-SextetStream.out\u0026quot; /dev/ttyUSB0,raw,echo=0,b155200 \u0026amp;\nPress crtl+o, return, ctrl+x to save and exit crontab. Notice the \u0026amp; at the end of the line. That\u0026rsquo;s important to let it run in the background. Otherwise your system will just sit there waiting for it to quit\u0026hellip;\nNext, create a launcher file that will run on startup. In order to do this, it should reside in the autostart folder of xdg. Easy way to do this is:\nnano /etc/xdg/autostart/OutFox.desktop\nWhen nano opens, put the following into the text file:\n#!/usr/bin/env xdg-open [Desktop Entry] Type=Application Name=Project OutFox Exec=/home/pi/Desktop/OutFox/outfox Ctrl+o, return, ctrl+x to save and exit the file. Make sure you also give it executable permission:\nchmod a+x /etc/xdg/autostart/OutFox.desktop\nNow if you reboot the pi, it should automatically load socat and OutFox for a session of great fun.\n(thanks to Random Hajile for the PiCab information)\n","description":"Important note Determining what version to download Installing the game Portable vs Non-portable mode Running the game Extra NoteSkins Common problems Missing libraries Audio not playing / going to the wrong device Needing to force ALSA instead of PulseAudio. Needing to force a different audio driver Arcade Machine Conversion With Pi LITBoard/Arduino Instructions Important note Do not extract or run the game as the root user. It\u0026rsquo;s considered very unsafe, and you will have permission issues."},{"id":75,"href":"/user-guide/setup/install-mac/","title":"Installation on Mac OS","parent":"Setup","content":" Note to users using \u0026ldquo;App Store Only Applications\u0026rdquo; Using this permission will make Gatekeeper revoke necessary permissions that Project OutFox needs to read the game content (Given the app loads files externally). So, if you are using this option instead of \u0026ldquo;App Store and Identified Developers\u0026rdquo;, change it before downloading the software.\nThis option can be found on System Preferences -\u0026gt; Security and Privacy -\u0026gt; \u0026ldquo;Allow apps downloaded from:\u0026rdquo;\nOpen the DMG file and drag the game to your Applications directory. Additional Notes Dequarantine Project OutFox from macOS (4.9.9 and below) ↕ On pre-digitally-signed builds, you will have to change macOS security settings in order for Project OutFox to operate correctly. macOS prevents access to external files by unsigned apps unless given manual permission by the user.\nTo do this, open Terminal and run the following command: xattr -dr com.apple.quarantine /path/to/outfox, replacing /path/to/outfox with the path to the directory containing the OutFox executable (manually typing it out, or dragging the folder containing the game executable directly onto the window to fill it automatically). If no errors show up after pressing enter, then you’re ready to start the game.\nOn older builds, macOS Catalina also generated a message stating that the game was requesting permission to receive keystrokes from any application. This was a side effect of previous code that has since been removed.\n","description":"Note to users using \u0026ldquo;App Store Only Applications\u0026rdquo; Using this permission will make Gatekeeper revoke necessary permissions that Project OutFox needs to read the game content (Given the app loads files externally). So, if you are using this option instead of \u0026ldquo;App Store and Identified Developers\u0026rdquo;, change it before downloading the software.\nThis option can be found on System Preferences -\u0026gt; Security and Privacy -\u0026gt; \u0026ldquo;Allow apps downloaded from:\u0026rdquo;"},{"id":76,"href":"/user-guide/setup/install-windows/","title":"Installation on Windows","parent":"Setup","content":"Windows builds of Project OutFox use an installer; follow the instructions, and launch the game using the provided shortcuts.\nIt is recommended that you do not install it to the Program Files directory, as this is known to cause problems. The installer offers optional components, such as the noteskins that were included with StepMania 5.0.12 and 5.1, and \u0026ldquo;Toasties\u0026rdquo; - animations that can trigger on combo milestones in-game. By default, the game is installed in \u0026ldquo;Portable Mode\u0026rdquo;; save data is stored in the installation directory. If you disable portable mode, your save data will be stored in your user directory under %APPDATA%\\Project OutFox. If your log file (Installation directory/Logs) shows WDDM1.0 or WDDM1.1 at the end of the graphics card name (i.e. \u0026ldquo;Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0)\u0026rdquo;) or the log shows \u0026ldquo;Microsoft GDI\u0026rdquo; as the renderer, then you are running the OpenGL-crippled \u0026ldquo;Windows\u0026rdquo; driver that is downloaded on a fresh install. Project OutFox will not work on these drivers, as we do not support DirectX anymore (the old D3D renderer that 5.0.12/5.1 has) There is a list of drivers at here but for some of these cards, you need to keep your Windows 7 install disc handy!\n","description":"Windows builds of Project OutFox use an installer; follow the instructions, and launch the game using the provided shortcuts.\nIt is recommended that you do not install it to the Program Files directory, as this is known to cause problems. The installer offers optional components, such as the noteskins that were included with StepMania 5.0.12 and 5.1, and \u0026ldquo;Toasties\u0026rdquo; - animations that can trigger on combo milestones in-game. By default, the game is installed in \u0026ldquo;Portable Mode\u0026rdquo;; save data is stored in the installation directory."},{"id":77,"href":"/user-guide/setup/key_shortcuts/","title":"Keyboard Shortcuts","parent":"Setup","content":"Project OutFox has quite a few keyboard shortcuts to make certain tasks easier.\nGlobal Shortcuts These shortcuts work everywhere in OutFox unless otherwise specified (or used in another section).\nF1: Insert Coin\nF2: Reload metrics, textures, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+F2: Reload theme scripts (Does nothing in edit mode)\nShift+F2: Reload metrics, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+Shift+F2: Reload overlay screens \u0026amp; metrics (Does nothing in edit mode)\nF3: Show debug menu Scroll Lock: Operator Button (Go directly to the theme\u0026rsquo;s operator menu screen. Will not work if the current screen doesn\u0026rsquo;t allow the operator menu button)\n~ (tilde): Broadcasts \u0026ldquo;ToggleConsoleDisplay\u0026rdquo; globally\nPrintScreen: Take a screenshot\nShift+PrintScreen: Take a high quality screenshot (If HighRes Screenshots are off by default)\nShift+PrintScreen: Take a low quality screenshot (If HighRes Screenshots are on by default)\nAlt+Enter: Toggle fullscreen\n` (accent): Slow the game\u0026rsquo;s tweens down Tab: Speed the game\u0026rsquo;s tweens up\nPauseBreak: Toggle \u0026ldquo;Mute Actions\u0026rdquo;\nEditor Shortcuts These shortcuts only work in the edit screens. All Edit Modes Up: Scroll up one \u0026rsquo;line\u0026rsquo; (If 4ths are selected, you go up one 4th, if 8ths are selected, you go up one 8th, etc.)\nDown: Scroll down one \u0026rsquo;line'\nF1: Show the help menu\n; (semicolon) / PageUp: Scroll up by 4 beats\n\u0026rsquo; (apostrophe / single quote) / PageDown: Scroll down by 4 beats\nCtrl+; (semicolon) / Ctrl+PageUp: Scroll up by the number of beats in a measure\nCtrl+\u0026rsquo; (apostrophe / single quote) / Ctrl+PageDown: Scroll down by the number of beats in a measure\nHome: Scroll up to beat 0\nEnd: Scroll down to the last beat of the chart\n. (period): Scroll down to next note in the chart\n, (comma): Scroll up to previous note in the chart\nCtrl+. (period): Scroll down to next chosen chart segment type in the chart\nCtrl+, (comma): Scroll up to previous chosen chart segment type in the chart\nShift+Up / Shift+Down: Create a section from where shift was held\nSpace: Set the start and stop points of a selection\np: Play the selected section of the chart (plays from start if no selection)\nCtrl+p: Play the chart from the start\nShift+p: Play the chart from the current beat\nEsc / Start / Enter / Back: Open the edit menu (When previewing the chart)\nEsc / Start / Enter / Back: Exit the play mode (When practicing / recording / playing the chart)\nPractice Mode Up: Scroll up one measure (Overrides all other modes)\nDown: Scroll down one measure (Overrides all other modes)\nLeft: Lower the scroll speed\nRight: Raise the scroll speed\nCourse / Mods Edit Mode Left: Go to the higher snap (8th to 4th, etc.)\nRight: Go to the lower snap (4th to 8th, etc.)\nFull Edit Mode F4: Show timing menu\nF5: Move to the previous chart for the Song\nF6: Move to the next chart for the Song\nF7: Lower BPM at current beat\nF8: Raise BPM at current beat\nF9: Decrease stop length at current beat\nShift+F9: Decrease delay length at current beat\nF10: Increase stop length at current beat\nShift+F10: Increase delay length at current beat\nF11: Decrease beat 0 offset\nF12: Increase beat 0 offset\n[: Decreases the music sample\u0026rsquo;s starting point\n]: Increases the music sample\u0026rsquo;s starting point\nShift+[: Decreases the music sample\u0026rsquo;s length\nShift+]: Increases the music sample\u0026rsquo;s length\nl: Play the sample music for the song.\nb: Open the Background Change menu for layer 1\nShift+b: Open the Background Change menu for layer 2\nCtrl+Insert: Shifts all timing changes down\nCtrl+Delete: Deletes timing segments and shifts the later ones up to the beginning of the deleted areas\nq: Decrease the amount of time a column has to be held to create a hold in record mode\nw: Increase the amount of time a column has to be held to create a hold in record mode\ne: Reset the amount of time a column has to be held to create a hold in record mode\nr: Turn off the ability to create a hold in record mode\n0-9: add notes to columns 1-10 (holding while pressing Up / Down creates a hold)\nAlt+0-9: add notes to columns 11-20 (holding while pressing Up / Down creates a hold)\nShift while creating a hold: Create a roll\nn: Switch to the previous note type\nm: Switch to the next note type\nCtrl+n: Switch to the previous segment type\nCtrl+m: Switch to the next segment type\nCtrl+Up: Increase the scroll speed\nCtrl+Down: Decrease the scroll speed\nLeft: Go to the higher snap (8th to 4th, etc.)\nRight: Go to the lower snap (4th to 8th, etc.)\nEnter (when not in a menu): Open the area menu\na: Open the alter menu\nAlt+b: Bake in a random video from the song group\nCtrl+b: Bake in a random video from the song\u0026rsquo;s group or genre\nCtrl+r: Go into record mode for the selected area\nInsert / \\(backslash): Inserts a beat and shifts everything after down\nDelete: Deletes a note/selection, and shifts the later notes up to where the deleted note/start of deleted section was\nHolding Alt when adjusting a value: Use a smaller adjust amount\nCtrl+s: Save (Windows, Linux, Pi, etc.)\nMeta+s: Save (Mac OS)\nu: Undo the last action\n/ (slash): switch which player is being charted for in a couples chart\nt: Switch between chart timing and song timing\nAlt (during Record mode): Remove notes\nShift (during Record mode): Add rolls\np (During Record Paused mode): Play selection\nr (During Record Paused mode): Record from the current beat\nCtrl+r (During Record Paused mode): Record the selection\nGameplay Shortcuts These shortcuts only work in gameplay screens.\nF4: Revert sync changes\nF6: Autosync\nF7: Toggle Assist Tick\nShift+F7: Toggle Metronome\nF8: AutoPlay (+Alt = hide autoplay text)\nShift+F8: AutoPlayCPU (+Alt = hide autoplay text)\nF9: Decrease song BPM\nF10: Increase song BPM\nF11: Decrease global offset\nShift+F11: Decrease song offset\nF12: Increase global offset\nShift+F12: Increase song offset\nMusic Wheel Shortcuts These shortcuts only work in the music wheel screen.\nF9: Toggle between actual titles and transliterated titles.\nCtrl+Shift+r: reload the currently selected song\nCtrl+a-z: Sort the songs by letter and go to the group of all songs that start with that letter.\nCtrl+Backspace: Delete the song from the system. (Actually deletes from the drive!)\nCtrl+Shift+Backspace: Delete the selected chart from the system.\n","description":"Project OutFox has quite a few keyboard shortcuts to make certain tasks easier.\nGlobal Shortcuts These shortcuts work everywhere in OutFox unless otherwise specified (or used in another section).\nF1: Insert Coin\nF2: Reload metrics, textures, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+F2: Reload theme scripts (Does nothing in edit mode)\nShift+F2: Reload metrics, noteskins \u0026amp; code detector cache (Does nothing in edit mode)\nCtrl+Shift+F2: Reload overlay screens \u0026amp; metrics (Does nothing in edit mode)"},{"id":78,"href":"/dev/mode-support/ksf-support/","title":"KSF","parent":"NoteLoader support","content":"Project OutFox contains a parser for the KSF chart format, which is used for Kick It Up and \u0026lsquo;Pump it Up\u0026rsquo;-style charts. This has been supported as early as StepMania 3.9, so everything listed here is what OutFox supports. At this point, most everyone has moved away from the KSF format in favor of SM or SSC. Like SM and SSC, sections follow this format: #SECTION:DATA;, which means #, : and ; shouldn\u0026rsquo;t be used in the data segment.\nFile Naming Most KSF files have the difficulty and chart type as its\u0026rsquo; file name. The following tables show what names translate to which difficulty, default rating and chart type\nDifficulty File Name Chart Rating StepMania 5.1 and older Project OutFox alpha 4.9.9 another 25 Edit D6 wild / wd / hardcore 20 Challenge D5 crazy+ / cz+ 20 Challenge D5 crazy / cz / crazydouble 14 Hard D4 nightmare / nm 14 Hard D4 hard / hd / double 8 Medium D3 freestyle / fs 8 Medium D3 easy / ez / normal 4 Easy D2 Beginner / practice 4 Beginner D1 If not specified, it gets set to Hard/D4 and is given a rating of 10.\nChart Type File Name Resulting Steps Type halfdouble / half-double / h_double / hdb halfdouble double / db double freestyle / fs double nm double _1 single _2 couple Sections TITLE This gives both the song name and artist. There are three acceptable formats for this section:\nsong name This just gives a song name only. artist name - song name This gives both a song name and artist name, separated by a - artist name - song name - difficulty This gives both a song name, artist name and difficulty, separated by a -. In this case, the difficulty is ignored, since it\u0026rsquo;s read from the file name instead. Example:\n#TITLE:L.F.O; With artist \u0026amp; title:\n#TITLE:aran - L.F.O; TICKCOUNT Sets the starting tick count for the file. This specifies how many lines of notes is needed to pass one beat.\nFor example: a tick count of 4 means 4 lines of notes are needed for a whole beat, allowing for 16ths.\nExample:\n#TICKCOUNT:4; BPM This defines the starting BPM.\nExample:\n#BPM:135.01; BPM2 / BPM3 Kick It Up uses these to define the BPMs to change to. You can have up to two BPM changes.\nExample:\n#BPM2:164; #BPM3:174; BUNKI / BUNKI2 Kick It Up uses these to handle the positioning of BPM changes. You can have up to two BPM changes.\nThis is specified in centiseconds in SM.\nExample:\n#BUNKI:2000; #BUNKI2:6500; DIFFICULTY Sets the rating of the chart. Otherwise, values from the Difficulty secion above are used.\nExample:\n#DIFFICULTY:7; STARTTIME Sets the beat 0 offset of the chart. SM interprets this in centiseconds.\nExample:\n#STARTTIME:829; STARTTIME2 / STARTTIME3 Kick It Up uses these to help ensure more accurate BPM changes. STARTTIME3 is ignored in SM.\nExample:\n#STARTTIME2:9; #STARTTIME3:0; PLAYER From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nIf \u0026ldquo;double\u0026rdquo; is found, the file is marked as a doubles chart.\nExample:\n#PLAYER:DOUBLE; or\n#PLAYER:SINGLE; MUSICINTRO / INTRO From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the start point of the music sample. It\u0026rsquo;s parsed in HH:MM:SS format\nExample:\n#MUSICINTRO:1:20; TITLEFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the background location of the song.\nExample:\n#TITLEFILE:CoolTitle.png; DISCFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the banner location of the song.\nExample:\n#DISCFILE:FunnyDisc.png; SONGFILE From Aldo_MX\u0026rsquo;s fork of \u0026ldquo;Stepmania Plus REDUX\u0026rdquo;\nSets the file name of the song\u0026rsquo;s audio.\nIf not specified, the game looks for an audio file named \u0026ldquo;song\u0026rdquo; in the same folder as the KSF.\nExample:\n#SONGFILE:SweetTunes.mp3; #STEP: This is the notedata of the file.\nNotedata specs Each row of notes is 13 characters long, with all 2s marking the end of the chart.\nIf any holds are unfinished at that point, they automatically capped off at the end of the chart.\nFor half-doubles, the first two columns are always 0.\nNote types Character Note Type Quirks 0 empty N/A 1 Tap Note N/A 4 Hold Note The hold finishes upon the first non-4 character in the column. M / m Mines N/A F / f Fake Note N/A L / l Lift Note N/A Example:\n#STEP: 1000010000000 0010000400000 0000000400000 0000000400000 2222222222222 Segment types Direct Move 0.5 had segment definitions to allow for more extendable charting.\n|Tn| Sets the tick count at the current beat.\nExample: |T512| sets the tick count to 512.\n|Bn| Sets the BPM at the current beat.\nExample: |B128.5| sets the BPM to 128.5.\n|En| Sets a delay segment at the given beat for n beats\nExample: |E12| Makes a 12 beat delay segment.\n|Dn| Sets a delay segment at the given beat for n miliseconds\nExample: |D1000| Makes a 1000 milisecond (1 second) delay segment.\n|Mn| / |Cn| Sets the combo multiplier at the given beat\nExample: |M2| sets the combo multiplier to 2.\n|Xn| Sets the scroll segment at the current beat.\nExample: |X3| sets the scroll to 3x.\nWritten and Maintained with ♡ by MTK\n","description":"Project OutFox contains a parser for the KSF chart format, which is used for Kick It Up and \u0026lsquo;Pump it Up\u0026rsquo;-style charts. This has been supported as early as StepMania 3.9, so everything listed here is what OutFox supports. At this point, most everyone has moved away from the KSF format in favor of SM or SSC. Like SM and SSC, sections follow this format: #SECTION:DATA;, which means #, : and ; shouldn\u0026rsquo;t be used in the data segment."},{"id":79,"href":"/dev/actors/actortypes/model/Model-LoadingMoreBones/","title":"Loading Additional Bones","parent":"Model","content":"Starting on Project OutFox Alpha 4.1, Models can now load more than one bone at a time to playback different animations on demand. For this, it is suggested to separate the bone animation data to a separate text file, to not have repeat model data on each animation file, the parser already deals with the job of only loading bone data.\nTo add a new animation to the model, use the LoadBones command. It requires a name for the animation, and a relative path to the animation file.\n-- This will load a animation called \u0026#34;WarmUp\u0026#34; to the model. self:LoadBones( \u0026#34;WarmUp\u0026#34;, \u0026#34;Warm1.txt\u0026#34; ) When the need for using the new animation arrives, use the playanimation command to start it.\n-- Since the previous animation loaded that was recently added was called \u0026#34;Warmup\u0026#34;, we\u0026#39;ll use that -- as the argument to use. The second value determines the speed scale of the animation. self:playanimation( \u0026#34;Warmup\u0026#34;, 1 ) In some cases, you may want to use existing dancing data that you might have on a particular character. Given this, you can load directly from it, by loading your character model from the CHARACTER\u0026rsquo;s GetModelPath() and render it to the scene.\nThen when the need comes to add animation data, use the LoadBones command to load additional bones, in which you can still use the Character\u0026rsquo;s functions to get specific animation files like a Break, Warmup or Dance animation.\n-- Store a random character that will be used on the model object below. -- This will look for any available characters on the \u0026#39;Characters\u0026#39; folder -- on the root directory of the game. -- If none are found, it will report back as null, so remember to check for its validity. local randomCharacter = CHARACTER:GetRandomCharacter() return Def.Model{ -- In this example, we\u0026#39;ll load the animation data on demand, so -- it won\u0026#39;t be added during construction, but in the OnCommand. Meshes=randomCharacter:GetModelPath(), Materials=randomCharacter:GetModelPath(), Bones=randomCharacter:GetModelPath(), OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) -- Now let\u0026#39;s load a bone animation from the character to the model. We\u0026#39;ll use a dancing animation. -- There are functions available to obtain the path for each area for the animation types, -- so in order to choose one at random, we need to convert this into a table that contains the available -- animations. local danceAnims = FILEMAN:GetDirListing( randomCharacter:GetDanceAnimationPath() ) -- Load the random input from the table to the model. self:LoadBones( danceAnims[ math.random(1,#danceAnims) ], \u0026#34;dance\u0026#34; ) -- now play the animation. self:playanimation(\u0026#34;dance\u0026#34;,1) end } ","description":"Starting on Project OutFox Alpha 4.1, Models can now load more than one bone at a time to playback different animations on demand. For this, it is suggested to separate the bone animation data to a separate text file, to not have repeat model data on each animation file, the parser already deals with the job of only loading bone data.\nTo add a new animation to the model, use the LoadBones command."},{"id":80,"href":"/dev/actors/actortypes/sprite/Frames/","title":"Managing Frames","parent":"Sprite","content":"The frames in a sprite are composed of an array containing arrays of two values, Frame and Delay. These describe what frame in a spritesheet the actor should focus on and for how long in seconds.\nSprites that use a video file do not apply for this guide, as the sprite only recognizes it as a single frame, given it\u0026rsquo;s now using FFMpeg to handle playback of said video. For this, you\u0026rsquo;ll need to obtain the Sprite\u0026rsquo;s RageTexture and use the position function, which handles its value in seconds.\nself:GetTexture():position( --[[Time in secs]] ) As an example to demonstate each sprite table, we\u0026rsquo;ll utilize the fox from the staff roll.\nStandard format Utilizing Sprite.LinearFrames Utilizing SetAllStateDelays on existing frames Utilizing SetStateProperties Standard format Frames = { { Frame = 0, Delay = 0.1 }, { Frame = 1, Delay = 0.1 }, { Frame = 2, Delay = 0.1 }, { Frame = 3, Delay = 0.1 } }, In this example, we\u0026rsquo;re creating an animation of 4 frames (these are 0-indexed), that will last 0.4 seconds total, given the sum of each Delay.\nUtilizing Sprite.LinearFrames This is a helper function inside the Sprite namespace that facilitates the creation of the Frames table, by automating the creation of the table with just 2 arguments, the amount of frames to use, and how long in general the animation will be.\nFrames = Sprite.LinearFrames( 4, 2 ) -- Will return --[[ { { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 3, Delay = 0.5 }, }, ]] Utilizing SetAllStateDelays on existing frames This function can be utilized to update all delay amounts of the current frames in the sprite on the fly.\nIn the example, I have a sprite that already loads a sprite that has 4 frames, and plays on 0.1 second delays, making the animation on the top of the page, but now we want to make it slightly slower.\nFrames = { { Frame = 0, Delay = 0.1 }, { Frame = 1, Delay = 0.1 }, { Frame = 2, Delay = 0.1 }, { Frame = 3, Delay = 0.1 } }, OnCommand=function(self) self:SetAllStateDelays(0.5) end before\nafter\nUtilizing SetStateProperties The SetStateProperties function can be utilized to update frame information on a sprite on the fly, by updating the entire table.\nIn this example, let\u0026rsquo;s assume that the current sprite has the table describe above, and now we want to update the sprite to only show two frames of animation instead of 4. In this case, we just need to return a table into the function that only has the two frames.\nself:SetStateProperties({ { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 } }) ","description":"The frames in a sprite are composed of an array containing arrays of two values, Frame and Delay. These describe what frame in a spritesheet the actor should focus on and for how long in seconds.\nSprites that use a video file do not apply for this guide, as the sprite only recognizes it as a single frame, given it\u0026rsquo;s now using FFMpeg to handle playback of said video. For this, you\u0026rsquo;ll need to obtain the Sprite\u0026rsquo;s RageTexture and use the position function, which handles its value in seconds."},{"id":81,"href":"/dev/actors/actortypes/actor/obtainlevels/","title":"Obtaining Childs and ActorFrame Levels","parent":"Actor","content":"When using Actors, you can use self:GetParent() and self:GetChild() to get elements from other ActorFrames or Actors. self:GetChild() can only be used by ActorFrames. You can think of an ActorFrame as a tree of objects. This is the original table. And now you\u0026rsquo;ve called GetParent on the ActorProxy. Def.ActorFrame{ Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, * Def.ActorProxy{ OnCommand=function(self) self:GetParent() end }, } graph LR AF[Def.ActorFrame] --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy) style AF stroke-width:4px style BT stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px When calling it, you go back up a level, which in this case, it will become ActorFrame. graph LR AF(Def.ActorFrame) --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy); style AF fill:#585,color:#fff,stroke-width:4px style BT stroke-width:4px style AP stroke-width:4px In this new location, we get the MyText actor, which can be achieved by calling the GetChild command, and can also return back to the ActorProxy, as we\u0026rsquo;re now in a level that can get both actors (shown in orange). Def.ActorFrame{ * Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, Def.ActorProxy{ OnCommand=function(self) self:GetParent():GetChild(\u0026#34;MyText\u0026#34;):spin() end }, } graph LR AF(Def.ActorFrame ) --\u003e BT(Def.BitmapText) \u0026 AP(Def.ActorProxy); style AF fill:#f85,color:#fff,stroke-width:4px style BT fill:#585,color:#fff,stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px The command uses a String argument, but can also grab from nested tables in case of an ActorFrame not having actors with names assigned. On those cases, actors are just indexed on that ActorFrame set.\nExample Without Names Def.ActorFrame{ OnCommand=function(self) -- If we want to get to the BitmapText, we\u0026#39;ll need to get -- the second entry on the ActorFrame. self:GetChild(\u0026#34;\u0026#34;)[2] -- returns the BitmapText actor. end, Def.Sprite{}, Def.BitmapText{} } Example With Names Def.ActorFrame{ OnCommand=function(self) -- If we want to get to the BitmapText, -- we\u0026#39;ll need to get the \u0026#34;Text\u0026#34; actor. self:GetChild(\u0026#34;Text\u0026#34;) -- returns the BitmapText actor. end, Def.Sprite{ Name = \u0026#34;Image\u0026#34; }, Def.BitmapText{ Name = \u0026#34;Text\u0026#34; } } ","description":"When using Actors, you can use self:GetParent() and self:GetChild() to get elements from other ActorFrames or Actors. self:GetChild() can only be used by ActorFrames. You can think of an ActorFrame as a tree of objects. This is the original table. And now you\u0026rsquo;ve called GetParent on the ActorProxy. Def.ActorFrame{ Def.BitmapText{ Name=\u0026#34;MyText\u0026#34; }, * Def.ActorProxy{ OnCommand=function(self) self:GetParent() end }, } graph LR AF[Def.ActorFrame] --- BT(Def.BitmapText) \u0026 AP(Def.ActorProxy) style AF stroke-width:4px style BT stroke-width:4px style AP fill:#585,color:#fff,stroke-width:4px When calling it, you go back up a level, which in this case, it will become ActorFrame."},{"id":82,"href":"/dev/mode-support/oto-support/","title":"OTO Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on a new OTO notesloader that supports the .osu (Osu) chart format, which is the standard format used in conjunction with the kb and taiko game types. The following page contains details on the .osu parsing options that Project OutFox currently supports. This is a living document - it will be updated as time allows and we add the support or features within.\nThis documentation exists as a mental \u0026rsquo;layout\u0026rsquo; for me to learn about the format and how best to parse it for the way OutFox needs. It will be updated in a few segments - There may be errors, but do let me know so i can update and clarify them, thanks for joining me on this ride! - (Squirrel)\nWe are calling it the OTO parser as we chose to follow the Osu Tatakae Ouendan name.\nOTO Notedata support as of Alpha 4.12.0 - IN PROGRESS We have a partially working implementation of Mode 3 (Mania)! Trivia .osu is a format containing information about Osu beatmaps, which confusingly contain charts for other game modes as well. We use the term chart around the Scrolling Rhythm Game genre, because we do not use specific co-ordinates like on a map. The Osu Tatakae Ouendan mode uses both x and y mapping for the circles, curves and spinners etc, so this is why a lot of players who play the game call the other modes\u0026rsquo; charts beatmaps, because of the original game.\nAlthough catch, taiko and mania do not use co-ordinate systems, similar to almost all the other modes in OutFox, they inherit the beatmap definition by players of the game.\nThroughout this page, we will be using the chart term, as we do not support the Osu Tatakae Ouendan (Mode=0) mode, as we have no way of mapping the circles/hit objects to the screen at this time.\nLayout .osu files are constructed using sections which contain content within to describe and give information about the map or chart detailed within. Each file will only contain one set of data; it is not like SSC or DTX which can contain several charts.\nMost beatmap artists will include different difficulty levels to what they have created, usually with different mode support in some cases. This allows access to different skill levels and more availability to players, as not everyone is highly competitive or have the means to play one specific mode.\nBasic Format The .osu file format describes how notes are arranged and how the game is meant to behave if/when a player takes a specific action. It is usually a simple plain text file with the command lines made up of key:value pairs.\nPlease note! There are 3 layouts to the pairs, which will be explained further down in the page, so if you are parsing this file, do take note about the spaces around the pairs.\nThe format consists of 8 different sections which detail specifics about the chart. We will be going through in detail on the most commonly used commands and features of this format on this page. We will not be supporting editing or creating this format; The support in OutFox is parse (read) only.\nSection What it\u0026rsquo;s for Command / Content type Supported? [General] Chart general information key: value pairs Yes, Some [Editor] Settings saved from the Osu editor key: value pairs Ignored [Metadata] Song Information (title/artist etc) key:value pairs Yes [Difficulty] Osu difficulty settings key:value pairs Some. CircleSize / KeyCount [Events] Osu graphical events comma separated values Only Background [TimingPoints] Timing and Control Points comma separated values Yes, Some [Colours] Settings for the artist to change combo or theme colours key : value pairs Ignored [HitObjects] Hit Objects / Note Types and Holds comma separated values Yes, Some File Format Layout osu file format vn [1 - 14] Status: ✅ Supported\nUsage Example:\nosu file format v14 This value is at the very beginning of the file, and sets the version of the specification that the file uses. As of January 2022, This is Version 14.\nThis variable is used in OutFox just to check for the supported version (charts under version 5 are not supported).\n[General] Section An example of the layout of this section is below. There are several items not included on most charts, but we will cover all of the values you may see in a file so to avoid confusion. Like with the other loader support pages, it is better to be complete than omit things. The commands for this section are done as Command: Value. Do note the space!\nThis section covers settings and options for the chart and game-play screen. As OutFox has a very different setup and internal system, most of the options in this section do not apply. It\u0026rsquo;s here primarily for completeness and to explain what bits do.\n[General] AudioFilename: audio.mp3 AudioLeadIn: 0 PreviewTime: 35841 Countdown: 0 SampleSet: Soft StackLeniency: 0.8 Mode: 3 LetterboxInBreaks: 0 CountdownOffset: 0 SpecialStyle: 0 WidescreenStoryboard: 1 AudioFilename: filename [string] Status: ✅ Supported\nUsage Example:\nAudioFilename: song.mp3 This entry in the list tells the game what music file to use for the chart. It will be case sensitive on Linux/Mac so bear this in mind if you have a chart which cannot find it\u0026rsquo;s music file, this will be the issue.\nThis variable is equivalent to the #MUSIC entry on SM/SSC files.\n#MUSIC:song.mp3; AudioLeadIn: n [0-212] Status: ❌ Ignored (Unsupported)\nUsage Example:\nAudioLeadIn: 0 This entry in the list tells the game the number of milliseconds of silence to add before the first sample of the music that plays. It is used for effects or to prepare players for the beginning of the chart, however with how OutFox does timing, this would act more as an offset, and our clock system does not work in milliseconds.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nPreviewTime: n [time in ms] Status: ✅ Supported\nUsage Example:\nPreviewTime: 35841 This value tells the game the time in milliseconds to play the preview section of the song in the music wheel. There is no separate option for a preview file in this format, so it uses a time offset based on the music file detailed in the AudioFilename entry.\nUnlike SM/SSC there is no #SAMPLELENGTH in this format that tells the game to loop or reset the point of playback. It will fall back to the default 15 second length when parsing.\nTo make this variable compatible with OutFox it needs to be divided by 1000 to get the seconds value, as per the #SAMPLESTART SM/SSC variable.\n#SAMPLESTART:35.841; Countdown: n [0-3] Status: ❌ Ignored (Unsupported)\nUsage Example:\nCountdown: 0 The countdown happens before the beginning of the first hit object or note, allowing the option to \u0026lsquo;ready\u0026rsquo; the player before the song starts. This option allows the chart author to set 4 different speed values. Most modern day charts set this to 0 (disabled).\n0 = Set the countdown to be disabled, so the chart will begin as soon as everything loads. 1 = Set the countdown to be normal, thus adding a 3, 2, 1\u0026hellip;GO! option that happens before the music plays. This only happens if there is an offset before the beginning from what the documentation says, so it is not always guaranteed. 2 = Sets a half speed countdown; one that is half the speed of 1. 3 = Sets a double speed countdown; one that is double the speed of 1. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nSampleSet: set [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSampleSet: Normal This variable allows for the chart artist to specify a selection of sound samples to be used when setting a hit object. These sounds play when an object (note) is hit, much like keysounds in BMS or DTX modes.\nThe definition seems to imply that there are 3 base types that can be set for the whole song, and one can also change this variable in the [HitObjects] and the [TimingPoints] sections described further down.\nOutFox will honour specific hitsounds as keysounds in modes that support them, but at this time we do not have a custom sound sample pack for this command. If you wish to have this supported, do let us know for consideration!\nNormal = Set the sound sample packs to normal. Soft = Set the sound sample packs to softer less distracting sounds. Drum = Set the sound sample packs to drum based sounds. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nStackLeniency: n.n [0.0-1.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nStackLeniency: 0.7 StackLeniency is used in the Osu Tatakae Ouendan mode to \u0026lsquo;stack\u0026rsquo; circles upon one another if they are in the same place (or within a few osupixels) as one previously drawn on the screen.\nThere is some confusion as to what this modifier actually does, and it seems this is a multiplier in time, most likely from 0-1 seconds, so the closer to 1.0 the more likely you will have a stack of circles, (which will have a number within to show the number of circles one needs to hit).\nAs the stack leniency heads towards 0 there is less chance of the \u0026lsquo;multitap\u0026rsquo; circles forming on the notefield so this I believe is what the variable is for.\nOutFox does not support the Osu Tatakae Ouendan mode, so this variable is ignored.\nIf there is anyone out there with a better/more comprehensive explanation of this variable, I\u0026rsquo;d love to have it so we can update it here. This is just my rough guess on seeing it in game - Squirrel\nThis variable has no equivalent SM/SSC value.\nMode: n [0-3] Status: ✅ Supported\nUsage Example:\nMode: 1 This command sets the game mode the chart (or map) is for.\n0 = Sets the mode to circles, the basic Osu Tatakae Ouendan mode. The file is a beatmap with correct co-ordinates. Status:❌ Unsupported 1 = Sets the mode to taiko, a drum based game. The file is a note chart with adapted variables, drumrolls and denden multihit notes. These charts will be selectable in the Outfox taiko gamemode. Status:✅ Supported 2 = Sets the mode to catch, a vertical item drop game. The file is a item chart with adapted variables. Status:❌ Unsupported 3 = Sets the mode to mania, a vertical scrolling note game. The file is a note chart with adapted variables and holds. These charts will be selectable in the Outfox kb gamemode. Status:✅ Supported This variable has no equivalent SM/SSC value.\nLetterboxInBreaks: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nLetterboxInBreaks: 0 This command controls an [Effect], such as a background or a video. Setting this to 1 will add a cinematic \u0026rsquo;letterbox\u0026rsquo; (black bars) within the edges of the screen.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nUseSkinSprites: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nUseSkinSprites: 0 This command controls a [Storyboard] setting, which sets whether or not the storyboard script can use the image files for the skin in use.\nOutFox does not plan to implement the [Storyboard] feature as we have a modding system built in already, so this setting is ignored.\nThis variable has no equivalent SM/SSC value.\nOverlayPosition: position [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nOverlayPosition: NoChange This command affects the readability of hit circles in Osu Tatakae Ouendan mode. It allows the chart author to control how the overlays (the circle animations or hit animations) are drawn. This can make the \u0026rsquo;numbers\u0026rsquo; within the circle easier to see, as well as making stacks work slightly better for those with colour issues.\nNoChange = Sets the mode to the default. Below = Sets the mode to draw the effects below the numbers. This makes the value easier to read. Above = Sets the draw above the numbers. Can affect how easy it is to read, but does look cool. At this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nSkinPreference: preference [string] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSkinPreference: Ice This command allows the chart author to select a custom \u0026lsquo;skin\u0026rsquo; (theme) to use when the chart is played. This allows for a new level of immersion if your charts are based on a subject type or theme.\nAt this time we do not plan on supporting this variable.\nThis variable has no equivalent SM/SSC value.\nEpilepsyWarning: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nEpilepsyWarning: 0 This command controls an option to show a setting to warn about flashing colours or lights before the song plays.\nThis variable has no equivalent SM/SSC value.\nCountdownOffset: n [0-256] Status: ❌ Ignored (Unsupported)\nUsage Example:\nCountdownOffset: 28 This command sets the time (in beats) that the countdown starts before the first hit object or note.\nThis variable has no equivalent SM/SSC value.\nSpecialStyle: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSpecialStyle: 0 This command sets a different key layout named \u0026lsquo;N+1\u0026rsquo; for mania mode. This option is not used as apparently this can be set within the options of the actual game. Setting this requires compatible noteskins / skins to be available, and a suitable mode layout or it can render the song unplayable on the client due to missing assets.\nThis is not available in Outfox as keys can be assigned as required by the player.\nThis variable has no equivalent SM/SSC value.\nWidescreenStoryboard: n [0/1] Status: ❌ Ignored (Unsupported)\nUsage Example:\nWidescreenStoryboard: 0 This option sets the [Storyboard] as available to be viewed as widescreen on systems that support it or not. The default is 4:3 for normal play, due to the osupixels 640x480 setup\nThis variable has no equivalent SM/SSC value.\n[Editor] Section This section contains entries for the editor of Osu so won\u0026rsquo;t be used or processed in OutFox.\n[Metadata] Section This section details the main song metadata used in the chart or beatmap that is used when caching, being used in the music wheel, saving scores, and online profiles.\nOutFox does not have some of those features yet as they are being built, but almost all of this section is used in some way within our caching, scoring and music wheel system.\nThe commands for this section are done as Command:Value. Do note the lack of spaces!\n[Metadata] Title:My Great Song TitleUnicode:私の素晴らしい歌 Artist:OutFox Sound Team ArtistUnicode:「OutFox」音楽 Creator:Squirrel Version:OutFox Easy Mod File 2021 Source:Serenity Volume 2 Tags:japanese j-pop modfile BeatmapID:0123456789 BeatmapSetID:0987654 Title:title [string] Status: ✅ Supported\nUsage Example:\nTitle:My Great Song This entry in the list tells the game what the song title is for this chart in roman form.\nOn OutFox this entry is usually the transliterated (translation) of the title, so we will be parsing this as that entry. If there is no TitleUnicode entry it will use this as the title.\nThis variable is equivalent to the #TITLETRANSLIT entry on SM/SSC files.\n#TITLETRANSLIT:My Great Song; TitleUnicode:title [string] Status: ✅ Supported\nUsage Example:\nTitleUnicode:私の素晴らしい歌 This entry in the list tells the game what the song title is for this chart in utf8.\nOn OutFox this entry is usually the original title, so we will be parsing this as that entry.\nThis variable is equivalent to the #TITLE entry on SM/SSC files.\n#TITLE:私の素晴らしい歌; Artist:artist [string] Status: ✅ Supported\nUsage Example:\nArtist:OutFox Sound Team This entry in the list tells the game what the song artist is for this chart in roman form.\nOn OutFox this entry is usually the transliterated (translation) of the artist name, so we will be parsing this as that entry. If there is no ArtistUnicode entry it will use this as the artist name.\nThis variable is equivalent to the #ARTISTTRANSLIT entry on SM/SSC files.\n#ARTISTTRANSLIT:OutFox Sound Team; ArtistUnicode:artist [string] Status: ✅ Supported\nUsage Example:\nArtistUnicode:「OutFox」音楽 This entry in the list tells the game what the song artist name is for this chart in utf8.\nOn OutFox this entry is usually the original artist name, so we will be parsing this as that entry.\nThis variable is equivalent to the #ARTIST entry on SM/SSC files.\n#ARTIST:「OutFox」音楽; Creator:creator [string] Status: ✅ Supported\nUsage Example:\nCreator:Squirrel This entry in the list tells the game the creator or author of the beatmap or chart.\nOn OutFox this entry is referred to as the chart credit, and is used as a given entry on the music wheel.\nThis variable is equivalent to the #CREDIT entry on SM/SSC files.\n#CREDIT:Squirrel; Version:version [string] Status: ✅ Supported\nUsage Example:\nVersion:OutFox Easy Mod File 2021 This entry in the list allows a chart author to name a difficulty \u0026lsquo;version\u0026rsquo; for the particular .osu file within a collection for one song. It is usually used for descriptive difficulty information, or to \u0026rsquo;theme\u0026rsquo; difficulties, for example (spring easy, summer hard, autumn extreme, winter death).\nOther authors use this field to also add the number of keys the chart has in mania mode, for example [3k], [6k], [10k] would let people know it uses 3 columns, 6 columns and 10 columns respectively before the difficulty name.\nThere is no specific detail given for this entry, other than it being used within the online portion of the game for difficulty and to give information on the music wheel when choosing a song. It is better to give some detail about the difficulty in the entry given, as you can risk not being ranked, and upsetting players.\nOn OutFox this entry is used for the \u0026lsquo;multi-chart per folder\u0026rsquo; setup some packs have in the new kbx mode. This gives you seamless loading capabilities without having to split up multi-song chart packs.\nThis variable has no equivalent SM/SSC value.\nSource:source [string] Status: ✅ Supported\nUsage Example:\nSource:Serenity Volume 2 This entry in the list identifies the source of the song, or the original media it was produced for (in the case of anime openings/themes etc). It can also be used as the pack source if the song was created specifically for games, as our example.\nOn OutFox this entry is likely going to be parsed as the \u0026lsquo;subtitle\u0026rsquo; entry until we fit another option for this information.\nThis variable has no equivalent SM/SSC value. Tag:tags [string string string] Status: ✅ Supported\nUsage Example:\nTags:japanese j-pop modfile This command adds a selection of words that the chart can be searched by on the online system, and within the music wheel. They are simply space separated, and act like tags on a youtube video or instagram post, allowing players to find the chart.\nIt is important you put useful or meaningful tags in this section that reflect the chart so it can be found!\nOutFox supports this function for chart searching in supported wheels.\nThis variable has no equivalent SM/SSC value. BeatmapID:id [n] BeatmapSetID:id [n] Status: ❌ Ignored (Unsupported)\nUsage Example:\nBeatmapID:0123456789 BeatmapSetID:0987654 The BeatmapID is used as an identifier for the \u0026lsquo;Difficulty ID\u0026rsquo; according to the official documentation, with the BeatmapSetID being used as the identification of the chart or beatmap itself.\nThe use of these is mainly for the upload content system so the web side can catalogue and add the entries to the database. Without these one would not be able to tie scores or combos to the charts played. These identifiers also are likely used for ranking and high scoring/music wheels internally for the client.\nOutFox has it\u0026rsquo;s own unique hashing system and database system planned which will be used as the IDs in this format are not compatible.\nThis variable has no equivalent SM/SSC value.\n[Difficulty] Section This section details the main difficulty setup that the chart or beatmap will use. There are several values which change depending on the mode type, as well as the sizes of the circles and other settings.\nOutFox will not be using many of these as they are for circles mode primarily, but the taiko and mania mode changes will be detailed here.\nThe commands for this section are done as Command:Value. Do note the lack of spaces!\nHPDrainRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nHPDrainRate:7.2 HP Drain Rate, usually shortened to HP, sets the rate of health increase or decrease depending on how a note is hit. This is usually a set amount of time before or after, which we call a timing window. The closer to the notes actual time it is hit, the high the \u0026lsquo;category\u0026rsquo; or \u0026lsquo;judgment\u0026rsquo; the game records for that hit.\nIt allows for a recovery (health is added to the life bar) on a GOOD hit or better. The scale is from 0.0 to 10.0, with lower values giving more health returns. A higher value lowers the health return gained on the note.\nIn reflection, the drain of this value, which is given when a note is hit badly is different to the value. so a lower value affects the health bar less on a bad hit, and a higher value punishes the player more.\nIn circles and catch this value can also modify the passive rate of drain. These modes have a constant drain on the life-bar. If the life bar drains to 0 the player counts as failing the chart.\nIn OutFox we do not have a life draining mechanism at this time, so this value isn\u0026rsquo;t supported. If catch mode is ever implemented this mechanism will of course be required.\nThis variable has no equivalent SM/SSC value.\nCircleSize:n.n/n [0.0-10.0]/[0-10] Status: ✅ Supported (mania only)\nUsage Example:\nCircleSize:3.2 CircleSize:4 Circle Size (CS) is a variable that lives a double life in the beatmaps or charts. In circles it defines the size of the hit objects, within the range of 1 to 10. Higher values helpfully make the circles smaller. In the community it is seen that the majority of the beatmaps use between 2.5 and 4.0. This is followed by 4.0 to 5.7, with values outside of these ranges almost never being used, mainly due to them being too small on some devices to hit, or just too big to make an efficient beatmap that flows with effects (Sliders/spinners overlapping etc due to scale).\nIf the chart is above 7, it is likely that one of the Osu games mods, Hard Rock is being used. Outside of this, it is very unlikely to be used. The sliders in the editor do not permit for values outside of 2.0 to 7.0, so one needs to manually edit this value in the .osu file.\nThe other life this value leads, is within the catch mode. In this mode, the Circle Size defines the size of the fruit and the catcher sprites. It works as above, higher numbers make the fruit and catch smaller. This mode usually has values between 2 and 7, which is commonly seen as 3-4.\nIf the value is set to the highest value, 10, the hit objects will be the same size as the cursor that is shown on the screen to show the location of the mouse/pointer/pen/touch etc.\nThis value is also \u0026lsquo;seen\u0026rsquo; in the taiko mode, however, it does nothing. It is also ignored in the OutFox taiko mode.\nHowever, if the mode is mania, this value becomes something completely different. In the editor it is an automatic switch to a variable called 'KeyCount'. As this mode is a vertical scrolling game, this value is the number of \u0026lsquo;keys\u0026rsquo; (on a keyboard or controller) you will be using to play that particular chart. This is also the same as the \u0026lsquo;column count\u0026rsquo; we have in OutFox.\nThe .osu file does not reflect the KeyCount word. It remains as CircleSize. The difference is, the mode uses whole numbers, so there will be no CircleSize:4.3.\nThe values used for this version of CircleSize you will see 3 to 10. This is contrary to what the official documentation says, it is not 1 to 9.\nOutFox computes these column amounts as CircleSize - 1 as our columns begin at 0. The new kb mode will support all key modes from 1 to 10, with 2 player support.\nThis variable has no equivalent SM/SSC value.\nOverallDifficulty:n.n [0.0-10.0] Status: ✅ Supported\nUsage Example:\nOverallDifficulty:1.3 ApproachRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nApproachRate:4.8 SliderMultiplier:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSliderMultiplier:3.7 SliderTickRate:n.n [0.0-10.0] Status: ❌ Ignored (Unsupported)\nUsage Example:\nSliderTickRate:7.2 Written and Maintained with ♡ by Squirrel, containing information with thanks from the Osu! Wiki and members of the international Taikojira and Mania! communities.\n","description":"Project OutFox is working on a new OTO notesloader that supports the .osu (Osu) chart format, which is the standard format used in conjunction with the kb and taiko game types. The following page contains details on the .osu parsing options that Project OutFox currently supports. This is a living document - it will be updated as time allows and we add the support or features within.\nThis documentation exists as a mental \u0026rsquo;layout\u0026rsquo; for me to learn about the format and how best to parse it for the way OutFox needs."},{"id":83,"href":"/dev/actors/actortypes/bitmaptext/Bitmap-Segments/","title":"Segments of a BitmapText","parent":"BitmapText","content":"The BitmapText actor consists of 2 sets of glyphs, Inner and Stroke. Inner is the main use of a glyph, which is drawn character by default. Stroke is used to make bordered text without risking modification of the original glyph map, which allows for coloring on the fly.\nSetting a Text Glow Mode When using the glow function, the BitmapText actor automatically applies the glow color to both layers by default. You can change this with the textglowmode function, which uses a TextGlowMode enumerator to determine which area to apply its glow, one or the other or both.\nHere we have applied a stroke color of green, which will make the border color green, and then a glow blue with 50% opacity. However, because the glow mode has been set to TextGlowMode_Inner, that glow will only apply to the inner layer, leaving the border untouched.\nreturn Def.ActorFrame{ Def.BitmapText{ Font = \u0026#34;_ibm plex sans cond smbld/20px\u0026#34;, OnCommand = function(self) self:xy( SCREEN_CENTER_X, 50 ) :settext( \u0026#34;i am text\u0026#34; ) :strokecolor(color(\u0026#34;#ffffff00\u0026#34;)) end } } ","description":"The BitmapText actor consists of 2 sets of glyphs, Inner and Stroke. Inner is the main use of a glyph, which is drawn character by default. Stroke is used to make bordered text without risking modification of the original glyph map, which allows for coloring on the fly.\nSetting a Text Glow Mode When using the glow function, the BitmapText actor automatically applies the glow color to both layers by default."},{"id":84,"href":"/dev/mode-support/sm-support/","title":"SM","parent":"NoteLoader support","content":"Project OutFox contains a parser for the SM chart format, which has existed as early as StepMania 3.9, and is what most StepMania-based engines support as a base format \u0026amp; simfile cache format. With SM5, this has been succeeded by the SSC format, but for completeness, the following page contains details about what the SM format supports and used to support.\nEvery section follows this format: #SECTION:DATA;, which means #, ; and : shouldn\u0026rsquo;t be used in the data section.\nTo note, some sections parsed are from SSC, so the current implementation of SM is both SM and a bit of SSC.\nSections TITLE This gives the title of the song.\nIf not defined, the game falls back on the simfile directory name.\nExample:\n#TITLE:Blow My Mind; SUBTITLE This gives the subtitle of the song. It\u0026rsquo;s often shown underneath the song title.\nIf TITLE wasn\u0026rsquo;t defined, the game falls back on the simfile directory name for this as well.\nExample:\n#SUBTITLE:Tournament Stage 2; ARTIST This gives the artist of the song.\nIf not defined, the game shows \u0026ldquo;Unknown artist\u0026rdquo; instead.\nExample:\n#ARTIST:かめりあ; TITLETRANSLIT This is the transliterated song title that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the TITLE section is used in all cases.\nExample:\n#TITLETRANSLIT:Ame agari no uta; SUBTITLETRANSLIT This is the transliterated subtitle that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the SUBTITLE section is used in all cases.\nExample:\n#SUBTITLETRANSLIT:Touhou Koumakyou; ARTISTTRANSLIT This is the transliterated song artist that usually shows when the ShowNativeLanguage preference is on. Some music wheels use this if the font used doesn\u0026rsquo;t have the characters needed for the main title. If empty, the ARTIST section is used in all cases.\nExample:\n#ARTISTTRANSLIT:Camellia; GENRE This is the genre of the song. Some examples are Rock, Dubstep, and Classical. Anythng can be put here as a genre.\nExample:\n#GENRE:Techno Pop; CREDIT This field is for crediting someone, usually the author of the chart\nExample:\n#CREDIT:Narumi; BANNER This defines the file to use for the song\u0026rsquo;s banner. It\u0026rsquo;s usually in the same folder as the simfile. This is a relative path.\nIf not defined, the game looks for image files that contain \u0026ldquo;banner\u0026rdquo; or end with \u0026ldquo;bn\u0026rdquo;.\nExample:\n#BANNER:crazy-bn.png; BACKGROUND This defines the file to use for the song\u0026rsquo;s background. It\u0026rsquo;s usually in the same folder as the simfile. This is a relative path.\nIf not defined, the game looks for image files that contain \u0026ldquo;background\u0026rdquo; or end with \u0026ldquo;bg\u0026rdquo;.\nExample:\n#BACKGROUND:awesome-image.png; LYRICSPATH This defines the file to use for the song\u0026rsquo;s lyrics. This is a relative path.\nExample:\n#LYRICSFILE:speed.lrc; CDTITLE This defines the file to use for the song\u0026rsquo;s CD Title. Usually the simfile author uses this to put their author image. This is a relative path.\nExample:\n#CDTITLE:nonsense.png; MUSIC This defines the file to use for the song\u0026rsquo;s music. This is usualy in the same folder as the simfile. This is a relative path.\nExample:\n#MUSIC:dondadon.ogg; INSTRUMENTTRACK Specifies a song file to use for an instrument track. This is a relative path. Valid intrument tracks are: \u0026ldquo;Guitar\u0026rdquo;, \u0026ldquo;Rhythm\u0026rdquo;, \u0026ldquo;Bass\u0026rdquo;, \u0026ldquo;Vocal\u0026rdquo;, \u0026ldquo;Drum1\u0026rdquo;, \u0026ldquo;Drum2\u0026rdquo;, \u0026ldquo;Drum3\u0026rdquo; and \u0026ldquo;Drum4\u0026rdquo;\nExample:\n#INSTRUMENTTRACK:track1.ogg=Guitar, track2.ogg=Drum1; SAMPLESTART Defines the starting point of the same taken from the main audio file, in seconds.\nExample:\n#SAMPLESTART:20.421; SAMPLELENGTH Defines how long the song\u0026rsquo;s sample plays for, in seconds.\nExample:\n#SAMPLELENGTH:5.000; DISPLAYBPM Sets the BPM to be shown in the music wheel.\n* means it\u0026rsquo;s random, and constantly changing characters are shown for BPM.\nIf not set, the song\u0026rsquo;s min and max BPM are shown instead.\nExample:\n#DISPLAYBPM:240; or\n#DISPLAYBPM:*; SELECTABLE Sets whether the song is shown in the music wheel or not. This is ignored if the HiddenSongs preference is turned off.\n\u0026ldquo;YES\u0026rdquo;, \u0026ldquo;1\u0026rdquo;, \u0026ldquo;ES\u0026rdquo;(3.9+) and \u0026ldquo;OMES\u0026rdquo;(3.9+) are the same, while \u0026ldquo;NO\u0026rdquo; or \u0026ldquo;0\u0026rdquo; set it to unselectable.\nExample:\n#SELECTABLE:NO; BGCHANGES / BGCHANGES2 / BGCHANGES3 / ANIMATIONS Specifies what the background of a song changes to throughout the chart. This allows lua files to be loaded.\nBGCHANGES with numbers specifies what layer it shows up on. (BGCHANGES2 = Layer 2)\nBGCHANGE format: beat=file_or_folder=update_rate=crossfade=stretchrewind=stretchnoloop=Effect=File2=Transition=Color1=Color2\nbeat: The beat this BGCHANGE occurs on. Can be negative to start before the first beat. file_or_folder: The relative path to the file to use for the BGCHANGE. Lua files are allowed. If a folder is given, it looks for \u0026ldquo;default.lua\u0026rdquo;. update_rate: The update rate of the BGCHANGE. crossfade: set to 1 if using a crossfade. Overriden by Effect. stretchrewind: set to 1 if using stretchrewind. Overriden by Effect. stretchnoloop: set to 1 if using stretchnoloop. Overriden by Effect. Effect: What BackgroundEffect to use. File2: The second file to load for this BGCHANGE. Transition: How the background transitions to this. Color1/Color2: Formatted as red^green^blue^alpha, with the values being from 1 to 0, Passed to the BackgroundEffect with the LuaThreadVaraible \u0026ldquo;Color1\u0026rdquo;/\u0026ldquo;Color2\u0026rdquo; in web hexadecimal format as a string. Alpha is optional. Often, a last entry with \u0026ldquo;-nosongbg-\u0026rdquo; as the file is placed so the song\u0026rsquo;s starting background doesn\u0026rsquo;t show up at the end.\nExample:\n#BGCHANGES:0.000=blossom1.jpg=1.000=1=0=1===CrossFade==, 52.000=blossom2.jpg=1.000=0=0=1=====, 164.000=blossom1.jpg=1.000=0=0=1=====, 229.000=blossom3.jpg=1.000=0=0=1=====, 302.000=blossom1.jpg=1.000=0=0=1=====, 99999=-nosongbg-=1.000=0=0=0 // don\u0026#39;t automatically add -songbackground- ; The second line explained: 52.000=blossom2.jpg=1.000=0=0=1=====\nBeat = 52 File = \u0026ldquo;blossom2.jpg\u0026rdquo; Update rate = 1 Crossfade: off stretchrewind: off stretchnoloop: on Effect: none (Does not override the above three) File2: none (Nothing loads in the second slot) Transition: none (The first line uses \u0026ldquo;CrossFade\u0026rdquo;) Color1: none Color2: none FGCHANGES Like BGCHANGES, FGCHANGES follow the same format, but happen in a Foregound layer, above the players and most everything else. Commonly used in gimmick files to script modifiers or other visual aspects.\nExample:\n#FGCHANGES:0.000=lua=1.000=0=0=1=====; KEYSOUNDS Specifies what files to load as keysounds. Uses relative paths.\nExample:\n#KEYSOUNDS:pf_24_c#+.ogg,ba_op1.ogg,dr_hho.ogg,dr_rs.ogg,dr_bd8.ogg,dr_cs8.ogg,sq_a.ogg,pc_c.ogg,pf_op11.ogg; OFFSET Defines when beat 0 starts, in seconds. Charts made for the ITG meta tend to have an extra positive 9 ms added.\nExample:\n#OFFSET:-0.611000; STOPS / FREEZES Defines where stops in the song happen. The first parameter is the beat, and the second parameter is how long the stop is, in seconds.\nExample:\n#STOPS:46.250000=0.030000, 46.500000=0.030000, 46.750000=0.030000; BPMS Defines the BPMs the song has. A song must have at least one BPM at beat 0.\nThe first parameter is the beat, and the second parameter is the actual BPM.\nExample:\n#BPMS:0.000=140.250, 48.000=93.500, 48.333=62.333; TIMESIGNATURES Defines the time signatures of the song. Most songs default to 4/4 as their starting signature. There are three parameters: beat, numerator and denominator. The last two parameters must be greater than or equal to 1.\nCurrently, this only affects the measure lines.\nExample:\n#TIMESIGNATURES:0.000=4=4; ATTACKS These are course-style scripted modifiers written into the simfile. Unlike most sections, this is seconds-based instead of beat-based, to allow for modifiers during stops.\nThe format of an attacks entry is this: TIME=seconds:END/LEN=endtime/lengthtime:MODS=modstring\nInternally, entries that use END are converted into LEN.\nExample:\n#ATTACKS:TIME=1.618:END=3.166:MODS=*32 Invert, *32 No Flip :TIME=2.004:END=3.166:MODS=*32 No Invert, *32 No Flip :TIME=2.392:LEN=0.1:MODS=*64 30% Mini :TIME=2.489:LEN=0.1:MODS=*64 60% Mini; DELAYS Specifies the Delay segments for the song. The first parameter is the beat, and the second parameter is the duration in seconds. Appears to have been added since SM-SSC.\nExample:\n#DELAYS:488.000=0.050; TICKCOUNTS Specifies how many checkpoints a hold has in a beat. The default value is 4. This only gets used in the pump game mode. The first parameter is the beat, and the second parameter is the number of checkpoints to use. Appears to have been added since SM-SSC.\nExample:\n#TICKCOUNTS:0.000000=4, 50.000=16; NOTES / NOTES2 NOTES2 is written when keysounds are used, but both are read in the same way.\nNotedata specs Notedata has 6 parameters:\nSteps Type: follows the format game-style. eg: pump-doubles Description: a string that usually has the chart creator\u0026rsquo;s name or chart information. Difficulty: The difficulty of the chart. Chart Meter: the difficulty number. Various chart metas follow different number scales. Radar Values: The 5 radar values based off of DDR\u0026rsquo;s. The order is this: Stream, Voltage, Air, Freeze, Chaos. The game calculates this itself when writing the SM file. Notes: the actual notedata the game reads in to create the chart one plays. Special cases There are two special cases involving the Hard difficulty. If the description is \u0026ldquo;smaniac\u0026rdquo; or \u0026ldquo;challenge\u0026rdquo;, it gets read into the Challenge difficulty.\nNote layout Each measure has a minumum of four lines, with each measure being comma separated. The number of characters per row corresponds to the number of columns the mode has. (eg: dance-single has four columns, so each row has four characters)\n4 rows per measure allows for 4ths, 8 rows per measure allows for 8ths, 16 rows per measure allows for 16ths, etc.\nNote Types The following table shows what character corresponds to what note type (not including characters introduced by SSC)\nNote Character Note Type Quirks 0 empty N/A 1 Tap Note N/A 2 Hold Note Head N/A 4 Roll Note Head N/A 3 Hold \u0026amp; Roll Note Tail Having a 3 without a corresponding 2 or 4 will result in warnings. M Mines N/A K AutoKeysounds N/A L Lifts N/A F Fakes They can only be fake taps. You can\u0026rsquo;t do fake holds with this. Attack Notes Attacks can be attatched to notes by having {} after the note.\nThe format is {modstring:lengthseconds}\nWhen hitting a note with an attack, the attack gets applied for the player as a whole for the given duration.\nKeysounds Keysounds can be attached to a note by having [] after the note.\nThe format is [index], with index starting at 0, and corresponding to the order listed in #KEYSOUNDS.\nExample:\n#NOTES: dance-single: Charter Man: Easy: 4: 0.503,7.2,0,0,0: L000 00F4 0000 0003 , 1000 0200 00M0 A[0]000 0300 0000 0001{tipsy,50%bumpy:5.2} 0000 ; Deprecated / Cache Sections These sections are considered unused or ignored in normal simfiles due to being replaced, removed or being used in cache files instead.\nMUSICLENGTH Specifies how long the music is, in seconds. Used in the cache variant of the SM format.\nExample:\n#MUSICLENGTH:64.052; MUSICBYTES Just flat out ignored. No-one seems to know what this was for. LASTBEATHINT Specifies a custom last beat for the song. Phased out at some point. Example:\n#LASTBEATHINT:211.000000; FIRSTBEAT Specifies the first beat in the song. Used in the cache variant of the SM format. Phased out at some point. Example:\n#FIRSTBEAT:10.348; LASTBEAT Specifies the last beat in the song. Used in the cache variant of the SM format. Phased out at some point. Example:\n#LASTBEAT:128.600; SONGFILENAME The full path to the simfile itself. Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#SONGFILENAME:/AdditionalSongs/UPS 4/Brain Power/Noma - Brain Power.sm; HASMUSIC Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#HASMUSIC:1; HASBANNER Used in the cache variant of the SM format. Moved into the SSC cache format.\nExample:\n#HASBANNER:0; SAMPLEPATH Defines the path to the separate sample audio. Phased out at some point. LEADTRACK Unknown.\nWritten and Maintained with ♡ by MTK\n","description":"Project OutFox contains a parser for the SM chart format, which has existed as early as StepMania 3.9, and is what most StepMania-based engines support as a base format \u0026amp; simfile cache format. With SM5, this has been succeeded by the SSC format, but for completeness, the following page contains details about what the SM format supports and used to support.\nEvery section follows this format: #SECTION:DATA;, which means #, ; and : shouldn\u0026rsquo;t be used in the data section."},{"id":85,"href":"/dev/theming/Theming-1-Folders/","title":"The Structure of folders","parent":"Introduction to theming","content":"A theme can consist of the following folders. All of them are optional, but needed to perform certain operations on how to load / fetch files.\nIt is important to understand that themes in newer versions of StepMania/OutFox rely on _fallback, a special theme folder located on Appearance/Themes/ which contains all of the information neccessary to run any kind of theme. Earlier in the day, since there was no such thing, every theme distributed had to contain the same information in order to run, which in term would lead to a lot of repeated code for something that was never used.\nYou can create more/less folders than this and call them in your theme by fetching the location of your theme\u0026rsquo;s folder and then accessing the data that you need, but for the purposes of this guide, we\u0026rsquo;ll stick to these folders.\nBGAnimations Contains the lua scripts that control the visual elements of screens. Fonts Text and images containing individual glyphs, or graphical representations of each character on a font. Graphics Contains images of gameplay objects. Language Contains INI files that with the transliterated strings. For more information, visit the Translation guide. Modules An optional folder that contains Lua files with simple functions or tables that can be called on demand, rather than storing the file on memory all the time. Other An optional folder that contains special files, but also can contain other kinds of files that don\u0026rsquo;t have a particular folder to reside in. Scripts Lua files that will be loaded into memory, that can be accessed at any time. ","description":"A theme can consist of the following folders. All of them are optional, but needed to perform certain operations on how to load / fetch files.\nIt is important to understand that themes in newer versions of StepMania/OutFox rely on _fallback, a special theme folder located on Appearance/Themes/ which contains all of the information neccessary to run any kind of theme. Earlier in the day, since there was no such thing, every theme distributed had to contain the same information in order to run, which in term would lead to a lot of repeated code for something that was never used."},{"id":86,"href":"/dev/mode-support/tja-support/","title":"TJA Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on support on the parser for the TJA (Taikojiro) chart format, which is the standard format used in conjunction with the taiko game types. The following page contains details on the Taiko parsing options that Project OutFox currently supports. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTJA Notedata support as of Alpha 4.19.0 - 60% Complete! Headers The mode uses a selection of headers to set up the playfield/notefield, which appear to be based off of the old BMS style loading mechanisms. We\u0026rsquo;ll list the known ones and whether or not Project OutFox supports them.\nUnlike it\u0026rsquo;s BMS History, TJA files do not use the # delimiter to begin a line. In BMS to note the title of a song, it would be #TITLE, and in TJA, it uses just TITLE. Bear this in mind if you are converting from BMS/PMS files that the parsers for other simulators will not expect the # to be used. We will list them as per what we can find out about the TJA Specification, so do check back regularly, as this information will change from time to time as we get more familiar with this game mode and the format nuances it uses.\nSomething important to note, There are no spaces after the : in the headers. If you are using a known editor, this won\u0026rsquo;t be a problem. However if you are converting from BMS/PMS, these will not have a : at all and this can lead to information being missed in the way the game parses your chart. It will also make your .tja incompatible with other taikojiro simulators.\nTITLE This header is self explanatory, and it sets the title of the song/chart that will be played. It is very often done in SHIFT-JIS encoding on older files, however on more modern charts, this is using UTF-8 / UTF-8 BOM.\nExample:\nTITLE:My Favourite Song SUBTITLE This header replaces the #ARTIST tag that BMS/PMS uses, so remember to use it in this way. It again used to be written in SHIFT-JIS on older files, but please use UTF-8, as this is the standard now.\nSubtitles can be hidden on the evaluation screen by adding -- before the title begins. If you wish to show the subtitle on the evaluation screen (the default) you can add ++. It is not actually necessary to use this notation on OutFox, but for compatibility with other simulators, it is best to set this to either visible or hide. Be aware, only -- works on other simulations, so if you want to keep compatibility, do not use the other two options (++SUBTITLE/SUBTITLE).\nExample:\nSUBTITLE:My Favourite Artists To hide on evaluation:\nSUBTITLE:--My Favourite Artists To show on evaluation\nSUBTITLE:++My Favourite Artists BPM This header specifies the beginning or \u0026lsquo;starting\u0026rsquo; BPM (Beats Per Minute) of a song. This is the same as the #BPM used in BMS. It is usually a whole number, but floating point/decimal point is also permitted, though these are not completely in the specification.\nExample:\nBPM:145 or\nBPM:128.35 OFFSET The offset of a song, or where you want the song to begin, is set using seconds. In Taiko mode, this will correspond to the first \u0026lsquo;beat bar\u0026rsquo; you see, then the metronome system will continue from that. If you do not use an editor that allows you to see the waveform, this can be trial and error until it is synched up. You can use negative values, to start before the song starts, or positive values, which is after the song starts. Either of these are supported.\nExample\nOFFSET:-1.785 or\nOFFSET:3.32 WAVE This header sets the file name of the song you wish to play. You do need to bear in mind, this is case sensitive. On Linux and Mac OS specifically, you must ensure that this entry matches the file name on the disc EXACTLY, or you will be greeted with silence when in game. For OutFox, you have the choice of the following supported file formats:\nOGG (Recommended if you wish to make your .tja compatible with other simulators) MP3 WAV OPUS FLAC This header is similar to the #WAVzz header used in BMS, except we\u0026rsquo;re only calling the one for this mode. Do ensure your file is encoded to 44.1kHz (44,100) as some older OGG encoders can do weird things to your file. If you\u0026rsquo;re ever unsure, use the program MediaInfo which is a handy little program for media file information. Most simulators will not play bad or slightly corrupted files, so this is something to take into consideration when creating your chart, so take a moment to check the file is good.\nExample\nWAVE:Iliketodrum.ogg or\nWAVE:HitMeinmyFace.flac SONGVOL This header sets the play volume of the song when screen gameplay starts. It is independent of the game volume, or the volume you set with the F3 option. Use this sparingly! You can make the sound of your chart be bad for players if you set it too quietly for example. It defaults to 100, which is the normal setting for a sound in the game, and in other simulators as well. It is not recommended to use values over 100, as this will cause distortion and clipping in the output, and will potentially sound awful.\nExample\nSONGVOL:100 SEVOL This header sets the play volume of the sound effects used when screen gameplay starts. It is independent of the game volume, or the volume you set with the F3 option. Use this sparingly! You can make the sound of your chart be bad for players if you set it too quietly for example. It defaults to 100, which is the normal setting for a sound in the game, and in other simulators as well. It is not recommended to use values over 100, as this will cause distortion and clipping in the output, and will potentially sound awful.\nExample\nSEVOL:100 DEMOSTART This allows for the preview of the song file set in WAVE. It is set to play when in screen select music, (The music wheel) and will play from the point chosen here. This system mimicks the #PREVIEW system in BMS, but does not require you to load two files. It simply uses the one song file, and will play from the point selected.\nYou need to set a time within the file, or this can cause issues with some simulators. If your song file was 93 seconds long, and you set DEMOSTART:99, this can cause undesirable behaviour in other simulators. If the number is invalid in OutFox, it will just play from the beginning, so do set this right!\nExample\nDEMOSTART:22.65 LEVEL The level entry sets the amount of stars that the player will see and this will signify the difficulty of the chart. It is set from a scale of 1 to 10, and will set the difficulty in the game. Some simulators can also take the COURSE name to set the difficulty. It is similar to how the PLAYLEVEL works in BMS. Bear in mind that maximum star ratings aren\u0026rsquo;t the same between difficulties:\n1-5 kantan (Easy) 1-7 futsuu (Normal) 1-8 muzu (Hard) 1-10 oni/ura (Extreme) Example\nLEVEL:4 COURSE This header is somewhat misleading. It is in fact the difficulty of the chart, and it can be set either as a number, or by a name.\nEasy or 0 Normal or 1 Hard or 2 Oni or 3 Edit or 4 Tower or 5 Dan or 6 Due to the competitive nature of the PC based simulators this normally defaults to oni or 3, so be warned if your chart is easier than this difficulty, and make sure you add the correct name in the course setting. It is named Extreme so this should give you an idea of the difficulty! Edit refers to Ura Oni, and doesn\u0026rsquo;t have any impact alone on the genre of the song.\nUra Oni is an alternative to the Oni charts, which are not necessarily harder, but can include 2 player or gimmicks. Remember OutFox\u0026rsquo;s Mod system is quite varied, and try to keep these out of your files if you wish to make them compatible with other simulators.\nTower is based on the style from the PS2 era of the game.\nThis setting is similar to how PLAYLEVEL works in BMS, but gives a finer set of controls.\nExample\nCOURSE:4 or\nCOURSE:hard GENRE This header works very differently to the BMS equivalent with the same name. In Taiko, you have a choice of 8 different Genres. These will then be \u0026lsquo;set\u0026rsquo; into groups depending on this value. Use UTF-8 when setting these, to ensure full compatibility across the board.\nThese names will override any settings in box.def, the configuration file.\nSeveral of the older clients need SHIFT-JIS, but if you are targeting newer simulators (and OutFox!) then the following genre names should be used:\nJ-POP This is the J-Pop genre, used for mainstream/uplifting tracks. アニメ This is the anime genre, used for anime based songs, opening/closing credit songs, or songs based or remixed from music within an anime. In the western community, this genre also covers western animated cartoons and movies, and the \u0026lsquo;western\u0026rsquo; based animes that are produced by the like of Netflix et al. どうよう This genre is not used that much in modern versions of the game, as it is the \u0026rsquo;nursery rhymes\u0026rsquo; genre. If you are being true to the historical versions of the game then use this genre, but most now have moved into variety and classical. They tend to be more biased towards the easier side of difficulty, as it was meant to open up the game to a younger audience. バラエティ This genre is \u0026lsquo;variety\u0026rsquo;. It is the genre where you can put charts that do not really \u0026lsquo;fit\u0026rsquo; in anything else. In most simulators, a lot of the edit charts go into variety. A lot of songs from BMS and Touhou fit in this category. ボーカロイド or VOCALOID The vocaloid genre has two possible entries to the genre tag, and you can use either of them. This genre is for music made using the vocaloid based virtual idol singers, including IA, Miku, Luka, Gumi etc. クラシック This genre is for classical music or remixes of classical tracks. ゲームミュージック This genre has all the game music charts. This can be almost anything, as long as it\u0026rsquo;s tied to a game; Boss and title music, to BGM/Ambient music, remixes and even songs from other rhythm games go in here. ナムコオリジナル This genre is for the \u0026lsquo;Namco Original\u0026rsquo; based songs and remixes. キッズ This genre is similar to the nursery rhymes set, with the song charts being set for kids. 段位道場の課題曲 This genre is for Danjo Dojo based charts. These are the task based charts used in some simulators. We are not sure if this setting has been used in custom charting as of yet. Example\nGENRE:VOCALOID or\nGenre:アニメ SCOREMODE This tag allows the chart maker to set the game version used when it comes to setting and sorting out the final score of the song. There have been 17 Arcade versions of Taiko and this tag can specify the scoring method. Some simulators do not support score methods other than 1. However, OutFox will support the full range. On most simulators, the default is 1.\n0 This sets Arcade Version 1 to 7 scoring: Less than 200 combo: SCOREINIT or 1000pts per note. When the player then hits 200 combo, it is SCOREINIT + SCOREDIFF, or 2000pts (1000x2 for double) for the 200+ combo bonus. So if the player scored 184 combo in a song which had 184 notes: it would be 184x1000. Scoring Formula: SCOREINIT * COMBO (when COMBO \u0026lt; 200) + (SCORINIT + SCOREDIFF * COMBO (when COMBO \u0026gt;200) Scoring Formula: 1000 * COMBO (when COMBO \u0026lt; 200) + (2000 * COMBO (when COMBO \u0026gt; 200)) 1 This sets Arcade Version 8 to 14 scoring: With this arcade version, we use the SCOREDIFF variable. The combo multiplier rises by SCOREDIFF with each 10 combo until it hits 100, then it doesn\u0026rsquo;t change unless there is a break. Scoring Formula: SCOREINIT + max(0, SCOREDIFF * floor((min(COMBO, 100) - 1) / 10)) 2 This sets the Arcade version to 0, which is similar to how 1 works, but with some different combo multipliers. This scoring system is not commonly used, but it\u0026rsquo;s included here for completeness. There are a lot more Japanese charts with this setting. This scoring system refers to the always-online HD cabinet versions between 2011 and 2020 (normally named after colours \u0026ndash; kimidori, murasaki, red, blue, green, etc) Scoring Formula: SCOREINIT + SCOREDIFF * (if combo over 100; 8) (if combo over 50; 4) (if combo over 30; 2) (if combo over 10; 1) 3This sets the scoring to the newest taiko arcade (nijiiro) mathematically calculates score to mean all-good (dfc, =mfc/AJ/perfect) is equal to at least 1 million with combo no longer being a factor, with much more precision than AC0 (where scores of 1.2 million were possible on note-heavy charts and scores of 800k were possible on less note-heavy charts, all oni). It\u0026rsquo;s comparable to the shin-uchi/true hit mode (other than it not accounting for big notes anymore) Scoring Formula: ((1000000-(time of balloon (sec)*100*16.6 OR hit count of balloon×100)-time of drumroll (sec)*100*16.6)/total note count/10)then unconditional carry to single digit * 10 Example\nSCOREMODE:1 SCOREINIT This tag sets the INITial score for the scoring method. This is commonly set to 610 on Japanese charts, but many other values are seen as well. See #SCOREMODE above.\nExample\nSCOREINIT:380 SCOREDIFF This tag sets the score DIFFerence for the scoring method. This is commonly set to 140 on Japanese charts, but many other values are seen as well. See #SCOREMODE above.\nExample\nSCOREDIFF:90 MAKER This tag is used for the name of the chart artist. It is not often seen in the simulators options, but the tag is available for credit. Works as per #MAKER in BMS.\nExample\nMAKER:Squirrel Taiko Mode Note Types 0 = No Notes Placed, empty Space 1 = Small Don (Orange Note) 2 = Small Kat (Blue Note) 3 = Large Don (Orange Note) 4 = Large Kat (Blue Note) 5 = Small Drum Roll Start Point (Yellow Roll) - Ends with an 8 6 = Large Drum Roll Start Point (Yellow Roll) - Ends with an 8 7 = Where the \u0026lsquo;Balloon\u0026rsquo; (Long) Note Begin - Ends with an 8 8 = Where the Drum Roll / Balloon Long Notes End 9 = Where the \u0026lsquo;Kusudama, yam, oimo, or big balloon\u0026rsquo; (Long) Note Begins - Ends with an 8 A = Large Don Partner, Multiplayer, with the hands (This does not work on most sims) B = Large Kat Partner, Multiplayer, with the hands (This does not work on most sims) C = Mine or Bomb (OutFox and OpenTaiko specific) D = Not Used? (Potential Fuse Roll OutFox Specific) E = Not Used? F = Adlib; hidden note that will increase combo if spotted, but won\u0026rsquo;t give bad/miss when not hit G = Purple note; don + kat simultaneously. (This note is green on taikoweb) H = Small Don Roll - Ends with an 8 (Proposed) I = Small Kat Roll - Ends with an 8 (Proposed) Added in LTS 0.4.18, the new bongo mode also uses .tja to parse, with autogenerated transcribing at the moment.\nThe table below shows the \u0026lsquo;alternative\u0026rsquo; note types used by the bongo mode. These have been agreed upon with the OpenTaiko / TJADB community so files created for OutFox will work on all simulators moving forward.\nBongo Mode Note Types 0 = No Notes Placed, empty Space 1 = Red Right Hit 2 = Yellow Left Hit 3 = Pink Note (Double Bongo Hit) 4 = Clap Note (Clap your hands) 5 = Red Right Roll Begin - Ends with an 8 6 = Pink Note Roll Begin - Ends with an 8 (Double Bongo Roll) 7 = Where the \u0026lsquo;Balloon\u0026rsquo; (Long) Note Begin - Ends with an 8 8 = Where the Drum Roll / Balloon Long Notes End 9 = Where the \u0026lsquo;Kusudama, yam, oimo, or big balloon\u0026rsquo; (Long) Note Begins - Ends with an 8 A = Pink Note (Double Bongo Hit) B = Clap Note (Clap your hands) C = Mine or Bomb (OutFox and OpenTaiko specific) D = Not Used? (Potential Fuse Roll OutFox Specific) E = Not Used? F = Adlib; hidden note that will increase combo if spotted, but won\u0026rsquo;t give bad/miss when not hit G = Pink Note H = Clap Note Roll - Ends with an 8 (Proposed) I = Yellow Left Roll - Ends with an 8 (Proposed) Written and Maintained with ♡ by Squirrel, with thanks to OpenTaiko, Taiko-web, and members of the TJADB and Taiko international community\n","description":"Project OutFox is working on support on the parser for the TJA (Taikojiro) chart format, which is the standard format used in conjunction with the taiko game types. The following page contains details on the Taiko parsing options that Project OutFox currently supports. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTJA Notedata support as of Alpha 4."},{"id":87,"href":"/dev/mode-support/txt-support/","title":"TXT Compatibility","parent":"NoteLoader support","content":"Project OutFox is working on support on the parser for the Karaoke TXT (UltraStar) chart format, which is the standard format used in conjunction with the karaoke game types. The following page contains details on the Karaoke file parsing options that Project OutFox will support. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTXT Notedata support as of Alpha 0.5.0 - TBC Headers The mode uses a selection of headers to set up the song metadata, which appear to be based off of the old BMS style loading mechanisms. We\u0026rsquo;ll list the known ones and whether or not Project OutFox supports them.\nUltraStar TXT files only follow the Header metadata of the old BMS system; it uses the #COMMAND:KEY structure. Something important to note, There are no spaces after the : in the headers. If you are using a known editor, this won\u0026rsquo;t be a problem. If converting from other karaoke formats, ensure these headers are set up correctly, or most of the simulators will not read your file!\nAn Example Header Section\n#TITLE:Into My Dream #ARTIST:Lagoona #MP3:Into My Dream.ogg #CREATOR:-YOSEFU- in a Dream #LANGUAGE:English #COVER:Into My Dream-bn.mp4 #BACKGROUND: #VIDEO:Into My Dream-bga.mp4 #BPM:140.000 #GAP:121 #EDITION:OutFox Serenity Volume 2 #GENRE:Trance #UPDATED:20-oct-2022 #YEAR:2022 #COMMENT:https://projectoutfox.com/ NOTE: The chart MUST have the following headers to be considered a valid karaoke file: #TITLE #ARTIST #MP3 #GAP (Offset) (Not all UltraStar versions need this.) #BPM Common HEADER commands #TITLE:title [string] Status: ✅ Supported\nUsage Example:\n#TITLE:Into My Dream The title command sets the SongTitle and this will be displayed on the song wheel to be selected, as well on the screen game-play and evaluation screen. It will also be recorded in high scores and on your profile etc.\n#ARTIST:artist [string] Status: ✅ Supported\nUsage Example:\n#ARTIST:Lagoona The artist command sets the SongArtist and this is usually displayed on the song wheel when selected and on the evaluation screen. The artist information is usually recorded in high scores and on your profile.\n#GAP:gap [float] Status: ✅ Supported\nUsage Example:\n#GAP:121 This setting allows the chart to specify the offset to use at the beginning of a song. This has the effect of shifting all the lyrics based on the value entered here.\nThe value is in milliseconds, and a positive value will delay the lyrics, a negative value start them sooner. This value is used for songs with instrumentals or lead-ins at the start.\nIf the value is not set to 0, then a formula must be used to set the actual time in seconds for the text to be displayed. Using an example line from the lyric (Notedata), we can work it out:\n: 21 2 2 We\u0026#39;ve ^^ Second Column (We use the FIRST timestamp and the second column value for this calculation)\nThe formula to use is:\nDisplay Time = Time stamp of first lyric / BPM / 4 * 60 seconds + GAP so replacing this with numbers:\n21 / 140 / 4 * 60 + 0.121 = 2.371 seconds This means the lyrics will be displayed after 2.371 seconds of the song starting.\nRelative files use starttime=GAP but Project OutFox does not support these files.\n#BPM:bpm [0.0-1400.00] / [0-1400] Status: ✅ Supported\nUsage Example:\n#BPM:140.000 #BPM:140 This setting allows the chart to specify the beginning (or starting) Beats per minute (BPM) of a song. This value will also be shown in the music wheel. This value used to require a whole number. Project OutFox allows for floats here - you are limited to 6 decimal places - so 143.000290 as an example.\nThis value sets the speed at which the lyrics will display, a high bpm means they will show quickly, and a lower bpm will be slower. Chart creators can use \u0026lsquo;double\u0026rsquo; or \u0026lsquo;half\u0026rsquo; bpm to adjust the lyric speed to help the singer, or to add a slightly different level of difficulty.\nIn UltraStar there is sometimes strange behaviour when using #BPM values of under 120, with the notes moving faster than they should. Most chart creators use a \u0026lsquo;double time\u0026rsquo; BPM to work around this. Bear this in mind! We do not have this issue in OutFox, and not all versions of UltraStar have it, so check before you release.\nUsing floating point values in #BPM can cause issues with tools and features that work with the txt files, as they can sometimes misinterpret what the . or , can mean. If possible if you wish to maintain full UltraStar compatibility, use whole number #BPM values for major support.\n#MP3:songfile [string] Status: ✅ Supported\nUsage Example:\n#MP3:Into My Dream.ogg The #MP3 tag is a bit misleading here; it actually should just be #SONG as it can load several different formats.\nProject OutFox is not limited in wave file bit depth, and supports the following file formats:\nwav, ogg, .mp3, .m4a, .FLAC, and .opus. If you plan to make your Karaoke file support other simulators, remember not all of them support these, or have limits on bit depth and sample rates!\nFor UltraStar, if you use audio formats other than mp3, be prepared that those files won\u0026rsquo;t work on all the different systems, and remember any audio format where FFMPEG doesn\u0026rsquo;t need slow indexing for predictive frame access is supported.\n#GENRE:genre [string] Status: ✅ Supported\nUsage Example:\n#GENRE:Trance This command sets the genre or type of music that the chart is going to play. It could be used by the simulator for sorting or grouping charts, or to allow for just more information to be displayed on the song select screen.\n#EDITION:edition [string] Status: ✅ Supported\nUsage Example:\n#EDITION:OutFox Serenity Volume 2 This command sets the edition of the song, similar to ORIGIN in SSC files. UltraStar creators often put the game, or TV show, anime etc that the song was originally featured in.\n#CREATOR:creator [string] Status: ✅ Supported\nUsage Example:\n#CREATOR:-YOSEFU- in a Dream The CREATOR command simply allows the author that timed the chart to add their credit so it will be displayed in the simulator.\n#LANGUAGE:language [string] Status: ✅ Supported\nUsage Example:\n#LANGUAGE:English This command is used to give information on the language of a karaoke chart when a user has international song packs, or plays with different languages installed. Project OutFox at the moment parses this data, but the theme will need to be updated to show this information on the music wheel so it is available to all users.\n#COVER:cover [string] Status: ✅ Supported\nUsage Example:\n#COVER:Into My Dream-bn.mp4 This command is used to set an image for the song on the music selection screen of the simulator - when the song is scrolled to and is highlighted.\nThis can be most image formats, or a video, but remember the limitations, video covers may not work on other karaoke simulations.\nThese are usually square in Karaoke, and we will use a theme which uses square covers to ensure compatibility with already created content.\nIn Project OutFox we call these files banners.\n#VIDEO:videofile [string] Status: ✅ Supported\nUsage Example:\n#VIDEO:Into My Dream-bga.mp4 This command is used to set a video to be played when the song starts on the game-play. It is similar to #BACKGROUND on SSC files. Remember, OutFox supports BGCHANGES which can be used to add effects and flair to your files, but this would need to be done within an SSC in the editor, when we have added support for karaoke in the future.\nThis can be most video formats, but remember the limitations, videos may not work on other karaoke simulations!\nFor UltraStar, if you use files with video, be prepared that those files won\u0026rsquo;t work on all the different systems, and remember any video format where FFMPEG doesn\u0026rsquo;t need slow indexing for predictive frame access is supported. It is common for chart creators to use one file for their video which contains the audio for the song within, and this is placed within both the #MP3 and #VIDEO tags. We will need to add support for these charts in Project OutFox.\n#VIDEOGAP:videogap [float] Status: ❌ Unsupported TBC\nUsage Example:\n#VIDEOGAP:0.635 This setting allows the chart to specify the offset to use for when the video should be started at the beginning of a song. This has the effect of shifting the video playback time.\nThe value is in seconds, and a positive value will delay the video, a negative value start the video sooner. This value is used for songs which may have a slightly offset video.\nIf the value is not set to 0, then a formula must be used to set the actual time in seconds for the text to be displayed. Using an example line from the lyric (Notedata), we can work it out:\n: 21 2 2 We\u0026#39;ve ^^ Second Column (We use the FIRST timestamp and the second column value for this calculation)\nThe formula to use is:\nDisplay Time = Time stamp of first lyric / BPM / 4 * 60 seconds + VIDEOGAP so replacing this with numbers:\n21 / 140 / 4 * 60 + 0.635 = 2.885 seconds This means the video will start after 2.885 seconds of the song starting.\nRelative files use starttime=VIDEOGAP but Project OutFox does not support these files.\nIt is often that files do not contain the VIDEOGAP command, when this happens and a video is specified, it will default to start when the song starts, rather than the lyrics.\n#YEAR:year [int] Status: ✅ Supported\nUsage Example:\n#YEAR:2022 This tag simply sets the year the song was created, and is used as a sort option by other karaoke simulators.\n#PREVIEWSTART:previewstart [float] Status: ✅ Supported\nUsage Example:\n#PREVIEWSTART:17.488 This value tells the game the time in seconds to play the preview section of the song in the music wheel.\nUnlike SM/SSC there is no #SAMPLELENGTH in this format that tells the game to loop or reset the point of playback. It will fall back to the default 15 second length when parsing. Most simulators just play from the middle of the song until the end.\nAs this variable uses the seconds value, it is usable as per the #SAMPLESTART SM/SSC variable.\n#START:start [float] Status: ⌛ TBC\nUsage Example:\n#START:27.759 This value tells the game the time in seconds when to begin the song playback. This is usually used in chart creation, as it can skip a long intro to jump straight to the lyrics/notes, or to test a specific part of the song.\nThese are used extensively on \u0026lsquo;multi-song\u0026rsquo; music files that have \u0026lsquo;chapters\u0026rsquo; (One file with different songs inside). These can also be \u0026lsquo;parts\u0026rsquo; of the song, like chorus or verses.\nThere will usually be one txt file for the complete file, with extra txt files for the \u0026lsquo;chapters\u0026rsquo;.\nThe main advantage for using this command is not having to create a dozen audio files for the same song, plus merging corrections from the main txt files to the chapter txt files is easier in this method.\n#END:end [float] Status: ⌛ TBC\nUsage Example:\n#END:187488 This value tells the game the time in milliseconds when to end the song playback. This is usually used in chart creation, as it can stop playing at a specific part of the song. We haven\u0026rsquo;t decided yet on this one, as many of the charts we have found do not use these commands, as we have the end data in the \u0026lsquo;NoteData\u0026rsquo; section below.\n#DUETSINGERP1:duetsingerp1 [string] #DUETSINGERP2:duetsingerp2 [string] Status: ⌛ TBC\nUsage Example:\n#DUETSINGERP1:Shrek #DUETSINGERP2:Donkey These two values tell the game to change the name in duet mode, so instead of just saying player1 and player2 it changes the name listed in that command. Used in charts for a bit of fun. Some UltraStar versions do not support this and will crash, just be warned!\n#VOCALS:vocalsfile [string] Status: ⌛ TBC\nUsage Example:\n#VOCALS:song.ogg This command tells the game where vocals version of the song is for the selected chart. I haven\u0026rsquo;t been able to find many uses for this, as many songs seem to have song.ogg in the #MP3 tag, and leave the instrumental (Karaoke) version not used. I guess this is to allow folks to have the vocals in the background when someone is learning the song, or provides an option in game to set either the \u0026lsquo;song.ogg\u0026rsquo; or \u0026lsquo;instrumental.ogg\u0026rsquo; versions.\nProject OutFox will likely have an option to select which one to use in time at the music wheel, if these are found, but if you know any other information about the #VOCALS tag, please let Squirrel know via our Discord server!\nIn earlier versions of UltraStar on older files, #MP3 would have the instrumental version, and #VOCALS would contain an a cappella track with just the vocals, and the game would mix the two together when selected to play the full track.\n#RESOLUTION:resolution [1-16] Status: ❌ Not Supported\nUsage Example:\n#RESOLUTION:4 This command seems to be an UltraStar editor only value that affects the lines drawn on beats, with every #RESOLUTION beat being drawn black. It defaults to a value of 4, and should not be set to 0 as it can make the game unstable.\nWe have no plans to support this in Project OutFox, as our editor is different.\n#RELATIVE:relative [0/1] Status: ❌ Not Supported\nUsage Example:\n#RELATIVE:0 This value defaults to 0 if it is not added to the header part of the chart. Project OutFox does not support this value, as it was used some time ago as an alternative method of charting. What this command does is it makes each line set relative to itself. The timestamp (Column 2) is reset to 0 for each line. The engine would need to keep a \u0026lsquo;running tally\u0026rsquo; of the beats/time separately in this mode. We have spoken to a few people in regards to supporting this value, but most say it is deprecated/legacy and it is not used often enough to warrant adding the code for it.\nIf the demand is there, we can look at supporting it, but for the first instance, we will not.\nNote data in this mode is also set up differently as it resets on each line as so:\n: 0 2 2 Some : 3 3 2 body : 7 4 2 once : 12 3 4 told * 16 9 6 me - 36 : 0 3 4 the \u0026lt;-- Resets here to 0 : 4 6 2 world : 12 7 4 is : 20 7 6 gon : 23 4 6 na The timestamp resets to 0 on each line, rather than counting from the beginning of the song. These files are considered legacy in the community, and will be ignored by Project OutFox when parsing. You will see a warning in the log about the file being unsupported, but the game will not crash like some other simulators.\nNoteData Example NoteData:\n: 0 2 2 Some : 3 3 2 body : 7 4 2 once : 12 3 4 told * 16 9 6 me - 36 : 40 3 4 the : 44 6 2 world : 52 7 4 is : 60 7 6 gon : 63 4 6 na E Lyric / Note Data Column Commands The note data is arranged in five columns for lyrics, but there are exceptions. When a new line is required, there are only two or three columns, and to set a player or end a song, there is only one. We will go through these below.\nFor a lyric note it is typically arranged as so:\nColumn 1 Column 2 Column 3 Column 4 Column 5 Note Type Beat Start TimeStamp Beat Length TimeStamp Pitch / MIDI note Lyric / Syllable : 0 2 2 Some Line Break Column Commands A Line break is arranged as so:\nLine Break Beat start (Beat End) - 36 Note it is optional to include the beat end, as for the line break, the first number sets when the previous line disappears and the second one when included, sets when the next line appears. This is useful for controlling lyric lines on fast songs, or when you want to control slower lyrics that may disappear too soon, or too slowly.\nLine Break Beat start (Beat End) - 132 264 Line breaks with two numbers usually are used when there are songs which have a long instrumental or solo break where there are no lyrics for a time. This prevents the game placing up the next line of words too early, and allows the player to enjoy the solo/instrumental.\nSingle Column Note Commands Note Type P1 P2 P3 These types are for player set lyrics in duet mode. (See below)\nNote Type E This command sets the ending of the track, placed at the very end of the file. Do not place anything after this, as your file will not be considered clean.\nColumn One : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column One The first column is usually a single character, except for duet mode (see below). They tell the game how to display the note, or if the note is freestyle, a bonus, or a line break. Every chart also has an \u0026rsquo;ending note\u0026rsquo; which is placed at the end of the chart when the last lyric note is finished.\nThe table below lists all the note types that UltraStar commonly uses, and a definition of what those notes do in game. Do ensure you follow the correct layouts and setup for your chart, as the simulator will ignore it if there are any errors!\nKaraoke \u0026ldquo;Note\u0026rdquo; Types The file uses line beginnings to set the \u0026rsquo;note type\u0026rsquo; (lyric type) that the player will see on the screen. UltraStar supports a range of these, and they will be detailed below.\n# = Commands in the note data section are ignored. Some versions of UltraStar will crash if this character is found, and your chart will not be considered a \u0026lsquo;clean\u0026rsquo; txt with any of these characters at the beginning of a line. : = Regular Note. This is one of the most common things you will see in the chart, as it sets most of the song lyrics to be displayed on the screen. These lyrics can be assigned to either Player 1 or Player 2 if that note type is seen before a block, (see P1/P2 below). * = Golden Note. This note often has a sparkly or glow/shine affect around it in game to show the player it is a special note. The notes hit are set for \u0026lsquo;pitch\u0026rsquo; accuracy and can account for up to 10% of the players\u0026rsquo; final score if hit correctly. It is worthwhile tuning those vocal chords (or humming chords)! F = Freestyle Note. This note (or syllable) is usually displayed without a \u0026lsquo;pitch\u0026rsquo; value in game. This allows for songs which have \u0026lsquo;spoken word\u0026rsquo; or normal \u0026lsquo;dialogue\u0026rsquo; pieces, where the singer only needs to speak. These notes sometimes show up when a \u0026lsquo;clap\u0026rsquo; is required in the song as well on some rarer charts. R = Rap Note. This note (or syllable) is usually displayed without a \u0026lsquo;pitch\u0026rsquo; value in game. This allows for songs which have rapping or rhyming style sections, which need to finish on time (OutFox special mode), or the player can be punished. Most simulators do not follow the \u0026lsquo;finish on time\u0026rsquo; rules, and just require the singer to reach a specific input loudness when rapping on per beat analysis. G = Rap Golden Note. This note (syllable) is displayed with a sparkly or glow/shine affect around it in game to show the player it is a special note. It has the affects of the Rap Note above. - = Line Break \u0026lsquo;Note\u0026rsquo;. See \u0026lsquo;Line Break Column Commands\u0026rsquo; above for more details. P1 = Player 1 note. Set Lyrics to Player 1 (Duet only). This allows for songs that require two singers to have distinct colours that signifies player 1 should be singing. This note sets the chart to a duet (see below), which means it is more like a \u0026lsquo;doubles\u0026rsquo; or \u0026lsquo;couples\u0026rsquo; song in the Project OutFox engine. P2 = Player 2 note. Set Lyrics to Player 2 (Duet only). This allows for songs that require two singers to have distinct colours that signifies player 2 should be singing. This note sets the chart to a duet (see below), which means it is more like a \u0026lsquo;doubles\u0026rsquo; or \u0026lsquo;couples\u0026rsquo; song in the Project OutFox engine. P3 = Both Players note. Set Lyrics to BOTH players (Legacy Duet charts only). This allows for songs that require two singers to have a distinct colour that signifies both player 1 and player 2 should be singing. The use of P3 is not common, and we want to use P3 as a third player in a future Harmony option for karaoke mode. E = End Chart note. This character is placed as the end of the chart to set the ending time of the song, and on some versions of UltraStar can be overwritten by #END, though this is uncommonly used by modern charters these days. OutFox Specific Player Blocks P3 = Player 3 note. Set Lyrics to Player 3 (Harmony only). This allows for songs that require three singers to have distinct colours that signifies player 3 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. P4 = Player 4 note. Set Lyrics to Player 4 (Harmony only). This allows for songs that require four singers to have distinct colours that signifies player 4 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. P5 = Player 5 note. Set Lyrics to Player 5 (Harmony only). This allows for songs that require five singers to have distinct colours that signifies player 5 should be singing. This note sets the chart to a harmony chart, and is only supported in Project OutFox. Column Two : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Two This column value is in beats and sets the time in the chart when the lyric or syllable appears. This is dependent on BPM, with higher BPM songs showing the note sooner, and lower BPM will take longer to show. Although Project OutFox supports BPM changes and gimmicks, the format itself provides no options for this at all.\nColumn Three : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Three This column value is in beats and specifies the length of time the lyric or syllable lasts. In the example above, the syllable of \u0026lsquo;Some\u0026rsquo; lasts for 2 beats, with \u0026lsquo;body\u0026rsquo; coming in on beat 3. This is important to remember as technically you cannot sing two notes at the same time, and it will be impossible to score this.\nMany simulators will either throw an error or crash on badly formed charts if syllables overlap, for example if \u0026lsquo;Some\u0026rsquo; finished on beat 2, but \u0026lsquo;body\u0026rsquo; started on beat 1, this would be considered an overlap. However, \u0026lsquo;body\u0026rsquo; could start on beat 2 as \u0026lsquo;Some\u0026rsquo; would be considered complete, this is accepted. Just ensure that you never overlap your syllables!\nColumn Four : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Four This column is responsible for the musical pitch of the syllable or lyric that the singer is expected to match or reproduce as the words are displayed on the screen.\nMost UltraStar clients are limited to displaying a single octave on the screen that the singer can see.\nWithout going into too much musical theory, that is usually C -\u0026gt; C. (If you remember the \u0026quot;doe ray me far so la tea doe\u0026quot; song from the Sound of Music These were the main notes of the octave.) At this moment in time we haven\u0026rsquo;t confirmed how our pitch grid will be constructed, as we do not have the limitations of UltraStar or it\u0026rsquo;s derivatives. If you have any thoughts on this, do pop into the discord and give us them!\nThe values used in the UltraStar karaoke files start at 0. I have done a lot of research around the internet, and some people claim that this begins at C3, C1, C0, even C5 in one case!\nBut balancing a midi file of several example tracks and then cross referencing those notes with the syllables / lyric notes provided in the karaoke file shows that the 0 almost always runs on middle C or C4. We have learned that the game shifts the notes by 60 (Middle C MIDI Note) and bases the chart parsing of C0 = 0.\nThe following picture shows a standard piano 88 key layout. I have put this here to show how the format works out pitch and where to put the syllable layout on the screen.\nA common layout showing C4 (Middle C) Let\u0026rsquo;s take a few lines from an UltraStar file:\n: 0 5 4 Hey, : 9 6 4 hey, : 18 4 4 eve : 23 3 4 ry : 28 4 6 bo : 33 4 8 dy! Lets take the note values in column four: 4 4 4 4 6 8.\nUsing the piano layout above, count right the number of piano keys to match the numbers, remembering to count the sharp # black keys as well!\nFour notes on from C4 is E4, six notes on from C4 is F4#, and eight notes on from C4 is G4#. So replacing the numbered notes in musical notation: E E E E F4# G4#. These are the values the game uses for pitch matching, and to display on the pitch grid on screen.\nThis notation also works for negative numbers, you simply count backwards from C4 if the notes required are a lower pitch. Some songs do indeed have the whole base notes below 0, but this is often common with some genres. Be warned not every UltraStar version supports this!\nMost songs that have been charted tend to be within a 6 to 12 note range, so the pitch grids are not massive, and also to prevent the issue on some UltraStar clients where a note from a higher Octave, for example if the chart starts at G4 and there is a note for G5 this higher note would be drawn in the same place as the lower note, as the note would be considered an \u0026lsquo;overflow\u0026rsquo;, and would just be in the normal G4 row on screen.\nWe will add support to shift key for singers in Project OutFox to make it easier for players to sing in their natural range.\nColumn Five : 0 2 2 Some : 3 3 2 body : 7 4 2 once ^ Column Five As I am sure you have realised by this point, there has been a glaring error in column 5 on this little example song code snippet! body has two syllables and should be on two different lines!\nAs you can probably tell by now, this column represents the syllable or \u0026rsquo;lyrics\u0026rsquo; that the player will sing in time to the music.\nEach line in the chart specifies a syllable, it\u0026rsquo;s duration, the pitch, and the time (in beats) it is meant to be sung. This format does not support \u0026lsquo;pitch bending\u0026rsquo; during a syllable, to \u0026lsquo;support\u0026rsquo; this, extra lines are often added which have simply a ~ for the syllable, to show that this is a \u0026rsquo;long\u0026rsquo; syllable to the singer. If we were to extend \u0026lsquo;Some\u0026rsquo; above, with a different pitch, the chart would be:\n: 0 2 2 Some : 2 2 4 ~ : 4 3 2 body The game would show Some~ which is used to tell the singer that there is a pitch change, and to sing it as a different pitch.\nAnother important thing to realise is that the words in column 5 will automatically be joined together. If you forget where your spaces are, you will end up having a sentence with no spaces!\nLet\u0026rsquo;s take this chart we used for the column four example:\n: 0 5 4 Hey, : 9 6 4 hey, : 18 4 4 eve : 23 3 4 ry : 28 4 6 bo : 33 4 8 dy! You can see that there are spaces added at the beginning of the lines for \u0026quot; hey,\u0026quot; this is by design; you must pick your space arrangement when making your charts, some editors use \u0026lsquo;space first\u0026rsquo;, and some use \u0026lsquo;space last\u0026rsquo;. \u0026lsquo;Space last\u0026rsquo; places a space after the syllable, so would not begin with one. In the example above, the game would show \u0026quot;Hey, hey, everybody!\u0026quot; in the lyric section.\nIf you are creating charts yourself and tend to leave spaces at the end of lines, or use windows a lot, do take care to see where these spaces are in the file. We will write the parser to support both spacing modes, as is commonly done by UltraStar clients.\nDuet Mode This mode is available for songs which have two singers handling different parts of the song, and often singing the chorus together.\nEach player sings their words, and are scored as normal on the words they sing only.\nIn txt files, these are split up with the use of P1 and P2 in the note section of the file, with many charts repeating words which are sung by both players, but there has been a few charts that use P3 for this.\nIn Project OutFox we\u0026rsquo;re planning to add a \u0026lsquo;Harmony\u0026rsquo; Mode which could support up to five or six singers at once, and this would require the availability of P3 to P6, so it is likely where we will go on this, as P3 usage does not seem common in almost all charts.\nWritten and Maintained with ♡ by Squirrel, with updates from barbeque, and support from Twilight from UltraStar Play, with thanks to My Little Karaoke and the UltraStar community, and Kokairu for their blog at https://thebrickyblog.wordpress.com\n","description":"Project OutFox is working on support on the parser for the Karaoke TXT (UltraStar) chart format, which is the standard format used in conjunction with the karaoke game types. The following page contains details on the Karaoke file parsing options that Project OutFox will support. This is a living document - it will be incomplete as Squirrel finds time to update and confirm/clarify items that are missing or unknown.\nTXT Notedata support as of Alpha 0."},{"id":88,"href":"/dev/actors/General-DifferencesfromOlderSM/","title":"Behavioral differences from SM 3.95/ITG","parent":"Lua and Actors","content":" OpenITG, NotITG and SM 3.95 are popular engines based on older versions of StepMania that have communities that continue to support by making new content.\nOutFox contains a similar feature set as the previous revisions of the game, but with some notable differences. This document aims to provide help with porting content to and from the different versions of the game.\n\u0026ldquo;Command\u0026rdquo; format vs \u0026ldquo;Function\u0026rdquo; format Converting commands to the newer function format is generally recommended when porting content to SM5. The following sections detail what these processes.\n\u0026ldquo;Command\u0026rdquo; format In SM3.95 \u0026amp; related engines, commands can be defined inside xml nodes like this:\nOnCommand=\u0026#34;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoom,2;rotationz,180;linear,50;rotationy,-5000;rotationx,750;rotationz,750;sleep,100\u0026#34; (Taken from WinDEU\u0026rsquo;s \u0026ldquo;Golden Slaughterer\u0026rdquo; file from \u0026ldquo;WinDEU Hates You 5EVR\u0026rdquo;.)\nThis is what can be considered \u0026ldquo;Command\u0026rdquo; format, which allowed for easy chaining of actor functions tweens.\nFor a quick translation into SM5, this can be wrapped with cmd(), but this is considered bad practice and inefficient (And it\u0026rsquo;s still counted as \u0026ldquo;Command\u0026rdquo; format). However, it\u0026rsquo;s used a lot in the past, so it\u0026rsquo;s still here for backwards compatibility.\nAnother thing to note is that the functions inside this format (eg: x, rotationz, zoom, etc.) appear to be case-insensitive, all being converted to lowercase in the end. (Although in SM5, this appears to not be the case.)\n\u0026ldquo;Function\u0026rdquo; format In SM5, commands can be defined inside lua tables like this:\nOnCommand= function(self) self:x(SCREEN_CENTER_X):y(SCREEN_CENTER_Y):zoom(2):rotationz(180):linear(50):rotationy(-5000):rotationx(750):rotationz(750):sleep(100) end (The function format version of the earlier command)\nThis is what can be considered \u0026ldquo;Function\u0026rdquo; format.\nThis is not exclusive to SM5, however. SM3.95 \u0026amp; friends can use lua functions inside xml nodes. But there is a caveat: Actor function chaining as seen in the example is not possible in SM3.95/OpenITG/NotITG. Instead, a separate self: would be needed for each function call.\nEverything is case-sensitive in this format, so take care to ensure the casing is corrent.\nActor Differences Because the internals of the engines are different, actors may work differently with the same lines of code.\nZoom and rotation order SM3.95 (and as a result, OpenITG \u0026amp; NotITG) apply the rotation, then apply the zoom. SM5 applies the zoom and then applies the rotation.\nIn Project OutFox, this can be worked around by setting the rotafterzoom attribute to false, returning the SM3.95 behavior.\nThe notes \u0026amp; receptors already have this active to help with easilly replicating modifier effects from the other engines.\nIn SM5.2 and earlier, this has to be done with wrapper states or actorframes. This is done by having the wrapper do the positioning and zooming, while the main actor gets everything else. (This is still doable in Project OutFox if you\u0026rsquo;re aiming to write content for multiple SM5s)\nZoom\u0026rsquo;s effect on the axis SM3.95\u0026rsquo;s zoom function only affected the x \u0026amp; y axis, while zoom affects all three axis in SM5.\nIt\u0026rsquo;s fine for actors like Sprites or BitmapTexts, but it stops being \u0026rsquo;normal\u0026rsquo; when actors like Models come into play.\nThis not only affects actors, but also affects modifiers that play with zoom (eg: Mini, Tiny).\nA workaround is to either use only the x \u0026amp; y zooms or undo any scaling done to the z axis when performing a normal zoom.\nActorFrameTexture\u0026rsquo;s capture method. In NotITG, an ActorFrameTexture (AFT), captures everything that was rendered before it and places it into a texture.\nSM5\u0026rsquo;s AFT captures everything inside of it (Hence, ActorFrameTexture), and places that into a texture.\nThis difference makes for a nontrivial challenge to port content across if AFTs are in use.\nDue to how AFTs work in nITG, lumikey or chromakey shaders are needed if transparent textures of an actor are needed.\nAttribute renames A few of the attributes got renamed, so when porting content, take care to ensure these are dealt with:\neffectdelay (SM3.95) becomes effect_hold_at_full (SM5)\nhidden(0) and hidden(1) (SM3.95) becomes visible(false) and visible(true) (SM5)\nScaling across multiple themes Most themes made for the SM3.95 era are considered \u0026ldquo;480p\u0026rdquo; because it\u0026rsquo;s internal height was always 480 pixels.\nSM5 changes this, with SM5.1\u0026rsquo;s default theme shifting towards a hight of 720 pixels, which can be considered an \u0026ldquo;HD\u0026rdquo; Theme.\nSeveral things have to be scaled in accordance to this, such as:\nZoom (All axis are involved) Positioning (All axis are involved) Effects (Not all need to be scaled.) A Common ratio would be this: SCREEN_HEIGHT/intended_height (for SM3.95-style content, intended_height is 480)\nHowever, this does not apply to every actor. If an actor is inside something that\u0026rsquo;s already scaled (eg: the NoteField inside the scaled Player), it does not require the above scaling.\nModifier Differences Some modifiers have completely different behavior, which can make porting modifier-related content less trivial.\nTiny In SM5, positive tiny brings the columns together similar to what Mini visually does. NotITG instead only zooms the notes.\nThe only options are to combine column movement modifiers to counteract the movement, use the column-specific variants instead, or use tinyx \u0026amp; tinyy (which is technically closer to what nITG\u0026rsquo;s Tiny actually does).\nThis only affects the original Tiny modifier, and not its\u0026rsquo; variants.\nThe zoom equation is different. SM5 uses this equation: 0.5^strength, while NotITG uses this one: 1 - 0.5*strength. (100% == 1.0 for the strength) It just so happens that NotITG\u0026rsquo;s equation is the exact same one Mini uses for notefield zoom.\nIn OutFox, this can be altered with the TinyUsesMiniCalc sub-modifier. When active, it switches to NotITG\u0026rsquo;s equation, which allows for a wider range of zooms.\nIn SM5.2 and earlier, this can be somewhat replicated by taking the two equations and solving for the equivalent strength. (Doesn\u0026rsquo;t work for negative strengths in NotITG, through)\nThis affects every variant of Tiny.\nDifferences from older SM5 builds Project OutFox changes the default behavior from the older SM5 builds. This section documents those changes.\nColumn-specific function changes Instead of typing \u0026lt;mod name\u0026gt;\u0026lt;\\column number\u0026gt; (As in SM5.1), you now type \u0026lt;Mod Name\u0026gt;Col, and the first parameter is the column number. It also allows for mass applications by passing nil as the column number.\nPlayer vanish point In SM5.2 and earlier (due to a math error), the player\u0026rsquo;s vanish point at the x axis is skewed towards their side of the screen instead of being directly at the center of the notefield. This is not an issue in SM5.0.7 and earlier or in OutFox and later.\nFor example: P1 is at the left half of the screen, so its\u0026rsquo; vanish point is slightly skewed towards the left edge of the screen.\nvibrate() now takes the current zoom into account This is similar to how it behaves in SM3.95/ITG.\nSM5.1 and earlier take the endpoint zoom and use that for vibrate.\nFor example:\nactor:vibrate():zoom(20):linear(2):zoom(0) Would result in no visible vibration because the end point is 0, while in OutFox and SM3.95, one would see the vibration start at 20 and go down as the zoom reaches 0.\nLua is more strict with escape sequences. In older builds of SM, an invalid escape sequence is ignored, with the offending \\ removed. In Lua 5.3 (and consequentally, Project OutFox), this now causes a lua error, which may result in themes or effect files not running correctly or at all.\n","description":"OpenITG, NotITG and SM 3.95 are popular engines based on older versions of StepMania that have communities that continue to support by making new content.\nOutFox contains a similar feature set as the previous revisions of the game, but with some notable differences. This document aims to provide help with porting content to and from the different versions of the game.\n\u0026ldquo;Command\u0026rdquo; format vs \u0026ldquo;Function\u0026rdquo; format Converting commands to the newer function format is generally recommended when porting content to SM5."},{"id":89,"href":"/dev/effects/EffectFiles-ChartSegments/","title":"Chart segments","parent":"Effect Simfiles","content":"Gimmick charts often involve a large amount of BPM changes or stops to create various effects like stutters, wave-type scrolling or switching notes with other types of notes (ex: notes become mines).\nThis is done with \u0026ldquo;segments\u0026rdquo;. One can have many instances of a segment type.\nThe SSC simfile format has extra \u0026ldquo;segments\u0026rdquo;, which allow for other effects. The following list notes what is available and what it is supposed to do.\nSM-era segments These segments can be found in .sm files, but they can also be in .ssc files, too.\nBPM changes (BPMS) Every chart has a BPM, but it doesn\u0026rsquo;t have to stay at one BPM. Some songs do change BPM throughout, but some charts do this for doing stutters (when combined with stops) or having notes speed towards or slow down. Visually ignored if CMod is used (But may result in weird spacing with regards to note quantization).\nIn the simfile, it\u0026rsquo;s listed as the beat the change happens, and then the BPM to change to. The BPM listed at beat 0 is the starting BPM.\nIn SM3.95 and oITG/nITG, negative BPMs can be used to \u0026lsquo;warp\u0026rsquo; through the chart. SM5 converts these to warp segments automatically, but the result may not be perfect. (SM3.95 can use this to make autohit notes, or artificially lower the possible score. SM5 can\u0026rsquo;t)\n#BPMS:0.000=256.000,42.000=128.000,56.000=256.000; (ex: a chart that starts at 256 BPM, changes to 128 BPM at beat 42, then changes back to 256 BPM at beat 56)\nStop segments (STOPS) Stop segments tell the game to stop scrolling the chart for a given amount of seconds. Visually ignored if CMod is used.\nThis also makes the beat stop while one is active. (So, if you were printing the beat, it would stop incrementing during the stop segment)\nIn the simfile, it\u0026rsquo;s listed as the beat the stop happens, and then how long the stop is (in seconds).\n#STOPS:27.000=3.141; (ex: at beat 27, the chart stops scrolling for 3.141 seconds)\nKeysounding (KEYSOUNDS) SSC-era segments When SSC created the .ssc format, new segment types were added.\nDelay segments (DELAYS) Warp segments (WARPS) Tells the game to teleport foreward a given number of beats into a chart. Any notes that are skipped get counted as fake.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, then how many beats foreward to teleport.\n#WARPS:28.000=4.000; (ex: at beat 28, teleport foreward by 4 beats.)\nTime Signature segments (TIMESIGNATURES) Tick Count segments (TICKCOUNTS) Sets how many hold ticks happen in a hold per measure. Starting value defaults to 4. Only really used in pump mode, due to other games not having hold checkpoints.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, then the actual tickcount amount.\n#TICKCOUNTS:0.000=4, 28.000=8 (ex: At beat 28, a hit becomes 2 combo, and a miss becomes 4 misses.)\nCombo segments (COMBOS) Sets how much combo a hit or miss adds. The default is 1/1, which means a hit gets 1 combo and a miss gets 1 miss.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, how much combo a hit is and then how much combo a miss is. If a single number is listed, both hits and misses get the same value. Weird behavior, such as underflows can happen if negative values are used.\n#COMBOS:0.000=1, 28.000=2=4; (ex: At beat 28, a hit becomes 2 combo, and a miss becomes 4 misses.)\nSpeed segments (SPEEDS) Sets the speed of the chart by ratio. 1 is the normal speed. If given a length of 0, the change happens instantly. The default starts with a speed of 1, applying at beat 0 instantly. Visually ignored if CMod is used.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, the speed to go to, how long the change takes and whether it\u0026rsquo;s in beats or seconds.\n#SPEEDS:0.000=2.000=0.000=0, 16.000=4.000=1.000=0, 24.000=1.000=2.000=1; (ex: Chart starts at a speed of 2, on beat 16, it turns to a speed of 4 in 1 beat, and on beat 24, it turns to a speed of 1 in 2 seconds.\nScroll segments (SCROLLS) Allows one to alter the scrolling factor for a section (as opposed to the whole field). When given a factor of 0, the chart stops visibly scrollnig, but notes can still be hit. Visually ignored if CMod is used.\nIn simfile, it\u0026rsquo;s listed as the beat it happens, and then the factor to switch to.\n#SCROLLS:0.000=1.000, 24.000=0.000, 28.000=2.000; (ex: The chart starts with a factor of 1, switches to a factor of 0 at beat 24, and switches to a factor of 2 at beat 28)\nFake segments (FAKES) Allows one to mark a section of the chart as fake, which means the notes can\u0026rsquo;t be hit or judged.\nIn the simfile, it\u0026rsquo;s listed as the beat the fake segment is at, and then how long the section is in beats.\n#FAKES:24.000=8.000; (ex: at beat 24, don\u0026rsquo;t judge the notes for 8 beats)\nLabel segments (LABELS) Allows one to mark the start of a section with a name. The default label is \u0026ldquo;Song Start\u0026rdquo; at beat 0.\nIn the simfile, it\u0026rsquo;s listed as the beat the label is at, and then the name of the label.\n#LABELS:0.000=Song Start;\nNotITG has an advanced version called \u0026ldquo;Spellcards\u0026rdquo;, which have a start beat, end beat, difficulty, name and color\n","description":"Gimmick charts often involve a large amount of BPM changes or stops to create various effects like stutters, wave-type scrolling or switching notes with other types of notes (ex: notes become mines).\nThis is done with \u0026ldquo;segments\u0026rdquo;. One can have many instances of a segment type.\nThe SSC simfile format has extra \u0026ldquo;segments\u0026rdquo;, which allow for other effects. The following list notes what is available and what it is supposed to do."},{"id":90,"href":"/dev/theming/Theming-2-Screen-Creation/","title":"Creating a custom screen","parent":"Introduction to theming","content":"OutFox allows for creations of screens outside of the engine scope. This can be useful for elements that want to, for example, have no involvement with the engine at all, and want to process information with your own custom code.\nCreation of screen definitions For this, you will need to add the following to the metrics.ini file, mentioned on a previous chapter.\n# This will be the name for the screen, which we can access in a moment using a metric command or lua. [MyCustomScreen] # This will determine what elements will take for loading as a failsafe once it begins. # For this example, we\u0026#39;ll use ScreenWithMenuElements. Fallback=\u0026#34;ScreenWithMenuElements\u0026#34; As you notice, we\u0026rsquo;re using the Fallback item. This is to have an existing screen as a fail-safe which makes the engine call existing elements that this new screen does not have at the moment, such as its screen overlays, sounds, graphics, etc. By using this, it also fetches its class. Every single screen created must contain some kind of class, otherwise the engine will not know how to respond to it and crash or send out an error. If you are unsure which class to use, you can rely on ScreenWithMenuElements, as it is the most basic screen class type, and the skeleton for every other class. Acessing the screen Now with the metric information added, we have to have a way to enter the screen. There are mainly 3 ways to send the user to the screen.\nMethod 1: Using InitialScreen This method will make the screen be the first one loaded as soon as the engine is loaded, which is useful for testing elements that may require a full restart or need quick access to such screen when performing extensive development.\nFor this, the following needs to be added to the metrics.ini file.\n[Common] # Replace the string with the name of your new screen. InitialScreen=\u0026#34;YourScreenName\u0026#34; Method 2: Using metrics This makes use of an existing ScreenSelectMaster object to use one of its Choice option commands to include the new screen. For this example, we\u0026rsquo;ll use a ScreenTitleMenu metric set, which only contains the minimum to modify what the choices will perform.\n[ScreenTitleMenu] # ChoiceNames will deal with what are options to create on the scroller. # Notice that some of the options here are not present below, and that\u0026#39;s because # _fallback will take care of filling that information in as a fail-safe. ChoiceNames=\u0026#34;GameStart,Options,Edit,Jukebox,GameSelect,Exit\u0026#34; # The actual choices. Notice the applydefaultoptions segment in the string. # This is used to reset the player\u0026#39;s options back to default given some arcade settings. ChoiceGameStart=\u0026#34;applydefaultoptions;text,Game Start;screen,\u0026#34;..Branch.AfterTitleMenu() ChoiceOptions=\u0026#34;screen,ScreenOptionsService;text,Options\u0026#34; ChoiceEdit=\u0026#34;text,Edit/Share;screen,\u0026#34;..Branch.OptionsEdit() ChoiceExit=\u0026#34;screen,ScreenExit;text,Exit\u0026#34; To change what screen to move into, just change the value of any of the screen segments on that example, and then reload your metrics with Shift + F2. Let\u0026rsquo;s use ChoiceOptions as an example.\nChoiceOptions=\u0026#34;screen,YourScreenName;text,Options\u0026#34; Method 3: Using Lua to redirect In an existing Lua file, you can call ScreenManager to set a new screen, using SetNewScreen. As soon as this command is called, the new screen is created.\nSCREENMAN:SetNewScreen( \u0026#34;YourScreenName\u0026#34; ) Another method to set a new screen within Lua, is to change the name of the NextScreen to the new screen that has been created.\n-- Set the next screen to our new one. -- With this, you would be done for most screens that only need a start press to go to the next screen. SCREENMAN:GetTopScreen():SetNextScreenName( \u0026#34;YourScreenName\u0026#34; ) -- However, if your screen needs to loaded now but you want transitions to be played, use -- the PostScreenMessage command to call the out animation. SCREENMAN:GetTopScreen():PostScreenMessage( \u0026#34;SM_GoToNextScreen\u0026#34;, 0 ) Both of these commands can be chained to avoid fetching all screen data multiple times.\nSCREENMAN:GetTopScreen():SetNextScreenName( \u0026#34;YourScreenName\u0026#34; ):PostScreenMessage( \u0026#34;SM_GoToNextScreen\u0026#34;, 0 ) ","description":"OutFox allows for creations of screens outside of the engine scope. This can be useful for elements that want to, for example, have no involvement with the engine at all, and want to process information with your own custom code.\nCreation of screen definitions For this, you will need to add the following to the metrics.ini file, mentioned on a previous chapter.\n# This will be the name for the screen, which we can access in a moment using a metric command or lua."},{"id":91,"href":"/user-guide/meta/faq/","title":"FAQ","parent":"Front Matter","content":"This page has some of the more commonly asked questions pitched to us from the community, remember if you cannot find your answer here, feel free to ask in the discord server!\nWill OutFox still work with my old songs/themes/etc..? Project OutFox builds upon the existing StepMania 5.0.12/5.1 beta codebase, and maintaining backwards compatibility with older content is one of our main priorities. Content that worked on StepMania 5.0.12/5.1 (including songs, themes, and noteskins) should still work on OutFox. If you experience any issues/weirdness, please report it to us.\nSide note for developers\nPlease note that we are deprecating the use of semicolon-separated cmd() blocks (i.e. OnCommand=cmd(linear,1.5;diffusealpha,1); ) as a means of placing commands on actors in Lua scripts, as this method is a non-standard Lua function that was created for StepMania, and OutFox is not optimized with this coding style in mind (themes may experience performance penalties if they use this method). It is strongly recommended that function chaining (i.e. code such as OnCommand=function(self) self:linear(1.5):diffusealpha(1) end, ) be used instead.\nCan I install it alongside existing versions? Yes. Our installer on Windows also defaults to portable mode, so user profile data is stored in your installation directory.\nIf you would like to have a shared song library between multiple builds, you can use the AdditionalSongFolders preference in Save/Preferences.ini to specify a path. Learn how to here\nWhere should I report Bugs, request features and post game crashes? If you can, do those in our Issue Tracker Repository, by creating an issue it\u0026rsquo;ll give you those exact options that I mentioned in the question.\nYou can also use this Discord Server:\nUse \u0026ldquo;feature-request\u0026rdquo; channel to request features or give ideas. Use \u0026ldquo;bugs-crashlogs\u0026rdquo; channel to report bugs and game crashes.\nYou can also use our forum\nAre there ways I can contribute? You can report bugs and make feature suggestions on our Discord server. TinyFoxes is coordinating and hosting community-produced content for Project OutFox, such as translations and other add-ons. How do I get logs? Go into your game folder and check if there\u0026rsquo;s a file called portable.ini (or just portable if your system doesn\u0026rsquo;t display file extensions). If there\u0026rsquo;s a portable.ini in your game folder then all you need to do is open the Logs folder and you\u0026rsquo;ll find all logs, the most important one being log.txt. (Try to do this after closing the game)\nIf there\u0026rsquo;s no portable.ini in your game folder, then you need to go into a specific path based on your OS:\nWindows: appdata/roaming/Project OutFox Mac: ~/Library/Logs/OutFox/ Linux: /home/user/.OutFox Why do I have to configure my pad while older versions of StepMania could work with no problem? Project OutFox uses XInput, it means controllers need to get mapped first and then never again. It means every single controller should work with Project OutFox\nThe game doesn\u0026rsquo;t even try to auto-map things yet, there\u0026rsquo;s a tutorial step-by-step how to map\nI\u0026rsquo;m new to this community and I don\u0026rsquo;t understand many terms, could you explain what they mean? Chart: How we call Songs that you can play in OutFox. (osu! players calls them Maps) Mods: Modded charts that uses Lua to change how the game operates. Pad Chart/Keyboard Chart: If the chart was design for people that play in pad or for keyboard. Hold: A note that you have to hold to not miss it. Drill/Roll: A note that you have to keep hitting to not miss it. NG: Missed Hold/(Drill or Roll) Doublestep: When you have to use the same foot to hit 2 different notes. RUDRU for example (R = Right, U = Up, D = Down) Ghosttap: When you hit a place where there\u0026rsquo;s no step. 4th,8th,12th: Note types and colors, 4th: red arrow (hit after each beat), 8th: blue arrow (hit after each half beat), 12th: green arrow (hit after each 1/3 beat)..it goes on. Playfield/Notefield/Receptors/PlayerBoards: The targets that notes are going to reach. In dance, the 4 notes that are always at the top. In pump, the 5 notes that are always at the top. Lifts: Note that you have to stop holding the moment they reach the play field. Will Project OutFox go open source? Yes, in the future.\nFrom the Team:\nThe project began as a method to add online and profiles to SM5, but when we looked into the engine to see how this could be appropriated it was discovered just how much in a sorry state the code base was, and it looked mostly abandoned. We spoke to Shakesoda in hopes of a resurrection in the form of a team project, and it was requested rather than breaking 10 years of content and community to take the time to make a proper 5.x build that is stable and supports what the community as a whole wants from the game. This backward compatibility support has been very problematic to maintain, but it\u0026rsquo;s something now we are down the line which we are proud of, as it has brought many newcomers and veteran players back to the community, and provided a very stable experience for folks during the lock down. We will continue to try to attain a near 100% compatibility where we can, and this is taken into consideration whenever we plan a new feature or change engine components.\nIn the beginning of the project we wanted to be the natural progression of 5.1, but due to resistance and feedback from the community, we have made the decision to adjust the returning of code back to the repo in the future. The aim has always been to open source when the project is in a releasable state, which gives us enough time to realise our plans for the project and the direction we wanted to take OutFox in. We read the community loud and clear in terms of their wishes and needs for StepMania, so we will not disturb that paradigm.\nWe asked if it was ok to close the source while this process was done, and it was deemed wise for the health of the repo and the need of people who are just wanting to play. Its why we\u0026rsquo;ve been around the repo but not on it as taint can happen and we do not wish this. SSC did this same behaviour before us, so we did not see it as a problem. Some vocal members of the community disagreed, including some of the previous SMDev Team. We have also been compared to past SM repo contributors who may have left a less than savoury memory in the minds of some, and it has also been hard to differentiate from history we have no involvement with.\nMoving forward with the project, it has become apparent that OutFox has moved beyond a lot of what the community expects StepMania to be, and has grown into a project that is well beyond just being a DDR or ITG clone. We have had to \u0026lsquo;rename\u0026rsquo; our internal branding and naming conventions away from StepMania, this was due to us wishing to license/digitally sign the binaries we make, and with gaining this with the SM name being almost impossible, we had to change name to OutFox. Moving forward we continue to keep this promise to ensure our builds are signed on Mac OS (and soon Windows) so it makes the game play experience better for everyone. With us also releasing on Steam it has become even more important that we continue consistent naming conventions.\nThe project is about providing a free game with unencumbered assets and also packs of properly licensed content for the community, and this covers more than dance alone. We are not for profit, we do not ever wish to profit from this community, as we have been part of it for so long. We will announce more information in due course about our future, for now we are as excited as you on the progression of this project.\nMy controller doesn\u0026rsquo;t work, but it did on older versions of StepMania. Currently the game features two modes: a HIDAPI-based \u0026ldquo;Legacy\u0026rdquo; input system, similar in behaviour to the input system seen in StepMania 5.0, and an XInput-compliant input system (additional configuration is needed to use unrecognized controllers in this mode, see here for more information). If you are unable to map any buttons to the game, try switching modes to Legacy, available as an option in the Experimental Settings menu, or follow the guide mentioned above on how to map your controller with XInput.\nIs online mode available yet? If not, is it coming? Short answer: no it\u0026rsquo;s not available, yes it\u0026rsquo;s coming. Long answer: It\u0026rsquo;ll take a while, the engine is still being optimised and the online system is still in development (being done by Cube).\nThis doesn\u0026rsquo;t mean Online isn\u0026rsquo;t important for us, it\u0026rsquo;s a lot, it was one of Team Rizu first plans but the engine just wasn\u0026rsquo;t ready for their plans.\nResume: As your read this, both the game engine and online mode are still in development.\nHow do I insert Noteskins/Themes/Avatars/Judgments/Toasties into Project OutFox? In the game folder there\u0026rsquo;s a folder called Appearance, where you\u0026rsquo;ll find a folder for each of those mentioned features.\nFor Avatars Open Avatars folder and drop any png, jpg, gif into there with any name you want. Now in-game go into Options \u0026gt; Profiles \u0026gt; Select any already created profile (or create one) \u0026gt; edit \u0026gt; change avatar image, now you can select any image that is inside the Avatars folder.\nFor Themes Open Themes folder and drop here any theme that supports 5.x.\nFor Noteskins Open NoteSkins folder, open the folder that represents what game mode the noteskin is made for, drop the NoteSkin Folder there.\nYou can find more noteskins in https://projectoutfox.com/addons/noteskins\nFor Judgments Open Judgments, drop the judgment image there. Do not change the name of the judgments you download, they\u0026rsquo;re important so the game knows what part of the image the game should get)\nFor Toasties Open Toasties, drop the game Toasty folder there. (The game can come with 2 toasties in the installer options)\nI have an ancient Intel Card and the game does nothing but crash! If your log shows WDDM1.0 or WDDM1.1 at the end of the graphics card name:\n00:00.505: Last seen video driver: Intel(R) 82945G Express Chipset Family (Microsoft Corporation - WDDM 1.0) or the log shows Microsoft GDI as the Renderer\nThen you are running the OpenGL crippled \u0026lsquo;windows\u0026rsquo; driver that is downloaded on a fresh install. Project OutFox will not work on these drivers, as we do not support DirectX anymore (the old D3D renderer that 5.0.12/5.1 has)\nThere is a list of drivers at this site location that may help, but for some of these cards, you need to keep your windows 7 install disc handy!\nhttps://www.intel.com/content/www/us/en/support/articles/000005733/graphics.html\nUpdate: If you accidentally updated your windows to beyond the support given to you by Intel, so you moved to windows 8.1/10 from 7 then there is still hope! you can take a chance with the Mesa OpenGL replacer for legacy software, which adds an API extension over Microsoft. You can find it here: https://github.com/pal1000/mesa-dist-win/releases/latest\nHOW TO USE?\nDownload Mesa3d for Windows: mesa3d-xxxx-release-msvc.exe\nExtract it (either with a double-click or right-click 7-zip) In the extraction folder of Mesa, go to x64, select and copy opengl32.dll In the extraction folder of Project OutFox, go to /program and paste opengl32.dll it may now use the proper dll Also see https://fdossena.com/?p=mesa/index.frag for a windows working solution.\nAnd for a detailed guide for intel users: (Some computer literacy needed) https://gist.github.com/rb-dahlb/26f316c5b6089807a139fc44ee69f0d1\nHow can I know who works on OutFox and who to trust? Everyone on this list is part of OutFox Team and works on OutFox: see list\nInternational Moderators/Translators/Alpha Testers/Tiny-Foxes indirectly helps OutFox development but they aren\u0026rsquo;t part of the OutFox Team.\nIf you see anyone else saying they work on OutFox then do not trust and please report to us. You can always ask at our Discord Server\nLinux I get the error \u0026ldquo;error while loading shared libraries: libOpenGL.so.0:\u0026rdquo; Install either libglvnd and/or libopengl0 based on your distro. On some distros the package is known as libglvnd-opengl.\nMac I\u0026rsquo;m having issues launching the game and I have Alpha 4.9.5 or lower. If you receive errors such as \u0026ldquo;No noteskins found\u0026rdquo; or other unusual behavior, you will have to change macOS security settings in order for Project OutFox to operate correctly. MacOS performs a process every time a new program has been downloaded called quarantine, which will require Gatekeeper (The OS\u0026rsquo;s security manager) to verify its signature. The OS does not trust unsigned applications, and prevents access to external files unless given manual permission by the user.\nTo do this, open Terminal and run the following command: xattr -dr com.apple.quarantine /path/to/OutFox, replacing /path/to/OutFox with the path to the directory containing the OutFox executable (manually typing it out, or dragging the folder containing the game executable directly onto the window to fill it automatically).\nQuarantine video example\nOn older builds, macOS Catalina also generated a message stating that the game was requesting permission to receive keystrokes from any application. This was a side effect of previous code that has since been removed.\nThe game is rendering small in the bottom corner of the window. This is due to the renderer not supporting scaled screens yet. To fix this, right-click the game executable and select \u0026ldquo;Get info\u0026rdquo; (or highlight the file and press Command (⌘)+I, and toggle the \u0026ldquo;Open in Low Resolution\u0026rdquo; option under General.\nWhat modes does OutFox currently support? The modes as of Alpha 4.14.0 (April 2022) are as follows:\nName | Description ----------|------------ dance | The classic 4k dance game + Solo (3, 4, 6 and 8 (Double) Panels) pump | 5k diagonal dance game (5, 6 (HalfDouble), 10 (Double)) based off of the pro era (SM4) kbx | 1-19 Keys ez2 | Ez2Dancer (3 Panels with 2 Sensors, 3 Panels with 4 Sensors and 6 Panels with 4 Sensors (Double)) para | Para Para Paradise (5, 8, and 10 Sensor) ds3ddx | Dance Station 3DDX (4 Panels with 4 Sensors, 5 Panels with 4 Sensors and (Double) versions of these) be-mu | (formally beat) BMS (5, 7, 10 (Double) and 14 (Double) Keys + Scratch) maniax | Dance Maniax (4 and 8 (Double) Sensors) techno | TechnoMotion (4, 5, 8. 9, 8 (Double), 10 (Double), 16 (Double) and 18 (Double) Panels) taitai | A \u0026#39;don da don\u0026#39; styled mode po-mu | PMS (3, 4, 5, 7, 9 and 18 Keys) gddm | DTX drum style (5, 9 and 10 piece) gdgf | DTX based guitar style (5 Guitar/Bass, 3 Guitar/Bass) (6 Guitar support Coming soon!) gh | Guitar style (5 Solo/Backup, 6 Solo/Backup) smx | 5k cardinal style dance game (5 Solo/Backup, 6 Solo/Backup) stepstage | Based on the defunct game Stepping Stage by Jaleco in 2000 (single and twin) kickbox | Obscure lash a soft dance pad to a punching bag mode (4, 6, 8 sensor Mode) The Modes we can talk about are as follows: PLEASE NOTE: These are proposed and are scheduled on the road map, limitations or code problems may delay or change these modes, so it is why there is no date or ETA given.\nName | Description ----------|------------ piu | A major refactoring to a more accurate mode, to update it to closer to mainline style djh | Some DJ\u0026#39;s could be the hero cdj | Some DJ\u0026#39;s are just crackin! kbm | bmson 24/48k support piano | up to 88k piano support drum | A midi based drum mode with 20 parts simulating a full yamaha DTX drum kit karaoke | A (.. do i need to explain this?) singing mode. Will happen if squirrel gets off his butt jam | A mode properly supporting O2Jam and it\u0026#39;s modes, with full .OJM loader support d86.4 | Feet dance Station Radio 3 panel rb | band style drums (5 lane) What NotesLoaders Does OutFox Support? The NoteLoaders as of Alpha 4.15.0 (June 2022) OutFox Supports and their level of completeness to the specifications:\nName | Notes: ---------|------------ BMS | 92% See Wiki for more details BME | 92% (beat loader for extended/PMS) BML | 100% (beat loader for long notes extension) BGF | 100% (beat loader for GF proposed) BMSON | 10% (beat loader for 24/48k) CHART | 90% (gh/rb loader) DTX | 95% (gddm 95% / gdgf 90%) DWI | 100% (as we know) GDA | 100% (gddm 95%) KSF | 100% (as we know) MC | 10% (Malody loader) MID | 80% (gh/rb loader) OTO/.osz | 70% (O!Mania 95%, O!Taiko 60%) PIU | 80% (+ SSC v0.81 parser for F2/P1 specific) PMS | 100% BMS98 / 94% BME 2004 QUA/.qp | 94% (Missing Warps) SM | 100% (+ OF fixes) SSC | 100% (+ OF fixes v0.84 proposed) TJA | 65% (Taiko loader in progress) PLEASE NOTE: These are proposed and are scheduled on the road map, limitations or code problems may delay or change these modes, so it is why there is no date or ETA given.\nName | Notes: ------|------------ OJM | 0% ??? | 0% ??? | 0% ","description":"This page has some of the more commonly asked questions pitched to us from the community, remember if you cannot find your answer here, feel free to ask in the discord server!\nWill OutFox still work with my old songs/themes/etc..? Project OutFox builds upon the existing StepMania 5.0.12/5.1 beta codebase, and maintaining backwards compatibility with older content is one of our main priorities. Content that worked on StepMania 5.0.12/5.1 (including songs, themes, and noteskins) should still work on OutFox."},{"id":92,"href":"/user-guide/games/bemu/","title":"Game Module: be-mu","parent":"Supported Game Modules","content":"\nbe-mu seven key long note game-play, default legacy theme\nbe-mu seven key mine game-play, default legacy theme\nAbout History: This mode started life as a notes loader for obscure dance charts created in 1998, with 4 key and 6 key being supported. 4k doubles seemed to appear around 2000, before being replaced completely with MSD/DWI around the same time. The loader has been present for a very long time in the games history, not adding actual BMS support until 2003. There are still a number of charters that prefer keysounded dance charts, and for that reason we keep support for those in the engine to this day.\nThe mode was added in the 3.0 beta era, starting off life as a simple mode with no keysounds or even using the correct keys. The familiar 7K setup we know and love was added later in 2005.\nThe mode did not see much use and fell into having a broken notesloader around the summer of 2010, making it not work with older BMS files, or files with BME or BML extensions. Many files were misinterpreted or just did not load at all, and some were even seen as po-mu songs when they were not. The game also wiped any BMS charts with the same difficulty or \u0026rsquo;level\u0026rsquo;, meaning the multichart methods BMS authors used were non-functional. The overdue revamp of the loading system in 2021 and 2022 fixed many of these bugs, allowing this mode to function and flourish once more. As of Alpha 4.14.0 the be-mu mode parsing support is almost complete, with only #TOTAL and #RANK support left to implement.\nIntroduced: (These styles are not in this mode, they are here for completion as being history for the BMS protocol)\n4 Key (Up/Down/Left/Right): Between StepMania 0.64 and 0.9 - (ddr-single4) (17 October 2001) 8 Key (Up/Down/Left/Right-Up/Down/Left/Right): Between StepMania 0.64 and 0.9 - (ddr-double4) (20 November 2001) Main BMS styles:\n5 Key (LW/LB/CW/RB/RW/Scratch): First Seen:\nStepMania v3.0 beta 6 - (BM-Single) (1 January 2003) StepMania v3.0.2 - (BM-double) (28 October 2003) sm-ssc v1.2.5 - (beat-versus5) (11 May 2011) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) Replaced by:\nStepMania v3.0.2 - (single5) (25 September 2004) StepMania v3.0.2 - (double5) (25 September 2004) Replaced by:\nStepMania v4.0 CVS - (beat-single5) (7 October 2005) StepMania v4.0 CVS - (beat-double) (7 October 2005) Replaced by:\nsm-ssc v1.2.5 - - (beat-double5) (7 October 2005) 7 Key (FLW/LB/LW/CB/RW/RB/FLW/Scratch): First Seen:\nStepMania v3.0 beta 6 - (BM-Single) (1 January 2003) (Non-Functional) StepMania v3.0.2 - (BM-double7) (28 October 2003) sm-ssc v1.2.5 - (beat-versus7) (11 May 2011) Replaced by:\nStepMania v3.0.2 - (BM-single7) (28 October 2003) Replaced by:\nStepMania v3.0.2 - (single7) (25 September 2004) StepMania v3.0.2 - (double7) (25 September 2004) Replaced by:\nStepMania v4.0 CVS - (beat-single7) (7 October 2005) StepMania v4.0 CVS - (beat-double7) (7 October 2005) Replaced by:\nStepMania v4.0 CVS - (beat-single7) (7 October 2005) StepMania v4.0 CVS - (beat-double7) (7 October 2005) mode renamed to be-mu (12th December 2021) IIDX 5 and 7 Key (FLW/LB/LW/CB/RW/RB/FLW/Scratch): First Seen:\nStepMania v3.0.2 - (single7) (13 February 2004) StepMania v3.0.2 - (double7) (13 February 2004) StepMania v3.0.2 - (single5) (13 February 2004) StepMania v3.0.2 - (double5) (13 February 2004) StepMania v3.0.2 - (single5 (edit)) (13 February 2004) StepMania v3.0.2 - (double5 (edit)) (13 February 2004) Removed:\nStepMania v3.0.2 - (single7) (25 September 2004) StepMania v3.0.2 - (double7) (25 September 2004) StepMania v3.0.2 - (single5) (25 September 2004) StepMania v3.0.2 - (double5) (25 September 2004) StepMania v3.0.2 - (single5 (edit)) (25 September 2004) StepMania v3.0.2 - (double5 (edit)) (25 September 2004) This mode was merged back into the \u0026lsquo;bm\u0026rsquo; mode due to a duplication of styles. The IIDX side of the simulator was barely used, so it made sense to move towards the BMS specification which was more common at the time.\nSupported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script.\nThe table below lists the supported files and their types that be-mu supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms/.bme/.bml BMS be-mu 6k / 12k / 8k / 16k 5k+scratch / 7k+scratch be-mu charts .bms/.bme/.bml BMS be-mu 5k / 10k / 7k / 14k 5k / 7k be-mu charts without scratch (as of alpha 4.16) Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. There is a \u0026lsquo;scratch\u0026rsquo; lane designed to be a rotary controller, and 5 or 7 buttons which need to be pressed when the item reaches the receptor. This game mode cannot accidentally play po-mu charts any longer as that now is done via a different loader.\nMechanics key sounded\nThe notes in this mode are based off of small clips of audio that react when you press a key. This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for be-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\n#TOTAL can edit the gauge, and this is a new feature to Project OutFox, as our health bar system was inherited by StepMania so needed a rewrite and new code implemented.\nModding Charting Controls The game is played best on a controller. It uses a jog wheel \u0026lsquo;scratch\u0026rsquo; and two rows of keys diagonally aligned (almost like a piano style), with 2 black 3 white for 5k, and 3 black 4 white for 7k.\nThe player uses a combination of button presses to pass the songs, often using a wrist movement to trigger the \u0026lsquo;scratch\u0026rsquo; support. OutFox supports the arcade style and home console controllers out there, and several players have reported success playing the game on a MIDI DJ controller. Since 4.15.1 with the Up/Down jogwheel support, this mode is even more playable.\nThe original PSX/PS2 era controllers can be unusually difficult to use, so be mindful if they stick or are a bit stiff, they likely need a good service and clean.\nTrivia BMS charts originally were used for DDR and SOLO mapping in 1999 for dance style simulations, and had some obscure channel mapping long since lost to the known world - (no-one uses this older methodology anymore). However, the notes-loaders can still load the common layouts, when the BMS load was expanded, it was decided to keep this legacy in the code. This functionality was broken for a short time in alpha 4.12 and restored in 4.15 due to Squirrel making an oopsie.\nbe-mu once incorporated loading all of the BMS type charts, including PMS, this unfortunately caused a lot of charts to break and not load correctly in older builds of SM5 so this behaviour was removed.\nThe old kb7 mode used a custom channel methodology built into BMS in the early SSC builds. This behaviour was also maintained in the rewrite so those old charts work, however the mode style is different in Project OutFox now.\nAlthough the original spec of BMS supported mines, these were not implemented in older builds of SM5. This support has been added in Project OutFox.\nThe BMS format has spawned many derived formats, with many of these slowly being supported in the game.\nWritten and Maintained with ♡ by Squirrel\n","description":"be-mu seven key long note game-play, default legacy theme\nbe-mu seven key mine game-play, default legacy theme\nAbout History: This mode started life as a notes loader for obscure dance charts created in 1998, with 4 key and 6 key being supported. 4k doubles seemed to appear around 2000, before being replaced completely with MSD/DWI around the same time. The loader has been present for a very long time in the games history, not adding actual BMS support until 2003."},{"id":93,"href":"/user-guide/games/bongo/","title":"Game Module: bongo","parent":"Supported Game Modules","content":" About It parses files made for taitai into a lane mode to play on a bongo based controller, or bongo based midi controller. One must hit the left or right bongo drum when it reaches the receptor, or clap your hands when the star appears. Scoring and timing windows are yet to be decided.\nHistory: The parser support for the mode is currently actively developed, and the chart support will be aligned with the taiko simulator based parser support. We can parse .osu/.osz (Mode 1 taiko) and .tja files, although some of the scroll and time signature math needs to be concluded. As of alpha 4.18 the parsers are about 60% complete.\nIntroduced: Bongo (LeftDrum, RightDrum, clap): First Seen:\nProject OutFox LTS 4.18.0 / alpha 5.0.0-pre21 - (bongo-single) (26th October 2022) Project OutFox LTS 4.18.0 / alpha 5.0.0-pre21 - (bongo-versus) (26th October 2022) This mode is parser specific. It will only load and parse items designed for taitai.\nThe table below lists the supported files and their types that bongo supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .osu OTO taitai single Mode 1 only (60% complete), (Mode 0 support coming soon!) .tja TJA taitai single Work in progress, about 60% complete. Gameplay Mechanics drum rolls\nYou will need to ensure you hit the long note at least once for it to count!\nmines\nThese notes should be avoided, as they will damage your life gauge\nbig notes\nAre notes that require you to hit the both edges of the left bongo drum at the same time if it is blue, or both sides of the right bongo if it is red. These notes can be hit with one tap, but you will not get the full bonus. Hitting with one tap will not drop your combo.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls There are also notes which need to be hit a certain amount within a set time.\nTrivia It is the second horizontal scroll game we support in Project OutFox.\nWritten and Maintained with ♡ by Squirrel\n","description":"About It parses files made for taitai into a lane mode to play on a bongo based controller, or bongo based midi controller. One must hit the left or right bongo drum when it reaches the receptor, or clap your hands when the star appears. Scoring and timing windows are yet to be decided.\nHistory: The parser support for the mode is currently actively developed, and the chart support will be aligned with the taiko simulator based parser support."},{"id":94,"href":"/user-guide/games/dance/","title":"Game Module: dance","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: This history does not include the original years before the project was announced and given to the community. If you know of any builds or information missing, do let us know! you can find some of these earlier builds at the archive here https://josevarela.net/SMArchive/Builds/\n4 Panel (Up/Down/Left/Right): First Seen:\nDDR PC Edition m1 - (single) (21 August 2001) DDR PC Edition m1 - (double) (21 August 2001) Replaced by:\nBetween StepMania 0.64 and 0.9 - (single4) (17 October 2001) Between StepMania 0.64 and 0.9 - (versus4) (20 November 2001) Between StepMania 0.64 and 0.9 - (double4) (20 November 2001) StepMania v3.0 beta 6 - (dance-edit-couple) (17 August 2002) StepMania v4.0 CVS - (routine) (17 June 2006) Replaced by:\nStepMania 1.64 - (single) (19 March 2002) StepMania 1.64 - (versus) (19 March 2002) StepMania 1.64 - (double) (19 March 2002) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-single) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-versus) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-double) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-couple) (27 May 2002) Replaced by:\nStepMania v3.0 beta 6 - (DDR Single) (6 September 2002) StepMania v3.0 beta 6 - (DDR Versus) (6 September 2002) StepMania v3.0 beta 6 - (DDR Double) (6 September 2002) StepMania v3.0 beta 6 - (DDR Couple) (6 September 2002) StepMania v3.0 beta 6 - (DDR Couple) (6 September 2002) (Note: Edit Couple) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (couple) (15 September 2002) StepMania v3.0 beta 6 - (couple (edit only)) (15 September 2002) Replaced by: (dance-)\nStepMania v4.0 CVS - (single) (15 September 2002) StepMania v4.0 CVS - (versus) (15 September 2002) StepMania v4.0 CVS - (double) (15 September 2002) StepMania v4.0 CVS - (couple) (15 September 2002) StepMania v4.0 CVS - (couple (edit only)) (15 September 2002) StepMania v4.0 CVS - (routine) (17 June 2006) 6 Panel Up/Down/Left/Right/UpLeft/UpRight: First Seen:\nDDR PC Edition m1 - (solo6) (21 August 2001) Replaced by:\nStepMania 0.94 - (single6) (20 November 2001) Replaced by:\nStepMania 1.64 - (solo) (19 March 2002) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-solo) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (dance-solo-versus) (27 May 2002) Replaced by:\nStepMania v3.0 beta 6 - (DDR Solo) (6 September 2002) StepMania v3.0 beta 6 - (dance-solo-versus) (6 September 2002) This style was commented out for removal Replaced by:\nProject OutFox alpha 4.13.0 - (solo-double) (31 January 2022) Project OutFox alpha 4.13.0 - (solo-versus) (31 January 2022) 3 Panel Left/Right/Down Arrangement: First Seen:\nStepMania v4.0 SVN - (three) (15 February 2010) Replaced by:\nsm-ssc v1.0 beta 3 - (threepanel) (2 May 2010) Replaced by:\n3 Panel UpLeft/UpRight/Down Arrangement: First Seen:\nStepMania 5.2 - (threepanel) (circa 2015) Project OutFox alpha 4.2.0 - (threepanel) (5 February 2020) Project OutFox alpha 4.13.0 - (threepanel-double) (31 January 2022) Project OutFox alpha 4.13.0 - (threepanel-versus) (31 January 2022) Supported Parser Types: This mode is parser agnostic. It will load 4k charts from a variety of formats.\nThe table below lists the supported files and their types that dance supports, their panel/key value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms BMS dance 4k / 6k / 8k 4k dance / 6k dance / 4k dance doubles in be-mu charts .dwi DWI dance 4k / 6K legacy dance with intensity charts .sm/.ssc SM dance 3k / 4k / 6k / 8k 3k dance / 4k dance / 6k dance / 4k dance doubles Project OutFox added double and versus modes to solo and threepanel at the beginning of 2022 due to community request and demand. These charts will not parse on legacy builds of StepMania.\nGameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: This history does not include the original years before the project was announced and given to the community. If you know of any builds or information missing, do let us know! you can find some of these earlier builds at the archive here https://josevarela."},{"id":95,"href":"/user-guide/games/ds3ddx/","title":"Game Module: ds3ddx","parent":"Supported Game Modules","content":"\n3ddx single game-play, default legacy theme 3ddx double game-play, default legacy theme About This mode simulates the game play from the Korean game Dance Station 3DDX which was released in the summer of 2000. The machine was designed with 2 dance pads in front of the cabinet which contained 4 depressible areas in the corners, alongside infra-red sensors which the player would need to wave hands over to count as a \u0026lsquo;hit\u0026rsquo; in the up down left right areas of the pad. This meant that the game contained 8 hit options. Unlike other dance games of the time, this cabinet did not have a bar to allow more \u0026lsquo;freestyle\u0026rsquo; dancing.\nThe game was only released in the arcade, and was revived by the Chinese company EZ2Dancer in 2004 for the Asian markets, renaming the game to Dance Master Super Station Arcade 3DDX and once again re-releasing it with a new interface and user experience under the title Ez5 Dancer.\nThere are 5 releases based on forks of 3DDX in China, 3DDX-DSS, 3DDX-DSS2 (also known as Super China), 3DDX-DSS3, 3DDX-DSS4 and 3DDX-DSS5, The last release for this series was 2011, and cabinets are still for sale.\nIn 2014, a new revision was released in China called Dance Master Super Station (also known as E5 Online). This game added a 5th panel, making it more like a Pump it Up clone with the cardinal sensors. This game is still massively popular in the Chinese dancing communities and with the sheer number of cabinets made, some say it is the most popular game being played in China at this time. The game uses a mostly Chinese audience focussed music collection, with several being \u0026lsquo;borrowed\u0026rsquo; from o2jam, k-pop and other rhythm games.\nDance Master Super Station has a very wide selection of chart types, targeting the complete range of player levels, with the harder options almost having no hand sensor options, as they tend to mess up the flow of the chart. Many of the charts are brought in from other games, and some do not include any hands at all, following more the Pump style of play.\nIntroduced: 4 Panel 4 Sensor: First Seen:\nStepMania v3.0 final - (single) (28th December 2002) Project OutFox alpha 4.13.0 - (double) (31 January 2022) Project OutFox alpha 4.13.0 - (versus) (31 January 2022) 5 Panel 4 Sensor: First Seen:\nProject OutFox alpha 4.15.0 - (single) (12th June 2022) Project OutFox alpha 4.15.0 - (double) (12th June 2022) Project OutFox alpha 4.15.0 - (versus) (12th June 2022) This mode is parser specific. It will only load and parse items designed for ds3ddx including pump. It will also autogenerate charts based on the pump game mode automatically, though the extended features are not available yet.\nThe table below lists the supported files and their types that ds3ddx supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .ssc SSC ds3ddx 4k / 8k 4k and 4k doubles ds3ddx charts .ssc SSC dance 4k / 8k 4k and 4k doubles dance charts .ssc PIU pump 5k / 10k 5k and 5k doubles pump (v0.81) charts Gameplay The game is played in a total of 8 directions, with 4 being for the legs, (the oblique corner areas on the pad) and 4 sensors for the hands (the cardinal directions). There were two types of cabinet produced, some with sensors in the pad area itself, and the other with sensors above the player akin to Para Para Paradise.\nThe game was designed to allow a lot of freestyle movement and provided the opportunity for a good workout while playing. The game screen featured a wider than normal note field with arrows and sensors moving up to receptors. The colours of the oblique arrows mirrors that of Pump it Up using red for the top arrows and blue for the bottom arrows, with the sensor based hand arrows are yellow for up and down (again following the Pump style), with left and right being green. The centre panel on a lot of the earlier cabinets was inactive, and just used for a place for the player to place their feet.\nE5 Online added the yellow centre button which sits under the up and down hand receptors in the note field. This is one of the reasons a lot of the harder charts do not use those hands, as sometimes it has harder to see in a stream of notes. Many of the charts used in early PIU games were commonly used on this game, and the mechanics of later pump games were \u0026lsquo;borrowed\u0026rsquo; for the 5 panel mode. Support for this will be added in a later Project OutFox release.\nMechanics pump holds\nThere is a special system for how pump holds are judged, which is different to dance or smx. These holds can be picked up and regained on a loss.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase combo per tick.\nfree-style\nA lot of the charts made for this mode do not make use of the sensors, or encourage full body movement to complement a workout style way of playing the game. This is extremely popular in Chinese Arcades.\nsensors\nThis mode uses PIR or photo sensors to measure a movement passing by them or for checking a movement has been met.\nPlay Styles Single - This style is played on 4 or 5 panels and 4 sensors for hands.\nDual - This style is played on 8 or 10 panels and 8 sensors for hands, across 2 single player areas.\nGrading / Accuracy The original 3DDX as released borrowed the accuracy rating from DDR 1st using (Perfect, Great, Boo and Miss), with the revived version of the game using the Pump style of accuracy (Perfect, Great, Good and Miss).\nThe timing windows for this grading system is very similar to the one used in the game TechnoMotion. There is very little information on the later games based on the E5 Online system.\nIf you have any information on this system, do reach out to us!\nScoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel, with thanks to community member MKNK for the detailed information on the Chinese Versions.\n","description":"3ddx single game-play, default legacy theme 3ddx double game-play, default legacy theme About This mode simulates the game play from the Korean game Dance Station 3DDX which was released in the summer of 2000. The machine was designed with 2 dance pads in front of the cabinet which contained 4 depressible areas in the corners, alongside infra-red sensors which the player would need to wave hands over to count as a \u0026lsquo;hit\u0026rsquo; in the up down left right areas of the pad."},{"id":96,"href":"/user-guide/games/ez2d/","title":"Game Module: ez2d","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpperLeftHand/UpperRightHand/LowerLeftHand/LowerRightHand): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-single) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-double) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-real) (20 June 2002) StepMania v3.0 beta 1 - (ez2-single-versus) (8 July 2002) StepMania v3.0 beta 1 - (ez2-real-versus) (8 July 2002) StepMania v3.0 beta 4 - (ez2-single-hard) (22 July 2002) StepMania v3.0 beta 4 - (ez2-single-hard-versus) (22 July 2002) Replaced by:\nStepMania v3.0 beta 6 - (EZ2 Single) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 SingleHard) (6 September 2002) StepMania v3.0 beta 6 - (EZ2Double) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 Real) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 Versus) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 VersusHard) (6 September 2002) StepMania v3.0 beta 6 - (EZ2 VersusReal) (6 September 2002) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (singleHard) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (real) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (versusHard) (15 September 2002) StepMania v3.0 beta 6 - (versusReal) (15 September 2002) Removed:\nStepMania v3.0 beta 6 - (singleHard) (29 September 2002) StepMania v3.0 beta 6 - (versusHard) (29 September 2002) Renamed:\nOutFox Alpha 4.10.0 - (ez2d) (23 September 2021) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpperLeftHand/UpperRightHand/LowerLeftHand/LowerRightHand): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-single) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-double) (20 June 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (ez2-real) (20 June 2002) StepMania v3.0 beta 1 - (ez2-single-versus) (8 July 2002) StepMania v3."},{"id":97,"href":"/user-guide/games/gddm/","title":"Game Module: gddm","parent":"Supported Game Modules","content":"\nEarly GDDM playback, default legacy theme\nAbout History: This mode was added in Project OutFox. It was added to provide users with a 5/9/10 lane drum mode that works on Linux and Mac OS.\nWhen added, players could use the auto-gen system to test it out, and there was noticeable lag on Windows due to the sound drivers. This was resolved in Alpha 4.12, when we rewrote the MIDI input system. This mode mirrors the keysounded options of be-mu and po-mu and will take a little time loading your songs due to the nature of mapping and ensuring smooth playback.\nThis mode is best played on MIDI drums due to the superior lower latency, as well as no input overhead.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6.0 - \u0026quot;gddm-new\u0026quot; (19 Jun 2020) (9 lane style simulating DrumMania play) OutFox Alpha 4.6.0 - \u0026quot;gddm-old\u0026quot; (19 Jun 2020) (5 lane style simulating BandJam/old Gitadora play) OutFox Alpha 4.9.9HF - \u0026quot;gddm-real\u0026quot; (July 26 2021) (10 lane style) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the DTX Mania series of simulations, which itself is based off of BMS, but is not channel compatible with it.\nThe table below lists the supported files and their types that gddm supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .gda GDA gddm 5 piece drum parser based on the \u0026lsquo;gda\u0026rsquo; era up until around 2011 .g2a GDA gddm 5 piece drum parser based on the \u0026lsquo;gda\u0026rsquo; era up until around 2011 .dtx DTX gddm 5 / 9 / 10 piece drum parser based on the rewritten \u0026lsquo;dtx\u0026rsquo; era, mostly used for DTXMania Gameplay This mode is played default in down scroll, with the animated notes indicating which piece of the drum set to hit at the moment as it hits the base line at the bottom of the screen. Most columns are drawn to make it easier to read for the player, as well as this mode has \u0026lsquo;superseded lanes\u0026rsquo;. This means that there are two types of notes in one column.\nThis mode is typically played using a midi enabled electronic drum kit and hit like a normal drum kit.\nThis mode has default \u0026lsquo;fail at song end\u0026rsquo; as it allows the player to continue to practice as needed to get a better grip of the song being played.\ngddm is a single player game, and is usually played in a wide area of space because of the size needed for the drum kit and pedals, swinging range of arms etc.\nMechanics key sounded\nkey sounded notes exist in this mode! This means drum pieces you hit will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for gddm charts!\nfail at end\nfail at end is set by default, so you can look at accuracy and playback over stopping and restarting continuously if you \u0026lsquo;fail\u0026rsquo; like other modes.\nPlay Styles Grading / Accuracy Scoring Health Bar The concept of a health bar is not used within this mode, the player is scored on accuracy and judgement timings. Combo is included, but not something most players care about.\nModding Charting Controls The easiest way to play this mode is with MIDI enabled electronic drums. The new cross platform MIDI drivers added to Project OutFox made setting this up a breeze, and allowed for better response times and a more stable playing experience.\nThere is a MIDI guide here on this wiki, which explains in detail how to set up controllers better for this mode.\nWe have had reports that the rb drum kit can be set up to work within the 5 piece version of this mode, however, as it uses a different input system, you may experience latency (a slight delay from when you hit the drum to it being recognised) which could affect your ability to play. You can adjust your offsets for this, however if you can play via MIDI is recommended.\nTrivia This game mode was added to the engine as a \u0026lsquo;why not?\u0026rsquo; joke between the main developers of Project OutFox. When the community noticed it existed then there was a demand for a parser and proper support. It led to the creation of the GDA/DTX parser, and 2 new cross platform MIDI drivers being added to the engine, as well as 2 previously undiscovered sound bugs being fixed.\nA keysound in this mode is called a \u0026lsquo;chip\u0026rsquo;.\nThis mode needed \u0026lsquo;hidden lane\u0026rsquo; support. That is, two different note lanes occupying the same column. It is a special feature of OutFox.\nThis mode simulates DTXMania, as there is more content for that simulator, and it follows a practice. There are many forks of this project, so we spent some time with the community working out the features to add/discard from OutFox.\nThe parser for this mode inherits a lot of the functionality of the BMS extended set, so OutFox by nature has a wider optional set of features due to this. One can also use PMS, or any other of the BMS derived parser features. We do not recommend this option if you want to keep your charts compatible with the orginal DTXMania of course!\nWritten and Maintained with ♡ by Squirrel, with thanks to the DTXMania community; APPROVED, np_sub and Furukon.\n","description":"Early GDDM playback, default legacy theme\nAbout History: This mode was added in Project OutFox. It was added to provide users with a 5/9/10 lane drum mode that works on Linux and Mac OS.\nWhen added, players could use the auto-gen system to test it out, and there was noticeable lag on Windows due to the sound drivers. This was resolved in Alpha 4.12, when we rewrote the MIDI input system."},{"id":98,"href":"/user-guide/games/gdgf/","title":"Game Module: gdgf","parent":"Supported Game Modules","content":" About History: This mode was added in Project OutFox. It started as the \u0026ldquo;guitar\u0026rdquo; mode, before the \u0026ldquo;gh\u0026rdquo; mode existed. Around the time the \u0026ldquo;gh\u0026rdquo; mode came into being, this mode was renamed to \u0026ldquo;gdgf\u0026rdquo;, which is the current name.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6 RC2 - \u0026quot;Guitar5\u0026quot; (21 June 2020, The game is known as \u0026ldquo;Guitar\u0026rdquo; at this point) OutFox Alpha 4.6 RC2 - \u0026quot;Versus5\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Guitar3\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus3\u0026quot; (21 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Bass6\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus6\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Bass4\u0026quot; (22 June 2020) OutFox Alpha 4.6 RC2 - \u0026quot;Versus4\u0026quot; (22 June 2020) OutFox Alpha 4.9.7.2 - \u0026quot;guitar-six (12 march 2021, the game is renamed to \u0026ldquo;GDGF\u0026rdquo; at this point) OutFox Alpha 4.9.7.2 - \u0026quot;guitar-versus-six (12 march 2021) Replaced with:\nOutFox Alpha 4.6.0 - \u0026quot;guitar-five\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-five\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;guitar-three\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-three\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;bass-six\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-six\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;bass-four\u0026quot; (24 June 2020) OutFox Alpha 4.6.0 - \u0026quot;versus-four\u0026quot; (24 June 2020) Replaced with:\nOutFox Alpha 4.10 - \u0026quot;five-fret\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;five-fret-versus\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;three-fret\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;three-fret-versus\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;six-fret (8 September 2021) OutFox Alpha 4.10 - \u0026quot;six-fret-versus (8 September 2021) Removed\nOutFox Alpha 4.10 - \u0026quot;bass-six\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;versus-six\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;bass-four\u0026quot; (8 September 2021) OutFox Alpha 4.10 - \u0026quot;versus-four\u0026quot; (8 September 2021) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in Project OutFox. It started as the \u0026ldquo;guitar\u0026rdquo; mode, before the \u0026ldquo;gh\u0026rdquo; mode existed. Around the time the \u0026ldquo;gh\u0026rdquo; mode came into being, this mode was renamed to \u0026ldquo;gdgf\u0026rdquo;, which is the current name.\nThis mode is selectable in the game select screen.\nIntroduced: First Seen:\nOutFox Alpha 4.6 RC2 - \u0026quot;Guitar5\u0026quot; (21 June 2020, The game is known as \u0026ldquo;Guitar\u0026rdquo; at this point) OutFox Alpha 4."},{"id":99,"href":"/user-guide/games/gh/","title":"Game Module: gh","parent":"Supported Game Modules","content":" About History: This mode was originally created to simulate a popular game using a guitar shaped controller. It was added in StepMania 4, however work to finish it was not completed. It was rewritten and added back in Project OutFox in Spring 2021.\nIntroduced (StepMania 4): 5 Key: First Seen:\nStepMania v4.0 CVS - (guitar-five) (23 September 2006) (Non-Functional) Removed\nStepMania v5.0 preview 2 - (guitar-five) (30 July 2011) (sm-ssc v2.1) The mode was removed completely, along with the note types and midi loader support. The fact the mode was only partially working with no wail support, and that there had been no further work completed to solve those issues sounded the end of this mode in mainline SM.\nIntroduced (Project OutFox): 5 Key: First Seen:\nProject OutFox alpha 4.9.7.2 - (solo) (12 March 2021) Project OutFox alpha 4.9.7.2 - (versus) (12 March 2021) Project OutFox alpha 4.9.7.2 - (group) (12 March 2021) (Non-Functional) Project OutFox alpha 4.9.7.2 - (backup) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup-versus) (26 March 2021) Replaced by:\nProject OutFox alpha 4.9.7.2 - (solo-versus) (26 March 2021) (renamed from versus) 6 Key: First Seen:\nProject OutFox alpha 4.9.7.2 - (solo6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (group6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup6) (12 March 2021) Project OutFox alpha 4.9.7.2 - (backup-versus6) (26 March 2021) Replaced by:\nProject OutFox alpha 4.9.7.2 - (solo-versus6) (26 March 2021) (renamed from group6) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the gh series of simulations.\nThe table below lists the supported files and their types that gh supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .chart CHART gh easy/normal/pro parser based on the \u0026lsquo;gh\u0026rsquo; era up until around 2014. .midi MIDI gh easy/normal/normal5/pro Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was originally created to simulate a popular game using a guitar shaped controller. It was added in StepMania 4, however work to finish it was not completed. It was rewritten and added back in Project OutFox in Spring 2021.\nIntroduced (StepMania 4): 5 Key: First Seen:\nStepMania v4.0 CVS - (guitar-five) (23 September 2006) (Non-Functional) Removed\nStepMania v5.0 preview 2 - (guitar-five) (30 July 2011) (sm-ssc v2."},{"id":100,"href":"/user-guide/games/karaoke/","title":"Game Module: karaoke","parent":"Supported Game Modules","content":" This mode will be added in a future release of alpha 5 of Project OutFox. About History: There was a lot of code produced by Chris Danford for this mode back in 2008, that went seemingly completely unused until it\u0026rsquo;s removal 2 years later. OutFox will use more modern techniques that what was written at the time, and we will restore the vision of the engine having a karaoke mode once again.\nThe parser support for the mode (txt) is currently in development as it requires a new parser system to be written from scratch. .xml files may be supported in the future depending on community demand.\nOutFox has no plans to support the legacy #RELATIVE:YES files that were written in the late 2000s, as these seem to be not used anymore by the wider community.\nThis mode is not selectable in the game select screen at the moment as it is not on any public builds.\nIntroduced: Song Grid MIDI note style: First Seen:\nStepMania v4.0 CVS - (karaoke) (12 Mar 2008) (Non-Functional) Removed\nsm-ssc v1.0 RC2 - (karaoke) (20 August 2010) 1 Song Grid: First Seen:\nProject OutFox alpha 5.0.0 - (karaoke) TBC Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the UltraStar TXT format(txt).\nThe table below lists the supported files and their types that karaoke supports, their key/button value and the original mode the parser is used for (if any). We can look at other formats in time.\nFile Type Label Original Mode Key Values Supported Notes .txt TXT karaoke 1 grid / duet grid Solo / Duet Charts Game play This mode is played default in a left to right side scroll, where a singer needs to sing at the designated pitch to mark the \u0026lsquo;word segments\u0026rsquo; complete and score points. Depending on demand, the mode will auto adjust the octave the singer\u0026rsquo;s range is within, in case of songs with high or low notes. Ping Squirrel about this if you want it added to the game!\nMechanics lyric snippets\nThe notes in this mode are based off of small syllables of words that make up the lyrics of the song. Depending on the sung notes, the \u0026lsquo;completion\u0026rsquo; of the syllable will be good or bad depending on pitch achieved and length of the syllable.\npitch detection\nThe system that simulators use is to measure the sung sound based on pitch, rather than the direct words. This allows for folks that do not fully know a song to hum the chorus or that troublesome second verse that is always forgotten!\ngolden notes\nThese \u0026rsquo;notes\u0026rsquo; are sung to gain points and bonuses through the song as it\u0026rsquo;s played.\nPlay Styles Grading / Accuracy Scoring Health Bar There is no main functioning life bar in the basic karaoke mode. Other systems later on will use one, but that\u0026rsquo;s in the future.\nModding Charting Controls This mode uses a microphone.\nTrivia Written and Maintained with ♡ by Squirrel\n","description":"This mode will be added in a future release of alpha 5 of Project OutFox. About History: There was a lot of code produced by Chris Danford for this mode back in 2008, that went seemingly completely unused until it\u0026rsquo;s removal 2 years later. OutFox will use more modern techniques that what was written at the time, and we will restore the vision of the engine having a karaoke mode once again."},{"id":101,"href":"/user-guide/games/kbm/","title":"Game Module: kbm","parent":"Supported Game Modules","content":" This mode will be added around alpha 4.19.0/alpha 5.0.0-pre45-ish of Project OutFox. About This mode parses files made in the bmson format, and usually is arranged into a two octave keyboard layout, sporting 24 keys in a piano style layout. This mode also supports 4 octave mode, or 48 keys. It is Highly recommended that this mode is played on a MIDI controller, or if you can find one, an original keyboardmania Playstation 2 controller from the early 2000s\nHistory: The parser support for the mode (bmson) is currently in development as it requires a new parser system to be initialised and set up for this type of chart.\nThis mode is not selectable in the game select screen at the moment.\nIntroduced: 24 Key 2 Octave: First Seen:\nProject OutFox alpha 4.18.0 - (kbm24-single) (November 2022) Project OutFox alpha 4.18.0 - (kbm24-versus) (November 2022) 48 Key 4 Octave: First Seen:\nProject OutFox alpha 4.18.0 - (kbm48-single) (November 2022) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script JSON (bmson).\nThe table below lists the supported files and their types that kbm supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bmson BMSON kbm 24k / 48k 2 Octave / 4 Octave kbm charts Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. The player then hits the piano notes depending on how they fall.\nMechanics key sounded\nThe notes in this mode are based off of small clips of audio that react when you press a key. This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for be-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\nModding Charting Controls The game is played best on a MIDI piano or mini-keyboard controller.\nThe original PSX/PS2 era controllers can be unusually difficult to use, so be mindful if they stick or are a bit stiff, they likely need a good service and clean.\nTrivia bmson is based on a rewrite of the BMS format, but with an attempt to make it easier to make/parse for creators.\nWritten and Maintained with ♡ by Squirrel\n","description":"This mode will be added around alpha 4.19.0/alpha 5.0.0-pre45-ish of Project OutFox. About This mode parses files made in the bmson format, and usually is arranged into a two octave keyboard layout, sporting 24 keys in a piano style layout. This mode also supports 4 octave mode, or 48 keys. It is Highly recommended that this mode is played on a MIDI controller, or if you can find one, an original keyboardmania Playstation 2 controller from the early 2000s"},{"id":102,"href":"/user-guide/games/kbx/","title":"Game Module: kbx","parent":"Supported Game Modules","content":"\nkb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: The mode (kb7) was added in StepMania 4 CVS. It was designed to be a keyboard based mode using 7 keys (6 normal keys and the spacebar) and was requested by the community, as an alternative to the dance only focus at the time, with a view of providing keyboard players a better streamlined experience in the engine.\nkb7-small was a modded version of the mode, with a much smaller \u0026lsquo;space bar\u0026rsquo; or middle button so the notefield was easier to read. This made it more popular than the standard wide mode, and due to this, it replaced the original kb7-single as the mode in Project OutFox.\nIn the final release of 2021, Project OutFox 4.12 replaced the original mode completely with a new rewritten version which allowed players to use a differing number of lanes, ranging from 1 to 15 in total. It also created a newer streamlined version of the system to give a small performance boost to this mode. Community member MDR has contributed some ideas to this mode.\nNicknamed Key Button eXtreme it has become a quite popular option for those who wish to trial/learn charts or just play in a slightly more efficient sandbox for other modes.\nDue to the observations of community members Tarben and Yuki, this mode did not effectively support all of the expanded \u0026lsquo;doubles\u0026rsquo; support of be-mu 7\u0026rsquo;s (so 16k) and techno 18k / po-mu 18k. These charts were not being made available in a suitable playable format for this mode. kb16, kb17, kb18 and kb19 were added in the spring alpha release of alpha 4.14 at the end of March 2022.\nThis mode is still being developed, so feedback and suggestion is welcome!\nIntroduced: 7 Key: First Seen:\nStepMania v4.0 CVS - (kb7-single) (30 May 2008) StepMania v5.0 alpha 3 - (kb7-small) (21 November 2012) Replaced by:\nsm-ssc v1.0 beta 3 - (single) (28 June 2010) Removed\nProject OutFox alpha4.6.0 - (single) (23 June 2020) Replaced by: (kb7-small -\u0026gt; kb7-single)\nProject OutFox alpha4.6.0 - (single) (23 June 2020) Replaced by:\nProject OutFox alpha4.12.0 - kb7-single (31 December 2021) 1 Key: First Seen:\nProject OutFox alpha4.12.0 - kb1-single (31 December 2021) 2 Key: First Seen:\nProject OutFox alpha4.12.0 - kb2-single (31 December 2021) 3 Key: First Seen:\nProject OutFox alpha4.12.0 - kb3-single (31 December 2021) 4 Key: First Seen:\nProject OutFox alpha4.12.0 - kb4-single (31 December 2021) 5 Key: First Seen:\nProject OutFox alpha4.12.0 - kb5-single (31 December 2021) 6 Key: First Seen:\nProject OutFox alpha4.12.0 - kb6-single (31 December 2021) 8 Key: First Seen:\nProject OutFox alpha4.12.0 - kb8-single (31 December 2021) 9 Key: First Seen:\nProject OutFox alpha4.12.0 - kb9-single (31 December 2021) 10 Key: First Seen:\nProject OutFox alpha4.12.0 - kb10-single (31 December 2021) 11 Key: First Seen:\nProject OutFox alpha4.12.0 - kb11-single (31 December 2021) 12 Key: First Seen:\nProject OutFox alpha4.12.0 - kb12-single (31 December 2021) 13 Key: First Seen:\nProject OutFox alpha4.12.0 - kb13-single (31 December 2021) 14 Key: First Seen:\nProject OutFox alpha4.12.0 - kb14-single (31 December 2021) 15 Key: First Seen:\nProject OutFox alpha4.12.0 - kb15-single (31 December 2021) 16 Key: First Seen:\nProject OutFox alpha4.14.0 - kb16-single (27 March 2022) 17 Key: First Seen:\nProject OutFox alpha4.14.0 - kb17-single (27 March 2022) 18 Key: First Seen:\nProject OutFox alpha4.14.0 - kb18-single (27 March 2022) 19 Key: First Seen:\nProject OutFox alpha4.14.0 - kb19-single (27 March 2022) Supported Parser Types: This mode is parser agnostic. It will happily load and parse items for you without hassle. It will do one-to-one parsing however! If you wish to do conversions to a specific key/button amount that will be a feature in a future update.\nThe table below lists the supported files and their types that kbx supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms/.bme/.bml BMS be-mu 6k / 12k / 8k / 16k 5k+scratch / 7k+scratch be-mu charts .bms BMS dance 4k / 6k 4k dance / 6k dance in be-mu charts .chart CHART gh 6k 5 lane clone hero guitar charts with open notes .dwi DWI dance 4k legacy dance with intensity charts .gda/.g2a/.dtx DTX gddm 6k / 9k / 10k 6/9/10 piece DTXMania drum charts .gda/.dtx DTX gdgf 4k / 7k 3 lane / 5 lane DTXMania guitar charts with wailing notes .mid MIDI gh 6k 5 lane clone hero guitar charts with open notes .osu/.osz OTO kbx 3 - 10k charts created in the game osu for the mode \u0026lsquo;mania\u0026rsquo; - OSZ files are the compressed charts .osu/.osz OTO taiko 1k charts created in the game osu for the mode \u0026rsquo;taiko\u0026rsquo; - OSZ files are the compressed charts .pms/.bme PMS po-mu 3k / 4k / 5k / 7k / 9k / 18k po-mu charts .qua/.qp QUA kbx 4k / 7k charts created in the game quaver - QP files are the compressed charts .sm/.ssc SM dance / pump / para / techno / smx / ds3ddx / maniax / ez2 3k / 4k / 5k / 6k / 8k / 9k / 10k / 12k / 16k / 18k main format of stepmania covering a lot of game types and lanes .tja TJA taitai 1k taikojira charts This mode needs no autogen to be configured! There is a setting in the preferences that enables or disables the pre-caching when the game loads.\nGame play This mode is played default in down scroll, with the note receptors at the bottom of the screen. The mode has several different noteskins available to it, with some of them reflecting the currently mapped button to the lane you need to press when the note hits the receptor.\nMechanics lift holds\nYou will need to lift at the end of each long note in time, or you will be judged a miss. You can turn it off in the modifier menu.\nanti-mash\nThis is enabled to prevent button spam on some of the difficult charts, and the game will judge you as a miss and will break combo.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase combo per tick.\nanything loaded\nIn this mode, as it is able to read almost everything the game supports.\ndisabled mods\nThis setting exists in this mode, as this mode is aimed to be better optimised for better playback. Mod files will play, but without any gimmick or effects. If a file/chart uses any FGCHANGES for movies or backgrounds, they too will sometimes fail to play.\nKey Mapping: The default mapping for this mode is as follows: Please bear in mind, the button layout still needs work!\nkb1 = space kb2 = f j kb3 = f space j kb4 = d f j k kb5 = d f space j k kb6 = s d f j k l kb7 = s d f space j k l kb8 = a s d f j k l ; kb9 = a s d space f j k l ; kb10 = a w s d f j k l p ; kb11 = a w s d f space j k l p ; kb12 = a w s d r f j i k l p ; kb13 = a w s d r f space j i k l p ; kb14 = a w s e d r f j i k o l p ; kb15 = a w s e d r f space j i k o l p ; kb16 = q a w s e d r f j i k o l p ; [ kb17 = q a w s e d r f space j i k o l p ; [ kb18 = caps q a w s e d r f j i k o l p ; [ \u0026#39; kb19 = caps q a w s e d r f space j i k o l p ; [ \u0026#39; Play Styles Grading / Accuracy Scoring Health Bar Modding No Modding is available in this mode.\nCharting Controls Trivia The legacy kb7 mode initially started life with 6 columns, but this was changed to include the spacebar when the SSC builds began.\nAlthough the name for this mode is kbx it was decided to not use the SSC era title of 'keyboard X' where X is the number of keys used, because this mode can be played on any device.\nThere was a completed theme for the legacy kb7 mode exclusive to SM4/SSC 1.x made by the SSC team, but it was never released.\nWritten and Maintained with ♡ by Squirrel\n","description":"kb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: The mode (kb7) was added in StepMania 4 CVS. It was designed to be a keyboard based mode using 7 keys (6 normal keys and the spacebar) and was requested by the community, as an alternative to the dance only focus at the time, with a view of providing keyboard players a better streamlined experience in the engine."},{"id":103,"href":"/user-guide/games/kickbox/","title":"Game Module: kickbox","parent":"Supported Game Modules","content":"\nkb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: This mode was added in StepMania 5. It was designed to be a fitness based punch and kick mode commissioned by a member of the community.\nIt has always been considered obscure, but it does have a functioning autogen system, and is functional again from Project OutFox 4.10.0.\nYou need to ensure you click the \u0026lsquo;use SM5 noteskins\u0026rsquo; on the windows installer to allow yourself access to this mode if you are using Project OutFox.\nIntroduced: First Seen:\nStepMania v5.0 beta 4a - (kickbox-human) (4 Dec 2014) (2 Punch/2 Kick) StepMania v5.0 beta 4a - (kickbox-quadarm) (4 Dec 2014) (4 Punch) StepMania v5.0 beta 4a - (kickbox-insect) (4 Dec 2014) (4 punch/2 kick) StepMania v5.0 beta 4a - (kickbox-arachnid) (4 Dec 2014) (4 punch/4 kick) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"kb4 game-play, default legacy theme kb6 game-play, default legacy theme About History: This mode was added in StepMania 5. It was designed to be a fitness based punch and kick mode commissioned by a member of the community.\nIt has always been considered obscure, but it does have a functioning autogen system, and is functional again from Project OutFox 4.10.0.\nYou need to ensure you click the \u0026lsquo;use SM5 noteskins\u0026rsquo; on the windows installer to allow yourself access to this mode if you are using Project OutFox."},{"id":104,"href":"/user-guide/games/maniax/","title":"Game Module: maniax","parent":"Supported Game Modules","content":" About History: This mode was added in 3.0.2, starting off life as a keyboard mode. There were several styles added later on. The sensors were called either Hand Upper or Hand Lower\nIntroduced: 4 Sensor (HUL/HUR/HLL/HLR): First Seen:\nStepMania v3.0.2 - (single) (3 September 2003) StepMania v3.0.2 - (double) (3 September 2003) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in 3.0.2, starting off life as a keyboard mode. There were several styles added later on. The sensors were called either Hand Upper or Hand Lower\nIntroduced: 4 Sensor (HUL/HUR/HLL/HLR): First Seen:\nStepMania v3.0.2 - (single) (3 September 2003) StepMania v3.0.2 - (double) (3 September 2003) Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel"},{"id":105,"href":"/user-guide/games/para/","title":"Game Module: para","parent":"Supported Game Modules","content":" About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpLeft/UpRight/Up/Left/Right): First Seen:\nStepMania v3.0 beta 6 - (Para Single) (7th September 2002) StepMania v3.0.2 - (para-versus) (10th July 2004) Project OutFox alpha 4.9.7.3 - (double) (April 4 2021) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) 8 Panel (UpLeft/UpRight/Up/Left/Right/BackRight/Back/BackLeft): First Seen:\nProject OutFox alpha 4.9.9HF - (single-eight) (April 30 2021) Gameplay The game is played with sensors on the floor representing a half circle. The genre for the content was predominantly EuroBeat and featured moves from the scene that were to be replicated from dances or arrows placed on the screen. The player then has to wave their arms over the sensors to complete the movements matching the routine in time to the music. Project OutFox fully supports the PS2/Dreamcast Para controller on a cross platform environment as of 4.12.0, allowing anyone able to play our game access to the controller for the complete experience.\nThe sensors used primarily PIR tech and were bright pink (PS2) or green (DC) in colour, and had adjustments for length and height of the player for better accuracy.\nThe game received several quality of life updates in the beginnings of the project, and the hold system was fixed to be more accurate to how the actual game played on both the console and arcade versions.\nMechanics para holds\nThe official games allowed a player to wave a hand over the sensor before the hold begins to allow them to catch the hold and not be penalised for the \u0026lsquo;wave\u0026rsquo; effect which would happen on a dance based game. The head triggers if the sensor detects a hand in place.\npump holds\nThere is a special system for how pump holds are judged, which is different to dance or smx. These holds can be picked up and regained on a loss.\ntick holds\nThese hold types are active on this mode, completely holding a long note will increase score per tick.\nfree-style\nA lot of the charts made for this mode do not make use of the sensors, or encourage full body movement to complement a workout style way of playing the game.\nmines\nThese notes should be avoided, as they will damage your life gauge. They are supported, but extremely rare to see in para mode.\nsensors\nThis mode uses PIR or photo sensors to measure a movement passing by them or for checking a movement has been met.\nwhat combo?\nThe original para games worked more on the replication of the dance moves and the enjoyment of playing rather than displaying a combo or \u0026lsquo;accuracy\u0026rsquo; score at the end of the song. Project OutFox supports either methodology, as the console builds did have some combo/hit accuracy included in the evaluation, and it is purely up to the themer/creator to add this or just have the score for optional enjoyment.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Setting up the Para controller is different depending on the operating system you are using. We will be working with the Pink PlayStation 2 controller in this guide, as it is much much more common and we have yet to have anyone ask about the DC version.\nBefore you start Project OutFox, you must make sure you have laid out the controller on the floor, within a suitable distance from your screen, and away from any shelving or things which could be knocked off from swinging arms, ensure good clearance as well from the second player, as you do not want to be hitting each other as you play the game!\nThe example above shows a two-player layout at a convention from 2010, with the PS2 game running on it\u0026rsquo;s actual hardware. For the first time Project OutFox now supports up to 4 simultaneous controllers, (though more than 2 player is not available yet!). It is recommended to use the provided template to place on the floor so the controllers are correctly spaced and you are aware of the space required.\nPlug in the controller(s) into a spare USB slot on your computer, or the dock of the Mac/Steam Deck once you are happy with your placement.\nYou need to run the game once to generate the file we will be editing to set up the controller.\nRun the game as per your Operating system and then find the /Save/Preferences.ini file, that usually is edited for your specific choices. In the future we won\u0026rsquo;t need to do this step, but for now, we rely on it to configure things.\nYou MUST always plug in the controllers BEFORE running the game! This is because the hardware was designed for the PS2, and needs a special routine in the code to function correctly, and this is done as the game starts up!\nThe following controls are only available on Alpha V 041 or later (May 2023) Scroll down the preferences file until you find the section that begins with Input and set up your system as follows depending on your operating system:\nWindows: 7+\nInputDrivers=para,legacy,minisdl InputSetArcade=0 InputSetDInput=1 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=0 Linux: (Desktop - Arch/Ubuntu/Debian etc)\nInputDrivers=para,SDL InputSetArcade=0 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Linux: (Steam Deck)\nInputDrivers=para,SDL InputSetArcade=1 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Linux: (Raspberry Pi / RockPi / Arm Generic)\nInputDrivers=para,SDL InputSetArcade=0 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 MacOS\nInputDrivers=para,SDL InputSetArcade=1 InputSetDInput=0 InputSetHIDAPI=0 InputSetJSDeadzoneValue=3200 InputSetLinuxJSEndpoint=0 InputSetRAWAPI=0 InputSetXInput=1 Please Note: If you are running a hardened version of Linux (SELinux/Gentoo/Some Arch variants), OutFox may not set up and initialise your controller automatically. If so you probably have restrictive udev rules for unknown input devices. Quit OutFox and try placing the following udev rule in /etc/udev/rules.d (in a file such as 70-ppp.rules):\nKERNEL==\u0026quot;hidraw*\u0026quot;, ATTRS{idVendor}==\u0026quot;0507\u0026quot;, ATTRS{idProduct}==\u0026quot;0011\u0026quot;, TAG+=\u0026quot;uaccess\u0026quot;\nNote that the file name must come before 73-seat-late.rules, as this is where uaccess is applied.\nThanks to @Tatsh and @TheNathannator for contributing this information The Para Driver will be set up to init automatically from Alpha V pre-041, so you do not need to change anything else in the system for this.\nFor calibrating and setup, we recommend watching the video from our friends at EKS-D ParaMania, which have provided a great tutorial here: https://www.youtube.com/watch?v=u-cpsnGrFXQ\nTrivia The old official Konami controller used to have a bug on non Windows based systems until alpha 4.12.0 which prevented the device waking up correctly on those systems.\nAlthough Project OutFox has had two player support for some time, it has only recently been able to utilise two controllers being plugged in at once. You will need to wait until Alpha V 041 is available to use this feature, it is NOT available on Alpha 4 / LTS 4.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from the very beginning of the history of the StepMania project, having several different tweaks and fixes done throughout the years.\nIntroduced: 5 Panel (UpLeft/UpRight/Up/Left/Right): First Seen:\nStepMania v3.0 beta 6 - (Para Single) (7th September 2002) StepMania v3.0.2 - (para-versus) (10th July 2004) Project OutFox alpha 4.9.7.3 - (double) (April 4 2021) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) 8 Panel (UpLeft/UpRight/Up/Left/Right/BackRight/Back/BackLeft): First Seen:"},{"id":106,"href":"/user-guide/games/pomu/","title":"Game Module: po-mu","parent":"Supported Game Modules","content":" po-mu nine playback, bun noteskin, default legacy theme\nAbout History: This mode was added in version 3.0.2. There was no support for the associated loaders at this time, nor any theme or scoring updates. Po-mu was rendered accidentally broken during the CVS era of development on StepMania 4 (January 2007), where it was not restored until Project OutFox Alpha 4.9.8 (25th April 2021) with a new notesloader and rewritten internal code.\nThis mode has been around for a very long time, but has not really had any support or been looked at since before 2010. It was side-lined into the BMS loader, which actually broke a lot of the needed changes PMS actually uses, and as a result most PMS files with 7 or 9 lanes, would be added to the game as be-mu 10 lane or 14 lane charts. It was known there were issues with this mode, but we were not aware it was broken as bad as it was.\nSquirrel would like to thank the anonymous japanese player we\u0026rsquo;ll name \u0026ldquo;竹 (Take)\u0026rdquo; girl, for reporting this bug, who wanted to play Nitro\u0026rsquo;s PMS chart of the song on OutFox, but experienced the issue above, and there were also issues with how the keysounds were being loaded for this song in po-mu mode and she took the time to give a very detailed report, but deleted her account before we could see her username. I thank you a lot for the report, and if you ever read this, please come and say hi in our discord!\nWe took the time to investigate it and it was decided to code a new modernised PMS loader to the game, which now correctly loads PMS songs as they should be. This also removes the oddity and edge crashes when anyone wished to play po-mu mode on OutFox. This song, \u0026lsquo;竹\u0026rsquo; (Bamboo) charted by Nitro was used as a testbed to debug and ensure it properly works correctly in the game, so we took time to fix it so it would be recognised as a 9 Button PMS file. I\u0026rsquo;d like to thank Nitro for charting this as we would never have had the report which meant we could fix 13 year old bugs on our PMS and BMS loaders, and to 竹 girl for taking the time to bring it to our attention so we could fix this properly and have a restored mode. You can find the author of the song at https://twitter.com/NitroX72 - Thanks again Nitro!\nIntroduced: 3 Key (LW/LY/LG): First Seen:\nProject OutFox alpha 4.9.8 - (popn-three) (17 April 2021) Project OutFox alpha 4.9.9HF - (popn-three-versus) (27 April 2021) 4 Key (Red/Blue/Yellow/Green): First Seen:\nProject OutFox alpha 4.9.8 - (popn-four) (17 April 2021) Project OutFox alpha 4.9.9HF - (popn-four-versus) (27 April 2021) 5 Key (LG/LB/Red/RB/RG): First Seen:\nStepMania v3.0.2 - (pnm-five) (7 October 2003) Project OutFox alpha 4.9.9HF - (popn-five-versus) (27 April 2021) Replaced by:\nStepMania v4.0 CVS - (popn-five) (7 October 2005) 7 Key (LY/LG/LB/Red/RB/RG/RY): First Seen:\nProject OutFox alpha 4.6 RC2 - (popn-seven) (23 June 2020) Project OutFox alpha 4.9.9HF - (popn-seven-versus) (27 April 2021) 9 Key (LW/LY/LG/LB/Red/RB/RG/RY/RW): First Seen:\nStepMania v3.0.2 - (pnm-nine) (7 October 2003) Project OutFox alpha 4.9.9HF - (popn-nine-versus) (27 April 2021) Replaced by:\nStepMania v4.0 CVS - (popn-nine) (7 October 2005) mode renamed to po-mu (12th December 2021) 18 Key (LW/LY/LG/LB/Red/RB/RG/RY/RW-LW/LY/LG/LB/Red/RB/RG/RY/RW): First Seen:\nProject OutFox alpha 4.9.9HF - (popn-eighteen) (27 April 2021) There was no parser support, and charts were mostly autogenerated from other modes. It was mostly abandoned until the end of 2021 when the mode was renamed.\nReplaced by:\nProject OutFox alpha 4.14.0 - (pomu-nine-double) (25 March 2022) Supported Parser Types: This mode is parser specific. It will only load and parse items designed for the BeMusic Script.\nThe table below lists the supported files and their types that po-mu supports, their key/button value and the original mode the parser is used for (if any). 18K and full player 2 channel width was added in alpha 4.14.0 so the main support for all chart types is now complete.\nFile Type Label Original Mode Key Values Supported Notes .bme BMS be-mu 5k / 7k / 9k / 18k po-mu in BMS Extended files .pms PMS po-mu 3k / 4k / 5k / 7k / 9k / 18k po-mu charts Game play This mode is played default in down scroll, with the note receptors at the bottom of the screen. There is a selection of different coloured lanes that match a set colour on a large controller. The mode has been extended to support the obscure/rare modes that were charted and these have a slightly different colour layout to the standard 9 key mode. The little notes fall down to be pressed when the item reaches the receptor. This game mode can still play po-mu charts in BME/BML files, which was a common practice up until around 2014. Play is usually on a dome based button controller, layed out in a 4 top 5 bottom button arrangement.\npo-mu also supports 2 player mode on Project OutFox as this was a missing feature from all simulations from the past and was highly requested by the community.\nMechanics key sounded\nkey sounded notes exist in this mode! This means buttons you press will add to the song being played. Similarly there can be percussion and other sound effects added to these. Due to the nature of key sounded charts, they take longer to load and compile than other charts, so do not be surprised if you see a \u0026rsquo;loading screen\u0026rsquo; for po-mu charts!\nPlay Styles Grading / Accuracy Scoring Health Bar The \u0026ldquo;health bar\u0026rdquo; in this mode is called a \u0026lsquo;gauge\u0026rsquo;. It is a measure of accuracy as well as your \u0026rsquo;life\u0026rsquo;. Depending on the difficulty you need to achieve a specific percentage to pass a song.\n#TOTAL can edit the gauge, and this is a new feature to Project OutFox, as our health bar system was inherited by StepMania so needed a rewrite and new code implemented.\nModding Charting Controls While playable on keyboard, this mode really comes alive when played with a 9 button dome controller. The Arcade style ones can be up to 3 feet / 91cm wide, and provide a really good base for passing the higher level charts. The only mode which can be troublesome is 4 button, as this uses a slightly different mapping.\nTwo player po-mu is a new feature for our simulator, and is still experimental. Let us know if there are any issues if you find any!\nTrivia When this game mode was added in 2003, it actually supported all 9 buttons available on the controller, Yet no 3/4/5 or 7 button mode was created.\nThis mode has been \u0026lsquo;broken\u0026rsquo; the longest in the game\u0026rsquo;s (StepMania\u0026rsquo;s) history. Due to the lack of users, no-one reported any bugs until development began on the new BMS loader during the Project OutFox era. An anonymous Japanese player reported a series of bugs and then this mode was properly restored and is now very playable.\npo-mu 3 button was broken due to a channel issue as Squirrel misread the Japanese documentation on PMS so they did not play properly. This was fixed in March 2022.\nPMS began life as a piano format, and when the project sadly faded away, it was adopted for po-mu charts around 2004-5. 5 or 7 key charts need to be in their PMS file to not accidentally be parsed by simulators as 5K BMS.\n18K po-mu was a design by a simulator in the early 2010s, and still is in use today. Support for it was heavily requested, so it has been added as of 4.14.0.\nThe mode has several special background layers that need to have the code finished when the new theme is complete. BGA MISS, BGA Layer 2 and BGA Layer 3 are now in game, but not activated as of 4.15.1. The side effect of these layers is that they can be exposed to the other game modes for special effects too.\nWritten and Maintained with ♡ by Squirrel\n","description":"po-mu nine playback, bun noteskin, default legacy theme\nAbout History: This mode was added in version 3.0.2. There was no support for the associated loaders at this time, nor any theme or scoring updates. Po-mu was rendered accidentally broken during the CVS era of development on StepMania 4 (January 2007), where it was not restored until Project OutFox Alpha 4.9.8 (25th April 2021) with a new notesloader and rewritten internal code."},{"id":107,"href":"/user-guide/games/pump/","title":"Game Module: pump","parent":"Supported Game Modules","content":" About History: This mode was added from very early on in the 3.0 development cycle. Since then, it has benefitted from having several different tweaks and fixes done throughout the years. In the SSC era of development, pump was actually set as the default (main) game mode for a while, but it has since moved to the second on the game select option. There have been several forks and adaptations of this mode since the sm-ssc 1.2 version into targeted game versions with this mode being the only one available.\nIn Project OutFox, it was decided to add another game mode based on the simulation of this game, due to the differences between the era this mode is based on, and how a lot of the newer community play the game. When this mode is added, it will be listed here as piu.\nIntroduced: 5 Panel (UpLeft/UpRight/Centre/DownLeft/DownRight): First Seen:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (single) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-versus) (27 May 2002) StepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-double) (28 May 2002) StepMania v3.0 beta 6 - (pump-couple) (23 August 2002) StepMania v4.0 alpha 5 - (routine) (25 January 2010) Replaced by:\nStepMania v3.0 \u0026ldquo;compatibility test\u0026rdquo; - (pump-single) (14 June 2002) Replaced by:\nStepMania v3.0 beta 6 - (Pump Single) (6 September 2002) StepMania v3.0 beta 6 - (Pump Versus) (6 September 2002) StepMania v3.0 beta 6 - (Pump Double) (6 September 2002) StepMania v3.0 beta 6 - (Pump Couple) (6 September 2002) Replaced by:\nStepMania v3.0 beta 6 - (single) (15 September 2002) StepMania v3.0 beta 6 - (versus) (15 September 2002) StepMania v3.0 beta 6 - (double) (15 September 2002) StepMania v3.0 beta 6 - (couple) (15 September 2002) StepMania v3.0 beta 6 - (couple (edit only)) (15 September 2002) 6 Panel (UpLeft/UpRight/Centre/DownLeft/DownRight/Centre (2 Pads)): First Seen:\nStepMania v3.0.2 - (halfdouble) (22 May 2003) This mode is parser specific. It will only load and parse items designed for pump including SF2 charts.\nThere is a special version number of the ssc format that other forks used which is set to 0.81. Project OutFox parses these special charts along a different code path than to dance charts, so that the extra effects/quirks from this era can be contained. If you have a chart which does not seem to function, always check the #VERSION value and see if it needs to be changed.\nThe parser support for the 0.81 version branch is being actively developed to add support for the extra note types and effects, with a view of making the system for charting/designing the charts in the future more simpler and easier to use.\nThe table below lists the supported files and their types that pump supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .ssc PIU pump 5k / 10k 6k half doubles, 5k, 5k doubles pump (v0.81) charts .ksf KSF pump 5k / 10k 5k and 5k doubles pump charts Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added from very early on in the 3.0 development cycle. Since then, it has benefitted from having several different tweaks and fixes done throughout the years. In the SSC era of development, pump was actually set as the default (main) game mode for a while, but it has since moved to the second on the game select option. There have been several forks and adaptations of this mode since the sm-ssc 1."},{"id":108,"href":"/user-guide/games/rb/","title":"Game Module: rb","parent":"Supported Game Modules","content":" About History: This mode supports the drum layouts added to the console guitar games of the late 2000s. Following support that was added for the guitar modes back in 2004 it was possible that support for drums was a potential option in the future, although looking within the codebase we have been unable to find any evidence the mode was planned.\nThis mode was heavily requested after full midi notes loader support was added for the gh mode, and as of writing only midi charts with drums will load in Outfox.\nIt began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): rbdrums: First Seen:\nFoxMania 1b - (rbdrums-normal) (10 April 2018) FoxMania 1b - (rbdrums-pro) (10 April 2018) Lost Introduced (Project OutFox): rb: First Seen:\nProject OutFox alpha 5.0.0-pre042 - (rb-easy) (5 August 2023) Project OutFox alpha 5.0.0-pre042 - (rb-normal) (5 August 2023) Project OutFox alpha 5.0.0-pre042 - (rb-pro) (5 August 2023) Those of you that are paying attention will know that there is no rb-easy mode normally. This mode is for those that have original kits and the notoriously fragile kick pedal that\u0026rsquo;s broken. It is simply the 4 drum layout with the kicks removed.\ngh-drums: First Seen:\nProject OutFox alpha 5.0.0-pre042 - (rb-normal5) (10 August 2023) With there being several different instrument layouts supported within the .midi spec for the simulation, support for gh-drums were added and titled normal5 on 10th August 2023.\nSupported Parser Types: This mode is parser specific. It will only load and parse items designed for the gh or rb series of simulations.\nThe table below lists the supported files and their types that rb supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .chart CHART gh easy/normal/pro parser based on the \u0026lsquo;gh\u0026rsquo; era up until around 2014. .midi MIDI gh easy/normal/normal5/pro Gameplay Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Due to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode supports the drum layouts added to the console guitar games of the late 2000s. Following support that was added for the guitar modes back in 2004 it was possible that support for drums was a potential option in the future, although looking within the codebase we have been unable to find any evidence the mode was planned.\nThis mode was heavily requested after full midi notes loader support was added for the gh mode, and as of writing only midi charts with drums will load in Outfox."},{"id":109,"href":"/user-guide/games/smx/","title":"Game Module: smx","parent":"Supported Game Modules","content":"\nsmx songs in music wheel, default theme smx game-play, default legacy theme About: History: This mode was re-added towards the end of the alpha 4 development cycle of Project OutFox at the end of 2021. It is a simulation of the game StepManiaX by StepRevolution, and was created with their blessing. It began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): 5 Sensor (L/U/C/R/D): First Seen:\nFoxMania 1b - (single) (10 April 2018) FoxMania 1b - (double6) (10 April 2018) FoxMania 1b - (double10) (10 April 2018) FoxMania 1b - (couple) (10 April 2018) FoxMania 1b - (routine) (10 April 2018) Lost Introduced (Project OutFox): 5 Sensor (L/U/C/R/D): First Seen:\nProject OutFox alpha 4.11.0 - (single) (12 December 2021) Project OutFox alpha 4.11.0 - (double6) (12 December 2021) Project OutFox alpha 4.11.0 - (double10) (12 December 2021) Project OutFox alpha 4.11.0 - (couple) (12 December 2021) (disabled) Project OutFox alpha 4.11.0 - (routine) (12 December 2021) (disabled) Game-play Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia This game module will not support the special timing methodology that is used in the arcade version due to a limitation in the software, and will not support any official \u0026lsquo;data\u0026rsquo; from the sim-files used in the original game.\nDue to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"smx songs in music wheel, default theme smx game-play, default legacy theme About: History: This mode was re-added towards the end of the alpha 4 development cycle of Project OutFox at the end of 2021. It is a simulation of the game StepManiaX by StepRevolution, and was created with their blessing. It began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): 5 Sensor (L/U/C/R/D): First Seen:"},{"id":110,"href":"/user-guide/games/stepstage/","title":"Game Module: stepstage","parent":"Supported Game Modules","content":"\nstepstage game-play, default legacy theme About: History: This mode was added towards the end of the alpha 4 development cycle of Project OutFox at the beginning of 2022. It is a simulation of the game Stepping Stage by Jaleco, released in 2000, featuring 6 panels on 2 columns, with a top middle and bottom pad layout in a hexagon.\nIntroduced: 6 Panel (LTRed/LMBlue/LLYellow/RTRed/RMBlue/RLYellow): First Seen:\nProject OutFox alpha 4.13.0 - (single) (28 January 2022) Project OutFox alpha 4.13.0 - (single-versus) (28 January 2022) Project OutFox alpha 4.13.0 - (twin) (28 January 2022) Project OutFox alpha 4.13.0 - (twin-versus) (28 January 2022) Game-play Play Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia Written and Maintained with ♡ by Squirrel\n","description":"stepstage game-play, default legacy theme About: History: This mode was added towards the end of the alpha 4 development cycle of Project OutFox at the beginning of 2022. It is a simulation of the game Stepping Stage by Jaleco, released in 2000, featuring 6 panels on 2 columns, with a top middle and bottom pad layout in a hexagon.\nIntroduced: 6 Panel (LTRed/LMBlue/LLYellow/RTRed/RMBlue/RLYellow): First Seen:\nProject OutFox alpha 4.13.0 - (single) (28 January 2022) Project OutFox alpha 4."},{"id":111,"href":"/user-guide/games/taiko/","title":"Game Module: taitai","parent":"Supported Game Modules","content":" About History: This mode was re-added in alpha 4.9.9HF of Project OutFox. In its\u0026rsquo; original form, it was a five-column mode with each note type having its\u0026rsquo; own column. Later, within the same alpha (July 11 2021), it was redone to have the notes be different note types instead of notes in columns, with only one column being needed.\nIn this mode the parser support for the mode is being actively developed, and the chart support will be aligned with other taiko based simulators to provide parity and coherence for the community. We can parse .osu/.osz (Mode 1 taiko) and .tja files, although some of the scroll and time signature math needs to be concluded. As of alpha 4.15 the parsers are about 60% complete.\nThis mode is selectable in the game select screen.\nIt began life on our original base development back in 2018, when the project was codenamed FoxMania.\nIntroduced (FoxMania): Drum (LeftOuter, LeftInner, RightInner, RightOuter): First Seen:\nFoxMania 1c - (taitai-single) (15 April 2018) Lost Introduced (Project OutFox): Drum (LeftOuter, LeftInner, RightInner, RightOuter): First Seen:\nProject OutFox alpha 4.9.9HF - (taitai-single) (30 May 2021) Project OutFox alpha 4.9.9HF - (taitai-versus) (30 May 2021) This mode is parser specific. It will only load and parse items designed for taitai.\nThe table below lists the supported files and their types that taitai supports, their key/button value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .osu OTO taitai single Mode 1 only (60% complete), (Mode 0 support coming soon!) .tja TJA taitai single Work in progress, about 60% complete. Gameplay Mechanics drum rolls\nYou will need to ensure you hit the yellow long note at least once for it to count!\nballoons\nThis is a new type of \u0026lsquo;hold\u0026rsquo; for Project OutFox that needs to be hit the number of times shown on the screen for it to be burst and you gain a points increase.\nmines\nThese notes should be avoided, as they will damage your life gauge\nbig notes\nAre notes that require you to hit the edge of the drum (katsu) on both sides at the same time if it is blue, or either side of the inner drum at the same time if it is red. These notes can be hit with one stick, but you will not get the full bonus. Hitting with one stick will not drop your combo.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls This game can be played as a 4K layout, or on a drum based controller. There were several home based console drum controllers, as well as proper arcade style ones.\nThe drums normally have 4 sections; a outer left, inner left (up until the centre of the drum, down the middle) inner right, and outer right.\nThe inner notes are often red or orange coloured, with the outer being blue. The smaller orange or blue notes can be hit by one of their respective sides, and the large notes should be hit by both the outer for big blue, or both the inner for big red. Hitting the big notes with 1 side gives half the points.\nThere are also drum rolls which allow the user to hit the drum to gain score if they hit the yellow \u0026lsquo;hold\u0026rsquo; as much as possible.\nThere are also notes which need to be hit a certain amount within a set time.\nTrivia It is the first horizontal scroll game we support in Project OutFox.\nThis mode also introduced the concept of \u0026lsquo;count holds\u0026rsquo;. This is effectively to set how the counted hit notes (balloons) are measured and scored.\nThis mode introduced the concept of a non-tick/non-beat based roll hold, which needed a lot of new code added to Outfox to implement.\nThis mode had a prototype back in FoxMania in the early days of the project (Pre Alpha 1).\nDue to a massive corruption issue on the gitlab server that hosted our work, we lost several months of development time, and had to restart the project when we were still using the FoxMania codename. The version written back then does not reflect the current implementation, so it has to be considered replaced.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was re-added in alpha 4.9.9HF of Project OutFox. In its\u0026rsquo; original form, it was a five-column mode with each note type having its\u0026rsquo; own column. Later, within the same alpha (July 11 2021), it was redone to have the notes be different note types instead of notes in columns, with only one column being needed.\nIn this mode the parser support for the mode is being actively developed, and the chart support will be aligned with other taiko based simulators to provide parity and coherence for the community."},{"id":112,"href":"/user-guide/games/techno/","title":"Game Module: techno","parent":"Supported Game Modules","content":" About History: This mode was added in the 3.0.2, with the first mode being 8 panel. Like most modes from this period, there were not many theme items or specifics in scoring or timing windows at all. It was rendered almost unplayable due to the rapid code changes of the time, and was fixed in the side fork of 3.9.5 around spring 2004.\nIn the development of SM 4.0, this mode was broken with the rapid changes brought into the game and was then fixed again by Team SSC in StepMania 5 Preview 4 aroun 2010, restoring doubles and noteskin support.\nI have not added the fixes/tweaks done to this mode in the history that were added to the OutFox codebase; though much was done to include the 9 panel support requested by a lot of the community.\nThis mode can happily play most charts for dance and pump modes, as a lot of the chart styles were \u0026lsquo;borrowed\u0026rsquo;.\nIntroduced: 4 Panel (L/U/R/D): StepMania v3.0.2 - (single4) (25 July 2004) StepMania v3.0.2 - (versus4) (25 July 2004) StepMania v3.0.2 - (double4) (25 July 2004) 5 Panel (UL/UR/C/DR/DL) StepMania v3.0.2 - (single5) (25 July 2004) StepMania v3.0.2 - (versus5) (25 July 2004) StepMania v3.0.2 - (double5) (25 July 2004) 8 Panel (L/UL/UR/U/DL/DR/R/D): First Seen:\nStepMania v3.0.2 - (single8) (3 September 2003) StepMania v3.0.2 - (versus8) (7 June 2004) sm-ssc v1.2 - (double8) (9 January 2011) Replaced by:\nStepMania 3.9 CVS \u0026ldquo;random build\u0026rdquo; - (single8) (16 January 2005) Fixed to work once more 9 Panel (L/UL/UR/U/Center/DL/DR/R/D): First Seen:\nProject OutFox alpha 4.9.7.2 - (single9) (March 16 2021) Project OutFox alpha 4.9.7.2 - (versus9) (March 16 2021) Project OutFox alpha 4.9.7.2 - (double9) (March 16 2021) Supported Parser Types: This mode is parser agnostic. It will load 4/5/8/9k charts from a variety of formats.\nThe table below lists the supported files and their types that techno supports, their panel/key value and the original mode the parser is used for (if any).\nFile Type Label Original Mode Key Values Supported Notes .bms BMS dance 4k / 6k / 8k 4k dance / 6k dance / 4k dance doubles in be-mu charts .dwi DWI dance 4k legacy dance with intensity charts .sm/.ssc SM dance / techno 4k / 6k / 8k 4k dance / 6k dance / 8k (4k dance doubles) .sm/.ssc SM pump / techno 5k / 10k / 6k 5k dance / 10k (5k doubles)) / 6k halfdoubles .sm/.ssc SM techno 8k / 16k / 9k / 18k 8k techno / 16k (8k doubles) / 9k techno / 18k (9k doubles ) Gameplay This mode is played in upscroll by default, with arrows moving towards the receptor as per other VSRGs. The mode has a variety of different timing options, and it is a very versatile option for those wishing to experiment with different options or note layouts before moving them to dance or pump options later on.\nThis mode supports mods and gimmicks, and a wide base of chart formats to play.\nPlay Styles Grading / Accuracy Scoring Health Bar Modding Charting Controls Trivia When this game mode was added in 2003, it actually supported all 9 buttons available on the pad, Yet no 4/5 or 9 panel mode was created until later in development.\nThis mode was one of the first working custom modes outside of dance to be supported in the earlier versions of the engine.\nThis mode has a big following; we know of a lot of players that enjoy it\u0026rsquo;s freedom and versatility.\nWritten and Maintained with ♡ by Squirrel\n","description":"About History: This mode was added in the 3.0.2, with the first mode being 8 panel. Like most modes from this period, there were not many theme items or specifics in scoring or timing windows at all. It was rendered almost unplayable due to the rapid code changes of the time, and was fixed in the side fork of 3.9.5 around spring 2004.\nIn the development of SM 4.0, this mode was broken with the rapid changes brought into the game and was then fixed again by Team SSC in StepMania 5 Preview 4 aroun 2010, restoring doubles and noteskin support."},{"id":113,"href":"/user-guide/setup/getting-started/","title":"Getting started","parent":"Setup","content":"There are a few things you should do after installing Project OutFox.\nSome of these instructions assume usage of the included default theme (Soundwaves).\nSelecting a game type When launching Project OutFox for the first time (or without save data present), you will be prompted to select which game type you would like to begin with.\nProject OutFox supports a variety of game types, which simulate the button layouts and game mechanics of different types of rhythm games. Game types are further divided into styles, which are permutations such as alternate controller usage.\nThe most popular game type, dance, is placed at the top. If this is your first time playing OutFox, this is a straightforward and easy-to-understand game mode with plenty of content readily available for download.\nSongs that do not support the currently selected game mode will not display in the song list. Please ensure you are using the correct game mode for the content you are trying to play.\nTip: You can switch between game types at any time using the \u0026ldquo;Select Game\u0026rdquo; button on the main menu.\nInstall songs While Project OutFox does include a few sample songs, you will probably want to add more. We support a number of formats, including SM, SSC, SMA, DWI, BMS, DTX, .CHART, and KSF.\nThere are countless community resources for song packs. A great appetizer is our own project, OutFox Serenity.\nPlace downloaded songs into the Songs folder inside the game\u0026rsquo;s installation directory, or alternatively in the User folder.\n~/Library/Preferences/Project OutFox/ on macOS ~/.project-outfox/ on Linux %APPDATA%\\Project OutFox on Windows This folder is divided into Groups (also sometimes known as \u0026ldquo;packs\u0026rdquo;). Groups, in turn, contain folders for each song.\nHere is an example of how the folder structure would look for the song highlighted in the example screenshot.\nSongs │ └───Club Fantastic Season 1 (GROUP) │ │ │ └───COOL_EXCEPTION (SONG) │ │ │ │ COOL_EXCEPTION.ssc │ │ COOL_EXCEPTION.ogg │ │ COOL_EXCEPTION-bg.png │ │ COOL_EXCEPTION-bn.png │ │ COOL_EXCEPTION-jk.png Packs are typically distributed as ZIP files. Extract the archive with your preferred software, and copy the group folder containing the song directories to the Songs folder, matching the structure above.\nNote: If the songs do not appear, be sure to check that you have not accidentally nested your folders too deep inside a redundant folder. Note: If a song is not contained inside a group folder, but instead on the root Songs directory, the game will stop loading to let you know of the Song folder in question. Configuring your controls Project OutFox supports a wide variety of controllers and even arcade hardware. To configure your button mappings, go to Options \u0026gt; Input \u0026amp; Calibration \u0026gt; Config Key/Joy Mappings.\nUse the arrow keys to select an item to map, press Enter, and then press the button on the keyboard or controller you want to use. You can have multiple button assignments for each command.\nEach game type has its own default keyboard configuration. For example, dance maps the first player to the arrow keys. (when playing on keyboard, this is often referred to as the \u0026ldquo;index\u0026rdquo; playstyle).\nController not working? If your controller does not perform as well or function as expected, you can switch to the alternate XInput input mode from Options \u0026gt; Experimental Settings.\nXInput will sometimes also require you to map your controller to the input engine\u0026rsquo;s virtual gamepad, allowing the game to properly interface with the device.\nThis menu can be found at Options \u0026gt; Input \u0026amp; Calibration \u0026gt; Map Controller.\nCalibrate your audio sync In a rhythm game, timing is everything. But latency produced by your audio outputs can affect your accuracy. If you feel like the game is not judging your timing accurately, you can interactively adjust the audio offset.\nOptions \u0026gt; Input \u0026amp; Calibration \u0026gt; Calibrate Audio Sync\nA song will play with a pattern of alternating notes; in the dance game type, they will be left and right arrows.\nTap the notes based on what you HEAR, not what you SEE. This calibration will repeat continuously. Every 24 notes, your inputs will be used to calculate a new offset. Once you feel the judgment has been set correctly, press the Back button (mapped to Escape by default). It will ask you for confirmation in setting the new offset.\nAlternatively, if you wish to automatically calibrate in-game while playing your song of choice, you can press F6 twice during gameplay to enable AutoSync Machine, which will last until the end of the song or when exited with the Back button. A message will appear asking to confirm your changes.\nAudio Latency / ASIO If something still feels off, you might be playing a gamemode with keysounds, which means the user\u0026rsquo;s button inputs will trigger a sound when pressed.\nExamples of keysounded gamemodes: kbm, po-mu, be-mu\nAudio latency is a massive problem for these game modes, because there will be a delay between the user\u0026rsquo;s button press and the sound that is played. Merely calibrating the judgment window will not improve latency.\nOn Windows, it is strongly recommended to use an ASIO driver to ensure lowest possible latency. Mac and Linux users should already obtain low latency output without any special configuration.\nIf you are only interested in dance mode, you can ignore this section. ASIO provides no particular benefit for non-keysounded modes, if you have calibrated correctly. Windows does not include any ASIO drivers, because these are dependent on your specific audio hardware. Do not enable this unless you have an ASIO driver present on your system. To enable the ASIO driver in Outfox, edit your Preferences.ini (located in the Save folder) and set SoundDrivers to asio, like so:\nSoundDrivers=asio\nRealtek ASIO If your computer uses Realtek-based audio hardware, there is a native implementation of ASIO made by Realtek.\nFirst, install the official Realtek audio driver (this is NOT the Windows built-in driver). This is usually available from your motherboard\u0026rsquo;s driver download page. Reboot your computer after installing this driver, and before installing the ASIO module.\nRealtek ASIO Driver\nFL Studio ASIO If your audio hardware does not have a native ASIO implementation, FL Studio provides a wrapper that can \u0026ldquo;simulate\u0026rdquo; ASIO support and achieve lower latency, however this is not ideal as it is not a proper native implementation.\nThe free demo of FL Studio includes FL Studio ASIO. All other optional components can be un-checked. Do note that this requires installation of the full FL Studio software.\nNo license is required to utilize FL Studio ASIO.\nFL Studio\nCreate a profile By default, OutFox saves data to a global \u0026ldquo;machine profile\u0026rdquo;. However, there is certain data that will not persist between sessions, such as high scores and player settings.\nYou can manage profiles from Options \u0026gt; Profiles. From here you can create a profile, and edit existing profiles.\nFrom the profile editor (highlight a profile and press Start, and then select \u0026ldquo;Edit profile\u0026rdquo;), you can input fitness-related information, change the layout of the optional \u0026ldquo;Detailed Stats\u0026rdquo; pane during gameplay, and add an avatar to your profile (avatars are loaded from the Appearance/Avatars directory).\nNext steps The only thing left to do is have fun! If you need more help with Project OutFox, check out the other pages in our wiki documentation, and join other members of our community on our Discord server or forum.\nThank you for supporting Project OutFox!\n","description":"There are a few things you should do after installing Project OutFox.\nSome of these instructions assume usage of the included default theme (Soundwaves).\nSelecting a game type When launching Project OutFox for the first time (or without save data present), you will be prompted to select which game type you would like to begin with.\nProject OutFox supports a variety of game types, which simulate the button layouts and game mechanics of different types of rhythm games."},{"id":114,"href":"/dev/mods/Mods-11-ModSplines/","title":"ModSplines","parent":"Guide to Modifiers","content":"ModSplines is a system that allows for arbitrary note pathing through modifiers. This system is based off the spline system used in NotITG, which means it is usable alongside the pre-existing SM5 spline system and other modifiers, too.\nPoints are positioned like they are for Gradient modifiers, meaning in multiples of ARROW_SIZE away from the receptor.\nIn SM5, this is only accessible through the PlayerOptions functions, while NotITG has functions available in Player and also has modstring versions available (Though, it\u0026rsquo;s recommended to use the lua functions instead.)\nPoint and column numbering start at 1 in SM5, while it starts at 0 in NotITG.\nTo stop the current chain of spline points, a \u0026rsquo;null point\u0026rsquo; (Where both position and magnitude are at zero) can be used as a \u0026rsquo;null terminator\u0026rsquo; or sorts. This is only applicable for points after the first.\nThe following types are avaiable for modsplines (designated as \u0026lt;axis\u0026gt;):\nX (Positioning on the x axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE) Y (Positioning on the y axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE. The quirks of SpiralY apply here if holds or rolls are involved.) Z (Positioning on the z axis, affects receptors \u0026amp; notes. Works in multiples of ARROW_SIZE) RotX (Rotation on the x axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationX\u0026rdquo; in NotITG, but uses RotX for functions. Also affects hold heads in SM5 without extra mods needed.) RotY (Rotation on the y axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationY\u0026rdquo; in NotITG, but uses RotY for functions. Also affects hold heads in SM5 without extra mods needed.) RotZ (Rotation on the z axis, affects notes only. Works in radians. Known as \u0026ldquo;RotationZ\u0026rdquo; in NotITG, but uses RotZ for functions. Also affects hold heads in SM5 without extra mods needed.) Zoom (Zoom all three axis with the Mini calculations, affects receptors \u0026amp; notes. Known as \u0026ldquo;Size\u0026rdquo;, \u0026ldquo;Tiny\u0026rdquo; (Modstring only) or \u0026ldquo;Zoom\u0026rdquo; (Modstring only) in NotITG) SkewX (Aribtrary amounts of skewx, affects receptors \u0026amp; notes. Works like NoteSkewX. Known as \u0026ldquo;Skew\u0026rdquo; in NotITG) SkewY (Arbitrary amounts of skewy, affects receptors \u0026amp; notes. Works like NoteSkewY. Not available in NotITG v4.0) Stealth (Arbitrary amounts of stealth.) The limit is 40 points per axis per column.\nModSplineEnable Desc: This function turns on/off splines for the designated axis, allowing for saving performance when modsplines are not needed. In NotITG, this does not exist, as modsplines are always \u0026lsquo;on\u0026rsquo;.\nQuirks: This does not clear the modsplines themselves.\nPlayerOptions format: ModSpline(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;enable\u0026gt;)\nModSpline Desc: This function sets the spline point to have a given position and magnitude.\nQuirks: The position is not tweenable. Giving only three first three parameters returns the current value, position and rate for the point. Using this will not enable modsplines for the given axis. NotITG expects magnitudes and positions in multiples of 100, similar to what a modstring would parse.\nPlayerOptions format: ModSpline(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;column\u0026gt; (nil sets all columns), \u0026lt;point\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;position\u0026gt;, \u0026lt;approach rate\u0026gt;)\nNotITG Player format: Set\u0026lt;axis\u0026gt;Spline(\u0026lt;point\u0026gt;, \u0026lt;column\u0026gt; (-1 sets all columns), \u0026lt;magnitude\u0026gt;, \u0026lt;position\u0026gt;, \u0026lt;approach rate\u0026gt;)\nNotITG modstring format: spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;\u0026lt;point\u0026gt; for magnitude (omitting column hits all columns) \u0026amp; spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;offset\u0026lt;point\u0026gt; for position (omitting column hits all columns).\nModSplineTypeSetting Desc: This function sets what interpolation type the modsplines for a given axis will use.\nThe following types are available (denoted as \u0026lt;type\u0026gt;):\n\u0026lsquo;SplineType_Linear\u0026rsquo; (Linear interpolation, the default in both SM5 and NotITG) \u0026lsquo;SplineType_Cosine\u0026rsquo; (Cosine interpolation, magnitude must be between 0 and 100% in NotITG) \u0026lsquo;SplineType_Cubic\u0026rsquo; (Cubic bezier interpolation, magnitude must be over 100% in NotITG) Quirks: NotITG only has this available through modstrings, and affects all columns in both SM5 and NotITG.\nPlayerOptions format: ModSplineTypeSetting(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;, \u0026lt;type\u0026gt;) NotITG modstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; spline\u0026lt;axis\u0026gt;type\nModSplineReset Desc: This function resets all spline points for the given axis on all columns. NotITG allows for column-specific clearing through modstring, but not their functions.\nQuirks: Unlike a normal reset, this instantly resets the splines to zero by setting the approach rate to 100000.\nPlayerOptions format: ModSplineReset(\u0026lsquo;ModSplineAxis_\u0026lt;axis\u0026gt;\u0026rsquo;)\nNotITG Player format: Reset\u0026lt;axis\u0026gt;Splines()\nNotITG modstring format: spline\u0026lt;column\u0026gt;\u0026lt;axis\u0026gt;reset (omitting column hits all columns)\nPreserveModSplines Desc: When turned on, modsplines will no longer be cleared whenever \u0026ldquo;clearall\u0026rdquo; is passed into the modstring parser. Useful when working with ModSplines in modfile templates that use clearall.\nQuirks: N/A\nPlayerOptions format: PreserveModSplines(\u0026lt;enable\u0026gt;)\nNotITG Player format: NoClearSplines(\u0026lt;enable\u0026gt;)\nExample: SM5:\n--{point position, x magnitude (linear), z magnitude (cosine), rotz magnitude (cubic)} local splinetable = { {0.0, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}},--point 1 (placed at receptor) {1.5, {-1, 1, -1, 1}, {-1, 1, -1, 1}, {-math.pi/2, -math.pi/4, math.pi/4, math.pi/2}},--point 2 {3.0, { 2, 2, -2, -2}, { 3, 3, -3, -3}, { math.pi/2, math.pi/4, -math.pi/4, -math.pi/2}},--point 3 {4.5, {-3, -3, 3, 3}, {-3, -3, 3, 3}, { -math.pi, -math.pi/2, math.pi/2, math.pi}},--point 4 {6.0, { 4, -4, 4, -4}, { 1, -1, 1, -1}, { math.pi, math.pi/2, -math.pi/2, -math.pi}},--point 5 } for pn=1,2 do local a = po[pn] a:ModSplineEnable(\u0026#39;ModSplineAxis_X\u0026#39;, true, true)-- Enable the needed spline axis. :ModSplineEnable(\u0026#39;ModSplineAxis_Z\u0026#39;, true, true) :ModSplineEnable(\u0026#39;ModSplineAxis_RotZ\u0026#39;, true, true) :ModSplineTypeSetting(\u0026#39;ModSplineAxis_Z\u0026#39;, \u0026#39;ModSplineType_Cosine\u0026#39;, true)-- Set the desired interpolation types. :ModSplineTypeSetting(\u0026#39;ModSplineAxis_RotZ\u0026#39;, \u0026#39;ModSplineType_Cubic\u0026#39;, true) for i,v in ipairs(splinetable) do --v is the entry for a point. for col=1,4 do --Comment out the lines below as desired to see the splines on their own. --Note that all three at once may be too messy... --a:ModSpline(\u0026#39;ModSplineAxis_X\u0026#39;, col, i, v[2][col], v[1], 10000) a:ModSpline(\u0026#39;ModSplineAxis_Z\u0026#39;, col, i, v[3][col], v[1], 10000) a:ModSpline(\u0026#39;ModSplineAxis_RotZ\u0026#39;, col, i, v[4][col], v[1], 10000) end end end NotITG:\n--{point position, x magnitude (linear), z magnitude (cosine), rotz magnitude (cubic)} local splinetable = { {0.0, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}},--point 1 (placed at receptor) {1.5, {-1, 1, -1, 1}, {-1, 1, -1, 1}, {-math.pi/2, -math.pi/4, math.pi/4, math.pi/2}},--point 2 {3.0, { 2, 2, -2, -2}, { 3, 3, -3, -3}, { math.pi/2, math.pi/4, -math.pi/4, -math.pi/2}},--point 3 {4.5, {-3, -3, 3, 3}, {-3, -3, 3, 3}, { -math.pi, -math.pi/2, math.pi/2, math.pi}},--point 4 {6.0, { 4, -4, 4, -4}, { 1, -1, 1, -1}, { math.pi, math.pi/2, -math.pi/2, -math.pi}},--point 5 } for pn=1,2 do local a = SCREENMAN:GetTopScreen():GetChild(\u0026#39;PlayerP\u0026#39;..pn) GAMESTATE:ApplyModifiers(\u0026#39;*-1 100 splineztype, *-1 200 splinerotationztype\u0026#39;, pn) if a then for i,v in ipairs(splinetable) do --v is the entry for a point. for col=1,4 do --Comment out the lines below as desired to see the splines on their own. --Note that all three at once may be too messy... --a:SetXSpline(i-1, col-1, v[2][col]*100, v[1]*100, -1) a:SetZSpline(i-1, col-1, v[3][col]*100, v[1]*100, -1) a:SetRotZSpline(i-1, col-1, v[4][col]*100, v[1]*100, -1) end end end end Video Example (Shows only the z and rotz splines):\nModSpline video example\n","description":"ModSplines is a system that allows for arbitrary note pathing through modifiers. This system is based off the spline system used in NotITG, which means it is usable alongside the pre-existing SM5 spline system and other modifiers, too.\nPoints are positioned like they are for Gradient modifiers, meaning in multiples of ARROW_SIZE away from the receptor.\nIn SM5, this is only accessible through the PlayerOptions functions, while NotITG has functions available in Player and also has modstring versions available (Though, it\u0026rsquo;s recommended to use the lua functions instead."},{"id":115,"href":"/user-guide/games/","title":"Supported Game Modules","parent":"User Guide","content":"As part of our commitment to rhythm game preservation (The Working Museum), Project OutFox will add a growing number of supported game modules so a new generation can play and enjoy these forgotten gems, and to showcase the creativity and expression our fellow developers employed in the past.\nProject OutFox supports a variety of game modules (modes), which can simulate different types of rhythm games (including note field layouts and, where applicable, game-play behaviour specific to the game being simulated). Game types are further divided into layouts (styles), which define the specific chart type to be played, such as the number of columns used, single layout or double layout, whether or not vs mode is available, number of players, timing windows, judgments, scoring etc. This project is a simulator we do not take code from official releases or use assets from these games. Support the industry!\nThis page will give a little more detail and history about the modes that we support, and new additions and tweaks added to Project OutFox that you may have not noticed. Click on a button below for mode specific information in more detail, and to learn a bit about how the mode has evolved.\nWe are still dedicated to our players from older versions, and this does not mean we are not focussing on working on our core game support! As of OutFox-alpha-4.18.1, they include: Dance / Fitness Pad Based Modes: dance (core) (3k, 3k double, 4k, 4k double, 6k, 6k double)\nParsers: .bms, .dwi, .sm, .ssc The default game type. This game type uses four lanes in the cardinal directions (left, down, up, right). It also contains a 6-lane style, adding up-left and up-right directions, and a 3-lane style using only up-left, down, and up-right. pump (core) (5k, 5k double, 6k (half-double)\nParsers: .ksf, .piu, .sma, .sm, .ssc A five-lane dance game, which uses four diagonal directions and the center rather than cardinal directions. techno (core) (4k, 4k double, 5k, 5k double, 8k, 8k double, 9k, 9k double)\nParsers: .sm, .ssc A dance game type designed for pads with nine panels, including 4-lane (similar to dance), 5-lane (similar to pump), 8-lane (using all but the center panel), and 9-lane styles in single and double versions. smx (core) (3k, 3k double, 5k, 5k double)\nParsers: .ssc A dance game type designed by StepRevolution using a new unique pad which uses the cardinal directions plus middle (left, down, up, right and centre). stepstage (6k, 3k)\nParsers: .ssc A dance game whose format is familiar to those that played it; it had 6 panels over 2 columns, based on a circular design and was made by Jaleco in 2000. kickbox (4k, 6k, 8k)\nParsers: .sm, .ssc An obscure lash-a-soft dance pad-to-a-punching-bag mode. Designed for a boxing style workout, it was requested by a community member in late 2014. Sensor / Mixed Sensor Based Modes: ds3ddx (4k + 4 sensor, 5k + 4 sensor)\nParsers: .ssc A dance game whose format is common among Chinese arcade dance games, which uses four diagonal foot panels, and four hand sensors around the pad in the cardinal directions. The extended version which used the centre panel as well as the diagonals was added to the game in the Spring of 2022, simulating E5Online style play. para (5 sensor, 8 sensor)\nParsers: .sm, .ssc A freestyle game designed for para para routines, which is typically played with five infrared hand sensors in a semicircular layout, and uses a considerably looser scoring system. ez2 (3k + 4 sensor)\nParsers: .sm, .ssc A game type based on the defunct arcade dance game EZ2Dancer, which uses three foot panels and a pair of hand sensors. maniax (4 sensor)\nParsers: .sm, .ssc A game type based on the defunct arcade dance game DanceManiax, which uses four hand sensors arranged into two columns (upper and lower). Instrument Based Modes gddm (core) (6k, 9k, 10k)\nParsers: .dtx, .gda, .g2a A drum mode supporting six-part (five drums and one pedal), nine-part (seven drums, bass pedal, hi-hat pedal), and 10-part (“Real”) styles, played with MIDI electronic drum kits. gdgf (core) (3fret, 5fret, 6fret coming soon)\nParsers: .dtx, .gda (formerly guitar prior to OutFox-alpha-4.9.8) A fiendishly difficult guitar mode supporting three-fret and five-fret styles, often played with a guitar style controller. a highly requested 6 fret mode is coming soon. gh (core) (5fret, 6fret coming soon)\nParsers: .chart, .mid A five-fret guitar mode simulating the mechanics of once-popular console games originating from North America. rb (core) (4 drum, 3 drum 2 cymbal (gh mode drums), 4 drum 3 cymbal)\nParsers: .chart, .mid A drum mode supporting the various different drum options from games originating from North America. This mode can be played with normal PS3/PS4/XBox drum kits, or with MIDI electronic drum kits. taiko (core) (1 drum - 4 hit points)\nParsers: .osu, .osz, .tja A popular game often played with a single drum controller. bongo - (2 bongos + clap)\nParsers: .osu, .osz, .tja A 2 hand drum controller styled mode. Uses content designed for taiko. This mode is often played with a 2 hand drum controller, or 3 midi drums called toms. kbm - (2 octave piano, 4 octave piano) Coming Soon\nParsers: .bmson A piano style game played using a small portion of a normal piano or keyboard. Best played on MIDI, or a normal piano with an arduino MIDI pickup. Most modern 48 key or 61 key MIDI keyboards work well and are recommended if you wish to use a compact option. karaoke - (1 pitch grid) Coming Soon\nParsers: .txt/.xml A karaoke style mode simulating the likes of UltraStar. It allows for the input of singing/rapping into a microphone, and like the other simulators, it uses pitch based detection for scoring. It will read most microphone inputs and can use the official SingStar mics, so keep them around, don\u0026rsquo;t lose that usb dongle! Controller / Key Based Modes: be-mu (core) (5k +scratch, 5k +scratch+foot, 5k +scratch double, 7k +scratch, 7k +scratch double)\nParsers: .bms, .bml, .bme Formally beat. A BMS player mode, supporting 5-key+scratch, 5-key+scratch+foot and 7-key+scratch styles and the ability to load BMS files. Full BME/BML support is almost complete. 5K and 7K charts without scratch are also supported, though will likely play in the 7 lane + scratch layouts. po-mu (core) (3k, 4k, 5k, 7k, 9k, 9k double)\nParsers: .pms, .bme Formally popn. A PMS player mode, supporting 3, 4, 5, 7, and 9-button styles, 2 player mode, and the ability to load PMS/BME po-mu files, with full extended po-mu support. The 4 button mode simulates a short lived arcade game with a different layout kbx (core) (1k to 19k)\nParsers: .bms, .bml, .bme .chart, .dwi, .dtx, .gda, .ksf, .mc, .mid, .osu, .osz, .pms, .qua, .qp, .sma, .sm, .ssc, .tja A 1 to 19 lane game type designed primarily for keyboard play, being able to play songs from any mode using the smartGen system. This is an OutFox-specific game type that does not simulate any specific game. The legacy SSC era kb7 mode charts are still supported and run in this mode instead. These pages below are a work in progress! Please be patient while we work on updating them! - Squirrel Dance / Fitness Pad Based Modes: dance pump techno smx stepstage kickbox Sensor / Mixed Sensor Based Modes: ds3ddx para ez2d maniax MIDI Instrument / Controller Based Modes: gddm gdgf gh rb taitai bongo kbm karaoke Controller / Key Based Modes: be-mu po-mu kbx Future game types These are proposed and are scheduled on the road-map. Limitations or code problems may delay or change these modes, so there is no date or ETA given.\njam - A mode properly supporting o2Jam and its modes, with full .OJM loader support. piu - A major refactoring to make it more accurate to the mainline series. ppr - An obscure \u0026lsquo;Plug in!\u0026rsquo; TV based cartridge marble game from 2001. djh - A Hero isn\u0026rsquo;t always needed, neither are the DJs cdj - The dj\u0026rsquo;s are crackin\u0026rsquo;! d86 - Feet dance Station Radio 3 panel Written and Maintained with ♡ by Squirrel\n","description":"As part of our commitment to rhythm game preservation (The Working Museum), Project OutFox will add a growing number of supported game modules so a new generation can play and enjoy these forgotten gems, and to showcase the creativity and expression our fellow developers employed in the past.\nProject OutFox supports a variety of game modules (modes), which can simulate different types of rhythm games (including note field layouts and, where applicable, game-play behaviour specific to the game being simulated)."},{"id":116,"href":"/dev/theming/Theming-3-Anatomy-Screen/","title":"Anatomy of a screen","parent":"Introduction to theming","content":"A screen generarly consists of 4 separate elements, and 3 special transitional elements, which are its layers. These can contain any kind of object, so they can be Lua scripts, images, video, you name it. These follow a draw order rule to display them.\nFrom draw on top to last (Marked red are the transition-specific layers): graph LR In:::Transition --\u003e Out:::Transition --\u003e Cancel:::Transition --\u003e Decorations --\u003e Overlay --\u003e Underlay --\u003e Background; classDef Transition fill:#f55 To create a file for a specific layer, just name the file as [ScreenName] [layer kind], so for example a Lua file that will control the Overlay layer from ScreenTitleMenu.\nScreenTitleMenu overlay.lua An important thing to mention with screen layers is: every layer MUST return a table. This is needed so the screen manager can create the screen, so either an empty table or an ActorFrame with any kind of content will do. For in-depth information on how to create an ActorFrame base, check ActorFrames and how to build them.\nDue to this draw order, keep in mind that objects created on higher levels will always be shown first before the others. This layering rule also has rules on how objects behave on those layers, with Decorations being the one more reserved for specific elements.\nBackground Layer The lowest drawn layer, being the first drawn. Can be used to elements that will contain visual glare for movement. A rule for this layer is its method for loading, which is cached. This means that any moment that changes are applied, they will not be shown until the user goes to a different screen that does not contain the same background file.\nUnderlay / Overlay The middle layers, where most objects will reside. This can be used for main elements that the user can interact with, or crucial information. No special rules are in these layers, so they can used for all general Lua scripting.\nDecorations A specifically-visual layer, where objects can be placed for decorations. Most actions are limited on this layer:\nLua based input is not available on this layer, as no input is ever sent. Transitional commands are not allowed. Instead, only the initial Init, On and Off commands are allowed. In / Out / Cancel Pure visual layers that serve as entrace, exit and backing out of a screen respectively. They are run as soon as the screen has to perform a change that will end up unloading itself.\nLua based input is not available on this layer, as no input is ever sent. For Cancel, the transition command to run the animation uses StartTransitioningCommand. Using OnCommand or InitCommand will make the animation run as soon as the screen is loaded. ","description":"A screen generarly consists of 4 separate elements, and 3 special transitional elements, which are its layers. These can contain any kind of object, so they can be Lua scripts, images, video, you name it. These follow a draw order rule to display them. From draw on top to last (Marked red are the transition-specific layers): graph LR In:::Transition --\u003e Out:::Transition --\u003e Cancel:::Transition --\u003e Decorations --\u003e Overlay --\u003e Underlay --\u003e Background; classDef Transition fill:#f55 To create a file for a specific layer, just name the file as [ScreenName] [layer kind], so for example a Lua file that will control the Overlay layer from ScreenTitleMenu."},{"id":117,"href":"/dev/mods/Mods-12-Chart-Mods/","title":"Chart modifiers","parent":"Guide to Modifiers","content":"Chart modifiers affect the chart itself, meaning what has to be stepped changes. These cannot be called during gameplay, but can be called through attacks \u0026amp; course files. All of these are boolean modifiers. At the moment, some of these aren\u0026rsquo;t properly set up for any game other than dance.\n\u0026ldquo;Transform\u0026rdquo; Modifiers Transform modifiers add or remove or alter notes from the chart, affecting how the chart has to be played. Some of these might disqualify your score depending on what version of SM is played. The list is shown in application order, from first to apply to last. (With exception to the first one).\nAttackMines (SM5 only) Desc: When active, all mines apply a random attack when hit, and all other effects that come with hitting mines still happens.\nQuirks: Appears to be activatable mid-gameplay?\nPlayerOptions format: AttackMines()\nModstring format: attackmines\nLittle Desc: Removes all notes that aren\u0026rsquo;t on 4ths.\nQuirks: N/A\nPlayerOptions format: Little()\nModstring format: little\nNoRolls Desc: All rolls become normal holds.\nQuirks: N/A\nPlayerOptions format: NoRolls()\nModstring format: norolls\nNoHolds Desc: All holds are replaced with a single tap note where the hold would start. Has a modstring alias of \u0026ldquo;nofreeze\u0026rdquo;.\nQuirks: N/A\nPlayerOptions format: NoHolds()\nModstring format: noholds\nNoMines Desc: All mines are removed from the chart.\nQuirks: N/A\nPlayerOptions format: NoMines()\nModstring format: nomines\nNoJumps Desc: All jumps are removed from the chart, meaning a single note would be left where a jump would have been. Also affects hands (3 notes at once) and quads (4 notes at once).\nQuirks: N/A\nPlayerOptions format: NoJumps()\nModstring format: nojumps\nNoLifts (SM5 only) Desc: Removes all lift notes from the chart.\nQuirks: N/A\nPlayerOptions format: NoLifts()\nModstring format: nolifts\nNoFakes (SM5 only) Desc: Removes all fake notes from the chart.\nQuirks: N/A\nPlayerOptions format: NoFakes()\nModstring format: nofakes\nNoHands Desc: Removes notes until there are no more than two columns being hit at a given time.\nQuirks: N/A\nPlayerOptions format: NoHands()\nModstring format: nohands\nNoQuads Desc: Removes notes until there are no more than three columns being hit at a given time.\nQuirks: N/A\nPlayerOptions format: NoQuads()\nModstring format: noquads\nNoStretch Desc: Eliminates jumps (2 notes at once) such that there\u0026rsquo;s only one note left where there would be two. Does not affect hands (3 notes at once) or quads (4 notes at once).\nQuirks: N/A\nPlayerOptions format: NoStretch()\nModstring format: nostretch\nBig Desc: Adds 8th notes between the 4th notes when possible.\nQuirks: N/A\nPlayerOptions format: Big()\nModstring format: big\nQuick Desc: Adds 16th notes between the 8th notes when possible.\nQuirks: N/A\nPlayerOptions format: Quick()\nModstring format: quick\nBMRize Desc: Performs Big, then Quick on the chart, supposedly \u0026ldquo;BMR-izing\u0026rdquo; it.\nQuirks: N/A\nPlayerOptions format: BMRize()\nModstring format: bmrize\nSkippy Desc: Adds 16th notes between 4th notes.\nQuirks: N/A\nPlayerOptions format: Skippy()\nModstring format: skippy\nMines Desc: Adds more mines.\nQuirks: N/A\nPlayerOptions format: Mines()\nModstring format: mines\nEcho Desc: Adds 8th note \u0026ldquo;echos\u0026rdquo; after all tap notes.\nQuirks: N/A\nPlayerOptions format: Echo()\nModstring format: echo\nWide Desc: Turns all single 4th notes into jumps.\nQuirks: N/A\nPlayerOptions format: Wide()\nModstring format: wide\nStomp Desc: Turns all relatively isolated 4th notes into jumps.\nQuirks: N/A\nPlayerOptions format: Stomp()\nModstring format: stomp\nPlanted Desc: Turns notes into holds such that there is at least one hold being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Planted()\nModstring format: planted\nFloored Desc: Turns notes into holds such that there is at least two holds being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Floored()\nModstring format: floored\nTwister Desc: Turns notes into holds such that there is at least three holds being held throughout the whole chart.\nQuirks: N/A\nPlayerOptions format: Twister()\nModstring format: twister\nHoldRolls Desc: Turns all holds into rolls. Goes by \u0026ldquo;holdstorolls\u0026rdquo; in ITG.\nQuirks: N/A\nPlayerOptions format: HoldRolls()\nModstring format: holdrolls\n\u0026ldquo;Turn\u0026rdquo; Modifiers Turn modifiers shift around the chart, but do not add or remove any notes. These are applied after the transform modifiers, so inserted notes get affected as well. They can be turned off all at once by using this modstring: 0% turn\nMirror Desc: The notes are mirrored across the field.\nQuirks: N/A\nPlayerOptions format: Mirror()\nModstring format: mirror\nBackwards (SM5 only) Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 180 degrees, which may not be the same as \u0026lsquo;mirror\u0026rsquo;.\nQuirks: N/A\nPlayerOptions format: Backwards()\nModstring format: backwards\nLeft Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 90 degrees to the left.\nQuirks: N/A\nPlayerOptions format: Left()\nModstring format: left\nRight Desc: The chart is \u0026lsquo;rotated\u0026rsquo; 90 degrees to the right.\nQuirks: N/A\nPlayerOptions format: Right()\nModstring format: right\nShuffle Desc: Mixes around where the notes are.\nQuirks: N/A\nPlayerOptions format: Shuffle()\nModstring format: shuffle\nSoftShuffle Desc: Randomly performs either not shuffling, swapping of L+R, swapping of U+D or mirroring on every row.\nQuirks: N/A\nPlayerOptions format: SoftShuffle()\nModstring format: softshuffle\nSuperShuffle Desc: Runs Shuffle, then performs an extra shuffle on the tap notes (includes normal taps, fakes, mines and lifts) alone.\nQuirks: N/A\nPlayerOptions format: SuperShuffle()\nModstring format: supershuffle\n","description":"Chart modifiers affect the chart itself, meaning what has to be stepped changes. These cannot be called during gameplay, but can be called through attacks \u0026amp; course files. All of these are boolean modifiers. At the moment, some of these aren\u0026rsquo;t properly set up for any game other than dance.\n\u0026ldquo;Transform\u0026rdquo; Modifiers Transform modifiers add or remove or alter notes from the chart, affecting how the chart has to be played."},{"id":118,"href":"/user-guide/setup/controllers/","title":"Configure controllers","parent":"Setup","content":"On Alpha 4.5 and newer, we switched to using an XInput-compliant input system.\nDue to these changes, not all controllers (such as game-pads, dance pads, and other rhythm game-specific controllers) are guaranteed to function with OutFox out of the box (even if they were supported on earlier versions), unless a controller mapping profile has been created for that specific controller.\nWe would like to thank Josen Tiamat for writing these new instructions for how to configure your controllers for use on OutFox.\nStep 1: Things to check for first So you started up the game and boom you go to “Config Key/Joy Mappings” and set up your controller, skip this guide because you’re done with what you need to do.\nYou can’t configure your Config Key/Joy Mappings! OH NO! (I will get to this) Test your input, see if your keys are mapped and if so which ones. By pushing the buttons on the pad it’ll say something to the effect of “Key B 12 – Not Mapped” and if you step/press on the key and nothing shows up it’s not mapped, no big proceed to the next step to set it up.\nStep 2: The Easy Way So on to the good stuff; OutFox has a built in game-pad tool that will automatically take care of most of this for you\nYou push “Enter” on the keyboard and push the appropriate button on the dance pad/etc. to map the buttons to the button you want.\nI would recommend using this screen for most controllers on pc, it takes a lot of the guess work out of the whole thing. After setting this up repeat Step 1 if your keys show up as “Unmapped” that’s great go to the “Config Key/Joy Mappings” and do your thing, you’re done with the guide!\nIf it still doesn\u0026rsquo;t work\u0026hellip;\nStep 3: The not super intuitive way (SDL2 Game-pad Tool) There is a nifty tool around called SDL2 Game-pad Tool. You connect your controller (via USB or Bluetooth or however you desire to connect your controller to the PC), and it’ll show up on the top drop down menu.\nClick \u0026ldquo;Create a New Mapping\u0026rdquo; Step/Press the input you want for those buttons much like you would on Step 2 of this procedure. Skip the rest. Save the Mapping String. Copy the Mapping String. Go to where you installed the game, and paste the string into Data/gamecontrollerdb.txt A note The “#” is useful for when you want to have different Mapping Strings for the same game-pad, it basically hides the mapping string from the program reading it. I made 3 different mapping for testing the the program would only recognize one, then I hid the mapping string with a hashtag (pound symbol for you oldies around) and the one not hidden was now seen by the program.\nBasically, don’t do multiple mapping strings on the same controller (even if you change the name); the program will work with one at a time and honestly one is all you need. You should be good to go and repeat Step 1 and then go to “Config Key/Joy Mappings” right after and set up your pad.\nStill isn\u0026rsquo;t working? This hasn’t quite happened to me (I tried with the PS3 DDR mat) but there are 2 types of controllers, a “Hat” type and not. So let’s say for example you hook up a pad/controller and the D-Pad you configured up down left and right but “Config Key/Joy Mappings” only allows you to push one of them and the rest don’t work.\nTry configuring the directions to the analog stick instead and then mapping them again. I don’t think you should have to but it works, I’ve tested this with my PS4 Controller and in fact you can play with analog input.\nXInput interfering with HIDAPI mode, and breaking axis pads If you have an axis pad which is showing two sets of buttons, or simply just cancelling out, and you cannot seem to map it in game, this is what you need to do to fix it. The pad showing two buttons will look like this:\nI am pressing the left Arrow, but getting two sets of inputs. On Linux and MacOS, this can be due to an installed xbox360 driver, or the x-pad module intercepting the events, and reporting an axis anyway. The next patch of OutFox mitigates this issue a little bit, but it still is a pain.\nTo fix this, you need to write down the BUTTON numbers shown on screen, so you get a list for all four arrows:\nDown=Joy1_Button 2 Left=Joy1_Button 1 Right=Joy1_Button 4 Up=Joy1_Button 3 Make sure that you close the game. You can now navigate to your save folder, and look for your key-maps.ini file and set the buttons manually, so you can basically ignore the axis values given by the x-pad driver. you need to add the mapping before the ::: as shown below:\nYou can save this, and then start the game again, and your pad will be mapped.\nDown=Joy1_Button 2 Left=Joy1_Button 1 Right=Joy1_Button 4 Up=Joy1_Button 3 Make sure that you close the game. You can now navigate to your save folder, and look for your key-maps.ini file and set the buttons manually, so you can basically ignore the axis values given by the x-pad driver. you need to add the mapping before the ::: as shown below: You can save this, and then start the game again, and your pad will be mapped.\nSteam Deck Layout We have added a quick guide for the layout of the Deck on default buttons. They are set up for 4 panel, so you can then remap them.\nOn some themes which only use the \u0026lsquo;Arcade\u0026rsquo; glyphs, (red/green/grey buttons) we have added these as well so you know which is which.\n","description":"On Alpha 4.5 and newer, we switched to using an XInput-compliant input system.\nDue to these changes, not all controllers (such as game-pads, dance pads, and other rhythm game-specific controllers) are guaranteed to function with OutFox out of the box (even if they were supported on earlier versions), unless a controller mapping profile has been created for that specific controller.\nWe would like to thank Josen Tiamat for writing these new instructions for how to configure your controllers for use on OutFox."},{"id":119,"href":"/user-guide/controllers/controller_mapping_drums/","title":"Drums Mapping","parent":"Controllers and Peripherals","content":" Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name po-mu Button 1 Blue Pad and Cym Right Yellow Button 2 Green Pad and Cym Right Green Button 3 Red Pad Red Button 4 Yellow Pad and Cym Right Blue Button 5 Right Pedal Button 6 Left Pedal ","description":" Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Madcatz Rock Band 4 Drum Kit (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name po-mu Button 1 Blue Pad and Cym Right Yellow Button 2 Green Pad and Cym Right Green Button 3 Red Pad Red Button 4 Yellow Pad and Cym Right Blue Button 5 Right Pedal Button 6 Left Pedal "},{"id":120,"href":"/dev/mods/","title":"Guide to Modifiers","parent":"Developers and Creators","content":"Want your arrows to dance around to the music (as seen in Pump it Up PRO 2 and the StepMania/ITG Modfile Community)?\nWell, if you\u0026rsquo;re a fan of modifiers and attacks, this guide is for you!\nWhat are Mods/Attacks? Modifiers (or Mods) apply all kinds of effects to the notes in a song - they can make the notes scroll in different directions, bounce to the beat, and many, many more things!\nYou can manually turn on modifiers on any song by entering the player options menu (press start twice when you pick a song to play), and choosing Modifiers then Exit at the bottom. Mods in the Acceleration, Effects, Appearance, and Scroll categories work best for attacks - feel free to play around!\nAttacks are one of the easiest ways to add Modifiers to your simfile - Attacks will apply whatever mods you want at specific times you set in the song!\nFor StepMania 5/Outfox-based arcade cabinets (and SM5-based games like PIU Infinity), Attacks can even be used in USB custom songs and charts (if enabled)!\nAdding Attacks to a Simfile We\u0026rsquo;ll assume you\u0026rsquo;ve already created a simfile, and know a bit about how to use the editor here.\nFirst off:\nOpen a Simfile in the Outfox editor (Title Screen \u0026gt; Edit/Share \u0026gt; Edit Songs/Steps). Pick a song, then pick a difficulty (chart).\nWhen editing the chart, press Enter where you want the Modifier to start.\nChoose Modifiy attacks at current beat at the bottom of the menu.\nChoose Add Attack\nHere, you\u0026rsquo;ll enter a Modifier to get applied:\nMany modifiers from the Player Options menu will work (Beat, Drunk, etc), for now just type Beat and press Enter. Any attacks you add will show up to the right of the notes, both when editing and playing a simfile in the editor. Press P to play your song - you should see the attack you added scroll up the screen with the notes.\nWhen the attack with your Beat modifier scrolls to the top of the screen, the arrows will start bouncing to the beat! Editing/Removing Attacks Attacks only last a few seconds by default - to make it last longer you\u0026rsquo;ll need to edit the attack\u0026rsquo;s length.\nEdit an Attack In the editor, go to the beat where the Attack you want to edit is, and press Enter.\nAll Attacks on that beat are listed - pick the one you want to edit (arrow keys/enter).\nIf you don\u0026rsquo;t see the attack you just added, make sure you\u0026rsquo;re lined up to the Exact time the Attack is at! From here, press Enter on any of these options to change them:\nStarting time: When this attack starts. It\u0026rsquo;s better to remove/re-add an attack if you want to change when it starts. Seconds Remaining: How long the attack lasts (defalt: 5 seconds) Attack 1: The mod you just added - press enter to change Add Mod: Pick this to add another mod to this attack Remove an Attack In the editor, go to the beat the Attack is on and press Enter.\nPick the attack you want to remove and press Enter.\nPick the Mod you want to remove and press Enter.\nWhen asked for a new Mod, backspace all the letters in the mod and press Enter.\nWhen all Mods in an attack are removed, the Attack is auto-removed. Mod Strength/Approach Rate Mod Strength Is Beat too wild? Not wild enough? You can fix that!\nTo change how strong a mod is, add a percentage before it, like 50% Beat\nBy default, any mods you add default to 100%. You can dial this down if you don\u0026rsquo;t want a mod to be as strong.\nPercentages above 100% are a-ok if you want really strong mods! Negative percentages like -50% Beat work too if you want to totally invert an effect (it might not be obvious on all mods, but it does work).\nFinally: No means the same thing as 0%. Say, if you have a Beat attack earlier in the song, you can turn it off with 0% Beat or No Beat - either works!\nThe difference between 50% Beat and 100% Beat\nIn the above video - Left = 40% Beat, Right = 125% Beat\nMod Approach Rate Want a mod to slowly fade in over time, or instantly go to max strength? You can change that too!\nTo change how fast/slow a mod is applied, add a * and a number before the mod, like *2 Beat\nHigher numbers apply mods faster, lower numbers (decimals included!) make mods apply slower.\n*0.5 = Half as fast, *2 = Twice as fast.\n(The default *1 applies at a rate of 100% of a mod over 1 second)\nMod approach rate can also combine with any strength, including 0%! If you want to get rid of a mod really fast, you can use an attack like *50 0% Beat.\nThe difference between *0.5 Beat and *10 Beat\nIn the above video - Left = *0.5 Beat (fades in half as fast), Right = *10 Beat (fades in 10x as fast!). They both get to the same strength at the end, but the left side takes longer to do so.\nResources/What\u0026rsquo;s Next Next up is to play around with Modifiers! Experiment with what effects you can get, and discover what you do/don\u0026rsquo;t like!\nWhat Mods Can I Use? Lots, actually!\nCheck out the Guide to Mods in the sidebar for a list of mods you can use!\nMods Resources 0b5vr\u0026rsquo;s Flip-Invert site helps give you combinations of various mods to move the note columns across the screen. Just drag the receptors where you want them on-screen!\n(You can alternatively use the MoveX/Y/Zn mods to move single note columns, like MoveX1, MoveX2, etc) Check out WinDEU\u0026rsquo;s Marathon Tutorial series - it focuses on older versions of StepMania (where some mods, like Drunk and Tipsy, have different names), but a lot of the info still applies to SM5/Outfox. The later videos in the series dive really deep into how some mods behave!\nHow to set up Mods in Courses in also covered in earlier videos in the series (though again, focusing on older versions of StepMania) You can join Project Outfox\u0026rsquo;s Discord server for more help from the community - feel free to ask mods/attacks-related questions in channels like #mods-coding-help.\nMy Mods Don\u0026rsquo;t Work! Double check you\u0026rsquo;ve spelled your Mod name right - mods from older versions of the game (like OpenITG) may have different names in SM5/Outfox! You may get strange behavior if you add new attacks into a simfile before the last attack in the file. Mod Behaviors Across Different Themes Some mods you add (like Drunk, Tornado, Boomerang) may change behavior depending on the theme you\u0026rsquo;re currently using.\nIn older versions (like Stepmania 5.0/5.1), the theme\u0026rsquo;s internal resolution (HD vs non-HD themes, specifically SCREEN_HEIGHT) is used in calculations for certain mods. On these versions, these mods will behave differently on themes with different internal resolutions.\nIn Outfox, these calculations are performed based on a completely separate theme metric instead, ModifierHeight. If the theme changes this value, it will affect those calculations (and therefore mod behaviors, and is noted as doing so).\nPlan accordingly if you plan on playing your simfiles/chart edits on different versions/themes!\nOther Notes Mods obey stops and BPM changes in songs. If your song stops while a mod like Beat is in effect, the notes will freeze in the middle of Beat\u0026rsquo;s animation, skewed to the sides. Earlier versions of StepMania can round the time a mod starts at if you save and exit a simfile in the editor, making it harder/impossible to edit in the future. If this happens, you\u0026rsquo;ll need to manually edit the mod lines under the #ATTACKS tag in your simfile\u0026rsquo;s .sm/.ssc files. ","description":"Want your arrows to dance around to the music (as seen in Pump it Up PRO 2 and the StepMania/ITG Modfile Community)?\nWell, if you\u0026rsquo;re a fan of modifiers and attacks, this guide is for you!\nWhat are Mods/Attacks? Modifiers (or Mods) apply all kinds of effects to the notes in a song - they can make the notes scroll in different directions, bounce to the beat, and many, many more things!"},{"id":121,"href":"/user-guide/controllers/controller_mapping_guitars/","title":"Guitars Mapping","parent":"Controllers and Peripherals","content":" Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name gh gdgf Button 1 Blue Fret Fret 4 Fret 4 Button 2 Green Fret Fret 1 Fret 1 Button 3 Red Fret Fret 2 Fret 2 Button 4 Yellow Fret Fret 3 Fret 3 Button 5 Orange Fret Fret 5 Fret 5 Button 9 Share Button 10 Options Whammy Button 11 Solo Buttons (Any) H-Up Strum Up Strum Up H-Down Strum Down Strum Down ","description":" Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Madcatz Rock Band 4 Guitar (Playstation 4, Bluetooth) Outfox Joypad Button Physical Device Name gh gdgf Button 1 Blue Fret Fret 4 Fret 4 Button 2 Green Fret Fret 1 Fret 1 Button 3 Red Fret Fret 2 Fret 2 Button 4 Yellow Fret Fret 3 Fret 3 Button 5 Orange Fret Fret 5 Fret 5 Button 9 Share Button 10 Options Whammy Button 11 Solo Buttons (Any) H-Up Strum Up Strum Up H-Down Strum Down Strum Down "},{"id":122,"href":"/dev/theming/","title":"Introduction to theming","parent":"Developers and Creators","content":" This guide is still in progress! A lot of elements are still in the works, and are constantly updated. Come back regularly for more information.\nThemes in OutFox (and general StepMania) are visual/gameplay tweaks that can completely change the experience of play, by allowing almost complete customization of the entire game with just Lua, the scripting language for OutFox.\nThis guide will comprise of the process on how to create such theme from scratch, provide tips along the way, as well as best practices and history throughout the years.\nTable of contents: Theming differences between older versions The Structure of folders Creating a custom screen Anatomy of a screen Theming tips and tricks Creating a Font Scripts Custom Input Modules Sounds Guide Written and Maintained by Jose_Varela.\n","description":"This guide is still in progress! A lot of elements are still in the works, and are constantly updated. Come back regularly for more information.\nThemes in OutFox (and general StepMania) are visual/gameplay tweaks that can completely change the experience of play, by allowing almost complete customization of the entire game with just Lua, the scripting language for OutFox.\nThis guide will comprise of the process on how to create such theme from scratch, provide tips along the way, as well as best practices and history throughout the years."},{"id":123,"href":"/dev/effects/EffectFiles-ModifierFiles/","title":"Modifier Files","parent":"Effect Simfiles","content":"These simfiles have modifiers that are scripted to happen at various points of the song. The difficulty can range between \u0026ldquo;trivial to read\u0026rdquo; to \u0026ldquo;may as well memorize the chart\u0026rdquo;.\nOften called \u0026ldquo;Modfiles\u0026rdquo; or \u0026ldquo;Modcharts\u0026rdquo;.\nThese usually use the FGCHANGES or BGCHANGES of a simfile to load the lua files (if any are used).\nDisclaimer: Make sure you\u0026rsquo;ve got making a chart down before starting to make modcharts! Good mods can\u0026rsquo;t save a bad chart!\nHow to Apply Modifiers There are a few ways to go about this, and it varys depending on what version of SM is being used.\nApplyGameCommand (SM3.95/oITG/nITG) ApplyGameCommand is a GameState function that provides a way to send modifiers among other commands. The first paramter is the command type followed by the parameters. (In this case, a modstring) The second parameter is what player to apply the command (1 = player 1). If not specified, it applies to all players.\nGAMESTATE:ApplyGameCommand(\u0026#34;mod, *0.5 420 beat\u0026#34;, 1) While it\u0026rsquo;s still available in SM5 (including OutFox), it\u0026rsquo;s not recommended because it applies mods to the \u0026ldquo;Preferred\u0026rdquo; ModsLevel, which means modifiers apply instantly (no transition), and they persist outside of the simfile. SM5.2 Doesn\u0026rsquo;t even have this function available.\n#MODS (Course files, SM3.95/oITG/nITG/SM5) Old modfiles used to require going into marathon mode to play the scripted modifiers. Unlike most things, this is time-based due to charts being able to have stops.\n#MODS:TIME=0.000:END=10.000:MODS=*0.5 420 beat; #MODS:TIME=5.000:LEN=1.600:MODS=*2 50 stealth; (ex: Beat starts at 0 seconds and ends at 10. Stealth turns on at 5 seconds and ends 1.6 seconds later)\nNowadays, this is considered obsolete in favor of lua-powered modifiers. It\u0026rsquo;s still usuable in SM5.\n#ATTACKS (Simfiles, nITG/SM5) Allows for the application of modifiers similar to what course files have. The syntax is exactly the same, just with MODS becoming ATTACKS.\n#ATTACKS:TIME=0.000:END=10.000:MODS=*0.5 420 beat; #ATTACKS:TIME=5.000:LEN=1.600:MODS=*2 50 stealth; nITG accepts #ATTACKS or #MODS inside the .sm file, while SM5 only accepts #ATTACKS in sm \u0026amp; ssc.\nThese do not load in course mode, however.\nApplyModifiers (nITG) A dedicated function for applying modifiers without needing the processing overhead and \u0026ldquo;mod, \u0026quot; that ApplyGameCommand does.\nGAMESTATE:ApplyModifiers(\u0026#34;*0.5 420 beat\u0026#34;, 1) Often used as a replacement for ApplyGameCommand in nITG modfiles.\nPlayerOptions functions (SM5) Every modifier has a setter function in PlayerOptions. This can be used in place of other functions. These are case-sensitive, though. If using strings, they\u0026rsquo;ll have to be parsed to make use of these functions.\nlocal po = {GAMESTATE:GetPlayerState(0):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;), GAMESTATE:GetPlayerState(1):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} po[1]:Beat(4.2, 0.5) SetPlayerOptions (SM5) This function works by resetting the PlayerOptions for the given level, and setting it according to the string.\nGAMESTATE:GetPlayerState(PLAYER_1):SetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;, \u0026#39;*0.5 420 beat\u0026#39;) Because it resets PlayerOptions, it might not be so useful for applying scripted modifiers.\nFromString (SM5.1 and onwards) Like how ApplyModifiers is specifically for modstrings in nITG, FromString provides direct access to the string parser used for modifiers in ApplyGameCommand, and works very much like how ApplyGameCommand would.\nlocal po = {GAMESTATE:GetPlayerState(0):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;), GAMESTATE:GetPlayerState(1):GetPlayerOptions(\u0026#39;ModsLevel_Song\u0026#39;)} po[1]:FromString(\u0026#34;*0.5 420 beat\u0026#34;) Modfile templates Starting to make a modfile can seem really daunting if one does not know how to begin. Luckilly, there are many templates out there to help with creating modfiles.\nOnes made for Open/NotITG and SM3.95 are usually done with .xml files, and some rare .lua files.\nOnes made for SM5 are almost always .lua files.\nStepMania 5-Based templates MTK\u0026rsquo;s OutFox port of Exschwasion\u0026rsquo;s easing template\nhttps://drive.google.com/open?id=1HfCFvTHZUI4dO_eAk4iN5mO3H61caHzE Lost of local variables used up in the main scope to preserve syntax. The place to put the actual calls is a little different. XeroOl\u0026rsquo;s port of the \u0026ldquo;Mirin\u0026rdquo; template\nhttps://github.com/XeroOl/sm5-mirin Unknown if up to date. Sudospective\u0026rsquo;s Kitsu Template\nhttps://github.com/Tiny-Foxes/kitsu-template Up to date: fully supports Project OutFox Fully compatible with the new tween system Object Orientated Template Easy to find update loop OpenITG/NotITG/SM3.95 templates Exschwasion\u0026rsquo;s easing template\nOpenITG: https://drive.google.com/open?id=1q_d8bJw80uJ4UBUWRj-4iKtTe1ORNkDl NotITG: https://drive.google.com/open?id=10J7B8EOeMAcS0WSvfcnni8UG7xbq2X66 Very popular \u0026amp; widely used. Modstrings are fully usable. Has ease functions so you\u0026rsquo;re not limited to just linear, accelerate, decelerate \u0026amp; spring. These can be applied to modifiers \u0026amp; functions. Needs sustains to ensure the eases fully complete. Has an \u0026ldquo;actions\u0026rdquo; table (at a given beat, a function runs or a message is broadcast) XeroOl\u0026rsquo;s \u0026ldquo;Mirin\u0026rdquo; template\nhttps://github.com/XeroOl/notitg-mirin Documentation: https://xerool.github.io/notitg-mirin/ Gaining popularity. Supposed to be optimized (a lot more than the ease template) Allows for \u0026lsquo;custom\u0026rsquo; modifiers through node Has a plugin system to allow for extending the template. https://github.com/XeroOl/notitg-mirin-plugins Has ease functions No sustains needed. Aims to not leave behind global variables. [citation needed] Cannot use modstrings? [citation needed] difficulty to use vs ease template [citations needed] TaroNuke\u0026rsquo;s \u0026ldquo;Wow! It\u0026rsquo;s Made\u0026rdquo; template\nUsed during TaroNuke\u0026rsquo;s \u0026ldquo;Wow! It\u0026rsquo;s Made\u0026rdquo; streams where he wrote a modfile live. https://www.twitch.tv/videos/321383917 https://www.twitch.tv/videos/321386003 https://www.twitch.tv/videos/321379794 https://www.twitch.tv/videos/321380780 Also pretty much how mods boot camp 3 files were made. What does it have? Daikyi\u0026rsquo;s simple template\nhttps://cdn.discordapp.com/attachments/227819834480656384/493515557216452638/default.xml Super simple \u0026amp; basic. (So, might be good for beginners) Modstrings are fully usable via mods table. Has an \u0026ldquo;actions\u0026rdquo; table. Lots of comments for documentation. Ky_Dash\u0026rsquo;s template\nhttps://github.com/KyDash/nitg-template \u0026ldquo;somewhat cursed\u0026rdquo; ??? FMS_Cat\u0026rsquo;s template\nUsed in FMS_Cat\u0026rsquo;s modfiles. Mainly uses \u0026ldquo;build.js\u0026rdquo; to construct the xml files. CatEvent system for queueing everything? Everything is a function? XeroOl\u0026rsquo;s Galaxy Mod Loader (XGML) template\nhttps://github.com/XeroOl/notitg-xgml Predecesor to mirin Considered deprecated/obsolete? Has addons to extend template functionality https://github.com/XeroOl/notitg-xgml-addons What else? BrotherMojo\u0026rsquo;s template\nAs seen in babaroque \u0026amp; blaster \u0026amp; mkdr? WinDEU\u0026rsquo;s template\nAs seen in Mods Boot Camp? Cering\u0026rsquo;s template (forked from exsch?)\nAs seen in NJSRT \u0026amp; Aster\u0026rsquo;s Astral Adventures + Conflict? HeySora\u0026rsquo;s template\nAs seen in purple people eater? FMS_Cat\u0026rsquo;s Automaton template\nhttps://github.com/FMS-Cat/automaton-notitg-template Jaezmien\u0026rsquo;s template\nhttps://github.com/Jaezmien/NotITG_Template ","description":"These simfiles have modifiers that are scripted to happen at various points of the song. The difficulty can range between \u0026ldquo;trivial to read\u0026rdquo; to \u0026ldquo;may as well memorize the chart\u0026rdquo;.\nOften called \u0026ldquo;Modfiles\u0026rdquo; or \u0026ldquo;Modcharts\u0026rdquo;.\nThese usually use the FGCHANGES or BGCHANGES of a simfile to load the lua files (if any are used).\nDisclaimer: Make sure you\u0026rsquo;ve got making a chart down before starting to make modcharts! Good mods can\u0026rsquo;t save a bad chart!"},{"id":124,"href":"/user-guide/meta/serenity/","title":"OutFox Serenity","parent":"Front Matter","content":" Hey! There are new pages with more info about OutFox Serenity, check them out!\nSerenity User Profiles Serenity Volume Resume What is OutFox Serenity? OutFox Serenity is the official community song pack project made primarily for Project OutFox. Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the functionality of Project Outfox by offering charts for multiple game types beyond just 4-key/dance.\nHow was OutFox Serenity created? During Project OutFox Alpha 4.8.0 development, we started to release many modes, however, some of those modes have complicated chart standards or no longer have support. We decided then that it was right to create a community pack based on StepMania StepMix where the community would contribute for songs to be bundled with the game, but this time, songs for every mode OutFox supports.\nHow can I contribute to OutFox Serenity? Make sure to read our guidelines to understand the rules of contribution and submission. Fill our online form selecting the option of which you want to submit and any other required information. If you have music that follows our Music guidelines, then please submit it using our online form, once you submit you have agreed that we have permission to store/share your content with members of our team to organize the selection of future volumes of OutFox Serenity and that the public has permission to Stream/Record and Upload Videos playing Project OutFox with your songs, our channel will upload your song to Project OutFox Youtube Channel and that your song can be featured in arcades, as long as your song is selected.\nWe will request you to use our templates which can be found on the Project OutFox Discord Server. Make sure to check the pinned messages as they include each game mode scaling.\nDoes OutFox Serenity work with other StepMania forks? No, the packages we provide include content which will not work with other StepMania forks and can even cause crashes when trying to load them.\nContributors and the Serenity Team prepare the pack with Project OutFox performance and behavior in mind, even if some individual chart works with those older forks.\nHow do I update my packs? When a new version comes out, we release multiple packages, usually it will be like this:\nAll in One, this package will include all content from all volumes X Volume Only, this package will include only the new volume and its content. (It WON\u0026rsquo;T include new content for older volumes that were produced during the development of the new volume) We recommend you to download the \u0026ldquo;All in One\u0026rdquo;, delete the content inside your local OutFox Serenity groups and replace with what is inside the new All in One package, this way you avoid losing scores (Unless the chart has been updated), the general idea is to keep everything with the same directory path. It is not recommened to just add an replace content this can introduce problems in the future.\nHow will Volume 3 work? Volume 3 will work very different from past volumes, but to make it simple:\nWe will reveal 3 songs with SSC Templates and that will be a season. Contributors can contribute with charts and graphics. After 3 month from the season reveal, we will release that season package and start development of the next season. Important:\nTTC (Time to Chart) for every season will be 3 months. There\u0026rsquo;s no Testing Weeks, make sure your content is final and meets all our requirements before sending. Each season will always have 3 songs at max. If a song has charts but no graphics yet, it will use the pack graphics, if after 2 months of the song reveal there\u0026rsquo;s still no graphic for that song, then it will be made by members of the Serenity Team. Can I Stream/Record and Upload Videos of me playing Serenity Songs or use them in a Arcade? Yes! In case you want to be extra secure, each song folder in our package includes a text file with licenses for the Song and Graphics. (If a section isn\u0026rsquo;t include for one of those, you can assume you\u0026rsquo;re safe.)\nWhat are OutFox Serenity Volumes? Volume 1 OutFox Serenity Volume I Released August 27, 2021, OutFox Serenity Volume I features music by Aspid Cat, Drazil, Jack5, Matduke, mmry, PizeroFox, Seo, and Sevish. Alongside 4-panel (dance) and 5-panel (pump) charts, some of its songs also have be-mu, po-mu, techno (8- and 9-panel), gddm, and gdgf, and gh charts.\nView Chart Table Mode Charts dance 110 pump 59 gh 28 gddm 18 po-mu 16 smx 16 be-mu 14 techno 10 gdgf 8 maniax 2 kb6 1 ds3ddx 1 ez2 1 There are a total of 284 charts available to play in 11 songs for OutFox Serenity Volume 1.\nWatch video here Volume 1.5 OutFox Serenity Volume I Winter Update The Winter Update to OutFox Serenity Volume I features three new songs by DJ Megas, Matduke and Pekoneko (ペコネコ). It also includes changes to some of the existing songs from Volume 1, including additional charts, and key sounded be-mu/po-mu and gh charts for selected songs.\nView Chart Table Mode Charts dance 26 gh 8 bemu 8 pump 5 pomu 2 kb6 1 There are a total of 50 charts available to play in 3 songs from OutFox Serenity Volume 1 Winter Update.\nWatch video here Volume 2 OutFox Serenity Volume II Released September 4, 2022, Serenity Volume II features music by Ace of Beat, Finite Limit, Jack5, Kurio Prokos, Lagoona, Rilliam, rN, SiLiS, and td.\nView Chart Table Mode Charts dance 66 gh 33 pump 25 bemu 15 pomu 14 smx 9 ds3ddx 5 kb4 4 kickbox 4 kb8 3 ez2 1 kb6 1 There are a total of 180 charts available to play in 10 songs for OutFox Serenity Volume 2.\nWatch video here Volume 2.5 OutFox Serenity Volume II Winter Update Released February 21, 2023, the Winter Update (version 2.5) adds three new songs by Akako Hinami and Zenth, as well as new charts for other songs from previous versions.\nView Chart Table Mode Charts dance 28 kb6 8 pump 4 pomu 3 bomu 3 There are a total of 46 charts available to play in 3 songs from OutFox Serenity Volume 2 Winter Update.\nWatch video here Are modfiles allowed to be submitted? Yes. But make sure its gimmicks only work with your specific chart/difficulty, no chart should impact other\u0026rsquo;s charts in any way.\nI submitted music but it wasn\u0026rsquo;t featured on the next volume/season, why? Our team has a list of music submitted by members of the community, we try to select a safe amount of music that guarantees a healthy amount of charts will be made for each one since chart and graphic submissions are made purely by the interest of the authors and at the moment of writing this document, Project OutFox has no dedicated Chart Creation Team.\nAnother possible reason is that your submission does not follow the music guidelines, if you think that is the case then you can contact us using the following socials:\nDiscord Reddit (Post or Private Message any Mods) Project OutFox Forum (Create a post) Twitter (Private Message) Facebook (Private Message) Github (New Discussion) Make sure to check any of the socials you provided to us, if we are considering using your music but it\u0026rsquo;s missing something, we will try to contact you.\nWhy are some music files missing from the repository? Those are special as they use a license that doesn\u0026rsquo;t allow us to publicly host them on Github, they are still bundled with our release zips.\nWhich artists have had their music released with OutFox Serenity? Matduke Low End Theory (Volume I Winter Update) Heartbeat (Volume I) Let Me See You (Volume I) Broken (Volume I) Sevish Some Things Must (OutFox Edit) (Volume I) PizeroFox Tagebuch der vergangenen Erinnerungen (Volume I) mmry After the Ending (Volume I) Jack5 Nexen II (Phase Two) (Volume I) Sweetners (Volume II) Aspid Cat Abandoned Doll (Volume I) Conflicting Revenge (Volume I) Seo brokenHeart resurrection ~estele~ (Volume I) spirai project \u0026ldquo;drazil\u0026rdquo; synthborn lovebirds (Volume I) DJ Megas Plasma (Volume I Winter Update) Pekoneko (ペコネコ) Umi\u0026rsquo;s Secret (Chiptune Mix) (Volume I Winter Update) Rilliam chop chop (Volume II) Kurio Prokos Beatucada (Volume II) Lagoona Into My Dream (Volume II) SiLiS Bounded Quietude (Volume II) Phycietiia (Volume II) Neutralize (PTB10 Mix) (Volume II) Finite Limit Bounded Quietude (Volume II) rN Phycietiia (Volume II) Thomas Dingwall a.k.a td CRUSH THE DEVIL (IN MY BRAIN) (Volume II) Ace of Beat Technological ≠ Emotional (Volume II) B-Happy (Volume II) Akako Hinami Summer Overload (Volume II Winter Update) Halcyon (Volume II Winter Update) Zenth Relaxation Piece of Conclusion (Volume II Winter Update) Which charters have had their charts released with OutFox Serenity? Author Charts Daniel Rotwind 89 Chriszo 70 shockdude 69 Marukomuru 62 Jack5 56 Yosefu 33 Xiddy 25 K.TURN 23 Fingy 18 48productions 16 Rippy Ripster 15 Melone 11 Telperion 11 Kawafumi 9 A Dancing Maractus 8 Gr00txD 8 Kaede 7 Homeee 5 dj505 4 kals 4 DJGRS 4 Drazil 3 Snil4 3 SHRMP0 3 Kurio Prokos 3 Timo Kitsune 2 Jose_Varela 1 Sevish 1 Ario 1 Jose Varela 1 Sevish 1 Sudospective 1 PCBoyGames 1 Which graphic makers have had their artwork released with OutFox Serenity? Lirodon Plasma (Background, Jacket, Banner) Broken (Background, Jacket, Banner) Heartbeat (Background, Jacket, Banner) Let Me See You (Background, Jacket, Banner) Conflicting Revenge (Background, Jacket, Banner) After the Ending (Jacket) Sweetners (Background, Jacket, Banner) Phycietiia (Background, Jacket, Banner) Technological ≠ Emotional (Background, Jacket, Banner) Summer Overload (Background, Jacket, Banner) Halcyon (Background, Jacket, Banner) Daniel Rotwind Umi\u0026rsquo;s Secret (Chiptune Mix) (Background, Jacket, Banner) *Art commissioned from Trinitoid Low End Theory (Background, Jacket, Banner) *Art commissioned from Khayos Tagebuch der vergangenen Erinnerungen (Background, Jacket, Banner, BGA) *Art comissioned from ArtPhantom17 brokenHeart resurrection ~estele~ (Background, Jacket, Banner) Bounded Quietude (Background, Jacket, Banner) *Art comissioned from Axl_fox Neutralize (PTB10 Mix) (Background, Jacket, Banner) *Art comissioned from Zeta-Neubourn Jack5 Nexen II (Background, Jacket, Banner) Some Things Must (OutFox Edit) (Background, Jacket, Banner) Jousway After the Ending (Background, Banner) Drazil synthborn lovebirds (Background, Jacket, Banner) Aqui Abandoned Doll (Background, Jacket, Banner) Jose_Varela Heartbeat (BGA) Beatucada (Background, Jacket, Banner) Dramis chop chop (Background, Jacket, Banner) K.TURN Into My Dream (Background, Jacket, Banner, BGA) Telperion CRUSH THE DEVIL (IN MY BRAIN) (Background, Jacket, Banner) Kaimaruz B-Happy (Background, Jacket, Banner) Melone Relaxation Piece of Conclusion (Background, Jacket, Banner) Who organizes the project? Most of the work is handled by OutFox Community Team with occasional help from OutFox Design Team and feedback from OutFox Development Team. In Specific:\nMoru Zerinho6: Serenity Project Lead, Serenity Server Organization, Music Selection, Pack Organization, Serenity Website Section, Serenity Wiki, Simfile Templates. Lirodon: Pack Assets, Serenity Trailer, Serenity Website Section, Guidelines Rules, Pack Advertisement. Daniel Rotwind: Creation of templates for be-mu/po-mu game modes, Pack Assets, Chart Creation. shockdude: Creation of GH game mode templates, Chart Creation. Sevish: Sound Normalization, Music Feedback, Chart Creation. Melone: Chart Creation, Chart Feedback, Music Selection. Jose_Varela: Chart Creation, Pack Assets. Colin: Chart Creation, Music Feedback. dj505: Chart Creation and Feedback. Moneko: Music Selection. We\u0026rsquo;re looking for people to join the serenity team to help with the creation of simfile templates, by defining song metadata such as BPM, Artist, Stops\u0026hellip;etc, if you\u0026rsquo;re interested then join the Project OutFox Discord Server and contact the moderators.\nWritten and Maintained by Moru Zerinho6\n","description":"Hey! There are new pages with more info about OutFox Serenity, check them out!\nSerenity User Profiles Serenity Volume Resume What is OutFox Serenity? OutFox Serenity is the official community song pack project made primarily for Project OutFox. Its purpose is to produce packs of \u0026ldquo;libre\u0026rdquo; songs for the game that can be freely redistributed (including as part of its default, bundled songs), and to showcase the functionality of Project Outfox by offering charts for multiple game types beyond just 4-key/dance."},{"id":125,"href":"/user-guide/config/preferences/","title":"Preferences.ini","parent":"Features \u0026 Config","content":"Preferences.ini is a file that contains many of the system preferences. Some of them are accessible within Project OutFox\u0026rsquo;s settings menu, but some of them are only accessible by editing the file. Manual edits to Preferences.ini must be performed when the game is closed, or else they may be automatically overwritten.\nIt is located in the Save folder.\nList of parameters AdditionalCourseFolders Takes a comma-separated list of directories where additional course (.crs) files are stored.\nDefault value: nothing\nSee folder.\nAdditionalFolders Takes a comma-separated list of directories where additional content folders are stored. Those additional folders could have all folders your OutFox installation root has.\nWhat\u0026rsquo;s the usage of this? Simple, share themes/noteskins/avatars..etc with any other installation of OutFox you have.\nValue Example:\nAdditionalFolders=C:\\AdditionalFolder\nC:\\AdditionalFolder │ └───Appearance │ │ │ └───Themes │ │Infinitesimal │ │SoundWaves Community Edition Default value: nothing\nSee folder.\nAdditionalSongFolders Takes a comma-separated list of directories where additional song groups are stored. Those additional song folders are expected to have Group folders inside.\nWhat\u0026rsquo;s the usage of this? The best usage of this preference would be to have songs on another disk with maybe more space or faster so your main drive doesn\u0026rsquo;t get filled with songs.\nValue Example:\nAdditionalSongFolders=C:\\AdditionalSongs\nWhere C:\\AdditionalSongs should look like this\nC:\\AdditionalSongs │ └───PackName │ │ │ └───SongName │ │Music.ogg │ │Chart.sm AdditionalSongFolders can point to any valid path and don\u0026rsquo;t have to be on the same disk as OutFox.\nDefault value: nothing\nSee folder.\nAllowEditorAutoSaving If enabled, chart data will be saved every 5 minutes while editing a chart.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAllowExtraStage When event mode is off, allow the player to qualify for an extra stage.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAllowHoldForOptions Allow the user to enter the player options menu by holding the start button when selecting a song. If set to 0, the user must press the start button twice instead.\nPossible values are 0 or 1. 0 is \u0026quot;Double tap\u0026quot; and 1 is \u0026quot;Hold\u0026quot;.\nDefault value: 1\nAllowMultipleHighScoreWithSameName Allows multiple high score entries by the same user.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAllowMultipleInstances Allows multiple instances of Project OutFox to be opened.\nPossible values: 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowMultipleToasties Allows the legacy toasty animation to play multiple times in a single song.\nPossible values are 0 or 1. 0 is Of and 1 is On.\nDefault value: 1\nAllowMultitexture Allows models to use multitextures when rendering.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nAllowNotefieldChangesOnPreview Allows any changes to the notefield to be made while using preview mode on editor.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowSongDeletion Allows the ability to delete a song on the Music Wheel by performing the following combination on the selected song:\nCTRL + Backspace\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAllowUnacceleratedRenderer Allows the game to continue using a software renderer if the graphics card cannot support the renderer.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAllowW1 Enables the W1 judgement (\u0026ldquo;Flawless\u0026rdquo;, \u0026ldquo;Marevelous\u0026rdquo;, \u0026ldquo;Fantastic\u0026rdquo; depending on the theme) in regular gameplay.\nPossible values are \u0026quot;Never\u0026quot;, \u0026quot;Courses Only\u0026quot; and \u0026quot;Always\u0026quot;.\nDefault value: everywhere\nAnisotropicFiltering Makes textures use \u0026ldquo;Anisotropic Filtering\u0026rdquo;. Noted to have no effect without mipmaps on, and is not mutually exclusive with TrilinearFiltering.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAnnouncer Specifies the name of the current announcer.\nDefault value: nothing\nArcadeOptionsNavigation Determines how menus are navigated. StepMania Style has up \u0026amp; down switch option lines, and start moves to the end. Arcade Style has up \u0026amp; down ignored, while start moves to the next option line.\nPossible values are 0 and 1. 0 is StepMania Style and 1 is Arcade Style.\nDefault value: 0\nAttractSoundFrequency Determines how often sound is enabled during the attract mode loop in arcade mode.\nPossible values are Never, Always (EveryTime), 2 Times (Every2Times), 3 Times (Every3Times), 4 Times (Every4Times), and 5 Times (Every5Times).\nDefault value: EveryTime\nAutoJoin Allow both players to automatically join upon a single start press.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nAutoMapOnJoyChange Perform automapping when a change in joysticks or controllers is detected.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On (recommended)\u0026rdquo;.\nDefault value: 1\nAutoPlay Has the notefield play the chart by itself. CPU-controlled involves the AI.ini file inside the game\u0026rsquo;s Data folder.\nPossible values are Off (Human), On (Autoplay) and CPU-Controlled (CPU).\nDefault value: \u0026ldquo;Human\u0026rdquo;\nAutogenGroupCourses Automatically generates nonstop courses based on installed songs.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nAutogenSteps Allows charts to be generated for other game types and styles that a song does not have its charts for.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nAxisFix Enables an input workaround for certain devices where the D-Pad won\u0026rsquo;t allow two inputs of opposing directions.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBGBrightness Sets the brightness of background visuals in gameplay.\nPossible values are 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.700000\nBGBrightnessNoZero Similar to BGBrightness, but without a 0% option. meant for use in options menus.\nPossible values are 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nBGBrightnessOrStatic Sets the brightness of the background or disables it. Meant for use on options menus. Disabled sets SongBackgrounds to Off.\nPossible values are Disabled, 25% Bright, 50% Bright and 75% Bright.\nBackUpAllSongSaves When enabled, all SSC saving saves a secondary backup file.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBackgroundFitMode Determines scaling/cropping of song backgrounds based on resolution and aspect ratio.\nPossible values are CoverDistort, CoverPreserve, FitInside, FitInsideAvoidLetter and FitInsideAvoidPillar\nDefault value: CoverPreserve\nBlinkGameplayButtonLightsOnNote Make game lights blink when chart notes cross the receptors.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nBothAtOnce This preference controls BothAtOnce, an input mode that mirrors input across both players.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nBreakComboToGetItem Require breaking combo to earn items in a player\u0026rsquo;s inventory.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nCelShadeModels Currently only used on Legacy Dancing Characters, which makes the characters have a toon-styled shade applied.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nCenter1Player In single-player modes, renders the notefield in the center of the screen rather than to the left or right.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nCenterImage CenterImageAddHeight, CenterImageAddWidth, CenterImageTranslateX, and CenterImageTranslateY are used to adjust overscan.\nDefault values:\nCenterImageTranslateX = 0 CenterImageTranslateY = 0 CenterImageAddWidth = 0.000000 CenterImageAddHeight = 0.000000 CoinMode This setting determines whether Project OutFox will behave as an arcade game or not;\nIf set to Pay, coins and credits must be inserted to play. The game will use an attract loop, and the main menu will not be accessible. If set to Free Play, the game will behave similarly to Pay mode, except credits are not required to play. If set to Home, Project OutFox\u0026rsquo;s arcade workflows will be disabled. The game will use its default user experience, including access to the main menu. Possible values are Home, Pay and Free Play.\nDefault value: Home\nCoinModeNoHome This is meant for use in options menus. It only lets one choose between pay and free play modes.\nPossible values are Pay and Free Play.\nCoinRecoveryExpirationHours How many hours can pass before previously inserted coins from a different instance expire.\nDefault value: 0\nCoinsPerCredit Specifies the number of coins that must be inserted for each credit.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 and 16.\nDefault value: 1\nComboContinuesBetweenSongs If enabled, the player\u0026rsquo;s combo will carry over between songs rather than start from 0.\nPossible values are 0 or 1. 0 is Of and 1 is On.\nDefault value: 0\nConstantUpdateDeltaSeconds Experimantal feature that forces a specific update loop, in seconds. Having a value of 0.0 disables it.\nDefault value: 0.000000\nCookie Cookies are delicious delicacies.\nUsed by the file downloader functionality. Since this functionality isn\u0026rsquo;t really used, this preference is also mostly unused.\nDefault value: nothing\nCourseSortOrder Chooses how the courses are sorted.\nPossible values are \u0026ldquo;Preferred\u0026rdquo; (Not choosable in options menus), \u0026ldquo;Num Songs\u0026rdquo; (Songs), \u0026ldquo;Average Feet\u0026rdquo; (Meter), \u0026ldquo;Total Feet\u0026rdquo; (MeterSum) and \u0026ldquo;Ranking\u0026rdquo; (MeterRank)\nDefault value: Songs\nCoursesToShowRanking The names of courses to show in the Ranking screen. Only used when showing ranking of specific trails.\nDefault value: nothing\nCurrentGame The game type currently being used.\nPossible values are listed here.\nDefault value: nothing\nCustomSongsEnable If set to 1, players may load their songs from a folder in their profile on a USB media (similar to the \u0026ldquo;r21\u0026rdquo; patch from In the Groove 2).\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nCustomSongsLoadTimeout How long the game will wait for a custom song to be loaded before skipping it, in seconds.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30 and 1000.\nDefault value: 5.000000\nCustomSongsMaxCount The maximum number of songs that can be loaded as custom songs.\nPossible values are 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, and 1000.\nDefault value: 1000\nCustomSongsMaxMegabytes The maximum filesize for audio files of custom songs.\nPossible values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30 and 1000.\nDefault value: 5.000000\nCustomSongsMaxSeconds The maximum length in seconds for custom songs.\nPossible values are 60, 90, 120, 150, 180, 210, 240, and 10000.\nDefault value: 120.000000\nDDRStyleRandom When on, random backrounds use the song\u0026rsquo;s directory as the seed, ensuring a conststent set of backgrounds for each song.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nDebounceCoinInputTime How much the coin detector\u0026rsquo;s input is expected to bounce, in seconds. (Because otherwise, a coin could count as more than one)\nDefault value: 0.000000\nDebugLights Displays a debug overlay for lights outputs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDefaultFailType The fail type to use for every song. Alters the DefaultModifiers preference. Meant for use in options menus.\nPossible values are Immediate, ImmediateContinue, EndOfSong and Off.\nDefaultLocalProfileIDP1 The ID of the local profile that P1 should use by default.\nDefault value: nothing\nDefaultLocalProfileIDP2 The ID of the local profile that P2 should use by default.\nDefault value: nothing\nDefaultModifiers Comma-separated list of modifiers used by players with no profile, or a new profile with no personal settings. This is game-specific (eg: dance and pump could have different default modifiers).\nDefault value: nothing\nDefaultRecordLength How long a recording section in the editor is by defualt, in seconds.\nDefault value: 4.000000\nDefaultTheme Sets the theme that will be loaded as a backup if the current theme cannot be loaded. If theme cannot also be found, then it will look back for \u0026quot;default\u0026quot; as the theme to load.\nDefault value: default\nDelayedBack If enabled, you must hold the back button for 0.5 seconds to exit gameplay.\nPossible values are 0 or 1. 0 is \u0026quot;Instant\u0026quot; and 1 is \u0026quot;Hold\u0026quot;.\nDefault value: 1\nDelayedCreditsReconcile This allows extra credits already present to be used for new plays. Otherwise, the required amount of credits is always required every time.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedModelDelete When enabled, model unloading is delayed.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedScreenLoad When enabled, all unloaded screens are immediately removed from memory. May result in redundant loads.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDelayedTextureDelete When on, textures are held in memory, reducing the amount of times it needs to load.\nPossible values are 0 and 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDisableScreenSaver Disables the X11 screensaver while the game is running. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nDisableUploadDir Turns off writing scores to the profile\u0026rsquo;s Upload folder.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nDisabledSongs Defines songs that will be disabled (by not making them visible or selectable) from the selection. Formatting for this follows the structure of _folder._and must be a path to the song.\nDisabledSongs=MyGroup/MySong,MyGroup2/MyOtherSong Default value: nothing\nDisplayAspectRatio The current aspect ratio, expressed as a decimal (i.e. 16:9 = 1.777778, or 16/9).\nPossible values are 9:16, 2:3, 3:4, 1:1, 5:4, 4:3, 3:2, 16:10, 16:9, 21:9, 8:3 and 32:9.\nDefault value: 1.777778\nDisplayColorDepth The current color depth is either 32 or 16. 32 is 32bit and 16 is 16bit.\nDefault value: 32\nDisplayHeight and DisplayWidth Determines the window resolution. This does not change the game\u0026rsquo;s internal resolution which is defined by the theme.\nPossible values = Any positive number.\nDefault value:\nDisplayWidth = 1280 DisplayHeight = 720 Note: The default value of this preference is not constant.\nDisplayResolution Possible values are your GPU supported resolutions.\nDisplayId The display to use for fullscreen.\nDefault value: nothing\nDisqualification If enabled, scores will not be saved if specific modifiers (such as constant BPM) are used.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nEXTIOComPort The COM port to use for the EXTIO lights driver.\nDefault value: COM1\nEasterEggs Enables or disables easter eggs, if a theme is aware of and uses this preference.\nPossible values are 0 or 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 1\nEditClearPromptThreshold Possible values are -1, 10, 50, 100, 1000, and 1000000.\nDefault value: 50\nEditRecordModeLeadIn The amount of time, in seconds, before reaching the start of the recording section in the editor.\nDefault value: 1.000000\nEditorMemoryCardOsMountPoint The mount point for the memory card system that the editor specifically uses.\nDefault value: nothing\nEditorNoteSkinP1 and EditorNoteSkinP2 The noteskin to use for the two players in the editor. P1 also affects the noteskin in the main editor.\nDefault value: default\nEditorShowBGChangesPlay Enables background scripts to be previewed when playing back a song in the editor.\nPossible values are 0 and 1. 0 is Hide and 1 is Show.\nDefault value: 1\nEnableAttackSounds Plays a sound every time an attack starts and ends. Not all themes have sounds for this, and this may not be desired if playing simfiles with a lot of scripted attacks.\nPossible values are 0 and 1. 0 is No and 1 is Yes.\nDefault value: 1\nEnableBeginnerHelperBackgrounds When enabled, a dancing character on a pad will show up during Beginner charts.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nEnableMineHitSound Plays an explosion sound if you hit a mine note.\nPossible values are 0 or 1. 0 is No and 1 is Yes.\nDefault value: 1\nEnableScoreboard Shows an online score board. Only has an effect during networked rounds.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nEventMode Also known as \u0026ldquo;Free Mode\u0026rdquo;; if disabled, each game session is divided into a maximum number of stages (arcade-style).\nPossible values are 0 or 1. 0 is Off and 1 is On (recommended).\nDefault value: 1\nExtendedChineseGlyphs This preference is obsolete.\nEnables extended Chinese glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nExtendedJapaneseGlyphs This preference is obsolete.\nEnables extended Japanese glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nExtendedKoreanGlyphs This preference is obsolete.\nEnables extended Korean glyph support.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nEffectVolume The volume used for sounds labeled as an effect. This is multiplied by the SoundVolume preference when Effects are played.\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nFailOffForFirstStageEasy When enabled, the first stage will have failing disabled when on Easy or Beginner.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nFailOffInBeginner When enabled, Beginner charts will have failing disabled.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nFastLoad Caches all songs available in your songs folder, meaning the next time you open the game it won\u0026rsquo;t have to load them again. This is recommended to be 0 when creating your charts otherwise the game might not detect your changes.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 1\nFastLoadAdditionalSongs Caches all songs available in your additionalsongfolder path, meaning the next time you open the game it won\u0026rsquo;t have to load them again. This is recommended to be 0 when creating your charts otherwise the game might not detect your changes. Cached songs will always be saved on the game folder or AppData if the portable mode is disabled.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 1\nFastNoteRendering In short, this makes the renderer stops doing z-axis corrections possibly making the performance better but notes might appear merged with another. This is recommended to be 1 when playing modfiles as those abuse its enabled behavior to make masking effects.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nForceLogFlush All logs are immediately written to disk (\u0026ldquo;Flushed\u0026rdquo;) when logging is performed.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nForceMipMaps Forces mipmapping on all textures. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nFrameLimitPercent How much the game clamps down on performance in terms of a percentage. Having 0.000000 as the value disables this feature.\nDefault value: 0.000000\nFullscreenIsBorderlessWindow Enables borderless fullscreen, which makes the window takes up the size of the screen without changing the actual resolution of the screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nGDDMRealToNew Turns all GDDM \u0026ldquo;Real\u0026rdquo; charts into \u0026ldquo;New\u0026rdquo; charts.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nGetRankingName Determine if the high score name entry screen is shown.\nPossible values are Off, On or Ranking Songs.\nDefault value: On\nGlobalOffsetSeconds The offset that gets added to every song\u0026rsquo;s own offset, in seconds.\nDefault value: -0.008000\nHarshHotLifePenalty When this is on and a player has a full life bar, the penalty when losing health is harsher than it otherwise is.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nHiddenSongs Some songs are meant to be only played courses or through roulette. Turn this off to display all songs regardless of the SELECTABLE setting of the simfile.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nHideIncompleteCourses Hide courses that don\u0026rsquo;t have all the songs it has listed available.\nPossible values are 0 and 1. 0 is \u0026quot;Off\u0026quot; and 1 is \u0026quot;On\u0026quot;.\nDefault value: 0\nHighResolutionTextures Set if high resoltuion textures are used. Not all themes support this. Auto makes high resolution happen if the window\u0026rsquo;s height is greather than 480 pixels. Unused by the engine as a whole, but still has an enum for it.\nPossible values are Auto, Force Off, and Force On.\nDefault value: Auto\nHighresScreenshotsBydefault When on, pressing the screenshot button saves high-res png screenshots. Holding shift will result in low-res compressed jpgs being saved instead.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nIgnoredDialogs Dialog types listed here won\u0026rsquo;t pop up a dialog box (Not applicable in linux systems or systems running in fullscreen)\nPossible values are FRAME_DIMENSIONS_WARNING (unused), MissingThemeElement, JSON_PARSE_ERROR (unused), UpdateCheckConfirm (unused), UpdateCheck (unused), LUA_ERROR, INVALID_GAME_COMMAND, NOTESKIN_ERROR, BROKEN_FILE_REFERENCE, SPRITE_INVALID_FRAME, COMMAND_DEFINED_TWICE, INVALID_SCREEN and XML_PARSE_ERROR.\nDefault value: nothing\nImageCache The type of image cache to use. Note that the current image cache system is considered deprecated for now.\nPossible values are Off, LowResPreload, LowResLoadOnDemand and Full.\nDefault value: \u0026ldquo;Off\u0026rdquo;\nInputBackgroundEvents Allow joystick \u0026amp; controller input to be accepted regardless of the application focus.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nInputDebounceTime How much time the input is known to bounce, in seconds. Use this if your input device doesn\u0026rsquo;t stabilize inputs quickly.\nPossible valures are 0ms (0.0), 10ms (0.01), 20ms (0.02), 30ms (0.03), 40ms (0.04), 50ms (0.05), 60ms (0.06), 70ms (0.07), 80ms (0.08), 90ms (0.09) and 100ms (0.1).\nDefault value: 0.000000\nInputDrivers The input drivers the game will use. If nothing is specified, the following defaults will be used:\nWindows: Para,legacy,minisdl\nMac: portmidi,SDL\nLinux: SDL\nThe possible values are Rtio (Windows), legacy (Windows), SDL (All platforms), Reflex (All platforms), rtmidi (All platforms), Python23IO (All platforms), portmidi (All platforms), para (All platforms) and minisdl (All platforms)\nDefault value: nothing\nInterlaced Force interlaced mode. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nJoystickDeadzone Sets the joystick dead zone for the SDL input handler. Useful if inputs are firing off when doing nothing.\nDefault value: 3200\nJointPremium A separate variant of the Premium preference meant for use on options menus. Off corresponds to the Double For 1 Credit option.\nPossible values are Off and 2 Players for 1 Credit.\nLanguage The language the game will display text in. Not all themes support all languages.\nPossible values are de (German), en (English), fr (French), he (Hebrew), ja (Japanese), nl (Dutch), pl (Polish), pt-BR (Portuguese-Brazil), sk (Slovak), zh-Hans (Chinese Simplified) and zh-Hant (Chinese Traditional)\nDefault value: nothing\nNote: The game will default to en (English).\nLastConnectedServer The previously set server to connect to.\nDefault value: nothing\nLastSeenInputDevices The previously seen input devices during the session.\nDefault value: nothing\nLastSeenVideoDriver Identifies the video card last used with the game. Automatically generated.\nDefault value: nothing\nLastSeenMemory The previously seen amount of memory the system had available. Automatically generated.\nDefault value: nothing\nLifeDifficulty How harsh the life bar is. This is meant to be used in options menus and sets the value of LifeDifficultyScale.\nPossible values are 1 (1.6), 2 (1.4), 3 (1.2), 4 (1.0), 5 (0.8), 6 (0.6), and 7 (0.4).\nDefault value: 1.000000\nLifeDifficultyScale The base life difficulty used. Going under 1.0 means smaller gains and larger losses.\nDefault value: 1.000000\nLightsAheadSeconds How far ahead the lights should be from the current song, in seconds.\nDefault value: 0.500000\nLightsComPort The COM port to use in the Win32 Serial lights driver.\nDefault value: COM54\nLightsDriver The lights driver to use for cabinet and controller lights. If nothing is provided, SystemMessage,Export is used.\nPossible values: Win32Serial (Windows), Win32Parallel (Windows), Win32Minimaid (Windows), PacDrive (Windows), SextetStreamToFile (All platforms), Satellite (All platforms), EXTIO (All Platforms), Export (All Platforms), SystemMessage (All platforms, requires DebugLights), LinuxWeedTech (Linux), PIUIO_Leds (Linux), PIUIO (Linux), LinuxParallel (Linux), LinuxPacDrive (Linux), LinuxMinimaid (Linux), ITGIO (Linux)\nDefault value: nothing\nLightsFalloffSeconds How long a cabinet light is on for, in seconds.\nDefault value: 0.100000\nLightsStepsDifficulty If there is no dedicated lights chart, generate lighting patterns from the existing charts on the specified difficulty/difficulties.\nPossible values are beginner, easy, medium, hard, challenge, edit, d7, d8, d9, d10, d11, d12, d13, d14, d15 and selected (Uses the chart selected by the player)\nDefault value: hard, medium\nLockCourseDifficulties When on, difficulties across multiple players are locked for courses.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nLogCheckpoints When on, internal code checkpoints are outputted to the logs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nLogFPS At 1 second intervals, the current FPS, average FPS, VPF, current memory usage, and delta clock data (if enabled) will be appended to the log file.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nLogLevel Determines the detail of the log files.\nPossible values are 0 through 5, with 0 providing the most detail, and 5 providing the least detail.\nDefault value: 2\nLogSkips This preference is obsolete.\nOutputs detected song position skips to the logs.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nLogToDisk Enabling this will write log files.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nLongVerSongSeconds Determines how long a song, in seconds, must be for it to be classified as \u0026ldquo;long\u0026rdquo; (which costs two stages outside of Event Mode).\nDefault value: 150.000000\nMarathonVerSongSeconds Determines how long a song must be for it to be classified as a \u0026ldquo;marathon\u0026rdquo; (which costs three stages outside of Event Mode).\nDefault value: 300.000000\nMachineName The display name to use for the machine profile.\nDefault value: nothing\nMaxHighScoresPerListForMachine The maximum number of high scores to save for a song on the machine profile.\nPossible values are 1, 2. 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 and 20.\nDefault value: 10\nMaxHighScoresPerListForPlayer The maximum number of high scores to save for a song on a player\u0026rsquo;s profile.\nPossible values are 1, 2. 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 and 20.\nDefault value: 3\nMaxInputLatencySeconds The amount of latency the input has, in seconds. Only affects the maximum step distance.\nDefault value: 0.000000\nMaxRegenComboAfterMiss The maximum amount of combo needed to start gaining life after a miss.\nDefault value: 5\nMaxSongsInEditCourse The maximum amount of edit charts allowed in a course. -1 turns off the limit.\nDefault value: -1\nMaxTextureResolution Defines the resolution at which the game will load/show textures, textures higher than the defined max resolution will have their resolution lowered. It\u0026rsquo;s not recommended to go above 2048 while OutFox is still in Alpha until further notice. Try going down to 1024 if you want more performance as 2048 is still not much used.\nPossible values are 256, 512, 1024, 2048, 4096, and 8192.\nDefault value: 1024\nMemoryCardDriver The driver to use for reading external profiles.\nPossible values are USB or Directory.\nDefault value: USB\nMemoryCardOsMountPointP1 The system mount point to use for reading USB profile data from for P1.\nDefault value: nothing\nMemoryCardOsMountPointP2 The system mount point to use for reading USB profile data from for P2.\nDefault value: nothing\nMemoryCardPadmissEnabled Allows saving scores in a format made for Padmiss.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault vlaue: 0\nMemoryCardProfileImportSubdirs Default value: nothing\nMemoryCardProfileSubdir The name of the subfolder used to store profile data on a USB device.\nDefault value: Project OutFox\nMemoryCardProfiles Enables saving profiles to USB devices.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nMemoryCardUsbBusP1 The bus to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbBusP2 The bus to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbLevelP1 The level to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbLevelP2 The level to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbPortP1 The port to use for reading P1\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCardUsbPortP2 The port to use for reading P2\u0026rsquo;s USB profile from.\nDefaut value: -1\nMemoryCards Enables the memory card system, allowing USB profiles to be used.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefaut value: 0\nMenuTimer If enabled, a timer is used in gameplay menus. Usually used in arcade or event settings.\nPossible values are 0 and 1. 0 is Off and 1 is On.\nDefault value: 0\nMercifulBeginner Beginner difficulty charts get more lenient score \u0026amp; grade, and the W5 judgment wingow is larger.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMercifulDrain Losses in the life bar are scaled by the player\u0026rsquo;s current life percentage.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMercifulSuperMeter Losses in the super meter are scaled by the player\u0026rsquo;s life percentage.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nMinPercentageForMachineCourseHighScore The minimum course score required for a high score to be saved to the machine profile.\nDefault value: 0.000100\nMinPercentageForMachineSongHighScore The minimum song score required for a high score to be saved to the machine profile.\nDefault value: 0.000100\nMinTNSToHideNotes The minimum judgement window is needed for notes to disappear after hitting them.\nPossible values are TNS_None, TNS_HitMine, TNS_AvoidMine, TNS_CheckpointMiss, TNS_Miss, TNS_W5, TNS_W4, TNS_W3, TNS_W2, TNS_W1, TNS_PRO_W5, TNS_PRO_W4, TNS_PRO_W3, TNS_PRO_W2, TNS_PRO_W1 and TNS_CheckpointHit.\nDefault value: W3\nMinimum1FullSongInCourses Ensures that the first song in a course can be played in its\u0026rsquo; entirety.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMonkeyInput A deprecated input mode no longer used on Project OutFox. This is maintained for compatibility only.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nMoveRandomToEnd Moves courses with random songs at the end of the list.\nPossible values are 0 or 1. 0 is \u0026ldquo;No\u0026rdquo; and 1 is \u0026ldquo;Yes\u0026rdquo;.\nDefault value: 0\nMovieColorDepth The color depth for use for movie files.\nPossible values are 16 or 32. 16 is 16bit and 32 is 32bit.\nDefault value: 32\nMovieDrivers The driver to use for viewing movie files.\nPossible values are MiniFFMpeg, ModernFFMpeg and Null\nDefault value: nothing\nMusicWheelSwitchSpeed How fast the music wheel can be scrolled.\nPossible values are Slow (5), Normal (10), Fast (15), and Really fast (25).\nDefault value: 15\nMusicWheelUsesSections The music wheel shows sections.\nPossible values are \u0026ldquo;Never\u0026rdquo;, \u0026ldquo;Always\u0026rdquo; and \u0026ldquo;Title Only\u0026rdquo;\nDefault value: Always\nMuteActions Mutes sound effects in menus.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nNetworkStartOffset An additional start offset, in seconds, to be used when in Gameplay online.\nDefault value: 3.000000\nNeverBoostAppPriority When set to on, the game\u0026rsquo;s priority is never boosted, even when focused.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 0\nNeverCacheList A list of song groups to never create cache for.\nDefault value: nothing\nNumBackgrounds The number of random backgrounds to use in gameplay.\nPossible values are 1, 5, 10, 15, and 20.\nDefault value: 10\nNotePathWidth This preference is obsolete.\nAltered how thick the notepath is.\nPossible values are Thin (1000), 500, 250, 150, 100, and Fat (50).\nOnlyDedicatedMenuButtons When enabled, only the menu buttons can be used to navigate the menus.\nPossible values Use Gameplay Buttons (0) and Only Dedicated Buttons (1).\nDefault value: 0\nOnlyPreferredDifficulties All charts shown in the music wheel match the chosen style and difficulty.\nPossible values are 0 or 1. 0 is \u0026ldquo;Off\u0026rdquo; and 1 is \u0026ldquo;On\u0026rdquo;.\nDefault value: 0\nOITGStyleLights When enabled, lights charts act like they would in OpenITG.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPAL Forces PAL mode. Appears to be unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPacDriveLightOrdering What lights order to send to the PacDrive.\nPossible values are minimaid, lumenar and openitg.\nDefault value: minimaid\nPadStickSeconds How long, in seconds, the pad can stick for.\nDefault value: 0.000000\nPercentageScoring If enabled and themes are aware, scores will be expressed as percentages.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPreCacheAllWheelSorts Precaches the list for all sorting types.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPreferredSortUsesGroups Makes the preferred sort show groups. Only affects Roulette sort.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nPremium Pay Mode-specific setting, allowing styles requiring two controllers (such as Double) to be played without requiring 2 credits.\nPossible values are DoubleFor1Credit, 2PlayersFor1Credit and 1PBothAtOnceFor1Credit,\nDefault value: DoubleFor1Credit\nProductID Used to track software versions for HighScores. Not the same as what the lua function ProductID provides.\nDefault value: 1\nProfileCourseEdits Load course edits from profiles.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nProfileDataCompress Compresses the profile\u0026rsquo;s Stats.xml into Stats.xml.gz.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nProfileStepEdits Load edit steps from profiles.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nProgressiveLifebar Makes every consecutive miss drain more life. Disabled in Extra Stage and the How To Play modes.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, and 8.\nDefault value: 0\nProgressiveNonstopLifebar When enabled, The lifebar gets more difficult based on how many stages in a player is. Affects the NonStop play mode.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, 8, and 9(Insanity).\nDefault value: 0\nProgressiveStageLifebar When enabled, The lifebar gets more difficult based on how many stages in a player is. Affects the Regular play mode.\nPossible values are 0(Off) or 1, 2, 3, 4, 5, 6, 7, 8, and 9(Insanity).\nDefault value: 0\nPruneFonts Prunes any unused fonts. Currently unused.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPseudoLocalize Show different characters with accents to help test the display of those.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nPython23IO_HDXB_DEV_ID The device ID of the HDXB device.\nDefault value: 3\nPython23IO_HDXB_PORT What port to use for COM4.\nDefault value: nothing\nPython23IO_Mode The IO mode to use for the Pyton board.\nPossible values are HDP3IO, HDP2IO, SDP2IO, SDP3IOHDXB, SDP3IO and ``none.\nDefault value: SDP3IO\nPython23IO_P2IO_EXTIO Specifies if the Python board has EXTIO.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nPickExtraStage Allows one to pick what to play for the Extra Stage. Currently unused.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nQuirksMode Allows legacy loading of .xml files.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nRageSoundSampleCountClamp The maximum amount of samples the audio driver should expect to avoid driver skipping. Used only in the generic software audio driver.\nDefault value: 0\nRandomBackgroundMode What is used when random backgrounds are enabled in gameplay. Animations reads from the game\u0026rsquo;s BGAnimations folder, while RandomMovies reads from the game\u0026rsquo;s RandomMovies folder.\nPossible values are \u0026quot;Off\u0026quot;, \u0026quot;Animations\u0026quot; and Random Movies\nDefault value: RandomMovies\nRateModsAffectFGChanges When active, actor tweens and modifier approaching in gameplay are affected by the music rate.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nRefreshRate The refresh rate to use when in VSync.\nPossible values are Default (0), 60, 70, 72, 75, 90, 100, 120, 144, 165, 200, and 240.\nDefault value: 0\nRegenComboAfterMiss How much combo is needed to start gaining life after a miss.\nDefault value: 5\nReverseMouseButtons Flip the left and right button inputs. Only used in the SDL input handler.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSatelliteComPort The COM device to use for the Satellite lights driver.\nDefault value: nothing\nScoreBroadcastURL The URL to send POST requests to upon finishing a song. Data sent there includes machine guid, song path, the md5 of the simfile, title and author of the song, player guid, if it\u0026rsquo;s on event mode, difficulty, chart type, score, percentage, grade and number of players.\nDefault value: nothing\nSextetStreamOutputFilename The file to use as the output pipe for the SextetStream lights driver.\nDefault value: \\.\\pipe\\StepMania-Lights-SextetStream\nShowBanners Show the song\u0026rsquo;s banner on the music wheel screen.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nShowBeginnerHelper Shows a helper if a beginner difficulty chart is currently playing.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowCaution Displays a caution screen before gameplay begins.\nPossible values are 0 or 1. 0 is \u0026ldquo;Skip\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowDancingCharacters Determines if a dancing character shows up in gameplay and how the character is chosen.\nPossible values are Default to Off, Default to Random, and Select.\nDefault value: Random\nShowDanger If the theme is aware, this can toggle visual effects used to signify low health.\nPossible values are 0 or 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowDeltaClock Adds additional information about frametime to the top right of the screen. Those values can be used to view how much time your script (from Themes or modfiles) adds to the frametime, anything above 16ms is very slow and calls for optimization, the more consistant those values are, the better the game will feel.\nPossible values are 0 or 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 0\nShowInstructions If the theme is aware, this can toggle additional tutorial screens shown in-game.\nPossible values are 0 or 1. 0 is \u0026ldquo;Skip\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowLoadingWindow Toggles the splash screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nShowLogOutput On Windows, this will open a cmd.exe window to display log output when the game is running.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nShowLyrics Shows lyrics from a .lrc file in-game if present.\nPossible values are 0 and 1. 0 is \u0026ldquo;Hide\u0026rdquo; and 1 is \u0026ldquo;Show\u0026rdquo;.\nDefault value: 1\nShowMasks Shows actors set up to be masks when they would otherwise be invisible.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowMeasureLinesInEditorPlayback Shows chart measure lines \u0026amp; beat bars in the editor\u0026rsquo;s playback mode if on.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nShowMouseCursor Determines whether the OS mouse cursor will disappear if hovered over the game window.\nPossible values: 0 or 1. 0 is Off and 1 is On. Changing this in-game might require a game restart.\nDefault value: 1\nShowNativeLanguage Toggles whether song titles are displayed in their native language (1), or a transliterated or translated form as determined in their metadata (0)\nPossible values are 0 or 1. 0 is \u0026ldquo;Romanization\u0026rdquo; and 1 is \u0026ldquo;Native Language\u0026rdquo;.\nDefault value: 1\nShowPlayerModifiersInEditor Shows a list of currently active modifiers while using preview mode.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nShowSongOptions Toggles whether the game will ask players if they wish to view the Song Options menu when exiting the player options menu, whether the screen will always be displayed, or if song options will not be accessible.\nPossible values are Ask, Hide and Show\nDefault value: Ask\nShowStats Shows an overlay in the top corner of the screen with information such as frame rate and memory usage.\nPossible values are 0 and 1. 0 is Off and 1 is On.\nDefault value: 0 (1 if in debug mode)\nShowThemeErrors If enabled, Lua errors will be displayed in an overlay at the top of the screen.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nShowTwoPlayersInEditor Show two players in the editor\u0026rsquo;s playback mode. Useful for testing modfiles that make use of two players.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nSignProfileData Sign any profiles that are loaded. May result in unusable profiles if the signing isn\u0026rsquo;t set up properly.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSmartAutoKbx Allow the game to autogen kbx mode charts from all other modes.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSmoothLines LineStrips are drawn via GPU functions instead of quads if this is turned on. Note that the thickness of the line depends on the GPU being used.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nSongBackgrounds Show the backround of the song being played.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSongBroadcastURL The URL to send POST requests to when playing a song. Data sent there includes machine guid, song path, the md5 of the ssc, the transliterated song title, song artist and if it\u0026rsquo;s in event mode.\nDefault value: nothing\nSongMinTNSToHideNotes A version of MinTNSToHideNotes meant to be used in the song-level Preferences.ini.\nDefault value: nothing\nSongNoteskins Which NoteSkins to preload when playing a song. Usually used in the song-level Preferences.ini.\nDefault value: nothing\nSongsPerPlay A number of songs per session (excluding extra stages) if EventMode is disabled.\nPossible values are 1, 2, 3, 4, and 5.\nDefault value: 3\nSongsPerPlayOrEvent Meant to be used in an options screen where it would set SongsPerPlay on the first five choices, and turn on EventMode for the last choice.\nPossible values are 1, 2, 3, 4, 5, and Event.\nSoundDevice The sound device to try to use, which is passed into the audio driver. If not specified, the audio driver will grab a device on its\u0026rsquo; own.\nDefault value: nothing\nSoundDrivers What sound driver Project OutFox will use. If not specified, the game will attempt to auto-detect which driver to use.\nPossible values are DirectSound-sw (Windows), WaveOut (Windows), ALSA-sw (Linux), alsa (Linux), Pulse (Linux), OSS (Linux), JACK (Linux), AudioUnit (MacOS) and Null.\nDefault value: nothing\nSoundLibSampleRateMode What converter libresamplerate uses when resampling audio.\nPossible values are 0 (Sinc, Best Quality), 1 (Sinc, Medium Quality), 2 (Sinc, Fastest), 3 (Zero Order Hold), 4 (Linear).\nDefault value: 2\nSoundPreferredSampleRate What sample rate the audio drivers will try to use by default.\nDefault value: 44100\nSoundPreload16bit Make the preload system use 16-bit buffers internally.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nSoundPreloadMaxSamples If an audio file has more samples than this amount, the Preload system won\u0026rsquo;t bother preloading it.\nDefault value: 1048576\nSoundVolume System sound volume.\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nSoundVolumeAttract Volume used in arcade attract mode. (Usually used to catch a person\u0026rsquo;s interest in an arcade setting)\nPossible values are Silent, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% and 100%.\nDefault value: 0.500000\nSoundWriteAhead How many frames the audio driver should read ahead. Used in the ALSA, ALSA-sw and DSound drivers.\nDefault value: 4096\nStretchBackgrounds Stretch the song\u0026rsquo;s background image. Used only in a few theme\u0026rsquo;s ScreenGameplay in transition. Unused otherwise.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 0\nStreamerMode Removes the framerate cap when the window is not focused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSubSortByNumSteps When enabled, the number of taps and holds in a chart are also taken into account when sorting by chart type and meter.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nSuperMeterPercentChange Determines how much gets added to the Rave Mode\u0026rsquo;s \u0026ldquo;Super Meter\u0026rdquo; (Charges attacks on the opponent).\nDefault values:\nSuperMeterPercentChangeCheckpointHit = 0.050000 SuperMeterPercentChangeCheckpointMiss = -0.200000 SuperMeterPercentChangeHeld = 0.040000 SuperMeterPercentChangeHitMine = -0.400000 SuperMeterPercentChangeLetGo = -0.200000 SuperMeterPercentChangeMiss = -0.200000 SuperMeterPercentChangeMissedHold = -0.000000 SuperMeterPercentChangeProW1 = 0.080000 SuperMeterPercentChangeProW2 = 0.100000 SuperMeterPercentChangeProW3 = 0.120000 SuperMeterPercentChangeProW4 = 0.140000 SuperMeterPercentChangeProW5 = 0.160000 SuperMeterPercentChangeW1 = 0.050000 SuperMeterPercentChangeW2 = 0.040000 SuperMeterPercentChangeW3 = 0.020000 SuperMeterPercentChangeW4 = 0.000000 SuperMeterPercentChangeW5 = 0.000000 TestInitialScreen Sets the first screen to go to upon opening the game. Useful for working on themes. If empty or invalid, the game uses the current theme\u0026rsquo;s InitialScreen metric.\nDefault value: nothing\nTextureColorDepth Sets the color depth of textures. Most current-day systems should work fine with 32.\nPossible values are 16 and 32. 16 is 16bit and 32 is 32bit.\nDefault value: 32\nTheme Sets what theme is used. Can be Game-specific. Note that if a theme starts with _, it cannot be used as a normal theme and will default back to default.\nBuilt-in themes: default, home\nDefault value: _fallback\nThreadedInput Creates a thread for the input driver if enabled. Affects the Windows legacy and Pump input drivers.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nThreadedMovieDecode Enabled threaded movie decoding. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nThreeKeyNavigation Determines if navigation is done with three buttons (Left/Right/Start) or five buttons (Left/Right/Up/Down/Start).\nPossible values are 0 or 1. 0 is \u0026quot;Five Key Menu\u0026quot; and 1 is \u0026quot;Three Key Menu\u0026quot;.\nDefault value: 0\nTimeMeterSecondsChange These settings define how much time (in seconds) one gains or loses based on judgment. This affects the Time-type lifebar.\nDefault values:\nTimeMeterSecondsChangeCheckpointHit = 0.000000 TimeMeterSecondsChangeCheckpointMiss = -0.000000 TimeMeterSecondsChangeHeld = 0.000000 TimeMeterSecondsChangeHitMine = -2.000000 TimeMeterSecondsChangeLetGo = -1.000000 TimeMeterSecondsChangeMiss = -4.000000 TimeMeterSecondsChangeMissedHold = -0.000000 TimeMeterSecondsChangeProW1 = 0.400000 TimeMeterSecondsChangeProW2 = 0.500000 TimeMeterSecondsChangeProW3 = 0.600000 TimeMeterSecondsChangeProW4 = 0.800000 TimeMeterSecondsChangeProW5 = 1.000000 TimeMeterSecondsChangeW1 = 0.200000 TimeMeterSecondsChangeW2 = 0.000000 TimeMeterSecondsChangeW3 = -0.500000 TimeMeterSecondsChangeW4 = -1.000000 TimeMeterSecondsChangeW5 = -2.000000 TimingWindowAdd Adds a static amount, in seconds, to all judgment windows. ITG uses 0.0015.\nDefault value: 0.000000\nTimingWindowJump How far apart simultaneous steps can be to be counted as a jump, in seconds. Only used for counting the calories used during a song.\nDefault value: 0.250000\nTimingWindowScale Applies a multiplier on the judgment windows. A higher number means tighter judgment windows.\nPossible values are 1 (1.500000), 2 (1.330000), 3 (1.160000), 4 (1.000000), 5 (0.840000), 6 (0.660000), 7 (0.500000), 8 (0.330000), and Justice (0.200000).\nDefault value: 1.000000 (4)\nTimingWindowSeconds These settings define the timing windows used in themes that do not use the Project OutFox LuaTiming system. These settings are provided for backwards compatibility purposes.\nDefault values:\nTimingWindowSecondsAttack = 0.135000 TimingWindowSecondsCheckpoint = 0.166400 TimingWindowSecondsHold = 0.250000 TimingWindowSecondsMine = 0.090000 TimingWindowSecondsProW1 = 0.000000 TimingWindowSecondsProW2 = 0.000000 TimingWindowSecondsProW3 = 0.000000 TimingWindowSecondsProW4 = 0.000000 TimingWindowSecondsProW5 = 0.000000 TimingWindowSecondsRoll = 0.500000 TimingWindowSecondsW1 = 0.022500 TimingWindowSecondsW2 = 0.045000 TimingWindowSecondsW3 = 0.090000 TimingWindowSecondsW4 = 0.135000 TimingWindowSecondsW5 = 0.180000 TrilinearFiltering Turns on trilinear filtering in the opengl renderer. This is unused in the glad renderer.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nTugMeterPercentChange These settings are used for the lifebar in battle mode.\nDefault values:\nTugMeterPercentChangeCheckpointHit = 0.002000 TugMeterPercentChangeCheckpointMiss = -0.002000 TugMeterPercentChangeHeld = 0.008000 TugMeterPercentChangeHitMine = -0.040000 TugMeterPercentChangeLetGo = -0.020000 TugMeterPercentChangeMiss = -0.020000 TugMeterPercentChangeMissedHold = 0.000000 TugMeterPercentChangeProW1 = 0.012000 TugMeterPercentChangeProW2 = 0.014000 TugMeterPercentChangeProW3 = 0.016000 TugMeterPercentChangeProW4 = 0.018000 TugMeterPercentChangeProW5 = 0.020000 TugMeterPercentChangeW1 = 0.010000 TugMeterPercentChangeW2 = 0.008000 TugMeterPercentChangeW3 = 0.004000 TugMeterPercentChangeW4 = 0.000000 TugMeterPercentChangeW5 = -0.010000 TurnOffWMCompositor Disable the current Window Manager\u0026rsquo;s compositing on linux.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUpdateCheckEnable When enabled, the game checks for online updates. Currently unused since early 2012.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 1\nUseEGLonLinux When enabled, SDL attempts to use EGL for the OpenGL context. Currently unused.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUseOldJoystickMapping Toggles between HIDAPI and XInput modes. Useful for when a controller doesn\u0026rsquo;t work in one of the modes.\nPossible values are 0 or 1. 0 is \u0026quot;XInput\u0026quot; and 1 is \u0026quot;HIDAPI\u0026quot;.\nDefault value: 1\nUsePointsandBlending Enable or disable the use of points between each section of an ActorMultiVertex or NotePath and use blending modes into it.\nPossible values are 0 or 1. 0 is No and 1 is Yes.\nDefault value: 1\nUseSongNameOnGameWindow When enabled, the title of the song currently being edited will show on the game window\u0026rsquo;s title.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUseUnlockSystem Enables the metrics.ini-driven unlock system. This affects courses, selectable mods, songs and charts.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nUsingArcadePads Tells the SDL input handler that arcade dance pads are in use, and to act accordingly based on what input system is used.\nPossible values are 0 or 1. 0 is disabled and 1 is enabled.\nDefault value: 0\nVideoRenderers Determines the renderer used by Project OutFox.\nPossible values are opengl (Legacy OpenGL), glad (Modern OpenGL) and null (Null renderer)\nDefault value: opengl\nVisualDelaySeconds Sets how much display lag to compensate for, in seconds. In-game, the choices are represented as -5 to +5\nPossible choices are -0.125, -0.100, -0.075, -0.050, -0.025, 0.000, 0.025, 0.050, 0.075, 0.100 and 0.125\nDefault value: 0.000000\nVideoUpscaleFilter Determines what upscale filter FFMPEG uses when playing videos.\nPossible values are 0 (None, fastest), 1 (Fast bilinear), 2 (Bilinear), 3 (Bicubic), 4 (X Sharpens + Contrast, 5 (Point), 6 (Area), 7 (Bicublin, recommended), 8 (Gaussian), 9 (Sinc), 10 (Lanczos) and 11 (Spline).\nDefault value: 0\nVsync Enables vertical sync (Vsync), which limits the framerate to the display\u0026rsquo;s refresh rate.\nPossible values are 0 or 1. 0 is Off and 1 is On.\nDefault value: 1\nWideScreen16_10 Meant to be used in an options screen as a simple replacement for the DisplayAspectRatio preference.\nThis is used for switching between 4:3 and 16:10.\nPossible values are On and Off.\nWhen On, DisplayAspectRatio becomes 1.600000 (16:10). Off sets it to 1.333333 (4:3) instead.\nWideScreen16_9 Meant to be used in an options screen as a simple replacement for the DisplayAspectRatio preference.\nThis is used for switching between 4:3 and 16:9.\nPossible values are On and Off.\nWhen On, DisplayAspectRatio becomes 1.777778 (16:9). Off sets it to 1.333333 (4:3) instead.\nWindowed Enables windowed mode.\nPossible values are 0 or 1. 0 is Full Screen and 1 is Windowed.\nDefault value: 1\nWritten and Maintained by Moru Zerinho6 \u0026amp; MTK\n","description":"Preferences.ini is a file that contains many of the system preferences. Some of them are accessible within Project OutFox\u0026rsquo;s settings menu, but some of them are only accessible by editing the file. Manual edits to Preferences.ini must be performed when the game is closed, or else they may be automatically overwritten.\nIt is located in the Save folder.\nList of parameters AdditionalCourseFolders Takes a comma-separated list of directories where additional course (."},{"id":126,"href":"/dev/theming/tips/","title":"Theming tips and tricks","parent":"Introduction to theming","content":"This section is meant to showcase methods to create certain kinds of actors and recommended practices that are commonly found in themes.\nVerifying Command availability While developing a theme, you may come across commands and functions that are available for current or future versions of OutFox, however it is recommended to make sure that your theme is still compatible for users that run older versions of OutFox or StepMania, and this can be done via a check for its existance.\nLet\u0026rsquo;s say for example that you want to use the GetTotalScoresWithGrade Profile function that is available in OutFox Alpha 4.15. That command is not available on previous versions nor in StepMania, so you can use an if check to verify that it exists.\n-- Since the GetTotalScoresWithGrade command is part of the Profile namespace, we need to verify it after we have -- obtained our profile from the ProfileManager namespace. local myProfile = PROFILEMAN:GetProfile( GAMESTATE:GetMasterPlayerNumber() ) -- Now let\u0026#39;s verify that the command is available. -- Note we\u0026#39;re using myProfile to verify this operation rather than PROFILE, -- and this is because the object PROFILE:GetProfile returns is the PROFILE object itself. if myProfile.GetTotalScoresWithGrade then SCREENMAN:SystemMessage(\u0026#34;Command Available!\u0026#34;) end When running OutFox Alpha 4.15 or higher, you\u0026rsquo;ll recieve the message \u0026ldquo;Command Available!\u0026rdquo; when executed; while any other build will not report the message given it\u0026rsquo;s not available on the Profile namespace.\nYou can also use this search when assigning values to provide a failsafe value in the case the function is not available via a ternary operator.\n-- If the operator passes, it will return the amount of scores from the Tier01 grade, otherwise it\u0026#39;ll return 0. local GradedScores = myProfile.GetTotalScoresWithGrade and myProfile:GetTotalScoresWithGrade(\u0026#34;Grade_Tier01\u0026#34;) or 0 Make sure to cover edge cases for commands This is a specially common case on the Music Wheel. A fundamental change was done around the 5.0.11 era that remove the wheel verification for items, making the themes responsible of dealing with such task. So in the case arrives where items need to be fetched, make sure to verify that the Index/Song/Course you\u0026rsquo;re obtaining for the SongWheelItem is not null; otherwise you\u0026rsquo;ll start recieving a lot of error messages.\n-- Let\u0026#39;s say you have a text actor that will display the name of the song of the current item on the wheel. return Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, SetMessageCommand = function(self,params) -- Setting the value like this will work and display the song name, but a moment will arrive when the wheel -- will start generating folders, or special items like random, roulette or portal, making the variable invalid while regenerating, which will throw errors. self:settext(params.Song:GetDisplayFullTitle()) -- So a better method to perform this is verifying that params exists and also params.Song exists. -- For this wheel example, params is available available, but params.Song can become null on groups. if params.Song then self:settext(params.Song:GetDisplayFullTitle()) else -- If it\u0026#39;s not available, then let\u0026#39;s clear the text so it doesn\u0026#39;t show up -- on any item that isn\u0026#39;t a song. self:settext(\u0026#34;\u0026#34;) end end } ","description":"This section is meant to showcase methods to create certain kinds of actors and recommended practices that are commonly found in themes.\nVerifying Command availability While developing a theme, you may come across commands and functions that are available for current or future versions of OutFox, however it is recommended to make sure that your theme is still compatible for users that run older versions of OutFox or StepMania, and this can be done via a check for its existance."},{"id":127,"href":"/dev/actors/ActorsLua-CommandList/","title":"Command List","parent":"Lua and Actors","content":"OutFox has actors and actors can have commands. Makes sense that there would be a lot of commands pre-defined by the game, so this is a list of what commands the game has, how and when they\u0026rsquo;re used and what parameters they give.\nCommands InitCommand\nOnCommand\nOffCommand\nBeginCommand\nEndCommand\nSetAttackCommand Called on the noteskin actor before drawing an Attack-type TapNote\nParameters:\nModifiers (string, The attack associated with the tap note.)\nUnsetAttackCommand Called on the noteskin actor after drawing an Attack-type TapNote\nScreenGainFocusCommand Called when processing the SM_GainFocus Screen Message.\nOnly used in ScreenOptionsManageProfiles, ScreenOptionsManageEditSteps and ScreenOptionsManageCourses.\nScreenLoseFocusCommand Called when processing the SM_LoseFocus Screen Message.\nOnly used in ScreenOptionsManageProfiles, ScreenOptionsManageEditSteps and ScreenOptionsManageCourses.\nLoseLifeCommand Called when losing a battery.\nPrefixed in metrics with \u0026ldquo;NumLivesP1\u0026rdquo; and \u0026ldquo;NumLivesP2\u0026rdquo;.\nGainLifeCommand Called when gaining a battery.\nPrefixed in metrics with \u0026ldquo;NumLivesP1\u0026rdquo; and \u0026ldquo;NumLivesP2\u0026rdquo;.\nAfterSetCommand Called on the TextBanner after having set the title, subtitle and artist fields. (Runs after calling SetFromSong or SetFromString)\nLoseFocusCommand Called on BGAs when fading away, on ScreenDebugOverlay\u0026rsquo;s pages when switching away, on OptionRows when switching away from a row, and other places\nGainFocusCommand Called on BGAs when fading in, on ScreenDebugOverlay\u0026rsquo;s pages when switching to them, on OptionRows when switching to a row, and other places\nFadeCommand Called when setting the brightness overlay to the actual brightness (based on cover \u0026amp; BGBrightness)\nPrefixed in metrics with \u0026ldquo;BrightnessOverlay\u0026rdquo;.\nNextPageCommand Called when switching to the next page in ScreenRanking.\nSwitchedPageCommand Called when handling the SM_HidePage Screen Message in ScreenRanking.\nReverseOnCommand Called on a column\u0026rsquo;s Receptor when the column goes beyond 50% reverse\nReverseOffCommand Called on a column\u0026rsquo;s Receptor when the column goes below 50% reverse\nLiftCommand Called on a column\u0026rsquo;s Receptor when the column stops being pressed.\nPressCommand Called on a column\u0026rsquo;s Receptor when the column gets pressed.\nProW1/ProW2/ProW3/ProW4/ProW5/W1/W2/W3/W4/W5/MissCommand Called on a column\u0026rsquo;s Receptor and noteflash when a column gets the relevant judgment.\nShowNoteUpcomingCommand Called on a column\u0026rsquo;s Receptor when the column has notes approaching\nHideNoteUpcomingCommand Called on a column\u0026rsquo;s Receptor when the column has no notes approaching\nEditCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Edit state.\nRecordCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Record state.\nRecordPausedCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the RecordPaused state.\nPlayingCommand Called on ScreenEdit\u0026rsquo;s overlay \u0026amp; underlay when entering the Playing state.\nAnimationFinishedCommand Called on a Sprite when looping an animation.\nHoldingOffCommand Called on a noteflash when ending a hold.\nRollOffCommand Called on a noteflash when ending a roll.\nHoldingOnCommand Called on a noteflash when starting a hold.\nRollOnCommand Called on a noteflash when starting a roll.\nColumnJudgmentCommand Called on a noteflash when a judgment happens. Also seen as a MessageCommand.\nParameters:\nTapNoteScore (TapNoteScore enum, The related judgment. nil for hold notes) HoldNoteScore (HoldNoteScore enum, The related judgment. nil for tap notes) Column (integer, The column the judgment happened on.) Color (string, The last color seen on the noteskin. ScreenNetSelectBase appears to modify this) JudgmentCommand (Not to be confused with the Judgment MessageCommand!)\nCalled on a noteflash when a judgment happens.\nBrightCommand Called on a noteflash when the combo is higher than the bright threshold.\nDimCommand Called on a noteflash when the combo is lower than the bright threshold.\nToggledCommand Called on the button text of ScreenDebugOverlay when the button is pressed.\nPrefixed in metrics with \u0026quot;ButtonText\u0026quot;\nDeSelCommand Called when pressing menuup or menudown on ScreenNetEvaluation.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nSelCommand Called when pressing menuup or menudown on ScreenNetEvaluation.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nTier02OrBetterCommand Called in ScreenNetEvaluation when a player got a grade of tier 2 or better.\nPrefixed in metrics with \u0026quot;User\u0026quot;\nShowCommand Called in ScreenGameplayLesson when showing a page, in OptionsList when something is selected, in DifficultyList, and on the ScreenSyncOverlay when showing help.\nHideCommand Called in ScreenGameplayLesson when hiding a page, in OptionsList when something is deselected, in DifficultyList, and on the ScreenSyncOverlay when hiding help.\nStartTransitioningCommand Called when starting a screen transition.\nGoToOptionsCommand Called when going into the Song Options menu.\nAskFroGoToOptionsCommand Called when asking if the player wants to go into the Song Options menu.\nDisabledCommand Called when showing that an OptionRow or ScreenSelectMaster choice is disabled.\nRefreshCommand Called on OptionRow when setting the ModIcon.\nParameters:\nGameCommand (GameCommand object, The related commands.) Text (string, The text that goes with the commands.) LevelCommand Called when setting the content of a PaneDisplay.\nConnectedCommand Called in ControllerStateDisplay.\nUnpluggedCommand Called in ControllerStateDisplay.\nNeedsMultitapCommand Called in ControllerStateDisplay.\nNoInputHandlerCommand Called in ControllerStateDisplay.\nSetTwoRowsCommand Called when setting an OptionsList underline to work with items in two rows.\nPrefixed in metrics with \u0026quot;Underline\u0026quot;.\nSetOneRowCommand Called when setting an OptionsList underline to work with items in one row.\nPrefixed in metrics with \u0026quot;Underline\u0026quot;.\nPositionTwoRowsCommand Called when setting an OptionsList cursor to work with items in two rows.\nPrefixed in metrics with \u0026quot;Cursor\u0026quot;.\nPositionOneRowCommand Called when setting an OptionsList cursor to work with items in one row.\nPrefixed in metrics with \u0026quot;Cursor\u0026quot;.\nTweenOffCommand Called when loading or closing an OptionRow, tweening off the debug text in ScreenGameplay, and in ScreenMapControllers.\nTransformCommand Called on the Player\u0026rsquo;s Judgment \u0026amp; Combo during `Player::Init``\nPrefixed in metrics with \u0026quot;Judgment\u0026quot; and \u0026quot;Combo\u0026quot;\nParameters:\nPlayer (PlayerNumber enum, The PlayerNumber for the combo \u0026amp; judgment.) MultiPlayer (MultiPlayer enum, The MultiPlayer for the combo \u0026amp; judgment.) iEnabledPlayerIndex (integer, The enabled player index) iNumEnabledPlayers (integer, The number of total enabled players) bPlayerUsingBothSides (boolean, If the current style has one player on both \u0026ldquo;sides\u0026rdquo;, like Doubles) bReverse (boolean, Is the player on Reverse?) bCentered (boolean, Is the player on Centered?) ResetCommand Called when resetting an OptionRow or Player Judgment.\nTweenOffCommand Called when opening an OptionRow, displaying the debug text in ScreenGameplay, and in ScreenMapControllers.\nTweenOutForwardCommand Called when tweening out of an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenOutBackwardCommand Called when tweening out of an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenInForwardCommand Called when tweening into an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nTweenInBackwardCommand Called when tweening into an OptionsList.\nPrefixed in metrics with \u0026quot;OptionsList\u0026quot;\nEnabledCommand Called when showing that a ScreenSelectMaster choice is enabled.\nSwitchToPage1Command / SwitchToPage2Command Called when switching to a different page in ScreenSelectMaster.\nPrefixed in metrics with \u0026quot;IconChoice1/2/3/4\u0026quot;, \u0026quot;ExplanationPage1/2\u0026quot;, \u0026quot;MorePage1/2\u0026quot;\nLostSelectedLoseFocusCommand Called when canceling a selection in ScreenSelectMaster.\nLostSelectedGainFocusCommand Called when canceling a selection in ScreenSelectMaster.\nChangeCommand Called when changing a selection in ScreenSelectMaster, when updating a StepsDisplayList/DifficultyList or when updating ScreenOptions.\nPrefixed in metrics with \u0026quot;CursorP1\u0026quot; and \u0026quot;CursorP2\u0026quot;in the case of ScreenSelectMaster.\nMadeChoiceP1Command / MadeChoiceP2Command Called when making a selection in ScreenSelectMaster.\nChooseCommand Called on the cursor when making a selection in ScreenSelectMaster.\nInitialSelectionCommand Called when making a selection in ScreenSelectMaster during a two-step selection.\nOffFocusedCommand Called when tweening off ScreenSelectMaster.\nOffUnfocusedCommand Called when tweening off ScreenSelectMaster.\nBackCommand Called when turning on a BG in ScreenPackages? Also when setting up the backside of the CDTitle.\nPrefixed in metrics with \u0026quot;PackagesBG\u0026quot;, \u0026quot;WebBG\u0026quot; and \u0026quot;CDTitle\u0026quot;\nAwayCommand Called when turning off a BG in ScreenPackages?\nPrefixed in metrics with \u0026quot;PackagesBG\u0026quot; and \u0026quot;WebBG\u0026quot;\nHeldCommand Called on a HoldJudgment when a hold or roll is completed.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nLetGoCommand Called on a HoldJudgment when a hold or roll is dropped.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nMissedHoldCommand Called on a HoldJudgment when a hold or roll is missed.\nPrefixed in metrics with \u0026quot;HoldJudgment\u0026quot;\nTwentyFiveMilestoneCommand Called on Player when displaying a 25 combo milestone.\nFiftyMilestoneCommand Called on Player when displaying a 50 combo milestone.\nHundredMilestoneCommand Called on Player when displaying a 100 combo milestone.\nTwoHundredFiftyMilestoneCommand Called on Player when displaying a 250 combo milestone.\nThousandMilestoneCommand Called on Player when displaying a 1000 combo milestone.\nComboCommand Called on the Player when updating the combo amount.\nParameters:\nCombo (integer, The current combo.) Misses (integer, The current number of misses.) FullComboW1 (boolean, The player currently has a full combo and the lowest TNS is W1.) FullComboW2 (boolean, The player currently has a full combo and the lowest TNS is W2.) FullComboW3 (boolean, The player currently has a full combo and the lowest TNS is W3.) FullComboW4 (boolean, The player currently has a full combo and the lowest TNS is W4.) SortOnCommand Called when tweening on the sorting screen in Music Wheels.\nPrefixed in metrics with \u0026quot;MusicWheel\u0026quot;, \u0026quot;MusicWheelItem\u0026quot; and \u0026quot;Highlight\u0026quot;\nSortOffCommand Called when tweening off the sorting screen in Music Wheels.\nPrefixed in metrics with \u0026quot;MusicWheel\u0026quot;, \u0026quot;MusicWheelItem\u0026quot; and \u0026quot;Highlight\u0026quot;\nDieCommand Called when a Player dies in Oni mode\nPrefixed in metrics with \u0026quot;OniGameOverP1\u0026quot; and \u0026quot;OniGameOverP2\u0026quot;\nSetCommand (ScreenGameplay) Called when setting a Player\u0026rsquo;s StepsDisplay?\nPrefixed in c++ with \u0026quot;SetDummy%i\u0026quot;, \u0026quot;SetP1\u0026quot; and \u0026quot;SetP2\u0026quot;\nSetReverseCommand Called on LyricsDisplay and StepsDisplay when Reverse is on.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;, \u0026quot;StepsDisplayP1\u0026quot; and \u0026quot;StepsDisplayP2\u0026quot;\nSetNoReverseCommand Called on LyricsDisplay and StepsDisplay when Reverse is off.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;, \u0026quot;StepsDisplayP1\u0026quot; and \u0026quot;StepsDisplayP2\u0026quot;\nSetOneReverseCommand Called on LyricsDisplay when Reverse is on at least one Player, but not all.\nPrefixed in metrics with \u0026quot;LyricDisplay\u0026quot;\nPauseCommand Called on ScreenGameplay when pausing the game.\nUnpauseCommand Called on ScreenGameplay when unpausing the game.\nStartOnCommand Called on ScreenGameplay\u0026rsquo;s debug text when start is held\nPrefixed in metrics with \u0026quot;Debug\u0026quot;\nBackOnCommand Called on ScreenGameplay\u0026rsquo;s debug text when the back button is held\nPrefixed in metrics with \u0026quot;Debug\u0026quot;\nStartCommand Called on ScreenGameplay\u0026rsquo;s next course song item when starting to load the next song.\nFinishCommand Called on ScreenGameplay\u0026rsquo;s next course song item when switching to the next song.\nFadeFromCachedCommand Called on FadingBanner when loading from a cached image to the actual image.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nFadeOffCommand Called on FadingBanner when loading from nothing to the actual image.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nResetFadeCommand Called on FadingBanner after performing the fade.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nRouletteCommand Called on FadingBanner when fading to the roulette banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nRandomCommand Called on FadingBanner when fading to the random banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\n\u0026lt;custom\u0026gt;Command Called on FadingBanner when fading to a custom banner.\nPrefixed in metrics with \u0026quot;Banner\u0026quot;\nSpecialKey Called on ScreenTextEntry\u0026rsquo;s cursor when on a special key.\nRegularKey Called on ScreenTextEntry\u0026rsquo;s cursor when on a regular key.\nNeverShow Called on ScreenMapControllers\u0026rsquo; warning actor if it exists.\nMappedInputCommand Called in ScreenMapControllers after having mapped a key.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nLoseMarkCommand Called in ScreenMapControllers when removing an element from the set list.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nGainMarkCommand Called in ScreenMapControllers when adding an element to the set list.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nWaitingCommand Called in ScreenMapControllers when waiting for the player to set a key after hitting enter.\nPrefixed in metrics with \u0026quot;MappedTo\u0026quot;?\nSetTextCommand Called when sanity checking the input from ScreenMapControllers.\nParameters:\nText (string, The reasons a sanity check failed.) FirstUpdateCommand Called when ScreenWithMenuElements begins the screen.\nSetHelptextCommand Called when ScreenWithMenuElements updates the HelpText.\nParameters:\nText (string, The help text.) CancelCommand Called when canceling out of a ScreenWithMenuElements menu.\nPrefixed in metrics with \u0026quot;Out\u0026quot;, \u0026quot;Cancel\u0026quot;\nChangeCommand Called when ScreenWithMenuElements begins the screen.\nFrontCommand Called when setting up the frontside of the CDTitle.\nPrefixed in metrics with \u0026quot;CDTitle\u0026quot;\nModsCommand Called during ScreenSelectMusic\u0026rsquo;s BeginScreen.\nShowEnteringOptionsCommand Called when entering the PlayerOptions menu after selecting a song.\nHidePressStartForOptionsCommand Called when hiding the prompt to enter the Player Options menu.\nSortChangeCommand Called when changing the sort order of ScreenSelectMusic\nShowPressStartForOptionsCommand Called when showing the prompt to enter the Player Options menu.\nChangeToExitCommand Called when moving the highlight line to the exit button.\nPrefixed in metrics with \u0026quot;LineHighlight\u0026quot;, \u0026quot;LineHighlightP1\u0026quot; and \u0026quot;LineHighlightP2\u0026quot;\nSelectedCommand Called when changing a value in ScreenOptions?\nUnselectedCommand Called when changing a value in ScreenOptions?\n``ChangedCommand` Called when changing the group \u0026amp; song banner in ScreenEdit as well as when updating the LyricDisplay.\nPrefixed in metrics for LyricDisplay with \u0026quot;LyricFront\u0026quot; and \u0026quot;LyricBack\u0026quot;\nPlayerStateSetCommand Called when running NoteField::Init(), can be seen in 5.0.12\u0026rsquo;s default theme with NoteField board.\nParameters:\nPlayerNumber (PlayerNumber enum, The player number for the notefield\u0026rsquo;s PlayerState.) LoadCommand (StepsDisplay) Called when running StepsDisplay::Load.\nPrefixed in metrics with \u0026quot;Frame\u0026quot; and maybe others?\nParameters:\nPlayerState (PlayerState object, The PlayerState for the given StepsDisplay.) SetCommand (StepsDisplay) Called when running StepsDisplay::SetInternal.\nPrefixed in metrics with \u0026quot;Frame\u0026quot;, \u0026quot;Ticks\u0026quot;, \u0026quot;Meter\u0026quot;, \u0026quot;Description\u0026quot;, \u0026quot;Credit\u0026quot;, \u0026quot;Autogen\u0026quot; and \u0026quot;StepsType\u0026quot;\nParameters:\nCustomDifficulty (string, Representation of the difficulty.) DisplayDescription (string, The chart\u0026rsquo;s related description.) Steps (Steps object, The steps of the chart. nil if not available.) Trail (Trail object, The trail for the course. nil if not available.) Meter (integer, The chart meter value.) StepsType (StepsType enum, The type of chart being shown.) AnalogInputCommand Called on TopScreen from InputHandler when doing analog input. As seen in ScreenTestLuaAnalog\nParameters:\nDevice (integer, The device ID(?) recorded from the input.) Button (string, The button recorded from the input.) Value` (float, The level recorded from the input.) PostSwitchPageCommand Called on ScreenSelectMaster after switching the page? Also has a MessageCommand variant?\nParameters:\nNewPageIndex (integer, The page to switch to.) PreSwitchPageCommand Called on ScreenSelectMaster before switching the page? Also has a MessageCommand variant?\nParameters:\nOldPageIndex (integer, The page to switch from.) NewPageIndex (integer, The page to switch to.) SetCommand (MusicWheelItem) Called on MusicWheelItem when loading from WheelItemData or when handling a change message.\nParameters:\nSong (Song object, The song for the wheel item.) Course (Course object, The course for the wheel item.) Index (integer, The index of the wheel item. nil if done through a change message) HasFocus (boolean, Is the wheel item focused? nil if done through a change message) Text (string, The text of the wheel item?) DrawIndex (integer, The draw index of the wheel item. nil if done through a change message) Type (string, The MusicWheelItemType.) Color (RageColor?, The color associated with the wheel item.) Label (string, The label for the wheel item.) SetGradeCommand Called on MusicWheelItem when refreshing grades.\nParameters:\nPlayerNumber (PlayerNumber enum, The player who has the grade) Grade (Grade enum, The highest grade gotten. nil if there\u0026rsquo;s no HighScoreList.) NumTimesPlayed (integer, How many times the song or course was played. nil if there\u0026rsquo;s no HighScoreList.) MenuTimerExpired Called on ScreenNameEntryTraditional when the menu timer hits zero. Also seen as a MessageCommand.\nPlayerFinishedCommand Called on ScreenNameEntryTraditional when a player finishes entering their name. Also seen as a MessageCommand.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that finished.) EntryChangedCommand Called on ScreenNameEntryTraditional when a player updates their selection text.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that updated their selection text.) Text (string, The current text. Has a _ at the end if more characters can be entered.) SelectKeyCommand Called on ScreenNameEntryTraditional when a player changes which key is being selected.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that changed the key.) Key (string, The currently selected key) SetSongCommand Called on CourseContentsList when setting the item from GameState.\nParameters:\nPlayerNumber (PlayerNumber enum, The player who selected the course) Song (Song object, The song for this part of the course) Steps (Steps object, The Steps of the song.) Difficulty (Difficulty enum, The Difficulty of the course) Meter (integer, The difficulty meter) Number (integer, The position in the course) Modifiers (string, The modifiers to apply for the song) Secret (boolean, Is the song considered a secret?) HurryTimerCommand Called on ScreenContinue when hurrying up the timer.\nParameters:\nPlayerNumber (PlayerNumber enum, The player hurrying up the timer.) LoadCommand (ScoreDisplayNormal) Called when running ScoreDisplayNormal::Init\nParameters:\nPlayerState (PlayerState object, The associated PlayerState.) PlayerStageStats (PlayerStageStats object, The associated PlayerStageStats.) SetStatusCommand Called when updating ScreenSyncOverlay.\nParameters:\nText (string, The status text.) SetAdjustmentsCommand Called when updating ScreenSyncOverlay.\nParameters:\nText (string, The adjustment text.) SetCommand (ScreenHighScores) Called when configuring the ScoreScroller.\nParameters:\nSong (Song object, The song with the high score. nil if it\u0026rsquo;s a course high score.) Course (Course object, The course with the high score. nil if it\u0026rsquo;s a song high score.) Entries (lua table, Steps data. Iterate with pairs and not ipairs.) ScrolledCommand Called when scrolling ScreenHighScores.\nParameters:\nDirection (integer, the direction.) Messages (Suffix with MessageCommand) RouletteStoppedMessageCommand Called when the music wheel is slowing down during roulette.\nStartRouletteMessageCommand Called when the music wheel is starting the roulette\nStartRandomMessageCommand Called when the music wheel chosing a random song from the Random item.\nCoinInsertedMessageCommand Called when insering a coin and clearing credits.\nThemes can use this command to update other actors about coin information (Does not send any data).\nToggleConsoleDisplayMessageCommand Called when pressing the pause key on the keyboard. Its\u0026rsquo; use in fallback is commented out and the keybind conflicts with the mute actions keybind.\nLifeChangedMessageCommand Called when updating the LifeMeter. Different LifeMeter types give different parameters.\nParameters:\nPlayer (PlayerNumber enum, The Player who\u0026rsquo;s having life differences.) LifeMeter (LifeMeter object, The LifeMeter for that player.) LivesLeft (integer, number of batteries left. nil if not using LifeMeterBattery.) LostLife (boolean, Did the player lose a life? nil if not using LifeMeterBattery.) TapNoteScore (TapNoteScore enum LuaReference, the TapNoteScore the player got. nil if not using LifeMeterTime.) HoldNoteScore (HoldNoteScore enum LuaReference, the HoldNoteScore the player got. nil if not using LifeMeterTime.) OldLife (float, the previous amount of time nil if not using LifeMeterTime.) Difference (float, the difference between the old amount of life and current amount. nil if not using LifeMeterTime.) ShowDangerAllMessageCommand Called in Background when all players are in danger of failing.\nHideDangerAllMessageCommand Called in background when all players are not in danger of failing (or if they\u0026rsquo;re all dead).\nScreenChangedMessageCommand Called when running ScreenManager::LoadDelayedScreen\nPrefixed in metrics with \u0026quot;CreditsP1\u0026quot; and \u0026quot;CreditsP2\u0026quot; when dealing with the credits text.\nSystemMessageMessageCommand Called when creating a SystemMessage\nParameters:\nMessage (string, The message itself.) NoAnimate (boolean, Do we do an animated SystemMessage?) HideSystemMessageMessageCommand Called when hiding the SystemMessage. Seemingly unused?\nRefreshCreditTextMessageCommand Called when refreshing the credits text.\nPrefixed in metrics with \u0026quot;CreditsP1\u0026quot; and \u0026quot;CreditsP2\u0026quot;.\nAutosyncChangedMessageCommand Called when changing the Autosync type from ScreenDebugOverlay.\nToggleScriptErrorMessageCommand Called when toggling the error display from ScreenDebugOverlay.\nClearScriptErrorMessageCommand Called when clearing the current lua errors from ScreenDebugOverlay.\nUpdateNetEvalStatsMessageCommand Called when updating the evaluation stats during net play.\nParameters:\nActivePlayerIndex (integer, The current active player.) Difficulty (Difficulty enum, The song\u0026rsquo;s difficulty.) Score (integer, The player\u0026rsquo;s score.) Grade (integer, The player\u0026rsquo;s grade.) PlayerOptions (string, The player\u0026rsquo;s playeroptions.) Steps (Steps object, The song\u0026rsquo;s steps. nil if they don\u0026rsquo;t exist.) ScoreChangedMessageCommand Called when loading ScoreKeeperNormal and handling score.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the score.) MultiPlayer (MultiPlayer enum, The MultiPlayer associated with the score.) ToastyCombo (integer, The current combo as the toasty sees it. nil if not coming from ScoreKeeperNormal::HandleTapRowScore) CurrentComboChangedP1MessageCommand / CurrentComboChangedP2MessageCommand Called when dealing with combo in ScoreKeeperNormal.\nToastyAchievedMessageCommand Called when a player gets the toasty.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the toasty.) ToastyCombo (integer, The current combo as the toasty sees it. nil if not coming from ScoreKeeperNormal::HandleTapRowScore) Level (integer, How many times has the player gotten a toasty?) ToastyDroppedMessageCommand Called when a player drops the toasty.\nParameters:\nPlayerNumber (PlayerNumber enum, The PlayerNumber associated with the dropped toasty.) AutoJoyMappingAppliedMessageCommand Called when automapping a joystick.\nCrossedBeatMessageCommand Called every time a beat is crossed?\nParameters:\nBeat (integer, The beat that was just crossed?) LessonClearedMessageCommand Called when clearing a lesson?\nLessonFailedMessageCommand Called when failing a lesson?\nLessonTry1MessageCommand / LessonTry2MessageCommand Called when attempting a lesson?\nStorageDevicesChangedMessageCommand Called when updating the MemoryCardManager.\nCardRemovedP1MessageCommand / CardRemovedP2MessageCommand Called when a memory card is removed?\nSongModifiedMessageCommand Called when saving sync changes while in EditMode.\nOptionsListOpenedMessageCommand Called every time an OptionsList is opened.\nParameters:\nPlayer (PlayerNumber enum, The player that opened the OptionsList.) OptionsListClosedMessageCommand Called every time an OptionsList is closed.\nParameters:\nPlayer (PlayerNumber enum, The player that closed the OptionsList.) OptionsListQuickChangeMessageCommand Called every time an OptionsList selection changes. Used when Start is used as down, and the button is left or right.\nParameters:\nPlayer (PlayerNumber enum, The player that changed the OptionsList.) Direction (integer, The direction to move.) Selection (integer, The item being selected.) OptionsListLeftMessageCommand / OptionsListRightMessageCommand Called every time an player moves on the OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that moved through the OptionsList.) Selection (integer, The item being selected.) OptionsMenuChangedMessageCommand Called when switching to a different row.\nParameters:\nPlayer (PlayerNumber enum, The player that changed to the row.) Menu (string, The menu being switched to?) OptionsListPopMessageCommand Called when popping off an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that popped off the list.) OptionsListResetMessageCommand Called when resetting an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that reset the list.) OptionsListPushMessageCommand Called when pushing an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed the list.) OptionsListStartMessageCommand Called when pushing the start button in an OptionsList.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed the start button.) Selection (integer, The item being selected.) DownloadFinishedMessageCommand Called when a download finishes in ScreenInstallOverlay.\nMenuLeftP1MessageCommand / MenuLeftP2MessageCommand / MenuDownP1MessageCommand / MenuDownP2MessageCommand / MenuUpP1MessageCommand / MenuUpP2MessageCommand / MenuRightP1MessageCommand / MenuRightP2MessageCommand Called when moving around ScreenSelectMaster, ScreenOptions or ScreenSelectProfile.\nMenuSelectionChangedMessageCommand Called when updating a menu selection on ScreenSelectMaster or ScreenOptions.\nMenuStartP1MessageCommand / MenuStartP2MessageCommand Called when pushing the start button ScreenSelectMaster or ScreenOptions.\nParameters:\nScreenEmpty (boolean, Is the screen empty?) (Is this the screen we\u0026rsquo;re about to go to?) CurrentCourseChangedMessageCommand Called when changing the course, shuffling the Workout or shuffling the course.\nComboChangedMessageCommand Called when updating the player\u0026rsquo;s Combo.\nParameters:\nPlayer (PlayerNumber enum, The player whose combo is getting updated.) OldCombo (integer, the old combo) OldMissCombo (integer, the old miss combo) PlayerState (PlayerState object LuaReference, the Player\u0026rsquo;s PlayerState. nil if it doesn\u0026rsquo;t exist.) PlayerStageStats (PlayerStageStats object LuaReference, the Player\u0026rsquo;s PlayerStageStats. nil if it doesn\u0026rsquo;t exist.) ScoreNoneMessageCommand Called when processing a TapNoteScore_None in Player.\nStepMessageCommand Called when any player steps.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that did the step.) MultiPlayer (MultiPlayer enum, The MultiPlayer that did the step.) Column (integer, the column getting stepped. 0-indexed?) StepP1MessageCommand / StepP2MessageCommand Called when any player steps. For backwards compatbility with older content.\nJudgmentMessageCommand (Not to be confused with JudgmentCommand!)\nCalled when any player gets a judgment.\nParameters:\nPlayer (PlayerNumber enum, the player that did the step.) MultiPlayer (MultiPlayer enum, The MultiPlayer that did the step.) FirstTrack (integer, The first column to hit the note.) NumTracks (integer, Number of columns with a hold? Only seen with Hold judgments.) TapNoteScore (TapNoteScore enum, the tap note score that was gotten.) HoldNoteScore (HoldNoteScore enum, the hold note score that was gotten.) Early (boolean, Was the hit early? Only seen with non-Hold judgments.) TapNoteOffset (float, How far away was the hit in seconds?) Holds (lua table, indexable by column number for everything that has a hold running. Only seen with non-Hold judgments.) Notes (lua table of TapNotes, indexable by column number for everything that has a note hit at once. Only seen with non-Hold judgments.) TapNote (TapNote object?, The TapNote for the hold. Only seen with Hold Judgments.) JudgmentMessageCommand (Mines) (Not to be confused with JudgmentCommand!)\nCalled when any player gets a judgment relating to a mine.\nParameters:\nPlayer (PlayerNumber enum, the player that did the step.) TapNoteScore (TapNoteScore enum, the tap note score that was gotten.) FirstTrack (integer, The first column to hit the mine.) JudgmentWindowMessageCommand Called when making use of luajudgments.\nParameters:\nType (string, The thing being judged.) Window (float, How far away the note was when it was hit.) score (TapNoteScore enum, Set from lua, determines the score a player should get.) timing (float, Set from lua, determines the timing window a player should use.) \u0026lt;DeviceInput\u0026gt;PressedMessageCommand / \u0026lt;DeviceInput\u0026gt;ReleasedMessageCommand Called from ScreenTestInput when recieving input. \u0026lt;DeviceInput\u0026gt; is replaced with a ToString\u0026rsquo;d input name.\nUpdateScreenheaderMessageCommand Called when updating a NetRoom\u0026rsquo;s room title.\nParameters:\nHeader (string, The header text.) Subheader (string, The subheader text.) DoneLoadingNextSongMessageCommand Called when ScreenGameplay finishes loading the next song in a course. Seems unused?\nHealthStateMessageCommand Called when a player\u0026rsquo;s HealthState changes.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that\u0026rsquo;s having their health state change.) HealthState (HealthState enum, The current health state.) OldHealthState (HealthState enum, The previous health state.) PlayerFailedMessageCommand Called when a player fails.\nParameters:\nPlayerNumber (PlayerNumber enum, the player that failed.) BeatCrossedMessageCommand Called every time a beat is crossed in ScreenGameplay. Seems unused?\nNoteCrossedMessageCommand / NoteWillCrossMessageCommand Called when a player\u0026rsquo;s note will cross or has crossed.\nParameters:\nPlayerNumber (PlayerNumber enum, the player whose note is gonna cross. nil if both players have the same style.) ButtonName (string, The column\u0026rsquo;s button.) NumTracks (integer, The number of tracks with a tap or hold head.) IsMine (boolean, Is the note a mine?) NumMessagesFromCrossed (integer, How many messages is the note away from crossing? 0 = crossed.) NoteWillCrossIn400Ms / NoteWillCrossIn800Ms / NoteWillCrossIn1200Ms Called when a note is going to cross. Refer to message names for distance?\nNoteCrossedJumpMessageCommand Called when a jump crosses.\nBeforeLoadingNextCourseSongMessageCommand Called before playing the next song transition in a course.\nChangeCourseSongInMessageCommand Called after playing the next song transition in a course.\nChangeCourseSongOutMessageCommand Called when loading the next song in a course.\n\u0026lt;PreferenceName\u0026gt;ChangedMessageCommand Called when a preference changes. \u0026lt;PreferenceName\u0026gt; is replaced with the actual preference name.\nPlayerJoinedMessageCommand Called when a player joins.\nParameters:\nPlayer (PlayerNumber enum, the player that joined.) PlayerUnjoinedMessageCommand Called when a player leaves.\nParameters:\nPlayer (PlayerNumber enum, the player that left.) GoalCompleteP1MessageCommand / GoalCompleteP2MessageCommand Called when a player completes a workout goal?\nWorkoutGoalCompleteMessageCommand Called when a player completes a workout goal during a course.\nScriptErrorMessageCommand Called when a lua script errors or reports an error.\nParameters:\nmessage (string, The error message.) DisplayLanguageChangedMessageCommand Called when switching between transliterated and native language on the music wheel (Press F9).\nStepsUnchosenMessageCommand Called when a player unselects steps.\nParameters:\nPlayer (PlayerNumber enum, The player that backed out.) SelectMenuInputMessageCommand Called in ScreenSelectMusic. Not sure when.\nParameters:\nPlayer (PlayerNumber enum, The player that caused this.) Button (string, The button that was pressed) PreviousSongMessageCommand Called when moving to the previous song in ScreenSelectMusic.\nNextSongMessageCommand Called when moving to the next song in ScreenSelectMusic.\nPreviousGroupMessageCommand Called when moving to the previous group in ScreenSelectMusic.\nNextGroupMessageCommand Called when moving to the next group in ScreenSelectMusic.\nTwoPartConfirmCanceledMessageCommand Called when canceling out of a Two-Part confirm.\nSongUnchosenMessageCommand Called when a player unselects a song.\nParameters:\nPlayer (PlayerNumber enum, The player that backed out.) PlayerOptionsChangedMessageCommand Called when a player changes their PlayerOptions through CodeDetector (ScreenSelectMusic).\nParameters:\nPlayerNumber (PlayerNumber enum, The player that performed the code.) SongOptionsChangedMessageCommand Called when a player changes the SongOptions through CodeDetector (ScreenSelectMusic).\nSelectMenuOpenedMessageCommand / SelectMenuClosedMessageCommand Called when updating the select button status on ScreenSelectMusic.\nParameters:\nPlayer (PlayerNumber enum, The player that pushed select.) ChangeStepsMessageCommand Called when changing the current steps.\nParameters:\nPlayer (PlayerNumber enum, The player that changed the steps.) Direction (integer, The direction the player went.) SongChosenMessageCommand Called when choosing the steps like in pump pro.\nStepsChosenMessageCommand Called when choosing the steps.\nParameters:\nPlayer (PlayerNumber enum, The player that chose the steps.) StartSelectingSongMessageCommand / StartSelectingStepsMessageCommand / StartFinalizedMessageCommand Called at some point in ScreenSelectMusic?\nSelectMultipleMessageCommand Called when changing the rows in ScreenOptions.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChoiceInRow (integer, The current selection in the row.) Selected (boolean, Is the current item selected?) ChangeValueMessageCommand Called when changing the value in ScreenOptions.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChangeRowMessageCommand Called when changing the rows in ScreenOptions in an absolute amount.\nParameters:\nPlayerNumber (PlayerNumber enum, The player that is changing things.) RowIndex (integer, The current row.) ChangedToExit (boolean, Is the current row an exit?) LifeMeterChangedP1MessageCommand / LifeMeterChangedP2MessageCommand Called when setting the life meter state for a given point of time.\nParameters:\nLife (float, The current amount of life.) StepsSecond (float, The point of time in the song/course) FriendsUpdateMessageCommand Called when updating the friends list?\nUsersUpdateMessageCommand Called when updating the users list?\nCurrentGameChangedMessageCommand Called when the current game changes? Seems unused?\nPlayModeChangedMessageCommand Called when the play mode changes? Seems unused?\nCoinsChangedMessageCommand Called when the amount of coins changes? Seems unused?\nPreferredSongGroupChangedMessageCommand Called when the preferred song group changes? Seems unused?\nPreferredCourseGroupChangedMessageCommand Called when the preferred course group changes? Seems unused?\nPreferredStepsTypeChangedMessageCommand Called when the preferred steps type changes? Seems unused?\nPreferredDifficultyP1ChangedMessageCommand / PreferredDifficultyP2ChangedMessageCommand Called when the preferred difficulty changes? Seems unused?\nPreferredCourseDifficultyP1ChangedMessageCommand / PreferredCourseDifficultyP2ChangedMessageCommand Called when the preferred course difficulty changes? Seems unused?\nSortOrderChangedMessageCommand Called when the sort order changes?\nCurrentSongChangedMessageCommand Called when the current song changes?\nCurrentStepsP1ChangedMessageCommand / CurrentStepsP2ChangedMessageCommand Called when the current steps change?\nCurrentCourseChangedMessageCommand Called when the current course changes?\nCurrentTrailP1ChangedMessageCommand / CurrentTrailP2ChangedMessageCommand Called when the current trail changes?\nGameplayLeadInChangedMessageCommand Called when changing the Gameplay lead-in?\nEditStepsTypeChangedMessageCommand Called when the edit steps type changes? Seems unused?\nEditCourseDifficultyChangedMessageCommand Called when the edit course difficulty changes? Seems unused?\nEditSourceStepsChangedMessageCommand Called when the edit source steps changes? Seems unused?\nEditSourceStepsTypeChangedMessageCommand Called when the edit source steps type changes? Seems unused?\nEditCourseEntryIndexChangedMessageCommand Called when the edit course entry index changes? Seems unused?\nEditLocalProfileIDChangedMessageCommand Called when the edit local profile ID changes? Seems unused?\nCurrentStyleChangedMessageCommand Called when the current style changes? Seems unused?\n","description":"OutFox has actors and actors can have commands. Makes sense that there would be a lot of commands pre-defined by the game, so this is a list of what commands the game has, how and when they\u0026rsquo;re used and what parameters they give.\nCommands InitCommand\nOnCommand\nOffCommand\nBeginCommand\nEndCommand\nSetAttackCommand Called on the noteskin actor before drawing an Attack-type TapNote\nParameters:\nModifiers (string, The attack associated with the tap note.)"},{"id":128,"href":"/dev/theming/Theming-4-Creating-Font/","title":"Creating a Font","parent":"Introduction to theming","content":"Most themes use custom fonts, which are bitmap images with a bundled INI file that contains information about its width and height information for the engine to then process as glyphs. You can think of them as images that represent each letter.\nWe have a BitmapText actor, with a default font (Common Normal) that has the following text:\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor. self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor becomes We have a BitmapText actor, with a custom that has the following text:\nDef.BitmapText{ Font = \u0026#34;_eurostile normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor. self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor becomes To create these fonts, we have a tool called Texture Font Generator, which can create the font bitmaps. Keep in mind that this software currently is Windows only.\nThe Texture Font Generator\u0026rsquo;s more recent versions export glyphs that are only compatible with OutFox. If you\u0026rsquo;d like to use the tool to generate fonts for earlier StepMania releases, use the Legacy version of the tool. Open the program and a window will pop up with a font preview and selections.\nThe smaller window area provides info into what font to use, its size to render, and vertical spacing control buttons, these are tagged on the \u0026ldquo;Overlap\u0026rdquo; text area.\nMaximum size: indicates the size of each glyph.\nPadding: changes the vertical and horizontal spacing on each glyph.\nPage: is the glyph map to render out with the current font.\nIt is recommended to use a monospaced font for GUI elements, as it allows readability and accesibility for dyslexic individuals. The tool allows for different kinds of options on what glyphs to export, which are the following:\nExporting to only numbers, which are commonly used on scoring text (shown on screenshot above) Export strokes (a separate layer of fonts that can be used for bordering) Double Resolution (A flag added to the filename, which tells the engine to render the glyph half the size for sharper text, but it will need a bigger sized font for better results) When you\u0026rsquo;re ready to export the font, click on File \u0026gt; Save, and a prompt window will appear asking the location on where to save the file. You can give the font a name, and this will be applied to all of the files exported. It\u0026rsquo;ll export the image itself containing the glyphs of the font, an Ini file containing the spacing data for each glyph and additional stroke images if the option to export strokes was enabled.\n","description":"Most themes use custom fonts, which are bitmap images with a bundled INI file that contains information about its width and height information for the engine to then process as glyphs. You can think of them as images that represent each letter.\nWe have a BitmapText actor, with a default font (Common Normal) that has the following text:\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;This is my text\u0026#34;, InitCommand = function(self) -- Center the BitmapText actor."},{"id":129,"href":"/dev/mods/Mods-13-Miscellaneous-Mods/","title":"Miscellaneous Modifiers","parent":"Guide to Modifiers","content":"These modifiers don\u0026rsquo;t really fit into any of the above categories, so they\u0026rsquo;re here instead.\n\u0026ldquo;clearall\u0026rdquo; Desc: Tells PlayerOptions to do a reset. Often used in modfiles to mimic crs-style resetting. Only available in modstring form right now.\nQuirks: N/A\nModstring format: clearall\nHoldGrainMult Desc: Adds a multiplier to the \u0026lsquo;step size\u0026rsquo; of holds, allowing one to control how \u0026lsquo;granular\u0026rsquo; a hold is. In NotITG, this is known as \u0026ldquo;granulate\u0026rdquo; or \u0026ldquo;grain\u0026rdquo; (alias).\nNegative values make the hold smoother (with a \u0026rsquo;limit\u0026rsquo; of -93.75% which results in a step size of 1 pixel), but could cost performance due to the extra calculations being done. Positive values make the hold look more polygonal (with no real limit). Very noticable on modifiers that work on position, like Drunk.\nCommon values can range from practically anywhere due to it being a multiplier. Try starting with -50% or 100% and go further if extra points or less points are desired.\nQuirks: In NotITG, this modifier works a bit differently. At 0%, the holds are drawn with the normal stepsize, but the magnitude when nonzero controls the step size in pixels (100% = step size of 1 pixel, 400% = step size of 4 pixels (normal in NotITG)). This means NotITG can have step sizes below 1 pixel.\nPlayerOptions format: HoldGrainMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: HoldGrainMult(4, 2)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; holdgrainmult\nExample: *2 400% holdgrainmult\nHoldGrainMult video example\nExtendHolds Desc: Adds a multiplier to the visual length of holds. In NotITG, this is known as \u0026ldquo;longholds\u0026rdquo;, \u0026ldquo;longboy\u0026rdquo; (alias) or \u0026ldquo;longboys\u0026rdquo; (alias).\nCommon values range from -100% to 300%\nQuirks: N/A\nPlayerOptions format: ExtendHolds(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: ExtendHolds(0.5, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; extendholds\nExample: *1 50% extendholds\nExtendHolds video example\nStraightHolds Desc: Makes holds react less to mods, similar to what holds do in \u0026ldquo;Pump It Up\u0026rdquo;. NotITG has an alias called \u0026ldquo;gayholds\u0026rdquo;, which applies negative straightholds (so 100% gayholds = -100% straightholds). There is also a column-specific variant.\nCommon values range from -100 to 200%\nQuirks: N/A\nAvailable variants (modstring): straightholds, gayholds (NotITG negative alias), straightholds\u0026lt;column\u0026gt;, gayholds\u0026lt;column\u0026gt; (NotITG negative alias for straightholds\u0026lt;column\u0026gt;)\nPlayerOptions format: StraightHolds(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StraightHolds(1, 0.2)\nColumn-specific format: StraightHoldsCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: StraightHoldsCol(3, 2, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.2 100% straightholds *0.5 200% straightholds3\nStraightHolds video example\nNotePath Desc: Draws a line that shows the path a note takes to the receptor and beyond, which means it depends on all position mods that are in the game. Known as \u0026ldquo;arrowpath\u0026rdquo; in NotITG. Effectively a \u0026lsquo;hold\u0026rsquo; that lasts the whole notefield, so it could hurt performance depending on what mods are being used. Has a column-specific variant available which is additive like Stealth \u0026amp; Dark.\nCommon values range from -100 to 100% due to the additive nature.\nQuirks: N/A\nAvailable variants (modstring): notepath, notepath\u0026lt;column\u0026gt;, arrowpath (NotITG name), arrowpath\u0026lt;column\u0026gt; (NotITG name)\nPlayerOptions format: NotePath(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NotePath(1, 0.4)\nColumn-specific format: NotePathCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NotePathCol(4, 1, 0.4)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.4 100% notepath *0.4 100% notepath4\nNotePath video example\nAvailable sub modifiers: NotePathBlendMode Desc: Set the blend mode used for the NotePath. This does not have a modstring form, and in NotITG, is only available in Player.\nPlayerOptions format: NotePathBlendMode(\u0026lt;blend mode\u0026gt;)\nNotITG Player format: SetArrowPathBlendMode(\u0026lt;blend mode\u0026gt;)\nNotePathDrawMode Desc: Set the secondary draw mode used for the NotePath. It allows for different \u0026rsquo;looks\u0026rsquo; for the notepath. For example, \u0026ldquo;DrawMode_Fan\u0026rdquo; creates a veil-type visual with 50% NotePath, while \u0026ldquo;DrawMode_Lines\u0026rdquo; creates a dotted line.\nThis does not have a modstring form and does not reset with a clearall.\nPlayerOptions format: NotePathDrawMode(\u0026lt;draw mode\u0026gt;)\nNotePathGrainMult Desc: Allows for adjusting the step size like what HoldGrainMult does for holds. The same notes from there apply here.\nAvailable variants (modstring): notepathgrainmult, arrowpathgranulate (NotITG name), arrowpathgrain (NotITG alias)\nPlayerOptions format: NotePathGrainMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNotePathWidth Desc: Allows for adjusting how wide the notepath is. It\u0026rsquo;s added onto the default, which is one pixel in theme-space.\nAt the moment, there is a GPU-enforced limit on the actual width. In NotITG, this can be worked around by turning off smoothlines (Which uses CPU-based quads, also has a side-effect of showing depth in the lines)\nAvailable variants (modstring): notepathwidth, arrowpathsize (NotITG name), arrowpathgirth (NotITG alias), arrowpathwidth (NotITG alias)\nPlayerOptions format: NotePathWidth(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNotePathDrawSize Desc: Where DrawSize affects the notefield\u0026rsquo;s rendering space, this affects the rendering space of NotePath. This is unaffected by normal DrawSize, but the rendering space starts out the same as a whole notefield.\nAvailable variants: NotePathDrawSize (Affects area below the receptors), NotePathDrawSizeBack (Affects area above the receptors)\nAvailable variants (modstring): notepathdrawsize, notepathdrawsizeback, arrowpathdrawsize (NotITG name for notepathdrawsize), arrowpathdrawsizefront (NotITG alias for notepathdrawsize), arrowpathdrawdistance (NotITG alias for notepathdrawsize), arrowpathdrawdistancefront (NotITG alias for notepathdrawsize), arrowpathdrawsizeback (NotITG name for notepathdrawsizeback), arrowpathdrawdistanceback (NotITG alias for notepathdrawsizeback)\nPlayerOptions format: \u0026lt;NotePathDrawSize variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nModTimer Desc: Allows one to set the timer used by many modifiers.\nThese are the following types (denoted as \u0026lt;type\u0026gt;):\n\u0026lsquo;ModTimerType_Default\u0026rsquo; just go with the game\u0026rsquo;s default timer type (5.2 defaults to song, 5.1 \u0026amp; OutFox default to game) \u0026lsquo;ModTimerType_Game\u0026rsquo; (Use the game\u0026rsquo;s current uptime in seconds.) \u0026lsquo;ModTimerType_Song\u0026rsquo; (Use the song\u0026rsquo;s current time in seconds.) \u0026lsquo;ModTimerType_Beat\u0026rsquo; (Use the song\u0026rsquo;s current beat.) Often, song time is used as the setting.\nQuirks: In NotITG, this is done by a single name (\u0026ldquo;modtimer\u0026rdquo;, \u0026ldquo;timer\u0026rdquo; or \u0026ldquo;globalmodtimer\u0026rdquo;) with magnitudes. 0% = game time, 100% = song time, 200% = song beat.\nAvailable variants (modstring): modtimerdefault, modtimergame, modtimersong, modtimerbeat\nPlayerOptions format: ModTimerSetting(\u0026lt;type\u0026gt;)\nExample: ModTimerSetting('ModTimerType_Beat')\nModstring format: \u0026lt;modstring variant\u0026gt;\nExample: modtimerbeat\nAvailable sub modifiers:\nModTimerMult Desc: Add a multiplier onto the timer used for modifiers. 100% = 2x, -50% = 0.5x.\nAvailable variants (modstring): modtimermult, timermult (NotITG alias), globalmodtimermult (NotITG alias)\nPlayerOptions format: ModTimerMult(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nModTimerOffset Desc: Offset the timer used for modifiers. 100% = 1 time unit.\nAvailable variants (modstring): modtimeroffset, timeroffset (NotITG alias), globalmodtimeroffset (NotITG alias)\nPlayerOptions format: ModTimerOffset(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNoteSkew Desc: Applies skew on the notes and receptors. Does not affect holds. Comes in skewx \u0026amp; skewy variants, and is also column-specific. NotITG calls the skewx variant \u0026ldquo;noteskew\u0026rdquo; because they originally only had skewx.\nCommon values range from -200 to 200%\nQuirks: N/A\nAvailable variants: NoteSkewX, NoteSkewY\nColumn-specific variants: NoteSkewXCol, NoteSkewYCol\nAvailable variants (modstring): noteskewx, noteskewx\u0026lt;column\u0026gt;, noteskew (NotITG name), noteskew\u0026lt;column\u0026gt; (NotITG name), noteskewy, noteskewy\u0026lt;column\u0026gt;\nPlayerOptions format: \u0026lt;NoteSkew variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;) Example: NoteSkewX(0.7, 4)\nColumn-specific format: \u0026lt;NoteSkewCol variant\u0026gt;(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NoteSkewXCol(1, 0.25, 0.25, true):NoteSkewXCol(2, 0.5, 0.5, true):NoteSkewXCol(3, 0.75, 0.75, true):NoteSkewXCol(4, 1, 1)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *4 70% noteskewx *0.25 25% noteskewx1, *0.5 50% noteskewx2, *0.75 75% noteskewx3, *1 100% noteskewx4\nNoteSkewX video example\nAvailable sub modifiers: noteskewtype (NotITG only) Desc: When active, the note skews get rotated (but not the receptors). In SM5, this can be often (mostly) replicated in dance by using the negative amount of NoteSkewY on columns 1 and 4.\nAvailable variants (modstring): noteskewtype, skewtype (alias)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nTrigClip Desc: Performs clipping on the trigonometric waves used in many modifiers and their variants.\nThe following are available:\nSinClip (sine wave clipping. Affects Wave (all non-tan variants), SpiralY, Bumpy (all non-tan variants), Beat (all variants), Zigzag (All variants), Digital (All non-tan variants), Bounce (All variants), Blink (All variants), Pulse (all non-tan variants), CosClip (cosine wave clipping. Affects Tornado (all non-tan varians), Tipsy (all non-tan variants), Expand, Drunk (all non-tan variants), SpiralX TanClip (tangent wave clipping, use values close to 100% for visible effects. Affects all tangent variants of all modifiers) Quirks: Going beyond 100% may result in interesting effects on some modifiers. In NotITG, this was \u0026lsquo;fixed\u0026rsquo;.\nCommon values range from 50 to 100%\nPlayerOptions format: \u0026lt;TrigClip variant\u0026gt;(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: CosClip(0.5, 0.5)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: *0.5 50% cosclip\nCosClip video example\nDisableMines Desc: When active, stepping on mines will not have any effect. Useful if you want to place mines for aesthetic purposes, but don\u0026rsquo;t want to penalize players for ghost-tapping.\nQuirks: N/A\nPlayerOptions format: DisableMines(\u0026lt;enable\u0026gt;)\nExample: DisableMines(true)\nModstring format: \u0026lt;enable\u0026gt; disablemines\nExample: disablemines\nZBuffer Desc: When active, the zbuffer gets enabled regardless of modifiers active. Can act as an alternate way to enable zbuffer instead of using low amounts of z position modifiers. NotITG also allows having negative values to force it off. When the zbuffer is enabled, holds draw at a step size of 4 instead of 16. Also has \u0026ldquo;ztest\u0026rdquo; as an alias in NotITG.\nQuirks: N/A\nPlayerOptions format: ZBuffer(\u0026lt;enable\u0026gt;)\nExample: ZBuffer(true)\nModstring format: \u0026lt;enable\u0026gt; zbuffer\nExample: zbuffer\nCosecant Desc: When active, all tangent modifiers use a cosecant wave instead of a tangent wave, mimicking how NotITG v1 did tangent wave modifiers. Known as \u0026ldquo;cosec\u0026rdquo; or \u0026ldquo;glitchytan\u0026rdquo; (alias) in NotITG.\nQuirks: N/A\nPlayerOptions format: Cosecant(\u0026lt;enable\u0026gt;)\nExample: Cosecant(true)\nModstring format: \u0026lt;enable\u0026gt; cosecant\nExample: cosecant\nCosecant video example\nWireFrame Desc: A Column-specific modifier that allows setting the column to use wireframe mode for notes and holds. NotITG has a modstring alias that hits all columns.\nQuirks: Using a 3D noteskin is recommended if using this modifier.\nAvailable variants (modstring): wireframe\u0026lt;column\u0026gt;, wireframe (NotITG alias that hits all columns)\nPlayerOptions format: WireFrameCol(\u0026lt;column\u0026gt;, \u0026lt;enable\u0026gt;)\nExample: WireFrameCol(2, true)\nModstring format: \u0026lt;enable\u0026gt; \u0026lt;modstring variant\u0026gt;\nExample: wireframe2\nWireFrame video example\nAvailable sub modifiers: WireFrameWidth Desc: Like how NotePath has a width sub modifier, this affects the width of the wireframe lines.\nAvailable variants (modstring): wireframewidth\u0026lt;column\u0026gt;, wireframegirth\u0026lt;column\u0026gt; (NotITG alias), wireframewidth (NotITG alias that hits all columns), wireframegirth (NotITG alias that hits all columns)\nPlayerOptions format: WireFrameWidthCol(\u0026lt;column\u0026gt;, \u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nModstring format: *\u0026lt;approach rate\u0026gt; \u0026lt;magnitude\u0026gt; \u0026lt;modstring variant\u0026gt;\nNoteSkin Desc: Get and set the NoteSkin for the player.\nQuirks: Returns both the previous name \u0026amp; if the set succeeded upon being given a string. Cannot be used to change noteskins mid-song (If forcing a noteskin, you have to reload the screen) like what OpenITG/SM3.95/NotITG has.\nPlayerOptions format: NoteSkin(\u0026lt;noteskin name\u0026gt;)\nExample: NoteSkin('Metal')\nModstring format: \u0026lt;noteskin name\u0026gt;\nExample: metal\nNoteSkinCol Desc: Allow getting and setting the noteskin on a column-basis. Unlike NoteSkin, this allows for changing the noteskin mid-song.\nWhen used on a single column, the receptors will not change.\nWhen \u0026lt;column\u0026gt; is nil, all columns will use the requested noteskin, and the receptors will change to match.\nQuirks: Requires a Preferences.ini for the song that lists the noteskins to load. May not play nice when the noteskin isn\u0026rsquo;t loaded. NOTESKIN:DoesNoteSkinExist could be used to ensure the noteskin exists before setting. The change is instant unlike noteskin changes done through attacks in OpenITG/SM3.95/NotITG.\nPlayerOptions format: NoteSkinCol(\u0026lt;column\u0026gt;, \u0026lt;noteskin name\u0026gt;)\nExample: NoteSkinCol(nil, 'lambda')\nModstring format: \u0026lt;noteskin name\u0026gt; noteskin\u0026lt;column\u0026gt; (ommitting column will hit all columns)\nExample: lambda noteskin\nNoteSkinCol video example\nLifeSetting Desc: Set the lifebar type to be used. There are three types (denoted as \u0026lt;type\u0026gt;):\nBar (The normal lifebar most people are used to.) Modstring form is \u0026ldquo;bar\u0026rdquo;. Battery (Mess up a certain number of times and you fail the song) Modstring form is \u0026ldquo;battery\u0026rdquo;. Time (You have a limited amount of time to live. Hit notes better to gain time.) Modstring form is \u0026ldquo;lifetime\u0026rdquo;. Quirks: This cannot be set during gameplay. It must be set before entering ScreenGameplay.\nPlayerOptions format: LifeSetting(\u0026lsquo;LifeType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: LifeSetting('LifeType_Time')\nModstring format: \u0026lt;type\u0026gt;\nExample: lifetime\nDrainSetting Desc: Set how the lifebar\u0026rsquo;s health behavior works. There are three drain types (denoted as \u0026lt;type\u0026gt;):\nNormal (The health goes up and down at the expected rate.) Modstring form is \u0026ldquo;normal-drain\u0026rdquo;. NoRecover (The health only goes down.) Modstring form is \u0026ldquo;norecover\u0026rdquo; or \u0026ldquo;power-drop\u0026rdquo;. SuddenDeath (Getting any judgment below the required one will instantly kill you.) Modstring form is \u0026ldquo;suddendeath\u0026rdquo; or \u0026ldquo;death\u0026rdquo;. Quirks: Initial health will start at 100% when not using Normal drain. Initial health for Normal is a theme metric, as well as the minimum judgment for SuddenDeath. This also works mid-gameplay, allowing for sections that require good accuracy.\nPlayerOptions format: DrainSetting(\u0026lsquo;DrainType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: DrainSetting('DrainType_NoRecover')\nModstring format: \u0026lt;type\u0026gt;\nExample: norecover\nBatteryLives Desc: Set how many lives are available in the Battery life bar at the start. Probably shouldn\u0026rsquo;t be set mid-gameplay.\nQuirks: N/A\nPlayerOptions format: BatteryLives(\u0026lt;number of lives\u0026gt;)\nExample: BatteryLives(5)\nModstring format: \u0026lt;number of lives divided by 100\u0026gt; lives\nExample: 0.05% lives\nRandAttack Desc: When active, random attacks will be launched throughout the song. Any nonzero magnitude will activate it. Cannot be set through modstrings.\nQuirks: The attacks chosen come from /Data/RandomAttacks.txt\nPlayerOptions format: RandAttack(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: RandAttack(1,1)\nNoAttack Desc: When active, RandAttack is canceled out. Any nonzero magnitude will activate it. Cannot be activated through modstrings.\nQuirks: N/A\nPlayerOptions format: NoAttack(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: NoAttack(1,1)\nPlayerAutoPlay Desc: When active, AutoPlay will be set on the player. Cannot be set through modstrings.\nQuirks: Do not set this during gameplay. Attempting to enable it will result in no input for the player and no autoplay, which will result in a stage fail.\nPlayerOptions format: PlayerAutoPlay(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: PlayerAutoPlay(1, 1)\nPassmark Desc: Set what life amount is required to pass a stage. Cannot be set through modstrings.\nQuirks: N/A\nPlayerOptions format: Passmark(\u0026lt;magnitude\u0026gt;, \u0026lt;approach rate\u0026gt;)\nExample: Passmark(0.5, 2)\nMuteOnError Desc: When active, keysounds will not play upon errors (letting go hold notes and/or missing).\nQuirks: N/A\nPlayerOptions format: MuteOnError(\u0026lt;enable\u0026gt;)\nExample: MuteOnError(true)\nModstring format: \u0026lt;enable\u0026gt; muteonerror\nExample: muteonerror\nFailSetting Desc: Set how failing a song works. There are four drain types (denoted as \u0026lt;type\u0026gt;):\nImmediate (Song ends the moment you fail) Modstring forms are \u0026ldquo;failimmediate\u0026rdquo; and \u0026ldquo;failarcade\u0026rdquo;. ImmediateContinue (Song continues after failure, but you still fail at the end) Modstring forms are \u0026ldquo;failendofsong\u0026rdquo; and \u0026ldquo;failimmediatecontinue\u0026rdquo;. EndOfSong (Failure status is determined at the end of the song) Modstring form is \u0026ldquo;failatend\u0026rdquo;. Off (You cannot fail.) Modstring form is \u0026ldquo;failoff\u0026rdquo;. The default can be set in modstrings through \u0026ldquo;faildefault\u0026rdquo;\nQuirks: N/A\nPlayerOptions format: FailSetting(\u0026lsquo;FailType_\u0026lt;type\u0026gt;\u0026rsquo;)\nExample: FailSetting('FailType_Off')\nModstring format: \u0026lt;type\u0026gt;\nExample: failoff\n","description":"These modifiers don\u0026rsquo;t really fit into any of the above categories, so they\u0026rsquo;re here instead.\n\u0026ldquo;clearall\u0026rdquo; Desc: Tells PlayerOptions to do a reset. Often used in modfiles to mimic crs-style resetting. Only available in modstring form right now.\nQuirks: N/A\nModstring format: clearall\nHoldGrainMult Desc: Adds a multiplier to the \u0026lsquo;step size\u0026rsquo; of holds, allowing one to control how \u0026lsquo;granular\u0026rsquo; a hold is. In NotITG, this is known as \u0026ldquo;granulate\u0026rdquo; or \u0026ldquo;grain\u0026rdquo; (alias)."},{"id":130,"href":"/dev/theming/Theming-Scripts/","title":"Scripts","parent":"Introduction to theming","content":"Introduced in StepMania 3.95, Scripts are Lua files that are loaded globally to the engine. These are always available to use, from anywhere in the theme. However, it is advised to use these sparingly to avoid unnecesary carry over of data, overlapping variable names with other existing Lua naming scopes, and others.\nIt is recommended practice to ensure script data is kept to a minimum to avoid collision with objects like song data, scores, player data, mods, profile information, song rates, and others.\nAn example of a script file can be the following:\nMyGlobalObject = {} -- Add some objets to this variable. MyGlobalObject.CustomFunction = function( val ) SCREENMAN:SystemMessage( \u0026#34;I\u0026#39;ve just recieved \u0026#34;.. val ) end Usage example:\nreturn Def.Actor{ OnCommand=function(self) -- Notice how this object is called, but there\u0026#39;s no presence of MyGlobalObject on this actor or even -- the file at all; given it\u0026#39;s loaded into memory. MyGlobalObject.CustomFunction( \u0026#34;a custom string!\u0026#34; ) end } Clearing an object As mentioned on the introduction, it is advised to keep this at a minimum, and also to clean these objects when not in use anymore.\n-- Let\u0026#39;s say MyGlobalObject is filled to the brim with number objects. MyGlobalObject = { 0.41534, 0.23452342, 0.23452342, ... } -- to clean the object, just reasign the value back to an empty table. MyGlobalObject = {} ","description":"Introduced in StepMania 3.95, Scripts are Lua files that are loaded globally to the engine. These are always available to use, from anywhere in the theme. However, it is advised to use these sparingly to avoid unnecesary carry over of data, overlapping variable names with other existing Lua naming scopes, and others.\nIt is recommended practice to ensure script data is kept to a minimum to avoid collision with objects like song data, scores, player data, mods, profile information, song rates, and others."},{"id":131,"href":"/dev/translation/","title":"Translation","parent":"Developers and Creators","content":"Are you translating a theme to another language? Reading this might help you.\nWhere are language files stored Inside every theme, there\u0026rsquo;ll be a Languages folder. Inside that folder is where language files are stored. Example:\nLanguages/ en.ini ja.ini Here we can see 2 language files: en for English and ja for Japanese. It\u0026rsquo;s a standard to name language files in that format (language-COUNTRY.ini). For example: In this case, there\u0026rsquo;s a Portuguese translation, but since there\u0026rsquo;s also Portuguese from Portugal, the file was named pt-BR (BR = Brazil).\nFallback You probably already noticed a _fallback theme in the themes folder, but in case you didn\u0026rsquo;t: it\u0026rsquo;s where things that are necessary for every theme gets stored, so when someone is making a theme the game doesn\u0026rsquo;t blow up. The same goes for Languages: it\u0026rsquo;s important to also translate the fallback for your language because the theme you\u0026rsquo;re translating might not have every string that it uses on its folder.\nStarting a translation To start your work, create a new file for your language(-COUNTRY, if needed), and don\u0026rsquo;t forget to use the .ini extension. You can do this on Notepad with no problem but it\u0026rsquo;s recommended to use an editor like Visual Studio Code or Notepad++.\nNow open en.ini and your new language file, then copy all the content from en.ini to your language file. You can close en.ini now.\nLanguage file name standard The language code used for your language file should follow ISO-1 Language codes, while the COUNTRY CODE should follow ISO 3166-1 Alpha-2 code.\n⚠️ StepMania Engine doesn\u0026rsquo;t have proper support for more than 2 letters language files: Both StepMania and OutFox, as the date of writting this document, do not follow ISO-1 and ISO 3166-1 standards, however, new languages should not abide by non-standards of StepMania Engine quirks. Your language will still be able to be selected and used, however, instead of showing the Language name, it will show the language code and users won\u0026rsquo;t have the game auto-select the language for them. This will later be fixed at least for OutFox, following this issue.\nWhat you should translate This is a code example taken from the Soundwaves theme.\n[Common] WindowTitle=Project OutFox StepMania=Project OutFox # Dedicated Character Display strings ModelLoadError=Model for %s (%s) Has a invalid model. Please check if the model.txt file is correctly named and formatted. ModelAnimLoadError=An animation file for %s\u0026#39;s model (%s) is invalid or non-existant. Please check the animation folders and see if there\u0026#39;s any file missing. LocationLoadError=Current Location (%s) is missing its location model. Please check if the model.txt file is correctly named and formatted. SongLoaderSingleSong=Random Song Play: Current Folder only contains 1 song. OutFox might get confused when picking the song via random. Selecting to index 1. SongLoaderNoSongs=Random Song Play: No songs were found in your OutFox install folder! Switching back to fallback music. Do not translate WindowTitle or StepMania keys. Do not translate the name \u0026ldquo;Project OutFox\u0026rdquo;.\nYou can see on this image and your file that every line has a Title=Value, and that\u0026rsquo;s how translation works on OutFox, you need to translate the value of the titles and you\u0026rsquo;re done. The theme does all the work of what string it should use.\nNow, you can\u0026rsquo;t just translate everything that you see. On ModelLoadError for example, there\u0026rsquo;s a \u0026ldquo;%s\u0026rdquo; that means the theme or the game will put a string replacing that %s.\nAn example of that can be seen on the string %d Song Played that you\u0026rsquo;ll see on the next image.\n[Screen] HelpText=\u0026amp;BACK; Exit \u0026amp;START; Select \u0026amp;SELECT; Options \u0026amp;MENULEFT;\u0026amp;MENURIGHT;\u0026amp;MENUUP;\u0026amp;MENUDOWN; Move [ScreenWithMenuElements] HelpText=\u0026amp;BACK; Exit \u0026amp;START; Select \u0026amp;MENULEFT;\u0026amp;MENURIGHT; Move StageCounter=%s Stage EventStageCounter=Song %i You\u0026rsquo;ll also see lines like \u0026amp;START;, \u0026amp;SELECT; etc. They\u0026rsquo;re buttons that will be replaced once the game draws that string. Let\u0026rsquo;s see one of those strings in action?\n[ScreenSelectProfile] SingularSongPlayed=%d Song Played SeveralSongsPlayed=%d Songs Played PressStart=Press \u0026amp;START; to join. Here we can see that \u0026amp;START; gets replaced by a green square that represents the start button, and %d gets replaced by a number that\u0026rsquo;s how many songs that profile played.\nAnother special string is \\n. It creates a line break. For example, First Line\\nSecondLine would result in:\nFirst Line\nSecond Line\nHere\u0026rsquo;s an example in action from _fallback/en.ini:\nText Context You might also want to translate the theme in a way that someone who has never played before will understand, instead of expecting everyone to already know what everything is. A new player might not understand what \u0026ldquo;holds\u0026rdquo; means if that word is translated to your language, but if it was kept as \u0026ldquo;holds\u0026rdquo; the user would know that it\u0026rsquo;s the literal name of the thing and not something that should make sense in your language.\nAnother hard example is steps: in OutFox, there are 2 kinds of steps. The ones that you press in gameplay and the steps of the chart made by the author (easy steps, hard steps\u0026hellip;). In English, it\u0026rsquo;s easy to only say steps because it makes sense for both, but that isn\u0026rsquo;t the case with every language. That\u0026rsquo;s why it was decided to keep it named \u0026ldquo;steps\u0026rdquo; for the pt-BR translation of Soundwaves, for example.\nCommunity Translations for Soundwaves (OutFox default until Alpha V) Many folks are already helping translate the new Soundwaves theme for various languages. As requested by one of our translators, we\u0026rsquo;ll mention those projects below to give them some visibility and encourage more people to join and help.\n° Polish - Done by Moneko\n° Japanese - Done by はぬべき(hanubeki)\n° Portuguese-Brazilian - Done by zerinho6, SHRMP0 and SheepyChris\n° German - Done by DanielRotwind\n° Hebrew - Done by Snil4\n° French - Done by Ksempac and Kaede573\n° Español - Done by JoseVarelaP\n° Hungarian - Done by KaZo75\n° Italian - Done by Gabrimax\n° Simplified Chinese - Done by jerrymyx\n° Slovak - Done by jose1711\nTools and Practices Translating can be tedious. Sometimes it\u0026rsquo;s hard to locate \u0026amp; remove lines that shouldn\u0026rsquo;t be there or find missing ones. Because of that, translators themselves create tools to make our job easier and faster.\nTranslation Toolkit Translation Toolkit is a tool made by Ksempac to help remove lines that are not needed anymore, warn about lines that are missing, check your progress, etc. It supports Linux, Mac, and Windows.\nThis project is intended as a small application to automate some tasks for translators.\nIt is able to parse, analyze and fix the OutFox translation files.\nStepmania-TranslatorViewMaker Stepmania-TranslatorViewMaker is a tool made by Snil4. It supports any OS that has Python 3 installed.\nHave you ever tried to translate a program like OutFox and wondered \u0026ldquo;Hmm, now where can I find that line in the .ini?\u0026rdquo; Now there\u0026rsquo;s no need to wonder! This program will make a translator view file for your translation .ini and make your translation job easier.\nfini fini is a tool made by moruzerinho6\nAdds a extra build process where you can additional features that are not available on default ini file. Use:\n\u0026ldquo;Fini-\u0026rdquo; lines that allow you to specify another file to load it and expert a section/line/value from it. You can separate whole screens to specific files and only merger then together when building. You can make many lines depend on a specific file line, meaning you\u0026rsquo;ll later only need to change that file and effect many others. RTL variable to reverse the text only after you build the files. Any valid ini file is supported, meaning you don\u0026rsquo;t have to remake all your previous work Best practices Be constant with your words When doing a mention of \u0026ldquo;Steps\u0026rdquo;, ask yourself: is it clear which \u0026ldquo;type of Steps\u0026rdquo; you\u0026rsquo;re referring to? We have the following \u0026ldquo;types of steps\u0026rdquo;:\nSteps, which means the notes inside of the chart or the note count. StepDifficulty, which means the difficulty selected of the chart, such as Novice, Expert, Hard. Step, which means the action of stepping in the pad or a single note. StepType, which means the quantization (timing/color) of the note (e.g. 4th = red, an entire beat; 8th = blue, half a beat; etc). Soundwaves does not have this issue as it says \u0026ldquo;Taps\u0026rdquo; instead of Steps and directly says the difficulty.\nReload translations Imagine you\u0026rsquo;re editing the Soundwaves ScreenCaution and want to see how the translated string looks. You don\u0026rsquo;t need to restart the entire game to see the changes, here\u0026rsquo;s what you should do instead: Exit the screen you just translated, reload the metrics (Shift + Insert; or Shift + F2 on older alpha versions) and enter the screen again.\nSome themes might have a problem where not all strings are updated when metrics are reloaded due to how they are made. In that case, unfortunately, the only option is to restart the game.\nOutFox Releases Now that you have translated the latest alpha, you need to send it to OutFox somehow. This tutorial explains how you can do it!\nThe first thing to keep in mind is that each OutFox translation is hosted inside Tiny-Foxes to easily maintain and keep track of updates, so contact Team Rizu through any of their available social media profiles to get invited into Tiny-Foxes.\nIt is also required to know how git and Github work.\nThe exact steps are:\nCreate a Github account Download and learn basic git commands such as (git status, git push, git pull, git commit and git checkout) Learn how GitHub organization works. Having an editor such as Visual Studio Code will make git interactions way easier as those commands are available by the interface.\nRepository OutFox translation repositories adhere to a standard style. The repository title should be:\n\u0026ldquo;OutFox-[languageFileName[-COUNTRY]]\u0026rdquo;\n\u0026quot;-COUNTRY\u0026quot; should only be added in special cases (example: there\u0026rsquo;s Portuguese from Portugal and Brazilian Portuguese, so the Portuguese-Brazilian language file is \u0026ldquo;pt-BR.ini\u0026rdquo;).\nThe description of the repository should be:\n\u0026ldquo;[Language Name] ([languageFileName]) Translation for Project OutFox\u0026rdquo;\u0026quot;\nHere\u0026rsquo;s an example:\nOutFox-ja Japanese (ja) Translation for Project OutFox Repository Format The repository should have 2 folders: \u0026ldquo;_fallback\u0026rdquo; and \u0026ldquo;default\u0026rdquo;. Inside the _fallback will be the _fallback translation and default translation inside the default folder.\nOnly the translation file is required to be inside the folders/repository.\nKeep track It\u0026rsquo;s recommended that you include the version that the translation is targeting inside the files. Here\u0026rsquo;s an example:\n# Version: 4.9.7 Alpha [Common] WindowTitle=Project OutFox StepMania=OutFox Submitting to OutFox So you finished the translation for this alpha before the release? You can then commit directly to master OR make a Pull Request with your files to OutFox-Translations so Jose_Varela includes them in the next alpha release.\nThis all assumes that you\u0026rsquo;re already a member of Tiny-Foxes and the translator team.\nWebmasters Project Webmasters is an internal OutFox initiative to translate OutFox Website. Being a webmaster means:\nPartial access to the website backend to implement your translation files; Closer contact with the OutFox Community team for quick updates and help; Having a special role in our Discord Server. The requirements to join Webmasters are having previous experience as a long-term OutFox translator, being a Discord Server member, and receiving a special invitation from the OutFox Team.\nWritten and Maintained by Moru Zerinho6\n","description":"Are you translating a theme to another language? Reading this might help you.\nWhere are language files stored Inside every theme, there\u0026rsquo;ll be a Languages folder. Inside that folder is where language files are stored. Example:\nLanguages/ en.ini ja.ini Here we can see 2 language files: en for English and ja for Japanese. It\u0026rsquo;s a standard to name language files in that format (language-COUNTRY.ini). For example: In this case, there\u0026rsquo;s a Portuguese translation, but since there\u0026rsquo;s also Portuguese from Portugal, the file was named pt-BR (BR = Brazil)."},{"id":132,"href":"/dev/actors/ActorsLua-Tweening/","title":"Tweening","parent":"Lua and Actors","content":"Actors have the ability to transition from point A to point B using Tweening.\nIt allows for queueing up movements \u0026amp; transitions on position, size, color and other attributes as well as commands and messages.\nQueueing-style tweens These help with queueing actions after a certain amount of time.\nSleep The actor waits for a given amount of seconds before performing the next command.\nhibernate Like sleep, but the actor is also hidden for the duration of the hibernate.\nTween manipulation These functions manipulate the flow of the tweening\nstoptweening finishtweening hurrytweening SM3.95-era tweens These tweens are what most people would be familiar to those who work with ITG and SM3.95\nlinear The actor transitions at a constant rate.\naccelerate decelerate bouncebegin It\u0026rsquo;s done in Lua in SM5 for some reason.\nbounceend It\u0026rsquo;s done in Lua in SM5 for some reason.\nspring tween (NotITG only) Takes a string that references a global function\nSM5-era tweens These tween functions were added in SM5.\n\u0026ldquo;ease\u0026rdquo; smooth drop bezier A 2D or 3D bezier curve can be passed into the function to allow for extra tweening options.\nOutFox-era tweens OutFox added all of the standard easing functions. All of these are prefixed with ease and in/out/inout\nsine in: easeinsine, out: easeoutsine, inOut: easeinoutsine\nquad in: easeinquad, out: easeoutquad, inOut: easeinoutquad\ncubic in: easeincubic, out: easeoutcubic, inOut: easeinoutcubic\nquart in: easeinquart, out: easeoutquart, inOut: easeinoutquart\nquint in: easeinquint, out: easeoutquint, inOut: easeinoutquint\nexpo in: easeinexpo, out: easeoutexpo, inOut: easeinoutexpo\nback in: easeinback, out: easeoutback, inOut: easeinoutback\ncircle in: easeincircle, out: easeoutcircle, inOut: easeinoutcircle\nelastic in: easeinelastic, out: easeoutelastic, inOut: easeinoutelastic\nbounce in: easeinbounce, out: easeoutbounce, inOut: easeinoutbounce\n","description":"Actors have the ability to transition from point A to point B using Tweening.\nIt allows for queueing up movements \u0026amp; transitions on position, size, color and other attributes as well as commands and messages.\nQueueing-style tweens These help with queueing actions after a certain amount of time.\nSleep The actor waits for a given amount of seconds before performing the next command.\nhibernate Like sleep, but the actor is also hidden for the duration of the hibernate."},{"id":133,"href":"/dev/actors/Converting-ini-to-Lua/","title":"Converting INI files to Lua","parent":"Lua and Actors","content":" Converting BGAnimation INI files into lua files. StepMania 3.9 \u0026amp; ITG are capable of using BGAnimation.ini files to define actors in place of xml files.\nIn StepMania 5, these have to be converted into .lua files instead.\nGeneral Layout of a BGAnimation.ini file. [BGAnimation] [Layer2] File=path/to/a/different_file.png InitCommand=zoomx,3;zoomy,4;diffuse,1,0,0,0 OnCommand=diffusealpha,0;linear,3;diffusealpha,1 CommandRepeatSeconds=20 [Layer3] File=Common Normal Text=Help Me InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,-100 [Layer1] File=path/to/a/file InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,100 Here, layers are defined with the section name of Layer, followed by numbers or letters.\nThey are sorted by the characters used after Layer (so Layer1 comes before Layer2, even if Layer2 was placed first.)\nThe actual actor type has to be inferred from the path given in File. (Often, it\u0026rsquo;s a Sprite)\nCommands are done in command format.\nCreating the .lua equivalent. The entire ini can be expressed as a single ActorFrame. In this example, both are sprites, and they have to be sorted manually.\nCommandRepeatSeconds isn\u0026rsquo;t a feature in lua actors, so it has to be replicated with queuecommand and sleep. (It would loop the OnCommand every given amount of seconds)\nThe commands have to be converted into function format as well.\nreturn Def.ActorFrame{ Def.Sprite{ Name=\u0026#34;Layer1\u0026#34;, InitCommand= function(self) self:diffusealpha(0.5) end, OnCommand= function(self) self:spin():effectmagnitude(0,0,100) end, }, Def.Sprite{ Name=\u0026#34;Layer2\u0026#34;, InitCommand= function(self) self:zoomx(3):zoomy(4):diffuse(1,0,0,0) end, OnCommand= function(self) self:diffusealpha(0):linear(3):diffusealpha(1):sleep(20-3):queuecommand(\u0026#34;On\u0026#34;) end, }, Def.BitmapText{ File=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;Help Me\u0026#34;. InitCommand= function(self) self:diffusealpha(0.5) end, OnCommand= function(self) self:spin():effectmagnitude(0,0,-100) end, }, } Other ini-style files (.sprite, .model) Older SM also has alternate files that follow the ini format to define other actor types.\n.sprite files have an extra set of attributes for defining frames.\nFrame0000=0 Delay0000=0.25 Frame0001=4 Delay0001=0.25 Frame0002=2 Delay0002=0.25 Frame0003=1 Delay0003=0.25 Frame0004=3 Delay0004=0.25 These can be turned into Frames tables for a Def.Sprite.\nFrames= { {Frame= 0, Delay= 0.25}, {Frame= 4, Delay= 0.25}, {Frame= 2, Delay= 0.25}, {Frame= 1, Delay= 0.25}, {Frame= 3, Delay= 0.25}, } If all frames from the animation are the same and in order, you can use the Sprite.LinearFrames function helper to alieviate the amount of lines. -- This will tell the function to create a frame table that goes through -- 5 frames within 1 second. Frames = Sprite.LinearFrames( 5, 1 ) .model files have extra attributes to define bones, meshes and materials. These translate almost-1:1 into lua.\n[Model] Meshes=arrowmesh.txt Materials=4th.txt Bones=arrowmesh.txt becomes\nDef.Model{ Meshes=\u0026#34;arrowmesh.txt\u0026#34;, Materials=\u0026#34;4th.txt\u0026#34;, Bones=\u0026#34;arrowmesh.txt\u0026#34; } ","description":"Converting BGAnimation INI files into lua files. StepMania 3.9 \u0026amp; ITG are capable of using BGAnimation.ini files to define actors in place of xml files.\nIn StepMania 5, these have to be converted into .lua files instead.\nGeneral Layout of a BGAnimation.ini file. [BGAnimation] [Layer2] File=path/to/a/different_file.png InitCommand=zoomx,3;zoomy,4;diffuse,1,0,0,0 OnCommand=diffusealpha,0;linear,3;diffusealpha,1 CommandRepeatSeconds=20 [Layer3] File=Common Normal Text=Help Me InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,-100 [Layer1] File=path/to/a/file InitCommand=diffusealpha,0.5 OnCommand=spin;effectmagnitude,0,0,100 Here, layers are defined with the section name of Layer, followed by numbers or letters."},{"id":134,"href":"/dev/theming/Theming-Custom-Input/","title":"Custom Input","parent":"Introduction to theming","content":"OutFox allows custom input to be managed by the theme itself. This allows you full sandboxed control of the game for the purposes of the theme.\nImplementing Input Module method (OutFox Alpha 4 and onwards) More direct method (Works on legacy versions of SM5) Anatomy of the event variable The Device Input Table Understanding Press Events Mouse Input General Recommendations Remove the callback when leaving the screen Implementing Input There are a few ways to implement input, but the general action is to call Screen:AddInputCallback( input function ) to the ActorFrame responsible for the input. This can be either a function or a module that will deal with listening and sending instructions back to the engine, that actors can then pick up to provide feedback.\nModule method (OutFox Alpha 4 and onwards) -- In the actorframe, we just call the module to handle the input. return Def.ActorFrame{ OnCommand = function(self) -- The module needs the actor handle itself to send commands back to it, so we give `self` as the -- argument. SCREENMAN:GetTopScreen():AddInputCallback( LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) ) end, -- With this, the actorframe is now responsible for handling input and sending it to others. StartCommand = function(self) SCREENMAN:SystemMessage(\u0026#34;I have pressed START!\u0026#34;) end } More direct method (Works on legacy versions of SM5) -- This function will deal with a simple input set. -- Let\u0026#39;s make the input send a message when we press the player\u0026#39;s assignated Start button. -- event is sent over from InputCallback, and contains all the information needed to obtain input. local function myCustomInput(event) -- First, let\u0026#39;s verify that the input is being performed when pressing. -- There are three modes of input, which will be explain later in this chapter. if event.type == \u0026#34;InputEventType_FirstPress\u0026#34; then -- Ok, we have pressed the button once. Time to detect what button was pressed. if event.GameButton == \u0026#34;Start\u0026#34; then SCREENMAN:SystemMessage(\u0026#34;I have pressed START!\u0026#34;) end end end -- On this actorframe, we\u0026#39;ll load the function. return Def.ActorFrame{ OnCommand = function(self) -- In this case, the function itself is now responsible of handling input and sending results to others. SCREENMAN:GetTopScreen():AddInputCallback( myCustomInput ) end } Anatomy of the event variable When recieving input, you will be given a table by the name of event. It gives you base elements, which contain all the information you need to determine what the user has performed to then report back to the theme.\nName Returns Description controller string The GameController the event was mapped to, which will depend on what controller was the input mapped to. Will return nil if the button is not mapped to any controller. button string The semi-raw button that was pressed. This is what the button was mapped to by the keymap settings, but without the conversions that occur when OnlyDedicatedMenuButtons is true. Will be empty if the button was not mapped. type string The type of event. For more information, go to Understanding Press Events. GameButton string The cooked button that was pressed. This is applied with mapping that occurs when OnlyDedicatedMenuButtons is true applied. This is nil for unmapped buttons. PlayerNumber PlayerNumber The player that the input is mapped to. Can be nil if its not on either player. MultiPlayer MultiPlayer A MultiPlayer enumerator that is mapped to the input, can be used on MultiPlayer matches, can be nil if the input is not mapped to any MultiPlayer. Do not confuse this to PlayerNumber. The Device Input Table Inside this table, is another table called DeviceInput (can be accessed from event.DeviceInput), which are the raw details on the InputEvent the player has performed, which give the device the event has been performed on, the button that was pressed, if its still pressed, how long ago was the button pressed, a Z level counter for mouse input devices, as well as checks for joystick and mouse.\nName Returns Description device string Type of the device, which will start with \u0026quot;Device_\u0026quot;, and then followed with a InputDeviceNames entry. button string The button that was pressed, which will start with \u0026quot;DeviceButton_\u0026quot;, and then followed with the key correspondant on the device. level float A floating point value for analog input. z float A floating point value for determining what level is the mousewheel at. down bool Determines if the button is down. This is a combination of level with a threshold. and debouncing applied. ago float How long ago this input occurred, in seconds. is_joystick bool Checks if the device is a joystick. is_mouse bool Checks if the device is a mouse. Understanding Press Events When calling an input, you have event.type, which is the moment where the button has been pressed, and contains three states:\ngraph TB A[\"InputEventType_FirstPress\n(When pressing the button for the first time)\"]:::Transition --\u003e B[\"InputEventType_Repeat\n(When holding the button)\"]:::Transition --\u003e C[\"InputEventType_Release\n(When lifting the button from being pressed)\"]:::Transition; The repeat rate for InputEventType_Repeat is dependant on the current screen\u0026rsquo;s RepeatRate metric, which determines how fast the input will be repeated every second. In order to filter what kind of input you want for specific actions, just include them in a if conditional check.\n-- Let\u0026#39;s say I want my start press to increase a variable and report it, -- but also increase it while holding the button, but not when lifting it. -- Initialize the variable to use as the counter. local count = 0 local function myCustomInput(event) -- In this case, we\u0026#39;ll check that the input is NOT Release, because that\u0026#39;s the only InputEventType -- that we don\u0026#39;t want verified on this check. if event.type ~= \u0026#34;InputEventType_Release\u0026#34; then -- Ok, we have pressed the button. time to count and report! if event.GameButton == \u0026#34;Start\u0026#34; then count = count + 1 SCREENMAN:SystemMessage(\u0026#34;The counter is now \u0026#34;.. count) end end end -- Now let\u0026#39;s load the function to the actorframe. return Def.ActorFrame{ OnCommand = function(self) SCREENMAN:GetTopScreen():AddInputCallback( myCustomInput ) end } Mouse Input Mouse input is supported on OutFox and earlier releases of SM5 via a MessageCommand system that determines which button was pressed to perform actions.\nMessage Name Segment of Mouse MouseLeftClick Left Mouse Click MouseRightClick Right Mouse Click MouseMiddleClick Middle Mouse Click MouseThumb1 Additional Mouse Click 1 MouseThumb2 Additional Mouse Click 2 MouseWheelUp Mouse Wheel Up MouseWheelDown Mouse Wheel Down -- Example script to show a message when the left click of the mouse is pressed. MouseLeftClickMessageCommand = function(self) SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click!\u0026#34;) end Starting on OutFox Alpha 4.9.7GG, these MessageCommands now contain an argument to determine if the mouse click was lifted or not. -- Example script to show a message when the left click of the mouse is pressed. MouseLeftClickMessageCommand = function(self,param) if param.IsPressed then SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click being pressed!\u0026#34;) else SCREENMAN:SystemMessage(\u0026#34;This is the left mouse click being lifted!\u0026#34;) end end General Recommendations Remove the callback when leaving the screen Upon adding the callback into the screen, it will be stored in memory for input to be processed, but won\u0026rsquo;t be cleared when leaving, which can cause input problems on the long run in the session.\n-- Using the manual function method OffCommand = function(self) -- To remove it, just call the same function that was used to control the screen. SCREENMAN:GetTopScreen():RemoveInputCallback( myCustomInput ) end -- Using the InputSystem module -- Before anything, set the function inside the actor itself. OnCommand = function(self) self.callback = LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) SCREENMAN:GetTopScreen():AddInputCallback( self.callback ) end, -- And now, when leaving, it will have the right actor to remove. OffCommmand = function(self) SCREENMAN:GetTopScreen():RemoveInputCallback( self.callback ) end ","description":"OutFox allows custom input to be managed by the theme itself. This allows you full sandboxed control of the game for the purposes of the theme.\nImplementing Input Module method (OutFox Alpha 4 and onwards) More direct method (Works on legacy versions of SM5) Anatomy of the event variable The Device Input Table Understanding Press Events Mouse Input General Recommendations Remove the callback when leaving the screen Implementing Input There are a few ways to implement input, but the general action is to call Screen:AddInputCallback( input function ) to the ActorFrame responsible for the input."},{"id":135,"href":"/dev/theming/Theming-Modules/","title":"Modules","parent":"Introduction to theming","content":"Introduced in OutFox Alpha 4, Modules are Lua files that provide snippet-like functions, tables, and metatables that can be quickly used and unloaded from memory when done. These can be loaded by using the LoadModule function. Depending on the return methodology from the module, it can be called in several ways.\nGiven the loading nature of modules, it is not recommended to use LoadModule directly if the function that will load it is called too quickly (like calling the module inside of a JudgmentMessageCommand), specially with modules that require file loading/saving. For that, it is recommended to cache the value returned by the module to then use.\n-- An example: caching the result from the Load Configuration module into a variable. local moduleResult = LoadModule(\u0026#34;Config.Load.lua\u0026#34;)(\u0026#34;ShowOffsetBar\u0026#34;,\u0026#34;OutFoxPrefs.ini\u0026#34;) If the module gives a table:\nreturn { \u0026#34;objects!\u0026#34; } -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; ) If the module gives a function:\nreturn function(arguments) print( arguments ) end -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; )( arguments ) If the module needs a table:\nlocal function(requiredtable) for i = 1,#requiredtable do print( requiredtable[i] ) end end -- Load it by doing: LoadModule( \u0026#34;MyModule.lua\u0026#34; ){ arguments } -- Or LoadModule( \u0026#34;MyModule.lua\u0026#34; )({ arguments }) If the module needs a string:\nreturn function(theString) print( \u0026#34;i\u0026#39;m printing \u0026#34;.. theString ) end LoadModule( \u0026#34;MyModule.lua\u0026#34; )\u0026#34;a string\u0026#34; -- This is technically valid syntax, but it\u0026#39;s not great for readability. -- Or LoadModule( \u0026#34;MyModule.lua\u0026#34; )( \u0026#34;a string\u0026#34; ) ","description":"Introduced in OutFox Alpha 4, Modules are Lua files that provide snippet-like functions, tables, and metatables that can be quickly used and unloaded from memory when done. These can be loaded by using the LoadModule function. Depending on the return methodology from the module, it can be called in several ways.\nGiven the loading nature of modules, it is not recommended to use LoadModule directly if the function that will load it is called too quickly (like calling the module inside of a JudgmentMessageCommand), specially with modules that require file loading/saving."},{"id":136,"href":"/user-guide/meta/serenity_user_profile/","title":"Serenity User Profile","parent":"Front Matter","content":" Select User:\nSelect an option Tags Resume Select user to view resume.\nMost Charted Song: Select User to View.\nMost Charted Mode: Select User to View\nSocials Song Submissions Graphic Submissions Chart Submission If you want a social add/removed from your profile then join the Project OutFox Discord Server and contact the moderator team.\nWant the data that we have stored for this profile? Click the button bellow and the JSON Object will be copied to your clipboard. (Tags not included!) Copy Data to Clipboard Written and Maintained by Moru Zerinho6\n","description":"Select User:\nSelect an option Tags Resume Select user to view resume.\nMost Charted Song: Select User to View.\nMost Charted Mode: Select User to View\nSocials Song Submissions Graphic Submissions Chart Submission If you want a social add/removed from your profile then join the Project OutFox Discord Server and contact the moderator team.\nWant the data that we have stored for this profile? Click the button bellow and the JSON Object will be copied to your clipboard."},{"id":137,"href":"/user-guide/meta/serenity_volume_resume/","title":"Serenity Volumes Resume","parent":"Front Matter","content":" This page requires JavaScript to work. Select Volume: Select an option Written and Maintained by Moru Zerinho6\n","description":"This page requires JavaScript to work. Select Volume: Select an option Written and Maintained by Moru Zerinho6"},{"id":138,"href":"/dev/theming/Theming-Sounds/","title":"Sounds","parent":"Introduction to theming","content":"Your theme can contain sounds, which are either sound effects or music that will play across screens or actions. You can find the difference between these items by looking at their file names. The structure goes as follows:\n[The name of the screen] [engine defined action / music / custom set controlled by lua] There are specific elements that are loaded by the engine to perform sound playback, for example, when moving up or down on a options menu, it will grab ScreenOptions prev/next for its sound effects. The hierarchy of screens applies here as well, so for example, if you have an options screen that wants to use custom sounds rather than the global sounds that other option menus will use on the same theme, just apply the name of the screen that will use those new sounds.\nConditional Music Originally introduced on SM-SSC, this feature allows for music to be defined by lua rather than a fixed audio file. This can be useful on situations where you want a screen to play different music files based on performance.\n-- Lets say that my fallback sound (the one that will play if anything fails) will be Sound1. local mySound = \u0026#34;Sound1\u0026#34; -- Now, let\u0026#39;s check for a condition that will update that variable if true. if GAMESTATE:IsEventMode() then -- If my current session is in event mode (no stage limit), then it will swap the value -- to Sound2, a different sound file. mySound = \u0026#34;Sound2\u0026#34; end -- And now, let\u0026#39;s return the result of the variable back to the engine. return THEME:GetPathS(\u0026#34;\u0026#34;,mySound) The value requested by this file is an absolute path, which is why THEME:GetPathS has been included, as it fills the path directory to the current theme\u0026rsquo;s Sounds folder. ","description":"Your theme can contain sounds, which are either sound effects or music that will play across screens or actions. You can find the difference between these items by looking at their file names. The structure goes as follows:\n[The name of the screen] [engine defined action / music / custom set controlled by lua] There are specific elements that are loaded by the engine to perform sound playback, for example, when moving up or down on a options menu, it will grab ScreenOptions prev/next for its sound effects."},{"id":139,"href":"/dev/actors/Converting-xml-to-Lua/","title":"Converting XML files to Lua","parent":"Lua and Actors","content":" Converting xml files into lua files. StepMania 3.95 \u0026amp; ITG use xml files for both themeing and effect scripting. It also allows embedding lua functions to perform more complex effects \u0026amp; scripting.\nIn StepMania 5, these have to be converted into .lua files instead.\nThe \u0026rsquo;easy way\u0026rsquo; of converting There are two semi-automatic ways to convert xml files into lua.\nStepMania 5\u0026rsquo;s built-in XML to LUA converter Converts positions to be based off of SCREEN_CENTER_X (which can result in some lost position information.) Condition attributes are turned into uses of a local function Commands are left in command format Misses commands in .sprite files Accessible from the debug menu Rearranges commands to be in alphabetical order XeroOl\u0026rsquo;s xmlconvert tool Requires some extra libraries on your system Does not touch positions Condition attributes are turned into ternary expressions Commands are turned into function format. performs a bit more work when dealing with modifier-related calls Sorts the actors to match what the xml tag sorting would do The result isn\u0026rsquo;t going to always work, but should do a good amount of the grunt-work needed.\nGeneral layout of an xml file. \u0026lt;ActorFrame\u0026gt; \u0026lt;children\u0026gt; \u0026lt;ZZZActor Type=\u0026#34;Quad\u0026#34; InitCommand=\u0026#34;hidden,1\u0026#34; OnCommand=\u0026#34;sleep,1000\u0026#34; /\u0026gt; \u0026lt;Special Type=\u0026#34;Sprite\u0026#34; File=\u0026#34;funny.png\u0026#34; OnCommand=\u0026#34;%function(self) SCREENMAN:SystemMessage(\u0026#39;hi\u0026#39;) end\u0026#34; /\u0026gt; \u0026lt;Sprite File=\u0026#34;circle\u0026#34; Condition=\u0026#34;GAMESTATE:IsHumanPlayer(0)\u0026#34; /\u0026gt; \u0026lt;/children\u0026gt; \u0026lt;/ActorFrame\u0026gt; Here, layers can have a name as well as a tag or Type. Either the tag name or the Type attribute defines what type of actor it is. If neither of these are given, the game would have to infer the actor type by itself.\nActorFrames have a children tag for holding their inner actors.\nUnlike .ini files, layers can have practically any name in the tag, instead of a required Layer prefix.\nThe layer sorting is somewhat like ini files, with the tag name being used to determine actor order. (This is separate from the Name attribute)\nFor example, the layer tagged as ZZZActor gets sorted to be after Special, even though it was written the other way around.\nCreating the .lua equivalent manually. return Def.ActorFrame{ -- Special -- Def.Sprite{ Texture=\u0026#34;funny.png\u0026#34;, OnCommand= function(self) SCREENMAN:SystemMessage(\u0026#39;hi\u0026#39;) end, }, -- Sprite -- GAMESTATE:IsHumanPlayer(PLAYER_1) and Def.Sprite{ Texture=\u0026#34;circle\u0026#34;, } or Def.Actor{}, -- ZZZActor -- Def.Quad{ Texture=\u0026#34;funny.png\u0026#34;, InitCommand=function(self) self:visible(false) end, OnCommand=function(self) self:sleep(1000) end, }, } Often, the main xml file is an ActorFrame, with the inner actors matching the layout of the xml after sorting.\nConditions can be turned into ternary expressions, though they now run at different times compared to the original xml file.\nJust like in ini files, commands have to be turned into function format.\nThe commands that are already in function format are mostly 1:1. The \u0026ldquo;% \u0026quot; that are around the functions must be removed.\n","description":"Converting xml files into lua files. StepMania 3.95 \u0026amp; ITG use xml files for both themeing and effect scripting. It also allows embedding lua functions to perform more complex effects \u0026amp; scripting.\nIn StepMania 5, these have to be converted into .lua files instead.\nThe \u0026rsquo;easy way\u0026rsquo; of converting There are two semi-automatic ways to convert xml files into lua.\nStepMania 5\u0026rsquo;s built-in XML to LUA converter Converts positions to be based off of SCREEN_CENTER_X (which can result in some lost position information."},{"id":140,"href":"/dev/actors/actortypes/actor/","title":"Actor","parent":"Actor Types","content":"This is the base that everything derives from. Whatever an Actor can do, everything else can as well. It can be useful for creating control variables without creating something visible on screen.\n-- Actors can be very useful as variable controllers since it does not perform any kind of -- overhead to the draw pipe. local Value = 2 Def.Actor{ InitCommand=function(self) Value = Value + 2 Trace(\u0026#34;My Value is now \u0026#34;.. Value) end } Attributes Name Type Description [Name]Command function The basis for any command. Check Commands for more information. Name string The name for the actor. Giving this a value allows this actor to be obtain by its name by any other actor. Check Obtaining Childs and ActorFrame Levels for more information. BaseRotationX number The base rotation for the X axis. Any rotation value is added ON TOP of this value. BaseRotationY number The base rotation for the Y axis. Any rotation value is added ON TOP of this value. BaseRotationZ number The base rotation for the Z axis. Any rotation value is added ON TOP of this value. BaseZoomX number The base zoom for the X axis. Any zoom value is added ON TOP of this value. BaseZoomY number The base zoom for the Y axis. Any zoom value is added ON TOP of this value. BaseZoomZ number The base zoom for the Z axis. Any zoom value is added ON TOP of this value. Table of Contents Anatomy of an Actor Obtaining Childs and ActorFrame Levels ","description":"This is the base that everything derives from. Whatever an Actor can do, everything else can as well. It can be useful for creating control variables without creating something visible on screen.\n-- Actors can be very useful as variable controllers since it does not perform any kind of -- overhead to the draw pipe. local Value = 2 Def.Actor{ InitCommand=function(self) Value = Value + 2 Trace(\u0026#34;My Value is now \u0026#34;."},{"id":141,"href":"/dev/actors/actortypes/actorframe/","title":"ActorFrame","parent":"Actor Types","content":"ActorFrames can hold other actors. The Def. format is set up like any other lua table, allowing for creating actors in batches. Because of this, there are multiple ways to build an ActorFrame.\nDef.ActorFrame{ -- This sprite is now included inside of the ActorFrame. -- Any changes from the ActorFrame will affect the sprite, such as position, rotation, -- zoom and such. Def.Sprite{} } Attributes Inline building Concatenation Method 1 (indexing) Method 2 (lua concatenation) Attributes Name Type Action UpdateRate number Defines the update rate for the actorframe to update. FOV number The Field of View value for the items inside of the ActorFrame. VanishX number Sets the X vanish for the ActorFrame. VanishY number Sets the X vanish for the ActorFrame. FarDistZ number Sets the Z draw distance for the ActorFrame. Lighting bool Enables lighting for the ActorFrame (unused). The following require Lighting to be enabled. However, only the ambient color seems to work. This bug has been present since sm-ssc. Name Type Action AmbientColor color Ambient coloring for the ActorFrame. DiffuseColor color Diffuse coloring for the ActorFrame. SpecularColor color Specular coloring for the ActorFrame. LightDirection {0,0,0} The direction of the lighting for the ActorFrame. This actor inherits attributes from Actor.\nInline building Actors can be explicitly placed into an ActorFrame like this:\nDef.ActorFrame{ Def.Actor{ --Commands and stuff go here. }, Def.Sprite{ --More commands and stuff go here. } } Concatenation Because lua tables can be concatenated (added) to each other, so can ActorFrames.\nThis can allow for programatically creating Actors in batches as needed.\nHowever, if one does not plan on creating Actors programmaticly, then a simple return Def.ActorFrame{... is all that\u0026rsquo;s needed. Storing it into a local variable that gets returned will waste resources.\nThere are two ways to add onto an ActorFrame.\nMethod 1 (indexing) local t = Def.ActorFrame{ Def.Sprite{ --commands \u0026amp; stuff }, Def.BitmapText{ --who even knows }, } t[#t+1] = Def.Actor{ --It\u0026#39;s the third actor } return t Method 2 (lua concatenation) return Def.ActorFrame{ Def.Sprite{ --commands \u0026amp; stuff }, Def.BitmapText{ --who even knows }, } .. Def.Actor{ --It\u0026#39;s the third actor } ","description":"ActorFrames can hold other actors. The Def. format is set up like any other lua table, allowing for creating actors in batches. Because of this, there are multiple ways to build an ActorFrame.\nDef.ActorFrame{ -- This sprite is now included inside of the ActorFrame. -- Any changes from the ActorFrame will affect the sprite, such as position, rotation, -- zoom and such. Def.Sprite{} } Attributes Inline building Concatenation Method 1 (indexing) Method 2 (lua concatenation) Attributes Name Type Action UpdateRate number Defines the update rate for the actorframe to update."},{"id":142,"href":"/dev/actors/actortypes/actorframetexture/","title":"ActorFrameTexture","parent":"Actor Types","content":"It’s like an ActorFrame, but instead of displaying what’s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its’ use in NotITG, although the behavior is different. NotITG’s version places the screen itself onto a texture instead of what’s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window.\nUsage Example This example will create an ActorFrameTexture that uses a sample BitmapText, and project it to the center to the screen in half of the available size of the viewport window.\n-- This ActorFrame will contain everything. local t = Def.ActorFrame{} -- First, create the ActorFrameTexture. local AFT = Def.ActorFrameTexture{ InitCommand = function(self) -- Start by adding a name to the texture. This is optional, but best to provide one, -- in case you need to work with several ActorFrameTextures in the same screen. self:SetTextureName( \u0026#34;MyAFT\u0026#34; ) -- Now we need to give the ActorFrameTexture a resolution, which will be -- how much is available to render. -- As this example will be half the size of the available screen, we\u0026#39;ll give the size -- half of the screen. self:SetWidth( SCREEN_WIDTH*.5 ):SetHeight( SCREEN_HEIGHT*.5 ) -- By default this option is disabled, but you can enable it to allow transparency -- in your ActorFrameTexture. -- In this case, it will disabled to show the available render area (shown as black) self:EnableAlphaBuffer( false ) -- We are done with the AFT, so now we have to create it. self:Create() end, -- After the initializer command, any actors included inside will be projected. -- The actors here act exactly the same as a ActorFrame, so they will start on the top-left -- corner of the available draw area given (in this case, half of the screen.) Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, Text = \u0026#34;Testing String!\u0026#34;, BeginCommand = function(self) self:zoom(2):spin() -- In order to see the texture, let\u0026#39;s center it. -- Calculations in actors inside of the AFT will need conversion as dimensions are -- different, so for example: -- Since we\u0026#39;re doing half of the screen for dimensions, to center it, we need to half -- that size as well. -- 1280 / 2 = 640 (Screen Size) -- 640 / 2 = 320 (Actor Position) -- 0 - 640 = 0 .. 1 (Size Area, using Screen Size) -- (320/640) = 0.5 (Point of Actor Position using above calculation) self:xy( SCREEN_WIDTH*.25, SCREEN_HEIGHT*.25 ) end } } t[#t+1] = AFT Now that we\u0026rsquo;ve created the ActorFrameTexture, it will be sent into a global texture, that we can then grab into a Sprite, and it can be done in two ways. These will be shown inside the OnCommand in the Sprite.\n-- Method 1: Load sprite directly into sprite. t[#t+1] = Def.Sprite{ -- Sprite name given inside the SetTextureName command in your AFT. Texture = \u0026#34;MyAFT\u0026#34;, -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } -- Method 2: Load sprite on demand on runtime. t[#t+1] = Def.Sprite{ -- Let\u0026#39;s center the projection so we can see it. OnCommand=function(self) self:xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) -- Sprite name given inside the SetTextureName command in your AFT. self:Load( \u0026#34;MyAFT\u0026#34; ) end } return t ","description":"It’s like an ActorFrame, but instead of displaying what’s inside onto the screen, it places the contents of the ActorFrame onto a Texture that a Sprite (or any other actor that can load textures) can read from.\nPopularized by its’ use in NotITG, although the behavior is different. NotITG’s version places the screen itself onto a texture instead of what’s inside the ActorFrame and requires basezoom to be used on sprites to make the image fit inside the game window."},{"id":143,"href":"/dev/actors/actortypes/actormultivertex/","title":"ActorMultiVertex","parent":"Actor Types","content":" Setting a Draw State List of DrawModes Usage Examples DrawMode_Quad DrawMode_QuadStrip / DrawMode_Strip DrawMode_Fan DrawMode_Triangles DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points DrawMode_Lines Allows for arbitrary polygons to be created. Every vertex has a position on the xyz plane, a color formatted like diffuse values, and a uv coordinate for textures. In NotITG, this is known as \u0026ldquo;Polygon\u0026rdquo;, and the functions available are different, even though it achieves the same thing.\nreturn Def.ActorMultiVertex{ OnCommand=function(self) -- First, setup the kind of DrawMode is going to be performed. There are several kinds available. -- In this example, we\u0026#39;ll use Lines, to use a two point example. self:SetDrawState{ Mode=\u0026#34;Lines\u0026#34; } -- Time to generate the vertices that will become the vertex map. local vertices = { -- Data is inserted as the following: -- { { x, y, z }, Color, { TextureOffsetX, TextureOffsetY } } -- First table is the position of the vertex relative to the position of the ActorMultiVertex. -- Second table is the color that vertex will contain. -- Third table is optional for when you have a texture loaded into the AMV, and mapping is needed for the texture. -- Value goes from 0 to 1. -- Since no textures will be used in this example, the third table can be ignored. { {0, 0, 0}, Color.White }, { {15, 15, 0}, Color.Green } } -- Now with the vertices assigned, now it\u0026#39;s time to send them back to the AMV for it to generate them. self:SetVertices( vertices ) end } Vertices from the ActorMultiVertex can also be tweened to create animations. This must be done by modifying an existing vertice already assigned on the table, otherwise, it won\u0026rsquo;t be recognized and will just snap into the new position assigned.\n-- Let\u0026#39;s say this is your original vertex data, using Lines. -- This creates a line going from the topleft to bottom right by 15 pixels. local verts = { { {0, 0, 0}, Color.White }, { {15, 15, 0}, Color.Green } } -- Generate the verts so they can be rendered on screen. self:SetVertices(verts) -- Now let\u0026#39;s begin a transition using linear for 2 seconds. self:linear(2) -- Let\u0026#39;s modify the ending vertice so its Y position becomes the same as the starting vertex. -- There are two ways to modify vertex data here: -- METHOD 1: SetVertex. -- Simply call the SetVertex command that is available for ActorMultiVertex, and assign its new values. -- int index, table { table pos, table color, table textcoords } self:SetVertex( 2, { {15, 15, 0} } ) -- METHOD 2: Modifying the table itself. -- (This is recommended if you\u0026#39;re planning to modify a lot of points at the same time, or just need to modify a specific data type rather than the entire entry data) verts[2][1][2] = 0 --[[ Let\u0026#39;s analyze what\u0026#39;s going on here: verts[2]\tGo to the second entry on the verts table [1]\tGo to the first table of that entry, which contains the position of the vertex. [2]\tGo to the second value on that table, which is the Y position. ]] -- With this value now modified, generate the new set of vertices. self:SetVertices(verts) Setting a Draw State The SetDrawState function requires a table with parameters to determine the current state of the polygon being drawn. The following is the list of parameters. All of them are optional, but some of them are needed when initializing to draw a polygon on screen.\n-- Notice the curly braces here. That\u0026#39;s because this function expects a table, rather than typical variables. self:SetDrawState{ Mode=\u0026#34;DrawMode_Quad\u0026#34;, First=0, Num=-1 } -- It can also be inserted this way. self:SetDrawState({ Mode=\u0026#34;DrawMode_Quad\u0026#34;, First=0, Num=-1 }) For more information about how Lua handles functions, check out the Functions page. Name Description Mode Fetches the draw mode if provided, check List of DrawModes for a list of draw modes. First Which point will be the first to draw? Num How many polygons after First will be drawn? If set to -1 (default), it will be the rest of available polygons set. The First argument is 1-indexed, while the Num argument is not. List of DrawModes With an ActorMultiVertex, there are multiple kinds of Draw Modes that can be used to draw polygons on the screen. The following is a list of the modes currently available on OutFox (as of Alpha 4.18.1): These are assigned using the SetDrawMode command or via SetDrawState.\nFor written examples, please check Usage Examples.\nName Description Image Quads Draws a 4 point polygonal shape that is separated from any adjacent or subsequent point. QuadStrip Draws a 4 point polygonal shape that connects to the next adjacent point at the end. Fan Constructs an 8 polygonal shape that can be used to resemble a fan. Strip Suspiciously similar to DrawMode_QuadStrip. Triangles Draws a 3 point polygonal shape that is separated from any adjacent or subsequent point. LineStrip Draws a continous line based on the points given to the Polygon. Width of the line is scaled by the theme\u0026rsquo;s internal height, plus the manual value assigned. SymmetricQuadStrip todo todo The following are introduced for OutFox.\nName Description Image LineStripM Modern implementation of LineStrip. Outputs the work to the GPU to perform operations. Line width limits here are defined by the GPU. PolyLineStrip todo todo Points 1 vertex shapes, which are rendered by the GPU. Size can be defined using SetPointSize, and depends on the GPU. Lines A 2 point line that is separated on each group. Usage Examples The examples here provide how to insert points for the polygon related to each Draw Mode.\nDrawMode_Quad { {{0, 0, 0}, Color.Red}, {{0, 20, 0}, Color.Blue}, {{20, 20, 0}, Color.Green}, {{20, 0, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{40, 20, 0}, Color.Purple}, {{60, 20, 0}, Color.Black}, {{60, 0, 0}, Color.White}, } DrawMode_QuadStrip / DrawMode_Strip { {{0, 0, 0}, Color.Red}, {{0, 20, 0}, Color.Blue}, {{20, 0, 0}, Color.Green}, {{20, 20, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{40, 20, 0}, Color.Purple}, {{60, 0, 0}, Color.Black}, {{60, 20, 0}, Color.White}, } Take a moment to notice that Quad and QuadStrip, while similar in nature, have a different order. The graphics being DrawMode_Quad and DrawMode_QuadStrip respectively.\nDrawMode_Fan { {{0, 0, 0}, Color.Red}, {{0, -20, 0}, Color.Blue}, {{20, -20, 0}, Color.Green}, {{20, 0, 0}, Color.Yellow}, {{20, 20, 0}, Color.Orange}, {{0, 20, 0}, Color.Purple}, {{-20, 20, 0}, Color.Black}, {{-20, 0, 0}, Color.White}, } DrawMode_Triangles { {{0, 0, 0}, Color.Red}, {{10, -20, 0}, Color.Blue}, {{20, 0, 0}, Color.Green}, -- {{30, 0, 0}, Color.Yellow}, {{40, -20, 0}, Color.Orange}, {{50, 0, 0}, Color.Purple}, -- {{60, 20, 0}, Color.Black}, {{70, 0, 0}, Color.White}, {{80, 20, 0}, Color.Orange}, } DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points Take a moment to notice that LineStrip and Points, while similar in nature, have a different layout. The graphics being DrawMode_LineStrip and DrawMode_Points respectively.\n{ {{-40, -40, 0}, Color.Red}, -- {{0, -40, 0}, Color.Blue}, -- {{40, -40, 0}, Color.Green}, -- {{40, 0, 0}, Color.Yellow}, -- {{40, 40, 0}, Color.Orange}, -- {{0, 40, 0}, Color.Purple}, -- {{-40, 40, 0}, Color.Black}, -- {{-40, 0, 0}, Color.White}, } DrawMode_Lines { {{0, 0, 0}, Color.Red}, {{10, 0, 0}, Color.Blue}, -- {{20, 0, 0}, Color.Green}, {{30, 0, 0}, Color.Yellow}, -- {{40, 0, 0}, Color.Orange}, {{50, 0, 0}, Color.Purple}, -- {{60, 0, 0}, Color.Blue}, {{70, 0, 0}, Color.White}, -- {{80, 0, 0}, Color.Orange}, {{90, 0, 0}, Color.Orange}, } ","description":"Setting a Draw State List of DrawModes Usage Examples DrawMode_Quad DrawMode_QuadStrip / DrawMode_Strip DrawMode_Fan DrawMode_Triangles DrawMode_LineStrip / DrawMode_LineStripM / DrawMode_Points DrawMode_Lines Allows for arbitrary polygons to be created. Every vertex has a position on the xyz plane, a color formatted like diffuse values, and a uv coordinate for textures. In NotITG, this is known as \u0026ldquo;Polygon\u0026rdquo;, and the functions available are different, even though it achieves the same thing."},{"id":144,"href":"/dev/actors/actortypes/actorproxy/","title":"ActorProxy","parent":"Actor Types","content":"An ActorProxy is an actor that allows rendering of other Actors without the need to create the logic for it again.\nDef.ActorProxy{ OnCommand=function(self) self:SetTarget( [target actor] ) end } Attributes Draw logic Functions SetTarget GetTarget Attributes There are no special attributes for this actor class.\nDraw logic As long as the target Actor is present, it will draw it. If it\u0026rsquo;s deleted during runtime, it will stop drawing.\nFunctions SetTarget (Actor targetActor)\nTells the ActorProxy to use targetActor as its draw target.\nGetTarget Returns the current actor this ActorProxy is currently rendering. Returns nil if no actor is assigned previously.\n","description":"An ActorProxy is an actor that allows rendering of other Actors without the need to create the logic for it again.\nDef.ActorProxy{ OnCommand=function(self) self:SetTarget( [target actor] ) end } Attributes Draw logic Functions SetTarget GetTarget Attributes There are no special attributes for this actor class.\nDraw logic As long as the target Actor is present, it will draw it. If it\u0026rsquo;s deleted during runtime, it will stop drawing.\nFunctions SetTarget (Actor targetActor)"},{"id":145,"href":"/dev/actors/actortypes/actorscroller/","title":"ActorScroller","parent":"Actor Types","content":"The Actorscroller is an ActorFrame that acts as a scroller, allowing for a selection-styled menu with choices and animations.\nDef.ActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Adding actors The direct method. The function method Transforming the Scroller Subdivisions Functions PositionItems SetTransformFromFunction SetTransformFromHeight SetTransformFromWidth SetCurrentAndDestinationItem SetDestinationItem GetSecondsToDestination SetSecondsPerItem SetSecondsPauseBetweenItems GetSecondsPauseBetweenItems SetPauseCountdownSeconds SetNumSubdivisions ScrollThroughAllItems ScrollWithPadding SetFastCatchup SetLoop SetWrap SetMask SetNumItemsToDraw GetFullScrollLengthSeconds GetCurrentItem GetDestinationItem GetNumItems Attributes Name Type Action NumItemsToDraw number How many items will be drawn at once on the ActorScroller. SecondsPerItem number How long will the scroller take before moving to the next item. TransformFunction function The function that positions every item in the ActorScroller. For more information, check Transforming the Scroller. Subdivisions number How many subdivisions should there be between each item? This allows for smoother movement for scrollers that contain any mathematical curve. UseMask bool Toggles a mask on the top and bottom of the ActorScroller. MaskHeight number Height of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. MaskWidth number Width of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. LoopScroller bool Loops the selection of the scroller to wrap around. WrapScroller bool Wraps the items of the scroller to attempt a seamless transition back. Adding actors To add actors to the ActorScroller, simply add them directly to the scroller, or using the children attribute for ActorFrame.\nThe direct method. local af = Def.ActorFrame{} af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 15, TransformFunction=function(self, offset, itemIndex, numItems) self:y( 10 * offset ) end, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 1\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 2\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 3\u0026#34; }, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item 4\u0026#34; }, } return af The function method All actors being added via the children method have to be added to an ActorFrame wrapper, which will be included in this demonstration. local af = Def.ActorFrame{} local function generateItemsForScroller() -- When using the children attribute, the result of the function must -- be wrapped in an ActorFrame, which in this case is t. local t = Def.ActorFrame{} for i = 1,4 do t[#t+1] = Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Text=\u0026#34;I am Item \u0026#34;.. i } end return t end af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 15, TransformFunction=function(self, offset, itemIndex, numItems) self:y( 10 * offset ) end, children = generateItemsForScroller() } return af Transforming the Scroller To perform a different scroll to the ActorScroller, the TransformFunction is used. This function provides 4 arguments:\nself (Actor): The actor in question. offset (number): The relative 0 offset of the current item. By this, it means that, if the value is 0, That\u0026rsquo;s the current item. Anything before or after is - 1 / + 1 respectively. itemIndex (number): The index of the current item to the entire list of items. numItems (number): The total amount of items currently available. For this example, let\u0026rsquo;s make a vertical scroller. When we say vertical, we mean that we want each item to scroll through the Y axis. So, taking that into consideration, we can end up with a function like this:\nTransformFunction=function(self, offset, itemIndex, numItems) -- We\u0026#39;re telling the game here that each item has a space -- of 60 vertical pixels between each item. self:y( 60 * offset ) end This next example let\u0026rsquo;s us create a circular scroller. This is by using cosine and sine functions.\nTransformFunction=function(self, offset, itemIndex, numItems) self:xy( math.cos(offset) * 150, math.sin(offset) * 150 ) end Here we\u0026rsquo;re telling the game to perform the operation on the X and Y axis, and they\u0026rsquo;re using cosine and sine respectively. These two values return a value of -1 to 1. By having these two values in sync with each other, we\u0026rsquo;re effectively creating a circunference, which in turns provides us with a circle.\nSubdivisions You may have noticed that while scrolling with this, it won\u0026rsquo;t scroll like a circle, and that\u0026rsquo;s because there aren\u0026rsquo;t that many items to scroll through to provide the motion. You could either add more items to fulfill the item criteria or use Subdivisions.\nThe general (very summarized) rule with subdivisions on the actor scroller is that it adds N amount of items in-between existing items to provide a smoother scroll when using functions.\nSubdivisions = 2 --[[ Item 1 -- -- Item 2 -- -- Item 3 ]] Example with full code ↕ local af = Def.ActorFrame{ InitCommand=function(self) self:Center() end } local function generateItemsForScroller() -- When using the children attribute, the result of the function must -- be wrapped in an ActorFrame, which in this case is t. local t = Def.ActorFrame{} for i = 1,20 do t[#t+1] = Def.ActorFrame{ Def.BitmapText{ Font=\"_eurostile normal\", Text=\"I am Item \".. i, } } end return t end af[#af+1] = Def.ActorScroller{ NumItemsToDraw = 20, SecondsPerItem = 0.2, Subdivisions = 4, WrapScroller = true, LoopScroller = true, OnCommand=function(self) self:SetFastCatchup(true) -- For more information about this Input Controller, check \"Custom Input\". -- https://outfox.wiki/dev/theming/Theming-Custom-Input/ self.controller = LoadModule(\"Lua.InputSystem.lua\")(self) SCREENMAN:GetTopScreen():AddInputCallback(self.controller) end, OffCommand=function(self) SCREENMAN:GetTopScreen():RemoveInputCallback(self.controller) end, TransformFunction=function(self, offset, itemIndex, numItems) self:xy( math.cos(offset) * 150, math.sin(offset) * 150 ) -- Let's mark the current choice with the color green. if offset == 0 then self:diffuse(Color.Green) else self:diffuse(Color.Orange) end -- You can also interpret that if statement with a ternary method. -- self:diffuse( offset == 0 and Color.Green or Color.Orange ) end, children = generateItemsForScroller(), -- Let's add input to this scroller. MenuLeftCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() - 1 ) end, MenuRightCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() + 1 ) end } return af Functions PositionItems Forces all items to position themselves back into position. Useful if you happen to encounter a situation where the scroller doesn\u0026rsquo;t end exactly on the item you\u0026rsquo;ve selected.\nSetTransformFromFunction (function transformFunction)\nThe equivalent of the TransformFunction provided on the Attributes list. Allows you to add a new function in runtime, such as for example, converting the list from a vertical one to a horizontal one once the user has selected something.\nSetTransformFromHeight (number itemHeight)\nAn alias for SetTransformFromFunction that will convert the scroller to a vertical one.\nSetTransformFromWidth (number itemWidth)\nAn alias for SetTransformFromFunction that will convert the scroller to a horizontal one.\nSetCurrentAndDestinationItem (number index)\nTells the ActorScroller to set both Current and Destination to index. This can be useful if you want to move to the option index instantly.\nSetDestinationItem (number index)\nTells the scroller to move to index for its destination.\nGetSecondsToDestination Gives you a number indicating how long it will take before reaching the destination, which is the newly selected item.\nSetSecondsPerItem (number seconds)\nChanges the scroll length for each item.\nSetSecondsPauseBetweenItems (number seconds)\nChanges how long the scroller must wait while scrolling through an item.\nGetSecondsPauseBetweenItems Gets the amount of time the scroller must wait while scrolling through an item.\nSetPauseCountdownSeconds (number state)\nSet the amount of time to wait fully when pressing a button. This value works alongside SetSecondsPauseBetweenItems to calculate a pause time.\nSetNumSubdivisions (number numDivisions)\nSets the amount of Subdivisions for the scroller.\nScrollThroughAllItems Forces the scroll to scroll through all of the items present.\nScrollWithPadding (number beforeItems, number afterItems)\nMakes the scroller move automatically with a number of empty items to add at the start and end. You can use this to create credit sequences.\nSetFastCatchup (bool state)\nAccelerates the amount of time it takes to go from an item to another if it\u0026rsquo;s more than 1.\nFor example, let\u0026rsquo;s say you\u0026rsquo;re in position 1, and you want to go to 5. You have SecondsPerItem set to 1; so it would take a second to go through each item, totalling 5 seconds.\nWith SetFastCatchup, it will speed up based on how many items it needs to jump through to scroll roughly the same amount of time it takes to scroll to one.\nSetLoop (bool state) Toggles looping.\nSetWrap (bool state)\nToggles wrapping.\nSetMask (bool state)\nToggles the Mask.\nSetNumItemsToDraw (number numItems)\nChanges the value of items to draw at once.\nGetFullScrollLengthSeconds Returns the total amount of time it would take to do a full rotation of the entire scroller. This is counting all of the items and subdivisions with the amount of time set in per item (SecondsPerItem).\nGetCurrentItem Returns the currently selected item.\nGetDestinationItem Gets the item that the scroller is currently traveling to.\nGetNumItems Returns the number of items available on the ActorScroller.\n","description":"The Actorscroller is an ActorFrame that acts as a scroller, allowing for a selection-styled menu with choices and animations.\nDef.ActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Adding actors The direct method. The function method Transforming the Scroller Subdivisions Functions PositionItems SetTransformFromFunction SetTransformFromHeight SetTransformFromWidth SetCurrentAndDestinationItem SetDestinationItem GetSecondsToDestination SetSecondsPerItem SetSecondsPauseBetweenItems GetSecondsPauseBetweenItems SetPauseCountdownSeconds SetNumSubdivisions ScrollThroughAllItems ScrollWithPadding SetFastCatchup SetLoop SetWrap SetMask SetNumItemsToDraw GetFullScrollLengthSeconds GetCurrentItem GetDestinationItem GetNumItems Attributes Name Type Action NumItemsToDraw number How many items will be drawn at once on the ActorScroller."},{"id":146,"href":"/dev/editor/2-Adding-Notes/","title":"Adding/Manipulating notes","parent":"Editor","content":" In the editor, you can add notes by using the 1-0 keys on the keyboard, which correspond to the column on the current mode you\u0026rsquo;re in.\nDetermining the type of note to use is set via the N/M keys, which change the type of notes to the following list:\nTap The regular note type, adds tap notes when using the 1-0 keys. While holding left shift, it creates a roll note depending on how long you hold the column specific key. Holding the column key alone creates a long note, otherwise known as a Hold, which requires players to hold the button until the entire hold has transpired.\nMine This note should be avoided by the player, as they lose life if they hit it. Holding Left Shift will create a roll-based MineField, which is a hold note that should be avoided, as any press can cause the player to lose life. Holding the column key alone will create a hold-based Minefield, which behaves the same way as the roll version.\nLift These notes require the player to release the column when the note arrives to its corresponding receptor. Creating holds or rolls (Left Shift) in this mode creates a Lift-Hold/Roll, which behaves like a regular hold or roll, but contains a lift at the end, which requires the player to perform the same action as a lift, releasing at the right time at the end of the hold/roll.\nFake These notes are purely visual, and do not affect score. They can be used to confuse the player or to construct visual gimmicks. Currently holds/rolls created in this mode will be transformed to regular holds/rolls from the Tap type.\nThe Alter Menu Beat This option allows you to either compress or expand a selected area in both notes and timing, which can be useful if you want to create areas that have a faster or slower feeling.\nStutter segment Introduced in OutFox Alpha ??, this option generates a \u0026ldquo;stutter\u0026rdquo; segment, which comprises of each note including a stop that retains the original timing of the song, giving the illusion of multiple stops in quick succession. An option is included to toggle the inclusion of mines in the calculation, if they\u0026rsquo;re off, mines are skipped in the calculation and are not stopped in playback.\nPlay Selection Plays the currently selected section. Once the cursor has passed the section, it will be looped.\nRecord Selection Allows you to record the currently selected section. This mode enters Record Mode, where you can use the regular keys to place notes in real time with the music.\nAssign as Preview Makes the current selection become the music preview that is played while selecting the song. Note that most themes have a potential fade out of about 3 seconds.\nConvert selection to stop Converts the selected area into a stop, by compressing the area and placing a stop with the duration of the selection. Keep in mind however that any notes that are included inside the area will be deleted.\nConvert selection to delay Converts the selected area into a delay, by compressing the area and placing a delay with the duration of the selection. Keep in mind however that any notes that are included inside the area will be deleted.\nFor information about the difference between stops and delays, check out Defining Timing Data.\n","description":"In the editor, you can add notes by using the 1-0 keys on the keyboard, which correspond to the column on the current mode you\u0026rsquo;re in.\nDetermining the type of note to use is set via the N/M keys, which change the type of notes to the following list:\nTap The regular note type, adds tap notes when using the 1-0 keys. While holding left shift, it creates a roll note depending on how long you hold the column specific key."},{"id":147,"href":"/dev/actors/actortypes/actor/ActorsLua-Anatomy+Structure/","title":"Anatomy of an Actor","parent":"Actor","content":" Every actor in SM5 follows a standard general structure, with ActorFrames being more flexible in how they\u0026rsquo;re constructed.\nGeneral layout Commands General layout Def.Actor { Name= \u0026#34;Example Actor\u0026#34;, InitCommand= function(self) self:zoom(100) end, OnCommand= function(self) self:linear(2):x(30) end, } Every actor starts with a Def. prefix, followed by the actor type itself. An actor can have a name and commands. These commands could be anything, as long as it\u0026rsquo;s suffixed with a Command or MessageCommand, depending on the type of commands needed.\nNames allow one to easily grab the actor through functions like GetChild, but there are other exampled given later.\nWhen the definition is complete, the actor has to be \u0026ldquo;returned\u0026rdquo; for the game to see it. Most of the time, ActorFrames are usually what\u0026rsquo;s returned instead of just a single actor.\nCommands Commands come in two variants: \u0026ldquo;Commands\u0026rdquo; and \u0026ldquo;Messages\u0026rdquo;.\nCommands are usually isolated to a single actor, with a few exceptions. Messages are commands that are meant to be in multiple actors and can be invoked at around the same time on all actors with a \u0026ldquo;Broadcast\u0026rdquo;.\nMESSAGEMAN:Broadcast(\u0026#34;SpecialMove\u0026#34;, {funnymove = 10, absolute = false}) This would run \u0026ldquo;SpecialMoveMessageCommand\u0026rdquo; on all actors that have this command defined, with a parameter table being passed in. Not all actors might use this table, even though they might have the command defined.\nIf one needs to manually queue a command or message, the queuecommand or queuemessage functions can be used.\nThese queued commands run only after all previous tweens have finished.\nself:queuecommand(\u0026#34;Action\u0026#34;):queuecommand(\u0026#34;AnotherOne\u0026#34;) -- The actor itself ActionCommand=function(self) -- an action is performed first end AnotherOneCommand=function(self) -- an action is performed after \u0026#39;Action\u0026#39; end If a command has to run instantly, playcommand can be used for that.\nself:playcommand(\u0026#34;Action\u0026#34;) -- The actor itself ActionCommand=function(self) -- an action is performed end If one wants to pass custom parameters into the command, a single table has to be used to wrap every parameter passed.\nThese command functions generally take two paramters: The actor calling the function (often called self), and the parameters table passed into the command. The paramters table is optional.\nself:playcommand(\u0026#34;Action\u0026#34;, { --[[Values are added here like a regular table.]] }) -- example self:playcommand(\u0026#34;Action\u0026#34;, { Value = 2 }) -- In the actor ActionCommand=function(self,param) SCREENMAN:SystemMessage(\u0026#34;I\u0026#39;ve got value which has \u0026#34;.. param.Value) end ","description":"Every actor in SM5 follows a standard general structure, with ActorFrames being more flexible in how they\u0026rsquo;re constructed.\nGeneral layout Commands General layout Def.Actor { Name= \u0026#34;Example Actor\u0026#34;, InitCommand= function(self) self:zoom(100) end, OnCommand= function(self) self:linear(2):x(30) end, } Every actor starts with a Def. prefix, followed by the actor type itself. An actor can have a name and commands. These commands could be anything, as long as it\u0026rsquo;s suffixed with a Command or MessageCommand, depending on the type of commands needed."},{"id":148,"href":"/dev/announcers/","title":"Announcers","parent":"Developers and Creators","content":"Announcers are a set of folders containing audio data for various kinds of situations. These can usually be a voice encouraging the player for their performance, comments about particular songs, among other things.\nLocation of Announcers Funcionality Engine-defined sounds For ScreenTitleMenu title menu game name For ScreenWithMenuElements \u0026lt;Screen Name\u0026gt; intro hurry up For ScreenSelect \u0026lt;Screen Name\u0026gt; IdleComment For ScreenSelectMaster select difficulty challenge \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; For ScreenSelectMusic select music intro select music comment repeat select music comment new select music comment hard select music comment general select course comment general For ScreenGameplay gameplay intro gameplay ready gameplay here we go normal gameplay here we go extra gameplay here we go final gameplay battle damage level3 gameplay extra gameplay cleared gameplay oni failed halfway gameplay oni failed gameplay failed gameplay \u0026lt;amount\u0026gt; combo gameplay combo overflow gameplay combo stopped gameplay battle trick level\u0026lt;n\u0026gt; gameplay battle damage level\u0026lt;n\u0026gt; gameplay comment hot gameplay comment danger gameplay comment good gameplay comment oni For ScreenEvaluation evaluation new record evaluation full combo W1 evaluation full combo W2 evaluation full combo W3 evaluation full combo W4 evaluation \u0026lt;Grade\u0026gt; evaluation final \u0026lt;Grade\u0026gt; evaluation win evaluation lose evaluation win evaluation cheer For ScreenPlayerOptions player options intro For ScreenSelectCharacter select group intro For ScreenNameEntry name entry For ScreenEnding music scroll Custom announcer sounds Location of Announcers The default location for announcers are in Project OutFox/Announcers, with the following structure:\nProject OutFox/Announcers/ │ └───────My Announcer | └───title menu game name └───Welcome to the game.ogg └───OutFox.ogg Funcionality Depending on the screen the player is currently on, certain announcer sounds will play. Here we will list the items used in the engine, and talk about custom sounds.\nEach item folder on the following list can contain any amount of sounds inside it. The game will pick randomly which one to play.\nEngine-defined sounds The engine can play certain sounds from the announcer, as long as the name is named correctly based on the following list:\nFor ScreenTitleMenu title menu game name Plays when entering the title menu. Usually recites the name of the game.\nFor ScreenWithMenuElements As noted on the Introduction to Theming\u0026rsquo;s guide to creating a custom screen, almost every screen is inherited on ScreenWithMenuElements, meaning that all screens that use this class as a base will play announcers like this, where \u0026lt;Screen Name\u0026gt; applies.\n\u0026lt;Screen Name\u0026gt; intro A message played when the player enters this screen.\nhurry up Plays when the timer is running low on time.\nFor ScreenSelect Same rules apply from ScreenWithMenuElements, meaning that the intro message can also be used here.\n\u0026lt;Screen Name\u0026gt; IdleComment Plays after every specified amount of seconds have passed. This if often used to remind the player to do something in the game.\nThe amount of time can be changed on the screen\u0026rsquo;s IdleCommentSeconds metric.\nFor ScreenSelectMaster ScreenSelectMaster is the name of the class type of several different screens, so these will actually occur on any of the following: ScreenTitleMenu, ScreenSelectLanguage, ScreenUnlockBrowse, ScreenSelectStyle, ScreenSelectPlayMode, ScreenGameInformation, or any other screen that has ScreenSelectMaster as its Class metric.\nselect difficulty challenge Plays when the player enters the second page.\nChoices on ScreenSelectMaster are split into two pages, all choices after the amount set by the NumChoicesOnPage1 metric are on the second page. The default is 1024, so this will never play unless the theme sets the metric lower to have a second page. \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; Players when the player has picked their Choice.\nFor example: In ScreenSelectStyle2, a screen that could select the kind of style to play; you are presented with 3 choices: single, versus or double, and the player chooses double. Then the end result would end up looking like this:\nScreen Name: ScreenSelectStyle2 Choice Name: double Thus:\nScreenSelectStyle2 comment double \u0026lt;Choice Name\u0026gt; will be the name field of the gamecommand that defines the choice, so this could be literally anything the themer feels like.\nFor this example, it ended up being double, which would look something like this:\n# Note here that the 3 can also change, but DOES NOT apply to the scope of announcers, only the name field. Choice3=\u0026#34;name,double\u0026#34; For ScreenSelectMusic Rules from ScreenWithMenuElements also apply here.\nselect music intro A special rule here for the SelectMusic screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nselect music comment repeat Plays when a player chooses a song that was already played on this session.\nselect music comment new Playes when a player chooses a song that hasn\u0026rsquo;t been played at all on the machine.\nselect music comment hard Plays when a player chooses a song that exceeds the value of ScreenSelectMusic::HardCommentMeter, which is 10 by default.\nselect music comment general Regular comment that plays when a player chooses a song that doesn\u0026rsquo;t apply to the rules from the previous 3 comment types.\nselect course comment general Plays when a player chooses a course.\nFor ScreenGameplay The following occur after certain actions.\ngameplay intro The player has entered gameplay. This happens when the gameplay screen begins to fade in.\ngameplay ready The in transition has ended, on some themes, a text saying \u0026ldquo;Are you ready?\u0026rdquo; would appear here.\ngameplay here we go normal The ready transition is done. Some themes would display a \u0026ldquo;Let\u0026rsquo;s go!\u0026rdquo; text.\ngameplay here we go extra Same aspect as gameplay here we go normal, but in the case the player is currently on an extra stage.\ngameplay here we go final Same aspect as gameplay here we go normal, but in the case the player is on the last stage.\ngameplay battle damage level3 gameplay extra Plays at the end of a final stage if they\u0026rsquo;ve reached the Extra Stage criteria. The player has earned the chance to play the extra stage.\ngameplay cleared Plays at the end of a normal stage.\ngameplay oni failed halfway The player has failed at halfway or higher of an Oni course.\ngameplay oni failed The player has failed at \u0026lt;50% of an Oni course.\ngameplay failed The player has failed the stage.\ngameplay \u0026lt;amount\u0026gt; combo The announcer recites the amount of combo the player has achieved without breaking it. The game performs a check for the first 1000 combo, in successions of 100 (100 -\u0026gt; 200 -\u0026gt; 300, etc) in which after that it will then call the gameplay combo overflow sound on every 100 combo.\ngameplay combo overflow Plays every 100 combo after 1000 combo.\ngameplay combo stopped Happens when the player has broken their combo. The default value for the minimum combo to be broken to play the sound is 50, but can be changed with the metric Player::ComboStoppedAt.\ngameplay battle trick level\u0026lt;n\u0026gt; This is leftover code from In The Groove\u0026rsquo;s alpha inventory system. These have no function today. Plays when a battle trick occurs. In other terms, when a player as sent a trick to the other player. Has 3 stages.\ngameplay battle damage level\u0026lt;n\u0026gt; This is leftover code from In The Groove\u0026rsquo;s alpha inventory system. These have no function today. Plays when a battle damage occurs. Has 3 stages.\nThe following play on every set amount of seconds defined by the ScreenGameplay::SecondsBetweenComments metric.\ngameplay comment hot Plays when a player has their lifebar full.\ngameplay comment danger Player when a player is in danger, which is almost a depleted lifebar.\ngameplay comment good Plays while the player is doing okay in the song. It\u0026rsquo;s the last case from hot and danger.\ngameplay comment oni Plays while the player is on a course (either Nonstop, Oni or Endless).\nFor ScreenEvaluation Only one of these sounds will play depending on the condition.\nevaluation new record Plays if any of the players have achieved a record.\nevaluation full combo W1 Plays if any of the players has achieved a full combo consisting of only Flawless.\nevaluation full combo W2 Plays if any of the players has achieved a full combo consisting of only Excellents.\nevaluation full combo W3 Plays if any of the players has achieved a full combo consisting of only Greats.\nevaluation full combo W4 Plays if any of the players has achieved a full combo consisting of only Goods.\nevaluation \u0026lt;Grade\u0026gt; Plays if any of the players have achieved any tier related to \u0026lt;Grade\u0026gt;. The player with the highest Grade is the one that will be played.\nBecause of the Tier system in modern SM, the tier is converted into a human readable string, which is represented by an \u0026ldquo;old grade\u0026rdquo;. Click here for the list of old grades correspondant to the tier. ↕ Tier Old Grade conversion Grade_Tier01 AAAA Grade_Tier02 AAA Grade_Tier03 AA Grade_Tier04 A Grade_Tier05 B Grade_Tier06 C Grade_Tier07 D Grade_Failed E Grade_NoData N evaluation final \u0026lt;Grade\u0026gt; Plays at the summary screen, which is after all stages have been played. Same old grade logic from evaluation \u0026lt;Grade\u0026gt; applies here.\nevaluation win Plays only on rave mode, when someone wins the match.\nevaluation lose Plays only on rave mode, when someone loses the match.\nevaluation win Plays only on rave mode, when someone wins the match.\nThere\u0026rsquo;s no internal call to play a sound when the rave match is a draw, but can be added in Lua with a custom announcer sound. evaluation cheer If a player has achieved a grade tier of Tier_03 (A) or higher, after a set amount of seconds, this sound will play. The default is 2.5 seconds.\nThe amount of time can be changed by editing ScreenEvaluation::CheerDelaySeconds.\nFor ScreenPlayerOptions player options intro A special rule here for the ScreenPlayerOptions screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenSelectCharacter select group intro A special rule here for the ScreenSelectCharacter screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenNameEntry name entry A special rule here for the ScreenNameEntry screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nFor ScreenEnding music scroll A special rule here for the ScreenEnding screen. This is it\u0026rsquo;s opening announcer comment, \u0026lt;Screen Name\u0026gt; intro will not work here.\nCustom announcer sounds You may have noticed by peeking into some announcer packs, that they sometimes contain folders that do not follow the naming convention described on Engine-defined sounds. This is because themes can play their any sound from the announcers, without a name limit.\nBecause of this however, you need to be wary about compatibility with said announcers on other themes, as there can be situations where the announcer pack is compatible with the theme it was designed for, and other themes won\u0026rsquo;t play all the sounds that come with the announcer.\nAn example of custom playback:\nSOUND:PlayAnnouncer(\u0026#34;My Custom Sound\u0026#34;) If the announcer doesn\u0026rsquo;t contain a folder named My Custom Sound with a sound file inside, it will be ignored.\n","description":"Announcers are a set of folders containing audio data for various kinds of situations. These can usually be a voice encouraging the player for their performance, comments about particular songs, among other things.\nLocation of Announcers Funcionality Engine-defined sounds For ScreenTitleMenu title menu game name For ScreenWithMenuElements \u0026lt;Screen Name\u0026gt; intro hurry up For ScreenSelect \u0026lt;Screen Name\u0026gt; IdleComment For ScreenSelectMaster select difficulty challenge \u0026lt;Screen Name\u0026gt; comment \u0026lt;Choice Name\u0026gt; For ScreenSelectMusic select music intro select music comment repeat select music comment new select music comment hard select music comment general select course comment general For ScreenGameplay gameplay intro gameplay ready gameplay here we go normal gameplay here we go extra gameplay here we go final gameplay battle damage level3 gameplay extra gameplay cleared gameplay oni failed halfway gameplay oni failed gameplay failed gameplay \u0026lt;amount\u0026gt; combo gameplay combo overflow gameplay combo stopped gameplay battle trick level\u0026lt;n\u0026gt; gameplay battle damage level\u0026lt;n\u0026gt; gameplay comment hot gameplay comment danger gameplay comment good gameplay comment oni For ScreenEvaluation evaluation new record evaluation full combo W1 evaluation full combo W2 evaluation full combo W3 evaluation full combo W4 evaluation \u0026lt;Grade\u0026gt; evaluation final \u0026lt;Grade\u0026gt; evaluation win evaluation lose evaluation win evaluation cheer For ScreenPlayerOptions player options intro For ScreenSelectCharacter select group intro For ScreenNameEntry name entry For ScreenEnding music scroll Custom announcer sounds Location of Announcers The default location for announcers are in Project OutFox/Announcers, with the following structure:"},{"id":149,"href":"/dev/actors/actortypes/bganimation/","title":"BGAnimation","parent":"Actor Types","content":"A compatibility actor class that allows you to run older .ini files for background animations. Requires Quirks Mode to be enabled to function.\nDef.BGAnimation{ AniDir=\u0026#34;MyAnimationFolder\u0026#34;, LengthSeconds=10 } Attributes Name Type Description AniDir string The directory to find the animation data from. LengthSeconds number Backwards-Compatibility: If this is given, it will create a dummy actor that sleeps for the given amount of time. It inherits attributes from ActorFrame.\nLoading process If a BGAnimation.ini file is present on the folder to look up for, it is assumed to run a 3.9-type BGAnimation, which then it will run the process as a regular ini file.\nIf it\u0026rsquo;s not present, it assumes it\u0026rsquo;s a 3.0-type BGAnimation, which only contains video files. It will skip any files that start with an underscore.\n","description":"A compatibility actor class that allows you to run older .ini files for background animations. Requires Quirks Mode to be enabled to function.\nDef.BGAnimation{ AniDir=\u0026#34;MyAnimationFolder\u0026#34;, LengthSeconds=10 } Attributes Name Type Description AniDir string The directory to find the animation data from. LengthSeconds number Backwards-Compatibility: If this is given, it will create a dummy actor that sleeps for the given amount of time. It inherits attributes from ActorFrame.\nLoading process If a BGAnimation."},{"id":150,"href":"/dev/actors/actortypes/bitmaptext/","title":"BitmapText","parent":"Actor Types","content":"The BitmapText actor allows you to insert text into the theme, with any font that has been created and located on the Fonts folder from either your theme or _fallback.\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font Text = \u0026#34;Hello!\u0026#34; } Table of Contents Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText Attributes Name Type Action Font string The font to be utilized for this BitmapText. If it\u0026rsquo;s not available, Common Normal will be utilized instead. File string Alternative alias to Font. Text string The text to show to the BitmapText. AltText string An alternative version of Text that will be used if there\u0026rsquo;s a missing glyph (or a glyph that the game doesn\u0026rsquo;t recognize or can\u0026rsquo;t render) in Text. For more information, see Ensuring string compatibility. ","description":"The BitmapText actor allows you to insert text into the theme, with any font that has been created and located on the Fonts folder from either your theme or _fallback.\nDef.BitmapText{ Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font Text = \u0026#34;Hello!\u0026#34; } Table of Contents Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText Attributes Name Type Action Font string The font to be utilized for this BitmapText."},{"id":151,"href":"/dev/actors/actortypes/bpmdisplay/","title":"BPMDisplay","parent":"Actor Types","content":"A general-purpose BPM display. Can cycle between two states of values in a rolling motion.\nDef.BPMDisplay{} Attributes There are no special attributes with this actor type. It inherits its attributes from BitmapText.\nFunctions These functions also work on SongBPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)\nSets the BPM to the song\u0026rsquo;s BPM range. This value can be tricked if the chart is using a specified BPM rather than the actual BPM, or even jumbled if it\u0026rsquo;s tagged as random.\nSetFromSteps (Steps data)\nSets the BPM to the steps\u0026rsquo;s BPM range. Useful if the current steps contain different timing data.\nSetFromCourse (Course pCourse)\nObtains the BPM range from the course. A couple of rules are applied here:\nThe operation will fail if there are no steps available on the course for the current StepsType. If there are more entries than the value of Common::MaxCourseEntriesBeforeShowVarious (Default: 10), the course is considered various, and instead will output the text defined on BPMDisplay::VariousText (Default: \u0026quot;000\u0026quot;). GetText Gets the current value that the SongBPMDisplay contains.\n","description":"A general-purpose BPM display. Can cycle between two states of values in a rolling motion.\nDef.BPMDisplay{} Attributes There are no special attributes with this actor type. It inherits its attributes from BitmapText.\nFunctions These functions also work on SongBPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)"},{"id":152,"href":"/categories/","title":"Categories","parent":"Project OutFox Wiki","content":"","description":""},{"id":153,"href":"/user-guide/config/folders/","title":"Content folders","parent":"Features \u0026 Config","content":"Project OutFox uses various folders to store content, such as songs, save data, themes, noteskins, etc. Content is stored in one of the three following locations;\nGlobal folders are located within the Project OutFox installation directory. If you are on a multi-user operating system, content in these folders will be accessible to all users. When Portable Mode is enabled by placing a blank file named Portable.ini at the root of the installation directory, save data (including profiles and preference files) will be place in a subfolder of the installation directory named \u0026ldquo;Save\u0026rdquo;. User folders are where user save data is stored if Portable Mode is disabled. They are created in the operating system\u0026rsquo;s home/user directory. As of 0.4.14 (released 2022-03-25), they are located in: ~/Library/Preferences/Project OutFox/ on macOS ~/.project-outfox/ on Linux %APPDATA%\\Project OutFox on Windows On versions prior to 0.4.14, the user folder was named either OutFox 5.3 (macOS and Windows) or outfox-5.3 (Linux). Additional folders are paths configured in the Preferences.ini file; for instance, you can store your song library on a second hard drive and link to it there, or share content between multiple installations. These content folders comprise the game\u0026rsquo;s \u0026ldquo;Virtual File System\u0026rdquo; (VFS). They are, in turn, divided into various subdirectories for storing specific types of content.\nAnnouncers Announcers are a collection of audio files that play automatically based on specific triggers, such as in-game events or navigating to specific screens.\nAppearance Avatars Square images that can be used as avatars for your profile.\nJudgments If supported by the current theme, you can pick a different design for in-game judgement displays from images in this folder.\nJudgement fonts are divided into equally-sized sprites for each judgement. Fonts designed for specific timing modes have a modifier in their file name, such as [Advanced], [FAPlus], etc. A judgement font can also be divided into two columns to display indicators for early or late timing.\nNoteSkins NoteSkins affect the appearance of notes. They could be arrows, bars, circles, pawprints, etc.\nNoteSkins that are compatible with StepMania 5.0.12 and 5.1 are compatible with Project OutFox.\nThe NoteSkins folder is divided into subfolders for specific game types. A global noteskin appears in all game types.\nNoteSkins │ └───dance │ │ │ └───metal │ │NoteSkin.lua │ │... Themes Themes determine the look, feel, and functionality of the game.\nThemes compatible with StepMania 5.0.12 and 5.1 are compatible with Project OutFox.\nThemes │ └───My Theme │ │ Metrics.ini │ │ ... Toasties Combinations of an image and sound played when a specific combo milestone is reached. They are inspired by the famous Mortal Kombat easter egg.\nBackgroundEffects Visual effects used for background script sequences in songs.\nBackgroundTransitions Transition effects used for background script sequences in songs.\nBGAnimations Actor-based animations that can be played in the background in-game. They can also be used as part of background script sequences in songs.\nCache The cache generated by Project OutFox when loading songs. Delete this folder to force the game to reload all songs.\nCharacters 3D character models that can be displayed in-game.\nCourses Playlists of songs used in course modes (such as Extended).\nLogs When Project OutFox is running, it generates various log files to record diagnostic information and errors. If you are having issues with the game, the log file is a good place to begin.\nRandomMovies Video clips that can be played in the background in-game. They can also be used as part of background script sequences in songs.\nSave This is where data such as preferences, profiles, high scores, etc. are stored. If portable mode is enabled, the game will load the Save folder from your installation directory. It is otherwise located in your user folders.\nScreenshots Screenshots taken in-game are stored here.\nSongMovies Similar in use to RandomMovies, except that they will be excluded from the RandomMovies pool.\nSongs Songs that are used to play the game. They are stored in folders known as Groups.\nSongs │ └───My Group │ │ │ └───My Song │ │ mysong.ssc │ │ mysong.ogg │ │ mysong-bg.png │ │ mysong-bn.png │ │ mysong-jk.png Additional folders Via the preferences file (Save/Preferences.ini), you can specify additional folders to store content. For example, you can keep your song library in a centralized location (such as in a separate folder or on a different storage device), and share them between multiple installations of OutFox or StepMania-based games.\nBoth of these parameters accept multiple directory paths, comma-separated.\nAdditionalSongFolders The AdditionalSongFolders option allows you to specify other locations for where Project OutFox can search for songs. As with the installation directory\u0026rsquo;s song folder, they are divided into groups. For example (assuming a location such as D:\\AdditionalSongs);\nD:\\AdditionalSongs │ └───My Group │ │ │ └───My Song │ │ mysong.ssc │ │ mysong.ogg │ │ mysong-bg.png │ │ mysong-bn.png │ │ mysong-jk.png AdditionalFolders AdditionalFolders is like the above, except they can contain any of the other content subdirectories like so;\nD:\\OutFoxExtra │ └───Announcers │ └───Appearance │ └───etc. ","description":"Project OutFox uses various folders to store content, such as songs, save data, themes, noteskins, etc. Content is stored in one of the three following locations;\nGlobal folders are located within the Project OutFox installation directory. If you are on a multi-user operating system, content in these folders will be accessible to all users. When Portable Mode is enabled by placing a blank file named Portable.ini at the root of the installation directory, save data (including profiles and preference files) will be place in a subfolder of the installation directory named \u0026ldquo;Save\u0026rdquo;."},{"id":154,"href":"/user-guide/controllers/","title":"Controllers and Peripherals","parent":"User Guide","content":"","description":""},{"id":155,"href":"/dev/actors/actortypes/controllerstatedisplay/","title":"ControllerStateDisplay","parent":"Actor Types","content":"Creates an ActorFrame that contains button sprites for a specific game mode to indicate their pressed state. A more visual version of Test Input.\nThe class only detects input from MultiPlayer players. These are a different kind of player that are exclusively on controllers. The ControllerStateDisplay only detects pump buttons. It has been like this since July, 2007. Def.ControllerStateDisplay{ } Attributes There are no special attributes to this actor class. It inherits from ActorFrame.\nLoaded Graphics When running either LoadMultiPlayer or LoadGameController, the following textures are loaded.\nsType in this context is the Type provided as the first argument on both functions.\n[sType] frame: The background frame for the buttons [sType] [ControllerState]: A [Sprite] that represents the button. Functions LoadGameController (string type, GameController gc)\nLoads a GameController to be used on the ControllerStateDisplay. It is automatically given a MultiPlayer of MultiPlayer_Invalid.\nYou can theoretically use this function to have functionality on a regular controller / player, given those also use GameController. LoadMultiPlayer (string type, MultiPlayer mp)\nLoads a MultiPlayer mp to detect its input. Calling this function will make the ControllerStateDisplay use a controller of GameController_1.\n","description":"Creates an ActorFrame that contains button sprites for a specific game mode to indicate their pressed state. A more visual version of Test Input.\nThe class only detects input from MultiPlayer players. These are a different kind of player that are exclusively on controllers. The ControllerStateDisplay only detects pump buttons. It has been like this since July, 2007. Def.ControllerStateDisplay{ } Attributes There are no special attributes to this actor class. It inherits from ActorFrame."},{"id":156,"href":"/dev/courses/","title":"Courses","parent":"Developers and Creators","content":" Location of Courses Example Course File Playing Courses Tags #COURSE (Required) #SONG (Required) Additional Tags Special #SONG tags Random Songs (*) #COURSETRANSLIT #BANNER #BACKGROUND #DESCRIPTION #REPEAT #LIVES #GAINSECONDS #METER #RADAR #STYLE #SCRIPTER #MODS Unused tags #DISPLAYCOURSE #COMBO #COMBOMODE Location of Courses The default location for courses are in Project OutFox/Courses, with the following structure:\nProject OutFox/Courses/ │ └───Some Creative Course Collection Name │ │ │ └───My Course.crs │ └───My Course.png (Optional) └───Singular course.crs A colection (folder) can have as many courses inside of it as it wishes. The name of the folder is not used on selection however, as described on the instruction.txt file.\nCourse files (.crs) typically go in folders, though they aren\u0026rsquo;t shown like that on the wheel\u0026hellip; yet. (Coming soon: a metric that allows a theme to do that, once we get the wheel to treat course directories like song directories)\nExample Course File #COURSE:My Course File; #SCRIPTER:Jose_Varela; #DESCRIPTION:This is an example course to showcase how it\u0026#39;s written!; #METER:Medium:8; // Given the GAINSECONDS defined here, this course uses the survival life meter bar, // which uses a timed lifebar. #GAINSECONDS:120; #SONG:OutFox/Credits:Medium;nodifficult; // These tags must be added before the song that it will be applied to. #GAINSECONDS:25; #MODS:TIME=2.580000:LEN=8.000000:MODS=Drunk, Overhead; #MODS:TIME=8.580000:LEN=5.000000:MODS=Dizzy; // Looks for a random song on the \u0026#34;OutFox Serenity Volume 1 Winter Update\u0026#34; pack. #SONG:OutFox Serenity Volume 1 Winter Update/*:Hard;nodifficult; Playing Courses To play courses, you can choose by the \u0026ldquo;Extended\u0026rdquo;, \u0026ldquo;Oni\u0026rdquo; and \u0026ldquo;Nonstop\u0026rdquo; modes.\nTags #COURSE (Required) Defines the course name to be shown during the music wheel.\n#COURSE:Very creative course name; #SONG (Required) This defines which song(s) will be played in the course.\n#SONG:Pack Name/Song Name:Difficulty:[showcourse/noshowcourse/nodifficult/award]; Additional Tags Tag Description showcourse (Default) Shows the song in the course list. noshowcourse Hides the song in the course list, and instead reports ?????. nodifficult Prevents the player from changing difficulties from the one provided in the course. award* Defines how many lives the player will earn upon clearing the song (Used on battery life meter / Oni). Example\nPlaceholder Value Pack OutFox Song Credits Difficulty Hard The difficulty value can also represent a range of difficulties, by placing two values separated by two dots. (..)\n#SONG:Pack Name/Song Name:5..9:[showcourse/noshowcourse/nodifficult/award]; If no difficulties are found in the range, a guess of 3 to 6 is used instead, otherwise it picks the closest difficulty.\nSpecial #SONG tags For the #SONG tag in particular, special data types are available to obtain certain songs that are dependant on playback of the game.\nThe following are defined by the song\u0026rsquo;s popularity rank, which is determined by how often the song is played. The N value can be any number up to the number of available songs in your installation.\nTag Description BEST[N] Provides the best song from the N ranking. BEST[N] Provides the worst songs from the N ranking. GRADEBEST[N] Provides the songs with the best achieved grades from the N ranking. GRADEWORST[N] Provides the songs with the worst achieved grades from the N ranking. Random Songs (*) Instead of a particular song, a random one can be chosen by using the wildcard operator (*).\n#SONG:My Song Folder/*; # Will pick a random song from the \u0026#34;My Song Folder\u0026#34; folder. #SONG:*; # Will pick a random song from the entire instalation.\t#COURSETRANSLIT Defines the transliterate name of the course to be shown during the music wheel when the user has the \u0026ldquo;Translate Song Titles\u0026rdquo; option enabled.\n#COURSE:A translation of the course name; #BANNER Set a custom banner made specifically for the course which will be displayed upon selection. The banner must be on the same folder as the course file.\n#BANNER:MyBanner.png; #BACKGROUND Set a custom background made specifically for the course which will be displayed before starting the course. The background must be on the same folder as the course file.\n#BANNER:MyBackground.png; #DESCRIPTION Defines a description about the course. This applies to the entire course, not each individual song.\n#DESCRIPTION:This is a course!; #REPEAT This tag determines if this course is considered an \u0026ldquo;Endless\u0026rdquo; course, which will repeat its entries upon completion until the player loses.\n#REPEAT:[yes/no]; #LIVES Defines the number of lives available to the player to start with. If this value is set, the course automatically becomes an \u0026ldquo;Oni\u0026rdquo; course with the \u0026ldquo;Lives\u0026rdquo; meter bar. #LIVES:3; #GAINSECONDS Defines how many seconds the player will earn upon completion of a song. Upon defining this tag, the course is considered an \u0026ldquo;Oni\u0026rdquo; course, with the \u0026ldquo;survival\u0026rdquo; meter bar. #GAINSECONDS:2.5; #METER Defines a general meter for the course. Most themes don\u0026rsquo;t display this value, and opt instead to show each meter from the available songs in the course.\n#METER:Medium:6; #RADAR Defines the radar values for the entire course. Takes the same data type as regular simfiles.\n#RADAR:0.598892,0.736598,0.254626,0.309189,0.736598,461.000000,433.000000,28.000000,34.000000,19.000000,0.000000,10.000000,6.000000,0.000000,0.598892,0.736598,0.254626,0.309189,0.736598,461.000000,433.000000,28.000000,34.000000,19.000000,0.000000,10.000000,6.000000,0.000000; #STYLE Sets the style that this course will be compatible with.\n#STYLE:single,versus; #SCRIPTER Defines the author of the course to be shown during the music wheel\n#SCRIPTER:You!; #MODS Defines a scripted attack to happen at a given time. This tag can be used multiple times to define multiple attacks. This tag must be inserted before the #SONG tag to apply the attacks to that song.\n#MODS:TIME=2.580000:LEN=0.310000:MODS=Drunk, Overhead; Using this line, we\u0026rsquo;re making so 100% Drunk and 100% Overhead are applied at 2.580000 seconds in when playing the song, those attacks will also last 0.310000 seconds and then slowly decay back to their default values. Read more about Attack/Modifiers here\nUnused tags These tags are ignored by the engine, but are described here for history.\n#DISPLAYCOURSE Toggles visibility of the course on the music wheel.\n#COMBO Unsure what this command would perform.\n#COMBOMODE Unsure what this command would perform.\nWritten by Jose_Varela, suggested and contributed by moruzerinho6.\n","description":"Location of Courses Example Course File Playing Courses Tags #COURSE (Required) #SONG (Required) Additional Tags Special #SONG tags Random Songs (*) #COURSETRANSLIT #BANNER #BACKGROUND #DESCRIPTION #REPEAT #LIVES #GAINSECONDS #METER #RADAR #STYLE #SCRIPTER #MODS Unused tags #DISPLAYCOURSE #COMBO #COMBOMODE Location of Courses The default location for courses are in Project OutFox/Courses, with the following structure:\nProject OutFox/Courses/ │ └───Some Creative Course Collection Name │ │ │ └───My Course.crs │ └───My Course."},{"id":157,"href":"/dev/editor/1-Defining-Timing-Data/","title":"Defining Timing Data","parent":"Editor","content":"when playing a song, several aspects of the chart will be used for timing information. These are essential to have a nicely timed chart that people can enjoy.\nBeat 0 offset This determines the starting point of the audio file to begin counting beats. This should be on the very start of any indication of audio in the song. It is important that you consider changing this value if you notice your chart is off-sync, chances are the beat 0 offset is off.\nBPM Beats per Minute, or BPM are the measurement for how many beats will amount on 60 seconds. This is used to calculate the speed of the chart at a given point in time. A chart can contain many BPM segments, that can vary the speed.\nStops Stops will pause the chart for the given amount of time. Scrolling resumes once the time assigned has passed.\nDelays (SSC) Delays will also pause the chart for the given amount of time. Scrolling resumes once the time has passed.\nDifference between Stops and Delays Given the previous descriptions of Stops and Delays, they do seem to behave the exact same, and they do; the difference is how notes interact on their start and end segments. Stops let you hit notes at the very start of the segment, while Delays let you hit notes at the very end of the segment. This is important to note in case you\u0026rsquo;d want to create segments that stop the chart for a given amount of time, to then make the player hit a note to the timing of the song picking back up to then resume scrolling.\nTime Signatures Currently only a visual aspect in the game for the editor,\nLabel Labels can be used to mark segments of notes with notes, that will be shown on the editor on the right side of the notefield\n","description":"when playing a song, several aspects of the chart will be used for timing information. These are essential to have a nicely timed chart that people can enjoy.\nBeat 0 offset This determines the starting point of the audio file to begin counting beats. This should be on the very start of any indication of audio in the song. It is important that you consider changing this value if you notice your chart is off-sync, chances are the beat 0 offset is off."},{"id":158,"href":"/dev/actors/actortypes/devicelist/","title":"DeviceList","parent":"Actor Types","content":"A BitmapText actor that shows the current list of devices connected and recognized by the game.\nDef.DeviceList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which controllers are detected.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current devices. ","description":"A BitmapText actor that shows the current list of devices connected and recognized by the game.\nDef.DeviceList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which controllers are detected.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current devices. "},{"id":159,"href":"/dev/actors/actortypes/dynamicactorscroller/","title":"DynamicActorScroller","parent":"Actor Types","content":"The DynamicActorScroller is an ActorScroller that fills in its children on the fly.\nThe best example for the use of this class is the HighScore scroller, which constantly updates itself with new information everytime an item is deloaded from the screen.\nThe biggest different about this and ActorScroller is that DynamicActorScroller requires only 1 [Actor] to be inside it. It cannot be more than 1.\nDef.DynamicActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, LoadFunction = function() end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Utilization Behavior changes Full code example Attributes The attributes for DynamicActorScroller are the same as ActorScroller, except for an addition.\nName Type Action LoadFunction function New to DynamicActorScroller, determines the ammount of items to be generated. provides two arguments which are nil. NumItemsToDraw number How many items will be drawn at once on the ActorScroller. SecondsPerItem number How long will the scroller take before moving to the next item. TransformFunction function The function that positions every item in the ActorScroller. For more information, check Transforming the Scroller. Subdivisions number How many subdivisions should there be between each item? This allows for smoother movement for scrollers that contain any mathematical curve. UseMask bool Toggles a mask on the top and bottom of the ActorScroller. MaskHeight number Height of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. MaskWidth number Width of the mask present on the top and bottom of the ActorScroller. Requires UseMask to be true. LoopScroller bool Loops the selection of the scroller to wrap around. WrapScroller bool Wraps the items of the scroller to attempt a seamless transition back. Utilization As mentioned previously, this actor class only allows 1 actor in it, which will be processed to be filled on the fly. If more are provided, it will complain about it, and stop the game due to a failed assert.\nAdding actors can be done with the same methods presented on Adding Actors on ActorScroller.\nUpon adding the actor, a new attribute is added to the list, which is LoadFunction. This attribute is responsible to manage and update the actors based on the relative position of the current choice.\nBehavior changes With this actor type, the TransformFunction has a different behavior.\nitemIndex won\u0026rsquo;t update anymore, as LoadFunction is now the one doing the work. Full code example local af = Def.ActorFrame{ InitCommand=function(self) self:Center() end } local numItems = 10 af[#af+1] = Def.DynamicActorScroller{ NumItemsToDraw = 5, SecondsPerItem = 0.1, LoopScroller = true, OnCommand=function(self) -- For more information about this Input Controller, check \u0026#34;Custom Input\u0026#34;. -- https://outfox.wiki/dev/theming/Theming-Custom-Input/ self.controller = LoadModule(\u0026#34;Lua.InputSystem.lua\u0026#34;)(self) SCREENMAN:GetTopScreen():AddInputCallback(self.controller) end, OffCommand=function(self) SCREENMAN:GetTopScreen():RemoveInputCallback(self.controller) end, LoadFunction = function(self, itemIndex) -- This will tell the scroller how many items will be generated for the scroller. It just needs a number. -- \u0026#34;Call the expression with line = nil to find out the number of lines.\u0026#34; -- Self is the actor represented for the actor set. -- itemIndex is the item relative to the current selection from the user. if self then self:GetChild(\u0026#34;Text\u0026#34;):settext( \u0026#34;I am line \u0026#34;.. itemIndex ) end return numItems end, TransformFunction=function(self, offset, itemIndex, numItems) self:y( offset * 40 ) end, -- By the rules, this is only adding a single item, which is an ActorFrame holding a BitmapText. -- The actor in this case will be provided with a ItemIndex attribute attached. This can be accessed -- using self. This is only given initially and doesn\u0026#39;t update. Use the LoadFunction to get a new -- version of the value. Def.ActorFrame{ OnCommand=function(self) self:GetChild(\u0026#34;Text\u0026#34;):diffuse(color(\u0026#34;#000000\u0026#34;)) end, Def.BitmapText{ Font=\u0026#34;Common Normal\u0026#34;, Name=\u0026#34;Text\u0026#34; } }, -- Let\u0026#39;s add input to this scroller. MenuLeftCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() - 1 ) end, MenuRightCommand=function(self) self:SetDestinationItem( self:GetCurrentItem() + 1 ) end, } return af ","description":"The DynamicActorScroller is an ActorScroller that fills in its children on the fly.\nThe best example for the use of this class is the HighScore scroller, which constantly updates itself with new information everytime an item is deloaded from the screen.\nThe biggest different about this and ActorScroller is that DynamicActorScroller requires only 1 [Actor] to be inside it. It cannot be more than 1.\nDef.DynamicActorScroller{ NumItemsToDraw = 3, SecondsPerItem = 3, TransformFunction = function(self, offset, itemIndex, numItems) end, LoadFunction = function() end, Subdivisions = 4, UseMask = false, MaskWidth = 30, MaskHeight = 50, LoopScroller = false, WrapScroller = false, } Attributes Utilization Behavior changes Full code example Attributes The attributes for DynamicActorScroller are the same as ActorScroller, except for an addition."},{"id":160,"href":"/dev/editor/0-Editor-Preferences/","title":"Editor Preferences","parent":"Editor","content":"The editor brings editor specific changes that allow you to tweak certain aspects for editing your content.\nPreferences introduced on 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27 Preference Name Action Show Both Players Toggles the display of both players during playback.\nNote: Both players are generated anyway during charts that allow for more than one player (like Single, or Versus). Other chart types won\u0026rsquo;t be affected by this setting. Show Measure Lines on Playback Toggles the measure lines during playback. These are the horizontal lines shown during editing, which you may want to disable when previewing sections of a file that you may need full clarity. Show Modifiers List Shows a list of modifiers currently active on the player on their respective side that updates in real time. Auto Advance Upon Note Placement Auto advances the cursor to the next quantized beat from the currently selected snap after placing a note. (Experimental) Show Backgrounds Choose whenever to display song backgrounds while playing. This also affects the display of the backgrounds on the Foreground layer, which are used for chart modding. Allow Notefield Changes on Preview Enables the preview notefield (Which is enabled by pressing Space) to display chart-related changes like Scroll Speed changes, that change the spacing of the notes. ","description":"The editor brings editor specific changes that allow you to tweak certain aspects for editing your content.\nPreferences introduced on 5.0.0-editor-preview-r0 to 5.0.0-editor-preview-r27 Preference Name Action Show Both Players Toggles the display of both players during playback.\nNote: Both players are generated anyway during charts that allow for more than one player (like Single, or Versus). Other chart types won\u0026rsquo;t be affected by this setting. Show Measure Lines on Playback Toggles the measure lines during playback."},{"id":161,"href":"/dev/actors/actortypes/gradedisplay/","title":"GradeDisplay","parent":"Actor Types","content":"An ActorFrame containing AutoActors based on the number of grades available that are assigned by the theme (PlayerStageStats::NumGradeTiersUsed).\nDef.GradeDisplay{ } Attributes This actor inherits the attributes from ActorFrame.\nFunctions Load (string sMetricsGroup)\nLoad the graphics from a defined \u0026ldquo;metrics\u0026rdquo; group. It will seek for grade images with the following format:\n[sMetricsGroup] Grade Internally it is called metrics, but this actor doesn\u0026rsquo;t use any kind of graphics directly, other than the ammount of grades defined by PlayerStageStats::NumGradeTiersUsed. SetGrade (Grade newGrade)\nSet the grade to display. Requires Load to have been called before, otherwise it will fail.\n","description":"An ActorFrame containing AutoActors based on the number of grades available that are assigned by the theme (PlayerStageStats::NumGradeTiersUsed).\nDef.GradeDisplay{ } Attributes This actor inherits the attributes from ActorFrame.\nFunctions Load (string sMetricsGroup)\nLoad the graphics from a defined \u0026ldquo;metrics\u0026rdquo; group. It will seek for grade images with the following format:\n[sMetricsGroup] Grade Internally it is called metrics, but this actor doesn\u0026rsquo;t use any kind of graphics directly, other than the ammount of grades defined by PlayerStageStats::NumGradeTiersUsed."},{"id":162,"href":"/dev/actors/actortypes/grooveradar/","title":"GrooveRadar","parent":"Actor Types","content":"An ActorFrame which generates a pentagon-shaped radar indicating various values that correspond to several aspects of a selected or given chart.\nDef.GrooveRadar{ OnCommand=function(self) self:SetFromValues( PLAYER_1, { 0.5, 0.3, 0.5, 0.8, 1 } ) -- Depending on where this sample code is loaded at, this next call can be successful, or will result empty based on the case -- that PLAYER_2 has steps selected. local PlayerTwoSteps = GAMESTATE:GetCurrentSteps(PLAYER_2) self:SetFromRadarValues( PlayerTwoSteps:GetRadarValues(PLAYER_2) ) end } Attributes Loaded Metrics Functions SetFromRadarValues SetFromValues SetEmpty Attributes There are no special attributes for this actor class. It inherits the attributes from ActorFrame.\nLoaded Metrics The GrooveRadar uses the following metrics for settings:\n[GrooveRadar] # How thick should the edges of the radar be? EdgeWidth=2 # How opaque should the color base of the radar be? CenterAlpha=0.25 # These define what should be done with each player\u0026#39;s part of the graph. # By default, these are used to color the individual players. RadarValueMapP1OnCommand=diffuse,PlayerColor(PLAYER_1) RadarValueMapP2OnCommand=diffuse,PlayerColor(PLAYER_2) Functions SetFromRadarValues (PlayerNumber player, RadarValues data)\nSets the data for the GrooveRadar from a chart\u0026rsquo;s RadarValues. These values are generated data when saving the chart which precalculate information like jump intensity, chaos charting, ammount of holds, etc.\nIf RadarValues is nil, it will perform the same action as SetEmpty.\nYou can obtain a chart\u0026rsquo;s RadarValues by running GetRadarValues for a player\u0026rsquo;s steps.\nlocal chart = GAMESTATE:GetCurrentSteps(PLAYER_1) -- Get the values self:SetFromRadarValues( chart:GetRadarValues(PLAYER_1) ) SetFromValues (PlayerNumber player, {number val1, number val2, number val3, number val4, number val5})\nAllows you to insert custom data into the GrooveRadar. This requires 5 numbers which (usually) correspond to the following categories:\nStream Voltage Air Freeze Chaos It is suggested to limit the values here to be from 0 to 1. The radar is not clamped to these limits when using SetFromValues, so higher values can make the radar draw outside of its intended area. Internally, these are just indexed in a number form, they do not follow a fixed category, so you can name these by using the graphics required for the GrooveRadar. If the values table isn\u0026rsquo;t table or is nil, it will perform the same action as SetEmpty.\nSetEmpty (PlayerNumber player)\nClears out the information from the GrooveRadar for a specific player.\n","description":"An ActorFrame which generates a pentagon-shaped radar indicating various values that correspond to several aspects of a selected or given chart.\nDef.GrooveRadar{ OnCommand=function(self) self:SetFromValues( PLAYER_1, { 0.5, 0.3, 0.5, 0.8, 1 } ) -- Depending on where this sample code is loaded at, this next call can be successful, or will result empty based on the case -- that PLAYER_2 has steps selected. local PlayerTwoSteps = GAMESTATE:GetCurrentSteps(PLAYER_2) self:SetFromRadarValues( PlayerTwoSteps:GetRadarValues(PLAYER_2) ) end } Attributes Loaded Metrics Functions SetFromRadarValues SetFromValues SetEmpty Attributes There are no special attributes for this actor class."},{"id":163,"href":"/dev/actors/actortypes/helpdisplay/","title":"HelpDisplay","parent":"Actor Types","content":"The HelpDisplay is an actor which relies on BitmapText to draw text meant to guide the player in interacting with the interface with helpful text that flips to segments in a given amount of time.\nBy default it uses the [HelpDisplay] metrics group to get information about the OnCommand, time to how the tip (TipShowTime) and how often it needs to switch the help block (TipSwitchTime).\nDef.HelpDisplay { Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font OnCommand = function(self) local helpText = \u0026#34;I can provide helpful text::Like moving left and right to change songs!::Or pressing Esc to go back!\u0026#34; self:SetTipsColonSeparated( helpText ) end } Please check the BitmapText page for the list of attributes.\nFormatting Help Text (SetTipsColonSeparated) Functions SetTipsColonSeparated settips gettips() SetSecsBetweenSwitches Formatting Help Text (SetTipsColonSeparated) Help text in HelpDisplay can be just regular text, but the actor allows for this text to be in \u0026ldquo;pages\u0026rdquo;, which splits the text into multiple segments that will be shown in a determined amount of time. These are separated using the :: (two Colon characters) sequence.\nFor example, if my HelpDisplay has a interval time of 5 seconds and a help text of \u0026quot;I am::Help Text\u0026quot;, the following will happen:\nI am will be shown flashing for the first five seconds. After 5 seconds, Help Text will be shown for the next five. Once those 5 seconds pases, it will return back to I am and the process restarts. Functions SetTipsColonSeparated ( string text )\nAlias of settips. Splits the text using the :: flag. Check Formatting Help Text for SetTipsColonSeparated for info on how to format it.\nsettips ( table\u0026lt;string\u0026gt; text, table\u0026lt;string\u0026gt; textAlt )\nUsing a table of strings, it formats the text to contain the help information.\n-- Using the example from above, \u0026#39;I am \u0026lt;split\u0026gt; Help Text`. local myHelpText = { \u0026#34;I am\u0026#34;, \u0026#34;Help Text\u0026#34; } self:settips(myHelpText) textAlt is an optional table to have text in case there are missing glyphs on the current font. Check Ensuring string compatibility for more information.\ngettips() Returns two tables which contain the help text currently being displayed on the HelpDisplay.\nlocal helpText, helpTextAit = self:gettips() -- Now you can obtain the help text. for data in ivalues(helpText) do Trace(data) end SetSecsBetweenSwitches ( float seconds )\nTells the help display how long it has to wait before switching to the next help block.\n","description":"The HelpDisplay is an actor which relies on BitmapText to draw text meant to guide the player in interacting with the interface with helpful text that flips to segments in a given amount of time.\nBy default it uses the [HelpDisplay] metrics group to get information about the OnCommand, time to how the tip (TipShowTime) and how often it needs to switch the help block (TipSwitchTime).\nDef.HelpDisplay { Font = \u0026#34;Common Normal\u0026#34;, -- Alias of the default font OnCommand = function(self) local helpText = \u0026#34;I can provide helpful text::Like moving left and right to change songs!"},{"id":164,"href":"/dev/actors/actortypes/inputlist/","title":"InputList","parent":"Actor Types","content":"A BitmapText actor that shows the current list of buttons pressed.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which buttons are being pressed.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current buttons. ","description":"A BitmapText actor that shows the current list of buttons pressed.\nDef.InputList { Font=\u0026#34;Common Normal\u0026#34; } This actor is used on the Test Input screen to showcase which buttons are being pressed.\nAttributes for this actor can be found on BitmapText.\nText application to this actor is ignored as the game automatically updates it with the current buttons. "},{"id":165,"href":"/dev/actors/","title":"Lua and Actors","parent":"Developers and Creators","content":" Actor Types Actor Anatomy of an Actor Obtaining Childs and ActorFrame Levels ActorFrame ActorFrameTexture ActorMultiVertex ActorProxy ActorScroller BGAnimation BitmapText Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText BPMDisplay ControllerStateDisplay DeviceList DynamicActorScroller GradeDisplay GrooveRadar HelpDisplay InputList MemoryCardDisplay MeterDisplay Model Loading Additional Bones NoteField Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation PercentageDisplay Quad ScoreDisplayAliveTime ScoreDisplayCalories SongBPMDisplay SongMeterDisplay Sound Controlling Sound Sprite Managing Frames StepsDisplay TextBanner WorkoutGraph Behavioral differences from SM 3.95/ITG Command List Tweening Converting INI files to Lua Converting XML files to Lua ","description":"Actor Types Actor Anatomy of an Actor Obtaining Childs and ActorFrame Levels ActorFrame ActorFrameTexture ActorMultiVertex ActorProxy ActorScroller BGAnimation BitmapText Ensuring string compatibility Inline-Text manipulation Segments of a BitmapText BPMDisplay ControllerStateDisplay DeviceList DynamicActorScroller GradeDisplay GrooveRadar HelpDisplay InputList MemoryCardDisplay MeterDisplay Model Loading Additional Bones NoteField Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation PercentageDisplay Quad ScoreDisplayAliveTime ScoreDisplayCalories SongBPMDisplay SongMeterDisplay Sound Controlling Sound Sprite Managing Frames StepsDisplay TextBanner WorkoutGraph Behavioral differences from SM 3."},{"id":166,"href":"/dev/actors/actortypes/memorycarddisplay/","title":"MemoryCardDisplay","parent":"Actor Types","content":"Creates an ActorFrame that contains a Sprite with the current status for a Player\u0026rsquo;s MemoryCard.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } On each memory card update, the actor will be updated to detect if the card is loaded, ejected, checking, toolate, non-existent, and others.\nThe graphics used to update this actor are located in Graphics/MemoryCardDisplay [Card State] p[PlayerNumber index]. List of MemoryCard states used by MemoryCardDisplay. ↕ MemoryCardDisplay checking p1 MemoryCardDisplay checking p2 MemoryCardDisplay error p1 MemoryCardDisplay error p2 MemoryCardDisplay late p1 MemoryCardDisplay late p2 MemoryCardDisplay none p1 MemoryCardDisplay none p2 MemoryCardDisplay ready p1 MemoryCardDisplay ready p2 MemoryCardDisplay removed p1 MemoryCardDisplay removed p2 Attributes Name Type Action PlayerNumber PlayerNumber The player to check its current MemoryCard state. ","description":"Creates an ActorFrame that contains a Sprite with the current status for a Player\u0026rsquo;s MemoryCard.\nDef.MemoryCardDisplay{ PlayerNumber=PLAYER_1 } On each memory card update, the actor will be updated to detect if the card is loaded, ejected, checking, toolate, non-existent, and others.\nThe graphics used to update this actor are located in Graphics/MemoryCardDisplay [Card State] p[PlayerNumber index]. List of MemoryCard states used by MemoryCardDisplay. ↕ MemoryCardDisplay checking p1 MemoryCardDisplay checking p2 MemoryCardDisplay error p1 MemoryCardDisplay error p2 MemoryCardDisplay late p1 MemoryCardDisplay late p2 MemoryCardDisplay none p1 MemoryCardDisplay none p2 MemoryCardDisplay ready p1 MemoryCardDisplay ready p2 MemoryCardDisplay removed p1 MemoryCardDisplay removed p2 Attributes Name Type Action PlayerNumber PlayerNumber The player to check its current MemoryCard state."},{"id":167,"href":"/dev/actors/actortypes/meterdisplay/","title":"MeterDisplay","parent":"Actor Types","content":"The base for SongMeterDisplay, which uses two Actors to render the progress of a given value.\nUnlike SongMeterDisplay, MeterDisplay doesn\u0026rsquo;t update by itself. In order to perform updates, you have to manually set a new width and position value for Stream and Tip. Def.MeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type. Stream=Def.Sprite{ Texture=\u0026#34;MyStreamBar\u0026#34; }, Tip=Def.Sprite{ Texture=\u0026#34;MyTip\u0026#34; } } Attributes Name Type Action StreamWidth number The width the MeterDisplay. Can be adjusted later with SetStreamWidth. Stream Actor The actor that will represent the progress of the song. Tip Actor The actor that will represent the current position of the song. The Stream attribute is required for the SongMeterDisplay to be created. Otherwise it will return an empty Actor. Both Stream and Tip can be any kind of Actor. Functions SetStreamWidth (float Width)\nAdjusts the width of the MeterDisplay to the desired Width.\n","description":"The base for SongMeterDisplay, which uses two Actors to render the progress of a given value.\nUnlike SongMeterDisplay, MeterDisplay doesn\u0026rsquo;t update by itself. In order to perform updates, you have to manually set a new width and position value for Stream and Tip. Def.MeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played."},{"id":168,"href":"/dev/actors/actortypes/model/","title":"Model","parent":"Actor Types","content":"Allows one to display MilkShape3D ASCII models, having separate attributes for materials, bones and meshes.\nDef.Model{ Meshes=\u0026#34;MyModel.txt\u0026#34;, Materials=\u0026#34;MyModel.txt\u0026#34;, Bones=\u0026#34;MyModel.txt\u0026#34;, OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) end } Meshes are the composition and structure of the Model. This data represents the vertices that make the Model take shape.\nMaterials are the textures that the model will use. These can be any of the image formats listed in the Supported File Extensions page. They can also be .ini files that define animated textures on a Def.Sprite.\nBones make the model come to life. They can be defined within the primary model file, or, in the case of dancing characters, be controlled via a separate file that only contains the bones.\nIn the above example, all three attributes used the same filepath; all the necessary data was contained within a single file. It is possible to configure the MilkShape 3D software to output distinct files for meshes, materials, and bones, and set each Def.Model attribute accordingly, but that is outside the scope of this lesson.\nAll three attributes must be provided within Def.Model as paths to resources that can be loaded or the game will crash. Table of Contents Loading Additional Bones Attributes Name Type Action Meshes string Path to a MilkShape 3D ASCII text file containing model meshes. Materials string Path to a MilkShape 3D ASCII text file containing model materials. Bones string Path to a MilkShape 3D ASCII text file containing model bones. ","description":"Allows one to display MilkShape3D ASCII models, having separate attributes for materials, bones and meshes.\nDef.Model{ Meshes=\u0026#34;MyModel.txt\u0026#34;, Materials=\u0026#34;MyModel.txt\u0026#34;, Bones=\u0026#34;MyModel.txt\u0026#34;, OnCommand=function(self) self:Center() -- When a model begins its animation, it will loop indefinitely. To stop that, use the loop command to -- set the flag to false. self:loop(false) end } Meshes are the composition and structure of the Model. This data represents the vertices that make the Model take shape.\nMaterials are the textures that the model will use."},{"id":169,"href":"/dev/actors/actortypes/notefield/","title":"NoteField","parent":"Actor Types","content":" Contains the receptors and notes that are seen in gameplay. Normally seen in Player actors.\nDef.NoteField through lua allows one to create extra NoteFields that aren\u0026rsquo;t bound to a Player actor.\nlocal receptposnorm = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposreve = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) local yoffset = receptposreve-receptposnorm local notefieldmid = (receptposnorm + receptposreve)/2 local def_dda = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceAfterTargetsPixels\u0026#34;) local def_ddb = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceBeforeTargetsPixels\u0026#34;) Def.ActorFrame{ FOV=45, InitCommand= function(self) self:zoom(SCREEN_HEIGHT/480):Center() end, Def.NoteField{ Player= PLAYER_1, NoteSkin= \u0026#34;Exact3D\u0026#34;, DrawDistanceAfterTargetsPixels= def_dda, DrawDistanceBeforeTargetsPixels= def_ddb, YReverseOffsetPixels= yoffset, FieldID= 3, InitCommand= function(self) self:y(notefieldmid) end, } } In the above example, The resulting NoteField is relatively close to what a NoteField in a Player would be like. The NoteSkin chosen is \u0026ldquo;Exact3D\u0026rdquo;, while the positioning is based off of theme metrics.\nBecause Player is set to PLAYER_1, it will also grab the Chart that Player 1 selected and read from Player 1\u0026rsquo;s input.\nBecause this NoteField is not drawn by an actual Player actor, Mini won\u0026rsquo;t zoom the NoteField, and perspective modifiers will do nothing. Those will have to be replicated manually. Check How a Player Manipulates its\u0026rsquo; NoteField for more information on how to recreate it. Table of Contents Doing Mods with Def.NoteField Hidden Regions \u0026amp; NoteType Multipliers How a Player Manipulates its\u0026#39; NoteField Input Manipulation Attributes Name Type Action Default NoteSkin string The NoteSkin to use for the NoteField. \u0026ldquo;default\u0026rdquo; DrawDistanceAfterTargetsPixels float How far back missed notes draw (in pixels) -128 DrawDistanceBeforeTargetsPixels float How far down the NoteField draws (in pixels) 480 YReverseOffsetPixels float The center-point of the NoteField 288 Chart string Chart to load \u0026ldquo;Invalid\u0026rdquo; (Grab from chosen Player) Player int Player to grab chart and input from 0 (Player 1) InitMods string Modifiers the NoteField start with. \u0026quot;\u0026quot; (No modifiers) FieldID int What ID the NoteField uses (Affects Tornado, Invert, Tipsy, Expand \u0026amp; Beat) 0 AutoPlay boolean AutoPlay the given chart. false ","description":"Contains the receptors and notes that are seen in gameplay. Normally seen in Player actors.\nDef.NoteField through lua allows one to create extra NoteFields that aren\u0026rsquo;t bound to a Player actor.\nlocal receptposnorm = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYStandard\u0026#34;) local receptposreve = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;ReceptorArrowsYReverse\u0026#34;) local yoffset = receptposreve-receptposnorm local notefieldmid = (receptposnorm + receptposreve)/2 local def_dda = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceAfterTargetsPixels\u0026#34;) local def_ddb = THEME:GetMetric(\u0026#34;Player\u0026#34;,\u0026#34;DrawDistanceBeforeTargetsPixels\u0026#34;) Def.ActorFrame{ FOV=45, InitCommand= function(self) self:zoom(SCREEN_HEIGHT/480):Center() end, Def.NoteField{ Player= PLAYER_1, NoteSkin= \u0026#34;Exact3D\u0026#34;, DrawDistanceAfterTargetsPixels= def_dda, DrawDistanceBeforeTargetsPixels= def_ddb, YReverseOffsetPixels= yoffset, FieldID= 3, InitCommand= function(self) self:y(notefieldmid) end, } } In the above example, The resulting NoteField is relatively close to what a NoteField in a Player would be like."},{"id":170,"href":"/dev/actors/actortypes/percentagedisplay/","title":"PercentageDisplay","parent":"Actor Types","content":"The PercentageDisplay is an actor which relies on BitmapText to draw a player\u0026rsquo;s current score in a percentage (%).\nWhile using this actor, any kind of text string manipulation won\u0026rsquo;t work if AutoRefresh is enabled, as it constantly updates the BitmapText for Percent and PercentRemainder (if defined) with the current percent data.\nIf Percentage Scoring is disabled, this actor will show the score in Dance Points instead (000000000).\nNote that this won\u0026rsquo;t add commas to the score, so it will need to be declared using the commify function on the FormatPercentScore Attribute.\nDef.PercentageDisplay{ DancePointsDigits = 2, AutoRefresh = true, FormatPercentScore = Percent = Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34; -- Alias of the default font. } PercentRemainder = Def.BitmapText{ Font = \u0026#34;Common Normal\u0026#34; -- Alias of the default font. } } Table of Contents Attributes Name Type Action DancePointsDigits int Defines how many digits should be shown when the score needs to be presented as dance points. Applicable if Percentage Scoring is disabled. AutoRefresh bool Tells the actor to automatically update if there\u0026rsquo;s any update to the player\u0026rsquo;s score. FormatPercentScore function Tells the actor how to present this percentage score for the Percent and PercentRemainder actors. Applicable if Percentage Scoring is enabled. Percent BitmapText The text that will draw the main percentage. Can also draw the entire percentage (including decimals) if PercentRemainder is not defined. PercentRemainder BitmapText The text that will draw the decimals for the percentage score. Functions LoadFromStats ( PlayerState state, PlayerStageStats stats )\nLoads the player information so the PercentageDisplay can update based on the player data.\nIf AutoRefresh is off, this data won\u0026rsquo;t be updated automatically and the function will need to be called again manually to perform the same thing. ","description":"The PercentageDisplay is an actor which relies on BitmapText to draw a player\u0026rsquo;s current score in a percentage (%).\nWhile using this actor, any kind of text string manipulation won\u0026rsquo;t work if AutoRefresh is enabled, as it constantly updates the BitmapText for Percent and PercentRemainder (if defined) with the current percent data.\nIf Percentage Scoring is disabled, this actor will show the score in Dance Points instead (000000000).\nNote that this won\u0026rsquo;t add commas to the score, so it will need to be declared using the commify function on the FormatPercentScore Attribute."},{"id":171,"href":"/","title":"Project OutFox Wiki","parent":"","content":"Welcome to the documentation wiki for Project OutFox! Project OutFox is a multi-moded rhythm game sandbox. It features 17 (and growing!) different simulation styles allowing players to create unique experiences in charting, gimmicks and effects to outfox their friends! The game allows for full customisation and supports a number of community led custom chart formats.\nThis wiki is still a work in progress, so keep checking back for updates on new content! It is edited via a Git repository; commit access is limited to the development team, but you can always perform pull requests too.\nTable of contents Info on Project OutFox About FAQ The Team Release History Our Project Roadmap OutFox Serenity User\u0026rsquo;s guide Installing OutFox Let's Get Started Configure Controllers Supported Game Modes Content folders Preferences.ini file For Developers and Creators NoteLoader support Lua and Actors Effects and Gimmicks Chart Editor Modifiers Translation Theming Credits and license Text available under the CC-BY SA 4.0 licence, attributed to Team Rizu unless otherwise noted.\nPowered by GitHub Pages, Hugo, and Geekdocs.\n","description":"Welcome to the documentation wiki for Project OutFox! Project OutFox is a multi-moded rhythm game sandbox. It features 17 (and growing!) different simulation styles allowing players to create unique experiences in charting, gimmicks and effects to outfox their friends! The game allows for full customisation and supports a number of community led custom chart formats.\nThis wiki is still a work in progress, so keep checking back for updates on new content!"},{"id":172,"href":"/dev/actors/actortypes/quad/","title":"Quad","parent":"Actor Types","content":"An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor does not contain any attributes, and uses all the functions available for Actor.\n","description":"An arbitrary rectangle. Acts like a Sprite with a blank texture.\n-- Generate a 64 x 64 rectangle on the center of the screen, and color it Yellow. Def.Quad{ OnCommand=function(self) self:zoomto( 64,64 ):diffuse( Color.Yellow ) :xy( SCREEN_CENTER_X, SCREEN_CENTER_Y ) end } This actor does not contain any attributes, and uses all the functions available for Actor."},{"id":173,"href":"/dev/actors/actortypes/scoredisplayalivetime/","title":"ScoreDisplayAliveTime","parent":"Actor Types","content":"A BitmapText that provides the amount of time the player has survived throughout the current session.\nDef.ScoreDisplayAliveTime{ PlayerNumber = PLAYER_1, MultiPlayer = \u0026#34;MultiPlayer_P1\u0026#34; } Attributes Only one of the attributes is needed to make the actor function. Name Type Action PlayerNumber PlayerNumber The player to obtain its alive time during the session. MultiPlayer Multiplayer The multiplayer to obtain its alive time during the session. This actor inherits the attributes from BitmapText.\n","description":"A BitmapText that provides the amount of time the player has survived throughout the current session.\nDef.ScoreDisplayAliveTime{ PlayerNumber = PLAYER_1, MultiPlayer = \u0026#34;MultiPlayer_P1\u0026#34; } Attributes Only one of the attributes is needed to make the actor function. Name Type Action PlayerNumber PlayerNumber The player to obtain its alive time during the session. MultiPlayer Multiplayer The multiplayer to obtain its alive time during the session. This actor inherits the attributes from BitmapText."},{"id":174,"href":"/dev/actors/actortypes/scoredisplaycalories/","title":"ScoreDisplayCalories","parent":"Actor Types","content":"A BitmapText that provides the amount of calories burned throughout the session.\nDef.ScoreDisplayCalories{ PlayerNumber = PLAYER_1, } Attributes Name Type Action PlayerNumber PlayerNumber The player to obtain the amount of calories burned throughout the session. This actor inherits the attributes from BitmapText.\n","description":"A BitmapText that provides the amount of calories burned throughout the session.\nDef.ScoreDisplayCalories{ PlayerNumber = PLAYER_1, } Attributes Name Type Action PlayerNumber PlayerNumber The player to obtain the amount of calories burned throughout the session. This actor inherits the attributes from BitmapText."},{"id":175,"href":"/dev/actors/actortypes/songbpmdisplay/","title":"SongBPMDisplay","parent":"Actor Types","content":"A slightly automated version of BPMDisplay that automatically updates the text to the BPM range from a given player.\nDef.SongBPMDisplay{ Player = PLAYER_1, } Attributes Functions SetFromGameState SetFromSong SetFromSteps SetFromCourse GetText Attributes Name Type Action Player PlayerNumber The player to obtain the current BPM from. This actor inherits the attributes from BitmapText.\nFunctions These functions also work on BPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead.\nSetFromSong (Song pSong)\nSets the BPM to the song\u0026rsquo;s BPM range. This value can be tricked if the chart is using a specified BPM rather than the actual BPM, or even jumbled if it\u0026rsquo;s tagged as random.\nSetFromSteps (Steps data)\nSets the BPM to the steps\u0026rsquo;s BPM range. Useful if the current steps contain different timing data.\nSetFromCourse (Course pCourse)\nObtains the BPM range from the course. A couple of rules are applied here:\nThe operation will fail if there are no steps available on the course for the current StepsType. If there are more entries than the value of Common::MaxCourseEntriesBeforeShowVarious (Default: 10), the course is considered various, and instead will output the text defined on BPMDisplay::VariousText (Default: \u0026quot;000\u0026quot;). GetText Gets the current value that the SongBPMDisplay contains.\n","description":"A slightly automated version of BPMDisplay that automatically updates the text to the BPM range from a given player.\nDef.SongBPMDisplay{ Player = PLAYER_1, } Attributes Functions SetFromGameState SetFromSong SetFromSteps SetFromCourse GetText Attributes Name Type Action Player PlayerNumber The player to obtain the current BPM from. This actor inherits the attributes from BitmapText.\nFunctions These functions also work on BPMDisplay. SetFromGameState Obtains the current BPM information from the song or course. If the song is from an extra stage, it will report it as a random value instead."},{"id":176,"href":"/dev/actors/actortypes/songmeterdisplay/","title":"SongMeterDisplay","parent":"Actor Types","content":"An automated MeterDisplay that shows the current position of the song being played.\nDef.SongMeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type. Stream=Def.Sprite{ Texture=\u0026#34;MyStreamBar\u0026#34; }, Tip=Def.Sprite{ Texture=\u0026#34;MyTip\u0026#34; } -- New to OutFox: Allows the SongMeterDisplay to start from second 0, rather than the restart of the StartFromZero=false, } Attributes Name Type Action StreamWidth number The width the MeterDisplay. Can be adjusted later with SetStreamWidth. Stream Actor The actor that will represent the progress of the song. Tip Actor The actor that will represent the current position of the song. StartFromZero bool New to OutFox: Allows the SongMeterDisplay to start from second 0, rather than the start of the chart. The Stream is the background of the meter, which denotes how far you are in the song, while the Tip is the current position.\nThe Stream attribute is required for the SongMeterDisplay to be created. Otherwise it will return an empty Actor. Both Stream and Tip can be any kind of Actor. Position Logic When a song is playing, it will detect both player\u0026rsquo;s positions, and check which one has the longest position to determine as the end, as the song will end once everyone\u0026rsquo;s steps are over. If only player is present, it will automatically grab that player instead.\nFunctions SetStreamWidth (float Width)\nAdjusts the width of the MeterDisplay to the desired Width.\n","description":"An automated MeterDisplay that shows the current position of the song being played.\nDef.SongMeterDisplay{ -- The width the MeterDisplay. Can be adjusted later with SetStreamWidth. StreamWidth = 100, InitCommand=function(self) -- This generates a 300 x [the height of your Stream texture] that will define the current progress of whatever song is currently being played. -- The actor will automatically update progress for the Tip and the Stream. self:SetStreamWidth( 300 ) end, -- Both the Stream and Tip are AutoActors, so they can be any actor type."},{"id":177,"href":"/dev/actors/actortypes/sound/","title":"Sound","parent":"Actor Types","content":"Used to play sound files outside of the common theme sound effects and the simfile\u0026rsquo;s song itself.\nRemoves the need to use SOUND:PlayOnce(), as it allows for pre-loading the sound file at the start instead of loading (possibly many times) and playing the sound mid-screen.\nDef.Sound{ -- Load the audio called MySound, which is a ogg file in this example. File=\u0026#34;MySound.ogg\u0026#34;, -- Lets the audio pane from side to side. Useful for audios that need to play on a specific player side. SupportPan=true, -- Allows the audio to change rate and pitch. SupportRateChanging=false, -- this assigns the audio to be an Action, which is a flag for sounds that allows it to be muted by the player, -- with the use of the Mute Actions key (Default to \u0026#34;Pause\u0026#34;). IsAction=true, OnCommand=function(self) -- When creating the actor, sound will not play automatically, so you need to use the play command -- to perform such action. self:play() -- If the audio has the \u0026#34;(loop)\u0026#34; flag set on its filename, it will loop infinetly. So to top it, use the -- appropiate command. self:stop() -- If the sound needs to be paused on a particular frame, and not to reset, use the pause command. self:pause( true ) -- Use false to resume it. end } Table of Contents Controlling Sound Attributes Name Type Action File string The audio file to be utilized for this Sound. SupportPan bool Lets the audio pane from side to side. Useful for audios that need to play on a specific player side. SupportsRateChanging bool Allows the audio to change rate and pitch. IsAction bool Assigns the audio to become a Sound Effect, which allows it to be muted by the player if they so choose from the Effect Volume Introduced in Project OutFox 4.9.9 or by the MuteActions preference. Precache bool Tells the engine to store this sound on memory for later use. ","description":"Used to play sound files outside of the common theme sound effects and the simfile\u0026rsquo;s song itself.\nRemoves the need to use SOUND:PlayOnce(), as it allows for pre-loading the sound file at the start instead of loading (possibly many times) and playing the sound mid-screen.\nDef.Sound{ -- Load the audio called MySound, which is a ogg file in this example. File=\u0026#34;MySound.ogg\u0026#34;, -- Lets the audio pane from side to side. Useful for audios that need to play on a specific player side."},{"id":178,"href":"/dev/actors/actortypes/sprite/","title":"Sprite","parent":"Actor Types","content":"Allows one to display images on screen. These images can be a png, jpeg, gif or even a video file.\nDef.Sprite{ Texture=\u0026#34;MyTexture.png\u0026#34;, -- The Texture is optional, you can start a sprite without a texture. -- You can manipulate the amount of frames that a sprite can use using the Sprite argument. Frames={ -- The structure for the Frame is as follows: --{ Frame = int, Delay = float , {float,float}, {float,float} } -- The two tables are optional upper left and lower right corners of the fraction of the -- frame to use. -- This will make a 4 frame sprite toggle between its frames for 0.5 seconds, -- making a 2 second animation. { Frame = 0, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 3, Delay = 0.5 }, }, OnCommand=function(self) -- You can also load new textures after assigning one beforehand. -- The path in Load is absolute, so you must put the entire path to the new image. self:Load( --[[ [Path to another texture] ]] ) -- You can pause or jump to other sprites with the following commands. self:animate(0) -- 0 pauses the animation, 1 resumes it (Can be used as well for Models). self:pause() -- An alias for animate(0) (Can be used as well for Models). self:play() -- An alias for animate(1) (Can be used as well for Models). -- setstate jumps to a frame of the animation assigned. Animation states are 0-indexed. self:setstate( 2 ) -- Jumps to the third frame of the animation. -- If an out-of-range value is assigned ( \u0026lt; 0 or \u0026gt; #Frames ), an error is displayed -- displaying the total amount of frames available on the current sprite. -- The Frames set can also be manipulated during runtime, by using the SetStateProperties -- function. This example now inverts the animation. self:SetStateProperties( { { Frame = 3, Delay = 0.5 }, { Frame = 2, Delay = 0.5 }, { Frame = 1, Delay = 0.5 }, { Frame = 0, Delay = 0.5 }, } ) end } Table of Contents Managing Frames Attributes Name Type Action Texture string Path to the texture to use for this sprite actor. Frames table The table containing the frame per frame information to be interpreted by the actor. For more information, see Managing Frames. Frame[NNNN] number Alternative method for Frames\u0026rsquo;s version of { Frame = number }, used for backwards compatibility with older actors. Delay[NNNN] number Alternative method for Frames\u0026rsquo;s version of { Delay = number }, used for backwards compatibility with older actors. ","description":"Allows one to display images on screen. These images can be a png, jpeg, gif or even a video file.\nDef.Sprite{ Texture=\u0026#34;MyTexture.png\u0026#34;, -- The Texture is optional, you can start a sprite without a texture. -- You can manipulate the amount of frames that a sprite can use using the Sprite argument. Frames={ -- The structure for the Frame is as follows: --{ Frame = int, Delay = float , {float,float}, {float,float} } -- The two tables are optional upper left and lower right corners of the fraction of the -- frame to use."},{"id":179,"href":"/dev/actors/actortypes/stepsdisplay/","title":"StepsDisplay","parent":"Actor Types","content":"Displays the data for a given chart. Can show difficulty number, description, credit, if it’s autogen and steps type. Currently, all setings are done through metrics.\nDef.StepsDisplay{} Attributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame. All special actions are performed with its functions.\nMetrics Loading When using the Load command, the following metrics are read to generate the StepsDisplay.\nName Type Action NumTicks number Amount of ticks to show all the time. MaxTicks number The max ammount of ticks to draw. ShowTicks bool Enables the ticks. These are graphics that indicate the number of difficulty in individual blocks. ShowMeter bool Enables the meter number. ShowDescription bool Enables the chart description (if available). ShowCredit bool Enables the chart credit for the steps (if available). ShowAutogen bool Enables an icon to indicate this chart has been auto-generated. ShowStepsType bool Enables the Steps type to the StepsDisplay. ZeroMeterString string The string to show when the value is 0. MeterFormatString string The string to format the value for the difficulty meter. The display frame, Autogen and StepsType are AutoActors; while Ticks, Meter, Description and Credit are BitmapText. All of these actors contain their own On, Load and Set commands. Default values ↕ [StepsDisplay] FrameX=0 FrameY=0 FrameOnCommand= FrameLoadCommand=%function(self,param) local bFlip = param.PlayerState and param.PlayerState:GetPlayerNumber() ~= PLAYER_1; self:zoomx(bFlip and -1 or 1); end FrameSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)) end end NumTicks=10 MaxTicks=14 TicksX=0 TicksY=0 TicksOnCommand=shadowlength,0; TicksSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToColor(param.CustomDifficulty)) if param.Meter \u003e 9 then self:glowshift() else self:stopeffect() end end end ShowTicks=false ShowMeter=true MeterFormatString=\"%i\" ZeroMeterString=\"?\" MeterX=30 MeterY=0 MeterOnCommand=shadowlength,0 MeterSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end ShowDescription=true DescriptionX=-10 DescriptionY=0 DescriptionOnCommand=shadowlength,0;uppercase,true; DescriptionSetCommand=%function(self,param) if param.CustomDifficulty and param.CustomDifficulty ~= \"\" then self:diffuse(CustomDifficultyToLightColor(param.CustomDifficulty)); self:strokecolor(CustomDifficultyToDarkColor(param.CustomDifficulty)); end end ShowCredit=false CreditX=0 CreditY=0 CreditOnCommand= CreditSetCommand= ShowAutogen=true AutogenX=40 AutogenY=0 AutogenOnCommand= AutogenSetCommand= ShowStepsType=false StepsTypeX=0 StepsTypeY=0 StepsTypeOnCommand= Updating information When an update occurs to the StepsDisplay, the Set command is triggered, which contains a parameters table with the following information:\nName Type Description CustomDifficulty string The difficulty for this item. The reason why it\u0026rsquo;s called CustomDifficulty is due to it using the CustomDifficulty metrics table, which allows you to customize the name of the difficulties in the theme to your liking. Meter number The chart meter for this item. DisplayDescription string The description for the chart. Can be empty. Steps Steps The whole steps object. This object contains the information for Meter. Not available in Course Mode. Trail Trail The whole trail object. Not available in Regular Mode. StepsType StepsType The steps type that corresponds to this item. Functions Load (string sMetricsGroup)\nLoads the settings from the sMetricsGroup in the theme\u0026rsquo;s metrics.ini.\nSetFromSteps (Steps steps)\nLoad the data for the StepsDisplay with the steps provided.\nSetFromTrail (Trail trail)\nLoad the data for the StepsDisplay with the trail provided.\nSetFromGameState Loads the data for the StepsDisplay with the currently available data from GameState.\n","description":"Displays the data for a given chart. Can show difficulty number, description, credit, if it’s autogen and steps type. Currently, all setings are done through metrics.\nDef.StepsDisplay{} Attributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame. All special actions are performed with its functions.\nMetrics Loading When using the Load command, the following metrics are read to generate the StepsDisplay.\nName Type Action NumTicks number Amount of ticks to show all the time."},{"id":180,"href":"/tags/","title":"Tags","parent":"Project OutFox Wiki","content":"","description":""},{"id":181,"href":"/dev/actors/actortypes/textbanner/","title":"TextBanner","parent":"Actor Types","content":"TextBanner is an automated ActorFrame that processes information from a Song or Course to fill in data to several included BitmapText actors.\nThis is used by the music wheel and the editor song selection screens to show the information of each song in the wheel or about the current song being selected to edit respectively.\nThe following example uses the SetSong command present in CourseContentsList, which automatically calls SetSong with its own data. Def.TextBanner { InitCommand=function(self) self:Load(\u0026#34;TextBannerCourse\u0026#34;):SetFromString(\u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;) end, SetSongCommand=function(self, params) if params.Song then self:SetFromSong( params.Song ) else self:SetFromString( \u0026#34;??????????\u0026#34;, \u0026#34;??????????\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;, \u0026#34;\u0026#34; ) end end } Atributes Data used on load Data used on fetch Functions Load SetFromSong SetFromString Atributes There are no special atributes for this actor class. It inherits the atributes from ActorFrame.\nData used on load When using the load function, it will requests multiple metrics from the theme.\n[TextBanner] # The name of the group can be different depending on the group that you want. TitleOnCommand=function SubtitleOnCommand=function ArtistOnCommand=function ArtistPrependString=string AfterSetCommand=function Title, SubTitle, and Artist OnCommands define how the BitmapText actors will be shown.\nArtistPrependString is a special metric that appends before the Artist data. And example, would be \u0026quot;/\u0026quot;.\nIf there\u0026#39;s no PrependString.. Artist 1 Artist 2 If there is a PrependString of \u0026#34;/\u0026#34;.. / Artist 1 / Artist 2 AfterSetCommand is a function that is called after all data has been processed on the TextBanner. This can be useful to fix any visual errors that might happen like overflowing text, incorrect sizing, and others.\nYou may notice on the mayority of themes, this metric contains a value like this:\nAfterSetCommand=%TextBannerAfterSet This a special case of using a Lua function directly on the metrics. For more information about this, check out Function loading in metrics.\nData used on fetch TextBanner uses 3 BitmapText actors to determine the following:\nTitle Subtitle Artist This can either be from a song, or from a course.\nFunctions Load (string sMetricsGroup)\nRequests the TextBanner to load up settings present on the sMetricsGroup provided on the current theme\u0026rsquo;s metrics.ini file. For more information about what metrics are used, check Data used on load.\nSetFromSong (song pSong)\nUpdates the TextBanner to show information from the Song given.\nSetFromString (string displayTitle, string translitTitle, string displaySubTitle, string translitSubTitle, string displayArtist, string translitArtist)\nUpdates the TextBanner to display custom information based on the strings provided.\nAll parameters must contain some kind of string, otherwise it will error. If there\u0026rsquo;s no information needed on one of the sections, use an empty string instead. ","description":"TextBanner is an automated ActorFrame that processes information from a Song or Course to fill in data to several included BitmapText actors.\nThis is used by the music wheel and the editor song selection screens to show the information of each song in the wheel or about the current song being selected to edit respectively.\nThe following example uses the SetSong command present in CourseContentsList, which automatically calls SetSong with its own data."},{"id":182,"href":"/dev/theming/Theming-0-Differences/","title":"Theming differences between older versions","parent":"Introduction to theming","content":"It is important to note the following aspects when starting to make your theme, depending on how much you\u0026rsquo;ve experimented on existing themes, and compare the practices of such actions compared to now.\nThere are no things such as \u0026ldquo;header\u0026rdquo;, \u0026ldquo;help\u0026rdquo; and \u0026ldquo;footer\u0026rdquo; by default Date of change: starting on SM-SSC\nYou may have noticed themes even in SM5 and later that include header and footer, while technically they exist on those theme\u0026rsquo;s scopes, they are not created by the engine. It is usually created on ScreenWithMenuElements decorations in a conditional function called StandardDecorationFromFileOptional, which looks for a metric on the current screen (or ScreenWithMenuElements as a fallback), to determine if it should be created or not.\nHere\u0026rsquo;s an implementation of such thing in Soundwaves.\n-- Loads up a slew of objects to load into the screen, like how 3.9 does. -- I prefer to keep these optional, incase another screen wants to hide -- these elements. return Def.ActorFrame { StandardDecorationFromFileOptional(\u0026#34;Header\u0026#34;,\u0026#34;Header\u0026#34;), StandardDecorationFromFileOptional(\u0026#34;Footer\u0026#34;,\u0026#34;Footer\u0026#34;), StandardDecorationFromFileOptional( \u0026#34;Help\u0026#34;, \u0026#34;Help\u0026#34; )\t} And its application on a screen that, for example, does not want both header and footer.\n[ScreenInit] ShowHeader=false ShowFooter=false Numbers folder does not exist Date of change: starting on SM-SSC\nStarting in SM-SSC, fonts that were only number implemented now reside alongside the standard font glyphs in the Fonts folder (and are indicated with the [numbers] tag on their filename).\nXML loading of files is not applicable Date of change: SM4 Beta 5\nLua is the scripting language for modern StepMania builds. If any kind of XML loading is needed, you will need to instruct the user to enable \u0026ldquo;Quirks Mode\u0026rdquo;, an option on the Preferences.ini file that allows loading of XML files in a compatibility layer.\nCMD is deprecated Date of change: OutFox Alpha 3\ncmd() is a string-like command that allows application of commands without performing the entire syntax in plain Lua. However, it is not recommended to use this for commands, as it can bring bugs which will be mentioned below, but also introduces loading overhead as it has to convert the string back into actual Lua.\n-- cmd example OnCommand=cmd(Center;rainbow;zoom,0.5); -- Lua example OnCommand=function(self) self:Center():rainbow():zoom(0.5) end Some bugs to point out from CMD self cannot be utilized to obtain itself as self is a non-existant object in its scope. -- This will fail because the engine doesn\u0026#39;t know what self is in this scope. OnCommand=cmd(zoomx,self:GetZoomedWidth()*.5); ","description":"It is important to note the following aspects when starting to make your theme, depending on how much you\u0026rsquo;ve experimented on existing themes, and compare the practices of such actions compared to now.\nThere are no things such as \u0026ldquo;header\u0026rdquo;, \u0026ldquo;help\u0026rdquo; and \u0026ldquo;footer\u0026rdquo; by default Date of change: starting on SM-SSC\nYou may have noticed themes even in SM5 and later that include header and footer, while technically they exist on those theme\u0026rsquo;s scopes, they are not created by the engine."},{"id":183,"href":"/dev/actors/actortypes/workoutgraph/","title":"WorkoutGraph","parent":"Actor Types","content":"A graph showing the difficulty meter values of each entry on a course. Despite its name, it doesn\u0026rsquo;t actually calculate anything about calories or workout.\nThe graph has a hardcoded ceiling of 35, being tied to the maximum difficulty value allowed in legacy SM.\nThis actor will only work on Course Mode! Def.WorkoutGraph{ OnCommand=function(self) self:SetFromCurrentWorkout() end } An example of the WorkoutGraph in action, after a 5-song course.\nThis image is using custom graphics to demonstrate the functionality of the actor. It is empty graphics by default. Attributes Graphics used Functions SetFromCurrentWorkout SetFromGameStateAndHighlightSong Attributes There are no special attributes for this actor class. It inherits from ActorFrame.\nGraphics used This actor loads special graphics to create the graph.\nWorkoutGraph empty Background for the workout graph.\nWorkoutGraph bar The vertical bar to indicate the calories burned on each song.\nFunctions SetFromCurrentWorkout Calls the data to be obtained from the \u0026ldquo;current workout\u0026rdquo;, which is the current session of your course.\nSetFromGameStateAndHighlightSong (number numSongs)\nPerforms the same action as SetFromCurrentWorkout, but allows you to set a limit on how many songs should be shown in the graph.\n","description":"A graph showing the difficulty meter values of each entry on a course. Despite its name, it doesn\u0026rsquo;t actually calculate anything about calories or workout.\nThe graph has a hardcoded ceiling of 35, being tied to the maximum difficulty value allowed in legacy SM.\nThis actor will only work on Course Mode! Def.WorkoutGraph{ OnCommand=function(self) self:SetFromCurrentWorkout() end } An example of the WorkoutGraph in action, after a 5-song course.\nThis image is using custom graphics to demonstrate the functionality of the actor."}] \ No newline at end of file