OutFox-alpha.4.16.0 Build - On Course(s) for a crash

(Incorporates Internal Builds 4.16.0-rc0 to 4.16.0-rc4)

As is typical with dev, we had to do a hotfix build as some naughty crashes got through. IF YOUR WINDOWS BUILD DOES NOT HAVE HF2 THEN REDOWNLOAD!

Fixed in HotFix 2: Engine

  • ❕✅ Fixed crash with 3D Noteskins - Closes #578
  • ❕✅ Fixed crash with some noteskins on be-mu
  • ❕✅ Fixed crash with debug gpu code sitting in MSVC causing crashes on Nvidia Cards

Fixed in HotFix 1:


Mode Specific

  • ❕✅ be-mu & po-mu: Fixed bug with channel layouts
  • ❕✅ po-mu: Fixed bug with parsing channels with 1 or more empty on BME files
  • ❕✅ po-mu: Fixed channel layout with po-mu in BME to match nanasi/BMS command layout standard
  • ❕✅ po-mu: Fixed parsing of po-mu in BME detection
  • ❕✅ po-mu: Reordered extended po-mu player hit objects


  • ❕✅ Fixed crash with courses on all modes (Thanks CraX for reporting)
  • ❕✅ Fixed bug with ALT+TAB blackscreen Closes #576 (Thanks Drumbs for reporting)

Steam Deck Testing


We have had a few reports about 'drift' on the Steam Deck, and we have done some testing as part of our development program for Alpha V and can confirm the game runs flawlessly in whichever mode you choose. We've had several users as well as our own deck in testing, and as we are well under way for our Steam launch this would be something that we and our testers would have noticed.

We will however make sure we have a set mapping done for our new Steam Release, but until we get the Early Access Builds out, you can wishlist us here and to check out the trailer!

We are excited for the upcoming Steam builds, and remember you can join the discord to help us shape these builds!

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-rc14)

Please read the change log!

Due to there now being a limit on the length of our changelog reports they will be mirrored at our OutFox Wiki.


More be-mu updates

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 'lanes' that the mode supported that were not played.

The 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.


Introducing foot support!

We have added a new sub-mode for be-mu which adds the legacy 'foot' or 'pedal' lane, which was popular in older simulators like nanasi. This mode adds one new column to 5 key making it 5 key, scratch, and foot. It heavily utilises channel 17, which some simulators double up as 'free scratch', but for ez2 fans, we wanted to keep it as close to what nanasi and others did back in the day.

We will not be supporting the much rarer '7k foot' as this was a non-standard extension to the BME specification, and would break po-mu charts in BME files, which we do support now properly, as it is still used today for charts.

More po-mu standardisation updates

po-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 'extended pomu'. po-mu now can also play back the correct keysounds, including the player hidden, and any effect channels that can be used.

Charts 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.

po-mu in BME files have also been given a proper update, and we have fixed the lane errors that were reported to us, thanks to those of you that took the time to point out our extended channels were wrong!

We are happy now that the po-mu parser and the extender parser support matches what we aimed for in this mode, so we will finalise the notesloader with #RANK and #TOTAL support in Alpha V, which has the new lifebar and gauge code. Keep an eye out for the update!

pump Tweaks and Corrections


Thanks to all of our pump mode players that have been so patient while we work on getting the mode fixed up and right for you, I can appreciate you have been waiting for a long time for some of these issues to be resolved. We have fixed a few of the remaining timing issues and we hope these solve the weird gimmick issues we had before.

Thanks to shrmp0 and SheepyChris for helping us with the layout adjustments and column placement changes that are present in the engine this build; we should not expect themers to fix issues the engine really should have in built. A healthy engine makes a lightweight and fast theme.

We will continue working on this mode into the end of the year, so we hope you'll enjoy the fixes as they come!

Introducing 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.

Moving forward, as a lot of you will have questions;

No, we will not be discontinuing Win32.

Yes, we will continue to provide Win32 builds as many of you with cabs will need them

Steam will default to the 64bit build unless your system is 32bit.

Internal 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.

We 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.

We 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'll be retired properly when Alpha V has matured and stabilised enough to be considered a suitable replacement.

KNOWN ISSUES: Alpha 4.16.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'll play those keysounds silently.


