Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,736,126 Members 42,788 Now Online
XDA Developers Android and Mobile Development Forum

[Beta] Win86emu: Running x86 apps on WinRT devices

Tip us?
 
mamaich
Old
(Last edited by mamaich; 1st February 2014 at 08:45 AM.)
#1  
Recognized Developer - OP
Thanks Meter 212
Posts: 1,150
Join Date: Apr 2004

 
DONATE TO ME
Default [Beta] Win86emu: Running x86 apps on WinRT devices

The project is abandoned.

As I no longer own a Windows RT device and I'm not willing to use Windows RT anymore, unless Microsoft would make it more open (at least to run your own desktop apps) - I've decided to stop working on this project.

As usual I'm publishing complete sources of this tool. Feel free to use them in your own projects or to continue developing this one - only leave my copyrights somewhere.
Don't ask me how to build the sources or to explain anything in them. Figure that out yourself.

The project is abandoned. Sorry.

I'm presenting a tool that allows running a set of x86 Windows applications on Windows RT (ARM) tablets. Its goal is to support all apps except for those that:
- require much CPU power,
- use complex features that were cut out from WinRT like D3D9 extensions or OpenGL,
- require drivers or specific services,
- make heavy use of COM interfaces,
- use undocumented windows internals,
- apps that use .NET framework,
- x86 Metro apps,
- 16 or 64 bit Windows programs,
- buggy apps that require special workarounds.

The tool is currently on a beta stage, so don't expect much from it. It is far from being complete, but at least it runs something.

Current version: 0.061
Just a minor update. The project is not dead, I just had no time to continue the development.
Attached the fixed ntdll.nt.dll that works under Windows RT 8.1 (Microsoft removed some NTDLL exports, so I had to add more stubs). This fix is not needed on RT 8.0.
To install it: extract the attached 0.061-ntdll.nt.dll.zip to c:\x86node\windows\SystemNT\ overwriting the existing file.
Autostarting x86 programs does not work on RT 8.1 ("can't install CreateProcessInternal hook"). I'll look on this later.
Don't ask on jailbreaking the 8.1 beta in this thread - there is a good progress on it, more info would be on release (in october or when WZOR would leak the RTM).

Current version: 0.06
Seems that archive is too big to be attached, so I've uploaded it to google drive and here
Installation: extract the archive on your unlocked Windows RT device, run the MSI file and follow the instructions.
Note: Uninstall the previous version before installing a new one.
List of compatible apps is in this post: http://forum.xda-developers.com/show...php?p=40924456

Trademarks
Windows is a registered trademark of Microsoft Corporation. ReactOS is a registered trademark or a trademark of ReactOS Foundation. All other trademarks are the property of their respective owners.

Disclaimer
This software is provided "as is". Use it on your own risk. I make no warranties as to performance, merchantability, fitness for a particular purpose, or any other warranties whether expressed or implied. No oral or electronic communication with me shall create a warranty of any kind. Under no circumstances should I be liable for direct, indirect, special, incidental, or consequential damages resulting from the use, misuse, or inability to use this software, even if I has been advised of the possibility of such damages.
I'm trying my best to make the software working, but I can't guarantee that it is free from defects.

All beta versions of this tool would be freeware. You may freely use it for your own, embed it into your tool, but you can't use it commercially without my confirmation. You can disassemble, analyze or modify this tool for yourself - later I'll provide SDK and document its internals. The only thing that is prohibited is changing embedded copyright notices. I reserve the right of making the project commercial, but this does not mean that this would ever happen.

This software contains unmodified binaries from the ReactOS project: a registry editor, cmd.exe, ole32.dll to name the few. Those binaries are left unmodified and are covered by LGPL license. Future versions may contain redistributable binaries provided by Microsoft and/or other companies.

Some more information may be found in my blog. If you want to support development - use the link or press the button on the left side of the post.
Attached Files
File Type: txt changelog.txt - [Click for QR Code] (1.8 KB, 6849 views)
File Type: zip 0.061-ntdll.nt.dll.zip - [Click for QR Code] (26.0 KB, 14230 views)
File Type: 7z Sources.7z - [Click for QR Code] (5.49 MB, 3381 views)
...
The Following 89 Users Say Thank You to mamaich For This Useful Post: [ Click to Expand ]
 
mamaich
Old
(Last edited by mamaich; 16th May 2013 at 01:16 AM.)
#2  
Recognized Developer - OP
Thanks Meter 212
Posts: 1,150
Join Date: Apr 2004

 
DONATE TO ME
Changes:
15 may 2013: DInput and DInput8 changes for Fallout2 keyboard compatibility.
12 may 2013: A minor update. Fallout 2 now works, tested on Russian version from 1C.
01 may 2013: Added the ability to automatically launch x86 applications. Added the shell32 interfaces - so that installers now work (at least NSIS and InstallShield installers are known to be working).
05 apr 2013: Fixed a few bugs.
04 apr 2013: Uploaded a new build after a long delay. Now emulator supports 256-color modes. But due to a limitation on an updated Nvidia driver - 640x480 and 800x600 display modes are no longer supported on Windows RT. You'll see the black lines to the right and bottom of the screen if the program tries to set such mode.
25 feb 2013: The tool now outputs its version to log. Now one x86 program may launch another - so some of the installers and, for example, 7Z GUI frontend can now run under emulation. Added ~80 DLLs. Some of them are stubs (like D3D9.DLL), others are mostly untested. I have not done all that I've planned for this build, publishing it just as an update to show that the work is going on. Do not expect it to run much more than the previous build.
13 feb 2013: more informative errors from launcher. Emulator now supports program paths with spaces. EXE files with relocations are now processed correctly. Some bugfixes in kernel32 and advapi32.
11 feb 2013: fixed a typo in winmm.dll emulation, now pinball has sound. Also updated the launcher.
10 feb 2013: now the program reached the beta stage.

