やはり遅いのが気に食わず、いろいろ試してみた結果を書いてみる(テストは
wine のバージョンを 0.9.59 から 1.1.1 にあげてみた結果
シンプルかつオーソドックスな対処法である。
変化なし。無念じゃ。
ちなみに、どちらのバージョンでも Windows から d3dx9_36.dll をコピーしないと動かないよ。
winecfg でいろいろ弄ってみる
設定を間違えると東方の起動時に X が死ぬので注意が必要。
さて、いろいろ弄ってみた結果。
まずは、スローの東方地霊殿起動時のメッセージ
fixme:win:EnumDisplayDevicesW ((null),0,0x33f8d4,0x00000000), stub! fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface err:d3d:WineD3D_ChoosePixelFormat Can't find a suitable iPixelFormat fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface fixme:win:WINNLSEnableIME hUnknown1 (nil) bUnknown2 0: stub! fixme:d3d:IWineD3DSwapChainImpl_GetRasterStatus (0x1e3928) : stub (once) fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface err:d3d:WineD3D_ChoosePixelFormat Can't find a suitable iPixelFormat fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface fixme:win:WINNLSEnableIME hUnknown1 (nil) bUnknown2 1: stub!
非常に気になるのが、調度良いピクセルフォーマットが見付からないというエラー。
mesa のバージョンが古いものと思われるが、mesa に依存するソフトが多いためパス。
DLL のオーバーライドの変更
d3dx9_36.dll のオーバーライドの変更の結果
デフォルトは Native。
Built-in や Built-in → Native にすると d3dx9_36.dll を入れる前の状態に戻る。
そのときのメッセージ。
fixme:win:EnumDisplayDevicesW ((null),0,0x33f8d4,0x00000000), stub! fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface err:d3d:WineD3D_ChoosePixelFormat Can't find a suitable iPixelFormat fixme:d3d:WineD3D_ChoosePixelFormat Add OpenGL context recreation support to SetDepthStencilSurface fixme:d3d:IWineD3DSwapChainImpl_GetRasterStatus (0x17c5e8) : stub (once) wine: Call from 0x7b842310 to unimplemented function d3dx9_36.dll.D3DXCreateTexture, aborting wine: Unimplemented function d3dx9_36.dll.D3DXCreateTexture called at address 0x7b842310 (thread 001a), starting debugger... Unhandled exception: unimplemented function d3dx9_36.dll.D3DXCreateTexture called in 32-bit code (0x7b842388). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:7b842388 ESP:0033fb3c EBP:0033fba0 EFLAGS:00200212( - 00 - -IA1) EAX:7b82c499 EBX:7b8b09a4 ECX:00000000 EDX:01770134 ESI:01770134 EDI:006f35c8 Stack dump: 0x0033fb3c: 0033fbc8 00000008 6049d568 0033fc00 0x0033fb4c: 80000100 00000001 00000000 7b842310 0x0033fb5c: 00000002 60830980 60831204 00000000 0x0033fb6c: 0033fb9c 60798e8e 00000000 00000100 0x0033fb7c: 00000000 00000000 00000000 00000000 0x0033fb8c: 00000000 00000000 00000000 00000000 Backtrace: =>1 0x7b842388 RaiseException+0x78(code=0x80000100, flags=0x1, nbargs=0x1770134, args=0x33fbc8) [/home/lugia/wine-1.1.1/dlls/kernel32/except.c:85] in kernel32 (0x0033fba0) 2 0x60830925 __wine_spec_unimplemented_stub+0x35(module=0x60830980, function=0x60831204) [/home/lugia/wine-1.1.1/dlls/winecrt0/stub.c:35] in d3dx9_36 (0x0033fbd0) 3 0x6082df4c __wine_stub_D3DXCreateTextureFromFileA() in d3dx9_36 (0x01770028) 4 0x00010001 (0x00000007) 5 0x00000000 (0x00000000) 0x7b842388 RaiseException+0x78 [/home/lugia/wine-1.1.1/dlls/kernel32/except.c:85] in kernel32: movl0xfffffffc(%ebp),%ebx 85 } Modules: Module Address Debug info Name (86 modules) PE 400000- 4c6000 Deferred th11 ELF 60000000-6001d000 Deferred ld-linux.so.2 ELF 6001d000-60153000 Deferred libwine.so.1 ELF 60153000-6016b000 Deferred libpthread.so.0 ELF 6016b000-602bf000 Deferred libc.so.6 ELF 602bf000-602c4000 Deferred libdl.so.2 ELF 602c4000-602ed000 Deferred libm.so.6 ELF 602ed000-602f9000 Deferred libnss_files.so.2 ELF 602f9000-60311000 Deferred dinput8<elf> \-PE 60300000-60311000 \ dinput8 ELF 60311000-603b3000 Deferred ole32<elf> \-PE 60320000-603b3000 \ ole32 ELF 603b3000-604f7000 Deferred user32<elf> \-PE 603d0000-604f7000 \ user32 ELF 604f7000-60593000 Deferred gdi32<elf> \-PE 60510000-60593000 \ gdi32 ELF 60593000-605f4000 Deferred rpcrt4<elf> \-PE 605a0000-605f4000 \ rpcrt4 ELF 605f4000-60612000 Deferred iphlpapi<elf> \-PE 60600000-60612000 \ iphlpapi ELF 60612000-60626000 Deferred libresolv.so.2 ELF 60626000-60670000 Deferred dsound<elf> \-PE 60630000-60670000 \ dsound ELF 60670000-60701000 Deferred winmm<elf> \-PE 60680000-60701000 \ winmm ELF 60701000-60801000 Deferred wined3d<elf> \-PE 60710000-60801000 \ wined3d ELF 60801000-6081b000 Deferred libjis.so ELF 6081b000-60838000 Dwarf d3dx9_36<elf> \-PE 60820000-60838000 \ d3dx9_36 ELF 60838000-60857000 Deferred d3dx8<elf> \-PE 60840000-60857000 \ d3dx8 ELF 60857000-608c6000 Deferred libfreetype.so.6 ELF 608c6000-608d8000 Deferred libz.so.1 ELF 608d8000-60902000 Deferred libfontconfig.so.1 ELF 60902000-60922000 Deferred libexpat.so.1 ELF 60922000-60930000 Deferred libxext.so.6 ELF 60930000-60a19000 Deferred libx11.so.6 ELF 60a19000-60a1e000 Deferred libxdmcp.so.6 ELF 60a1e000-60a20000 Deferred libxcb-xlib.so.0 ELF 60a20000-60a23000 Deferred libxau.so.6 ELF 60a23000-60a3a000 Deferred libxcb.so.1 ELF 60a3a000-60a5a000 Deferred imm32<elf> \-PE 60a40000-60a5a000 \ imm32 ELF 60a5a000-60a5d000 Deferred libxinerama.so.1 ELF 60a5d000-60a62000 Deferred libxxf86vm.so.1 ELF 60a62000-60a6a000 Deferred libxrender.so.1 ELF 60a6a000-60a70000 Deferred libxrandr.so.2 ELF 60a70000-60a73000 Deferred libxcomposite.so.1 ELF 60a73000-60a78000 Deferred libxfixes.so.3 ELF 60a78000-60a81000 Deferred libxcursor.so.1 ELF 60a81000-60ab5000 Deferred winealsa<elf> \-PE 60a90000-60ab5000 \ winealsa ELF 60ab5000-60b7a000 Deferred libasound.so.2 ELF 60b7a000-60b91000 Deferred msacm32<elf> \-PE 60b80000-60b91000 \ msacm32 ELF 60b91000-60bb7000 Deferred msacm32<elf> \-PE 60ba0000-60bb7000 \ msacm32 ELF 60bb7000-60bcb000 Deferred winejoystick<elf> \-PE 60bc0000-60bcb000 \ winejoystick ELF 60bcb000-60bd6000 Deferred libgcc_s.so.1 ELF 60bd6000-60deb000 Deferred i915_dri.so ELF 60deb000-60e03000 Deferred libselinux.so.1 ELF 61ab6000-61abb000 Deferred euc-jp.so ELF 6413b000-6416b000 Deferred d3d9<elf> \-PE 64140000-6416b000 \ d3d9 ELF 6bde5000-6bde8000 Deferred libxdamage.so.1 ELF 6bdea000-6bdf2000 Deferred libdrm.so.2 ELF 6be41000-6bea0000 Deferred libgl.so.1 ELF 6c90a000-6c95b000 Deferred advapi32<elf> \-PE 6c920000-6c95b000 \ advapi32 ELF 70a30000-70a38000 Deferred libsm.so.6 ELF 70a40000-70a58000 Deferred libice.so.6 ELF 70abe000-70b54000 Deferred winex11<elf> \-PE 70ad0000-70b54000 \ winex11 ELF 76c67000-76c7b000 Deferred midimap<elf> \-PE 76c70000-76c7b000 \ midimap ELF 77809000-77822000 Deferred d3dx9_37<elf> \-PE 77810000-77822000 \ d3dx9_37 ELF 7b069000-7b0a0000 Deferred dinput<elf> \-PE 7b070000-7b0a0000 \ dinput ELF 7b800000-7b92d000 Dwarf kernel32<elf> \-PE 7b820000-7b92d000 \ kernel32 ELF 7bc00000-7bca2000 Deferred ntdll<elf> \-PE 7bc10000-7bca2000 \ ntdll ELF 7bf00000-7bf03000 Deferred <wine-loader> Threads: process tid prio (all id:s are in hex) 0000000c 00000012 0 0000000e 0 0000000d 0 0000000f 00000016 0 00000015 0 00000011 0 00000010 0 00000019 (D) J:\hajime\th11tr\th11.exe 00000023 0 00000022 0 00000021 0 00000020 15 0000001f 0 0000001a 0 <== 0000001b 0000001c 0 Backtrace: =>1 0x7b842388 RaiseException+0x78(code=0x80000100, flags=0x1, nbargs=0x1770134, args=0x33fbc8) [/home/lugia/wine-1.1.1/dlls/kernel32/except.c:85] in kernel32 (0x0033fba0) 2 0x60830925 __wine_spec_unimplemented_stub+0x35(module=0x60830980, function=0x60831204) [/home/lugia/wine-1.1.1/dlls/winecrt0/stub.c:35] in d3dx9_36 (0x0033fbd0) 3 0x6082df4c __wine_stub_D3DXCreateTextureFromFileA() in d3dx9_36 (0x01770028) 4 0x00010001 (0x00000007) 5 0x00000000 (0x00000000) wine: Call from 0x7b842310 to unimplemented function d3dx9_36.dll.D3DXCreateTextureFromFileA, aborting
Windows のバージョンの変更
変化なし。デフォルトは XP。
3.1 とかに設定しても変わらないwww
Vertex Shader を None に
しても変わらない。
Pixel Shader を 無効 に
しても変わらない。
X の設定を変えてみる
デフォルトのドライバは intel。
ドライバを i915 に・・・って入ってない(汗
ドライバを i810 にすると画面本体の解像度が悪くなるだけで変化なし。
X の AIGLX をオフにしてみる
変化なし。うーん・・・
mesa の設定を変えてみる
一番有力かも知れないが、場所が解からない(駄
[lugia@raralu-ra etc]$ yum list mesa* Loading "installonlyn" plugin Excluding Packages in global exclude list Finished Installed Packages mesa-libGL.i686 7.0.3-1m.mo4 installed mesa-libGL-devel.i686 7.0.3-1m.mo4 installed mesa-libGLU.i686 7.0.3-1m.mo4 installed mesa-libGLU-devel.i686 7.0.3-1m.mo4 installed Available Packages mesa-libGLw.i686 7.0.3-1m.mo4 updates-released mesa-libGLw-devel.i686 7.0.3-1m.mo4 updates-released mesa-libOSMesa.i686 7.0.3-1m.mo4 updates-released mesa-libOSMesa-devel.i686 7.0.3-1m.mo4 updates-released mesa-source.i686 7.0.3-1m.mo4 updates-released
とりあえず、インストールされていないパッケージがあるのでインストールしてみた
が、変化はなかった (逆にあったら困るレベルに達しているが
東方自体を 16 ビットで起動してみる
custom.exe が wine で起動しないか、未実装のため変更できず。
(エラーメッセージもない)
東方のログ
東方動作記録 --------------------------------------------- 使えるパッドが存在しないようです、残念 DirectInput SetCooperativeLevel が使用できません リフレッシュレートを60Hzに変更を試みます T&L HAL で動作しま〜す DirectSound は正常に初期化されました ----------------------------------------------------------
SetCooperativeLevel はキーボードなどの占有にかんする設定なので、描画には影響しない・・・はず。
Windows Native の DirectX をインストールする
http://d.hatena.ne.jp/kakurasan/20080331/p1
の方法を利用することで wine に DirectX をインストールできる。
その結果・・・「少女祈祷中」の画面が早くなったが長くなった(ぇ
タイトル画面に行ってからは変化なし。
dsound.dll も Native のを使用しないと動かない。
上のぺーじでは dsound.dll は built-in になっている。
うんぬ〜〜〜〜(壊
さらに言うと終了時に東方が落ちるようになった(駄
(正常に終了しなくなった)
余談だが、音楽は通常の速度で再生されている。
地霊殿の漢字が間違ってました(^_^;