### Micco's Home Page ### Welcome to Micco's page!!
Sorry, but this web page is written in Japanese.
<English>
■ 更新情報
■ このWebページについて
■ お知らせ
■ ダウンロード
■ DLL のインストール方法
■ SFX の設定例
■ いろいろ
対応ブラウザー
[Internet Explorer] [Firefox] [Opera] [Sleipnir] [Safari] [Google Chrome]
連絡先:Micco
[e-mail]

今日の出来事 (Dec, 2020)

●Dec.27,2020

Ubuntu 20.04 LTS ゲストと Wine 6.0 RC3...

 拙作ソフトの動作確認環境として Wine を追加しようと思い立ち, まずは KNOPPIX 5.3.1 + Wine 0.9.54βUbuntu 8.04 LTS + Wine 0.9.60 といった環境でテストを始めたのは, もう 12 年も前になります。 当時は Wine がβ版だったこともあって, Windows プログラムの実行すら ままなりませんでした。 が, その後 Wine の開発が進み VMware のほうでもゲスト環境での Direct3D や OpenGL といった機能への対応化が行われたことから, 「VMware Workstation 12.5.8 Pro Build 7098237」のページで少し触れているように, Ubuntu 16.04 LTS ゲスト辺りでは『千の刃濤、桃花染の皇姫』といった DirectX 9.0c 上の Direct3D を必要とするソフトも動作するようになっています。 さすがに 3D バリバリのゲームやベンチマークまでは無理ですけれど…。

…と, そこまでは良かったのですが, いろいろなソフトを入れたり設定を弄ったり, はたまた Ubuntu 18.04 LTS や 18.10 LTS へアップグレードしたり…と少々お遊びが過ぎてしまい, 何時の間にか「3D ゲームは動作するのに拙作 LHMelt を始めとした普通のソフトは動作しない」という本末転倒の状況に陥ってしまいました。 (笑)  幸い過去環境のバックアップが採ってありますから, そこから改めて環境構築を進めることは可能です。 しかし, Wine の版が 1.x や 2.x では そろそろ動作確認用としては使えなくなってきているのも事実です。 そこで, 最近の版で新たに環境を作成することにしました。

 というわけで 1 時間程度でサクッと構築した環境が以下のとおり:

まずは左上画像のとおり OS が Ubuntu 20.04.1 LTS となっています。 最新は 20.10 LTS ですが, まだまだ そちらのほうが各種情報を得やすい…ということで, 20.04 を選択しています。 ゲストハードウェアの版は 3D を有効化した 12.0, VRAM 容量はメインメモリー 2GB での推奨値 768MB にしています。 Open-VM-Tools は DVD イメージに入っていたものを そのまま使っていて, 自前ではインストールしていません。

一方の右上画像…。 Wine は 6.0 RC3…つまり最新の Staging をインストールしました。 2.x という あまりにも古い版から見れば 5.3 も 6.0β も同じでしょうから。 (^^;)  あと, 最初期から それでテストをしているので, 少々の足枷ではありますが x64 版での使用となっています。

 環境構築が終わったので, 早速各種ソフトを試してみたわけですが…。 LHMelt を始めとした拙作ソフトが普通に動作するのは当たり前として, DirectX 対応ソフトまでが特に問題なく動作するのに対して, Direct3D 対応ソフトだけは どれも動作しませんでした。 これまで それが可能だった設定を今回同じく行っているにも拘わらずです。

「はて? 何故なのかしら?」と暫く悩んだあげく「こういった時は Wine のログですわ, お姉様…」と左上画像のようにログを吐かせながら実行してみたところで原因が判明しました。 ログとして出力されているエラーが「err:d3d:resource_init Out of adapter memory.」…それの意味するところは「(Wine の認識している) ビデオメモリー不足」です。 いや, 有名どころのエラーではあるのですが, 遙か彼方の昔に お目に掛かっただけで, その後作成した いくつもの Ubuntu 環境で見掛けなかったことから, すっかり頭から抜けていました。

ともあれ, 原因さえ分かってしまえば やることは一つ。 右上画像のごとく Wine に「ビデオメモリーが 1GB あるのよ~」と暗示を掛けておきます。 Winetricks でいうところの「videomemorysize=1024」ですね。 普通は そちらで行うことになると思います。

設定を行った結果は…:

左上画像のとおり無事 Direct3D 対応ソフトが動作するようになりました。 当然ですが拙作 LHMelt 等も普通に動作しています。 …動作しているのですが, ある意味これは凄いことだったりします。 今の LHMelt や UNLHA32.DLL は例の DLL ハイジャック対策で「LHMelt 等での DLL ハイジャック対策覚え書き」の記事で書いたような複雑怪奇な処理を行っています。 それが ちゃんと機能しているのですから, Wine のレイヤー処理での API 再現度は かなり高いと言えるでしょう。