Known problems
No D3D and most of COM interfaces. Lots of programs would crash, don't run or have different issues.

Notes:
The program keeps its settings in the HKCU\Software\x86node\Settings registry key. Supported REG_SZ (string) values are:
DosboxCore: "dynamic", "simple" or "normal". Dynamic is the default as it is the fastest, but the most buggy core.
LogFile: path to the log file. If not present - log file is %temp%\win86emu.log
Supported REG_DWORD values:
LogLevel: 0=no log (default), 4=max logging
added 13 feb 2013: now default log level is 2: warnings+errors, so you don't need to edit registry

There are several compatibility hacks that may be useful. Compatibility settings are stored in HKCU\Software\x86node\Compatibility\[filename.exe] key. "filename.exe" - a name of the emulated EXE file without path. All values are DWORD:
SetProcessAffinityMask = bitmask. Specify which CPUs to use for running a program, read SetProcessAffinityMask description in MSDN. 0 or unset == run on all cores.
NoRaiseException = 1. RaiseException would just return. Now exceptions are emulated correctly, so this hack is no longer needed.
UseDirectRegistry = 1. Do not redirect emulated registry keys to HKCU\Software\x86node. Be careful when using it.
MaxProcessorFeaturePresent = max processor feature number that is "supported". See the IsProcessorFeaturePresent function in MSDN. All requests for the value above specified would return 0. Default: 0 (IsProcessorFeaturePresent always returns 0).
SimulateAdminRights = 1. Lie to installers that call OpenSCManager function to determine that it is running as administrator, allowing these programs to run without elevation. Redirect the "common start menu" and similar folders to the per-user folders.
You can fake the OS version to a running program. Default XP SP3:
OSVersionLo=dword:00000001
OSVersionHi=dword:00000005
OSVersionBuild=dword:00000a28
OSServicepackLo=dword:00000000
OSServicepackHi=dword:00000003

Some information on the project internals may appear in my blog: http://mamaich-eng.blogspot.ru, but this thread on XDA would be the main discussion place.
...
The Following 11 Users Say Thank You to mamaich For This Useful Post: [ Click to Expand ]
 
lucas.scott
Old
#3  
lucas.scott's Avatar
Senior Member
Thanks Meter 214
Posts: 1,027
Join Date: Mar 2009
Location: Nashville, TN
I may be missing something...but this won't run for me. The exe just tells me it can't be run like normal exe does. I am jailbroken and can run arm compiled exe.
Twitter: @_lukasskott_
Instagram: _lukasskott_
The Following User Says Thank You to lucas.scott For This Useful Post: [ Click to Expand ]
 
netham45
Old
#4  
Recognized Developer
Thanks Meter 529
Posts: 859
Join Date: Jun 2009
Location: Denver

 
DONATE TO ME
That is very impressive, mamaich.
Don't PM me for help, post on the forums. I won't respond to basic questions.

I wrote and maintain the jailbreak scripts for Windows RT.

Tablet: Microsoft Surface RT 32GB, Type Keyboard
Phone: Samsung Galaxy Note III

Helpful Windows RT Links:
Windows RT Jailbreak Tool
List of ported apps
Disabling Windows Update
 
dan-htc-touch
Old
#5  
dan-htc-touch's Avatar
Senior Member
Thanks Meter 127
Posts: 587
Join Date: Dec 2007
Location: calgary

 
DONATE TO ME
Quote:
Originally Posted by lucas.scott View Post
I may be missing something...but this won't run for me. The exe just tells me it can't be run like normal exe does. I am jailbroken and can run arm compiled exe.
Reread the directions 😃
Devices:
Android: galaxy tab 10.1, galaxy tab 8.9
Windows phone 8: Samsung ativ s
Windows RT: Microsoft Surface
twitter: dan_htc_fan
 
madamimadam
Old
#6  
madamimadam's Avatar
Senior Member
Thanks Meter 15
Posts: 125
Join Date: Jan 2011
Location: Atlanta
I don't have an ARM tablet to test this on, but this type of development is what will get me onto an ARM tablet for the next go-round. I love my S7S, but I really hated paying the price.
 
lucas.scott
Old
#7  
lucas.scott's Avatar
Senior Member
Thanks Meter 214
Posts: 1,027
Join Date: Mar 2009
Location: Nashville, TN
Quote:
Originally Posted by dan-htc-touch View Post
Reread the directions ��
ugh...embarassed.

Great work mamaich. Thank you!
Twitter: @_lukasskott_
Instagram: _lukasskott_
 
netham45
Old
#8  
Recognized Developer
Thanks Meter 529
Posts: 859
Join Date: Jun 2009
Location: Denver

 
DONATE TO ME
Notepad from Windows 95 seems to run too.
Don't PM me for help, post on the forums. I won't respond to basic questions.

I wrote and maintain the jailbreak scripts for Windows RT.

Tablet: Microsoft Surface RT 32GB, Type Keyboard
Phone: Samsung Galaxy Note III

Helpful Windows RT Links:
Windows RT Jailbreak Tool
List of ported apps
Disabling Windows Update
 
windowsrtc
Old
#9  
Member
Thanks Meter 31
Posts: 94
Join Date: Nov 2012
wow,this is an awesome project!
The Following User Says Thank You to windowsrtc For This Useful Post: [ Click to Expand ]
 
C-Lang
Old
#10  
Senior Member
Thanks Meter 37
Posts: 153
Join Date: Nov 2012
Location: Redlands, CA
Amazing! Thank you!!!!!!!

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes