|
|
|||||||
| Home | Register | Downloads | FAQ | Members List | Calendar | Arcade | Mark Forums Read |
» Less advertising throughout
» Post and participate in discussions
» Network with other forum members
» Free private messaging
![]() |
|
|
Thread Tools | Display Modes |
|
|
#81 | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Apr 2001
Location: Argentina
Posts: 224
|
Quote:
That's why I wrote "with vanila kernel". IOS has this problem (when not jailbroken, also Apple expressely forbids dynamically generated code). Android allows you to run data as code (see DexMaker, but only allow Dalvik code), then for native, there's LOTS of issues when writing native code, because the huge variety of CPUs (ARM+X86+MIPS+ small/big ARM code variants). WinRT & WP8 on the other hand just prohibit it; even if jailbroken so far; although one of the nice things in WinRT is that C++/DirectX code run native ![]() I'm writing this after already having writen more than one recompiler and other stuff for each of those four OS/platforms (WinRT and WP8 are not the same, although there are similarities). So again, most VM running on phones don't allow you to execute code from data memory; or write data into code memory, given the case... be it as by design, or then because legal reasons. Anyway... VTM8 has nothing to do with DynaRec so far :P
__________________
Duos DSEMU official blog at http://ds-duos.blogspot.com AdriPSX PSEMU official blog at http://adripsx.blogspot.com |
|
|
|
|
| Advertisement | [Remove Advertisement] | ||
|
|
|
#82 | |||||
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Apr 2001
Location: Cleveland OH, USA
Posts: 1,436
|
Quote:
Nonetheless, the current iOS version does allow mprotect to set PROC_EXEC (afaik not alongside PROC_WRITE however). I'm not sure if you can add this entitlement to signable code. Quote:
x86 + ARM is really no different from wanting to support WinRT and Windows 8 like you do. Quote:
Quote:
For what it's worth, you're not the only person doing static recompilation of old PC programs. M-HT released a few game convertors for GP2X and various other handhelds. More recently there's this: http://blog.winulator.com/ The distinction is that these aren't fully automated approaches and therefore specific games need some specific tuning. This is about what you'd expect. You may get several games naively, I don't know, but I'm pretty confident there's some you won't without special fixes. But then again I don't know if this was even your intention. Quote:
Most VM running phones are Android. Extend it to "phones that you'll be able to run your app on at all" and most will allow dynarecs, not prohibit it. Right. Just the same, here's my question, and it's the same thing I've asked everyone who has done or wanted to do static recompilers over the years (and I've met many) - what performance advantages do you have over dynarec? I get that that's not the reason you're doing it, but you seem to imply in an earlier post that you have a huge performance advantage and I'd like to know why. |
|||||
|
|
|
|
|
#83 |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Apr 2001
Location: Argentina
Posts: 224
|
I didn't want to go for a long explanation, but anyway. As I mentioned before, it is similar to static recompilation, but it's not. Performance increase happens mainly because VTM8 produces C code, that then can be compiled (and modified again, if someone wants to) on the original SDK. Lots of unnecesary stuff like silly loops, addressing, and LOTS of unnecesary access to memory doesn't happen at all... etc... etc... plus "usually" modern C compilers are a lot "smarter" than a "normal" dynamic recompiler by far... The rest of the "hardware" is "emulated" in a similar way to how an emulator works... but again, it is "inlined" into the code... which is a HUGE change. VTM8 detects all what we may call "immediate" code, so lots of unnecesary "low level" operations do not even happen (stuff like loading the first 16bits of a register... then shifting them... then adding the second 16bits... and then moving them into another register... that becomes something so simple as "UInt32 A=0x12345678;". That's the "basic" explanation. If it works, yes, it works. If it has flaws, yes it does... automodified code in some games are a nightmare, so I had to add an "interpreter" to handle those tiny portions. Jailbroken, or not, allowing recompilers or not, etc... was never an issue; but an answer to someone who asked if I was using something like that. I mentioned I made several DynaRecs already, because I did, and I wanted to make you notice that I knew "a bit" about what I was writing about. Regarding Winulator, I'm not familiar with it (I do not currently own Android devices myself, except the ones they sent me for Q&A from time to time). It looks great, although it makes me remember a lot to QEMU and Bosch. VTM8 is not an emulator per se, nor a static recompiler; but just a "procedure" that I allows to decompile and recompile code between different platforms. (I started with two for the time being). I hope this satisfy your curiosity, if that was it. Anyway... I don't think I'll add anything else to the matter. Best regards, Roor
__________________
Duos DSEMU official blog at http://ds-duos.blogspot.com AdriPSX PSEMU official blog at http://adripsx.blogspot.com |
|
|
|
|
|
#84 | |
|
Linux's worst nightmare..
![]() ![]() ![]() ![]() ![]() Join Date: Feb 2004
Location: USA
Posts: 1,505
|
Quote:
shoot me a PM
__________________
OS: WinXP Professional Service Pack 3 CPU: Intel pentium 4 3.0GHz Video: Nvidia Geforce 8400GS Sound: ASUS Xonar DS 7.1 Channels 24-bit 192KHz PCI Interface Audio Card Memory: 512 MB HD: [C:] 140.36/449.09 GB Connection: Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller |
|
|
|
|
|
|
#85 |
|
Level 9998
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Nov 2006
Location: Java
Posts: 9,377
|
Basically VTM8 is a "translator" that rewrites the "source" binary of a game into something that the intended platform understands in native code, right? ![]() I had thought of a similar project as well... for JPSX (since JPSX is employing a similar technique with BCEL anyway), but the problem is always with self-modifying codes. You never know to what extent they modify themselves... and even to write an interpreter for them, you gotta know for sure that they'll stop modifying codes at some point. But... how can you be so sure they won't modify codes after that point? ![]() I'd love to know how you get over that problem. Right now, it's truly nightmare trying to get over it. |
|
|
|
|
|
#86 |
|
Registered User
Join Date: Dec 2008
Location: Trinidad
Posts: 1
|
The emulator keeps crashing whenever I start a game. Can someone give me some advice. Windows 7 laptop Dual core intel CPU 1 GB RAM |
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|