diff --git a/stepmania/NEWS b/stepmania/NEWS
index 50b1e6cd84..0ddaf913ea 100644
--- a/stepmania/NEWS
+++ b/stepmania/NEWS
@@ -18,7 +18,8 @@ NEW FEATURE: Option for user-selectable extra stage 1
CHANGE: Documentation now in HTML format.
CHANGE: Overhauled NoteSkin format. See README-FIRST.htm for details.
BUG FIX: Super-shuffle fixed (now doesn't add extra notes)
-NEW FEATURE: Added BIG transform (changes notes on beats to jumps)
+NEW FEATURE: Added WIDE transform (changes notes on beats to jumps)
+NEW FEATURE: Added TALL transform (adds 16th notes between 8ths)
----------------------- Version 3.01 ---------------------------
CHANGE: Simplified NoteSkin tap graphic format. Old NoteSkins will need to
diff --git a/stepmania/README-FIRST.html b/stepmania/README-FIRST.html
index 966e35c99f..e68253a2d4 100644
--- a/stepmania/README-FIRST.html
+++ b/stepmania/README-FIRST.html
@@ -237,10 +237,10 @@ drivers are required to use these devices. These drivers are often finicky and
incompatible with some sound cards. PlayStation->Parallel adaptors can be
purchased from the StepMania web site or any importer.
-For Windows 98 and Windows Me users, the recommended driver is "DirectPad
-Pro 5.0 for Win9x". For Windows 2000 and Windows XP, the recommended drivers
-is NTPad XP 1.x or
-PSXPAD.
+For Windows 98 and Windows Me users, the recommended driver is DirectPad
+Pro 5.0 for Win9x. For Windows 2000 and Windows XP, the recommended drivers
+is NTPad XP 1.x or PSXPAD. For the latest versions of these drivers, visit
+Aldo's Tools.
StepMania now natively supports USB Pump It Up pads.
diff --git a/stepmania/src/NoteData.cpp b/stepmania/src/NoteData.cpp
index 2372f712e6..1dce6c5f5d 100644
--- a/stepmania/src/NoteData.cpp
+++ b/stepmania/src/NoteData.cpp
@@ -1009,7 +1009,7 @@ void NoteDataUtil::Little(NoteData &in)
// leave HoldNotes unchanged (what should be do with them?)
}
-void NoteDataUtil::Big( NoteData &in )
+void NoteDataUtil::Wide( NoteData &in )
{
in.ConvertHoldNotesTo4s();
@@ -1043,6 +1043,48 @@ void NoteDataUtil::Big( NoteData &in )
in.Convert4sToHoldNotes();
}
+void NoteDataUtil::Tall( NoteData &in )
+{
+ in.ConvertHoldNotesTo4s();
+
+ // insert 16th between all 4th-8ths
+ int max_row = in.GetLastRow();
+ int rows_per_eighth = ROWS_PER_BEAT/2;
+ for( int i=0; i<=max_row; i+=rows_per_eighth )
+ {
+ int iRowEarlier = i;
+ int iRowLater = i + rows_per_eighth;
+ int iRowMiddle = i + rows_per_eighth/2;
+ if( in.GetNumTapNonEmptyTracks(iRowEarlier) != 1 )
+ continue;
+ if( in.GetNumTapNonEmptyTracks(iRowLater) != 1 )
+ continue;
+ // there is a 4th and 8th note surrounding iRowBetween
+
+ if( !in.IsRowEmpty(iRowMiddle) ) // there's already a 16th here
+ continue;
+
+ // add a note determinitsitcally somewhere on a track different from the two surrounding notes
+ int iTrackOfNoteEarlier = in.GetFirstNonEmptyTrack(iRowEarlier);
+ int iTrackOfNoteLater = in.GetFirstNonEmptyTrack(iRowLater);
+ int iTrackOfNoteMiddle = 0;
+ if( abs(iTrackOfNoteEarlier-iTrackOfNoteLater) == 2 )
+ iTrackOfNoteMiddle = (iTrackOfNoteEarlier+iTrackOfNoteLater)/2;
+ else
+ for( int t=min(iTrackOfNoteEarlier,iTrackOfNoteLater)-1; t<=max(iTrackOfNoteEarlier,iTrackOfNoteLater)+1; t++ )
+ {
+ iTrackOfNoteMiddle = t;
+ CLAMP( iTrackOfNoteMiddle, 0, in.GetNumTracks()-1 );
+ if( iTrackOfNoteMiddle!=iTrackOfNoteEarlier && iTrackOfNoteMiddle!=iTrackOfNoteLater )
+ break;
+ }
+
+ in.SetTapNote(iTrackOfNoteMiddle, iRowMiddle, TAP_TAP);
+ }
+
+ in.Convert4sToHoldNotes();
+}
+
void NoteDataUtil::SnapToNearestNoteType( NoteData &in, NoteType nt1, NoteType nt2, float fBeginBeat, float fEndBeat )
{
diff --git a/stepmania/src/NoteData.h b/stepmania/src/NoteData.h
index 66654f3f38..b5b085ffe5 100644
--- a/stepmania/src/NoteData.h
+++ b/stepmania/src/NoteData.h
@@ -139,7 +139,8 @@ namespace NoteDataUtil
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
void Turn( NoteData &in, TurnType tt );
void Little( NoteData &in );
- void Big( NoteData &in );
+ void Wide( NoteData &in );
+ void Tall( NoteData &in );
void SuperShuffleTaps( NoteData &in );
void Backwards( NoteData &in );
void SwapSides( NoteData &in );
diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp
index 73e9b56e74..eda2e8ae5c 100644
--- a/stepmania/src/Player.cpp
+++ b/stepmania/src/Player.cpp
@@ -117,7 +117,8 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi
{
case PlayerOptions::TRANSFORM_NONE: break;
case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break;
- case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(*this); break;
+ case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break;
+ case PlayerOptions::TRANSFORM_TALL: NoteDataUtil::Tall(*this); break;
default: ASSERT(0);
}
diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp
index 8f80438050..6fcbbd58f3 100644
--- a/stepmania/src/PlayerOptions.cpp
+++ b/stepmania/src/PlayerOptions.cpp
@@ -90,7 +90,8 @@ CString PlayerOptions::GetString()
{
case TRANSFORM_NONE: break;
case TRANSFORM_LITTLE: sReturn += "Little, "; break;
- case TRANSFORM_BIG: sReturn += "Big, "; break;
+ case TRANSFORM_WIDE: sReturn += "Wide, "; break;
+ case TRANSFORM_TALL: sReturn += "Tall, "; break;
default: ASSERT(0); // invalid
}
@@ -151,7 +152,8 @@ void PlayerOptions::FromString( CString sOptions )
else if( sBit == "shuffle" ) m_TurnType = TURN_SHUFFLE;
else if( sBit == "supershuffle" )m_TurnType = TURN_SUPER_SHUFFLE;
else if( sBit == "little" ) m_Transform = TRANSFORM_LITTLE;
- else if( sBit == "big" ) m_Transform = TRANSFORM_BIG;
+ else if( sBit == "wide" ) m_Transform = TRANSFORM_WIDE;
+ else if( sBit == "tall" ) m_Transform = TRANSFORM_TALL;
else if( sBit == "reverse" ) m_bReverseScroll = true;
else if( sBit == "noholds" ) m_bHoldNotes = false;
else if( sBit == "nofreeze" ) m_bHoldNotes = false;
diff --git a/stepmania/src/PlayerOptions.h b/stepmania/src/PlayerOptions.h
index aafb204743..d2b38b700d 100644
--- a/stepmania/src/PlayerOptions.h
+++ b/stepmania/src/PlayerOptions.h
@@ -57,7 +57,8 @@ struct PlayerOptions
enum Transform {
TRANSFORM_NONE=0,
TRANSFORM_LITTLE,
- TRANSFORM_BIG,
+ TRANSFORM_WIDE,
+ TRANSFORM_TALL,
NUM_TRANSFORMS
} m_Transform;
void NextTransform();
diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp
index f7fe906ece..624bf46376 100644
--- a/stepmania/src/ScreenEdit.cpp
+++ b/stepmania/src/ScreenEdit.cpp
@@ -141,7 +141,7 @@ MiniMenuDefinition g_AreaMenu =
{ "Paste", true, 1, 0, {""} },
{ "Clear", true, 1, 0, {""} },
{ "Quantize", true, NUM_NOTE_TYPES, 0, {"4TH","8TH","12TH","16TH","24TH","32ND"} },
- { "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Big","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} },
+ { "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} },
{ "Play selection", true, 1, 0, {""} },
{ "Record in selection",true, 1, 0, {""} },
{ "Insert blank beat and shift down", true, 1, 0, {""} },
@@ -1289,7 +1289,8 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
switch( tt )
{
case little: NoteDataUtil::Little( m_Clipboard ); break;
- case big: NoteDataUtil::Big( m_Clipboard ); break;
+ case wide: NoteDataUtil::Wide( m_Clipboard ); break;
+ case tall: NoteDataUtil::Tall( m_Clipboard ); break;
case left: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::left ); break;
case right: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::right ); break;
case shuffle: NoteDataUtil::Turn( m_Clipboard, NoteDataUtil::shuffle ); break;
diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h
index b8adb9a607..e83ea58d92 100644
--- a/stepmania/src/ScreenEdit.h
+++ b/stepmania/src/ScreenEdit.h
@@ -134,7 +134,7 @@ public:
NUM_AREA_MENU_CHOICES
};
void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers );
- enum TransformType { little, big, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES };
+ enum TransformType { little, wide, tall, left, right, mirror, shuffle, super_shuffle, backwards, swap_sides, NUM_TRANSFORM_TYPES };
enum EditNotesStatisticsChoice {
difficulty,
diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp
index d710074643..6750a24612 100644
--- a/stepmania/src/ScreenPlayerOptions.cpp
+++ b/stepmania/src/ScreenPlayerOptions.cpp
@@ -40,7 +40,7 @@ OptionRowData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
{ "Effect", 7, {"OFF","DRUNK","DIZZY","SPACE","MINI","FLIP","TORNADO"} },
{ "Appear\n-ance", 5, {"VISIBLE","HIDDEN","SUDDEN","STEALTH","BLINK"} },
{ "Turn", 6, {"OFF","MIRROR","LEFT","RIGHT","SHUFFLE","SUPER SHUFFLE"} },
- { "Trans\n-form", 3, {"OFF","LITTLE","BIG"} },
+ { "Trans\n-form", 4, {"OFF","LITTLE","WIDE","TALL"} },
{ "Scroll", 2, {"STANDARD","REVERSE"} },
{ "Note\nSkin", 0, {""} },
{ "Holds", 2, {"OFF","ON"} },
diff --git a/stepmania/stepmania.nsi b/stepmania/stepmania.nsi
index 25d2c1a23a..a9c4785178 100644
--- a/stepmania/stepmania.nsi
+++ b/stepmania/stepmania.nsi
@@ -19,7 +19,7 @@
!define PRODUCT_NAME_VER "${PRODUCT_NAME} ${VERSION}"
Name "${PRODUCT_NAME}"
-OutFile "StepMania-CVS-20030212.exe"
+OutFile "StepMania-CVS-20030219.exe"
;OutFile "StepMania301.exe"
; Some default compiler settings (uncomment and change at will):