mirror of
https://github.com/libretro/Play-.git
synced 2025-02-03 15:33:45 +00:00
MacOSX Compilation Fixes
git-svn-id: http://svn.purei.org/purei/trunk@540 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
parent
2b641d5006
commit
8094e3303a
@ -90,11 +90,6 @@
|
||||
7E93A9A00DA0496500F19184 /* VPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E93A9990DA0496500F19184 /* VPU.cpp */; };
|
||||
7E93A9A10DA0496500F19184 /* VPU1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E93A99B0DA0496500F19184 /* VPU1.cpp */; };
|
||||
7E93A9A20DA0496500F19184 /* VuExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E93A99D0DA0496500F19184 /* VuExecutor.cpp */; };
|
||||
7E93AAD40DA0935300F19184 /* libboost_filesystem-mt-1_35.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93AAD00DA0935300F19184 /* libboost_filesystem-mt-1_35.dylib */; };
|
||||
7E93AAD50DA0935300F19184 /* libboost_regex-mt-1_35.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93AAD10DA0935300F19184 /* libboost_regex-mt-1_35.dylib */; };
|
||||
7E93AAD60DA0935300F19184 /* libboost_signals-mt-1_35.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93AAD20DA0935300F19184 /* libboost_signals-mt-1_35.dylib */; };
|
||||
7E93AAD70DA0935300F19184 /* libboost_thread-mt-1_35.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93AAD30DA0935300F19184 /* libboost_thread-mt-1_35.dylib */; };
|
||||
7E93ABC70DA093B100F19184 /* libboost_system-mt-1_35.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93ABC60DA093B100F19184 /* libboost_system-mt-1_35.dylib */; };
|
||||
7E947ABE0D09F49A00A2AE15 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7E947AB80D09F49A00A2AE15 /* InfoPlist.strings */; };
|
||||
7E947ABF0D09F49A00A2AE15 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 7E947ABA0D09F49A00A2AE15 /* MainMenu.nib */; };
|
||||
7E947AC00D09F49A00A2AE15 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 7E947ABC0D09F49A00A2AE15 /* icon.icns */; };
|
||||
@ -138,6 +133,35 @@
|
||||
7EEF338E0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EEF338D0D0B8F63005FE2D8 /* GSH_OpenGLMacOSX.cpp */; };
|
||||
7EEF350F0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EEF350E0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp */; };
|
||||
7EF251B20D83124D00D90D20 /* Iop_PadMan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */; };
|
||||
7EF8E5B9105586E400DB0236 /* Iop_Spu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5B1105586E400DB0236 /* Iop_Spu.cpp */; };
|
||||
7EF8E5BA105586E400DB0236 /* Iop_Spu2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5B3105586E400DB0236 /* Iop_Spu2.cpp */; };
|
||||
7EF8E5BB105586E400DB0236 /* Iop_Spu2_Core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5B5105586E400DB0236 /* Iop_Spu2_Core.cpp */; };
|
||||
7EF8E5BC105586E400DB0236 /* Iop_SpuBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5B7105586E400DB0236 /* Iop_SpuBase.cpp */; };
|
||||
7EF8E5CC1055870B00DB0236 /* Iop_Cdvdman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5C81055870B00DB0236 /* Iop_Cdvdman.cpp */; };
|
||||
7EF8E5CD1055870B00DB0236 /* Iop_SifMan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5CA1055870B00DB0236 /* Iop_SifMan.cpp */; };
|
||||
7EF8E5E31055874B00DB0236 /* Iop_FileIo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5D71055874B00DB0236 /* Iop_FileIo.cpp */; };
|
||||
7EF8E5E41055874B00DB0236 /* Iop_SifCmd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5D91055874B00DB0236 /* Iop_SifCmd.cpp */; };
|
||||
7EF8E5E51055874B00DB0236 /* Iop_SifDynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5DB1055874B00DB0236 /* Iop_SifDynamic.cpp */; };
|
||||
7EF8E5E61055874B00DB0236 /* Iop_SifManNull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5DD1055874B00DB0236 /* Iop_SifManNull.cpp */; };
|
||||
7EF8E5E71055874B00DB0236 /* Iop_SifManPs2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5DF1055874B00DB0236 /* Iop_SifManPs2.cpp */; };
|
||||
7EF8E5E81055874B00DB0236 /* Iop_Vblank.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5E11055874B00DB0236 /* Iop_Vblank.cpp */; };
|
||||
7EF8E5FD105587B300DB0236 /* Iop_DbcMan320.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E5FB105587B300DB0236 /* Iop_DbcMan320.cpp */; };
|
||||
7EF8E606105587EA00DB0236 /* ElfFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E601105587EA00DB0236 /* ElfFile.cpp */; };
|
||||
7EF8E607105587EA00DB0236 /* PadListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E603105587EA00DB0236 /* PadListener.cpp */; };
|
||||
7EF8E608105587EA00DB0236 /* VuBasicBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EF8E604105587EA00DB0236 /* VuBasicBlock.cpp */; };
|
||||
7EF8E64110558E4400DB0236 /* libboost_filesystem-xgcc40-mt-1_37.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EF8E64010558E4400DB0236 /* libboost_filesystem-xgcc40-mt-1_37.dylib */; };
|
||||
7EF8E64510558E5C00DB0236 /* libboost_thread-xgcc40-mt-1_37.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EF8E64410558E5C00DB0236 /* libboost_thread-xgcc40-mt-1_37.dylib */; };
|
||||
7EF8E64910558E8400DB0236 /* libboost_regex-xgcc40-mt-1_37.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EF8E64810558E8400DB0236 /* libboost_regex-xgcc40-mt-1_37.dylib */; };
|
||||
7EF8E64E10558E9E00DB0236 /* libboost_signals-xgcc40-mt-1_37.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EF8E64C10558E9E00DB0236 /* libboost_signals-xgcc40-mt-1_37.dylib */; };
|
||||
7EF8E64F10558E9E00DB0236 /* libboost_system-xgcc40-mt-1_37.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EF8E64D10558E9E00DB0236 /* libboost_system-xgcc40-mt-1_37.dylib */; };
|
||||
7EFA614010544EAD000BB472 /* ControllerInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA613E10544EAD000BB472 /* ControllerInfo.cpp */; };
|
||||
7EFA615A1054506E000BB472 /* AppConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61581054506E000BB472 /* AppConfig.cpp */; };
|
||||
7EFA61B61054928C000BB472 /* StructCollectionStateFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61B21054928C000BB472 /* StructCollectionStateFile.cpp */; };
|
||||
7EFA61B71054928C000BB472 /* StructFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61B41054928C000BB472 /* StructFile.cpp */; };
|
||||
7EFA61BE105492DB000BB472 /* Iop_SubSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61BC105492DB000BB472 /* Iop_SubSystem.cpp */; };
|
||||
7EFA61C910549312000BB472 /* Iop_Dmac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61C310549312000BB472 /* Iop_Dmac.cpp */; };
|
||||
7EFA61CA10549312000BB472 /* Iop_DmacChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61C510549312000BB472 /* Iop_DmacChannel.cpp */; };
|
||||
7EFA61CB10549312000BB472 /* Iop_RootCounters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA61C710549312000BB472 /* Iop_RootCounters.cpp */; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@ -309,11 +333,6 @@
|
||||
7E93A99C0DA0496500F19184 /* VPU1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VPU1.h; path = Source/VPU1.h; sourceTree = "<group>"; };
|
||||
7E93A99D0DA0496500F19184 /* VuExecutor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VuExecutor.cpp; path = Source/VuExecutor.cpp; sourceTree = "<group>"; };
|
||||
7E93A99E0DA0496500F19184 /* VUExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VUExecutor.h; path = Source/VUExecutor.h; sourceTree = "<group>"; };
|
||||
7E93AAD00DA0935300F19184 /* libboost_filesystem-mt-1_35.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_filesystem-mt-1_35.dylib"; path = "/usr/local/lib/libboost_filesystem-mt-1_35.dylib"; sourceTree = "<absolute>"; };
|
||||
7E93AAD10DA0935300F19184 /* libboost_regex-mt-1_35.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_regex-mt-1_35.dylib"; path = "/usr/local/lib/libboost_regex-mt-1_35.dylib"; sourceTree = "<absolute>"; };
|
||||
7E93AAD20DA0935300F19184 /* libboost_signals-mt-1_35.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_signals-mt-1_35.dylib"; path = "/usr/local/lib/libboost_signals-mt-1_35.dylib"; sourceTree = "<absolute>"; };
|
||||
7E93AAD30DA0935300F19184 /* libboost_thread-mt-1_35.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_thread-mt-1_35.dylib"; path = "/usr/local/lib/libboost_thread-mt-1_35.dylib"; sourceTree = "<absolute>"; };
|
||||
7E93ABC60DA093B100F19184 /* libboost_system-mt-1_35.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_system-mt-1_35.dylib"; path = "/usr/local/lib/libboost_system-mt-1_35.dylib"; sourceTree = "<absolute>"; };
|
||||
7E947AB90D09F49A00A2AE15 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; };
|
||||
7E947ABB0D09F49A00A2AE15 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = MainMenu.nib; sourceTree = "<group>"; };
|
||||
7E947ABC0D09F49A00A2AE15 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = icon.icns; path = Source/macosxui/icon.icns; sourceTree = "<group>"; };
|
||||
@ -397,6 +416,59 @@
|
||||
7EEF350E0D0E6E68005FE2D8 /* X86Assembler_Fpu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = X86Assembler_Fpu.cpp; path = Source/X86Assembler_Fpu.cpp; sourceTree = "<group>"; };
|
||||
7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_PadMan.cpp; path = Source/iop/Iop_PadMan.cpp; sourceTree = "<group>"; };
|
||||
7EF251B10D83124D00D90D20 /* Iop_PadMan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_PadMan.h; path = Source/iop/Iop_PadMan.h; sourceTree = "<group>"; };
|
||||
7EF8E5B1105586E400DB0236 /* Iop_Spu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Spu.cpp; path = Source/iop/Iop_Spu.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5B2105586E400DB0236 /* Iop_Spu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Spu.h; path = Source/iop/Iop_Spu.h; sourceTree = "<group>"; };
|
||||
7EF8E5B3105586E400DB0236 /* Iop_Spu2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Spu2.cpp; path = Source/iop/Iop_Spu2.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5B4105586E400DB0236 /* Iop_Spu2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Spu2.h; path = Source/iop/Iop_Spu2.h; sourceTree = "<group>"; };
|
||||
7EF8E5B5105586E400DB0236 /* Iop_Spu2_Core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Spu2_Core.cpp; path = Source/iop/Iop_Spu2_Core.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5B6105586E400DB0236 /* Iop_Spu2_Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Spu2_Core.h; path = Source/iop/Iop_Spu2_Core.h; sourceTree = "<group>"; };
|
||||
7EF8E5B7105586E400DB0236 /* Iop_SpuBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SpuBase.cpp; path = Source/iop/Iop_SpuBase.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5B8105586E400DB0236 /* Iop_SpuBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SpuBase.h; path = Source/iop/Iop_SpuBase.h; sourceTree = "<group>"; };
|
||||
7EF8E5C81055870B00DB0236 /* Iop_Cdvdman.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Cdvdman.cpp; path = Source/iop/Iop_Cdvdman.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5C91055870B00DB0236 /* Iop_Cdvdman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Cdvdman.h; path = Source/iop/Iop_Cdvdman.h; sourceTree = "<group>"; };
|
||||
7EF8E5CA1055870B00DB0236 /* Iop_SifMan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SifMan.cpp; path = Source/iop/Iop_SifMan.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5CB1055870B00DB0236 /* Iop_Sifman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Sifman.h; path = Source/iop/Iop_Sifman.h; sourceTree = "<group>"; };
|
||||
7EF8E5D71055874B00DB0236 /* Iop_FileIo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_FileIo.cpp; path = Source/iop/Iop_FileIo.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5D81055874B00DB0236 /* Iop_FileIo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_FileIo.h; path = Source/iop/Iop_FileIo.h; sourceTree = "<group>"; };
|
||||
7EF8E5D91055874B00DB0236 /* Iop_SifCmd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SifCmd.cpp; path = Source/iop/Iop_SifCmd.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5DA1055874B00DB0236 /* Iop_SifCmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SifCmd.h; path = Source/iop/Iop_SifCmd.h; sourceTree = "<group>"; };
|
||||
7EF8E5DB1055874B00DB0236 /* Iop_SifDynamic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SifDynamic.cpp; path = Source/iop/Iop_SifDynamic.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5DC1055874B00DB0236 /* Iop_SifDynamic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SifDynamic.h; path = Source/iop/Iop_SifDynamic.h; sourceTree = "<group>"; };
|
||||
7EF8E5DD1055874B00DB0236 /* Iop_SifManNull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SifManNull.cpp; path = Source/iop/Iop_SifManNull.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5DE1055874B00DB0236 /* Iop_SifManNull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SifManNull.h; path = Source/iop/Iop_SifManNull.h; sourceTree = "<group>"; };
|
||||
7EF8E5DF1055874B00DB0236 /* Iop_SifManPs2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SifManPs2.cpp; path = Source/iop/Iop_SifManPs2.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5E01055874B00DB0236 /* Iop_SifManPs2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SifManPs2.h; path = Source/iop/Iop_SifManPs2.h; sourceTree = "<group>"; };
|
||||
7EF8E5E11055874B00DB0236 /* Iop_Vblank.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Vblank.cpp; path = Source/iop/Iop_Vblank.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5E21055874B00DB0236 /* Iop_Vblank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Vblank.h; path = Source/iop/Iop_Vblank.h; sourceTree = "<group>"; };
|
||||
7EF8E5FA105587B300DB0236 /* Iop_BiosBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_BiosBase.h; path = Source/iop/Iop_BiosBase.h; sourceTree = "<group>"; };
|
||||
7EF8E5FB105587B300DB0236 /* Iop_DbcMan320.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_DbcMan320.cpp; path = Source/iop/Iop_DbcMan320.cpp; sourceTree = "<group>"; };
|
||||
7EF8E5FC105587B300DB0236 /* Iop_DbcMan320.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_DbcMan320.h; path = Source/iop/Iop_DbcMan320.h; sourceTree = "<group>"; };
|
||||
7EF8E601105587EA00DB0236 /* ElfFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ElfFile.cpp; path = Source/ElfFile.cpp; sourceTree = "<group>"; };
|
||||
7EF8E602105587EA00DB0236 /* ElfFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ElfFile.h; path = Source/ElfFile.h; sourceTree = "<group>"; };
|
||||
7EF8E603105587EA00DB0236 /* PadListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PadListener.cpp; path = Source/PadListener.cpp; sourceTree = "<group>"; };
|
||||
7EF8E604105587EA00DB0236 /* VuBasicBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VuBasicBlock.cpp; path = Source/VuBasicBlock.cpp; sourceTree = "<group>"; };
|
||||
7EF8E605105587EA00DB0236 /* VuBasicBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VuBasicBlock.h; path = Source/VuBasicBlock.h; sourceTree = "<group>"; };
|
||||
7EF8E64010558E4400DB0236 /* libboost_filesystem-xgcc40-mt-1_37.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_filesystem-xgcc40-mt-1_37.dylib"; path = "/usr/local/lib/libboost_filesystem-xgcc40-mt-1_37.dylib"; sourceTree = "<absolute>"; };
|
||||
7EF8E64410558E5C00DB0236 /* libboost_thread-xgcc40-mt-1_37.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_thread-xgcc40-mt-1_37.dylib"; path = "/usr/local/lib/libboost_thread-xgcc40-mt-1_37.dylib"; sourceTree = "<absolute>"; };
|
||||
7EF8E64810558E8400DB0236 /* libboost_regex-xgcc40-mt-1_37.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_regex-xgcc40-mt-1_37.dylib"; path = "/usr/local/lib/libboost_regex-xgcc40-mt-1_37.dylib"; sourceTree = "<absolute>"; };
|
||||
7EF8E64C10558E9E00DB0236 /* libboost_signals-xgcc40-mt-1_37.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_signals-xgcc40-mt-1_37.dylib"; path = "/usr/local/lib/libboost_signals-xgcc40-mt-1_37.dylib"; sourceTree = "<absolute>"; };
|
||||
7EF8E64D10558E9E00DB0236 /* libboost_system-xgcc40-mt-1_37.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_system-xgcc40-mt-1_37.dylib"; path = "/usr/local/lib/libboost_system-xgcc40-mt-1_37.dylib"; sourceTree = "<absolute>"; };
|
||||
7EFA613E10544EAD000BB472 /* ControllerInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ControllerInfo.cpp; path = Source/ControllerInfo.cpp; sourceTree = "<group>"; };
|
||||
7EFA613F10544EAD000BB472 /* ControllerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ControllerInfo.h; path = Source/ControllerInfo.h; sourceTree = "<group>"; };
|
||||
7EFA61581054506E000BB472 /* AppConfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AppConfig.cpp; path = Source/AppConfig.cpp; sourceTree = "<group>"; };
|
||||
7EFA61591054506E000BB472 /* AppConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConfig.h; path = Source/AppConfig.h; sourceTree = "<group>"; };
|
||||
7EFA61B21054928C000BB472 /* StructCollectionStateFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StructCollectionStateFile.cpp; path = Source/StructCollectionStateFile.cpp; sourceTree = "<group>"; };
|
||||
7EFA61B31054928C000BB472 /* StructCollectionStateFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StructCollectionStateFile.h; path = Source/StructCollectionStateFile.h; sourceTree = "<group>"; };
|
||||
7EFA61B41054928C000BB472 /* StructFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StructFile.cpp; path = Source/StructFile.cpp; sourceTree = "<group>"; };
|
||||
7EFA61B51054928C000BB472 /* StructFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StructFile.h; path = Source/StructFile.h; sourceTree = "<group>"; };
|
||||
7EFA61BC105492DB000BB472 /* Iop_SubSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_SubSystem.cpp; path = Source/iop/Iop_SubSystem.cpp; sourceTree = "<group>"; };
|
||||
7EFA61BD105492DB000BB472 /* Iop_SubSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_SubSystem.h; path = Source/iop/Iop_SubSystem.h; sourceTree = "<group>"; };
|
||||
7EFA61C310549312000BB472 /* Iop_Dmac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_Dmac.cpp; path = Source/iop/Iop_Dmac.cpp; sourceTree = "<group>"; };
|
||||
7EFA61C410549312000BB472 /* Iop_Dmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_Dmac.h; path = Source/iop/Iop_Dmac.h; sourceTree = "<group>"; };
|
||||
7EFA61C510549312000BB472 /* Iop_DmacChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_DmacChannel.cpp; path = Source/iop/Iop_DmacChannel.cpp; sourceTree = "<group>"; };
|
||||
7EFA61C610549312000BB472 /* Iop_DmacChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_DmacChannel.h; path = Source/iop/Iop_DmacChannel.h; sourceTree = "<group>"; };
|
||||
7EFA61C710549312000BB472 /* Iop_RootCounters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Iop_RootCounters.cpp; path = Source/iop/Iop_RootCounters.cpp; sourceTree = "<group>"; };
|
||||
7EFA61C810549312000BB472 /* Iop_RootCounters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Iop_RootCounters.h; path = Source/iop/Iop_RootCounters.h; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* Purei.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Purei.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
@ -412,11 +484,11 @@
|
||||
7EE1BC970D4D512800B502BD /* IOKit.framework in Frameworks */,
|
||||
7EE1BC990D4D513500B502BD /* CoreFoundation.framework in Frameworks */,
|
||||
7E6F94920D8B4B0D0060B97B /* libbz2.dylib in Frameworks */,
|
||||
7E93AAD40DA0935300F19184 /* libboost_filesystem-mt-1_35.dylib in Frameworks */,
|
||||
7E93AAD50DA0935300F19184 /* libboost_regex-mt-1_35.dylib in Frameworks */,
|
||||
7E93AAD60DA0935300F19184 /* libboost_signals-mt-1_35.dylib in Frameworks */,
|
||||
7E93AAD70DA0935300F19184 /* libboost_thread-mt-1_35.dylib in Frameworks */,
|
||||
7E93ABC70DA093B100F19184 /* libboost_system-mt-1_35.dylib in Frameworks */,
|
||||
7EF8E64110558E4400DB0236 /* libboost_filesystem-xgcc40-mt-1_37.dylib in Frameworks */,
|
||||
7EF8E64510558E5C00DB0236 /* libboost_thread-xgcc40-mt-1_37.dylib in Frameworks */,
|
||||
7EF8E64910558E8400DB0236 /* libboost_regex-xgcc40-mt-1_37.dylib in Frameworks */,
|
||||
7EF8E64E10558E9E00DB0236 /* libboost_signals-xgcc40-mt-1_37.dylib in Frameworks */,
|
||||
7EF8E64F10558E9E00DB0236 /* libboost_system-xgcc40-mt-1_37.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -529,6 +601,8 @@
|
||||
7E8987060D08B4480077F9ED /* Purei Core */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7EFA61581054506E000BB472 /* AppConfig.cpp */,
|
||||
7EFA61591054506E000BB472 /* AppConfig.h */,
|
||||
7E8987B10D08BD090077F9ED /* ArrayStack.h */,
|
||||
7E8987B20D08BD090077F9ED /* BasicBlock.cpp */,
|
||||
7E8987B30D08BD090077F9ED /* BasicBlock.h */,
|
||||
@ -537,6 +611,8 @@
|
||||
7E8987B80D08BD090077F9ED /* CodeGen_FPU.cpp */,
|
||||
7E9E4F850D4531BE003321D8 /* CodeGen_MD.cpp */,
|
||||
7E8987BA0D08BD090077F9ED /* CodeGen_StackPatterns.h */,
|
||||
7EFA613E10544EAD000BB472 /* ControllerInfo.cpp */,
|
||||
7EFA613F10544EAD000BB472 /* ControllerInfo.h */,
|
||||
7E8987C00D08BD090077F9ED /* COP_FPU.cpp */,
|
||||
7E8987C10D08BD090077F9ED /* COP_FPU.h */,
|
||||
7E8987C20D08BD090077F9ED /* COP_FPU_Reflection.cpp */,
|
||||
@ -551,6 +627,8 @@
|
||||
7E8987CB0D08BD090077F9ED /* Dmac_Channel.h */,
|
||||
7E8987CC0D08BD090077F9ED /* ELF.cpp */,
|
||||
7E8987CD0D08BD090077F9ED /* ELF.h */,
|
||||
7EF8E601105587EA00DB0236 /* ElfFile.cpp */,
|
||||
7EF8E602105587EA00DB0236 /* ElfFile.h */,
|
||||
7E8987D00D08BD090077F9ED /* GIF.cpp */,
|
||||
7E8987D10D08BD090077F9ED /* GIF.h */,
|
||||
7E8987D20D08BD090077F9ED /* GSH_Null.cpp */,
|
||||
@ -629,6 +707,7 @@
|
||||
7E8988270D08BD090077F9ED /* offsetof_def.h */,
|
||||
7E89882A0D08BD090077F9ED /* PadHandler.cpp */,
|
||||
7E89882B0D08BD090077F9ED /* PadHandler.h */,
|
||||
7EF8E603105587EA00DB0236 /* PadListener.cpp */,
|
||||
7E89882C0D08BD090077F9ED /* PadListener.h */,
|
||||
7EAD8BE40D4846DE002CC1C1 /* Posix_VolumeStream.cpp */,
|
||||
7EAD8BE30D4846DE002CC1C1 /* Posix_VolumeStream.h */,
|
||||
@ -645,6 +724,10 @@
|
||||
7E9E4F8B0D4531BE003321D8 /* SIF.h */,
|
||||
7E9E4F8C0D4531BE003321D8 /* SifModule.h */,
|
||||
7E9E4F8D0D4531BE003321D8 /* SifModuleAdapter.h */,
|
||||
7EFA61B21054928C000BB472 /* StructCollectionStateFile.cpp */,
|
||||
7EFA61B31054928C000BB472 /* StructCollectionStateFile.h */,
|
||||
7EFA61B41054928C000BB472 /* StructFile.cpp */,
|
||||
7EFA61B51054928C000BB472 /* StructFile.h */,
|
||||
7E908B500DF383AB00BAAB46 /* Timer.cpp */,
|
||||
7E908B510DF383AB00BAAB46 /* Timer.h */,
|
||||
7E8988370D08BD090077F9ED /* uint128.h */,
|
||||
@ -657,6 +740,8 @@
|
||||
7E93A99A0DA0496500F19184 /* VPU.h */,
|
||||
7E93A99B0DA0496500F19184 /* VPU1.cpp */,
|
||||
7E93A99C0DA0496500F19184 /* VPU1.h */,
|
||||
7EF8E604105587EA00DB0236 /* VuBasicBlock.cpp */,
|
||||
7EF8E605105587EA00DB0236 /* VuBasicBlock.h */,
|
||||
7E93A99D0DA0496500F19184 /* VuExecutor.cpp */,
|
||||
7E93A99E0DA0496500F19184 /* VUExecutor.h */,
|
||||
7E89883E0D08BD090077F9ED /* VUShared.cpp */,
|
||||
@ -700,14 +785,14 @@
|
||||
7E93AAD80DA0936300F19184 /* Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7EF8E64C10558E9E00DB0236 /* libboost_signals-xgcc40-mt-1_37.dylib */,
|
||||
7EF8E64D10558E9E00DB0236 /* libboost_system-xgcc40-mt-1_37.dylib */,
|
||||
7EF8E64810558E8400DB0236 /* libboost_regex-xgcc40-mt-1_37.dylib */,
|
||||
7EF8E64410558E5C00DB0236 /* libboost_thread-xgcc40-mt-1_37.dylib */,
|
||||
7EF8E64010558E4400DB0236 /* libboost_filesystem-xgcc40-mt-1_37.dylib */,
|
||||
7EE1BC980D4D513500B502BD /* CoreFoundation.framework */,
|
||||
7E89890A0D08C3910077F9ED /* Framework.xcodeproj */,
|
||||
7EE1BC960D4D512800B502BD /* IOKit.framework */,
|
||||
7E93AAD00DA0935300F19184 /* libboost_filesystem-mt-1_35.dylib */,
|
||||
7E93AAD10DA0935300F19184 /* libboost_regex-mt-1_35.dylib */,
|
||||
7E93AAD20DA0935300F19184 /* libboost_signals-mt-1_35.dylib */,
|
||||
7E93ABC60DA093B100F19184 /* libboost_system-mt-1_35.dylib */,
|
||||
7E93AAD30DA0935300F19184 /* libboost_thread-mt-1_35.dylib */,
|
||||
7E6F94910D8B4B0D0060B97B /* libbz2.dylib */,
|
||||
7E898A350D08C61A0077F9ED /* libz.dylib */,
|
||||
7E947C3F0D0B4EFB00A2AE15 /* OpenGL.framework */,
|
||||
@ -723,12 +808,23 @@
|
||||
7E9E4F980D4531FF003321D8 /* DirectoryDevice.cpp */,
|
||||
7E9E4F990D4531FF003321D8 /* DirectoryDevice.h */,
|
||||
7E9E4F9A0D4531FF003321D8 /* Ioman_Device.h */,
|
||||
7EF8E5FA105587B300DB0236 /* Iop_BiosBase.h */,
|
||||
7E9E4F9B0D4531FF003321D8 /* Iop_Cdvdfsv.cpp */,
|
||||
7E9E4F9C0D4531FF003321D8 /* Iop_Cdvdfsv.h */,
|
||||
7EF8E5C81055870B00DB0236 /* Iop_Cdvdman.cpp */,
|
||||
7EF8E5C91055870B00DB0236 /* Iop_Cdvdman.h */,
|
||||
7EAD8CE20D48528A002CC1C1 /* Iop_DbcMan.cpp */,
|
||||
7EAD8CE10D48528A002CC1C1 /* Iop_DbcMan.h */,
|
||||
7EF8E5FB105587B300DB0236 /* Iop_DbcMan320.cpp */,
|
||||
7EF8E5FC105587B300DB0236 /* Iop_DbcMan320.h */,
|
||||
7EFA61C310549312000BB472 /* Iop_Dmac.cpp */,
|
||||
7EFA61C410549312000BB472 /* Iop_Dmac.h */,
|
||||
7EFA61C510549312000BB472 /* Iop_DmacChannel.cpp */,
|
||||
7EFA61C610549312000BB472 /* Iop_DmacChannel.h */,
|
||||
7E9E4F9D0D4531FF003321D8 /* Iop_Dynamic.cpp */,
|
||||
7E9E4F9E0D4531FF003321D8 /* Iop_Dynamic.h */,
|
||||
7EF8E5D71055874B00DB0236 /* Iop_FileIo.cpp */,
|
||||
7EF8E5D81055874B00DB0236 /* Iop_FileIo.h */,
|
||||
7E9E4F9F0D4531FF003321D8 /* Iop_Intc.cpp */,
|
||||
7E9E4FA00D4531FF003321D8 /* Iop_Intc.h */,
|
||||
7E9E4FA10D4531FF003321D8 /* Iop_Intrman.cpp */,
|
||||
@ -746,8 +842,30 @@
|
||||
7E9E4FA90D4531FF003321D8 /* Iop_Module.h */,
|
||||
7EF251B00D83124D00D90D20 /* Iop_PadMan.cpp */,
|
||||
7EF251B10D83124D00D90D20 /* Iop_PadMan.h */,
|
||||
7EFA61C710549312000BB472 /* Iop_RootCounters.cpp */,
|
||||
7EFA61C810549312000BB472 /* Iop_RootCounters.h */,
|
||||
7EF8E5D91055874B00DB0236 /* Iop_SifCmd.cpp */,
|
||||
7EF8E5DA1055874B00DB0236 /* Iop_SifCmd.h */,
|
||||
7EF8E5DB1055874B00DB0236 /* Iop_SifDynamic.cpp */,
|
||||
7EF8E5DC1055874B00DB0236 /* Iop_SifDynamic.h */,
|
||||
7EF8E5CA1055870B00DB0236 /* Iop_SifMan.cpp */,
|
||||
7EF8E5CB1055870B00DB0236 /* Iop_Sifman.h */,
|
||||
7EF8E5DD1055874B00DB0236 /* Iop_SifManNull.cpp */,
|
||||
7EF8E5DE1055874B00DB0236 /* Iop_SifManNull.h */,
|
||||
7EF8E5DF1055874B00DB0236 /* Iop_SifManPs2.cpp */,
|
||||
7EF8E5E01055874B00DB0236 /* Iop_SifManPs2.h */,
|
||||
7EF8E5B1105586E400DB0236 /* Iop_Spu.cpp */,
|
||||
7EF8E5B2105586E400DB0236 /* Iop_Spu.h */,
|
||||
7EF8E5B3105586E400DB0236 /* Iop_Spu2.cpp */,
|
||||
7EF8E5B4105586E400DB0236 /* Iop_Spu2.h */,
|
||||
7EF8E5B5105586E400DB0236 /* Iop_Spu2_Core.cpp */,
|
||||
7EF8E5B6105586E400DB0236 /* Iop_Spu2_Core.h */,
|
||||
7EF8E5B7105586E400DB0236 /* Iop_SpuBase.cpp */,
|
||||
7EF8E5B8105586E400DB0236 /* Iop_SpuBase.h */,
|
||||
7E9E4FAA0D4531FF003321D8 /* Iop_Stdio.cpp */,
|
||||
7E9E4FAB0D4531FF003321D8 /* Iop_Stdio.h */,
|
||||
7EFA61BC105492DB000BB472 /* Iop_SubSystem.cpp */,
|
||||
7EFA61BD105492DB000BB472 /* Iop_SubSystem.h */,
|
||||
7E9E4FAC0D4531FF003321D8 /* Iop_Sysclib.cpp */,
|
||||
7E9E4FAD0D4531FF003321D8 /* Iop_Sysclib.h */,
|
||||
7E9E4FAE0D4531FF003321D8 /* Iop_Sysmem.cpp */,
|
||||
@ -764,6 +882,8 @@
|
||||
7E908B550DF383FA00BAAB46 /* Iop_Unknown.h */,
|
||||
7E908B560DF383FA00BAAB46 /* Iop_Unknown2.cpp */,
|
||||
7E908B570DF383FA00BAAB46 /* Iop_Unknown2.h */,
|
||||
7EF8E5E11055874B00DB0236 /* Iop_Vblank.cpp */,
|
||||
7EF8E5E21055874B00DB0236 /* Iop_Vblank.h */,
|
||||
7E9E4FB80D4531FF003321D8 /* IopBios.cpp */,
|
||||
7E9E4FB90D4531FF003321D8 /* IopBios.h */,
|
||||
7E9E4FBA0D4531FF003321D8 /* IsoDevice.cpp */,
|
||||
@ -961,6 +1081,30 @@
|
||||
7E908B520DF383AB00BAAB46 /* Timer.cpp in Sources */,
|
||||
7E908B580DF383FA00BAAB46 /* Iop_Unknown.cpp in Sources */,
|
||||
7E908B590DF383FA00BAAB46 /* Iop_Unknown2.cpp in Sources */,
|
||||
7EFA614010544EAD000BB472 /* ControllerInfo.cpp in Sources */,
|
||||
7EFA615A1054506E000BB472 /* AppConfig.cpp in Sources */,
|
||||
7EFA61B61054928C000BB472 /* StructCollectionStateFile.cpp in Sources */,
|
||||
7EFA61B71054928C000BB472 /* StructFile.cpp in Sources */,
|
||||
7EFA61BE105492DB000BB472 /* Iop_SubSystem.cpp in Sources */,
|
||||
7EFA61C910549312000BB472 /* Iop_Dmac.cpp in Sources */,
|
||||
7EFA61CA10549312000BB472 /* Iop_DmacChannel.cpp in Sources */,
|
||||
7EFA61CB10549312000BB472 /* Iop_RootCounters.cpp in Sources */,
|
||||
7EF8E5B9105586E400DB0236 /* Iop_Spu.cpp in Sources */,
|
||||
7EF8E5BA105586E400DB0236 /* Iop_Spu2.cpp in Sources */,
|
||||
7EF8E5BB105586E400DB0236 /* Iop_Spu2_Core.cpp in Sources */,
|
||||
7EF8E5BC105586E400DB0236 /* Iop_SpuBase.cpp in Sources */,
|
||||
7EF8E5CC1055870B00DB0236 /* Iop_Cdvdman.cpp in Sources */,
|
||||
7EF8E5CD1055870B00DB0236 /* Iop_SifMan.cpp in Sources */,
|
||||
7EF8E5E31055874B00DB0236 /* Iop_FileIo.cpp in Sources */,
|
||||
7EF8E5E41055874B00DB0236 /* Iop_SifCmd.cpp in Sources */,
|
||||
7EF8E5E51055874B00DB0236 /* Iop_SifDynamic.cpp in Sources */,
|
||||
7EF8E5E61055874B00DB0236 /* Iop_SifManNull.cpp in Sources */,
|
||||
7EF8E5E71055874B00DB0236 /* Iop_SifManPs2.cpp in Sources */,
|
||||
7EF8E5E81055874B00DB0236 /* Iop_Vblank.cpp in Sources */,
|
||||
7EF8E5FD105587B300DB0236 /* Iop_DbcMan320.cpp in Sources */,
|
||||
7EF8E606105587EA00DB0236 /* ElfFile.cpp in Sources */,
|
||||
7EF8E607105587EA00DB0236 /* PadListener.cpp in Sources */,
|
||||
7EF8E608105587EA00DB0236 /* VuBasicBlock.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -1044,12 +1188,13 @@
|
||||
DEBUGGER_INCLUDED,
|
||||
MACOSX,
|
||||
_DEBUG,
|
||||
_IOP_EMULATE_MODULES,
|
||||
);
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"/usr/local/include/boost-1_35/boost/tr1/tr1",
|
||||
"/usr/local/include/boost-1_35/",
|
||||
"/usr/local/include/boost-1_37/boost/tr1/tr1",
|
||||
"/usr/local/include/boost-1_37/",
|
||||
"~/Projects/Framework/include",
|
||||
);
|
||||
INFOPLIST_FILE = "";
|
||||
|
@ -1,59 +1,68 @@
|
||||
#include "AppConfig.h"
|
||||
#include "PathUtils.h"
|
||||
#include "Utf8.h"
|
||||
|
||||
#define BASE_DATA_PATH L"Purei Data Files"
|
||||
#define DEFAULT_CONFIG_PATH ("config.xml")
|
||||
|
||||
using namespace Framework;
|
||||
using namespace boost;
|
||||
using namespace std;
|
||||
|
||||
CAppConfig::CAppConfig() :
|
||||
CConfig(BuildConfigPath())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CAppConfig::~CAppConfig()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::GetBasePath()
|
||||
{
|
||||
return (PathUtils::GetPersonalDataPath() / BASE_DATA_PATH);
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::Utf8ToPath(const char* path)
|
||||
{
|
||||
#if defined(WIN32)
|
||||
return CConfig::PathType(Utf8::ConvertFrom(path));
|
||||
#else
|
||||
return CConfig::PathType(path)
|
||||
#endif
|
||||
}
|
||||
|
||||
string CAppConfig::PathToUtf8(const CConfig::PathType& path)
|
||||
{
|
||||
#if defined(WIN32)
|
||||
return Utf8::ConvertTo(path.string());
|
||||
#else
|
||||
return path.string();
|
||||
#endif
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::BuildConfigPath()
|
||||
{
|
||||
#if defined(MACOSX)
|
||||
passwd* userInfo = getpwuid(getuid());
|
||||
if(userInfo == NULL) return DEFAULT_CONFIG_PATH;
|
||||
return string(userInfo->pw_dir) + "/Library/Preferences/com.vapps.Purei.xml";
|
||||
#elif defined(WIN32)
|
||||
CConfig::PathType userPath(GetBasePath());
|
||||
PathUtils::EnsurePathExists(userPath);
|
||||
return (userPath / L"Config.xml");
|
||||
#else
|
||||
return DEFAULT_CONFIG_PATH;
|
||||
#endif
|
||||
}
|
||||
#include "AppConfig.h"
|
||||
#include "PathUtils.h"
|
||||
#include "Utf8.h"
|
||||
#if !defined(WIN32)
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
#define BASE_DATA_PATH L"Purei Data Files"
|
||||
#define DEFAULT_CONFIG_PATH (L"config.xml")
|
||||
|
||||
using namespace Framework;
|
||||
using namespace boost;
|
||||
using namespace std;
|
||||
|
||||
CAppConfig::CAppConfig() :
|
||||
CConfig(BuildConfigPath())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CAppConfig::~CAppConfig()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::GetBasePath()
|
||||
{
|
||||
#if defined(WIN32)
|
||||
return (PathUtils::GetPersonalDataPath() / BASE_DATA_PATH);
|
||||
#elif defined(MACOSX)
|
||||
return (Utf8ToPath(PathUtils::GetHomePath().string().c_str()) / BASE_DATA_PATH);
|
||||
#else
|
||||
return CConfig::PathType();
|
||||
#endif
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::Utf8ToPath(const char* path)
|
||||
{
|
||||
//#if defined(WIN32)
|
||||
return CConfig::PathType(Utf8::ConvertFrom(path));
|
||||
//#else
|
||||
// return CConfig::PathType(path);
|
||||
//#endif
|
||||
}
|
||||
|
||||
string CAppConfig::PathToUtf8(const CConfig::PathType& path)
|
||||
{
|
||||
//#if defined(WIN32)
|
||||
return Utf8::ConvertTo(path.string());
|
||||
//#else
|
||||
// return path.string();
|
||||
//#endif
|
||||
}
|
||||
|
||||
CConfig::PathType CAppConfig::BuildConfigPath()
|
||||
{
|
||||
#if defined(MACOSX)
|
||||
passwd* userInfo = getpwuid(getuid());
|
||||
if(userInfo == NULL) return DEFAULT_CONFIG_PATH;
|
||||
return wstring(Utf8::ConvertFrom(userInfo->pw_dir)) + L"/Library/Preferences/com.vapps.Purei.xml";
|
||||
#elif defined(WIN32)
|
||||
CConfig::PathType userPath(GetBasePath());
|
||||
PathUtils::EnsurePathExists(userPath);
|
||||
return (userPath / L"Config.xml");
|
||||
#else
|
||||
return DEFAULT_CONFIG_PATH;
|
||||
#endif
|
||||
}
|
||||
|
@ -1,24 +1,24 @@
|
||||
#ifndef _APPCONFIG_H_
|
||||
#define _APPCONFIG_H_
|
||||
|
||||
#include "Config.h"
|
||||
#include "Singleton.h"
|
||||
|
||||
class CAppConfig : public Framework::CConfig, public CSingleton<CAppConfig>
|
||||
{
|
||||
public:
|
||||
friend class CSingleton<CAppConfig>;
|
||||
|
||||
static CConfig::PathType GetBasePath();
|
||||
|
||||
static CConfig::PathType Utf8ToPath(const char*);
|
||||
static std::string PathToUtf8(const CConfig::PathType&);
|
||||
|
||||
private:
|
||||
CAppConfig();
|
||||
virtual ~CAppConfig();
|
||||
|
||||
static CConfig::PathType BuildConfigPath();
|
||||
};
|
||||
|
||||
#endif
|
||||
#ifndef _APPCONFIG_H_
|
||||
#define _APPCONFIG_H_
|
||||
|
||||
#include "Config.h"
|
||||
#include "Singleton.h"
|
||||
|
||||
class CAppConfig : public Framework::CConfig, public CSingleton<CAppConfig>
|
||||
{
|
||||
public:
|
||||
friend class CSingleton<CAppConfig>;
|
||||
|
||||
static CConfig::PathType GetBasePath();
|
||||
|
||||
static CConfig::PathType Utf8ToPath(const char*);
|
||||
static std::string PathToUtf8(const CConfig::PathType&);
|
||||
|
||||
private:
|
||||
CAppConfig();
|
||||
virtual ~CAppConfig();
|
||||
|
||||
static CConfig::PathType BuildConfigPath();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -414,51 +414,51 @@ void CCOP_FPU::SWC1()
|
||||
CCOP_FPU::InstructionFuncConstant CCOP_FPU::m_pOpGeneral[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&MFC1, &Illegal, &Illegal, &Illegal, &MTC1, &Illegal, &CTC1, &Illegal,
|
||||
&CCOP_FPU::MFC1, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::MTC1, &CCOP_FPU::Illegal, &CCOP_FPU::CTC1, &CCOP_FPU::Illegal,
|
||||
//0x08
|
||||
&BC1, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::BC1, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x10
|
||||
&S, &Illegal, &Illegal, &Illegal, &W, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::S, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::W, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_FPU::InstructionFuncConstant CCOP_FPU::m_pOpSingle[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&ADD_S, &SUB_S, &MUL_S, &DIV_S, &SQRT_S, &ABS_S, &MOV_S, &NEG_S,
|
||||
&CCOP_FPU::ADD_S, &CCOP_FPU::SUB_S, &CCOP_FPU::MUL_S, &CCOP_FPU::DIV_S, &CCOP_FPU::SQRT_S, &CCOP_FPU::ABS_S, &CCOP_FPU::MOV_S, &CCOP_FPU::NEG_S,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x18
|
||||
&ADDA_S, &Illegal, &MULA_S, &Illegal, &MADD_S, &MSUB_S, &Illegal, &Illegal,
|
||||
&CCOP_FPU::ADDA_S, &CCOP_FPU::Illegal, &CCOP_FPU::MULA_S, &CCOP_FPU::Illegal, &CCOP_FPU::MADD_S, &CCOP_FPU::MSUB_S, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x20
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &CVT_W_S, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::CVT_W_S, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x28
|
||||
&MAX_S, &MIN_S, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::MAX_S, &CCOP_FPU::MIN_S, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x30
|
||||
&Illegal, &Illegal, &C_EQ_S, &Illegal, &C_LT_S, &Illegal, &C_LE_S, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::C_EQ_S, &CCOP_FPU::Illegal, &CCOP_FPU::C_LT_S, &CCOP_FPU::Illegal, &CCOP_FPU::C_LE_S, &CCOP_FPU::Illegal,
|
||||
//0x38
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_FPU::InstructionFuncConstant CCOP_FPU::m_pOpWord[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x20
|
||||
&CVT_S_W, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::CVT_S_W, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x28
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x30
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
//0x38
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal, &CCOP_FPU::Illegal,
|
||||
};
|
||||
|
@ -1,340 +1,340 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
#include "COP_SCU.h"
|
||||
#include "MIPS.h"
|
||||
#include "CodeGen.h"
|
||||
#include "offsetof_def.h"
|
||||
|
||||
char* CCOP_SCU::m_sRegName[] =
|
||||
{
|
||||
"Index",
|
||||
"Random",
|
||||
"EntryLo0",
|
||||
"EntryLo1",
|
||||
"Context",
|
||||
"PageMask",
|
||||
"Wired",
|
||||
"*RESERVED*",
|
||||
"BadVAddr",
|
||||
"Count",
|
||||
"EntryHi",
|
||||
"Compare",
|
||||
"Status",
|
||||
"Cause",
|
||||
"EPC",
|
||||
"PrevID",
|
||||
"Config",
|
||||
"LLAddr",
|
||||
"WatchLo",
|
||||
"WatchHi",
|
||||
"XContext",
|
||||
"CPCOND0",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"PErr",
|
||||
"CacheErr",
|
||||
"TagLo",
|
||||
"TagHi",
|
||||
"ErrorEPC",
|
||||
"*RESERVED*"
|
||||
};
|
||||
|
||||
CCOP_SCU::CCOP_SCU(MIPS_REGSIZE nRegSize) :
|
||||
CMIPSCoprocessor(nRegSize),
|
||||
m_nRT(0),
|
||||
m_nRD(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CCOP_SCU::CompileInstruction(uint32 nAddress, CCodeGen* codeGen, CMIPS* pCtx)
|
||||
{
|
||||
SetupQuickVariables(nAddress, codeGen, pCtx);
|
||||
|
||||
m_nRT = (uint8)((m_nOpcode >> 16) & 0x1F);
|
||||
m_nRD = (uint8)((m_nOpcode >> 11) & 0x1F);
|
||||
|
||||
((this)->*(m_pOpGeneral[(m_nOpcode >> 21) & 0x1F]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//General Opcodes
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CCOP_SCU::MFC0()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
|
||||
m_codeGen->SeX();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[1]));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
|
||||
}
|
||||
|
||||
//04
|
||||
void CCOP_SCU::MTC0()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
|
||||
}
|
||||
|
||||
//08
|
||||
void CCOP_SCU::BC0()
|
||||
{
|
||||
((this)->*(m_pOpBC0[m_nRT]))();
|
||||
}
|
||||
|
||||
//10
|
||||
void CCOP_SCU::C0()
|
||||
{
|
||||
((this)->*(m_pOpC0[(m_nOpcode & 0x3F)]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Branches
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CCOP_SCU::BC0F()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[CPCOND0]));
|
||||
m_codeGen->PushCst(0);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
Branch(true);
|
||||
}
|
||||
|
||||
//01
|
||||
void CCOP_SCU::BC0T()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[CPCOND0]));
|
||||
m_codeGen->PushCst(0);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
Branch(false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Coprocessor Specific Opcodes
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//18
|
||||
void CCOP_SCU::ERET()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(0x04);
|
||||
m_codeGen->And();
|
||||
|
||||
m_codeGen->PushCst(0x00);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
|
||||
m_codeGen->BeginIfElse(false);
|
||||
{
|
||||
//ERL bit was set
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[ERROREPC]));
|
||||
// m_codeGen->PullRel(offsetof(CMIPS, m_State.nPC));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nDelayedJumpAddr));
|
||||
|
||||
//Clear ERL bit
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x04);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
m_codeGen->BeginIfElseAlt();
|
||||
{
|
||||
//EXL bit wasn't set, we assume ERL was (unsafe)
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[EPC]));
|
||||
// m_codeGen->PullRel(offsetof(CMIPS, m_State.nPC));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nDelayedJumpAddr));
|
||||
|
||||
//Clear EXL bit
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x02);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
m_codeGen->EndIf();
|
||||
}
|
||||
|
||||
//38
|
||||
void CCOP_SCU::EI()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
//Should check for pending interrupts here
|
||||
m_codeGen->PushCst(0x00010001);
|
||||
m_codeGen->Or();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
|
||||
//39
|
||||
void CCOP_SCU::DI()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x00010001);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Opcode Tables
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpGeneral[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&MFC0, &Illegal, &Illegal, &Illegal, &MTC0, &Illegal, &Illegal, &Illegal,
|
||||
//0x08
|
||||
&BC0, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&C0, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpBC0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&BC0F, &BC0T, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpC0[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&ERET, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x20
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x28
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x30
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x38
|
||||
&EI, &DI, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
void CCOP_SCU::GetInstruction(uint32 nOpcode, char* sText)
|
||||
{
|
||||
switch((nOpcode >> 21) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
strcpy(sText, "MFC0");
|
||||
break;
|
||||
case 0x04:
|
||||
strcpy(sText, "MTC0");
|
||||
break;
|
||||
case 0x08:
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
strcpy(sText, "BC0F");
|
||||
break;
|
||||
case 0x01:
|
||||
strcpy(sText, "BC0T");
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x10:
|
||||
switch(nOpcode & 0x3F)
|
||||
{
|
||||
case 0x02:
|
||||
strcpy(sText, "TLBWI");
|
||||
break;
|
||||
case 0x18:
|
||||
strcpy(sText, "ERET");
|
||||
break;
|
||||
case 0x38:
|
||||
strcpy(sText, "EI");
|
||||
break;
|
||||
case 0x39:
|
||||
strcpy(sText, "DI");
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CCOP_SCU::GetArguments(uint32 nAddress, uint32 nOpcode, char* sText)
|
||||
{
|
||||
uint8 nRT = static_cast<uint8>((nOpcode >> 16) & 0x1F);
|
||||
uint8 nRD = static_cast<uint8>((nOpcode >> 11) & 0x1F);
|
||||
uint16 nImm = static_cast<uint16>(nOpcode);
|
||||
switch((nOpcode >> 21) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x04:
|
||||
sprintf(sText, "%s, %s", CMIPS::m_sGPRName[nRT], m_sRegName[nRD]);
|
||||
break;
|
||||
case 0x08:
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
sprintf(sText, "0x%0.8X", nAddress + CMIPS::GetBranch(nImm) + 4);
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 CCOP_SCU::GetEffectiveAddress(uint32 nAddress, uint32 nOpcode)
|
||||
{
|
||||
if(((nOpcode >> 21) & 0x1F) == 0x08)
|
||||
{
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
return (nAddress + CMIPS::GetBranch(static_cast<uint16>(nOpcode)) + 4);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool CCOP_SCU::IsBranch(uint32 nOpcode)
|
||||
{
|
||||
if(((nOpcode >> 21) & 0x1F) == 0x08)
|
||||
{
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
#include "COP_SCU.h"
|
||||
#include "MIPS.h"
|
||||
#include "CodeGen.h"
|
||||
#include "offsetof_def.h"
|
||||
|
||||
char* CCOP_SCU::m_sRegName[] =
|
||||
{
|
||||
"Index",
|
||||
"Random",
|
||||
"EntryLo0",
|
||||
"EntryLo1",
|
||||
"Context",
|
||||
"PageMask",
|
||||
"Wired",
|
||||
"*RESERVED*",
|
||||
"BadVAddr",
|
||||
"Count",
|
||||
"EntryHi",
|
||||
"Compare",
|
||||
"Status",
|
||||
"Cause",
|
||||
"EPC",
|
||||
"PrevID",
|
||||
"Config",
|
||||
"LLAddr",
|
||||
"WatchLo",
|
||||
"WatchHi",
|
||||
"XContext",
|
||||
"CPCOND0",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"*RESERVED*",
|
||||
"PErr",
|
||||
"CacheErr",
|
||||
"TagLo",
|
||||
"TagHi",
|
||||
"ErrorEPC",
|
||||
"*RESERVED*"
|
||||
};
|
||||
|
||||
CCOP_SCU::CCOP_SCU(MIPS_REGSIZE nRegSize) :
|
||||
CMIPSCoprocessor(nRegSize),
|
||||
m_nRT(0),
|
||||
m_nRD(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CCOP_SCU::CompileInstruction(uint32 nAddress, CCodeGen* codeGen, CMIPS* pCtx)
|
||||
{
|
||||
SetupQuickVariables(nAddress, codeGen, pCtx);
|
||||
|
||||
m_nRT = (uint8)((m_nOpcode >> 16) & 0x1F);
|
||||
m_nRD = (uint8)((m_nOpcode >> 11) & 0x1F);
|
||||
|
||||
((this)->*(m_pOpGeneral[(m_nOpcode >> 21) & 0x1F]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//General Opcodes
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CCOP_SCU::MFC0()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
|
||||
m_codeGen->SeX();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[1]));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
|
||||
}
|
||||
|
||||
//04
|
||||
void CCOP_SCU::MTC0()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
|
||||
}
|
||||
|
||||
//08
|
||||
void CCOP_SCU::BC0()
|
||||
{
|
||||
((this)->*(m_pOpBC0[m_nRT]))();
|
||||
}
|
||||
|
||||
//10
|
||||
void CCOP_SCU::C0()
|
||||
{
|
||||
((this)->*(m_pOpC0[(m_nOpcode & 0x3F)]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Branches
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CCOP_SCU::BC0F()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[CPCOND0]));
|
||||
m_codeGen->PushCst(0);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
Branch(true);
|
||||
}
|
||||
|
||||
//01
|
||||
void CCOP_SCU::BC0T()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[CPCOND0]));
|
||||
m_codeGen->PushCst(0);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
Branch(false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Coprocessor Specific Opcodes
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//18
|
||||
void CCOP_SCU::ERET()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(0x04);
|
||||
m_codeGen->And();
|
||||
|
||||
m_codeGen->PushCst(0x00);
|
||||
m_codeGen->Cmp(CCodeGen::CONDITION_EQ);
|
||||
|
||||
m_codeGen->BeginIfElse(false);
|
||||
{
|
||||
//ERL bit was set
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[ERROREPC]));
|
||||
// m_codeGen->PullRel(offsetof(CMIPS, m_State.nPC));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nDelayedJumpAddr));
|
||||
|
||||
//Clear ERL bit
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x04);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
m_codeGen->BeginIfElseAlt();
|
||||
{
|
||||
//EXL bit wasn't set, we assume ERL was (unsafe)
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[EPC]));
|
||||
// m_codeGen->PullRel(offsetof(CMIPS, m_State.nPC));
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nDelayedJumpAddr));
|
||||
|
||||
//Clear EXL bit
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x02);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
m_codeGen->EndIf();
|
||||
}
|
||||
|
||||
//38
|
||||
void CCOP_SCU::EI()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
//Should check for pending interrupts here
|
||||
m_codeGen->PushCst(0x00010001);
|
||||
m_codeGen->Or();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
|
||||
//39
|
||||
void CCOP_SCU::DI()
|
||||
{
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
m_codeGen->PushCst(~0x00010001);
|
||||
m_codeGen->And();
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[STATUS]));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Opcode Tables
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpGeneral[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CCOP_SCU::MFC0, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::MTC0, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x08
|
||||
&CCOP_SCU::BC0, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x10
|
||||
&CCOP_SCU::C0, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x18
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpBC0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CCOP_SCU::BC0F, &CCOP_SCU::BC0T, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x08
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x10
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x18
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_SCU::InstructionFuncConstant CCOP_SCU::m_pOpC0[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x08
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x10
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x18
|
||||
&CCOP_SCU::ERET, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x20
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x28
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x30
|
||||
&CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
//0x38
|
||||
&CCOP_SCU::EI, &CCOP_SCU::DI, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal, &CCOP_SCU::Illegal,
|
||||
};
|
||||
|
||||
void CCOP_SCU::GetInstruction(uint32 nOpcode, char* sText)
|
||||
{
|
||||
switch((nOpcode >> 21) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
strcpy(sText, "MFC0");
|
||||
break;
|
||||
case 0x04:
|
||||
strcpy(sText, "MTC0");
|
||||
break;
|
||||
case 0x08:
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
strcpy(sText, "BC0F");
|
||||
break;
|
||||
case 0x01:
|
||||
strcpy(sText, "BC0T");
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x10:
|
||||
switch(nOpcode & 0x3F)
|
||||
{
|
||||
case 0x02:
|
||||
strcpy(sText, "TLBWI");
|
||||
break;
|
||||
case 0x18:
|
||||
strcpy(sText, "ERET");
|
||||
break;
|
||||
case 0x38:
|
||||
strcpy(sText, "EI");
|
||||
break;
|
||||
case 0x39:
|
||||
strcpy(sText, "DI");
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "???");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CCOP_SCU::GetArguments(uint32 nAddress, uint32 nOpcode, char* sText)
|
||||
{
|
||||
uint8 nRT = static_cast<uint8>((nOpcode >> 16) & 0x1F);
|
||||
uint8 nRD = static_cast<uint8>((nOpcode >> 11) & 0x1F);
|
||||
uint16 nImm = static_cast<uint16>(nOpcode);
|
||||
switch((nOpcode >> 21) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x04:
|
||||
sprintf(sText, "%s, %s", CMIPS::m_sGPRName[nRT], m_sRegName[nRD]);
|
||||
break;
|
||||
case 0x08:
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
sprintf(sText, "0x%0.8X", nAddress + CMIPS::GetBranch(nImm) + 4);
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
strcpy(sText, "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 CCOP_SCU::GetEffectiveAddress(uint32 nAddress, uint32 nOpcode)
|
||||
{
|
||||
if(((nOpcode >> 21) & 0x1F) == 0x08)
|
||||
{
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
return (nAddress + CMIPS::GetBranch(static_cast<uint16>(nOpcode)) + 4);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool CCOP_SCU::IsBranch(uint32 nOpcode)
|
||||
{
|
||||
if(((nOpcode >> 21) & 0x1F) == 0x08)
|
||||
{
|
||||
switch((nOpcode >> 16) & 0x1F)
|
||||
{
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -481,79 +481,79 @@ void CCOP_VU::VRXOR()
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpCop2[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &QMFC2, &CFC2, &Illegal, &Illegal, &QMTC2, &CTC2, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::QMFC2, &CCOP_VU::CFC2, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::QMTC2, &CCOP_VU::CTC2, &CCOP_VU::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x10
|
||||
&V, &V, &V, &V, &V, &V, &V, &V,
|
||||
&CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V,
|
||||
//0x18
|
||||
&V, &V, &V, &V, &V, &V, &V, &V,
|
||||
&CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V, &CCOP_VU::V,
|
||||
};
|
||||
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVector[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&VADDbc, &VADDbc, &VADDbc, &VADDbc, &VSUBbc, &VSUBbc, &VSUBbc, &VSUBbc,
|
||||
&CCOP_VU::VADDbc, &CCOP_VU::VADDbc, &CCOP_VU::VADDbc, &CCOP_VU::VADDbc, &CCOP_VU::VSUBbc, &CCOP_VU::VSUBbc, &CCOP_VU::VSUBbc, &CCOP_VU::VSUBbc,
|
||||
//0x08
|
||||
&VMADDbc, &VMADDbc, &VMADDbc, &VMADDbc, &VMSUBbc, &VMSUBbc, &VMSUBbc, &VMSUBbc,
|
||||
&CCOP_VU::VMADDbc, &CCOP_VU::VMADDbc, &CCOP_VU::VMADDbc, &CCOP_VU::VMADDbc, &CCOP_VU::VMSUBbc, &CCOP_VU::VMSUBbc, &CCOP_VU::VMSUBbc, &CCOP_VU::VMSUBbc,
|
||||
//0x10
|
||||
&VMAXbc, &Illegal, &Illegal, &Illegal, &VMINIbc, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VMAXbc, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VMINIbc, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x18
|
||||
&VMULbc, &VMULbc, &VMULbc, &VMULbc, &VMULq, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VMULbc, &CCOP_VU::VMULbc, &CCOP_VU::VMULbc, &CCOP_VU::VMULbc, &CCOP_VU::VMULq, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x20
|
||||
&VADDq, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VADDq, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x28
|
||||
&VADD, &Illegal, &VMUL, &VMAX, &VSUB, &Illegal, &VOPMSUB, &VMINI,
|
||||
&CCOP_VU::VADD, &CCOP_VU::Illegal, &CCOP_VU::VMUL, &CCOP_VU::VMAX, &CCOP_VU::VSUB, &CCOP_VU::Illegal, &CCOP_VU::VOPMSUB, &CCOP_VU::VMINI,
|
||||
//0x30
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x38
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &VX0, &VX1, &VX2, &VX3,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VX0, &CCOP_VU::VX1, &CCOP_VU::VX2, &CCOP_VU::VX3,
|
||||
};
|
||||
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVx0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&VADDAbc, &VSUBAbc, &VMADDAbc, &VMSUBAbc, &VITOF0, &VFTOI0, &VMULAbc, &Illegal,
|
||||
&CCOP_VU::VADDAbc, &CCOP_VU::VSUBAbc, &CCOP_VU::VMADDAbc, &CCOP_VU::VMSUBAbc, &CCOP_VU::VITOF0, &CCOP_VU::VFTOI0, &CCOP_VU::VMULAbc, &CCOP_VU::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &VADDA, &Illegal, &VMOVE, &Illegal, &VDIV, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VADDA, &CCOP_VU::Illegal, &CCOP_VU::VMOVE, &CCOP_VU::Illegal, &CCOP_VU::VDIV, &CCOP_VU::Illegal,
|
||||
//0x10
|
||||
&VRNEXT, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VRNEXT, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVx1[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&VADDAbc, &VSUBAbc, &VMADDAbc, &VMSUBAbc, &VITOF4, &VFTOI4, &VMULAbc, &Illegal,
|
||||
&CCOP_VU::VADDAbc, &CCOP_VU::VSUBAbc, &CCOP_VU::VMADDAbc, &CCOP_VU::VMSUBAbc, &CCOP_VU::VITOF4, &CCOP_VU::VFTOI4, &CCOP_VU::VMULAbc, &CCOP_VU::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &VMR32, &Illegal, &VSQRT, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VMR32, &CCOP_VU::Illegal, &CCOP_VU::VSQRT, &CCOP_VU::Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVx2[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&VADDAbc, &VSUBAbc, &VMADDAbc, &VMSUBAbc, &Illegal, &Illegal, &VMULAbc, &Illegal,
|
||||
&CCOP_VU::VADDAbc, &CCOP_VU::VSUBAbc, &CCOP_VU::VMADDAbc, &CCOP_VU::VMSUBAbc, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VMULAbc, &CCOP_VU::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &VOPMULA, &Illegal, &Illegal, &VRSQRT, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VOPMULA, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VRSQRT, &CCOP_VU::Illegal,
|
||||
//0x10
|
||||
&VRINIT, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VRINIT, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
};
|
||||
|
||||
CCOP_VU::InstructionFuncConstant CCOP_VU::m_pOpVx3[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&VADDAbc, &VSUBAbc, &VMADDAbc, &VMSUBAbc, &VITOF15, &Illegal, &VMULAbc, &VCLIP,
|
||||
&CCOP_VU::VADDAbc, &CCOP_VU::VSUBAbc, &CCOP_VU::VMADDAbc, &CCOP_VU::VMSUBAbc, &CCOP_VU::VITOF15, &CCOP_VU::Illegal, &CCOP_VU::VMULAbc, &CCOP_VU::VCLIP,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &VNOP, &Illegal, &Illegal, &VWAITQ, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VNOP, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::VWAITQ, &CCOP_VU::Illegal,
|
||||
//0x10
|
||||
&VRXOR, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::VRXOR, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal, &CCOP_VU::Illegal,
|
||||
};
|
||||
|
2488
Source/GSHandler.cpp
2488
Source/GSHandler.cpp
File diff suppressed because it is too large
Load Diff
@ -710,7 +710,8 @@ inline uint8 CGSHandler::CPixelIndexor<CGSHandler::STORAGEPSMT4>::GetPixel(unsig
|
||||
return (uint8)(((uint32*)&m_pMemory[nAddress])[Storage::m_nColumnWordTable[nSubTable][nY][nX]] >> nShiftAmount) & 0x0F;
|
||||
}
|
||||
|
||||
template <> void CGSHandler::CPixelIndexor<CGSHandler::STORAGEPSMT4>::SetPixel(unsigned int nX, unsigned int nY, uint8 nPixel)
|
||||
template <>
|
||||
inline void CGSHandler::CPixelIndexor<CGSHandler::STORAGEPSMT4>::SetPixel(unsigned int nX, unsigned int nY, uint8 nPixel)
|
||||
{
|
||||
typedef STORAGEPSMT4 Storage;
|
||||
|
||||
|
@ -657,47 +657,47 @@ void CMA_EE::PCPYH()
|
||||
CMA_EE::InstructionFuncConstant CMA_EE::m_pOpMmi0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &PSUBW, &Illegal, &Illegal, &PADDH, &Illegal, &PCGTH, &PMAXH,
|
||||
&CMA_EE::Illegal, &CMA_EE::PSUBW, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PADDH, &CMA_EE::Illegal, &CMA_EE::PCGTH, &CMA_EE::PMAXH,
|
||||
//0x08
|
||||
&Illegal, &PSUBB, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::PSUBB, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x10
|
||||
&PADDSW, &Illegal, &PEXTLW, &Illegal, &Illegal, &Illegal, &PEXTLH, &PPACH,
|
||||
&CMA_EE::PADDSW, &CMA_EE::Illegal, &CMA_EE::PEXTLW, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PEXTLH, &CMA_EE::PPACH,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &PEXTLB, &PPACB, &Illegal, &Illegal, &PEXT5, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PEXTLB, &CMA_EE::PPACB, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PEXT5, &CMA_EE::Illegal,
|
||||
};
|
||||
|
||||
CMA_EE::InstructionFuncConstant CMA_EE::m_pOpMmi1[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &PCEQW, &Illegal, &Illegal, &Illegal, &Illegal, &PMINH,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PCEQW, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PMINH,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x10
|
||||
&PADDUW, &Illegal, &PEXTUW, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::PADDUW, &CMA_EE::Illegal, &CMA_EE::PEXTUW, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &PEXTUB, &QFSRV, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PEXTUB, &CMA_EE::QFSRV, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
};
|
||||
|
||||
CMA_EE::InstructionFuncConstant CMA_EE::m_pOpMmi2[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &PCPYLD, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PCPYLD, &CMA_EE::Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &PAND, &PXOR, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PAND, &CMA_EE::PXOR, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &PROT3W,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PROT3W,
|
||||
};
|
||||
|
||||
CMA_EE::InstructionFuncConstant CMA_EE::m_pOpMmi3[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &PCPYUD, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PCPYUD, &CMA_EE::Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &POR, &PNOR, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::POR, &CMA_EE::PNOR, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &PCPYH, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
&CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::PCPYH, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal, &CMA_EE::Illegal,
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,443 +1,443 @@
|
||||
#include "MA_VU.h"
|
||||
#include "MIPS.h"
|
||||
#include "VUShared.h"
|
||||
#include "VIF.h"
|
||||
#include "CodeGen.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
CMA_VU::CUpper::CUpper() :
|
||||
CMIPSInstructionFactory(MIPS_REGSIZE_32),
|
||||
m_nFT(0),
|
||||
m_nFS(0),
|
||||
m_nFD(0),
|
||||
m_nBc(0),
|
||||
m_nDest(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CMA_VU::CUpper::CompileInstruction(uint32 nAddress, CCodeGen* codeGen, CMIPS* pCtx)
|
||||
{
|
||||
SetupQuickVariables(nAddress, codeGen, pCtx);
|
||||
|
||||
m_nDest = (uint8 )((m_nOpcode >> 21) & 0x000F);
|
||||
m_nFT = (uint8 )((m_nOpcode >> 16) & 0x001F);
|
||||
m_nFS = (uint8 )((m_nOpcode >> 11) & 0x001F);
|
||||
m_nFD = (uint8 )((m_nOpcode >> 6) & 0x001F);
|
||||
|
||||
m_nBc = (uint8 )((m_nOpcode >> 0) & 0x0003);
|
||||
|
||||
((this)->*(m_pOpVector[m_nOpcode & 0x3F]))();
|
||||
|
||||
if(m_nOpcode & 0x80000000)
|
||||
{
|
||||
LOI(pCtx->m_pMemoryMap->GetInstruction(nAddress - 4));
|
||||
}
|
||||
|
||||
if(m_nOpcode & 0x40000000)
|
||||
{
|
||||
//Force exception checking if microprogram is done
|
||||
m_codeGen->PushCst(1);
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nHasException));
|
||||
}
|
||||
}
|
||||
|
||||
void CMA_VU::CUpper::LOI(uint32 nValue)
|
||||
{
|
||||
m_codeGen->PushCst(nValue);
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP2I));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
//01
|
||||
//02
|
||||
//03
|
||||
void CMA_VU::CUpper::ADDbc()
|
||||
{
|
||||
VUShared::ADDbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//04
|
||||
//05
|
||||
//06
|
||||
//07
|
||||
void CMA_VU::CUpper::SUBbc()
|
||||
{
|
||||
VUShared::SUBbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//08
|
||||
//09
|
||||
//0A
|
||||
//0B
|
||||
void CMA_VU::CUpper::MADDbc()
|
||||
{
|
||||
VUShared::MADDbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//0C
|
||||
//0D
|
||||
//0E
|
||||
//0F
|
||||
void CMA_VU::CUpper::MSUBbc()
|
||||
{
|
||||
VUShared::MSUBbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//10
|
||||
//11
|
||||
//12
|
||||
//13
|
||||
void CMA_VU::CUpper::MAXbc()
|
||||
{
|
||||
VUShared::MAXbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//14
|
||||
//15
|
||||
//16
|
||||
//17
|
||||
void CMA_VU::CUpper::MINIbc()
|
||||
{
|
||||
VUShared::MINIbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//18
|
||||
//19
|
||||
//1A
|
||||
//1B
|
||||
void CMA_VU::CUpper::MULbc()
|
||||
{
|
||||
VUShared::MULbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//1C
|
||||
void CMA_VU::CUpper::MULq()
|
||||
{
|
||||
VUShared::MULq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//1E
|
||||
void CMA_VU::CUpper::MULi()
|
||||
{
|
||||
VUShared::MULi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//1F
|
||||
void CMA_VU::CUpper::MINIi()
|
||||
{
|
||||
VUShared::MINIi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//20
|
||||
void CMA_VU::CUpper::ADDq()
|
||||
{
|
||||
VUShared::ADDq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//21
|
||||
void CMA_VU::CUpper::MADDq()
|
||||
{
|
||||
VUShared::MADDq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//22
|
||||
void CMA_VU::CUpper::ADDi()
|
||||
{
|
||||
VUShared::ADDi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//26
|
||||
void CMA_VU::CUpper::SUBi()
|
||||
{
|
||||
VUShared::SUBi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//27
|
||||
void CMA_VU::CUpper::MSUBi()
|
||||
{
|
||||
VUShared::MSUBi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//28
|
||||
void CMA_VU::CUpper::ADD()
|
||||
{
|
||||
VUShared::ADD(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//29
|
||||
void CMA_VU::CUpper::MADD()
|
||||
{
|
||||
VUShared::MADD(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2A
|
||||
void CMA_VU::CUpper::MUL()
|
||||
{
|
||||
VUShared::MUL(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2B
|
||||
void CMA_VU::CUpper::MAX()
|
||||
{
|
||||
VUShared::MAX(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2C
|
||||
void CMA_VU::CUpper::SUB()
|
||||
{
|
||||
VUShared::SUB(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2E
|
||||
void CMA_VU::CUpper::OPMSUB()
|
||||
{
|
||||
VUShared::OPMSUB(m_codeGen, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2F
|
||||
void CMA_VU::CUpper::MINI()
|
||||
{
|
||||
VUShared::MINI(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//3C
|
||||
void CMA_VU::CUpper::VECTOR0()
|
||||
{
|
||||
((this)->*(m_pOpVector0[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3D
|
||||
void CMA_VU::CUpper::VECTOR1()
|
||||
{
|
||||
((this)->*(m_pOpVector1[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3E
|
||||
void CMA_VU::CUpper::VECTOR2()
|
||||
{
|
||||
((this)->*(m_pOpVector2[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3F
|
||||
void CMA_VU::CUpper::VECTOR3()
|
||||
{
|
||||
((this)->*(m_pOpVector3[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//VectorX Common Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CMA_VU::CUpper::ADDAbc()
|
||||
{
|
||||
VUShared::ADDAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//02
|
||||
void CMA_VU::CUpper::MADDAbc()
|
||||
{
|
||||
VUShared::MADDAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//03
|
||||
void CMA_VU::CUpper::MSUBAbc()
|
||||
{
|
||||
VUShared::MSUBAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//06
|
||||
void CMA_VU::CUpper::MULAbc()
|
||||
{
|
||||
VUShared::MULAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector0 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF0()
|
||||
{
|
||||
VUShared::ITOF0(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI0()
|
||||
{
|
||||
VUShared::FTOI0(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::ADDA()
|
||||
{
|
||||
VUShared::ADDA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector1 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF4()
|
||||
{
|
||||
VUShared::ITOF4(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI4()
|
||||
{
|
||||
VUShared::FTOI4(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::ABS()
|
||||
{
|
||||
VUShared::ABS(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::MADDA()
|
||||
{
|
||||
VUShared::MADDA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector2 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF12()
|
||||
{
|
||||
VUShared::ITOF12(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI12()
|
||||
{
|
||||
VUShared::FTOI12(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::MULAi()
|
||||
{
|
||||
VUShared::MULAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::MULA()
|
||||
{
|
||||
VUShared::MULA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//0B
|
||||
void CMA_VU::CUpper::OPMULA()
|
||||
{
|
||||
VUShared::OPMULA(m_codeGen, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector3 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::CLIP()
|
||||
{
|
||||
VUShared::CLIP(m_codeGen, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//08
|
||||
void CMA_VU::CUpper::MADDAi()
|
||||
{
|
||||
VUShared::MADDAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//09
|
||||
void CMA_VU::CUpper::MSUBAi()
|
||||
{
|
||||
VUShared::MSUBAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//0B
|
||||
void CMA_VU::CUpper::NOP()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Opcode Tables
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&ADDbc, &ADDbc, &ADDbc, &ADDbc, &SUBbc, &SUBbc, &SUBbc, &SUBbc,
|
||||
//0x08
|
||||
&MADDbc, &MADDbc, &MADDbc, &MADDbc, &MSUBbc, &MSUBbc, &MSUBbc, &MSUBbc,
|
||||
//0x10
|
||||
&MAXbc, &Illegal, &Illegal, &MAXbc, &Illegal, &Illegal, &Illegal, &MINIbc,
|
||||
//0x18
|
||||
&MULbc, &MULbc, &MULbc, &MULbc, &MULq, &Illegal, &MULi, &MINIi,
|
||||
//0x20
|
||||
&ADDq, &MADDq, &ADDi, &Illegal, &Illegal, &Illegal, &SUBi, &MSUBi,
|
||||
//0x28
|
||||
&ADD, &MADD, &MUL, &MAX, &SUB, &Illegal, &OPMSUB, &MINI,
|
||||
//0x30
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x38
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &VECTOR0, &VECTOR1, &VECTOR2, &VECTOR3,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&ADDAbc, &Illegal, &Illegal, &MSUBAbc, &ITOF0, &FTOI0, &MULAbc, &Illegal,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &ADDA, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector1[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&ADDAbc, &Illegal, &MADDAbc, &MSUBAbc, &ITOF4, &FTOI4, &MULAbc, &ABS,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &MADDA, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector2[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &MADDAbc, &MSUBAbc, &ITOF12, &FTOI12, &MULAbc, &MULAi,
|
||||
//0x08
|
||||
&Illegal, &Illegal, &MULA, &OPMULA, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector3[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&Illegal, &Illegal, &MADDAbc, &MSUBAbc, &Illegal, &Illegal, &MULAbc, &CLIP,
|
||||
//0x08
|
||||
&MADDAi, &MSUBAi, &Illegal, &NOP, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x10
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
//0x18
|
||||
&Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal, &Illegal,
|
||||
};
|
||||
#include "MA_VU.h"
|
||||
#include "MIPS.h"
|
||||
#include "VUShared.h"
|
||||
#include "VIF.h"
|
||||
#include "CodeGen.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
CMA_VU::CUpper::CUpper() :
|
||||
CMIPSInstructionFactory(MIPS_REGSIZE_32),
|
||||
m_nFT(0),
|
||||
m_nFS(0),
|
||||
m_nFD(0),
|
||||
m_nBc(0),
|
||||
m_nDest(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CMA_VU::CUpper::CompileInstruction(uint32 nAddress, CCodeGen* codeGen, CMIPS* pCtx)
|
||||
{
|
||||
SetupQuickVariables(nAddress, codeGen, pCtx);
|
||||
|
||||
m_nDest = (uint8 )((m_nOpcode >> 21) & 0x000F);
|
||||
m_nFT = (uint8 )((m_nOpcode >> 16) & 0x001F);
|
||||
m_nFS = (uint8 )((m_nOpcode >> 11) & 0x001F);
|
||||
m_nFD = (uint8 )((m_nOpcode >> 6) & 0x001F);
|
||||
|
||||
m_nBc = (uint8 )((m_nOpcode >> 0) & 0x0003);
|
||||
|
||||
((this)->*(m_pOpVector[m_nOpcode & 0x3F]))();
|
||||
|
||||
if(m_nOpcode & 0x80000000)
|
||||
{
|
||||
LOI(pCtx->m_pMemoryMap->GetInstruction(nAddress - 4));
|
||||
}
|
||||
|
||||
if(m_nOpcode & 0x40000000)
|
||||
{
|
||||
//Force exception checking if microprogram is done
|
||||
m_codeGen->PushCst(1);
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nHasException));
|
||||
}
|
||||
}
|
||||
|
||||
void CMA_VU::CUpper::LOI(uint32 nValue)
|
||||
{
|
||||
m_codeGen->PushCst(nValue);
|
||||
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP2I));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
//01
|
||||
//02
|
||||
//03
|
||||
void CMA_VU::CUpper::ADDbc()
|
||||
{
|
||||
VUShared::ADDbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//04
|
||||
//05
|
||||
//06
|
||||
//07
|
||||
void CMA_VU::CUpper::SUBbc()
|
||||
{
|
||||
VUShared::SUBbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//08
|
||||
//09
|
||||
//0A
|
||||
//0B
|
||||
void CMA_VU::CUpper::MADDbc()
|
||||
{
|
||||
VUShared::MADDbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//0C
|
||||
//0D
|
||||
//0E
|
||||
//0F
|
||||
void CMA_VU::CUpper::MSUBbc()
|
||||
{
|
||||
VUShared::MSUBbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//10
|
||||
//11
|
||||
//12
|
||||
//13
|
||||
void CMA_VU::CUpper::MAXbc()
|
||||
{
|
||||
VUShared::MAXbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//14
|
||||
//15
|
||||
//16
|
||||
//17
|
||||
void CMA_VU::CUpper::MINIbc()
|
||||
{
|
||||
VUShared::MINIbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//18
|
||||
//19
|
||||
//1A
|
||||
//1B
|
||||
void CMA_VU::CUpper::MULbc()
|
||||
{
|
||||
VUShared::MULbc(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//1C
|
||||
void CMA_VU::CUpper::MULq()
|
||||
{
|
||||
VUShared::MULq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//1E
|
||||
void CMA_VU::CUpper::MULi()
|
||||
{
|
||||
VUShared::MULi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//1F
|
||||
void CMA_VU::CUpper::MINIi()
|
||||
{
|
||||
VUShared::MINIi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//20
|
||||
void CMA_VU::CUpper::ADDq()
|
||||
{
|
||||
VUShared::ADDq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//21
|
||||
void CMA_VU::CUpper::MADDq()
|
||||
{
|
||||
VUShared::MADDq(m_codeGen, m_nDest, m_nFD, m_nFS, m_nAddress);
|
||||
}
|
||||
|
||||
//22
|
||||
void CMA_VU::CUpper::ADDi()
|
||||
{
|
||||
VUShared::ADDi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//26
|
||||
void CMA_VU::CUpper::SUBi()
|
||||
{
|
||||
VUShared::SUBi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//27
|
||||
void CMA_VU::CUpper::MSUBi()
|
||||
{
|
||||
VUShared::MSUBi(m_codeGen, m_nDest, m_nFD, m_nFS);
|
||||
}
|
||||
|
||||
//28
|
||||
void CMA_VU::CUpper::ADD()
|
||||
{
|
||||
VUShared::ADD(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//29
|
||||
void CMA_VU::CUpper::MADD()
|
||||
{
|
||||
VUShared::MADD(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2A
|
||||
void CMA_VU::CUpper::MUL()
|
||||
{
|
||||
VUShared::MUL(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2B
|
||||
void CMA_VU::CUpper::MAX()
|
||||
{
|
||||
VUShared::MAX(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2C
|
||||
void CMA_VU::CUpper::SUB()
|
||||
{
|
||||
VUShared::SUB(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2E
|
||||
void CMA_VU::CUpper::OPMSUB()
|
||||
{
|
||||
VUShared::OPMSUB(m_codeGen, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//2F
|
||||
void CMA_VU::CUpper::MINI()
|
||||
{
|
||||
VUShared::MINI(m_codeGen, m_nDest, m_nFD, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//3C
|
||||
void CMA_VU::CUpper::VECTOR0()
|
||||
{
|
||||
((this)->*(m_pOpVector0[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3D
|
||||
void CMA_VU::CUpper::VECTOR1()
|
||||
{
|
||||
((this)->*(m_pOpVector1[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3E
|
||||
void CMA_VU::CUpper::VECTOR2()
|
||||
{
|
||||
((this)->*(m_pOpVector2[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//3F
|
||||
void CMA_VU::CUpper::VECTOR3()
|
||||
{
|
||||
((this)->*(m_pOpVector3[(m_nOpcode >> 6) & 0x1F]))();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//VectorX Common Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//00
|
||||
void CMA_VU::CUpper::ADDAbc()
|
||||
{
|
||||
VUShared::ADDAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//02
|
||||
void CMA_VU::CUpper::MADDAbc()
|
||||
{
|
||||
VUShared::MADDAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//03
|
||||
void CMA_VU::CUpper::MSUBAbc()
|
||||
{
|
||||
VUShared::MSUBAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//06
|
||||
void CMA_VU::CUpper::MULAbc()
|
||||
{
|
||||
VUShared::MULAbc(m_codeGen, m_nDest, m_nFS, m_nFT, m_nBc);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector0 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF0()
|
||||
{
|
||||
VUShared::ITOF0(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI0()
|
||||
{
|
||||
VUShared::FTOI0(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::ADDA()
|
||||
{
|
||||
VUShared::ADDA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector1 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF4()
|
||||
{
|
||||
VUShared::ITOF4(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI4()
|
||||
{
|
||||
VUShared::FTOI4(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::ABS()
|
||||
{
|
||||
VUShared::ABS(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::MADDA()
|
||||
{
|
||||
VUShared::MADDA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector2 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//04
|
||||
void CMA_VU::CUpper::ITOF12()
|
||||
{
|
||||
VUShared::ITOF12(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//05
|
||||
void CMA_VU::CUpper::FTOI12()
|
||||
{
|
||||
VUShared::FTOI12(m_codeGen, m_nDest, m_nFT, m_nFS);
|
||||
}
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::MULAi()
|
||||
{
|
||||
VUShared::MULAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//0A
|
||||
void CMA_VU::CUpper::MULA()
|
||||
{
|
||||
VUShared::MULA(m_codeGen, m_nDest, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//0B
|
||||
void CMA_VU::CUpper::OPMULA()
|
||||
{
|
||||
VUShared::OPMULA(m_codeGen, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Vector3 Instructions
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//07
|
||||
void CMA_VU::CUpper::CLIP()
|
||||
{
|
||||
VUShared::CLIP(m_codeGen, m_nFS, m_nFT);
|
||||
}
|
||||
|
||||
//08
|
||||
void CMA_VU::CUpper::MADDAi()
|
||||
{
|
||||
VUShared::MADDAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//09
|
||||
void CMA_VU::CUpper::MSUBAi()
|
||||
{
|
||||
VUShared::MSUBAi(m_codeGen, m_nDest, m_nFS);
|
||||
}
|
||||
|
||||
//0B
|
||||
void CMA_VU::CUpper::NOP()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//Opcode Tables
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector[0x40] =
|
||||
{
|
||||
//0x00
|
||||
&CMA_VU::CUpper::ADDbc, &CMA_VU::CUpper::ADDbc, &CMA_VU::CUpper::ADDbc, &CMA_VU::CUpper::ADDbc, &CMA_VU::CUpper::SUBbc, &CMA_VU::CUpper::SUBbc, &CMA_VU::CUpper::SUBbc, &CMA_VU::CUpper::SUBbc,
|
||||
//0x08
|
||||
&CMA_VU::CUpper::MADDbc, &CMA_VU::CUpper::MADDbc, &CMA_VU::CUpper::MADDbc, &CMA_VU::CUpper::MADDbc, &CMA_VU::CUpper::MSUBbc, &CMA_VU::CUpper::MSUBbc, &CMA_VU::CUpper::MSUBbc, &CMA_VU::CUpper::MSUBbc,
|
||||
//0x10
|
||||
&CMA_VU::CUpper::MAXbc, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MAXbc, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MINIbc,
|
||||
//0x18
|
||||
&CMA_VU::CUpper::MULbc, &CMA_VU::CUpper::MULbc, &CMA_VU::CUpper::MULbc, &CMA_VU::CUpper::MULbc, &CMA_VU::CUpper::MULq, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MULi, &CMA_VU::CUpper::MINIi,
|
||||
//0x20
|
||||
&CMA_VU::CUpper::ADDq, &CMA_VU::CUpper::MADDq, &CMA_VU::CUpper::ADDi, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::SUBi, &CMA_VU::CUpper::MSUBi,
|
||||
//0x28
|
||||
&CMA_VU::CUpper::ADD, &CMA_VU::CUpper::MADD, &CMA_VU::CUpper::MUL, &CMA_VU::CUpper::MAX, &CMA_VU::CUpper::SUB, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::OPMSUB, &CMA_VU::CUpper::MINI,
|
||||
//0x30
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x38
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::VECTOR0, &CMA_VU::CUpper::VECTOR1, &CMA_VU::CUpper::VECTOR2, &CMA_VU::CUpper::VECTOR3,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector0[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CMA_VU::CUpper::ADDAbc, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MSUBAbc, &CMA_VU::CUpper::ITOF0, &CMA_VU::CUpper::FTOI0, &CMA_VU::CUpper::MULAbc, &CMA_VU::CUpper::Illegal,
|
||||
//0x08
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::ADDA, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x10
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x18
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector1[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CMA_VU::CUpper::ADDAbc, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MADDAbc, &CMA_VU::CUpper::MSUBAbc, &CMA_VU::CUpper::ITOF4, &CMA_VU::CUpper::FTOI4, &CMA_VU::CUpper::MULAbc, &CMA_VU::CUpper::ABS,
|
||||
//0x08
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MADDA, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x10
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x18
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector2[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MADDAbc, &CMA_VU::CUpper::MSUBAbc, &CMA_VU::CUpper::ITOF12, &CMA_VU::CUpper::FTOI12, &CMA_VU::CUpper::MULAbc, &CMA_VU::CUpper::MULAi,
|
||||
//0x08
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MULA, &CMA_VU::CUpper::OPMULA, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x10
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x18
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
};
|
||||
|
||||
CMA_VU::CUpper::InstructionFuncConstant CMA_VU::CUpper::m_pOpVector3[0x20] =
|
||||
{
|
||||
//0x00
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MADDAbc, &CMA_VU::CUpper::MSUBAbc, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::MULAbc, &CMA_VU::CUpper::CLIP,
|
||||
//0x08
|
||||
&CMA_VU::CUpper::MADDAi, &CMA_VU::CUpper::MSUBAi, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::NOP, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x10
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
//0x18
|
||||
&CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal, &CMA_VU::CUpper::Illegal,
|
||||
};
|
||||
|
@ -6,6 +6,9 @@
|
||||
#include "uint128.h"
|
||||
#include <string.h>
|
||||
|
||||
#undef ABS
|
||||
#undef MAX
|
||||
|
||||
namespace VUShared
|
||||
{
|
||||
enum VECTOR_COMP
|
||||
@ -16,12 +19,12 @@ namespace VUShared
|
||||
VECTOR_COMPW = 3,
|
||||
};
|
||||
|
||||
struct PIPEINFO
|
||||
{
|
||||
size_t value;
|
||||
size_t heldValue;
|
||||
size_t target;
|
||||
};
|
||||
struct PIPEINFO
|
||||
{
|
||||
size_t value;
|
||||
size_t heldValue;
|
||||
size_t target;
|
||||
};
|
||||
|
||||
struct OPERANDSET
|
||||
{
|
||||
@ -62,7 +65,7 @@ namespace VUShared
|
||||
|
||||
void ADDA_base(CCodeGen*, uint8, size_t, size_t, bool);
|
||||
void MADD_base(CCodeGen*, uint8, size_t, size_t, size_t, bool);
|
||||
void MSUB_base(CCodeGen*, uint8, size_t, size_t, size_t, bool);
|
||||
void MSUB_base(CCodeGen*, uint8, size_t, size_t, size_t, bool);
|
||||
|
||||
//Shared instructions
|
||||
void ABS(CCodeGen*, uint8, uint8, uint8);
|
||||
@ -94,7 +97,7 @@ namespace VUShared
|
||||
void MINIi(CCodeGen*, uint8, uint8, uint8);
|
||||
void MOVE(CCodeGen*, uint8, uint8, uint8);
|
||||
void MR32(CCodeGen*, uint8, uint8, uint8);
|
||||
void MSUBbc(CCodeGen*, uint8, uint8, uint8, uint8, uint8);
|
||||
void MSUBbc(CCodeGen*, uint8, uint8, uint8, uint8, uint8);
|
||||
void MSUBi(CCodeGen*, uint8, uint8, uint8);
|
||||
void MSUBAbc(CCodeGen*, uint8, uint8, uint8, uint8);
|
||||
void MSUBAi(CCodeGen*, uint8, uint8);
|
||||
@ -120,8 +123,8 @@ namespace VUShared
|
||||
void WAITQ(CCodeGen*);
|
||||
|
||||
void FlushPipeline(const PIPEINFO&, CCodeGen*);
|
||||
void QueueInPipeline(const PIPEINFO&, CCodeGen*, uint32);
|
||||
void VerifyPipeline(const PIPEINFO&, CCodeGen*, uint32);
|
||||
void QueueInPipeline(const PIPEINFO&, CCodeGen*, uint32);
|
||||
void VerifyPipeline(const PIPEINFO&, CCodeGen*, uint32);
|
||||
|
||||
//Shared addressing modes
|
||||
void ReflOpFdFsI(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
||||
|
@ -1,21 +1,22 @@
|
||||
#include "VuBasicBlock.h"
|
||||
#include "MA_VU.h"
|
||||
|
||||
CVuBasicBlock::CVuBasicBlock(CMIPS& context, uint32 begin, uint32 end) :
|
||||
CBasicBlock(context, begin, end)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CVuBasicBlock::~CVuBasicBlock()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CVuBasicBlock::CompileRange(CCodeGen& codeGen)
|
||||
{
|
||||
assert((m_begin & 0x07) == 0);
|
||||
assert(((m_end + 4) & 0x07) == 0);
|
||||
#include "VuBasicBlock.h"
|
||||
#include "MA_VU.h"
|
||||
#include "offsetof_def.h"
|
||||
|
||||
CVuBasicBlock::CVuBasicBlock(CMIPS& context, uint32 begin, uint32 end) :
|
||||
CBasicBlock(context, begin, end)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CVuBasicBlock::~CVuBasicBlock()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CVuBasicBlock::CompileRange(CCodeGen& codeGen)
|
||||
{
|
||||
assert((m_begin & 0x07) == 0);
|
||||
assert(((m_end + 4) & 0x07) == 0);
|
||||
CMA_VU* arch = static_cast<CMA_VU*>(m_context.m_pArch);
|
||||
for(uint32 address = m_begin; address <= m_end; address += 8)
|
||||
{
|
||||
@ -72,5 +73,5 @@ void CVuBasicBlock::CompileRange(CCodeGen& codeGen)
|
||||
|
||||
//Sanity check
|
||||
assert(codeGen.IsStackEmpty());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,8 +20,8 @@ namespace Iop
|
||||
std::string GetFunctionName(unsigned int) const;
|
||||
void Invoke(CMIPS&, unsigned int);
|
||||
virtual bool Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*);
|
||||
virtual void SaveState(CZipArchiveWriter&);
|
||||
virtual void LoadState(CZipArchiveReader&);
|
||||
virtual void SaveState(Framework::CZipArchiveWriter&);
|
||||
virtual void LoadState(Framework::CZipArchiveReader&);
|
||||
virtual void SetButtonState(unsigned int, PS2::CControllerInfo::BUTTON, bool, uint8*);
|
||||
virtual void SetAxisState(unsigned int, PS2::CControllerInfo::BUTTON, uint8, uint8*);
|
||||
|
||||
|
@ -179,7 +179,7 @@ using namespace std;
|
||||
break;
|
||||
case L'f':
|
||||
{
|
||||
g_virtualMachine->Step();
|
||||
g_virtualMachine->StepEe();
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
@ -36,7 +36,7 @@ void CPH_HidMacOSX::Update(uint8* ram)
|
||||
uint32 currentBit = m_currentState & (1 << i);
|
||||
if(currentBit != previousBit)
|
||||
{
|
||||
listener->SetButtonState(0, static_cast<CPadListener::BUTTON>(1 << i), currentBit != 0, ram);
|
||||
listener->SetButtonState(0, static_cast<PS2::CControllerInfo::BUTTON>(1 << i), currentBit != 0, ram);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -108,44 +108,44 @@ bool CPH_HidMacOSX::TranslateKey(uint32 scanCode, uint32& gameKey)
|
||||
switch(scanCode)
|
||||
{
|
||||
case kHIDUsage_KeyboardReturn:
|
||||
gameKey = CPadListener::BUTTON_START;
|
||||
gameKey = PS2::CControllerInfo::START;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardLeftShift:
|
||||
case kHIDUsage_KeyboardRightShift:
|
||||
gameKey = CPadListener::BUTTON_SELECT;
|
||||
gameKey = PS2::CControllerInfo::SELECT;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardLeftArrow:
|
||||
gameKey = CPadListener::BUTTON_LEFT;
|
||||
gameKey = PS2::CControllerInfo::DPAD_LEFT;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardRightArrow:
|
||||
gameKey = CPadListener::BUTTON_RIGHT;
|
||||
gameKey = PS2::CControllerInfo::DPAD_RIGHT;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardUpArrow:
|
||||
gameKey = CPadListener::BUTTON_UP;
|
||||
gameKey = PS2::CControllerInfo::DPAD_UP;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardDownArrow:
|
||||
gameKey = CPadListener::BUTTON_DOWN;
|
||||
gameKey = PS2::CControllerInfo::DPAD_DOWN;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardA:
|
||||
gameKey = CPadListener::BUTTON_SQUARE;
|
||||
gameKey = PS2::CControllerInfo::SQUARE;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardZ:
|
||||
gameKey = CPadListener::BUTTON_CROSS;
|
||||
gameKey = PS2::CControllerInfo::CROSS;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardS:
|
||||
gameKey = CPadListener::BUTTON_TRIANGLE;
|
||||
gameKey = PS2::CControllerInfo::TRIANGLE;
|
||||
return true;
|
||||
break;
|
||||
case kHIDUsage_KeyboardX:
|
||||
gameKey = CPadListener::BUTTON_CIRCLE;
|
||||
gameKey = PS2::CControllerInfo::CIRCLE;
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#import "VfsManagerBindings.h"
|
||||
#import "../Config.h"
|
||||
#import "../AppConfig.h"
|
||||
|
||||
#define PREFERENCE_CDROM0_PATH ("ps2.cdrom0.path")
|
||||
|
||||
@ -123,7 +123,7 @@
|
||||
CVfsManagerDirectoryBinding* result = [super init];
|
||||
m_deviceName = deviceName;
|
||||
m_preference = preferenceName;
|
||||
const char* preferenceValue = CConfig::GetInstance().GetPreferenceString([preferenceName UTF8String]);
|
||||
const char* preferenceValue = CAppConfig::GetInstance().GetPreferenceString([preferenceName UTF8String]);
|
||||
if(preferenceValue == NULL)
|
||||
{
|
||||
m_value = @"";
|
||||
@ -176,7 +176,7 @@
|
||||
|
||||
-(void)save
|
||||
{
|
||||
CConfig::GetInstance().SetPreferenceString([m_preference UTF8String], [m_value UTF8String]);
|
||||
CAppConfig::GetInstance().SetPreferenceString([m_preference UTF8String], [m_value UTF8String]);
|
||||
}
|
||||
|
||||
@end
|
||||
@ -186,7 +186,7 @@
|
||||
-(CVfsManagerCdrom0Binding*)init
|
||||
{
|
||||
CVfsManagerCdrom0Binding* result = [super init];
|
||||
const char* preferenceValue = CConfig::GetInstance().GetPreferenceString(PREFERENCE_CDROM0_PATH);
|
||||
const char* preferenceValue = CAppConfig::GetInstance().GetPreferenceString(PREFERENCE_CDROM0_PATH);
|
||||
if(preferenceValue == NULL)
|
||||
{
|
||||
m_value = @"";
|
||||
@ -235,7 +235,7 @@
|
||||
|
||||
-(void)save
|
||||
{
|
||||
CConfig::GetInstance().SetPreferenceString(PREFERENCE_CDROM0_PATH, [m_value UTF8String]);
|
||||
CAppConfig::GetInstance().SetPreferenceString(PREFERENCE_CDROM0_PATH, [m_value UTF8String]);
|
||||
}
|
||||
|
||||
@end
|
||||
|
Loading…
x
Reference in New Issue
Block a user