Running Continuum under Wine: Difference between revisions

From ASSS Wiki
Jump to navigationJump to search
PhOng (talk | contribs)
PhOng (talk | contribs)
m Formatting
 
(33 intermediate revisions by 7 users not shown)
Line 1: Line 1:
To run [[Continuum]] under [http://www.winehq.com/ Wine], you'd need to apply a patch to Wine's source code. Copy the text block below into a file, such as cont.patch, and place it at the head directory of Wine's source code.
== Quick Start ==


<pre>index 33f9ee1..d50cb7d 100644
If you want to run [[Continuum]] on your Linux machine as quickly as possible, download a pre-compiled version of a patched [http://www.winehq.com/ Wine] from [http://wine.getcontinuum.com/ wine.getcontinuum.com].
--- a/dlls/kernel/process.c
 
+++ b/dlls/kernel/process.c
== Patching Wine ==
 
To run [[Continuum]] under [http://www.winehq.com/ Wine], you need to apply a patch to Wine's source code. Copy the text block below into a file, such as <tt style="color: navy;">cont.diff</tt>, and follow the patching instructions below.
 
For versions >= 0.9.38 or so:
<pre style="color: navy;">diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 33f9ee1..d50cb7d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2460,6 +2464,7 @@ HANDLE WINAPI OpenProcess( DWORD access,
@@ -2460,6 +2464,7 @@ HANDLE WINAPI OpenProcess( DWORD access,
     OBJECT_ATTRIBUTES  attr;
     OBJECT_ATTRIBUTES  attr;
     CLIENT_ID          cid;
     CLIENT_ID          cid;
+if (access & PROCESS_VM_WRITE) return NULL;
    cid.UniqueProcess = ULongToHandle(id);
    cid.UniqueThread = 0; /* FIXME ? */</pre>


For versions <0.9.38 (until somewhere in the 20s):
<pre style="color: navy;">diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 33f9ee1..d50cb7d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2460,6 +2464,7 @@ HANDLE WINAPI OpenProcess( DWORD access,
    OBJECT_ATTRIBUTES  attr;
    CLIENT_ID          cid;
+if (access & PROCESS_VM_WRITE) return NULL;
+if (access & PROCESS_VM_WRITE) return NULL;
     cid.UniqueProcess = (HANDLE)id;
     cid.UniqueProcess = (HANDLE)id;
     cid.UniqueThread = 0; /* FIXME ? */</pre>
     cid.UniqueThread = 0; /* FIXME ? */</pre>


Run '''cat cont.patch | patch -p1''' to apply the patch file to Wine's source code. Follow with the usual '''./configure && make depend && make''' to build Wine. If you'd wish to have this replace your current Wine installation or to install it globally, run '''make install''' as root.
Alternatively, the following changes may be necessary in Wine 0.9.12:
<tt style="color: navy;">@@ -2325,6 +2325,7 @@</tt>
 
For "File to patch?" errors, replace kernel32 with <tt style="color: navy;">kernel</tt> throughout the patch.
 
Place your new <tt style="color: navy;">cont.diff</tt> file inside the topmost directory of Wine's source code (that which includes the <tt style="color: navy;">LICENSE</tt> file), and run <tt style="color: navy;">cat cont.diff | patch -p1</tt> to apply the patch. Follow with the usual <tt style="color: navy;">./configure && make depend && make</tt> to build Wine. If you'd wish to have this replace your current Wine installation or to install it globally, run <tt style="color: navy;">make install</tt> as <tt style="color: navy;">root</tt>.
 
[[image:winecfg.png|right]]
It is important to run <tt style="color: navy;">winecfg</tt>, select the <tt style="color: navy;">Drives</tt> tab, click <tt style="color: navy;">C:</tt>, <tt style="color: navy;">Show Advanced</tt>, and set the <tt style="color: navy;">Serial:</tt> value to a random number higher than <tt style="color: navy;">2000</tt>.  If you do not, you cannot connect to catid billers, or may cause other issues on the SSC biller.
 
== Common problems ==
 
If you have a binary version of Wine installed from a <tt style="color: navy;">.rpm</tt>, <tt style="color: navy;">.deb</tt>, etc., it's recommended to remove it before installing and setting up Wine from source, so as not to cause confusion.
 
Make sure you are running Continuum in a color depth of at least <tt style="color: navy;">16</tt> ( <tt style="color: navy;">View</tt> > <tt style="color: navy;">Options</tt> > <tt style="color: navy;">Graphics</tt> > <tt style="color: navy;">Color Depth:</tt> ). Using 8-bit color depth is possible, but you have to check your <tt style="color: navy;">/etc/X11/xorg.conf</tt> (etc.) file to make sure you have 8-bit Depth/Modes configured.  Usually, a simple way to verify if you can safely use 8-bit color depth is to check whether you can set your desktop environment to use it.
 
If having problems with sound, use <tt style="color: navy;">winecfg</tt> to enable (check) <tt style="color: navy;">ALSA Driver</tt> (<tt style="color: navy;">Audio</tt> tab) and set <tt style="color: navy;">Hardware Acceleration:</tt> to <tt style="color: navy;">Emulation</tt>.
 
Chat window will not appear when you task out. This is because Continuum under Wine doesn't understand that it is minimized, so it will never start the chat window. You can use a [[:Category:ChatNet_Clients|Chatnet Client]] to provide a chat-only interface to servers that run [[ASSS]] (and the chatnet module), which you don't need to emulate in Wine.
 
If you get a <tt style="color: navy;">libwine.so.1</tt> error when trying to run Wine globally (instead of running the application from its source directory), add the following lines to your <tt style="color: navy;">/etc/ld.so.conf</tt> file: <tt style="color: navy;">/usr/local/lib</tt> and <tt style="color: navy;">/usr/local/lib/wine</tt>. If problems still occur, copy <tt style="color: navy;">libwin.so.1</tt> to those locations from the <tt style="color: navy;"><i>winesource</i>/libs</tt> directory.
 
<tt style="color: navy;">ALT</tt> key does not function properly if it is bound to another XIM like kinput2 (e.g. tried to bring up map).
 
If connecting to a zone causes you to login as <tt style="color: navy;">^Banned</tt>, please run <tt style="color: navy;">winecfg</tt>, select the <tt style="color: navy;">Drives</tt> tab, select <tt style="color: navy;">C:</tt>, <tt style="color: navy;">Show Advanced</tt>, and make sure the <tt style="color: navy;">Serial:</tt> value is set to a random number greater than <tt style="color: navy;">2000</tt>.


== Why it works ==


== Common Problems ==
When Continuum runs, one of the first things it does is create another process of itself with some privileges restricted, such as the ability to call <tt style="color: navy;">OpenProcess</tt>. When the child process attempts to repeat this step, it receives an error that <tt style="color: navy;">OpenProcess</tt> failed, which tells the process that it is the child. The child process then proceeds to run the game.


If you have a binary version of wine installed such as rpm, I recommend removing it before setting up and installing the wine source, as not to cause confusion.
Since Wine does not properly emulate this parent-child security, this source modification is necessary to get Continuum to run under Wine.


Make sure you are running Continuum as at least 16 bit. If having problems with sound, with winecfg, check ALSA driver and switch hardware acceleration to emulation.  8 bit is possible, but you have to check your /etc/X11/xorg.conf (or other) config file to make sure you have 8 bit res listed.  Best way to check is if you can't set your desktop depth to 8 bit through display options, its not set in your config (pretty easy to fix).
== Performance Enhancements ==


Chat window will not appear when you Alt-Tab. This is because Continuum doesn't understand that it is minimized under Wine, so it will never start the chat window.
Verified: N
<br>Within the windows registry, create string [HKEY_CURRENT_USER\Software\Wine\Direct3D\DirectDrawRenderer] = "opengl"


If you get a libwine.so.1 error when trying to run wine global (instead of running the application from its source directory), add the following lines to your /etc/ld.so.conf file:  "/usr/local/lib" and "/usr/local/lib/wine" without quotes.  Also just to be sure I copied libwine.so.1 to those locations from the winesource/libs directory.  I can now run wine global (just typing wine anywhere).  I had this issue with Fedora Core 4, some other distros may apply.
== Examples ==


----
<br>Download the following: [http://prdownloads.sourceforge.net/wine/wine-0.9.21.tar.bz2?download wine-0.9.21], [http://ds80-237-203-29.dedicated.hosteurope.de/wt/winetools-0.9jo-III.tar.gz winetools], [http://wiki.minegoboom.com/cont32.diff cont32.diff], [http://www.subspacedownloads.com/?act=file&fid=5 contiuum038setup.exe], and [http://www.subspacedownloads.com/?act=file&fid=3 contiuum039pr1.zip].


== Why It Works ==
'''Ubuntu''' users will need to first install some other packages to be able to build Wine. To do so, in a terminal window type '''sudo apt-get install build-essential bison flex fontforge libgl1-mesa-dev libgtk1.2 xorg-dev''' to install all the needed packages.


When Continuum runs, one of the first things it does is create another process of itself with some priviliages restricted(the ability to call OpenProcess). Then, when the child process attempts to do the same thing, it receives an error that OpenProcess failed, and that's the sign that it's the child process. The child process then proceeds to run the game.
<pre>
$ tar jxvf wine-0.9.21.tar.bz2
$ cd wine-0.9.21
$ ./configure
$ cat ../cont32.diff | patch -p1
$ make
$ sudo make install
$ cd ..
$ tar zxvf winetools-0.9jo-III.tar.gz
$ cd winetools-0.9jo-III
$ sudo ./install
$ cd ..
$ wine contiuum038setup.exe
$ unzip contiuum039pr1.zip
$ mv menu039pr1.dll ~/.wine/drive_c/Program\ Files/Continuum/
$ mv Contiuum039pr1.exe ~/.wine/drive_c/Program\ Files/Continuum/
$ winecfg
</pre>
To run Continuum 0.39, create a launcher for: '''wine "C:\Program Files\Continuum\Continuum039pr1.exe"'''


Since Wine does not properly emulate this parent-child security, this source modification is necessary to get Continuum to run on it.
[[Category: Guides]]

Latest revision as of 20:18, 29 May 2008

Quick Start

If you want to run Continuum on your Linux machine as quickly as possible, download a pre-compiled version of a patched Wine from wine.getcontinuum.com.

Patching Wine

To run Continuum under Wine, you need to apply a patch to Wine's source code. Copy the text block below into a file, such as cont.diff, and follow the patching instructions below.

For versions >= 0.9.38 or so:

diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 33f9ee1..d50cb7d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2460,6 +2464,7 @@ HANDLE WINAPI OpenProcess( DWORD access,
     OBJECT_ATTRIBUTES   attr;
     CLIENT_ID           cid;
 
+if (access & PROCESS_VM_WRITE) return NULL;
     cid.UniqueProcess = ULongToHandle(id);
     cid.UniqueThread = 0; /* FIXME ? */

For versions <0.9.38 (until somewhere in the 20s):

diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 33f9ee1..d50cb7d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2460,6 +2464,7 @@ HANDLE WINAPI OpenProcess( DWORD access,
     OBJECT_ATTRIBUTES   attr;
     CLIENT_ID           cid;
 
+if (access & PROCESS_VM_WRITE) return NULL;
     cid.UniqueProcess = (HANDLE)id;
     cid.UniqueThread = 0; /* FIXME ? */

Alternatively, the following changes may be necessary in Wine 0.9.12: @@ -2325,6 +2325,7 @@

For "File to patch?" errors, replace kernel32 with kernel throughout the patch.

Place your new cont.diff file inside the topmost directory of Wine's source code (that which includes the LICENSE file), and run cat cont.diff | patch -p1 to apply the patch. Follow with the usual ./configure && make depend && make to build Wine. If you'd wish to have this replace your current Wine installation or to install it globally, run make install as root.

It is important to run winecfg, select the Drives tab, click C:, Show Advanced, and set the Serial: value to a random number higher than 2000. If you do not, you cannot connect to catid billers, or may cause other issues on the SSC biller.

Common problems

If you have a binary version of Wine installed from a .rpm, .deb, etc., it's recommended to remove it before installing and setting up Wine from source, so as not to cause confusion.

Make sure you are running Continuum in a color depth of at least 16 ( View > Options > Graphics > Color Depth: ). Using 8-bit color depth is possible, but you have to check your /etc/X11/xorg.conf (etc.) file to make sure you have 8-bit Depth/Modes configured. Usually, a simple way to verify if you can safely use 8-bit color depth is to check whether you can set your desktop environment to use it.

If having problems with sound, use winecfg to enable (check) ALSA Driver (Audio tab) and set Hardware Acceleration: to Emulation.

Chat window will not appear when you task out. This is because Continuum under Wine doesn't understand that it is minimized, so it will never start the chat window. You can use a Chatnet Client to provide a chat-only interface to servers that run ASSS (and the chatnet module), which you don't need to emulate in Wine.

If you get a libwine.so.1 error when trying to run Wine globally (instead of running the application from its source directory), add the following lines to your /etc/ld.so.conf file: /usr/local/lib and /usr/local/lib/wine. If problems still occur, copy libwin.so.1 to those locations from the winesource/libs directory.

ALT key does not function properly if it is bound to another XIM like kinput2 (e.g. tried to bring up map).

If connecting to a zone causes you to login as ^Banned, please run winecfg, select the Drives tab, select C:, Show Advanced, and make sure the Serial: value is set to a random number greater than 2000.

Why it works

When Continuum runs, one of the first things it does is create another process of itself with some privileges restricted, such as the ability to call OpenProcess. When the child process attempts to repeat this step, it receives an error that OpenProcess failed, which tells the process that it is the child. The child process then proceeds to run the game.

Since Wine does not properly emulate this parent-child security, this source modification is necessary to get Continuum to run under Wine.

Performance Enhancements

Verified: N
Within the windows registry, create string [HKEY_CURRENT_USER\Software\Wine\Direct3D\DirectDrawRenderer] = "opengl"

Examples


Download the following: wine-0.9.21, winetools, cont32.diff, contiuum038setup.exe, and contiuum039pr1.zip.

Ubuntu users will need to first install some other packages to be able to build Wine. To do so, in a terminal window type sudo apt-get install build-essential bison flex fontforge libgl1-mesa-dev libgtk1.2 xorg-dev to install all the needed packages.

$ tar jxvf wine-0.9.21.tar.bz2
$ cd wine-0.9.21
$ ./configure
$ cat ../cont32.diff | patch -p1
$ make
$ sudo make install
$ cd ..
$ tar zxvf winetools-0.9jo-III.tar.gz
$ cd winetools-0.9jo-III
$ sudo ./install
$ cd ..
$ wine contiuum038setup.exe
$ unzip contiuum039pr1.zip
$ mv menu039pr1.dll ~/.wine/drive_c/Program\ Files/Continuum/
$ mv Contiuum039pr1.exe ~/.wine/drive_c/Program\ Files/Continuum/
$ winecfg

To run Continuum 0.39, create a launcher for: wine "C:\Program Files\Continuum\Continuum039pr1.exe"