Forums » General Questions » How can I install Stepmania 3.95?

Hey everyone, I just need to ask everyone 1 question: How and where can I install Stepmania 3.95? I tried stepmania online and it didn't show the link to download Stepmania 3.95. Help please anyone!
I'm good at modfiles, just not IDM streaming.
StepMania 5.1 Changelog
The StepMania 5.1 Changelog covers all changes that are in the 5.1 series of
releases. All changes listed for the 5.0 series in Changelog_sm5.txt also
apply to the 5.1 series.
StepMania 5.1 and StepMania 5.0 have separate changelogs so that devs working
on the different branches don't have conflicts on the changelog file.

* [Edit Mode] The text that marks bg changes is only drawn for one layer.
Pressing 'z' toggles between bg layer 1, bg layer 2, and the foreground
The color of the bg layer text is controlled by three metrics:
NoteField::BackgroundLayer1Color, NoteField::BackgroundLayer2Color,

* [Gameplay] Use music rate in PlayerOptions::Approach for sync. [kyzentun]
* [PlayerOptions] Expose FromString to lua to replace ApplyGameCommand. [kyzentun]

* [General] Bad format strings from the translation file should emit an error
instead of crashing. [kyzentun]
* [lua_config] System message when the player is not using a profile, so they
know why their settings aren't being saved. This is turned off by the
WarnOnNoProfile preference. [kyzentun]
* [lua] Lua interpreter will break out if it encounters an infinite loop.
(more than 1,000,000,000 instructions without returning) [kyzentun]
* [Noteskins] Shown Noteskins config is now global instead of per-theme. [kyzentun]

* [Gameplay] Turn on defective mode in courses and when Steps has attacks.
Compatibility mode for OITG's SetZoom bug.

* [ScreenEditMenu] Added "Recently Edited" section to menu. [kyzentun]

* [ArrowEffects] Obsolete. Removed. [kyzentun]
* [NoteField] Removed lingering traces of old NoteField and NoteSkin system.
Renamed NewField and NewSkin to NoteField and NoteSkin.
Read Docs/Themerdocs/5.1_incompatibilities/
* [PlayerOptions] Removed NoteSkin and NewSkin fields. [kyzentun]
* [ScreenEdit] Changed editing notefield to use new notefield.
Nesty menu for configuring edit notefield and test play notefield.
ScreenEdit::OptionsScreen metric is no longer used.
"Graphics/ScreenEdit option_menu" can be created by the theme to style the
menu used to configure the notefields.
Options for changing noteskin, zoom, and other aspects.

* [Player] Prevent Player::HandleTapScoreNone() from running when it should
not. [tertu]

* [DX9] Removed D3DCREATE_MULTITHREADED flag because it was slower. [xwidghet]
* [Gameplay] Multiply start delay by music rate so it doesn't change. [xwidghet]

* [NewField] Rewrote mod system to allow control over how random inputs are
seeded. Updated [kyzentun]

* [Colors] Find the PlayerColors and PlayerDarkColors tables in your theme.
Put square brackets around PLAYER_1 and PLAYER_2. Add a color named "both"
to each table. The "both" color is for things that are for both players,
or neither player, like the cursor in the new edit menu.
Long explanation:
The PlayerColors and PlayerDarkColors tables in 02 Colors.lua used
player numbers wrong. Instead of allowing a player number to be used as
an index into the table like this,
"local thing_color= GameColor.PlayerColors[PLAYER_1]"
the elements in the tables were named "PLAYER_1" and "PLAYER_2".
Code using player colors had to do this,
"local thing_color= GameColor.PlayerColors.PLAYER_1".
A function written to work for any player couldn't just use the player
number it was passed to index into the table. It had to convert the player
number to the special names used by the color table. Awkward.

* [ScreenEditMenu] Complete rewrite removes the old ScreenEditMenu and
EditMenu classes with their metrics and language strings. See
Docs/Themerdocs/5.1_incompatibilities/ for details.

* [Player] Removed HoldJudgment class. Hold judgments should be displayed by
an actor in Graphics/NoteColumn layers.lua in the theme. This allows using
something besides a 1x2 sprite for the hold judgment.
Removed metrics:
HoldJudgmentYStandard/Reverse: Use ReverseChangedCommand in the actor.
HoldJudgmentsUnderField: Set the draw order of the actor.
TapJudgmentsUnderField: Set the draw order of the judgment actor.
ComboUnderField: Set the draw order of the combo actor.

* [NewField] Added random input choices to modifier system. [kyzentun]

* [Gameplay] Added configuration for setting pause behavior. [kyzentun]

* [NestyMenus] Added nesty_options.submenu function. [kyzentun]
Added unhelpful Docs/Themerdocs/ [kyzentun]

* [Deps] Moved ogg and vorbis to submodules. [wolfman2000]

* [OSX] Moved to 64-bit executables. [wolfman2000]

* [ThemePrefs] Removed ThemePrefs, GamePrefs, UserPrefs, and CustomSpeedMods
systems because they are obsolete and deprecated.
See Themerdocs/5.1_incompatibilities/ [kyzentun]

* [NewField] Changed note render order to render notes closer to the
receptors last. [kyzentun]

* [NewSkin] Added delta. [shakesoda]

* [Profile] LoadProfileCustom function is now passed the player number the
profile is being loaded for. The player number is nil when local profiles
are being loaded during stepmania startup because they aren't actually
being loaded for a player. [kyzentun]

* [NotesWriterSM] Fixed bug that deleted stops that were on the same row as
a warp when saving in edit mode. The SM format does not support warps, so
warps are converted to negative stops. There can only be one stop per row,
so creating the negative stop for the warp deleted the existing positive
stop. The new SM writing logic does not modify the original timing data,
and sums the values if a stop and a warp occur on the same row.
Ex: 135 bpm, 225ms stop and 1 beat warp on the same row. The warp becomes
a -444ms stop. -444ms + 225ms is -219ms, so the result is a -219ms stop on
that row.
* [NestyMenus] Various improvements that I really should document. [kyzentun]

* [ArrowDefects] Fixed beat mod bug that only beat right. [kyzentun]
GetPlayerOptionsArray and GetPlayerOptionsString added to the list of lua
functions that activate defective mode.

* [Newskin] Added custom_x column field to allow overlapping positions. [kyzentun]

* [Newskin] Added use_hold_heads_for_taps_on_row flag. [kyzentun]

* [Newskin] Added hold_gray_percent for darkening dropped holds. [kyzentun]

* [Key mapping] Screenshot key can now be remapped. [kyzentun]

* [Debug Menu] Disabled Monkey Input because it is a hazard. Everybody now
has to relearn the keys on the debug menu because Rendering Stats is now 5
instead of 6. [kyzentun]
* [Preferences] Removed Debug Lights preference so it does not persist after
the game is restarted. [kyzentun]

* [item_scroller] Added item_params arg to item_scroller:create_actors, which
is copied and passed to the create_actors function for each item. [kyzentun]
* [nesty_menus] option_item_underlinable:create_actors now takes params for
setting the diffuse and stroke of the text, or a custom text actor.
Added params to nesty_option_display for controlling its parts.
Renamed "meta" field in menu entry to "menu".
Added sounds to menu system.
Added on_open and on_close actions to sub menus.
Renamed clear_options_set_stack, push_options_set_stack and
pop_options_set_stack to clear_menu_stack, push_menu_stack, and
If the "execute" field in a menu entry is set, the "meta" or "menu" field
will be ignored.
Added bool_song_mod_val, enum_player_mod_val, enum_player_mod_single_val,
float_player_mod_val, float_profile_val, bool_profile_val, and
choices_config_val to nesty_options table.
* [NewField] ReverseChanged message from first column is now passed to the
field. [kyzentun]
* [NewSkin] Added shown_noteskins config and menu for hiding noteskins. [kyzentun]
* [ScreenNestyPlayerOptions] Added life and background options. [kyzentun]

StepMania 5.1.-2 | 20160401

* [NewSkin] Added quantum_time field to column info so that quantizations can
cover more than a single beat. [kyzentun]

* [NewField] Lifts are now rendered with a hold body preceding them. The
hold body uses the same graphics as the normal hold, and has a fade in
effect at the beginning. [kyzentun]
* [Linux] Use XRandR 1.2 functions for querying all displays (technically,
"outputs"), and allow selecting which output to go fullscreen on. Also,
implement support for fullscreen borderless window by using
_NET_WM_STATE_FULLSCREEN display manager hint. [drewbarbs, roothorick]
* [Graphics] Replace DisplayResolutions class with DisplaySpecs, to track
available resolutions/refresh rates on a per-display basis. Create Lua
binding. [drewbarbs]
* [OptionRow]: add ability to return "option effects" (enum OptEffect) and
indicating full OptionRow reloads (enum ReloadChanged) from
OptionRowHandlerLua. [drewbarbs]

* [NewField] Layer fade and transform types now controlled by their own
variables instead of the draw order. [kyzentun]

* [ActorUtil] Added ActorUtil::MakeActorSet for turning a table of actors
in a lua file into a vector of actors. This should be used instead the
logic in SWME that loads an ActorFrame, then strips out its children for
the decorations layer. The ActorFrame being stripped away in decorations
trips up every themer the first time they learn it, so MakeActorSet was
created so that problem doesn't exist in the NewField layer system.
* [NewField] Removed NoteField board from NewField and replaced it with
layers system. Columns also have layers. [kyzentun]
* [NewSkin] Removed layers_above_notes and layers_below_notes fields and
replaced them with layers field. Draw order for layers in the column must
be set in the noteskin now. [kyzentun]

* [CustomSpeedMods] Any theme still using the deprecated CustomSpeedMods
system needs to be modified to add its load function to profile loading.
* [Gameplay] Changed default theme to use newfield. [kyzentun]
* [item_scroller] Added item_scroller lua class as an alternative to
ActorScroller. [kyzentun]
* [lua_config] Added lua config system for saving theme settings. [kyzentun]
* [nesty_options] Added nested options menu system for lua based menus.
* [NewField] Changed functions in Scripts/02 NewField.lua to be inside the
NewField class. Added more NewField functions, documented in
Docs/Themerdocs/5.1_incompatibilities/ [kyzentun]
* [PlayerOptions] Changed PlayerOptions screen in default theme to use
nesty options system to allow newskin parameter support. [kyzentun]
* [PlayerState] Added get_read_bpm lua function. [kyzentun]

* [TimingData] Fixed bug in handling of displayed beat lookup table that
broke charts that had scroll segments but not other timing segments.

* [NewSkin] Pump newskin by wolfman2000. EasyV2 and ExactV2 by Jousway.
EasyV2 and ExactV2 support dance, pump, and solo.

* [NewSkin] Removed routine newskin and put its player masks into the default
newskin. [kyzentun]

* [NewSkin] Added anim_time and anim_uses_beats column fields for controlling
how fast taps are animated. [kyzentun]

* [NewField] reverse_percent changed to reverse_scale to simplify code for
flipping columns upside down. [kyzentun]

* [beat] Keysounds fixed. [ubuntor]

2015/11/01 to 2015/12/31
* [NewSkin] Created noteskin parameter system which allows a skin to specify
a lua table of parameters it takes. The theme can then use the information
in the noteskin to build a menu which allows the player to custom specific
behaviors of the noteskin. Noteskin parameters are saved to the profile,
organized by noteskin name and stepstype. [kyzentun]
Added explosion particles to default newskin. Noteskin params control
size, blending, amount, and distance. [kyzentun]
Removed rotations table in favor of newskin actors being rotated by their
InitCommand. [kyzentun]
* [Rage] Restructured major portions into Rage namespace instead of prefixing
class names with Rage. [wolfman2000]
* [StdString.h] StdString removed and replaced with std::string. [wolfman2000]

StepMania 5.1.-1 | 20151031

2015/06/?? to 2015/10/27
Various things done along the path to creating the NewField and related
* [Actor] get_mask_color and set_mask_color functions added for controlling
colored mask. Sprite is currently the only actor type that can have a
mask texture. [kyzentun]
* [CubicSpline] Moved polygonal and looping solve logic to CubicSpline. [kyzentun]
* [GameManager] Added stepstype_is_multiplayer function. Use this function
instead of looking at the current style. I'm hoping to remove styles in a
future release. [kyzentun]
* [global.h] Added UNUSED macro. This will be applied to things to get rid
of unused variable warnings. [kyzentun]
* [LuaManager] Added convenience macros for setting enum members. [kyzentun]
Moved FromStack function definitions so that the don't get separated from
their declarations and drift out of sync. (I thought I already did this
once?) [kyzentun]
Added rec_print_table C++ function for dumping a lua table to the log from
the C++ side. [kyzentun]
Added get_optional_double and get_optional_bool functions for fetching
things from lua tables. [kyzentun]
* [NewField] New noteskin, notefield, and modifier system introduced. See
Docs/Themerdocs/5.1_incompatibilities folder for details. [kyzentun]
* [NoteData] Added SetOccuranceTimeForAllTaps so the time for every note
isn't calculated every frame. This probably belongs in NoteDataUtil, but I
don't like it when a non-member function changes member values so
intimately. [kyzentun]
Also added count_notes_in_columns to later use for useless stats. [kyzentun]
* [NoteTypes] Added values to TapNote for the time in seconds that the note
occurs at, ends at (holds), and was last held at (holds). [kyzentun]
* [Player] Changed how the field is rendered to give the field power over the
skew modifier. Both notefields currently exist in the Player, but only one
is rendered. The theme needs to use set_newfield_preferred until the old
notefield is removed. [kyzentun]
* [PlayerOptions] Added NewSkin field and lua function because the field
needs a skin when it's being initialized and there isn't yet an easier way
for the theme to set that. [kyzentun]
* [Profile] Added get_preferred_noteskin, set_preferred_noteskin, and
get_last_stepstype lua functions. [kyzentun]
Added system for storing what NewSkin is used for each StepsType.
Each StepsType has its own entry because NewSkins are not tied to game
type, and hopefully StepsTypes won't be in the future. Since a NewSkin
picks what buttons to support, and doesn't have to support all StepsTypes,
the profile needs to be able to pick a different NewSkin for each StepsType.
When the profile plays a StepsType for the first time, the most used
NewSkin is used. [kyzentun]
* [RageDisplay] Added Color key fragment shader for masking system. Shader
written by Yaniel. [kyzentun]
* [RageTexture] Changed frame rect calculation to do more work outside the
loop. (neurotic efficiency obsession acted up one day) [kyzentun]
* [RageUtil] Moved unique_name function from XmlToLua to RageUtil so it can
be used by ModValue. [kyzentun]
* [RageVector3] Added transform POD class for use by ModValue. [kyzentun]
* [SongManager] Fixed bug that made loading window progress bar not fill
during the "Sanity checking songs..." phase. [kyzentun]
* [Sprite] Added mask texture system. This was made for playerizing in
NewField, but can be used on any sprite. Set the "Mask" field the same way
you would set the Texture field, or use set_mask lua function to set the
mask texture. When the mask is used, the mask_color will be applied using
the alpha channel of the mask. [kyzentun]
* [StdString.h] Commented out body of sslwr function because apparently
MakeLower doesn't exist. wolfman2000 is killing StdString, so it shouldn't
matter if this function is broken for a while. [kyzentun]
count_notes_in_columns lua function.
* [TimingData] Added lookup_requester_count so that PrepareLookup calls can
be nested. [kyzentun]
Added lookup table for the displayed beat for the NewField to use for
scroll segment support. (or is this speed segment support?) [kyzentun]

2015/05/10 to 2015/10/27
* Massive backend work to change the engine to use C++11 everywhere.
Rearranging of build system. Reorganizing the file structure of the engine.
[wolfman2000, prcuvu, teejusb, and others]
* Fill in more detail later if needed.

* 5_1_0 branch created. Unsure of exact date or commit. This seems to be
the first thing that occurred on the 5_1_0 branch:

