yurikhan: (Default)
[personal profile] yurikhan
  1. Качаем раздачу Pump It Up Pro [ENG] с рутрекера.
  2. Качаем тарбол Stepmania от 2008-01-03.
  3. Ставим зависимости:
    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++
  4. На всякий случай удаляем «антизависимости», если они установлены:
    sudo apt-get remove libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev
  5. Распаковываем тарбол. Заходим в StepMania-CVS-20080103-src.
  6. Применяем следующие патчи.
    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
     
  7. Запускаем ./build.sh.
  8. Складываем файл GtkModule.so в /usr/lib/games/stepmania4, а stepmania в /usr/games.
  9. К этому времени раздача из пункта 1, вероятно, уже скачалась :) Берём все каталоги, кроме Cache, NoteSkins и program и складываем их в /usr/share/games/stepmania4, рядом с каталогом Packages.
  10. Накладываем туда патч:
    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-репозитории, и поднять у себя.

Date: 2011-05-12 00:09 (UTC)
From: [identity profile] wra-ripe.livejournal.com
Всё в игрушки играешь? :)

Date: 2011-09-20 06:16 (UTC)
From: [identity profile] vospi.livejournal.com
скажите, можно разместить материал в сообществе [livejournal.com profile] ru_simfiles? там это наверняка кому-нибудь пригодится.

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2025-07-03 23:26
Powered by Dreamwidth Studios