OSX: add x64 target. Use JIT compiler. Clean exit. Use semaphore in core audio driver. Use layout-independent key codes to support int'l keyboards. Fixed GL window scaling.

This commit is contained in:
Flyinghead 2018-04-29 16:07:54 +02:00
parent 64a8ac1dd5
commit 39e0f378cb
11 changed files with 145 additions and 59 deletions

View File

@ -199,6 +199,9 @@
#elif defined(TARGET_OSX) #elif defined(TARGET_OSX)
#define HOST_OS OS_DARWIN #define HOST_OS OS_DARWIN
#define HOST_CPU CPU_GENERIC #define HOST_CPU CPU_GENERIC
#elif defined(TARGET_OSX_X64)
#define HOST_OS OS_DARWIN
#define HOST_CPU CPU_X64
#else #else
#error Invalid Target: TARGET_* not defined #error Invalid Target: TARGET_* not defined
#endif #endif

View File

@ -280,7 +280,7 @@ void* rend_thread(void* p)
return 0; return 0;
} }
#if HOST_OS==OS_LINUX #if HOST_OS==OS_LINUX || HOST_OS==OS_DARWIN
void rend_terminate() void rend_terminate()
{ {
rend_en = false; rend_en = false;

View File

@ -18,7 +18,7 @@
#include <sys/param.h> #include <sys/param.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/time.h> #include <sys/time.h>
#if !defined(_ANDROID) && !defined(TARGET_IPHONE) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && !defined(TARGET_OSX) #if !defined(_ANDROID) && !defined(TARGET_IPHONE) && !defined(TARGET_NACL32) && !defined(TARGET_EMSCRIPTEN) && !defined(TARGET_OSX) && !defined(TARGET_OSX_X64)
#include <sys/personality.h> #include <sys/personality.h>
#include <dlfcn.h> #include <dlfcn.h>
#endif #endif
@ -201,7 +201,7 @@ void VArray2::LockRegion(u32 offset,u32 size)
} }
#else #else
printf("VA2: LockRegion\n"); //printf("VA2: LockRegion\n");
#endif #endif
} }
@ -252,7 +252,7 @@ void VArray2::UnLockRegion(u32 offset,u32 size)
die("mprotect failed ..\n"); die("mprotect failed ..\n");
} }
#else #else
printf("VA2: UnLockRegion\n"); //printf("VA2: UnLockRegion\n");
#endif #endif
} }
double os_GetSeconds() double os_GetSeconds()

View File

