nsaconvでゲームを圧縮してみる

ONScripterには前々からゲームデータを圧縮するnsaconvコマンドが付いてるんだけど、6月18日のバージョンからBMPJPEGに変換することも出来るようになったので、ひぐらしのなく頃に解−目明し〜祭囃し編−(以下、higurasi8)で試してみる。
Windows用でかつ、GUIフロントエンドがセットになったものもあるので、Windowsで変換したい人にはこっちが便利かも。

C&D Tools Win GUI
http://www.geocities.jp/stm_torm/ons/tool.html

ひぐらしのなく頃に解をザウルスで遊べるようにする

higurasi8がインストールされたフォルダには、ゲームデータとしてシナリオデータのnscript.dat、画像データなどのarc.nsa、音楽や音声データのWAVフォルダがあり、これらをSDカードかCFカードにnscrフォルダを作って、default.ttfの名前で用意したTrueTypeフォントみかちゃんフォント等)と共にコピーしておけばザウルスのONScripterで遊ぶことが出来る。

ゲームデータを圧縮する

nsaconvは前述のarc.nsaを圧縮するもので、SDカードのnscrフォルダに入れた場合はターミナルから以下のようにコマンドを入力することで変換が行える。
ちなみに全ての高速起動を切っても変換途中でメモリ不足となり、Killedで終了してしまうので、MemoryMonitorAppletで64MBのスワップを作ってから実行した。これでも途中、メモリ不足のダイアログは出るが無視して続行できる。

bash-2.05$ cd /mnt/card/nscr
bash-2.05$ mv arc.nsa arc.org
bash-2.05$ nsaconv -j -q 75 640 640 arc.org arc.nsa

「-j」はarc.nsaに含まれるBMPJPEGに変換するオプションで、「-q 75」はJPEGの圧縮品質を0〜100で指定できる。小さくするほど画質は悪くなる。指定しない場合は75になる。他に「-e」オプションを指定するとBMPファイル、WAVファイル、SPB圧縮されたファイルをbzip2圧縮できるが、higurasi8ではarc.nsaにWAVファイルが含まれていないせいか変換後のサイズは同じだった。
続く「640 640」は元画面サイズが640×480で画面サイズを変更しない指定、軽いデータにしたい場合やSL-A300SL-B500の場合は「640 320」を指定するのが吉。ひぐらしのなく頃に鬼隠し編から解の祭囃し編に至るまで全て画面サイズは640×480で作られていることがarc.nsaに含まれる背景画像のサイズなどから判る。
最後に変換元と変換先のファイル名を指定する。他にもnsaアーカイブバージョンによって-ns2、-ns3オプションを付けなければならない場合もあるが、ひぐらしのなく頃には全てnscript.dat内のスクリプトでns2やns3コマンドを使っていない為、付ける必要は無い。

圧縮前と圧縮後のファイルサイズ

オリジナルのarc.nsaは229MBなのに対し、圧縮後のarc.nsaは57.4MBと約1/4まで小さくなる。圧縮前はnscript.dat(4.49MB)、WAVフォルダ(337MB)も含めて570.49MBだったのが、398.89MBにまで小さくなる為、512MBのSDカードでも入る計算になる。
しかし、ザウルス単体で圧縮できちゃうのは非常にお手軽で便利やねぇ〜。

ひぐらしのなく頃に−鬼隠し〜暇潰し編−の場合

higurasi8と同様に圧縮すると、arc.nsaは213MBから50MBと1/4近くになり、nscript.dat(3.25MB)とWAVフォルダ(216MB)を含めても432.25MBだったのが269.25MBにまで小さくなる。
ちなみに320×240の画面サイズに圧縮すると、arc.nsaは15.5MBとメチャクチャ小さくなる。この時はONScripter-SD-s(もしくはONScripter-CF-s)のアイコンから起動しないといけないので注意。

WAVフォルダの圧縮

ただ、この状態でもゲームを始めるとサークルのロゴが出た後、オープニングのタイトルが出るまでにメモリ不足で強制的に終了してしまう。(落ちる直前までにキーを押してスキップさせればメニュー画面にまで進められる。)
見てみるとSE再生でメモリ不足になることが多いので、古くから行われている方法でWAVフォルダ内の各ファイルを圧縮してみる。

これでWAVフォルダは216MBから80.3MBと1/2以下に抑えることが出来、起動時もメモリ不足が出ることはなくなった。
ちなみにChangeWaveによるADPCM化以外に、CDexでRIFF-WAV(中身はMPEG1.0 Layer-3)に変換する手も使えるらしい。MPEG2.0 Layer-3だとダメなので注意せにゃならんとか。

arc.nsaの圧縮

ついでに昔ながらのarc.nsaの圧縮方法も試してみる。

以上の手順をcursor0.bmp、cursor1.bmp以外に対してのみ行う。これでarc.nsaは213MBから26.7MBと1/8近くに抑えることが出来る。nsaconvでは品質50にしても38.7MBまでしか小さくならなかったので、前述の手順ではカーソルのBMP以外にマズいものも変換しているのかも知れない。