Mode Specific

  • ❕✅ be-mu: Fixed bug with be-mu BGAs sometimes not showing
  • ❕✅ be-mu: Fixed crash with older BOF packs due to legacy bitmap use
  • ❕✅ be-mu: Fixed draw order with extended modes
  • ❕✅ be-mu: New Added foot support to 5K+Scratch
  • ❕✅ be-mu: Fixed noteskin graphics - PLEASE UPDATE YOUR BMS NOTESKINS IF YOU HAVE ANY TO ADD A FOOT
  • ❕✅ be-mu & po-mu: Fixed Shift-JIS bracket detection on some charts
  • ❕✅ be-mu & po-mu: Fixed bug with wry columns being selected by mistake on initial parsing
  • ❕✅ be-mu & po-mu: Fixed bug with charts that skipped a column or player channel not loading
  • ❕✅ be-mu & po-mu: Fixed bug with charts that used 2 less than the chart style being parsed wrong
  • ❕✅ be-mu & po-mu: Fixed bug where wrong style would be selected for 'no-scratch/no button' charts (02jam/ez2/etc)
  • ❕✅ be-mu & po-mu: Fixed bug with missing hidden keysounds not playing on charts with no player 'chips' in that channel
  • ❕✅ be-mu & po-mu: Fixed bug with sound effects missing on player columns > 8
  • ❕✅ be-mu & po-mu: Fixed bug with keysounds missing on dance 4 panel / 8 panel charts
  • ❕✅ be-mu & po-mu: Fixed bug with parser discarding keysounds for player lanes without a hittable note
  • ❕✅ be-mu & 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 'beginner' charts
  • ❕✅ po-mu: Fixed bug with some pomu9 charts not being parsed at all
  • ❕✅ po-mu: New Added the 'extended pomu' pomu9 support from nanasi and other simulations
  • ❕✅ po-mu: New Added Pomu9 BME support from Feeling Po-mu
  • ❕✅ 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: Fixed bug with some really old charts (pre2003) from not displaying their background due to null texture generation
  • ❕✅ dance & 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
  • ❕✅ pump: Fixed broken ancient layout for good
  • ❕✅ all: Changed LaneLocation in noteskins to new LaneXOffset, noteskins will need to be edited if you used this!
  • ❕✅ all: New 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
  • ❕✅ all: Fixed bug with surface generation causing grey textures on non dance content


  • ❕✅ 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'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
  • ❕✅ Fixed bug with block size clipping in the sound driver
  • ❕✅ Fixed bug with concatenation of the buffer data forcing the driver to reclaim 'position'
  • ❕✅ Fixed bug with the Sound Clock being variable on windows (for some reason..?)
  • ❕✅ Fixed bug with the data flow on the sound driver
  • ❕✅ Fixed bug with context stuttering on MESA on non ubuntu Linux builds
  • ❕✅ Fixed bug with MESA crashing on legacy hardware
  • ❕✅🐉 Pulled over GLAD work from dragons
  • ❕✅🐉 Fixed buffer allocation on modern GPUs
  • ❕✅🐉 Fixed bug with mesh generation
  • ❕✅🐉 Fixed bug with matrix math when sent to GPU
  • ❕✅🐉 Fixed bug with buffer layout
  • ❕✅🐉 Optimised Draw calls
  • ❕✅🐉 Removed 2001 driver limitations
  • ❕✅🐉 Fixed bug with Linux/Mac initialisation on Context Draw
  • ❕✅🐉 Fixed flush order in pipe
  • ❕✅🐉 Fixed bug with GLAD renderer wasting data
  • ❕✅🐉 Fixed bug with draw command and level
  • ❕✅🐉 Fixed bug with offset math
  • ❕✅🐉 Optimised AFTs a smidge
  • ❕✅🐉 Fixed crash on blend mode overflow
  • ❕✅🐉 Fixed alpha overflow
  • ❕✅ Fixed bug with some noteskins
  • ❕✅ Added new pref to disable discord RPC for when you're making charts - EnableDiscord = 1/0
  • ❕✅ Fixed bug with chain error on loading empty files
  • ❕✅ Fixed bug with 'empty' showing on music path

*Windows 7+ (Win32 and x64):

  • ❕✅ 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 'graphic' 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


  • ❕✅ Fixed bad calls crashing new discord RPC on linux
  • ❕✅ Fixed bad log output calls crashing older hardware

MacOS (Universal):

  • ❕✅ NEW Updated Discord RPC to support Arm M1 MacOS (Thanks HeySora!)
  • ❕✅ Updated Discord libs for MacOS 12.x
  • ❕✅🐉 Fixed bug with Mac OS 13 white screen

ARM32/ARM64: (Raspberry Pi etc)

  • ❕✅ Fixed bad log output calls crashing older hardware
  • ❕✅ Fixed timeout on loading on some slower SD cards

Community content


  • ✅ Added OutFox category to the LuaDocs XML


  • ✅ New classical3d noteskin for pump
  • ✅ Add 3D rolls to paws-simpleholds


  • ❕✅ Added KBX / BMS judgments from MDR
  • ❕✅ Added Infinitesimal judgments


  • ✅ 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