воскресенье, 24 января 2016 г.

Запуск "Петька 3: Возвращение Аляски" в Linux через wine

Очередная часть Петьки и Василий Ивановича - "Петька 3: Возвращение Аляски" тоже хорошо работает в linux под wine.

В игре используется отличный от прошлых частей движок, так что патченный wine не нужен.

Начало как обычно:
$ WINEARCH=win32 WINEPREFIX=/some/games/wine_petka3 WINEDLLOVERRIDES=winemenubuilder.exe=d wineboot
В игре используются видеоролики кодированные DivX, соответственно можно сразу поставить кодек, а потом запустить установку:
$ WINEARCH=win32 WINEPREFIX=/some/games/wine_petka3 WINEDLLOVERRIDES=winemenubuilder.exe=d winetricks xvid
$ WINEARCH=win32 WINEPREFIX=/some/games/wine_petka3 wine E:\\Setup.exe 
Запускать как и раньше можно по ярлыку из ~/.local/share/applications/wine/Programs/Buka/Петька 3/Петька 3 - Возвращение Аляски.desktop, скопировав его на Рабочий стол и сделав исполняемым. Хотя в моём случае ярлык на Рабочий стол создался сам и правильным.
В консоли лучше тоже запускать ярлык, ибо когда я запускал exe и полноэкранный режим - были артефакты.
$ WINEPREFIX="/some/games/wine_petka3" wine C:\\windows\\command\\start.exe /Unix /some/games/wine_petka3/dosdevices/c:/users/Public/Рабочий\ стол/Петька\ 3\ -\ Возвращение\ Аляски.lnk
Дальше есть косяк с отображением видео роликов - звук есть, картинки нету, но в начальное меню доходит.
Тут пришлось поиграться с параметрами. В итоге у меня видео стало отображаться с такой настройкой (gdi вместо opengl для DirectDraw):
$ WINEARCH=win32 WINEPREFIX=/some/games/wine_petka3 WINEDLLOVERRIDES=winemenubuilder.exe=d winetricks ddr=gdi
Визуальных проблем в игре я пока не заметил с этим режимом.


У меня игра хорошо запускается в полноэкранном режиме, но для интереса ещё попробовал и оконный (в winecfg "виртуальный рабочий стол" или winetricks vd=1024x768). Тут из интересного то, что игра держит курсор у себя, соответственно не удобно переключаться.
Это можно исправить с помощью winetricks mwo=disable.

Последняя проблема - если выходить из игры с помощью меню, то игра виснет, в оконном режиме можно пару раз нажать закрыть окно и wine сам предложит её завершить.
В полноэкранном хуже.

Обходится эта проблема несколькими простейшими путями:
1) если в окне, то можно через alt+tab вытащить курсор и закрыть окно,игра завершится без проблем.
2) если в окне и делали mwo=disable, то просто закрыть окно.
3) в полноэкранном режиме нажать alt+f4.

Пока что я больше никаких проблем не наблюдал. Можно играть в своё удовольствие :-)

UPD. Ещё можно запускать Petka_debug.exe  - запускается нормально, но только в окне, а не в полноэкранном режиме, хотя в wine не стоит эмуляции рабочего стола (т.е. обычный exe запускается в полноэкранном режиме).
Из плюсов - выход в игре работает и через главное меню.

суббота, 23 января 2016 г.

isz-tool: конвертация .ISZ в .ISO

Если вдруг у вас есть образ .ISZ, то в linux его нечем примонторовать/открыть.
Но зато добрый человек написал утилиту для конвертации .ISZ в .ISO - https://github.com/oserres/isz-tool

пятница, 22 января 2016 г.

Запуск "Петька и Василий Иванович 2: Судный день" в Linux через wine

Пройдя "Петька и Василий Иванович спасают галактику", решил и во вторую часть поиграть.

Движок у игры не менялся судя по всему, так что и проблемы те же - подробнее в заметке о первой части.

Если лень компилировать самому wine, то можно взять тот, что скомпилировал я, тут.

