http://bugs.winehq.org/show_bug.cgi?id=30126
Bug #: 30126 Summary: Distant Worlds won't start Product: Wine Version: 1.4 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: sgsdxzy@gmail.com Classification: Unclassified
The game installs DirectX and .Net framework upon installation. However, .Net3.5 won't install and mono wont't work for this game. So I have to installed .net framework 3.5 with a walkaround: http://appdb.winehq.org/objectManager.php?sClass=version&iId=10166 The game crashes on start.
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #1 from Light sgsdxzy@gmail.com 2012-03-09 22:15:59 CST --- Created attachment 39281 --> http://bugs.winehq.org/attachment.cgi?id=39281 backtrace
http://bugs.winehq.org/show_bug.cgi?id=30126
Light sgsdxzy@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Depends on| |25060
http://bugs.winehq.org/show_bug.cgi?id=30126
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39281|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=30126
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet Status|UNCONFIRMED |NEW CC| |focht@gmx.net Summary|Distant Worlds won't start |Matrix Games - Distant | |Worlds fails on startup Ever Confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-03-10 05:45:25 CST --- Hello,
you most likely messed your WINEPREFIX up due to earlier failed install attempts. Don't let games/apps install .NET runtime, always use 'winetricks'.
Install .NET Framework 3.5 using 'winetricks dotnet35' in a clean WINEPREFIX prior running the game installer.
The game installer from "Matrix games" is simple minded, it doesn't execute any prerequisite checks. Uncheck ".NET Framework 3.5" and leave "DirectX 9.0c" checked. DX redist is needed to install managed DX runtime (for .NET).
Shortly after start it falls apart:
--- snip --- 002c:Call ole32.CoCreateInstance(00329118,00000000,00000001,00db10b4,00329064) ret=79eb03ce 002c:trace:ole:CoCreateInstance (rclsid={6bf52a52-394a-11d3-b153-00c04f79faa6}, pUnkOuter=(nil), dwClsContext=00000001, riid={00000000-0000-0000-c000-000000000046}, ppv=0x329064) 002c:trace:ole:CoGetClassObject CLSID: {6bf52a52-394a-11d3-b153-00c04f79faa6},IID: {00000001-0000-0000-c000-000000000046} 002c:Call advapi32.RegOpenKeyExW(80000000,00328e32 L"CLSID\{6BF52A52-394A-11D3-B153-00C04F79FAA6}",00000000,00020019,00328e2c) ret=7e7bda3f 002c:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=7e7bda3f 002c:err:ole:CoGetClassObject class {6bf52a52-394a-11d3-b153-00c04f79faa6} not registered 002c:err:ole:CoGetClassObject no class object {6bf52a52-394a-11d3-b153-00c04f79faa6} could be created for context 0x1 002c:Ret ole32.CoCreateInstance() retval=80040154 ret=79eb03ce ... 002c:Call KERNEL32.RaiseException(e0434f4d,00000001,00000001,00328c58) ret=79f071ac 002c:trace:seh:raise_exception code=e0434f4d flags=1 addr=0x7b8392a7 ip=7b8392a7 tid=002c 002c:trace:seh:raise_exception info[0]=80040154 002c:trace:seh:raise_exception eax=7b8262d1 ebx=7b8a96a8 ecx=80040154 edx=00328b58 esi=00328c38 edi=00328bb0 002c:trace:seh:raise_exception ebp=00328b98 esp=00328b34 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00200287 002c:trace:seh:call_stack_handlers calling handler at 0x79fc15dc code=e0434f4d flags=1 002c:trace:seh:call_stack_handlers handler at 0x79fc15dc returned 1 002c:trace:seh:call_stack_handlers calling handler at 0x79f07fee code=e0434f4d flags=1 ... System.Runtime.InteropServices.COMException (0x80040154): Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG) at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid) at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid) at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid) at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid) at System.Windows.Forms.AxHost.CreateInstance() at System.Windows.Forms.AxHost.GetOcxCreate() at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state) at System.Windows.Forms.AxHost.CreateHandle() at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.AxHost.EndInit() at DistantWorlds.Start.IILC7Nv() at DistantWorlds.Start..ctor() at GgkkfE5tygGpt.IILC7Nv.IILC7Nv() --- snip ---
Another missing prerequisite check.
"{6bf52a52-394a-11d3-b153-00c04f79faa6}" -> wmp9
Install WMP libraries using 'winetricks wmp9'
Another run, the game now shows the splash and dies later:
--- snip --- fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0000,0x00001388,(nil),0x000b,0x000000f2,0x3009b09c,0x5dc5d4): stub err:eventlog:ReportEventW L"clr20r3" err:eventlog:ReportEventW L"distantworlds.exe" err:eventlog:ReportEventW L"1.0.1.0" err:eventlog:ReportEventW L"4baf9da8" err:eventlog:ReportEventW L"system.drawing" err:eventlog:ReportEventW L"2.0.0.0" err:eventlog:ReportEventW L"471ebf30" err:eventlog:ReportEventW L"181" err:eventlog:ReportEventW L"20" err:eventlog:ReportEventW L"system.argumentexception" err:eventlog:ReportEventW L"NIL" fixme:advapi:DeregisterEventSource (0xcafe4242) stub err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threaded err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threaded fixme:richedit:ME_HandleMessage EM_SETMARGINS: stub fixme:richedit:ME_HandleMessage EM_SETMARGINS: stub err:ole:CoUninitialize Mismatched CoUninitialize err:ole:CoUninitialize Mismatched CoUninitialize
Unhandled Exception: System.ArgumentException: Parameter is not valid. at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) at DistantWorlds.PlanetaryRingsGenerator.IP4s1vqiMTYbc(Bitmap , Rectangle ) at DistantWorlds.PlanetaryRingsGenerator.I5kqstLjxd9mGYbqaMBQ6MPMEDmSxAosD4j(Bitmap , Int32 ) at DistantWorlds.PlanetaryRingsGenerator.I0dnVLPuf6uVarpxEFTlj2r(Color[] , Double , Int32 , Int32 , Int32 ) at DistantWorlds.PlanetaryRingsGenerator.GenerateRings(Int32 seed, Int32 planetDiameter) at DistantWorlds.Main.IkVYGnH7jMvBhLaml(String , Double ) at DistantWorlds.Main.IcAB016nyGW() at DistantWorlds.Main.IbMqCLIMV3FlOXLEMWhP(Int32 , Int32 ) at DistantWorlds.Main..ctor(Int32 width, Int32 height, Splash splashForm) at DistantWorlds.Start.Igr8wn8mM1WnLht2ycuMoxHGm0Eh4c(Object , EventArgs ) at System.Windows.Forms.Form.OnLoad(EventArgs e) at System.Windows.Forms.Form.SetVisibleCore(Boolean value) at System.Windows.Forms.Control.set_Visible(Boolean value) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at GgkkfE5tygGpt.IILC7Nv.IILC7Nv() wine: Unhandled exception 0xe0434f4d at address 0x7b8392a7 (thread 0009), starting debugger... --- snip ---
Trace log:
--- snip --- 002b:Call gdiplus.GdipCreateBitmapFromScan0(00000000,00000000,00000000,000e200b,00000000,0032e1dc) ret=03c125cd 002b:Ret gdiplus.GdipCreateBitmapFromScan0() retval=00000002 ret=03c125cd --- snip ---
Unfortunately not much to see, +gdiplus gives huge logs (several GiB). That (0,0) bitmap is probably the result of earlier failure, hidden in obfuscated managed app code (.NET).
Use 'winetricks gdiplus' to work around that. After that the game was quite playable in emulated Desktop 1024x768 mode (be patient on startup).
--- snip --- $ pwd /home/focht/.wine/drive_c/Matrix Games/Distant Worlds ... $ wine explorer /desktop=game,1024x768 ./DistantWorlds.exe --- snip ---
Regards
http://bugs.winehq.org/show_bug.cgi?id=30126
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |gdiplus
--- Comment #3 from Anastasius Focht focht@gmx.net 2012-03-10 09:21:24 CST --- Hello,
using .NET SDK/debugger, "Reflector" tool and Wine patches to enable managed debugging I was at least able to extract managed code sequence and parameters.
Unfortunately no IL debugging because this is already JIT compiled machine code at this point.
Starting with backtrace and parameters at exception:
--- snip --- (cordbg) w Thread 0x30 Current State:GCUnsafe spot 0)* (AD 'DistantWorlds.exe', #1) System.Drawing!System.Drawing.Bitmap::.ctor(V 1, size 47) +0104[native] +0039[IL] in <Unknown File Name>:<Unknown Line Number> width=0 height=0 format=(0x33d800) <System.Drawing.Imaging.PixelFormat> 1) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.PlanetaryRingsGenerator::IP4s1vqiMTYbc(V 1, size 100) +0102[native] +0014[IL] in <Unknown File Name>:<Unknown Line Number> =(0x11a39fc) <System.Drawing.Bitmap> =(0x33d858) <System.Drawing.Rectangle> 2) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.PlanetaryRingsGenerator::I5kqstLjxd9mGYbqaMBQ6MPMEDmSxAosD4j(V 1, size 26) +0127[native] +0009[IL] in <Unknown File Name>:<Unknown Line Number> =(0x11a39fc) <System.Drawing.Bitmap> =0 3) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.PlanetaryRingsGenerator::I0dnVLPuf6uVarpxEFTlj2r(V 1, size 682) +1992[native] +0668[IL] in <Unknown File Name>:<Unknown Line Number> =(0x11a3028) <System.Drawing.Color[]> =-3.20360191431328 =1186 =196 =-1 4) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.PlanetaryRingsGenerator::GenerateRings(V 1, size 296) +0671[native] +0283[IL] in <Unknown File Name>:<Unknown Line Number> seed=0 planetDiameter=700 5) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.Main::IkVYGnH7jMvBhLaml(V 1, size 40) +0095[native] +0010[IL] in <Unknown File Name>:<Unknown Line Number> =(0x1070c90) "C:\Matrix Games\Distant Worlds\images" =0.5 6) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.Main::IcAB016nyGW(V 1, size 224) +0234[native] +0100[IL] in <Unknown File Name>:<Unknown Line Number> 7) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.Main::IbMqCLIMV3FlOXLEMWhP(V 1, size 11468) +9569[native] +4004[IL] in <Unknown File Name>:<Unknown Line Number> =1920 =1080 8) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.Main::.ctor(V 1, size 2657) +6560[native] +2656[IL] in <Unknown File Name>:<Unknown Line Number> width=1920 height=1080 splashForm=(0xee0af4) <DistantWorlds.Splash> 9) (AD 'DistantWorlds.exe', #1) DistantWorlds!DistantWorlds.Start::Igr8wn8mM1WnLht2ycuMoxHGm0Eh4c(V 1, size 2829) +2361[native] +0833[IL] in <Unknown File Name>:<Unknown Line Number> =(0xe638dc) <DistantWorlds.Start> =(0xe634d4) <System.EventArgs> --- snip ---
DistantWorlds.PlanetaryRingsGenerator.GenerateRings -> DistantWorlds.PlanetaryRingsGenerator.I0dnVLPuf6uVarpxEFTlj2r
Input params:
--- snip --- num13 = -3.20360191431328 num11 = 1186 num12 = 196 num1 = -1 --- snip ---
num8 = 1186
--- snip --- private Bitmap I0dnVLPuf6uVarpxEFTlj2r(Color[] colorArray1, double num13, int num11, int num12, int num1) { if (num1 != -1) { this.IILC7Nv = num1; this.IOA7GLkiN9NHvPSGnRHCYsU = new Random(this.IILC7Nv); } int num = (int) ((int) (num11 * 0.22)); Bitmap image = new Bitmap(num11, num11, PixelFormat.Format32bppPArgb); Graphics graphics = Graphics.FromImage(image); graphics.set_CompositingQuality(CompositingQuality.HighSpeed); graphics.set_InterpolationMode(InterpolationMode.Bilinear); graphics.set_SmoothingMode(SmoothingMode.AntiAlias); SolidBrush brush = new SolidBrush(Color.Transparent); graphics.FillRectangle(brush, 0, 0, num12, num); int index = this.IOA7GLkiN9NHvPSGnRHCYsU.Next(0, (int) colorArray1.Length); int num3 = (int) ((int) ((num12 * 0.5) + ((num12 * this.IOA7GLkiN9NHvPSGnRHCYsU.NextDouble()) * 0.2))); Rectangle rectangle = this.Iro6aXBuEcuRl6K7sI8XXdXyuLQKgPrjsHSCqC(num11, num, num12, num3); Pen pen = new Pen(colorArray1[index], (float) num3); graphics.DrawEllipse(pen, rectangle); int num4 = this.IOA7GLkiN9NHvPSGnRHCYsU.Next(2, 6); for (int i = 0; i < num4; i = (int) (i + 1)) { index = this.IOA7GLkiN9NHvPSGnRHCYsU.Next(0, (int) colorArray1.Length); num3 = (int) ((int) ((num12 * 0.5) * this.IOA7GLkiN9NHvPSGnRHCYsU.NextDouble())); rectangle = this.Iro6aXBuEcuRl6K7sI8XXdXyuLQKgPrjsHSCqC(num11, num, num12, num3); pen = new Pen(colorArray1[index], (float) num3); graphics.DrawEllipse(pen, rectangle); } int num6 = this.IOA7GLkiN9NHvPSGnRHCYsU.Next(30, 50); for (int j = 0; j < num6; j = (int) (j + 1)) { index = this.IOA7GLkiN9NHvPSGnRHCYsU.Next(0, (int) colorArray1.Length); num3 = (int) (1 + this.IOA7GLkiN9NHvPSGnRHCYsU.Next(0, 2)); Color color = colorArray1[index]; rectangle = this.Iro6aXBuEcuRl6K7sI8XXdXyuLQKgPrjsHSCqC(num11, num, num12, num3); pen = new Pen(color, (float) num3); graphics.DrawEllipse(pen, rectangle); } Bitmap bitmap2 = new Bitmap(num11, num, PixelFormat.Format32bppPArgb); Graphics graphics2 = Graphics.FromImage(bitmap2); graphics2.set_InterpolationMode(InterpolationMode.HighQualityBilinear); graphics2.set_SmoothingMode(SmoothingMode.HighSpeed); graphics2.DrawImage(image, new Rectangle(0, 0, image.get_Width(), num), new Rectangle(0, 0, image.get_Width(), image.get_Height()), GraphicsUnit.Pixel); int num8 = Math.Max(bitmap2.get_Width(), bitmap2.get_Height()); Bitmap bitmap3 = new Bitmap(num8, num8, PixelFormat.Format32bppPArgb); Graphics graphics3 = Graphics.FromImage(bitmap3); int num9 = (int) ((num8 - bitmap2.get_Width()) / 2); int num10 = (int) ((num8 - bitmap2.get_Height()) / 2); graphics3.set_CompositingQuality(CompositingQuality.HighSpeed); graphics3.set_InterpolationMode(InterpolationMode.Bilinear); graphics3.set_SmoothingMode(SmoothingMode.HighSpeed); graphics3.DrawImage(bitmap2, num9, num10); bitmap2.Dispose(); bitmap3 = this.Igr8wn8mM1WnLht2ycuMoxHGm0Eh4c(bitmap3, (float) num13); return this.I5kqstLjxd9mGYbqaMBQ6MPMEDmSxAosD4j(bitmap3, 0); } --- snip ---
There is no error returned by gdiplus in various transformation/drawing operations prior creating the final "planetary rings" bitmap. It's a huge log filtering for gdiplus related calls alone.
num1 = 0
--- snip --- private Bitmap I5kqstLjxd9mGYbqaMBQ6MPMEDmSxAosD4j(Bitmap bitmap1, int num1) { Rectangle rectangle = this.IGNof4F(bitmap1, num1); Bitmap bitmap = this.IP4s1vqiMTYbc(bitmap1, rectangle); bitmap1.Dispose(); return bitmap; } ... private Rectangle IGNof4F(Bitmap bitmap1, int num1) { return this.ILRXNme(bitmap1, num1, Color.Empty, 0, 4); } ... private Rectangle ILRXNme(Bitmap bitmap1, int num14, Color color1, int num1, int num13) { Rectangle rectangle = new Rectangle(); FastBitmap bitmap = new FastBitmap(bitmap1); int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; bool flag = false; for (int i = 0; i < bitmap1.get_Width(); i = (int) (i + num13)) { for (int n = 0; n < bitmap1.get_Height(); n = (int) (n + num13)) { if (!color1.get_IsEmpty()) { Color pixel = bitmap.GetPixel(ref i, ref n); if (((pixel.get_R() <= (color1.get_R() + num1)) && (pixel.get_G() <= (color1.get_G() + num1))) && (pixel.get_B() <= (color1.get_B() + num1))) { continue; } num = Math.Max(0, (int) (i - num13)); flag = true; break; } if (bitmap.GetPixel(ref i, ref n).get_A() > num14) { num = Math.Max(0, (int) (i - num13)); flag = true; break; } } if (flag) { break; } } flag = false; for (int j = (int) (bitmap1.get_Width() - 1); j >= 0; j = (int) (j - num13)) { for (int num8 = 0; num8 < bitmap1.get_Height(); num8 = (int) (num8 + num13)) { if (!color1.get_IsEmpty()) { Color color2 = bitmap.GetPixel(ref j, ref num8); if (((color2.get_R() <= (color1.get_R() + num1)) && (color2.get_G() <= (color1.get_G() + num1))) && (color2.get_B() <= (color1.get_B() + num1))) { continue; } num2 = Math.Min((int) (bitmap1.get_Width() - 1), (int) (j + num13)); flag = true; break; } if (bitmap.GetPixel(ref j, ref num8).get_A() > num14) { num2 = Math.Min((int) (bitmap1.get_Width() - 1), (int) (j + num13)); flag = true; break; } } if (flag) { break; } } flag = false; for (int k = 0; k < bitmap1.get_Height(); k = (int) (k + num13)) { for (int num10 = 0; num10 < bitmap1.get_Width(); num10 = (int) (num10 + num13)) { if (!color1.get_IsEmpty()) { Color color3 = bitmap.GetPixel(ref num10, ref k); if (((color3.get_R() <= (color1.get_R() + num1)) && (color3.get_G() <= (color1.get_G() + num1))) && (color3.get_B() <= (color1.get_B() + num1))) { continue; } num3 = Math.Max(0, (int) (k - num13)); flag = true; break; } if (bitmap.GetPixel(ref num10, ref k).get_A() > num14) { num3 = Math.Max(0, (int) (k - num13)); flag = true; break; } } if (flag) { break; } } flag = false; for (int m = (int) (bitmap1.get_Height() - 1); m >= 0; m = (int) (m - num13)) { for (int num12 = 0; num12 < bitmap1.get_Width(); num12 = (int) (num12 + num13)) { if (!color1.get_IsEmpty()) { Color color4 = bitmap.GetPixel(ref num12, ref m); if (((color4.get_R() <= (color1.get_R() + num1)) && (color4.get_G() <= (color1.get_G() + num1))) && (color4.get_B() <= (color1.get_B() + num1))) { continue; } num4 = Math.Min((int) (bitmap1.get_Height() - 1), (int) (m + num13)); flag = true; break; } if (bitmap.GetPixel(ref num12, ref m).get_A() > num14) { num4 = Math.Min((int) (bitmap1.get_Height() - 1), (int) (m + num13)); flag = true; break; } } if (flag) { break; } } bitmap.Release(); return new Rectangle(num, num3, (int) (num2 - num), (int) (num4 - num3)); } --- snip ---
(FastBitmap seems to be a small internal wrapper class to access the pixel data directly)
An empty bounding rectangle is returned, maybe alpha/transparency issue or the pixel buffer content is wrong due to earlier operations.
One approach could be to reduce/transform the managed code snippets (C#) into small .NET executable to test/play with (Wine vs. native gdiplus).
Regards
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #4 from Vincent Povirk madewokherd@gmail.com 2012-03-10 12:12:09 CST --- Sure you didn't see any FIXME's from gdiplus, perhaps relating to GdipDrawEllipse?
http://bugs.winehq.org/show_bug.cgi?id=30126
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Matrix Games - Distant |Matrix Games - Distant |Worlds fails on startup |Worlds fails on startup | |(GdipDrawEllipse fails to | |draw ellipse without HDC)
--- Comment #5 from Anastasius Focht focht@gmx.net 2012-03-10 13:10:44 CST --- Hello Vincent,
--- quote --- Sure you didn't see any FIXME's from gdiplus, perhaps relating to GdipDrawEllipse? --- quote ---
Yes, there were a bunch of GdipDrawEllipse() FIXME's complaining about "graphics object has no HDC", called from I0dnVLPuf6uVarpxEFTlj2r().
My bad, I only payed attention to gdiplus return code "Ok" in trace log but missed that GdipDrawEllipse() actually got short-circuited without drawing ellipse itself :|
Source: http://source.winehq.org/git/wine.git/blob/0d7bc4b325de1788dc2643ac84d5579be...
--- snip --- 2589 GpStatus WINGDIPAPI GdipDrawEllipse(GpGraphics *graphics, GpPen *pen, REAL x, 2590 REAL y, REAL width, REAL height) 2591 { 2592 INT save_state; 2593 GpPointF ptf[2]; 2594 POINT pti[2]; 2595 2596 TRACE("(%p, %p, %.2f, %.2f, %.2f, %.2f)\n", graphics, pen, x, y, width, height); 2597 2598 if(!graphics || !pen) 2599 return InvalidParameter; 2600 2601 if(graphics->busy) 2602 return ObjectBusy; 2603 2604 if (!graphics->hdc) 2605 { 2606 FIXME("graphics object has no HDC\n"); 2607 return Ok; 2608 } ... 2624 return Ok; 2625 } --- snip ---
Maybe a temporary HDC helps here?
Regards
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #6 from Vincent Povirk madewokherd@gmail.com 2012-03-10 15:08:21 CST --- Well, we can't use an HDC for pixel formats with an alpha channel, because gdi32 cannot draw with alpha data. We need a line/curve drawing implementation that doesn't rely on gdi32.
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #7 from Light sgsdxzy@gmail.com 2012-03-10 21:38:32 CST --- @Anastasius Focht Thank you very much! According to your steps, the game is now playable! Only a pity that it can't run in fullscreen mode.
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #8 from Light sgsdxzy@gmail.com 2012-03-10 21:44:07 CST --- And the panels (for instance, diplomacy) can't be displayed, so the game isn't fully function yet.
http://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #9 from Austin English austinenglish@gmail.com 2012-03-11 15:35:57 CDT --- (In reply to comment #8)
And the panels (for instance, diplomacy) can't be displayed, so the game isn't fully function yet.
Please file new bugs for these issues.
http://bugs.winehq.org/show_bug.cgi?id=30126
Bug 30126 depends on bug 25060, which changed state.
Bug 25060 Summary: Microsoft .NET Framework 3.5 installer does not complete http://bugs.winehq.org/show_bug.cgi?id=25060
What |Old Value |New Value ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
https://bugs.winehq.org/show_bug.cgi?id=30126
--- Comment #10 from Austin English austinenglish@gmail.com --- This is your friendly reminder that there has been no bug activity for 2 years. Is this still an issue in current (1.7.16 or newer) wine?
https://bugs.winehq.org/show_bug.cgi?id=30126
Light sgsdxzy@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #11 from Light sgsdxzy@gmail.com --- (In reply to Austin English from comment #10)
This is your friendly reminder that there has been no bug activity for 2 years. Is this still an issue in current (1.7.16 or newer) wine?
Tested, it is resolved in current wine. Closed.
https://bugs.winehq.org/show_bug.cgi?id=30126
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.17.