Radio Free San Andreasを試した

このエントリでも書いたようにGTA San AndreasのPC版ゲームDVDから音をぶっこ抜くツール、Radio Free San Andreasを試した。
Cygwinコンパイルはちょい面倒です。
リンク先の和訳になるが、

  • extract.cpp のposix_fadvise(in_fd, 0, 0, POSIX_FADV_NOREUSE); の行をコメントアウトする
  • libsslの代わりにlibcryptoをリンクする
  • libvorbisに加えてliboggをリンクする
  • metadata.confの中の " と ? の文字を全て取り除く

さらに

  • Makefileのリンクコマンドの$(LIBS)を$(OBJECTS)の後ろに持ってくる

C++言語とMakefileの知識がないと、これだけの説明で対処するのは確実に不可能。
ちょっと解説します。

コンパイルの仕方

1.cygwinをインストール
cygwinをインストールします。
追加でインストールするべきものは

  • devel の g++
  • devel の make
  • libs の openssl
  • libs の libogg0 と libogg-devel
  • libs の libvorbis0 と libvorbis-devel

など。これらにチェックを入れる

2.Radio Free San Andreasのアーカイブを展開する
c:\cygwin\home\shibacho(ユーザ名がshibachoの場合) などのcygwinのホームディレクトリが便利
3.アーカイブに含まれるextract.cpp の以下の行をコメントアウトする(CR改行コードに対応したエディタが必要)


// posix_fadvise(in_fd, 0, 0, POSIX_FADV_NOREUSE);
エディタはxyzzyを使いましたが秀丸エディタとかでも大丈夫です。

4.Makefileを以下のように編集する
太字の部分が編集した部分です。


CXX=g++
CC=gcc

CXXSRC=$(wildcard *.cpp)
CSRC=$(wildcard *.c)
SRC=$(CXXSRC) $(CSRC)

CXXFLAGS=-ansi -pedantic -Wall -O2 -DNDEBUG
CFLAGS=$(CXXFLAGS)

CXXOBJECTS=$(CXXSRC:%.cpp=%.o)
COBJECTS=$(CSRC:%.c=%.o)
OBJECTS=$(CXXOBJECTS) $(COBJECTS)

LIBS=-lm -lcrypto -logg -lvorbis

extract: $(OBJECTS)
g++ -o extract $(OBJECTS) $(LIBS)

%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@

%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean

clean:
rm -f $(OBJECTS) extract

5. おもむろにmakeする

$ make
ここで、extract.exe が出来れば成功です。
エラーが出たらここまでのことを確かめてください。

metadata.confの編集

metadataに含まれる " (ダブルコーテーション) と ? (はてな) を取り除いてください。
別の文字に置換しても良いです。

使い方

以下はDVDのドライブ名がDだった時の使い方です。


$ extract.exe /cygdrive/d/audio/streams/* ~/GTA-SA metadata.conf

ドライブ名がD以外の場合は、/cygdrive/d/ の部分を別のものに変えてください。
これで、c:\cygwin\home\shibacho\GTA-SA にラジオ局毎にoggファイルが出来ます。
DJのおしゃべりも細切れに抽出されます。

これで、日々のドライブに潤いが出そうです(本当か?)