diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt
index 00a676885f..648a166050 100644
--- a/Docs/Changelog_sm5.txt
+++ b/Docs/Changelog_sm5.txt
@@ -4,6 +4,26 @@ 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.
________________________________________________________________________________
+================================================================================
+StepMania 5.0 $next | 2011xxxx
+--------------------------------------------------------------------------------
+
+2011/10/08
+----------
+* [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]
+
+2011/10/07
+----------
+* [RageDisplay] Add the GetFPS, GetVPF, and GetCumFPS bindings. [Wolfman2000]
+
+2011/10/06
+----------
+* Various scoring fixes sourced from http://www47.atwiki.jp/waiei/pages/21.html
+ [A.C/@waiei, 桜為小鳩/@sakuraponila]
+
================================================================================
StepMania 5.0 Preview 4 | 20111005
--------------------------------------------------------------------------------
diff --git a/Docs/Luadoc/Lua.xml b/Docs/Luadoc/Lua.xml
index 79b0ddb7f9..1f9ee43352 100644
--- a/Docs/Luadoc/Lua.xml
+++ b/Docs/Luadoc/Lua.xml
@@ -119,6 +119,7 @@
+
@@ -202,6 +203,7 @@
+
@@ -216,7 +218,6 @@
-
@@ -663,10 +664,15 @@
+
+
+
+
+
@@ -695,12 +701,17 @@
+
+
+
+
+
@@ -720,6 +731,7 @@
+
@@ -855,9 +867,12 @@
+
+
+
@@ -871,6 +886,7 @@
+
@@ -1119,6 +1135,9 @@
+
+
+
@@ -1572,10 +1591,10 @@
+
-
@@ -1585,6 +1604,10 @@
+
+
+
+
@@ -2177,16 +2200,16 @@
-
+
-
+
-
+
-
+
@@ -2198,6 +2221,6 @@
- StepMania v5.0 Preview 3
- 2011-08-27
+ StepMania v5.0 Preview 4
+ 2011-10-06
diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml
index ba09931dfd..436c602a5d 100644
--- a/Docs/Luadoc/LuaDocumentation.xml
+++ b/Docs/Luadoc/LuaDocumentation.xml
@@ -63,13 +63,13 @@
Returns a color from a string. color can be in hex ("#FFFFFFFF") or 0..1 values ("1.0,1.0,1.0,1.0"), in RGBA order.
-
+
[02 Colors.lua] Returns a darker tone of the color. (Specifically c[1]/2, c[2]/2, c[3]/2, c[4])
-
+
[02 Colors.lua] Returns a lighter tone of the color. (Specifically c[1]+(c[1]/2), c[2]+(c[2]/2), c[3]+(c[3]/2), c[4])
-
+
[02 Colors.lua] Returns a midtone of the color. (Specifically c[1]/1.5, c[2]/1.5, c[3]/1.5, c[4])
@@ -183,7 +183,7 @@
Returns the theme's aspect ratio.
-
+
[03 ThemePrefs.lua] (Alias for .)
@@ -302,7 +302,7 @@
[03 Gameplay.lua] Returns the value to start showing the miss combo at.
-
+
Creates a module. See the Lua manual for more details.
@@ -314,7 +314,7 @@
Returns Month m as a string.
-
+
"Allows a program to traverse all fields of a table. Its first argument is a
table and its second argument is an index in this table.
next returns the next index of the table and its associated value."
@@ -323,7 +323,7 @@
[03 ThemePrefs.lua] Returns a Lua option row for ProTiming.
-
+
"Returns three values: the function, the table t, and nil,
so that the construction for k,v in pairs(t) do body end
will iterate over all key–value pairs of table t."
@@ -368,7 +368,7 @@
Sends the current style to the server.
-
+
Loads the specified module. See the Lua manual for more information.
@@ -476,7 +476,7 @@
Returns the type of the object as a string. See the Lua manual for valid return values.
-
+
"Returns the elements from the given table.
This function is equivalent to return list[i], list[i+1], ···, list[j]"
(i and j are optional; "by default, i is 1 and j is the length of the list.")
@@ -508,7 +508,7 @@
[04 FileUtils.lua] Writes buf to the file at path.
-
+
[03 GamePreferences.lua]
@@ -1580,7 +1580,7 @@
Gets the CourseEntry at iIndex from the Course.
- Returns the Course's . (Returns CourseType in sm-ssc; integer in SM4)
+ Returns the Course's . (Returns CourseType in SM5; integer in SM4)
Returns the description for this Course.
@@ -1598,7 +1598,7 @@
Returns the Course's group name.
- Returns the Course's . (Returns PlayMode in sm-ssc; integer in SM4)
+ Returns the Course's . (Returns PlayMode in SM5; integer in SM4)
Returns the name of the person who scripted the Course.
@@ -1715,6 +1715,15 @@
Returns the index of the last banner loaded.
+
+ Loads the fallback course banner.
+
+
+ Loads the fallback banner.
+
+
+ Loads the card image from the specified Character.
+
Loads a Banner from a specified Course.
@@ -1724,6 +1733,24 @@
Loads a Banner from a specified Song Group.
+
+ Loads a Banner from a specified SortOrder.
+
+
+ Loads an icon from the specified Character.
+
+
+ Loads the Random banner.
+
+
+ Loads the Roulette banner.
+
+
+ See .
+
+
+ See .
+
@@ -1802,11 +1829,25 @@
Plays a sound from the current announcer.
+
+ Play the sound at musicPath starting from musicStart for
+ musicLength seconds one time. Both fadeIn and
+ fadeOut can be customized as required.
+
Play the sound at sPath one time.
+
+ Adds another stage to the specifed player.
+
+
+ Applies the specified modifiers for the specified player's preferred modifier set.
+
+
+ Applies the specified modifiers for the specified player for the current stage.
+
Returns true if any player has performed a feat worthy of ranking.
@@ -1817,6 +1858,9 @@
Removes any stage modifiers that are illegal for course play.
+
+ Returns true if pn's options will disqualify them for ranking.
+
Returns true if enough credits have been inserted to join.
@@ -1884,6 +1928,9 @@
Return a string representation of the default song options.
+
+ Returns the value.
+
Return the easiest of the
currently selected steps by all players. For example, if player 1 has
@@ -1976,22 +2023,22 @@
Returns the smallest number of stages left for any human player.
- [01 compat.lua] Returns the current beat of the song.
+ [01 alias.lua] Returns the current beat of the song.
- [01 compat.lua] Returns the current beat of the song without an offset.
+ [01 alias.lua] Returns the current beat of the song without an offset.
Returns the current visible beat of the song.
- [01 compat.lua] Returns the song's current beats per second.
+ [01 alias.lua] Returns the song's current beats per second.
- [01 compat.lua] Returns true if a delay is active in the song.
+ [01 alias.lua] Returns true if a delay is active in the song.
- [01 compat.lua] Returns true if the song is currently in a freeze.
+ [01 alias.lua] Returns true if the song is currently in a freeze.
Returns the song options for the specified ModsLevel as a string.
@@ -2268,6 +2315,9 @@
+
+ Stops the MenuTimer by setting it to 99.99 and pausing.
+
Returns the current MenuTimer's value.
@@ -2275,11 +2325,17 @@
Pauses the MenuTimer, stopping it from counting down.
+ Compatibility alias for SetSeconds.
+
+
Sets the MenuTimer's value to fSeconds.
Sets the MenuTimer's silent setting to bSilent.
+
+ Starts up the timer.
+
Sets the MenuTimer's stealth setting to bStealth. If
true, the timer will be invisible and silent.
@@ -2301,6 +2357,9 @@
+
+ Returns the model's default animation.
+
Controls if the model should loop or not.
@@ -2740,20 +2799,6 @@
Returns the number of judgments for a specified TapNoteScore.
-
Returns the max combo for this performance.
@@ -2995,6 +3040,15 @@
Return the width of the display.
+
+ Return the FPS.
+
+
+ Return the VPF.
+
+
+ Return the cumulative FPS.
+
@@ -3316,9 +3370,15 @@
Returns the path to the song's banner.
+
+ Returns the path to the song's CD image.
+
Gets the path to the CDTitle.
+
+ Returns the path to the song's disc image (different from CD, think Pump).
+
Returns the displayed artist of the song.
@@ -3346,6 +3406,9 @@
Returns the group name that the song is in.
+
+ Returns the path to the song's jacket image.
+
Returns the last beat of the song.
@@ -3412,12 +3475,21 @@
Returns true if the song has BGChanges.
+
+ Returns true if the song has a CD image.
+
Returns true if the song has a CDTitle.
+
+ Returns true if the song has a Disc graphic.
+
Returns true if the song has edits.
+
+ Returns true if the song has a jacket graphic.
+
Returns true if the song has lyrics.
@@ -3425,10 +3497,10 @@
Returns true if the song has music.
- Returns true if the song has significant elephants or bison.
+ Returns true if the song has significant BPM changes or stops.
-
- Returns true if the song has .
+
+ Returns true if the song has the specified StepsType.
Returns true if the song's DisplayBPM is constant.
@@ -3531,7 +3603,7 @@
Returns a table of popular songs.
-
+
Returns a table of courses as they'd appear in preferred sort.
@@ -3814,13 +3886,13 @@
Returns true if the steps were automatically generated.
-
+
Returns true if the DisplayBPM is constant.
-
+
Returns true if the DisplayBPM is random.
-
+
Returns true if the DisplayBPM is secret.
@@ -4197,6 +4269,14 @@
Attempts to set the open section to sSection.
+
+
+ Returns the color of this wheel item.
+
+
+ Returns the text of this wheel item.
+
+
Sets the WorkoutGraph from the current Workout.
diff --git a/Docs/credits.txt b/Docs/credits.txt
index f6d363f374..42b7e7829b 100644
--- a/Docs/credits.txt
+++ b/Docs/credits.txt
@@ -10,7 +10,7 @@ AJ Kelly as freem
* UserPreferences and some other Lua scripts
* Some small theme edits here and there
* Noteskins (retro, retrobar*)
- * Windows project file maintainer
+ * Windows project file maintainer (mostly)
Midiman
* Did most of the work on _fallback and default themes
@@ -39,7 +39,7 @@ Daisuke Master
* Taking advantage of sm-ssc's new features :)
FSX
- * Various fixes. (see Changelog_sm-ssc.txt for more details)
+ * Various fixes. (see Changelogs for more details)
Nicole Reid (okeeblow)
* Tested building sm-ssc on FreeBSD, provided fixes.
@@ -59,6 +59,9 @@ StepMania Team
* Keeping StepMania 5 alive with changes, and providing a nice codebase for
us to work with.
+1a2a3a2a1a
+ * Various beat mode fixes
+
Kaox
* Pump/default noteskin
@@ -66,7 +69,7 @@ cesarmades
* Pump/cmd-* noteskins
David Santamara Rogado (howl)
- * Various patches (see Changelog_sm-ssc.txt for more details and links)
+ * Various patches (see Changelogs for more details and links)
Kita K./D. Trucks
* default theme music
@@ -113,10 +116,13 @@ Tatsh
* A patch to fix building with system ffmpeg
(http://ssc.ajworld.net/sm-ssc/bugtracker/view.php?id=218)
-A.C(waiei)
- * Hybrid scoring mode
+A.C (@waiei)
+ * Hybrid scoring mode + scoring fixes
* Various patches/fixes/bug reporting
+桜為小鳩 (@sakuraponila)
+ * Scoring fixes
+
==the beta testers==
[SSC Beta Testing Team]
KeithD
diff --git a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua
index 9018cef21f..3623c9cabd 100644
--- a/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua
+++ b/Themes/_fallback/BGAnimations/ScreenCredits overlay.lua
@@ -44,21 +44,23 @@ local oitg = {
}
local contrib = {
- "Aldo Fregoso (Aldo_MX)", -- delays
- "cerbo",
+ "Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
+ "A.C/@waiei", -- custom scoring fixes + Hybrid scoring
+ "cerbo", -- lua bindings and other fun stuff
"cesarmades", -- pump/cmd* noteskins
- "Chris Eldridge (kurisu)", -- dance-threepanel
+ "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
"corec", -- various fixes
"galopin", -- piu PlayStation2 usb mat support
"gholms", -- automake 1.11 support
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
"Kaox", -- pump/default noteskin
- "Petriform", -- Music
"NitroX72", -- pump/frame noteskin
+ "Petriform", -- default theme music
+ "桜為小鳩/@sakuraponila", -- custom scoring fixes
+ "Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
"sy567", -- beginner helper fix
"v1toko", -- x-mode from StepNXA
- "waiei", -- custom scoring fixes + Hybrid scoring
}
local translators = {
@@ -72,6 +74,7 @@ local thanks = {
"Dreamwoods",
"Jason Bolt (LightningXCE)",
"Jousway", -- Noteskins
+ "Luizsan", -- creator of Delta theme
"Matt1360", -- Automake magic + oitg bro
"Renard",
"Ryan McKanna (Plaguefox)",
@@ -80,13 +83,13 @@ local thanks = {
local shoutout = {
"The Lua team", -- lua project lead or some shit. super nerdy but oh hell.
"Mojang AB", -- minecraft forever -freem
+ "Wolfire Games", -- piles of inspiration
"NAKET Coder",
"Ciera Boyd", -- you bet your ass I'm putting my girlfriend in the credits
--Image(), -- we should have some logos probably to look super pro
"#KBO",
"Celestia Radio", -- LOVE AND TOLERANCE
"You showed us... your ultimate dance",
- -- "Can't stop crying... buckets of tears!"
}
local copyright = {
@@ -146,7 +149,6 @@ creditScroller.BeginCommand=function(self)
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) );
end;
-
return Def.ActorFrame{
creditScroller..{
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
diff --git a/Themes/_fallback/Scripts/03 ThemePrefs.lua b/Themes/_fallback/Scripts/03 ThemePrefs.lua
index 90d7d73a19..58236a2361 100644
--- a/Themes/_fallback/Scripts/03 ThemePrefs.lua
+++ b/Themes/_fallback/Scripts/03 ThemePrefs.lua
@@ -148,31 +148,3 @@ function InitUserPrefs()
SetUserPref("UserPrefScoringMode", 'DDR Extreme');
end;
end;
-
-function UserPrefScoringMode()
- local baseChoices = { 'DDR 1stMIX', 'DDR 4thMIX', 'DDR Extreme', 'DDR SuperNOVA', 'DDR SuperNOVA 2', 'MIGS', 'HYBRID' }; --'[SSC] Radar Master'
- local t = {
- Name = "UserPrefScoringMode";
- LayoutType = "ShowAllInRow";
- SelectType = "SelectOne";
- OneChoiceForAllPlayers = true;
- ExportOnChange = false;
- Choices = baseChoices;
- LoadSelections = function(self, list, pn)
- if ReadPrefFromFile("UserPrefScoringMode") ~= nil then
- local theValue = ReadPrefFromFile("UserPrefScoringMode");
- local success = false;
- for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end;
- if success == false then list[1] = true end;
- else
- WritePrefToFile("UserPrefScoringMode", 'DDR Extreme');
- list[1] = true;
- end;
- end;
- SaveSelections = function(self, list, pn)
- for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end;
- end;
- };
- setmetatable( t, t );
- return t;
-end
\ No newline at end of file
diff --git a/Themes/_fallback/Scripts/04 Scoring.lua b/Themes/_fallback/Scripts/04 Scoring.lua
index 0f96c6a001..382bc3c2fd 100644
--- a/Themes/_fallback/Scripts/04 Scoring.lua
+++ b/Themes/_fallback/Scripts/04 Scoring.lua
@@ -11,7 +11,14 @@ function GetTotalItems(radars)
local total = radars:GetValue('RadarCategory_TapsAndHolds')
total = total + radars:GetValue('RadarCategory_Holds')
total = total + radars:GetValue('RadarCategory_Rolls')
- total = total + radars:GetValue('RadarCategory_Lifts')
+ -- [ja] Liftを加えると一部二重加算になるため除外する。
+ -- total = total + radars:GetValue('RadarCategory_Lifts')
+
+ -- [en] prevent divide by 0
+ -- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで)
+ if total <= 0 then
+ total = 1
+ end;
return total
end;
@@ -29,61 +36,44 @@ function GetDirectRadar(player)
end;
-----------------------------------------------------------
---DDR 1st Mix and 2nd Mix Scoring
+--Oldschool scoring, best described as a modified 4th mix scheme
+--with a little 1st mix influence
-----------------------------------------------------------
-r['DDR 1stMIX'] = function(params, pss)
- local dCombo = math.floor((pss:GetCurrentCombo()+1)/4);
- local bScore = (dCombo^2+1) * 100;
- local multLookup =
- {
- ['TapNoteScore_W1']=3,
- ['TapNoteScore_W2']=3,
- ['TapNoteScore_W3']=1
- };
- setmetatable(multLookup, ZeroIfNotFound);
- --if score increases above the boundaries of a 32-bit signed
- --(about 2.15 billion), it stops increasing. Conveniently,
- --1st Mix clamped score as well.
- local capScore = 999999999;
- local bestScore = bScore * multLookup['TapNoteScore_W1'];
- local localScore = bScore * multLookup[params.TapNoteScore];
- pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+(bestScore),0,capScore));
- pss:SetScore(clamp(pss:GetScore()+(localScore),0,capScore));
-
-end;
------------------------------------------------------------
---DDR 4th Mix/Extra Mix/Konamix/GB3/DDRPC Scoring
------------------------------------------------------------
-r['DDR 4thMIX'] = function(params, pss)
+r['Oldschool'] = function(params, pss)
+ local bestPoints = 999
local scoreLookupTable =
{
- ['TapNoteScore_W1']=777,
- ['TapNoteScore_W2']=777,
- ['TapNoteScore_W3']=555
+ ['TapNoteScore_W1']=999,
+ ['TapNoteScore_W2']=IsW1Allowed('TapNoteScore_W2') and 888 or 999,
+ ['TapNoteScore_W3']=777,
+ ['TapNoteScore_W4']=555,
+ ['TapNoteScore_W5']=111,
};
setmetatable(scoreLookupTable, ZeroIfNotFound);
- -- TODO: Modify this so that current max assumes full combo?
- local comboBonusForThisStep = (pss:GetCurrentCombo()+1)*333;
- local capScore = 999999999;
- local bestPoints = scoreLookupTable['TapNoteScore_W1'];
- local bestCombo = bestPoints and comboBonusForThisStep or 0;
- pss:SetCurMaxScore(clamp(pss:GetCurMaxScore()+bestPoints+bestCombo,0,capScore));
- local localPoints = scoreLookupTable[params.TapNoteScore];
- local localCombo = localPoints and comboBonusForThisStep or 0;
- pss:SetScore(clamp(pss:GetScore()+localPoints+localCombo,0,capScore));
+ local comboBonusForThisStep = (pss:GetCurrentCombo()*111)^1.1;
+ local capScore = 1000000000;
+ pss:SetCurMaxScore(capScore); --i don't really care about weird scoring modes -fsx
+ local pointsGot = comboBonusForThisStep + scoreLookupTable[params.TapNoteScore] + (params.HoldNoteScore == 'HoldNoteScore_Held' and 777 or 0);
+ pss:SetScore(clamp(pss:GetScore()+pointsGot,0,capScore));
end;
+
-----------------------------------------------------------
---DDR MAX2/Extreme Scoring
+--DDR MAX2/Extreme(-esque) Scoring by @sakuraponila
-----------------------------------------------------------
+local ext_Steps = {0,0};
r['DDR Extreme'] = function(params, pss)
- local judgmentBase = {
+ local multLookup =
+ {
['TapNoteScore_W1'] = 10,
['TapNoteScore_W2'] = 9,
['TapNoteScore_W3'] = 5
};
- setmetatable(judgmentBase, ZeroIfNotFound);
+ setmetatable(multLookup, ZeroIfNotFound);
local steps = GAMESTATE:GetCurrentSteps(params.Player);
- local radarValues = steps:GetRadarValues(params.Player);
+ local radarValues = GetDirectRadar(params.Player);
+ local totalItems = GetTotalItems(radarValues);
+ -- 1 + 2 + 3 + ... + totalItems value/の値
+ local sTotal = (totalItems + 1) * totalItems / 2;
local meter = steps:GetMeter();
if (steps:IsAnEdit()) then
meter = 5;
@@ -92,39 +82,62 @@ r['DDR Extreme'] = function(params, pss)
elseif (meter > 10) then
meter = 10;
end;
- local baseScore = meter * 1000000;
+ -- [en] score for one step
+ -- [ja] 1ステップあたりのスコア
+ local baseScore = meter * 1000000
if (GAMESTATE:GetCurrentSong():IsMarathon()) then
baseScore = baseScore * 3;
elseif (GAMESTATE:GetCurrentSong():IsLong()) then
baseScore = baseScore * 2;
end;
- local totalItems = GetTotalItems(radarValues);
- local singleStep = (1 + totalItems) * totalItems / 2;
- if (not Shared.CurrentStep) then
- Shared.CurrentStep = {};
- Shared.CurrentStep["P1"] = 0;
- Shared.CurrentStep["P2"] = 0;
- end;
- local pn = PlayerNumberToString(params.Player);
- Shared.CurrentStep[pn] = Shared.CurrentStep[pn] + 1;
- local stepValue = math.floor(baseScore /singleStep);
- local stepLast = stepValue * Shared.CurrentStep[pn];
- pss:SetCurMaxScore(pss:GetCurMaxScore() +
- (stepLast * judgmentBase['TapNoteScore_W1']));
- local judgeScore = 0;
- if (params.HoldNoteScore == 'HoldNoteScore_Held') then
- judgeScore = judgmentBase['TapNoteScore_W1'];
+ local sOne = math.floor(baseScore / sTotal);
+ -- [en] measures for 5 points of units
+ -- [ja] 5点単位のための処置
+ sOne = sOne - sOne % 5;
+ -- [en] because fractions are added by the last step, get value
+ -- [ja] 端数は最後の1ステップで加算するのでその値を取得
+ local sLast = baseScore - (sOne * sTotal);
+
+ local p;
+ if params.Player == 'PlayerNumber_P1' then
+ p = 1;
else
- judgeScore = judgmentBase[params.TapNoteScore];
- if (IsW1Allowed(params.TapNoteScore)) then
- judgeScore = judgmentBase['TapNoteScore_W1'];
+ p = 2;
+ end;
+ -- [en] initialized when score is 0
+ -- [ja] スコアが0の時に初期化
+ if pss:GetScore() == 0 then
+ ext_Steps[p] = 0;
+ end;
+ -- [en] now step count
+ -- [ja] 現在のステップ数
+ ext_Steps[p] = ext_Steps[p] + 1;
+ -- [en] current score
+ -- [ja] 今回加算するスコア(W1の時)
+ local vScore = sOne * ext_Steps[p];
+ pss:SetCurMaxScore(pss:GetCurMaxScore() + vScore);
+ -- [ja] 判定によって加算量を変更
+ if (params.HoldNoteScore == 'HoldNoteScore_Held') then
+ -- [ja] O.K.判定時は問答無用で満点
+ vScore = vScore;
+ else
+ -- [ja] N.G.判定時は問答無用で0点
+ if (params.HoldNoteScore == 'HoldNoteScore_LetGo') then
+ vScore = 0;
+ -- [en] non-long note scoring
+ -- [ja] それ以外ということは、ロングノート以外の判定である
+ else
+ vScore = vScore * multLookup[params.TapNoteScore] / 10
end;
end;
- local stepScore = judgeScore * stepLast;
- pss:SetScore(pss:GetScore() + stepScore);
- if (Shared.CurrentStep[pn] >= totalItems) then -- Just in case.
- -- TODO: Implement the bonus for the last step?
- Shared.CurrentStep[pn] = 0; -- Reset for the next song.
+ -- [en] measures for 5 points of units
+ -- [ja] ここでも5点単位のための処置
+ vScore = vScore - vScore % 5
+ pss:SetScore(pss:GetScore() + vScore);
+ -- if one of the last step, add the fractions
+ -- [ja] 最後の1ステップの場合、端数を加算する
+ if ((vScore > 0) and (ext_Steps[p] == totalItems)) then
+ pss:SetScore(pss:GetScore() + sLast);
end;
end;
@@ -132,7 +145,7 @@ end;
--HYBRID Scoring, contributed by @waiei
-----------------------------------------------------------
local hyb_Steps={0,0};
-r['HYBRID'] = function(params, pss)
+r['Hybrid'] = function(params, pss)
local multLookup =
{
['TapNoteScore_W1'] = 10,
@@ -141,8 +154,7 @@ r['HYBRID'] = function(params, pss)
};
setmetatable(multLookup, ZeroIfNotFound);
local radarValues = GetDirectRadar(params.Player);
- -- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく
- local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts');
+ local totalItems = GetTotalItems(radarValues);
-- 1+2+3+...+totalItems value/の値
local sTotal = (totalItems+1)*totalItems/2;
-- [en] Score for one song
@@ -151,9 +163,13 @@ r['HYBRID'] = function(params, pss)
-- [ja] 端数は最後の1ステップで加算するのでその値を取得
local sLast = 100000000-(sOne*sTotal);
- local p = (params.Player == 'PlayerNumber_P1') and 1 or 2
+ local p;
+ if params.Player=='PlayerNumber_P1' then
+ p=1;
+ else
+ p=2;
+ end;
- -- [en] Initialize score if 0.
-- [ja] スコアが0の時に初期化
if pss:GetScore()==0 then
hyb_Steps[p]=0;
@@ -184,26 +200,81 @@ r['HYBRID'] = function(params, pss)
end;
-----------------------------------------------------------
---DDR SuperNOVA(-esque) scoring
+--DDR SuperNOVA scoring (Use MARVELOUS) by @sakuraponila
+-----------------------------------------------------------
+local sntmp_Score = {0,0};
+local sntmp_Steps = {0,0};
+r['DDR SuperNOVA'] = function(params, pss)
+ local multLookup =
+ {
+ ['TapNoteScore_W1'] = 3,
+ ['TapNoteScore_W2'] = 2,
+ ['TapNoteScore_W3'] = 1
+ };
+ setmetatable(multLookup, ZeroIfNotFound);
+ local radarValues = GetDirectRadar(params.Player);
+ local totalItems = GetTotalItems(radarValues)
+ local p;
+ if params.Player == 'PlayerNumber_P1' then
+ p = 1;
+ else
+ p = 2;
+ end;
+
+ -- initialized when score is 0
+ -- [ja] スコアが0の時に初期化
+ if pss:GetScore() == 0 then
+ sntmp_Score[p] = 0;
+ sntmp_Steps[p] = 0;
+ end;
+
+ -- [ja] 判定によって加算量を変更
+ local maxAdd = 0;
+ -- [ja] O.K.判定時は問答無用で満点
+ if params.HoldNoteScore == 'HoldNoteScore_Held' then
+ maxAdd = 3;
+ else
+ -- [ja] N.G.判定時は問答無用で0点
+ if params.HoldNoteScore == 'HoldNoteScore_LetGo' then
+ maxAdd = 0;
+ -- [ja] それ以外ということは、ロングノート以外の判定である
+ else
+ maxAdd = multLookup[params.TapNoteScore];
+ end
+ end;
+ sntmp_Score[p] = sntmp_Score[p] + maxAdd;
+
+ -- [ja] 踏み踏みしたステップ数
+ sntmp_Steps[p] = sntmp_Steps[p] + 1;
+ -- [ja] 現時点での、All W1判定の時のスコア
+ pss:SetCurMaxScore(math.floor(10000000 * sntmp_Steps[p] / totalItems / 3));
+ -- [ja] 計算して代入
+ pss:SetScore(math.floor(10000000 * sntmp_Score[p] / totalItems / 3));
+end;
+
+-----------------------------------------------------------
+--DDR SuperNOVA 2 scoring by @waiei
-----------------------------------------------------------
local sn2tmp_Sub={0,0};
local sn2tmp_Score={0,0};
local sn2tmp_Steps={0,0};
-r['DDR SuperNOVA'] = function(params, pss)
+r['DDR SuperNOVA 2'] = function(params, pss)
local multLookup =
{
- ['TapNoteScore_W1'] = 1,
- ['TapNoteScore_W2'] = 1,
- ['TapNoteScore_W3'] = 0.5
+ ['TapNoteScore_W1'] = 10,
+ ['TapNoteScore_W2'] = 10,
+ ['TapNoteScore_W3'] = 5
};
setmetatable(multLookup, ZeroIfNotFound);
local radarValues = GetDirectRadar(params.Player);
local totalItems = GetTotalItems(radarValues);
+ local p;
+ if params.Player=='PlayerNumber_P1' then
+ p=1;
+ else
+ p=2;
+ end;
- if totalItems < 0 then totalItems = 1; end
- local p = (params.Player == 'PlayerNumber_P1') and 1 or 2
-
- -- [en] Initialize score if 0.
-- [ja] スコアが0の時に初期化
if pss:GetScore()==0 then
sn2tmp_Sub[p]=0;
@@ -213,7 +284,6 @@ r['DDR SuperNOVA'] = function(params, pss)
-- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%)
local maxAdd = 0;
-
-- [ja] O.K.判定時は問答無用で満点
if params.HoldNoteScore == 'HoldNoteScore_Held' then
maxAdd = 10;
@@ -229,7 +299,7 @@ r['DDR SuperNOVA'] = function(params, pss)
sn2tmp_Sub[p]=sn2tmp_Sub[p]+1;
end;
end
- end
+ end;
sn2tmp_Score[p]=sn2tmp_Score[p]+maxAdd;
-- [ja] 踏み踏みしたステップ数
sn2tmp_Steps[p]=sn2tmp_Steps[p]+1;
@@ -239,62 +309,7 @@ r['DDR SuperNOVA'] = function(params, pss)
-- [ja] 計算して代入
pss:SetScore((math.floor(10000*sn2tmp_Score[p]/totalItems) * 10) - (sn2tmp_Sub[p]*10) );
end;
------------------------------------------------------------
---DDR SuperNOVA 2(-esque) scoring
------------------------------------------------------------
-local sn2tmp_Sub=0;
-local sn2tmp_Score=0;
-local sn2tmp_Steps=0;
-r['DDR SuperNOVA 2'] = function(params, pss)
- local multLookup =
- {
- ['TapNoteScore_W1'] = 10,
- ['TapNoteScore_W2'] = 10,
- ['TapNoteScore_W3'] = 5
- };
- setmetatable(multLookup, ZeroIfNotFound);
- local radarValues = GetDirectRadar(params.Player);
- -- [ja] GetTotalItems(radarValues) に Liftも含まれているので 引いておく
- local totalItems = GetTotalItems(radarValues) - radarValues:GetValue('RadarCategory_Lifts');
- -- [ja] 0除算対策(しなくても動作するけど満点になっちゃうんで)
- if totalItems <= 0 then
- totalItems=1
- end;
- -- [ja] スコアが0の時に初期化
- if pss:GetScore() == 0 then
- sn2tmp_Sub=0;
- sn2tmp_Score=0;
- sn2tmp_Steps=0;
- end;
-
- -- [ja] maxAdd は 加算する最高点を 10 とした時の値(つまり、10=100% / 5=50%)
- local maxAdd = 0;
- -- [ja] O.K.判定時は問答無用で満点
- if params.HoldNoteScore == 'HoldNoteScore_Held' then
- maxAdd = 10;
- else
- -- [ja] N.G.判定時は問答無用で0点
- if params.HoldNoteScore == 'HoldNoteScore_LetGo' then
- maxAdd = 0;
- -- [ja] それ以外ということは、ロングノート以外の判定である
- else
- maxAdd = multLookup[params.TapNoteScore];
- if (params.TapNoteScore == 'TapNoteScore_W2') or (params.TapNoteScore=='TapNoteScore_W3') then
- -- [ja] W2とW3の数を記録
- sn2tmp_Sub=sn2tmp_Sub+1;
- end;
- end
- end;
- sn2tmp_Score=sn2tmp_Score+maxAdd;
- -- [ja] 踏み踏みしたステップ数
- sn2tmp_Steps=sn2tmp_Steps+1;
- -- [ja] 現時点での、All W1判定の時のスコア
- pss:SetCurMaxScore(math.floor(10000*sn2tmp_Steps/totalItems) * 10);
-
- -- [ja] 計算して代入
- pss:SetScore((math.floor(10000*sn2tmp_Score/totalItems) * 10) - (sn2tmp_Sub*10) );
-end;
-----------------------------------------------------------
--Radar Master (disabled; todo: get this working with StepMania 5)
-----------------------------------------------------------
@@ -343,12 +358,13 @@ r['MIGS'] = function(params,pss)
curScore = curScore + ( pss:GetTapNoteScores(k) * v );
end;
curScore = math.max(0,curScore + ( pss:GetHoldNoteScores('HoldNoteScore_Held') * 6 ));
+ pss:SetScore(curScore);
end;
--------------------------------------------------------------
--1bilDP scoring because I can.
--------------------------------------------------------------
-r['1bilDP']= function(params,pss)
+r['Billions DP']= function(params,pss)
local poss = pss:GetPossibleDancePoints()
pss:SetScore(math.floor((pss:GetActualDancePoints()/poss)*1000000000))
pss:SetCurMaxScore(math.floor((pss:GetCurrentPossibleDancePoints()/poss)*1000000000))
@@ -356,14 +372,34 @@ end
-------------------------------------------------------------------------------
-- Formulas end here.
for v in ivalues(DisabledScoringModes) do r[v] = nil end
-Scoring = {}
-setmetatable(Scoring, {
- __metatable = { "Letting you change the metatable sort of defeats the purpose." },
- __index = function(tbl, key)
- for v in ivalues(DisabledScoringModes) do
- if key == v then return r['DDR Extreme'] end
- end
- return r[key]
- end,
- }
-);
\ No newline at end of file
+Scoring = r;
+
+function UserPrefScoringMode()
+ local baseChoices = {}
+ for k,v in pairs(Scoring) do table.insert(baseChoices,k) end
+ if next(baseChoices) == nil then UndocumentedFeature "No scoring modes available" end
+ local t = {
+ Name = "UserPrefScoringMode";
+ LayoutType = "ShowAllInRow";
+ SelectType = "SelectOne";
+ OneChoiceForAllPlayers = true;
+ ExportOnChange = false;
+ Choices = baseChoices;
+ LoadSelections = function(self, list, pn)
+ if ReadPrefFromFile("UserPrefScoringMode") ~= nil then
+ local theValue = ReadPrefFromFile("UserPrefScoringMode");
+ local success = false;
+ for k,v in ipairs(baseChoices) do if v == theValue then list[k] = true success = true break end end;
+ if success == false then list[1] = true end;
+ else
+ WritePrefToFile("UserPrefScoringMode", baseChoices[1]);
+ list[1] = true;
+ end;
+ end;
+ SaveSelections = function(self, list, pn)
+ for k,v in ipairs(list) do if v then WritePrefToFile("UserPrefScoringMode", baseChoices[k]) break end end;
+ end;
+ };
+ setmetatable( t, t );
+ return t;
+end
diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini
index bfb1aaa55b..f084578c6b 100644
--- a/Themes/_fallback/metrics.ini
+++ b/Themes/_fallback/metrics.ini
@@ -3654,6 +3654,9 @@ Beat0OffsetFormat="%s:\n %.3f secs\n"
PreviewStartFormat="%s:\n %.3f secs\n"
PreviewLengthFormat="%s:\n %.3f secs\n"
+FadeInPreview=0
+FadeOutPreview=1.5
+
[ScreenPracticeMenu]
Fallback="ScreenEditMenu"
Class="ScreenEditMenu"
diff --git a/Themes/default/BGAnimations/ScreenCredits overlay.lua b/Themes/default/BGAnimations/ScreenCredits overlay.lua
index 86028fc183..c8d17441f7 100644
--- a/Themes/default/BGAnimations/ScreenCredits overlay.lua
+++ b/Themes/default/BGAnimations/ScreenCredits overlay.lua
@@ -44,10 +44,11 @@ local oitg = {
}
local contrib = {
- "Aldo Fregoso (Aldo_MX)", -- delays
- "cerbo",
+ "Aldo Fregoso (Aldo_MX)", -- delays and much more. StepMania AMX creator
+ "A.C (@waiei)", -- custom scoring fixes + Hybrid scoring
+ "cerbo", -- lua bindings and other fun stuff
"cesarmades", -- pump/cmd* noteskins
- "Chris Eldridge (kurisu)", -- dance-threepanel
+ "Chris Eldridge (kurisu)", -- dance-threepanel stepstype support
"Christophe Goulet-LeBlanc (Kommisar)", -- songs
"corec", -- various fixes
"galopin", -- piu PlayStation2 usb mat support
@@ -55,10 +56,11 @@ local contrib = {
"juanelote", -- SongManager:GetSongGroupByIndex, JumpToNext/PrevGroup logic mods
"Kaox", -- pump/default noteskin
"NitroX72", -- pump/frame noteskin
- "Petriform", -- Music
+ "Petriform", -- default theme music
+ "桜為小鳩 (@sakuraponila)", -- custom scoring fixes
+ "Samuel Kim (1a2a3a2a1a)", -- various beat mode fixes
"sy567", -- beginner helper fix
"v1toko", -- x-mode from StepNXA
- "waiei", -- custom scoring fixes + Hybrid scoring
}
local translators = {
@@ -72,6 +74,7 @@ local thanks = {
"Dreamwoods",
"Jason Bolt (LightningXCE)",
"Jousway", -- Noteskins
+ "Luizsan", -- creator of Delta theme
"Matt1360", -- Automake magic + oitg bro
"Renard",
"Ryan McKanna (Plaguefox)",
@@ -87,7 +90,6 @@ local shoutout = {
"#KBO",
"Celestia Radio", -- LOVE AND TOLERANCE
"You showed us... your ultimate dance",
- -- "Can't stop crying... buckets of tears!"
}
local copyright = {
@@ -147,7 +149,6 @@ creditScroller.BeginCommand=function(self)
SCREENMAN:GetTopScreen():PostScreenMessage( "SM_BeginFadingOut", (t.SecondsPerItem * (#t + item_padding_start) + 5) );
end;
-
return Def.ActorFrame{
creditScroller..{
InitCommand=cmd(CenterX;y,SCREEN_BOTTOM-64),
diff --git a/Utils/build.sh b/Utils/build.sh
index c5a3ff58f4..12c37f0e2f 100755
--- a/Utils/build.sh
+++ b/Utils/build.sh
@@ -3,11 +3,60 @@
verbose=0
msg=
notify=0
+s_configure=
+s_stepmania=
+s_data=
+s_rebuild=
+s_ffmpeg=
+num_jobs=1
+
+
+usage () {
+ echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]"
+ echo 'Build StepMania.'
+ echo "CONFIGURE_OPTIONS are passed to StepMania's configure."
+ echo ''
+ echo ' -c, --configure stop after configuring StepMania.'
+ echo ' -s, --stepmania stop after building StepMania'
+ echo ' (do not copy binaries).'
+ echo ' -d, --data generate GameData.smzip.'
+ echo ' -r, --rebuild rebuild StepMania (soft).'
+ echo ' -f, --ffmpeg build with ffmpeg 0.6.1.'
+ echo ' -j#, --jobs=# pass -j# to make.'
+ echo ' -h, --help print this help and exit.'
+ echo ' -v, --verbose increase verbosity (up to 2).'
+ echo ' --version print version and exit.'
+ exit $1
+}
+
if which notify-send >/dev/null 2>&1; then
#Comment the following line out to disable notify.
notify=1
fi
+if which getopt >/dev/null 2>&1; then
+ set -- `getopt -l configure,stepmania,data,rebuild,ffmpeg,help \
+ -l jobs::,verbose,version -- drfcshj::v $*`
+fi
+
+while [ $# -gt 0 ]; do
+ arg=$1
+ shift
+ case $arg in
+ -c|--configure) s_configure=yes ;;
+ -s|--stepmania) s_stepmania=yes ;;
+ -d|--data) s_data=yes ;;
+ -r|--rebuild) s_rebuild=yes ;;
+ -f|--ffmpeg) s_ffmpeg=yes ;;
+ -h|--help) usage 0 ;;
+ -j|--jobs) num_jobs=$1; shift ;;
+ -v|--verbose) verbose=$[verbose+1] ;;
+ --version) version ;;
+ --) break ;;
+ *) usage 1 ;;
+ esac
+done
+
message () {
msg=$1
if [ $verbose -gt 0 ]; then
@@ -15,7 +64,7 @@ message () {
else
echo -n "$msg..."
fi
- if [ $notify -gt 0 ]; then
+ if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
notify-send "StepMania build script" "$msg..."
fi
}
@@ -26,7 +75,7 @@ success () {
else
echo okay.
fi
- if [ $notify -gt 0 ]; then
+ if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
notify-send "StepMania build script" "$msg...okay."
fi
}
@@ -41,11 +90,11 @@ failure () {
echo "$msg...failed$error"
else
echo failed$error
+ echo "Consider passing --verbose to $0. Pass --help for details."
fi
- if [ $notify -gt 0 ]; then
+ if [ $notify -gt 0 ] && [ $verbose -eq 0 ]; then
notify-send "StepMania build script failed" "$msg...failed$error"
fi;
- echo "Consider passing --verbose to $0. Pass --help for details."
exit 1
}
@@ -61,115 +110,55 @@ call () {
success
}
-usage () {
- echo "Usage: $0 [OPTION] [-- [CONFIGURE_OPTIONS]]"
- echo 'Build StepMania with a statically linked ffmpeg.'
- echo "CONFIGURE_OPTIONS are passed to StepMania's configure."
- echo ''
- echo ' -d, --download stop after ffmpeg download.'
- echo ' -f, --ffmpeg stop after building ffmpeg.'
- echo ' -c, --configure stop after configuring StepMania.'
- echo ' -s, --stepmania stop after building StepMania'
- echo ' (do not copy binaries).'
- echo ' -j#, --jobs=# pass -j# to make.'
- echo ' -h, --help print this help and exit.'
- echo ' -v, --verbose increase verbosity (up to 2).'
- echo ' --version print version and exit.'
- exit $1
-}
-
version () {
- echo 'build.sh (StepMania) 2.62'
+ echo 'build.sh (StepMania) 2.63'
echo 'Copyright (C) 2006-2009 Steve Checkoway'
echo 'StepMania is Copyright (C) 2001-2011 Chris Danford et al.'
echo 'sm-ssc is Copyright (C) 2009-2011 the spinal shark collective'
exit 0
}
-if ! test -x configure; then
- msg='Checking for configure'
- verbose=1
- failure 'file not found.'
-fi
-
-if which getopt >/dev/null 2>&1; then
- set -- `getopt -l download,ffmpeg,configure,stepmania,help \
- -l jobs::,verbose,version -- dfcshj::v $*`
-fi
-
-s_download=
-s_ffmpeg=
-s_configure=
-s_stepmania=
-num_jobs=1
-while [ $# -gt 0 ]; do
- arg=$1
- shift
- case $arg in
- -d|--download) s_download=yes ;;
- -f|--ffmpeg) s_ffmpeg=yes ;;
- -c|--configure) s_configure=yes ;;
- -s|--stepmania) s_stepmania=yes ;;
- -h|--help) usage 0 ;;
- -j|--jobs) num_jobs=$1; shift ;;
- -v|--verbose) verbose=$[verbose+1] ;;
- --version) version ;;
- --) break ;;
- *) usage 1 ;;
- esac
-done
-version=0.6.1
-ffmpeg=ffmpeg-$version
-directory=http://ffmpeg.org/releases
-if [ ! -d $ffmpeg ]; then
- message 'Downloading ffmpeg'
- if which bzip2 &>/dev/null; then
- zipcommand=jxf
- ffmarc=ffmpeg-$version.tar.bz2
- elif which gzip &>/dev/null; then
- zipcommand=zxf
- ffmarc=ffmpeg-$version.tar.gz
+if [ -n "$s_data" ]; then
+ message 'Generating GameData.smzip'
+ if [ -f _build/Makefile ]; then
+ cd _build
+ call make dist-hook
+ mv ./GameData.smzip ../
+ cd ..
else
- failure 'Install either bzip2 or gzip.'
+ failure "You need to configure StepMania first."
fi
- if which curl &>/dev/null; then
- get='curl -O'
- elif which wget &>/dev/null; then
- get=wget
- else
- failure 'Install either curl or wget.'
- fi
- call $get $directory/$ffmarc
- message 'Extracting ffmpeg'
- call tar -$zipcommand $ffmarc
- message 'Cleaning up temporary files'
- call rm $ffmarc
+ exit 0
fi
-if [ -n "$s_download" ]; then exit 0; fi
-args='--enable-static --disable-debug
---enable-memalign-hack --disable-network --enable-small
---disable-encoders --disable-ffserver
---enable-demuxer=avi
---enable-demuxer=h261 --enable-demuxer=h263 --enable-demuxer=h264
---enable-demuxer=m4v --enable-demuxer=mjpeg --enable-demuxer=mov
---enable-demuxer=mpegps --enable-demuxer=mpegts
---enable-demuxer=mpegvideo --enable-demuxer=ogg
---enable-demuxer=rawvideo --enable-demuxer=yuv4mpegpipe
---enable-decoder=h261 --enable-decoder=h263
---enable-decoder=h263i --enable-decoder=h264 --enable-decoder=huffyuv
---enable-decoder=mjpeg --enable-decoder=mjpegb
---enable-decoder=mpeg_xvmc --enable-decoder=mpeg1video
---enable-decoder=mpeg2video --enable-decoder=mpeg4
---enable-decoder=mpegvideo --enable-decoder=msmpeg4v1
---enable-decoder=msmpeg4v2 --enable-decoder=msmpeg4v3
---enable-decoder=rawvideo --enable-decoder=theora
---enable-parser=h261 --enable-parser=h263 --enable-parser=h264
---enable-parser=mjpeg --enable-parser=mpeg4video
---enable-parser=mpegaudio --enable-parser=mpegvideo
---enable-parser=ac3
---extra-cflags=-Dattribute_deprecated='
-if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then
+if [ -n "$s_ffmpeg" ]; then
+ ffversion=0.6.1
+ ffmpeg=ffmpeg-$ffversion
+ if [ ! -d $ffmpeg ]; then
+ message 'Downloading ffmpeg'
+ if which bzip2 &>/dev/null; then
+ zipcommand=jxf
+ ffmarc=$ffmpeg.tar.bz2
+ elif which gzip &>/dev/null; then
+ zipcommand=zxf
+ ffmarc=$ffmpeg.tar.gz
+ else
+ failure 'Install either bzip2 or gzip.'
+ fi
+ if which wget &>/dev/null; then
+ get=wget
+ elif which curl &>/dev/null; then
+ get='curl -O'
+ else
+ failure 'Install either curl or wget.'
+ fi
+ call $get "http://ffmpeg.org/releases/$ffmarc"
+ message 'Extracting ffmpeg'
+ call tar -$zipcommand $ffmarc
+ message 'Cleaning up temporary files'
+# call rm $ffmarc
+ fi
+ args="--enable-static --enable-gpl --enable-version3 --enable-nonfree --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --disable-debug --enable-memalign-hack --disable-network --enable-small --disable-encoders --disable-ffserver --extra-cflags=-Dattribute_deprecated="
cd $ffmpeg
message 'Configuring ffmpeg'
call ./configure --prefix="`pwd`/_inst" $args
@@ -177,27 +166,33 @@ if [ ! -f $ffmpeg/_inst/lib/libavcodec.a ]; then
call make --jobs="$num_jobs" install-libs install-headers
cd ..
fi
-if [ -n "$s_ffmpeg" ]; then exit 0; fi
-if [ ! -f _build/src/config.h ]; then
+
+if [ ! -f _build/src/config.h ] || [ -n "$s_rebuild" ]; then
message 'Configuring StepMania'
mkdir -p _build
cd _build
- call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@"
+ if [ -n "$s_ffmpeg" ]; then
+ call ../configure --with-ffmpeg=../$ffmpeg/_inst "$@"
+ else
+ call ../configure "$@"
+ fi
cd ..
fi
if [ -n "$s_configure" ]; then exit 0; fi
-if [ ! -f _build/src/stepmania ]; then
+if [ ! -f _build/src/stepmania ] || [ -n "$s_rebuild" ]; then
message 'Building StepMania'
- cd _build || failure
+ cd _build
call make --jobs="$num_jobs"
cd ..
fi
if [ -n "$s_stepmania" ]; then exit 0; fi
-if [ ! -f stepmania -o ! -f GtkModule.so ]; then
+if [ ! -f stepmania -o ! -f GtkModule.so ] || [ -n "$s_rebuild" ]; then
message 'Copying StepMania binaries'
- call cp _build/src/stepmania .
- # todo: check for existence of GtkModule.so -freem
- #_build/src/GtkModule.so . # we tend to not have this file!
+ cp _build/src/stepmania .
+ if [ -e _build/src/GtkModule.so ]; then
+ cp _build/src/GtkModule.so . # we tend to not have this file!
+ fi
+ success
fi
diff --git a/Utils/make-src-archive.sh b/Utils/make-src-archive.sh
old mode 100644
new mode 100755
index 22829896c2..2b460a0ca8
--- a/Utils/make-src-archive.sh
+++ b/Utils/make-src-archive.sh
@@ -21,18 +21,16 @@ cp -dpR autoconf $PRODUCTVER/
#cp -dpR Utils $PRODUCTVER/
cp -dpR src $PRODUCTVER/
-cp Docs/Copying.MAD Docs/Licenses.txt Makefile.am aclocal.m4 \
- configure Makefile.in configure.ac $PRODUCTVER
+cp Docs/Copying.MAD Docs/Licenses.txt Docs/Changelog_sm5.txt \
+ Docs/Changelog_sm-ssc.txt Docs/Changelog_SSCformat.txt \
+ Docs/credits.txt Docs/KnownIssues.txt \
+ Makefile.am aclocal.m4 configure Makefile.in configure.ac \
+ $PRODUCTVER
echo Pruning...
cd $PRODUCTVER/src
-# Obsolete and going away:
-rm -rf SDL-1.2.5
-rm -rf SDL-1.2.6
# Incomplete:
rm -rf Texture Font Generator
-# Xbox:
-rm -rf SDLx-0.02
# Unused:
rm -rf smlobby
@@ -46,12 +44,11 @@ rm -rf vorbis
rm -rf BaseClasses
rm -rf ddk
rm -rf smpackage
-rm -rf sdl_xbox_includes
-rm -rf SDLx-0.02.rar
cd ..
find . -type d -name 'CVS' | xargs rm -rf
+find . -type d -name '.svn' | xargs rm -rf
find . -type f -name '*.lib' | xargs rm -rf
find . -type f -name '*.exe' | xargs rm -rf
find . -type f -name '*.a' | xargs rm -rf
diff --git a/sm-ssc.nsi b/sm-ssc.nsi
index 22b2e9c652..60033fc275 100644
--- a/sm-ssc.nsi
+++ b/sm-ssc.nsi
@@ -670,12 +670,6 @@ FunctionEnd
Function .onInit
- nsisos::osversion
- ${If} $R0 >= 6
- ;vista & win7
- StrCpy $INSTDIR "%HOMEPATH%\${PRODUCT_ID}"
- ${EndIf}
-
; Force show language selection for debugging
;!define MUI_LANGDLL_ALWAYSSHOW
!insertmacro MUI_LANGDLL_DISPLAY
diff --git a/src/GameSoundManager.cpp b/src/GameSoundManager.cpp
index 78fca8efa6..5c7679303b 100644
--- a/src/GameSoundManager.cpp
+++ b/src/GameSoundManager.cpp
@@ -807,9 +807,43 @@ public:
p->DimMusic( fVolume, fDurationSeconds );
return 0;
}
- static int PlayOnce( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnce( sPath ); return 0; }
- static int PlayAnnouncer( T* p, lua_State *L ) { RString sPath = SArg(1); p->PlayOnceFromAnnouncer( sPath ); return 0; }
- static int GetPlayerBalance( T* p, lua_State *L ) { PlayerNumber pn = Enum::Check(L, 1); lua_pushnumber( L, p->GetPlayerBalance(pn) ); return 1; }
+ static int PlayOnce( T* p, lua_State *L )
+ {
+ RString sPath = SArg(1);
+ p->PlayOnce( sPath );
+ return 0;
+ }
+ static int PlayAnnouncer( T* p, lua_State *L )
+ {
+ RString sPath = SArg(1);
+ p->PlayOnceFromAnnouncer( sPath );
+ return 0;
+ }
+ static int GetPlayerBalance( T* p, lua_State *L )
+ {
+ PlayerNumber pn = Enum::Check(L, 1);
+ lua_pushnumber( L, p->GetPlayerBalance(pn) );
+ return 1;
+ }
+ static int PlayMusicPart( T* p, lua_State *L )
+ {
+ RString musicPath = SArg(1);
+ float musicStart = FArg(2);
+ float musicLength = FArg(3);
+ float fadeIn = 0;
+ float fadeOut = 0;
+ if (lua_gettop(L) >= 4 && !lua_isnil(L,4))
+ {
+ fadeIn = FArg(4);
+ if (lua_gettop(L) >= 5 && !lua_isnil(L,5))
+ {
+ fadeOut = FArg(5);
+ }
+ }
+ p->PlayMusic(musicPath, NULL, false, musicStart, musicLength,
+ fadeIn, fadeOut);
+ return 0;
+ }
LunaGameSoundManager()
{
@@ -817,6 +851,7 @@ public:
ADD_METHOD( PlayOnce );
ADD_METHOD( PlayAnnouncer );
ADD_METHOD( GetPlayerBalance );
+ ADD_METHOD( PlayMusicPart );
}
};
diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp
index d5cbc1d8b8..2aeb12bc91 100644
--- a/src/NoteDataUtil.cpp
+++ b/src/NoteDataUtil.cpp
@@ -253,7 +253,7 @@ static void LoadFromSMNoteDataStringWithPlayer( NoteData& out, const RString &sS
if( tn.type == TapNote::hold_head && tn.iDuration == MAX_NOTE_ROW )
{
int iRow = begin->first;
- LOG->UserLog( "", "", "While loading SM note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) );
+ LOG->UserLog( "", "", "While loading .sm/.ssc note data, there was an unmatched 2 at beat %f", NoteRowToBeat(iRow) );
out.RemoveTapNote( t, begin );
}
diff --git a/src/NotesLoaderDWI.cpp b/src/NotesLoaderDWI.cpp
index ea6aa58e28..c97c39464f 100644
--- a/src/NotesLoaderDWI.cpp
+++ b/src/NotesLoaderDWI.cpp
@@ -426,10 +426,14 @@ static bool LoadFromDWITokens(
out.m_StepsType = GetTypeFromMode(sMode);
+ // if the meter is empty, force it to 1.
+ if( sNumFeet.empty() )
+ sNumFeet = "1";
+
out.SetMeter(StringToInt(sNumFeet));
out.SetDifficulty( DwiCompatibleStringToDifficulty(sDescription) );
-
+
out.SetNoteData( ParseNoteData(sStepData1, sStepData2, out, sPath) );
out.TidyUpData();
diff --git a/src/NotesLoaderKSF.cpp b/src/NotesLoaderKSF.cpp
index 06a21e0000..24c6856398 100644
--- a/src/NotesLoaderKSF.cpp
+++ b/src/NotesLoaderKSF.cpp
@@ -141,7 +141,7 @@ static bool LoadFromKSFFile( const RString &sPath, Steps &out, Song &song, bool
else if( sValueName=="DIFFICULTY" )
{
- out.SetMeter( max(StringToInt(sParams[1]), 0) );
+ out.SetMeter( max(StringToInt(sParams[1]), 1) );
}
// new cases from Aldo_MX's fork:
else if( sValueName=="PLAYER" )
diff --git a/src/NotesLoaderSM.cpp b/src/NotesLoaderSM.cpp
index e32485ddca..73c9cf36cf 100644
--- a/src/NotesLoaderSM.cpp
+++ b/src/NotesLoaderSM.cpp
@@ -103,6 +103,12 @@ void SMLoader::LoadFromTokens(
out.SetDifficulty( Difficulty_Challenge );
}
+ if( sMeter.empty() )
+ {
+ // some simfiles (e.g. X-SPECIALs from Zenius-I-Vanisher) don't
+ // have a meter on certain steps. Make the meter 1 in these instances.
+ sMeter = "1";
+ }
out.SetMeter( StringToInt(sMeter) );
out.SetSMNoteData( sNoteData );
diff --git a/src/RageDisplay.cpp b/src/RageDisplay.cpp
index b1c8c1b46f..02deceb34a 100644
--- a/src/RageDisplay.cpp
+++ b/src/RageDisplay.cpp
@@ -1012,11 +1012,32 @@ public:
LuaHelpers::Push( L, params.height );
return 1;
}
+
+ static int GetFPS( T* p, lua_State *L )
+ {
+ lua_pushnumber(L, p->GetFPS());
+ return 1;
+ }
+
+ static int GetVPF( T* p, lua_State *L )
+ {
+ lua_pushnumber(L, p->GetVPF());
+ return 1;
+ }
+
+ static int GetCumFPS( T* p, lua_State *L )
+ {
+ lua_pushnumber(L, p->GetCumFPS());
+ return 1;
+ }
LunaRageDisplay()
{
ADD_METHOD( GetDisplayWidth );
ADD_METHOD( GetDisplayHeight );
+ ADD_METHOD( GetFPS );
+ ADD_METHOD( GetVPF );
+ ADD_METHOD( GetCumFPS );
}
};
diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp
index 3efd3010cc..9dbd2c59c7 100644
--- a/src/ScreenEdit.cpp
+++ b/src/ScreenEdit.cpp
@@ -1004,6 +1004,9 @@ void ScreenEdit::PlayTicks()
m_GameplayAssist.PlayTicks( m_Player->GetNoteData(), m_Player->GetPlayerState() );
}
+static ThemeMetric FADE_IN_PREVIEW("ScreenEdit", "FadeInPreview");
+static ThemeMetric FADE_OUT_PREVIEW("ScreenEdit", "FadeOutPreview");
+
void ScreenEdit::PlayPreviewMusic()
{
SOUND->StopMusic();
@@ -1013,8 +1016,8 @@ void ScreenEdit::PlayPreviewMusic()
false,
m_pSong->m_fMusicSampleStartSeconds,
m_pSong->m_fMusicSampleLengthSeconds,
- 0.0f,
- 1.5f );
+ FADE_IN_PREVIEW,
+ FADE_OUT_PREVIEW );
}
void ScreenEdit::MakeFilteredMenuDef( const MenuDef* pDef, MenuDef &menu )
diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp
index a2d9e4e6f2..7e29ce2ad0 100644
--- a/src/ScreenGameplay.cpp
+++ b/src/ScreenGameplay.cpp
@@ -1429,7 +1429,7 @@ void ScreenGameplay::PlayTicks()
}
/* Play announcer "type" if it's been at least fSeconds since the last announcer. */
-void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds )
+void ScreenGameplay::PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds )
{
if( GAMESTATE->m_fOpponentHealthPercent == 0 )
return; // Shut the announcer up
@@ -1445,9 +1445,9 @@ void ScreenGameplay::PlayAnnouncer( RString type, float fSeconds )
GAMESTATE->m_Position.m_fSongBeat < GAMESTATE->m_pCurSong->GetFirstBeat())
return;
- if( m_fTimeSinceLastDancingComment < fSeconds )
+ if( *fDeltaSeconds < fSeconds )
return;
- m_fTimeSinceLastDancingComment = 0;
+ *fDeltaSeconds = 0;
SOUND->PlayOnceFromAnnouncer( type );
}
diff --git a/src/ScreenGameplay.h b/src/ScreenGameplay.h
index 4b8258c156..182d12ed31 100644
--- a/src/ScreenGameplay.h
+++ b/src/ScreenGameplay.h
@@ -206,7 +206,8 @@ protected:
void GetMusicEndTiming( float &fSecondsToStartFadingOutMusic, float &fSecondsToStartTransitioningOut );
void LoadLights();
void PauseGame( bool bPause, GameController gc = GameController_Invalid );
- void PlayAnnouncer( RString type, float fSeconds );
+ void PlayAnnouncer( const RString &type, float fSeconds, float *fDeltaSeconds );
+ void PlayAnnouncer( const RString &type, float fSeconds ) { PlayAnnouncer(type, fSeconds, &m_fTimeSinceLastDancingComment); }
void UpdateLights();
void SendCrossedMessages();
void BeginBackingOutFromGameplay();
diff --git a/src/ScreenSelectMusic.cpp b/src/ScreenSelectMusic.cpp
index 2e3e3b03b4..128527331f 100644
--- a/src/ScreenSelectMusic.cpp
+++ b/src/ScreenSelectMusic.cpp
@@ -729,8 +729,7 @@ void ScreenSelectMusic::Input( const InputEventPlus &input )
}
// two part confirms only means we can actually change songs here,
- // so we need some hackery. oops looks like this is never going into
- // mainline sm4 then -aj
+ // so we need some hackery. -aj
if( TWO_PART_CONFIRMS_ONLY )
{
if( m_SelectionState == SelectionState_SelectingSteps )
@@ -1080,6 +1079,8 @@ void ScreenSelectMusic::HandleMessage( const Message &msg )
}
else
{
+ // todo: handle changing rave difficulty on join -aj
+
Steps* pSteps = m_vpSteps.empty()? NULL: m_vpSteps[m_iSelection[pn]];
GAMESTATE->m_pCurSteps[pn].Set( pSteps );
}
diff --git a/src/Song.cpp b/src/Song.cpp
index fa3f0b475e..84f45bf124 100644
--- a/src/Song.cpp
+++ b/src/Song.cpp
@@ -613,8 +613,9 @@ void Song::TidyUpData( bool fromCache, bool duringCache )
// find an image with "bg" or "background" in the file name
vector arrayPossibleBGs;
- GetImageDirListing( m_sSongDir + "*bg*", arrayPossibleBGs );
GetImageDirListing( m_sSongDir + "*background*", arrayPossibleBGs );
+ // don't match e.g. "subgroup", "hobgoblin", etc.
+ GetImageDirListing( m_sSongDir + "*bg", arrayPossibleBGs );
if( !arrayPossibleBGs.empty() )
m_sBackgroundFile = arrayPossibleBGs[0];
}
@@ -644,8 +645,8 @@ void Song::TidyUpData( bool fromCache, bool duringCache )
{
// a rectangular graphic, not to be confused with CDImage above.
vector arrayPossibleDiscImages;
- GetImageDirListing( m_sSongDir + "* Disc", arrayPossibleDiscImages );
- GetImageDirListing( m_sSongDir + "* Title", arrayPossibleDiscImages );
+ GetImageDirListing( m_sSongDir + "* disc", arrayPossibleDiscImages );
+ GetImageDirListing( m_sSongDir + "* title", arrayPossibleDiscImages );
if( !arrayPossibleDiscImages.empty() )
m_sDiscFile = arrayPossibleDiscImages[0];
}
diff --git a/src/StepMania.xpm b/src/StepMania.xpm
index 608708ab7b..92d7c3271e 100644
--- a/src/StepMania.xpm
+++ b/src/StepMania.xpm
@@ -1,60 +1,345 @@
/* XPM */
-static char *icon[] = {
-"32 32 21 1",
-/* colors */
-" c #000000",
-". c #737300",
-"X c #FF00FF",
-"o c #004A73",
-"O c #969600",
-"+ c #006296",
-"@ c #001950",
-"# c #B9B900",
-"$ c #007AB9",
-"% c #FFB848",
-"& c #734A00",
-"* c #DCDC00",
-"= c #505000",
-"- c #323232",
-"; c #003250",
-": c #503200",
-"> c #262626",
-", c #1A1A1A",
-"< c #0E0E0E",
-"1 c #808000",
-"2 c None",
-/* pixels */
-"XXXXXXXXXXXXXXXXXX XXXXXXXXXX",
-"XXXXXXXXXXXXXX <,:::>< XXXXXXX",
-"XXXXXXXXXXXX <=1OOOOO11.:;<, XXX",
-"XXXXXXXX =#***###OOOOO:;$$;>> XX",
-"XXXXXXX =****##1.OOOO:;$+>,,= O***####.@,=,;$$>=OO1.=*#####=>;o$$;:OO1..., ",
-"XX $$$;:OO111.1: ",
-"XXX ;o$$o,&O#*#,o$$o:OOOOO111= ",
-"XXX :.,;$$+;,:1>o$$$o=#OOOOO11= ",
-"XXX =#O=>+$$$o;o$$$$+,1#OOOOOO= ",
-"XXX .##%1,+$$$$$$$$$$o:##OOOOO= ",
-"XXX##O. X",
-"XXX=11OO####O,+$$$$$$$$$$,O##= X",
-"XXX=.1OO#OOO#.@$$$$$$$$+@#OXXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXX ;;XXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXX XXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-};
-
+static char * sm5icon_xpm[] = {
+"32 32 310 2",
+" c None",
+". c #000000",
+"+ c #1A0502",
+"@ c #4B0D04",
+"# c #671104",
+"$ c #691104",
+"% c #6B1105",
+"& c #6D1105",
+"* c #6E1205",
+"= c #701205",
+"- c #510E04",
+"; c #1C0602",
+"> c #260702",
+", c #BD4212",
+"' c #F49329",
+") c #F9AA31",
+"! c #FAAF3A",
+"~ c #FAB140",
+"{ c #FAB142",
+"] c #FAB246",
+"^ c #FAB44D",
+"/ c #FAB550",
+"( c #FAB552",
+"_ c #FAB656",
+": c #FAB95D",
+"< c #FAB75C",
+"[ c #F6A852",
+"} c #D54E15",
+"| c #2B0702",
+"1 c #240602",
+"2 c #E0661B",
+"3 c #FDA32B",
+"4 c #FE9B29",
+"5 c #FC9D2A",
+"6 c #FD9E2A",
+"7 c #FD9F2A",
+"8 c #FDA32C",
+"9 c #FDA52C",
+"0 c #FDA72C",
+"a c #FEA82E",
+"b c #FEAA31",
+"c c #FEAD38",
+"d c #FEAE3B",
+"e c #FEAF3F",
+"f c #FEB040",
+"g c #FEB044",
+"h c #FEB248",
+"i c #FEB34B",
+"j c #FEB54F",
+"k c #FEB651",
+"l c #FEB95B",
+"m c #F18233",
+"n c #010000",
+"o c #B03B10",
+"p c #F88022",
+"q c #F67921",
+"r c #F67A21",
+"s c #F67D22",
+"t c #F77E22",
+"u c #F87F22",
+"v c #F98323",
+"w c #F98423",
+"x c #FA8623",
+"y c #FA8725",
+"z c #FA8927",
+"A c #FA8C2E",
+"B c #FA8D30",
+"C c #FA8F32",
+"D c #FA9033",
+"E c #FA9037",
+"F c #FA933A",
+"G c #FA943C",
+"H c #FA973F",
+"I c #FB9841",
+"J c #FB9C4A",
+"K c #D14914",
+"L c #010100",
+"M c #280602",
+"N c #E65F19",
+"O c #F05F1A",
+"P c #EE5E1A",
+"Q c #EF601A",
+"R c #F0601A",
+"S c #F1631B",
+"T c #F2641B",
+"U c #F3651B",
+"V c #F4671C",
+"W c #F5681C",
+"X c #F66A1C",
+"Y c #F76A1C",
+"Z c #F76B1D",
+"` c #F76D1F",
+" . c #F77223",
+".. c #F77325",
+"+. c #F77428",
+"@. c #F77529",
+"#. c #F7772B",
+"$. c #F87A2E",
+"%. c #F87B30",
+"&. c #F87E32",
+"*. c #F97F33",
+"=. c #F27D37",
+"-. c #310802",
+";. c #460D03",
+">. c #E65417",
+",. c #E64D14",
+"'. c #E64F15",
+"). c #E74F15",
+"!. c #E85015",
+"~. c #EA5115",
+"{. c #EA5316",
+"]. c #EC5416",
+"^. c #ED5416",
+"/. c #EE5516",
+"(. c #F05717",
+"_. c #F15717",
+":. c #F25917",
+"<. c #F35917",
+"[. c #F35A18",
+"}. c #F35D1A",
+"|. c #F4611E",
+"1. c #F4621F",
+"2. c #F46421",
+"3. c #F46522",
+"4. c #F46624",
+"5. c #F46926",
+"6. c #F46A28",
+"7. c #F56D2A",
+"8. c #F27331",
+"9. c #561004",
+"0. c #3A0A03",
+"a. c #DD4F15",
+"b. c #DD4613",
+"c. c #DC4813",
+"d. c #DF4A14",
+"e. c #E04A14",
+"f. c #E14B14",
+"g. c #E34C14",
+"h. c #E44D15",
+"i. c #E74E15",
+"j. c #E94F15",
+"k. c #EB5115",
+"l. c #EC5115",
+"m. c #EE5215",
+"n. c #F05215",
+"o. c #F05316",
+"p. c #F05618",
+"q. c #F15B1C",
+"r. c #F05B1C",
+"s. c #F05C1D",
+"t. c #F05E1F",
+"u. c #F05F20",
+"v. c #F06022",
+"w. c #F16323",
+"x. c #F26425",
+"y. c #F06D2E",
+"z. c #591105",
+"A. c #0B0201",
+"B. c #C94913",
+"C. c #D84D15",
+"D. c #D44B14",
+"E. c #D54C14",
+"F. c #D94D15",
+"G. c #DB4E15",
+"H. c #DF5116",
+"I. c #E25216",
+"J. c #E35416",
+"K. c #E55617",
+"L. c #E65817",
+"M. c #E45918",
+"N. c #E65C18",
+"O. c #E75C18",
+"P. c #E85E19",
+"Q. c #E7611C",
+"R. c #E86420",
+"S. c #E86522",
+"T. c #E86624",
+"U. c #E86725",
+"V. c #E86826",
+"W. c #E96A28",
+"X. c #EA7133",
+"Y. c #581104",
+"Z. c #581506",
+"`. c #D65416",
+" + c #CD4E15",
+".+ c #CE4F15",
+"++ c #D15116",
+"@+ c #D35116",
+"#+ c #D55216",
+"$+ c #D55416",
+"%+ c #D55718",
+"&+ c #D85A18",
+"*+ c #DA5B18",
+"=+ c #DE5D19",
+"-+ c #E05E19",
+";+ c #E35F19",
+">+ c #E55F19",
+",+ c #E6601A",
+"'+ c #E6621C",
+")+ c #E76520",
+"!+ c #E76622",
+"~+ c #E76724",
+"{+ c #E76825",
+"]+ c #E76927",
+"^+ c #E97234",
+"/+ c #7E2009",
+"(+ c #D25617",
+"_+ c #D35617",
+":+ c #D05517",
+"<+ c #D15717",
+"[+ c #D55918",
+"}+ c #D75A18",
+"|+ c #D35918",
+"1+ c #320902",
+"2+ c #742009",
+"3+ c #A2340E",
+"4+ c #B0380F",
+"5+ c #B1380F",
+"6+ c #B53A0F",
+"7+ c #B83A0F",
+"8+ c #BA390F",
+"9+ c #D85717",
+"0+ c #8B2109",
+"a+ c #E05D19",
+"b+ c #8A2309",
+"c+ c #DC5C19",
+"d+ c #CE5617",
+"e+ c #872209",
+"f+ c #CA5517",
+"g+ c #CC5517",
+"h+ c #832109",
+"i+ c #C55216",
+"j+ c #C65316",
+"k+ c #802109",
+"l+ c #CF5617",
+"m+ c #C15116",
+"n+ c #C35216",
+"o+ c #E86F30",
+"p+ c #7E2109",
+"q+ c #BC4F15",
+"r+ c #BF5015",
+"s+ c #E86E2E",
+"t+ c #7A2008",
+"u+ c #B84D15",
+"v+ c #BA4E15",
+"w+ c #E05B18",
+"x+ c #E86E2D",
+"y+ c #771F08",
+"z+ c #B44B14",
+"A+ c #B64C14",
+"B+ c #8F2409",
+"C+ c #A8330E",
+"D+ c #E86C2B",
+"E+ c #751E08",
+"F+ c #B14A14",
+"G+ c #B34B14",
+"H+ c #8D260A",
+"I+ c #A6320D",
+"J+ c #541004",
+"K+ c #621706",
+"L+ c #AD4813",
+"M+ c #AF4914",
+"N+ c #8A260A",
+"O+ c #A4320D",
+"P+ c #130301",
+"Q+ c #B04713",
+"R+ c #AB4713",
+"S+ c #A94713",
+"T+ c #86240A",
+"U+ c #A2320D",
+"V+ c #4B1105",
+"W+ c #A84613",
+"X+ c #82230A",
+"Y+ c #521004",
+"Z+ c #5B1706",
+"`+ c #A64613",
+" @ c #81230A",
+".@ c #9F320E",
+"+@ c #491004",
+"@@ c #A44412",
+"#@ c #7E230A",
+"$@ c #9D300D",
+"%@ c #4E0F04",
+"&@ c #120301",
+"*@ c #A64212",
+"=@ c #7A2109",
+"-@ c #812209",
+";@ c #2C0702",
+">@ c #4D1305",
+",@ c #762109",
+"'@ c #2F0802",
+")@ c #B03C10",
+"!@ c #4F1405",
+"~@ c #A74212",
+"{@ c #AE4613",
+"]@ c #541606",
+"^@ c #701D08",
+"/@ c #D45417",
+"(@ c #270702",
+"_@ c #3D0F04",
+":@ c #511506",
+"<@ c #401004",
+"[@ c #130401",
+"}@ c #591506",
+"|@ c #C34A14",
+"1@ c #AE3B10",
+"2@ c #050201",
+"3@ c #2D0903",
+"4@ c #3D0D03",
+"5@ c #190602",
+" . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . + @ # $ $ % % & & * = = = = = = = = = = - ; . . ",
+" . > , ' ) ! ! ~ { ] ^ / ( _ : : : : : : : : : < [ } | . ",
+" . 1 2 3 4 5 6 6 7 8 9 9 0 0 a b c c d e f g h i j k l m | . ",
+". n o p q r r s t t u v w w x x y z A A B C D E F G H I J K L . ",
+". M N O P Q R R S T T U V W W X Y Z ` . ...+.@.#.$.%.&.*.=.-.. ",
+". ;.>.,.'.).!.~.~.{.].^./.(._._.:.<.[.}.|.|.1.2.3.4.5.6.7.8.9.. ",
+". 0.a.b.c.d.e.f.g.g.h.i.i.j.k.l.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.. ",
+". A.B.C.D.E.C.F.G.a.a.H.I.I.J.K.L.M.N.O.P.Q.R.R.S.T.U.V.W.X.Y.. ",
+" . Z.`. + +.+++@+#+`.$+%+&+&+*+=+-+-+;+>+,+'+)+)+!+~+{+]+^+Y.. ",
+" . . /+(+_+:+:+(+<+[+}+&+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+{+^+Y.. ",
+" . . 1+2+3+4+5+6+6+7+8+9+|+}+&+*+=+-+-+;+>+,+'+)+)+!+~+^+Y.. ",
+" . . . . . . . . . 0+a+<+|+}+&+*+=+-+-+;+>+,+'+)+)+!+^+Y.. ",
+" . . . . b+c+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+)+^+Y.. ",
+" . . e+&+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+)+^+Y.. ",
+" . . h+<+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+'+^+Y.. ",
+" . . k+l+m+n+i+j+f+g+d+<+<+|+}+&+*+=+-+-+;+>+,+o+Y.. ",
+" . . p+f+q+r+m+n+i+j+f+g+d+<+<+[+}+&+*+=+-+-+;+>+s+Y.. ",
+" . . t+i+u+v+q+r+m+n+i+j+f+g+d+=+w+[+}+&+*+=+-+-+;+x+9.. ",
+" . . y+m+z+A+u+v+q+r+m+n+i+j+f+c+B+C+c+|+}+&+*+=+-+-+D+9.. ",
+" . . E+q+F+G+z+A+u+v+q+r+m+n+i+&+H+. I+*+<+|+}+&+*+=+-+]+J+. ",
+" . K+u+L+M+F+G+z+A+u+v+q+r+m+<+N+. . O+&+<+<+|+}+&+*+=+{+J+. ",
+" . P+Q+R+S+L+M+F+G+z+A+u+v+q+l+T+. . . U+[+d+<+<+|+}+&+*+~+J+. ",
+" . V+G+W+S+S+L+M+F+G+z+A+u+f+X+. . . U+|+g+d+<+<+|+}+&+)+Y+. ",
+" . Z+F+`+W+S+S+L+M+F+G+z+i+ @. . . .@<+f+g+d+<+<+|+}+)+Y+. ",
+" . +@M+@@`+W+S+S+L+M+F+m+#@. . . $@l+j+f+g+d+<+<+|+'+%@. ",
+" . &@*@W+@@`+W+S+S+L+q+=@. . . -@<+i+j+f+g+d+<+<+,+;@. ",
+" . >@L+W+@@`+W+M+u+,@. . . '@l+i+i+j+f+g+d+-+)@L . ",
+" . . !@~@M+F+G+{@]@. . . . ^@<+f+i+j+f+c+/@(@. ",
+" . . &@_@:@<@[@. . . . }@|@<+[+&+1@> . ",
+" . . . . . . . 2@3@4@5@n . ",
+" . . . . . "};
diff --git a/src/TimingData.cpp b/src/TimingData.cpp
index a14043772f..41994f3a39 100644
--- a/src/TimingData.cpp
+++ b/src/TimingData.cpp
@@ -36,8 +36,11 @@ void TimingData::Clear()
vector &vSegs = m_avpTimingSegments[tst];
for( unsigned i = 0; i < vSegs.size(); ++i )
{
- //LOG->Trace( "deleting %p", vSegs[i] );
- SAFE_DELETE( vSegs[i] ); }
+#if defined(DEBUG)
+ LOG->Trace( "TimingData::Clear(): deleting %p", vSegs[i] );
+#endif
+ SAFE_DELETE( vSegs[i] );
+ }
vSegs.clear();
}
@@ -312,8 +315,8 @@ TimingSegment* GetSegmentAtRow( int iNoteRow, TimingSegmentType tst )
static void EraseSegment( vector &vSegs, int index, TimingSegment *cur )
{
- LOG->Trace( "EraseSegment(%d, %p)", index, cur );
#ifdef DEBUG
+ LOG->Trace( "EraseSegment(%d, %p)", index, cur );
cur->DebugPrint();
#endif
@@ -325,8 +328,8 @@ static void EraseSegment( vector &vSegs, int index, TimingSegmen
// so we must deep-copy it (with ::Copy) for new allocations.
void TimingData::AddSegment( const TimingSegment *seg )
{
- LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() );
#ifdef DEBUG
+ LOG->Trace( "AddSegment( %s )", TimingSegmentTypeToString(seg->GetType()).c_str() );
seg->DebugPrint();
#endif
@@ -390,7 +393,9 @@ void TimingData::AddSegment( const TimingSegment *seg )
// the segment at or before this row is equal to the new one; ignore it
if( bOnSameRow && (*cur) == (*seg) )
{
+#if defined(DEBUG)
LOG->Trace( "equals previous segment, ignoring" );
+#endif
return;
}
diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp
index 21e5e70637..f28dbfe0cb 100644
--- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp
+++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp
@@ -22,7 +22,7 @@ extern "C" const char *Init( int *argc, char ***argv )
return "Couldn't initialize gtk (cannot open display)";
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER );
+ gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS );
gtk_window_set_default_size( GTK_WINDOW(window), 512,96 );
//gtk_window_set_icon( GTK_WINDOW(window), );
gtk_widget_realize(window);