余談ですが, 環境構築後かなり初期の段階で実はヒントが提示されていました。 それは右上画像は glxinfo のログです。 よく見ると「Video memory: 1MB」と あり得ない数値になっています。 ここは本来であれば 768MB となっているところで, Mesa のソフトウェア処理では 1024MB と表示される箇所です。 その辺りもあって, 暗示での VRAM 容量を 1GB としているのでした。

 さて, 無事 Direct3D 対応ソフトも動作するようになりましたので, お遊びで VMware の Windows ゲストの動作確認で使用しているベンチマークや体験版ソフトを いくつか試してみることにしました。 掲載順は「VMware 上で動作した DirectX 使用ソフト (DirectX のバージョン別)」と同じく DirectX のバージョン順とします。

例を挙げる前に まずは各環境の お温習いです。 ホストが東芝 dynabook Qosmio T851/D8CR と古い PC なのは置いておいて, 仮想 PC ソフトとして VMware Workstation 12.5.8 Pro を使用していて, その上で Ubuntu 20.04 LTS 環境を素直に構築し最新 Staging な Wine 6.0 RC3 をインストールしています。 あえて x64 環境を選択し, Winetricks で取り込んだのはフォントを除けば quartz のみとなっています。

そのフォントですが, どこまで取り込むかは各ユーザーしだいですが, fake japanese や Takao font など日本語フォントのエイリアス設定を伴うフォントを取り込まないと, InstallShield 方面でフォントが表示されず豆腐文字だらけになってしまいます。

Winetricks では, あとは上で書いたように「videomemorysize=1024」を行っています。 これは環境によりますので「必要なら」といった趣ですね。 Winecfg は特に何も弄っていません。 既定値である Windows 7 設定を確認することと, 適当なサイズで仮想デスクトップをエミュレートさせたほうが, 全画面表示のソフトの安定度が上がる…といったくらいですね。

VMware の設定ファイルに追加している項目は以下のとおりです:


mks.enable3d = "TRUE"
svga.graphicsMemoryKB = "786432"
mks.enableDX11Renderer = "FALSE"
mks.enableD3DRenderer = "FALSE"
mks.enableGLRenderer = "TRUE"
	  

関連性があることから一緒に並べてありますが, 上 2 行は既定値です。 それはともかく何をやっているかというと, 順番に:

  • 仮想環境の 3D 機能を有効化 (既定値)
  • VRAM 容量をメインメモリー 2GB での推奨値である 768MB に設定 (既定値)
  • (VMware の) DirectX 11 によるレンダリングを無効化
  • DirectX 9.0 によるレンダリングを無効化
  • OpenGL 3.3 によるレンダリングを有効化

といった感じです。 DirectX 11 でのレンダリング無効化は VMware 12 時代の定番設定でもありますね。 が, ここでは DirectX 方面無効化の一環として指定しています。 DirectX 9.0 でのレンダリング無効化は「そもそも DirectX を使用しないため」の指定で, その代わりとして OpenGL 3.3 によるレンダリングを有効化しています。 当該ゲストが OpenGL を本家とする linux 系 OS ですから, 無用な変換と不具合を減らすべく OpenGL 系を指定しています。

 それでは順番に例を挙げることとしましょう。 最初は DirectX 7.0 より前のソフトです:

『Diablo II』は DirectX 6.0 世代のソフトで DirectDraw と Direct3D の どちらでも動作しますが, インストール時の検査で Direct3D が認識され, ここでも ちゃんと Direct3D で動作しています。 DirectX 6.0 ということでハードウェア T&L には未対応なのですが, それによる速度低下等は特に発生していません。 古い VMware の時代と異なり今では (ホストでは) DirectX 11 や OpenGL 3.3 で描画が処理されるからなのでしょう。

ちなみに, もう一つ例に挙げようとしていた『Age of Empires II (AOK)』は例外が発生して動作しませんでした。 古い DirectX (の一部 DLL) をインストールすれば動作するのだと思いますが, そこまでは試していません。

続いては DirectX 7.0a 世代のソフトです:

まずは左上画像…。 曲がりなりにも『3DMark2000』が完動するのであれば, そりゃあ紙芝居ゲーくらいは動作するでしょう…と言えるかもしれません。 (^^;)  昔は このような「真っ当な 3D 表示を行うソフト」は動作しませんでしたので, 着実に Wine は進化しているようです。

