Winulator: Another potential way to run win games on Pandora


ElPoco

Hardcore Member
Joined
Feb 16, 2012
Messages
1,195
Age
39
Location
Paris, France
I haven't found anything about it here, so I decided to post this.


So someone has started to work on some kind of Windows application emulator for Android. It seems to rely on DirectX and Win32 calls implementation on the device, and JIT or static recompilation from x86 to ARM.


I have to admit that I'm a bit doubtful on the whole x86 to ARM binary conversion. Any expert here to give his thoughts?
 
No it's not Wine+Qemu, from what I can read, it looks more like a Wine compiled for ARM and a static recompiler (x86->ARM) to translate the software on a desktop PC.


But still something very nice to have. You have to convert your programs first on a PC, but then, you have better speed the Qemu can probably provide...
 
Last edited by a moderator:
Oh Wine works. But without a Qemu User Space, it's useless, because ARM in so x86. I will try some WinCE ARM exe, just to if it works this Week End if I have time...
 
Last edited by a moderator:
This seems more like M-HTs DOS conversions than a generic emulator. An offline program that runs separately from the game code converts the binary for some game and stubs out OS calls with HLE routines. The conversion may not be 100% automatic, including some special directives for the game.. but even if it is automatic it'll probably make assumptions that only some games are known to cooperate with. The only difference I'm seeing is that the author intends to have one program capable of converting multiple games. But the game support will still be added individually and on demand.


The big problems with static recompilation is it has to know the addresses of all code paths statically and it doesn't handle dynamically loaded, generated, or modified code. The tricky part with knowing addresses is that you need heuristics to try to determine what paths an indirect branch can take. You could get what you need by treating the entire binary as code. But since x86 has variable length instructions you would need to have a bunch of separate translations for different byte alignments, and a huge table that can map every single byte to some block entry.


Windows games are probably on average easier to deal with than DOS ones because they'll be less likely to use overlays for on-demand code loading (instead relying on the OS's virtual memory if necessary) and won't contain their own system code like interrupt handlers. They'll also offload more intensive functions to the OS than DOS will, like screen blits and what have you.
 
Last edited by a moderator:
So this looks like mostly the same approach M-HT used for his statically recompiled DOS games.


The word "proprietary" doesn't sound good on that page though.
 
Back
Top