Merge pull request #2 from stepmania/master

Merge from latest master.
This commit is contained in:
blindbox
2016-02-28 17:10:02 +08:00
22 changed files with 337 additions and 76 deletions
+4
View File
@@ -22,6 +22,10 @@ list(APPEND FFMPEG_CONFIGURE
"--enable-static"
)
if(CMAKE_POSITION_INDEPENDENT_CODE)
list(APPEND FFMPEG_CONFIGURE "--enable-pic")
endif()
if(MACOSX)
# TODO: Remove these two items when Mac OS X StepMania builds in 64-bit.
list(APPEND FFMPEG_CONFIGURE
+266
View File
@@ -0,0 +1,266 @@
[Screen]
HelpText=&BACK; Keluar &START; Select &SELECT; Pilihan &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Pindah
[ScreenWithMenuElements]
HelpText=&BACK; Keluar &START; Select &MENULEFT;&MENURIGHT; Pindah
StageCounter=%s Stage
EventStageCounter=Stage %03i
[ScreenTitleMenu]
HelpText=&BACK; Keluar &START; Select &MENUUP;&MENUDOWN; Pindah
Network OK=Jaringan OK
Offline=Luring
Connected to %s=Tersambung ke %s
CurrentGametype=Sedang bermain: %s
LifeDifficulty=Kesulitan Nyawa: %s
TimingDifficulty=Kesulitan Timing: %s
%i Lagu (%i Grup), %i Courses=%i Lagu (%i Grup), %i Kursus
[ScreenTitleJoin]
HelpText=Tekan &START; untuk Bermain
HelpTextJoin=Tekan &START; untuk Bermain
HelpTextWait=Masukan Kredit!
EventMode=Modus Acara
JointPremiumMain=Joint Premium
JointPremiumSecondary=Dua pemain dapat bermain dengan satu kredit!
DoublesPremiumMain=Premium Dobel
DoublesPremiumSecondary=Bermain Dobel untuk satu kredit!
[ScreenCaution]
HelpText=&START; Lanjut
[ScreenDemonstration]
Demonstration=Demonstrasi
%s - %s [dari %s]=%s - %s\n[dari %s]
[ScreenQuickSetupOverview]
Explanation=Setup Cepat memberikan cara mudah untuk mengatur ubahan-umum dan preferensi-preferensi berguna.
[ScreenProfileLoad]
HelpText=... Memuat profile, silahkan tunggu ...
[ScreenSelectProfile]
%d Lagu Dimainkan=%d Lagu telah dimainkan
%d Lagu Dimainkan=%d Lagu telah dimainkan
PressStart=Tekan &START; untuk bergabung.
HelpText=&MENUUP;&MENUDOWN; Ganti Profil &START; Pilih/Gabung &BACK; Cabut
[ScreenSelectMaster]
HelpText=&BACK; Keluar &START; Pilih / Gabung &MENULEFT;&MENURIGHT; Pindah
[ScreenSelectPlayMode]
HelpText=&BACK; Keluar &START; Pilih / Gabung &MENULEFT;&MENURIGHT; Pindah
EasyExplanation=Sebuah modus untuk Pemula.
HardExplanation= Untuk ahli.
OldNormalExplanation=Tak terlalu gampang, tak terlalu sulit.
NormalExplanation=Mainkan semua lagu favorit-mu!
RaveExplanation=Bertarung antar teman atau musuh.
NonstopExplanation=Beberapa lagu berturut-turut
OniExplanation=Sebuah tes skil yang sejati.
EndlessExplanation=Tak berhenti, terus berjalan.
[ScreenSelectPlayStyle]
HelpText=&BACK; Keluar &START; Pilih &MENULEFT;&MENURIGHT; Pindah
[ScreenGameInformation]
HelpText=&BACK; Keluar &START; Lewati
[ScreenSelectMusic]
NEW!=BARU!
Press Start For Options=Tekan &START; untuk Pilihan
Entering Options=Memasuki Pilihan
HelpText=&BACK; Keluar &START; Pilih / Gabung &SELECT; Kode Ajaib &MENULEFT;&MENURIGHT; Pindah::&AUXWHITE;+[KEY] Sortir ke [KEY]
AlternateHelpText=&SELECT;+&MENULEFT;&MENURIGHT; Ubah Kesulitan &SELECT;+&START; Sortir Cepat
[ScreenSelectCourse]
HelpText=&BACK; Keluar &START; Pilih / Gabung &SELECT; Kode Ajaib &MENULEFT;&MENURIGHT; Pindah::&UP;&DOWN;&UP;&DOWN; untuk tipe course yang lain
[ScreenOptions]
HelpText=&BACK; Keluar &START; Pilih &SELECT; Ke Atas &MENULEFT;&MENURIGHT;&MENUUP;&MENUDOWN; Pindah
Disqualified=Skor akan didiskualifikasi!
[ScreenStageInformation]
HelpText=
[ScreenGameplay]
GiveUpAbortedText=
GiveUpStartText=Tekan dua kali &START; untuk mengakses menu
GiveUpBackText=Tekan dua kali &BACK; untuk mengakses menu
SkipSongText=Tekan dua kali &SELECT; untuk mengakses menu
HelpText=
[PauseMenu]
continue_playing=Lanjutkan Bermain
end_course=Akhiri Course
forfeit_course=Tinggalkan Course
forfeit_song=Tinggalkan lagu
pause_count=Hitungan Tunda
restart_song=Mulai ulang Lagu
skip_song=Lewati Lagu
[ScreenHeartEntry]
Enter Heart Rate=Masukan Detak Jantung
Song Length=Panjang Lagu
Heart Rate=Detak Jantung
[ScreenEvaluation]
HelpText=&BACK; Keluar &START; Lanjutkan &MENULEFT;+&MENURIGHT; atau &SELECT; Ambil Gambar
LifeDifficulty=Kesulitan Nyawa: %s
TimingDifficulty=Kesulitan Timing: %s
MachineRecord=Rekor Mesin #%i!
PersonalRecord=Rekor Personal #%i!
ITG DP:=ITG DP:
MIGS DP:=MIGS DP:
[ScreenContinue]
HelpText=&START; Advance Timer
[OptionTitles]
AutoSetStyle=Auto Set Style
NotePosition=Posisi Not
ComboOnRolls=Rolls Increment Combo
ComboUnderField=Combo Under Field
GameplayShowScore=Tunjukan Skor
GameplayShowStepsDisplay=Tunjukan Steps
ShowLotsaOptions=Kepadatan Opsi
LongFail=Panjang Kegagalan
FlashyCombo=Kombo Berkedip-kedip
GameplayFooter=Gameplay Footer
FancyUIBG=Latar Belakang UI Indah
TimingDisplay=Layar Timing
[OptionExplanations]
AutoSetStyle=Memperbolehkan game untuk mengumpulan seluruh modus 1P dan 2P daripada satu style saja. Ini mungkin membutuhkan mulai ulang Stepmania (atau tekan Shift+F2).
NotePosition=Menentukan dimana reseptor panah diletakan pada saat bermain.
ComboOnRolls=Pilih apabila Gulir (Rolls) akan menambah Kombo atau tidak. Jika Anda mengubah pilihan ini, Anda butuh memuat ulang metrics-nya (via Shift+F2) supaya efek ini berlaku.
ComboUnderField=Menentukan Apabila Kombo harus terletak dibawah not atau tidak.
GameplayShowScore=Tunjukan atau Sembunyikan layar skor saat bermain.
GameplayShowStepsDisplay=Tunjukan atau Sembunyikan Informasi step saat bermain.
ShowLotsaOptions=Pilih Berapa banyak garis/baris pilihan untuk dipilih dari. &oq;Few&cq; Tetapkan daftar menjadi minimal. &oq;Many&cq; tambah berbagai mod-mod pamer.
LongFail=Pilih antara gagal sm-scc "Panjang" orisinil atau gagal "Pendek" diadopsi nanti.
FlashyCombo=Menentukan apabila kilat kombo harus ditunjukan atau tidak.
GameplayFooter=Jika menyala, Munculkan footer yang menghalangi penglihatan akan datangnya panah untuk di beberapa negara (Bingkai skor DDR).
FancyUIBG=Mati/Nyalakan latar belakang UI indah. "Mati (Off)" disarankan untuk komputer yang lama. Ubahan akan berlaku pada layar awal.
TimingDisplay=Mati/Nyalakan layar segmen timing pada meteran progres lagu.
ScoringType=Menetapkan metode skoring mana untuk digunakan. Jika Istimewa dipilih, Anda dapat memilih Modus Penskoran Istimewa (Special Scoring Mode) pada Opsi Tema.
Speed=Atur kelajuan panah berjalan terhadap target.
Accel=Ubah cara panah mendekati target.
Effect=Ubah ukuran atau gerakan dari panah dan/atau target.
Appearance=Kontrol penglihatan dari panah.
Turn=Ubah koreografi step dengan mengatur posisi panah.
Insert=Tambah not injak kedalam koreografi step.
Holds=Ubah beberapa not injak menjadi not tahan.
Mines=Tambah atau singkirkan not ranjau.
PlayerAutoPlay=Notefield bermain dengan sendirinya.
ScoreDisplay=Ubah cara skor terlihat.
ProTiming=Ubah cara Judgement terlihat.
Scroll=Atur arah aliran panah untuk menemui target.
NoteSkins=Pilih tampilan panah-panah yang berbeda.
Handicap=Menyingkirkan not-not. Penggunaan ini akan membatalkan skor tertinggi.
Hide=Gelap (Dark) menyembunyikan reseptor. Buta (Blind) menyembunyikan judgement. Tirai (Cover) menyembunyikan latar belakang.
Persp=Ubah sudut pandang dari aliran panah.
Steps=Atur tingkat kesulitan dari step-step.
Characters=Orang-orang berdansa.
SaveToProfileHelp=Membutuhkan profil atau kartu memori (memory card).
MusicRateHelp=Mainkan musik pada tingkat yang lebih cepat.
[StepsListDisplayRow StepsType]
Dance_Single=4
Dance_Double=8
Dance_Couple=8
Dance_Solo=6
Dance_Routine=8
Dance_Threepanel=3
Pump_Single=5
Pump_Double=10
Pump_Halfdouble=6
Pump_Couple=5
Pump_Routine=10
Kb7_Single=7
Ez2_Single=ES
Ez2_Double=ED
Ez2_Real=ER
Para_Single=PS
Ds3ddx_Single=XS
Bm_Single5=5
Bm_Double5=10
Bm_Single7=7
Bm_Double7=14
Maniax_Single=MS
Maniax_Double=MD
Techno_Single4=4
Techno_Single5=5
Techno_Single8=8
Techno_Double4=D4
Techno_Double5=D5
Techno_Double8=D8
Pnm_Five=5
Pnm_Nine=9
Guitar_Five=5
Karaoke=V
Lights_Cabinet=!
[ScreenHowToInstallSongs]
BodyHeader=Cara Mendapatkan dan Memasang Lagu untuk Stepmania
Finding Songs=Dimana untuk Mencari Lagu
Installing Songs=Cara Memasang Lagu
Importing Songs=Mengimpor dari instalasi2 Stepmania yang ada
Reload Songs=Muat ulang Lagu
Exit=Kembali ke Menu Awal
Explanation-WhereToFind=Luncurkan sebuah laman web dengan informasi dalam mencari lagu untuk digunakan pada Stepmania.
Explanation-HowToInstall=Luncurkan sebuah Laman web dengan instruksi-instruksi pemasangan lagu.
Explanation-AdditionalFolders=Apabila anda memiliki instalasi Stepmania yang lain, Anda dapat menggunakan preferensi AdditionalFolders untuk memuatnya pada Stepmania 5.
Explanation-ReloadSongs=Muat ulang lagu-lagu. Ini dibutuhkan apabila Anda telah menambahkan/mengubah/menghapus lagu selagi Stepmania sedang berjalan.
Explanation-Exit=Kembali ke menu awal.
[OptionNames]
Custom=Istimewa (Special)
Many=Banyak (Many)
Few=Sedikit (Few)
Normal=Normal
Lower=Rendah (Lower)
Short=Pendek (Short)
Long=Panjang (Long)
[ScreenTestInput]
HelpText=Tahan &BACK; atau &START; untuk Keluar.
[PaneDisplay]
Taps=Injak
Jumps=Loncat
Holds=Tahan
Mines=Ranjau
Hands=Tangan
Rolls=Gulir
Lifts=Angkat
Fakes=Palsu
S=S
V=V
A=A
F=F
C=C
[ScreenMapControllers]
Exit=Keluar
[ScreenGameOver]
GAME OVER=GAME OVER (Permainan Tamat)
Play again soon!=Main lagi nanti!
[ScreenHowToPlay]
How To Play StepMania=Cara bermain StepMania
Information=Informasi
Feet=Kaki Anda digungakan untuk bermain!
Tap=Saat panah menaik pada titik ini,\ninjak panel yang sesuai.
Jump=Injak pada kedua panel jika dua panah\nberbeda muncul bersamaan!
Miss=Jika Anda kelewat step-nya berulang kali, meteran \ndance Anda akan berkurang sampai\npermainan sudah tamat (Game Over)!
[Protiming]
MS=MD
+1 -1
View File
@@ -2,7 +2,7 @@ set(GLEW_SRC "glew-1.5.8/src/glew.c")
source_group("" FILES ${GLEW_SRC})
add_library("glew" ${GLEW_SRC})
add_library("glew" STATIC ${GLEW_SRC})
set_property(TARGET "glew" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -16,7 +16,7 @@ list(APPEND JSON_HPP
source_group("" FILES ${JSON_SRC} ${JSON_HPP})
add_library("jsoncpp" ${JSON_SRC} ${JSON_HPP})
add_library("jsoncpp" STATIC ${JSON_SRC} ${JSON_HPP})
set_property(TARGET "jsoncpp" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -58,7 +58,7 @@ set(LUA_HPP
source_group("" FILES ${LUA_SRC})
source_group("" FILES ${LUA_HPP})
add_library("lua-5.1" ${LUA_SRC} ${LUA_HPP})
add_library("lua-5.1" STATIC ${LUA_SRC} ${LUA_HPP})
set_property(TARGET "lua-5.1" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -43,7 +43,7 @@ source_group("Source Files" FILES ${MAD_SRC})
source_group("Header Files" FILES ${MAD_HPP})
source_group("Data Files" FILES ${MAD_DAT})
add_library("mad" ${MAD_SRC} ${MAD_HPP} ${MAD_DAT})
add_library("mad" STATIC ${MAD_SRC} ${MAD_HPP} ${MAD_DAT})
set_property(TARGET "mad" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -14,7 +14,7 @@ list(APPEND OGG_HPP
source_group("Source Files" FILES ${OGG_SRC})
source_group("Header Files" FILES ${OGG_HPP})
add_library("ogg" ${OGG_SRC} ${OGG_HPP} ${OGG_DAT})
add_library("ogg" STATIC ${OGG_SRC} ${OGG_HPP} ${OGG_DAT})
set_property(TARGET "ogg" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -30,7 +30,7 @@ set(PNG_HPP
source_group("" FILES ${PNG_SRC})
source_group("" FILES ${PNG_HPP})
add_library("png" ${PNG_SRC} ${PNG_HPP})
add_library("png" STATIC ${PNG_SRC} ${PNG_HPP})
set_property(TARGET "png" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -265,7 +265,7 @@ list(APPEND TOMCRYPT_HPP
source_group("headers" FILES ${TOMCRYPT_HPP})
add_library("tomcrypt" ${TOMCRYPT_SRC} ${TOMCRYPT_HPP})
add_library("tomcrypt" STATIC ${TOMCRYPT_SRC} ${TOMCRYPT_HPP})
set_property(TARGET "tomcrypt" PROPERTY FOLDER "External Libraries")
+1 -1
View File
@@ -131,7 +131,7 @@ list(APPEND TOMMATH_HPP
source_group("" FILES ${TOMMATH_SRC})
source_group("" FILES ${TOMMATH_HPP})
add_library("tommath" ${TOMMATH_SRC} ${TOMMATH_HPP})
add_library("tommath" STATIC ${TOMMATH_SRC} ${TOMMATH_HPP})
set_property(TARGET "tommath" PROPERTY FOLDER "External Libraries")
+3 -3
View File
@@ -536,13 +536,13 @@ void Actor::PreDraw() // calculate actor properties
break;
case bounce:
{
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI );
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI );
tempState.pos += m_vEffectMagnitude * fPercentOffset;
}
break;
case bob:
{
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI*2 );
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI*2 );
tempState.pos += m_vEffectMagnitude * fPercentOffset;
}
break;
@@ -550,7 +550,7 @@ void Actor::PreDraw() // calculate actor properties
{
float fMinZoom = m_vEffectMagnitude[0];
float fMaxZoom = m_vEffectMagnitude[1];
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI );
float fPercentOffset = RageFastSin( fPercentThroughEffect*PI );
float fZoom = SCALE( fPercentOffset, 0.f, 1.f, fMinZoom, fMaxZoom );
tempState.scale *= fZoom;
+2 -2
View File
@@ -396,7 +396,7 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float
// TODO: Don't index by PlayerNumber.
PerPlayerData &data = g_EffectData[pPlayerState->m_PlayerNumber];
float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY),
float fExpandMultiplier = SCALE( RageFastCos(data.m_fExpandSeconds*EXPAND_MULTIPLIER_FREQUENCY),
EXPAND_MULTIPLIER_SCALE_FROM_LOW, EXPAND_MULTIPLIER_SCALE_FROM_HIGH,
EXPAND_MULTIPLIER_SCALE_TO_LOW, EXPAND_MULTIPLIER_SCALE_TO_HIGH );
fScrollSpeed *= SCALE( fAccels[PlayerOptions::ACCEL_EXPAND],
@@ -495,7 +495,7 @@ float ArrowEffects::GetXPos( const PlayerState* pPlayerState, int iColNum, float
float fRads = acosf( fPositionBetween );
fRads += fYOffset * TORNADO_OFFSET_FREQUENCY / SCREEN_HEIGHT;
const float fAdjustedPixelOffset = SCALE( RageFastCos(fRads), TORNADO_OFFSET_SCALE_FROM_LOW, TORNADO_OFFSET_SCALE_FROM_HIGH,
const float fAdjustedPixelOffset = SCALE( RageFastCos(fRads), TORNADO_OFFSET_SCALE_FROM_LOW, TORNADO_OFFSET_SCALE_FROM_HIGH,
data.m_fMinTornadoX[iColNum], data.m_fMaxTornadoX[iColNum] );
fPixelOffsetFromCenter += (fAdjustedPixelOffset - fRealPixelOffset) * fEffects[PlayerOptions::EFFECT_TORNADO];
+5 -5
View File
@@ -129,7 +129,7 @@ void BannerCache::LoadBanner( RString sBannerPath )
{
/* The file doesn't exist. It's possible that the banner cache file is
* missing, so try to create it. Don't do this first, for efficiency. */
LOG->Trace( "Cached banner load of '%s' ('%s') failed, trying to cache ...", sBannerPath.c_str(), sCachePath.c_str() );
//LOG->Trace( "Cached banner load of '%s' ('%s') failed, trying to cache ...", sBannerPath.c_str(), sCachePath.c_str() );
/* Skip the up-to-date check; it failed to load, so it can't be up
* to date. */
@@ -138,7 +138,7 @@ void BannerCache::LoadBanner( RString sBannerPath )
}
else
{
LOG->Trace( "Cached banner load of '%s' ('%s') failed", sBannerPath.c_str(), sCachePath.c_str() );
//LOG->Trace( "Cached banner load of '%s' ('%s') failed", sBannerPath.c_str(), sCachePath.c_str() );
return;
}
}
@@ -272,7 +272,7 @@ RageTextureID BannerCache::LoadCachedBanner( RString sBannerPath )
if( sBannerPath == "" )
return ID;
LOG->Trace( "BannerCache::LoadCachedBanner(%s): %s", sBannerPath.c_str(), ID.filename.c_str() );
//LOG->Trace( "BannerCache::LoadCachedBanner(%s): %s", sBannerPath.c_str(), ID.filename.c_str() );
/* Hack: make sure Banner::Load doesn't change our return value and end up
* reloading. */
@@ -308,8 +308,8 @@ RageTextureID BannerCache::LoadCachedBanner( RString sBannerPath )
if( TEXTUREMAN->IsTextureRegistered(ID) )
return ID; /* It's all set. */
LOG->Trace( "Loading banner texture %s; src %ix%i; image %ix%i",
ID.filename.c_str(), iSourceWidth, iSourceHeight, pImage->w, pImage->h );
//LOG->Trace( "Loading banner texture %s; src %ix%i; image %ix%i",
// ID.filename.c_str(), iSourceWidth, iSourceHeight, pImage->w, pImage->h );
RageTexture *pTexture = new BannerTexture( ID, pImage, iSourceWidth, iSourceHeight );
ID.Policy = RageTextureID::TEX_VOLATILE;
+2 -2
View File
@@ -413,8 +413,8 @@ void CubicSpline::p_and_tfrac_from_t(float t, bool loop, size_t& p, float& tfrac
if(loop)
{
float max_t= static_cast<float>(m_points.size());
while(t >= max_t) { t-= max_t; }
while(t < 0.0f) { t+= max_t; }
t= std::fmod(t, max_t);
if(t < 0.0f) { t+= max_t; }
p= static_cast<size_t>(t);
tfrac= t - static_cast<float>(p);
}
+4
View File
@@ -169,6 +169,10 @@ namespace
new_screen= after_screen;
}
}
if(!SCREENMAN->IsScreenNameValid(new_screen))
{
new_screen= "ScreenInitialScreenIsInvalid";
}
SCREENMAN->SetNewScreen(new_screen);
g_NewTheme = RString();
+1 -1
View File
@@ -1102,7 +1102,7 @@ bool SMLoader::LoadNoteDataFromSimfile( const RString &path, Steps &out )
bool SMLoader::LoadFromSimfile( const RString &sPath, Song &out, bool bFromCache )
{
LOG->Trace( "Song::LoadFromSMFile(%s)", sPath.c_str() );
//LOG->Trace( "Song::LoadFromSMFile(%s)", sPath.c_str() );
MsdFile msd;
if( !msd.ReadFile( sPath, true ) ) // unescape
+1 -1
View File
@@ -940,7 +940,7 @@ bool SSCLoader::LoadNoteDataFromSimfile( const RString & cachePath, Steps &out )
bool SSCLoader::LoadFromSimfile( const RString &sPath, Song &out, bool bFromCache )
{
LOG->Trace( "Song::LoadFromSSCFile(%s)", sPath.c_str() );
//LOG->Trace( "Song::LoadFromSSCFile(%s)", sPath.c_str() );
MsdFile msd;
if( !msd.ReadFile( sPath, true ) )
+4 -4
View File
@@ -348,10 +348,10 @@ void RageBitmapTexture::Create()
if( actualID.bStretch ) sProperties += "stretch ";
if( actualID.bDither ) sProperties += "dither ";
sProperties.erase( sProperties.size()-1 );
LOG->Trace( "RageBitmapTexture: Loaded '%s' (%ux%u); %s, source %d,%d; image %d,%d.",
actualID.filename.c_str(), GetTextureWidth(), GetTextureHeight(),
sProperties.c_str(), m_iSourceWidth, m_iSourceHeight,
m_iImageWidth, m_iImageHeight );
//LOG->Trace( "RageBitmapTexture: Loaded '%s' (%ux%u); %s, source %d,%d; image %d,%d.",
// actualID.filename.c_str(), GetTextureWidth(), GetTextureHeight(),
// sProperties.c_str(), m_iSourceWidth, m_iSourceHeight,
// m_iImageWidth, m_iImageHeight );
}
void RageBitmapTexture::Destroy()
+34 -47
View File
@@ -595,60 +595,47 @@ void RageMatrixTranspose( RageMatrix* pOut, const RageMatrix* pIn )
pOut->m[j][i] = pIn->m[i][j];
}
float RageFastSin( float x )
static const unsigned int sine_table_size= 1024;
static const unsigned int sine_index_mod= sine_table_size * 2;
static const double sine_table_index_mult= static_cast<double>(sine_index_mod) / (PI*2);
static float sine_table[sine_table_size];
struct sine_initter
{
// from 0 to PI
// sizeof(table) == 4096 == one page of memory in Windows
static float table[1024];
static bool bInited = false;
if( !bInited )
sine_initter()
{
bInited = true;
for( unsigned i=0; i<ARRAYLEN(table); i++ )
for(unsigned int i= 0; i < sine_table_size; ++i)
{
float z = SCALE(i,0,ARRAYLEN(table),0.0f,PI);
table[i] = sinf(z);
float angle= SCALE(i, 0, sine_table_size, 0.0f, PI);
sine_table[i]= sinf(angle);
}
}
};
static sine_initter sinner;
// optimization
if( x == 0 )
return 0;
float fIndex = SCALE( x, 0.0f, PI*2, 0, ARRAYLEN(table)*2 );
// lerp using samples from the table
int iSampleIndex[2];
iSampleIndex[0] = (int)floorf(fIndex);
iSampleIndex[1] = iSampleIndex[0]+1;
float fRemainder = fIndex - iSampleIndex[0];
for( unsigned i=0; i<ARRAYLEN(iSampleIndex); i++ )
iSampleIndex[i] %= ARRAYLEN(table) * 2;
DEBUG_ASSERT( fRemainder>=0 && fRemainder<=1 );
float fValue[ARRAYLEN(iSampleIndex)];
for( unsigned i=0; i<ARRAYLEN(iSampleIndex); i++ )
{
int &iSample = iSampleIndex[i];
float &fVal = fValue[i];
if( iSample >= int(ARRAYLEN(table)) ) // PI <= iSample < 2*PI
{
// sin(x) == -sin(PI+x)
iSample -= ARRAYLEN(table);
DEBUG_ASSERT( iSample>=0 && iSample<int(ARRAYLEN(table)) );
fVal = -table[iSample];
}
else
{
fVal = table[iSample];
}
float RageFastSin(float angle)
{
if(angle == 0) { return 0; }
float index= angle * sine_table_index_mult;
int first_index= static_cast<int>(index);
int second_index= (first_index + 1) % sine_index_mod;
float remainder= index - first_index;
first_index%= sine_index_mod;
float first= 0.0f;
float second= 0.0f;
#define SET_SAMPLE(sample) \
if(sample##_index >= sine_table_size) \
{ \
sample= -sine_table[sample##_index - sine_table_size]; \
} \
else \
{ \
sample= sine_table[sample##_index]; \
}
return SCALE( fRemainder, 0.0f, 1.0f, fValue[0], fValue[1] );
SET_SAMPLE(first);
SET_SAMPLE(second);
#undef SET_SAMPLE
float result= lerp(remainder, first, second);
return result;
}
float RageFastCos( float x )
+1 -1
View File
@@ -233,7 +233,7 @@ void RageTextureManager::UnloadTexture( RageTexture *t )
void RageTextureManager::DeleteTexture( RageTexture *t )
{
ASSERT( t->m_iRefCount == 0 );
LOG->Trace( "RageTextureManager: deleting '%s'.", t->GetID().filename.c_str() );
//LOG->Trace( "RageTextureManager: deleting '%s'.", t->GetID().filename.c_str() );
map<RageTexture*, RageTextureID>::iterator id_entry=
m_texture_ids_by_pointer.find(t);
+1 -1
View File
@@ -642,7 +642,7 @@ void ScreenManager::PrepareScreen( const RString &sScreenName )
}
*/
TEXTUREMAN->DiagnosticOutput();
//TEXTUREMAN->DiagnosticOutput();
}
void ScreenManager::GroupScreen( const RString &sScreenName )
@@ -272,7 +272,7 @@ EventDevice::~EventDevice()
InputHandler_Linux_Event::InputHandler_Linux_Event()
{
m_NextDevice = DEVICE_JOY1;
m_NextDevice = DEVICE_JOY10;
m_bDevicesChanged = false;
if(LINUXINPUT == NULL) LINUXINPUT = new LinuxInputManager;