Dolphin, the GameCube and Wii emulator - Forums

Full Version: iOS Port for Dolphin
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, just wondering why isn't there an iOS port for Dolphin yet? Is it because the lack of iOS Developers or...?
Literally the only person that has done any work on an iOS port is OatmealDome: https://forums.dolphin-emu.org/Thread-dolphin-on-ios
I started looking at it also, but haven't had time because of school.
(11-08-2015, 10:18 AM)KHg8m3r Wrote: [ -> ]Literally the only person that has done any work on an iOS port is OatmealDome: https://forums.dolphin-emu.org/Thread-dolphin-on-ios
I started looking at it also, but haven't had time because of school.

That moment when you wish you knew code. Thats how I feel right now. I'd really love to find out how to develop this for iOS.
Thx.
There's several roadblocks to Dolphin on iOS:

  1. Apple will definitely not allow it on the App Store. (the solution here is to make it available for jailbroken devices only.)
  2. The sandbox environment places restrictions on what applications can do (ex: IPC, and more specifically shm. the solution here is once again to make it available for jailbroken devices.)
  3. Stock iOS will not allow applications to mark memory regions as executable unless you're MobileSafari, making JITs impossible to run. (the solution here is yet again jailbroken devices only. a kernel patch is applied with all jailbreaks that allows applications to set the executable flag.)
  4. iOS does not have swap (using the hard drive (or in iDevices, the NAND) as extra RAM). Because of this, iOS limits the amount of addressable memory applications can access to the size of the device's RAM. The problem here is that Dolphin stores memory mirrors of the Wii/GC's RAM high above the memory limit (I think around 8GB? if that's not correct, then it would be whatever 0x200000000 bytes is).


To fix #4, here are some possible solutions:

  1. Turn off fastmem and get a huge speed drop (on top of the speed drop because we are running on a mobile CPU). Also, having fastmem off crashes Dolphin the last time I checked, even on the desktop... I think this may be a bug?
  2. Squish the memory regions into 1GB of space and fix the JITs.
  3. PR #1882...? Sadly, it seems like magumagu has vanished, so it's in limbo.
  4. I just thought of this... Maybe we could patch the kernel in a similar fashion of the executable flag patch? I'm 100% not the right person for that so someone else will have to help.
  5. Hope and pray to whatever god you believe in (if any) that Apple will add swap and/or lift the limit on addressable memory.

This is all just to get the emulated PowerPC CPU going. I haven't even been able to touch graphics yet and see how good Apple/PowerVR's OpenGLES drivers are. (Looking at the state of the OS X drivers kind of worries me.) I'm just one person, so if anybody wants to help I'd gladly appreciate that.

(Just an aside, but I just realized how great Dolphin could be on one of the new Apple TVs... tvOS is based on iOS and the Apple TVs have A8 chips in them, so if we get it running on iOS, theoretically it shouldn't be too hard to get it running on an Apple TV. First, though, we need a jailbreak for it.)
I believe HdkR intends on experimenting with Dolphin on iOS once he gets an iPad Pro.
(11-08-2015, 11:25 AM)OatmealDome Wrote: [ -> ]There's several roadblocks to Dolphin on iOS:


  1. Apple will definitely not allow it on the App Store. (the solution here is to make it available for jailbroken devices only.)
  2. The sandbox environment places restrictions on what applications can do (ex: IPC, and more specifically shm. the solution here is once again to make it available for jailbroken devices.)
  3. Stock iOS will not allow applications to mark memory regions as executable unless you're MobileSafari, making JITs impossible to run. (the solution here is yet again jailbroken devices only. a kernel patch is applied with all jailbreaks that allows applications to set the executable flag.)
  4. iOS does not have swap (using the hard drive (or in iDevices, the NAND) as extra RAM). Because of this, iOS limits the amount of addressable memory applications can access to the size of the device's RAM. The problem here is that Dolphin stores memory mirrors of the Wii/GC's RAM high above the memory limit (I think around 8GB? if that's not correct, then it would be whatever 0x200000000 bytes is).


To fix #4, here are some possible solutions:


  1. Turn off fastmem and get a huge speed drop (on top of the speed drop because we are running on a mobile CPU). Also, having fastmem off crashes Dolphin the last time I checked, even on the desktop... I think this may be a bug?
  2. Squish the memory regions into 1GB of space and fix the JITs.
  3. PR #1882...? Sadly, it seems like magumagu has vanished, so it's in limbo.
  4. I just thought of this... Maybe we could patch the kernel in a similar fashion of the executable flag patch? I'm 100% not the right person for that so someone else will have to help.
  5. Hope and pray to whatever god you believe in (if any) that Apple will add swap and/or lift the limit on addressable memory.

This is all just to get the emulated PowerPC CPU going. I haven't even been able to touch graphics yet and see how good Apple/PowerVR's OpenGLES drivers are. (Looking at the state of the OS X drivers kind of worries me.) I'm just one person, so if anybody wants to help I'd gladly appreciate that.

(Just an aside, but I just realized how great Dolphin could be on one of the new Apple TVs... tvOS is based on iOS and the Apple TVs have A8 chips in them, so if we get it running on iOS, theoretically it shouldn't be too hard to get it running on an Apple TV.  First, though, we need a jailbreak for it.)

omg yes. That's exactly what we need. Im not sure if you know, but one developer has already gotten safari on the new Apple TV. Either way I'm thinking of posting something about this on reddit
Please don't get your hopes up... Those obstacles are not trivial! Most of them are fundamental issues with how Apple runs iOS!