Далее всё по накатанной:
#создаём префикс и включаем виртуальный рабочий стол
WINEARCH=win32 WINEPREFIX=/some/games/wine_petka2 WINEDLLOVERRIDES=winemenubuilder.exe=d /some/games/wine_petka/bin/winecfg
# ставим indeo 4/5
WINEARCH=win32 WINEPREFIX=/some/games/wine_petka2 WINEDLLOVERRIDES=winemenubuilder.exe=d WINE=/some/games/wine_petka/bin/wine winetricks icodecs
# тут не отключаем winemenubuilder, что бы появились ярлыки игры
WINEARCH=win32 WINEPREFIX=/some/games/wine_petka2 /some/games/wine_petka/bin/wine E:\\Setup.exe
# проблема с прошлого раза
WINEARCH=win32 WINEPREFIX=/some/games/wine_petka2 WINEDLLOVERRIDES=winemenubuilder.exe=d WINE=/some/games/wine_petka/bin/wine winetricks dsound
Далее копируем важные файлы в папку с игрой (тот же шаблон, что и для первой) и запускаем:
cd /some/games/wine_petka2/drive_c/Program\ Files/BUKA/Petka2/
WINEARCH=win32 WINEPREFIX=/some/games/wine_petka2 /some/games/wine_petka/bin/wine petka2.exe
WINEDLLOVERRIDES=winemenubuilder.exe=d для того, что бы новый префикс не прописался в системе, в ~/.local/share/applications/wine-*.desktop файлах, иначе после удаления префикса, он может всё равно воскреситься, если попробуете открыть что-то через созданные wine ассоциации файлов.

Не смотря на то, что mediainfo говорил мне, что видео закодированы indeo 4, для работы нужен и indeo 5. Но так как indeo 3 не нужен, то можно облегчить себе жизнь и поставить через winetricks пакет icodecs.

Как и в  прошлый раз wine сам сделает ярлык типо ~/.local/share/applications/wine/Programs/BUKA/Petka2.desktop, можно его скопировать на рабочий стол и сделать исполняемым, в ярлыке уже прописан правильный Path, но надо обязательно поправить Exec, так как в моём случае путь к вайну не был абсолютным.

В итоге игра вас порадует:

понедельник, 18 января 2016 г.

Запуск "Петька и Василий Иванович спасают галактику" в Linux через wine

Совсем недавно, почему-то вспомнил про серию "Петька и Василий Иванович". К своему удивлению, обнаружил, что первую и вторую часть портировали на android.

Решил поставить себе на ПК. Под wine он отлично поставился, но первая проблема, это отсутствие кодека для видео. Надо скачать iv5setup.exe . Но тут есть хитрость, есть ставить все компоненты, то инсталляция завершится неудачей. Для Петьки нужен только ir32_32.dll, так что если выбрать в инсталляторе только версию 3, то всё будет хорошо.

Для запуска Петьки без диска можно скопировать все полезные файлы с дисков (*.STR, intro.avi, Disk{1..3}.id).

Перед запуском ещё лучше установить в winecfg виртуальный рабочий стол, игра запускается в разрешении 640x480 и может попортить разрешение рабочего стола.

И вот Петька запустился - и звук есть и не тормозит, но есть один сильный косяк с отрисовкой некоторых объектов - кажется, что не работает прозрачность -

Я долго игрался с параметрами wine касающимися direct3d и directdraw, но ничего путного не вышло.

Потом решил, была не была, спрошу в теме на 4pda про Петьку, так как её курирует предствитель разработчиков, а на android Петька запускается через wine (exagear от Eltechs).

Оказалось, что они таки фиксили этот баг и правки есть в репозитории https://github.com/Eltechs/wine/tree/exagear_petka

Оставалось только скомпилировать wine из их репозитория и проверить результат.

Как лучше компилировать wine и, в частности, как компилировать 32-битную версию на 64-битной ОС описано тут http://wiki.winehq.org/BuildingWine

Я выбрал метод с chroot, как менее затратный.
Т.е. делаем chroot и заходим в него.
Версия wine в гит репе - 1.6, соответственно если в репах дистрибутива есть такая версия, то зависимости для сборки можно поставить пакетным менеджером. Хотя думаю и от другой версии тоже вполне себе подойдет, может придётся доставить пару пакетов, или изменить их версии. Но проще сделать chroot с подходящим дистрибутивом, я выбрал Ubuntu Trusty.

