diff options
Diffstat (limited to 'pcr/reicast-git')
-rw-r--r-- | pcr/reicast-git/PKGBUILD | 27 | ||||
-rw-r--r-- | pcr/reicast-git/error-mem.txt | 168 | ||||
-rw-r--r-- | pcr/reicast-git/loungekatt_rm-nonfree-fp.patch | 1451 |
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" |