Added Dancing Stage 3DDX (SINGLE MODE ONLY)

NOTE: I commented out an ASSERT in NoteData.cpp
at Line 429
//	ASSERT( iOriginalTrack < pOriginal->m_iNumTracks );
I don't understand how the AutoGen code works, but all I do know is
that the game works without this assert, but possibly in a way people
didn't want defined. Please can somebody (preferably Chris as he
says he's the only one who understands notedata :D) look at this
and figure out what i'm doing wrong.
I feel a bit uneasy taking out an assert to make things work....
This commit is contained in:
Andrew Livy
2002-12-28 16:07:19 +00:00
parent 5488b0bcb6
commit 387905a785
10 changed files with 201 additions and 15 deletions
+8 -9
View File
@@ -102,14 +102,6 @@ BGAnimation *Background::GetBGA(const Song *pSong, const BackgroundChange &anise
// movies in RandomMovies dir, BGAnims in BGAnimsDir. // movies in RandomMovies dir, BGAnims in BGAnimsDir.
CStringArray asFiles; CStringArray asFiles;
// Look for BG movies in the song dir
GetDirListing( pSong->GetSongDir()+aniseg.m_sBGName, asFiles, false, true );
if( !asFiles.empty() )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, true );
return pTempBGA;
}
// Look for BGAnims in the song dir // Look for BGAnims in the song dir
GetDirListing( pSong->GetSongDir()+aniseg.m_sBGName, asFiles, true, true ); GetDirListing( pSong->GetSongDir()+aniseg.m_sBGName, asFiles, true, true );
if( !asFiles.empty() ) if( !asFiles.empty() )
@@ -118,7 +110,14 @@ BGAnimation *Background::GetBGA(const Song *pSong, const BackgroundChange &anise
pTempBGA->LoadFromAniDir( asFiles[0], bgpath ); pTempBGA->LoadFromAniDir( asFiles[0], bgpath );
return pTempBGA; return pTempBGA;
} }
// Look for BG movies in the song dir
GetDirListing( pSong->GetSongDir()+aniseg.m_sBGName, asFiles, false, true );
if( !asFiles.empty() )
{
pTempBGA = new BGAnimation;
pTempBGA->LoadFromMovie( asFiles[0], true, true );
return pTempBGA;
}
// Look for movies in the RandomMovies dir // Look for movies in the RandomMovies dir
GetDirListing( RANDOMMOVIES_DIR+aniseg.m_sBGName, asFiles, false, true ); GetDirListing( RANDOMMOVIES_DIR+aniseg.m_sBGName, asFiles, false, true );
if( !asFiles.empty() ) if( !asFiles.empty() )
+1
View File
@@ -17,6 +17,7 @@ enum Game
GAME_PUMP, // Pump It Up GAME_PUMP, // Pump It Up
GAME_EZ2, // Ez2dancer GAME_EZ2, // Ez2dancer
GAME_PARA, // ParaPAraParadise GAME_PARA, // ParaPAraParadise
GAME_DS3DDX, // Dance Station 3DDX.
NUM_GAMES, // leave this at the end NUM_GAMES, // leave this at the end
GAME_INVALID, GAME_INVALID,
}; };
+1
View File
@@ -75,6 +75,7 @@ enum NotesType
NOTES_TYPE_EZ2_DOUBLE, NOTES_TYPE_EZ2_DOUBLE,
NOTES_TYPE_EZ2_REAL, NOTES_TYPE_EZ2_REAL,
NOTES_TYPE_PARA_SINGLE, NOTES_TYPE_PARA_SINGLE,
NOTES_TYPE_DS3DDX_SINGLE,
NUM_NOTES_TYPES, // leave this at the end NUM_NOTES_TYPES, // leave this at the end
NOTES_TYPE_INVALID, NOTES_TYPE_INVALID,
}; };
+19 -1
View File
@@ -84,9 +84,27 @@ enum // ParaButtons
PARA_BUTTON_MENURIGHT, PARA_BUTTON_MENURIGHT,
PARA_BUTTON_MENUUP, PARA_BUTTON_MENUUP,
PARA_BUTTON_MENUDOWN, PARA_BUTTON_MENUDOWN,
PARA_EZ2_BUTTONS, // leave this at the end NUM_PARA_BUTTONS, // leave this at the end
}; };
enum // 3DDX Buttons
{
DS3DDX_BUTTON_HANDLEFT,
DS3DDX_BUTTON_FOOTDOWNLEFT,
DS3DDX_BUTTON_FOOTUPLEFT,
DS3DDX_BUTTON_HANDUP,
DS3DDX_BUTTON_HANDDOWN,
DS3DDX_BUTTON_FOOTUPRIGHT,
DS3DDX_BUTTON_FOOTDOWNRIGHT,
DS3DDX_BUTTON_HANDRIGHT,
DS3DDX_BUTTON_START,
DS3DDX_BUTTON_BACK,
DS3DDX_BUTTON_MENULEFT,
DS3DDX_BUTTON_MENURIGHT,
DS3DDX_BUTTON_MENUUP,
DS3DDX_BUTTON_MENUDOWN,
NUM_DS3DDX_BUTTONS, // leave this at the end.
};
const GameButton MAX_GAME_BUTTONS = 14; const GameButton MAX_GAME_BUTTONS = 14;
const GameButton GAME_BUTTON_INVALID = MAX_GAME_BUTTONS+1; const GameButton GAME_BUTTON_INVALID = MAX_GAME_BUTTONS+1;
+150 -1
View File
@@ -33,6 +33,7 @@ const int PUMP_COL_SPACING = 50;
const int EZ2_COL_SPACING = 46; const int EZ2_COL_SPACING = 46;
const int EZ2_REAL_COL_SPACING = 40; const int EZ2_REAL_COL_SPACING = 40;
const int PARA_COL_SPACING = 54; const int PARA_COL_SPACING = 54;
const int DS3DDX_COL_SPACING = 54;
struct { struct {
char *name; char *name;
@@ -48,7 +49,8 @@ struct {
{ "ez2-single", 5 }, // Single: TL,LHH,D,RHH,TR { "ez2-single", 5 }, // Single: TL,LHH,D,RHH,TR
{ "ez2-double", 10 }, // Double: Single x2 { "ez2-double", 10 }, // Double: Single x2
{ "ez2-real", 7 }, // Real: TL,LHH,LHL,D,RHL,RHH,TR { "ez2-real", 7 }, // Real: TL,LHH,LHL,D,RHL,RHH,TR
{ "para-single", 5 } { "para-single", 5 },
{ "ds3ddx-single", 8 }
}; };
// //
@@ -372,6 +374,94 @@ GameDef g_GameDefs[NUM_GAMES] =
}, },
} }
}, },
{ // GAME_DS3DDX
"ds3ddx", // m_szName
"Dance Station 3DDX", // m_szDescription
2, // m_iNumControllers
NUM_DS3DDX_BUTTONS, // m_iButtonsPerController
{ // m_szButtonNames
"HandLeft",
"FootDownLeft",
"FootUpLeft",
"HandUp",
"HandDown",
"FootUpRight",
"FootDownRight",
"HandRight",
"Start",
"Back",
"MenuLeft",
"MenuRight",
"MenuUp",
"MenuDown",
},
{ // m_szSecondaryFunction
"(MenuLeft)",
"",
"",
"(MenuUp)",
"(MenuDown)",
"",
"",
"(MenuRight)",
"",
"",
"(dedicated)",
"(dedicated)",
"(dedicated)",
"(dedicated)",
},
{ // m_DedicatedMenuButton
DS3DDX_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
DS3DDX_BUTTON_MENURIGHT, // MENU_BUTTON_RIGHT
DS3DDX_BUTTON_MENUUP, // MENU_BUTTON_UP
DS3DDX_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
DS3DDX_BUTTON_START, // MENU_BUTTON_START
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
},
{ // m_SecondaryMenuButton
DS3DDX_BUTTON_HANDLEFT, // MENU_BUTTON_LEFT
DS3DDX_BUTTON_HANDRIGHT, // MENU_BUTTON_RIGHT
DS3DDX_BUTTON_HANDUP, // MENU_BUTTON_UP
DS3DDX_BUTTON_HANDDOWN, // MENU_BUTTON_DOWN
DS3DDX_BUTTON_START, // MENU_BUTTON_START
DS3DDX_BUTTON_BACK, // MENU_BUTTON_BACK
},
{ // m_iDefaultKeyboardKey
{ // PLAYER_1
SDLK_a, // DS3DDX_BUTTON_HANDLEFT,
SDLK_z, // DS3DDX_BUTTON_FOOTDOWNLEFT,
SDLK_q, // DS3DDX_BUTTON_FOOTUPLEFT,
SDLK_w, // DS3DDX_BUTTON_HANDUP,
SDLK_x, // DS3DDX_BUTTON_HANDDOWN,
SDLK_e, // DS3DDX_BUTTON_FOOTUPRIGHT,
SDLK_c, // DS3DDX_BUTTON_FOOTDOWNRIGHT,
SDLK_d, // DS3DDX_BUTTON_HANDRIGHT,
SDLK_RETURN, // DS3DDX_BUTTON_START,
SDLK_ESCAPE, // DS3DDX_BUTTON_BACK
SDLK_LEFT, //no default key // DS3DDX_BUTTON_MENULEFT
SDLK_RIGHT, //no default key // DS3DDX_BUTTON_MENURIGHT
SDLK_UP, // DS3DDX_BUTTON_MENUUP
SDLK_DOWN, // DS3DDX_BUTTON_MENUDOWN
},
{ // PLAYER_2
-1, // DS3DDX_BUTTON_HANDLEFT,
-1, // DS3DDX_BUTTON_FOOTDOWNLEFT,
-1, // DS3DDX_BUTTON_FOOTUPLEFT,
-1, // DS3DDX_BUTTON_HANDUP,
-1, // DS3DDX_BUTTON_HANDDOWN,
-1, // DS3DDX_BUTTON_FOOTUPRIGHT,
-1, // DS3DDX_BUTTON_FOOTDOWNRIGHT,
-1, // DS3DDX_BUTTON_HANDRIGHT,
-1, // DS3DDX_BUTTON_START,
-1, // DS3DDX_BUTTON_BACK
-1, //no default key // DS3DDX_BUTTON_MENULEFT
-1, //no default key // DS3DDX_BUTTON_MENURIGHT
-1, // DS3DDX_BUTTON_MENUUP
-1, // DS3DDX_BUTTON_MENUDOWN
},
}
},
}; };
StyleDef g_StyleDefs[NUM_STYLES] = StyleDef g_StyleDefs[NUM_STYLES] =
@@ -937,6 +1027,41 @@ StyleDef g_StyleDefs[NUM_STYLES] =
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
2,0,4,1,3 2,0,4,1,3
}, },
},
{ // DS3DDX_SINGLE
GAME_DS3DDX, // m_Game
true, // m_bUsedForGameplay
true, // m_bUsedForEdit
"single", // m_szName
NOTES_TYPE_PARA_SINGLE, // m_NotesType
StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType
{ 320, 320 }, // m_iCenterX
8, // m_iColsPerPlayer
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
{ // PLAYER_1
{ TRACK_1, GAME_CONTROLLER_1, DS3DDX_BUTTON_HANDLEFT, -DS3DDX_COL_SPACING*3 },
{ TRACK_2, GAME_CONTROLLER_1, DS3DDX_BUTTON_FOOTDOWNLEFT, -DS3DDX_COL_SPACING*2 },
{ TRACK_3, GAME_CONTROLLER_1, DS3DDX_BUTTON_FOOTUPLEFT, -DS3DDX_COL_SPACING*1 },
{ TRACK_4, GAME_CONTROLLER_1, DS3DDX_BUTTON_HANDUP, -DS3DDX_COL_SPACING*0 },
{ TRACK_5, GAME_CONTROLLER_1, DS3DDX_BUTTON_HANDDOWN, +DS3DDX_COL_SPACING*0 },
{ TRACK_6, GAME_CONTROLLER_1, DS3DDX_BUTTON_FOOTUPRIGHT, +DS3DDX_COL_SPACING*1 },
{ TRACK_7, GAME_CONTROLLER_1, DS3DDX_BUTTON_FOOTDOWNRIGHT, +DS3DDX_COL_SPACING*2 },
{ TRACK_8, GAME_CONTROLLER_1, DS3DDX_BUTTON_HANDRIGHT, +DS3DDX_COL_SPACING*3 },
},
{ // PLAYER_2
{ TRACK_1, GAME_CONTROLLER_2, DS3DDX_BUTTON_HANDLEFT, -DS3DDX_COL_SPACING*3 },
{ TRACK_2, GAME_CONTROLLER_2, DS3DDX_BUTTON_FOOTDOWNLEFT, -DS3DDX_COL_SPACING*2 },
{ TRACK_3, GAME_CONTROLLER_2, DS3DDX_BUTTON_FOOTUPLEFT, -DS3DDX_COL_SPACING*1 },
{ TRACK_4, GAME_CONTROLLER_2, DS3DDX_BUTTON_HANDUP, -DS3DDX_COL_SPACING*0 },
{ TRACK_5, GAME_CONTROLLER_2, DS3DDX_BUTTON_HANDDOWN, +DS3DDX_COL_SPACING*0 },
{ TRACK_6, GAME_CONTROLLER_2, DS3DDX_BUTTON_FOOTUPRIGHT, +DS3DDX_COL_SPACING*1 },
{ TRACK_7, GAME_CONTROLLER_2, DS3DDX_BUTTON_FOOTDOWNRIGHT, +DS3DDX_COL_SPACING*2 },
{ TRACK_8, GAME_CONTROLLER_2, DS3DDX_BUTTON_HANDRIGHT, +DS3DDX_COL_SPACING*3 },
},
},
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
0,1,2,3,4,5,6,7
},
} }
}; };
@@ -1151,6 +1276,30 @@ ModeChoice g_ModeChoices[] =
"expert", "expert",
1 1
}, },
{
GAME_DS3DDX,
PLAY_MODE_ARCADE,
STYLE_DS3DDX_SINGLE,
DIFFICULTY_EASY,
"pretty",
1
},
{
GAME_DS3DDX,
PLAY_MODE_ARCADE,
STYLE_DS3DDX_SINGLE,
DIFFICULTY_MEDIUM,
"power",
1
},
{
GAME_DS3DDX,
PLAY_MODE_ARCADE,
STYLE_DS3DDX_SINGLE,
DIFFICULTY_HARD,
"power2",
1
},
}; };
const int NUM_MODE_CHOICES = sizeof(g_ModeChoices) / sizeof(g_ModeChoices[0]); const int NUM_MODE_CHOICES = sizeof(g_ModeChoices) / sizeof(g_ModeChoices[0]);
+7 -1
View File
@@ -423,7 +423,13 @@ void NoteData::LoadTransformed( NoteData* pOriginal, int iNewNumTracks, const in
for( int t=0; t<m_iNumTracks; t++ ) for( int t=0; t<m_iNumTracks; t++ )
{ {
const int iOriginalTrack = iOriginalTrackToTakeFrom[t]; const int iOriginalTrack = iOriginalTrackToTakeFrom[t];
ASSERT( iOriginalTrack < pOriginal->m_iNumTracks );
// ******************* WHY DO THIS? IT BREAKS SOME AUTOGEN LOADING (NAMELY DDR->DS3DDX) - Andy.
// ASSERT( iOriginalTrack < pOriginal->m_iNumTracks );
if( iOriginalTrack == -1 ) if( iOriginalTrack == -1 )
continue; continue;
m_TapNotes[t] = pOriginal->m_TapNotes[iOriginalTrack]; m_TapNotes[t] = pOriginal->m_TapNotes[iOriginalTrack];
+8
View File
@@ -145,6 +145,14 @@ void ScreenEz2SelectMusic::MenuLeft( PlayerNumber pn, const InputEventType type
void ScreenEz2SelectMusic::MenuStart( PlayerNumber pn ) void ScreenEz2SelectMusic::MenuStart( PlayerNumber pn )
{ {
if( !m_MusicBannerWheel.GetSelectedSong()->HasMusic() )
{
/* TODO: gray these out.
*
* XXX: also, make sure they're not selected by roulette */
SCREENMAN->Prompt( SM_None, "ERROR:\n \nThis song does not have a music file\n and cannot be played." );
return;
}
MUSIC->Stop(); MUSIC->Stop();
SCREENMAN->SetNewScreen( "ScreenStage" ); SCREENMAN->SetNewScreen( "ScreenStage" );
} }
+1
View File
@@ -247,6 +247,7 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
case GAME_PUMP: GAMESTATE->m_CurStyle = STYLE_PUMP_VERSUS; break; case GAME_PUMP: GAMESTATE->m_CurStyle = STYLE_PUMP_VERSUS; break;
case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break; case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break;
case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break; case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break;
case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break;
default: ASSERT(0); default: ASSERT(0);
} }
+3
View File
@@ -30,6 +30,7 @@ enum Style
STYLE_EZ2_REAL_VERSUS, STYLE_EZ2_REAL_VERSUS,
STYLE_EZ2_DOUBLE, STYLE_EZ2_DOUBLE,
STYLE_PARA_SINGLE, STYLE_PARA_SINGLE,
STYLE_DS3DDX_SINGLE,
NUM_STYLES, // leave this at the end NUM_STYLES, // leave this at the end
STYLE_NONE, STYLE_NONE,
}; };
@@ -38,6 +39,7 @@ const int NUM_DANCE_STYLES = 6;
const int NUM_PUMP_STYLES = 5; const int NUM_PUMP_STYLES = 5;
const int NUM_EZ2_STYLES = 5; const int NUM_EZ2_STYLES = 5;
const int NUM_PARA_STYLES = 1; const int NUM_PARA_STYLES = 1;
const int NUM_DS3DDX_STYLES = 1;
// Ugh. This is needed for the style icon. // Ugh. This is needed for the style icon.
// TODO: Find a more elegant way to handle this // TODO: Find a more elegant way to handle this
@@ -50,6 +52,7 @@ inline int GetStyleIndexRelativeToGame( int iGameIndex, Style style )
case 1: iStyleIndex -= NUM_DANCE_STYLES; break; // pump case 1: iStyleIndex -= NUM_DANCE_STYLES; break; // pump
case 2: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES; break; // ez2 case 2: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES; break; // ez2
case 3: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES; break; // para case 3: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES; break; // para
case 4: iStyleIndex -= NUM_DANCE_STYLES+NUM_PUMP_STYLES+NUM_EZ2_STYLES+NUM_PARA_STYLES; break; // ds3ddx
default: ASSERT(0); // invalid game index default: ASSERT(0); // invalid game index
} }
return iStyleIndex; return iStyleIndex;
@@ -15,7 +15,7 @@
const int channels = 2; const int channels = 2;
const int samplesize = channels*2; /* 16-bit */ const int samplesize = channels*2; /* 16-bit */
const int samplerate = 44100; const int samplerate = 44100;
const int buffersize_frames = 1024*4; /* in frames */ const int buffersize_frames = 1024*8; /* in frames */
const int buffersize = buffersize_frames * samplesize; /* in bytes */ const int buffersize = buffersize_frames * samplesize; /* in bytes */
const int num_chunks = 8; const int num_chunks = 8;