WOLF RPG ã¨ãã£ã¿ã¼ 2.10ä½åã3Dã¢ã¼ãæã«Wineã§æååãããåé¡ã®éªéãªå¯¾å¦
(2015/12/28)æ¬è¨äºã¯ãWineでWOLF RPG エディター 2.10作品が3Dモード時に文字化けする問題と対処ãã¸ç§»åããã
ãWOLF RPG エディターのバージョン2.10で作成された作品をWineで3Dモードで動かしたときに文字描画が崩れる現象について(2014年2月末時点)ãã®ãã®å¾ã¨ãã¦ã3Dã¢ã¼ãæã«çºçããæååãã®å¯¾å¦ã«ã¤ãã¦ãæ±ãã
åé¡ã®ãããã
- Sagawaæ°æ°ããIDirect3DDevice9::UpdateTexture()ã®Wine(wined3d)ã«ãããå®è£ ã§ã¯ã(ãã¼ã¸ã§ã³1.7ç³»æç¹ã§ã¯)ããã¼ãã£é åãã¨ãã¦è¨é²ãããé åã ãã§ãªããã¯ã¹ãã£ã®å ¨ä½ãã³ãã¼ãããå¦çã«ãªã£ã¦ãã
- åæ°æ°ãããã¼ã¸ã§ã³3.11dããå¤ãå¹¾ã¤ãã®ãã¼ã¸ã§ã³ã®DXã©ã¤ãã©ãªã«ã¯ãIDirect3DTexture9::LockRect()ã§ç©å½¢ç¯å²ãããã¯å¦ç*1ããå¾ã§IDirect3DDevice9::UpdateTexture()ãå¼ã³åºããéã«ãå ã»ã©ããã¯ããé å=ãã¼ãã£é åã®ã¿ãã³ãã¼ãããã¨ããåä½ãæå¾ ããå¦çããã©ã³ããã£ãã·ã¥ã®æ±ãã®ä¸ã§åå¨ããWineã®å®è£ ã§ã¯ä¸ã®æåã®é¢ä¿ã§ç¹å®ã®æµãã«ãã£ã¦ãã£ãã·ã¥ã®ç ´æã確å®ã«èµ·ãããæååãã®åå ã¨ãªã
- WOLF RPG ã¨ãã£ã¿ã¼ (ã¦ãã£ã¿)ã®ãã¼ã¸ã§ã³2.10ã«å«ã¾ããGame.exeã¯ãã®ç¾è±¡ãçºçãããã¼ã¸ã§ã³(3.10f)ã®DXã©ã¤ãã©ãªãçµã¿è¾¼ãã§ãã(éçãªã³ã¯ãã¦ãã)ããå½±é¿ãåãã
- ä¸è¨åä½ã«ä¾åããé¨åã¯åã©ã¤ãã©ãªã®ãã¼ã¸ã§ã³3.11d以ä¸ã§ã¯æ¹åããã¦æååãã¯èµ·ãããªããããã®æ°ãããã¼ã¸ã§ã³ã®DXã©ã¤ãã©ãªãçµã¿è¾¼ãã WOLF RPG ã¨ãã£ã¿ã¼ã®æ°ãããã¼ã¸ã§ã³ã¯2015å¹´1ææ«æç¹ã§ã¯å ¬éããã¦ããããããã§æ¢åã®Game.exeãç½®ãæããã¨ããå½¢ã®å¯¾å¦ã¯ã¾ã è¡ãããã§ããããã«ãªã£ã¦ãæååãããªã以å¤ã«ãã¼ã¸ã§ã³2.10ã®Game.exeã¨å®å ¨ã«åãåä½ã«ãªããã¯ä¸æ
- Wineã®Bugzillaã§2013å¹´ã®å¹´æ«ã«ãã°å ±åããããããã®å¾DXã©ã¤ãã©ãªå´ãä¿®æ£ããããã¨ã¯åãã£ããã®ã®ãWineå´ã®å¤æ´ã«ãã対å¦ã«ã¯ååãã§ã¯ãªããããããæä¾ããã¦ããªã
- 2014å¹´2æã«WOLF RPG ã¨ãã£ã¿ã¼ã®ãã°å ±åã®æ²ç¤ºæ¿ã«ãã®ä»¶ã«ã¤ãã¦ãæ¸ãããã®ã®ãæ°ãããã¼ã¸ã§ã³ã(ãã¼ã¿çå«ã)åºã¦ããªãã©ããããä½è ã«ããã³ã¡ã³ãã(2013å¹´8æããå¾ã¯ãã£ã¨)è¦ãããªã
- Wineã®ãã¼ã¸ã§ã³1.7.34*2æç¹ã§ã¯æ¹åã¯ããã¦ããããæè¿ã¯Macã¦ã¼ã¶ã«ããæååãäºä¾ãè¤æ°è¦ãããããã«ãªã£ã¦ãã
ä¿®æ£ã®è¦é
ãWOLF RPG エディターのバージョン2.10で作成された作品をWineで3Dモードで動かしたときに文字描画が崩れる現象について(2014年2月末時点)ãã§ãæ¸ãããããªãã¬ã¸ã¹ããªè¨å®ã«ãã£ã¦åãæ¿ãå¯è½(ä»ã®ããã°ã©ã ã®å®è¡ã«å½±é¿ããªãå½¢)ãªåé¿çãWineå´ã®å¤æ´ã«ãã£ã¦å®ç¾ã§ããªãã試ãã¦ã¿ãã¨ãããæçµçã«ãã®ãããªå½¢ã§åä½ãããã®ãä½æã§ãããä¿®æ£ã®è¦é ã¨ãã¦ã¯ä»¥ä¸ã®ããã«ãªããWineã®ãã¼ã¸ã§ã³ãå¤ãã£ã¦ä¸é¨ã®ä¿®æ£ã®ä»æ¹ãå¤ãããã¨ããã£ã¦ãèãæ¹ã¯åãã
- IDirect3DTexture9::LockRect()ã®Wineå®è£ ããã¯ãã¯ã¹ãã£ã®ãµããªã½ã¼ã¹ã§ãããµã¼ãã§ã¤ã¹*3ã®å¦çã¨ãã¦IDirect3DSurface9::LockRect()ã®Wineå®è£ ãä¸ã§å¼ã°ãããããã®ä¸ã«ããã¦ãããã¯ãããé åã示ãRECTæ§é ä½(å·¦/ä¸/å³/ä¸ã®4ã¤ã®åº§æ¨ã®å¤ããæã)ãããµã¼ãã§ã¤ã¹ã®æ§é ä½å ã«å¥é追å ããå¥ã®RECTåã®ã¡ã³ãã«ã³ãã¼ãã¦ãã
- IDirect3DDevice9::UpdateTexture()*4ã®Wineå®è£ ããã¯ãµããªã½ã¼ã¹ã®å¦çã¨ãã¦IDirect3DDevice9::UpdateSurface()ã®Wineå®è£ ãä¸ã§å¼ã°ãããã2Dãã¯ã¹ãã£ãæ±ãå ´åã®å¼ã³åºãã«ã¤ãã¦ã転éå ãµã¼ãã§ã¤ã¹ã®æ§é ä½ã®ã¡ã³ããåç §ãã¦ãéå»ã«ããã¯ããããã¨ã®ãããã®ã«ã¤ãã¦ã¯å ã»ã©ã³ãã¼ãã座æ¨æ å ±ãå©ç¨ãã¦ããã®ç¯å²ã®ã¿ã転éå ãµã¼ãã§ã¤ã¹ã®åä¸åº§æ¨(å·¦ä¸åºæºã»ã¤ã¾ãã³ãã¼å ã®RECTæ§é ä½ã®å·¦ã¨ä¸ã®åº§æ¨å¤ãPOINTæ§é ä½ã§ç¨ãã)ã¸ã³ãã¼ãããããã«å¼æ°ãæå®ãã
- 常ã«ãã®æåã§åä½ããããã«ããã¨ä»ã®ããã°ã©ã ã§æå³ããªãåä½ãããæãããããããWineã«ããã¬ã¸ã¹ããªè¨å®ã®ä»çµã¿ãå©ç¨ãã¦è¨å®é ç®ã追å (è¨å®ä¿æç¨æ§é ä½ã®ã¡ã³ã追å ã¨åæå¤æå®,ã¬ã¸ã¹ããªè¨å®åå¾å¦çã®è¿½å )*5ããä¸2ã¤ã®åä½ã¯ãã®ç¬èªåä½(以ä¸hack)ã®æå¹æã«ã®ã¿è¡ãããããã«ãã
ã¨ãããã®ã¨ãªã£ãã
æ¬æ¥ã¯ãµã¼ãã§ã¤ã¹ã®æ§é ä½å
ã«ãã¼ãã£é åã示ãæ§é ä½ã®ã¡ã³ããç¨æãã¦ããã¼ãã£é åãå¤åãããæä½(ロック以外に複数存在する)ããããã«ã¤ãã¦æ±ããæ£ããè¨è¿°ãã¦IDirect3DDevice9::UpdateTexture()å´ã§ãããç¨ãã¦ã³ãã¼ç¯å²ã決ããå¿
è¦ããã*6ã®ã ããWineã®Direct3Dã§ãã¼ãã£é åã®æ
å ±ãå
é¨çã«ã©ã®ããã«ç®¡çããã¦ããã®ããããåããããå¦çã«ãã£ã¦ã¯é¢æ°ããé¢æ°ã¸ã¨æå®é åãå¼æ°ã§æ¸¡ããã¦ããã«ãé¢ãããé¢æ°å
ã§ãããä¸å使ããã¦ããªãã¨ããããã£ããããçµå±ã¯è©²å½ãããã¼ã¸ã§ã³ã®DXã©ã¤ãã©ãªã§æ£ããåããã¨ã ããåªå
ãã¦ãã¬ã¸ã¹ããªã«ããåãæ¿ãå¯è½ãªhackãã¨ããå½¢ã§å®è£
ããã
å°æ¥ã®ãã¼ã¸ã§ã³ã§ãã®ãããã®åä½ãæ¹åããã¦ç¹ã«ä½ãããã«æ£ããåä½ããããã«ãªãå¯è½æ§ããªãã¯ãªããããã¾ãæå¾
ã¯ã§ããªãã
ããã
ãããªãã¯ãã¡ã¤ã³ã¨ãã¦å ¬éããã1.6.2åã: wine-1.6.2-dxlib-font-hack.patch
1.7.34åã*7: wine-1.7.34-dxlib-font-hack.patch
(2015/2/5)hackç¡å¹æã®ä¸é¨ã®ä¸å¿ è¦ãªæ¡ä»¶åå²ãçãããã«ä¿®æ£
æåã§ãã«ã*8ããå ´åãã½ã¼ã¹ã¨ãã¼ã¸ã§ã³ãåä¸ãª(32bitã®)ãã£ã¹ããªã®ãã¤ããªããã±ã¼ã¸ãããã°ãdlls/wined3d/å ã®ãã«ããçµãã£ãå¾ã¯ãã«ããä¸æ¢ãã¦(32bitã®)wined3d.dll.soã®ã¿ãæ¢åã®ãã¡ã¤ã«([32bitã©ã¤ãã©ãªã®ãã£ã¬ã¯ããª]/wine/wined3d.dll.so)ã«å¯¾ãã¦ç®¡çè 権éã§ä¸æ¸ãããã ãã§æ¸ãã
ãããé©ç¨æ¸ã¿ã®ãã¤ããª
ãppa:kakurasan/unstableãã®PPAãªãã¸ããªã§å ¬éãã(Ubuntu 14.10åã)ããã¼ã¸ã§ã³ã¯å®å®ç系統ã®1.6.2ã®ã¿ç¨æãããPPAãªãã¸ããªã®è¿½å æé ã«ã¤ãã¦ã¯以前AMDのlegacy版グラフィックドライバのインストールに関して書いた記事(å 容èªä½ã¯å¤ãã®ã§æ³¨æ)ãåç §ãããã±ã¼ã¸æ å ±ã®åèªã¿è¾¼ã¿å¾ã¯ãwine1.6ãããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«(ã¤ã³ã¹ãã¼ã«æ¸ã¿ã®å ´åã¯ã¢ããã°ã¬ã¼ã)ããã
ä»ã®ãã£ã¹ããªãªã©ã§ã¯å¥éãã¼ã¸ã§ã³1.6.2ã®ãã¤ããªãã¤ã³ã¹ãã¼ã«ããä¸ã§wine1.6-i386_[ãã¼ã¸ã§ã³]_i386.debã®ã¿ä¸ã®ãã¼ã¸ããæåã§ãã¦ã³ãã¼ããã¦å±éããwined3d.dll.soã®ã¿ãæ¢åã®ãã¡ã¤ã«ã«å¯¾ãã¦ç®¡çè 権éã§ä¸æ¸ãããæ¹æ³ãããããæ£ããåä½ããä¿è¨¼ã¯ãªãã
è¨å®æ¹æ³
æååãåé¿ã®ã¢ã¼ãã§åãã(hackãæå¹ã«ãã)ã«ã¯ã¬ã¸ã¹ããªã®è¨å®ãå¿ è¦ãå ¨ã¦ã®ããã°ã©ã ã«å¯¾ãã¦ãã®hackãæå¹ã«ããå ´åã¯ã¬ã¸ã¹ããªã®ãã¼(ãã©ã«ã)ãHKEY_CURRENT_USER\Software\Wine\Direct3Dãã®ä¸ã«ãDxLibFontHackãã¨ããååã®æååãä½æãã¦å¤ããenabledãã¨ããã
ä¸ã¯ã¬ã¸ã¹ããªãã¡ã¤ã«ã¨ãã¦åãè¾¼ãå ´åã®å 容ã
[ä»»æ]ãã¡ã¤ã«å: enable-dxlib-font-hack.reg
REGEDIT4 [HKEY_CURRENT_USER\Software\Wine\Direct3D] "DxLibFontHack"="enabled"
ç¡å¹åãããã¡ã¤ã«ã¯ãenabledãé¨åãä»ã®ãdisabledããªã©ã®æååã«å¤æ´ãã¦å¥åã§ä¿åããã¨ä½ããã
ç¹å®ã®ãã¡ã¤ã«åã®ããã°ã©ã ã«å¯¾ãã¦ãã®hackãæå¹ã«ãã*9å ´åã¯ãHKEY_CURRENT_USER\Software\Wine\AppDefaults\[ãã¡ã¤ã«å]\Direct3Dãã®ä¸ã«åæ§ã®é
ç®ãä½æããã
ä¸ã¯Game.exeã¨ãããã¡ã¤ã«åã§ã®ã¿æå¹ã«ãªããããªè¨å®ã
[ä»»æ]ãã¡ã¤ã«å: enable-dxlib-font-hack-game.reg
REGEDIT4 [HKEY_CURRENT_USER\Software\Wine\AppDefaults\Game.exe\Direct3D] "DxLibFontHack"="enabled"
ä¸ã¯WOLF RPG ã¨ãã£ã¿ã¼ä½åã®åä½ã«ä¾¿å©ã ãããã確å®ã«WOLF RPG ã¨ãã£ã¿ã¼ä½åã ããèªåçã«hackã®å¯¾è±¡ã«ããã«ã¯ä¸è¨è¨å®ã®ãã¡ã¤ã«åé¨åã¨å®éã®ãã¡ã¤ã«åã®ä¸¡æ¹ãWolfRpgGame.exeãªã©ä»ã¨ãã¶ãã«ããååã«ãã¦ä½¿ãã¨ããã
ä¸ã¯è¨å®ãèªåã§æå¹åããã¹ã¯ãªããä¾ãç°å¢ã«å¿ãã¦ä¸é¨å¤æ´ãã¦ç¨ãããããã¯Game.exeãWolfRpgGame.exeã«ååå¤æ´ãã¦ä½¿ãå ´åã®ä¾ã§ãä»ã®ããã°ã©ã ãåããéã«ã¬ã¸ã¹ããªè¨å®ã®åãæ¿ããè¡ãå ´é¢ã¯ã»ã¨ãã©ãªããªãã
ç¡å¹åããã¹ã¯ãªããã¯ãenabledãé¨åãä»ã®ãdisabledããªã©ã®æååã«å¤æ´ãã¦å¥åã§ä¿åããã¨ä½ããã
[ä»»æ]ãã¡ã¤ã«å: enable-dxlib-font-hack-wolfrpggame.sh
#! /bin/sh ### æ¨æºã§ã¯ãªãå ´æã«Wineãé ç½®ãã¦ããå ´å ### libwine.so*ã®ãããã£ã¬ã¯ããªãæå® #export LD_LIBRARY_PATH=/opt/wine-1.6.2/lib/i386-linux-gnu ### æ¨æºã§ã¯ãªãå ´æã®Wineç°å¢ã使ç¨ãã¦ããå ´åã«æå® #export WINEPREFIX=/home/user/dotwine-wolf ### wineã³ãã³ãã®å ´æ #WINE=/opt/wine-1.6.2/bin/wine WINE=wine cat <<EOF | ${WINE} regedit - REGEDIT4 [HKEY_CURRENT_USER\Software\Wine\AppDefaults\WolfRpgGame.exe\Direct3D] "DxLibFontHack"="enabled" EOF
使ç¨ãããã¼ã¸ã§ã³:
- Wine 1.6.2, 1.7.34
*1:ä»æ§ä¸ã¯ããã§åé åãããã¼ãã£é åãã¨ãã¦è¨é²ããã
*2:1.7.35ã«ã¤ãã¦ã¯å®éã®åä½ã¯æªç¢ºèªã ããã½ã¼ã¹ã®è©²å½ç®æãè¦ãéãã¯åæ§
*3:å°ãªãã¨ãWineã®Direct3Dã§ã¯ãã¯ã¹ãã£ã¨ããåã¯ãµã¼ãã§ã¤ã¹(ç»åãã¼ã¿ãä¿æããã¡ã¢ãªé å)ã¨ããåãä¸ã«å«ãå½¢ã«ãªãããã¯ã¹ãã£ãããµã¼ãã§ã¤ã¹ã¯ãµããªã½ã¼ã¹ã¨ãã¦åç §ããã»IDirect3DDevice9::UpdateTexture()ã«ã¤ãã¦ããä¸ã§ãµããªã½ã¼ã¹ã®ãµã¼ãã§ã¤ã¹ã«å¯¾ããIDirect3DDevice9::UpdateSurface()ã«ç¸å½ããå é¨å¦çãå¼ã°ããå½¢ã®å®è£ ã«ãªã£ã¦ãã
*4:説æã¨ãã¦ããã¯ã¹ãã£ã®ãã¼ãã£ã¼é¨åãæ´æ°ããããã¨ãããã転éå ãã¯ã¹ãã£ã«ãã¼ãã£ã¼é åãããå ´åã¯ãã³ãã¼ããã®é åã ãã«éå®ãããã¨ã§ãã³ãã¼å¦çãæé©åã§ããããã¨ãæ¸ããã¦ãããããã¼ãã£ã¼ã¨ãã¦ãã¼ã¯ããã¦ãããã¤ãã ããã³ãã¼ãããã¨ããä¿è¨¼ã¯ãªãããã¨ããã
*5:ãããã¯æ¢åã®è¨å®é ç®ã«é¢ä¿ããè¨è¿°ãåèã«ãã¦ã³ã¼ãã追å ãããã¨ã§ç°¡åã«å®è£ ã§ãã
*6:æ¬å®¶ã®ã½ã¼ã¹ããªã¼ã«å¯¾ããä¿®æ£ã¨ãã¦ã¯ãã®å½¢ãæã¾ãããä»åã®ãããªå½¢ã®ä¿®æ£ã¯åãè¾¼ã¾ããã¹ãã§ã¯ãªãã¨èãã
*7:1.7.35ã«ã¤ãã¦ã¯ãããããæ£å¸¸ã«å½ãããã¨ã¯ç¢ºèªãããåä½ã¯æªç¢ºèª
*8:32bitåãã»åºæ¬çã«ã¯32bitç°å¢ã32bitã®chrootç°å¢ã§ãã«ããã
*9:æå®ãã以å¤ã®ãã¡ã¤ã«åã®ããã°ã©ã ã§ã¯ç¡å¹ã«ãªããè¨å®ã®åãæ¿ãæ©ä¼ãå°ãªãã§ãã