Т.о. в другой консоли копируем в chroot файл /etc/apt/sources.list:
sudo cp /etc/apt/sources.list /srv/chroot/ubuntu_i386/etc/apt/
В моём случае, после правки /etc/apt/sources.list:
sed -i 's/^# deb-src/deb-src/g' /etc/apt/sources.list
apt-get build-dep wine1.6
Клонируем себе репу (или скачиваем архив):
git clone -b exagear_petka --single-branch https://github.com/Eltechs/wine.git wine
И компилируем:
mkdir wine32 wine_petka
cd wine32
../wine/configure --prefix=/
make -j5
make install DESTDIR=/srv/wine_petka/
Теперь можно забрать с chroot "установленный" wine.
cp -r /srv/chroot/ubuntu_i386/srv/wine_petka /some/games/
И уже у себя в системе (установочный диск (образ или папка) в моем случае в wine видна как E:, хотя можно прописать и unix путь, но тогда, кажется, в реестре wine у игры пропишется не правильная буква диска, но тут это не принципиально, так как игра всё равно не хотела запускаться с диском):
mkdir /some/games/wine_petka1
WINEPREFIX=/some/games/wine_petka1 wine_petka/bin/winecfg
WINEPREFIX=/some/games/wine_petka1 wine_petka/bin/wine ~/Загрузки/iv5setup.exe
WINEPREFIX=/some/games/wine_petka1 wine_petka/bin/wine E:\\SETUP.EXE

После установки игра, в отличии от прошлых попыток отказалась запускаться с ошибкой dsound.
Решается быстро через winetricks (но не факт, что правильно :-) )
WINEPREFIX=/some/games/wine_petka1 WINE=/some/games/wine_petka/bin/wine winetricks dsound
Опять копируем файлы для запуска без диска, заходим в папку с игрой и запускаем:
cd /some/games/wine_petka1/drive_c/Program\ Files/SKIF/Petka
WINEPREFIX=/some/games/wine_petka1 /media/WD1001FALS_1TB/games/wine_petka/bin/wine Petka.exe

Ииииииии....
И всё хорошо -

Wine сам сделает ярлык типо ~/.local/share/applications/wine/Programs/BUKA/S.K.I.F/Petka.desktop, можно его скопировать на рабочий стол и сделать исполняемым, в ярлыке уже прописан правильный Path, но надо поправить Exec, так как в моём случае путь к вайну не был абсолютным.

В идеале, было бы круто написать скрипт для playonlinux и попросить их ещё собирать wine у себя. Может, если будет время и желание ;-)

Будем надеятся, что для запуска скоро выходящего Red Comrades Save the Galaxy: Reloaded всё это не понадобится и он будет нативным, благодаря Unity (новость).

P.S.
На всякий случай - скомпилированный wine, для Петьки положил сюда. (Должен работать как минимум на Ubuntu 14.04)

пятница, 8 января 2016 г.

Обновление BIOS в Linux для HP Pavilion DV4266ea

Есть старый ноутбук HP Pavilion DV4266ea которым я изредка пользуюсь и вот случайно заметил, что у него старый bios. Решил обновить.
К сожалению заметил, что HP его пометило как retired:
Typically, HP stops supporting most products after 10 years. Once a product is retired, the official HP support content (troubleshooting articles, user guides, how-to videos, etc.) for that product is removed from the HP web site.
Но можно скачать биос из других источников, например c https://driver.ru

Смотрим, что внутри:
$ cabextract -l sp34600.exe
 И распаковываем:
$ cabextract sp34600.exe
 Смотрим, что внутри ещё одного exe:
$ unzip -l 309XF21_WIN.exe 
Archive:  309XF21_WIN.exe
  Length      Date    Time    Name
