From 393c7f5e6e0a5bc109b188e447c606b848375481 Mon Sep 17 00:00:00 2001 From: Matt Denham Date: Wed, 29 Oct 2003 08:12:18 +0000 Subject: [PATCH] more Beatmania/IIDX support (bm-single7, bm-double, bm-double7 added) --- stepmania/src/GameConstantsAndTypes.h | 9 +- stepmania/src/GameManager.cpp | 138 +++++++++++++++++++++++++- stepmania/src/NotesLoaderBMS.cpp | 20 ++-- 3 files changed, 153 insertions(+), 14 deletions(-) diff --git a/stepmania/src/GameConstantsAndTypes.h b/stepmania/src/GameConstantsAndTypes.h index 6a633c04f5..7adad56843 100644 --- a/stepmania/src/GameConstantsAndTypes.h +++ b/stepmania/src/GameConstantsAndTypes.h @@ -83,10 +83,11 @@ enum StepsType STEPS_TYPE_DS3DDX_SINGLE, STEPS_TYPE_BM_SINGLE, // MD 10/26/03 - uncomment the following three once we get support in for them -// STEPS_TYPE_BM_DOUBLE, -// STEPS_TYPE_BM_SINGLE7, -// STEPS_TYPE_BM_DOUBLE7, - STEPS_TYPE_MANIAX_SINGLE, +// MD 10/28/03 - I was bored. I wrote support. + STEPS_TYPE_BM_DOUBLE, + STEPS_TYPE_BM_SINGLE7, + STEPS_TYPE_BM_DOUBLE7, + STEPS_TYPE_MANIAX_SINGLE, STEPS_TYPE_MANIAX_DOUBLE, STEPS_TYPE_TECHNO_SINGLE8, STEPS_TYPE_PNM_FIVE, diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index 834a5d7956..febb94ca84 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -56,9 +56,10 @@ struct { { "ds3ddx-single", 8 }, { "bm-single", 6 }, // MD 10/26/03 - for future support -// { "bm-double", 12 }, -// { "bm-single7", 8 }, -// { "bm-double7", 16 }, +// MD 10/28/03 - The future is here! + { "bm-double", 12 }, + { "bm-single7", 8 }, + { "bm-double7", 16 }, { "maniax-single", 4 }, { "maniax-double", 8 }, { "techno-single8", 8 }, @@ -1594,6 +1595,137 @@ StyleDef g_StyleDefs[NUM_STYLES] = 0,1,2,3,4,5 }, }, +// MD 10/28/03 - New additions. + { // STYLE_BM_DOUBLE + GAME_BM, // m_Game + true, // m_bUsedForGameplay + true, // m_bUsedForEdit + "BM-double", // m_szName + STEPS_TYPE_BM_DOUBLE, // m_StepsType + StyleDef::ONE_PLAYER_TWO_CREDITS, // m_StyleType + { 320, 320 }, // m_iCenterX + 12, // m_iColsPerPlayer + { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; + { // PLAYER_1 + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_KEY1, -BM_COL_SPACING*6.0f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_KEY2, -BM_COL_SPACING*5.0f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_KEY3, -BM_COL_SPACING*4.0f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_KEY4, -BM_COL_SPACING*3.0f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_KEY5, -BM_COL_SPACING*2.0f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_SCRATCHUP,-BM_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_2, BM_BUTTON_KEY1, +BM_COL_SPACING*0.5f }, + { TRACK_8, GAME_CONTROLLER_2, BM_BUTTON_KEY2, +BM_COL_SPACING*1.5f }, + { TRACK_9, GAME_CONTROLLER_2, BM_BUTTON_KEY3, +BM_COL_SPACING*2.5f }, + { TRACK_10, GAME_CONTROLLER_2, BM_BUTTON_KEY4, +BM_COL_SPACING*3.5f }, + { TRACK_11, GAME_CONTROLLER_2, BM_BUTTON_KEY5, +BM_COL_SPACING*4.5f }, + { TRACK_12, GAME_CONTROLLER_2, BM_BUTTON_SCRATCHUP,+BM_COL_SPACING*6.0f }, + }, + { // PLAYER_2 + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_KEY1, -BM_COL_SPACING*6.0f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_KEY2, -BM_COL_SPACING*5.0f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_KEY3, -BM_COL_SPACING*4.0f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_KEY4, -BM_COL_SPACING*3.0f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_KEY5, -BM_COL_SPACING*2.0f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_SCRATCHUP,-BM_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_2, BM_BUTTON_KEY1, +BM_COL_SPACING*0.5f }, + { TRACK_8, GAME_CONTROLLER_2, BM_BUTTON_KEY2, +BM_COL_SPACING*1.5f }, + { TRACK_9, GAME_CONTROLLER_2, BM_BUTTON_KEY3, +BM_COL_SPACING*2.5f }, + { TRACK_10, GAME_CONTROLLER_2, BM_BUTTON_KEY4, +BM_COL_SPACING*3.5f }, + { TRACK_11, GAME_CONTROLLER_2, BM_BUTTON_KEY5, +BM_COL_SPACING*4.5f }, + { TRACK_12, GAME_CONTROLLER_2, BM_BUTTON_SCRATCHUP,+BM_COL_SPACING*6.0f }, + }, + }, + { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; + 0,1,2,3,4,5,6,7,8,9,10,11 + }, + }, + { // STYLE_BM_SINGLE7 + GAME_BM, // m_Game + true, // m_bUsedForGameplay + true, // m_bUsedForEdit + "BM-single7", // m_szName + STEPS_TYPE_BM_SINGLE, // m_StepsType + StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType + { 160, 480 }, // m_iCenterX + 8, // m_iColsPerPlayer + { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; + { // PLAYER_1 + { TRACK_8, GAME_CONTROLLER_1, BM_BUTTON_SCRATCHUP,-BM_COL_SPACING*3.5f }, + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_KEY1, -BM_COL_SPACING*2.0f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_KEY2, -BM_COL_SPACING*1.0f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_KEY3, -BM_COL_SPACING*0.0f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_KEY4, +BM_COL_SPACING*1.0f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_KEY5, +BM_COL_SPACING*2.0f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_KEY6, +BM_COL_SPACING*3.0f }, + { TRACK_7, GAME_CONTROLLER_1, BM_BUTTON_KEY7, +BM_COL_SPACING*4.0f }, + }, + { // PLAYER_2 + { TRACK_1, GAME_CONTROLLER_2, BM_BUTTON_KEY1, -BM_COL_SPACING*3.5f }, + { TRACK_2, GAME_CONTROLLER_2, BM_BUTTON_KEY2, -BM_COL_SPACING*2.5f }, + { TRACK_3, GAME_CONTROLLER_2, BM_BUTTON_KEY3, -BM_COL_SPACING*1.5f }, + { TRACK_4, GAME_CONTROLLER_2, BM_BUTTON_KEY4, -BM_COL_SPACING*0.5f }, + { TRACK_5, GAME_CONTROLLER_2, BM_BUTTON_KEY5, +BM_COL_SPACING*0.5f }, + { TRACK_6, GAME_CONTROLLER_2, BM_BUTTON_KEY6, +BM_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_2, BM_BUTTON_KEY7, +BM_COL_SPACING*2.5f }, + { TRACK_8, GAME_CONTROLLER_2, BM_BUTTON_SCRATCHUP,+BM_COL_SPACING*4.0f }, + }, + }, + { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; + 0,1,2,3,4,5,6,7 + }, + }, + { // STYLE_BM_DOUBLE7 + GAME_BM, // m_Game + true, // m_bUsedForGameplay + true, // m_bUsedForEdit + "BM-double7", // m_szName + STEPS_TYPE_BM_DOUBLE7, // m_StepsType + StyleDef::ONE_PLAYER_TWO_CREDITS, // m_StyleType + { 320, 320 }, // m_iCenterX + 16, // m_iColsPerPlayer + { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; + { // PLAYER_1 + { TRACK_8, GAME_CONTROLLER_1, BM_BUTTON_SCRATCHUP,-BM_COL_SPACING*8.0f }, + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_KEY1, -BM_COL_SPACING*6.5f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_KEY2, -BM_COL_SPACING*5.5f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_KEY3, -BM_COL_SPACING*4.5f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_KEY4, -BM_COL_SPACING*3.5f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_KEY5, -BM_COL_SPACING*2.5f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_KEY6, -BM_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_1, BM_BUTTON_KEY7, -BM_COL_SPACING*0.5f }, + { TRACK_9, GAME_CONTROLLER_2, BM_BUTTON_KEY1, +BM_COL_SPACING*0.5f }, + { TRACK_10, GAME_CONTROLLER_2, BM_BUTTON_KEY2, +BM_COL_SPACING*1.5f }, + { TRACK_11, GAME_CONTROLLER_2, BM_BUTTON_KEY3, +BM_COL_SPACING*2.5f }, + { TRACK_12, GAME_CONTROLLER_2, BM_BUTTON_KEY4, +BM_COL_SPACING*3.5f }, + { TRACK_13, GAME_CONTROLLER_2, BM_BUTTON_KEY5, +BM_COL_SPACING*4.5f }, + { TRACK_14, GAME_CONTROLLER_2, BM_BUTTON_KEY6, +BM_COL_SPACING*5.5f }, + { TRACK_15, GAME_CONTROLLER_2, BM_BUTTON_KEY7, +BM_COL_SPACING*6.5f }, + { TRACK_16, GAME_CONTROLLER_2, BM_BUTTON_SCRATCHUP,+BM_COL_SPACING*8.0f }, + }, + { // PLAYER_2 + { TRACK_8, GAME_CONTROLLER_1, BM_BUTTON_SCRATCHUP,-BM_COL_SPACING*8.0f }, + { TRACK_1, GAME_CONTROLLER_1, BM_BUTTON_KEY1, -BM_COL_SPACING*6.5f }, + { TRACK_2, GAME_CONTROLLER_1, BM_BUTTON_KEY2, -BM_COL_SPACING*5.5f }, + { TRACK_3, GAME_CONTROLLER_1, BM_BUTTON_KEY3, -BM_COL_SPACING*4.5f }, + { TRACK_4, GAME_CONTROLLER_1, BM_BUTTON_KEY4, -BM_COL_SPACING*3.5f }, + { TRACK_5, GAME_CONTROLLER_1, BM_BUTTON_KEY5, -BM_COL_SPACING*2.5f }, + { TRACK_6, GAME_CONTROLLER_1, BM_BUTTON_KEY6, -BM_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_1, BM_BUTTON_KEY7, -BM_COL_SPACING*0.5f }, + { TRACK_9, GAME_CONTROLLER_2, BM_BUTTON_KEY1, +BM_COL_SPACING*0.5f }, + { TRACK_10, GAME_CONTROLLER_2, BM_BUTTON_KEY2, +BM_COL_SPACING*1.5f }, + { TRACK_11, GAME_CONTROLLER_2, BM_BUTTON_KEY3, +BM_COL_SPACING*2.5f }, + { TRACK_12, GAME_CONTROLLER_2, BM_BUTTON_KEY4, +BM_COL_SPACING*3.5f }, + { TRACK_13, GAME_CONTROLLER_2, BM_BUTTON_KEY5, +BM_COL_SPACING*4.5f }, + { TRACK_14, GAME_CONTROLLER_2, BM_BUTTON_KEY6, +BM_COL_SPACING*5.5f }, + { TRACK_15, GAME_CONTROLLER_2, BM_BUTTON_KEY7, +BM_COL_SPACING*6.5f }, + { TRACK_16, GAME_CONTROLLER_2, BM_BUTTON_SCRATCHUP,+BM_COL_SPACING*8.0f }, + }, + }, + { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + }, + }, +// end MD 10/28/03 { // STYLE_MANIAX_SINGLE GAME_MANIAX, // m_Game true, // m_bUsedForGameplay diff --git a/stepmania/src/NotesLoaderBMS.cpp b/stepmania/src/NotesLoaderBMS.cpp index 802d5faa50..d6d69df262 100644 --- a/stepmania/src/NotesLoaderBMS.cpp +++ b/stepmania/src/NotesLoaderBMS.cpp @@ -42,7 +42,9 @@ // So the magics for these are: // pnm-nine: nothing >5, with 12, 14, 22 and/or 24 // pnm-five: nothing >5, with 14 and/or 22 -// bm-*: 18/19 - 7-key modes have 16/17/26/27 +// bm-*: can't tell difference between bm-single and dance-solo +// 18/19 marks bm-single7, 28/29 marks bm-double7 +// bm-double uses 21-26. // int iTracks[MAX_NOTE_TRACKS]; @@ -70,19 +72,23 @@ StepsType BMSLoader::CheckTracksMagic( void ) { case 5: return STEPS_TYPE_PNM_FIVE; case 6: + // No reason to return STEPS_TYPE_BM_SINGLE here... + // ...at least, none that I can see. Same data, no way to distinguish. + // We also don't need to autogen between them, though. return STEPS_TYPE_DANCE_SOLO; case 8: // Could also be couple or 7-key. - // TODO: Insert the magic check between IIDX and DDR Double - 12, 14, 18, or 19. - // Until BM 7-key is supported in stepfiles, we'll assume it's DDR. - return STEPS_TYPE_DANCE_DOUBLE; + if (iTracks[7] == 0 && iTracks[8] == 0 && iTracks[1] == 0 && iTracks[3] == 0) + // these four tracks are IIDX-related + return STEPS_TYPE_DANCE_DOUBLE; + else + return STEPS_TYPE_BM_SINGLE7; case 9: return STEPS_TYPE_PNM_NINE; case 12: - // TODO: Uncomment these once BM Double 5/7-key is supported. - // return STEPS_TYPE_BM_DOUBLE; + return STEPS_TYPE_BM_DOUBLE; case 16: - // return STEPS_TYPE_BM_DOUBLE7; + return STEPS_TYPE_BM_DOUBLE7; default: return STEPS_TYPE_INVALID; }