summaryrefslogtreecommitdiff
path: root/pcr/reicast-git
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/reicast-git')
-rw-r--r--pcr/reicast-git/PKGBUILD27
-rw-r--r--pcr/reicast-git/error-mem.txt168
-rw-r--r--pcr/reicast-git/loungekatt_rm-nonfree-fp.patch1451
3 files changed, 15 insertions, 1631 deletions
diff --git a/pcr/reicast-git/PKGBUILD b/pcr/reicast-git/PKGBUILD
index d6d7fa040..bbd11ca3a 100644
--- a/pcr/reicast-git/PKGBUILD
+++ b/pcr/reicast-git/PKGBUILD
@@ -5,7 +5,7 @@
_pkgname=reicast
pkgname=${_pkgname}-git
pkgver=r1703.a5b7011
-pkgrel=1
+pkgrel=2
pkgdesc="A multiplatform Sega Dreamcast emulator"
arch=('i686' 'x86_64' 'armv7h')
url="http://${_pkgname}.com/"
@@ -77,11 +77,15 @@ prepare() {
build() {
mkdir -vm 0755 "$srcdir"/pkgbuild-dir
mkdir -vm 0755 "$srcdir"/purupuru-dir
+ mkdir -vm 0755 "$srcdir"/microphone-dir
if [ $CARCH == x86_64 ]; then
make -C ${_pkgname}-${pkgver}/shell/linux platform=x64 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-dir install
# Enable Purupuru Pack (rumble support)
sed -i 's|SegaVMU[,]i[,]1|PurupuruPack,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
make -C ${_pkgname}-${pkgver}/shell/linux platform=x64 PREFIX=/usr DESTDIR="$srcdir"/purupuru-dir install
+ # Enable Microphone support
+ sed -i 's|PurupuruPack[,]i[,]1|Microphone,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
+ make -C ${_pkgname}-${pkgver}/shell/linux platform=x64 PREFIX=/usr DESTDIR="$srcdir"/microphone-dir install
# Disabled, due is unsupported code with gnu++11 or gnu++98
# mkdir -vm 0755 "$srcdir"/pkgbuild-cpp-dir
# make -C ${_pkgname}-${pkgver}/shell/linux platform=lincpp PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-cpp-dir install
@@ -90,18 +94,17 @@ build() {
# Enable Purupuru Pack (rumble support)
sed -i 's|SegaVMU[,]i[,]1|PurupuruPack,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
make -C ${_pkgname}-${pkgver}/shell/linux platform=x86 PREFIX=/usr DESTDIR="$srcdir"/purupuru-dir install
+ # Enable Microphone support
+ sed -i 's|PurupuruPack[,]i[,]1|Microphone,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
+ make -C ${_pkgname}-${pkgver}/shell/linux platform=x86 PREFIX=/usr DESTDIR="$srcdir"/microphone-dir install
elif [ $CARCH == armv7h ]; then
- make -C ${_pkgname}-${pkgver}/shell/linux platform=armv7h PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-dir install
- # mkdir -vm 0755 "$srcdir"/pkgbuild-{rpi2,beagle,pandora,odroid{c1,xu3,xu,x2,x,u2}}-dir
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=rpi2 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-rpi2-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=beagle PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-beagle-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=pandora PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-pandora-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidc1 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidc1-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidxu3 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidxu3-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidxu PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidxu-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidx2 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidx2-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidx PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidx-dir install
- # make -C ${_pkgname}-${pkgver}/shell/linux platform=odroidu2 PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-odroidu2-dir install
+ make -C ${_pkgname}-${pkgver}/shell/linux platform=armv7h PREFIX=/usr DESTDIR="$srcdir"/pkgbuild-dir install
+ # Enable Purupuru Pack (rumble support)
+ sed -i 's|SegaVMU[,]i[,]1|PurupuruPack,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
+ make -C ${_pkgname}-${pkgver}/shell/linux platform=armv7h PREFIX=/usr DESTDIR="$srcdir"/purupuru-dir install
+ # Enable Microphone support
+ sed -i 's|PurupuruPack[,]i[,]1|Microphone,i,1|' ${_pkgname}-${pkgver}/core/hw/maple/maple_cfg.cpp
+ make -C ${_pkgname}-${pkgver}/shell/linux platform=armv7h PREFIX=/usr DESTDIR="$srcdir"/microphone-dir install
fi
}
diff --git a/pcr/reicast-git/error-mem.txt b/pcr/reicast-git/error-mem.txt
deleted file mode 100644
index 341d63e54..000000000
--- a/pcr/reicast-git/error-mem.txt
+++ /dev/null
@@ -1,168 +0,0 @@
-in fault_handler -> ../../core/linux/common.cpp : 99
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
-core/linux/common.cpp
--------------------------------------------------------------------------------------------------
-#if !defined(TARGET_NO_EXCEPTIONS)
-bool ngen_Rewrite(unat& addr,unat retadr,unat acc);
-u32* ngen_readm_fail_v2(u32* ptr,u32* regs,u32 saddr);
-bool VramLockedWrite(u8* address);
-bool BM_LockedWrite(u8* address);
-
-#if HOST_OS == OS_DARWIN
-void sigill_handler(int sn, siginfo_t * si, void *segfault_ctx) {
-
- rei_host_context_t ctx;
-
- context_from_segfault(&ctx, segfault_ctx);
-
- unat pc = (unat)ctx.pc;
- bool dyna_cde = (pc>(unat)CodeCache) && (pc<(unat)(CodeCache + CODE_SIZE));
-
- printf("SIGILL @ %08X, fault_handler+0x%08X ... %08X -> was not in vram, %d\n", pc, pc - (unat)sigill_handler, (unat)si->si_addr, dyna_cde);
-
- printf("Entering infiniloop");
-
- for (;;);
- printf("PC is used here %08X\n", pc);
-}
-#endif
-
-#if !defined(TARGET_NO_EXCEPTIONS)
-void fault_handler (int sn, siginfo_t * si, void *segfault_ctx)
-{
- rei_host_context_t ctx;
-
- context_from_segfault(&ctx, segfault_ctx);
-
- bool dyna_cde = ((unat)ctx.pc>(unat)CodeCache) && ((unat)ctx.pc<(unat)(CodeCache + CODE_SIZE));
-
- //ucontext_t* ctx=(ucontext_t*)ctxr;
- //printf("mprot hit @ ptr 0x%08X @@ code: %08X, %d\n",si->si_addr,ctx->uc_mcontext.arm_pc,dyna_cde);
-
-
- if (VramLockedWrite((u8*)si->si_addr) || BM_LockedWrite((u8*)si->si_addr))
- return;
- #if FEAT_SHREC == DYNAREC_JIT
- #if HOST_CPU==CPU_ARM
- else if (dyna_cde)
- {
- ctx.pc = (u32)ngen_readm_fail_v2((u32*)ctx.pc, ctx.r, (unat)si->si_addr);
-
- context_to_segfault(&ctx, segfault_ctx);
- }
- #elif HOST_CPU==CPU_X86
- else if (ngen_Rewrite((unat&)ctx.pc, *(unat*)ctx.esp, ctx.eax))
- {
- //remove the call from call stack
- ctx.esp += 4;
- //restore the addr from eax to ecx so it's valid again
- ctx.ecx = ctx.eax;
-
- context_to_segfault(&ctx, segfault_ctx);
- }
- #elif HOST_CPU == CPU_X64
- //x64 has no rewrite support
- #else
- #error JIT: Not supported arch
- #endif
- #endif
- else
- {
- printf("SIGSEGV @ %p (fault_handler+0x%p) ... %p -> was not in vram\n", ctx.pc, ctx.pc - (unat)fault_handler, si->si_addr);
- die("segfault");
- signal(SIGSEGV, SIG_DFL);
- }
-}
-#endif
--------------------------------------------------------------------------------------------------
-Error on : VramLockedWrite (video-ram - 8MB) || BM_LockedWrite (motherboard-ram - 16MB)
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
-core/hw/mem/_vmem.cpp
--------------------------------------------------------------------------------------------------
-bool BM_LockedWrite(u8* address)
-{
- if (!_nvmem_enabled())
- return false;
-
-#if FEAT_SHREC != DYNAREC_NONE
- u32 addr=address-(u8*)p_sh4rcb->fpcb;
-
- address=(u8*)p_sh4rcb->fpcb+ (addr&~PAGE_MASK);
-
- if (addr<sizeof(p_sh4rcb->fpcb))
- {
- //printf("Allocated %d PAGES [%08X]\n",++pagecnt,addr);
-
-#if HOST_OS==OS_WINDOWS
- verify(VirtualAlloc(address,PAGE_SIZE,MEM_COMMIT,PAGE_READWRITE));
-#else
- mprotect (address, PAGE_SIZE, PROT_READ | PROT_WRITE);
-#endif
-
- bm_vmem_pagefill((void**)address,PAGE_SIZE);
-
- return true;
- }
-#else
-die("BM_LockedWrite and NO REC");
-#endif
- return false;
-}
--------------------------------------------------------------------------------------------------
-core/rend/TexCache.cpp
--------------------------------------------------------------------------------------------------
-bool VramLockedWrite(u8* address)
-{
- size_t offset=address-vram.data;
-
- if (offset<VRAM_SIZE)
- {
-
- size_t addr_hash = offset/PAGE_SIZE;
- vector<vram_block*>* list=&VramLocks[addr_hash];
-
- {
- vramlist_lock.Lock();
-
- for (size_t i=0;i<list->size();i++)
- {
- if ((*list)[i])
- {
- libPvr_LockedBlockWrite((*list)[i],(u32)offset);
-
- if ((*list)[i])
- {
- msgboxf("Error : pvr is supposed to remove lock",MBX_OK);
- dbgbreak;
- }
-
- }
- }
- list->clear();
-
- vram.UnLockRegion((u32)offset&(~(PAGE_SIZE-1)),PAGE_SIZE);
-
- //TODO: Fix this for 32M wrap as well
- if (_nvmem_enabled() && VRAM_SIZE == 0x800000) {
- vram.UnLockRegion((u32)offset&(~(PAGE_SIZE-1)) + VRAM_SIZE,PAGE_SIZE);
- }
-
- vramlist_lock.Unlock();
- }
-
- return true;
- }
- else
- return false;
-}
--------------------------------------------------------------------------------------------------
-core/rend/TexCache.h
--------------------------------------------------------------------------------------------------
-void vram_LockedWrite(u32 offset64);
--------------------------------------------------------------------------------------------------
-core/stdclass.cpp
--------------------------------------------------------------------------------------------------
-bool VramLockedWrite(u8* address);
-bool RamLockedWrite(u8* address,u32* sp);
diff --git a/pcr/reicast-git/loungekatt_rm-nonfree-fp.patch b/pcr/reicast-git/loungekatt_rm-nonfree-fp.patch
deleted file mode 100644
index 9d0b588d9..000000000
--- a/pcr/reicast-git/loungekatt_rm-nonfree-fp.patch
+++ /dev/null
@@ -1,1451 +0,0 @@
-diff -Nur a/core/deps/libpng/fp.h b/core/deps/libpng/fp.h
---- a/core/deps/libpng/fp.h 2015-10-06 21:43:53.002336114 -0300
-+++ b/core/deps/libpng/fp.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,62 +0,0 @@
--/*
--* Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
--*
--* @APPLE_LICENSE_HEADER_START@
--*
--* The contents of this file constitute Original Code as defined in and
--* are subject to the Apple Public Source License Version 1.1 (the
--* "License"). You may not use this file except in compliance with the
--* License. Please obtain a copy of the License at
--* http://www.apple.com/publicsource and read it before using this file.
--*
--* This Original Code and all software distributed under the License are
--* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
--* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
--* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
--* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
--* License for the specific language governing rights and limitations
--* under the License.
--*
--* @APPLE_LICENSE_HEADER_END@
--*/
--/* Copyright (c) 1992, NeXT Computer, Inc. All rights reserved.
--*
--* File: libc/m98k/gen/fp.h
--* Author: Derek B Clegg, NeXT Computer, Inc.
--*
--* HISTORY
--* 11-Nov-92 Derek B Clegg (dclegg@next.com)
--* Created.
--*
--* Common definitions for floating-point numbers.
--*/
--
--/* The following definitions for for double precision IEEE format numbers. */
--
--#define EXPONENT_BIAS 1023
--
--#define SIGN_BITS 1
--#define EXPONENT_BITS 11
--#define FRACTION_BITS 52
--#define HI_FRACTION_BITS 20
--#define LO_FRACTION_BITS 32
--
--struct double_format {
--unsigned sign: SIGN_BITS;
--unsigned exponent: EXPONENT_BITS;
--unsigned hi_fraction: HI_FRACTION_BITS;
--unsigned lo_fraction: LO_FRACTION_BITS;
--};
--
--union dbl {
--struct double_format s;
--unsigned int u[2];
--double value;
--};
--
--#define PlusInfinity (1.0/0.0)
--#define MinusInfinity (-1.0/0.0)
--
--#define not_a_number(x) ((x) != (x))
--#define positive_infinity(x) ((x) == PlusInfinity)
--#define negative_infinity(x) ((x) == MinusInfinity)
-Binary files a/shell/apple/emulator-ios/emulator/assets/Icon@2x.png and b/shell/apple/emulator-ios/emulator/assets/Icon@2x.png differ
-Binary files a/shell/apple/emulator-ios/emulator/assets/Icon-72@2x.png and b/shell/apple/emulator-ios/emulator/assets/Icon-72@2x.png differ
-Binary files a/shell/apple/emulator-ios/emulator/assets/Icon-72.png and b/shell/apple/emulator-ios/emulator/assets/Icon-72.png differ
-Binary files a/shell/apple/emulator-ios/emulator/assets/Icon.png and b/shell/apple/emulator-ios/emulator/assets/Icon.png differ
-diff -Nur a/shell/apple/emulator-ios/emulator/DiskViewCell.h b/shell/apple/emulator-ios/emulator/DiskViewCell.h
---- a/shell/apple/emulator-ios/emulator/DiskViewCell.h 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/emulator/DiskViewCell.h 2015-10-06 22:10:31.206968127 -0300
-@@ -0,0 +1,8 @@
-+#import <UIKit/UIKit.h>
-+
-+@interface DiskViewCell : UITableViewCell
-+
-+@property (nonatomic, retain) IBOutlet UIImageView *diskImage;
-+@property (nonatomic, retain) IBOutlet UILabel *nameLabel;
-+
-+@end
-diff -Nur a/shell/apple/emulator-ios/emulator/DiskViewCell.m b/shell/apple/emulator-ios/emulator/DiskViewCell.m
---- a/shell/apple/emulator-ios/emulator/DiskViewCell.m 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/emulator/DiskViewCell.m 2015-10-06 22:10:31.206968127 -0300
-@@ -0,0 +1,26 @@
-+#import "DiskViewCell.h"
-+
-+@implementation DiskViewCell
-+
-+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
-+{
-+ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
-+ if (self) {
-+ // Initialization code
-+ }
-+ return self;
-+}
-+
-+- (void)awakeFromNib
-+{
-+ // Initialization code
-+}
-+
-+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
-+{
-+ [super setSelected:selected animated:animated];
-+
-+ // Configure the view for the selected state
-+}
-+
-+@end
-diff -Nur a/shell/apple/emulator-ios/emulator/EmulatorViewController.h b/shell/apple/emulator-ios/emulator/EmulatorViewController.h
---- a/shell/apple/emulator-ios/emulator/EmulatorViewController.h 2015-10-06 21:43:53.121336967 -0300
-+++ b/shell/apple/emulator-ios/emulator/EmulatorViewController.h 2015-10-06 22:10:31.206968127 -0300
-@@ -10,10 +10,18 @@
- #import <GLKit/GLKit.h>
- #import <GameController/GameController.h>
- #import "iCadeReaderView.h"
-+#import "PadViewController.h"
-+#import "EmulatorView.h"
-
--@interface ViewController : GLKViewController <iCadeEventDelegate>
-+@interface EmulatorViewController : GLKViewController <iCadeEventDelegate>
-
-+@property NSString* diskImage;
- @property (nonatomic) iCadeReaderView* iCadeReader;
- @property (nonatomic) GCController *gController __attribute__((weak_import));
-+@property (nonatomic, strong) id connectObserver;
-+@property (nonatomic, strong) id disconnectObserver;
-+@property (nonatomic, strong) EmulatorView *emuView;
-+
-+@property (nonatomic, strong) PadViewController *controllerView;
-
- @end
-diff -Nur a/shell/apple/emulator-ios/emulator/EmulatorViewController.mm b/shell/apple/emulator-ios/emulator/EmulatorViewController.mm
---- a/shell/apple/emulator-ios/emulator/EmulatorViewController.mm 2015-10-06 21:43:53.121336967 -0300
-+++ b/shell/apple/emulator-ios/emulator/EmulatorViewController.mm 2015-10-06 22:10:31.206968127 -0300
-@@ -16,7 +16,7 @@
- #include "hw/maple/maple_devs.h"
- #include "hw/maple/maple_if.h"
-
--@interface ViewController () {
-+@interface EmulatorViewController () {
- }
-
- @property (strong, nonatomic) EAGLContext *context;
-@@ -35,25 +35,34 @@
- extern "C" int reicast_main(int argc, char* argv[]);
-
-
--@implementation ViewController
-+@implementation EmulatorViewController
-
- -(void)emuThread
- {
- install_prof_handler(1);
--
-
-- //This looks like the right place, rite?
-- char text[2]="";
--
-- char* prms[2];
-- prms[0]=text;
--
-- reicast_main(1, prms);
-+ char *Args[3];
-+ const char *P;
-+
-+ P = (const char *)[self.diskImage UTF8String];
-+ Args[0] = "dc";
-+ Args[1] = "-config";
-+ Args[2] = P&&P[0]? (char *)malloc(strlen(P)+32):0;
-+
-+ if(Args[2])
-+ {
-+ strcpy(Args[2],"config:image=");
-+ strcat(Args[2],P);
-+ }
-+
-+ reicast_main(Args[2]? 3:1,Args);
- }
-
- - (void)viewDidLoad
- {
- [super viewDidLoad];
-+
-+ self.controllerView = [[PadViewController alloc] initWithNibName:@"PadViewController" bundle:nil];
-
- self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
-
-@@ -61,15 +70,33 @@
- NSLog(@"Failed to create ES context");
- }
-
-- GLKView *view = (GLKView *)self.view;
-- view.context = self.context;
-- view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
-+ self.emuView = (EmulatorView *)self.view;
-+ self.emuView.context = self.context;
-+ self.emuView.drawableDepthFormat = GLKViewDrawableDepthFormat24;
-
-- self.iCadeReader = [[iCadeReaderView alloc] init];
-- [self.view addSubview:self.iCadeReader];
-- self.iCadeReader.delegate = self;
-- self.iCadeReader.active = YES;
-+ [self.controllerView setControlOutput:self.emuView];
-
-+ self.connectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
-+ if ([[GCController controllers] count] == 1) {
-+ [self toggleHardwareController:YES];
-+ }
-+ }];
-+ self.disconnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidDisconnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
-+ if (![[GCController controllers] count]) {
-+ [self toggleHardwareController:NO];
-+ }
-+ }];
-+
-+ if ([[GCController controllers] count]) {
-+ [self toggleHardwareController:YES];
-+ }
-+ [self.controllerView showController:self.view];
-+
-+ self.iCadeReader = [[iCadeReaderView alloc] init];
-+ [self.view addSubview:self.iCadeReader];
-+ self.iCadeReader.delegate = self;
-+ self.iCadeReader.active = YES;
-+
- [self setupGL];
-
- if (!gles_init())
-@@ -82,7 +109,7 @@
- }
-
- - (void)dealloc
--{
-+{
- [self tearDownGL];
-
- if ([EAGLContext currentContext] == self.context) {
-@@ -127,6 +154,126 @@
-
- }
-
-+- (void)toggleHardwareController:(BOOL)useHardware {
-+ if (useHardware) {
-+// [self.controllerView hideController];
-+ self.gController = [GCController controllers][0];
-+ if (self.gController.gamepad) {
-+ [self.gController.gamepad.buttonA setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_a];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_a];
-+ }
-+ }];
-+ [self.gController.gamepad.buttonB setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_b];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_b];
-+ }
-+ }];
-+ [self.gController.gamepad.buttonX setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_x];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_x];
-+ }
-+ }];
-+ [self.gController.gamepad.buttonY setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_y];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_y];
-+ }
-+ }];
-+ [self.gController.gamepad.dpad setValueChangedHandler:^(GCControllerDirectionPad *dpad, float xValue, float yValue){
-+ if (xValue >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_r];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_r];
-+ }
-+ if (xValue <= -0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_l];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_l];
-+ }
-+ if (yValue >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_u];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_u];
-+ }
-+ if (yValue <= -0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_d];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_d];
-+ }
-+ }];
-+ //Add controller pause handler here
-+ }
-+ if (self.gController.extendedGamepad) {
-+ [self.gController.extendedGamepad.buttonA setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_a];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_a];
-+ }
-+ }];
-+ [self.gController.extendedGamepad.buttonB setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_b];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_b];
-+ }
-+ }];
-+ [self.gController.extendedGamepad.buttonX setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_x];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_x];
-+ }
-+ }];
-+ [self.gController.extendedGamepad.buttonY setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
-+ if (pressed && value >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_abxy_y];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_abxy_y];
-+ }
-+ }];
-+ [self.gController.extendedGamepad.dpad setValueChangedHandler:^(GCControllerDirectionPad *dpad, float xValue, float yValue){
-+ if (xValue >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_r];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_r];
-+ }
-+ if (xValue <= -0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_l];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_l];
-+ }
-+ if (yValue >= 0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_u];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_u];
-+ }
-+ if (yValue <= -0.1) {
-+ [self.emuView handleKeyDown:self.controllerView.img_dpad_d];
-+ } else {
-+ [self.emuView handleKeyUp:self.controllerView.img_dpad_d];
-+ }
-+ }];
-+ [self.gController.extendedGamepad.leftThumbstick.xAxis setValueChangedHandler:^(GCControllerAxisInput *axis, float value){
-+
-+ }];
-+ [self.gController.extendedGamepad.leftThumbstick.yAxis setValueChangedHandler:^(GCControllerAxisInput *axis, float value){
-+
-+ }];
-+ }
-+ } else {
-+ self.gController = nil;
-+// [self.controllerView showController:self.view];
-+ }
-+}
-
- - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
- {
-diff -Nur a/shell/apple/emulator-ios/emulator/EmulatorView.h b/shell/apple/emulator-ios/emulator/EmulatorView.h
---- a/shell/apple/emulator-ios/emulator/EmulatorView.h 2015-10-06 21:43:53.121336967 -0300
-+++ b/shell/apple/emulator-ios/emulator/EmulatorView.h 2015-10-06 22:10:31.206968127 -0300
-@@ -10,4 +10,9 @@
-
- @interface EmulatorView : GLKView
-
-+- (void)handleKeyDown:(UIButton*)button;
-+- (void)handleKeyUp:(UIButton*)button;
-+
-+@property (nonatomic, strong) UIViewController *controllerView;
-+
- @end
-diff -Nur a/shell/apple/emulator-ios/emulator/EmulatorView.mm b/shell/apple/emulator-ios/emulator/EmulatorView.mm
---- a/shell/apple/emulator-ios/emulator/EmulatorView.mm 2015-10-06 21:43:53.121336967 -0300
-+++ b/shell/apple/emulator-ios/emulator/EmulatorView.mm 2015-10-06 22:10:31.206968127 -0300
-@@ -7,6 +7,7 @@
- //
-
- #import "EmulatorView.h"
-+#import "PadViewController.h"
-
- #include "types.h"
-
-@@ -15,11 +16,27 @@
- extern s8 joyx[4],joyy[4];
- extern u8 rt[4],lt[4];
-
--#define key_CONT_A (1 << 2)
--#define key_CONT_START (1 << 3)
--#define key_CONT_DPAD_LEFT (1 << 6)
--
--int dpad_or_btn = 0;
-+#define DC_BTN_C (1)
-+#define DC_BTN_B (1<<1)
-+#define DC_BTN_A (1<<2)
-+#define DC_BTN_START (1<<3)
-+#define DC_DPAD_UP (1<<4)
-+#define DC_DPAD_DOWN (1<<5)
-+#define DC_DPAD_LEFT (1<<6)
-+#define DC_DPAD_RIGHT (1<<7)
-+#define DC_BTN_Z (1<<8)
-+#define DC_BTN_Y (1<<9)
-+#define DC_BTN_X (1<<10)
-+#define DC_BTN_D (1<<11)
-+#define DC_DPAD2_UP (1<<12)
-+#define DC_DPAD2_DOWN (1<<13)
-+#define DC_DPAD2_LEFT (1<<14)
-+#define DC_DPAD2_RIGHT (1<<15)
-+
-+#define DC_AXIS_LT (0X10000)
-+#define DC_AXIS_RT (0X10001)
-+#define DC_AXIS_X (0X20000)
-+#define DC_AXIS_Y (0X20001)
-
- @implementation EmulatorView
-
-@@ -31,23 +48,85 @@
- }
- */
-
---(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
--
-- if (dpad_or_btn &1)
-- kcode[0] &= ~(key_CONT_START|key_CONT_A);
-- else
-- kcode[0] &= ~(key_CONT_DPAD_LEFT);
-+- (void)setControlInput:(PadViewController *)input
-+{
-+ self.controllerView = input;
-+}
-+
-+- (void)handleKeyDown:(UIButton*)button
-+{
-+ PadViewController * controller = (PadViewController *)self.controllerView;
-+ if (button == controller.img_dpad_l) {
-+ kcode[0] &= ~(DC_DPAD_LEFT);
-+ }
-+ if (button == controller.img_dpad_r) {
-+ kcode[0] &= ~(DC_DPAD_RIGHT);
-+ }
-+ if (button == controller.img_dpad_u) {
-+ kcode[0] &= ~(DC_DPAD_UP);
-+ }
-+ if (button == controller.img_dpad_d) {
-+ kcode[0] &= ~(DC_DPAD_DOWN);
-+ }
-+ if (button == controller.img_abxy_a) {
-+ kcode[0] &= ~(DC_BTN_A);
-+ }
-+ if (button == controller.img_abxy_b) {
-+ kcode[0] &= ~(DC_BTN_B);
-+ }
-+ if (button == controller.img_abxy_x) {
-+ kcode[0] &= ~(DC_BTN_X);
-+ }
-+ if (button == controller.img_abxy_y) {
-+ kcode[0] &= ~(DC_BTN_Y);
-+ }
-+ if (button == controller.img_lt) {
-+ kcode[0] &= ~(DC_AXIS_LT);
-+ }
-+ if (button == controller.img_rt) {
-+ kcode[0] &= ~(DC_AXIS_RT);
-+ }
-+ if (button == controller.img_start) {
-+ kcode[0] &= ~(DC_BTN_START);
-+ }
- }
-
---(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
--
-- // [event allTouches];
--
-- if (dpad_or_btn &1)
-- kcode[0] |= (key_CONT_START|key_CONT_A);
-- else
-- kcode[0] |= (key_CONT_DPAD_LEFT);
--
-- dpad_or_btn++;
-+- (void)handleKeyUp:(UIButton*)button
-+{
-+ PadViewController * controller = (PadViewController *)self.controllerView;
-+ if (button == controller.img_dpad_l) {
-+ kcode[0] |= ~(DC_DPAD_LEFT);
-+ }
-+ if (button == controller.img_dpad_r) {
-+ kcode[0] |= ~(DC_DPAD_RIGHT);
-+ }
-+ if (button == controller.img_dpad_u) {
-+ kcode[0] |= ~(DC_DPAD_UP);
-+ }
-+ if (button == controller.img_dpad_d) {
-+ kcode[0] |= ~(DC_DPAD_DOWN);
-+ }
-+ if (button == controller.img_abxy_a) {
-+ kcode[0] |= (DC_BTN_A);
-+ }
-+ if (button == controller.img_abxy_b) {
-+ kcode[0] |= (DC_BTN_B);
-+ }
-+ if (button == controller.img_abxy_x) {
-+ kcode[0] |= (DC_BTN_X);
-+ }
-+ if (button == controller.img_abxy_y) {
-+ kcode[0] |= (DC_BTN_Y);
-+ }
-+ if (button == controller.img_lt) {
-+ kcode[0] |= (DC_AXIS_LT);
-+ }
-+ if (button == controller.img_rt) {
-+ kcode[0] |= (DC_AXIS_RT);
-+ }
-+ if (button == controller.img_start) {
-+ kcode[0] |= (DC_BTN_START);
-+ }
- }
-+
- @end
-Binary files a/shell/apple/emulator-ios/emulator/Images/disk_unknown.png and b/shell/apple/emulator-ios/emulator/Images/disk_unknown.png differ
-diff -Nur a/shell/apple/emulator-ios/emulator/MainStoryboard.storyboard b/shell/apple/emulator-ios/emulator/MainStoryboard.storyboard
---- a/shell/apple/emulator-ios/emulator/MainStoryboard.storyboard 2015-10-06 21:43:53.123336981 -0300
-+++ b/shell/apple/emulator-ios/emulator/MainStoryboard.storyboard 2015-10-06 22:10:31.207968135 -0300
-@@ -1,32 +1,100 @@
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
--<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="WRM-pR-XCP">
-+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="mSg-lr-0DL">
- <dependencies>
-- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
-+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
- </dependencies>
- <scenes>
-- <!--View Controller-->
-+ <!--Root View Controller-->
-+ <scene sceneID="q8K-fk-uPf">
-+ <objects>
-+ <tableViewController id="ZcT-ex-GUK" customClass="PathsViewController" sceneMemberID="viewController">
-+ <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="LNG-KY-d6N">
-+ <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
-+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-+ <prototypes>
-+ <tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" rowHeight="80" id="mMa-C3-VYu" customClass="DiskViewCell">
-+ <rect key="frame" x="0.0" y="22" width="320" height="80"/>
-+ <autoresizingMask key="autoresizingMask"/>
-+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mMa-C3-VYu" id="snt-ku-Aaq">
-+ <rect key="frame" x="0.0" y="0.0" width="287" height="79.5"/>
-+ <autoresizingMask key="autoresizingMask"/>
-+ <subviews>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="disk_unknown.png" id="6Qh-mW-Z9j">
-+ <rect key="frame" x="8" y="4" width="72" height="72"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Epl-iu-f5s">
-+ <rect key="frame" x="88" y="24" width="199" height="32"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
-+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-+ <nil key="highlightedColor"/>
-+ </label>
-+ </subviews>
-+ </tableViewCellContentView>
-+ <connections>
-+ <outlet property="diskImage" destination="6Qh-mW-Z9j" id="b3r-L8-LS3"/>
-+ <outlet property="nameLabel" destination="Epl-iu-f5s" id="i0S-JF-deT"/>
-+ </connections>
-+ </tableViewCell>
-+ </prototypes>
-+ <connections>
-+ <outlet property="dataSource" destination="ZcT-ex-GUK" id="TGz-Qe-tBz"/>
-+ <outlet property="delegate" destination="ZcT-ex-GUK" id="LAp-Yu-Mwb"/>
-+ </connections>
-+ </tableView>
-+ <navigationItem key="navigationItem" title="Root View Controller" id="5jN-Uj-bBb"/>
-+ <simulatedOrientationMetrics key="simulatedOrientationMetrics"/>
-+ <connections>
-+ <segue destination="WRM-pR-XCP" kind="modal" identifier="emulatorView" id="b10-sb-xpr"/>
-+ </connections>
-+ </tableViewController>
-+ <placeholder placeholderIdentifier="IBFirstResponder" id="mdD-bX-Gqc" userLabel="First Responder" sceneMemberID="firstResponder"/>
-+ </objects>
-+ <point key="canvasLocation" x="-88" y="-692"/>
-+ </scene>
-+ <!--Navigation Controller-->
-+ <scene sceneID="VLz-J1-2XD">
-+ <objects>
-+ <navigationController navigationBarHidden="YES" id="mSg-lr-0DL" sceneMemberID="viewController">
-+ <navigationBar key="navigationBar" contentMode="scaleToFill" id="vT9-en-Ct5">
-+ <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
-+ <autoresizingMask key="autoresizingMask"/>
-+ </navigationBar>
-+ <connections>
-+ <segue destination="ZcT-ex-GUK" kind="relationship" relationship="rootViewController" id="fhp-zt-Xhh"/>
-+ </connections>
-+ </navigationController>
-+ <placeholder placeholderIdentifier="IBFirstResponder" id="i7I-Ys-F6b" userLabel="First Responder" sceneMemberID="firstResponder"/>
-+ </objects>
-+ <point key="canvasLocation" x="-692" y="-692"/>
-+ </scene>
-+ <!--Emulator View Controller-->
- <scene sceneID="h6I-2s-MCy">
- <objects>
-- <viewController storyboardIdentifier="emulatorView" wantsFullScreenLayout="YES" id="WRM-pR-XCP" customClass="ViewController" sceneMemberID="viewController">
-- <view key="view" contentMode="scaleToFill" id="JQE-db-ZiC" customClass="EmulatorView">
-+ <viewController storyboardIdentifier="emulatorView" wantsFullScreenLayout="YES" id="WRM-pR-XCP" customClass="EmulatorViewController" sceneMemberID="viewController">
-+ <view key="view" multipleTouchEnabled="YES" contentMode="scaleToFill" id="JQE-db-ZiC" customClass="EmulatorView">
- <rect key="frame" x="0.0" y="0.0" width="568" height="320"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-- <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
-+ <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-+ <accessibility key="accessibilityConfiguration">
-+ <accessibilityTraits key="traits" none="YES" notEnabled="YES"/>
-+ </accessibility>
- <gestureRecognizers/>
- </view>
-+ <navigationItem key="navigationItem" id="FmO-Yo-nVN"/>
- <nil key="simulatedStatusBarMetrics"/>
- <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="ioY-OH-Jev" userLabel="First Responder" sceneMemberID="firstResponder"/>
-- <pongPressGestureRecognizer delaysTouchesEnded="NO" allowableMovement="10" minimumPressDuration="0.5" id="J8w-PT-eHl">
-- <connections>
-- <action selector="doSaveState:" destination="WRM-pR-XCP" id="6ND-tU-CZE"/>
-- </connections>
-- </pongPressGestureRecognizer>
- </objects>
- <point key="canvasLocation" x="486" y="-692"/>
- </scene>
- </scenes>
-+ <resources>
-+ <image name="disk_unknown.png" width="95" height="95"/>
-+ </resources>
- <simulatedMetricsContainer key="defaultSimulatedMetrics">
- <simulatedStatusBarMetrics key="statusBar"/>
- <simulatedOrientationMetrics key="orientation"/>
-diff -Nur a/shell/apple/emulator-ios/emulator/PadViewController.h b/shell/apple/emulator-ios/emulator/PadViewController.h
---- a/shell/apple/emulator-ios/emulator/PadViewController.h 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/emulator/PadViewController.h 2015-10-06 22:10:31.207968135 -0300
-@@ -0,0 +1,34 @@
-+//
-+// PadViewController.h
-+// reicast-ios
-+//
-+// Created by Lounge Katt on 8/25/15.
-+// Copyright (c) 2015 reicast. All rights reserved.
-+//
-+
-+#import <UIKit/UIKit.h>
-+#import "EmulatorView.h"
-+
-+@interface PadViewController : UIViewController
-+
-+@property (nonatomic, strong) IBOutlet UIButton* img_dpad_l;
-+@property (nonatomic, strong) IBOutlet UIButton* img_dpad_r;
-+@property (nonatomic, strong) IBOutlet UIButton* img_dpad_u;
-+@property (nonatomic, strong) IBOutlet UIButton* img_dpad_d;
-+@property (nonatomic, strong) IBOutlet UIButton* img_abxy_a;
-+@property (nonatomic, strong) IBOutlet UIButton* img_abxy_b;
-+@property (nonatomic, strong) IBOutlet UIButton* img_abxy_x;
-+@property (nonatomic, strong) IBOutlet UIButton* img_abxy_y;
-+@property (nonatomic, strong) IBOutlet UIButton* img_vjoy;
-+@property (nonatomic, strong) IBOutlet UIButton* img_lt;
-+@property (nonatomic, strong) IBOutlet UIButton* img_rt;
-+@property (nonatomic, strong) IBOutlet UIButton* img_start;
-+
-+@property (nonatomic, strong) EmulatorView *handler;
-+
-+- (void) showController:(UIView *)parentView;
-+- (void) hideController;
-+- (BOOL) isControllerVisible;
-+- (void) setControlOutput:(EmulatorView *)output;
-+
-+@end
-diff -Nur a/shell/apple/emulator-ios/emulator/PadViewController.m b/shell/apple/emulator-ios/emulator/PadViewController.m
---- a/shell/apple/emulator-ios/emulator/PadViewController.m 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/emulator/PadViewController.m 2015-10-06 22:10:31.207968135 -0300
-@@ -0,0 +1,78 @@
-+//
-+// PadViewController.m
-+// reicast-ios
-+//
-+// Created by Lounge Katt on 8/25/15.
-+// Copyright (c) 2015 reicast. All rights reserved.
-+//
-+
-+#import "PadViewController.h"
-+#import "EmulatorView.h"
-+
-+@interface PadViewController ()
-+
-+@end
-+
-+@implementation PadViewController
-+
-+- (void)viewDidLoad {
-+ [super viewDidLoad];
-+}
-+
-+- (void)didReceiveMemoryWarning {
-+ [super didReceiveMemoryWarning];
-+ // Dispose of any resources that can be recreated.
-+}
-+
-+- (void)showController:(UIView *)parentView
-+{
-+ [parentView addSubview:self.view];
-+}
-+
-+- (void)hideController
-+{
-+ [self.view removeFromSuperview];
-+}
-+
-+- (BOOL)isControllerVisible {
-+ if (self.view.window != nil) {
-+ return YES;
-+ }
-+ return NO;
-+}
-+
-+- (void)setControlOutput:(EmulatorView *)output
-+{
-+ self.handler = output;
-+}
-+
-+- (IBAction)keycodeDown:(id)sender
-+{
-+ [self.handler handleKeyDown:(UIButton*)sender];
-+}
-+
-+- (IBAction)keycodeUp:(id)sender
-+{
-+ [self.handler handleKeyUp:(UIButton*)sender];
-+}
-+
-+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
-+{
-+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
-+ if (self) {
-+ // Custom initialization
-+ }
-+ return self;
-+}
-+
-+/*
-+#pragma mark - Navigation
-+
-+// In a storyboard-based application, you will often want to do a little preparation before navigation
-+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-+ // Get the new view controller using [segue destinationViewController].
-+ // Pass the selected object to the new view controller.
-+}
-+*/
-+
-+@end
-diff -Nur a/shell/apple/emulator-ios/emulator/PadViewController.xib b/shell/apple/emulator-ios/emulator/PadViewController.xib
---- a/shell/apple/emulator-ios/emulator/PadViewController.xib 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/emulator/PadViewController.xib 2015-10-06 22:10:31.207968135 -0300
-@@ -0,0 +1,197 @@
-+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
-+ <dependencies>
-+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
-+ </dependencies>
-+ <objects>
-+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="PadViewController">
-+ <connections>
-+ <outlet property="img_abxy_a" destination="iKO-3z-Ias" id="ENi-No-2tP"/>
-+ <outlet property="img_abxy_b" destination="7LB-OY-vh3" id="pGH-6d-IgP"/>
-+ <outlet property="img_abxy_x" destination="iwO-7q-c8H" id="ZhP-Zp-Qnj"/>
-+ <outlet property="img_abxy_y" destination="hGZ-v7-VA5" id="5qv-nJ-V1w"/>
-+ <outlet property="img_dpad_d" destination="s7g-nq-lRU" id="9MP-1k-eUW"/>
-+ <outlet property="img_dpad_l" destination="rp6-Nd-1qa" id="LNo-9e-3og"/>
-+ <outlet property="img_dpad_r" destination="CVH-hw-R8F" id="vbf-4S-SBb"/>
-+ <outlet property="img_dpad_u" destination="WMD-Fv-ibu" id="1kE-zb-8gR"/>
-+ <outlet property="img_lt" destination="8Gl-Iv-u8L" id="4R8-pf-PYz"/>
-+ <outlet property="img_rt" destination="V8J-vG-dlF" id="Bn6-Zm-Ojo"/>
-+ <outlet property="img_start" destination="VtI-tC-PSX" id="o3u-Cb-G2g"/>
-+ <outlet property="view" destination="3M7-1s-N5r" id="Tac-YU-UYE"/>
-+ </connections>
-+ </placeholder>
-+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-+ <view multipleTouchEnabled="YES" contentMode="scaleToFill" id="3M7-1s-N5r">
-+ <rect key="frame" x="0.0" y="0.0" width="568" height="320"/>
-+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-+ <subviews>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LTrigger.png" id="H57-MD-elm">
-+ <rect key="frame" x="0.0" y="0.0" width="80" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="8Gl-Iv-u8L" userLabel="LT-Button">
-+ <rect key="frame" x="0.0" y="0.0" width="80" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="34L-sO-g81"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="iDv-U3-6OX"/>
-+ </connections>
-+ </button>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="RTrigger.png" id="Cjn-zx-eSs">
-+ <rect key="frame" x="488" y="0.0" width="80" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="V8J-vG-dlF" userLabel="RT-Button">
-+ <rect key="frame" x="488" y="0.0" width="80" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="vPf-qF-m13"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="hQh-8f-5jG"/>
-+ </connections>
-+ </button>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="JoystickButton.png" id="ivh-8r-bw3" userLabel="JoystickThumbpad.png">
-+ <rect key="frame" x="20" y="206" width="100" height="100"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="JoystickBackground.png" id="OMP-L6-n0A">
-+ <rect key="frame" x="6" y="192" width="128" height="128"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="DPad.png" id="FLe-Gr-hny">
-+ <rect key="frame" x="0.0" y="44" width="140" height="140"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="rp6-Nd-1qa" userLabel="L-Button">
-+ <rect key="frame" x="0.0" y="94" width="46" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="3Yw-AP-xVf"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="5gI-j0-ANf"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="CVH-hw-R8F" userLabel="R-Button">
-+ <rect key="frame" x="94" y="94" width="46" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="2Dv-zb-f8V"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="woi-3Y-IfD"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WMD-Fv-ibu" userLabel="U-Button">
-+ <rect key="frame" x="50" y="44" width="40" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="kT6-yy-ZtY"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="R0R-dl-GAG"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="s7g-nq-lRU" userLabel="D-Button">
-+ <rect key="frame" x="50" y="144" width="40" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="Wck-mk-4Py"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="Qox-hz-p3A"/>
-+ </connections>
-+ </button>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ABXYPad.png" id="xbP-E4-fCE">
-+ <rect key="frame" x="408" y="159" width="160" height="161"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iwO-7q-c8H" userLabel="X-Button">
-+ <rect key="frame" x="408" y="210" width="60" height="60"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="IBH-TK-vfV"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="dhr-NT-lcF"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="7LB-OY-vh3" userLabel="B-Button">
-+ <rect key="frame" x="508" y="210" width="60" height="60"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="dhg-58-L8C"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="zqg-KK-Wxb"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="hGZ-v7-VA5" userLabel="Y-Button">
-+ <rect key="frame" x="458" y="159" width="60" height="60"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="tyb-H4-TqJ"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="oai-Xb-scl"/>
-+ </connections>
-+ </button>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iKO-3z-Ias" userLabel="A-Button">
-+ <rect key="frame" x="458" y="260" width="60" height="60"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="Ysa-m4-KnN"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="MTf-ND-WNy"/>
-+ </connections>
-+ </button>
-+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Start.png" id="9K0-cV-7zu">
-+ <rect key="frame" x="244" y="272" width="80" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ </imageView>
-+ <button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="VtI-tC-PSX" userLabel="S-Button">
-+ <rect key="frame" x="257" y="272" width="54" height="40"/>
-+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-+ <state key="normal">
-+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-+ </state>
-+ <connections>
-+ <action selector="keycodeDown:" destination="-1" eventType="touchDown" id="kwd-jB-5Wn"/>
-+ <action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="gHx-tA-QlF"/>
-+ </connections>
-+ </button>
-+ </subviews>
-+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
-+ <point key="canvasLocation" x="325" y="329"/>
-+ </view>
-+ </objects>
-+ <resources>
-+ <image name="ABXYPad.png" width="120" height="120"/>
-+ <image name="DPad.png" width="120" height="120"/>
-+ <image name="JoystickBackground.png" width="120" height="120"/>
-+ <image name="JoystickButton.png" width="56" height="56"/>
-+ <image name="LTrigger.png" width="67" height="44"/>
-+ <image name="RTrigger.png" width="67" height="44"/>
-+ <image name="Start.png" width="48" height="26"/>
-+ </resources>
-+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
-+ <simulatedStatusBarMetrics key="statusBar"/>
-+ <simulatedOrientationMetrics key="orientation"/>
-+ <simulatedScreenMetrics key="destination" type="retina4"/>
-+ </simulatedMetricsContainer>
-+</document>
-diff -Nur a/shell/apple/emulator-ios/emulator/PathsViewController.h b/shell/apple/emulator-ios/emulator/PathsViewController.h
---- a/shell/apple/emulator-ios/emulator/PathsViewController.h 2015-10-06 21:43:53.123336981 -0300
-+++ b/shell/apple/emulator-ios/emulator/PathsViewController.h 2015-10-06 22:10:31.207968135 -0300
-@@ -8,7 +8,9 @@
-
- #import <UIKit/UIKit.h>
-
--@interface PathsViewController : UITableViewController
-+@interface PathsViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
- @property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton;
-
-+@property (nonatomic, strong) NSMutableArray* diskImages;
-+
- @end
-diff -Nur a/shell/apple/emulator-ios/emulator/PathsViewController.m b/shell/apple/emulator-ios/emulator/PathsViewController.m
---- a/shell/apple/emulator-ios/emulator/PathsViewController.m 2015-10-06 21:43:53.123336981 -0300
-+++ b/shell/apple/emulator-ios/emulator/PathsViewController.m 2015-10-06 22:10:31.207968135 -0300
-@@ -7,7 +7,9 @@
- //
-
- #import "PathsViewController.h"
--#import "SWRevealViewController.h"
-+//#import "SWRevealViewController.h"
-+#import "EmulatorViewController.h"
-+#import "DiskViewCell.h"
-
- @interface PathsViewController ()
-
-@@ -24,22 +26,32 @@
- return self;
- }
-
-+- (NSURL *)documents
-+{
-+ return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
-+}
-+
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.title = @"Paths";
-
- // Set the side bar button action. When it's tapped, it'll show up the sidebar.
-- _sidebarButton.target = self.revealViewController;
-- _sidebarButton.action = @selector(revealToggle:);
--
-+// _sidebarButton.target = self.revealViewController;
-+// _sidebarButton.action = @selector(revealToggle:);
-+
- // Set the gesture
-- [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
-+// [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
- // Uncomment the following line to preserve selection between presentations.
- // self.clearsSelectionOnViewWillAppear = NO;
-
- // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem;
-+
-+ self.diskImages = [[NSMutableArray alloc] init];
-+ NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[self documents].path error:NULL];
-+ NSPredicate *diskPredicate = [NSPredicate predicateWithFormat:@"self ENDSWITH '.chd' || self ENDSWITH '.gdi' || self ENDSWITH '.cdi' || self ENDSWITH '.CHD' || self ENDSWITH '.GDI' || self ENDSWITH '.CDI'"];
-+ self.diskImages = [NSMutableArray arrayWithArray:[files filteredArrayUsingPredicate:diskPredicate]];
- }
-
- - (void)didReceiveMemoryWarning
-@@ -50,6 +62,52 @@
-
- #pragma mark - Table view data source
-
--// TODO: paths view controller logic
-+-(NSInteger)numberOfSectionsInTableView: (UITableView*)tableView
-+{
-+ return 1;
-+}
-+
-+-(NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger)section
-+{
-+ return [self.diskImages count];
-+}
-+
-+-(NSString*)tableView: (UITableView*)tableView titleForHeaderInSection: (NSInteger)section
-+{
-+ return @"";
-+}
-+
-+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-+ return 80;
-+ // Assign the specific cell height to prevent issues with custom size
-+}
-+
-+-(UITableViewCell*)tableView: (UITableView*)tableView cellForRowAtIndexPath: (NSIndexPath*)indexPath
-+{
-+ static NSString *CellIdentifier = @"Cell";
-+
-+ DiskViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
-+ NSString* imagePath = [self.diskImages objectAtIndex: indexPath.row];
-+
-+ cell.nameLabel.text = [[imagePath lastPathComponent] stringByDeletingPathExtension];
-+
-+ return cell;
-+}
-+
-+-(void)prepareForSegue: (UIStoryboardSegue*)segue sender: (id)sender
-+{
-+ if ([segue.identifier isEqualToString:@"emulatorView"]) {
-+ NSIndexPath* indexPath = self.tableView.indexPathForSelectedRow;
-+ NSString* filePath = [self.diskImages objectAtIndex: indexPath.row];
-+ NSString* diskPath = [[self documents].path stringByAppendingPathComponent: filePath];
-+ EmulatorViewController* emulatorView = segue.destinationViewController;
-+ emulatorView.diskImage = diskPath;
-+ }
-+}
-+
-+-(void)tableView: (UITableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath
-+{
-+ [self performSegueWithIdentifier: @"emulatorView" sender: self];
-+}
-
- @end
-diff -Nur a/shell/apple/emulator-ios/emulator/reicast-ios-Info.plist b/shell/apple/emulator-ios/emulator/reicast-ios-Info.plist
---- a/shell/apple/emulator-ios/emulator/reicast-ios-Info.plist 2015-10-06 21:43:53.124336988 -0300
-+++ b/shell/apple/emulator-ios/emulator/reicast-ios-Info.plist 2015-10-06 22:10:31.207968135 -0300
-@@ -8,13 +8,6 @@
- <string>Reicast</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
-- <key>CFBundleIconFiles</key>
-- <array>
-- <string>emulator/assets/Icon-72.png</string>
-- <string>emulator/assets/Icon-72@2x.png</string>
-- <string>emulator/assets/Icon.png</string>
-- <string>emulator/assets/Icon@2x.png</string>
-- </array>
- <key>CFBundleIdentifier</key>
- <string>com.reicast.$(PRODUCT_NAME:rfc1034identifier)</string>
- <key>CFBundleInfoDictionaryVersion</key>
-diff -Nur a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Contents.json b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Contents.json
---- a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Contents.json 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Contents.json 2015-10-06 22:10:31.209968149 -0300
-@@ -0,0 +1,60 @@
-+{
-+ "images" : [
-+ {
-+ "idiom" : "iphone",
-+ "size" : "29x29",
-+ "scale" : "2x"
-+ },
-+ {
-+ "idiom" : "iphone",
-+ "size" : "40x40",
-+ "scale" : "2x"
-+ },
-+ {
-+ "size" : "60x60",
-+ "idiom" : "iphone",
-+ "filename" : "Icon-60@2x.png",
-+ "scale" : "2x"
-+ },
-+ {
-+ "idiom" : "iphone",
-+ "size" : "60x60",
-+ "scale" : "3x"
-+ },
-+ {
-+ "idiom" : "ipad",
-+ "size" : "29x29",
-+ "scale" : "1x"
-+ },
-+ {
-+ "idiom" : "ipad",
-+ "size" : "29x29",
-+ "scale" : "2x"
-+ },
-+ {
-+ "idiom" : "ipad",
-+ "size" : "40x40",
-+ "scale" : "1x"
-+ },
-+ {
-+ "idiom" : "ipad",
-+ "size" : "40x40",
-+ "scale" : "2x"
-+ },
-+ {
-+ "idiom" : "ipad",
-+ "size" : "76x76",
-+ "scale" : "1x"
-+ },
-+ {
-+ "size" : "76x76",
-+ "idiom" : "ipad",
-+ "filename" : "Icon-76@2x.png",
-+ "scale" : "2x"
-+ }
-+ ],
-+ "info" : {
-+ "version" : 1,
-+ "author" : "xcode"
-+ }
-+}
-\ No newline at end of file
-Binary files a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png and b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png differ
-Binary files a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png and b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png differ
-diff -Nur a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/LaunchImage.launchimage/Contents.json b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/LaunchImage.launchimage/Contents.json
---- a/shell/apple/emulator-ios/reicast-ios/Images.xcassets/LaunchImage.launchimage/Contents.json 1969-12-31 21:00:00.000000000 -0300
-+++ b/shell/apple/emulator-ios/reicast-ios/Images.xcassets/LaunchImage.launchimage/Contents.json 2015-10-06 22:10:31.209968149 -0300
-@@ -0,0 +1,49 @@
-+{
-+ "images" : [
-+ {
-+ "orientation" : "portrait",
-+ "idiom" : "ipad",
-+ "minimum-system-version" : "7.0",
-+ "extent" : "full-screen",
-+ "scale" : "2x"
-+ },
-+ {
-+ "orientation" : "landscape",
-+ "idiom" : "ipad",
-+ "minimum-system-version" : "7.0",
-+ "extent" : "full-screen",
-+ "scale" : "1x"
-+ },
-+ {
-+ "orientation" : "landscape",
-+ "idiom" : "ipad",
-+ "minimum-system-version" : "7.0",
-+ "extent" : "full-screen",
-+ "scale" : "2x"
-+ },
-+ {
-+ "orientation" : "portrait",
-+ "idiom" : "iphone",
-+ "minimum-system-version" : "7.0",
-+ "scale" : "2x"
-+ },
-+ {
-+ "orientation" : "portrait",
-+ "idiom" : "iphone",
-+ "minimum-system-version" : "7.0",
-+ "subtype" : "retina4",
-+ "scale" : "2x"
-+ },
-+ {
-+ "orientation" : "portrait",
-+ "idiom" : "ipad",
-+ "minimum-system-version" : "7.0",
-+ "extent" : "full-screen",
-+ "scale" : "1x"
-+ }
-+ ],
-+ "info" : {
-+ "version" : 1,
-+ "author" : "xcode"
-+ }
-+}
-\ No newline at end of file
-diff -Nur a/shell/apple/emulator-ios/reicast-ios.xcodeproj/project.pbxproj b/shell/apple/emulator-ios/reicast-ios.xcodeproj/project.pbxproj
---- a/shell/apple/emulator-ios/reicast-ios.xcodeproj/project.pbxproj 2015-10-06 21:43:53.125336995 -0300
-+++ b/shell/apple/emulator-ios/reicast-ios.xcodeproj/project.pbxproj 2015-10-06 22:10:31.209968149 -0300
-@@ -50,6 +50,9 @@
- 877652C61B6157BD00437F10 /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 877652BF1B6157BD00437F10 /* audiostream.cpp */; };
- 877652C91B6157FC00437F10 /* ngen_arm.S in Sources */ = {isa = PBXBuildFile; fileRef = 877652C71B6157FC00437F10 /* ngen_arm.S */; };
- 877652CA1B6157FC00437F10 /* rec_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 877652C81B6157FC00437F10 /* rec_arm.cpp */; };
-+ 878B0CFC1B8BB5B400A8D1C5 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 878B0CFB1B8BB5B400A8D1C5 /* Images.xcassets */; };
-+ 878B0D001B8BFE6200A8D1C5 /* disk_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = 878B0CFF1B8BFE6200A8D1C5 /* disk_unknown.png */; };
-+ 8794D9C31B88F3D600B1B3A3 /* DiskViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8794D9C21B88F3D600B1B3A3 /* DiskViewCell.m */; };
- 87C208D71B7A4BFA00638BDD /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87C208C61B7A4BFA00638BDD /* AboutViewController.m */; };
- 87C208D81B7A4BFA00638BDD /* BrowserTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87C208C81B7A4BFA00638BDD /* BrowserTableViewController.m */; };
- 87C208D91B7A4BFA00638BDD /* CloudVMUViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87C208CA1B7A4BFA00638BDD /* CloudVMUViewController.m */; };
-@@ -87,10 +90,8 @@
- 87D92F4E1B7A1B5700D8FD9E /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 87D92F4D1B7A1B5700D8FD9E /* GameController.framework */; };
- 87D92F541B7A1BB100D8FD9E /* iCadeReaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 87D92F511B7A1BB100D8FD9E /* iCadeReaderView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 87D92F551B7A1BB100D8FD9E /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 87D92F531B7A1BB100D8FD9E /* LICENSE */; };
-- 87DCDB251B7EE57D0054D67C /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 8703BC371A44B8DA00E7E939 /* Icon-72.png */; };
-- 87DCDB261B7EE5850054D67C /* Icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8703BC381A44B8DA00E7E939 /* Icon-72@2x.png */; };
-- 87DCDB271B7EE5850054D67C /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 8703BC391A44B8DA00E7E939 /* Icon.png */; };
-- 87DCDB281B7EE5850054D67C /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8703BC3A1A44B8DA00E7E939 /* Icon@2x.png */; };
-+ 87FA52E91B8CE18600CEFC32 /* PadViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87FA52E71B8CE18600CEFC32 /* PadViewController.m */; };
-+ 87FA52EA1B8CE18600CEFC32 /* PadViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 87FA52E81B8CE18600CEFC32 /* PadViewController.xib */; };
- 9C7A393318C804A80070BB5F /* reicast.entitlements in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A393218C804A80070BB5F /* reicast.entitlements */; };
- 9C7A3AA218C806E00070BB5F /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C7A395118C806DE0070BB5F /* cfg.cpp */; };
- 9C7A3AA318C806E00070BB5F /* cl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9C7A395318C806DE0070BB5F /* cl.cpp */; };
-@@ -244,7 +245,6 @@
- 84967C751B8F492C005F1140 /* filter_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = filter_neon.S; sourceTree = "<group>"; };
- 84967C761B8F492C005F1140 /* filter_neon_intrinsics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter_neon_intrinsics.c; sourceTree = "<group>"; };
- 84967C771B8F492C005F1140 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
-- 84967C781B8F492C005F1140 /* fp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fp.h; sourceTree = "<group>"; };
- 84967C791B8F492C005F1140 /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = png.c; sourceTree = "<group>"; };
- 84967C7A1B8F492C005F1140 /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = "<group>"; };
- 84967C7B1B8F492C005F1140 /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = "<group>"; };
-@@ -282,10 +282,6 @@
- 849C0D6A1B072D14008BAAA4 /* gdrom_hle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gdrom_hle.h; path = reios/gdrom_hle.h; sourceTree = "<group>"; };
- 849C0D6B1B072D14008BAAA4 /* reios_elf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = reios_elf.cpp; path = reios/reios_elf.cpp; sourceTree = "<group>"; };
- 849C0D6C1B072D14008BAAA4 /* reios_elf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reios_elf.h; path = reios/reios_elf.h; sourceTree = "<group>"; };
-- 8703BC371A44B8DA00E7E939 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "emulator/assets/Icon-72.png"; sourceTree = "<group>"; };
-- 8703BC381A44B8DA00E7E939 /* Icon-72@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72@2x.png"; path = "emulator/assets/Icon-72@2x.png"; sourceTree = "<group>"; };
-- 8703BC391A44B8DA00E7E939 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = emulator/assets/Icon.png; sourceTree = "<group>"; };
-- 8703BC3A1A44B8DA00E7E939 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "emulator/assets/Icon@2x.png"; sourceTree = "<group>"; };
- 87078A8318A47FE90034C7A0 /* reicast-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "reicast-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 87078A8618A47FE90034C7A0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 87078A8818A47FE90034C7A0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
-@@ -316,6 +312,10 @@
- 877652C11B6157BD00437F10 /* oslib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oslib.h; sourceTree = "<group>"; };
- 877652C71B6157FC00437F10 /* ngen_arm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = ngen_arm.S; sourceTree = "<group>"; };
- 877652C81B6157FC00437F10 /* rec_arm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rec_arm.cpp; sourceTree = "<group>"; };
-+ 878B0CFB1B8BB5B400A8D1C5 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "../reicast-ios/Images.xcassets"; sourceTree = "<group>"; };
-+ 878B0CFF1B8BFE6200A8D1C5 /* disk_unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = disk_unknown.png; path = emulator/Images/disk_unknown.png; sourceTree = "<group>"; };
-+ 8794D9C11B88F3D600B1B3A3 /* DiskViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiskViewCell.h; path = emulator/DiskViewCell.h; sourceTree = "<group>"; };
-+ 8794D9C21B88F3D600B1B3A3 /* DiskViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DiskViewCell.m; path = emulator/DiskViewCell.m; sourceTree = "<group>"; };
- 87C208C51B7A4BFA00638BDD /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AboutViewController.h; path = emulator/AboutViewController.h; sourceTree = "<group>"; };
- 87C208C61B7A4BFA00638BDD /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AboutViewController.m; path = emulator/AboutViewController.m; sourceTree = "<group>"; };
- 87C208C71B7A4BFA00638BDD /* BrowserTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BrowserTableViewController.h; path = emulator/BrowserTableViewController.h; sourceTree = "<group>"; };
-@@ -364,6 +364,9 @@
- 87D92F511B7A1BB100D8FD9E /* iCadeReaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iCadeReaderView.m; sourceTree = "<group>"; };
- 87D92F521B7A1BB100D8FD9E /* iCadeState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iCadeState.h; sourceTree = "<group>"; };
- 87D92F531B7A1BB100D8FD9E /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
-+ 87FA52E61B8CE18600CEFC32 /* PadViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PadViewController.h; path = emulator/PadViewController.h; sourceTree = "<group>"; };
-+ 87FA52E71B8CE18600CEFC32 /* PadViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PadViewController.m; path = emulator/PadViewController.m; sourceTree = "<group>"; };
-+ 87FA52E81B8CE18600CEFC32 /* PadViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PadViewController.xib; path = emulator/PadViewController.xib; sourceTree = "<group>"; };
- 9C7A393218C804A80070BB5F /* reicast.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = reicast.entitlements; sourceTree = "<group>"; };
- 9C7A393A18C806DE0070BB5F /* arm_coding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arm_coding.h; sourceTree = "<group>"; };
- 9C7A393B18C806DE0070BB5F /* arm_disasm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arm_disasm.h; sourceTree = "<group>"; };
-@@ -382,7 +385,6 @@
- 9C7A394818C806DE0070BB5F /* E_VLoadStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = E_VLoadStore.h; sourceTree = "<group>"; };
- 9C7A394918C806DE0070BB5F /* E_VRegXfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = E_VRegXfer.h; sourceTree = "<group>"; };
- 9C7A394A18C806DE0070BB5F /* H_Branches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = H_Branches.h; sourceTree = "<group>"; };
-- 9C7A394B18C806DE0070BB5F /* H_fp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = H_fp.h; sourceTree = "<group>"; };
- 9C7A394C18C806DE0070BB5F /* H_LoadStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = H_LoadStore.h; sourceTree = "<group>"; };
- 9C7A394D18C806DE0070BB5F /* H_psuedo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = H_psuedo.h; sourceTree = "<group>"; };
- 9C7A394E18C806DE0070BB5F /* H_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = H_state.h; sourceTree = "<group>"; };
-@@ -722,17 +724,6 @@
- name = reios;
- sourceTree = "<group>";
- };
-- 8703BC361A44B8DA00E7E939 /* assets */ = {
-- isa = PBXGroup;
-- children = (
-- 8703BC371A44B8DA00E7E939 /* Icon-72.png */,
-- 8703BC381A44B8DA00E7E939 /* Icon-72@2x.png */,
-- 8703BC391A44B8DA00E7E939 /* Icon.png */,
-- 8703BC3A1A44B8DA00E7E939 /* Icon@2x.png */,
-- );
-- name = assets;
-- sourceTree = "<group>";
-- };
- 87078A7A18A47FE90034C7A0 = {
- isa = PBXGroup;
- children = (
-@@ -769,6 +760,7 @@
- 87078A9018A47FE90034C7A0 /* reicast */ = {
- isa = PBXGroup;
- children = (
-+ 878B0CFB1B8BB5B400A8D1C5 /* Images.xcassets */,
- 9C7A3BC318C84EA10070BB5F /* MainStoryboard.storyboard */,
- 87078A9918A47FE90034C7A0 /* AppDelegate.h */,
- 87078A9A18A47FE90034C7A0 /* AppDelegate.m */,
-@@ -790,7 +782,6 @@
- 87078A9118A47FE90034C7A0 /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
-- 8703BC361A44B8DA00E7E939 /* assets */,
- 87078A9218A47FE90034C7A0 /* reicast-ios-Info.plist */,
- 87078A9618A47FE90034C7A0 /* main.m */,
- 87078A9818A47FE90034C7A0 /* reicast-ios-Prefix.pch */,
-@@ -823,6 +814,11 @@
- 9C7A393618C805F70070BB5F /* View Controller Subclasses */ = {
- isa = PBXGroup;
- children = (
-+ 87FA52E61B8CE18600CEFC32 /* PadViewController.h */,
-+ 87FA52E71B8CE18600CEFC32 /* PadViewController.m */,
-+ 87FA52E81B8CE18600CEFC32 /* PadViewController.xib */,
-+ 8794D9C11B88F3D600B1B3A3 /* DiskViewCell.h */,
-+ 8794D9C21B88F3D600B1B3A3 /* DiskViewCell.m */,
- 87C208C51B7A4BFA00638BDD /* AboutViewController.h */,
- 87C208C61B7A4BFA00638BDD /* AboutViewController.m */,
- 87C208C71B7A4BFA00638BDD /* BrowserTableViewController.h */,
-@@ -860,6 +856,7 @@
- 87D92F291B7A1B4800D8FD9E /* JoystickBackground.png */,
- 87D92F2A1B7A1B4800D8FD9E /* JoystickBackground@2x.png */,
- 87D92F2B1B7A1B4800D8FD9E /* JoystickButton.png */,
-+ 878B0CFF1B8BFE6200A8D1C5 /* disk_unknown.png */,
- 87D92F2C1B7A1B4800D8FD9E /* JoystickButton@2x.png */,
- 87D92F2D1B7A1B4800D8FD9E /* LTrigger.png */,
- 87D92F2E1B7A1B4800D8FD9E /* LTrigger@2x.png */,
-@@ -924,7 +921,6 @@
- 9C7A394818C806DE0070BB5F /* E_VLoadStore.h */,
- 9C7A394918C806DE0070BB5F /* E_VRegXfer.h */,
- 9C7A394A18C806DE0070BB5F /* H_Branches.h */,
-- 9C7A394B18C806DE0070BB5F /* H_fp.h */,
- 9C7A394C18C806DE0070BB5F /* H_LoadStore.h */,
- 9C7A394D18C806DE0070BB5F /* H_psuedo.h */,
- 9C7A394E18C806DE0070BB5F /* H_state.h */,
-@@ -1007,7 +1003,6 @@
- children = (
- 84967C731B8F492C005F1140 /* arm */,
- 84967C771B8F492C005F1140 /* config.h */,
-- 84967C781B8F492C005F1140 /* fp.h */,
- 84967C791B8F492C005F1140 /* png.c */,
- 84967C7A1B8F492C005F1140 /* png.h */,
- 84967C7B1B8F492C005F1140 /* pngconf.h */,
-@@ -1506,10 +1501,6 @@
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
-- 87DCDB251B7EE57D0054D67C /* Icon-72.png in Resources */,
-- 87DCDB261B7EE5850054D67C /* Icon-72@2x.png in Resources */,
-- 87DCDB271B7EE5850054D67C /* Icon.png in Resources */,
-- 87DCDB281B7EE5850054D67C /* Icon@2x.png in Resources */,
- 87D92F461B7A1B4800D8FD9E /* menuback@2x.png in Resources */,
- 87D92F491B7A1B4800D8FD9E /* RTrigger.png in Resources */,
- 87D92F4B1B7A1B4800D8FD9E /* Start.png in Resources */,
-@@ -1517,6 +1508,7 @@
- 87D92F391B7A1B4800D8FD9E /* 210-twitterbird.png in Resources */,
- 87D92F3A1B7A1B4800D8FD9E /* 210-twitterbird@2x.png in Resources */,
- 87D92F3D1B7A1B4800D8FD9E /* DPad.png in Resources */,
-+ 878B0CFC1B8BB5B400A8D1C5 /* Images.xcassets in Resources */,
- 87D92F3C1B7A1B4800D8FD9E /* ABXYPad@2x.png in Resources */,
- 87D92F401B7A1B4800D8FD9E /* JoystickBackground@2x.png in Resources */,
- 9C7A3AA418C806E00070BB5F /* core.mk in Resources */,
-@@ -1535,7 +1527,9 @@
- 87D92F441B7A1B4800D8FD9E /* LTrigger@2x.png in Resources */,
- 87D92F551B7A1BB100D8FD9E /* LICENSE in Resources */,
- 87D92F451B7A1B4800D8FD9E /* menuback.png in Resources */,
-+ 87FA52EA1B8CE18600CEFC32 /* PadViewController.xib in Resources */,
- 87078AA518A47FE90034C7A0 /* Shader.vsh in Resources */,
-+ 878B0D001B8BFE6200A8D1C5 /* disk_unknown.png in Resources */,
- 87D92F3B1B7A1B4800D8FD9E /* ABXYPad.png in Resources */,
- 87D92F481B7A1B4800D8FD9E /* menuicon@2x.png in Resources */,
- 87D92F371B7A1B4800D8FD9E /* 210-octocat.png in Resources */,
-@@ -1601,6 +1595,7 @@
- 9C7A3B2318C806E00070BB5F /* sh4_opcodes.cpp in Sources */,
- 84967C951B8F492C005F1140 /* pngmem.c in Sources */,
- 9C7A3ADA18C806E00070BB5F /* zip_name_locate.c in Sources */,
-+ 8794D9C31B88F3D600B1B3A3 /* DiskViewCell.m in Sources */,
- 9C7A3B1B18C806E00070BB5F /* ta_ctx.cpp in Sources */,
- 9C7A3AE018C806E00070BB5F /* zip_set_archive_flag.c in Sources */,
- 9C7A3B3518C806E00070BB5F /* cdi.cpp in Sources */,
-@@ -1635,6 +1630,7 @@
- 9C7A3B5918C81A4F0070BB5F /* SWRevealViewController.m in Sources */,
- 9C7A3B0F18C806E00070BB5F /* maple_cfg.cpp in Sources */,
- 9C7A3AF318C806E00070BB5F /* crc32.c in Sources */,
-+ 87FA52E91B8CE18600CEFC32 /* PadViewController.m in Sources */,
- 8497BCC01A41A0E900EFB9ED /* nixprof.cpp in Sources */,
- 9C7A3AE118C806E00070BB5F /* zip_set_file_comment.c in Sources */,
- 84967C9A1B8F492C005F1140 /* pngrutil.c in Sources */,
-@@ -1840,6 +1836,8 @@
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = armv7;
-+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
-@@ -1875,6 +1873,8 @@
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = armv7;
-+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
-diff -Nur a/shell/apple/reicast.xcworkspace/xcshareddata/xcschemes/reicast-ios.xcscheme b/shell/apple/reicast.xcworkspace/xcshareddata/xcschemes/reicast-ios.xcscheme
---- a/shell/apple/reicast.xcworkspace/xcshareddata/xcschemes/reicast-ios.xcscheme 2015-10-06 21:43:53.127337010 -0300
-+++ b/shell/apple/reicast.xcworkspace/xcshareddata/xcschemes/reicast-ios.xcscheme 2015-10-06 22:10:31.210968157 -0300
-@@ -62,7 +62,8 @@
- ignoresPersistentStateOnLaunch = "NO"
- debugDocumentVersioning = "YES"
- allowLocationSimulation = "YES">
-- <BuildableProductRunnable>
-+ <BuildableProductRunnable
-+ runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "87078A8218A47FE90034C7A0"
-@@ -80,7 +81,8 @@
- useCustomWorkingDirectory = "NO"
- buildConfiguration = "Release"
- debugDocumentVersioning = "YES">
-- <BuildableProductRunnable>
-+ <BuildableProductRunnable
-+ runnableDebuggingMode = "0">
- <BuildableReference
- BuildableIdentifier = "primary"
- BlueprintIdentifier = "87078A8218A47FE90034C7A0"