diff --git a/Info.plist b/Info.plist
index 69fa41c..3e02216 100644
--- a/Info.plist
+++ b/Info.plist
@@ -19,7 +19,7 @@
CFBundleSignature
????
CFBundleVersion
- 0.9.6
+ 0.9.7.2
NSPrincipalClass
OEGameCoreController
OEGameCoreClass
diff --git a/NativeApp.cpp b/NativeApp.cpp
index 00efda4..0c94712 100644
--- a/NativeApp.cpp
+++ b/NativeApp.cpp
@@ -160,6 +160,8 @@ void NativeInitGraphics()
gl_lost_manager_init();
}
+void NativeResized(){}
+
void NativeRender()
{
glstate.Restore();
diff --git a/PPSSPP.xcodeproj/project.pbxproj b/PPSSPP.xcodeproj/project.pbxproj
index afdd120..3278b86 100644
--- a/PPSSPP.xcodeproj/project.pbxproj
+++ b/PPSSPP.xcodeproj/project.pbxproj
@@ -120,6 +120,8 @@
8C99591B1785DE3A00EE4CA8 /* SHA1.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA9521785B3C200647A96 /* SHA1.c */; };
8C99591D1785DE4400EE4CA8 /* xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA9621785B3C200647A96 /* xbrz.cpp */; };
8C99CCCD189DB0D4004E6F63 /* flash0 in Resources */ = {isa = PBXBuildFile; fileRef = 8C99CCCC189DB0D4004E6F63 /* flash0 */; };
+ 8C9BDA1118C28B55007F6592 /* city.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFBB5F1785B3D200647A96 /* city.cpp */; };
+ 8C9BDA1418C28BA5007F6592 /* libcityhash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C9BDA1018C28B31007F6592 /* libcityhash.a */; };
8CA153F417C412410003002D /* VirtualDiscFileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CA153C217C410220003002D /* VirtualDiscFileSystem.cpp */; };
8CA153F617C412480003002D /* AsyncIOManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CA153C517C4108D0003002D /* AsyncIOManager.cpp */; };
8CA153F717C4125D0003002D /* Clipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CA153E617C411BC0003002D /* Clipper.cpp */; };
@@ -241,7 +243,6 @@
8CAFC2A91785CFFF00647A96 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA8411785B3C200647A96 /* Config.cpp */; };
8CAFC2AB1785CFFF00647A96 /* Core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA8431785B3C200647A96 /* Core.cpp */; };
8CAFC2AE1785CFFF00647A96 /* CoreTiming.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA8481785B3C200647A96 /* CoreTiming.cpp */; };
- 8CAFC2B01785CFFF00647A96 /* CPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA84A1785B3C200647A96 /* CPU.cpp */; };
8CAFC2B21785D0F500647A96 /* CwCheat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA84C1785B3C200647A96 /* CwCheat.cpp */; };
8CAFC2B41785D11800647A96 /* Breakpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA84F1785B3C200647A96 /* Breakpoints.cpp */; };
8CAFC2B71785D11800647A96 /* SymbolMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CAFA8521785B3C200647A96 /* SymbolMap.cpp */; };
@@ -315,6 +316,10 @@
8CB74E501786031300C652A7 /* libxbrz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8CAFC1DB1785C7B300647A96 /* libxbrz.a */; };
8CBB2C1F1790535A00349818 /* ppge_atlas.zim in Resources */ = {isa = PBXBuildFile; fileRef = 8CBB2C1E1790535600349818 /* ppge_atlas.zim */; };
8CC4D25F178C7EC20094E987 /* NativeApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC4D25E178C7EC00094E987 /* NativeApp.cpp */; };
+ 8CC8066B18C27BBB00AB1339 /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC8066A18C27BAA00AB1339 /* FileSystem.cpp */; };
+ 8CC8066E18C27C1400AB1339 /* ReplaceTables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC8066D18C27C1000AB1339 /* ReplaceTables.cpp */; };
+ 8CC8067118C27C4000AB1339 /* sceMt19937.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC8067018C27C3B00AB1339 /* sceMt19937.cpp */; };
+ 8CC8067518C27CC500AB1339 /* CompReplace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CC8067418C27CC500AB1339 /* CompReplace.cpp */; };
8CD63AF5178DBDE70039164C /* fbo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CD63AF3178DB9610039164C /* fbo.cpp */; };
8CD63AF8178DCE7F0039164C /* input_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CD63AF7178DCE7F0039164C /* input_state.cpp */; };
8CD63AFC178DCEC60039164C /* sceCcc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CD63AFA178DCEC60039164C /* sceCcc.cpp */; };
@@ -381,6 +386,13 @@
remoteGlobalIDString = 8CAFC1621785C33D00647A96;
remoteInfo = GPU;
};
+ 8C9BDA1218C28B62007F6592 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 8CAFA78F1785AA9900647A96 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 8C9BDA0A18C28B31007F6592;
+ remoteInfo = cityhash;
+ };
8CB74E171785FBDF00C652A7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8CAFA78F1785AA9900647A96 /* Project object */;
@@ -512,6 +524,7 @@
8C8447A6186B84CE00BE03D5 /* parsers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = parsers.cpp; sourceTree = ""; };
8C8447AA186B8DD600BE03D5 /* gl_common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl_common.h; sourceTree = ""; };
8C99CCCC189DB0D4004E6F63 /* flash0 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = flash0; sourceTree = ""; };
+ 8C9BDA1018C28B31007F6592 /* libcityhash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcityhash.a; sourceTree = BUILT_PRODUCTS_DIR; };
8CA153BA17C40FA60003002D /* CommonWindows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonWindows.h; sourceTree = ""; };
8CA153BC17C40FBA0003002D /* Swap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Swap.h; sourceTree = ""; };
8CA153BE17C40FF40003002D /* ppcEmitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ppcEmitter.h; sourceTree = ""; };
@@ -619,8 +632,6 @@
8CAFA8471785B3C200647A96 /* CoreParameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreParameter.h; sourceTree = ""; };
8CAFA8481785B3C200647A96 /* CoreTiming.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CoreTiming.cpp; sourceTree = ""; };
8CAFA8491785B3C200647A96 /* CoreTiming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreTiming.h; sourceTree = ""; };
- 8CAFA84A1785B3C200647A96 /* CPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CPU.cpp; sourceTree = ""; };
- 8CAFA84B1785B3C200647A96 /* CPU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CPU.h; sourceTree = ""; };
8CAFA84C1785B3C200647A96 /* CwCheat.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CwCheat.cpp; sourceTree = ""; };
8CAFA84D1785B3C200647A96 /* CwCheat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwCheat.h; sourceTree = ""; };
8CAFA84F1785B3C200647A96 /* Breakpoints.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Breakpoints.cpp; sourceTree = ""; };
@@ -1196,6 +1207,14 @@
8CB3FB7A1786D2E500A3C50D /* OEPSPSystemResponderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OEPSPSystemResponderClient.h; path = ../OpenEmu/PSP/OEPSPSystemResponderClient.h; sourceTree = ""; };
8CBB2C1E1790535600349818 /* ppge_atlas.zim */ = {isa = PBXFileReference; lastKnownFileType = file; path = ppge_atlas.zim; sourceTree = ""; };
8CC4D25E178C7EC00094E987 /* NativeApp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeApp.cpp; sourceTree = ""; };
+ 8CC8066A18C27BAA00AB1339 /* FileSystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystem.cpp; sourceTree = ""; };
+ 8CC8066C18C27C1000AB1339 /* ReplaceTables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReplaceTables.h; sourceTree = ""; };
+ 8CC8066D18C27C1000AB1339 /* ReplaceTables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ReplaceTables.cpp; sourceTree = ""; };
+ 8CC8066F18C27C3B00AB1339 /* sceMt19937.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sceMt19937.h; sourceTree = ""; };
+ 8CC8067018C27C3B00AB1339 /* sceMt19937.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sceMt19937.cpp; sourceTree = ""; };
+ 8CC8067218C27C8900AB1339 /* ArmCompReplace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ArmCompReplace.cpp; sourceTree = ""; };
+ 8CC8067318C27CAB00AB1339 /* PpcCompReplace.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PpcCompReplace.cpp; sourceTree = ""; };
+ 8CC8067418C27CC500AB1339 /* CompReplace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompReplace.cpp; sourceTree = ""; };
8CD63AF3178DB9610039164C /* fbo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fbo.cpp; sourceTree = ""; };
8CD63AF4178DBDB80039164C /* fbo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fbo.h; sourceTree = ""; };
8CD63AF7178DCE7F0039164C /* input_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = input_state.cpp; sourceTree = ""; };
@@ -1222,6 +1241,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 8C9BDA1418C28BA5007F6592 /* libcityhash.a in Frameworks */,
3DFCE410186F64170046C035 /* libz.dylib in Frameworks */,
8C8447A2186B843A00BE03D5 /* libvjson.a in Frameworks */,
8C844795186B83B700BE03D5 /* libpng16.a in Frameworks */,
@@ -1344,6 +1364,7 @@
8CA153DC17C4116F0003002D /* PpcCompBranch.cpp */,
8CA153DD17C4116F0003002D /* PpcCompFpu.cpp */,
8CA153DE17C4116F0003002D /* PpcCompLoadStore.cpp */,
+ 8CC8067318C27CAB00AB1339 /* PpcCompReplace.cpp */,
8CA153DF17C4116F0003002D /* PpcCompVFPU.cpp */,
8CA153E017C4116F0003002D /* PpcJit.cpp */,
8CA153E117C4116F0003002D /* PpcJit.h */,
@@ -1400,6 +1421,7 @@
8CA1540817C413480003002D /* libxxhash.a */,
8C844782186B830400BE03D5 /* libpng16.a */,
8C84479C186B83EB00BE03D5 /* libvjson.a */,
+ 8C9BDA1018C28B31007F6592 /* libcityhash.a */,
);
name = Products;
sourceTree = "";
@@ -1523,8 +1545,6 @@
8CAFA8471785B3C200647A96 /* CoreParameter.h */,
8CAFA8481785B3C200647A96 /* CoreTiming.cpp */,
8CAFA8491785B3C200647A96 /* CoreTiming.h */,
- 8CAFA84A1785B3C200647A96 /* CPU.cpp */,
- 8CAFA84B1785B3C200647A96 /* CPU.h */,
8CAFA84C1785B3C200647A96 /* CwCheat.cpp */,
8CAFA84D1785B3C200647A96 /* CwCheat.h */,
8CAFA84E1785B3C200647A96 /* Debugger */,
@@ -1620,6 +1640,7 @@
8CAFA86D1785B3C200647A96 /* BlockDevices.h */,
8CAFA86E1785B3C200647A96 /* DirectoryFileSystem.cpp */,
8CAFA86F1785B3C200647A96 /* DirectoryFileSystem.h */,
+ 8CC8066A18C27BAA00AB1339 /* FileSystem.cpp */,
8CAFA8701785B3C200647A96 /* FileSystem.h */,
8CAFA8711785B3C200647A96 /* ISOFileSystem.cpp */,
8CAFA8721785B3C200647A96 /* ISOFileSystem.h */,
@@ -1651,6 +1672,8 @@
8CAFA87E1785B3C200647A96 /* HLE.h */,
8CAFA87F1785B3C200647A96 /* HLETables.cpp */,
8CAFA8801785B3C200647A96 /* HLETables.h */,
+ 8CC8066D18C27C1000AB1339 /* ReplaceTables.cpp */,
+ 8CC8066C18C27C1000AB1339 /* ReplaceTables.h */,
8C2D4EC81824001600E65166 /* KernelWaitHelpers.h */,
8C844741186B767200BE03D5 /* proAdhoc.cpp */,
8C844740186B767200BE03D5 /* proAdhoc.h */,
@@ -1724,6 +1747,8 @@
8CAFA8C01785B3C200647A96 /* sceMp4.h */,
8CAFA8C11785B3C200647A96 /* sceMpeg.cpp */,
8CAFA8C21785B3C200647A96 /* sceMpeg.h */,
+ 8CC8067018C27C3B00AB1339 /* sceMt19937.cpp */,
+ 8CC8066F18C27C3B00AB1339 /* sceMt19937.h */,
8CAFA8C31785B3C200647A96 /* sceNet.cpp */,
8CAFA8C41785B3C200647A96 /* sceNet.h */,
8C2D4ECF1824007200E65166 /* sceNetAdhoc.cpp */,
@@ -1830,6 +1855,7 @@
8CAFA8FE1785B3C200647A96 /* ArmCompBranch.cpp */,
8CAFA8FF1785B3C200647A96 /* ArmCompFPU.cpp */,
8CAFA9001785B3C200647A96 /* ArmCompLoadStore.cpp */,
+ 8CC8067218C27C8900AB1339 /* ArmCompReplace.cpp */,
8CAFA9011785B3C200647A96 /* ArmCompVFPU.cpp */,
8C844743186B76B800BE03D5 /* ArmCompVFPUNEON.cpp */,
8CAFA9021785B3C200647A96 /* ArmJit.cpp */,
@@ -1863,6 +1889,7 @@
8CAFA9251785B3C200647A96 /* CompBranch.cpp */,
8CAFA9261785B3C200647A96 /* CompFPU.cpp */,
8CAFA9271785B3C200647A96 /* CompLoadStore.cpp */,
+ 8CC8067418C27CC500AB1339 /* CompReplace.cpp */,
8CAFA9281785B3C200647A96 /* CompVFPU.cpp */,
8CAFA9291785B3C200647A96 /* Jit.cpp */,
8CAFA92A1785B3C200647A96 /* Jit.h */,
@@ -2644,6 +2671,21 @@
productReference = 8C84479C186B83EB00BE03D5 /* libvjson.a */;
productType = "com.apple.product-type.library.static";
};
+ 8C9BDA0A18C28B31007F6592 /* cityhash */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 8C9BDA0D18C28B31007F6592 /* Build configuration list for PBXNativeTarget "cityhash" */;
+ buildPhases = (
+ 8C9BDA0B18C28B31007F6592 /* Sources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = cityhash;
+ productName = xxhash;
+ productReference = 8C9BDA1018C28B31007F6592 /* libcityhash.a */;
+ productType = "com.apple.product-type.library.static";
+ };
8CA1540717C413480003002D /* xxhash */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8CA1540917C413480003002D /* Build configuration list for PBXNativeTarget "xxhash" */;
@@ -2685,6 +2727,7 @@
buildRules = (
);
dependencies = (
+ 8C9BDA1318C28B62007F6592 /* PBXTargetDependency */,
8C8447A1186B843300BE03D5 /* PBXTargetDependency */,
8C844794186B83AD00BE03D5 /* PBXTargetDependency */,
8CB74E3B1786026300C652A7 /* PBXTargetDependency */,
@@ -2864,6 +2907,7 @@
8CAFA7D11785B06F00647A96 /* Common */,
8CAFC1E21785C7CB00647A96 /* Core */,
8CAFC1621785C33D00647A96 /* GPU */,
+ 8C9BDA0A18C28B31007F6592 /* cityhash */,
8CAFC1D21785C7AC00647A96 /* kirk */,
8CAFC12D1785B93F00647A96 /* native */,
8C84477C186B830400BE03D5 /* png16 */,
@@ -2954,6 +2998,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 8C9BDA0B18C28B31007F6592 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8C9BDA1118C28B55007F6592 /* city.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
8CA1540417C413480003002D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -3180,7 +3232,6 @@
8CAFC2A91785CFFF00647A96 /* Config.cpp in Sources */,
8CAFC2AB1785CFFF00647A96 /* Core.cpp in Sources */,
8CAFC2AE1785CFFF00647A96 /* CoreTiming.cpp in Sources */,
- 8CAFC2B01785CFFF00647A96 /* CPU.cpp in Sources */,
8CAFC2B21785D0F500647A96 /* CwCheat.cpp in Sources */,
8CAFC2B41785D11800647A96 /* Breakpoints.cpp in Sources */,
8CAFC2B71785D11800647A96 /* SymbolMap.cpp in Sources */,
@@ -3192,6 +3243,7 @@
8CAFC2C31785D12B00647A96 /* SavedataParam.cpp in Sources */,
8CAFC2C51785D14C00647A96 /* ElfReader.cpp in Sources */,
8CAFC2C81785D14C00647A96 /* ParamSFO.cpp in Sources */,
+ 8CC8066E18C27C1400AB1339 /* ReplaceTables.cpp in Sources */,
8CAFC2CA1785D14C00647A96 /* PBPReader.cpp in Sources */,
8CAFC2CC1785D14C00647A96 /* PrxDecrypter.cpp in Sources */,
8CAFC2D81785D16400647A96 /* PGF.cpp in Sources */,
@@ -3233,6 +3285,7 @@
8CAFC31A1785DAD500647A96 /* sceMp4.cpp in Sources */,
8CAFC31C1785DAD500647A96 /* sceMpeg.cpp in Sources */,
8CAFC31E1785DAD500647A96 /* sceNet.cpp in Sources */,
+ 8CC8066B18C27BBB00AB1339 /* FileSystem.cpp in Sources */,
8C84473F186B762900BE03D5 /* DisassemblyManager.cpp in Sources */,
8C99589B1785DB7000EE4CA8 /* sceOpenPSID.cpp in Sources */,
8C99589D1785DB7000EE4CA8 /* sceP3da.cpp in Sources */,
@@ -3257,6 +3310,7 @@
8C9958D11785DBD100EE4CA8 /* MemMap.cpp in Sources */,
8C9958D31785DBD100EE4CA8 /* MemMapFunctions.cpp in Sources */,
8C9958D41785DBD900EE4CA8 /* JitBlockCache.cpp in Sources */,
+ 8CC8067518C27CC500AB1339 /* CompReplace.cpp in Sources */,
8C9958D61785DBD900EE4CA8 /* JitCommon.cpp in Sources */,
8C9958D81785DBE900EE4CA8 /* MIPS.cpp in Sources */,
8C2D4ECD1824005400E65166 /* sceHeap.cpp in Sources */,
@@ -3293,6 +3347,7 @@
8CD63B07178DD0710039164C /* HDRemaster.cpp in Sources */,
8CA153F417C412410003002D /* VirtualDiscFileSystem.cpp in Sources */,
8CA153F617C412480003002D /* AsyncIOManager.cpp in Sources */,
+ 8CC8067118C27C4000AB1339 /* sceMt19937.cpp in Sources */,
8CA1540F17C415200003002D /* MIPSAsm.cpp in Sources */,
8CA1541117C415200003002D /* MIPSAsmTables.cpp in Sources */,
8CA1541317C415280003002D /* MIPSStackWalk.cpp in Sources */,
@@ -3342,6 +3397,11 @@
target = 8CAFC1621785C33D00647A96 /* GPU */;
targetProxy = 8C9958FF1785DC8D00EE4CA8 /* PBXContainerItemProxy */;
};
+ 8C9BDA1318C28B62007F6592 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 8C9BDA0A18C28B31007F6592 /* cityhash */;
+ targetProxy = 8C9BDA1218C28B62007F6592 /* PBXContainerItemProxy */;
+ };
8CB74E181785FBDF00C652A7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8CAFC1E21785C7CB00647A96 /* Core */;
@@ -3407,6 +3467,22 @@
};
name = Release;
};
+ 8C9BDA0E18C28B31007F6592 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EXECUTABLE_PREFIX = lib;
+ PRODUCT_NAME = cityhash;
+ };
+ name = Debug;
+ };
+ 8C9BDA0F18C28B31007F6592 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EXECUTABLE_PREFIX = lib;
+ PRODUCT_NAME = cityhash;
+ };
+ name = Release;
+ };
8CA1540A17C413480003002D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -3777,6 +3853,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 8C9BDA0D18C28B31007F6592 /* Build configuration list for PBXNativeTarget "cityhash" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 8C9BDA0E18C28B31007F6592 /* Debug */,
+ 8C9BDA0F18C28B31007F6592 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
8CA1540917C413480003002D /* Build configuration list for PBXNativeTarget "xxhash" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/PPSSPPGameCore.mm b/PPSSPPGameCore.mm
index e071f6c..a8032ad 100644
--- a/PPSSPPGameCore.mm
+++ b/PPSSPPGameCore.mm
@@ -115,8 +115,6 @@ - (BOOL)loadFileAtPath:(NSString *)path error:(NSError **)error
_coreParam.renderWidth = 480;
_coreParam.renderHeight = 272;
- _coreParam.outputWidth = 480;
- _coreParam.outputHeight = 272;
_coreParam.pixelWidth = 480;
_coreParam.pixelHeight = 272;
diff --git a/gfx/gl_common.h b/gfx/gl_common.h
index 9534726..5df2c39 100644
--- a/gfx/gl_common.h
+++ b/gfx/gl_common.h
@@ -22,7 +22,7 @@
#endif
#else // OpenGL
// Now that glew is upgraded beyond 4.3, we can define MAY_HAVE_GLES3 on GL platforms
-#define MAY_HAVE_GLES3 1
+//#define MAY_HAVE_GLES3 1
//#include
#if defined(__APPLE__)
#include
@@ -32,6 +32,9 @@
#endif
#define glDrawTextureNV
+#define glBindFragDataLocationIndexed
+#define glBindFragDataLocation glBindFragDataLocationEXT
+#define GL_ONE_MINUS_SRC1_ALPHA GL_ONE_MINUS_SRC_ALPHA
#if !defined(GLchar) && !defined(__APPLE__)
typedef char GLchar;
diff --git a/gfx_es2/fbo.cpp b/gfx_es2/fbo.cpp
index 8106edf..d24016a 100644
--- a/gfx_es2/fbo.cpp
+++ b/gfx_es2/fbo.cpp
@@ -43,6 +43,7 @@ struct FBO {
FBOColorDepth colorDepth;
};
+static FBO *g_overriddenBackbuffer;
// On PC, we always use GL_DEPTH24_STENCIL8.
// On Android, we try to use what's available.
@@ -244,72 +245,92 @@ void fbo_unbind() {
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer);
}
+void fbo_override_backbuffer(FBO *fbo) {
+ g_overriddenBackbuffer = fbo;
+}
+
void fbo_bind_as_render_target(FBO *fbo) {
if (gl_extensions.FBO_ARB) {
- if (gl_extensions.GLES3) {
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo->handle);
- } else {
- // This will collide with bind_for_read - but there's nothing in ES 2.0
- // that actually separate them anyway of course, so doesn't matter.
- glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
- }
- }else{
#ifndef USING_GLES2
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
+ if (true) {
+#else
+ if (gl_extensions.GLES3) {
#endif
- }
-}
-
-void fbo_bind_for_read(FBO *fbo) {
- if (gl_extensions.FBO_ARB) {
- if (gl_extensions.GLES3) {
- glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo->handle);
- } else {
- // This will collide with bind_as_render_target - but there's nothing in ES 2.0
- // that actually separate them anyway of course, so doesn't matter.
- glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
- }
- } else {
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo->handle);
+ } else {
+ // This will collide with bind_for_read - but there's nothing in ES 2.0
+ // that actually separate them anyway of course, so doesn't matter.
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
+ }
+ }else{
#ifndef USING_GLES2
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
#endif
- }
-}
+ }
+ }
-void fbo_bind_color_as_texture(FBO *fbo, int color) {
- if (fbo) {
- glBindTexture(GL_TEXTURE_2D, fbo->color_texture);
- }
-}
-
-void fbo_destroy(FBO *fbo) {
- if (gl_extensions.FBO_ARB) {
- glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glDeleteFramebuffers(1, &fbo->handle);
- glDeleteRenderbuffers(1, &fbo->z_stencil_buffer);
- } else {
+ void fbo_bind_for_read(FBO *fbo) {
+ if (gl_extensions.FBO_ARB) {
#ifndef USING_GLES2
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER_EXT, 0);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- glDeleteFramebuffersEXT(1, &fbo->handle);
- glDeleteRenderbuffersEXT(1, &fbo->z_stencil_buffer);
+ if (true) {
+#else
+ if (gl_extensions.GLES3) {
#endif
- }
-
- glDeleteTextures(1, &fbo->color_texture);
- delete fbo;
-}
-
-void fbo_get_dimensions(FBO *fbo, int *w, int *h) {
- *w = fbo->width;
- *h = fbo->height;
-}
-
-int fbo_get_color_texture(FBO *fbo) {
- return fbo->color_texture;
-}
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo->handle);
+ } else {
+ // This will collide with bind_as_render_target - but there's nothing in ES 2.0
+ // that actually separate them anyway of course, so doesn't matter.
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
+ }
+ } else {
+#ifndef USING_GLES2
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
+#endif
+ }
+ }
+
+ void fbo_bind_color_as_texture(FBO *fbo, int color) {
+ if (fbo) {
+ glBindTexture(GL_TEXTURE_2D, fbo->color_texture);
+ }
+ }
+
+ void fbo_destroy(FBO *fbo) {
+ if (gl_extensions.FBO_ARB) {
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo->handle);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glDeleteFramebuffers(1, &fbo->handle);
+ glDeleteRenderbuffers(1, &fbo->z_stencil_buffer);
+ } else {
+#ifndef USING_GLES2
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->handle);
+ glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER_EXT, 0);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glDeleteFramebuffersEXT(1, &fbo->handle);
+ glDeleteRenderbuffersEXT(1, &fbo->z_stencil_buffer);
+#endif
+ }
+
+ glDeleteTextures(1, &fbo->color_texture);
+ delete fbo;
+ }
+
+ void fbo_get_dimensions(FBO *fbo, int *w, int *h) {
+ *w = fbo->width;
+ *h = fbo->height;
+ }
+
+ int fbo_get_color_texture(FBO *fbo) {
+ return fbo->color_texture;
+ }
+
+ int fbo_get_depth_buffer(FBO *fbo) {
+ return fbo->z_buffer;
+ }
+
+ int fbo_get_stencil_buffer(FBO *fbo) {
+ return fbo->stencil_buffer;
+ }
diff --git a/gfx_es2/fbo.h b/gfx_es2/fbo.h
index 3ef2a53..a8d34c6 100644
--- a/gfx_es2/fbo.h
+++ b/gfx_es2/fbo.h
@@ -35,4 +35,8 @@ void fbo_unbind();
void fbo_destroy(FBO *fbo);
void fbo_get_dimensions(FBO *fbo, int *w, int *h);
-int fbo_get_color_texture(FBO *fbo);
\ No newline at end of file
+int fbo_get_color_texture(FBO *fbo);
+int fbo_get_depth_buffer(FBO *fbo);
+int fbo_get_stencil_buffer(FBO *fbo);
+
+void fbo_override_backbuffer(FBO *fbo); // Makes unbind bind this instead of the real backbuffer.
diff --git a/ppsspp b/ppsspp
index df793cf..7d1bfef 160000
--- a/ppsspp
+++ b/ppsspp
@@ -1 +1 @@
-Subproject commit df793cf99f2f983529a82c6d201381be631949a2
+Subproject commit 7d1bfefb8ea1d1a420bd46e94502fd9ff022e7e5