---------  ---------- -----   ----
   527462  2007-01-18 17:42   309DF21.P21
   527462  2007-01-18 17:39   309EF21.P20
      710  2007-01-18 15:18   flash1.ini
     3515  2005-11-17 11:19   FLASH1.sys
   995383  2002-06-06 12:00   mfc42.dll
   401462  2002-06-06 12:01   msvcp60.dll
   266293  2002-06-06 12:01   msvcrt.dll
    26883  2006-03-03 11:17   Phlash9X.vxd
      269  2006-11-23 10:27   PHLASH.INI
     1875  2006-11-23 10:27   PHLASH.LOG
   200704  2006-03-01 17:45   PhlashLc.dll
    38592  2006-10-19 13:52   PhlashNT.sys
   102400  2005-11-17 11:10   wflash.exe
   290816  2006-10-19 16:58   WinPhlash.exe
     8628  2006-05-18 14:03   winphlash.GID
   380454  2003-01-08 15:24   Winphlash.HLP
   527462  2007-01-18 17:42   309DF21.P20
---------                     -------
  4300370                     17 files

Распаковываем:
$ unzip 309XF21_WIN.exe -d bios
Тут ждёт интересный момент - биосов аж три. Можно посмотреть flash1.ini и попробовать угадать свой. В интернете я нашёл ровно одну (!!!) страничку с подобной проблемой - http://forums.mydigitallife.info/threads/37738-hp-pavilion-4235ea-bios-update-recovery

Но добрый человек ответил правильно, для моего ноутбука с видеокартой ATI нужен биос с E в названии, т.е. 309EF21.P20.

К сожалению, программы предоставленные HP работают только под windows и wine не дружат.
Альтернативные методы прошивания под linux есть, но мне не подошли (Flashrom поддерживает крайне малое количество ноутбуков, biosdisk - хелпер для создания freedos образа, хочет или exe или img, а нам надо exe и файл с биосом) https://wiki.archlinux.org/index.php/Flashing_BIOS_from_Linux

Однако есть версия прошивальщика Phoenix BIOS и для DOS - PHLASH16, скачать можно тут - https://www.wimsbios.com/phoenixflasher.jsp

Дальше остаётся вариант самому собрать образ freedos и закинуть в него прошивальщик и биос, например так - https://wiki.archlinux.org/index.php/Flashing_BIOS_from_Linux#Usage_3

$ wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz
$ gunzip FDOEM.144.gz
$ sudo modprobe vfat
$ sudo modprobe loop
$ mkdir /tmp/floppy
$ sudo mount -t vfat -o loop FDOEM.144 /tmp/floppy
$ unzip phlash16-1.7.0.21.zip
$ sudo cp PHLASH16.EXE /tmp/floppy/
$ sudo cp bios/309EF21.P20 /tmp/floppy/F21.WPH
$ sudo umount /tmp/floppy
$ sudo cp FDOEM.144 /boot/freedos.img
В вики предлагается писать напрямую в grub.cfg, но можно добавить FreeDOS на всякий случай туда надолго, а не до первой перегенерации конфига:
$ sudo vim /etc/grub.d/40_custom
menuentry "FreeDOS" {
 linux16 /boot/memdisk
 initrd16 /boot/freedos.img
}
И обновить конфиг:
$ sudo update-grub
Можно перезагружаться и входить в FreeDOS в grub'е. Стоит заметить, что кажется на grub2-uefi команды linux16 нету и он не поддерживает 16-битные приложения, насколько я помню, когда обновлял себе биос на новом ноутбуке. В таком случае надо делать загрузочную флешку или диск (на вики есть информация).

После загрузки freedos достаточно сделать:
DIR
PHLASH16.EXE F21.WPH
После окончания процесса ноутбук бесцеремонно выключился, мимолётно показав какое-то сообщение, что всё готово. Однако, по итогу всё прошло хорошо - ноутбук загрузился и новая версия биоса отобразилась в настройках.

На самом деле процесс и так подробно описан на вики, суть этой заметки скорее в сохранении сакрального знания про имена биосов:
E = ATI
D = Intel video
А всё остальное, как обновление биосов в страые времена, когда были ещё флоппики в ходу, только на новый лад.

Избранное сообщение

Запуск "Петька и Василий Иванович спасают галактику" в Linux через wine

Совсем недавно, почему-то вспомнил про серию "Петька и Василий Иванович". К своему удивлению, обнаружил, что первую и вторую част...