続いて右画像の『秋色恋華』ですが, DirectDraw で描画を行うソフトなので一番動作しやすい部類と言えるでしょう。 感覚的には, 拙作 LHMelt のような普通のソフトが動作するのであれば動作して当然…といったところでしょうか?  この辺りが動作しないようなら, 何か根本的な部分で問題を抱えていることになります。

さらには DirectX 8.0 世代のソフトです:

まずは左上画像の『3DMark2001 SE』ですが, ベンチマーク自体は完動するもののデモは実行不可だったりします。 が, これは Windows ゲスト…どころかホストでも同じで, Windows 7 環境などでは元々互換性アシスタント機能で互換性設定を「Windows XP」にしないと動作しませんから, Wine に非はありません。 過渡期の DirectX 8.0 ということで DirectSound 周りに問題を抱えているのでしょう。 ちなみにサウンドをオフにするとホスト共々デモが動作するようになります…音なしでは半分意味がありませんけれど。 (^^;)

一方は右画像の『FORTUNE ARTERIAL』…。 DirectX 8.0 世代ということでエフェクトの表示などに専用機能を使っていたりしますが, DirectDraw レベルのソフトには変わりありませんので, 特に何もすることなく動作すると思います。

 さて, 3DMark の類いは別として, ここまでは 3D 機能への対応度が比較的低い Wine 環境でも動作するソフトばかりでしたが, ここからは OS や Wine が ちゃんと 3D に対応していないと動作しないソフトばかりとなります。

まずは一部の機能について DirectX 9.0 を必要としているソフトです:

左上画像は『プリミティブリンク』ですが, このソフトでは画面の拡大や縮小を伴ったスクロール, 特定領域でのクリッピングや座標変換を伴っての複数動画再生 (要は いろんな方向を向いたテクスチャー上での再生), エフェクト, そして それらの透過を伴った重ね合わせ…といった特定用途のため (だけに) DirectX 9.0 や Direct3D の機能が使用されています。 この世代では「DirectX = Direct3D」といった雰囲気がありますので, ちゃんと 3D 機能にも対応していないと DirectX 自体が上手く動作しません。

右上画像の『Wiz ANNIVERSARY』も同じようにエフェクト表示などで DirectX 9.0 の機能が使用されています。 ちなみに この体験版には ちょっと癖があって, 付属の DirectX 9.0c をインストールしないと動作しない環境が多々発生するのでした。 その辺りもあって ちょくちょく仮想 PC 環境の動作確認用に使っています。 (笑)

最後は DirectX 9.0 を必要とする Direct3D 対応ソフトです:

左上画像の『タイムリープぶーとべんち』ですが, 本格的なベンチマークとは比較すべくもないのですが, HDR, セルフシャドウ, ソフトフィルタ, 被写界深度, そしてバックハイライトといった機能の有無を選択できたり, T&L HAL, HAL, Emulation といったハードウェア依存度を選択できたりと簡易チェックに使えるのと, また経験則的に「これが動作するなら多くのソフトは大丈夫」という一つの指標としても機能することから, 好んで採用しているソフトです。

このソフトが動作するかどうかで「紙芝居系のゲームしか動作しないのか真っ当なゲームも動作するのか?」を簡易的に判別できます。 これが動作しないようなら, 下で挙げている『STREET FIGHTER IV Benchmark』以降のソフトは基本的に動作しません。 あ, ちなみに ここ以降のベンチマークのスコアを気にしてはダメです。 ただでさえ 9 年も前の PC なのに, それを Windows ゲストですらない Wine を擁した Ubuntu ゲストという特大ハンデ有りの環境で実行しているのですから…。 ホストの 80 ~ 90% の速度で動作する Windows ゲストと比較するのは無謀というものです。 (^^;)

右上画像は『千の刃濤、桃花染の皇姫』ですが, 紙芝居系は紙芝居系でも上で挙げてきた同様のゲームとは一線を画します。 というのも, 製品版では変更されましたが『穢翼のユースティア』の体験版が AGP メモリーを必須としていた過去があって, オーガスト勢では それまでと それ以降の製品とで Direct3D への要求度合いが異なっています。 その辺りもあって この体験版も確認用として御登場頂いているのでした。 あと, 動画系への要求度合いも意外に高いので, そちら方面のチェック用としても使えます。 (他ソフトは動作するのに, この体験版での視点変更や日付切り替わりの際に落ちてしまう…といった形で表面化する。)

