You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Peque <ms...@us...> - 2010-03-14 23:48:37
|
Module: performous
Branch: hiscore_in_songbrowser
Commit: 80c3a1cfd5b11f5ceee9c539828f1691508a7129
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Mon Mar 15 00:47:48 2010 +0100
Clean up. Bug is not solved.
---
game/database.cc | 2 +-
game/main.cc | 2 -
game/screen_hiscore.cc | 98 ------------------------------------------------
game/screen_hiscore.hh | 46 ----------------------
game/screen_songs.cc | 30 ++++++++------
5 files changed, 18 insertions(+), 160 deletions(-)
diff --git a/game/database.cc b/game/database.cc
index 8663c34..b478125 100644
--- a/game/database.cc
+++ b/game/database.cc
@@ -136,7 +136,7 @@ void Database::queryPerSongHiscore_HiscoreDisplay (std::ostream & os, boost::sha
for (size_t i=0; ((i<hi.size())&&(i<max_displayed)); ++i)
{
- os << i+1+start_pos << "\t"
+ os << i+start_pos+1 << "\t"
<< m_players.lookup(hi[i+start_pos].playerid) << "\t"
<< hi[i+start_pos].score << "\t"
<< "(" << hi[i+start_pos].track << ")\n";
diff --git a/game/main.cc b/game/main.cc
index 6378538..e62c9af 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -17,7 +17,6 @@
#include "screen_practice.hh"
#include "screen_configuration.hh"
#include "screen_players.hh"
-#include "screen_hiscore.hh"
#include <boost/format.hpp>
#include <boost/program_options.hpp>
@@ -169,7 +168,6 @@ void mainLoop(std::string const& songlist) {
sm.addScreen(new ScreenPractice("Practice", audio, capture));
sm.addScreen(new ScreenConfiguration("Configuration", audio));
sm.addScreen(new ScreenPlayers("Players", audio, database));
- sm.addScreen(new ScreenHiscore("Hiscore", audio, songs, database));
sm.activateScreen("Intro");
sm.flashMessage(_("Main menu..."), 0.0f, 1.0f, 1.0f); window.blank(); sm.drawFlashMessage(); window.swap();
sm.updateScreen(); // exit/enter, any exception is fatal error
diff --git a/game/screen_hiscore.cc b/game/screen_hiscore.cc
deleted file mode 100644
index 424aed5..0000000
--- a/game/screen_hiscore.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "screen_hiscore.hh"
-
-#include "configuration.hh"
-#include "audio.hh"
-#include "fs.hh"
-#include "util.hh"
-#include "database.hh"
-#include "joystick.hh"
-#include "i18n.hh"
-
-#include <iostream>
-#include <sstream>
-#include <boost/format.hpp>
-
-ScreenHiscore::ScreenHiscore(std::string const& name, Audio& audio, Songs& songs, Database& database):
- ScreenSongs(name, audio, songs, database), m_database(database), m_players(database.m_players)
-{
- m_players.setAnimMargins(5.0, 5.0);
-}
-
-void ScreenHiscore::enter() {
- m_score_text[0].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
- m_score_text[1].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
- m_score_text[2].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
- m_score_text[3].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
- m_player_icon.reset(new Surface(getThemePath("sing_pbox.svg")));
-
- // m_emptyCover.reset(new Surface(getThemePath("no_person.svg"))); // TODO use persons head
-
- m_search.text.clear();
- m_players.setFilter(m_search.text);
-
- ScreenSongs::enter();
-}
-
-void ScreenHiscore::exit() {
- m_player_icon.reset();
- m_score_text[0].reset();
- m_score_text[1].reset();
- m_score_text[2].reset();
- m_score_text[3].reset();
-
- ScreenSongs::exit();
-}
-
-void ScreenHiscore::activateNextScreen() {
- ScreenManager* sm = ScreenManager::getSingletonPtr();
- sm->activateScreen("Songs");
-}
-
-void ScreenHiscore::manageEvent(SDL_Event event) {
- input::NavButton nav(input::getNav(event));
- if (nav == input::CANCEL || nav == input::START) activateNextScreen();
- else if (nav == input::PAUSE) m_audio.togglePause();
-}
-
-/**Draw the scores in the bottom*/
-void ScreenHiscore::drawScores() {
- // Score display
- {
- unsigned int i = 0;
- for (std::list<Player>::const_iterator p = m_database.cur.begin(); p != m_database.cur.end(); ++p, ++i) {
- float act = p->activity();
- if (act == 0.0f) continue;
- glColor4f(p->m_color.r, p->m_color.g, p->m_color.b,act);
- m_player_icon->dimensions.left(-0.5 + 0.01 + 0.25 * i).fixedWidth(0.075)
- .screenBottom(-0.025);
- m_player_icon->draw();
- m_score_text[i%4]->render((boost::format("%04d") % p->getScore()).str());
- m_score_text[i%4]->dimensions().middle(-0.350 + 0.01 + 0.25 * i).fixedHeight(0.075)
- .screenBottom(-0.025);
- m_score_text[i%4]->draw();
- glColor4f(1.0, 1.0, 1.0, 1.0);
- }
- }
-}
-
-void ScreenHiscore::draw() {
- ScreenSharedInfo info;
- info.videoGap = 0.0;
-
- ScreenSongs::drawMultimedia();
- ScreenSongs::updateMultimedia(*m_song, info);
-
- std::ostringstream oss_song, oss_order;
-
- // Format the player information text
- oss_song << _("Hiscore for ") << m_song->title << "\n";
-
- m_database.queryPerSongHiscore(oss_order, m_song);
-
- // Draw song and order texts
- theme->song.draw(oss_song.str());
- theme->order.draw(oss_order.str());
-
- ScreenSongs::stopMultimedia(info);
-}
-
diff --git a/game/screen_hiscore.hh b/game/screen_hiscore.hh
deleted file mode 100644
index 0a0a5c2..0000000
--- a/game/screen_hiscore.hh
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <boost/scoped_ptr.hpp>
-#include "animvalue.hh"
-#include "cachemap.hh"
-#include "opengl_text.hh"
-#include "screen.hh"
-#include "surface.hh"
-#include "textinput.hh"
-#include "theme.hh"
-#include "video.hh"
-
-#include "screen_songs.hh"
-
-class Song;
-class Songs;
-class Audio;
-class Players;
-class Database;
-
-/// song chooser screen
-class ScreenHiscore : public ScreenSongs {
- public:
- /// constructor: songs is just used to pass to ScreenSongs
- ScreenHiscore(std::string const& name, Audio& audio, Songs& songs, Database& database);
-
- void enter();
- void exit();
- void activateNextScreen();
-
- void manageEvent(SDL_Event event);
- void draw();
- void drawScores();
-
- void setSong (boost::shared_ptr<Song> song_)
- {
- m_song = song_;
- }
-
- private:
- Database& m_database;
- Players& m_players;
- boost::scoped_ptr<Surface> m_player_icon;
- boost::scoped_ptr<SvgTxtThemeSimple> m_score_text[4];
- boost::shared_ptr<Song> m_song;
-};
diff --git a/game/screen_songs.cc b/game/screen_songs.cc
index 4a057b3..6d7e473 100644
--- a/game/screen_songs.cc
+++ b/game/screen_songs.cc
@@ -77,10 +77,12 @@ void ScreenSongs::manageEvent(SDL_Event event) {
return;
} else if (show_hiscores) {
if (nav == input::CANCEL || m_songs.empty()) show_hiscores = false;
- else if ((nav == input::UP)&&(hiscore_start_pos)) hiscore_start_pos--;
+ else if ((nav == input::UP)&&(hiscore_start_pos > 0)) hiscore_start_pos--;
else if (nav == input::DOWN) hiscore_start_pos++;
- else if (nav == input::LEFT) m_songs.advance(-1);
- else if (nav == input::RIGHT) m_songs.advance(1);
+ else if ((nav == input::MOREUP)&&(hiscore_start_pos > 4)) hiscore_start_pos -= 5;
+ else if (nav == input::MOREDOWN) hiscore_start_pos += 5;
+ else if (nav == input::LEFT) { m_songs.advance(-1); hiscore_start_pos=0; }
+ else if (nav == input::RIGHT) { m_songs.advance(1); hiscore_start_pos=0; }
else if (nav == input::START) {}; // TODO change hiscore type listed (all, just vocals, guitar easy, guitar medium, guitar hard, guit
return;
} else if (nav == input::CANCEL) {
@@ -100,16 +102,18 @@ void ScreenSongs::manageEvent(SDL_Event event) {
SDL_keysym keysym = event.key.keysym;
int key = keysym.sym;
SDLMod mod = event.key.keysym.mod;
- if (key == SDLK_r && mod & KMOD_CTRL) { m_songs.reload(); m_songs.setFilter(m_search.text); }
- if (!m_jukebox && m_search.process(keysym)) m_songs.setFilter(m_search.text);
- if (key == SDLK_F5) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 8); // Vocals
- if (key == SDLK_F6) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 4); // Guitars
- if (key == SDLK_F7) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 2); // Drums
- if (key == SDLK_F8) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 1); // Dance
- // The rest are only available when there are songs available
- else if (m_songs.empty()) return;
- else if (!m_jukebox && key == SDLK_F4) m_jukebox = true;
- else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
+ if (!show_hiscores) {
+ if (key == SDLK_r && mod & KMOD_CTRL) { m_songs.reload(); m_songs.setFilter(m_search.text); }
+ if (!m_jukebox && m_search.process(keysym)) m_songs.setFilter(m_search.text);
+ if (key == SDLK_F5) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 8); // Vocals
+ if (key == SDLK_F6) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 4); // Guitars
+ if (key == SDLK_F7) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 2); // Drums
+ if (key == SDLK_F8) m_songs.setTypeFilter(m_songs.getTypeFilter() ^ 1); // Dance
+ // The rest are only available when there are songs available
+ else if (m_songs.empty()) return;
+ else if (!m_jukebox && key == SDLK_F4) m_jukebox = true;
+ else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
+ } else if (key == SDLK_END) show_hiscores ? show_hiscores = false : show_hiscores = true;
}
}
|
|
From: Peque <ms...@us...> - 2010-03-14 19:37:30
|
Module: performous
Branch: hiscore_in_songbrowser
Commit: 9f2754676bd24c0502db70467e38b06b10dcb8ec
Author: Miguel Sánchez de León Peque <msd...@gm...>
Date: Sun Mar 14 20:26:57 2010 +0100
Hiscores displayed in screen_songs.
Music is not interrupted.
No more than 5 hiscores can be displayed at a time, but you do can navigate through them using UP and DOWN arrows.
---
game/database.cc | 25 +++++++++
game/database.hh | 1 +
game/screen_songs.cc | 53 ++++++++++++--------
game/screen_songs.hh | 2 +
game/theme.cc | 3 +-
game/theme.hh | 6 ++-
.../{songs_hiscore.svg => songs_has_hiscore.svg} | 0
.../{songs_hiscore.svg => songs_hiscores.svg} | 40 +++++++++------
8 files changed, 91 insertions(+), 39 deletions(-)
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-03-14 10:06:08
|
Module: performous
Branch: master
Commit: 81ed6d3f8d63ca1cd78cc6c80c098e6a44d892a1
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Mar 14 12:05:20 2010 +0200
Fix failvolume (need testing).
---
game/audio.cc | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/game/audio.cc b/game/audio.cc
index 69cb406..ae4acfb 100644
--- a/game/audio.cc
+++ b/game/audio.cc
@@ -68,8 +68,10 @@ void Audio::play(Sample const& s, std::string const& volumeSetting) {
if (vol > 0) vol = std::pow(10.0, (vol - 100.0) / 100.0 * 2.0);
m_volume.level(vol);
boost::shared_ptr<da::accumulate> acc(new da::accumulate());
- acc->add(da::shared_ref(new SampleStream(s.mpeg)));
- acc->add(da::shared_ref(new da::volume(vol)));
+ boost::shared_ptr<da::chain> ch(new da::chain());
+ ch->add(da::shared_ref(new SampleStream(s.mpeg)));
+ ch->add(da::shared_ref(new da::volume(vol)));
+ acc->add(da::shared_ref(ch));
m_mixer.add(da::shared_ref(acc));
}
|
|
From: Yoda-JM <yo...@us...> - 2010-03-13 12:34:32
|
Module: performous
Branch: master
Commit: 5b25b2cc5f730f374977947eb031765541a53386
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Mar 13 13:34:06 2010 +0100
Fixed FoF midi delay
---
game/songparser-ini.cc | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index 1b30e9d..f1c09b6 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -138,7 +138,7 @@ void SongParser::iniParse() {
MidiFileParser midi(s.path + "/" + s.midifilename);
int reversedNoteCount = 0;
- for (uint32_t ts = 0, end = midi.ts_last + midi.division; ts < end; ts += midi.division) s.beats.push_back(midi.get_seconds(ts)-s.start);
+ for (uint32_t ts = 0, end = midi.ts_last + midi.division; ts < end; ts += midi.division) s.beats.push_back(midi.get_seconds(ts)+s.start);
for (MidiFileParser::Tracks::const_iterator it = midi.tracks.begin(); it != midi.tracks.end(); ++it) {
// Figure out the track name
std::string name = it->name;
@@ -153,8 +153,8 @@ void SongParser::iniParse() {
Durations& dur = nm2[it2->first];
MidiFileParser::Notes const& notes = it2->second;
for (MidiFileParser::Notes::const_iterator it3 = notes.begin(); it3 != notes.end(); ++it3) {
- double beg = midi.get_seconds(it3->begin)-s.start;
- double end = midi.get_seconds(it3->end)-s.start;
+ double beg = midi.get_seconds(it3->begin)+s.start;
+ double end = midi.get_seconds(it3->end)+s.start;
if (end == 0) continue; // Note with no ending
if (beg > end) { // Reversed note
if (beg - end > 0.001) { reversedNoteCount++; continue; }
@@ -177,8 +177,8 @@ void SongParser::iniParse() {
// Process vocal tracks
for (MidiFileParser::Lyrics::const_iterator it2 = it->lyrics.begin(); it2 != it->lyrics.end(); ++it2) {
Note n;
- n.begin = midi.get_seconds(it2->begin)-s.start;
- n.end = midi.get_seconds(it2->end)-s.start;
+ n.begin = midi.get_seconds(it2->begin)+s.start;
+ n.end = midi.get_seconds(it2->end)+s.start;
n.notePrev = n.note = it2->note;
n.type = n.note > 100 ? Note::SLEEP : Note::NORMAL;
{
|
|
From: Yoda-JM <yo...@us...> - 2010-03-13 09:52:52
|
Module: performous
Branch: master
Commit: 4a637ae11abdc13b1da1bfb003595f17d0f08e97
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Mar 13 10:52:32 2010 +0100
Fixed locale folder
---
CMakeLists.txt | 2 +-
game/fs.cc | 13 +++++++++++++
game/fs.hh | 3 +++
game/main.cc | 2 +-
4 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index da4dc2d..9014ff4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,7 +42,7 @@ if(Gettext_FOUND)
elseif(APPLE)
SET(LOCALE_DIR "share/locale")
else()#other os
- SET(LOCALE_DIR "/usr/share/locale")
+ SET(LOCALE_DIR "share/locale")
endif(WIN32)
endif(NOT LOCALE_DIR)
diff --git a/game/fs.cc b/game/fs.cc
index f5d0751..7d1bf96 100644
--- a/game/fs.cc
+++ b/game/fs.cc
@@ -23,6 +23,19 @@ fs::path getHomeDir() {
return dir;
}
+fs::path getLocaleDir() {
+ static fs::path dir;
+
+ if(LOCALEDIR[0] == '/') {
+ dir = LOCALEDIR;
+ } else {
+ dir = plugin::execname().parent_path().parent_path() / LOCALEDIR;
+ std::cout << "REL: " << dir << std::endl;
+ }
+
+ return dir;
+}
+
fs::path getConfigDir() {
static fs::path dir;
diff --git a/game/fs.hh b/game/fs.hh
index 1377f7c..83b03b0 100644
--- a/game/fs.hh
+++ b/game/fs.hh
@@ -12,6 +12,9 @@ fs::path getHomeDir();
/** Get the users configuration folder **/
fs::path getConfigDir();
+/** Get the localec folder **/
+fs::path getLocaleDir();
+
/** Do mangling to convert user-entered path into path suitable for use with stdlib etc. **/
fs::path pathMangle(fs::path const& dir);
diff --git a/game/main.cc b/game/main.cc
index 0c953af..6378538 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -283,7 +283,7 @@ int main(int argc, char** argv) try {
#else
setlocale (LC_MESSAGES, "");
#endif
- bindtextdomain (PACKAGE, LOCALEDIR);
+ bindtextdomain (PACKAGE, getLocaleDir().string().c_str());
textdomain (PACKAGE);
bind_textdomain_codeset (PACKAGE, "UTF-8");
#endif
|
|
From: Yoda-JM <yo...@us...> - 2010-03-06 11:05:34
|
Module: performous
Branch: master
Commit: 38aefb8366f9437049738f79d88a59d70dec69e0
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Mar 6 12:05:11 2010 +0100
Added Boost 1.42 detection, added ini delay key
---
cmake/Modules/FindBoost.cmake | 2 +-
game/notes.hh | 2 +-
game/songparser-ini.cc | 15 ++++++++-------
game/songparser.hh | 3 +--
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/cmake/Modules/FindBoost.cmake b/cmake/Modules/FindBoost.cmake
index e8f4258..127393d 100644
--- a/cmake/Modules/FindBoost.cmake
+++ b/cmake/Modules/FindBoost.cmake
@@ -90,7 +90,7 @@ if (Boost_FOUND)
else()
# MESSAGE(STATUS "Finding Boost libraries.... ")
- SET( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} "1.41" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37" "1.36.0" "1.36" "1.34.1" "1.34.0" "1.34" "1.33.1" "1.33.0" "1.33")
+ SET( _boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS} "1.42" "1.41" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37" "1.36.0" "1.36" "1.34.1" "1.34.0" "1.34" "1.33.1" "1.33.0" "1.33")
############################################
#
diff --git a/game/notes.hh b/game/notes.hh
index f5bbe71..3ea2af3 100644
--- a/game/notes.hh
+++ b/game/notes.hh
@@ -115,7 +115,7 @@ struct DanceTrack {
//track description
std::string description;
//container for the actual note data
- Notes notes;
+ Notes notes;
};
enum DanceDifficulty {
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index 21ada72..1b30e9d 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -71,12 +71,13 @@ void SongParser::iniParseHeader() {
else if (key == "cover") s.cover = value;
else if (key == "background") s.background = value;
else if (key == "video") s.video = value;
+ else if (key == "delay") { assign(s.start, value); s.start/=1000.0; }
else if (key == "video_start_time") { assign(s.videoGap, value); s.videoGap/=1000.0; }
else if (key == "preview_start_time") { assign(s.preview_start, value); s.preview_start/=1000.0; }
// Before adding other tags: they should be checked with the already-existing tags in FoF format; in case any tag doesn't exist there, it should be discussed with FoFiX developers before adding it here.
}
if (s.title.empty() || s.artist.empty()) throw std::runtime_error("Required header fields missing");
-
+
// Parse additional data from midi file - required to get tracks info
s.midifilename = "notes.mid";
// Compose regexps to find music files
@@ -134,10 +135,10 @@ void SongParser::iniParse() {
Song& s = m_song;
s.notes.clear();
s.track_map.clear();
-
+
MidiFileParser midi(s.path + "/" + s.midifilename);
int reversedNoteCount = 0;
- for (uint32_t ts = 0, end = midi.ts_last + midi.division; ts < end; ts += midi.division) s.beats.push_back(midi.get_seconds(ts));
+ for (uint32_t ts = 0, end = midi.ts_last + midi.division; ts < end; ts += midi.division) s.beats.push_back(midi.get_seconds(ts)-s.start);
for (MidiFileParser::Tracks::const_iterator it = midi.tracks.begin(); it != midi.tracks.end(); ++it) {
// Figure out the track name
std::string name = it->name;
@@ -152,8 +153,8 @@ void SongParser::iniParse() {
Durations& dur = nm2[it2->first];
MidiFileParser::Notes const& notes = it2->second;
for (MidiFileParser::Notes::const_iterator it3 = notes.begin(); it3 != notes.end(); ++it3) {
- double beg = midi.get_seconds(it3->begin);
- double end = midi.get_seconds(it3->end);
+ double beg = midi.get_seconds(it3->begin)-s.start;
+ double end = midi.get_seconds(it3->end)-s.start;
if (end == 0) continue; // Note with no ending
if (beg > end) { // Reversed note
if (beg - end > 0.001) { reversedNoteCount++; continue; }
@@ -176,8 +177,8 @@ void SongParser::iniParse() {
// Process vocal tracks
for (MidiFileParser::Lyrics::const_iterator it2 = it->lyrics.begin(); it2 != it->lyrics.end(); ++it2) {
Note n;
- n.begin = midi.get_seconds(it2->begin);
- n.end = midi.get_seconds(it2->end);
+ n.begin = midi.get_seconds(it2->begin)-s.start;
+ n.end = midi.get_seconds(it2->end)-s.start;
n.notePrev = n.note = it2->note;
n.type = n.note > 100 ? Note::SLEEP : Note::NORMAL;
{
diff --git a/game/songparser.hh b/game/songparser.hh
index caf9d73..2811187 100644
--- a/game/songparser.hh
+++ b/game/songparser.hh
@@ -118,7 +118,7 @@ class SongParser {
bool m_relative;
double m_gap;
double m_bpm;
-
+
bool txtCheck(std::vector<char> const& data);
void txtParseHeader();
void txtParse();
@@ -173,4 +173,3 @@ class SongParser {
return s;
}
};
-
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-03-02 11:06:54
|
Module: performous Branch: portaudio Commit: 04c09a279de7be78393b151a1b20b7ed7588453b Author: Lasse Karkkainen <tro...@tr...> Date: Sat Feb 27 04:49:54 2010 +0200 Fifth generation audio rewrite: - Removed most libda functionality - Ripped away a lot of things to make Performous compile again - Using PortAudio directly within audio.cc - audio.cc/audio.hh completely redesigned (now with pImpl) - Supports multiple tracks and simple crossfading - Many other things missing - Audio device configuration not implemented, a lot of hardcoded stuff - Displays "no playback devices found" always. (still a long way to go) --- cmake/Modules/FindPortAudio.cmake | 35 ++ cmake/Modules/FindPortaudio.cmake | 35 -- game/CMakeLists.txt | 12 +- game/audio.cc | 227 ++++---- game/audio.hh | 91 +--- game/ffmpeg.hh | 17 +- game/main.cc | 90 +--- game/record.hh | 45 -- game/screen_intro.cc | 4 +- game/screen_intro.hh | 4 +- game/screen_practice.cc | 10 +- game/screen_practice.hh | 5 +- game/screen_sing.cc | 3 +- game/screen_sing.hh | 6 +- libs/CMakeLists.txt | 1 - libs/libda/CMakeLists.txt | 71 --- libs/libda/cmake/CMakeLists.txt | 11 - libs/libda/cmake/LibDAConfig.cmake.in | 10 - libs/libda/cmake/LibDAConfigVersion.cmake.in | 13 - libs/libda/cmake/Modules/FindALSA.cmake | 34 -- libs/libda/cmake/Modules/FindAVCodec.cmake | 48 -- libs/libda/cmake/Modules/FindAVFormat.cmake | 46 -- libs/libda/cmake/Modules/FindAVUtil.cmake | 44 -- libs/libda/cmake/Modules/FindAtk.cmake | 34 -- libs/libda/cmake/Modules/FindAtkmm.cmake | 35 -- libs/libda/cmake/Modules/FindBoost.cmake | 413 -------------- libs/libda/cmake/Modules/FindCairo.cmake | 34 -- libs/libda/cmake/Modules/FindCairomm.cmake | 34 -- libs/libda/cmake/Modules/FindClanLib.cmake | 48 -- libs/libda/cmake/Modules/FindDL.cmake | 23 - libs/libda/cmake/Modules/FindFAAC.cmake | 24 - libs/libda/cmake/Modules/FindFreetype.cmake | 31 - libs/libda/cmake/Modules/FindGDK-PixBuf.cmake | 32 -- libs/libda/cmake/Modules/FindGDK.cmake | 43 -- libs/libda/cmake/Modules/FindGDKmm.cmake | 44 -- libs/libda/cmake/Modules/FindGIO.cmake | 27 - libs/libda/cmake/Modules/FindGIOmm.cmake | 35 -- libs/libda/cmake/Modules/FindGLEW.cmake | 29 - libs/libda/cmake/Modules/FindGLFW.cmake | 38 -- libs/libda/cmake/Modules/FindGObject.cmake | 31 - libs/libda/cmake/Modules/FindGStreamer.cmake | 33 -- libs/libda/cmake/Modules/FindGTK.cmake | 38 -- libs/libda/cmake/Modules/FindGTKmm.cmake | 46 -- libs/libda/cmake/Modules/FindGlib.cmake | 39 -- libs/libda/cmake/Modules/FindGlibmm.cmake | 42 -- libs/libda/cmake/Modules/FindJack.cmake | 28 - libs/libda/cmake/Modules/FindJpeg.cmake | 28 - libs/libda/cmake/Modules/FindLibPulse.cmake | 28 - libs/libda/cmake/Modules/FindLibPulseSimple.cmake | 28 - libs/libda/cmake/Modules/FindLibRSVG.cmake | 35 -- libs/libda/cmake/Modules/FindLibXML++.cmake | 42 -- libs/libda/cmake/Modules/FindLibXML2.cmake | 29 - libs/libda/cmake/Modules/FindMagick++.cmake | 33 -- libs/libda/cmake/Modules/FindMagick.cmake | 38 -- libs/libda/cmake/Modules/FindOpenGL.cmake | 35 -- libs/libda/cmake/Modules/FindPThread.cmake | 21 - libs/libda/cmake/Modules/FindPango.cmake | 36 -- libs/libda/cmake/Modules/FindPangoCairo.cmake | 35 -- libs/libda/cmake/Modules/FindPangomm.cmake | 36 -- libs/libda/cmake/Modules/FindPng.cmake | 28 - libs/libda/cmake/Modules/FindPortMidi.cmake | 21 - libs/libda/cmake/Modules/FindPortaudio.cmake | 35 -- libs/libda/cmake/Modules/FindProjectM.cmake | 30 - libs/libda/cmake/Modules/FindSDL.cmake | 59 -- libs/libda/cmake/Modules/FindSDL_mixer.cmake | 32 -- libs/libda/cmake/Modules/FindSWScale.cmake | 46 -- libs/libda/cmake/Modules/FindSigC++.cmake | 38 -- libs/libda/cmake/Modules/FindTiff.cmake | 28 - libs/libda/cmake/Modules/FindZ.cmake | 28 - libs/libda/cmake/Modules/LibFindMacros.cmake | 76 --- libs/libda/cmake/config.h.in | 11 - libs/libda/cmake/libda-packaging.cmake | 61 -- libs/libda/examples/CMakeLists.txt | 7 - libs/libda/examples/capture.cpp | 71 --- libs/libda/include/libda/audio.hpp | 171 ------ libs/libda/include/libda/audio_dev.hpp | 35 -- .../portaudio.hh => include/libda/portaudio.hpp} | 30 +- libs/libda/plugins/CMakeLists.txt | 170 ------ libs/libda/plugins/alsa/alsa.hpp | 581 -------------------- libs/libda/plugins/audio_dev_alsa.cpp | 260 --------- libs/libda/plugins/audio_dev_gst.cpp | 94 ---- libs/libda/plugins/audio_dev_jack.cpp | 134 ----- libs/libda/plugins/audio_dev_pa18.cpp | 90 --- libs/libda/plugins/audio_dev_pa19.cpp | 78 --- libs/libda/plugins/audio_dev_pulse.cpp | 122 ---- libs/libda/plugins/audio_dev_tone.cpp | 109 ---- libs/libda/src/CMakeLists.txt | 31 - libs/libda/src/audio.cpp | 103 ---- 88 files changed, 222 insertions(+), 4824 deletions(-) |
|
From: Yoda-JM <yo...@us...> - 2010-02-22 10:13:06
|
Module: web Branch: master Commit: 81ed92484e478500fea25c4e0241032fa5706f23 Author: Vincent Le Ligeour <yo...@us...> Date: Mon Feb 22 11:10:28 2010 +0100 Added deploying on sf.net (new backup) --- deploy.sh | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/deploy.sh b/deploy.sh index 76d81dc..4cad6e0 100644 --- a/deploy.sh +++ b/deploy.sh @@ -7,12 +7,19 @@ fi case $1 in tronic) + # deploying on performous.org GITPATH=~/performous-web SITEPATH=performous.org:/wwwhome/performous/ ;; yoda) - GITPATH=~/git/web - SITEPATH=root@www:/pub/www/performous/ + # deploying on yoda-jm.performous.org (backup) + GITPATH=~/git/performous/web + SITEPATH=domU-3:/pub/www/performous/ + ;; + yoda-jm) + # deploying on performous.sf.net (backup) + GITPATH=~/git/performous/web + SITEPATH=yoda-jm,per...@we...:htdocs/ ;; *) echo "-!- \"$1\" is not a valid profile" |
|
From: Yoda-JM <yo...@us...> - 2010-02-16 07:37:30
|
Module: performous
Branch: master
Commit: e7871647b81fa57ed76ba7fdff64a153867aec51
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Feb 16 08:37:12 2010 +0100
Fixed some typo
---
game/main.cc | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/game/main.cc b/game/main.cc
index da85251..0c953af 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -95,7 +95,7 @@ static void checkEvents_SDL(ScreenManager& sm, Window& window) {
case GL_INVALID_OPERATION: std::cerr << "OpenGL error: invalid operation" << std::endl; break;
case GL_STACK_OVERFLOW: std::cerr << "OpenGL error: stack overflow" << std::endl; break;
case GL_STACK_UNDERFLOW: std::cerr << "OpenGL error: stack underflow" << std::endl; break;
- case GL_OUT_OF_MEMORY: std::cerr << "OpenGL error: invalid enum" << std::endl; break;
+ case GL_OUT_OF_MEMORY: std::cerr << "OpenGL error: out of memory" << std::endl; break;
}
}
if( config["graphic/fullscreen"].b() != window.getFullscreen() )
@@ -107,10 +107,10 @@ void audioSetup(Capture& capture, Audio& audio) {
using namespace boost::spirit::classic;
unsigned channels, rate, frames;
std::string devstr;
- // channel ::= "channel=" integer
+ // channels ::= "channels=" integer
// rate ::= "rate=" integer
- // frame ::= "frame=" integer
- // argument ::= channel | rate | frame
+ // frames ::= "frames=" integer
+ // argument ::= channels | rate | frames
// argument_list ::= integer? argument % ","
// backend ::= anychar+
// device ::= argument_list "@" backend | argument_list | backend
|
|
From: Yoda-JM <yo...@us...> - 2010-02-15 23:45:47
|
Module: performous
Branch: master
Commit: bcd18112cf1203013612e7071311a74f1c1a8efb
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Feb 16 00:45:28 2010 +0100
Fixed png library detection according to AUR archlinux package
---
cmake/Modules/FindPng.cmake | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cmake/Modules/FindPng.cmake b/cmake/Modules/FindPng.cmake
index 7472c40..dfe81c1 100644
--- a/cmake/Modules/FindPng.cmake
+++ b/cmake/Modules/FindPng.cmake
@@ -18,7 +18,7 @@ find_path(Png_INCLUDE_DIR
)
find_library(Png_LIBRARY
- NAMES png12 png14
+ NAMES png png12 png14
PATHS ${Png_PKGCONF_LIBRARY_DIRS}
)
|
|
From: Yoda-JM <yo...@us...> - 2010-02-14 18:25:36
|
Module: performous
Branch: master
Commit: 5ef3ae375cb86b734424cf04dc5ff4e6ccd8b71f
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Feb 14 19:25:10 2010 +0100
Added frets on neck design
---
themes/default/bassneck.svg | 29 +++++++++++++++++++++++------
themes/default/drumneck.svg | 27 ++++++++++++++++++++++-----
themes/default/guitarneck.svg | 29 +++++++++++++++++++++++------
3 files changed, 68 insertions(+), 17 deletions(-)
diff --git a/themes/default/bassneck.svg b/themes/default/bassneck.svg
index 04ca3aa..e3f99d0 100644
--- a/themes/default/bassneck.svg
+++ b/themes/default/bassneck.svg
@@ -15,8 +15,8 @@
height="520"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.47pre4 r22446"
- sodipodi:docname="guitarneck.svg"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="bassneck.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<metadata
@@ -27,12 +27,12 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
- inkscape:window-height="1026"
+ inkscape:window-height="978"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
@@ -43,8 +43,8 @@
inkscape:zoom="1.2557891"
inkscape:cx="256.64982"
inkscape:cy="242.68555"
- inkscape:window-x="0"
- inkscape:window-y="24"
+ inkscape:window-x="-4"
+ inkscape:window-y="-3"
inkscape:current-layer="svg2"
showgrid="true"
showguides="false"
@@ -151,6 +151,13 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2889"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<g
id="g7847"
@@ -193,4 +200,14 @@
d="m 22,0 0,520"
style="fill:none;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,518 250,0 0,0"
+ id="path2845"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,260 250,0 0,0"
+ id="path2845-2"
+ sodipodi:nodetypes="ccc" />
</svg>
diff --git a/themes/default/drumneck.svg b/themes/default/drumneck.svg
index 9ba2de3..65c70d9 100644
--- a/themes/default/drumneck.svg
+++ b/themes/default/drumneck.svg
@@ -15,7 +15,7 @@
height="520"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.47pre4 r22446"
+ inkscape:version="0.47 r22583"
sodipodi:docname="drumneck.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
@@ -32,7 +32,7 @@
</rdf:RDF>
</metadata>
<sodipodi:namedview
- inkscape:window-height="1026"
+ inkscape:window-height="978"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
@@ -42,9 +42,9 @@
id="base"
inkscape:zoom="1.2557891"
inkscape:cx="149.11679"
- inkscape:cy="221.12529"
- inkscape:window-x="0"
- inkscape:window-y="24"
+ inkscape:cy="189.27281"
+ inkscape:window-x="-4"
+ inkscape:window-y="-3"
inkscape:current-layer="svg2"
showgrid="true"
showguides="false"
@@ -151,6 +151,13 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2884"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<path
id="path3647"
@@ -172,4 +179,14 @@
id="path4654"
d="m 0.5,0 0,520"
style="fill:none;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,518 250,0 0,0"
+ id="path2845"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,260 250,0 0,0"
+ id="path2845-2"
+ sodipodi:nodetypes="ccc" />
</svg>
diff --git a/themes/default/guitarneck.svg b/themes/default/guitarneck.svg
index eee1b3e..9f6b59e 100644
--- a/themes/default/guitarneck.svg
+++ b/themes/default/guitarneck.svg
@@ -15,7 +15,7 @@
height="520"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.47pre4 r22446"
+ inkscape:version="0.47 r22583"
sodipodi:docname="guitarneck.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
@@ -32,7 +32,7 @@
</rdf:RDF>
</metadata>
<sodipodi:namedview
- inkscape:window-height="1026"
+ inkscape:window-height="978"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
@@ -41,10 +41,10 @@
pagecolor="#ffffff"
id="base"
inkscape:zoom="2.5115782"
- inkscape:cx="140.58806"
- inkscape:cy="117.51819"
- inkscape:window-x="0"
- inkscape:window-y="24"
+ inkscape:cx="67.725507"
+ inkscape:cy="324.55932"
+ inkscape:window-x="-4"
+ inkscape:window-y="-3"
inkscape:current-layer="svg2"
showgrid="true"
showguides="false"
@@ -151,6 +151,13 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3627"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
</defs>
<g
id="g6854">
@@ -199,4 +206,14 @@
d="m 22,0 0,520"
id="path4654" />
</g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,518 250,0 0,0"
+ id="path2845"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.5999999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0,260 250,0 0,0"
+ id="path2845-2"
+ sodipodi:nodetypes="ccc" />
</svg>
|
|
From: Yoda-JM <yo...@us...> - 2010-02-13 14:15:15
|
Module: performous Branch: master Commit: d835096b9f68f8f1d73c31ffc8d564d612b32ad2 Author: Vincent Le Ligeour <yo...@us...> Date: Sat Feb 13 15:14:01 2010 +0100 Applied a part of th3pr0ph3t theme patch --- data/backgrounds/default_bg.svg | 2044 ++++++++++++++++++++++++++++++++++---- themes/default/bassneck.svg | 247 ++--- themes/default/drumneck.svg | 351 ++----- themes/default/flame.svg | 50 +- themes/default/flame_godmode.svg | 120 ++- themes/default/guitarneck.svg | 207 ++--- 6 files changed, 2220 insertions(+), 799 deletions(-) |
|
From: Stefano A. <xa...@us...> - 2010-02-12 22:45:35
|
Module: performous
Branch: master
Commit: 7f890dfa6ec0b71fd56c12a7f33ddf41270e7673
Author: Xaldyz <xa...@us...>
Date: Fri Feb 12 23:45:11 2010 +0100
File C++ forgot to include last commit
---
game/windows-cmd.cpp | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 177 insertions(+), 0 deletions(-)
diff --git a/game/windows-cmd.cpp b/game/windows-cmd.cpp
new file mode 100644
index 0000000..274f52f
--- /dev/null
+++ b/game/windows-cmd.cpp
@@ -0,0 +1,177 @@
+#ifdef _WIN32
+
+#include <windows.h>
+#include <tchar.h>
+#include <strsafe.h>
+#include <string>
+
+#define BUFSIZE 4096
+
+HANDLE g_hChildStd_IN_Rd = NULL;
+HANDLE g_hChildStd_IN_Wr = NULL;
+HANDLE g_hChildStd_OUT_Rd = NULL;
+HANDLE g_hChildStd_OUT_Wr = NULL;
+
+void CreateChildProcess(int argc, char* argv[]);
+void ReadFromPipe(void);
+void ErrorExit(PTSTR);
+int main(int argc, char* argv[])
+{
+ SECURITY_ATTRIBUTES saAttr;
+
+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
+ saAttr.bInheritHandle = TRUE;
+ saAttr.lpSecurityDescriptor = NULL;
+
+ // Create a pipe for the child process's STDOUT.
+
+ if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0) )
+ ErrorExit(TEXT("StdoutRd CreatePipe"));
+ // Ensure the read handle to the pipe for STDOUT is not inherited.
+ if ( ! SetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0) )
+ ErrorExit(TEXT("Stdout SetHandleInformation"));
+
+ // Create a pipe for the child process's STDIN.
+
+ if (! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0))
+ ErrorExit(TEXT("Stdin CreatePipe"));
+
+// Ensure the write handle to the pipe for STDIN is not inherited.
+
+ if ( ! SetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) )
+ ErrorExit(TEXT("Stdin SetHandleInformation"));
+
+
+ // Create the child process.
+ CreateChildProcess(argc, argv);
+
+ // Read from pipe that is the standard output for child process.
+ ReadFromPipe();
+ return 0;
+}
+
+void CreateChildProcess(const int argc, char* argv[])
+// Create a child process that uses the previously created pipes for STDOUT.
+{
+ std::string cmdline;
+ cmdline = "performous.exe";
+ for(int i = 1; i < argc; i++){
+ cmdline += " \"";
+ cmdline += argv[i];
+ cmdline += "\"";
+ }
+ fprintf(stdout, cmdline.c_str());
+ fprintf(stdout, "\n");
+
+ char* str;
+ str = new char[cmdline.length() + 1];
+ strcpy(str, cmdline.c_str());
+ LPSTR temp;
+ temp = str;
+
+ PROCESS_INFORMATION piProcInfo;
+ STARTUPINFO siStartInfo;
+ BOOL bSuccess = FALSE;
+
+ // Set up members of the PROCESS_INFORMATION structure.
+ ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
+
+// Set up members of the STARTUPINFO structure.
+// This structure specifies the STDIN and STDOUT handles for redirection.
+ ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
+ siStartInfo.cb = sizeof(STARTUPINFO);
+ siStartInfo.hStdError = g_hChildStd_OUT_Wr;
+ siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;
+ siStartInfo.hStdInput = g_hChildStd_IN_Rd;
+ siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
+
+// Create the child process.
+ bSuccess = CreateProcess(NULL,
+ temp, // command line
+ NULL, // process security attributes
+ NULL, // primary thread security attributes
+ TRUE, // handles are inherited
+ 0, // creation flags
+ NULL, // use parent's environment
+ NULL, // use parent's current directory
+ &siStartInfo, // STARTUPINFO pointer
+ &piProcInfo); // receives PROCESS_INFORMATION
+
+ // If an error occurs, exit the application.
+ if ( ! bSuccess )
+ ErrorExit(TEXT("CreateProcess"));
+ else
+ {
+ // Close handles to the child process and its primary thread.
+ // Some applications might keep these handles to monitor the status
+ // of the child process, for example.
+
+ CloseHandle(piProcInfo.hProcess);
+ CloseHandle(piProcInfo.hThread);
+ }
+
+ delete[] temp;
+}
+
+
+void ReadFromPipe(void)
+// Read output from the child process's pipe for STDOUT
+// and write to the parent process's pipe for STDOUT.
+// Stop when there is no more data.
+{
+ DWORD dwRead, dwWritten;
+ CHAR chBuf[BUFSIZE];
+ BOOL bSuccess = FALSE;
+ HANDLE hParentStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
+
+// Close the write end of the pipe before reading from the
+// read end of the pipe, to control child process execution.
+// The pipe is assumed to have enough buffer space to hold the
+// data the child process has already written to it.
+
+ if (!CloseHandle(g_hChildStd_OUT_Wr))
+ ErrorExit(TEXT("StdOutWr CloseHandle"));
+
+ for (;;)
+ {
+ bSuccess = ReadFile( g_hChildStd_OUT_Rd, chBuf, BUFSIZE, &dwRead, NULL);
+ if( ! bSuccess || dwRead == 0 ) break;
+
+ bSuccess = WriteFile(hParentStdOut, chBuf,
+ dwRead, &dwWritten, NULL);
+ if (! bSuccess ) break;
+ }
+}
+
+void ErrorExit(PTSTR lpszFunction)
+// Format a readable error message, display a message box,
+// and exit from the application.
+{
+ LPVOID lpMsgBuf;
+ LPVOID lpDisplayBuf;
+ DWORD dw = GetLastError();
+
+ FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ dw,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &lpMsgBuf,
+ 0, NULL );
+
+ lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
+ (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR));
+ StringCchPrintf((LPTSTR)lpDisplayBuf,
+ LocalSize(lpDisplayBuf) / sizeof(TCHAR),
+ TEXT("%s failed with error %d: %s"),
+ lpszFunction, dw, lpMsgBuf);
+ MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
+
+ LocalFree(lpMsgBuf);
+ LocalFree(lpDisplayBuf);
+ ExitProcess(1);
+}
+
+#endif
\ No newline at end of file
|
|
From: Stefano A. <xa...@us...> - 2010-02-12 22:44:45
|
Module: performous
Branch: master
Commit: 7bb16815380bd22508424386254e1ea20c2487da
Author: Xaldyz <xa...@us...>
Date: Fri Feb 12 23:44:31 2010 +0100
Added support to build "performous-cmd.exe" directly from the project (only for Windows)
---
game/CMakeLists.txt | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt
index d4d631d..abb6532 100644
--- a/game/CMakeLists.txt
+++ b/game/CMakeLists.txt
@@ -115,7 +115,12 @@ if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions("-D__STDC_CONSTANT_MACROS")
endif(CMAKE_COMPILER_IS_GNUCXX)
-add_executable(performous ${SOURCES} ${SDL_SOURCES} ${RESOURCE_OBJECT})
+if(MSVC)
+ set(SUBSYSTEM_WIN32 WIN32)
+ add_executable(performous-cmd "windows-cmd.cpp")
+ install(TARGETS performous-cmd DESTINATION bin)
+endif(MSVC)
+add_executable(performous ${SUBSYSTEM_WIN32} ${SOURCES} ${SDL_SOURCES} ${RESOURCE_OBJECT})
target_link_libraries(performous ${LIBS})
# Store library paths in executable
|
|
From: Yoda-JM <yo...@us...> - 2010-02-09 14:56:12
|
Module: performous
Branch: master
Commit: f42a845891dd7bea3e8ec1fe571649b28ef41250
Author: Vincent Le Ligeour <yo...@us...>
Date: Tue Feb 9 15:55:40 2010 +0100
Fixed chc decode tool and added man page
---
docs/CMakeLists.txt | 2 +-
docs/ss_chc_decode.1 | 18 ++++++++++++++++++
tools/ss_chc_decode.cpp | 7 ++++---
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index a54ca5d..7fa9733 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -25,7 +25,7 @@ if(UNIX)
set(TOOLS
"ss_pak_extract" "ss_extract" "ss_cover_conv"
"ss_adpcm_decode" "ss_ipu_decode" "ss_ipu_conv"
- "gh_xen_decrypt")
+ "gh_xen_decrypt" "ss_chc_decode")
set(MAN_SECTION "1")
foreach(TOOL ${TOOLS})
set(TOOL_MANFILE ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.${MAN_SECTION})
diff --git a/docs/ss_chc_decode.1 b/docs/ss_chc_decode.1
new file mode 100644
index 0000000..8e4c154
--- /dev/null
+++ b/docs/ss_chc_decode.1
@@ -0,0 +1,18 @@
+.TH "ss_chc_decode" "1" "" "" ""
+.SH "NAME"
+ss_chc_decode \- Tool for decoding Singstar CHC (melody cache) files
+.SH "SYNOPSIS"
+\fBss_chc_decode\fR chc_file key1 key2 key3 key4 track_id
+.TP
+\fBchc_file\fR
+Singstar melody cache file
+.TP
+\fBkey1 to key4\fR
+keys to decode the cache file
+.TP
+\fBtrack_id\fR
+Singstar track id to extract
+.SH "DESCRIPTION"
+Tool for decrypting Singstar CHC files.
+.SH "SEE ALSO"
+\fIperformous\fR(6)
diff --git a/tools/ss_chc_decode.cpp b/tools/ss_chc_decode.cpp
index 7770ba9..bf4c8cd 100644
--- a/tools/ss_chc_decode.cpp
+++ b/tools/ss_chc_decode.cpp
@@ -3,10 +3,11 @@
#include <string>
#include <iostream>
#include <fstream>
+#include <boost/lexical_cast.hpp>
int main(int argc, char ** argv) {
- if( argc != 6 ) {
- std::cout << "Usage: " << argv[0] << " chc_file key0 key1 key2 key4" << std::endl;
+ if( argc != 7 ) {
+ std::cout << "Usage: " << argv[0] << " chc_file key0 key1 key2 key4 track_id" << std::endl;
return EXIT_FAILURE;
}
std::string key[4] = {argv[2], argv[3], argv[4], argv[5]};
@@ -27,7 +28,7 @@ int main(int argc, char ** argv) {
ChcDecode chc_decoder;
chc_decoder.load(key);
- std::string xmlMelody = chc_decoder.getMelody(buffer, fileSize, 31318);
+ std::string xmlMelody = chc_decoder.getMelody(buffer, fileSize, boost::lexical_cast<unsigned int>(argv[6]));
std::cout << xmlMelody << std::endl;
|
|
From: Yoda-JM <yo...@us...> - 2010-02-08 07:28:47
|
Module: performous
Branch: master
Commit: 0ec84d9a6d4a9591b63df4cbedc0254c6f09b4af
Author: Vincent Le Ligeour <yo...@us...>
Date: Mon Feb 8 08:28:29 2010 +0100
Added greeting to ALLconv dev
---
tools/chc_decode.hh | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/tools/chc_decode.hh b/tools/chc_decode.hh
index 03822aa..e3aef61 100644
--- a/tools/chc_decode.hh
+++ b/tools/chc_decode.hh
@@ -1,10 +1,13 @@
-#include <boost/crc.hpp>
#pragma once
+#include <boost/crc.hpp>
#include <string>
#include <stdexcept>
#include <zlib.h>
+// Class freely inspired from ALLconv by Holger Kuhn (ha...@gm...)
+// Thanks for its help
+
class ChcDecode {
public:
ChcDecode() {
|
|
From: Yoda-JM <yo...@us...> - 2010-02-07 17:00:14
|
Module: performous
Branch: master
Commit: 48b2623ebf7051cc25626aae1970b11f6bfc263e
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Feb 7 17:58:46 2010 +0100
Added TODO comment
---
tools/chc_decode.hh | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/tools/chc_decode.hh b/tools/chc_decode.hh
index 6e96d9d..03822aa 100644
--- a/tools/chc_decode.hh
+++ b/tools/chc_decode.hh
@@ -12,6 +12,7 @@ class ChcDecode {
key_crc[i] = 0;
}
}
+ // TODO: move buffer uncypher inside load instead of getMelody
void load(std::string key[4]) {
for( unsigned int i = 0 ; i < 4 ; i++ ) {
boost::crc_32_type crc;
|
|
From: Yoda-JM <yo...@us...> - 2010-02-07 17:00:02
|
Module: performous
Branch: master
Commit: 5b6148cee5e49532eccc3f99f03594f030f88951
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Feb 7 17:57:08 2010 +0100
Implemented chc decoder inside ss_extract
---
tools/chc_decode.hh | 8 ++++++--
tools/ss_chc_decode.cpp | 3 ++-
tools/ss_extract.cpp | 41 +++++++++++++++++++++++++++++++++++++----
3 files changed, 45 insertions(+), 7 deletions(-)
diff --git a/tools/chc_decode.hh b/tools/chc_decode.hh
index be6de61..6e96d9d 100644
--- a/tools/chc_decode.hh
+++ b/tools/chc_decode.hh
@@ -7,7 +7,12 @@
class ChcDecode {
public:
- ChcDecode(std::string key[4]) {
+ ChcDecode() {
+ for( unsigned int i = 0 ; i < 4 ; i++ ) {
+ key_crc[i] = 0;
+ }
+ }
+ void load(std::string key[4]) {
for( unsigned int i = 0 ; i < 4 ; i++ ) {
boost::crc_32_type crc;
crc.process_bytes(key[i].c_str(), key[i].size()+1);
@@ -15,7 +20,6 @@ class ChcDecode {
}
}
std::string getMelody(char *buffer, unsigned int buffer_size, unsigned int id) {
-
unsigned int *chc_buffer = (unsigned int*)buffer;
if( buffer_size%8 != 0 ) throw std::runtime_error("CHC file is not 8 bytes padded");
diff --git a/tools/ss_chc_decode.cpp b/tools/ss_chc_decode.cpp
index 169861e..7770ba9 100644
--- a/tools/ss_chc_decode.cpp
+++ b/tools/ss_chc_decode.cpp
@@ -25,7 +25,8 @@ int main(int argc, char ** argv) {
chc_file.read(&buffer[0], fileSize);
chc_file.close();
- ChcDecode chc_decoder(key);
+ ChcDecode chc_decoder;
+ chc_decoder.load(key);
std::string xmlMelody = chc_decoder.getMelody(buffer, fileSize, 31318);
std::cout << xmlMelody << std::endl;
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index ad6a051..4aec455 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -258,7 +258,33 @@ void saveTxtFile(xmlpp::NodeSet &sentence, const fs::path &path, const Song &son
struct Process {
Pak const& pak;
- Process(Pak const& p): pak(p) {}
+ ChcDecode chc_decoder;
+ Process(Pak const& p): pak(p) {
+ Pak::files_t::const_iterator it = std::find_if(pak.files().begin(), pak.files().end(), Match("export/config",".xml"));
+ if (it != pak.files().end()) {
+ xmlpp::DomParser dom;
+ dom.set_substitute_entities();
+ {
+ std::vector<char> tmp;
+ it->second.get(tmp);
+ std::string buf = xmlFix(tmp);
+ buf = Glib::convert(buf, "UTF-8", "ISO-8859-1"); // Convert to UTF-8
+ dom.parse_memory(buf);
+ }
+ std::string keys[4];
+ xmlpp::NodeSet n;
+ n = dom.get_document()->get_root_node()->find("/ss:CONFIG/ss:PRODUCT_NAME", nsmap);
+ if(!n.empty()) keys[0] = dynamic_cast<xmlpp::Element&>(*n[0]).get_child_text()->get_content();
+ n = dom.get_document()->get_root_node()->find("/ss:CONFIG/ss:PRODUCT_CODE", nsmap);
+ if(!n.empty()) keys[1] = dynamic_cast<xmlpp::Element&>(*n[0]).get_child_text()->get_content();
+ n = dom.get_document()->get_root_node()->find("/ss:CONFIG/ss:TERRITORY", nsmap);
+ if(!n.empty()) keys[2] = dynamic_cast<xmlpp::Element&>(*n[0]).get_child_text()->get_content();
+ n = dom.get_document()->get_root_node()->find("/ss:CONFIG/ss:DEFAULT_LANG", nsmap);
+ if(!n.empty()) keys[3] = dynamic_cast<xmlpp::Element&>(*n[0]).get_child_text()->get_content();
+
+ chc_decoder.load(keys);
+ }
+ }
void operator()(std::pair<std::string const, Song>& songpair) {
fs::path remove;
try {
@@ -272,9 +298,16 @@ struct Process {
{
std::vector<char> tmp;
Pak::files_t::const_iterator it = std::find_if(pak.files().begin(), pak.files().end(), Match("export/" + id + "/melody", ".xml"));
- if (it == pak.files().end()) throw std::runtime_error("Melody XML not found");
- it->second.get(tmp);
- std::string buf = xmlFix(tmp);
+ std::string buf;
+ if (it == pak.files().end()) {
+ Pak::files_t::const_iterator it2 = std::find_if(pak.files().begin(), pak.files().end(), Match("export/melodies_10", ".chc"));
+ if (it2 == pak.files().end()) throw std::runtime_error("Melody XML not found");
+ it2->second.get(tmp);
+ buf = chc_decoder.getMelody(&tmp[0], tmp.size(), boost::lexical_cast<unsigned int>(id));
+ } else {
+ it->second.get(tmp);
+ buf = xmlFix(tmp);
+ }
bool succeeded = false;
try {
dom.parse_memory(buf);
|
|
From: Yoda-JM <yo...@us...> - 2010-02-07 17:00:00
|
Module: performous
Branch: master
Commit: a4794ab95965c8dca925264a6091f971ea70c8a5
Author: Vincent Le Ligeour <yo...@us...>
Date: Sun Feb 7 16:33:28 2010 +0100
Added melody extractor for new Singstar DVD
---
tools/CMakeLists.txt | 19 +++++++++++---
tools/chc_decode.hh | 65 +++++++++++++++++++++++++++++++++++++++++++++++
tools/ss_chc_decode.cpp | 36 ++++++++++++++++++++++++++
tools/ss_extract.cpp | 1 +
4 files changed, 117 insertions(+), 4 deletions(-)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 88a8e82..f59285d 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -24,9 +24,13 @@ endif(CMAKE_COMPILER_IS_GNUCXX)
if (LibXML++_FOUND)
if (Boost_FOUND)
if (Magick++_FOUND)
- add_executable(ss_extract ss_extract.cpp pak.cpp ipu_conv.cpp ss_cover.cpp)
- target_link_libraries(ss_extract ${LibXML++_LIBRARIES} ${Boost_LIBRARIES} ${Magick++_LIBRARIES} ${Z_LIBRARIES} ${Jpeg_LIBRARIES} ${Tiff_LIBRARIES} ${Png_LIBRARIES} ${Freetype_LIBRARY} ${Magick++_LIBRARIES})
- set(targets ${targets} ss_extract)
+ if (Z_FOUND)
+ add_executable(ss_extract ss_extract.cpp pak.cpp ipu_conv.cpp ss_cover.cpp)
+ target_link_libraries(ss_extract ${LibXML++_LIBRARIES} ${Boost_LIBRARIES} ${Magick++_LIBRARIES} ${Z_LIBRARIES} ${Jpeg_LIBRARIES} ${Tiff_LIBRARIES} ${Png_LIBRARIES} ${Freetype_LIBRARY} ${Magick++_LIBRARIES})
+ set(targets ${targets} ss_extract)
+ else (Z_FOUND)
+ message("No zlib found, not building ss_extract")
+ endif (Z_FOUND)
else (Magick++_FOUND)
message("No Magick++ found, not building ss_extract")
endif (Magick++_FOUND)
@@ -48,9 +52,16 @@ endif (LibXML++_FOUND)
if (Boost_FOUND)
add_executable(ss_pak_extract pak_extract.cpp pak.cpp)
target_link_libraries(ss_pak_extract ${Boost_LIBRARIES})
+ set(targets ${targets} ss_pak_extract)
+
if (Z_FOUND)
add_executable(itg_pck itg_pck.cc)
target_link_libraries(itg_pck ${Boost_LIBRARIES} ${Z_LIBRARIES})
+ set(targets ${targets} itg_pck)
+
+ add_executable(ss_chc_decode ss_chc_decode.cpp)
+ target_link_libraries(ss_chc_decode ${Boost_LIBRARIES} ${Z_LIBRARIES})
+ set(targets ${targets} ss_chc_decode)
endif()
endif (Boost_FOUND)
@@ -59,7 +70,7 @@ add_executable(gh_xen_decrypt gh_xen_decrypt.cpp)
add_executable(ss_adpcm_decode adpcm_decode.cpp pak.cpp)
add_executable(ss_ipu_decode ipu_decode.cpp)
add_executable(ss_ipu_conv ipu_conv.cpp ipuconvmain.cpp pak.cpp)
-set(targets ${targets} gh_xen_decrypt ss_pak_extract ss_adpcm_decode ss_ipu_decode ss_ipu_conv itg_pck)
+set(targets ${targets} gh_xen_decrypt ss_adpcm_decode ss_ipu_decode ss_ipu_conv)
# add install target:
install(TARGETS ${targets} DESTINATION bin)
diff --git a/tools/chc_decode.hh b/tools/chc_decode.hh
new file mode 100644
index 0000000..be6de61
--- /dev/null
+++ b/tools/chc_decode.hh
@@ -0,0 +1,65 @@
+#include <boost/crc.hpp>
+#pragma once
+
+#include <string>
+#include <stdexcept>
+#include <zlib.h>
+
+class ChcDecode {
+ public:
+ ChcDecode(std::string key[4]) {
+ for( unsigned int i = 0 ; i < 4 ; i++ ) {
+ boost::crc_32_type crc;
+ crc.process_bytes(key[i].c_str(), key[i].size()+1);
+ key_crc[i] = crc.checksum();
+ }
+ }
+ std::string getMelody(char *buffer, unsigned int buffer_size, unsigned int id) {
+
+ unsigned int *chc_buffer = (unsigned int*)buffer;
+
+ if( buffer_size%8 != 0 ) throw std::runtime_error("CHC file is not 8 bytes padded");
+
+ for(unsigned int i = 0 ; i < buffer_size/8 ; i++) {
+ decrypt(&chc_buffer[i*2], key_crc);
+ }
+
+ unsigned int songs = chc_buffer[0];
+
+ if( songs > 100 ) throw std::runtime_error("CHC key probably wrong (too many songs)");
+
+ unsigned int start = 0;
+ uLongf packsize = 0;
+ uLong size = 0;
+ for( unsigned int i = 0 ; i < songs ; i++) {
+ if( chc_buffer[1+i*4] == id ) {
+ start = chc_buffer[2+i*4];
+ packsize = chc_buffer[3+i*4];
+ size = chc_buffer[4+i*4];
+ break;
+ }
+ }
+ if( packsize == 0 ) throw std::runtime_error("Melody not found in CHC file");
+
+ Bytef *dest = new Bytef[size];
+ uncompress(dest, &size, (Bytef*)buffer+start, packsize);
+ std::string result((char*)dest, (unsigned int)size);
+ delete[] dest;
+
+ return result;
+ }
+ private:
+ unsigned int key_crc[4];
+ void decrypt(unsigned int *v, unsigned int k[4]) {
+ unsigned int v0 = v[0], v1 = v[1], i;
+ unsigned int sum = 0xC6EF3720;
+ unsigned int delta = 0x9e3779b9;
+
+ for(i = 0; i<32; i++) { // basic cycle start
+ v1 -= (v0<<4) + (k[2] ^ v0) + (sum ^ (v0>>5)) + k[3];
+ v0 -= (v1<<4) + (k[0] ^ v1) + (sum ^ (v1>>5)) + k[1];
+ sum -= delta;
+ } // end cycle
+ v[0] = v0; v[1] = v1;
+ }
+};
diff --git a/tools/ss_chc_decode.cpp b/tools/ss_chc_decode.cpp
new file mode 100644
index 0000000..169861e
--- /dev/null
+++ b/tools/ss_chc_decode.cpp
@@ -0,0 +1,36 @@
+#include <cstdlib>
+#include "chc_decode.hh"
+#include <string>
+#include <iostream>
+#include <fstream>
+
+int main(int argc, char ** argv) {
+ if( argc != 6 ) {
+ std::cout << "Usage: " << argv[0] << " chc_file key0 key1 key2 key4" << std::endl;
+ return EXIT_FAILURE;
+ }
+ std::string key[4] = {argv[2], argv[3], argv[4], argv[5]};
+
+ std::ifstream chc_file;
+ chc_file.open(argv[1], std::ios_base::binary );
+
+ // Get the file size
+ chc_file.seekg (0, std::ios::end);
+ unsigned int fileSize = chc_file.tellg();
+ chc_file.seekg (0, std::ios::beg);
+
+ // Reading inputfile
+ char *buffer = new char[fileSize];
+ std::cout << "Reading input file \"" << argv[1] << "\" (" << fileSize << " Bytes)... " << std::endl;
+ chc_file.read(&buffer[0], fileSize);
+ chc_file.close();
+
+ ChcDecode chc_decoder(key);
+ std::string xmlMelody = chc_decoder.getMelody(buffer, fileSize, 31318);
+
+ std::cout << xmlMelody << std::endl;
+
+ delete[] buffer;
+
+ return EXIT_SUCCESS;
+}
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index 4f73739..ad6a051 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -17,6 +17,7 @@
#include <boost/lexical_cast.hpp>
#include <boost/program_options.hpp>
+#include "chc_decode.hh"
#include "pak.h"
#include "ipuconv.hh"
#include "ss_cover.hh"
|
|
From: knittl <kn...@us...> - 2010-02-06 11:26:34
|
Module: performous Branch: master Commit: f7e196e4879b767ff049a7201b87038c1a4bff7b Author: knittl <kn...@us...> Date: Sat Feb 6 12:25:42 2010 +0100 little changes to git documentation --- docs/git.txt | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/git.txt b/docs/git.txt index 621c4b1..1e1c3c5 100644 --- a/docs/git.txt +++ b/docs/git.txt @@ -45,7 +45,7 @@ To update your working copy do a simple: Discover and investigate changes others made: $ git log - $ git show <commit-hash> (ommit <commit-hash> to see latest) + $ git show <commit-hash> # (omit <commit-hash> to see latest) Note that only a few characters (of 40) from the commit hash id is needed. @@ -53,7 +53,7 @@ Discovering and investigating your changes isn't any different than subversion: $ git status - $ git diff <file> (ommit <file> to see all changes) + $ git diff <file> # (omit <file> to see all changes) Committing changes in git usually takes two steps. First add the files you want to commit: @@ -65,10 +65,10 @@ you to enter a commit message and have a last glance at what changed: $ git commit -You can also pass -a parameter to add all your changes (and bypass the -git-add stage). These operations won't interact with the main repository -in any way and no internet connection is needed. All that is altered is -your local repository. +You can also pass the `-a` parameter to `git commit` to add all your +changes (and bypass the git-add stage). These operations won't interact +with the main repository in any way and no internet connection is +necessary. All that is altered is your local repository. If you are not sure what you should do next, git status usually provides some good suggestions. @@ -92,9 +92,9 @@ can destroy **your local** repository): $ git rebase master -Then to finally push your changes into the internet simply do: +Then to finally push your changes to the internet simply do: - $ git push + $ git push origin master Getting involved |
|
From: Yoda-JM <yo...@us...> - 2010-02-06 11:10:03
|
Module: performous
Branch: master
Commit: 87e302d6a10e2c362d6b673cd589b4fcc9a67fa4
Author: Vincent Le Ligeour <yo...@us...>
Date: Sat Feb 6 12:08:58 2010 +0100
Added --list feature to ss_extract tool
---
tools/ss_extract.cpp | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/tools/ss_extract.cpp b/tools/ss_extract.cpp
index b35b3ce..4f73739 100644
--- a/tools/ss_extract.cpp
+++ b/tools/ss_extract.cpp
@@ -237,7 +237,7 @@ void saveTxtFile(xmlpp::NodeSet &sentence, const fs::path &path, const Song &son
if (!song.genre.empty()) txtfile << "#GENRE:" << song.genre << std::endl;
if (!song.year.empty()) txtfile << "#YEAR:" << song.year << std::endl;
if (!song.edition.empty()) txtfile << "#EDITION:" << song.edition << std::endl;
- //txtfile << "#LANGUAGE:English" << std::endl; // Detect instead of hardcoding?
+ //txtfile << "#LANGUAGE:English" << std::endl; // Detect instead of hardcoding?
if (!song.music.empty()) txtfile << "#MP3:" << filename(song.music) << std::endl;
if (!song.vocals.empty()) txtfile << "#VOCALS:" << filename(song.vocals) << std::endl;
if (video && mkvcompress) {
@@ -396,11 +396,11 @@ void get_node(const xmlpp::Node* node, std::string& genre, std::string& year, do
if(nodeText && nodeText->is_white_space()) //Let's ignore the indenting - you don't always want to do this.
return;
-
- //Treat the various node types differently:
+
+ //Treat the various node types differently:
if(nodeText || nodeComment || nodeContent)
{
- // if any of these exist do nothing! :D
+ // if any of these exist do nothing! :D
}
else if(const xmlpp::Element* nodeElement = dynamic_cast<const xmlpp::Element*>(node))
{
@@ -415,7 +415,7 @@ void get_node(const xmlpp::Node* node, std::string& genre, std::string& year, do
else if (attribute->get_name() == "YEAR") year = normalize(attribute->get_value());
}
}
-
+
if(!nodeContent)
{
//Recurse through child nodes:
@@ -537,7 +537,7 @@ int main( int argc, char **argv) {
} catch (std::exception& e) {
std::cout << cmdline << std::endl;
std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
+ return EXIT_FAILURE;
}
std::string pack_ee = dvdPath + "/pack_ee.pak"; // Note: lower case (ISO-9660)
if (!fs::exists(pack_ee)) {
@@ -555,7 +555,9 @@ int main( int argc, char **argv) {
FindSongs f = std::for_each(p.files().begin(), p.files().end(), FindSongs(song));
std::cerr << f.songs.size() << " songs found" << std::endl;
if (vm.count("list")) {
- // TODO: dump list of songs
+ for( std::map<std::string, Song>::const_iterator it = f.songs.begin() ; it != f.songs.end(); ++it) {
+ std::cout << "[" << it->first << "] " << it->second.artist << " - " << it->second.title << std::endl;
+ }
}
else std::for_each(f.songs.begin(), f.songs.end(), Process(p));
}
|
|
From: Tapio V. <aa...@us...> - 2010-02-06 09:59:28
|
Module: performous
Branch: master
Commit: 1cffd1bfe98de2e3504b197a3a0336350a7c80bc
Author: Tapio Vierros <tap...@gm...>
Date: Sat Feb 6 11:57:04 2010 +0200
Allow <1ms reversed note in midi (precision errors etc).
---
game/songparser-ini.cc | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index f333234..21ada72 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -155,12 +155,15 @@ void SongParser::iniParse() {
double beg = midi.get_seconds(it3->begin);
double end = midi.get_seconds(it3->end);
if (end == 0) continue; // Note with no ending
- if (beg > end) { reversedNoteCount++; continue; } // Reversed note
+ if (beg > end) { // Reversed note
+ if (beg - end > 0.001) { reversedNoteCount++; continue; }
+ else end = beg; // Allow 1ms error to counter rounding etc errors
+ }
dur.push_back(Duration(beg, end));
durCount++;
}
}
- // If a track has only 20 or less frets it's most likely b0rked.
+ // If a track has only 20 or less notes it's most likely b0rked.
// This number has been extracted from broken song tracks, but
// it is probably DIFFICULTYCOUNT * different_frets.
if (durCount <= 20) {
|
|
From: Tapio V. <aa...@us...> - 2010-02-06 09:59:26
|
Module: performous
Branch: master
Commit: cb8843a461e2a783636eb6036b61579cb7aa7a6d
Author: Tapio Vierros <tap...@gm...>
Date: Sat Feb 6 11:55:13 2010 +0200
Some broken track detection for FoF header parser.
---
game/songparser-ini.cc | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index 46fa715..f333234 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -119,8 +119,13 @@ void SongParser::iniParseHeader() {
if (midi.tracks.size() == 1) name = "guitar"; // Original (old) FoF songs only have one track
else if (!mangleTrackName(name)) continue; // Beautify the track name
// Add dummy notes to tracks so that they can be seen in song browser
- if (name != "VOCALS") s.track_map.insert(make_pair(name,Track(name)));
- else s.notes.push_back(Note());
+ if (name == "VOCALS") s.notes.push_back(Note());
+ else {
+ for (MidiFileParser::NoteMap::const_iterator it2 = it->notes.begin(); it2 != it->notes.end(); ++it2) {
+ // If a track has not enough notes on any level, ignore it
+ if (it2->second.size() > 3) { s.track_map.insert(make_pair(name,Track(name))); break; }
+ }
+ }
}
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-02-04 03:18:16
|
Module: web Branch: master Commit: 93fc0379de552183b7479cc3df3acf2cf2c73cac Author: Lasse Karkkainen <tro...@tr...> Date: Thu Feb 4 05:18:07 2010 +0200 Fix typo --- htdocs-source/index.txt | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/htdocs-source/index.txt b/htdocs-source/index.txt index d83a96b..9741615 100644 --- a/htdocs-source/index.txt +++ b/htdocs-source/index.txt @@ -1,7 +1,7 @@ Announcements :h2:2010-02-04 - Status update -Currently we have no easy solution to the Windows audio sync issues that still cause some jerkiness and it appears that most of the audio code will have to be rewritten to really fix the issue properly. Because of this the next release will be delayed further and it is likely to be numbered 0.6 instead of another 0.5 bugfix version as there has been significant work done on improving the graphics and there also are many usability fixes. Part of the problem is that people find implementing new features more interesting that fixing complex bugs, something that I gather to be a very common problem with open-source projects where all the developers are volunteers. +Currently we have no easy solution to the Windows audio sync issues that still cause some jerkiness and it appears that most of the audio code will have to be rewritten to really fix the issue properly. Because of this the next release will be delayed further and it is likely to be numbered 0.6 instead of another 0.5 bugfix version as there has been significant work done on improving the graphics and there also are many usability fixes. Part of the problem is that people find implementing new features more interesting than fixing complex bugs, something that I gather to be a very common problem with open-source projects where all the developers are volunteers. :h2:2010-01-16 - 0.5.1 released This is a source-only bugfix release, most notably fixing issues with Windows version and adding more instrument mappings. List of changes is below and the packages can be found from the download page. |
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-02-04 03:11:11
|
Module: web Branch: master Commit: a628a84a002f8ec465041837769d9dbf5922a561 Author: Lasse Karkkainen <tro...@tr...> Date: Thu Feb 4 05:09:18 2010 +0200 Post status update --- htdocs-source/index.txt | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/htdocs-source/index.txt b/htdocs-source/index.txt index a8492fc..d83a96b 100644 --- a/htdocs-source/index.txt +++ b/htdocs-source/index.txt @@ -1,5 +1,8 @@ Announcements +:h2:2010-02-04 - Status update +Currently we have no easy solution to the Windows audio sync issues that still cause some jerkiness and it appears that most of the audio code will have to be rewritten to really fix the issue properly. Because of this the next release will be delayed further and it is likely to be numbered 0.6 instead of another 0.5 bugfix version as there has been significant work done on improving the graphics and there also are many usability fixes. Part of the problem is that people find implementing new features more interesting that fixing complex bugs, something that I gather to be a very common problem with open-source projects where all the developers are volunteers. + :h2:2010-01-16 - 0.5.1 released This is a source-only bugfix release, most notably fixing issues with Windows version and adding more instrument mappings. List of changes is below and the packages can be found from the download page. |