@ -24,6 +24,7 @@ AudioUnit audioUnit;
u8 samples_temp[1024 * 4]; u8 samples_temp[1024 * 4];
volatile int samples_ptr = 0; volatile int samples_ptr = 0;
cResetEvent bufferEmpty(false, true);
OSStatus coreaudio_callback(void* ctx, AudioUnitRenderActionFlags* flags, const AudioTimeStamp* ts, OSStatus coreaudio_callback(void* ctx, AudioUnitRenderActionFlags* flags, const AudioTimeStamp* ts,
UInt32 bus, UInt32 frames, AudioBufferList* abl) UInt32 bus, UInt32 frames, AudioBufferList* abl)
@ -41,6 +42,8 @@ OSStatus coreaudio_callback(void* ctx, AudioUnitRenderActionFlags* flags, const
if (samples_ptr < 0) if (samples_ptr < 0)
samples_ptr = 0; samples_ptr = 0;
if (samples_ptr == 0)
bufferEmpty.Set();
return noErr; return noErr;
} }
@ -103,12 +106,14 @@ static void coreaudio_init()
err = AudioOutputUnitStart(audioUnit); err = AudioOutputUnitStart(audioUnit);
verify(err == noErr); verify(err == noErr);
bufferEmpty.Set();
} }
static u32 coreaudio_push(void* frame, u32 samples, bool wait) static u32 coreaudio_push(void* frame, u32 samples, bool wait)
{ {
/* Yeah, right */ if (wait)
while (samples_ptr != 0 && wait) ; bufferEmpty.Wait();
if (samples_ptr == 0) { if (samples_ptr == 0) {
memcpy(&samples_temp[samples_ptr], frame, samples * 4); memcpy(&samples_temp[samples_ptr], frame, samples * 4);
@ -130,6 +135,8 @@ static void coreaudio_term()
err = AudioComponentInstanceDispose(audioUnit); err = AudioComponentInstanceDispose(audioUnit);
verify(err == noErr); verify(err == noErr);
bufferEmpty.Set();
} }
audiobackend_t audiobackend_coreaudio = { audiobackend_t audiobackend_coreaudio = {

View File

@ -46,6 +46,8 @@ void ngen_FailedToFindBlock_internal() {
void(*ngen_FailedToFindBlock)() = &ngen_FailedToFindBlock_internal; void(*ngen_FailedToFindBlock)() = &ngen_FailedToFindBlock_internal;
unsigned int ngen_required = true;
void ngen_mainloop(void* v_cntx) void ngen_mainloop(void* v_cntx)
{ {
Sh4RCB* ctx = (Sh4RCB*)((u8*)v_cntx - sizeof(Sh4RCB)); Sh4RCB* ctx = (Sh4RCB*)((u8*)v_cntx - sizeof(Sh4RCB));
@ -53,7 +55,7 @@ void ngen_mainloop(void* v_cntx)
cycle_counter = 0; cycle_counter = 0;
#if !defined(TARGET_BOUNDED_EXECUTION) #if !defined(TARGET_BOUNDED_EXECUTION)
for (;;) { while (ngen_required) {
#else #else
for (int i=0; i<10000; i++) { for (int i=0; i<10000; i++) {
#endif #endif
@ -73,6 +75,11 @@ void ngen_init()
{ {
} }
void ngen_terminate(void)
{
printf("ngen_terminate called\n");
ngen_required = false;
}
void ngen_GetFeatures(ngen_features* dst) void ngen_GetFeatures(ngen_features* dst)
{ {

View File

@ -20,10 +20,12 @@ class AppDelegate: NSObject, NSApplicationDelegate {
} }
func applicationWillTerminate(_ aNotification: Notification) { func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application emu_shutdown()
} }
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
} }

View File

@ -32,7 +32,7 @@ class EmuGLView: NSOpenGLView {
} }
override func awakeFromNib() { override func awakeFromNib() {
var renderTimer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(EmuGLView.timerTick), userInfo: nil, repeats: true) let renderTimer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(EmuGLView.timerTick), userInfo: nil, repeats: true)
RunLoop.current.add(renderTimer, forMode: RunLoopMode.defaultRunLoopMode); RunLoop.current.add(renderTimer, forMode: RunLoopMode.defaultRunLoopMode);
RunLoop.current.add(renderTimer, forMode: RunLoopMode.eventTrackingRunLoopMode); RunLoop.current.add(renderTimer, forMode: RunLoopMode.eventTrackingRunLoopMode);
@ -64,11 +64,11 @@ class EmuGLView: NSOpenGLView {
} }
override func keyDown(with e: NSEvent) { override func keyDown(with e: NSEvent) {
emu_key_input(e.characters!, 1); emu_key_input(e.keyCode, 1);
} }
override func keyUp(with e: NSEvent) { override func keyUp(with e: NSEvent) {
emu_key_input(e.characters!, 0); emu_key_input(e.keyCode, 0);
} }
} }

View File

@ -8,9 +8,11 @@
#ifndef emulator_osx_osx_main_Bridging_Header_h #ifndef emulator_osx_osx_main_Bridging_Header_h
#define emulator_osx_osx_main_Bridging_Header_h #define emulator_osx_osx_main_Bridging_Header_h
#include <MacTypes.h>
void emu_main(); void emu_main();
int emu_single_frame(int w, int h); int emu_single_frame(int w, int h);
void emu_gles_init(); void emu_gles_init();
void emu_key_input(const char* key, int state); void emu_key_input(UInt16 keyCode, int state);
void emu_shutdown();
#endif #endif

View File

@ -132,6 +132,7 @@ extern "C" int emu_single_frame(int w, int h) {
return true; return true;
screen_width = w; screen_width = w;
screen_height = h; screen_height = h;
glViewport(0, 0, w, h);
return rend_single_frame(); return rend_single_frame();
} }
@ -163,35 +164,56 @@ enum DCPad {
Axis_Y= 0x20001, Axis_Y= 0x20001,
}; };
void handle_key(int dckey, int state) { static void handle_key(int dckey, int state) {
if (state) if (state)
kcode[0] &= ~dckey; kcode[0] &= ~dckey;
else else
kcode[0] |= dckey; kcode[0] |= dckey;
} }
void handle_trig(u8* dckey, int state) { static void handle_trig(u8* dckey, int state) {
if (state) if (state)
dckey[0] = 255; dckey[0] = 255;
else else
dckey[0] = 0; dckey[0] = 0;
} }
extern "C" void emu_key_input(char* keyt, int state) { extern "C" void emu_key_input(UInt16 keyCode, int state) {
int key = keyt[0]; switch(keyCode) {
switch(key) { // Z
case 'z': handle_key(Btn_X, state); break; case 0x06: handle_key(Btn_X, state); break;
case 'x': handle_key(Btn_Y, state); break; // X
case 'c': handle_key(Btn_B, state); break; case 0x07: handle_key(Btn_Y, state); break;
case 'v': handle_key(Btn_A, state); break; // C
case 0x08: handle_key(Btn_B, state); break;
// V
case 0x09: handle_key(Btn_A, state); break;
case 'a': handle_trig(lt, state); break; // A
case 's': handle_trig(rt, state); break; case 0x00: handle_trig(lt, state); break;
// S
case 0x01: handle_trig(rt, state); break;
case 'j': handle_key(DPad_Left, state); break; // J
case 'k': handle_key(DPad_Down, state); break; case 0x26: handle_key(DPad_Left, state); break;
case 'l': handle_key(DPad_Right, state); break; // K
case 'i': handle_key(DPad_Up, state); break; case 0x28: handle_key(DPad_Down, state); break;
case 0xa: handle_key(Btn_Start, state); break; // L
case 0x25: handle_key(DPad_Right, state); break;
// I
case 0x22: handle_key(DPad_Up, state); break;
// Enter
case 0x24: handle_key(Btn_Start, state); break;
} }
} }
void rend_terminate();
void ngen_terminate();
void dc_term();
extern "C" void emu_shutdown()
{
rend_terminate();
ngen_terminate();
dc_term();
}

View File

@ -59,7 +59,7 @@ void ngen_mainloop(void* v_cntx)
} while (ngen_required); } while (ngen_required);
} }
#if HOST_OS==OS_LINUX #if HOST_OS==OS_LINUX || HOST_OS==OS_DARWIN
void ngen_terminate() void ngen_terminate()
{ {
ngen_required = false; ngen_required = false;

View File

@ -180,7 +180,6 @@
84B7BF6B1B72720200F9733F /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE791B72720200F9733F /* audiostream.cpp */; }; 84B7BF6B1B72720200F9733F /* audiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE791B72720200F9733F /* audiostream.cpp */; };
84B7BF6C1B72720200F9733F /* profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE7D1B72720200F9733F /* profiler.cpp */; }; 84B7BF6C1B72720200F9733F /* profiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE7D1B72720200F9733F /* profiler.cpp */; };
84B7BF6D1B72720200F9733F /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE7F1B72720200F9733F /* README.md */; }; 84B7BF6D1B72720200F9733F /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE7F1B72720200F9733F /* README.md */; };
84B7BF6E1B72720200F9733F /* rec_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE811B72720200F9733F /* rec_cpp.cpp */; };
84B7BF741B72720200F9733F /* descrambl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE901B72720200F9733F /* descrambl.cpp */; }; 84B7BF741B72720200F9733F /* descrambl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE901B72720200F9733F /* descrambl.cpp */; };
84B7BF751B72720200F9733F /* gdrom_hle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE921B72720200F9733F /* gdrom_hle.cpp */; }; 84B7BF751B72720200F9733F /* gdrom_hle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE921B72720200F9733F /* gdrom_hle.cpp */; };
84B7BF761B72720200F9733F /* reios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE941B72720200F9733F /* reios.cpp */; }; 84B7BF761B72720200F9733F /* reios.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BE941B72720200F9733F /* reios.cpp */; };
@ -192,6 +191,8 @@
84B7BF7F1B72720200F9733F /* stdclass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BEA71B72720200F9733F /* stdclass.cpp */; }; 84B7BF7F1B72720200F9733F /* stdclass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BEA71B72720200F9733F /* stdclass.cpp */; };
84B7BF831B727AD700F9733F /* osx-main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BF821B727AD700F9733F /* osx-main.mm */; }; 84B7BF831B727AD700F9733F /* osx-main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BF821B727AD700F9733F /* osx-main.mm */; };
84B7BF861B72871600F9733F /* EmuGLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BF851B72871600F9733F /* EmuGLView.swift */; }; 84B7BF861B72871600F9733F /* EmuGLView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B7BF851B72871600F9733F /* EmuGLView.swift */; };
AE1E292520947C6100FC6BA2 /* rec_x64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE1E292420947C6100FC6BA2 /* rec_x64.cpp */; };
AE1E293B2095FB1600FC6BA2 /* rec_cpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE1E293A2095FB1600FC6BA2 /* rec_cpp.cpp */; };
EBDF374F1BB96581001191B5 /* audiobackend_coreaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBDF374D1BB96581001191B5 /* audiobackend_coreaudio.cpp */; }; EBDF374F1BB96581001191B5 /* audiobackend_coreaudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBDF374D1BB96581001191B5 /* audiobackend_coreaudio.cpp */; };
EBDF37511BB969EE001191B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBDF37501BB969EE001191B5 /* CoreAudio.framework */; }; EBDF37511BB969EE001191B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBDF37501BB969EE001191B5 /* CoreAudio.framework */; };
EBDF37531BB969F8001191B5 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBDF37521BB969F8001191B5 /* AudioUnit.framework */; }; EBDF37531BB969F8001191B5 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBDF37521BB969F8001191B5 /* AudioUnit.framework */; };
@ -517,7 +518,6 @@
84B7BE7D1B72720200F9733F /* profiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = "<group>"; }; 84B7BE7D1B72720200F9733F /* profiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cpp; sourceTree = "<group>"; };
84B7BE7E1B72720200F9733F /* profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = "<group>"; }; 84B7BE7E1B72720200F9733F /* profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = "<group>"; };
84B7BE7F1B72720200F9733F /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../../core/README.md; sourceTree = "<group>"; }; 84B7BE7F1B72720200F9733F /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../../core/README.md; sourceTree = "<group>"; };
84B7BE811B72720200F9733F /* rec_cpp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rec_cpp.cpp; sourceTree = "<group>"; };
84B7BE901B72720200F9733F /* descrambl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = descrambl.cpp; sourceTree = "<group>"; }; 84B7BE901B72720200F9733F /* descrambl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = descrambl.cpp; sourceTree = "<group>"; };
84B7BE911B72720200F9733F /* descrambl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = descrambl.h; sourceTree = "<group>"; }; 84B7BE911B72720200F9733F /* descrambl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = descrambl.h; sourceTree = "<group>"; };
84B7BE921B72720200F9733F /* gdrom_hle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_hle.cpp; sourceTree = "<group>"; }; 84B7BE921B72720200F9733F /* gdrom_hle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gdrom_hle.cpp; sourceTree = "<group>"; };
@ -539,6 +539,12 @@
84B7BF821B727AD700F9733F /* osx-main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "osx-main.mm"; sourceTree = "<group>"; }; 84B7BF821B727AD700F9733F /* osx-main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "osx-main.mm"; sourceTree = "<group>"; };
84B7BF841B72821900F9733F /* emulator-osx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "emulator-osx-Bridging-Header.h"; sourceTree = "<group>"; }; 84B7BF841B72821900F9733F /* emulator-osx-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "emulator-osx-Bridging-Header.h"; sourceTree = "<group>"; };
84B7BF851B72871600F9733F /* EmuGLView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmuGLView.swift; sourceTree = "<group>"; }; 84B7BF851B72871600F9733F /* EmuGLView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmuGLView.swift; sourceTree = "<group>"; };
AE1E292420947C6100FC6BA2 /* rec_x64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rec_x64.cpp; sourceTree = "<group>"; };
AE1E292820947D4700FC6BA2 /* xbyak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xbyak.h; sourceTree = "<group>"; };
AE1E292920947D4700FC6BA2 /* xbyak_bin2hex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xbyak_bin2hex.h; sourceTree = "<group>"; };
AE1E292A20947D4700FC6BA2 /* xbyak_mnemonic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xbyak_mnemonic.h; sourceTree = "<group>"; };
AE1E292B20947D4700FC6BA2 /* xbyak_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xbyak_util.h; sourceTree = "<group>"; };
AE1E293A2095FB1600FC6BA2 /* rec_cpp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rec_cpp.cpp; sourceTree = "<group>"; };
EBDF374D1BB96581001191B5 /* audiobackend_coreaudio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_coreaudio.cpp; sourceTree = "<group>"; }; EBDF374D1BB96581001191B5 /* audiobackend_coreaudio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_coreaudio.cpp; sourceTree = "<group>"; };
EBDF374E1BB96581001191B5 /* audiobackend_coreaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audiobackend_coreaudio.h; sourceTree = "<group>"; }; EBDF374E1BB96581001191B5 /* audiobackend_coreaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audiobackend_coreaudio.h; sourceTree = "<group>"; };
EBDF37501BB969EE001191B5 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; EBDF37501BB969EE001191B5 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
@ -652,7 +658,8 @@
84B7BE6F1B72720200F9733F /* oslib */, 84B7BE6F1B72720200F9733F /* oslib */,
84B7BE7C1B72720200F9733F /* profiler */, 84B7BE7C1B72720200F9733F /* profiler */,
84B7BE7F1B72720200F9733F /* README.md */, 84B7BE7F1B72720200F9733F /* README.md */,
84B7BE801B72720200F9733F /* rec-cpp */, AE1E29392095FB1600FC6BA2 /* rec-cpp */,
AE1E292320947C6100FC6BA2 /* rec-x64 */,
84B7BE8F1B72720200F9733F /* reios */, 84B7BE8F1B72720200F9733F /* reios */,
84B7BE981B72720200F9733F /* rend */, 84B7BE981B72720200F9733F /* rend */,
84B7BEA71B72720200F9733F /* stdclass.cpp */, 84B7BEA71B72720200F9733F /* stdclass.cpp */,
@ -685,6 +692,7 @@
84B7BD2D1B72720100F9733F /* libelf */, 84B7BD2D1B72720100F9733F /* libelf */,
84B7BD351B72720100F9733F /* libpng */, 84B7BD351B72720100F9733F /* libpng */,
84B7BD661B72720100F9733F /* libzip */, 84B7BD661B72720100F9733F /* libzip */,
AE1E292620947D4700FC6BA2 /* xbyak */,
84B7BDA01B72720100F9733F /* zlib */, 84B7BDA01B72720100F9733F /* zlib */,
); );
name = deps; name = deps;
@ -1240,15 +1248,6 @@
path = ../../../core/profiler; path = ../../../core/profiler;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
84B7BE801B72720200F9733F /* rec-cpp */ = {
isa = PBXGroup;
children = (
84B7BE811B72720200F9733F /* rec_cpp.cpp */,
);
name = "rec-cpp";
path = "../../../core/rec-cpp";
sourceTree = "<group>";
};
84B7BE8F1B72720200F9733F /* reios */ = { 84B7BE8F1B72720200F9733F /* reios */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -1288,6 +1287,34 @@
path = gles; path = gles;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
AE1E292320947C6100FC6BA2 /* rec-x64 */ = {
isa = PBXGroup;
children = (
AE1E292420947C6100FC6BA2 /* rec_x64.cpp */,
);
path = "rec-x64";
sourceTree = "<group>";
};
AE1E292620947D4700FC6BA2 /* xbyak */ = {
isa = PBXGroup;
children = (
AE1E292820947D4700FC6BA2 /* xbyak.h */,
AE1E292920947D4700FC6BA2 /* xbyak_bin2hex.h */,
AE1E292A20947D4700FC6BA2 /* xbyak_mnemonic.h */,
AE1E292B20947D4700FC6BA2 /* xbyak_util.h */,
);
path = xbyak;
sourceTree = "<group>";
};
AE1E29392095FB1600FC6BA2 /* rec-cpp */ = {
isa = PBXGroup;
children = (
AE1E293A2095FB1600FC6BA2 /* rec_cpp.cpp */,
);
name = "rec-cpp";
path = "../../../core/rec-cpp";
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -1451,6 +1478,7 @@
84B7BEF21B72720200F9733F /* zip_file_get_offset.c in Sources */, 84B7BEF21B72720200F9733F /* zip_file_get_offset.c in Sources */,
84B7BF7B1B72720200F9733F /* gltex.cpp in Sources */, 84B7BF7B1B72720200F9733F /* gltex.cpp in Sources */,
84B7BEF41B72720200F9733F /* zip_filerange_crc.c in Sources */, 84B7BEF41B72720200F9733F /* zip_filerange_crc.c in Sources */,
AE1E292520947C6100FC6BA2 /* rec_x64.cpp in Sources */,
84B7BEB91B72720200F9733F /* elf.cpp in Sources */, 84B7BEB91B72720200F9733F /* elf.cpp in Sources */,
84B7BF6D1B72720200F9733F /* README.md in Sources */, 84B7BF6D1B72720200F9733F /* README.md in Sources */,
84B7BF2B1B72720200F9733F /* arm_mem.cpp in Sources */, 84B7BF2B1B72720200F9733F /* arm_mem.cpp in Sources */,
@ -1471,6 +1499,7 @@
84B7BF411B72720200F9733F /* ta_vtx.cpp in Sources */, 84B7BF411B72720200F9733F /* ta_vtx.cpp in Sources */,
84B7BEF61B72720200F9733F /* zip_fopen_index.c in Sources */, 84B7BEF61B72720200F9733F /* zip_fopen_index.c in Sources */,
84B7BEEE1B72720200F9733F /* zip_error_to_str.c in Sources */, 84B7BEEE1B72720200F9733F /* zip_error_to_str.c in Sources */,
AE1E293B2095FB1600FC6BA2 /* rec_cpp.cpp in Sources */,
84B7BEF81B72720200F9733F /* zip_free.c in Sources */, 84B7BEF81B72720200F9733F /* zip_free.c in Sources */,
84B7BF331B72720200F9733F /* sb_mem.cpp in Sources */, 84B7BF331B72720200F9733F /* sb_mem.cpp in Sources */,
84B7BF2F1B72720200F9733F /* gdromv3.cpp in Sources */, 84B7BF2F1B72720200F9733F /* gdromv3.cpp in Sources */,
@ -1566,7 +1595,6 @@
84A388B91B1CDD3E000166C0 /* AppDelegate.swift in Sources */, 84A388B91B1CDD3E000166C0 /* AppDelegate.swift in Sources */,
84B7BF001B72720200F9733F /* zip_new.c in Sources */, 84B7BF001B72720200F9733F /* zip_new.c in Sources */,
84B7BF0A1B72720200F9733F /* zip_source_filep.c in Sources */, 84B7BF0A1B72720200F9733F /* zip_source_filep.c in Sources */,
84B7BF6E1B72720200F9733F /* rec_cpp.cpp in Sources */,
84967CBE1B8F49EE005F1140 /* filter_neon.S in Sources */, 84967CBE1B8F49EE005F1140 /* filter_neon.S in Sources */,
84B7BF091B72720200F9733F /* zip_source_file.c in Sources */, 84B7BF091B72720200F9733F /* zip_source_file.c in Sources */,
84B7BF151B72720200F9733F /* zip_unchange_data.c in Sources */, 84B7BF151B72720200F9733F /* zip_unchange_data.c in Sources */,
@ -1630,8 +1658,12 @@
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1", TARGET_NO_EXCEPTIONS,
"$(inherited)", TARGET_NO_WEBUI,
TARGET_NO_NIXPROF,
TARGET_NO_COREIO_HTTP,
TARGET_NO_AREC,
XBYAK_NO_OP_NAMES,
); );
GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -1671,6 +1703,14 @@
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_PREPROCESSOR_DEFINITIONS = (
TARGET_NO_EXCEPTIONS,
TARGET_NO_WEBUI,
TARGET_NO_NIXPROF,
TARGET_NO_COREIO_HTTP,
TARGET_NO_AREC,
XBYAK_NO_OP_NAMES,
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNDECLARED_SELECTOR = YES;
@ -1688,15 +1728,18 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( GCC_PREPROCESSOR_DEFINITIONS = (
TARGET_NO_EXCEPTIONS, "DEBUG=1",
TARGET_NO_WEBUI, "$(inherited)",
TARGET_NO_NIXPROF, );
TARGET_NO_COREIO_HTTP, "GCC_PREPROCESSOR_DEFINITIONS[arch=i386]" = (
TARGET_NO_JIT,
TARGET_OSX, TARGET_OSX,
"$(inherited)", "$(inherited)",
); );
"GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64]" = (
TARGET_OSX_X64,
"$(inherited)",
);
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
@ -1717,15 +1760,15 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
TARGET_NO_EXCEPTIONS, "GCC_PREPROCESSOR_DEFINITIONS[arch=i386]" = (
TARGET_NO_WEBUI,
TARGET_NO_NIXPROF,
TARGET_NO_COREIO_HTTP,
TARGET_NO_JIT,
TARGET_OSX, TARGET_OSX,
"$(inherited)", "$(inherited)",
); );
"GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64]" = (
TARGET_OSX_X64,
"$(inherited)",
);
HEADER_SEARCH_PATHS = ( HEADER_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,