![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
- Качаем раздачу Pump It Up Pro [ENG] с рутрекера.
- Качаем тарбол Stepmania от 2008-01-03.
- Ставим зависимости:
sudo apt-get install libasound2-dev libpulse-dev libmad0-dev libtheora-dev libvorbis-dev libpng-dev \ libjpeg-dev libglu1-mesa-dev libgl1-mesa-dev libgtk2.0-dev xorg-dev libxrandr-dev automake1.10 \ build-essential subversion curl g++
- На всякий случай удаляем «антизависимости», если они установлены:
sudo apt-get remove libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev
- Распаковываем тарбол. Заходим в
StepMania-CVS-20080103-src
. - Применяем следующие патчи.
gtk-dlopen.patch
(Simon Ruggier <Simon80@gmail.com>)diff -urNad stepmania-20061106~/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp stepmania-20061106/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp --- stepmania-20061106~/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp 2006-01-21 20:00:04.000000000 -0500 +++ stepmania-20061106/src/arch/LoadingWindow/LoadingWindow_Gtk.cpp 2006-11-08 21:24:32.000000000 -0500 @@ -20,7 +20,10 @@ { ASSERT( Handle == NULL ); - Handle = dlopen( RageFileManagerUtil::sDirOfExecutable + "/" + "GtkModule.so", RTLD_NOW ); + // This path could be grabbed from the driver mounted as "/" by searching for it using + // GetLoadedDrivers, I think, but this hardcoded path will only end up in this package, + // so I'm not going to bother + Handle = dlopen( "/usr/lib/games/stepmania4/GtkModule.so", RTLD_NOW ); if( Handle == NULL ) return ssprintf( "dlopen(): %s", dlerror() );
missing_headers.patch
(Simon Ruggier <Simon80@gmail.com>?)diff -Nur stepmania4-3.9+4.0cvs20071107.orig/src/EnumHelper.h stepmania4-3.9+4.0cvs20071107/src/EnumHelper.h --- stepmania4-3.9+4.0cvs20071107.orig/src/EnumHelper.h 2007-02-12 06:36:41.000000000 +0100 +++ stepmania4-3.9+4.0cvs20071107/src/EnumHelper.h 2010-01-11 14:41:04.799998685 +0100 @@ -1,6 +1,7 @@ #ifndef ENUM_HELPER_H #define ENUM_HELPER_H +#include <memory> #include "LuaReference.h" #include "RageUtil.h" diff -Nur stepmania4-3.9+4.0cvs20071107.orig/src/RageFileDriverDeflate.h stepmania4-3.9+4.0cvs20071107/src/RageFileDriverDeflate.h --- stepmania4-3.9+4.0cvs20071107.orig/src/RageFileDriverDeflate.h 2007-02-12 06:36:51.000000000 +0100 +++ stepmania4-3.9+4.0cvs20071107/src/RageFileDriverDeflate.h 2010-01-11 14:42:29.432500251 +0100 @@ -4,6 +4,7 @@ #define RAGE_FILE_DRIVER_DEFLATE_H #include "RageFileBasic.h" +#include <memory> typedef struct z_stream_s z_stream; diff -Nur stepmania4-3.9+4.0cvs20071107.orig/src/StdString.h stepmania4-3.9+4.0cvs20071107/src/StdString.h --- stepmania4-3.9+4.0cvs20071107.orig/src/StdString.h 2007-07-26 19:22:46.000000000 +0200 +++ stepmania4-3.9+4.0cvs20071107/src/StdString.h 2010-01-11 14:41:04.809999462 +0100 @@ -95,6 +95,7 @@ #include <string> // basic_string #include <algorithm> // for_each, etc. #include <functional> // for StdStringLessNoCase, et al +#include <string.h> #if defined(WIN32) #include <malloc.h> // _alloca
missing_headers_2.patch
(моё)diff -Naur StepMania-CVS-20080103-src.orig/src/arch/InputHandler/InputHandler_Linux_Joystick.cpp StepMania-CVS-20080103-src/src/arch/InputHandler/InputHandler_Linux_Joystick.cpp --- StepMania-CVS-20080103-src.orig/src/arch/InputHandler/InputHandler_Linux_Joystick.cpp 2007-02-12 11:37:03.000000000 +0600 +++ StepMania-CVS-20080103-src/src/arch/InputHandler/InputHandler_Linux_Joystick.cpp 2010-11-04 13:07:00.000000000 +0600 @@ -9,6 +9,7 @@ #include <errno.h> #include <sys/types.h> +#include <sys/stat.h> #include <linux/joystick.h> #include <set> diff -Naur StepMania-CVS-20080103-src.orig/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp StepMania-CVS-20080103-src/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp --- StepMania-CVS-20080103-src.orig/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp 2007-04-17 02:31:13.000000000 +0700 +++ StepMania-CVS-20080103-src/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp 2010-11-04 13:14:00.000000000 +0600 @@ -8,6 +8,9 @@ #include <fcntl.h> #include <dirent.h> +#include <sys/types.h> +#include <sys/stat.h> + bool MemoryCardDriverThreaded_Linux::TestWrite( UsbStorageDevice* pDevice ) { if( access(pDevice->sOsMountDir, W_OK) == -1 )
mountdirs.patch
(Simon Ruggier <Simon80@gmail.com>)diff -Nur stepmania4-4.0~cvs20070702/src/arch/ArchHooks/ArchHooks_Unix.cpp stepmania4-4.0~cvs20070702.new/src/arch/ArchHooks/ArchHooks_Unix.cpp --- stepmania4-4.0~cvs20070702/src/arch/ArchHooks/ArchHooks_Unix.cpp 2007-07-02 14:27:08.000000000 -0400 +++ stepmania4-4.0~cvs20070702.new/src/arch/ArchHooks/ArchHooks_Unix.cpp 2007-07-02 16:24:39.000000000 -0400 @@ -259,25 +259,27 @@ * Lowercase the PRODUCT_ID; dotfiles and directories are almost always lowercase. */ const char *szHome = getenv( "HOME" ); - RString sProductId = PRODUCT_ID; - sProductId.MakeLower(); - RString sUserDataPath = ssprintf( "%s/.%s", szHome? szHome:".", sProductId.c_str() ); + RString sUserDataPath = ssprintf( "%s/.stepmania4", szHome? szHome:"."); + + // mutable data FILEMAN->Mount( "dir", sUserDataPath + "/Cache", "/Cache" ); FILEMAN->Mount( "dir", sUserDataPath + "/Logs", "/Logs" ); FILEMAN->Mount( "dir", sUserDataPath + "/Save", "/Save" ); FILEMAN->Mount( "dir", sUserDataPath + "/Screenshots", "/Screenshots" ); - RString Root; - struct stat st; - if( !stat(sDirOfExecutable + "/Packages", &st) && st.st_mode&S_IFDIR ) - Root = sDirOfExecutable; - else if( !stat(sDirOfExecutable + "/Songs", &st) && st.st_mode&S_IFDIR ) - Root = sDirOfExecutable; - else if( !stat(RageFileManagerUtil::sInitialWorkingDirectory + "/Songs", &st) && st.st_mode&S_IFDIR ) - Root = RageFileManagerUtil::sInitialWorkingDirectory; - else - RageException::Throw( COULDNT_FIND_SONGS.GetValue() ); - + // user supplied data + FILEMAN->Mount( "dir", sUserDataPath + "/Announcers", "/Announcers" ); + FILEMAN->Mount( "dir", sUserDataPath + "/BGAnimations", "/BGAnimations" ); + FILEMAN->Mount( "dir", sUserDataPath + "/CDTitles", "/CDTitles" ); + FILEMAN->Mount( "dir", sUserDataPath + "/Characters", "/Characters" ); + FILEMAN->Mount( "dir", sUserDataPath + "/Courses", "/Courses" ); + FILEMAN->Mount( "dir", sUserDataPath + "/NoteSkins", "/NoteSkins" ); + FILEMAN->Mount( "dir", sUserDataPath + "/Packages", "/Packages" ); + FILEMAN->Mount( "dir", sUserDataPath + "/RandomMovies", "/RandomMovies" ); + FILEMAN->Mount( "dir", sUserDataPath + "/Songs", "/Songs" ); + FILEMAN->Mount( "dir", sUserDataPath + "/Themes", "/Themes" ); + + RString Root = "/usr/share/games/stepmania4"; FILEMAN->Mount( "dir", Root, "/" ); }
storage_class.patch
(Simon Ruggier <Simon80@gmail.com>?)diff -Nur stepmania4-3.9+4.0cvs20071107.orig/src/ScreenOptionsMasterPrefs.cpp stepmania4-3.9+4.0cvs20071107/src/ScreenOptionsMasterPrefs.cpp --- stepmania4-3.9+4.0cvs20071107.orig/src/ScreenOptionsMasterPrefs.cpp 2007-07-26 19:22:43.000000000 +0200 +++ stepmania4-3.9+4.0cvs20071107/src/ScreenOptionsMasterPrefs.cpp 2010-01-11 14:21:02.870007109 +0100 @@ -127,7 +127,7 @@ } template <> -static void MovePref<bool>( int &iSel, bool bToSel, const ConfOption *pConfOption ) +void MovePref<bool>( int &iSel, bool bToSel, const ConfOption *pConfOption ) { IPreference *pPref = IPreference::GetPreferenceByName( pConfOption->m_sPrefName ); ASSERT_M( pPref != NULL, pConfOption->m_sPrefName );
swscaler.patch
(моё)diff -Naur StepMania-CVS-20080103-src.orig/build.sh StepMania-CVS-20080103-src/build.sh --- StepMania-CVS-20080103-src.orig/build.sh 2008-01-03 13:20:34.000000000 +0600 +++ StepMania-CVS-20080103-src/build.sh 2011-05-11 00:30:56.000000000 +0700 @@ -121,6 +121,8 @@ call $get http://stepmania.sourceforge.net/ffmpeg-r8448-avi.patch message 'Patching ffmpeg' call 'patch -p1 < ffmpeg-r8448-avi.patch' + message 'Downloading swscale' + call svn co svn://svn.mplayerhq.hu/mplayer/trunk/libswscale@22722 cd .. fi
- Запускаем
./build.sh
. - Складываем файл
GtkModule.so
в/usr/lib/games/stepmania4
, аstepmania
в/usr/games
. - К этому времени раздача из пункта 1, вероятно, уже скачалась :) Берём все каталоги, кроме
Cache
,NoteSkins
иprogram
и складываем их в/usr/share/games/stepmania4
, рядом с каталогомPackages
. - Накладываем туда патч:
stepmania4-data.patch
(моё)diff -Naur stepmania4.orig/Data/Defaults.ini stepmania4/Data/Defaults.ini --- stepmania4.orig/Data/Defaults.ini 2010-08-03 19:26:09.000000000 +0700 +++ stepmania4/Data/Defaults.ini 2011-05-11 23:36:59.042675620 +0700 @@ -4,7 +4,7 @@ Premium=DoubleFor1Credit SongsPerPlay=3 SoundVolumeAttract=0.3 -CoinMode=Pay +CoinMode=Home MenuTimer=1 [Options-arcade] diff -Naur stepmania4.orig/Data/Static.ini stepmania4/Data/Static.ini --- stepmania4.orig/Data/Static.ini 2010-08-03 19:26:08.000000000 +0700 +++ stepmania4/Data/Static.ini 2011-05-11 23:31:01.000000000 +0700 @@ -1,12 +1,12 @@ [Options] CurrentGame=pump Announcer= -DefaultModifiers= +DefaultModifiers=1.5x Theme=piu # Debugging: ScreenTestMode=0 -ShowLogOutput=0 +ShowLogOutput=1 ShowStats=0 ForceLogFlush=0 MonkeyInput=0 @@ -23,7 +23,6 @@ GradeWeightMiss=-2 GradeWeightCheckpointHit=0 GradeWeightCheckpointMiss=0 -HideIncompleteCourses=1 PercentScoreWeightHeld=3 PercentScoreWeightHitMine=-2 PercentScoreWeightLetGo=0 @@ -50,14 +49,11 @@ ProductID=1 # Global static preferences: -BGBrightness=1.000000 AdditionalCourseFolders= -CoinsPerCredit=1 -VideoRenderers=d3d +#AdditionalFolders=/game/piu/data AdditionalFolders= AdditionalSongFolders= AllowExtraStage=0 -CoinMode=Pay AllowMultipleHighScoreWithSameName=1 AllowMultipleInstances=0 AllowUnacceleratedRenderer=0 @@ -93,9 +89,8 @@ EditorNoteSkinP1=classic EditorNoteSkinP2=classic EditorShowBGChangesPlay=0 -EventMode=1 +EventMode=0 FailOffForFirstStageEasy=1 -FastLoad=0 FailOffInBeginner=0 FastLoadAdditionalSongs=0 FrameLimitPercent=0.000000 @@ -126,7 +121,7 @@ MemoryCardOsMountPointP2= MemoryCardProfileImportSubdirs= MemoryCardProfileSubdir=Pump It Up Pro -MercifulBeginner=1 +MercifulBeginner=0 MercifulDrain=0 MercifulSuperMeter=0 MinPercentageForMachineCourseHighScore=0.000100 @@ -161,7 +156,7 @@ ShowDancingCharacters=Off ShowDanger=1 ShowInstructions=0 -ShowLoadingWindow=1 +ShowLoadingWindow=0 ShowLyrics=0 ShowMasks=0 ShowNativeLanguage=1 @@ -241,8 +236,8 @@ VideoRenderers=opengl IgnoredDialogs= -InputDrivers=MK6,Keyboard,Joystick,X11 -#InputDrivers=MK6 +#InputDrivers=MK6,Keyboard,Joystick,X11 +InputDrivers=MK6 LightsDriver=Export,SystemMessage MemoryCardProfiles=1 @@ -263,11 +258,11 @@ Fallback=Options-arcade VisualDelaySeconds=-0.009 DisplayAspectRatio=1.6666666 -BGBrightness=0.800000 +BGBrightness=0.850000 [Options-arcade-gx] Fallback=Options-arcade VisualDelaySeconds=0 DisplayAspectRatio=1.333333 -BGBrightness=0.800000 +BGBrightness=0.850000 diff -Naur stepmania4.orig/Themes/piu/BGAnimations/_shared underlay/default.lua stepmania4/Themes/piu/BGAnimations/_shared underlay/default.lua --- stepmania4.orig/Themes/piu/BGAnimations/_shared underlay/default.lua 2010-08-03 20:49:20.000000000 +0700 +++ stepmania4/Themes/piu/BGAnimations/_shared underlay/default.lua 2011-05-11 23:33:57.442675510 +0700 @@ -71,8 +71,9 @@ local function TweenOn() return Var "PreviousScreen" ~= "" and not THEME:GetMetric(Var "PreviousScreen", "ShowStageNumber"); end local function TweenOff() - local sNext = SCREENMAN:GetTopScreen():GetNextScreen(); - return not THEME:GetMetric(sNext, "ShowStageNumber"); + --local sNext = SCREENMAN:GetTopScreen():GetNextScreen(); + --return not THEME:GetMetric(sNext, "ShowStageNumber"); + return true; end if THEME:GetMetric(Var "LoadingScreen", "ShowStageNumber") then diff -Naur stepmania4.orig/Themes/piu/metrics.ini stepmania4/Themes/piu/metrics.ini --- stepmania4.orig/Themes/piu/metrics.ini 2010-08-03 18:18:15.000000000 +0700 +++ stepmania4/Themes/piu/metrics.ini 2011-05-11 23:34:50.752675541 +0700 @@ -76,14 +76,12 @@ ShowStageNumber=false InDelay=0 OutDelay=0 -LightsMode="LightsMode_MenuStartAndDirections" [ScreenEvaluation] NextScreen=GetEvaluationNextScreen() PrepareScreens="ScreenProfileLoad,ScreenProfileSave,ScreenSelectMusic,ScreenEnterName,ScreenContinue,ScreenSelectPlayMode,ScreenGameOver" GroupedScreens="ScreenEvaluation,ScreenProfileLoad,ScreenProfileSave,ScreenSelectMusic,ScreenEnterName,ScreenContinue,ScreenSelectPlayMode,ScreenGameOver" PersistScreens="ScreenEvaluation,ScreenProfileLoad,ScreenProfileSave,ScreenSelectMusic,ScreenEnterName,ScreenContinue,ScreenSelectPlayMode,ScreenGameOver" -LightsMode="LightsMode_MenuStartOnly" PlayerOptionsSeparator=", " PlayerOptionsHideFailType=true @@ -472,7 +470,6 @@ [ScreenTestLights] TextX=SCREEN_CENTER_X TextY=SCREEN_CENTER_Y -LightsMode=nil [DifficultyList] ItemsSpacingY=33 @@ -673,7 +670,6 @@ [ScreenOptionsService] NumRowsShown=12 -LightsMode="LightsMode_MenuStartOnly" IconsP1OnCommand=visible,false IconsP2OnCommand=visible,false @@ -683,7 +679,7 @@ ExplanationP1OnCommand=visible,false ExplanationP2OnCommand=visible,false -LineNames="CoinOptions,InsertCredit,ClearCredits,KeyJoyMappings,Patch,Addon,TestInput,TestLights,Diagnostics,ToggleSongs,Noise,Bookkeeping,ReloadSongs" +LineNames="CoinOptions,InsertCredit,ClearCredits,KeyJoyMappings,Profiles,Patch,Addon,TestInput,TestLights,Diagnostics,ToggleSongs,Noise,Bookkeeping,ReloadSongs" #LineNames="CoinOptions,InsertCredit,ClearCredits,Patch,Addon,TestInput,TestLights,Diagnostics,ToggleSongs,Noise,Bookkeeping,KeyJoyMappings,ReloadSongs" # This NextScreen is only used for the "exit" choice. LineCoinOptions="gamecommand;screen,ScreenOptionsServiceOptions;name,Coin Options" @@ -699,6 +695,7 @@ LineClearCredits="gamecommand;clearcredits;name,ClearCredits" LineReloadSongs="gamecommand;screen,ScreenReloadSongs;name,Reload Songs" LineToggleSongs="gamecommand;screen,ScreenOptionsToggleSongs;name,ToggleSongs" +LineProfiles="gamecommand;screen,ScreenOptionsManageProfiles;name,Profiles" PrepareScreens="ScreenOptionsServiceOptions,ScreenCenterImage,ScreenUSBPatch,ScreenMapControllers,ScreenTestInput,ScreenTestLights,ScreenArcadeDiags,ScreenNoise,ScreenBookkeeping,ScreenReloadSongs" GroupedScreens="ScreenOptionsService,ScreenOptionsServiceOptions,ScreenCenterImage,ScreenUSBPatch,ScreenMapControllers,ScreenTestInput,ScreenTestLights,ScreenArcadeDiags,ScreenNoise,ScreenBookkeeping,ScreenReloadSongs" @@ -706,7 +703,6 @@ [ScreenOptionsServiceChild] CancelTransitionsOut=true -LightsMode="LightsMode_MenuStartOnly" [ScreenUSBPatch] Class=SCREENMAN:ScreenClassExists("ScreenUSBPatch") and "ScreenUSBPatch" or "ScreenWithMenuElementsSimple" @@ -747,7 +743,7 @@ [ScreenOptionsServiceOptions] Fallback="ScreenOptionsServiceChild" LineNames="1,2,3,4,5,7,8,9,10" -Line1="conf,CoinModeNoHome" +Line1="conf,CoinMode" Line2="conf,SongsPerPlay" Line3="conf,CoinsPerCredit" Line4="conf,LifeDifficulty" @@ -759,7 +755,7 @@ [ScreenOptionsMaster] # Sort serious skins first. -NoteSkinSortOrder="rhythm,classic,vintage" +NoteSkinSortOrder="default,classic" SongMenu="12" SongMenuDefault="" SongMenu,1="name,Speed;screen,Speed" @@ -930,9 +926,9 @@ DefaultSong=GetDefaultSong() [CodeDetector] -Easier1="" +Easier1="UpLeft" Easier2="" -Harder1="" +Harder1="UpRight" Harder2="" NextSort1="" NextSort2=""
Длинно получилось и не факт, что патчи копипейстить удобно. Надо разобраться, как делают deb-репозитории, и поднять у себя.
no subject
Date: 2011-05-12 00:09 (UTC)no subject
Date: 2011-09-20 06:16 (UTC)no subject
Date: 2011-09-20 06:52 (UTC)