Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
Add additional descriptions, change some details, update the goals and add credits at the beginning for ptitSeb and the Wine devs
  • Loading branch information
Grima04 authored Jan 20, 2021
1 parent 81a8dfe commit 9f525a1
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Win32droid - box86 & Wine based Win32 emulator for Android
----
## Before we start with the explanations, I want to give a huge shout-out to ptitSeb (https://github.com/ptitSeb) and the Wine developers, who developed the x86 Linux Userspace Emulator box86 and the Windows compatibility layer respectively. Without the constant dedication to box86 by ptitSeb and his efforts to get Wine x86 to run on box86, aswell as the constant improvements to Wine by the Wine devs, this project would have never been possible.
## FAQ:
### What is Win32droid?
Win32droid is an experimental software to emulate Windows x86 games on **_rooted_** Android ARM/ARM64 devices, based on the OpenSource projects Wine and box86
Expand All @@ -10,12 +11,12 @@ Afterwards, after having chrooted into the environment, the Win32droid app execu
box86 is used as the x86 emulation backend in order to be able to use Wine x86 and Wine is used as a translation layer for Windows software on Linux. Graphics are currently processed
via the Mesa LLVMpipe software rendering OpenGL backend combined with Wine's D3D wrappers.

### How about compatibility? What runs?
### In what state is Win32droid at the moment?
Currently, some Windows x86 programs and games should boot or run.
I haven't tested much software on it yet but during my testing Cinebench R11.5 and Silent Hill 2 could boot and run on the emulator.
To get a better idea of what might be able to run or boot, please refer to the box86 and Wine compatibility lists.

### How about performance?
### How fast is the emulator?
Don't expect this to be fast. While the box86 dynamic recompiler is quite decent, it doesn't seem to be as fast as ExaGear but this might change in the future.
The main bottleneck at the moment is the graphics backend though.
Currently only software rendering via Mesa LLVMpipe is supported, so games, especially 3D ones will run **_SLOW_**.
Expand All @@ -26,8 +27,8 @@ As a reference you can take the following results that I got on a Snapdragon 865

### Will 3D Acceleration be supported in the future?
I would like to implement it, but at the moment I can't do much about it. I am a simple dev, who has recently gotten into Linux and Java coding. I don't know how to code in C/C++ (yet) and I don't have any graphics API knowledge (OpenGL, Vulkan, ...),
so don't keep your expectations too high. I am currently also busy with my university studies, so I can't dedicate much time (if at all) to this project and even less into acquiring
and mastering a new coding language and graphics API.
so don't keep your expectations too high. I am currently also busy with my university studies, so I can't dedicate much time (if at all) to this project and even less into acquiring and mastering a new coding language and graphics API. <br/>
The only viable possibility that I know of to **_maybe_** get 3D hardware acceleration would be to compile and install Mesa DRM/DRI in order to be able to use the GPU directly, however not a lot of devices currently support DRM. Although my device (Snapdragon 865 SoC) has DRM, it requires Mesa to be compiled for Freedreno with a KGSL DRM backend, since Qualcomm currently uses a custom DRM implementation on Android, however the Mesa compilation for the KGSL target currently fails, so I have no way of testing it. Another idea would be to get some kind of GL-over-the-network software to run but at the moment the projects that can accomplish this are in a really bad state and/or abandoned, so it won't be possible to use this method in the near future.

### ETA for xyz WEN?
No, there will be no ETAs whatsoever. Like many other devs already say/said, ETAs and people asking every second for an "ETA WEN?" have been a plague and only slowed down development or even
Expand All @@ -36,25 +37,26 @@ as everyone pleases and commands.

----
## Known Issues:
* Software requiring DirectX 9 (and probably also DX10/11) currently crashes / doesn't boot at all
* Software requiring OpenGL crashes or only displays a black screen
* Mesa LLVMpipe seems to have some problems with the Wine D3D wrapper, causing random crashes/freezes (e.g.: Silent Hill 2 crashes after a few seconds to 2 minutes max.)
* Software requiring DirectX 9 (and probably also DX10/11) currently crashes / doesn't boot at all.
* Software requiring OpenGL crashes or only displays a black screen. A temporary workaround for this can be achieved by downloading Mesa for Windows (32-Bit) from Federico Dossena (https://fdossena.com/?p=mesa/index.frag), pasting the downloaded opengl32.dll file into the directory where your .exe requiring OpenGL is located and then overwriting opengl32.dll in winecfg as "native then builtin". Please note that this will be even slower than natively running Mesa LLVMpipe since now OpenGL is being software rendered **_through_** box86 which means that you basically do software rendering (slow) ontop of an emulator (a lot slower).
* Mesa LLVMpipe seems to have some problems with the Wine D3D wrapper, causing random crashes/freezes (e.g.: Silent Hill 2 crashes after a few seconds to a few minutes max.).
* Running the Wine Desktop with another resolution than the game's default full screen resolution might cause crashes.
* Passing resolution arguments to XServer XSDL isn't supported, so setting up a custom resolution profile in XServer XSDL is required before changing the Wine Desktop resolution,
otherwise Wine just renders a small Window
* Some installers don't work, so it is **_recommended_** to provide your program in a **_portable format_** if possible (e.g.: portable .exe, game preinstalled in folder format)
* Passing resolution arguments to XServer XSDL isn't supported, so setting up a custom resolution profile in XServer XSDL is required before changing the Wine Desktop resolution, otherwise Wine just renders a small window.
* Running XServer XSDL and Wine a different resolutions will cause problems, so please **make sure to run Wine and XServerXSDL at the _same_ resolution**.
* Some installers don't work, so it is **_recommended_** to provide your program in a **_portable format_** if possible (e.g.: portable .exe, game preinstalled in folder format).

----
## Goals & future plans:
### Short-term goals
* Fix bugs of course :)
* Try to clean up the rootfs OBB, to shrink it's size and consume less phone storage
* Try to clean up the rootfs OBB, to shrink its size and consume less phone storage
* Implement Mesa GLES2 LLVMpipe & GL4ES as an alternative for Desktop GL (2.1) support
* Try to get the LOAX-Server project to work with Win32droid, to provide hardware acceleration via OpenGL ES 2 and combine it with a wrapper for Desktop OpenGL (like GL4ES, Regal or virgl-vtest as GL to GLES translators)
* Try to implement Mesa DRM KGSL as soon as it is fixed to attempt to get GPU acceleration to work on Qualcomm devices with DRM

### Mid-term goals
* Implement Proot in order to make the app compatible with non-rooted devices
* Provide a better UI and/or rewrite it and create a proper options menu
* Try to get the LOAX-Server project to work with Win32droid, to provide hardware acceleration via OpenGL ES 2 and combine it with a wrapper for Desktop OpenGL (like GL4ES, Regal or virgl-vtest as GL to GLES translators)

### Long-term goals
* Learn C/C++ and OpenGL to be able to port virgl or a similar project to Android in order to provide a solid, hardware accelerated OpenGL backend for games.
Expand Down

0 comments on commit 9f525a1

Please sign in to comment.