『STREET FIGHTER IV Benchmark』は比較的あっさりと動作する代わりに, 「まともに使えるのか?」の指標として使えます。 この画像の例も該当しますが 60 FPS に届かないとゲームにならず, このベンチでは それが「台詞 (のサウンド) とキャラの動きがずれる」という形で表面化します。 (サウンドでは とっくに喋り終わっているのに, キャラ (の描画) が喋り続ける。)

一方の『メギドベンチ』は 3DMark06 と同様に比較的テクスチャーなどの使用量が多いことから, 機能の可否ではなく その能力的指標を計るものとして使えます。 能力が不足すると, まずはベンチ後半でのテクスチャーの ちらつきや (色の) 反転といった形で表面化し, さらに不足しているようだと 2 週目ベンチの切り替わりタイミングでエラー終了してしまいます。

『「ぐるみん」ベンチ』は, Direct3D の要求度合いは『タイムリープぶーとべんち』以降と同レベルながら, それらの中で最軽量組の指標として使えます。 これの平均スコアが 10000 を切るようなら それが可能だったとして, Wine で Direct3D 対応ソフトを使うのは無理と言えるでしょう。

ちなみに, ここまでのソフトは右上画像を見てのとおり quartz のみ Winetricks を使ってネイティブモジュールを組み込んでいます。 これがないと動画系は ほぼ全滅で, ここまで挙げたソフトの殆どが動作しません。

 …と, ここまでで 3DMark03 以降を挙げていないのには理由があって, 実は手元にあった各種 3DMark の版が少々古く, それらでは「Invalid Float Operation」エラーで実行不可だったのでした。 手元の Windows ゲストやホストでは何の問題もなく動作していたのでベンチ側の問題とは気付かなかったのですよね。 試しに最新版へ更新してみたところ, あっさりと動作しました。 (^^;)

まずは 3DMark03 です:

値が低いのはホストの能力を考えて当たり前ながら, 得手不得手の傾向を伺う足しにはなると思いますので, スコアについても挙げてあります。 Feature Tests を行うために, 3DMark03 以降は Pro 版や Advanced 版を使用しています…が, 今回のテストでは特に違いがなかったことから 03 のみ Free 版時の画像になっています。

3DMark 2000 の ところでも書きましたが, こちらについても「3DMark03 が完動するなら, そりゃ大抵の Direct3D ソフトが動作するよね~」と言えそうです。 あ, そうそう。 3DMark2001 と異なり, 03 以降は普通にデモが正常動作します。 (笑)  あと, 3DMark03 はネイティブ版だと そこかしこで色がおかしくなるので, 内蔵版の DirectX 9.0 を使ったほうが安定します。 可能なら設定を使い分けると良いでしょう。

お次は 3DMark05…:

意外にも最新版さえ使えば 3DMark05 も正常動作します。 が, さすがに元々重量級なだけあって, もはや「単に計測できるだけ」と言えそうな事態へ陥りつつあるのでした。 もっとも, 自身としては その「動作することを確かめる」のが目的ですので, それで十分ですけれども。 何しろ本命は通常アプリである拙作ソフトの動作確認で, Direct3D 方面は単なる余興なのですから…。 (^^;)

最後は 3DMark06 です:

「動くはずないよね~」と お遊びモードでインストールしてみたのですが, 動作してしまいました。 (笑)  ただ, さすがに quartz だけでは無理だったようで, ネイティブ版 DirectX 9.0c をインストールする必要がありました。 さらに, Visual C++ のランタイムなど あれこれとセットでインストールされますので, これまでの環境とは毛色が異なっています。 幸い それで動作しなくなるようなソフトは有りませんでしたけれど…。

3DMark05 と異なり こちらは真の意味で「単に計測できるだけ」です。 ホストの能力不足が祟って扱えるテクスチャーの量が足りないわ処理が間に合っていないわ…と, そこかしこでテクスチャーが黒抜きや色反転を起こしてしまっています。

 といった感じで, Ubuntu 20.04 LTS + Wine 6.0 RC3 な環境では通常のソフトのみならず, 予想以上に Direct3D ソフトが そのままで動作してしまう結果となりました。 これくらい動作すると, そろそろ実機であれば実用を視野に入れて良いかもしれません。 個人的には M1 MacBook 方面を野望としたいところです。 (笑)

Jan.3,2021 追記

 Win64 版 Wine と Win32 版とでは少々事情が異なりますので, 改めて Ubuntu 20.04 LTS + Wine 6.0 RC4 (Win32) な環境を作成し, その手順を簡単に纏めてみました。

●Dec.25,2020

Windows 10 20H2 と VMware Workstation 12.5 Pro...

 VMware Workstation 12.5 Pro の存在がネックとなって手動チェックによるアップグレードが行われず, 結果として 1 ヶ月遅れで Windows 10 1903 への強制アップグレードを行うに至った東芝 dynabook Qosmio T851/D8CR ですが, 機能の有効化だけを行い実質アップグレードレベルの作業は何も行われない 1909 へは すんなり上がったものの, その後 2004 へ上がることは全くなく 20H2 も手動チェックの空振りとなる日々が続いていました。

ところが, 11 月の Windows Update 日となる 11 日に転機が訪れました。 それは…「20H2 への無条件アップグレード」の解禁。 これまでも ある程度期間を経た時点で行われてきたものですが, 今回は いつもと毛色が異なります。 というのも, いくら無条件とはいえ, マイクロソフト自身が把握し情報公開も行っている, アップグレード後に比較的重大な不具合を抱えるだろう PC…つまり, これまでならアップグレードを行わなかった PC すらアップグレードの対象になっているからです。

となれば, 「通常であれば対象から外れていそうな 9 年も前に買った自 PC にもアップグレードのチャンスがあるかもしれない」と 2 日後の 13 日に手動チェックを試してみたところ…右上画像のとおり あっさりと 20H2 へのアップグレードが行われてしまいました。 引っかかるはずの VMware Workstation 12.5 Pro や内部 USB 接続な東芝謹製チューナー…, さらに裸眼 3D 方面を含む画像処理チップも一切チェックされることなく…。 「無条件」の文字は本当のようです。 (^^;)

 さて, アップグレードされたは良いのですが懸案となるのは「発生する可能性のある問題点」です。 機能自体…といいますか東芝謹製ソフト類は Windows 10 となった時点で使えなくなっていますので今更ですが, 不具合が接続 (内部) 機器というよりもチップを含む USB コントローラー方面で発生する類いのものですから, 何らかの拍子に表面化すると やっかいです。 というわけでアップグレード後に動作確認を行っていたのですが, どうやら確認した限りでは不具合は発生しないようです。 やれやれ一安心…と思ったところで悲劇は起き…いえ, 起きていることに気付きました。 (笑)

VMware Workstation で Win 10 ゲストを立ち上げたところ, ゲスト起動直後に警告ログの記録されたことを示すアイコンが表示されました。 「おや?」と思いつつ確認したところ「光学ドライブが存在しない」と申告しています。 試しに Win 7 や Ubuntu 18.04 など他のゲストも起動してみたところ, どのゲストも同じ状況です。 …と, よく見たら そもそもホストの Explorer に光学ディスクが一覧されていません。

「Win 10 のアップグレード後に光学ディスクが一覧されなくなる」という不具合は意外と有名どころだったりしますので, その対処法に従い光学ディスクのドライバーを入れ直してみるも結果は変わりませんでした。 どうやら重傷のようです…と普通なら困ってしまうところなのですが, DynaBook SS001 以来の真性東芝 PC 使いとして思い当たる点があります…そう, 東芝謹製ソフト類です。

というわけで, 不具合の発生元が光学ディスクですので, その筋をドライバー方面から辿って探ること 2・3 分…サービスに一覧されている「TOSHIBA Optical Disc Drive Service」を手動設定にすることで事なきを得ました。 正攻法は当該機能をアンインストールすることなのですが, 東芝システムを始めとした東芝謹製ソフトは Windows 10 へアップグレードした時点で, アンインストール不可となってしまいましたので…。 (^^;)  無効設定のほうが良いのかもしれませんが, 手動でも何時の間にか開始されている類いのサービスでもないらしく, また問題のドライバーが組み込まれることもないようですので, このまま様子見です。

そういえば, このサービス…何のために入っているのだったかしら?  おそらく録画機能か裸眼 3D 対応再生プレーヤー方面か, はたまた電源オフからの再生タッチボタンによる再生開始機能か…どこか その辺りのためのサービスだったはずです。

 ちょこっとだけ不具合に見舞われましたが, これで引き続き暫くは当該 PC を使って行けそうです:

左上画像の LHMelt のバージョン情報を見ると分かるのですが, 公式には 20H2 という現行 Windows 10 のバージョンに対して, API から得られた情報を素直に使う限りにおいては, 内部では元々の 2009 が そのまま使われているようです。 一方の右上画像…。 この Windows XP MCE 2002 ゲストが動作している間は当該ホスト PC を使い続けることになりますが, そろそろ新 PC でも使い続ける方法を探らないとダメですね…さすがに寿命は近そうです…特にキーボードが。 (笑)