MacOSX Compilation Fixes

git-svn-id: http://svn.purei.org/purei/trunk@540 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
jpd002 2009-09-07 19:23:46 +00:00
parent 2b641d5006
commit 8094e3303a
17 changed files with 3360 additions and 3189 deletions

View File

@ -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 = "";

View 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
}

View File

@ -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

View File

@ -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,
};

View File

@ -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;
}

View File

@ -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,
};

File diff suppressed because it is too large Load Diff

View File

@ -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;

View File

@ -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

View File

@ -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,
};

View File

@ -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);

View File

@ -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());
}
}
}
}

View File

@ -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*);

View File

@ -179,7 +179,7 @@ using namespace std;
break;
case L'f':
{
g_virtualMachine->Step();
g_virtualMachine->StepEe();
return;
}
break;

View File

@ -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;
}

View File

@ -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