Heboris C++ Port (DirectX9/SDL-WIN) C7V4EX 2007/11/23

フリーソフトのHeboris2001(作者:ほしけん氏 http://www.hosiken.com/)を
2chのみんなでバージョンアップした非公式版(バージョンC7V4EX)を
無理矢理C++に移植しました。DirectX9版、SDL版、SDL+OpenGL版があります。
※ 公開にあたり、原作者より公開許可を頂いてます。


はじめに
OpenGL版・SDL版に使う漢字フォントが、exe\kanjifont フォルダに含まれています。
初期状態では東雲フォント (http://openlab.jp/efont/shinonome/) が入ってます。
しかし、低解像度版で使用するフォントがライセンスの関係で含まれていませんので
「ナガ10」(http://hp.vector.co.jp/authors/VA013391/fonts/) というフォントを
別途入手して、knj10-1.1.tar.gz に含まれる「knj10.bdf」「5x10a.bdf」を
exe\kanjifont フォルダに入れてください。
なくても動きますが、低解像度時のミッションモードの文字表示が少し切れたりします。


フォルダ構成
■
┣ ■ フォルダ (好きな名前でいいです)
┃ ┣ □ build     プロジェクトファイル (自分でビルドしないなら不要)
┃ ┣ □ exe       実行ファイル一式
┃ ┗ □ src       ソース (自分でビルドしないなら不要)
┃
┣ □ sdl          ビルドしたいときにSDL一式を置いておく
┗ □ luna         ビルドしたいときにLunaライブラリ一式を置いておく

※ Luna, sdlの置き場所が変わりました。
※ Luna ライブラリのバージョンは 35.00 あたりを使ってください。
※ Luna ライブラリを使う前に、src\Luna差分 にあるソースを上書きしてください。
   (画像をきれいに表示するためのパッチです)


開発環境
・ Visual C++ .NET 2002〜2005 (無料版のExpress Editionでおk)


ライブラリ
(DirectX9版)
・ DirectX 9.0 SDK Update (October 2004)
   新しいバージョンではダメ。SDKそのものは他のバージョンと
   普通に共存できるので諦めて入れる。
   http://www.microsoft.com/japan/msdn/directx/downloads.asp
・ Luna for DirectX 9.0
   http://luna.sumomo.ne.jp/

(SDL版・OpenGL版)
・ SDL (SDL-devel-1.2.11-VC6.zip)
   http://www.libsdl.org/download-1.2.php
・ SDL-image (SDL_image-devel-1.2.5-VC6.zip)
   http://www.libsdl.org/projects/SDL_image/
・ SDL-mixer (SDL_mixer-devel-1.2.7-VC6.zip)
   http://www.libsdl.org/projects/SDL_mixer/


注意
・ 改造版について絶対にヘボリス原作者に問い合わせないでください。迷惑がかかります。
   わからないことは、極力調べ尽くしたうえで2chのヘボリススレあたりで聞きましょう。


使い方
・ 自分でビルドしたいのでなければ、exeフォルダの下にある実行ファイルを
   そのまま実行すればいいです。
・ 自分でビルドしたい場合は、Lunaを解凍して指定フォルダの下に入れ、
   build\vc_*** の下にある拡張子 sln のファイルをダブルクリック。
   VisualC++が起動するはずなのでメニューのデバッグ→開始を選んだらビルド開始。
   エラーが出た場合はDirectX SDKが入ってないか、その設定が出来てない線が濃厚です。
   http://221.117.39.229/charat/otogema/page/00environment/index.htm


去年公開したC++版からの改良点
・ フルスクリーン、320x240の解像度に対応しました。
・ 800x600以上のウインドウモードに対応しました。(DirectX版、OpenGL版のみ)
・ SDL版でもミッションモードのテキストが表示されるようになりました。
・ iniファイルで、文字列の項目(ツモ、プリセット名)に対応しました。
・ C++版固有の設定が heboris_cpp.ini ファイルでできるようになりました。
・ WAVやMP3のBGMがちゃんと再生されるようになりました。
・ OGGやMOD形式のBGMに対応しました。
・ DirectX版のBGM再生にDirectSoundを使うのをやめ、kbgm32.dll を使うようにしました。


YGS2K版からの変更点
・ ブロックの落下をスムーズモードにした際の表示不具合を修正しました。
   (src\script の ars.c, classic.c, classic_D.c, world.c を YGS2K版C7V4EX に
    上書きすれば、この修正をそのままYGS版に適用することかできます)
・ BGMにOGG、MODが使えるようになりました。コンフィグからBGMの種類を設定してください。
   mp3 → wav への変換(mp3デコード)は午後のこーだが便利です。
     http://www.marinecat.net/free/windows/mct_free.htm
   wav → ogg への変換(oggエンコード)はOggDropXPDを使うと簡単です。
     http://www.xucker.jpn.org/pc/oggdropxpd_install.html
   modファイルのデータはここでたくさん公開されています。
     http://modarchive.org/
   modで拡張子が違うものを混在させたい場合は、リネームついでに統一させてください。
   (読み込み時に、拡張子ではなくて中身のデータ形式で判別してるのでこれだけでOKです)
・ bgm.mid の垂れ流してはないMIDIのBGMが使えるようになりました。
   MP3・WAVなどと同じように、状況に応じたファイル名のMIDIファイルを再生できます。
   従来の bgm.mid 垂れ流しの設定名は、「MIDI(SIMPLE)」になりました。
・ heboris.ini で、数値に式が使えません。(40 * 60 とかはだめ。2400 と書いてください)
・ 某スーパープレイビデオ風鏡像表示など、一部未実装の機能があります。


補足事項
・ pngが読めるので、グラフィックをpngにしています。
   YGS版と違い、透過pngの透過部分が透過します。
   DirectX版はアルファチャンネル付きpngでもたぶんおkです。
・ VC++で開発する場合、メニューのプロジェクト-プロパティで出る
   構成プロパティのデバッグにある作業ディレクトリ欄に「..\..\exe」
   と入れないと、VC++からデバッグ実行がうまくいきません。


DirectX版補足事項
・ 3Dにまったく対応していないグラボ(昔のオンボードとか)では
   悲惨なぐらい遅いと思います。
・ DirectX SDKのインクルードパス、ライブラリパス(VC++のみ) の設定を忘れずに
・ Borland C++ は開発環境をそろえやすいですが、実行時に Luna同梱の
   LunaBCC.dll が必要になってしまいます
・ BGMはMIDI・MP3・OGG・WAVに対応しています。


SDL版・OpenGL版補足事項
・ SDL版・OpenGL版は、画面描画以外の部分はお互い一緒です。
・ もしかしたら、MacやLinux等向けにほぼそのままビルドできるかもしれません。
・ PCが速くないと重いです。320x240にすると緩和されるかも…。
・ SDL版の拡大縮小描画は誤魔化しながらやってるので、透過部分が抜けないなどの
   仕様があります。
・ Borland C++ で開発する場合は、SDLのソースをコンパイルして
   ライブラリファイルを作成する必要があります。
・ BGMはMIDI・MP3・OGG・WAVに対応しています。
   SDL_MixerのMP3・OGG対応版は以下から頂きました。
   http://www.libsdl.org/projects/SDL_mixer/


ありがとうございます
・ Lunaライブラリ、SDL関連、kbgm32.dll、bassmodなどの有用なライブラリを
   作成された方々、そしてHeborisをここまで作り上げた方々に感謝です。
   みなさんのおかげさまです。した。
