one2.txt 2000-03-21 内容 ------ Project ODIN の助けを借りて、Windows95/98 用の(18禁)ゲーム、 「ONE〜輝く季節へ〜」を OS/2 Warp V4 上で動かしてみよう、という企画です。 2000-01-13 版からは LVNS3(てゆうか To Heart)も「いちおう」動作可能です。 とりあえずゲームはできますが、今後の課題がいろいろと多い感じ。 てゆうか 95 とか 98 あるんならそっちで動かしたほうが快適です。 まあええやんか(笑)。 2000-01-06 版からCD再生をサポートしてみました。 これでようやくまともに遊べそうになりました。どうすかね? 必要なもの ---------- 1. OS/2 Warp V4 日本語版 当たり前ですな。 CDオーディオを使う場合、マルチメディア機能をインストール しておく必要があります。 2. ODIN http://en.os2.org/projects/odin/ あたりでダウンロードできます。 ALPHA 5 版、および daily build 2000-03-11 で動作確認しています。 3.「ONE〜輝く季節へ〜」Windows95/98 版 本体実行ファイル ONE.EXE(CD-ROM 中では ONE.EX_)は以下のものを想定: ONE.EXE 1998-05-29 258,048 bytes (version 1.30) ONE.EXE 1998-06-09 258,560 bytes (version 1.40) たぶん version 1.40 が最新版だと思うので、手持ちがそれより古い 場合は http://www.tactics.co.jp/ に出向いてアップデートファイルを 入手するのがよいでしょう。 4. 「To Heart」Windows95/98 版 本体実行ファイル LVNS3.EXE(CD-ROM 中では LVNS3.EX)は以下を想定: LVNS3.EXE 1997-12-01 207,872 bytes (version 1.04) 手順 (ONE) ------------- とりあえず概略は以下のようになります。 2000-01-03 もしくはそれ以前のパッチをすでにご使用の場合は、手順 3.の あたりからやり直して、もう一度 ONE2.EXE を作り直してください。 1. Warp に ODIN をインストールする。 2. (もしまだインストールしていない場合は)「ONE〜輝く季節へ〜」を インストールする。 3. 「ONE〜輝く季節へ〜」のインストールされたディレクトリに、必要な ファイルをコピーする。必要なファイルは、 _DI32.DLL _O2MM.DLL ONE2_130.COM (ONE.EXE が version 1.30 の場合) ONE2_140.COM (ONE.EXE が version 1.40 の場合) _DI32.DLL と _O2MM.DLL は「ONE」と「To Heart」で共用です。 両方のゲームを実行したい場合、この二つの DLL を LIBPATH の通った ディレクトリに入れておくと、ディスク容量が微妙に節約できます。 本パッケージ中には2種類の _DI32.DLL が含まれています。 ZIP 中のカレントディレクトリに含まれるものは GRADD 用の修正が含まれた ものです。GRADD モデルのディスプレイドライバをお使いの場合は、たぶん これを使えばうまくいくと思います。 old ディレクトリに含まれるものは以前のバージョンに近いものです。 まあ両方ためして具合のいい方を使うのがよいでしょう。 4. 手持ちの ONE.EXE のバージョンに応じて、ONE2_130.COM と ONE2_140.COM の いずれかを実行。うまくいけば ONE2.EXE というのができているはず。 というかこれ、実行バイナリ (ONE.EXE) 中の GDI32.dll を _DI32.dll に、 それから WINMM.dll を _O2MM.dll という名前に変えているだけです。 バイナリエディタを使って、自分で同様のことをしてもまったく構いません。 5. ODIN がちゃんとインストールされていれば、この時点で ONE2.EXE を OS/2 上から起動することができるはずです。(Win32 バイナリがモロに 実行できるんですねえ。すげえなあ) しかし個人的には PE2LX で OS/2 バイナリに変換しておく方が好みです。 OS/2 コマンドプロンプトを起動し、ONE.EXE のあるディレクトリで pe2lx ONE2.EXE とかやって変換。間違えて ONE.EXE を変換してしまうと、意識が永遠の世界に 飛び出しかねないので注意。(バックアップは一応残りますが) 6. ここでとても重要なことを忘れていたのでつけ加えると、Windows 上ですでに ゲームを実行したことがある場合は、たぶんセーブデータのバックアップを しておいた方がいいでしょう。念のため。 具体的なファイル名は LOG.DAT、それから SAVE00 〜 SAVE30 ですね。 7. ONE2.EXE を実行。動きました? 手順 (To Heart) --------------- 概略は「ONE」の場合と同様で、必要なファイルをしかるべき場所に置いたのち、 本体バイナリにパッチを当て、(そうしたければ)PE2LX で OS/2 EXE に変換して 実行、となります。 パッチプログラムは 2H_104.COM で、2HEART.EXE とかいうバイナリができるはずです。 現状の問題(共通) ----------------- ・タイトル、メニュー、ダイアログの日本語がまともに出ない ODIN daily build を使っている場合、odin.ini の [Font Mapping] セクションを編集し、WarpSans に日本語フォントをマッピング することでかなり改善されます(完全ではないが)。 例: [Font Mapping] MS Sans Serif=WarpSans WarpSans=MINCHO ・描画が遅い Open32 の StretchDIBits が問題だと思う。IBM が抜本的な対策を 講じてくれれば改善するでしょう。つまり、期待はできません。 ・マウスのクリックがときどき無視されるような気がする おそらく、前述の問題とおおいに関連があります。 マウスボタンを押す時間を、きもち長めにしてみましょう。 ・キーボード入力が利かない いまのところ ODIN は GetAsyncKeyState をサポートしていないようです。 まあマウスは使えるので。(でも Ctrl キーは使いたい…) 個別の問題 (ONE) ---------------- ・起動が遅い フォントデータ展開の遅さが理由のひとつです(次項参照)。 ・フォントを変更するとしばらく無反応になる どうやら非漢字部分のフォントをあらかじめメモリに読み込んでいる らしいです。この間、おそらくPMのメッセージ処理も滞っているものと 推察されます(いわゆる「ビッグジョブ」というやつです)。 ディスクがゴリゴリ言い出したりしてしばらく無反応になるかもしれま せんが、ポインタの形が戻る(鉛筆形になる)までお待ちください。 ・ロード直後に画面が乱れる 何らかの方法で再描画(最小化してから元に戻すとか)すれば 元に戻ります、とその場しのぎの回答を出しておくことにします。 改善したいことはしたいんですが、どうもよくわからんのです。 ・フォントとかの設定が保存されてないくさい Alt + F4 とか終了ボタンとかで終わるとそうなるみたいです。 タイトルに戻ってから「END」をクリックするか、メニューバー上の 「終了」(てゆうか「終」しか見えないけど)を使ってください。 最近の ODIN daily build だと大丈夫のようです。 個別の問題 (To Heart) --------------------- ・ゲーム中に「メモリ不足です」と出て終了してしまう。 いまのところ原因不明です。 もしまじめにやる場合は、こまめにセーブしてください。すまん。 ・オープニング中にマウスをクリックしても反応がない。 画面描画が遅いせいです。たぶん。 がんばって何度かクリックすれば一回ぐらいはひっかかるかも(無責任)。 ・PCMがまともに鳴らない PCMは(現時点での ODIN では)ちょっとダメみたいです。 メニューの設定であらかじめオフにしておきましょう。 ・マウスポインタが羽根ペンにならない Alpha 5 版の ODIN だとポインタの形が変わらないようです。 なるたけ新しい Daily Build を使いましょう。 ・画面サイズを変更すると落ちる そうですね。変更しないでください(←それだけか!?)。 ・タスクリストに出てこないぜ 環境によってはそうなるようです。 えーっと…最小化させないように注意してください。 ・なんかパレットがちょっと変 うーん…6万色とか1600万色モードでやれば、色的には おおむね問題なくなるのですが。 あと、ごく一部のシーンでテキストが表示されないという不具合が 確認されています。ゲーム進行自体にあまり影響はでない、と 思いますが(とか言っていいのか)。 小技 ---- ODIN.INI の中にある [Font Mapping] セクションに記述を追加することにより、 お好みのフォントをマッピングできるそうです。ためしにこんな風に書いてみます。 一例: [Font Mapping] WarpSans=MINCHO MS Sans Serif=WarpSans Tms Rmn=MINCHO それから ONE2 を起動して、フォントの設定を Tms Rmn に変更してみましょう。 MINCHO フォントでゲームが楽しめます。肉太でいい感じです。 履歴 ---- 1999-12-29 ・ひとまず文字表示できた 2000-01-03 ・フォントの大きさをある程度判別できるようにした。 2000-01-06 ・CD再生をとりあえずサポート 2000-01-12 ・CDリピート再生をサポートしてみた (_O2MM.DLL)  実装的にちょっとヤバめ(ODIN 内部のヘルパ API を呼び出している)  なので、将来の ODIN では動作しなくなる可能性も高いです。  (きっと近い将来、ODIN 側でのCD再生もサポートされるでしょう…) ・あと、ONE で使ってもいない API をいくつか EXPORT してありますが、  妙な期待はしないように。てゆうかダメでした(泣) (_O2MM.DLL) 2000-01-13 ・To Heart をサポートしてみた。やってみたら画面が出たので (_DI32.DLL) ・微妙に修正。でも現状では動作に無関係 (_O2MM.DLL) 2000-01-20 ・パレット関係をいじる。256色モード時の To Heart の見栄えが  すこしまともになったかも。でも処理的に少しやばいかも (_DI32.DLL) ・バグ修正 (_O2MM.DLL)  どうして今までリピート再生がきちんと動いていたのか不思議だ。 2000-02-16 ・パレット関係の処理を元に戻した (_DI32.DLL) ・StretchDIBits の座標変換。GRADD モデルのドライバ用。  変換しないでそのまま ODIN に渡すやつも念のため同梱 (_DI32.DLL) ・waveOutOpen 時にモノラル PCM をステレオとして認識させる。  少なくともノイズにはならなくなった。でもあいかわらずまともに  再生されない。ドライバ側の問題なのかも (_O2MM.DLL) 2000-03-20 ・mixer 関係 API のラップ (_O2MM.DLL) ・PatBlt, GetRasterizerCaps, CreateFontIndirectA のラップ (_DI32.DLL) ・雫、痕、To Heart 新パッケージ版用パッチ。 ・MOON Renewal 用パッチ。 To Do ----- 1. 表示速度の改善 2. キー入力サポート 3. PCM 関係のサポート 4. MS拡張記号サポート 5. OS/2 用アイコン作成(誰か作ってくれ) 6. MOON. Renewal 方面への対応 7. etc... 予定は未定。 お約束 ------ この企画は無保証です。 動作内容については保証できません。 動作結果については補償できません。 各製品の製作/販売元への意見、質問、クレームはご遠慮ください。 つまり、各自のリスクをご承知の上でお楽しみください、とそういうことです。 sava/LP-Project http://www.vector.co.jp/authors/VA003720/lpproj/