`StepMania 5 Changelog
The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.

* [Gameplay] Moved pause menu logic to a script in _fallback. Added
documentation to help other themes implement a pause menu.

* [SelectMusic] Added AllowHoldForOptions preference to disable holding start
to go to the player options screen. [kyzentun]
* [General] Back button will only back out of the screen on a press, not when
it is still being held from the previous screen. [kyzentun]

* [ScreenSyncOverlay] Moved actors to lua to make them themable. [kyzentun]

* [Gameplay] Ready and Go announcer sounds no longer play simultaneously. If
the Ready animation doesn't exist and the Go animation exists, only the
Go announcer sound is played. If neither animation exists, only the Ready
announcer sound is played. [kyzentun]

* [NotesWriterSM] Stops, delays, and warps that occur on the same row are now
summed correctly. Fixes bug that deleted warps that were on the same row
as a stop. [kyzentun]
* [Sound] Ignore invalid SoundDriver preference. [kyzentun]

* [Language] Traditional Chinese translation added. [ddrtime]

* [MemoryCards] Fixed bug that caused loading profiles from usb drives to
crash. [djpohly]

* [Global] Removed UndocumentedFeature lua function because it was just a way
to crash with a message. [kyzentun]

* [Minimaid] Fixed crash that occurred when the minimaid lights driver was
selected, but no minimaid device was connected. [wolfman2000]

StepMania 5.0.11 | 20160401

* [Prefs] Added DisableUploadDir preference to skip saving a score entry to
Save/Upload every time a song is played. Generating the unique filename
can take several seconds when there are years of scores accumulated, and it
clutters the disk. This preference defaults to false. [kyzentun]

* [Actor] Added get and set_tween_uses_effect_delta lua functions to make an
Actor use the effect clock for tweening. [kyzentun]

* [ProfileManager] Added GetStatsPrefix and SetStatsPrefix lua functions for
separating scores into different stats files. [kyzentun]
(this is kind of a stop gap, I'd really like to rewrite scoring to save
more data so that a score earned with one set of timing windows and weights
can be converted to the equivalent score with different timing windows)

* [Online] Stepmania will force disconnection from the SMO server when
entering the jukebox or sync calibration screens to avoid crash. [kyzentun]

* [global] get_sound_driver_list lua function added. [kyzentun]

* [Gameplay] Fixed No Fakes mod to remove fakes inside warps. [kyzentun]
* [Keymaps] Added special name for colon key so it can be bound. [medmig]

* [Language] Bahasa Indonesian translation added to default theme. [JOELwindows7]

* [Input] Linux event devices now start at JOY10 instead of JOY1. Without
this change, if one dance pad is a joystick device, and the other is an
event device, they will both be JOY1, and stepmania will think they are the
same dance pad. If you use Linux, assume that you have to remap your dance
pad. [kyzentun]

* [Lights] Minimaid driver added for Linux. This is practically identical to
the Windows minimaid driver that pkgingo wrote.
* [Gameplay] When checking for the first second in a song, AutoKeysound notes
are now ignored, being treated as if they were background music. This
allows the intro of BMS files to play as soon as ScreenGameplay is loaded,
while still having a delay before the real notes come in. [nixtrix]

* [Course] In an Endless course, songs will only be repeated after all songs
in the group have been played. [blindbox]

* [ScreenManager] Added PlayInvalidSound, PlayStartSound, PlayCoinSound,
PlayCancelSound, and PlayScreenshotSound lua bindings. [kyzentun]
Added get_input_redirected and set_input_redirected to allow the theme to
disable the normal input functions. (Example: a custom lua menu on
Select Music. When the menu is up, the theme doesn't want the player's
input to move the music wheel.) This is in SCREENMAN so that it will work
on all screens. [kyzentun]
* [ScreenSelectMusic] Added CanOpenOptionsList lua binding. OpenOptionsList
will do nothing if CanOpenOptionsList returns false. [kyzentun]

* [Edit Mode] Added "Clear timing in region" to timing menu. [kyzentun]
Fixed crash that occurs when "Paste timing data" is used after copying a
region of timing data that only contains stops. [kyzentun]

* [Gameplay] Added pause menu to default theme. Activated by pressing
Select, or Back twice without pressing something else. Has options for
restarting or forfeiting the current song in normal play. Course mode has
options for skipping the current song or ending the course or forfeiting.
* [Graphics] When fetching the list of resolutions, only 32bpp modes are
tested because less than 32bpp is not supported on Windows 8 and newer, and
because the bpp doesn't matter when fetching a list of resolutions. This
speeds up the load time of the Graphics/Sound option screen. [kyzentun]

* [RageFile] Lua functions for RageFile should now emit an error when the
file was not opened correctly instead of crashing. [kyzentun]

* [Linux] Disable DPMS on startup and restore setting on exit. [kyzentun]

* [RageFileManager] Ignore OS X special files in GetDirListing. [kyzentun]

* [Fonts] Fixed crash bug in Texture Font Generator. [drewbarbs]

* [Player] ChangeLife and SetLife functions added. [kyzentun]

* [popn] Judgment levels in popn game mode now use W1 to W5. [parashep]

* [Player] Guitar mode cruft removed from Player. [tertu]

* [NoteField] Changed DrawBeatBar to check the M-mod so that smaller beat
bars are drawn when M-mods are used in edit mode. [kyzentun]

* [Gameplay] BG Brightness is no longer forced to 100% on songs that only
have a beginner chart. [kyzentun]

* [ScreenSelectMusic] Using lua music files for the section music and similar
things works now. [kyzentun]

* [PlayerOptions] Fixed bug that was clearing the noteskin back to default.

StepMania 5.0.10 | 20151031

* [Language] French translation updated. [Arvaneth]

* [Compiling] Link with /MT on windows instead of /MD. [wolfman2000]
* [Fonts] Put Texture Font Generator back in package. [wolfman2000]
Build Texture Font Generator when WITH_FULL_RELEASE or
WITH_TEXTURE_GENERATOR is enabled. [wolfman2000]

* [Song] Added GetMainTitle lua function for bypassing ShowNativeLanguage
preference. [kyzentun]

* [Compiling] Number of jobs used when building ffmpeg can be customized by
WITH_FFMPEG_JOBS. [wolfman2000]
Appveyor support added for automated windows building. [wolfman2000]

* [BMS] Fixed crash when an unknown type chart was in a bms. [kyzentun]

* [Actor] Changed PlayCommandNoRecurse so that setting a theme metric to a
function that doesn't exist doesn't emit an error. [kyzentun]
* [Compiling] Allow WITH_MP3=Off and WITH_WAV=Off to compile. [wolfman2000]
* [EditMode] Fixed crash on missing ScreenMiniMenuTimingDataChangeInformation
metrics. [kyzentun]
* [ScreenEvaluation] Changed assert that occurs when leaving ScreenGameplay
with SM_GoToNextScreen to give more info. [kyzentun]

* [Compiling] Fixed cmake error when compiling with -DWITH_SSE2=off. [wallacoloo]
Don't define CPU_X86 on non-x86. [wallacoloo]
* [Noteskins] If the fallback for a noteskin is not found, that noteskin is
not loaded, to prevent picking it and crashing. [kyzentun]

* [BitmapText] Added set_mult_attrs_with_diffuse lua function. [kyzentun]

* [Course] Fixed loading of courses that use WORST entries. [wolfman2000]
* [SextetStream] SextetStream stuff is now in all platforms. [wolfman2000]

* [BMS] Changed bms loading so that iidx bms files aren't loaded as kb7.

* [ActorMultiVertex] Fixed bug that *sometimes* caused diffuse to be applied
to verts wrong. [kyzentun]

* [Song] Changed song loading to allow a song to have a blank MusicFile field
if the song has any keysounds. A blank MusicFile entry can result from
having '#' in the music file name, or be intended for bms files. Do not use
'#' in any fields, the .sm and .ssc file formats do not support it. The
engine has to detect that the field was loaded blank and look through the
song folder to figure out what was supposed to be there. [kyzentun]

* [Edit Mode] Changed Current Second field to not have the global offset
added in. People were using one global offset for syncing to workaround
the problem and sync by comparing the Current Second in Edit Mode to the
current second in a music editor. The workaround of using a different
global offset for syncing should no longer be necessary. [kyzentun]
* [Input] Fixed input lockup caused by scrolling the mouse wheel. Why wasn't
this reported sooner? [kyzentun]

* [ActorFrame] ActorFrame:SetDrawByZPosition now returns self. Missed a spot
when implementing function chaining. [kyzentun]
* [Gameplay] MaxRegenComboAfterMiss preference brought in. When a step is
missed in gameplay, the combo has to get back up to RegenComboAfterMiss
before the player starts regaining life. If MaxRegenComboAfterMiss is
greater than RegenComboAfterMiss, then each successive miss increases
RegenComboAfterMiss until it reaches RegenComboAfterMiss.
MaxRegenComboAfterMiss defaults to 5, the same as RegenComboAfterMiss, so
there should be no behavior change unless the preference is manually
changed. [dbk2]
* [Gameplay] When disqualification was turned on via Preferences, the old
logic exhibited two problems:
1. charts with attacks were always disqualified from ranking
2. charts without attacks could be disqualified from ranking if the attack
modifier was set to "Off"
So, this commit fixes those problems. If a chart has attacks, and the
attack modifier is used to turn them "Off", then disqualification is
Additionally, disqualification is enforced if the attack modifier is set to
"Random Attacks." This part might not be necessary, but I acted on the
assumption that random attacks could theoretically make a chart easier.

* [FFmpeg] Upgrade FFmpeg to 2.1.3 for Windows. [wolfman2000]
* [FFmpeg] Fixed cmake WITH_SYSTEM_FFMPEG option. [lthls]

* [FFmpeg] Upgrade FFmpeg to 2.1.3 for Mac OS X. [wolfman2000]
* [Gameplay] Fixed timing to apply the current music rate to the global
offset so that playing at different music rates doesn't make a chart off
sync. [Matt McCutchen]

* [Edit Mode] .sm files will no longer be saved when split timing is used
because per-chart timing cannot be done in the .sm format. [kyzentun]
* [Scoring] Fixed bug that caused missed holds to be recorded as held in the
value returned by PlayerStageStats:GetRadarActual(). [kyzentun]

* [Sprite] Added set_use_effect_clock_for_texcoords for toggling whether the
tex coord velocity uses the effect clock instead of the time.

* [MusicWheel] Fixed SetItemPosition so that it actually passes the item
index and the number of items to the transform function. [kyzentun]

* [Notefield] Fixed bug where the hold body doesn't scroll if it goes off the
top of the screen. [waiei]

* [Compiling] Compiling stepmania on Windows with the locale set to Japanese should work now. [wolfman2000]

* [Preferences] Fixed crash on Advanced Input Options on OS X caused by the
Axis Fix preference not existing on OS X. The preference does nothing on
OS X, but the game no longer crashes on that screen. [kyzentun]

* [Fonts] Respliced large kanji sprite sheets from 32x106 and 32x61 to 63x54
and 48x41 to bring them under 4096 pixels tall, which was causing a forced
resize and slowing down loading time. [kyzentun]
* [Gameplay] Fixed song position updating logic so that the
ScreenGameplay:PauseGame lua function actually pauses the game. Start,
Select, and Back are all used for different ways of giving up, so the
feature remains unused in the default theme. [kyzentun]

* [Gameplay] Fixed Player logic that spammed TNS_AvoidMine repeatedly. [kyzentun]

* [Edit Mode] Fixed crash on entering edit mode caused by entering edit mode
as Player 2. Edit Mode only works as Player 1. [kyzentun]

* [BMS] Added myo2 channel layout and kb7 charts. Added preview point and
fixed offset support and linear solo bms layout. [zardoru]
* [Linux] Symbolic links will be followed to find the actual executable dir. [Wallacoloo]

* [Minimaid] Minimaid support built in by default instead of off by default. [wolfman2000]
* [Options] Put AllowExtraStage on Advanced Options screen in default. [kyzentun]

* [Gameplay] RandomBGEndsAtLastBeat metric defaults to true to be similar to
old behavior. [wolfy852]

* [General] When the HighResolutionTextures preference is set to Auto,
StepMania checks whether the display height is greater than the theme
height instead of whether it's greater than 480. [shakesoda]

* [PIUIO] Only send LightState changes to PIUIO when there is a change. [dbk2]

* [NoteField] Fixed bottomcap when NoteDisplay is zoomed out. [hanubeki]

* [Compiling] Fixed building on 32bit linux. [kyzentun]

* [Pump] Added TimingWindowSecondsCheckpoint for the timing window that
checkpoint holds allow you to release for. [wolfman2000]

* [General] Fixed bug that skipped notes on beat 0 in score. [kyzentun]

* [ActorUtil] ActorUtil.ResolvePath and ResolveRelativePath now take a
boolean flag to tell if the thing is optional. [kyzentun]
* [CryptMan] Fixed bug that clipped hash strings with zeros. [kyzentun]

* [Sprite] Sprite now executes the AnimationFinished command when it reaches
the end of its animation and starts over. [kyzentun]

* [ScreenMapControllers] If the AutoDismissWarningSecs metric is less than
.25 seconds, the warning will not be shown (the TweenOn command for it will
not be played). Instead, the NeverShow command will be played. If the
NeverShow command does not exist for the warning actor, the warning actor
will be set to hibernate forever. [kyzentun]

* [Gameplay] Random background video behavior is now controlled by these
three metrics in the Background section:
RandomBGStartBeat sets the beat of the music the first random bg occurs on.
RandomBGChangeMeasures sets the number of measures between changes.
RandomBGChangesWhenBPMChangesAtMeasureStart toggles the behavior in its name.
RandomBGEndsAtLastBeat toggles the behavior in its name.

StepMania 5.0.9 | 20150520

* [global] get_music_file_length lua function added. [kyzentun]
multiapproach lua function now takes an optional 4th argument to multiply
the speeds by. [kyzentun]
* [NoteDisplay] 1px seam in hold cap rendering fixed. [A.C/waiei]
* [RageSound] get_length lua function added. [kyzentun]

* [ScreenInitialScreenIsInvalid] Error screen for themes that set an invalid
initial screen. [kyzentun]

* [global] update_centering lua function exposed. [kyzentun]
* [ScreenOverscanConfig] New screen in _fallback for interactively adjusting
the preferences that already existed for dealing with overscan. [kyzentun]
* [Actor] BlendMode_Subtract no longer crashes on the d3d renderer. It does
not do subtraction blending correctly, this just prevents the crash.

* [Actor] bounce and bob effects no longer round pixel coords. [kyzentun]
* [RageFile] Exposed Flush function to Lua. [kyzentun]

* [OptionsList] The OptionsListQuickChange, OptionsListLeft, and
OptionsListRight messages now have a Selection parameter that has the id of
the selection the player moved to. [nixtrix]

* [Gameplay] Autokeysounds are no longer twice as loud when playing
keysounded charts with two players. [nixtrix]

* [BMS] .lua files defined in the #BMP tags now work as BG animations, and the
#difficulty tag is now supported. [nixtrix]
* [general] BackInEventMode code now works when called from either player.
* [cmake] JACK is now properly found by CMake.
* [theme] Preview music fadeout time is now adjustable by the metric
SampleMusicFadeoutSeconds. [nixtrix]
* [Song] Setting a sample length of 0 uses the length of the entire preview
file. [nixtrix]

StepMania 5.0.8 | 20150510

* [General] Screenshots are not tagged with song title or screen name because
this causes problems when titles have UTF8 or slashes. [kyzentun]

* [general] Workaround for the axis problem added. Set the Axis Fix
preference under Input Options to true if you have the axis problem.
* [general] Added XML to Lua converter. See Docs/Themerdocs/XmlToLua.txt for
details. [kyzentun]

* [compiling] Added -DWITH_CRYSTALHD_DISABLED cmake options to allow more
users to build on Linux. [wolfman2000]

* [Gameplay] Holding Select on gameplay now skips the current song in course
or endless mode. [kyzentun]

* [beat] Default key configuration slightly tweaked, space is now the
default scratch key, key7 is now mapped to right instead of key3.
Backwards and shuffle chart mods now ignore the scratch column. [jobn]

* [general] "Do not show again" button on missing texture dialog works now.
If the background or banner file for a song doesn't exist when the song is
cached, the cache file will have a blank path so Stepmania won't try to
load the nonexistent banner or background.

* [General] Screenshot key now checks whether there is a current song, and
puts the song title and current screen name in the screenshot filename. [kyzentun]

* [Gameplay] Toasty animation can now occur multiple times during gameplay. [kyzentun]

* [ServiceMenu] Entries in service menu rearranged to hopefully organize them
better. ScreenOptionsInputSub and ScreenOptionsDisplaySub added. Updating
a theme to show the options for the new screens should be a simple matter of
changing the LineNames entry for ScreenOptionsService to include
"InputOptions" and "SoundGraphics". [tuxdude]

* [EditMode] Fixed bug that made alter menu choices prompt for clearing. [kyzentun]
* [NoteColumnRenderer] Added handling for diffuse and glow to make rainbow
and related effects work. [kyzentun]

* [compiling] -DWITH_LIBVA option added to cmake building to fix compiling
problems for some linux users. [wolfman2000]

* [SelectMusic] Disabled late join on Extra Stage to prevent crash on
Evaluation Summary. [kyzentun]

* [EditMode] Fixed Revert From Disk to actually work. [kyzentun]
* [japanese] Language update from hanubeki. [hanubeki]

* [dev] cpack support for installing. [wolfman2000]
* [TimingData] Fixed bug that made steps on the same row as a stop and a bpm
change unhittable. [kyzentun]

* [Profile] Kluged together a fix for scores on edit charts not being loaded
until after the chart is played. [kyzentun]

* [ActorSound] IsAction attribute added. get/set_is_action functions added.
* [GameSoundManager] is_action arg added to PlayOnce. [kyzentun]

* [global] rec_print_children and rec_print_table lua functions added to
_fallback. [kyzentun]
* [Language] Dutch translation updated. [Thumbsy]
* [RadarValues] Stream, Voltage, Air, Freeze, and Chaos are no longer capped
at 1. Stream and Voltage no longer count hold heads twice.
RadarCategory_Notes added, which counts all notes.
Scoring bug fixes related to radar calculation. [kyzentun]
* [ScreenSelectGame] Exit option returns to ScreenOptionsService unless the
game type actually changed. [Wallacoloo]

* [EditMode] Added submenus to the timing edit menu to allow shifting,
copying, and pasting any or all timing segments in the selected region or
after the current cursor position. [kyzentun]
Shifting menus in edit mode now have choices for 1, 2, or 4 measures or 2
beats. [kyzentun]
* [global] Fixed crash on OS X for certain dance pads when in Japanese
locale. [Wallacoloo]

* [ScreenGameplay] The NoteField board is now underneath everything except
the backgound. This means underneath any custom actors on the underlay or
overlay or decoration layers, and also underneath the combo/judgment even
when the ComboUnderField metric is true. [kyzentun]
Fixed bug in screen filter in default theme that made it not appear under
the field when a solo file was played without Center1Player. [kyzentun]

* [global] commify function exposed to lua. [kyzentun]

StepMania 5.0.7 | 20150401

* [Select Music] Ctrl+Shift+R mapped to reload the current song. [kyzentun]
* [Song] ReloadFromSongDir lua function exposed. [kyzentun]
* [Preferences] NeverCacheList preference added. It's a comma separated
list of group names, if a song is in one of the named groups, it is never
cached. [kyzentun]

* [Select Music] Ability to delete the current song by pressing Ctrl+Backspace added. [Wallacoloo]

* [Sprite/RageTexture] GetTexturePath moved to RageTexture and renamed to
GetPath. [kyzentun]

* [Dev] Primary build method of all platforms changed to CMake. People
building from source must install CMake (min 2.8.12) and read
Build/ for building instructions. [wolfman2000]

* [OSX] Empty Stepmania directory created on desktop removed. [dguzek]

* [ActorFrameTexture] Example added to Themerdocs/Examples/Example_Actors/.
Crash fixes for AFTs. [sigatrev]

* [Sprite] GetTexturePath added. [kyzentun]

* [Language] Docs/Changelog_language.txt added for tracking language changes.

StepMania 5.0.7rc | 20150309

* [EditMode] Autosave every 5 minutes added. [kyzentun]
* [General] NotesLoaderSM, NotesLoaderSSC, IniFile::ReadFile rewritten,
load times substantially faster. [kyzentun]
* [Preference] HarshHotLifePenalty preference added, for toggling whether
LifeMeterBar takes away .1 life when it's full. [kyzentun]

* [EditMode] Clearing an area now prompts for confirmation if it contains
EditClearPromptThreshold notes or more. EditClearPromptThreshold is a
preference that can be set in the Advanced Options section, or in the
options in Edit Mode. [kyzentun]

* [Graphics] DX9 support improved, giving a large speed boost and fixing the
problem that made people get stuck with 16bit color. [xwidghet]

* [Loading] The song length from the cache is used now. This cut loading time
by 30% for kyz. [kyzentun]

* [Song] Per-chart music feature added. Each chart can have a MUSIC tag.

* [SelectMusic] Select Music now plays music file named by #PREVIEW tag if
it's not blank, instead of using the song file for the sample music. The
sample length is read from the preview file. The sample start is treated as
0. [kyzentun]
* [Song] GetPreviewMusicPath added. [kyzentun]
* [foreach] foreach_ordered lua function now works on tables that have both
number and string keys. Number keys are iterated over first. [kyzentun]

* [General] Pause/Break key now toggles "action" sounds off or on. There is
also a button in the F3 debug menu (press A, there are so many that it is
off the bottom) for people that don't have a Pause/Break key. [kyzentun]

* [ActorFrame] Fixed RemoveChild and RemoveAllChildren lua functions to
delete the children instead of leaking memory. [kyzentun]
* [Font] Asserts and other things that caused Stepmania to crash on font
mistakes now emit non-fatal errors. [kyzentun]

* [PaneDisplay] Changed to print an error when metrics or player number are
omitted instead of crashing. [kyzentun]
* [Screen] Fixed crash when AddInputCallback is passed nil. [kyzentun]

* [BitmapText] Place characters of right-to-left alphabets correctly.
(untested) [roothorick]

StepMania 5.0.6 | 20150217

* [EditMode] Fixed mistake in TimingData that broke editing bpms. [kyzentun]
Fixed crash when deleting steps. [kyzentun]
* [InputMapper] Backslash can be mapped now. [kyzentun]

StepMania 5.0.5 | 20150214

* [InputMapper] Added D-Force Automappings [shakesoda]

* [ActorFrame] GetUpdateRate added. [kyzentun]
* [Background] Using the wrong transition name no longer crashes.
Playback rate is applied to videos.
Checkerboard and other BackgroundEffects that use the same file twice no
longer play videos back at multiplied speed. [kyzentun]
* [Sprite] Get/SetDecodeMovie added. [kyzentun]

* [MusicWheel] HideActiveSectionTitle metric added. [djpohly]

* [ActorMultiVertex] ForceStateUpdate and Get/SetDecodeMovie added. [kyzentun]
* [RageTexture] Get<thing>Width and Height functions added.
(<thing> means Source, Texture, or Image) [kyzentun]
* [Scripts] find_missing_strings_in_theme_translations function added to
_fallback scripts to assist translators in finding what needs to be
translated. If you need/want to run it on your them, write a piece of lua
like this:
find_missing_strings_in_theme_translations("_fallback", "en.ini")
The first arg is the folder name of the theme to look at.
The second arg is the name of the language that is fully translated. All
other languages will be compared to it to decide what is missing or unused.
* [Song] GetBGChanges added. [kyzentun]

* [ActorMultiVertex] Animation state system added. AMVs can now have
animated textures controlled by states written in lua. [kyzentun]

* [EditMode] Want more lead in time before recording starts?
It's a preference. [kyzentun]

* [Actor] Wrapper states added. This makes wrapping an Actor inside an
ActorFrame for any reason unnecessary, and makes it possible to do things
that were only possible by wrapping an Actor in an ActorFrame to Actors
that you couldn't put inside a frame before. [kyzentun]

* [ScreenSelect] ChoiceNames can be a lua command that is evaluated to get a
list of the gamecommands. The main use of this is to get rid of the huge
list of metrics that ScreenSelectStyle requires. A single lua function
instead of a metric for every style for every game type. [kyzentun]
* [ScreenSelectMaster] IconChoicePosFunction metric added. This metric is
optional, if it's set, it must be set to a function that returns a table
of positions. Each position is a table of the form "{x, y, z}", where x,
y, and z are numbers and any that is not a number defaults to 0.
The function is passed the number of choices for the screen.
IconChoiceOnCommand and IconChoiceOffCommand metrics added so each choice
doesn't require its own On/OffCommand pair. These are also optional, but
if they are set, they will override the individual commands if they exist.
(If "IconChoiceCactusOnCommand" and "IconChoiceOnCommand" both exist,
"IconChoiceOnCommand" will be used.) [kyzentun]
# in metrics.ini
-- In a file in Scripts/
function choice_positions(count)
local ret= {}
for i= 1, ret do ret= {i*24, i*48} end
return ret

* [ScreenSelectMusic] HardCommentMeter metric added. Sets the meter that
will trigger the "select music comment hard" announcer sound. [kyzentun]

* [ScreenOptions] GetNumRows function added. [kyzentun]

* [Sprite] SetStateProperties function added. [kyzentun]

* [ActorMultiVertex] GetSpline and SetVertsFromSplines functions added.
* [NoteColumnRenderer] Functions for fetching the spline handlers for the
column added. [kyzentun]
* [NCSplineHandler] New class for setting various parameters of a spline used
by a NoteColumnRenderer and containing the spline. [kyzentun]
* [CubicSplineN] New class that provides spline functionality. [kyzentun]

* [NoteField] Columns turned into actors that can be fetched with
get_column_actors. [kyzentun]
Tiny boost in fps when there is a large number of notes on screen.
* [NoteColumnRenderer] New class for controlling one column. [kyzentun]

* [Preferences] AllowMultipleHighScoreWithSameName, ComboContinuesBetweenSongs
Disqualification, FailOffForFirstStageEasy, FailOffInBeginner,
LockCourseDifficulties, InputDebounceTime, MaxHighScoresPerListForMachine,
and MaxHighScoresPerListForPlayer added to service options.
InputDebounceTime is in Input Options, the rest are in Arcade Options.
(might not show up in themes that customize the order and placement of the
preferences) [kyzentun]

* [Profile] GetTotalDancePoints added. [kyzentun]

* [EditMode] Play whole song and play from current beat will now play until
either the music or the notes end, whichever is greater. [kyzentun]
The screens used for setting the options used to play the screen and for
adding attacks can be set through the "OptionsScreen" and "SetModScreen"
metrics in the ScreenEdit section.
* [GameState] ApplyPreferredSongOptionsToOtherLevels function added. [kyzentun]
* [Player] "ComboBreakOnImmediateHoldLetGo" theme metric added. [sillybear]
* [PlayerState] ApplyPreferredOptionsToOtherLevels function added. [kyzentun]

* [Game] GetSeparateStyles function added. Use this to detect whether a game
allows the players to play different styles. [kyzentun] (used by kickbox)
* [GameManager] Lua Scripts/ folders are now reloaded when the Game mode is
changed. [kyzentun]
* [GameState] CanSafelyEnterGameplay function added. [kyzentun]
In kickbox game mode, players can have different styles set, pass a
PlayerNumber when using SetCurrentStyle or GetCurrentStyle.
* [kickbox] New game mode with 4 styles. [kyzentun]
* [ScreenGameplay] Notefield positioning is handled a bit differently now.
See comments in _fallback/metrics.ini above the [ScreenGameplay]
MarginFunction metric. Basically, you can define a lua function that
returns the space you want at the edges and in the center instead of
setting position metrics. Do NOT use Style:GetWidth to calculate the
margins your function returns.
ScreenGameplay now handles zooming the notefield to fit in the space
instead of using the NeedsZoomOutWith2Players flag in the style.
If the notefield doesn't fit in the space between the margins, and there is
only one player, the player will be centered even if the Center1Player pref
is false. [kyzentun]
* [Style] NeedsZoomOutWith2Players decapitated. Always returns false now.
GetWidth added. [kyzentun]
* [techno] Techno game mode no longer has special column width for versus.
Techno was the only game mode that used the NeedsZoomOutWith2Players flag,
and the zoom factor it applied was 0.6, and the special versus column width
was 0.6*normal, so this should make no difference. [kyzentun]

* [command line arg] --game command line arg added for setting the game type
when starting stepmania. [sillybear]
* [Announcer] "evaluation full combo W3" and "evaluation full combo W4"
responses added. [sillybear]

* [ScreenMapControllers] Forced sanity checking of key mappings added.
Start, MenuLeft, MenuRight, and Operator keys must be mapped.
Reset key mappings option added to debug menu for recovering from an
unusuble keymap without needing to find and delete KeyMaps.ini. [kyzentun]

* [NoteField] New functions added for controlling the receptor and ghost arrow
(explosion) flashes. [kyzentun]

* [Profile] Guest and Test profile types added. All existing and new
profiles are Normal. If a profile is changed to Guest through the profile
management screen, it will always show at the top of the list. A profile
set to Test will always be at the bottom of the list. Profiles can be
moved around in the list.
GetType and GetPriority lua functions added to Profile.
Bug that caused a crash when a profile dir was renamed to a non-number and
a new profile was created fixed. [kyzentun]
* [Everything] Actor and singleton functions that formerly returned nothing now
return the actor or singleton. Example (set zoom, x, y, and diffuse in one):
self:zoom(.5):xy(, _screen.h-60):diffuse(color("#dc322f"))
This also works for PlayerOptions and SongOptions API functions. Pass true
as an extra arg, and they can be chained.

* [Preferences] MinTNSToHideNotes preference added. [kyzentun]
* [PlayerOptions] MinTNSToHideNotes mod added. [kyzentun]

* [Preferences] Default Fail Type preference mechanism changed internally again.
Set your Default Fail Type preference again. [kyzentun]

* [ScreenPrompt] Answer OnCommand metrics fixed to actually work. [kyzentun]

* [RollingNumbers] Cropping and color during tweens fixed. [kyzentun]

* [Changelog] Vospi read the release notes.

* [Global] approach, multiapproach, lerp, and lerp_color lua functions added. [kyzentun]

* [StageStats] GetStepsSeconds function added. [kyzentun]
If an unrecognized step type is saved, preserve that step instead of
deleting it. A warning will be placed in the log file during song load. [kyzentun]

StepMania 5.0 beta 4a | 20141015

* [BackgroundEffects] Fixed errors in StretchNoLoop and StretchRewind.

* [NoteDisplay] Var Player and Var Controller work for non-receptor arrows. [hanubeki]
* [Mac OS X] Allow StepMania to be built and run in Yosemite.

* [NoteDisplay] Add two noteskin metrics, {PartName}NoteColorType and
{PartName}NoteColorCount. View
for more information. [hanubeki]

StepMania 5.0 beta 4 | 20140930

To reduce the number of entries in this file, entries are dated to the Saturday after they occurred.

* [Preferences] DebounceCoinInput time pref added for machines that need a
different debounce time for coin input.
* [Preferences] DefaultFailtype preference reinstated to resolve default fail
type problems.
* [TimingData] TimingData::GetReturnsNumbers metric added to make TimingData
functions return tables of numbers instead of strings.

* [ScreenOptionsCustomizeProfile] New screen added for setting profile stats.

* [Endless] Songs are repicked on each repeat of the course.
* [GameState] GetCurrentStage logic fixed to correctly return Stage_Final in
all cases where it should.
* [JudgmentMessage] Tracks parameter replaced with Notes and Holds parameters.
* [NumPadEntry] New customizable lua class for custom screens.
* [ScreenHeartEntry] New screen added to default.
* [TapNote] Class exposed to lua through JudgmentMessage with all data on the

* Changed ES/OMES speed mod to 2x from 1.5x.
* [ActorMultiVertex] GetTexture lua function added.
* [BitmapText] max_dimension_use_zoom lua function added.
* [Edit Mode] Swap Up/Down and Arbitrary Remap added to Alter menu.
* [GameState] InsertCoin and InsertCredit lua functions added.
* [PrefsManager] FastNoteRendering preference added.
* [RageTexture] Reload lua function added.
* [RageTexture?] "__screen__" added as special screenshot texture name.
Causes a skip.
* [Screen] SetNextScreenName lua function added.
* [ScreenCredits] New ScreenCredits. Please update your theme if you applied
theme changes to this screen.
* [ScreenMapControllers] Massively changed to make it not suck. New elements,
new metrics, new actions.
* [WheelItemBase] IsLoaded lua function added.

* [ActorScroller] wrap parameter added for controlling looping behavior better.
* Life difficulty matches StepMania 3.9's again.

* [ActorFrame] Internal diffuse and glow now apply to BitmapText children.
* [GameState] SetCurrentPlayMode and SetCurrentStyle lua functions added.
* [PrefsManager] BackgroundFitMode preference added to settle all problems
with how backgrounds are stretched or fit.
* [ScreenSetBGFit] New screen for presenting the BackgroundFitMode preference.
See _fallback/BGAnimations/ScreenSetBGFitMode overlay.lua for documentation.
* [ThemeManager] HasMetric/String now return false when the group name or
metric name is an empty string.

* [GameManager] GetStylesForGame lua function added.
* [LifeMeterBattery] CourseSongRewardLives metric added.
* [LifeMeter] LifeType, DrainType, and BatteryLives moved to PlayerOptions so
the players can have different settings.
* [ScreenGameplay] LifeMeterChangedP1 message is no longer broadcast for for
P2's lifemeter. Use LifeMeterChangedP2. "Life" and "StepsSecond" are passed
in the params table for the message.

* [MusicWheel] Added GetSelectedSection lua function.

* [ActorScroller] Accidental "permanent loop" bug fixed.
* [Common metrics] AfterThemeChangeScreen, AfterGameChangeScreen, and
AfterGameAndThemeChangeScreen optional metrics added to Common section.
* [GameManager] SetGame lua function added.
* [Globals] OldStyleStringToDifficulty lua function added.
* [PrefsManager] SavePreferences lua function added.
ThreeKeyNavigation preference added.
* [SoundManager] IsTimingDelayed lua function added.
* [ThemeManager] SetTheme lua function added.
* [ScreenHowToPlay] CharacterName metric works again.

* [BitmapText] LoadFont is now obsolete. Set the Font attribute of the
BitmapText instead.
* [ErrorReporting] New system that reports theme errors through dialogs and
an on screen display. (Sorry guys, your themes are all full of errors, and
you should fix them)
* [LogDisplay] New actor class used by ErrorReporting, possibly useful more
widely. See _fallback/Scripts/04 LogDisplay.lua for docs.

* [Actor] GetDestX/Y/Z lua functions added.
* [Profile] Lua functions for calculating calories based on heart rate added.
See ThemerDocs/calories.txt

* [ArrowEffects] New namespace of lua functions.
* [Screen] AddInputCallback and RemoveInputCallback lua functions added.

* [Gameplay] CMods and MMods now automatically compensate for music rate.
* [Globals] SaveScreenshot lua function added.
* [ScreenPlayerOptions] ArbitrarySpeedMods system added.
* [ScreenSelectMusic] Pad codes that set modifiers disabled.

* [ScreenSelectMusic] SelectMenuInput message is now always sent when Select
is pressed.

* [GameState] StoreRankingName lua function added. Ranking names now allow
* [Profile] SetLastUsedHighScoreName and GetHighScoreListIfExists lua
functions added.

* [Player] Tracks param added to JudgmentMessageCommand. (will change before
beta 4)
* [ScreenGameplay] Themable haste system added.
GetTrueBPS lua function added.
* [ThemeManager] GetMetricNamesInGroup and GetStringNamesInGroup lua functions

* [ActorFrame] GetChild and GetChildren modified, see Lua.xml.
* [NoteSkinManager] GetMetric function added.
* [PlayerOptions] Entirely new API for setting player options. Superior
alternative to ApplyGameCommand.
* [SongOptions] Entirely new API for setting song options. Same design as new
PlayerOptions API.
* [NoteField] NoteField Board can now use any AutoActor class instead of just
Sprite/Sprite-derived ones.

* [Style] GetColumnInfo and GetColumnDrawOrder lua functions added.

* [ActorMultiVertex] New actor class added.
* [ScreenGameplay] GetHasteRate lua function added. GiveUpSeconds metric added.
* [SoundManager] StopMusic lua function added.

* [GameState] HaveProfileToLoad/Save and Load/SaveProfiles lua functions added.
* [ScreenWithMenuElements] StartTransitioningScreen lua function added.

* [Player] HoldNoteScore_MissedHold added.

* [ScreenNetSelectBase] Fix colors when unicode characters are in chat box.

* [ActorScroller] DrawByZPosition fixed for looping ActorScrollers.
* [Globals?] GetTimeSinceStart global lua function added.
* [Player] FirstTrack parameter added to JudgmentMessageCommand. (will change
before beta 4)

StepMania 5.0 beta 3 | 20140224

* [Actor] texturetranslate lua function added.
* [BitmapText] distort lua function added.
* [ComboGraph] Added BodyHeight metric.
* [GameState] JoinInput lua function added.
* [PlayerOptions] "resetspeed" mod added.
* [PlayerStageStats] GetComboList and GetLifeRecord lua functions added.
* [Preferences] ComboContinuesBetweenSongs preference added.
* [ScreenWithMenuElements] SetAllowLateJoin lua function added.
* [SoundManager] loop and applyRate args added to PlayMusicPart lua function.
* [Sprite] SetCustomPosCoords lua function added.
* [Utils] XML backwards compatibility added.

* [Actor] Added heading, pitch, and roll lua functions.

* [CombinedLifeMeterTug] Added names and commands to Separator and Frame items.
* [MeterDisplay] Added names to Stream and Tip items. [SSC]

* [ScreenOptions] Allow for the use of per-screen Start sounds instead of a forced
Common Start. [SSC]

* [GameConstantsAndTypes] Declared RankingCategory as a type. [SSC]
* [Profile] Added GetCategoryHighScoreList(StepsType,RankingCategory) Lua
binding. [SSC]

* PIUIO: Fix default mapping for lights on five-panel setups.

* Re-implement CustomSpeedMods to use new Lua hooks. Fixes assertion when
loading SpeedMods.txt from unmounted card.
* Add Lua hooks for themes to load/save custom data to/from profiles.
* [Linux] Ignore comments in /etc/fstab.

* Fix editor behavior when deleting/shifting timing changes.
* Re-enabled "convert to stop/delay" at beat 0.

* Fix hack pertaining to ModIcons and Lua-based option rows.

* [FFmpeg] Fix several video timing issues (delay, stutter, looping) with the
FFmpeg driver.

* [ThemePrefs] Fix saving of ThemePrefs in default theme.

* [ScreenEdit] Fix Undo for the Alter and Turn commands. Previously, trying
to undo one of these commands would erase the notes instead. Now it behaves
as expected.

* [SoundDriver_JACK] New sound driver (experimental!). To use this, specify
JACK in your SoundDrivers preference, and set SoundDevice to a
comma-separated list of ports to connect to, for example:

* [ScreenEdit] Display scroll segments in editor and preview for both Song and
Steps Timing.

* [MemoryCardDriver] Allow Unix fstab to specify memory card devices by alias
(e.g. /dev/disk/by-path/*)

* [ArchHooks_Unix] Support the GoToUrl function. [phantom10111]

* [InputHandler_DirectInput] Add support for all possible input device types
under new DirectX library. [Shenjoku]
* Add --enable-lto option for configure on Linux. [phantom10111]

StepMania 5.0 beta 2a | 20130616

* Fix some minor DLL issues on Windows. [wolfman2000]
* Theme updates to make it faster. [Midiman]

* [ScreenJukebox] Check for existing steps when starting jukebox.
* [ScreenEdit] Fix crash related to keysounds. [wolfman2000]

* Fix theme glitches caused by the change to Home/Free modes.
* [UnlockManager] Allow entries to be explicitly locked by the theme.

StepMania 5.0 beta 2 | 20130602

* Add several video container formats that are supported by FFmpeg: mkv, mp4,
mov, flv, f4v.

* [ArchHooks_MacOSX] Add per-user folders in ~/Application Support.

* [ScreenSelectMusic] Fix crash when sorting in Oni mode.

* [ActorFrame] Propagate glow and diffuse to children of ActorFrames. This
should fix any visual problems with layered noteskins and mods.

* Remove the "random" part of the Random Vanish mod to prevent crashing.

* [MovieTexture_FFMpeg] Fix crashing with large videos.

* [NotesLoaderSM] New algorithm for converting negative BPMs and stops to
warps, more closely matching the behavior of old StepManias.

* [MusicWheel] Add the ChangeSort method to the Lua interface to allow the
theme to switch sorting methods.

* [Player] Add a "Column" parameter to the StepMessage to allow the theme or
chart to discover which column is being triggered.
* [ArchHooks] Unix: Move UserPackages to Packages in the per-user directory,
and remove Data from the per-user directory. Users who have installed
packages to UserPackages will need to migrate them to Packages instead.

* [Player] Fix a stutter that can take place when mines are skipped during
warp segments. [phantom, wolfman2000]

* [TimingData, ScreenEdit] Fixed behavior in the editor whereby making changes
to Song Timing would unexpectedly change all charts to Steps Timing.
(Thanks to DJ OMiY for reporting and isolating the problem.)

* [Screen] Allow overlay screens to accept codes.

* [TimingChanges, ScreenEdit] Fix a bug in the editor where adding BPM changes
that differ by a very small amount from the previous BPM change were not
added at all. [vulture/wolfman2000]

* [ScreenGameplayShared] Fix routine mode. [djpohly/FSX/shakesoda/wolfman2000]

StepMania 5.0 beta 1a | 20121228

* [default] Improved autogen icon and Oni life display. [Midiman]
* [ScreenSelectMusic] Fix mouse events being eaten. [shakesoda]
* [ScreenEdit] Remove extra zeroes from editor text entry. [djpohly]
* [WheelBase] Add WheelBase.Move Lua binding. [shakesoda]

* [default] Various theme improvements. [Midiman]
* [PlayerStageStats] Restore SetScore and SetCurMaxScore Lua bindings. [shakesoda]

* Code restructuring. [djpohly/wolfman2000]

StepMania 5.0 beta 1 | 20121225

* [PlayerStageStats] Remove SetScore and SetCurMaxScore Lua bindings. [FSX]

* [ScreenDebugOverlay] Don't reset the gamestate when reloading screens. Reloading
ScreenSelectMusic or any other screen which relies on that works now. [shakesoda]
* [RageUtil] Fix math.random() never returning > 0.5. [vyhd]

* [default] Fix Final Stage not appearing on StageInformation if a Long or Marathon song is
played as the last song. [FSX]
* [fallback] Add Song:GetStageCost() [FSX]

* [Font] Fix a unicode-related crash which would sometimes happen on SMO. [shakesoda]
* [GameState] Fix arrow stuttering for cases where you get duplicated values between
updates. This helped significantly for PulseAudio on Ubuntu 12.04, for me. [shakesoda]

* [RageDisplay_GLES2] Carry over a bunch of functionality from RageDisplay_OGL, still not
usable however. [shakesoda]

* [ScreenSelectMusic] Only unchoose steps if there are more than 10 seconds on the timer
to prevent unchoosing steps for an infinite timer. [Marcio Barrientos]

* [ProfileManager] Added SaveProfile, SaveLocalProfile, GetLocalProfileIDs,
ProfileFromMemoryCardIsNew, GetSongNumTimesPlayed, LocalProfileIDToDir, and
GetLocalProfileDisplayNames Lua bindings. [Alfred Sorenson]
* [Profile] Add GetGUID Lua binding. [Alfred Sorenson]

* [RageDisplay_OGL] Try to fix the shader compilation crash once and for all. [shakesoda]

* [RageDisplay_GLES2] Initial GLES2 commit. Not functional. [shakesoda]

* [NotesLoaderSMA] Fix default speed length for SMA files. [Aldo MX]
* [NotesLoaderSMA] First segment required a zero. [Aldo MX]

* [ScreenEdit] Don't allow ratings of 0. [shakesoda]

* [InputHandler_Linux_PIUIO] Add interface to PIUIO kernel module. [djpohly]

* General theme updates: made things faster, title menu updated. [Midiman]

* [ScreenDebugOverlay] Added BackgroundColor metric. [AJ]

* [OptionRow] Set text after running OnCommand so commands like "uppercase,true"
actually have a chance to work. [AJ]

* [SongManager] Fix a bug where DVNO wouldn't always be gold. [AJ]

StepMania 5.0 alpha 3 | 20120711

* [ScreenEditMenu] Don't use "Blank" in the description for blank steps;
use a blank string instead. [AJ]

* [ScreenSelectMusic] Fix an issue where Control+<Letter> wouldn't work. [AJ]

* [InputMapper] Use "|" for separating entries instead of ",", since some
companies have names like "x Ltd., something". [Mordae, AJ]

* [ScoreDisplayRave] Add FrameBase and FrameOver to the metrics. [AJ]
* [PlayerStageStats] Added GetSongsPassed and GetSongsPlayed Lua bindings. [AJ]

* [ScreenRanking] Added "NextPage" command. "SwitchPage" command is
now "SwitchedPage". [AJ]
* [ScreenRanking] Don't clobber alpha values when applying colors in SetPage. [AJ]

* [ScreenHowToPlay] Actually shows notes again. [AJ]
* [ScreenGameplay] When ShowLifeMeterForDisabledPlayers is true, don't fill up
life in the meter for the disabled player. (LifeMeterBar only) [AJ]

* [ScreenHowToPlay] Run InitCommand on Characters if enabled. [AJ]
* [RageUtil] Add detection of ".hg" to StripCvsAndSvn. [AJ]

* [SongManager] Ending a group's name in PreferredSongs with "/*" will now load
all songs from that group automatically. [AJ]

* [ProfileManager] Added GetPlayerName(pn) Lua binding. [AJ]

* [GrooveRadar] Added SetFromValues(pn,{f1,f2,f3,f4,f5}) Lua binding. [AJ]

* [PrefsManager] Added StretchBackgrounds preference. [AJ]
* [BMSLoader] Add #banner support. [hanubeki]

* [PaneDisplay] Added NullCountString metric. [AJ]
* [PlayerOptions] Fixes to Get/Set[C, M, X]Mod Lua bindings. [hanubeki]

* [MusicWheel] Added EmptyColor metric. [AJ]
* [PlayerState] Enabled GetPlayerController Lua binding.

* [NotesLoaderBMS] Support for #BMP based background changes. [theDtTvB]
* [SongManager] Add song to the list of songs before loading it, this fixes
crashes in some BMS files. [theDtTvB]
* [ScreenEdit] Allow a new way of creating and modifying attacks using the
Area Menu. Note: Using the C or V keys is no longer allowed for attacks.
It will simplify things for later. [Wolfman2000]
Modified HasSignificantTimingChanges; the following now disqualify
when using a CMod: Stops, Delays, Warps, Speed Changes, Scroll Changes.
Songs with a non-constant BPM will only disqualify if the High/Low difference
is greater than 3.00. [AJ]

* [Actor] Made the xy command a source-code level command. [AJ]

* [LoadingWindow_Gtk] Actually resolve the path to the Splash file. [djpohly]

* [ScreenWithMenuElements] Added DelayMusicSeconds metric. [AJ]
* [ScreenOptionsMasterPrefs] Allow for FastLoadAdditionalSongs preference
to be called via the "conf" command. [AJ]

* [Course] Added AllSongsAreFixed() Lua binding. [AJ]

StepMania 5.0 alpha 2 | 20120504

* Add Var "Player" and Var "Controller" for NoteSkin. [hanubeki]
Sourced from
* [CustomSpeedMods] If a player decides to remove 1x from the machine profile's
custom speed mods, re-add it back in to avoid crashes. [AJ]

* Make ReceptorArrowRow and GhostArrowRow respect the column draw order. [hanubeki]
Sourced from

* [Profile] Added GetLastPlayedSong and GetLastPlayedCourse Lua bindings. [AJ]

* [LifeMeterBar] Reverted a change from 2010 that messed with how the life meter
subtracts life. The life difficulty should match StepMania 3.9 again. [AJ]

* [ScreenNetworkOptions] Fixed a bug where localized text would not show up
properly. Fixes issue 759. [AJ]
* [Steps, Song] Replace Steps:UsesSplitTiming with
Song:IsStepsUsingDifferentTiming for both C++ and Lua. [wolfman2000]

* Modify Jousway's planned noteskin to allow it to work with Technomotion
style gameplay. Expect minor bugs. [Jousway, Wolfman2000]

* [PlayerOptions] Fix setting some effect mods that were always set to Drunk.
I wonder who had too much to drink. [TaroNuke]

* [GameManager] Allow beat single7 and versus7 to be shown in Demonstration. [AJ]

* [ScoreKeeperRave] Actually handle hold scores in HandleHoldScore().
Players should please provide feedback on how this affects gameplay, as this
is a temporary feature. [AJ]
* [GameConstantsAndTypes] Made StageResult Lua-aware. [AJ]
* [GameState] Added GetStageResult(pn) Lua binding. [AJ]
* [Player] Keysounds now respect the volume settings. [hanubeki]
Sourced from hanubeki-modified-sm-ssc rev. 16fc5b714582

* [ScreenEditMenu] Don't hardcode stopping the music on pressing the back button.
This interferes with the StopMusicOnBack metric. [AJ]

* [Background] Fix 3D noteskins and dancing characters from clashing with each other. [shakesoda, AJ]
* [NoteField] Fix 3D noteskins overlapping. [shakesoda, AJ]
* [ScreenEdit] Don't use Step timing by default. [Midiman]
* [ScreenEdit] Allow playback of course modifiers in Course Edit mode [Midiman]

* [04 Scoring.lua] Added various 3.9 and 3.9+ scoring methods. [hanubeki]

* Remove libtheora support since ffmpeg already supports theora videos. [cvpcs]

* Update ffmpeg support to v0.10. [cvpcs]

* [PlayerOptions] Don't display x-mods when using m-mods.
Sourced from hanubeki-modified-sm-ssc rev. bd08a58dd7cf and OpenITG.

* [MusicWheel] Added RouletteStopped message, which is broadcast when Roulette
is finished and the wheel is locked. [AJ]
* [WheelBase] Made WheelState a Lua-enabled enum and added
GetWheelState() Lua binding. Deprecated IsLocked() Lua binding. [AJ]

* [ScreenSelectMaster] Now updates choices on player join; it will move the
scroller to the correct location, but the GainFocus/LoseFocus commands don't
seem to work. [AJ]

* [GameCommand] Added GetDifficulty(), GetCourseDifficulty(), GetPlayMode(),
GetSortOrder(), GetAnnouncer(), GetPreferredModifiers(), and
GetStageModifiers() Lua bindings. [AJ]

* [Player] Changed default Hold window to 0.250f, like it was in 3.9. [AJ]

* [NotesLoaderBMS] Fix calculating stops, Support for #LNOBJ, Don't use #BACKBMP
as song background if main StepsType is beat-*. [hanubeki]
These changes constitute revisions f26caccf103e, 2d114b38c6c9, and b60f021d2b67
of hanubeki-modified-sm-ssc. (

* [MemoryCardManager] Disable Memory Cards by default. If you want to use them,
set MemoryCards=1 in Save/Preferences.ini (or Save/Static.ini). [AJ]
* [GameState] Set Premium to Premium_DoubleFor1Credit by default. [AJ]
* [ScreenSelectMusic] Added PlaySoundOnEnteringOptionsMenu metric. [AJ]
* [MusicWheel, WheelBase] Added collapse sound. [AJ]

StepMania 5.0 alpha 1a | 20120219

* [Style] Added LockedDifficulty() Lua binding. [AJ]

* [HighScore] Added Max Combo, Stage Award and Peak Award. New Lua bindings for
HighScore: GetMaxCombo(), GetStageAward(), GetPeakComboAward(). [AJ]
(the specifics of this are subject to change.)

* [WheelBase, WheelItemBase] Turned WheelItemDataType into a Lua type,
made WheelBase:GetSelectedType() return the enum instead of a number. [AJ]

* [ScreenEdit] Added support for editing keysounds. Use the Area Menu (Enter)
to either modify what sounds play on that row, or even remove a sound from
the list. Any sounds assigned to empty notes will automatically become
an AutoKeysound, and any AutoKeysounds that have their sound removed will
become empty notes. [Wolfman2000]

* [ScreenOptionsMaster] Added StepsRowLayoutType metric.
(Valid values are "ShowAllInRow" or "ShowOneInRow".) [AJ]

* [Player] Tap Note Scores (tns) can now be "AvoidMine" or "HitMine" in
JudgmentMessageCommand. [Saturn2888, shakesoda]

* [WheelNotifyIcon] Add the NumIconsToShow metric. [Wolfman2000]
* [PlayerOptions] Fix a problem with m-mods where you would get m200 as
the default speed modifier. [AJ]

* [ScreenEdit] Fix a floating point issue when dealing with speed segments.

* [Song] Fix a bug introduced with "Only read certain tags during first load"
where song graphic files wouldn't load. [theDtTvB]

StepMania 5.0 alpha 1 | 20120108

* [Song] Add HasPreviewVid and GetPreviewVidPath lua binding [cerbo]

* [ScreenManager] Made AddScreenToTop take a second (optional) parameter for
posting a ScreenMessage on screen pop. [AJ]
* Only read certain tags during first load; makes song loading faster. [theDtTvB]

* Fix Portable.ini not working on Mac OS X. [shakesoda]

* [PercentageDisplay] Remove unused ApplyScoreDisplayOptions metric;
added PercentFormat and RemainderFormat metrics. [AJ]
* Fix Portable.ini not working in Linux. [FSX]

* Fix a scoring/grading bug with Lifts. [FSX]

* [MusicWheel] Add IsRouletting Lua binding. [AJ]
* [LuaManager] Remove GetOSName Lua binding; use GetArchName instead. [AJ]

* [ArchHooks_OSX] Worked around a crash when language detection goes wrong.
Note: a real fix should be looked into. [shakesoda]

* [Song] Fixed a bug where a sample start of 0 wouldn't work. [AJ]
* [Game] Added CountNotesSeparately and GetMapJudgmentTo(TapNoteScore)
Lua bindings. [AJ]
* [StepMania.cpp] Fix initial aspect ratio on first boot, hopefully.
(See issues 6 and 27) [AJ]

* [LuaManager] Added ProductFamily() Lua binding. [AJ]

* [Various] Allow loading of *.jpeg in addition to *.jpg. [AJ]

* [StreamDisplay] Added VelocityMultiplier, VelocityMin, VelocityMax,
SpringMultiplier and ViscosityMultiplier metrics. [AJ]

* [ScreenEdit] Add the GAMESTATE:InStepEditor Lua binding. [Wolfman2000]
* [Player, ScreenGameplay] Allow failing on Oni without crashing. This one
took awhile. [Wolfman2000]
* [LifeMeterBattery] Fixed various issues (lives not fully disappearing on fail,
P2 lose life animation having the wrong x zoom, hide the lives number if it
falls below 0). [AJ]

* [ScreenEdit] Restore cycling the timing segments for jumping between.
The required line somehow never got replaced. [Wolfman2000]

* [PlayerOptions] Added IsEasierForSongAndSteps(Song,Steps,PlayerNumber) and
IsEasierForCourseAndTrail(Course, Trail) Lua bindings. [AJ]
* [PlayerState] Added GetSuperMeterLevel() Lua binding. [AJ]

* [ScreenGameplay] Add the SurvivalModOverride metric. Let the themer decide
if mods should be overridden on survival or not. Funny enough, this used
to be true for the old Oni style mode, but...well, we'll cross that bridge
later. [Wolfman2000]
* [LifeMeterBattery] Added MaxLives metric, which limits the maximum amount of
lives. Setting this to 0 will remove the limit. [AJ]

* [PlayerOptions] Pretty large changes here, namely a bunch of new bindings.
Fixed the logic for GetReversePercentForColumn; It will now return nil for
invalid columns. Also fixed the logic for UsingReverse (now checks for 1.0f)
and SetPassmark (no longer allows values < 0.00f and > 1.0f). [AJ]
* [ScreenEdit] Allow inserting and removing beats and timing changes in
specific note increments instead of just quarter notes (a whole beat).
Those that prefer to keep using the shortcut keys will note that the
behavior has not changed for that: only by going into the Area menu can you
deal with more specific changes. [Wolfman2000]

* [ScreenEdit] Restore using F9 and F10 to adjust stops by a fixed amount.
Sorry for the delay in this. [Wolfman2000]
* [ScreenEdit] Minor convenience. If you attempt to create a negative stop
segment from scratch, it does not create, and you are not requested to
save on exit, for there is nothing to save. [Wolfman2000]
* [ScreenEdit] Allow Shift + F9/F10 for adjusting delays. This works the same
way as adjusting stops. [Wolfman2000]

* [PlayerStageStats] Hitting a mine no longer gives you full combo when
[Gameplay] MineHitIncrementsMissCombo=true. [AJ]

* [PlayerStageStats] Added GetFailed and GetNumControllerSteps Lua bindings. [AJ]

* [LifeMeterBar] Added the ForceLifeDifficultyOnExtraStage metric and
the ExtraStageLifeDifficulty metric. Let the themer decide if extra stages
should have their own life bar behavior. Note that this metric does NOT
change the lifebar to the battery style. [Wolfman2000/FSX]

* [Mac OS X] Restore JPEG functionality. [Wolfman2000]

* [GameState] Add the RefreshNoteSkinData lua binding. This will only
refresh the NS data for the present game, not all games. [Wolfman2000]
* [ScreenSelectMusic] Fixed Rave difficulties not being synced on late join.
Fixes issue 577. [AJ]
* [GameplayAssist] Don't play sounds if the player is dead. Fixes issue 621. [AJ]

* [ScoreKeeperRave] Revert fix from 2011/10/28. [AJ]
* [ScoreKeeperRave] Fixed Miss and HitMine giving meter life.
(Fixes issue 622.) [AJ]

* [ArchHooks] Add the GetArchName lua binding. To the themers that use
GetOSName, that function may be deprecated in the future. For now,
both options exist. [vyhd, Wolfman2000]

* [ArrowEffects] Fix Expand, and possibly other mods, from breaking if
using a second player. [Wolfman2000]
* [ArchHooks] Add the AppHasFocus lua binding. [vyhd, Wolfman2000]

* [GameState] Add the ResetPlayerOptions lua binding. [Wolfman2000]

* [ScoreKeeperRave] Fix an issue where the super meter would not decrease back
to 1 after hitting the end of 3. (Fixes issue 314.) [AJ]

* [Default theme] Fixed the pref controlling timing segments on song meter. [FSX]

* [LightsManager] Use song beat for menu button lights, allow demonstration to
flash pad lights when BlinkGameplayButtonLightsOnNote is true, light custom
game buttons when pressed during attract mode, general optimizations. [vyhd]

* [ScreenEdit/NoteField] Fix an editor crash when you exit without saving
after creating new steps. [Wolfman2000]

* [NoteDataUtil] Add the Backwards mod for games where the intended
definition of Mirror is different. Regarding Pump gameplay, what was
called Mirror in Preview 4 is considered Backwards now, and the original
Mirror is back in its old position. [Wolfman2000]

Fix a bug where e.g. ".SM" ".DWI" ".Sm" ".sM" files
wouldn't properly load since the code was expecting lowercase. [AJ]

* [NotesLoaderBMS] Add the time signature segments. [theDtTvB]

* [NotesLoaderBMS] Fix the bug where keysounds that points to nonexistant file
gets assigned a random one. [theDtTvB]
* [NotesLoaderBMS] Use BMSLoader to load PMS files. [theDtTvB]
* [RageSoundReader_WAV] Fix ADPCM support. [theDtTvB]

* [GameSoundManager] Add the PlayMusicPart lua binding. [Wolfman2000]
* [ScreenEdit] Add the FadeInPreview and FadeOutPreview metrics. This controls
how long the fade in and fade outs are for playing the preview music.
The default values are 0 and 1.5 respectively. [Wolfman2000]

* [RageDisplay] Add the GetFPS, GetVPF, and GetCumFPS bindings. [Wolfman2000]

* Various scoring fixes sourced from
[A.C/@waiei, 桜為小鳩/@sakuraponila]

StepMania 5.0 Preview 4 | 20111005

* [NoteDataUtil] More accurate Left, Right, and Mirror mods for Pump gameplay.
Major thanks to Hudson Felker and Bill Shillito here. [Wolfman2000]

* [ScreenHighScores] Disable forced screen transition behavior when
ManualScrolling=true. [AJ]

* [GameState] Added CurrentOptionsDisqualifyPlayer(player),
ApplyPreferredModifiers(player,string) and ApplyStageModifiers(player,string)
Lua bindings. [AJ]

* [Fallback theme] Fix ImmediateHoldLetGo function. [Wolfman2000]
* [GameState] Add the EditAllowedForExtra metric. Use this if you want edit
steps to be allowed for accessing the extra stage. By default, this is
false. [Wolfman2000]

* [Default theme] Added Song Timing Display user preference. [AJ]
* [ThemeManager] Add global Scripts dir. [shakesoda]

* [WheelItemBase] Added GetColor and GetText Lua bindings. [AJ]

* [ScreenEdit] Disable shifting timing changes down one beat if starting on
beat 0. Important information must stay on that beat. [Wolfman2000]
* [ScreenEdit] Disable converting rows to a stop or beat starting on beat 0.
There should be no reason for this at this time. [Wolfman2000]
* [MusicWheelItem] Add/reinstate MusicWheelItem Mode Normal/Color/OverPart. [AJ]
* [FadingBanner] Added LoadFromSortOrder(SortOrder) Lua binding. [AJ]

* [ScreenEvaluation] Added RollingNumbersMaxComboClass metric. [AJ]
* [NotesLoaderSM] Fix loading .sm files with non standard difficulty names.
It should be Hard, not Heavy. [Wolfman2000]

* [ScreenDebugOverlay] Replaced hardcoded toggle command with
ButtonTextToggledCommand metric. [AJ]
* [LoadingWindow_Win32] Make the StepMania window gain focus after the
loading window closes. Fixes issue 424. [AJ]

* [FadingBanner] Added LoadRandom(), LoadRoulette(), LoadFallback(),
LoadCourseFallback(), and GetBanner(int) Lua bindings. [AJ]

* [Song] Added GetSampleStart() and GetSampleLength() Lua bindings. [Wolfman2000]

* [UnlockManager] Added GetNumLockedSongs() Lua binding. [Wolfman2000]
* [UnlockManager] Added IsSongLocked() Lua binding. [Wolfman2000]

* [NotesLoaderSSC/WriterSSC] Allow all timing tags regardless of what timing
is used. [Wolfman2000]

* [ScreenEvaluation] Added "evaluation full combo W1" and
"evaluation full combo W2" announcer cues. [AJ]
* [Banner] Added "Banner group fallback" graphic. [AJ]

* [NotesLoaderBMS] Rewrite the BMS loader, should fix issues 430 and 500. [theDtTvB]

* [GameManager] Fix shifting of 2P notes in beat mode. [1a2a3a2a1a]

* [Model] Added GetDefaultAnimation() Lua binding. [AJ]
* [GameState] Added GetEarnedExtraStage() Lua binding. [AJ]

* [MenuTimer] Added start(), disable() Lua bindings. Also renamed setseconds to
SetSeconds to match GetSeconds. [AJ]
* [GameManager] beat "versus" -> "versus5"; fix beat versus7 being "single7". [1a2a3a2a1a]

* Updated libjpeg to 8c.
* [SongManager] Added GetCoursesInGroup(sCourseGroup,bIncludeAutogen),
GetSongGroupBannerPath(songGroup), GetCourseGroupBannerPath(courseGroup),
DoesSongGroupExist(songGroup), DoesCourseGroupExist(courseGroup) and
GetPopularSongs() Lua bindings. [AJ]
* [SongManager] Added GetPreferredSortSongs(), GetPreferredSortCourses(courseType,bIncludeAutogen),
and GetPopularCourses(courseType) Lua bindings. [AJ]
* [SongManager] Add SongToPreferredSortSectionName(song), WasLoadedFromAdditionalSongs(song),
and WasLoadedFromAdditionalCourses(course) Lua bindings. [AJ]
* [CryptManager] Add GenerateRandomUUID() Lua binding. [AJ]
* [ThemeManager] Added DoesThemeExist(sTheme), IsThemeSelectable(sTheme),
DoesLanguageExist(sLang), GetCurThemeName(), HasMetric(sGroup,sValue), and
HasString(sGroup,sValue) Lua bindings. [AJ]

* [] Fixed version date and time handling. [AJ]

* [PrefsManager, X11Helper] Added ShowMouseCursor preference. [AJ]
* [UnlockManager] Added GetStepOfAllTypes Lua binding. This gets the locked
Steps for all game types based on the difficulty specified. [Wolfman2000]
* [UnlockManager] Added requirepasschallengesteps Lua binding. This is more
self-explanitory: pass challenge to be able to play edits. [Wolfman2000]

* [NotesLoaderSSC] Fix loading pre-split timing files that had blank timing
tags inside of them. Thanks to for the catch. [Wolfman2000]
* [Song] Added Jacket, CD image (a la early DDR), and Disc (PIU-style) support.
Added GetJacketPath(), GetCDImagePath(), GetDiscPath(), HasJacket(), HasDisc(),
and HasCDImage() Lua bindings. [AJ]

StepMania 5.0 Preview 3 | 20110820

* [PlayerOptions] Add GetMMod() Lua binding. [AJ]
* [Player] Make keysounds respect volume preference. Fixes issue 344. [AJ]

Add PredictMeter() and GetDisplayBPMType() Lua bindings. [AJ]
* [Song] Add ShowInDemonstrationAndRanking() Lua binding. [AJ]
* Turn off Autogen by default. [shakesoda]
* Disable automatic aspect ratio guessing, default to 854x480
(16:9 because most newer displays are wide). [shakesoda]
* Turn on FastLoad and FastLoadAdditionalSongs by default. [shakesoda]

* [RageInput] Added "No input devices were loaded." string to languages. [AJ]
* [RageInputDevice] Added localized names for InputDeviceState. [AJ]
* [Course] Add IsPlayableIn(StepsType) and IsRanking() Lua bindings. [AJ]
* [Trail] Added GetTotalMeter(), GetLengthSeconds(), IsSecret()
and ContainsSong(song) Lua bindings. [AJ]

* Added PrettyPercent(numerator,denominator) Lua binding. [AJ]

* [Foreground] Restore Foreground Changes for use in gameplay. Note that it
is recommended to use lua for #FGCHANGES from now on: not all XML changes
will work. [infamouspat]

* [Theme-side] Added Fancy UI Background preference to Theme Options. [AJ]
* [LowLevelWindow_X11] Don't force the window into the upper left corner. [ZipFile]

* [LifeMeterBattery] Added LostLife param to LifeChanged message. [AJ]
* [LifeMeterBattery] Converted LifeMeterBattery lives to an AutoActor. [AJ]
* [TimingData] Add HasDelays() Lua binding; HasStops() now only checks stops. [AJ]
* [GameState, SongUtil] Fix Issue 263 by not charging 2x stages for doubles when
not using joint premium. [AJ]
* [BeginnerHelper] Made BeginnerHelper run the OnCommand. [AJ]
* [GameState] add GetExpandedSectionName() Lua binding. [AJ]
* [ScreenSelectMusic] Added IdleCommentSeconds metric and
"ScreenSelectMusic IdleComment" announcer sound. [AJ]
* [NotesLoaderBMS] "Send the actual song file to LoadFromBMSFile in
BMSLoader::LoadNoteDataFromSimfile instead of the dummy one...
This fixes the wrong sound issue [423]..." [theDtTvB]

* [NoteSkins/beat/default] Fix Issue 425. [AJ]
* [ScoreDisplayRave] Allow (Meter/Level)(X/Y) metrics to work again. [AJ]

* [NoteField] Added AreaHighlightColor metric. [AJ]

* [NoteTypes, ScreenEdit] Removed artificial MAX_NOTES_PER_MEASURE limit. [AJ]

* [NotesSSC] Only write timing/attack tags for the step if there is a
difference from the song. For timing tags, at this time it means that if even
one tag is different, all tags are written. [Wolfman2000]

* [MusicWheel, RoomWheel] Moved the "- EMPTY -" string to the languages file. [AJ]

* [ScreenGameplay, LyricDisplay] Stop lyrics from animating on failure.
Fixes issue 298. [AJ]

* [ProfileManager] Fix an issue when deleting recently created profiles. [AJ]
* Start removing anything related to Guitar mode. This was rushed in, and it
is not worth us keeping at this time. [Wolfman2000]

* [ScreenEdit] Add a semi working implementation of the often requested
copy/paste selected timing data feature. This should make it easier for
some charters. [Wolfman2000]

* [BeginnerHelper] Removed DancePadAngle metric in favor of DancePadOnCommand.
The same goes for PlayerAngle, dancer rotation is now handled in
PlayerP1/2OnCommand. [AJ]
* [Course] Bumped up max edit course title length to 16 (still feels too short).
Also added #DESCRIPTION tag and Course:GetDescription() Lua binding. [AJ]

* [Win32/CrashHandlerChild] Crashlog and log now open in the player's default
text editor. Also, the Show Log button works again, including for people using
Portable.ini. [AJ]

* [LoadingWindow] Added the ability for themes to have custom splash banners.
(Currently Windows-only.) [AJ]

* [Cache] No longer store #NOTES in the cache. This should speed things up
on the first load if there is not much to write. (General note: this was
taken from another branch, but results at that point were great.)

* [Difficulty] Allow ALL StepsTypes to use CustomDifficulty properly.
There was some unfair targeting of Couple and Routine. [Wolfman2000]
Calculate accurate radar values for Couple charts. [Wolfman2000]
* [ScreenEdit] Display more accurate chart data for Couple and Routine charts
for the future. No more having (almost) every row as a jump! [Wolfman2000]

* [OptionRowHandler] Add a new metric to ScreenOptionsMaster:
StepsUseChartName. Use this if you want your charts to have a unique name
in the options menu. If there is no #CHARTNAME or it is "Blank", it reverts
to the original behavior. This metric is false by default. [Wolfman2000]
* [ScreenEdit] Fixed a bug involving #ATTACKS. Now when you set an attack,
the mods are reverted back to how they were prior to the attack being set.

* [NotesTheUsual] Update the #COMBOS tag to allow for a Miss Combo attribute.
Any files that only use the Combo attribute will have that value copied to
miss combo on next launch. [Wolfman2000]
* [ScoreKeeperNormal] Better match #COMBOS with eval. Scoring formulas should
not be affected, but it may require more testing. [Wolfman2000]
* [Metrics] Have Pump mode lump the checkpoint judgments with Flawless and
Miss judgments on eval. Of course, this goes down to Perfect and Miss if
that is disabled. [Wolfman2000]

* [ScreenEdit] Fix the NoMines transformation bug, issue 363. [Wolfman2000]
* [CourseLoaderCRS] Don't load BEST# and WORST# where # is greater than the
number of songs installed. Fixes issue 373. [AJ]
* [NotesAllSSC] Add the #CHARTNAME tag to the Steps. #DESCRIPTION is now for
more detailed descriptions, or perhaps some short hand lingo. All files
that used #DESCRIPTION will have their values moved to #CHARTNAME on
load. [Wolfman2000]
* [ScreenEdit] Add a Steps Data menu for getting numerical step data on the
chart. This is a read only menu. Edit Steps Information contains writable
information. [Wolfman2000]
* [NotesAllSSC] Add the Steps version of #DISPLAYBPM. The Song version is
still there, so themes should not have to worry about breakage.

* [ScreenEdit] Fix the bug where hitting Enter during playing wouldn't take
the user back to the editor. [Wolfman2000]
* [Gameplay] Fix Fail mods being dishonored. [Midiman]

* [ScreenEdit] Restore dance-couple and pump-couple for editing purposes.
Saving should still work, but this was never tested yet. [Wolfman2000]
* [ScreenOptions] Mini is now ITG Mini, and Tiny is now Pump Pro Mini.
This will prevent many prior courses from breaking. [sharksoda, Wolfman2000]
* [CharacterManager] Add a lua function to check how many characters you have.
For an example of how this is used, check the default theme's scripts
folder, specifically 03 ThemePrefs.lua. [Wolfman2000]

* [ScreenEdit] Add a function to switch the notes the routine players have to
hit. In simple terms, Player 1's notes are now Player 2's and vice~versa.
Check it out in the Alter Menu. [Wolfman2000]
* [ScreenEdit] Add two routine mirroring functions. Now you can build sections
of a chart for one player, and mirror the effect for the other player when
finished. For Pump players, it is not a straight mirror, but is more akin
to what is found via normal routine charts. In other words, you'll be happy.
Check it out in the Alter Menu. [Wolfman2000]

* [ScreenEdit] Fix a crash if one tries to remove an attack that doesn't
exist at that time. [Wolfman2000]

StepMania 5.0 Preview 2 | 20110703

* [Player] Bring mMods from OpenITG over. Also, a metric was added,
"MModHighCap", to cap the speed mod if required for playing songs like
Tsuhsuixamush. Set the metric to 0 or less to remove the cap. [AJ, sharksoda,

* [ScreenEdit] Fixed a crash when hitting Enter in the F1 help menu. [AJ]

* [NotesAll] Use #FIRSTSECOND, #LASTSECOND, and #LASTSECONDHINT instead of the
former BEAT equivalents. Split Timing has made this a necessity thanks to
certain files that abuse Stops/Delays more than usual. [Wolfman2000]
* [ScreenEdit] Add a function in the Area Menu to designate the current beat
as the last second of the song. Please try to be smart and not use this too
early. [Wolfman2000]

* [ScreenEdit] Add a function to copy/paste the TimingData of a player's
choice. Remember to be in the appropriate mode when copying and pasting.
By default, the song timing is already located in the clipboard, ready for
use. [Wolfman2000]

Make sure #ATTACKS are copied when requested. [Wolfman2000]
* [ScreenEdit] Have Step Author up front instead of Chart Style. This is
probably going to be better overall. [Wolfman2000]
* [TimingData] Preserve the length of time for Speed Segment scaling when using
beats. [Wolfman2000]
* [NotesLoader/WriterSSC] #OFFSET is to be before #ATTACKS. This is required if
we pursue beat based attacks and not just second based. [Wolfman2000]

* [UnlockManager] New metric: AutoLockEditSteps. Use this to hide bonus charts
until the Expert steps are beaten. No guarantee that this works with no
challenge steps in the song. This defaults to false. [Wolfman2000]
* [UnlockManager] New metric: SongsNotAdditional. Set to true to keep the
default behavior, false to have the AdditionalSongs folder contain
unlockable material. This is set to true to start. [Wolfman2000]
* [ScreenEdit] Allow jumping between all segments, not just Label segments.
You still use Ctrl + ,/. to jump, but now you use Ctrl + N/M to cycle the
segments. By default, it starts with Label. [Wolfman2000]
* [PlayerOptions] No longer display StepAttacks in the player's list.
Instead, show NoAttacks if attacks are disabled. [Wolfman2000]

* [Actor] Implement compound(length,tweens) in _fallback/02 Actor.lua. [AJ]
* [UnlockManager] Add a new unlock reward: StepsType. This is similar to
unlocking Steps, but it is targeted for one step in one stepstype rather
than one step in all stepstypes. This needs testing. [Wolfman2000]
* [ScreenEdit] Add the option to convert delays to beats. Just find a better
song to use this on besides Uprock. [Wolfman2000]
* [ScreenEdit] Fix a crash if you don't save any steps on a new song.
* [NotesLoader/WriterSSC] Add support for Step #ATTACKS. Furthermore, Song
Attacks (or rather, Step Attacks as it should be called now) are turned on
by default instead of off. [Wolfman2000]

* [EditMenu] Allow all songs to work in Practice Mode, regardless of folder
location. This fixes a crash if everyone had songs in AdditionalSongs.

* [LifeMeterBattery] Fixed a bug where MinesSubtractLives was not being honored.
Also added LifeChanged message to changing of life on holds. [AJ]

* [TimingData] Added many lua bindings for the other timing segments. GetWarps,
GetCombos, GetTimeSignatures, GetTickcounts, GetFakes, GetScrolls, GetSpeeds.
This should cover all of them now. [Wolfman2000]

* [InputHandler_DirectInput] Fixed MouseWheel input not resetting. [AJ]
* [ScreenTextEntry] Make it so only the keyboard's Enter key can finish the
screen. Should fix issues with buttons whose secondary function is MenuStart. [AJ]
* [InputMapper] Modify default mappings. Use the Hyphen key instead of the
Numlock key for Player 2's GAME_BUTTON_BACK. This should address some
issues with Player 2 being unable to back out if they use a laptop.
* [NoteDisplay] Add two new metrics.
* DrawRollHeadForTapsOnSameRow: bool, similar to DrawHoldHeadForTapsOnSameRow
* TapHoldRollOnRowMeansHold: bool, true means hold and false means roll
* No noteskins should require updating, as these were placed in common/common
for ease of use. [Wolfman2000]
* [LifeMeterBattery] Added ChangeLives(int) Lua binding. [AJ]
* [LifeMeterBattery] Added DangerThreshold metric. [AJ]
* [LifeMeterBattery] Added some important metrics. [AJ]
* MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life.
* SubtractLives=1 - how many lives are lost when going below MinScoreToKeepLife.
* MinesSubtractLives=1 - how many lives are lost when hitting a mine.
* HeldAddLives=0 - how many lives are gained when a hold is completed.
* LetGoSubtractLives=1 - how many lives are lost on a dropped hold.

* [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ]
* [ScreenEdit] Restore the old PageUp/PageDown behavior, added Control +
PageUp/PageDown to use recent time signature behavior. Laptop users, that
includes you guys too: semicolon and apostrophe are still good. [Wolfman2000]

* [ScreenEdit] Allow setting the Music Preview via the Alter Menu. Just select
your area, enter the menu, and choose "Designate as Music Preview". No more
math calculations needed! [Wolfman2000]
* [SongUtil] Added GetPlayableSteps(Song) Lua binding. [AJ]
Allow 255 characters for all chart descriptions, including edits.
We are no longer bound by In The Groove I think. [Wolfman2000]
* [Player] Add GetPlayerTimingData() Lua binding. [Wolfman2000]

* [ScreenEdit] Split the Area Menu into the Area Menu and Alter Menu. Use the
"A" key to enter the Alter Menu when a selection of notes/rows are
highlighted. Use the Enter key to enter the old Area Menu for the options that
do not depend on selecting NoteData. [Wolfman2000]
* [ScreenEdit] Allow converting selections to Delays, Warps, or Fakes as well
as Stops. Remember, use the Alter Menu for this. [Wolfman2000]

* [ScreenSyncOverlay] Ensure that F11 / F12 work with all charts due to Split
Timing. [Wolfman2000]

* Any notes in a fake segment or warp segment are completely ignored for
scoring purposes. Now you can get 100% on your warping goodness!

* [PlayerOptions] Removed the ScoreDisplay mod choices. Use lua to make your
own scoring formulas that work in reverse instead. [Wolfman2000]
* [ScreenGameplay] Fix an assist tick bug if there was no Player 1. Note that
this changes the behavior slightly: it is the first enabled player, or
master player, that gets the ticks now. A better solution will be looked at
in the future. [Wolfman2000]
* [NoteDataUtil] Fix a radar issue involving hands. Unfortunately, this means
yet another cache reload for accuracy purposes. [Wolfman2000]

* Changed default MusicWheelSwitchSpeed to 15 (was 10). [AJ]
* [AnnouncerManager] Fixed a bug where no announcers would be loaded. [AJ]
* Restored the UserPrefAutoSetStyle behavior. [Wolfman2000]
* [NotesLoaderSMA] Better way of identifying beats and seconds. [Wolfman2000]

StepMania 5.0 Preview 1a | 20110603

* [LifeMeterBattery] Added LivesLeft param to LifeChanged message. [AJ]
* [Windows] Set up directories for pictures and app data in their proper
location. [Henke]
* [NotesLoaderSM] Fix an Offset load bug. [Wolfman2000]

* [BPMDisplay] Added SetFromSteps Lua binding. [AJ]
* [ScreenDebugOverlay] Switch the R and T keys to be Volume Down and Up
respectively. I have to admit, it makes more sense to have volume up be
on the right instead of the left. [Wolfman2000]
* [SongManager] Make autogen courses have "Autogen" as the Scripter. [AJ]

* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000]
* [ScreenEdit] Fix Song Timing behaviors. [Wolfman2000]

* [Player] Added the BattleRaveMirror metric. This determines if Battle and
Rave mode will have the two players with mirrored charts or not. By default,
this is set to true, preserving the ITG style behavior. [Wolfman2000]
* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000]

StepMania 5.0 Preview 1 | 20110529

* [ScreenEdit] Added the LoopOnChartEnd metric. Once you get to the end of
the chart while playing it in the editor, this controls whether it loops and
plays again, or simply stops. By default, this is true, replicating current
behavior. Set to false to replicate older StepMania behavior. [Wolfman2000]

* [ScoreKeeperNormal] Added the MissComboIsPerRow metric. Similar to the
ComboIsPerRow metric, this determines how much miss combo is earned on missing
a row of notes. By default, this is true. Set to false to replicate Pump Pro
behavior. [Wolfman2000]

* [NotesLoaderSSC/NotesWriterSSC] Added the ScrollSegments. Think BPM change,
but not. [theDtTvB]

Added the UsesSplitTiming Lua binding. [Wolfman2000]

* [CryptManager] Added SHA1File Lua binding. [AJ]

* [BPMDisplay] Add CourseCycleSpeed metric. [AJ]

* [NotesWriterSM] Write out OpenITG compatible SM files from here on out.
This includes turning Warps into Negative Stops. For those that wanted
negative BPMs specifically, my apologies, but stops are easier on math.

* [ProfileManager] Added ProfileWasLoadedFromMemoryCard(PlayerNumber)
Lua binding. [AJ]
* Added #FAKES to the SSC format. Similar to the fake arrows, these blocks
prevent all judgments within the range. [Wolfman2000]
* Changed the syntax of #WARPS slightly. Now the second value is the relative
distance that is skipped, not the absolute value when you start hitting
arrows again. [Wolfman2000]

* [ScreenGameplay] Removed hardcoded commands for Debug (give up text) and
replace them with DebugStartOnCommand, DebugBackOnCommand, and
DebugTweenOffCommand. [AJ]
* Added #SPEEDS to the SSC format. This multiplies your scrolling speed during
gameplay, not replaces it (see mod attacks for replacing). [Wolfman2000]

* [ModIcon] Added StopWords metric. [AJ]
* [ScreenSelectMaster] Add "ScreenEmpty" param to MenuStartP# when the GameCommand
doesn't set a screen. [AJ]
* [StepsDisplay] Added MeterFormatString metric. [AJ]
* [MusicWheel] Added ShowSectionsInBPMSort and ShowSectionsInLengthSort metrics. [AJ]
* [ScreenEvaluation] Stop the Bonus bars from overflowing in course modes. [AJ]
* [Banner] Added ScrollMode and ScrollSortOrder metrics. [AJ]

* Added Split Timing to .SSC files. All older .SSC files and other file
formats are converted to split timing on cache load. We are no longer bound
by Song Timing for everything. [theDtTvB, Wolfman2000, TeruFSX]

* [GameSoundManager] Added PlayAnnouncer Lua binding. [AJ]
* [AnnouncerManager] Add support for "gameplay combo #" for announcer. [AJ]

* [Sprite] Added SetSecondsIntoAnimation Lua binding. [AJ]
* [BPMDisplay] Added SetFromCourse Lua binding. [AJ]

* [ScreenEdit] Allow changing the Beat 0 Offset, Music Sample Start, and
Music Sample Length via Edit Song Info menu. [Wolfman2000]

* [ScreenSelectMusic] Added NullScoreString metric. [AJ]

* Use lua for all primary score keeping. Course modes right now still use the
old fashioned system. [TeruFSX, Wolfman2000]

* [Player] Force hold judgments to take place before setting the score.

* [NotesLoaderSSC, NotesWriterSSC] Add the #LABELS tag. This is meant for step
editors to label different parts of their stepcharts. Use Control + , or . to
jump to different labels made. [Wolfman2000]

sm-ssc Changelog
The sm-ssc changelog mostly deals with source code-related changes,
as theme changes happen at a faster pace.

Changes are grouped by date.
Not all changes are documented, for various reasons.
(Some changes were later reverted, other changes relate to things that aren't
supported but exist anyways.)

sm-ssc v1.2.5 | 20110501

* [ScreenOptions] Renamed "ScreenOptions LineHighlight" to "ScreenOptions
LineHighlight P#", making it load per-player. [AJ]
* [OptionRow] Added Text param to RefreshMessageCommand. [AJ]
* [ScreenOptions] Added SelectMultipleMessageCommand, ChangeValueMessageCommand. [AJ]
* [UnlockEntry] Added GetCourse, GetCode Lua bindings. [AJ]
* [UnlockManager] Added UnlockRequirement_NumUnlocked enum. [AJ]
* [Song] Added Origin (#ORIGIN tag in .ssc) [AJ]
* [UnlockManager] Added GetPoints(UnlockRequirement),
GetPointsForProfile(Profile,UnlockRequirement) Lua bindings. [AJ]
* [Course] Added #SCRIPTER tag and GetScripter Lua binding. [AJ]

* [BeginnerHelper] Various changes: [AJ]
* Changed Player_#X/Y metrics to Player#X/Y metrics for consistency.
* Converted the background to an AutoActor.
* [BPMDisplay] Added SetFromSong Lua binding. [AJ]

* [CourseLoaderCRS] Fixed loading of Player's Best/Most Played courses,
probably others too. [AJ]
* [ScreenGameplaySyncMachine] Fixed a crash when entering
ScreenGameplaySyncMachine as Player 2. (Fixes issue 127) [AJ]
* [ScreenOptionsEditCourse] Fixed a crash when going to the first row.
(Fixes issue 235) [AJ]
* [SongManager] Added GetCourseGroupNames Lua binding. [AJ]

* [Banner] Added ScrollSpeedDivisor metric; controls the scroll speed of
Random/Roulette banners. [AJ]
* [FadingBanner] Added BannerRoulette, BannerRandom, and Banner(Custom Item Name) commands. [AJ]

* [ScreenSelectMusic] Changed "Percent Frame p1" to "PercentFrame P1" for consistency. [AJ]
* [LifeMeterBattery] Convert Frame to an AutoActor. [AJ]
* [ScreenEvaluation] Added RollingNumbersClass metric, allowing for the ability
to change which RollingNumbers class is loaded. [AJ]
* [ScreenGameplay] Added SongNumberFormat metric. [AJ]

* [CourseContentsList] Fix a crash. [AJ]

* [PlayerOptions] Added UsingReverse() Lua binding (automatically tests GetReverse() == 1) [AJ]
* [PlayerState] Added GetCurrentPlayerOptions() Lua binding [AJ]

* [ScreenSelectMusic] Made score frame into an AutoActor, changed the filename
from "score frame p1" to "ScoreFrame P1" for consistency with other elements. [AJ]

* [ScreenEdit] Allow modifying the #DISPLAYBPM traits in the editor. Look in
Edit Song Info to find it. [Wolfman2000]

* Fix a crash (issue 247) when exiting Practice mode from dance-solo,
dance-threepanel, and popn-nine (all of which can only have one player).
If you find any other modes this crashes on, let us know. [AJ]

* [ScreenEdit] Changed sample playback button to L. [AJ]
* [ScreenGameplay] Announcers say combo messages again. [AJ]

sm-ssc v1.2.4 | 20110327

* Fix Gameplay Footer not showing up over arrows. [AJ]

* [NotesLoaderSM, NotesWriterSSC] Officially add the #WARPS tag. The negative
tricks of the past are now officially standardized. Please tell us about
files which have broken sync or are otherwise unplayable/incorrect.
[AJ, theDtTvB, Wolfman2000]

* [PlayerOptions] Added SetNoteSkin(string) Lua binding. [AJ]
* [PlayerOptions] Tons of new Lua bindings. See the Lua documentation for all
of them, there's too many to print here. [AJ]

* [ScreenEdit] Fix bug number 222, where Steps disappeared if they weren't
saved. [AJ, Wolfman2000]
* [ScreenOptionsEdit] Fix bug number 186, where people could try to edit or
share songs when they didn't have any. [Wolfman2000]
* [ScreenEdit] Add a metric to switch Ctrl+Up and Ctrl+Down. This is for
easier compatibility with prior versions of SM. It defaults to false.
* [ScreenEdit] Fix bug number 65, where Steps disappeared if they were
involved with the Compress or Expand options. [Wolfman2000]

* [NotesLoaderSMA] Allow for preliminary support of loading SMA files. This
will become better once Split Timing is in place. [Wolfman2000]
* [NotesLoaderBMS] Improve BMS loading: [theDtTvB]
* Ignore time signatures before the notes for the steps to be more
* Load BPM changes properly. Many songs with BPM changes no longer freeze.
* [Player] Stop playing the keysound when letting go of hold notes. [theDtTvB]
* [NoteDataUtil] Make keysounded notes that can't be inserted when reducing
number of tracks autokeysound, means less missing sounds when playing
7-key BMS on dance-single. [theDtTvB]

* [NotesWriterSM] Allow for either the #DESCRIPTION or #CREDIT tags to be used
for the .sm format's description token. [Wolfman2000]
* [ScreenEdit] Add Tap Note Cycling to allow inputting all of the taps. Use the
n and m keys to switch between taps, mines, lifts, and fakes. The way to make
holds and rolls are still the same as before; hold 1-0 (plus shift for rolls)
and then drag up or down as needed. [Wolfman2000]

sm-ssc v1.2.3 | 20110323

* [MusicWheelItem] Added Label param, renamed SongGroup param to Text. [AJ]

* [WheelBase] Add GetCurrentIndex and GetNumItems Lua bindings. [AJ]
* [ScreenSelectMusic] Add GetMusicWheel Lua binding. [AJ]
* Added custom MusicWheel items. [AJ]
* [MeterDisplay] Add Lua binding. "Allow setting and changing the width
dynamically. Phase out the "StreamWidth" node property; set it with
SetStreamWidth instead." [Glenn Maynard]

* Added #COMBOS tag to the .ssc format. [Wolfman2000]

* [ScreenGameplaySyncMachine] Allow themers to use either .ssc or .sm files. [AJ]
* [ScreenHowToPlay] Allow themers to use either .ssc or .sm files. [AJ]
* [ScreenGameplay] Footer to prevent 'arrow overflow' [Midiman]

* Allow Tickcount Segments to have a value of 0 to better replicate some
charts in the Pump series. [Wolfman2000]

* Add Fakes to the RadarCategories. [Wolfman2000]
* [ScreenEdit] Display the number of Lifts and Fakes in a stepchart in the
editor. These use metrics, so the lines can be made empty in themes that
require them. [Wolfman2000]
* [ArrowEffects] Allow for dizzy hold heads. Again, enable at your own risk.
* [StepsDisplay] Allow for displaying the chart artist in a separate field.
This defaults to false for the moment. [Wolfman2000]
* [PlayerOptions, NoteDataUtil] Add transform mods for removing lifts and
fakes from the Notedata. This mods can disqualify of course. [Wolfman2000]

* [PlayerState] The old GetPlayerOptions() binding is now GetPlayerOptionsString().
There is a new GetPlayerOptions() binding that gets the PlayerOptions object,
which has a GetNoteSkin() binding (and hopefully more in the future). [AJ]

* [ScreenOptionsToggleSongs] The structure of this screen has now changed.
Before, it contained the entire list of songs. Now, the main page
(ScreenOptionsToggleSongs) holds the groups, and a sub-page
(ScreenOptionsToggleSongsSubPage) holds the songs in each group. [AJ]

* Add lifts and fakes to all Pump noteskins. [Daisuke Master, Wolfman2000]

* [NotesLoaderSSC] Allowed reading of #NOTES2 again. [AJ]

Added GetChartStyle() Lua binding. [AJ]

* [ScreenEdit] Display the Player Number for Routine mode. [Wolfman2000]
* [ScreenEdit] Add format string metrics for the right hand side of the editor.

* Reverted ArrowSpacing back to 64 (which was the previous value).
Please re-adjust your speed mods accordingly. [AJ]
* [OptionRow] Added GetLayoutType() and GetSelectType() Lua bindings. [AJ]
* Fix .sm-style edits not being loaded. [AJ]
* [Common] Added OperatorMenuScreen metric. [AJ]

sm-ssc v1.2.2 | 20110220

* [BPMDisplay] Added FormatString metric. [AJ]
* [GrooveRadar] Changed "Label#OffsetX/Y" metrics to "Label#X/Y". [AJ]
* [GrooveRadar] Fixed RadarFrame from not running commands on RadarFrame base. [AJ]
* [GrooveRadar] Removed RadarFrameTweenOnScreen and RadarFrameTweenOffScreen metrics. (Themers: Use RadarFrameOnCommand and RadarFrameOffCommand instead) [AJ]
* [GrooveRadar] Removed non-working PreDelayOnCommand, PostDelayOnCommand. (Themers: Use Label#OnCommand and Label#OffCommand instead.) [AJ]
* [ScreenOptions] Renamed "GetCurrentRow" Lua binding to "GetCurrentRowIndex". [AJ]
* [OptionRow] Added FirstItemGoesDown(), GetChoiceInRowWithFocus(PlayerNumber),
GetName(), GetNumChoices(), GetRowTitle(), HasFocus(PlayerNumber),
and OneChoiceForAllPlayers() Lua bindings. [AJ]
* [ScreenOptions] Added Change message (params: RowIndex, ChangedToExit). [AJ]
* [ScreenOptions] Added FocusedItemEndsScreen(PlayerNumber) and GetOptionRow(int)
Lua bindings. [AJ]
* [ScreenPlayerOptions] now derives from ScreenOptions, allowing it to get the
new ScreenOptions bindings. [AJ]

* [WheelBase] Added SetOpenSection Lua binding. [AJ]

* Allowed refreshing of Fonts again. [AJ]

* Added #CHARTSTYLE to .ssc format, mainly meant for Pad/Keyboard distinctions. [AJ]

* Life Difficulty 4 is now as difficult as Life 6 was. [AJ]
Change name of the life difficulty options:
Old: 1, 2, 3, 4, 5, 6, 7
New: 1.2, 1.0, 0.8, 0.6, 0.4, 0.33, 0.25

* [PlayerOptions] Added metrics to allow changing how often random modifiers
activate in the proper setting. At this time, the mods to be activated have
NOT been changed. [Wolfman2000]
* [ArrowEffects] Allow the Boomerang, Expand, Tipsy, Drunk, Tornado, Beat, and
Mini modifiers to be customized by metrics. As usual, change at your own
risk here. [Wolfman2000]
* Started the process of doxygen'ing the code. Goodness knows we need more
documentation on here. For the most part, don't expect comments on
particular files, though this may change. [Wolfman2000]
* [TimingData] Fix getting a Stop or Delay at a row if one of each occupies
the same row. This may need some extra testing. [Wolfman2000]

* Introduced the .ssc file format for future features and expansion. All .sm
files will still work, and will still be generated when saved in the editor.
At this point, saving to the DWI format is being deprecated. [Wolfman2000]

sm-ssc v1.2.1 | 20110210

* Had to go back on the ScreenNetSelectMusic controls commit. My apologies. [AJ]

* [ScreenOptionsMemoryCard] Added three strings: "(no label)", "size ???", and
"%dMB". [AJ]
* [ScreenSelectMusic] Added RouletteTimerSeconds metric. [AJ]
* [ArrowEffects] Added QuantizeArrowYPosition metric. [AJ]

* [ScreenNetSelectMusic] Added MusicWheelType metric. [AJ]

* [Song] Added IsDisplayBpmRandom Lua binding. [AJ]

* [ScreenSelectMaster] Only run cursor commands on players if they exist. [AJ]

* [ScreenEdit] Move editing Timing Data to their own mini menu. [Wolfman2000]
* Implement #TICKCOUNTS tag for better checkpoint behavior.
This officially deprecates the CheckpointsUseTimeSignatures metric for
the CheckpointsUseTickcounts metric. [Wolfman2000]
* [NoteField] Add metrics for more flexible TimingData labels. [Wolfman2000]

* [ScreenEdit] Allow editing TimeSignatureSegments one fractional half at
a time. [Wolfman2000]

* [ArrowEffects] Allow modifying modifier characteristics in the metrics.
At present, Blink, Boost, Brake, and Wave can have modifications.
* [Player] Allow Combo Stopped message to be flexible via metrics. The
default is 50, as it was before. [Wolfman2000]
* [Player] Allow the default attack times for both random and mine attacks
to be changed. [Wolfman2000]
* [NoteField] Allow for adjustable fade fail time (for AJ). [Wolfman2000]
* [MenuTimer] Allow the hurry up transition to be adjusted. [Wolfman2000]
* [MusicWheel] Added RouletteColor, RandomColor, and PortalColor metrics. [freem]
* Fix a bug with VisualDelaySeconds where choosing -1 would lead to it being +1. [freem]

* [PlayerStageStats] Change score to an unsigned long from a signed int. [FSX]
* Noteskin changes. [Daisuke Master]
* [SpecialScoring] MIGS scoring, improved SN and SN2 scoring. [FSX]
* [RageFile] Added ReadBytes() Lua binding. [FSX]
* [NetworkSyncManager] Added CloseConnection() Lua binding. [freem]
* [ScreenTextEntry] Added Load(TextEntrySettings) Lua binding. [freem]
TextEntrySettings is implemented similar to the Attributes in BitmapText.
local teSettings = {
SendOnPop = "", -- ScreenMessage to send on pop (optional, "SM_None" if omitted)
Question = "", -- The question to display
InitialAnswer = "", -- Initial answer text
MaxInputLength = 0, -- Maximum amount of characters
Password = false, -- Mask character input (optional)
Validate = nil, -- Validation function; function(answer, errorOut), must return boolean, string.
OnOK = nil, -- On OK; function(answer)
OnCancel = nil, -- On Cancel; function()
ValidateAppend = nil, -- Validate appending a character; function(answer,append), must return boolean
FormatAnswerForDisplay = nil, -- Format answer for display; function(answer), must return string

* [ScreenManager] Added ReloadOverlayScreens() Lua binding. [freem]

* [Character] Added GetDisplayName Lua binding. [freem]
* Make sure that DELAYS come first if STOPS share the same beat. [Wolfman2000]

* Add the semicolon and apostrophe keys as alternatives to the Page Up and Page
Down keys in the editor, mainly for laptop users. [Wolfman2000]
* Removed Song sample length limitations. [freem]
* Removed hard-coded values from the Step Editor. Now TimeSignatures are used
in place of these former constants. [Wolfman2000]
* [RoomWheel] Various metrics changes: [freem]
* Removed TextWidth/DescWidth metrics.
* "Desc" is now "Description". (DescX -> DescriptionX)
* Removed hardcoded commands (shadowlength,0;maxwidth,[max width metric];halign,0).

sm-ssc v1.2 | 20110107

* Fix PrefsManager init list not being in order [vyhd]
* Add hack to ThemeManager to make GetThemeName() work intuitively for Scripts dirs [vyhd]
* [SongManager] Check the root Songs/ folder for extra stage course files. [freem]
* Make routine mode use ScreenGameplayShared instead of ScreenGameplay. [freem]
* Make pump-routine spacing the same as pump-double spacing. [FSX]

* [SpecialScoring] Fix some minor issues [FSX]
* New pump routine noteskins [cesarmades]

* Fix routine mode saving in the editor. [Wolfman2000]

* [Screen] Added HandleBackButton metric; useful for custom menus that need to
use the Back button for more user-friendly canceling. [freem]

* [StepsDisplay] Make the StepsType react to SetMessage as well. [freem]

calls with ActorUtil::LoadAllCommandsAndSetXY(). Fixes an odd bug I ran into
during the porting of DDR 5th Mix. [freem]
* [ScreenInstallOverlay] Added bare DownloadFinished message. [freem]

* [ScreenHowToPlay] Have Character ignore the Miss steps instead of trying to
hit them. [freem]

* [ScreenHowToPlay] Added CharacterName metric, which will force the Character
that shows up. [freem]

* [ScreenEdit] Added GetEditState Lua binding. [freem]
* [ScreenNetSelectMusic] StepsDisplay changed to load from StepsDisplayNet. [freem]
* [RoomWheelItem] Added OverPart (just like in MusicWheelItem). [freem]
* [SongManager] Added GetSongRank(Song) Lua binding. [freem]
* Changed Steps picking logic in ScreenGameplaySyncMachine; now playable Steps
are chosen, instead of whatever NoteData happens to be first.
Also added pump-single data to ScreenGameplaySyncMachine [freem]
* [Banner, FadingBanner] Various changes: [freem]
* Removed (now unused) All Music banner.
* Fixed swapped ScrollRandom and ScrollRoulette metrics.
* [Banner] Added GetScrolling(), GetPercentScrolling() and
SetScrolling(bool,float) Lua bindings.
* [FadingBanner] Added GetLatestIndex() Lua binding. [freem]

* Fixed Life difficulty scale being 0. [Daisuke Master]

* Added Banners for most SortOrders. (Group is excluded (song group banners
still work), as is Recent (which has no sections).) [freem]

* Added Shift+Ctrl+F2 shortcut for reloading overlay screens (and metrics) [freem]

* SM5SVN r28586: Only unload fonts if not used by the next screen. [shakesoda]
* [ScreenSelectMaster] Fix DoSwitchAnyways to actually work again.
* [ScreenInstallOverlay] Installs won't jump to SelMusic on Gameplay or System
Menus (e.g. Edit Mode) anymore on download completion. [freem]

* [Actor] Add bezier. (_fallback/02 Actor.lua) [FSX]
* [MessageManager] Added MenuStartP1 and MenuStartP2 messages. [freem]
* [ScreenSelectMaster] Broadcast MenuStartP# messages; allow themers to handle
the MenuStartP# messageitems. [freem]

* [WheelNotifyIcon] add BlinkPlayersBest metric. [freem]
* [GameCommand] Add GetScreen, GetSteps, GetCourse, GetTrail, and GetCharacter
Lua bindings. [freem]
* [StreamDisplay] Remove UseThreePartMethod.
* [Style] Add ColumnsPerPlayer and NeedsZoomOutWith2Players bindings. [freem]
* [Profile] Add GetLastUsedHighScoreName Lua binding. [freem]

* [MusicWheelItem] Add OverPart. [freem]
* [Profile] SetCharacter(sCharID) Lua binding added. [freem]
* [GameState] GetCharacter(PlayerNumber) and SetCharacter(PlayerNumber,sCharID)
Lua bindings added. [freem]

* [Sprite] Added SetAllStateDelays(fDelay) Lua binding. [freem]
* [MusicWheelItem] Added metric commands to NormalPart/ColorPart. [freem]

* Transplanted file download code from SM4 into sm-ssc.
sm-ssc can now handle the stepmania:// url protocol. [Chris Danford, freem]

* [RollingNumbers] Added Load(sMetricsGroup) Lua binding. [freem]
* Modifications to pump mode spacing. [Daisuke Master]
* Add eval song data for songs with no banner. [Midiman]

* [EditMenu] Enable the EditMenu to be themed more extensively. [freem]
Splits out the rows into Label and Value.

* [MusicWheelItem] Gave NormalPart/ColorPart names, so metrics can be used to
manipulate them. [freem]
* [MusicWheelItem] add Color param to SetMessage. [freem]
* Added --with-sse2 configure flag for SSE2 heuristic optimizations. [vyhd]
* Added 03 IniFile to start building new userprefs/themeprefs API. [vyhd]
* [EditMenu] Converted old non-specific metrics to more specific metrics. [freem]
{Metric Changes}
SongBannerWidth,SongBannerHeight -> SongBannerOnCommand
GroupBannerWidth,GroupBannerHeight -> GroupBannerOnCommand
RowLabelsX -> Label#X
RowLabelOnCommand -> Label#OnCommand
RowValue#X -> Value#X
RowValueOnCommand -> Row#OnCommand
{Metric Additions}
SongBannerChangeCommand/GroupBannerChangeCommand - runs when song/group
banner is changed.
Label#GainFocus/LoseFocusCommand and Value#GainFocus/LoseFocusCommand - runs
when the Label and Value gain/lose focus.

* Increased default scrolling speed. Modifies how the speed mods work. [shakesoda]

sm-ssc v1.1 | 20101120

* Fix issues with RequireStepOnHoldHeads not working properly if the W5
window is zero. [FSX]

* Add SetScore Lua binding to PlayerStageStats. [FSX]
* Don't increase combo on AvoidMine if AvoidMineIncrementsCombo is false. [FSX]
* Change to use ffmpeg 0.6 under Linux. [FSX]

* Attempt to fix issues with full combos occuring when checkpoints
have been missed. [FSX]
* Fix NotesLoaderKSF. [Daisuke Master]

* Add a hack allowing all courses to play, regardless of missing noteskins [wolfman2000]
* Restore ITG behavior, allow survivals to be won. [wolfman2000]

sm-ssc v1.0 "final" | 20100910

* [ScreenNetSelectBase] Metric name changes: UsersDX -> UserSpacingX,
UsersAY -> UsersLine2Y
* [ScoreKeeperNormal] add MineHitIncrementsMissCombo and
AvoidMineIncrementsCombo metrics. [FSX]

* [StepsDisplay] Make everything else (that isn't the frame) react to the
Set message.

* [SongManager] Added SetPreferredSongs(string) and SetPreferredCourses(string)
Lua bindings. The files have to be named "SongManager <name>.txt"
Example: SONGMAN:SetPreferredSongs("mysongs.txt") calls the file
"SongManager mysongs.txt". [cerbo]

* Make Ctrl+[letter] work as expected in Artist sort. [Midiman, AJ]

* Add [ArrowEffects] DrawHiddenNotesAfterReceptor metric [Daisuke Master]

sm-ssc v1.0 Release Candidate 2 | 20100822

* Add roll and twirl from OpenITG [vyhd]
* Ignore invalid notes in KSF files [Daisuke Master]

* [GraphDisplay] Allow Line to be themed via metrics.

* [GameCommand] Remove pushscreen command
* [ScreenOptionsMasterPrefs] Reset Judge and Life values to the ones used in SM4
* [ScreenNetEvaluation] add Score, Grade, PlayerOptions params to
UpdateNetEvalStats message
* [PlayerState] add GetHealthState Lua binding
* [Player] fix a warning [shakesoda]
* [Player] Change combo coloring logic in course mode:
"PERCENT_UNTIL_COLOR_COMBO refers to how long through the course the combo
color should appear (scaling to the number of songs). (This may not be
desired behavior, however.)" Let me know if I should add an alternate way to
specify course combo color logic. -aj
* [ScreenRanking] Cleanup and un-hardcode shadowlength
* [ThemeManager] add GetSelectableThemeNames Lua binding; returns a table of
themes as strings.

* r28482: number measures starting with 0 (makes the mental conversion
between the .SM and the editor much easier) [Chris Danford]

* [Player] Implement a hack for miniholds until a proper solution can be found.
* [ActorSound] Fix Play() so that stop and pause are usable. [Daisuke Master]

* r28455: fix EFFECT_BOUNCE, give particles a start position uniformly
distributed across the screen [Chris Danford]
* r28456: change flip effects to use degrees, not radians [Chris Danford]

* Replace hardcoded rainbow effect with UserTier02OrBetterCommand.
* Added Difficulty and Steps param to UpdateNetEvalStats message. The
beginning of custom-themable online stuff begins.

* Started to port SampleMusicPreviewMode from ScreenSelectMusic.
* Changed MusicWheel metrics to read from OnlineMusicWheel instead.
* Added section, roulette, and random music (not used yet).
* Stop the music when reaching a section.

* [ScreenDebugOverlay] force sm-ssc to read the OnCommand for ButtonText,
FunctionText and PageText.

* [ScreenManager] add AddNewScreenToTop Lua binding.

* [ScreenDebugOverlay] add PageStartX and PageSpacingX metrics.

* sm5svn r28402: Fix compile on some systems. [Steve Checkoway]

* Add "package" to StepMania's Lua. [shakesoda]

* Allow editing of a Song's #GENRE tag within the editor.

* Fix |D| tag handling in Direct Move KSFs [Daisuke Master]
* Fix up alternate mappings for kb7 [shakesoda]
* [MusicWheel] Add RemindWheelPositions metric. [Daisuke Master]

* [MusicWheel] JumpToNext/PrevGroup functions tweaked [juanelote]
* [MusicWheel] Added OnlyShowActiveSection metric. Only shows one group at
time. Use the Next/Previous Group codes to switch groups. [Daisuke Master]
* Allowed group changing via GameButtons as well. [Daisuke Master]
* [SongManager] Added GetSongGroupByIndex function. [juanelote]
(to-do: Give this a Lua binding. -aj)

sm-ssc v1.0 Release Candidate 1.5 | 20100723

* Major tweaks to notesloaderksf, |E| Tags are working as they should now
[Daisuke Master]
* More column spacing values edited for Pump [Daisuke Master]

* Allow noteskins to use animation based on beats or seconds via a new noteskin
metric: AnimationIsBeatBased. [Daisuke Master]
* Widen the lane for the middle note in kb7. [shakesoda]

* Change screenshot naming format from "screen#####" to "YYYY-MM-DD_HHMMSS".
This should solve an issue where screen00000 was getting written multiple
times for unknown reasons.
* Make EnteredPrevSteps/EnteredNextSteps codes only trigger if
* [ScreenGameplay] Added UnpauseWithStart metric. [Daisuke Master]

* r28385: Fix memory card port handling on newer kernels. There's got to be a
better way to parse out a USB device's connection path. [Glenn Maynard]
* r28386: Fix partitioned USB devices not always being seen correctly due to
race condition with the kernel partition scan. The sleep was a hack to work
around this issue which doesn't work in all cases. [Glenn Maynard]

* Added Menu(Left/Right/Up/Down)(P1/P2) messages to ScreenOptions.
* [ScreenSelectMusic] Add ChangeStepsWithGameButtons, PreviousDifficultyButton,
and NextDifficultyButton metrics, allowing the themer to not have to use
CodeDetector. [Daisuke Master]

* Fix spacing of various pump modes. [Daisuke Master]

* r28376: use GetProcessImageFileName instead of GetModuleFileNameEx;
it works in more cases, eg. when losing focus to the taskbar [Glenn Maynard]

* Modify Autoplay/AutoplayCPU's tap note offset code to generate proper offsets
(as opposed to offsets between -0.1f and 0.1f, which makes Selling Out Made
Simple 2's protiming look weird).

* [ScreenSelectProfile] Transplant menu input functions from ScreenSelectMaster.
Now you no longer have to rely on stuffing the directions into the Codeset.
(Of course, you still have to handle Start and Back yourself.)

* [ScreenSelectMusic] add a code for closing the current folder from any
location (a la DDR X2).

* [Player] add RequireStepOnMines metric. This allows DDR's Shock Arrows to
be emulated. (currently incomplete) [FSX]

* r28374: add GetBestFullComboTapNoteScore [Chris Danford]
(This replaces the IsFullComboW* bindings, which we never fully took in. -aj)

* [Course] add GetCourseEntries() Lua binding.
* [Trail] add GetEntries() Lua binding.
* [ScreenTextEntry] replace hardcoded underscore and double space with
AnswerCaret and AnswerBlank strings.

* r28372: use MercifulDrain logic for MercifulBeginner [Chris Danford]
* r28373: don't override user scroll in courses [Chris Danford]

sm4svn commits:
* r28367: fix resampler noise [Glenn Maynard]
* r28368: fix get_readable_ranges error handling [Glenn Maynard]
* r28369: don't use fprintf from the crash handler [Glenn Maynard]
* r28370: work around not all recursive crashes being caught [Glenn Maynard]
* r28371: use /proc weirdness to make the crash handler work even after
the binary has been deleted or replaced [Glenn Maynard]

* [ScreenDebugOverlay] add new metrics: LineStartY, LineSpacing,
LineButtonX, LineFunctionX.
* Fix an odd mapping issue in dance mode where keypad 7 and 9 would control
up/down as well as upleft/upright. (Numpad 8 is now up and numpad 2 is now
* Step editor can now process meters from 0-25.
* MAX_METER upped to 35.

* Fix an issue involving setting a group via GameCommand and a metric ([MusicWheel]
UseSectionsWithPreferredGroup=false). Previously, this situation would ignore
the group and show all songs. Instead, it has been fixed to work as intended,
only showing the songs in that group. (A DDR 4th Mix theme is feasible again.)
* If [MusicWheel] UseSectionsWithPreferredGroup=true and a song group is set
via GameCommand, the wheel will now scroll to the first song in the desired
group, instead of the very first wheel item.
* [CourseUtil] make the "All Songs" course use the current theme's
Graphics/Banner all music file.

sm-ssc v1.0 Release Candidate 1 | 20100627

* [NotesLoaderKSF] Support reading of #PLAYER and #MUSICINTRO/#INTRO tags in
KSF files. [based on code by Aldo_MX]
* Adjust KB7 draw order which still seems wrong, change noteskin.
Use default-p2 and join as player 2 to play with original spacing. [shakesoda]

* Fixed a bug with urlnoexit GameCommand always returning the "Could not
launch web browser" message.
* Removed some untested/non-working Model Lua bindings.
* Only autogen Medium difficulty steps for Routine modes.
* Added PlayerState:GetPlayerOptionsArray() Lua binding.
* Revert a commit from 20091219 regarding profile loading on ScreenSelectMusic.

* Implement the last remaining SampleMusicPreviewMode: StartToPreview.
This one requires [ScreenSelectMusic] TwoPartConfirmsOnly=true in the
metrics to work correctly.
* Added Actor:Real(), which makes graphics their true size at
any resolution. [shakesoda]

* [HighScore] add GetGrade() Lua binding.

* Allow RShift+Print Screen to take uncompressed screenshots.

* <del>Attempt to fix screenshot numbering bug. Seems to work, if testing is
any indication.</del> (Did not work.)

* sm4svn r28359-r28364. [Chris Danford]
Notable commit logs:
* r28359: "fix BackgroundChange color values being written with commas.
Commas are a reserved character that seprate values in a tag.
Caret was used to separate RGBA values in a color in this case and
NotesLoaderSM already handles that."
* r28361: "normalize colors in BGCHANGES to HTML colors, to fix weird escaping"

* Fix Rave/Battle crashes, allowing it to work again.
* Chris Danford changed galopin's code for detecting pump mats.
* [Actor] add basezoom, basezoomz, GetBaseZoomY(), GetBaseZoomZ(), and
GetGlow() Lua bindings
* [Screen] add GetScreenType() Lua binding.
* howl's patch for fixing LowLevelWindow

* sm4svn r28359: fix BackgroundChange color values being written with commas.
Commas are a reserved character that seprate values in a tag. Caret was
used to separate RGBA values in a color in this case and NotesLoaderSM
already handles that. [Chris Danford]

* Add Windows 7 and Windows Vista as identified OS versions in DebugInfoHunt.

* [MusicWheel] If AutoSetStyle is on and Autogen is off, some songs with valid
steps may be missing from the wheel. Re-add them by checking for every
playable StepsType when AutoSetStyle is on.
Fixes issue 147:
* Fix a crash that occured when changing themes that had differing numbers
of song/course group colors. (Yes, finally.)

* [Actor] add addrotationx, addrotationy, addrotationz bindings/commands
* [GameCommand] Don't allow battle/rave with Routine
* Reordered ScreenEdit's main menu (escape) slightly.
* Expand various floats from 3 decimal places to 6 (experimental) [Midiman]
* [BPMDisplay] add RandomText metric for theming the "..." that appears when
BPMs don't cycle and MinBPM == -1.

* [MusicWheel] added UseSectionsWithPreferredGroup metric
(allows sm-ssc to display all song groups if you use the songgroup
GameCommand, instead of no groups.)
* [Character] add GetCharacterDir() and GetCharacterID() Lua bindings.

sm-ssc v1.0 Public Beta 4 | 20100531
The letter grade tiers have been reset to the old SM4CVS/3.9 values. You
should probably reset your scores to maintain consistency. (Though if you
used themes with their own scoring system, you never had consistency in the
first place. :s)

* [Trail] Add GetTrailEntry() Lua binding.
* [TrailEntry] Allow TrailEntry to push itself, making Lua bindings possible.
TrailEntry's Lua bindings include GetSong(), GetSteps(), IsSecret() and

* Add Direction param to ChangeStepsMessage.

* Enable upper diagonal keys for Positive Gaming Impact dance mat [corec]

* [ScreenSelectProfile] Actually load player's last used settings.
* [ScreenNetEvaluation] Don't assume every theme has a Grade display and/or
Points display; This fixes crashes in themes which don't have them when
people go to view another player's stats.
* [ScoreKeeperNormal] add [Gameplay] MaxScoreToIncrementMissCombo metric.
* [Course] add GetCourseDir(), HasBackground(), IsAnEdit() Lua bindings.
* [GameManager] rework how the IsGameEnabled() Lua binding works:
it now takes a string as a parameter.
* [ScoreKeeper] allow ScoreKeeperRave to be used as a ScoreKeeper.
* [ThemeManager] add GetCurLanguage() Lua binding.

* [CourseLoaderCRS] up the maximum size of an edit course from 30KB to 32KB;
allow the #BACKGROUND tag to be read from .crs files.
* [HelpDisplay] new TipSwitchTime metric
* [PrefsManager] add PreferenceExists(sPrefName) Lua binding;
removed now-unused ShowSelectGroup preference.
* [ScreenSelectMusic] make the ScoreDisplay 0 out if nothing is selected.

* The great Lua binding addition begins...
* [Actor] GetHAlign(), GetVAlign()
* [LifeMeterBattery] GetLivesLeft()
* [MemoryCardManager] GetCardLocked(pn), IsNameAvailable(pn)
* [MenuTimer] GetSeconds()
* [PlayerStageStats] GetRadarPossible(), GetRadarActual()
* [ProfileManager] LastLoadWasFromLastGood(pn), LastLoadWasTamperedOrCorrupt(pn)

* [AnnouncerManager] Lua bindings get added to AnnouncerManager, which now
exists as ANNOUNCER. New bindings:
ANNOUNCER:DoesAnnouncerExist(sAnnouncer) - returns a bool
ANNOUNCER:GetAnnouncerNames() - returns a table of strings
ANNOUNCER:GetCurrentAnnouncer() - returns a string
ANNOUNCER:SetCurrentAnnouncer(sAnnouncer) - Sets the announcer if it exists.

* [ScreenEvalation] Graphic "time label" renamed to "TimeLabel" for the sake
of naming consistency.
* Add GetOSName() binding. Returns a string representing the current OS.
* Allow Negative stops to "work" again in Quirks Mode.
* [ScreenSelectMaster] Fix "THE" cursor crash by testing if the cursor object
is actually there (a.k.a. not null). It should be noted that cursors can
still crash, however. (yay bugs)

* [NotesLoaderSM] Only apply the old .sm format difficulty hacks if
difficulty == Difficulty_Hard.
* [TimingData] add HasNegativeBpms() Lua binding.

* [PaneDisplay] Show fallback values when Song/Course is null.

* [ScreenSelectMusic] Make it so changing difficulty also cancels
TwoPartSelection if TwoPartConfirmsOnly.

* [ScreenGameplay] Un-hardcoded the diffuse command on CourseSongNumber.

* Add dance-threepanel StepsType. Thanks to kurisu for the original 3.9 code.
* XMode mod added, thanks to v1toko/StepNXA.
* [Song] add GetDisplayBpms() [a table of two floats], IsDisplayBpmSecret(),
IsDisplayBpmConstant() [both bools] Lua bindings

* Fixed an issue with StepsDisplayList crashing if more than 21 difficulties are
playable. This allows Technomotion to work with AutoSetStyle and Autogen on.

sm-ssc v1.0 Public Beta 3 | 20100430
There's an important change for themers that needs to be noted:
We have renamed two screens in _fallback to match StepMania's names.

ScreenSelectPlayMode (previously the select style screen)
has been renamed to ScreenSelectStyle.

ScreenSelectPlayStyle (previously select play mode) has been renamed
to ScreenSelectPlayMode.

This change effects branches (_fallback/02 Branches.lua) and metrics, so if
you're not handling the two screens yourself, you will probably have to change
some things around in your theme.

* [GameState] added DisablePremiumInEventMode metric.

* [Course.cpp] add a few Lua bindings to CourseEntry:
* IsSecret - bool
* IsFixedSong - bool
* GetGainSeconds - float
* GetGainLives - int
* GetNormalModifiers - string
* GetNumModChanges - int
* GetTextDescription - string
* Re-add ScreenGameplaySyncMachine to project files that were missing it.

* libpng upgraded from 1.2.7 to 1.4.1 (Windows, Mac, BSD)
(libpng upgrade was not carried out for Xbox, but that version does
not run anyways, so it is no operational loss.)

* Convert |T| values in KSF files to TimeSignatures for [Player]
CheckpointsUseTimeSignatures metric.

* Add SampleMusicPreviewMode_LastSong, which gives similar behavior to
DDR Extreme. There is a hack for the random music based on Takuya's
DDR Extreme theme; I am unsure if this is accurate behavior or not. [AJ]
* Allow MusicWheelItem Random and Portal to have different graphics
from Roulette.
* Added Song:HasAttacks() Lua binding.

* Finally get rid of PLAYER_COLOR. ColorP1Command and ColorP2Command no
longer exist. The last things that were being diffused with player color
in the code included text in the Oni score display and ScreenSelectMusic score.
I'm sure you can diffuse ScoreDisplayOni Numbers, but I can't seem to find any
references to them in the metrics of any released theme. [AJ]

* [SongManager] Added GetSongGroupNames(), GetSongsInGroup(string) Lua bindings

* Fixed an issue where course banners were always cached, regardless of setting.

(Not jokes)
* NextSong/PrevSong now work when TwoPartSelection=true and
TwoPartConfirmsOnly=true on ScreenSelectMusic. A new message
("TwoPartConfirmCanceled") was added to catch when this happens.

* Added Lifts to PaneDisplay. (StepMania 3.9+/Plus Redux had them)

sm-ssc v1.0 Public Beta 2 | 20100331

* Added SONGMAN:ShortenGroupName(string) Lua binding

* sm4svn r28340: Don't call GetFirstCompatibleStyle if numSidesJoined == 0
(ScreenContinue) [Chris Danford]
* [ScreenSelectMusic] TwoPartTimerSeconds metric added

* [BPMDisplay] make the "Various" text a theme-able string.
* Allow ';' to start a comment in .ini files
* [MenuTimer] Attempt to fix dialogs that come up when changing themes
(where one theme's warning timer starts higher than another).
* [Player] PercentUntilColorCombo metric added. [Wolfman]
(float value in the range of 0..1)

* Fixed a crash caused by switching themes in StepMania. This crash was related
to the song group colors, which weren't getting reloaded on theme switch.
Since themes use different numbers of group colors... crashes! Not anymore.

* Fix a rounding bug that causes resolutions like 639x480 (4/3) and 853x480
(16/9); now they should be 640x480 and 854x480 as expected. Applies to
screenshots as well.
(Also, this fixes Midiman's pet peeve of having to add +1 to SCREEN_WIDTH)
* [RageDisplay.cpp] modified screenshot function
* [ScreenDimensions] modified SCREEN_WIDTH and SCREEN_HEIGHT algorithms
* [StepMania.cpp] modified windowed mode width calculation

* Make steps labeled as "freestyle" in .ksfs use doubles

* ScoreKeeperNormal double shot.
1) convert toasty trigger from a single number to a Lua table. Only problem
is, the toasty only triggers on the first one. Since this makes it
equivalent to how it was set up before, I'm okay with this. [AJ]
2) FSX submitted a patch that supposedly fixes the broken combo problem.
I can't fully test this, so I'm committing it in the hopes that someone
else tests it too.

* sm4svn r28332: if a BGCHANGE file can't be resolved, don't use the specified
effect because it may require 2 files and all random BGs specify only 1 file
[Chris Danford]
* SM4SVN r28328, "draw glow using stroke texture" forces the BitmapText to glow
both the inner and stroke elements. This makes BitmapText elements with an
invisible stroke have a glowing stroke instead. Not good.
To combat this, I have developed the BitmapText::textglowmode command, along
with the TextGlowMode enum. Valid values include 'TextGlowMode_Inner',
'TextGlowMode_Stroke', 'TextGlowMode_Both'. [AJ]

* [Player.cpp] Don't add checkpoints to the combo if Autoplay is on.
* Re-add the ability to reload a theme's Lua scripts, this time using Ctrl+F2.
* Convert GrooveRadar base into an AutoActor. (Now it can use a Lua BGAnim.)

* [ScreenSelectMaster] Add GetSelectionIndex(pn) Lua binding. (You'll have to
call this one using SCREENMAN:GetTopScreen():GetSelectionIndex(PLAYER_1) or
something like that.)

* [PlayerStageStats] add GetPercentageOfTaps(TapNoteScore) Lua binding
* [PlayerState] add GetMultiPlayerNumber() Lua binding (untested)

sm4svn catch up, all by Chris Danford:
* r28326: fix handling of noteskins with an uppercase letter
* r28327: track W4 full combo
* r28328: draw glow using stroke texture

* [ScreenEvaluation] New metric DetailLineFormat. Must contain two integer flags
(%d or %i should work.)

* [ScreenNetEvaluation] add GetNumActivePlayers() binding and UpdateNetEvalStats
message (one param, ActivePlayerIndex). This is currently untested.

* Re-add SM4SVN r28063 "Allow for 'confirmation only' double press mechanisms
as a choice for two part selection on ScreenSelectMusic" since
1) It actually did have a use
2) [AJ] was thinking of adding it anyways and forgot it was already made.

sm-ssc v1.0 Public Beta 1 | 20100301
This represents the first public version of sm-ssc. The previously publicly
available release was not the official public beta version, but was released
for more people to get their hands on it for testing.

sm-ssc v1.0 Public Beta 1 has 111 Lua bindings that you currently can't find in
StepMania 4 alpha versions as of 2010/02/28. That doesn't include the various
helper functions available to you in scripts via the fallback theme, either. :)

* Applied stutter fix hack by Henke37
* [ScreenPackages] Some strings that were once hardcoded are now not:
"VisitURL", "DL @ %d KB/s", "Failed.", "Invalid URL.", "File Already Exists",
"Failed to connect.", "Header Sent.", "Waiting for header."
* Allow multiple random modifiers to be listed in RandomModifiers.txt.
The random number generation for RandomModifiers has also changed.

* [GameState] add GetCurMusicSeconds binding. Values can be negative,
so watch out when using.

* rework some bindings to match SM4:
GetBPMAtBeat, GetBeatFromElapsedTime, and GetElapsedTimeFromBeat have
moved from Song to TimingData.
If you were using these against the Song, they will fail in your theme.

* [TimingData] GetStops only returns Stops now (and not Delays).
If you want Delays, there is a new GetDelays() binding, which works
like GetStops.

* Added ToastyDropped message. [Midiman]

* [Player] CheckpointsFlashOnHold metric added. Fixes issue 16.

* [CodeDetector] NextBannerGroup and NextBannerGroup2 were previously used
for MusicBannerWheel, which is currently not used in sm-ssc. These codes
have been changed to NextGroup and PrevGroup. The codes switch between
groups as you would expect.

* sm4svn r28313: don't filter NoteSkins at a PrefsManager/NoteSkinManager level.
Leave the NoteSkin sorting and filtering up to the theme. [Chris Danford]
* load lighting from ActorFrame xnodes (in addition to Lua commands)
* add Cancel command on ScreenWithMenuElements, so other things can react
to Screen cancel.

* Added Fonts/ScreenReloadSongs LoadingText, making the text on
ScreenReloadSongs themeable.
* Added Fonts/NoteField MeasureNumber, ScreenGameplay debug,
ScreenGameplaySyncMachine SyncInfo.

sm4svn r28309: Fix crash in course mode, another (and, from the looks of it,
the last) dumb bug this block o' hack caused [vyhd]

Some more sm4svn commits:
* r28304: read-ahead tweaks; support os read cache flushing [Glenn Maynard]
* r28306: experimental code for storing Lua data in Profiles and
converting between XML and Lua data. [vyhd]

sm4svn catchup... Noticing a pattern?
* r28293: add RageFile::GetFD for specialized file handling [Glenn Maynard]
(FD meaning File Descriptor -aj)
* r28294: "remove absolutely pointless revision tags that cause [aclocal.m4 and in libmad] to constantly show up as modified" [Glenn Maynard]
* r28295: [fix] copy and paste error [Glenn Maynard]
* r28296: Experimental: hint the OS caching to avoid skips when starting/looping
movies [Glenn Maynard]
* r28297: fix a bug, then disable the whole thing for now due to dup()
braindamage; Linux version works fine (posix_fadvise) [Glenn Maynard]
* r28299: fix m_iFilePos updating on seek [Glenn Maynard]
* r28300: Added theme metric for Routine noteskins (to enforce separate noteskins
per player, or at least conscious thought toward that issue), added fix for
ScreenEdit only handling switching players on dance-routine [vyhd]
(editor's note: the new metrics are RoutineNoteSkinP1 and RoutineNoteSkinP2 -aj)
* r28303: make sure routine always writes as two charts, even if only one has
steps; DEBUG_ASSERT -> ASSERT [Glenn Maynard]

Even more sm4svn catchup:
* r28277: remove preferred group filtering (leaving the setting in for later use) [Glenn Maynard]
* r28279: simplify SongUtil::GetStepsTypeAndDifficultyFromSortOrder [Glenn Maynard]
* r28281: fix SSM crashes when selecting a song with only one
player enabled [Glenn Maynard]
* r28284: add Style::GetUsesCenteredArrows (doubles + routine)
* r28285: sanity check (on ScreenGameplay) [Glenn Maynard]
* various commits related to routine mode [Glenn Maynard]
(specifically, r28282,r28286,r28287,r28289,r28290)
* r28291: fix pump routine right side DownLeft not drawn [Chris Danford]
* r28292: easier debug stepping [Chris Danford]

* Fix a crash with AutoKeysounds.

Playing catch-up with sm4svn. This happens a lot.
* r28273: "Added more logical handling of Routine mode selection
(see source code comments); hopefully, we can write up a more standard
solution to this later, since this is kind of a hack" [vyhd]
* r28274: course type param to GetCustomDifficulty is optional [Glenn Maynard]
* r28276: Lua binding for MeterDisplay. Allow setting and changing the
width dynamically. Phase out the "StreamWidth" node property; set it with
SetStreamWidth instead. [Glenn Maynard]

* Possible fix for handling of delays in autoplay. May also fix things
elsewhere (editor?), but that is untested. Autoplay seemed to work well
with Uprock (the song), so I have no complaints. -aj
* Glenn started to revert some of Frieza's code in sm4:
* "Personally, there is an assert for checking if the noteskin is not empty.
Based on other code, it seems like the noteskin would have to be set
somewhere else. If this is a problem somewhere else, find where it's a
problem and don't patch this function." -aj re: NoteSkinManager.cpp r2098
* r28076 "Adds metric options to flash the lifebar when a note is hit"
My comment on why I did this: "Any competent themer can make a lifebar
flash when a note is hit. Just hook something up to a JudgmentMesageCommand,
read the params, and go from there. If it doesn't work on
StreamDisplay/LifeMeterBar, then GO CODE YOUR OWN LIFE METER IN LUA!!
Seriously there are enough publicly available references (moonlight,
optical, NCEvo if you want to go back in time to see a different type
of life meter) that claiming 'oh I don't know how to' isn't an excuse.
Please actually put in effort and seek examples when you try stuff
kthx i told you this would be ranty" -aj

* sm4svn r28266: Fix GAMESTATE:GetCurrentSteps() only returns single-player
steps for any difficulty [vyhd]

* sm4svn r28264: subtractive blend (OpenGL only for now) [Glenn Maynard]
(D3D version untested, I'm unsure of the behavior -aj)

* [MusicWheel] add RecentSongsToShow metric.

* "First pass of toasty message, hopefully this doesn't break!" [Midiman]

* [Course.cpp] HasTimedMods() now actually checks for timed mods
(technically non-global) instead of being a clone of HasMods().
* [Player.cpp] add MAX_HOLD_LIFE/[Player] MaxHoldLife metric

* "various commits from wolfman from the hg repo; mostly cleanup aside from
rev. 79071b3442, which adds a new metric. (that change is forthcoming)"

* Add DELAYS to list of known .sm tags [Wolfman; sm-ssc hg ebb2bda5b4]
* fix Windows icons for compiling on VS2003 and VS2005
* add ScoreKeeperShared.cpp/.h to VS2k3 project

* sm4svn r28259: Change OptionsList behavior to pop menu on Select and
default to Exit only on SELECT_ONE [vyhd]

* Add ScreenGameplayShared, ScoreKeeperShared to

sm-ssc Private Beta Wave 1.4 | 20100125

* Catching up with StepMania 4 SVN. All code by Glenn Maynard.
* r28254 (GameConstantsAndTypes.h GameManager.cpp): routine style for pump
* r28255 Steps.cpp: fix routine special case so it works in all styles
* r28256 ScoreKeeper.cpp: support ScoreKeeperShared in
* r28257 ScreenGameplayShared.cpp: update old ScreenGameplayShared code
to mostly use PlayerInfo::Load; fixes some stuff but still not right

* [Player] new ScoreMissedHoldsAndRolls metric (FSX)
* [Song] add GetFirstBeat and GetLastBeat Lua bindings
* Make RandomBackgroundMode use BGMODE_RANDOMMOVIES by default

* Add support for Pump It Up delays with #DELAYS tag in .sm files & treating all
stops in .KSF files as delays.
* Use RollingNumbers methods in ScreenNetEvaluation now that ScreenEvaluation
uses them, as opposed to settext (which caused a few visual issues).
* [ScreenEvaluation] add SongOptions as a metric-able item.

* Make FGAnimations (#FGCHANGES:) work again. (hopefully; it semeed to work
using a test file.)

mostly [ScreenNetSelectBase] related changes:
* remove some now-unused metrics (namely ChatInputBoxWidth/Height and
* Rename "Meter" to "StepsDisplay"
* RoomWheel now uses a MusicWheel-like setup for items (NormalPart/ColorPart)
instead of a single bar graphic.

* [ScreenNetSelectBase] Sprite -> AutoActor for chat boxes, un-hardcode some
commands on items to allow for better theming.
* Disable Control+Letter "sort by title" shortcut in course mode.

* Pump-Doubles has better (more accurate?) spacing between the two sides
* Enable saving replays. The replay data format will likely change over time,
and there is currently no mechanism to replay the data back as another player.

* add GAMESTATE:GetHardestStepsDifficulty() Lua binding
* Don't complain about #SELECTABLE:Roulette; even though it's not implemented
for some reason.

* Added more milestones (25, 50, 250)
* {issue 73} If the wheel is locked, don't accept Ctrl+Letter to sort
* [NotesLoaderKSF] implement DirectMove |E| type (DelayBeat)

* [CourseLoaderCRS.cpp] add GRADEBEST and GRADEWORST to possible values.

* [GameConstantsAndTypes.h] bump MAX_METER from 13 to 20.
* [MemoryCardManager] add GetName(pn) Lua binding. Returns the name of the device.

sm-ssc Private Beta Wave 1.3 | 20100106

* [LifeMeterBattery] Instead of using various hardcoded values, make them metrics.
BatteryBlinkTime (float), BatteryP*X/Y and NumLivesP*X/Y metrics added.
* [GameSoundManager] use the sound's fade in and out times instead of the
hardcoded fade in (1.5sec) and out (0.3sec) times.

* [GrooveRadar] run commands on RadarValueMapP* so we can color it again
* [Song.cpp] Make AutoGen on Pump a bit more bearable by only AutoGenerating
Medium difficulty for HalfDoubles steps.

* [GameState] new Lua bindings: JoinPlayer(pn), UnjoinPlayer(pn), and

* [ScreenSelectMusic] Allow un-selecting the song if two part selection is
enabled (press back). Only works if all human players have not chosen steps
yet. (If a player has chosen steps and the other wants to change the song,
the other player has to cancel his step selection.)
* [NoteSkinManager] New Lua binding NOTESKIN:DoesNoteSkinExist(sName) for
finding if the specified noteskin exists in the current gametype.

* New Lua binding: NOTESKIN:GetNoteSkinNames(), which returns a table of all
noteskins for the current gametype.

* New Lua bindings for Profile: GetTotalSessions(), GetTotalSessionSeconds(),

* Support "converge" as an alias for "centered" since some courses use it.

* [EditMenu] new metric TextBannerType
* Fixed issue 38 (Servers line in ScreenNetworkOptions)

* Make it possible to change the alpha of the center of the groove radar [shakesoda]
* [ScreenSelectMusic] make profile load with late join on. [AJ]
* Fix OS hotkey issues by invalidating input on ScreenEdit while meta keys
(cmd or winkey) are being held. [shakesoda]

sm-ssc Private Beta Wave 1.2 | 20091219
Theme-related additions/bugfixes aren't listed here, usually.

* Fix bug in GAMESTATE:GetCurrentSteps(pn) where it didn't bother trying to
return the player's actual steps before trying to do:
(1) SongUtil::GetOneSteps( p->m_pCurSong.Get(), GAMESTATE->GetCurrentStyle()->m_StepsType, GAMESTATE->m_PreferredDifficulty[pn] );
(2) SongUtil::GetOneSteps( p->m_pCurSong.Get(), GAMESTATE->GetCurrentStyle()->m_StepsType, GAMESTATE->GetClosestShownDifficulty(pn) );
And with AutoSetStyle on, how the hell is it going to know the style with
those two SongUtil things in the way? By moving the player's steps to the
top, that fixes the problem. -aj

* Make DeviceList on ScreenTestInput metricable
(commands only, X and Y are elusive for some reason.)

* Fix option underlines diffusing color when they should just be diffusing alpha.
* [ScreenOptions] new Lua binding: AllAreOnLastRow()
* [ScreenSelectMaster] add DoSwitchAnyways [shakesoda]

* new Course Lua bindings: IsNonstop(), IsOni(), HasBanner()

* Support Pump it Up Exceed PS2 USB mat [galopin]
(see stepmania-devs mailing list 20091213 11:27 -0800 [Pacific Standard Time])

* (smpackage) sm4svn r28243: "fix for FlushDirCache" [Chris Danford]
* Fix Beginner Helper rest location [sy567]

Cel shader update [shakesoda]

[StepsDisplay] StepsType is an AutoActor now (was Sprite)

sm-ssc Private Beta Wave 1.1 | 20091208
Theme-related bugfixes aren't listed here, usually.
See the sm-ssc bugtracker at for more
information on bugs, feature requests, and the status of both.

In addition to the bugfixes, the following changes have been made:

Refresh the metrics when changing the gametype. Fixes an issue where changing
the gametype causes the DifficultyList/StepsDisplayList to not show anything.

* [Character.cpp] fix GetModelPath() Lua binding.
* [Sprite.cpp] add GetState() and GetNumStates() Lua bindings.

Implement a patch to support modern versions of ffmpeg.
(See for more info.)

Petr Baudis (3):
video.m4: Add libswscale checks.
MovieTexture_FFMpeg: Port img_convert to libswscale method.
MovieTexture_Theora: Port img_convert to libswscale method.

David Santamaría Rogado (howl) (12):
video.m4: Simplify FFMpeg checks.
ArchHooks_Unix: Correct ffmpeg include.
MovieTexture_FFMpeg: Add and correct ffmpeg necessary includes.
MovieTexture_FFMpeg: Replace avcodec_build() with avcodec_version(), avcodec_build() now doesn't exists and avcodec_version() has always return the same value of avcodec_build().
MovieTexture_FFMpeg: Replace avcodec::offset_t type with int64_t type to complain the new FFMpeg API .
MovieTexture_FFMpeg: Corrected seek component of RageProtocol to complain the new FFMpeg, if not videos with malformed headers fails to play.
MovieTexture_FFMpeg: Fix compilation warning of RageProtocol.
MovieTexture_FFMpeg: Add destruction conditions for swscale context to avoid possible crashes.
MovieTexture_FFMpeg: Add initialization conditions for swscale context to avoid possible unused memory if there is no garbage collector and improve performance.
MovieTexture_Theora: Add and correct ffmpeg necessary includes.
MovieTexture_Theora: Add destruction conditions for swscale context to avoid possible crashes.
MovieTexture_Theora: Add initialization conditions for swscale context to avoid possible unused memory if there is no garbage collector and improve performance.

* [Player.cpp/.h] new metric: ComboUnderField. It should be true by default if
you want to match how StepMania 4 does it. [AJ]

* Fix a sm-ssc bug where you couldn't change course difficulties.

* Two new GameCommands:
* fademusic,fVolume,fDuration (though I wish fDuration was how long to fade the
music for; instead the fade lengths are consts in GameSoundManager.)
* pushscreen,sScreenName (though it doesn't push screens like I had thought it
would. maybe I'm doing it wrong.) [AJ]

* Profile name max length changed from 12 to 32 characters. [AJ]
* Modified character camera values. [shakesoda]

* [ScreenSelectMusic] new metric SamplePreviewMusicMode, which has one of two
possible values as of r127. 'SamplePreviewMusicMode_Normal' is business as
usual (sample music plays), while 'SampleMusicPreviewMode_ScreenMusic'
disables song samples, using /{theme}/Sounds/ScreenSelectMusic loop music.*
as the file to play. No, this doesn't support Lua music yet. [AJ]

sm-ssc Private Beta Wave 1 | 20091201
The list below comprises sm-ssc Private Beta Wave 1's changes. Some of the
changes are from baseline StepMania 4 SVN, in order to keep compatibility.

* [StepMania.cpp] (any)Shift+F2 = reload metrics only.
F2 = reload metrics and textures.
* [Course.cpp] GetPlayMode() and GetCourseType() return actual enums now,
instead of numbers.
* Add improved cel shading for people with GLSL support. [shakesoda]

* [TimingData] add GetActualBPM() Lua binding that returns a table holding the
min and max BPMs, in that order.

* Disable color keying banners (it's 2009, I don't think anyone is using the
old rotated banners anymore. -aj) [shakesoda]
* Add OptionsListTimeout metric. [shakesoda]

20091126 (SSC turkey day)
* [Song] new Lua bindings: NormallyDisplayed(), GetStepsSeconds()
* Themes will load Lua scripts from subdirectories first now.

* [ArchHooks_Unix] Follow user's system language as default.
[David Santamaría Rogado (howl)]
See for more info.

* Fixed a crash with lifemultipliers > 1.0 in debug builds

* F2 reloads metrics again, just like in StepMania 3.9. (This is probably one
of those changes that won't get backported to baseline StepMania...)
* [ScoreKeeperNormal] version 0.5 of ToastyTriggersAt added; only allows for
one value, unlike 3.9+ (which used a String with multiple values). The final
version will use a Lua table, similar to [MusicWheel] SortOrders.

* [Character] new Lua bindings: GetModelPath(), GetRestAnimationPath(),
GetWarmUpAnimationPath(), GetDanceAnimationPath()
* [CharacterManager] GetRandomCharacter() Lua binding added
* [RageFileManager] GetDirListing(sPath,bOnlyDirs,bPathToo) Lua binding added
* [CharacterManager] GetAllCharacters() Lua binding added.

* Prevent focus lost at Fullscreen on X11, fix windowed->fullscreen resolution
changes so that they save [David Santamaría Rogado (howl)]

* Add support for .oga and .ogv files. [David Santamaría Rogado (howl)]

* sm4svn r28233 [Glenn Maynard]:
"Fix ThemeMetric<EnumType> gives the first value of the enum when the theme
metric is nil, instead of EnumType_INVALID.
This happened because ThemeMetric was setting the value to its default,
eg. EnumType(), when LuaHelpers::FromStack returned false.
This behavior doesn't make sense in the general case, since EnumType() results
in an arbitrary value (the first one) rather than Invalid. Every FromStack
function sets a reasonable default on invalid data, anyway, and only RageColor
and enums can return false in any case.
This fixes CustomDifficulty when CourseType = nil."

* Fix a crash in StepsDisplay that allows Course mode to at least run.

* MusicWheelItem SetMessage has a new param, Type (string that returns the
item type).
* Add sort songs by most recently played. (not feature-complete yet.)

20091103 to 20091109
* Changes from SM4SVN:
* r28211: [HighScore.cpp] "logic fixup" [Glenn Maynard]
* r28215: "default to showing backgrounds in editor" [Chris Danford]
* r28217: "Fix crash on reload metrics due to faulty FlushDirCache logic."
[Steve Checkoway], implemented along with code that was originally submitted
as r076 but removed. See this fix log to figure out why we'd bother. :)
* r28218: "crash handler is crashing in 2.6.31 in GetBacktrace, causing a
recursive crash handler crash that we aren't handling, leading to recursion"
[Glenn Maynard]
* r28219: "add 'DIRRO' driver for read-only access" [Glenn Maynard]
* r28220: "fix confusing comment. Escaping doesn't affect this; commas aren't
escaped, since they're split from the value itself, long after MsdFile is
loaded." [Glenn Maynard] (We'll be keeping the 1,1,1,1 colors in sm-ssc, and
may provide a compatibility script for SM4SVN, so be on the lookout.)
* r28221: "allow overriding, like PRODUCT_ID" [Glenn Maynard]
* r28222-28223: "adding support for pms files" [GRIM657]
* The pulseaudio patch [David Santamaría Rogado (howl), Ondřej Hošek, Damien Thébault]
* Greg Nadja's OpenGL/Windows patch
* Load Splash.png instead of an .xpm [David Santamaría Rogado (howl)]

* sm-ssc Changes:
* [ScreenSelectMusic.cpp] Add SelectMenuInputMessage, has params Player and
Button. Broadcast messages when holding select and a button other than Select
is pushed.
* Windowed mode is now the default display mode.
* [HighScore.cpp] new Lua bindings:
* GetModifiers()
* GetTapNoteScore(TapNoteScore)
* GetHoldNoteScore(HoldNoteScore)
* GetRadarValues()
* [ProfileManager.cpp] added IsSongNew(Song) Lua binding

r088 | 20091101 12:19:47
* SM4SVN r28203-28208, all by Glenn Maynard.
* r28203: "skip exporting round data when nothing was played (no taps, no holds)"
* r28204: "fix signatures not being written" (we had this already)
* r28205: "don't fail if there's no course; just hide"
* r28206: "move course rename and delete into Overview"
* r28208: "disable rename and delete for courses that havn't been saved yet"
r28207 was a theme edit.

sm4svn r28202: helper for cycling through an enum [Glenn Maynard]

sm4svn r28201: "refactor RageInput to not call GetDevicesAndDescriptions
constantly; it can be slightly complex and get called thousands of
times a second" [Glenn Maynard]

* SM4SVN r28198-28200
* r28198: Fix GetFileSizeInBytes to return an int instead of unsigned.
"this returns -1 on error (this should actually be 64-bit,
but that's a bigger change)" [Glenn Maynard]
* r28199: The official log is as follows:
"Hack to get the decorations to be deleted. Fixes crashes,
but probably not the best way to go about this."
[Steve Checkoway]
* r28200: The official log is as follows:
"Do not use an AutoActor to keep track of the children."
However, this also fixes the hack in r28199. [Steve Checkoway]

* Allow for Codes on ScreenGameplay. [shakesoda]

* New Lua bindings for ScreenGameplay:
* PauseGame(bool) - Pauses/unpauses the game.
* IsPaused() - returns true or false depending on if the game is paused or not.

* Support loading Lua scripts from subdirectories of the Scripts folder,
to allow for better organization. The scripts in the root Scripts folder
will run first, then any Lua scripts in subdirectories of the Scripts folder
will be run. It currently only works with one folder depth, for example:

This is not likely to be changed. If you can see a possible need for paths
like Scripts/subfolder/subfolder2/script.lua, please make a Feature Request
ticket on the bugtracker at with
an explanation of what you have in mind.

* Change BitmapText defaults to no stroke + no shadow.
* Added DefaultTheme preference in order to fix crashes.
(sm-ssc's fallback theme is _fallback [and therefore normally unselectable].)

* [NotesLoaderSM.cpp] Changes based on SM4SVN r28197 [Archer]

* Event Mode turned on by default, as it should be. :)
(sm-ssc is a home mode-based version of StepMania.)

* SM4SVN r28192-28196.
* r28192: HexToBinary for RString -> RString. [Glenn Maynard]
* r28193: show all songs in EditCourse, not just preferred songs [Chris Danford]
* r28194: [ScreenDebugOverlay] Glenn made this themeable in SM4SVN, finally
catching up. This means we've had to rename a few things:
* DebugMenuHeader -> HeaderText
* PageName -> PageText
ButtonText and FunctionText were added, as well.
The font names remain the same, only the metrics change.
(Can you believe they're still using Common normal as the font?)
* r28195,28196: fix ComboChanged message sent when m_bSendJudgmentAndComboMessages
is false, fix doing unnecessary work in multiplayer [Glenn Maynard]

* [StepsDisplay] Fixed it so it actually shows up again.

Happy talk like k//eternal day!
* [Font.cpp] Don't show strokes by default.
* [NoteDisplay] fRotation -> fRotationZ in anticipation of multiple rotation mods.
* [PaneDisplay] changed one thing that used a goto; doesn't use it anymore. seems to work for me, though I'm not 100% sure.
* [ThemeManager] don't reload Lua scripts when you reload the metrics.
This is a temporary fix, and may be deemed safe at some point in the future.

(SM4SVN r28189)

* SM4SVN r28190,28191 (25 files worth). This was later reverted, as it caused
reloading the metrics to crash. Since sm-ssc is primarily for themers, this is a
dealbreaker. A lot of things were unofficially added to sm-ssc at this point:

* [ActorFrame] Added RemoveAllChildren() and RemoveChild(sName) bindings.
These are not guaranteed to work. Don't use them. They are very dangerous.
* [IniFile] added Lua's '--' syntax for commenting (along with '//' and '#',
which were already supported).
* New blend modes Modulate (subject to renaming later) and AlphaMultiply.
* [RageUtil] Added various bindings for formatting time that were already built
into StepMania: SecondsToHHMMSS, SecondsToMMSSMsMs, SecondsToMMSSMsMsMs,
SecondsToMSS, SecondsToMMSS. All bindings take in a float (number of seconds).
* [RageUtil] Added IsHexVal(string) binding.
* Added groups to sort length (based on BPM ranges), so the songs no longer
show up without groups.

(SM4SVN r28180-28185)

* Added WeightedMultiply and InvertDest blend modes to Direct3D.

* Change decorations draw order so it breaks things less.

* "hidden" removed from Actor commands. It was deprecated.
A compatibility alias was added to replicate its functionality. However, this
will not work with NoteSkins, so be sure to make sure to check them for the
use of hidden.

Handy replacement guide:
hidden,true / hidden,1 = visible,false
hidden,false / hidden,0 = visible,true

* Add Sprite:CropTo() function + Lua binding.

* Base theme changed from "default" to "_fallback".
As a result, all themes will fallback on _fallback instead of default.

* add URLEncode Lua binding to RageUtil.
* [ScreenWithMenuElements.cpp, ThemeManager.cpp] Load and parse Lua as music.
This makes conditional music possible.

* Change many things on ScreenEdit to go 5 decimal places instead of 3.
* Beginnings of Xbox controller mappings for edit mode (currently untested)

* Binding naming format changed for BPM bindings. Always uses all caps BPM.
Changes in the codebase due to this:
* [Song] HasSignificantBpmChangesOrStops -> HasSignificantBPMChangesOrStops
* [TimingData] HasBpmChanges -> HasBPMChanges
* [TimingData] New bindings. (GetStops, GetBPMsAndTimes)
* [ScreenPackages] attempt to not call MoveLeft by duplicating code.
Seemed to work okay.

* ScreenPackages changes:
* Backgrounds from Sprites to AutoActors (Lua can be used now).
* DefaultUrl metric added.
* [ActorScroller] Make naming of commands consistent (some were all lowercase,
some were CamelCase), all are now CamelCase.

* Added ScreenGameplay:GetPlayerInfo(PlayerNumber) Lua binding

* Added LifeChanged message to LifeMeterBattery, meaning certain hackily-coded
custom life meters by a certain SSC member can work in Oni mode again. ;)
* MAX_EDIT_STEPS_SIZE_BYTES changed from 30KB to 60KB.
* Added --theme= and --language= command line options.

* SSE2 build configuration added to Visual Studio 2008 project file.
* new Lua bindings for WheelBase: IsSettled(), IsLocked()

* Add Beginner meter sort.
* [CommandLineActions] Implement --version command line argument.
Prints out the version of sm-ssc. Please build sm-ssc with HAVE_VERSION_TIME
if possible for compatibility with all possible sm-ssc themes.

(SM4SVN r28172-28174)

* [GameCommand.cpp] add GetUrl() Lua binding.
* [GameManager.cpp] add IsGameEnabled(Game) Lua binding.
* [GrooveRadar] name m_GrooveRadarValueMap "RadarValueMap(P1/P2)"
(commands untested); new todo note in header file
* [ScoreDisplayOni.cpp] give it a name ("ScoreDisplayOni Numbers") and run
commands. (untested)
* removing player color diffuse commands, in the hopes this can be replicated
using Lua commands.
[GrooveRadar.cpp, ScoreDisplayLifeTime.cpp, ScreenSelectMusic.cpp]

(SM4SVN r28170: vdl's fixes for Xbox building; he says they should be tested.)

* add THEME:GetPathO() Lua binding

(SM4SVN r28140-r28166; code changes only)

(SM4SVN r28135, r28137, r28138)
* Lossless screenshots now save as PNG.
* Conversion of decorations to not be children of the screen; they load in
a similar fashion to overlay/underlay, but still using LoadB so everything
works correctly. (Tested against SM4 default theme for compatibility.)

* add GetRotationX, GetRotationZ commands to Actor
* add urlnoexit game command, which won't exit upon loading the browser.
* add OldHealthState to HealthStateChanged message on ScreenGameplay

* (untested) GrooveRadar plays commands on the frame now, allowing for
customized in and out transitions, using TweenOnScreen/TweenOffScreen Commands.
* add PlayerController enum binding
* add PlayerState:GetPlayerController() [untested]

ScreenDebugOverlay changes:
* add OnCommand, X, Y to Debug Header
* add GainFocus/LoseFocus commands to page names
* add LineOnColor/LineOffColor

* Add StartRoulette and StartRandom messages to MusicWheel.
* Fix default stroke color and shadow length. (BitmapText)

* patch by theDtTvB:
(some parts relating to Player.cpp were later reverted; will be reimplemented)
* Add SetPref to GameCommands.

* New ThemeManager Lua bindings:
* GetCurrentThemeDirectory
* ReloadMetrics
* Added more internal font mappings: auxc, auxd, auxz, auxwhite, auxblack,
auxlb, auxrb, auxlt, auxrt
* Add conf,PercentageScoring.

* ActorScroller: add GetNumItems binding.
* ThemeManager: add bindings for GetThemeDisplayName() and
GetThemeDisplayAuthor() (for the current theme only).

* Fixes songs with only Edit steps from crashing.
* Lights fix from ???
* Add GAMESTATE:IsBattleMode() binding.

* (sync with SM4SVN: LightsManager.cpp, ScreenGameplay.cpp)

* Add GetProfileDir() binding to ProfileManager.
* Added ProfileSlotNames enum.
* Add broadcasted message "SongChosen" on ScreenSelectMusic.

* Allow meters to go up to 20 in Edit Mode.

* Added io, os, and packages to Lua bindings. They are disabled for now.
* Fix instance in ScreenSelectMaster where hitting Up wouldn't count as going

* Add Overlay shader. [AJ]

(sync with SM4SVN)

More Lua bindings:
* PlayerStageStats:FullComboOfScore(tns)

* RageFileManager is now accessible through FILEMAN with these bindings:
* FILEMAN:DoesFileExist(path)
* FILEMAN:GetHashForFile(path)

* Add bindings to Song:
* GetSongFilePath
* GetMusicPath
* GetCDTitlePath
* GetLyricsPath
* IsEnabled
* HasStepsType
* HasMusic
* HasBanner
* HasBackground
* HasCDTitle
* HasBGChanges
* HasLyrics
* GetBPMAtBeat
* GetBeatFromElapsedTime
* GetElapsedTimeFromBeat
* HasSignificantBpmChangesOrStops
* HasEdits
* IsEasy

* Add bindings to Steps:
* IsAnEdit
* IsAPlayerEdit
* GetHash
* disabled stub for GetSMNoteData (untested)

* Work-in-progress bindings for ActorSound:
* pause
* stop
* Work-in-progress bindings for RageSound:
* volume
* SetStopMode

(sync with SM4SVN: Archer adding 5:4 support)

Add three new Lua bindings to RageFile:
* GetError
* ClearError

(sync with SM4SVN)
* [Actor.cpp] add GetDiffuse() Lua binding

* Add glowramp to Actor

* (changes from SM4SVN: Frieza and Wolfman [OnlyPreferredDifficulties])

* New RageFile bindings: Seek, Tell
* Added more internal font mappings: auxa, auxb, auxy, auxl, auxr

ActorScroller changes:
* Can now actually set size of the mask with SetMask
* Add more Lua bindings:
* SetNumItemsToDraw
* GetFullScrollLengthSeconds
* GetCurrentItem
* GetDestinationItem

* Add skewy to valid Actor commands.

(SM4SVN: ComboMultiplier by Frieza in ScoreKeeperNormal + r28060, r28061)

(changes from SM4SVN: ScreenSelect* changes by Frieza)
* Make ScreenDebugOverlay use its own fonts, namely:
* ScreenDebugOverlay header
* ScreenDebugOverlay page
* ScreenDebugOverlay line
* Add GetServerName() binding to NetworkSyncManager.
* Add GetText() binding to BPMDisplay.
* add MD5 String/File and SHA1 String hashing via Lua:
* CRYPTMAN:MD5String(str)
* CRYPTMAN:MD5File(path)
* CRYPTMAN:SHA1String(str)
* Add more Lua bindings to PlayerStageStats:
* GetCurrentMissCombo
* GetCurrentPossibleDancePoints
* GetAliveSeconds
* Add GetThemeAuthor() to ThemeManager.
* Add bindings to Song:
* GetDisplaySubTitle
* GetTranslitSubTitle

(changes from SM4SVN: tons of changes by Frieza)

(changes from SM4SVN: GameManager.cpp, RollingNumbers.cpp)

* Make some crash explanations more detailed. Changed files include:
* Actor.cpp - PercentThroughEffect, PercentBetweenColors, DeltaTime
* Attack.cpp
* GameManager.cpp
* GameState.cpp
* InputFilter.cpp
* NoteData.cpp
* Add new Lua bindings to TimingData: HasBpmChanges, GetBpms, GetStops.

* Project begins.
* Remove ScreenEz2SelectPlayer, which only the Xbox project still referenced.

Last edited: 4 September 2016 6:58am

< cybik> til Kyzentun fixes bugs for breakfast
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Kyzentun what do you mean?
I'm good at modfiles, just not IDM streaming.
Why would you want to install 3.95?
<YungDaVinci> but what does it mean
<YungDaVinci> what is kyzentun
<Kyzentun> It means Kyzentun.
<Jousway> what the fuck is a Kyzentun
So I can play some songs like Mawaru Setsugetsuka! and stuff. And to see the GrooveNights theme too!
I'm good at modfiles, just not IDM streaming.
Sorry for this bump but your best bet is OpenITG instead of SM 3.95. It's a modified StepMania 3.95 and should work with 3.95 stuff.
You won't need StepMania 3.95 or OpenITG to play the Mawaru stuff anymore, thanks to this guy <3.

No seriously, MrThatKid84 has been converting older simfiles that used to only work on oitg etc and porting them over to be fully functional in StepMania 5.0 and 5.1. If you really want ITG-esque style gameplay, go 5.0.12 for now and download Dan's gorgeous port of Simply Love, and grab some 5.0 sims from this guys youtube. I can guarantee you most if not all of them work, even in 5.1.-3, unless stated otherwise.

Honestly, I hope he continues these conversions
4 panel and 5 panel player simfile artist.